diff --git a/clj-e2e/dev/user.clj b/clj-e2e/dev/user.clj index bc8159047e..508ee8eb2d 100644 --- a/clj-e2e/dev/user.clj +++ b/clj-e2e/dev/user.clj @@ -7,17 +7,17 @@ [logseq.e2e.fixtures :as fixtures] [logseq.e2e.graph :as graph] [logseq.e2e.keyboard :as k] + [logseq.e2e.locator :as loc] [logseq.e2e.multi-tabs-basic-test] [logseq.e2e.outliner-basic-test] [logseq.e2e.plugins-basic-test] + [logseq.e2e.property-basic-test] [logseq.e2e.reference-basic-test] [logseq.e2e.rtc-basic-test] [logseq.e2e.rtc-extra-test] - [logseq.e2e.property-basic-test] [logseq.e2e.util :as util] [wally.main :as w] - [wally.repl :as repl] - [logseq.e2e.locator :as loc])) + [wally.repl :as repl])) ;; Use port 3001 for local testing (reset! config/*port 3001) diff --git a/deps/common/src/logseq/common/config.cljs b/deps/common/src/logseq/common/config.cljs index eb8f385b5b..570be62878 100644 --- a/deps/common/src/logseq/common/config.cljs +++ b/deps/common/src/logseq/common/config.cljs @@ -1,7 +1,6 @@ (ns logseq.common.config "Common config constants and fns that are shared between deps and app" - (:require [clojure.string :as string] - [goog.object :as gobj])) + (:require [clojure.string :as string])) (goog-define PUBLISHING false) @@ -30,15 +29,12 @@ (def app-name "logseq") (defonce asset-protocol "assets://") -(defonce capacitor-protocol "capacitor://") -(defonce capacitor-prefix "_capacitor_file_") -(defonce capacitor-protocol-with-prefix (str capacitor-protocol "localhost/" capacitor-prefix)) -(defonce capacitor-x-protocol-with-prefix (str (gobj/getValueByKeys js/globalThis "location" "href") capacitor-prefix)) (defonce local-assets-dir "assets") (defonce favorites-page-name "$$$favorites") (defonce views-page-name "$$$views") +(defonce library-page-name "Library") (defn local-asset? [s] @@ -48,17 +44,13 @@ (defn local-protocol-asset? [s] (when (string? s) - (or (string/starts-with? s asset-protocol) - (string/starts-with? s capacitor-protocol) - (string/starts-with? s capacitor-x-protocol-with-prefix)))) + (string/starts-with? s asset-protocol))) (defn remove-asset-protocol [s] (if (local-protocol-asset? s) (-> s - (string/replace-first asset-protocol "file://") - (string/replace-first capacitor-protocol-with-prefix "file://") - (string/replace-first capacitor-x-protocol-with-prefix "file://")) + (string/replace-first asset-protocol "file://")) s)) (defonce default-draw-directory "draws") @@ -154,4 +146,4 @@ :favorites "is not stored in config for DB graphs" :default-templates - "is replaced by #Template and the `Apply template to tags` property"})) \ No newline at end of file + "is replaced by #Template and the `Apply template to tags` property"})) diff --git a/deps/common/test/logseq/common/config_test.cljc b/deps/common/test/logseq/common/config_test.cljc index c66be429cc..01e59aca63 100644 --- a/deps/common/test/logseq/common/config_test.cljc +++ b/deps/common/test/logseq/common/config_test.cljc @@ -1,10 +1,10 @@ (ns logseq.common.config-test - (:require [cljs.test :refer [deftest is]] - [clojure.string :as string] - [logseq.common.config :as common-config] + (:require ["fs" :as fs] + ["path" :as node-path] #?(:org.babashka/nbb [nbb.classpath :as cp]) - ["fs" :as fs] - ["path" :as node-path])) + [cljs.test :refer [deftest is]] + [clojure.string :as string] + [logseq.common.config :as common-config])) (deftest remove-hidden-files (let [files ["pages/foo.md" "pages/bar.md" diff --git a/deps/common/test/logseq/common/util_test.cljs b/deps/common/test/logseq/common/util_test.cljs index ee6dbee569..fbde96bb6d 100644 --- a/deps/common/test/logseq/common/util_test.cljs +++ b/deps/common/test/logseq/common/util_test.cljs @@ -41,7 +41,7 @@ (deftest escape-regex-chars (testing "ensure the result is a valid regex string" (are [x] - (some? (re-find (re-pattern (common-util/escape-regex-chars x)) x)) + (some? (re-find (re-pattern (common-util/escape-regex-chars x)) x)) "[[page-name]]" "end-with-backslash\\" "\\[]{}().+*?|$^"))) diff --git a/deps/db/script/create_graph.cljs b/deps/db/script/create_graph.cljs index 0544ab8eaf..c21f595c04 100644 --- a/deps/db/script/create_graph.cljs +++ b/deps/db/script/create_graph.cljs @@ -6,12 +6,12 @@ [babashka.cli :as cli] [clojure.edn :as edn] [datascript.core :as d] + [logseq.db.common.sqlite-cli :as sqlite-cli] [logseq.db.sqlite.export :as sqlite-export] [logseq.outliner.cli :as outliner-cli] [nbb.classpath :as cp] [nbb.core :as nbb] - [validate-db] - [logseq.db.common.sqlite-cli :as sqlite-cli])) + [validate-db])) (defn- resolve-path "If relative path, resolve with $ORIGINAL_PWD" diff --git a/deps/db/script/validate_db.cljs b/deps/db/script/validate_db.cljs index ccae7dec45..f3738e91ac 100644 --- a/deps/db/script/validate_db.cljs +++ b/deps/db/script/validate_db.cljs @@ -4,9 +4,9 @@ (:require [babashka.cli :as cli] [cljs.pprint :as pprint] [datascript.core :as d] + [logseq.db.common.sqlite-cli :as sqlite-cli] [logseq.db.frontend.malli-schema :as db-malli-schema] [logseq.db.frontend.validate :as db-validate] - [logseq.db.common.sqlite-cli :as sqlite-cli] [malli.core :as m] [malli.error :as me] [nbb.core :as nbb])) diff --git a/deps/db/src/logseq/db.cljs b/deps/db/src/logseq/db.cljs index fcdeebea58..211d19ad63 100644 --- a/deps/db/src/logseq/db.cljs +++ b/deps/db/src/logseq/db.cljs @@ -7,6 +7,7 @@ [clojure.walk :as walk] [datascript.core :as d] [datascript.impl.entity :as de] + [logseq.common.config :as common-config] [logseq.common.util :as common-util] [logseq.common.uuid :as common-uuid] [logseq.db.common.delete-blocks :as delete-blocks] ;; Load entity extensions @@ -22,6 +23,14 @@ [logseq.db.sqlite.util :as sqlite-util]) (:refer-clojure :exclude [object?])) +(def built-in? entity-util/built-in?) +(def built-in-class-property? db-db/built-in-class-property?) +(def private-built-in-page? db-db/private-built-in-page?) + +(def write-transit-str sqlite-util/write-transit-str) +(def read-transit-str sqlite-util/read-transit-str) +(def build-favorite-tx db-db/build-favorite-tx) + (defonce *transact-fn (atom nil)) (defn register-transact-fn! [f] @@ -242,6 +251,17 @@ (d/entity db [:block/uuid id]) (d/entity db (get-first-page-by-name db (name page-id-name-or-uuid))))))) +(defn get-built-in-page + [db title] + (when db + (let [id (common-uuid/gen-uuid :builtin-block-uuid title)] + (d/entity db [:block/uuid id])))) + +(defn library? + [page] + (and (built-in? page) + (= common-config/library-page-name (:block/title page)))) + (defn get-case-page "Case sensitive version of get-page. For use with DB graphs" [db page-name-or-uuid] @@ -470,14 +490,6 @@ (when-not (hidden-or-internal-tag? e) e)))))) -(def built-in? entity-util/built-in?) -(def built-in-class-property? db-db/built-in-class-property?) -(def private-built-in-page? db-db/private-built-in-page?) - -(def write-transit-str sqlite-util/write-transit-str) -(def read-transit-str sqlite-util/read-transit-str) -(def build-favorite-tx db-db/build-favorite-tx) - (defn get-key-value [db key-ident] (:kv/value (d/entity db key-ident))) @@ -499,7 +511,7 @@ (when db (get-key-value db :logseq.kv/remote-schema-version))) (def get-all-properties db-db/get-all-properties) -(def get-page-parents db-db/get-page-parents) +(def get-class-extends db-db/get-class-extends) (def get-classes-parents db-db/get-classes-parents) (def get-title-with-parents db-db/get-title-with-parents) (def class-instance? db-db/class-instance?) diff --git a/deps/db/src/logseq/db/common/initial_data.cljs b/deps/db/src/logseq/db/common/initial_data.cljs index 67338f6795..77681a67d0 100644 --- a/deps/db/src/logseq/db/common/initial_data.cljs +++ b/deps/db/src/logseq/db/common/initial_data.cljs @@ -1,6 +1,7 @@ (ns logseq.db.common.initial-data "Provides db helper fns for graph initialization and lazy loading entities" - (:require [datascript.core :as d] + (:require [clojure.string :as string] + [datascript.core :as d] [datascript.impl.entity :as de] [logseq.common.config :as common-config] [logseq.common.util :as common-util] @@ -329,7 +330,9 @@ rseq (keep (fn [datom] (let [e (d/entity db (:e datom))] - (when (and (common-entity-util/page? e) (not (entity-util/hidden? e))) + (when (and (common-entity-util/page? e) + (not (entity-util/hidden? e)) + (not (string/blank? (:block/title e)))) e)))) (take 30))) diff --git a/deps/db/src/logseq/db/frontend/class.cljs b/deps/db/src/logseq/db/frontend/class.cljs index 5631b6bdc8..8f696468cf 100644 --- a/deps/db/src/logseq/db/frontend/class.cljs +++ b/deps/db/src/logseq/db/frontend/class.cljs @@ -27,12 +27,12 @@ :logseq.class/Journal {:title "Journal" - :properties {:logseq.property/parent :logseq.class/Page + :properties {:logseq.property.class/extends :logseq.class/Page :logseq.property.journal/title-format "MMM do, yyyy"}} :logseq.class/Whiteboard {:title "Whiteboard" - :properties {:logseq.property/parent :logseq.class/Page}} + :properties {:logseq.property.class/extends :logseq.class/Page}} :logseq.class/Task {:title "Task" @@ -50,7 +50,7 @@ :logseq.class/Cards {:title "Cards" :properties {:logseq.property/icon {:type :tabler-icon :id "search"} - :logseq.property/parent :logseq.class/Query}} + :logseq.property.class/extends :logseq.class/Query}} :logseq.class/Asset {:title "Asset" @@ -95,7 +95,7 @@ "Children of :logseq.class/Page" (set (keep (fn [[class-ident m]] - (when (= (get-in m [:properties :logseq.property/parent]) :logseq.class/Page) class-ident)) + (when (= (get-in m [:properties :logseq.property.class/extends]) :logseq.class/Page) class-ident)) built-in-classes))) (def page-classes @@ -121,13 +121,13 @@ (defn get-structured-children [db eid] (->> - (d/q '[:find [?children ...] - :in $ ?parent % + (d/q '[:find [?c ...] + :in $ ?p % :where - (parent ?parent ?children)] + (class-extends ?p ?c)] db eid - (:parent rules/rules)) + (:class-extends rules/rules)) (remove #{eid}))) ;; Helper fns diff --git a/deps/db/src/logseq/db/frontend/db.cljs b/deps/db/src/logseq/db/frontend/db.cljs index 63244ae402..a1495ca1ec 100644 --- a/deps/db/src/logseq/db/frontend/db.cljs +++ b/deps/db/src/logseq/db/frontend/db.cljs @@ -3,6 +3,7 @@ (:require [clojure.set :as set] [clojure.string :as string] [datascript.core :as d] + [logseq.common.config :as common-config] [logseq.common.util.namespace :as ns-util] [logseq.common.util.page-ref :as page-ref] [logseq.db.frontend.class :as db-class] @@ -42,34 +43,60 @@ (->> (d/datoms db :avet :block/tags :logseq.class/Property) (map (fn [d] (d/entity db (:e d)))))) -(defn get-page-parents - [node & {:keys [node-class?]}] - (when-let [parent (:logseq.property/parent node)] +(defn get-class-extends + "Returns all parents of a class" + [node] + (when-let [parent (:logseq.property.class/extends node)] (loop [current-parent parent parents' []] - (if (and - current-parent - (if node-class? (entity-util/class? current-parent) true) - (not (contains? parents' current-parent))) - (recur (:logseq.property/parent current-parent) + (if (and current-parent + (not (contains? parents' current-parent))) + (recur (:logseq.property.class/extends current-parent) (conj parents' current-parent)) (vec (reverse parents')))))) +(defn get-page-parents + [node] + (when-let [parent (:block/parent node)] + (loop [current-parent parent + parents' []] + (if (and current-parent + (not (contains? parents' current-parent))) + (recur (:block/parent current-parent) + (conj parents' current-parent)) + (vec (reverse parents')))))) + +(defn- get-class-title-with-extends + [entity] + (let [parents' (->> (get-class-extends entity) + (remove (fn [e] (= :logseq.class/Root (:db/ident e)))) + vec)] + (string/join + ns-util/parent-char + (map :block/title (conj (vec parents') entity))))) + (defn get-title-with-parents [entity] - (if (or (entity-util/class? entity) (entity-util/internal-page? entity)) + (cond + (entity-util/class? entity) + (get-class-title-with-extends entity) + + (entity-util/page? entity) (let [parents' (->> (get-page-parents entity) - (remove (fn [e] (= :logseq.class/Root (:db/ident e)))) - vec)] + (remove (fn [e] + (and (:logseq.property/built-in? e) (= common-config/library-page-name (:block/title e))))))] (string/join ns-util/parent-char (map :block/title (conj (vec parents') entity)))) + + :else (:block/title entity))) (defn get-classes-parents + "Returns all parents of all classes. Like get-class-extends but for multiple classes" [tags] (let [tags' (filter entity-util/class? tags) - result (mapcat #(get-page-parents % {:node-class? true}) tags')] + result (mapcat get-class-extends tags')] (set result))) (defn class-instance? diff --git a/deps/db/src/logseq/db/frontend/malli_schema.cljs b/deps/db/src/logseq/db/frontend/malli_schema.cljs index ac2fd61b80..7c49794b17 100644 --- a/deps/db/src/logseq/db/frontend/malli_schema.cljs +++ b/deps/db/src/logseq/db/frontend/malli_schema.cljs @@ -282,7 +282,9 @@ (concat [:map ;; journal-day is only set for journal pages - [:block/journal-day {:optional true} :int]] + [:block/journal-day {:optional true} :int] + [:block/parent {:optional true} :int] + [:block/order {:optional true} block-order]] page-attrs page-or-block-attrs))) @@ -290,7 +292,8 @@ (vec (concat [:map - [:db/ident class-ident]] + [:db/ident class-ident] + [:logseq.property.class/extends {:optional true} :int]] page-attrs page-or-block-attrs))) diff --git a/deps/db/src/logseq/db/frontend/property.cljs b/deps/db/src/logseq/db/frontend/property.cljs index a161d03be8..9643498a17 100644 --- a/deps/db/src/logseq/db/frontend/property.cljs +++ b/deps/db/src/logseq/db/frontend/property.cljs @@ -148,13 +148,6 @@ :hide? true :view-context :block} :queryable? true} - :logseq.property/parent {:title "Parent" - :schema {:type :node - :public? true - :view-context :page} - :queryable? true - :properties - {:logseq.property/description "Provides parent-child relationships between nodes. For tags this enables inheritance and for pages this enables namespaces."}} :logseq.property/default-value {:title "Default value" :schema {:type :entity :public? false @@ -165,6 +158,14 @@ :public? false :hide? true :view-context :property}} + ;; TODO: support cardinality many for extends + :logseq.property.class/extends {:title "Extends" + :schema {:type :class + :public? true + :view-context :class} + :queryable? true + :properties + {:logseq.property/description "This enables tags to inherit properties from other tags"}} :logseq.property.class/properties {:title "Tag Properties" :schema {:type :property :cardinality :many diff --git a/deps/db/src/logseq/db/frontend/rules.cljc b/deps/db/src/logseq/db/frontend/rules.cljc index 11022e7031..e4cd561567 100644 --- a/deps/db/src/logseq/db/frontend/rules.cljc +++ b/deps/db/src/logseq/db/frontend/rules.cljc @@ -8,11 +8,18 @@ ;; rule "parent" is optimized for parent node -> child node nesting queries {:parent '[[(parent ?p ?c) - [?c :logseq.property/parent ?p]] + [?c :block/parent ?p]] [(parent ?p ?c) - [?t :logseq.property/parent ?p] + [?t :block/parent ?p] (parent ?t ?c)]] + :class-extends + '[[(class-extends ?p ?c) + [?c :logseq.property.class/extends ?p]] + [(class-extends ?p ?c) + [?t :logseq.property.class/extends ?p] + (class-extends ?t ?c)]] + :alias '[[(alias ?e2 ?e1) [?e2 :block/alias ?e1]] @@ -136,7 +143,7 @@ [?b :block/tags ?tc] (or [(= ?t ?tc)] - (parent ?t ?tc))] + (class-extends ?t ?tc))] :has-property-or-object-property '[(has-property-or-object-property? ?b ?prop) @@ -236,7 +243,7 @@ :priority #{:simple-query-property} :property-missing-value #{:object-has-class-property} :has-property-or-object-property #{:object-has-class-property} - :object-has-class-property #{:parent} + :object-has-class-property #{:class-extends} :has-simple-query-property #{:has-property-or-object-property} :has-private-simple-query-property #{:has-property-or-object-property} :property-default-value #{:existing-property-value :property-missing-value} diff --git a/deps/db/src/logseq/db/frontend/schema.cljs b/deps/db/src/logseq/db/frontend/schema.cljs index 1ef6dfc9ed..e9dbf863b3 100644 --- a/deps/db/src/logseq/db/frontend/schema.cljs +++ b/deps/db/src/logseq/db/frontend/schema.cljs @@ -37,7 +37,7 @@ (map (juxt :major :minor) [(parse-schema-version x) (parse-schema-version y)]))) -(def version (parse-schema-version "65.0")) +(def version (parse-schema-version "65.1")) (defn major-version "Return a number. diff --git a/deps/db/src/logseq/db/frontend/validate.cljs b/deps/db/src/logseq/db/frontend/validate.cljs index 3f7dac3d98..cab0540220 100644 --- a/deps/db/src/logseq/db/frontend/validate.cljs +++ b/deps/db/src/logseq/db/frontend/validate.cljs @@ -118,7 +118,7 @@ {:entities (count entities) :pages (count (filter :block/name entities)) ;; Nodes that aren't pages - :blocks (count (filter :block/parent entities)) + :blocks (count (filter :block/page entities)) :classes classes-count :properties properties-count ;; Objects that aren't classes or properties diff --git a/deps/db/src/logseq/db/sqlite/build.cljs b/deps/db/src/logseq/db/sqlite/build.cljs index f6e16669cd..833733ad3f 100644 --- a/deps/db/src/logseq/db/sqlite/build.cljs +++ b/deps/db/src/logseq/db/sqlite/build.cljs @@ -282,7 +282,7 @@ (->block-properties (merge props (db-property-build/build-properties-with-ref-values pvalue-tx-m)) uuid-maps all-idents options)) (when class-parent - {:logseq.property/parent + {:logseq.property.class/extends (or (class-db-ids class-parent) (if (db-malli-schema/class? class-parent) class-parent diff --git a/deps/db/src/logseq/db/sqlite/create_graph.cljs b/deps/db/src/logseq/db/sqlite/create_graph.cljs index 322d54f08c..682ca862d2 100644 --- a/deps/db/src/logseq/db/sqlite/create_graph.cljs +++ b/deps/db/src/logseq/db/sqlite/create_graph.cljs @@ -13,7 +13,7 @@ [logseq.db.frontend.schema :as db-schema] [logseq.db.sqlite.util :as sqlite-util])) -(defn- mark-block-as-built-in [block] +(defn mark-block-as-built-in [block] (assoc block :logseq.property/built-in? true)) (defn- schema->qualified-property-keyword @@ -128,7 +128,8 @@ :properties (filter entity-util/property? properties-tx)})) (def built-in-pages-names - #{"Contents"}) + #{common-config/library-page-name + "Contents"}) (defn- validate-tx-for-duplicate-idents [tx] (when-let [conflicting-idents @@ -232,7 +233,7 @@ (map mark-block-as-built-in)) hidden-pages (concat (build-initial-views) (build-favorites-page)) ;; These classes bootstrap our tags and properties as they depend on each other e.g. - ;; Root <-> Tag, classes-tx depends on logseq.property/parent, properties-tx depends on Property + ;; Root <-> Tag, classes-tx depends on logseq.property.class/extends, properties-tx depends on Property bootstrap-class? (fn [c] (contains? #{:logseq.class/Root :logseq.class/Property :logseq.class/Tag :logseq.class/Template} (:db/ident c))) bootstrap-classes (filter bootstrap-class? default-classes) bootstrap-class-ids (map #(select-keys % [:db/ident :block/uuid]) bootstrap-classes) diff --git a/deps/db/src/logseq/db/sqlite/export.cljs b/deps/db/src/logseq/db/sqlite/export.cljs index 3dda643251..c4acd7b849 100644 --- a/deps/db/src/logseq/db/sqlite/export.cljs +++ b/deps/db/src/logseq/db/sqlite/export.cljs @@ -7,16 +7,16 @@ [datascript.core :as d] [datascript.impl.entity :as de] [logseq.db :as ldb] + [logseq.db.common.entity-plus :as entity-plus] [logseq.db.frontend.class :as db-class] [logseq.db.frontend.content :as db-content] [logseq.db.frontend.db :as db-db] - [logseq.db.common.entity-plus :as entity-plus] [logseq.db.frontend.entity-util :as entity-util] [logseq.db.frontend.property :as db-property] - [logseq.db.sqlite.build :as sqlite-build] - [medley.core :as medley] [logseq.db.frontend.property.type :as db-property-type] - [logseq.db.frontend.schema :as db-schema])) + [logseq.db.frontend.schema :as db-schema] + [logseq.db.sqlite.build :as sqlite-build] + [medley.core :as medley])) ;; Export fns ;; ========== @@ -166,7 +166,7 @@ (map (fn [[ent build-property]] (let [ent-properties (apply dissoc (db-property/properties ent) ;; For overlapping class properties, these would be built in :classes - :logseq.property/parent :logseq.property.class/properties + :logseq.property.class/extends :logseq.property.class/properties (into db-property/schema-properties db-property/public-db-attribute-properties))] [(:db/ident ent) (cond-> build-property @@ -191,10 +191,10 @@ (assoc :block/alias (set (map #(vector :block/uuid (:block/uuid %)) (:block/alias class-ent)))) ;; It's caller's responsibility to ensure parent is included in final export (and (not shallow-copy?) - (:logseq.property/parent class-ent) - (not= :logseq.class/Root (:db/ident (:logseq.property/parent class-ent)))) + (:logseq.property.class/extends class-ent) + (not= :logseq.class/Root (:db/ident (:logseq.property.class/extends class-ent)))) (assoc :build/class-parent - (:db/ident (:logseq.property/parent class-ent))))) + (:db/ident (:logseq.property.class/extends class-ent))))) (defn- build-node-classes [db build-block block-tags properties] @@ -589,7 +589,7 @@ classes (->> class-ents (map (fn [ent] - (let [ent-properties (apply dissoc (db-property/properties ent) :logseq.property/parent db-property/public-db-attribute-properties)] + (let [ent-properties (apply dissoc (db-property/properties ent) :logseq.property.class/extends db-property/public-db-attribute-properties)] (vector (:db/ident ent) (cond-> (build-export-class ent options) (seq ent-properties) diff --git a/deps/db/src/logseq/db/sqlite/util.cljs b/deps/db/src/logseq/db/sqlite/util.cljs index d451d309f4..ed16d630e6 100644 --- a/deps/db/src/logseq/db/sqlite/util.cljs +++ b/deps/db/src/logseq/db/sqlite/util.cljs @@ -98,16 +98,16 @@ (cond-> (merge block {:block/tags (set (conj (:block/tags block) :logseq.class/Tag))}) (and (not= (:db/ident block) :logseq.class/Root) - (nil? (:logseq.property/parent block))) - (assoc :logseq.property/parent :logseq.class/Root)))) + (nil? (:logseq.property.class/extends block))) + (assoc :logseq.property.class/extends :logseq.class/Root)))) (defn build-new-page "Builds a basic page to be transacted. A minimal version of gp-block/page-name->map" - [page-name] + [title] (block-with-timestamps - {:block/name (common-util/page-name-sanity-lc page-name) - :block/title page-name - :block/uuid (common-uuid/gen-uuid :builtin-block-uuid page-name) + {:block/name (common-util/page-name-sanity-lc title) + :block/title title + :block/uuid (common-uuid/gen-uuid :builtin-block-uuid title) :block/tags #{:logseq.class/Page}})) (defn kv diff --git a/deps/db/test/logseq/db/frontend/rules_test.cljs b/deps/db/test/logseq/db/frontend/rules_test.cljs index 0f0cf76b5c..a6b760001d 100644 --- a/deps/db/test/logseq/db/frontend/rules_test.cljs +++ b/deps/db/test/logseq/db/frontend/rules_test.cljs @@ -12,7 +12,7 @@ (deftest get-full-deps (let [default-value-deps #{:property-default-value :property-missing-value :existing-property-value - :object-has-class-property :parent} + :object-has-class-property :class-extends} property-value-deps (conj default-value-deps :property-value :property-scalar-default-value) property-deps (conj property-value-deps :simple-query-property) task-deps (conj property-deps :task) diff --git a/deps/db/test/logseq/db/sqlite/create_graph_test.cljs b/deps/db/test/logseq/db/sqlite/create_graph_test.cljs index 0a99838cc1..d3b69f888e 100644 --- a/deps/db/test/logseq/db/sqlite/create_graph_test.cljs +++ b/deps/db/test/logseq/db/sqlite/create_graph_test.cljs @@ -84,9 +84,9 @@ (is (= (count (dissoc db-class/built-in-classes :logseq.class/Root)) (count (->> (d/datoms @conn :avet :block/tags :logseq.class/Tag) (map #(d/entity @conn (:e %))) - (mapcat :logseq.property/_parent) + (mapcat :logseq.property.class/_extends) set))) - "Reverse lookup of :logseq.property/parent correctly fetches number of child classes"))) + "Reverse lookup of :logseq.property.class/extends correctly fetches number of child classes"))) (deftest new-graph-initializes-default-properties-correctly (let [conn (db-test/create-conn)] diff --git a/deps/db/test/logseq/db/sqlite/export_test.cljs b/deps/db/test/logseq/db/sqlite/export_test.cljs index e99e48c53e..abb86351bb 100644 --- a/deps/db/test/logseq/db/sqlite/export_test.cljs +++ b/deps/db/test/logseq/db/sqlite/export_test.cljs @@ -695,6 +695,8 @@ {:page {:block/uuid property-uuid} :blocks [{:block/title "property block1"}]} ;; built-in pages + {:page {:block/title "Library" :build/properties {:logseq.property/built-in? true}} + :blocks []} {:page {:block/title "Contents" :build/properties {:logseq.property/built-in? true}} :blocks [{:block/title "right sidebar"}]} {:page {:block/title common-config/favorites-page-name @@ -882,9 +884,9 @@ (deftest build-import-can-import-existing-page-with-different-uuid (testing "By default any properties passed to an existing page are upserted" (test-import-existing-page {} - {:logseq.property/description "second description" - :logseq.property/exclude-from-graph-view true})) + {:logseq.property/description "second description" + :logseq.property/exclude-from-graph-view true})) (testing "With ::existing-pages-keep-properties?, existing properties on existing pages are not overwritten by imported data" (test-import-existing-page {:existing-pages-keep-properties? true} {:logseq.property/description "first description" - :logseq.property/exclude-from-graph-view true}))) \ No newline at end of file + :logseq.property/exclude-from-graph-view true}))) diff --git a/deps/db/test/logseq/db_test.cljs b/deps/db/test/logseq/db_test.cljs index 31bbe14090..3fae0ecbfb 100644 --- a/deps/db/test/logseq/db_test.cljs +++ b/deps/db/test/logseq/db_test.cljs @@ -30,18 +30,18 @@ :block/title "y" :block/name "y" :block/uuid #uuid "7008db08-ba0c-4aa9-afc6-7e4783e40a99" - :logseq.property/parent [:block/uuid #uuid "6c353967-f79b-4785-b804-a39b81d72461"]} + :logseq.property.class/extends [:block/uuid #uuid "6c353967-f79b-4785-b804-a39b81d72461"]} {:block/tags :logseq.class/Tag :block/title "z" :block/name "z" :block/uuid #uuid "d95f2912-a7af-41b9-8ed5-28861f7fc0be" - :logseq.property/parent [:block/uuid #uuid "7008db08-ba0c-4aa9-afc6-7e4783e40a99"]}]) + :logseq.property.class/extends [:block/uuid #uuid "7008db08-ba0c-4aa9-afc6-7e4783e40a99"]}]) -(deftest get-page-parents +(deftest get-class-extends (let [conn (db-test/create-conn)] (d/transact! conn class-parents-data) (is (= #{"x" "y"} - (->> (ldb/get-page-parents (ldb/get-page @conn "z") {:node-class? true}) + (->> (ldb/get-class-extends (ldb/get-page @conn "z")) (map :block/title) set))))) diff --git a/deps/graph-parser/script/db_import.cljs b/deps/graph-parser/script/db_import.cljs index edfc172bc4..cea8f27e0b 100644 --- a/deps/graph-parser/script/db_import.cljs +++ b/deps/graph-parser/script/db_import.cljs @@ -10,6 +10,7 @@ [clojure.set :as set] [clojure.string :as string] [datascript.core :as d] + [logseq.common.config :as common-config] [logseq.common.graph :as common-graph] [logseq.db.common.sqlite-cli :as sqlite-cli] [logseq.db.frontend.asset :as db-asset] @@ -18,8 +19,7 @@ [logseq.outliner.pipeline :as outliner-pipeline] [nbb.classpath :as cp] [nbb.core :as nbb] - [promesa.core :as p] - [logseq.common.config :as common-config])) + [promesa.core :as p])) (def tx-queue (atom cljs.core/PersistentQueue.EMPTY)) (def original-transact! d/transact!) @@ -209,4 +209,4 @@ (println "Created graph" (str db-name "!"))))) (when (= nbb/*file* (nbb/invoked-file)) - (-main *command-line-args*)) \ No newline at end of file + (-main *command-line-args*)) diff --git a/deps/graph-parser/src/logseq/graph_parser/exporter.cljs b/deps/graph-parser/src/logseq/graph_parser/exporter.cljs index dcf1838890..76c4f1e0f3 100644 --- a/deps/graph-parser/src/logseq/graph_parser/exporter.cljs +++ b/deps/graph-parser/src/logseq/graph_parser/exporter.cljs @@ -63,10 +63,10 @@ (merge ex-data' {:page-name page-name :page-names (sort (keys @page-names-to-uuids))}))))) -(defn- replace-namespace-with-parent [block page-names-to-uuids] +(defn- replace-namespace-with-parent [block page-names-to-uuids parent-k] (if (:block/namespace block) (-> (dissoc block :block/namespace) - (assoc :logseq.property/parent + (assoc parent-k {:block/uuid (get-page-uuid page-names-to-uuids (get-in block [:block/namespace :block/name]) {:block block :block/namespace (:block/namespace block)})})) @@ -130,7 +130,7 @@ db (ns-util/get-last-part full-name)) (map #(d/entity db %)) - (some #(let [parents (->> (ldb/get-page-parents %) + (some #(let [parents (->> (ldb/get-class-extends %) (remove (fn [e] (= :logseq.class/Root (:db/ident e)))) vec)] (when (= full-name (string/join ns-util/namespace-char (map :block/name (conj parents %)))) @@ -175,7 +175,7 @@ (dissoc :block/created-at :block/updated-at) (merge (add-missing-timestamps (select-keys tag-block [:block/created-at :block/updated-at]))) - (replace-namespace-with-parent page-names-to-uuids))] + (replace-namespace-with-parent page-names-to-uuids :logseq.property.class/extends))] (when (:new-class? (meta class-m)) (swap! classes-tx conj class-m')) (assert (:block/uuid class-m') "Class must have a :block/uuid") [:block/uuid (:block/uuid class-m')])))))) @@ -427,9 +427,12 @@ (def all-built-in-names "All built-in properties and classes as a set of keywords" (set/union all-built-in-property-file-ids + ;; This should list all new pages introduced with db graph (set (->> db-class/built-in-classes vals - (map #(-> % :title string/lower-case keyword)))))) + (map :title) + (concat [common-config/library-page-name]) + (map #(-> % string/lower-case keyword)))))) (def file-built-in-property-names "File-graph built-in property names that are supported. Expressed as set of keywords" @@ -739,7 +742,7 @@ (update :block dissoc :block/properties :block/properties-text-values :block/properties-order :block/invalid-properties))) (defn- handle-page-properties - "Adds page properties including special handling for :logseq.property/parent" + "Adds page properties including special handling for :logseq.property.class/extends or :block/parent" [{:block/keys [properties] :as block*} db {:keys [page-names-to-uuids classes-tx]} refs {:keys [user-options log-fn import-state] :as options}] (let [{:keys [block properties-tx]} (handle-page-and-block-properties block* db page-names-to-uuids refs options) @@ -752,7 +755,8 @@ class-m (find-or-create-class db ((some-fn ::original-title :block/title) block) (:all-idents import-state) block) class-m' (-> block (merge class-m) - (assoc :logseq.property/parent + (dissoc :block/namespace) + (assoc :logseq.property.class/extends (let [new-class (first parent-classes-from-properties) class-m (find-or-create-class db new-class (:all-idents import-state)) class-m' (merge class-m @@ -762,9 +766,8 @@ (when (:new-class? (meta class-m)) (swap! classes-tx conj class-m')) [:block/uuid (:block/uuid class-m')])))] class-m') - block) - block'' (replace-namespace-with-parent block' page-names-to-uuids)] - {:block block'' :properties-tx properties-tx})) + (replace-namespace-with-parent block page-names-to-uuids :block/parent))] + {:block block' :properties-tx properties-tx})) (defn- pretty-print-dissoc "Remove list of keys from a given map string while preserving whitespace" @@ -918,10 +921,10 @@ "\\)(\\{[^}]*\\})?")) (page-ref/->page-ref asset-uuid))] (when (string/includes? new-title asset-name) - (swap! ignored-assets conj - {:reason "Some asset links were not updated to block references" - :path asset-name - :location {:block new-title}})) + (swap! ignored-assets conj + {:reason "Some asset links were not updated to block references" + :path asset-name + :location {:block new-title}})) new-title)) block-title asset-name-to-uuids)) @@ -1025,10 +1028,11 @@ "Like ldb/get-page-parents but using all-existing-page-uuids" [node all-existing-page-uuids] (let [get-parent (fn get-parent [n] - (when (:block/uuid (:logseq.property/parent n)) - (or (get all-existing-page-uuids (:block/uuid (:logseq.property/parent n))) - (throw (ex-info (str "No parent page found for " (pr-str (:block/uuid (:logseq.property/parent n)))) - {:node n})))))] + (let [parent (or (:logseq.property.class/extends n) (:block/parent n))] + (when-let [parent-id (:block/uuid parent)] + (or (get all-existing-page-uuids parent-id) + (throw (ex-info (str "No parent page found for " (pr-str (:block/uuid parent))) + {:node n}))))))] (when-let [parent (get-parent node)] (loop [current-parent parent parents' []] @@ -1063,7 +1067,7 @@ (let [;; These attributes are not allowed to be transacted because they must not change across files disallowed-attributes [:block/name :block/uuid :block/format :block/title :block/journal-day :block/created-at :block/updated-at] - allowed-attributes (into [:block/tags :block/alias :logseq.property/parent :db/ident] + allowed-attributes (into [:block/tags :block/alias :block/parent :logseq.property.class/extends :db/ident] (keep #(when (db-malli-schema/user-property? (key %)) (key %)) m)) block-changes (select-keys m allowed-attributes)] @@ -1267,6 +1271,15 @@ (set (map (comp keyword string/lower-case) (:property-parent-classes user-options))) file-built-in-property-names)})})) +(defn- retract-parent-and-page-tag + [col] + (vec + (mapcat (fn [b] + (let [eid [:block/uuid (:block/uuid b)]] + [[:db/retract eid :block/parent] + [:db/retract eid :block/tags :logseq.class/Page]])) + col))) + (defn- split-pages-and-properties-tx "Separates new pages from new properties tx in preparation for properties to be transacted separately. Also builds property pages tx and converts existing @@ -1295,8 +1308,7 @@ {:block/uuid existing-page-uuid}))) (set/intersection new-properties (set (map keyword (keys existing-pages))))) ;; Could do this only for existing pages but the added complexity isn't worth reducing the tx noise - retract-page-tag-from-properties-tx (map #(vector :db/retract [:block/uuid (:block/uuid %)] :block/tags :logseq.class/Page) - (concat property-pages-tx converted-property-pages-tx)) + retract-page-tag-from-properties-tx (retract-parent-and-page-tag (concat property-pages-tx converted-property-pages-tx)) ;; Save properties on new property pages separately as they can contain new properties and thus need to be ;; transacted separately the property pages property-page-properties-tx (keep (fn [b] @@ -1420,17 +1432,18 @@ (->> pages-tx' ;; Existing pages that have converted to property or class (filter #(and (:db/ident %) (get existing-pages' (:block/uuid %)))) - (mapv #(vector :db/retract [:block/uuid (:block/uuid %)] :block/tags :logseq.class/Page)))] + retract-parent-and-page-tag)] {:pages-tx (mapv (fn [page] (if (or (contains? classes (:block/uuid page)) (contains? existing-properties (:block/uuid page))) - (update page :block/tags (fn [tags] (vec (remove #(= % :logseq.class/Page) tags)))) + (-> page + (update :block/tags (fn [tags] (vec (remove #(= % :logseq.class/Page) tags)))) + (dissoc :block/parent)) page)) pages-tx') :retract-page-tags-tx - (into (mapv #(vector :db/retract [:block/uuid (:block/uuid %)] :block/tags :logseq.class/Page) - classes-tx) + (into (retract-parent-and-page-tag classes-tx) retract-page-tag-from-existing-pages)})) (defn- save-from-tx @@ -1730,6 +1743,26 @@ :macros (or (:macros options) (:macros config))} (merge (select-keys options [:set-ui-state :export-file :notify-user])))) +(defn- move-top-parent-pages-to-library + [conn repo-or-conn] + (let [db @conn + library-page (ldb/get-built-in-page db common-config/library-page-name) + library-id (:block/uuid library-page) + top-parent-pages (->> (d/datoms db :avet :block/parent) + (keep (fn [d] + (let [child (d/entity db (:e d)) + parent (d/entity db (:v d))] + (when (and (nil? (:block/parent parent)) (ldb/page? child) (ldb/page? parent)) + parent)))) + (common-util/distinct-by :block/uuid)) + tx-data (map + (fn [parent] + {:db/id (:db/id parent) + :block/parent [:block/uuid library-id] + :block/order (db-order/gen-key)}) + top-parent-pages)] + (ldb/transact! repo-or-conn tx-data))) + (defn export-file-graph "Main fn which exports a file graph given its files and imports them into a DB graph. Files is expected to be a seq of maps with a :path key. @@ -1781,6 +1814,7 @@ (select-keys options [:notify-user :set-ui-state])) (export-favorites-from-config-edn conn repo-or-conn config {}) (export-class-properties conn repo-or-conn) + (move-top-parent-pages-to-library conn repo-or-conn) {:import-state (-> (:import-state doc-options) ;; don't leak full asset content (which could be large) out of this ns (dissoc :assets)) diff --git a/deps/graph-parser/test/logseq/graph_parser/exporter_test.cljs b/deps/graph-parser/test/logseq/graph_parser/exporter_test.cljs index 0e98073f75..75acd8ba29 100644 --- a/deps/graph-parser/test/logseq/graph_parser/exporter_test.cljs +++ b/deps/graph-parser/test/logseq/graph_parser/exporter_test.cljs @@ -364,7 +364,7 @@ (:block/alias (db-test/readable-properties (db-test/find-page-by-title @conn "chat-gpt")))) "alias set correctly") (is (= ["y"] - (->> (d/q '[:find [?b ...] :where [?b :block/title "y"] [?b :logseq.property/parent]] + (->> (d/q '[:find [?b ...] :where [?b :block/title "y"] [?b :block/parent]] @conn) first (d/entity @conn) @@ -440,14 +440,15 @@ (testing "namespaces" (let [expand-children (fn expand-children [ent parent] - (if-let [children (:logseq.property/_parent ent)] + (if-let [children (:block/_parent ent)] (cons {:parent (:block/title parent) :child (:block/title ent)} (mapcat #(expand-children % ent) children)) [{:parent (:block/title parent) :child (:block/title ent)}]))] + ;; check pages only (is (= [{:parent "n1" :child "x"} {:parent "x" :child "z"} {:parent "x" :child "y"}] - (rest (expand-children (db-test/find-page-by-title @conn "n1") nil))) + (take 3 (rest (expand-children (db-test/find-page-by-title @conn "n1") nil)))) "First namespace tests duplicate parent page name") (is (= [{:parent "n2" :child "x"} {:parent "x" :child "z"} @@ -640,7 +641,8 @@ (p/let [file-graph-dir "test/resources/exporter-test-graph" files (mapv #(node-path/join file-graph-dir %) ["journals/2024_02_23.md" "pages/url.md" "pages/Whiteboard___Tool.md" - "pages/Whiteboard___Arrow_head_toggle.md"]) + "pages/Whiteboard___Arrow_head_toggle.md" + "pages/Library.md"]) conn (db-test/create-conn) _ (import-files-to-db files conn {:property-classes ["type"]}) _ (@#'gp-exporter/export-class-properties conn conn)] @@ -725,9 +727,9 @@ set)) "All classes are correctly defined by :type") - (is (= "CreativeWork" (get-in (d/entity @conn :user.class/Movie) [:logseq.property/parent :block/title])) + (is (= "CreativeWork" (get-in (d/entity @conn :user.class/Movie) [:logseq.property.class/extends :block/title])) "Existing page correctly set as class parent") - (is (= "Thing" (get-in (d/entity @conn :user.class/CreativeWork) [:logseq.property/parent :block/title])) + (is (= "Thing" (get-in (d/entity @conn :user.class/CreativeWork) [:logseq.property.class/extends :block/title])) "New page correctly set as class parent"))) (deftest-async export-files-with-property-pages-disabled diff --git a/deps/graph-parser/test/resources/exporter-test-graph/pages/Library.md b/deps/graph-parser/test/resources/exporter-test-graph/pages/Library.md new file mode 100644 index 0000000000..d38160000b --- /dev/null +++ b/deps/graph-parser/test/resources/exporter-test-graph/pages/Library.md @@ -0,0 +1 @@ +type:: [[Class]] diff --git a/deps/outliner/script/transact.cljs b/deps/outliner/script/transact.cljs index 3ca6c3d4ec..ed1b0a19a1 100644 --- a/deps/outliner/script/transact.cljs +++ b/deps/outliner/script/transact.cljs @@ -2,8 +2,8 @@ "This script generically runs transactions against the queried blocks" (:require [clojure.edn :as edn] [datascript.core :as d] - [logseq.db.frontend.rules :as rules] [logseq.db.common.sqlite-cli :as sqlite-cli] + [logseq.db.frontend.rules :as rules] [logseq.outliner.db-pipeline :as db-pipeline] [nbb.core :as nbb])) diff --git a/deps/outliner/src/logseq/outliner/cli.cljs b/deps/outliner/src/logseq/outliner/cli.cljs index 001a45e57b..51c4889621 100644 --- a/deps/outliner/src/logseq/outliner/cli.cljs +++ b/deps/outliner/src/logseq/outliner/cli.cljs @@ -73,4 +73,4 @@ (def build-blocks-tx "An alias for build-blocks-tx to specify default options for this ns" - sqlite-build/build-blocks-tx) \ No newline at end of file + sqlite-build/build-blocks-tx) diff --git a/deps/outliner/src/logseq/outliner/core.cljs b/deps/outliner/src/logseq/outliner/core.cljs index e3eb19f4e0..6982562e6f 100644 --- a/deps/outliner/src/logseq/outliner/core.cljs +++ b/deps/outliner/src/logseq/outliner/core.cljs @@ -261,7 +261,7 @@ (not= block-title (:block/title block-entity))) _ (when (and db-based? page? block-title) (outliner-validate/validate-page-title-characters block-title {:node m*})) - m* (if (and db-based? page-title-changed?) + m* (if (and db-based? page-title-changed? (not (and page? (:block/parent block-entity)))) (let [_ (outliner-validate/validate-page-title (:block/title m*) {:node m*}) page-name (common-util/page-name-sanity-lc (:block/title m*))] (assoc m* :block/name page-name)) @@ -334,7 +334,7 @@ txs (map (fn [id] [:db.fn/retractEntity [:block/uuid id]]) ids) page-tx (let [block (d/entity db [:block/uuid block-id])] (when (:block/pre-block? block) - (let [id (:db/id (:block/page block))] + (when-let [id (:db/id (:block/page block))] [[:db/retract id :block/properties] [:db/retract id :block/properties-order] [:db/retract id :block/properties-text-values] @@ -503,12 +503,21 @@ {} block))) +(defn- get-target-block-page + [target-block] + (or + (:db/id (:block/page target-block)) + ;; target parent is a page + (when-let [parent (:block/parent target-block)] + (when (ldb/page? parent) + (:db/id parent))) + ;; target-block is a page itself + (:db/id target-block))) + (defn- build-insert-blocks-tx [db target-block blocks uuids get-new-id {:keys [sibling? outliner-op replace-empty-target? insert-template? keep-block-order?]}] (let [block-ids (set (map :block/uuid blocks)) - target-page (or (:db/id (:block/page target-block)) - ;; target block is a page itself - (:db/id target-block)) + target-page (get-target-block-page target-block) orders (get-block-orders blocks target-block sibling? keep-block-order?)] (map-indexed (fn [idx {:block/keys [parent] :as block}] (when-let [uuid' (get uuids (:block/uuid block))] @@ -522,11 +531,13 @@ (let [ref-ids (set (map :block/uuid (:block/refs block)))] (->> (set/intersection block-ids ref-ids) (remove #{(:block/uuid block)}))))) - m {:db/id (:db/id block) - :block/uuid uuid' - :block/page target-page - :block/parent parent - :block/order order} + m (cond-> + {:db/id (:db/id block) + :block/uuid uuid' + :block/parent parent + :block/order order} + (not (ldb/page? block)) + (assoc :block/page target-page)) result (-> (if (de/entity? block) (assoc m :block/level (:block/level block)) @@ -610,7 +621,6 @@ :else [block sibling?]) - sibling? (if (ldb/page? block) false sibling?) block (if (de/entity? block) block (d/entity db (:db/id block)))] [block sibling?]))) @@ -684,7 +694,6 @@ blocks) [target-block sibling?] (get-target-block db blocks target-block opts) _ (assert (some? target-block) (str "Invalid target: " target-block)) - sibling? (if (ldb/page? target-block) false sibling?) replace-empty-target? (if (and (some? replace-empty-target?) (:block/title target-block) (string/blank? (:block/title target-block))) @@ -773,8 +782,7 @@ [db blocks] (let [top-level-blocks (filter-top-level-blocks db blocks) non-consecutive? (and (> (count top-level-blocks) 1) (seq (ldb/get-non-consecutive-blocks db top-level-blocks))) - top-level-blocks* (->> (get-top-level-blocks top-level-blocks non-consecutive?) - (remove ldb/page?)) + top-level-blocks* (get-top-level-blocks top-level-blocks non-consecutive?) top-level-blocks (remove :logseq.property/built-in? top-level-blocks*) txs-state (ds/new-outliner-txs-state) block-ids (map (fn [b] [:block/uuid (:block/uuid b)]) top-level-blocks) @@ -824,10 +832,8 @@ (let [target-block (d/entity db (:db/id target-block)) block (d/entity db (:db/id block)) first-block-page (:db/id (:block/page block)) - target-page (or (:db/id (:block/page target-block)) - (:db/id target-block)) + target-page (get-target-block-page target-block) not-same-page? (not= first-block-page target-page) - block-order (if sibling? (db-order/gen-key (:block/order target-block) (:block/order (ldb/get-right-sibling target-block))) @@ -840,12 +846,15 @@ (:db/id (:block/parent target-block)) (:db/id target-block)) :block/order block-order} - not-same-page? + (not (ldb/page? block)) (assoc :block/page target-page))] children-page-tx (when not-same-page? (let [children-ids (ldb/get-block-children-ids db (:block/uuid block))] - (map (fn [id] {:block/uuid id - :block/page target-page}) children-ids))) + (keep (fn [id] + (let [child (d/entity db [:block/uuid id])] + (when-not (ldb/page? child) + {:block/uuid id + :block/page target-page}))) children-ids))) target-from-property (:logseq.property/created-from-property target-block) block-from-property (:logseq.property/created-from-property block) property-tx (let [retract-property-tx (when block-from-property @@ -985,7 +994,7 @@ :sibling? true :indent? false}))) - (when (and parent (not (ldb/page? (d/entity db (:db/id parent))))) + (when parent (let [blocks' (take-while (fn [b] (not= (:db/id (:block/parent b)) (:db/id (:block/parent parent)))) diff --git a/deps/outliner/src/logseq/outliner/property.cljs b/deps/outliner/src/logseq/outliner/property.cljs index c01191579d..c266bce93f 100644 --- a/deps/outliner/src/logseq/outliner/property.cljs +++ b/deps/outliner/src/logseq/outliner/property.cljs @@ -314,8 +314,8 @@ _ (when (= property-id :block/tags) (outliner-validate/validate-tags-property @conn block-eids v)) property (d/entity @conn property-id) - _ (when (= (:db/ident property) :logseq.property/parent) - (outliner-validate/validate-parent-property + _ (when (= (:db/ident property) :logseq.property.class/extends) + (outliner-validate/validate-extends-property (if (number? v) (d/entity @conn v) v) (map #(d/entity @conn %) block-eids))) _ (assert (some? property) (str "Property " property-id " doesn't exist yet")) @@ -359,9 +359,9 @@ property-id :logseq.property/empty-placeholder}] {:outliner-op :save-block}) - (and (ldb/class? block) (= property-id :logseq.property/parent)) + (and (ldb/class? block) (= property-id :logseq.property.class/extends)) (ldb/transact! conn - [[:db/add (:db/id block) :logseq.property/parent :logseq.class/Root]] + [[:db/add (:db/id block) :logseq.property.class/extends :logseq.class/Root]] {:outliner-op :save-block}) (contains? db-property/db-attribute-properties property-id) @@ -387,8 +387,8 @@ db-attribute? (some? (db-schema/schema property-id))] (when (= property-id :block/tags) (outliner-validate/validate-tags-property @conn [block-eid] v)) - (when (= property-id :logseq.property/parent) - (outliner-validate/validate-parent-property v [block])) + (when (= property-id :logseq.property.class/extends) + (outliner-validate/validate-extends-property v [block])) (cond db-attribute? (when-not (and (= property-id :block/alias) (= v (:db/id block))) ; alias can't be itself diff --git a/deps/outliner/src/logseq/outliner/validate.cljs b/deps/outliner/src/logseq/outliner/validate.cljs index 4cb7f7e96b..ae56e5e2ec 100644 --- a/deps/outliner/src/logseq/outliner/validate.cljs +++ b/deps/outliner/src/logseq/outliner/validate.cljs @@ -46,59 +46,74 @@ :payload {:message "Built-in pages can't be edited" :type :warning}})))) -(defn- validate-unique-by-parent-and-name [db entity new-title] +(defn- validate-unique-by-extends-and-name [db entity new-title] (when-let [_res (seq (d/q '[:find [?b ...] :in $ ?eid ?type ?title :where [?b :block/title ?title] - [?b :logseq.property/parent ?type] + [?b :logseq.property.class/extends ?type] [(not= ?b ?eid)]] db (:db/id entity) - (:db/id (:logseq.property/parent entity)) + (:db/id (:logseq.property.class/extends entity)) new-title))] (throw (ex-info "Duplicate page by parent" {:type :notification :payload {:message (str "Another page named " (pr-str new-title) " already exists for parents " - (pr-str (->> (ldb/get-page-parents entity) + (pr-str (->> (ldb/get-class-extends entity) (map :block/title) (string/join ns-util/parent-char)))) :type :warning}})))) +(defn- another-id-q + [entity] + (cond + (ldb/property? entity) + ;; Property names are unique in that they can + ;; have the same names as built-in property names + '[:find [?b ...] + :in $ ?eid ?title [?tag-id ...] + :where + [?b :block/title ?title] + [?b :block/tags ?tag-id] + [(missing? $ ?b :logseq.property/built-in?)] + [(not= ?b ?eid)]] + (:logseq.property.class/extends entity) + '[:find [?b ...] + :in $ ?eid ?title [?tag-id ...] + :where + [?b :block/title ?title] + [?b :block/tags ?tag-id] + [(not= ?b ?eid)] + ;; same extends + [?b :logseq.property.class/extends ?bp] + [?eid :logseq.property.class/extends ?ep] + [(= ?bp ?ep)]] + (:block/parent entity) + '[:find [?b ...] + :in $ ?eid ?title [?tag-id ...] + :where + [?b :block/title ?title] + [?b :block/tags ?tag-id] + [(not= ?b ?eid)] + ;; same parent + [?b :block/parent ?bp] + [?eid :block/parent ?ep] + [(= ?bp ?ep)]] + :else + '[:find [?b ...] + :in $ ?eid ?title [?tag-id ...] + :where + [?b :block/title ?title] + [?b :block/tags ?tag-id] + [(not= ?b ?eid)]])) + (defn- validate-unique-for-page [db new-title {:block/keys [tags] :as entity}] (cond (seq tags) (when-let [another-id (first - (d/q (cond - (ldb/property? entity) - ;; Property names are unique in that they can - ;; have the same names as built-in property names - '[:find [?b ...] - :in $ ?eid ?title [?tag-id ...] - :where - [?b :block/title ?title] - [?b :block/tags ?tag-id] - [(missing? $ ?b :logseq.property/built-in?)] - [(not= ?b ?eid)]] - (:logseq.property/parent entity) - '[:find [?b ...] - :in $ ?eid ?title [?tag-id ...] - :where - [?b :block/title ?title] - [?b :block/tags ?tag-id] - [(not= ?b ?eid)] - ;; same parent - [?b :logseq.property/parent ?bp] - [?eid :logseq.property/parent ?ep] - [(= ?bp ?ep)]] - :else - '[:find [?b ...] - :in $ ?eid ?title [?tag-id ...] - :where - [?b :block/title ?title] - [?b :block/tags ?tag-id] - [(not= ?b ?eid)]]) + (d/q (another-id-q entity) db (:db/id entity) new-title @@ -117,13 +132,13 @@ (map (fn [id] (str "#" (:block/title (d/entity db id)))) common-tag-ids))) :type :warning}}))))) - (:logseq.property/parent entity) - (validate-unique-by-parent-and-name db entity new-title))) + (:logseq.property.class/extends entity) + (validate-unique-by-extends-and-name db entity new-title))) (defn ^:api validate-unique-by-name-tag-and-block-type "Validates uniqueness of nodes for the following cases: - Page names are unique for a tag e.g. their can be Apple #Company and Apple #Fruit - - Page names are unique for a :logseq.property/parent" + - Page names are unique for a :logseq.property.class/extends" [db new-title entity] (when (entity-util/page? entity) (validate-unique-for-page db new-title entity))) @@ -154,32 +169,29 @@ :payload {:message "This is an invalid property name. A property name cannot start with page reference characters '#' or '[['." :type :error}})))) -(defn- validate-parent-property-have-same-type - "Validates whether given parent and children are valid. Allows 'class' and - 'page' types to have a relationship with their own type. May consider allowing more - page types if they don't cause systemic bugs" +(defn- validate-extends-property-have-correct-type + "Validates whether given parent and children are classes" [parent-ent child-ents] - (when (or (and (ldb/class? parent-ent) (not (every? ldb/class? child-ents))) - (and (ldb/internal-page? parent-ent) (not (every? ldb/internal-page? child-ents))) - (not ((some-fn ldb/class? ldb/internal-page?) parent-ent))) - (throw (ex-info "Can't set this page as a parent because the child page is a different type" + (when (or (not (ldb/class? parent-ent)) + (not (every? ldb/class? child-ents))) + (throw (ex-info "Can't extend this page since either it is not a tag or is extending from a page that is not a tag" {:type :notification - :payload {:message "Can't set this page as a parent because the child page is a different type" - :type :warning} + :payload {:message "Can't extend this page since either it is not a tag or is extending from a page that is not a tag" + :type :error} :blocks (map #(select-keys % [:db/id :block/title]) (remove ldb/class? child-ents))})))) -(defn- disallow-built-in-class-parent-change +(defn- disallow-built-in-class-extends-change [_parent-ent child-ents] (when (some #(get db-class/built-in-classes (:db/ident %)) child-ents) (throw (ex-info "Can't change the parent of a built-in tag" {:type :notification :payload {:message "Can't change the parent of a built-in tag" - :type :warning}})))) + :type :error}})))) -(defn validate-parent-property +(defn validate-extends-property [parent-ent child-ents] - (disallow-built-in-class-parent-change parent-ent child-ents) - (validate-parent-property-have-same-type parent-ent child-ents)) + (disallow-built-in-class-extends-change parent-ent child-ents) + (validate-extends-property-have-correct-type parent-ent child-ents)) (defn- disallow-node-cant-tag-with-built-in-non-tags [db _block-eids v] @@ -230,4 +242,4 @@ "Validates deleting a property value from :block/tags for given blocks" [db block-eids v] (disallow-tagging-a-built-in-entity db block-eids {:delete? true}) - (disallow-node-cant-tag-with-private-tags db block-eids v {:delete? true})) \ No newline at end of file + (disallow-node-cant-tag-with-private-tags db block-eids v {:delete? true})) diff --git a/deps/outliner/test/logseq/outliner/validate_test.cljs b/deps/outliner/test/logseq/outliner/validate_test.cljs index ae4fd92ceb..7b397052b9 100644 --- a/deps/outliner/test/logseq/outliner/validate_test.cljs +++ b/deps/outliner/test/logseq/outliner/validate_test.cljs @@ -65,7 +65,7 @@ (db-test/find-page-by-title @conn "Fruit"))) "Allow class to have same name as a page"))) -(deftest validate-parent-property +(deftest validate-extends-property (let [conn (db-test/create-conn-with-blocks {:properties {:prop1 {:logseq.property/type :default}} :classes {:Class1 {} :Class2 {}} @@ -73,34 +73,30 @@ [{:page {:block/title "page1"}} {:page {:block/title "page2"}}]}) page1 (db-test/find-page-by-title @conn "page1") - page2 (db-test/find-page-by-title @conn "page2") class1 (db-test/find-page-by-title @conn "Class1") class2 (db-test/find-page-by-title @conn "Class2") property (db-test/find-page-by-title @conn "prop1")] (testing "valid parent and child combinations" - (is (nil? (outliner-validate/validate-parent-property page1 [page2])) - "parent page to child page is valid") - (is (nil? (outliner-validate/validate-parent-property class1 [class2])) + (is (nil? (outliner-validate/validate-extends-property class1 [class2])) "parent class to child class is valid")) (testing "invalid parent and child combinations" (are [parent child] (thrown-with-msg? js/Error - #"Can't set" - (outliner-validate/validate-parent-property parent [child])) + #"Can't extend" + (outliner-validate/validate-extends-property parent [child])) class1 page1 page1 class1 - property page1 property class1)) (testing "built-in tag can't have parent changed" (is (thrown-with-msg? js/Error #"Can't change.*built-in" - (outliner-validate/validate-parent-property (entity-plus/entity-memoized @conn :logseq.class/Task) + (outliner-validate/validate-extends-property (entity-plus/entity-memoized @conn :logseq.class/Task) [(entity-plus/entity-memoized @conn :logseq.class/Cards)])))))) (deftest validate-tags-property @@ -168,9 +164,9 @@ (testing "Validate property relationships" (let [parent-child-pairs (d/q '[:find ?parent ?child - :where [?child :logseq.property/parent ?parent]] @conn)] + :where [?child :logseq.property.class/extends ?parent]] @conn)] (doseq [[parent-id child-id] parent-child-pairs] (let [parent (d/entity @conn parent-id) child (d/entity @conn child-id)] - (is (nil? (#'outliner-validate/validate-parent-property-have-same-type parent [child])) + (is (nil? (#'outliner-validate/validate-extends-property-have-correct-type parent [child])) (str "Parent and child page is valid: " (pr-str (:block/title parent)) " " (pr-str (:block/title child)))))))))) diff --git a/deps/publishing/src/logseq/publishing/html.cljs b/deps/publishing/src/logseq/publishing/html.cljs index ff4e4e8036..c45755f1d6 100644 --- a/deps/publishing/src/logseq/publishing/html.cljs +++ b/deps/publishing/src/logseq/publishing/html.cljs @@ -2,10 +2,10 @@ "This frontend only ns builds the publishing html including doing all the necessary db filtering" (:require [clojure.string :as string] + [datascript.core :as d] + [datascript.transit :as dt] [goog.string :as gstring] [goog.string.format] - [datascript.transit :as dt] - [datascript.core :as d] [logseq.publishing.db :as db])) ;; Copied from hiccup but tweaked for publish usage diff --git a/deps/shui/src/logseq/shui/base/core.cljs b/deps/shui/src/logseq/shui/base/core.cljs index 2a1aa7b744..1755881086 100644 --- a/deps/shui/src/logseq/shui/base/core.cljs +++ b/deps/shui/src/logseq/shui/base/core.cljs @@ -44,13 +44,12 @@ (apply button-base props' children))) (defn button-icon - [variant icon-name {:keys [icon-props size] :as props} child] - + [variant icon-name {:keys [icon-props button-size] :as props} child] (button - (merge (dissoc props :icon-props :size) + (merge (dissoc props :icon-props :button-size) {:variant variant :data-button :icon - :style (when size {:width size :height size})}) + :style (when button-size {:width button-size :height button-size})}) (tabler-icon/root (name icon-name) (merge {:size 20} icon-props)) child)) diff --git a/scripts/src/logseq/tasks/db_graph/create_graph_with_properties.cljs b/scripts/src/logseq/tasks/db_graph/create_graph_with_properties.cljs index 77c5052a32..5da39ecba1 100644 --- a/scripts/src/logseq/tasks/db_graph/create_graph_with_properties.cljs +++ b/scripts/src/logseq/tasks/db_graph/create_graph_with_properties.cljs @@ -14,11 +14,11 @@ [logseq.common.util :as common-util] [logseq.common.util.date-time :as date-time-util] [logseq.common.util.page-ref :as page-ref] + [logseq.db.common.sqlite-cli :as sqlite-cli] [logseq.db.frontend.property.type :as db-property-type] [logseq.outliner.cli :as outliner-cli] [nbb.classpath :as cp] - [nbb.core :as nbb] - [logseq.db.common.sqlite-cli :as sqlite-cli])) + [nbb.core :as nbb])) (defn- date-journal-title [date] (date-time-util/int->journal-title (date-time-util/date->int date) "MMM do, yyyy")) diff --git a/scripts/src/logseq/tasks/db_graph/create_graph_with_schema_org.cljs b/scripts/src/logseq/tasks/db_graph/create_graph_with_schema_org.cljs index 09888524fe..3d24878c00 100644 --- a/scripts/src/logseq/tasks/db_graph/create_graph_with_schema_org.cljs +++ b/scripts/src/logseq/tasks/db_graph/create_graph_with_schema_org.cljs @@ -17,12 +17,12 @@ [clojure.string :as string] [clojure.walk :as w] [datascript.core :as d] + [logseq.db.common.sqlite-cli :as sqlite-cli] [logseq.db.frontend.malli-schema :as db-malli-schema] [logseq.db.frontend.property :as db-property] [logseq.outliner.cli :as outliner-cli] [nbb.classpath :as cp] - [nbb.core :as nbb] - [logseq.db.common.sqlite-cli :as sqlite-cli])) + [nbb.core :as nbb])) (defn- get-comment-string [rdfs-comment renamed-pages] @@ -364,14 +364,14 @@ (d/q '[:find [(pull ?b [* {:logseq.property.class/properties [:block/title]} {:logseq.property/classes [:block/title]} - {:logseq.property/parent [:block/title]} + {:logseq.property.class/extends [:block/title]} {:block/tags [:block/title]} {:block/refs [:block/title]}]) ...] :in $ :where [?b :db/ident ?ident]] db)) top-level-properties [:logseq.property/type :logseq.property.class/properties :logseq.property/classes - :logseq.property/parent :block/tags] + :logseq.property.class/extends :block/tags] debug-attributes (into [:block/name :block/title :db/cardinality :db/ident :block/refs] top-level-properties)] (fs/writeFileSync "schema-org.edn" @@ -388,8 +388,8 @@ v))))) (seq (:logseq.property.class/properties m)) (update :logseq.property.class/properties #(set (map :block/title %))) - (some? (:logseq.property/parent m)) - (update :logseq.property/parent :block/title) + (some? (:logseq.property.class/extends m)) + (update :logseq.property.class/extends :block/title) (seq (:logseq.property/classes m)) (update :logseq.property/classes #(set (map :block/title %))) (seq (:block/tags m)) diff --git a/scripts/src/logseq/tasks/dev/lint.clj b/scripts/src/logseq/tasks/dev/lint.clj index f12fbe853e..3f5e6a7be9 100644 --- a/scripts/src/logseq/tasks/dev/lint.clj +++ b/scripts/src/logseq/tasks/dev/lint.clj @@ -1,6 +1,6 @@ (ns logseq.tasks.dev.lint - (:require [clojure.string :as string] - [babashka.process :refer [shell]])) + (:require [babashka.process :refer [shell]] + [clojure.string :as string])) (defn dev "Run all lint tasks @@ -34,14 +34,14 @@ ;; remove files that aren't in a kondo dir ((fn [x] (dissoc x nil))))] (if (seq dir-to-files) - (doseq [[dir* files*] dir-to-files] - (let [dir (if (= dir* "src") "." dir*) - files (mapv #(string/replace-first % (str dir "/") "") files*) - cmd (str "cd " dir " && clj-kondo --lint " (string/join " " files)) - _ (println cmd) - res (apply shell {:dir dir :continue :true} "clj-kondo --lint" files)] - (when (pos? (:exit res)) (System/exit (:exit res))))) - (println "No clj* files have changed to lint.")))) + (doseq [[dir* files*] dir-to-files] + (let [dir (if (= dir* "src") "." dir*) + files (mapv #(string/replace-first % (str dir "/") "") files*) + cmd (str "cd " dir " && clj-kondo --lint " (string/join " " files)) + _ (println cmd) + res (apply shell {:dir dir :continue :true} "clj-kondo --lint" files)] + (when (pos? (:exit res)) (System/exit (:exit res))))) + (println "No clj* files have changed to lint.")))) (defn- validate-frontend-not-in-worker [] diff --git a/scripts/src/logseq/tasks/lang.clj b/scripts/src/logseq/tasks/lang.clj index e65fb21943..74ee6fdfb2 100644 --- a/scripts/src/logseq/tasks/lang.clj +++ b/scripts/src/logseq/tasks/lang.clj @@ -1,13 +1,13 @@ (ns logseq.tasks.lang "Tasks related to language translations" - (:require [clojure.set :as set] + (:require [babashka.cli :as cli] + [babashka.fs :as fs] + [babashka.process :refer [shell]] + [borkdude.rewrite-edn :as rewrite] + [clojure.set :as set] [clojure.string :as string] [frontend.dicts :as dicts] - [logseq.tasks.util :as task-util] - [babashka.cli :as cli] - [babashka.process :refer [shell]] - [babashka.fs :as fs] - [borkdude.rewrite-edn :as rewrite])) + [logseq.tasks.util :as task-util])) (defn- get-dicts [] diff --git a/src/main/frontend/common_keywords.cljs b/src/main/frontend/common_keywords.cljs index b579a22168..1fa51264f1 100644 --- a/src/main/frontend/common_keywords.cljs +++ b/src/main/frontend/common_keywords.cljs @@ -11,7 +11,6 @@ :kv/value {:doc "Used to store key-value, the value could be anything, e.g. {:db/ident :logseq.kv/xxx :kv/value value}"} - - ;; :block.temp/xxx keywords +;; :block.temp/xxx keywords :block.temp/load-status {:doc "`:full` means the block and its children have been loaded, `:self` means the block itself has been loaded."}) diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index 7ef2a48b97..5e61e108c4 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -663,8 +663,9 @@ All page-names are sanitized except page-name-in-block" [state {:keys [contents-page? whiteboard-page? other-position? show-unique-title? stop-click-event? - on-context-menu] - :or {stop-click-event? true} + on-context-menu with-parent?] + :or {stop-click-event? true + with-parent? true} :as config} page-entity children label] (let [*hover? (::hover? state) @@ -672,9 +673,10 @@ tag? (:tag? config) page-name (when (:block/title page-entity) (util/page-name-sanity-lc (:block/title page-entity))) - breadcrumb? (:breadcrumb? config) config (assoc config :whiteboard-page? whiteboard-page?) - untitled? (when page-name (model/untitled-page? (:block/title page-entity))) + untitled? (when page-name + (or (model/untitled-page? (:block/title page-entity)) + (and (ldb/page? page-entity) (string/blank? (:block/title page-entity))))) show-icon? (:show-icon? config)] [:a.relative (cond-> @@ -706,9 +708,6 @@ (and other-position? (not (util/shift-key? e))) (some-> (.-target e) (.closest ".jtrigger") (.click)) - breadcrumb? - (.preventDefault e) - :else (do (.preventDefault e) @@ -734,6 +733,12 @@ :own-icon? true})] [:span {:class (str "icon-emoji-wrap " (when emoji? "as-emoji"))} icon]))) + + (when (and (ldb/page? page-entity) with-parent?) + (when-let [parent (:block/parent page-entity)] + (when-not (ldb/library? parent) + [:span.select-none (str (:block/title parent) "/")]))) + [:span (if (and (coll? children) (seq children)) (for [child children] @@ -793,25 +798,27 @@ (let [*el-trigger (hooks/use-ref nil)] (hooks/use-effect! (fn [] - (when (true? visible?) - (shui/popup-show! - (hooks/deref *el-trigger) render - {:root-props {:onOpenChange (fn [v] (set-visible! v)) - :modal false} - :content-props {:class "ls-preview-popup" - :onInteractOutside (fn [^js e] (.preventDefault e)) - :onEscapeKeyDown (fn [^js e] - (when (state/editing?) - (.preventDefault e) - (some-> (hooks/deref *el-popup) (.focus))))} - :as-dropdown? false})) + (when-not (state/editing?) + (when (true? visible?) + (shui/popup-show! + (hooks/deref *el-trigger) render + {:root-props {:onOpenChange (fn [v] (set-visible! v)) + :modal false} + :content-props {:class "ls-preview-popup" + :onInteractOutside (fn [^js e] (.preventDefault e)) + :onEscapeKeyDown (fn [^js e] + (when (state/editing?) + (.preventDefault e) + (some-> (hooks/deref *el-popup) (.focus))))} + :as-dropdown? false})) + + (when (false? visible?) + (shui/popup-hide!) + (when (state/get-edit-block) + (state/clear-edit!))) + (hooks/set-ref! *timer nil) + (hooks/set-ref! *timer1 nil)) - (when (false? visible?) - (shui/popup-hide!) - (when (state/get-edit-block) - (state/clear-edit!))) - (hooks/set-ref! *timer nil) - (hooks/set-ref! *timer1 nil) ;; teardown (fn [] (when visible? @@ -2119,12 +2126,15 @@ [config block children collapsed?] (let [ref? (:ref? config) query? (:custom-query? config) + library? (:library? config) children (when (coll? children) (let [ref-matched-children-ids (:ref-matched-children-ids config)] (cond->> (remove nil? children) ref-matched-children-ids ;; Block children will not be rendered if the filters do not match them - (filter (fn [b] (ref-matched-children-ids (:db/id b)))))))] + (filter (fn [b] (ref-matched-children-ids (:db/id b)))) + library? + (filter (fn [b] (and (ldb/page? b) (not (or (ldb/class? b) (ldb/property? b)))))))))] (when (and (coll? children) (seq children) (not collapsed?)) @@ -2163,9 +2173,10 @@ :ignore-children? page-title?}) link? (boolean (:original-block config)) icon-size (if collapsed? 12 14) - icon (icon-component/get-node-icon-cp block {:size icon-size :color? true}) + icon (icon-component/get-node-icon-cp block {:size icon-size :color? true :link? link?}) with-icon? (and (some? icon) - (or (db/page? block) + (or (and (db/page? block) + (not (:library? config))) (:logseq.property/icon block) link? (some :logseq.property/icon (:block/tags block)) @@ -2449,6 +2460,9 @@ db (db/get-db) query? (ldb/class-instance? (entity-plus/entity-memoized db :logseq.class/Query) block')] (cond + (and (:page-title? config) (ldb/page? block) (string/blank? (:block/title block))) + [:div.opacity-75 "Untitled"] + (:raw-title? config) (text-block-title (dissoc config :raw-title?) block) @@ -3209,42 +3223,30 @@ (rum/defc breadcrumb-separator [] - (ui/icon "chevron-right" {:style {:font-size 20} - :class "opacity-50 mx-1"})) + [:span.opacity-50.px-1 + "/"]) ;; "block-id - uuid of the target block of breadcrumb. page uuid is also acceptable" (rum/defc breadcrumb-aux < rum/reactive - [config repo block-id {:keys [show-page? indent? end-separator? level-limit _navigating-block] - :or {show-page? true - level-limit 3} + [config repo block-id {:keys [show-page? indent? end-separator? _navigating-block] + :or {show-page? true} :as opts}] (let [from-property (when (and block-id (config/db-based-graph? repo)) (:logseq.property/created-from-property (db/entity [:block/uuid block-id]))) - parents (db/get-block-parents repo block-id {:depth (inc level-limit)}) - parents (remove nil? (concat parents [from-property])) - page (or (db/get-block-page repo block-id) ;; only return for block uuid - (model/query-block-by-uuid block-id)) ;; return page entity when received page uuid - page-name (:block/name page) - page-title (:block/title page) - show? (or (seq parents) show-page? page-name) - parents (if (= page-name (:block/name (first parents))) - (rest parents) - parents) - more? (> (count parents) level-limit) - parents (if more? (take-last level-limit parents) parents) + parents (db/get-block-parents repo block-id {:depth 1000}) + parents (cond-> (remove nil? (concat parents [from-property])) + (not show-page?) + rest) config (assoc config :breadcrumb? true :disable-preview? true :stop-click-event? false)] - (when show? - (let [page-name-props (when show-page? - [page - (page-cp (dissoc config :breadcrumb? true) page) - {:block/name (or page-title page-name)}]) - parents-props (doall + (when (seq parents) + (let [parents-props (doall (for [{:block/keys [uuid name title] :as block} parents] (if name - [block (page-cp {} block)] + [block (page-cp {:disable-preview? true + :with-parent? false} block) true] (let [result (block/parse-title-and-body uuid (get block :block/format :markdown) @@ -3257,16 +3259,15 @@ (when ast-title (if (seq ast-title) (->elem :span (map-inline config ast-title)) - (->elem :div (markup-elements-cp config ast-body))))])))) - breadcrumbs (->> (into [] parents-props) - (concat [page-name-props] (when more? [:more])) - (filterv identity) + (->elem :div (markup-elements-cp config ast-body)))) + false])))) + breadcrumbs (->> parents-props (map (fn [x] - (if (and (vector? x) (second x)) - (let [[block label] x] - (rum/with-key (breadcrumb-fragment config block label opts) - (str (:block/uuid block)))) - [:span.opacity-70 {:key "dots"} "⋯"]))) + (let [[block label page?] x + label' (if page? + label + (breadcrumb-fragment config block label opts))] + (rum/with-key label' (str (:block/uuid block)))))) (interpose (breadcrumb-separator)))] (when (seq breadcrumbs) [:div.breadcrumb.block-parents @@ -3282,10 +3283,9 @@ (when end-separator? (breadcrumb-separator))]))))) (rum/defc breadcrumb - [config repo block-id {:keys [_show-page? _indent? _end-separator? level-limit _navigating-block] - :or {level-limit 3} + [config repo block-id {:keys [_show-page? _indent? _end-separator? _navigating-block] :as opts}] - (let [[block set-block!] (hooks/use-state (db/entity [:block/uuid block-id]))] + (let [[block set-block!] (hooks/use-state nil)] (hooks/use-effect! (fn [] (p/let [block (db-async/> (:logseq.property/_parent class) + (let [children (->> (:logseq.property.class/_extends class) ;; Disallow parent cycles (remove #(= (:db/id class) (:db/id %))))] (when (seq children) [:ul (for [child (sort-by :block/title children)] (let [title [:li.ml-2 (block/page-reference {:show-brackets? false} (:block/uuid child) nil)]] - (if (seq (:logseq.property/_parent child)) + (if (seq (:logseq.property.class/_extends child)) (ui/foldable title (class-children-aux child opts) @@ -23,7 +23,7 @@ (rum/defc class-children [class] - (when (seq (:logseq.property/_parent class)) + (when (seq (:logseq.property.class/_extends class)) (let [children-pages (set (model/get-structured-children (state/get-current-repo) (:db/id class))) ;; Expand children if there are about a pageful of total blocks to display default-collapsed? (> (count children-pages) 30)] diff --git a/src/main/frontend/components/cmdk/core.cljs b/src/main/frontend/components/cmdk/core.cljs index 7f650be6f2..36be47f2cb 100644 --- a/src/main/frontend/components/cmdk/core.cljs +++ b/src/main/frontend/components/cmdk/core.cljs @@ -127,14 +127,15 @@ (or (let [page (some-> (text/get-namespace-last-part input) string/trim db/get-page) - parent-title (:block/title (:logseq.property/parent page)) + parent-title (:block/title (:block/parent page)) namespace? (string/includes? input "/")] (and page (or (not namespace?) (and parent-title (= (util/page-name-sanity-lc parent-title) - (util/page-name-sanity-lc (nth (reverse (string/split input "/")) 1))))))) + (some-> (util/nth-safe (reverse (string/split input "/")) 1) + util/page-name-sanity-lc)))))) (some (fn [block] (and (:block/tags block) @@ -294,13 +295,16 @@ source-page (or (model/get-alias-source-page repo (:db/id entity)) (:alias page)) icon (get-page-icon entity) - title (block-handler/block-unique-title page) + title (block-handler/block-unique-title (or entity page)) title' (if source-page (str title " -> alias: " (:block/title source-page)) title)] (hash-map :icon icon :icon-theme :gray :text title' - :source-page (or source-page page) - :alias (:alias page)))) + :header (when (:block/parent entity) + (block/breadcrumb {:disable-preview? true + :search? true} repo (:block/uuid page) {})) + :alias (:alias page) + :source-page (or source-page page)))) (defn- block-item [repo block current-page !input] @@ -310,7 +314,8 @@ {:icon icon :icon-theme :gray :text (highlight-content-query text @!input) - :header (when-not (db/page? block) (block/breadcrumb {:search? true} repo id {})) + :header (block/breadcrumb {:disable-preview? true + :search? true} repo id {}) :current-page? (when-let [page-id (:block/page block)] (= page-id (:block/uuid current-page))) :source-block block})) diff --git a/src/main/frontend/components/cmdk/list_item.cljs b/src/main/frontend/components/cmdk/list_item.cljs index 49c5ae2d06..cccda2957e 100644 --- a/src/main/frontend/components/cmdk/list_item.cljs +++ b/src/main/frontend/components/cmdk/list_item.cljs @@ -40,7 +40,7 @@ highlighted-text (string/replace normal-text query-re "<:hlmarker>$1<:hlmarker>") segs (string/split highlighted-text #"<:hlmarker>")] (if (seq segs) - (into [:span {:data-testid text-string}] + (into [:span {"data-testid" text-string}] (map-indexed (fn [i seg] (if (even? i) [:span seg] @@ -82,7 +82,7 @@ :style {:color "var(--lx-gray-11)"}} (highlight-query header)]) ;; main row - [:div.flex.items-center.gap-3 + [:div.flex.items-start.gap-3 [:div.w-5.h-5.rounded.flex.items-center.justify-center {:style {:background (when (#{:gradient} icon-theme) "linear-gradient(-65deg, #8AE8FF, #5373E7, #369EFF, #00B1CC)") :box-shadow (when (#{:gradient} icon-theme) "inset 0 0 0 1px rgba(255,255,255,0.3) ")} diff --git a/src/main/frontend/components/container.cljs b/src/main/frontend/components/container.cljs index f97c23c157..8a789db8c5 100644 --- a/src/main/frontend/components/container.cljs +++ b/src/main/frontend/components/container.cljs @@ -48,6 +48,7 @@ [frontend.version :refer [version]] [goog.dom :as gdom] [goog.object :as gobj] + [logseq.common.config :as common-config] [logseq.common.path :as path] [logseq.common.util.namespace :as ns-util] [logseq.db :as ldb] @@ -155,8 +156,12 @@ (block/inline-text :markdown (:block/title page)) untitled? (t :untitled) :else (let [title' (pdf-utils/fix-local-asset-pagename title) - parent (:logseq.property/parent page)] - (if (and parent (not (ldb/class? page))) + parent (:block/parent page)] + (if (and parent + (not (or (ldb/class? page) + (and (:logseq.property/built-in? parent) + (= (:block/title parent) + common-config/library-page-name))))) (str (:block/title parent) ns-util/parent-char title') title')))] diff --git a/src/main/frontend/components/editor.cljs b/src/main/frontend/components/editor.cljs index 60570a3446..fcc7dc7924 100644 --- a/src/main/frontend/components/editor.cljs +++ b/src/main/frontend/components/editor.cljs @@ -123,7 +123,8 @@ (state/set-edit-content! (.-id input) value') (state/clear-editor-action!) (p/let [page (db/get-page chosen-item) - _ (when-not page (page-handler/ - (recent-slider) - (rum/with-key (rtc-collaborators) - (str "collab-" current-repo)) - (rtc-indicator/indicator)]) + [:div.r.flex.drag-region.justify-between.items-center.gap-2.overflow-x-hidden.w-full + [:div.flex.flex-1 + (block-breadcrumb (state/get-current-page))] + [:div.flex + (when (and current-repo + (ldb/get-graph-rtc-uuid (db/get-db)) + (user-handler/logged-in?) + (config/db-based-graph? current-repo) + (user-handler/team-member?)) + [:<> + (recent-slider) + (rum/with-key (rtc-collaborators) + (str "collab-" current-repo)) + (rtc-indicator/indicator)]) - (when (user-handler/logged-in?) - (rtc-indicator/downloading-detail)) - (when (user-handler/logged-in?) - (rtc-indicator/uploading-detail)) + (when (user-handler/logged-in?) + (rtc-indicator/downloading-detail)) + (when (user-handler/logged-in?) + (rtc-indicator/uploading-detail)) - (when (and current-repo - (not (config/demo-graph? current-repo)) - (not (config/db-based-graph? current-repo)) - (user-handler/alpha-or-beta-user?)) - (fs-sync/indicator)) + (when (and current-repo + (not (config/demo-graph? current-repo)) + (not (config/db-based-graph? current-repo)) + (user-handler/alpha-or-beta-user?)) + (fs-sync/indicator)) - (when (and (not= (state/get-current-route) :home) - (not custom-home-page?)) - (home-button)) + (when (and (not= (state/get-current-route) :home) + (not custom-home-page?)) + (home-button)) - (when config/lsp-enabled? - [:<> - (plugins/hook-ui-items :toolbar) - (plugins/updates-notifications)]) + (when config/lsp-enabled? + [:<> + (plugins/hook-ui-items :toolbar) + (plugins/updates-notifications)]) - (when (state/feature-http-server-enabled?) - (server/server-indicator (state/sub :electron/server))) + (when (state/feature-http-server-enabled?) + (server/server-indicator (state/sub :electron/server))) - (when (util/electron?) - (back-and-forward)) + (when (util/electron?) + (back-and-forward)) - (when-not (mobile-util/native-platform?) - (new-block-mode)) + (when-not (mobile-util/native-platform?) + (new-block-mode)) - (when config/publishing? - [:a.text-sm.font-medium.button {:href (rfe/href :graph)} - (t :graph)]) + (when config/publishing? + [:a.text-sm.font-medium.button {:href (rfe/href :graph)} + (t :graph)]) - (toolbar-dots-menu {:t t - :current-repo current-repo - :default-home default-home}) + (toolbar-dots-menu {:t t + :current-repo current-repo + :default-home default-home}) - (sidebar/toggle) + (sidebar/toggle) - (updater-tips-new-version t)]])) + (updater-tips-new-version t)]]])) (def ^:private header-related-flow (m/latest diff --git a/src/main/frontend/components/header.css b/src/main/frontend/components/header.css index e18bcd2491..7999fe0874 100644 --- a/src/main/frontend/components/header.css +++ b/src/main/frontend/components/header.css @@ -314,3 +314,31 @@ html.is-zoomed-native-ios { min-width: auto; } } + + +.cp__header { + > .r > div:not(.ui__dropdown-trigger) a, button { + @apply opacity-70 text-[inherit]; + + &:hover { + @apply opacity-100; + } + } +} + +.cp__header { + .ls-block-breadcrumb { + @apply text-sm pl-4; + } + .breadcrumb { + @apply flex items-center; + } + + .breadcrumb a { + @apply !opacity-75 hover:!opacity-100; + span { + @apply whitespace-nowrap text-ellipsis inline-block overflow-x-hidden align-middle; + max-width: 34ch; + } + } +} diff --git a/src/main/frontend/components/icon.cljs b/src/main/frontend/components/icon.cljs index d47ac39a0d..787a5f9239 100644 --- a/src/main/frontend/components/icon.cljs +++ b/src/main/frontend/components/icon.cljs @@ -65,8 +65,12 @@ (defn get-node-icon-cp [node-entity opts] (let [opts' (merge {:size 14} opts) - node-icon (if (:own-icon? opts) + node-icon (cond + (:own-icon? opts) (get node-entity (pu/get-pid :logseq.property/icon)) + (:link? opts) + "arrow-narrow-right" + :else (get-node-icon node-entity))] (when-not (or (string/blank? node-icon) (and (contains? #{"letter-n" "file"} node-icon) (:not-text-or-page? opts))) [:div.icon-cp-container.flex.items-center diff --git a/src/main/frontend/components/library.cljs b/src/main/frontend/components/library.cljs new file mode 100644 index 0000000000..e121a194c3 --- /dev/null +++ b/src/main/frontend/components/library.cljs @@ -0,0 +1,75 @@ +(ns frontend.components.library + "Library page" + (:require [clojure.string :as string] + [frontend.components.select :as components-select] + [frontend.db :as db] + [frontend.handler.editor :as editor-handler] + [frontend.search :as search] + [frontend.state :as state] + [frontend.ui :as ui] + [logseq.db :as ldb] + [logseq.shui.hooks :as hooks] + [logseq.shui.ui :as shui] + [promesa.core :as p] + [rum.core :as rum])) + +(rum/defc select-pages + [library-page] + (let [[result set-result!] (hooks/use-state nil) + [input set-input!] (hooks/use-state "") + [selected-choices set-selected-choices!] (hooks/use-state #{}) + items (map (fn [block] + {:value (:db/id block) + :label (:block/title block)}) + result)] + (hooks/use-effect! + (fn [] + (if (string/blank? input) + (set-result! nil) + (p/let [result (search/block-search (state/get-current-repo) input {:enable-snippet? false + :built-in? false + :page-only? true + :library-page-search? true})] + (set-result! result)))) + [(hooks/use-debounced-value input 200)]) + (components-select/select + {:items items + :extract-fn :label + :extract-chosen-fn :value + :selected-choices selected-choices + :on-chosen (fn [chosen selected?] + (if selected? + (let [last-child (->> (:block/_parent (db/entity (:db/id library-page))) + ldb/sort-by-order + last) + target (or last-child library-page) + sibling? (some? last-child)] + (editor-handler/move-blocks! [{:db/id chosen}] target sibling?) + (set-selected-choices! (conj selected-choices chosen))) + (do + (db/transact! (state/get-current-repo) + [[:db/retract chosen :block/parent]] + {:outliner-op :save-block}) + (set-selected-choices! (disj selected-choices chosen))))) + :multiple-choices? true + :input-default-placeholder "Add pages" + :show-new-when-not-exact-match? false + :on-input set-input! + :input-opts {:class "!p-1 !text-sm"}}))) + +(rum/defc add-pages + [library-page] + [:div.ls-add-pages.px-1 + (shui/button + {:variant :secondary + :size :sm + :class "text-muted-foreground hover:text-foreground" + :on-click (fn [e] + (shui/popup-show! + (.-target e) + (fn [] + [:div {:style {:min-height 120}} + (select-pages library-page)]) + {:align :start}))} + (ui/icon "plus" {:size 16}) + "Add pages to Library")]) diff --git a/src/main/frontend/components/page.cljs b/src/main/frontend/components/page.cljs index 0a1d471333..d78964eb73 100644 --- a/src/main/frontend/components/page.cljs +++ b/src/main/frontend/components/page.cljs @@ -8,6 +8,7 @@ [frontend.components.db-based.page :as db-page] [frontend.components.editor :as editor] [frontend.components.file-based.hierarchy :as hierarchy] + [frontend.components.library :as library] [frontend.components.objects :as objects] [frontend.components.plugins :as plugins] [frontend.components.property.config :as property-config] @@ -100,11 +101,12 @@ (declare page-cp) (rum/defc add-button - [block container-id] + [block {:keys [container-id] :as config*}] (let [*ref (rum/use-ref nil) has-children? (:block/_parent block) page? (ldb/page? block) - opacity-class (if has-children? "opacity-0" "opacity-50")] + opacity-class (if has-children? "opacity-0" "opacity-50") + config (dissoc config* :page)] (when page? [:div.ls-block.block-add-button.flex-1.flex-col.rounded-sm.cursor-text.transition-opacity.ease-in.duration-100.!py-0 {:class opacity-class @@ -113,8 +115,8 @@ :on-click (fn [e] (util/stop e) (state/set-state! :editor/container-id container-id) - (editor-handler/api-insert-new-block! "" - {:block-uuid (:block/uuid block)})) + (editor-handler/api-insert-new-block! "" (merge config + {:block-uuid (:block/uuid block)}))) :on-mouse-over (fn [] (let [ref (rum/deref *ref) prev-block (util/get-prev-block-non-collapsed (rum/deref *ref) {:up-down? true})] @@ -132,7 +134,7 @@ (util/stop e) (when (= "Enter" (util/ekey e)) (state/set-state! :editor/container-id container-id) - (editor-handler/api-insert-new-block! "" block))) + (editor-handler/api-insert-new-block! "" (merge config block)))) :tab-index 0} [:div.flex.flex-row [:div.flex.items-center {:style {:height 28 @@ -165,13 +167,14 @@ (remove (fn [b] (some? (get b (:db/ident block)))) children) :else - children)] + children) + config (assoc config :library? (ldb/library? block))] (cond (and (not block?) (not config/publishing?) (empty? children) block) - (add-button block (:container-id config)) + (add-button block config) :else (let [document-mode? (state/sub :document/mode?) @@ -186,7 +189,7 @@ blocks (if block? [block] (db/sort-by-order children block))] [:div.relative (page-blocks-inner block blocks config sidebar? whiteboard? block-id) - (add-button block (:container-id config))]))))) + (add-button block config)]))))) (rum/defc today-queries < rum/reactive [repo today? sidebar?] @@ -407,7 +410,7 @@ (let [with-actions? (not config/publishing?)] [:div.ls-page-title.flex.flex-1.w-full.content.items-start.title {:class (when-not whiteboard-page? "title") - :data-testid "page title" + "data-testid" "page title" :on-pointer-down (fn [e] (when (util/right-click? e) (state/set-state! :page-title/context {:page (:block/title page) @@ -572,7 +575,6 @@ (let [current-repo (state/sub :git/current-repo) *tabs-rendered? (::tabs-rendered? state) repo (or repo current-repo) - block-id (:block/uuid page) block? (some? (:block/page page)) class-page? (ldb/class? page) property-page? (ldb/property? page) @@ -629,22 +631,21 @@ :preview? preview?}))) (lsp-pagebar-slot)]) + (when (and db-based? (ldb/library? page)) + (library/add-pages page)) + (when (and db-based? sidebar? (ldb/page? page)) [:div.-mb-8 (sidebar-page-properties config page)]) - (when (and block? (not sidebar?) (not whiteboard?)) - (let [config (merge config {:id "block-parent" - :block? true})] - [:div.mb-4 - (component-block/breadcrumb config repo block-id {:level-limit 3})])) - (when show-tabs? (tabs page {:current-page? option :sidebar? sidebar? :*tabs-rendered? *tabs-rendered?})) (when (and (or (not show-tabs?) tabs-rendered?) (not tag-dialog?)) [:div.ls-page-blocks - {:style {:margin-left (if whiteboard? 0 -20)}} + {:style {:margin-left (if whiteboard? 0 -20)} + :class (when-not sidebar? + "mt-4")} (page-blocks-cp page (merge option {:sidebar? sidebar? :container-id (:container-id state) :whiteboard? whiteboard?}))])]) @@ -660,7 +661,7 @@ (when (and (not block?) (not db-based?)) (tagged-pages repo page title)) - (when (and (ldb/page? page) (:logseq.property/_parent page)) + (when (and (ldb/page? page) (:logseq.property.class/_extends page)) (class-component/class-children page)) ;; referenced blocks diff --git a/src/main/frontend/components/page_menu.cljs b/src/main/frontend/components/page_menu.cljs index 9a8d8d371b..fcc36d54c5 100644 --- a/src/main/frontend/components/page_menu.cljs +++ b/src/main/frontend/components/page_menu.cljs @@ -151,7 +151,7 @@ (when (and db-based? (ldb/internal-page? page)) {:title (t :page/convert-to-tag) :options {:on-click (fn [] - (db-page-handler/convert-to-tag! page))}}) + (db-page-handler/convert-page-to-tag! page))}}) (when (and db-based? (ldb/class? page) (not (:logseq.property/built-in? page))) {:title (t :page/convert-tag-to-page) diff --git a/src/main/frontend/components/property.cljs b/src/main/frontend/components/property.cljs index 9a3d92904f..d18b9df3ab 100644 --- a/src/main/frontend/components/property.cljs +++ b/src/main/frontend/components/property.cljs @@ -418,6 +418,7 @@ (shui/popup-hide!)))}] (property-select (merge (:select-opts opts) {:on-chosen on-chosen :input-opts input-opts + :block block :class-schema? class-schema?}))))])) (rum/defcs new-property < rum/reactive diff --git a/src/main/frontend/components/property/config.cljs b/src/main/frontend/components/property/config.cljs index 0480c43ef1..5365962c68 100644 --- a/src/main/frontend/components/property/config.cljs +++ b/src/main/frontend/components/property/config.cljs @@ -615,7 +615,7 @@ (property-type-sub-pane property ops))})) (when (and (= property-type :node) - (not (contains? #{:logseq.property/parent} (:db/ident property)))) + (not (contains? #{:logseq.property.class/extends} (:db/ident property)))) (dropdown-editor-menuitem {:icon :hash :disabled? disabled? :title "Specify node tags" @@ -666,7 +666,7 @@ (when (and (not= :logseq.property/enable-history? (:db/ident property)) (not special-built-in-prop?)) (let [property-type (:logseq.property/type property) - group' (->> [(when (and (not (contains? #{:logseq.property/parent :logseq.property.class/properties} (:db/ident property))) + group' (->> [(when (and (not (contains? #{:logseq.property.class/extends :logseq.property.class/properties} (:db/ident property))) (contains? #{:default :number :date :checkbox :node} property-type) (not (and (= :default property-type) @@ -678,13 +678,13 @@ :disabled? config/publishing? :submenu-content (fn [ops] (ui-position-sub-pane property (assoc ops :ui-position position)))}))) - (when (not (contains? #{:logseq.property/parent :logseq.property.class/properties} (:db/ident property))) + (when (not (contains? #{:logseq.property.class/extends :logseq.property.class/properties} (:db/ident property))) (dropdown-editor-menuitem {:icon :eye-off :title "Hide by default" :toggle-checked? (boolean (:logseq.property/hide? property)) :disabled? config/publishing? :on-toggle-checked-change #(db-property-handler/set-block-property! (:db/id property) :logseq.property/hide? %)})) - (when (not (contains? #{:logseq.property/parent :logseq.property.class/properties} (:db/ident property))) + (when (not (contains? #{:logseq.property.class/extends :logseq.property.class/properties} (:db/ident property))) (dropdown-editor-menuitem {:icon :eye-off :title "Hide empty value" :toggle-checked? (boolean (:logseq.property/hide-empty-value property)) @@ -731,7 +731,7 @@ ;; Any property should be removable from Tag Properties (if class-schema? (contains? (set (map :db/id (:logseq.property.class/properties owner-block))) (:db/id property)) - (not (contains? #{:logseq.property/parent} (:db/ident property))))) + (not (contains? #{:logseq.property.class/extends} (:db/ident property))))) (dropdown-editor-menuitem {:id :delete-property :icon :x diff --git a/src/main/frontend/components/property/value.cljs b/src/main/frontend/components/property/value.cljs index 789241ddff..1dd32c22d8 100644 --- a/src/main/frontend/components/property/value.cljs +++ b/src/main/frontend/components/property/value.cljs @@ -561,7 +561,7 @@ page-entity (ldb/get-case-page (db/get-db) page) id (:db/id page-entity) class? (or (= :block/tags (:db/ident property)) - (and (= :logseq.property/parent (:db/ident property)) + (and (= :logseq.property.class/extends (:db/ident property)) (ldb/class? block))) ;; Note: property and other types shouldn't be converted to class page? (ldb/internal-page? page-entity)] @@ -585,7 +585,7 @@ (:db/id page))) (and class? page? id) - (p/let [_ (db-page-handler/convert-to-tag! page-entity)] + (p/let [_ (db-page-handler/convert-page-to-tag! page-entity)] id) :else @@ -614,7 +614,7 @@ items' (->> (if (and (seq selected-choices) (not multiple-choices?) - (not (and (ldb/class? block) (= (:db/ident property) :logseq.property/parent))) + (not (and (ldb/class? block) (= (:db/ident property) :logseq.property.class/extends))) (not= (:db/ident property) :logseq.property.view/type)) (concat sorted-items [{:value clear-value @@ -674,11 +674,11 @@ (if (every? entity-map? v) (map :db/id v) [(:db/id v)]))) - parent-property? (= (:db/ident property) :logseq.property/parent) - children-pages (when parent-property? (model/get-structured-children repo (:db/id block))) + extends-property? (= (:db/ident property) :logseq.property.class/extends) + children-pages (when extends-property? (model/get-structured-children repo (:db/id block))) property-type (:logseq.property/type property) nodes (cond - parent-property? + extends-property? (let [;; Disallows cyclic hierarchies exclude-ids (-> (set (map (fn [id] (:block/uuid (db/entity id))) children-pages)) (conj (:block/uuid block))) ; break cycle @@ -779,7 +779,7 @@ "Set alias" :else (str "Set " (:block/title property))) - :show-new-when-not-exact-match? (if (or (and parent-property? (contains? (set children-pages) (:db/id block))) + :show-new-when-not-exact-match? (if (or (and extends-property? (contains? (set children-pages) (:db/id block))) ;; Don't allow creating private tags (and (= :block/tags (:db/ident property)) (seq (set/intersection (set (map :db/ident classes')) @@ -869,20 +869,20 @@ non-root-classes (cond-> (remove (fn [c] (= (:db/ident c) :logseq.class/Root)) classes) class? (conj (frontend.db/entity :logseq.class/Tag))) - parent-property? (= (:db/ident property) :logseq.property/parent)] + extends-property? (= (:db/ident property) :logseq.property.class/extends)] ;; effect runs once (hooks/use-effect! (fn [] (cond - (and parent-property? (not (ldb/class? block)) + (and extends-property? (not (ldb/class? block)) (ldb/internal-page? block)) (p/let [result (db-async/> result (remove ldb/built-in?))] (set-result-and-initial-choices! result')) - parent-property? + extends-property? nil (seq non-root-classes) @@ -1499,15 +1499,15 @@ (multiple-values block property opts) :else - (let [parent? (= property-ident :logseq.property/parent) + (let [extends? (= property-ident :logseq.property.class/extends) value-cp (property-scalar-value block property v (merge opts {:editor-id editor-id :dom-id dom-id})) - page-ancestors (when parent? + page-ancestors (when extends? (let [ancestor-pages (loop [parents [block]] - (if-let [parent (:logseq.property/parent (last parents))] + (if-let [parent (:logseq.property.class/extends (last parents))] (when-not (contains? (set parents) parent) (recur (conj parents parent))) parents))] diff --git a/src/main/frontend/components/repo.cljs b/src/main/frontend/components/repo.cljs index 695649354b..cf65bcf26f 100644 --- a/src/main/frontend/components/repo.cljs +++ b/src/main/frontend/components/repo.cljs @@ -69,7 +69,7 @@ :let [only-cloud? (and remote? (nil? root)) db-based? (config/db-based-graph? url)]] [:div.flex.justify-between.mb-4.items-center.group {:key (or url GraphUUID) - :data-testid url} + "data-testid" url} [:div [:span.flex.items-center.gap-1 (normalized-graph-label repo diff --git a/src/main/frontend/components/right_sidebar.css b/src/main/frontend/components/right_sidebar.css index 9bba96495a..5f154c138f 100644 --- a/src/main/frontend/components/right_sidebar.css +++ b/src/main/frontend/components/right_sidebar.css @@ -21,16 +21,6 @@ html[data-theme=light] { height: calc(100vh - 48px); } -.cp__header { - > .r > div:not(.ui__dropdown-trigger) a, button { - @apply opacity-70 text-[inherit]; - - &:hover { - @apply opacity-100; - } - } -} - .cp__right-sidebar-topbar { @apply px-1 h-12; diff --git a/src/main/frontend/components/rtc/indicator.cljs b/src/main/frontend/components/rtc/indicator.cljs index ae834801d2..99868bae19 100644 --- a/src/main/frontend/components/rtc/indicator.cljs +++ b/src/main/frontend/components/rtc/indicator.cljs @@ -2,6 +2,7 @@ "RTC state indicator" (:require [clojure.pprint :as pprint] [frontend.common.missionary :as c.m] + [frontend.config :as config] [frontend.db :as db] [frontend.flows :as flows] [frontend.handler.db-based.rtc-flows :as rtc-flows] @@ -11,8 +12,7 @@ [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [missionary.core :as m] - [rum.core :as rum] - [frontend.config :as config])) + [rum.core :as rum])) (comment (def rtc-state-schema @@ -147,7 +147,7 @@ unpushed-block-update-count (:pending-local-ops detail-info) {:keys [local-tx remote-tx]} detail-info] [:div.cp__rtc-sync - [:div.hidden {:data-testid "rtc-tx"} (pr-str {:local-tx local-tx :remote-tx remote-tx})] + [:div.hidden {"data-testid" "rtc-tx"} (pr-str {:local-tx local-tx :remote-tx remote-tx})] [:div.cp__rtc-sync-indicator.flex.flex-row.items-center.gap-1 (shui/button-ghost-icon :cloud {:on-click #(shui/popup-show! (.-target %) diff --git a/src/main/frontend/db/model.cljs b/src/main/frontend/db/model.cljs index 167b85f87d..4bdf32b6b8 100644 --- a/src/main/frontend/db/model.cljs +++ b/src/main/frontend/db/model.cljs @@ -529,10 +529,10 @@ independent of format as format specific heading characters are stripped" view-context (get m :logseq.property/view-context :all)] (or (contains? #{:logseq.property/query} (:db/ident m)) (and (not block-page?) (contains? #{:block/alias} (:db/ident m))) - ;; Filters out properties from being in wrong :view-context and :never view-contexts + ;; Filters out properties from being in wrong :view-context and :never view-contexts (and (not= view-context :all) (not (contains? block-types view-context))) - (and (ldb/built-in? block) (contains? #{:logseq.property/parent} (:db/ident m))) - ;; Filters out adding buggy class properties e.g. Alias and Parent + (and (ldb/built-in? block) (contains? #{:logseq.property.class/extends} (:db/ident m))) + ;; Filters out adding buggy class properties e.g. Alias and Parent (and class-schema? (ldb/public-built-in-property? m) (:logseq.property/view-context m)))))) (defn get-all-properties @@ -577,7 +577,7 @@ independent of format as format specific heading characters are stripped" [repo class-id] (when-let [class (db-utils/entity repo class-id)] (->> - (if (first (:logseq.property/_parent class)) ; has children classes + (if (first (:logseq.property.class/_extends class)) ; has children classes (let [all-classes (conj (->> (get-structured-children repo class-id) (map #(db-utils/entity repo %))) class)] diff --git a/src/main/frontend/extensions/pdf/core.cljs b/src/main/frontend/extensions/pdf/core.cljs index 68b268c7f3..7f638d0cbe 100644 --- a/src/main/frontend/extensions/pdf/core.cljs +++ b/src/main/frontend/extensions/pdf/core.cljs @@ -176,8 +176,8 @@ (if-not id ;; add highlight (let [highlight (merge highlight - {:id (pdf-utils/gen-uuid) - :properties properties})] + {:id (pdf-utils/gen-uuid) + :properties properties})] (p/let [highlight' (add-hl! highlight)] (pdf-utils/clear-all-selection owner-win) (pdf-assets/copy-hl-ref! highlight' viewer))) @@ -569,15 +569,15 @@ (set-highlights! highlights') (if-let [vw-pos (and (pdf-assets/area-highlight? hl) - (pdf-utils/scaled-to-vw-pos viewer (:position hl)))] + (pdf-utils/scaled-to-vw-pos viewer (:position hl)))] (-> (p/let [result (pdf-assets/persist-hl-area-image$ viewer (:pdf/current @state/state) - hl nil (:bounding vw-pos))] + hl nil (:bounding vw-pos))] (if (de/entity? result) (let [hl' (assoc-in hl [:content :image] (:db/id result))] (set-highlights! (map (fn [hl] (if (= (:id hl) (:id hl')) hl' hl)) highlights')) hl') hl)) - (p/catch (fn [e] (js/console.error e)))) + (p/catch (fn [e] (js/console.error e)))) hl)))) upd-hl! (fn [hl] (let [highlights (pdf-utils/fix-nested-js highlights)] diff --git a/src/main/frontend/extensions/tldraw.cljs b/src/main/frontend/extensions/tldraw.cljs index 4a49de8e34..fdb600f360 100644 --- a/src/main/frontend/extensions/tldraw.cljs +++ b/src/main/frontend/extensions/tldraw.cljs @@ -53,8 +53,7 @@ (block/breadcrumb {:preview? true} (state/get-current-repo) (uuid (gobj/get props "blockId")) - {:end-separator? (gobj/get props "endSeparator") - :level-limit (gobj/get props "levelLimit" 3)})) + {:end-separator? (gobj/get props "endSeparator")})) - (rum/defc tweet [props] diff --git a/src/main/frontend/handler/assets.cljs b/src/main/frontend/handler/assets.cljs index 0468c444d1..c73511de03 100644 --- a/src/main/frontend/handler/assets.cljs +++ b/src/main/frontend/handler/assets.cljs @@ -11,10 +11,10 @@ [logseq.common.config :as common-config] [logseq.common.path :as path] [logseq.common.util :as common-util] + [logseq.db.frontend.asset :as db-asset] [medley.core :as medley] [missionary.core :as m] - [promesa.core :as p] - [logseq.db.frontend.asset :as db-asset]) + [promesa.core :as p]) (:import [missionary Cancelled])) (defn alias-enabled? @@ -50,15 +50,6 @@ (medley/find-first #(= name (:name (second %1))) (medley/indexed alias-dirs)))) -(defn- convert-platform-protocol - [full-path] - - (cond-> full-path - (and (string? full-path) - (mobile-util/native-platform?)) - (string/replace-first - #"^(file://|assets://)" common-config/capacitor-protocol-with-prefix))) - (defn resolve-asset-real-path-url [repo rpath] (when-let [rpath (and (string? rpath) @@ -87,7 +78,7 @@ (if has-schema? (path/path-join graph-root rpath) (path/prepend-protocol "file:" (path/path-join graph-root rpath)))))] - (convert-platform-protocol ret))))) + ret)))) (defn normalize-asset-resource-url "try to convert resource file to url asset link" diff --git a/src/main/frontend/handler/block.cljs b/src/main/frontend/handler/block.cljs index bf578be509..d09270082a 100644 --- a/src/main/frontend/handler/block.cljs +++ b/src/main/frontend/handler/block.cljs @@ -77,14 +77,13 @@ (= type order-list-type))) prev-block-fn #(some-> (db/entity (:db/id %)) ldb/get-left-sibling) prev-block (prev-block-fn block)] - (letfn [(page-fn? [b] (some-> b :block/name some?)) - (order-sibling-list [b] + (letfn [(order-sibling-list [b] (lazy-seq - (when (and (not (page-fn? b)) (order-block-fn? b)) + (when (order-block-fn? b) (cons b (order-sibling-list (prev-block-fn b)))))) (order-parent-list [b] (lazy-seq - (when (and (not (page-fn? b)) (order-block-fn? b)) + (when (order-block-fn? b) (cons b (order-parent-list (db-model/get-block-parent (:block/uuid b)))))))] (let [idx (if prev-block (count (order-sibling-list block)) 1) diff --git a/src/main/frontend/handler/common/config_edn.cljs b/src/main/frontend/handler/common/config_edn.cljs index 8f932ace09..1cd70c66b5 100644 --- a/src/main/frontend/handler/common/config_edn.cljs +++ b/src/main/frontend/handler/common/config_edn.cljs @@ -1,14 +1,14 @@ (ns frontend.handler.common.config-edn "Common fns related to config.edn - global and repo" - (:require [malli.error :as me] - [malli.core :as m] + (:require [clojure.edn :as edn] [clojure.string :as string] - [clojure.edn :as edn] - [lambdaisland.glogi :as log] [frontend.handler.notification :as notification] [goog.string :as gstring] - [reitit.frontend.easy :as rfe] - [logseq.common.config :as common-config])) + [lambdaisland.glogi :as log] + [logseq.common.config :as common-config] + [malli.core :as m] + [malli.error :as me] + [reitit.frontend.easy :as rfe])) (defn- humanize-more "Make error maps from me/humanize more readable for users. Doesn't try to handle @@ -77,7 +77,7 @@ nested keys or positional errors e.g. tuples" (do (config-notification-show! [:<> "Failed to read file " (file-link path)] "Make sure your config is wrapped in {}. Also make sure that the characters '( { [' have their corresponding closing character ') } ]'.") - false) + false) ;; Custom error message is better than malli's "invalid type" error (not (map? parsed-body)) (do @@ -91,7 +91,7 @@ nested keys or positional errors e.g. tuples" "Detects config keys that will or have been deprecated" [path content {:keys [db-graph?]}] (let [body (try (edn/read-string content) - (catch :default _ ::failed-to-detect)) + (catch :default _ ::failed-to-detect)) warnings (cond-> {:editor/command-trigger "is no longer supported. Please use '/' and report bugs on it." diff --git a/src/main/frontend/handler/db_based/page.cljs b/src/main/frontend/handler/db_based/page.cljs index 137d537f6f..507e4acf06 100644 --- a/src/main/frontend/handler/db_based/page.cljs +++ b/src/main/frontend/handler/db_based/page.cljs @@ -42,43 +42,50 @@ (when (valid-tag? repo (db/entity repo [:block/uuid block-id]) tag-entity) (db-property-handler/set-block-property! block-id :block/tags (:db/id tag-entity))))) -(defn convert-to-tag! +(defn convert-page-to-tag! "Converts a Page to a Tag" [page-entity] - (if (db/page-exists? (:block/title page-entity) #{:logseq.class/Tag}) - (notification/show! (str "A tag with the name \"" (:block/title page-entity) "\" already exists.") :warning false) - (let [txs [(db-class/build-new-class (db/get-db) - {:db/id (:db/id page-entity) - :block/title (:block/title page-entity) - :block/created-at (:block/created-at page-entity)}) - [:db/retract (:db/id page-entity) :block/tags :logseq.class/Page]]] + (cond (db/page-exists? (:block/title page-entity) #{:logseq.class/Tag}) + (notification/show! (str "A tag with the name \"" (:block/title page-entity) "\" already exists.") :warning false) + (:block/parent page-entity) + (notification/show! "Namespaced pages can't be tags" :error false) + :else + (let [txs [(db-class/build-new-class (db/get-db) + {:db/id (:db/id page-entity) + :block/title (:block/title page-entity) + :block/created-at (:block/created-at page-entity)}) + [:db/retract (:db/id page-entity) :block/tags :logseq.class/Page]]] - (db/transact! (state/get-current-repo) txs {:outliner-op :save-block})))) + (db/transact! (state/get-current-repo) txs {:outliner-op :save-block})))) (defn convert-tag-to-page! - [page-entity] - (if (db/page-exists? (:block/title page-entity) #{:logseq.class/Page}) - (notification/show! (str "A page with the name \"" (:block/title page-entity) "\" already exists.") :warning false) - (when-not (:logseq.property/built-in? page-entity) - (p/let [objects (db-async/ (shui/dialog-confirm! - "Converting a tag to page also removes tags from any nodes that have that tag. Are you ok with that?" - {:id :convert-tag-to-page - :data-reminder :ok}) - (p/then convert-fn))))))) + [entity] + (if (db/page-exists? (:block/title entity) #{:logseq.class/Page}) + (notification/show! (str "A page with the name \"" (:block/title entity) "\" already exists.") :warning false) + (when-not (:logseq.property/built-in? entity) + (if (seq (:logseq.property.class/_extends entity)) + (notification/show! "This tag cannot be converted because it has tag children. All tag children must be removed or converted before converting this tag." :error false) + (p/let [objects (db-async/ (shui/dialog-confirm! + "Converting a tag to page also removes its tag properties and its tag from all nodes tagged with it. Are you ok with that?" + {:id :convert-tag-to-page + :data-reminder :ok}) + (p/then convert-fn)))))))) (defn new-block + (-> (assoc :block/tags #{:logseq.class/Page} + :block/name (util/page-name-sanity-lc (:block/title new-block))) + (dissoc :block/page))) + new-block)] (ui-outliner-tx/transact! {:outliner-op :insert-blocks} (save-current-block! {:current-block current-block}) - (outliner-op/insert-blocks! [new-block] current-block {:sibling? sibling? - :keep-uuid? keep-uuid? - :ordered-list? ordered-list? - :replace-empty-target? replace-empty-target?})))) + (outliner-op/insert-blocks! [new-block'] current-block {:sibling? sibling? + :keep-uuid? keep-uuid? + :ordered-list? ordered-list? + :replace-empty-target? replace-empty-target?})))) (defn- block-self-alone-when-insert? [config uuid] @@ -528,7 +535,8 @@ custom-uuid replace-empty-target? edit-block? ordered-list? other-attrs] :or {sibling? false before? false - edit-block? true}}] + edit-block? true} + :as config}] (when (or page block-uuid) (let [repo (state/get-current-repo) db-based? (config/db-based-graph? repo) @@ -589,10 +597,11 @@ (p/do! (ui-outliner-tx/transact! {:outliner-op :insert-blocks} - (outliner-insert-block! {} block-m new-block {:sibling? sibling? - :keep-uuid? true - :ordered-list? ordered-list? - :replace-empty-target? replace-empty-target?}) + (outliner-insert-block! config block-m new-block + {:sibling? sibling? + :keep-uuid? true + :ordered-list? ordered-list? + :replace-empty-target? replace-empty-target?}) (when (and db-based? (seq properties)) (property-handler/set-block-properties! repo (:block/uuid new-block) properties))) (when edit-block? @@ -835,6 +844,13 @@ (delete-block-aux! block) (when edit-block-f (edit-block-f)))))))))))) +(defn move-blocks! + [blocks target sibling?] + (when (seq blocks) + (ui-outliner-tx/transact! + {:outliner-op :move-blocks} + (outliner-op/move-blocks! blocks target sibling?)))) + (defn delete-block! [repo] (delete-block-inner! repo (get-state))) @@ -1048,14 +1064,24 @@ (let [repo (state/get-current-repo) block-uuids (distinct (map #(uuid (dom/attr % "blockid")) dom-blocks)) lookup-refs (map (fn [id] [:block/uuid id]) block-uuids) - blocks (->> (map db/entity lookup-refs) - (remove ldb/page?)) - top-level-blocks (when (seq blocks) (block-handler/get-top-level-blocks blocks)) - sorted-blocks (mapcat (fn [block] - (tree/get-sorted-block-and-children repo (:db/id block))) - top-level-blocks)] - (when (seq sorted-blocks) - (delete-blocks! repo (map :block/uuid sorted-blocks) sorted-blocks dom-blocks))))))) + blocks (map db/entity lookup-refs) + pages (filter ldb/page? blocks) + pages-with-parent (filter (fn [page] (and (:block/parent page) (not (string/blank? (:block/title page))))) pages)] + (ui-outliner-tx/transact! + {:outliner-op :delete-blocks} + (doseq [page pages-with-parent] + (outliner-op/remove-block-property! (:db/id page) :block/parent)) + (let [blocks' (if (seq pages-with-parent) + (let [ids (set (map :db/id pages-with-parent))] + (remove (fn [b] (ids (:db/id b))) blocks)) + blocks)] + (when (seq blocks') + (let [top-level-blocks (block-handler/get-top-level-blocks blocks') + sorted-blocks (mapcat (fn [block] + (tree/get-sorted-block-and-children repo (:db/id block))) + top-level-blocks)] + (when (seq sorted-blocks) + (delete-blocks! repo (map :block/uuid sorted-blocks) sorted-blocks dom-blocks))))))))))) (def url-regex "Didn't use link/plain-link as it is incorrectly detects words as urls." diff --git a/src/main/frontend/handler/page.cljs b/src/main/frontend/handler/page.cljs index 858f0546bb..c20a1a3b39 100644 --- a/src/main/frontend/handler/page.cljs +++ b/src/main/frontend/handler/page.cljs @@ -216,7 +216,7 @@ (p/let [_ (when (:convert-page-to-tag? chosen-result) (let [entity (db/entity (:db/id chosen-result))] (when (and (ldb/page? entity) (not (ldb/class? entity))) - (db-page-handler/convert-to-tag! entity)))) + (db-page-handler/convert-page-to-tag! entity)))) chosen-result (if (:block/uuid chosen-result) (db/entity [:block/uuid (:block/uuid chosen-result)]) chosen-result) diff --git a/src/main/frontend/handler/property.cljs b/src/main/frontend/handler/property.cljs index 4d5e6391cd..6a1e357132 100644 --- a/src/main/frontend/handler/property.cljs +++ b/src/main/frontend/handler/property.cljs @@ -73,7 +73,7 @@ :logseq.property/icon :block/alias :logseq.property/enable-history? :logseq.property/exclude-from-graph-view :logseq.property/template-applied-to :logseq.property/hide-empty-value :logseq.property.class/hide-from-node - :logseq.property/page-tags :logseq.property/parent + :logseq.property/page-tags :logseq.property.class/extends :logseq.property/publishing-public? :logseq.property.user/avatar :logseq.property.user/email :logseq.property.user/name}) diff --git a/src/main/frontend/util.cljc b/src/main/frontend/util.cljc index 0939cdf31b..56e60e42bc 100644 --- a/src/main/frontend/util.cljc +++ b/src/main/frontend/util.cljc @@ -354,6 +354,9 @@ (gobj/get range "endContainer") (gobj/get range "endOffset")) (let [contents (.cloneContents pre-caret-range) + ;; Remove all `.select-none` nodes + _ (doseq [el (.querySelectorAll contents ".select-none")] + (.remove el)) html (some-> (first (.-childNodes contents)) (gobj/get "innerHTML") str) @@ -365,7 +368,7 @@ (string/ends-with? html "
") ;; multiple lines with a new line (string/ends-with? html "
"))) - value (.toString pre-caret-range)] + value (.-textContent contents)] (if br-ended? (str value "\n") value))))) diff --git a/src/main/frontend/worker/db/migrate.cljs b/src/main/frontend/worker/db/migrate.cljs index bcf5a6cff3..9b693ee8b4 100644 --- a/src/main/frontend/worker/db/migrate.cljs +++ b/src/main/frontend/worker/db/migrate.cljs @@ -1,10 +1,14 @@ (ns frontend.worker.db.migrate "Handles SQLite and datascript migrations for DB graphs" - (:require [clojure.walk :as walk] + (:require [clojure.string :as string] + [clojure.walk :as walk] [datascript.core :as d] [datascript.impl.entity :as de] [frontend.worker.util :as worker-util] + [logseq.common.config :as common-config] + [logseq.common.util :as common-util] [logseq.db :as ldb] + [logseq.db.common.order :as db-order] [logseq.db.frontend.class :as db-class] [logseq.db.frontend.property :as db-property] [logseq.db.frontend.schema :as db-schema] @@ -15,121 +19,121 @@ ;; Frontend migrations ;; =================== -(comment - (defn- rename-properties-aux - [db props-to-rename] - (let [property-tx (map - (fn [[old new]] - (let [e-new (d/entity db new) - e-old (d/entity db old)] - (if e-new - (when e-old - [:db/retractEntity (:db/id e-old)]) - (merge {:db/id (:db/id (d/entity db old)) - :db/ident new} - (when-let [new-title (get-in db-property/built-in-properties [new :title])] - {:block/title new-title - :block/name (common-util/page-name-sanity-lc new-title)}))))) - props-to-rename) - titles-tx (->> (d/datoms db :avet :block/title) - (keep (fn [d] - (let [title (:v d)] - (if (string? title) - (when-let [props (seq (filter (fn [[old _new]] (string/includes? (:v d) (str old))) props-to-rename))] - (let [title' (reduce (fn [title [old new]] - (string/replace title (str old) (str new))) title props)] - [:db/add (:e d) :block/title title'])) - [:db/retract (:e d) :block/title]))))) - sorting-tx (->> (d/datoms db :avet :logseq.property.table/sorting) - (keep (fn [d] - (when (coll? (:v d)) - (when-let [props (seq (filter (fn [[old _new]] - (some (fn [item] (= old (:id item))) (:v d))) props-to-rename))] - (let [value (reduce - (fn [sorting [old new]] - (mapv - (fn [item] - (if (= old (:id item)) - (assoc item :id new) - item)) - sorting)) - (:v d) - props)] - [:db/add (:e d) :logseq.property.table/sorting value])))))) - sized-columns-tx (->> (d/datoms db :avet :logseq.property.table/sized-columns) +(defn- rename-properties-aux + [db props-to-rename] + (let [property-tx (map + (fn [[old new]] + (let [e-new (d/entity db new) + e-old (d/entity db old)] + (if e-new + (when e-old + [:db/retractEntity (:db/id e-old)]) + (merge {:db/id (:db/id (d/entity db old)) + :db/ident new} + (when-let [new-title (get-in db-property/built-in-properties [new :title])] + {:block/title new-title + :block/name (common-util/page-name-sanity-lc new-title)}))))) + props-to-rename) + titles-tx (->> (d/datoms db :avet :block/title) + (keep (fn [d] + (let [title (:v d)] + (if (string? title) + (when-let [props (seq (filter (fn [[old _new]] (string/includes? (:v d) (str old))) props-to-rename))] + (let [title' (reduce (fn [title [old new]] + (string/replace title (str old) (str new))) title props)] + [:db/add (:e d) :block/title title'])) + [:db/retract (:e d) :block/title]))))) + sorting-tx (->> (d/datoms db :avet :logseq.property.table/sorting) + (keep (fn [d] + (when (coll? (:v d)) + (when-let [props (seq (filter (fn [[old _new]] + (some (fn [item] (= old (:id item))) (:v d))) props-to-rename))] + (let [value (reduce + (fn [sorting [old new]] + (mapv + (fn [item] + (if (= old (:id item)) + (assoc item :id new) + item)) + sorting)) + (:v d) + props)] + [:db/add (:e d) :logseq.property.table/sorting value])))))) + sized-columns-tx (->> (d/datoms db :avet :logseq.property.table/sized-columns) + (keep (fn [d] + (when (map? (:v d)) + (when-let [props (seq (filter (fn [[old _new]] (get (:v d) old)) props-to-rename))] + (let [value (reduce + (fn [sizes [old new]] + (if-let [size (get sizes old)] + (-> sizes + (dissoc old) + (assoc new size)) + sizes)) + (:v d) + props)] + [:db/add (:e d) :logseq.property.table/sized-columns value])))))) + hidden-columns-tx (mapcat + (fn [[old new]] + (->> (d/datoms db :avet :logseq.property.table/hidden-columns old) + (mapcat (fn [d] + [[:db/retract (:e d) :logseq.property.table/hidden-columns old] + [:db/add (:e d) :logseq.property.table/hidden-columns new]])))) + props-to-rename) + ordered-columns-tx (->> (d/datoms db :avet :logseq.property.table/ordered-columns) (keep (fn [d] - (when (map? (:v d)) - (when-let [props (seq (filter (fn [[old _new]] (get (:v d) old)) props-to-rename))] + (when (coll? (:v d)) + (when-let [props (seq (filter (fn [[old _new]] ((set (:v d)) old)) props-to-rename))] (let [value (reduce - (fn [sizes [old new]] - (if-let [size (get sizes old)] - (-> sizes - (dissoc old) - (assoc new size)) - sizes)) + (fn [col [old new]] + (mapv (fn [v] (if (= old v) new v)) col)) (:v d) props)] - [:db/add (:e d) :logseq.property.table/sized-columns value])))))) - hidden-columns-tx (mapcat - (fn [[old new]] - (->> (d/datoms db :avet :logseq.property.table/hidden-columns old) - (mapcat (fn [d] - [[:db/retract (:e d) :logseq.property.table/hidden-columns old] - [:db/add (:e d) :logseq.property.table/hidden-columns new]])))) - props-to-rename) - ordered-columns-tx (->> (d/datoms db :avet :logseq.property.table/ordered-columns) - (keep (fn [d] - (when (coll? (:v d)) - (when-let [props (seq (filter (fn [[old _new]] ((set (:v d)) old)) props-to-rename))] - (let [value (reduce - (fn [col [old new]] - (mapv (fn [v] (if (= old v) new v)) col)) - (:v d) - props)] - [:db/add (:e d) :logseq.property.table/ordered-columns value])))))) - filters-tx (->> (d/datoms db :avet :logseq.property.table/filters) - (keep (fn [d] - (let [filters (:filters (:v d))] - (when (coll? filters) - (when-let [props (seq (filter (fn [[old _new]] - (some (fn [item] (and (vector? item) - (= old (first item)))) filters)) props-to-rename))] - (let [value (update (:v d) :filters - (fn [col] - (reduce - (fn [col [old new]] - (mapv (fn [item] - (if (and (vector? item) (= old (first item))) - (vec (cons new (rest item))) - item)) - col)) - col - props)))] - [:db/add (:e d) :logseq.property.table/filters value])))))))] - (concat property-tx - titles-tx - sorting-tx - sized-columns-tx - hidden-columns-tx - ordered-columns-tx - filters-tx))) + [:db/add (:e d) :logseq.property.table/ordered-columns value])))))) + filters-tx (->> (d/datoms db :avet :logseq.property.table/filters) + (keep (fn [d] + (let [filters (:filters (:v d))] + (when (coll? filters) + (when-let [props (seq (filter (fn [[old _new]] + (some (fn [item] (and (vector? item) + (= old (first item)))) filters)) props-to-rename))] + (let [value (update (:v d) :filters + (fn [col] + (reduce + (fn [col [old new]] + (mapv (fn [item] + (if (and (vector? item) (= old (first item))) + (vec (cons new (rest item))) + item)) + col)) + col + props)))] + [:db/add (:e d) :logseq.property.table/filters value])))))))] + (concat property-tx + titles-tx + sorting-tx + sized-columns-tx + hidden-columns-tx + ordered-columns-tx + filters-tx))) - (defn- rename-properties - [props-to-rename] - (fn [conn _search-db] - (when (ldb/db-based-graph? @conn) - (let [props-tx (rename-properties-aux @conn props-to-rename)] - ;; Property changes need to be in their own tx for subsequent uses of properties to take effect - (ldb/transact! conn props-tx {:db-migrate? true}) - - (mapcat (fn [[old new]] - ;; can't use datoms b/c user properties aren't indexed - (->> (d/q '[:find ?b ?prop-v :in $ ?prop :where [?b ?prop ?prop-v]] @conn old) - (mapcat (fn [[id prop-value]] - [[:db/retract id old] - [:db/add id new prop-value]])))) - props-to-rename))))) +(defn rename-properties + [props-to-rename & {:keys [replace-fn]}] + (fn [conn] + (when (ldb/db-based-graph? @conn) + (let [props-tx (rename-properties-aux @conn props-to-rename) + fix-tx (mapcat (fn [[old new]] + ;; can't use datoms b/c user properties aren't indexed + (->> (d/q '[:find ?b ?prop-v :in $ ?prop :where [?b ?prop ?prop-v]] @conn old) + (mapcat (fn [[id prop-value]] + (if (fn? replace-fn) + (replace-fn id prop-value) + [[:db/retract id old] + [:db/add id new prop-value]]))))) + props-to-rename)] + (concat props-tx fix-tx))))) +(comment (defn- rename-classes [classes-to-rename] (fn [conn _search-db] @@ -142,6 +146,53 @@ :block/name (common-util/page-name-sanity-lc new-title)}))) classes-to-rename))))) +(defn fix-rename-parent-to-extends + [conn _search-db] + (let [db @conn + parent-entity (d/entity db :logseq.property/parent)] + (when parent-entity + (let [old-p :logseq.property/parent + new-p :logseq.property.class/extends + f (rename-properties + {old-p new-p} + {:replace-fn (fn [id prop-value] + (let [page (d/entity db id) + new-p' (if (ldb/class? page) new-p :block/parent)] + [[:db/retract id old-p] + [:db/add id new-p' prop-value]]))}) + rename-property-tx (f conn) + library-page (if-let [page (ldb/get-built-in-page db common-config/library-page-name)] + page + (-> (sqlite-util/build-new-page common-config/library-page-name) + sqlite-create-graph/mark-block-as-built-in)) + library-id (:block/uuid library-page) + library-page-tx (when-not (de/entity? library-page) + [library-page]) + pages-with-parent (->> (d/datoms db :avet :logseq.property/parent) + (keep (fn [d] + (let [e (d/entity db (:e d))] + (when-not (ldb/class? e) + e))))) + parents (->> pages-with-parent + (map :logseq.property/parent) + (common-util/distinct-by :db/id)) + top-parents (remove :logseq.property/parent parents) + top-parent-ids (set (map :db/id top-parents)) + move-top-parents-to-library (map (fn [parent] + {:db/id (:db/id parent) + :block/parent [:block/uuid library-id] + :block/order (db-order/gen-key)}) top-parents) + update-children-parent-and-order (->> pages-with-parent + (remove (fn [page] (top-parent-ids (:db/id page)))) + (map (fn [page] + {:db/id (:db/id page) + :block/order (db-order/gen-key)})))] + (concat + rename-property-tx + library-page-tx + move-top-parents-to-library + update-children-parent-and-order))))) + (defn separate-classes-and-properties [conn _sqlite-db] ;; find all properties that're classes, create new properties to separate them @@ -198,7 +249,8 @@ "A vec of tuples defining datascript migrations. Each tuple consists of the schema version integer and a migration map. A migration map can have keys of :properties, :classes and :fix." - [["65.0" {:fix separate-classes-and-properties}]]) + [["65.0" {:fix separate-classes-and-properties}] + ["65.1" {:fix fix-rename-parent-to-extends}]]) (let [[major minor] (last (sort (map (comp (juxt :major :minor) db-schema/parse-schema-version first) schema-version->updates)))] @@ -302,7 +354,6 @@ "Migrate 'frontend' datascript schema and data. To add a new migration, add an entry to schema-version->updates and bump db-schema/version" [conn search-db] - (prn :debug :migrate) (when (ldb/db-based-graph? @conn) (let [db @conn version-in-db (db-schema/parse-schema-version (or (:kv/value (d/entity db :logseq.kv/schema-version)) 0)) diff --git a/src/main/frontend/worker/handler/page.cljs b/src/main/frontend/worker/handler/page.cljs index e3c269afbf..d50054c290 100644 --- a/src/main/frontend/worker/handler/page.cljs +++ b/src/main/frontend/worker/handler/page.cljs @@ -94,10 +94,10 @@ delete-property-tx [[:db.fn/retractEntity (:db/id page)]]) restore-class-parent-tx (when db-based? - (->> (filter (fn [p] (ldb/class? p)) (:logseq.property/_parent page)) + (->> (filter ldb/class? (:logseq.property.class/_extends page)) (map (fn [p] {:db/id (:db/id p) - :logseq.property/parent :logseq.class/Root})))) + :logseq.property.class/extends :logseq.class/Root})))) tx-data (concat truncate-blocks-tx-data restore-class-parent-tx delete-page-tx diff --git a/src/main/frontend/worker/handler/page/db_based/page.cljs b/src/main/frontend/worker/handler/page/db_based/page.cljs index 92a0702c54..e574340d37 100644 --- a/src/main/frontend/worker/handler/page/db_based/page.cljs +++ b/src/main/frontend/worker/handler/page/db_based/page.cljs @@ -3,10 +3,12 @@ (:require [clojure.string :as string] [datascript.core :as d] [datascript.impl.entity :as de] + [logseq.common.config :as common-config] [logseq.common.util :as common-util] [logseq.common.util.namespace :as ns-util] [logseq.db :as ldb] [logseq.db.common.entity-plus :as entity-plus] + [logseq.db.common.order :as db-order] [logseq.db.frontend.class :as db-class] [logseq.db.frontend.entity-util :as entity-util] [logseq.db.frontend.malli-schema :as db-malli-schema] @@ -74,23 +76,34 @@ title)) (defn- get-page-by-parent-name - [db parent-title child-title] + [db parent-title child-title class?] (some->> (d/q '[:find [?b ...] - :in $ ?parent-name ?child-name + :in $ ?attribute ?parent-name ?child-name :where - [?b :logseq.property/parent ?p] + [?b ?attribute ?p] [?b :block/name ?child-name] [?p :block/name ?parent-name]] db + (if class? :logseq.property.class/extends :block/parent) (common-util/page-name-sanity-lc parent-title) (common-util/page-name-sanity-lc child-title)) first (d/entity db))) +(defn- page-with-parent-and-order + "Apply to namespace pages" + [db page & {:keys [parent]}] + (let [library (ldb/get-built-in-page db common-config/library-page-name)] + (when (nil? library) + (throw (ex-info "Library page doesn't exist" {}))) + (assoc page + :block/parent (or parent (:db/id library)) + :block/order (db-order/gen-key)))) + (defn- split-namespace-pages - [db page date-formatter] + [db page date-formatter create-class?] (let [{:block/keys [title] block-uuid :block/uuid} page] (->> (if (and (or (entity-util/class? page) @@ -100,20 +113,19 @@ parts (->> (string/split title ns-util/parent-re) (map string/trim) (remove string/blank?)) - pages (doall - (map-indexed - (fn [idx part] - (let [last-part? (= idx (dec (count parts))) - page (if (zero? idx) - (ldb/get-page db part) - (get-page-by-parent-name db (nth parts (dec idx)) part)) - result (or page - (gp-block/page-name->map part db true date-formatter - {:page-uuid (when last-part? block-uuid) - :skip-existing-page-check? true - :class? class?}))] - result)) - parts))] + pages (map-indexed + (fn [idx part] + (let [last-part? (= idx (dec (count parts))) + page (if (zero? idx) + (ldb/get-page db part) + (get-page-by-parent-name db (nth parts (dec idx)) part create-class?)) + result (or page + (gp-block/page-name->map part db true date-formatter + {:page-uuid (when last-part? block-uuid) + :skip-existing-page-check? true + :class? class?}))] + result)) + parts)] (cond (and (not class?) (not (every? ldb/internal-page? pages))) (throw (ex-info "Cannot create this page unless all parents are pages" @@ -136,7 +148,7 @@ (if class? (cond (and (de/entity? page) (ldb/class? page)) - (assoc page :logseq.property/parent parent-eid) + (assoc page :logseq.property.class/extends parent-eid) (de/entity? page) ; page exists but not a class, avoid converting here because this could be troublesome. nil @@ -145,10 +157,10 @@ (db-class/build-new-class db page) :else - (db-class/build-new-class db (assoc page :logseq.property/parent parent-eid))) - (if (or (de/entity? page) (zero? idx)) + (db-class/build-new-class db (assoc page :logseq.property.class/extends parent-eid))) + (if (de/entity? page) page - (assoc page :logseq.property/parent parent-eid))))) + (page-with-parent-and-order db page {:parent parent-eid}))))) pages))) [page]) (remove nil?)))) @@ -188,12 +200,12 @@ [:db/retract [:block/uuid (:block/uuid existing-page)] :block/tags :logseq.class/Page]]] {:tx-meta tx-meta :tx-data tx-data}))) - (let [page (gp-block/page-name->map title db true date-formatter - {:class? class? - :page-uuid (when (uuid? uuid) uuid) - :skip-existing-page-check? true}) + (let [page (gp-block/page-name->map title db true date-formatter + {:class? class? + :page-uuid (when (uuid? uuid) uuid) + :skip-existing-page-check? true}) [page parents] (if (and (text/namespace-page? title) split-namespace?) - (let [pages (split-namespace-pages db page date-formatter)] + (let [pages (split-namespace-pages db page date-formatter class?)] [(last pages) (butlast pages)]) [page nil])] (when (and page (or (nil? (:db/ident page)) diff --git a/src/main/frontend/worker/pipeline.cljs b/src/main/frontend/worker/pipeline.cljs index f3d5c836fb..63ebc55a83 100644 --- a/src/main/frontend/worker/pipeline.cljs +++ b/src/main/frontend/worker/pipeline.cljs @@ -66,7 +66,7 @@ (let [object (d/entity db e) template-blocks (->> (mapcat (fn [id] (let [tag (d/entity db id) - parents (ldb/get-page-parents tag {:node-class? true}) + parents (ldb/get-class-extends tag) templates (mapcat :logseq.property/_template-applied-to (conj parents tag))] (cond->> templates journal-page diff --git a/src/main/frontend/worker/search.cljs b/src/main/frontend/worker/search.cljs index 98d11c527e..48f83d989b 100644 --- a/src/main/frontend/worker/search.cljs +++ b/src/main/frontend/worker/search.cljs @@ -273,7 +273,7 @@ DROP TRIGGER IF EXISTS blocks_au; * :limit - Number of result to limit search results. Defaults to 100 * :dev? - Allow all nodes to be seen for development. Defaults to false * :built-in? - Whether to return public built-in nodes for db graphs. Defaults to false" - [repo conn search-db q {:keys [limit page enable-snippet? built-in? dev? page-only?] + [repo conn search-db q {:keys [limit page enable-snippet? built-in? dev? page-only? library-page-search?] :as option :or {enable-snippet? true}}] (when-not (string/blank? q) @@ -308,26 +308,29 @@ DROP TRIGGER IF EXISTS blocks_au; (let [{:keys [id page title snippet]} result block-id (uuid id)] (when-let [block (d/entity @conn [:block/uuid block-id])] - (when (if dev? - true - (if built-in? - (or (not (ldb/built-in? block)) - (not (ldb/private-built-in-page? block)) - (ldb/class? block)) - (or (not (ldb/built-in? block)) - (ldb/class? block)))) - {:db/id (:db/id block) - :block/uuid block-id - :block/title (if (ldb/page? block) - (ldb/get-title-with-parents block) - (or snippet title)) - :block/page (if (common-util/uuid-string? page) - (uuid page) - nil) - :block/tags (seq (map :db/id (:block/tags block))) - :page? (ldb/page? block) - :alias (some-> (first (:block/_alias block)) - (select-keys [:block/uuid :block/title]))})))))) + (when-not (and library-page-search? + (or (:block/parent block) + (not (ldb/internal-page? block)))) ; remove pages that already have parents + (when (if dev? + true + (if built-in? + (or (not (ldb/built-in? block)) + (not (ldb/private-built-in-page? block)) + (ldb/class? block)) + (or (not (ldb/built-in? block)) + (ldb/class? block)))) + {:db/id (:db/id block) + :block/uuid block-id + :block/title (if (ldb/page? block) + (ldb/get-title-with-parents block) + (or snippet title)) + :block/page (if (common-util/uuid-string? page) + (uuid page) + nil) + :block/tags (seq (map :db/id (:block/tags block))) + :page? (ldb/page? block) + :alias (some-> (first (:block/_alias block)) + (select-keys [:block/uuid :block/title]))}))))))) page-or-object-result (filter (fn [b] (or (:page? b) (:block/tags result))) result)] (->> (concat page-or-object-result diff --git a/src/resources/dicts/af.edn b/src/resources/dicts/af.edn index cfce4a512c..265b5c6d00 100644 --- a/src/resources/dicts/af.edn +++ b/src/resources/dicts/af.edn @@ -22,7 +22,6 @@ :right-side-bar/switch-theme "Skakel oor na die {1} tema" :right-side-bar/contents "Inhoud" :right-side-bar/block-ref "Blok verwysing" - :page/delete-confirmation "Is jy seker jy wil die bladsy uitvee?" :file/name "Lêer naam" :file/last-modified-at "Laas verander op" :file/no-data "Geen data" diff --git a/src/resources/dicts/ca.edn b/src/resources/dicts/ca.edn index a4d466bbb1..8ec410dbe2 100644 --- a/src/resources/dicts/ca.edn +++ b/src/resources/dicts/ca.edn @@ -419,7 +419,6 @@ :page/copy-page-url "Copiar URL de la pàgina" :page/created-at "Creada el" :page/delete "Eliminar pàgina" - :page/delete-confirmation "Està segur que desitja eliminar aquesta pàgina i el seu arxiu?" :page/illegal-page-name "¡Nom de pàgina no permès!" :page/logseq-is-having-a-problem "Logseq està tenint un problema. Per intentar tornar a un estat de treball, intenti el següent procediment en ordre:" :page/make-private "Fer privada" diff --git a/src/resources/dicts/cs.edn b/src/resources/dicts/cs.edn index 76e4d42576..ab455c1d08 100644 --- a/src/resources/dicts/cs.edn +++ b/src/resources/dicts/cs.edn @@ -130,7 +130,6 @@ :page/logseq-is-having-a-problem "Logseq má problém. Chcete-li se pokusit uvést jej zpět do funkčního stavu, vyzkoušejte prosím následující bezpečné kroky v uvedeném pořadí:" :page/step "Krok {1}" :page/try "Zkusit" - :page/delete-confirmation "Jste si jisti, že chcete tuto stránku a její soubor odstranit?" :page/open-in-finder "Otevřít v adresáři" :page/open-with-default-app "Otevřít pomocí výchozí aplikace" :page/make-public "Označit stránku jjako veřejnou" diff --git a/src/resources/dicts/de.edn b/src/resources/dicts/de.edn index 59eb32f800..3884467738 100644 --- a/src/resources/dicts/de.edn +++ b/src/resources/dicts/de.edn @@ -235,7 +235,6 @@ :page/copy-page-url "Seiten-URL kopieren" :page/created-at "Erstellt am" :page/delete "Seite löschen" - :page/delete-confirmation "Diese Seite und die zugehörige Datei löschen?" :page/illegal-page-name "Seitenname nicht zulässig!" :page/logseq-is-having-a-problem "Logseq hat ein Problem festgestellt. Versuche zurückzukehren ..." :page/make-private "Privat machen" diff --git a/src/resources/dicts/en.edn b/src/resources/dicts/en.edn index 8ea69345cf..2452d33d39 100644 --- a/src/resources/dicts/en.edn +++ b/src/resources/dicts/en.edn @@ -137,7 +137,7 @@ :page/logseq-is-having-a-problem "Logseq is having a problem. To try to get it back to a working state, please try the following safe steps in order:" :page/step "Step {1}" :page/try "Try" - :page/delete-confirmation "Are you sure you want to delete this page and its file?" + :page/delete-confirmation "Are you sure you want to delete this page?" :page/db-delete-confirmation "Are you sure you want to delete this page?" :page/open-in-finder "Open in directory" :page/open-with-default-app "Open with default app" diff --git a/src/resources/dicts/es.edn b/src/resources/dicts/es.edn index 863bff4ab7..745912a905 100644 --- a/src/resources/dicts/es.edn +++ b/src/resources/dicts/es.edn @@ -418,7 +418,6 @@ :page/copy-page-url "Copiar URL de la página" :page/created-at "Creada el" :page/delete "Eliminar página" - :page/delete-confirmation "¿Está seguro que desea eliminar esta página y su archivo?" :page/illegal-page-name "¡Nombre de página ilegal!" :page/logseq-is-having-a-problem "Logseq está teniendo un problema. Para intentar volver a un estado de trabajo, intenta los siguientes pasos seguros en orden:" :page/make-private "Hacer privada" diff --git a/src/resources/dicts/fa.edn b/src/resources/dicts/fa.edn index daba90fdf8..61ad555165 100644 --- a/src/resources/dicts/fa.edn +++ b/src/resources/dicts/fa.edn @@ -106,7 +106,6 @@ :page/logseq-is-having-a-problem "لاگ‌سیک دچار مشکلی شده است. برای بازگرداندن آن به حالت قابل استفاده لطفا گام‌های زیر را به ترتیب انجام دهید:" :page/step "گام {1}" :page/try "امتحان کنید" - :page/delete-confirmation "مطمئنید که می‌خواید این برگه به همراه پرونده‌اش را پاک کنید؟" :page/open-in-finder "باز کردن در پوشه" :page/open-with-default-app "باز کردن با برنامه پیش‌فرض" :page/make-public "عمومی ساختن برای انتشار" diff --git a/src/resources/dicts/fr.edn b/src/resources/dicts/fr.edn index c7588c446f..cdc780c873 100644 --- a/src/resources/dicts/fr.edn +++ b/src/resources/dicts/fr.edn @@ -29,7 +29,6 @@ :right-side-bar/all-pages "Toutes les pages" :right-side-bar/flashcards "Cartes-mémoire" :left-side-bar/journals "Journaux" - :page/delete-confirmation "Voulez-vous vraiment supprimer la page ?" :page/make-public "Rendre la page publique" :page/make-private "Rendre la page privée" :page/delete "Supprimer la page (supprime le fichier)" diff --git a/src/resources/dicts/id.edn b/src/resources/dicts/id.edn index 605e058818..11a0edbfca 100644 --- a/src/resources/dicts/id.edn +++ b/src/resources/dicts/id.edn @@ -125,7 +125,6 @@ :page/logseq-is-having-a-problem "Logseq mengalami masalah. Untuk mencoba mengembalikannya ke keadaan yang berfungsi, silakan coba langkah-langkah aman berikut ini secara berurutan:" :page/step "Langkah {1}" :page/try "Coba" - :page/delete-confirmation "Apakah Anda yakin ingin menghapus halaman ini beserta berkasnya?" :page/open-in-finder "Buka dalam direktori" :page/open-with-default-app "Buka dengan aplikasi default" :page/make-public "Buat publik untuk dipublikasikan" diff --git a/src/resources/dicts/it.edn b/src/resources/dicts/it.edn index 8cd94a0709..51ad5f9d77 100644 --- a/src/resources/dicts/it.edn +++ b/src/resources/dicts/it.edn @@ -33,7 +33,6 @@ :left-side-bar/journals "Diario" :left-side-bar/nav-favorites "Preferiti" :left-side-bar/nav-recent-pages "Recenti" - :page/delete-confirmation "Sei sicuro di voler eliminare questa pagina e i suoi dati?" :page/open-in-finder "Apri nella cartella" :page/open-with-default-app "Apri con l'app predefinita" :page/make-public "Segna come pubblico per la pubblicazione" diff --git a/src/resources/dicts/ja.edn b/src/resources/dicts/ja.edn index dcee803302..2337f83937 100644 --- a/src/resources/dicts/ja.edn +++ b/src/resources/dicts/ja.edn @@ -134,7 +134,6 @@ :page/logseq-is-having-a-problem "Logseqになにか問題があります。きちんと動く状態に戻すため、以下の項目を上から順番に実行してください:" :page/step "ステップ{1}" :page/try "試す" - :page/delete-confirmation "このページとページのファイルを削除してもよいですか?" :page/open-in-finder "ディレクトリで開く" :page/open-with-default-app "既定のアプリで開く" :page/make-public "パブリッシュのため公開する" diff --git a/src/resources/dicts/ko.edn b/src/resources/dicts/ko.edn index abd2204d88..9b51e0ba5d 100644 --- a/src/resources/dicts/ko.edn +++ b/src/resources/dicts/ko.edn @@ -34,7 +34,6 @@ :left-side-bar/journals "일지" :left-side-bar/nav-favorites "즐겨찾기" :left-side-bar/nav-recent-pages "최근 페이지" - :page/delete-confirmation "이 페이지와 페이지의 파일들을 삭제하시겠습니까?" :page/open-in-finder "디렉토리에서 열기" :page/open-with-default-app "기본 앱으로 열기" :page/make-public "출판 전 공개 상태로 만들기" diff --git a/src/resources/dicts/nb-no.edn b/src/resources/dicts/nb-no.edn index 25385c1733..f64b5c90fd 100644 --- a/src/resources/dicts/nb-no.edn +++ b/src/resources/dicts/nb-no.edn @@ -37,7 +37,6 @@ :left-side-bar/journals "Dagbøker" :left-side-bar/nav-favorites "Favoritter" :left-side-bar/nav-recent-pages "Nylig" - :page/delete-confirmation "Er du sikker på at du vil slette denne siden og filen dens?" :page/open-in-finder "Åpne i mappe" :page/open-with-default-app "Åpne med forhåndsvalgt app" :page/make-public "Gjør den offentlig for publisering" diff --git a/src/resources/dicts/nl.edn b/src/resources/dicts/nl.edn index af0284f7cd..e0f4541fea 100644 --- a/src/resources/dicts/nl.edn +++ b/src/resources/dicts/nl.edn @@ -97,7 +97,6 @@ :page/copy-page-url "Kopieer pagina URL" :page/created-at "Aangemaakt op" :page/delete "Verwijder pagina" - :page/delete-confirmation "Weet u zeker dat u deze pagina wilt verwijderen..." :page/make-private "Maak prive" :page/make-public "Maak publiek" :page/open-backup-directory "Open backups map pagina" diff --git a/src/resources/dicts/pl.edn b/src/resources/dicts/pl.edn index 696e18ae11..ffb6d9954d 100644 --- a/src/resources/dicts/pl.edn +++ b/src/resources/dicts/pl.edn @@ -36,7 +36,6 @@ :left-side-bar/journals "Dzienniki" :left-side-bar/nav-favorites "Ulubione" :left-side-bar/nav-recent-pages "Ostatnio odwiedzane" - :page/delete-confirmation "Czy jesteś pewien że chcesz usunąć tę stronę i jej plik?" :page/open-in-finder "Otwórz w przeglądarce plików" :page/open-with-default-app "Otwórz w domyślnej aplikacji" :page/make-public "Oznacz jako publiczną" diff --git a/src/resources/dicts/pt-br.edn b/src/resources/dicts/pt-br.edn index dfe386bc3f..7f29711447 100644 --- a/src/resources/dicts/pt-br.edn +++ b/src/resources/dicts/pt-br.edn @@ -130,7 +130,6 @@ :page/logseq-is-having-a-problem "Logseq está com um problema. Para tentar fazê-lo voltar a funcionar, siga as etapas seguras a seguir:" :page/step "Etapa {1}" :page/try "Tentar" - :page/delete-confirmation "Tem certeza de que deseja excluir esta página e seu arquivo?" :page/open-in-finder "Abrir no diretório" :page/open-with-default-app "Abrir com o aplicativo padrão" :page/make-public "Torná-la pública para publicação" diff --git a/src/resources/dicts/pt-pt.edn b/src/resources/dicts/pt-pt.edn index 0005fe0e7e..24ddc33625 100644 --- a/src/resources/dicts/pt-pt.edn +++ b/src/resources/dicts/pt-pt.edn @@ -54,7 +54,6 @@ :page/logseq-is-having-a-problem "Logseq está tendo um problema. Para tentar colocá-lo de volta em um estado de funcionamento, por favor tente os seguintes passos seguros em ordem:" :page/step "Passo {1}" :page/try "Tentar" - :page/delete-confirmation "Tem a certeza de que quer apagar esta página e o respetivo ficheiro?" :page/open-in-finder "Abrir em pasta" :page/open-with-default-app "Abrir com a aplicação predefinida" :page/make-public "Tornar pública para publicação" diff --git a/src/resources/dicts/ru.edn b/src/resources/dicts/ru.edn index 454a2562c9..eb5e243f94 100644 --- a/src/resources/dicts/ru.edn +++ b/src/resources/dicts/ru.edn @@ -61,7 +61,6 @@ :page/logseq-is-having-a-problem "У Logseq возникла проблема. Чтобы попытаться вернуть его в рабочее состояние, пожалуйста, попробуйте выполнить следующие безопасные шаги по порядку:" :page/step "Шаг {1}" :page/try "Попробовать" - :page/delete-confirmation "Вы уверены, что хотите удалить эту страницу и её файл(ы)?" :page/open-in-finder "Открыть в каталоге" :page/open-with-default-app "Открыть в приложении по умолчанию" :page/make-public "Сделать доступной для публикации" diff --git a/src/resources/dicts/sk.edn b/src/resources/dicts/sk.edn index 83134c142a..e698107c54 100644 --- a/src/resources/dicts/sk.edn +++ b/src/resources/dicts/sk.edn @@ -130,7 +130,6 @@ :page/logseq-is-having-a-problem "Logseq má problém. Skúste tieto bezpečné kroky, aby ste ho dostali do funkčného stavu:" :page/step "Krok {1}" :page/try "Vyskúšať" - :page/delete-confirmation "Naozaj chcete odstrániť túto stránku a jej súbor?" :page/open-in-finder "Otvoriť v adresári" :page/open-with-default-app "Otvoriť v predvolenej aplikácii" :page/make-public "Označiť stránku ako verejnú" diff --git a/src/resources/dicts/tr.edn b/src/resources/dicts/tr.edn index f89016853f..627e1a0e3c 100644 --- a/src/resources/dicts/tr.edn +++ b/src/resources/dicts/tr.edn @@ -134,7 +134,6 @@ :page/logseq-is-having-a-problem "Logseq'te bir sorun var. Tekrar çalışır duruma getirmek için lütfen aşağıdaki güvenli adımları sırayla deneyin:" :page/step "{1}. Adım" :page/try "Deneyin" - :page/delete-confirmation "Bu sayfayı ve dosyasını silmek istediğinizden emin misiniz?" :page/open-in-finder "Dizini aç" :page/open-with-default-app "Varsayılan uygulamayla aç" :page/make-public "Yayımlamak için herkese açık hale getir" diff --git a/src/resources/dicts/uk.edn b/src/resources/dicts/uk.edn index 01fc507637..bc37b9efac 100644 --- a/src/resources/dicts/uk.edn +++ b/src/resources/dicts/uk.edn @@ -55,7 +55,6 @@ :page/logseq-is-having-a-problem "У Logseq виникла проблема. Щоб спробувати повернути його до робочого стану, виконайте такі безпечні кроки по порядку:" :page/step "Крок {1}" :page/try "Спробувати" - :page/delete-confirmation "Ви впевнені, що хочете видалити цю сторінку та її файл?" :page/open-in-finder "Відкрити у директорії" :page/open-with-default-app "Відкрити за допомогою програми за умовчанням" :page/make-public "Зробіти загальнодоступним для публікації" diff --git a/src/resources/dicts/zh-cn.edn b/src/resources/dicts/zh-cn.edn index 4c03a0992b..68010de817 100644 --- a/src/resources/dicts/zh-cn.edn +++ b/src/resources/dicts/zh-cn.edn @@ -107,7 +107,6 @@ :left-side-bar/journals "日志" :left-side-bar/nav-favorites "收藏页面" :left-side-bar/nav-recent-pages "最近使用" - :page/delete-confirmation "您确定要删除此页面和文件吗?" :page/open-in-finder "打开文件对应目录" :page/open-with-default-app "用默认应用打开文件" :page/make-public "导出 HTML 时发布本页面" diff --git a/src/resources/dicts/zh-hant.edn b/src/resources/dicts/zh-hant.edn index b7dcae64b3..22827356e0 100644 --- a/src/resources/dicts/zh-hant.edn +++ b/src/resources/dicts/zh-hant.edn @@ -55,7 +55,6 @@ :page/logseq-is-having-a-problem "Logseq 出了些問題。請按照以下安全步驟將其恢復到正常狀態:" :page/step "步驟 {1}" :page/try "嘗試" - :page/delete-confirmation "你確定想刪除此頁面檔案嗎?" :page/open-in-finder "開啟資料夾" :page/open-with-default-app "使用預設應用程式開啟" :page/make-public "將其公開讓所有人均可檢視" diff --git a/src/rtc_e2e_test/example.cljs b/src/rtc_e2e_test/example.cljs index 55bd189e44..972a1b6b37 100644 --- a/src/rtc_e2e_test/example.cljs +++ b/src/rtc_e2e_test/example.cljs @@ -3,6 +3,6 @@ ;; (datascript.transit/write-transit-str db) (def example-db-transit - "[\"~#datascript/DB\",[\"^ \",\"~:schema\",[\"^ \",\"~i32\",\"~:logseq.property.journal/title-format\",\"~i64\",\"~:logseq.class/Query\",\"~:logseq.property.view/type.table\",[\"^ \",\"~:db/ident\",\"^6\"],\"~:file/created-at\",[\"^ \"],\"~i1\",\"~:logseq.kv/db-type\",\"~i33\",\"~:logseq.property/status\",\"~i65\",\"~:logseq.class/Advanced-Query\",\"~:logseq.property.fsrs/state\",[\"^ \",\"~:db/index\",true,\"~:db/cardinality\",\"~:db.cardinality/one\",\"^7\",\"^>\"],\"~:logseq.kv/graph-initial-schema-version\",[\"^ \",\"^7\",\"^B\"],\"~:block/tx-id\",[\"^ \"],\"~i2\",\"~:logseq.kv/schema-version\",\"~i34\",\"~:logseq.property/status.backlog\",\"~i66\",\"~:logseq.class/Card\",\"~:logseq.property.pdf/file-path\",[\"^ \",\"^?\",true,\"~:db/valueType\",\"~:db.type/ref\",\"^@\",\"^A\",\"^7\",\"^I\"],\"~:logseq.property.table/sorting\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^L\"],\"~i3\",\"^B\",\"~i35\",\"~:logseq.property/status.todo\",\"~i67\",\"~:logseq.class/Cards\",\"~:logseq.property/public\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^Q\"],\"~i4\",\"~:logseq.kv/graph-created-at\",\"~i36\",\"~:logseq.property/status.doing\",\"~:logseq.property/priority.low\",[\"^ \",\"^7\",\"^U\"],\"~:file/content\",[\"^ \"],\"~:logseq.property/priority.high\",[\"^ \",\"^7\",\"^W\"],\"~i5\",\"~:logseq.property/empty-placeholder\",\"~i37\",\"~:logseq.property/status.in-review\",\"~:logseq.property/priority.urgent\",[\"^ \",\"^7\",\"^[\"],\"~:logseq.property/hl-color\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^10\"],\"~:logseq.property.table/sized-columns\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^11\"],\"~:block/alias\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"~:db.cardinality/many\",\"^7\",\"^12\"],\"~i6\",\"~:logseq.class/Root\",\"~i38\",\"~:logseq.property/status.done\",\"~:kv/value\",[\"^ \"],\"~i7\",\"~:logseq.property/built-in?\",\"~i39\",\"~:logseq.property/status.canceled\",\"~:logseq.property.linked-references/includes\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^13\",\"^7\",\"^1;\"],\"~:block/link\",[\"^ \",\"^J\",\"^K\",\"^?\",true],\"~:logseq.property.view/type\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^1=\"],\"~:logseq.property/heading\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^1>\"],\"~i8\",\"^12\",\"~i40\",\"~:logseq.property/priority\",\"~:block/uuid\",[\"^ \",\"~:db/unique\",\"~:db.unique/identity\"],\"~:logseq.property.table/hidden-columns\",[\"^ \",\"^?\",true,\"^@\",\"^13\",\"^7\",\"^1D\"],\"~i9\",\"~:block/tags\",\"~i41\",\"^U\",\"~:block/updated-at\",[\"^ \",\"^?\",true],\"~:asset/uuid\",[\"^ \",\"^1B\",\"^1C\"],\"~i10\",\"~:logseq.property/parent\",\"~i42\",\"~:logseq.property/priority.medium\",\"~:logseq.property.view/type.list\",[\"^ \",\"^7\",\"^1M\"],\"^1L\",[\"^ \",\"^7\",\"^1L\"],\"~i11\",\"~:logseq.property.class/properties\",\"~:file/size\",[\"^ \"],\"~i43\",\"^W\",\"~:block/refs\",[\"^ \",\"^J\",\"^K\",\"^@\",\"^13\"],\"^H\",[\"^ \",\"^7\",\"^H\"],\"^1@\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^1@\"],\"~i12\",\"~:logseq.property.class/hide-from-node\",\"~i44\",\"^[\",\"^T\",[\"^ \",\"^7\",\"^T\"],\"^D\",[\"^ \",\"^7\",\"^D\"],\"~:logseq.property.pdf/hl-page\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^1V\"],\"~:logseq.property/hl-type\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^1W\"],\"~i13\",\"~:logseq.property/query\",\"~i45\",\"~:logseq.property/deadline\",\"~:block/closed-value-property\",[\"^ \",\"^J\",\"^K\",\"^@\",\"^13\"],\"^Z\",[\"^ \",\"^7\",\"^Z\"],\"~i14\",\"~:logseq.property/page-tags\",\"~:file/last-modified-at\",[\"^ \"],\"~i46\",\"~:logseq.property/icon\",\"^16\",[\"^ \",\"^7\",\"^16\"],\"^1O\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^13\",\"^7\",\"^1O\"],\"^1:\",[\"^ \",\"^7\",\"^1:\"],\"~i15\",\"~:logseq.property/background-color\",\"~i47\",\"^Q\",\"~:block/created-at\",[\"^ \",\"^?\",true],\"^22\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^13\",\"^7\",\"^22\"],\"^N\",[\"^ \",\"^7\",\"^N\"],\"~:logseq.class/Task\",[\"^ \",\"^7\",\"^2:\"],\"~:block/collapsed?\",[\"^ \"],\"~:logseq.property.tldraw/page\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^2<\"],\"~i16\",\"~:logseq.property/background-image\",\"~i48\",\"~:logseq.property/exclude-from-graph-view\",\"~:logseq.property/value\",[\"^ \"],\"^18\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^18\"],\"~:block/schema\",[\"^ \"],\"~i17\",\"^1>\",\"~i49\",\"~:logseq.property/description\",\"^1T\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^1T\"],\"~:logseq.property.linked-references/excludes\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^13\",\"^7\",\"^2F\"],\"~:logseq.property/ls-type\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^2G\"],\"^P\",[\"^ \",\"^7\",\"^P\"],\"~:logseq.property/view-for\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^2H\"],\"~i18\",\"~:logseq.property/created-from-property\",\"^1Y\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^1Y\"],\"~i50\",\"^1=\",\"^27\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^27\"],\"~:block/journal-day\",[\"^ \",\"^?\",true],\"~i19\",\"^2G\",\"^14\",[\"^ \",\"^7\",\"^14\"],\"~i51\",\"^6\",\"~:block/format\",[\"^ \"],\"^X\",[\"^ \",\"^7\",\"^X\"],\"~i20\",\"^1W\",\"~i52\",\"^1M\",\"^1E\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^13\",\"^7\",\"^1E\"],\"~:block/title\",[\"^ \",\"^?\",true],\"~:logseq.property.tldraw/shape\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^2S\"],\"~:asset/meta\",[\"^ \"],\"^1[\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^1[\"],\"~i21\",\"^10\",\"~i53\",\"^L\",\"^2J\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^2J\"],\"^25\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^25\"],\"~i22\",\"^1V\",\"~i54\",\"~:logseq.property.table/filters\",\"^R\",[\"^ \",\"^7\",\"^R\"],\"~i23\",\"~:logseq.property.pdf/hl-stamp\",\"~i55\",\"^1D\",\"~:logseq.property/order-list-type\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^31\"],\"^2@\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^2@\"],\"~i24\",\"~:logseq.property.pdf/hl-value\",\"~i56\",\"~:logseq.property.table/ordered-columns\",\"^2>\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^2>\"],\"^7\",[\"^ \",\"^1B\",\"^1C\"],\"~:property/schema.classes\",[\"^ \",\"^J\",\"^K\",\"^@\",\"^13\"],\"^2E\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^2E\"],\"~:block/path-refs\",[\"^ \",\"^J\",\"^K\",\"^@\",\"^13\"],\"~:block/parent\",[\"^ \",\"^J\",\"^K\",\"^?\",true],\"~i25\",\"~:logseq.property.pdf/file\",\"~i57\",\"^11\",\"~:block/type\",[\"^ \",\"^?\",true],\"~:logseq.class/Journal\",[\"^ \",\"^7\",\"^3=\"],\"~i26\",\"^I\",\"~i58\",\"^2H\",\"^33\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^33\"],\"^5\",[\"^ \",\"^7\",\"^5\"],\"~i27\",\"^31\",\"~i59\",\"~:logseq.property.asset/remote-metadata\",\"^3B\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^3B\"],\"^2[\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^2[\"],\"~:block/order\",[\"^ \",\"^?\",true],\"^;\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^;\"],\"~:logseq.property.fsrs/due\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^3D\"],\"~i28\",\"^1;\",\"~i60\",\"^3D\",\"~:block/page\",[\"^ \",\"^J\",\"^K\",\"^?\",true],\"~:block/name\",[\"^ \",\"^?\",true],\"^35\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^35\"],\"~:file/path\",[\"^ \",\"^1B\",\"^1C\"],\"~i29\",\"^2F\",\"~i61\",\"^>\",\"^F\",[\"^ \",\"^7\",\"^F\"],\"^1J\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^1J\"],\"~i30\",\"^2<\",\"~i62\",\"^2:\",\"^3:\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^3:\"],\"^3\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^3\"],\"^=\",[\"^ \",\"^7\",\"^=\"],\"~i31\",\"^2S\",\"~i63\",\"^3=\",\"^9\",[\"^ \",\"^7\",\"^9\"],\"^2Y\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^2Y\"]],\"~:datoms\",[\"~#list\",[[\"~#datascript/Datom\",[1,\"^7\",\"^9\",536870913]],[\"^3R\",[1,\"^17\",\"db\",536870913]],[\"^3R\",[2,\"^7\",\"^D\",536870913]],[\"^3R\",[2,\"^17\",25,536870913]],[\"^3R\",[3,\"^7\",\"^B\",536870913]],[\"^3R\",[3,\"^17\",25,536870913]],[\"^3R\",[4,\"^7\",\"^R\",536870913]],[\"^3R\",[4,\"^17\",1727187033523,536870913]],[\"^3R\",[5,\"^7\",\"^X\",536870913]],[\"^3R\",[6,\"^29\",1727187033526,536870913]],[\"^3R\",[6,\"^2O\",\"~:markdown\",536870913]],[\"^3R\",[6,\"^3H\",\"root tag\",536870913]],[\"^3R\",[6,\"^2R\",\"Root Tag\",536870913]],[\"^3R\",[6,\"^3<\",\"class\",536870913]],[\"^3R\",[6,\"^1G\",1727187033526,536870913]],[\"^3R\",[6,\"^1A\",\"~u00000002-2737-8382-7000-000000000000\",536870913]],[\"^3R\",[6,\"^7\",\"^14\",536870913]],[\"^3R\",[6,\"^18\",true,536870913]],[\"^3R\",[7,\"^29\",1727187033523,536870913]],[\"^3R\",[7,\"^2O\",\"^3S\",536870913]],[\"^3R\",[7,\"^3H\",\"built-in?\",536870913]],[\"^3R\",[7,\"^3C\",\"bNP\",536870913]],[\"^3R\",[7,\"^2B\",[\"^ \",\"~:type\",\"~:checkbox\",\"~:hide?\",true],536870913]],[\"^3R\",[7,\"^2R\",\"built-in?\",536870913]],[\"^3R\",[7,\"^3<\",\"property\",536870913]],[\"^3R\",[7,\"^1G\",1727187033523,536870913]],[\"^3R\",[7,\"^1A\",\"~u00000002-1125-9581-6000-000000000000\",536870913]],[\"^3R\",[7,\"^@\",\"^A\",536870913]],[\"^3R\",[7,\"^7\",\"^18\",536870913]],[\"^3R\",[7,\"^?\",true,536870913]],[\"^3R\",[7,\"^18\",true,536870913]],[\"^3R\",[8,\"^29\",1727187033524,536870913]],[\"^3R\",[8,\"^2O\",\"^3S\",536870913]],[\"^3R\",[8,\"^3H\",\"alias\",536870913]],[\"^3R\",[8,\"^3C\",\"bNQ\",536870913]],[\"^3R\",[8,\"^2B\",[\"^ \",\"^3T\",\"~:page\",\"~:view-context\",\"^3W\",\"~:public?\",true],536870913]],[\"^3R\",[8,\"^2R\",\"Alias\",536870913]],[\"^3R\",[8,\"^3<\",\"property\",536870913]],[\"^3R\",[8,\"^1G\",1727187033524,536870913]],[\"^3R\",[8,\"^1A\",\"~u00000002-2112-6446-9900-000000000000\",536870913]],[\"^3R\",[8,\"^@\",\"^13\",536870913]],[\"^3R\",[8,\"^7\",\"^12\",536870913]],[\"^3R\",[8,\"^?\",true,536870913]],[\"^3R\",[8,\"^J\",\"^K\",536870913]],[\"^3R\",[8,\"^18\",true,536870913]],[\"^3R\",[9,\"^29\",1727187033524,536870913]],[\"^3R\",[9,\"^2O\",\"^3S\",536870913]],[\"^3R\",[9,\"^3H\",\"tags\",536870913]],[\"^3R\",[9,\"^3C\",\"bNR\",536870913]],[\"^3R\",[9,\"^2B\",[\"^ \",\"^3T\",\"~:class\",\"^3Y\",true],536870913]],[\"^3R\",[9,\"^2R\",\"Tags\",536870913]],[\"^3R\",[9,\"^3<\",\"property\",536870913]],[\"^3R\",[9,\"^1G\",1727187033524,536870913]],[\"^3R\",[9,\"^1A\",\"~u00000002-1814-9483-4000-000000000000\",536870913]],[\"^3R\",[9,\"^@\",\"^13\",536870913]],[\"^3R\",[9,\"^7\",\"^1E\",536870913]],[\"^3R\",[9,\"^?\",true,536870913]],[\"^3R\",[9,\"^J\",\"^K\",536870913]],[\"^3R\",[9,\"^18\",true,536870913]],[\"^3R\",[9,\"^36\",6,536870913]],[\"^3R\",[10,\"^29\",1727187033524,536870913]],[\"^3R\",[10,\"^2O\",\"^3S\",536870913]],[\"^3R\",[10,\"^3H\",\"parent\",536870913]],[\"^3R\",[10,\"^3C\",\"bNS\",536870913]],[\"^3R\",[10,\"^2B\",[\"^ \",\"^3T\",\"~:node\",\"^3Y\",true,\"^3X\",\"^3W\"],536870913]],[\"^3R\",[10,\"^2R\",\"Parent\",536870913]],[\"^3R\",[10,\"^3<\",\"property\",536870913]],[\"^3R\",[10,\"^1G\",1727187033524,536870913]],[\"^3R\",[10,\"^1A\",\"~u00000002-1779-8450-9000-000000000000\",536870913]],[\"^3R\",[10,\"^@\",\"^A\",536870913]],[\"^3R\",[10,\"^7\",\"^1J\",536870913]],[\"^3R\",[10,\"^?\",true,536870913]],[\"^3R\",[10,\"^J\",\"^K\",536870913]],[\"^3R\",[10,\"^18\",true,536870913]],[\"^3R\",[11,\"^29\",1727187033524,536870913]],[\"^3R\",[11,\"^2O\",\"^3S\",536870913]],[\"^3R\",[11,\"^3H\",\"tag properties\",536870913]],[\"^3R\",[11,\"^3C\",\"bNT\",536870913]],[\"^3R\",[11,\"^2B\",[\"^ \",\"^3T\",\"~:property\",\"^3Y\",true,\"^3X\",\"~:never\"],536870913]],[\"^3R\",[11,\"^2R\",\"Tag Properties\",536870913]],[\"^3R\",[11,\"^3<\",\"property\",536870913]],[\"^3R\",[11,\"^1G\",1727187033524,536870913]],[\"^3R\",[11,\"^1A\",\"~u00000002-2123-7120-5000-000000000000\",536870913]],[\"^3R\",[11,\"^@\",\"^13\",536870913]],[\"^3R\",[11,\"^7\",\"^1O\",536870913]],[\"^3R\",[11,\"^?\",true,536870913]],[\"^3R\",[11,\"^J\",\"^K\",536870913]],[\"^3R\",[11,\"^18\",true,536870913]],[\"^3R\",[12,\"^29\",1727187033524,536870913]],[\"^3R\",[12,\"^2O\",\"^3S\",536870913]],[\"^3R\",[12,\"^3H\",\"hide from node\",536870913]],[\"^3R\",[12,\"^3C\",\"bNU\",536870913]],[\"^3R\",[12,\"^2B\",[\"^ \",\"^3T\",\"^3U\",\"^3Y\",true,\"^3X\",\"^3Z\"],536870913]],[\"^3R\",[12,\"^2R\",\"Hide from Node\",536870913]],[\"^3R\",[12,\"^3<\",\"property\",536870913]],[\"^3R\",[12,\"^1G\",1727187033524,536870913]],[\"^3R\",[12,\"^1A\",\"~u00000002-2610-3727-0000-000000000000\",536870913]],[\"^3R\",[12,\"^@\",\"^A\",536870913]],[\"^3R\",[12,\"^7\",\"^1T\",536870913]],[\"^3R\",[12,\"^?\",true,536870913]],[\"^3R\",[12,\"^18\",true,536870913]],[\"^3R\",[13,\"^29\",1727187033524,536870913]],[\"^3R\",[13,\"^2O\",\"^3S\",536870913]],[\"^3R\",[13,\"^3H\",\"query\",536870913]],[\"^3R\",[13,\"^3C\",\"bNV\",536870913]],[\"^3R\",[13,\"^2B\",[\"^ \",\"^3T\",\"~:default\",\"^3Y\",true,\"^3X\",\"~:block\"],536870913]],[\"^3R\",[13,\"^2R\",\"Query\",536870913]],[\"^3R\",[13,\"^3<\",\"property\",536870913]],[\"^3R\",[13,\"^1G\",1727187033524,536870913]],[\"^3R\",[13,\"^1A\",\"~u00000002-9741-4126-0000-000000000000\",536870913]],[\"^3R\",[13,\"^@\",\"^A\",536870913]],[\"^3R\",[13,\"^7\",\"^1Y\",536870913]],[\"^3R\",[13,\"^?\",true,536870913]],[\"^3R\",[13,\"^J\",\"^K\",536870913]],[\"^3R\",[13,\"^18\",true,536870913]],[\"^3R\",[14,\"^29\",1727187033524,536870913]],[\"^3R\",[14,\"^2O\",\"^3S\",536870913]],[\"^3R\",[14,\"^3H\",\"page tags\",536870913]],[\"^3R\",[14,\"^3C\",\"bNW\",536870913]],[\"^3R\",[14,\"^2B\",[\"^ \",\"^3T\",\"^3W\",\"^3Y\",true,\"^3X\",\"^3W\"],536870913]],[\"^3R\",[14,\"^2R\",\"Page Tags\",536870913]],[\"^3R\",[14,\"^3<\",\"property\",536870913]],[\"^3R\",[14,\"^1G\",1727187033524,536870913]],[\"^3R\",[14,\"^1A\",\"~u00000002-2133-5311-8500-000000000000\",536870913]],[\"^3R\",[14,\"^@\",\"^13\",536870913]],[\"^3R\",[14,\"^7\",\"^22\",536870913]],[\"^3R\",[14,\"^?\",true,536870913]],[\"^3R\",[14,\"^J\",\"^K\",536870913]],[\"^3R\",[14,\"^18\",true,536870913]],[\"^3R\",[15,\"^29\",1727187033524,536870913]],[\"^3R\",[15,\"^2O\",\"^3S\",536870913]],[\"^3R\",[15,\"^3H\",\"background-color\",536870913]],[\"^3R\",[15,\"^3C\",\"bNX\",536870913]],[\"^3R\",[15,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3V\",true],536870913]],[\"^3R\",[15,\"^2R\",\"background-color\",536870913]],[\"^3R\",[15,\"^3<\",\"property\",536870913]],[\"^3R\",[15,\"^1G\",1727187033524,536870913]],[\"^3R\",[15,\"^1A\",\"~u00000002-5191-2660-6000-000000000000\",536870913]],[\"^3R\",[15,\"^@\",\"^A\",536870913]],[\"^3R\",[15,\"^7\",\"^27\",536870913]],[\"^3R\",[15,\"^?\",true,536870913]],[\"^3R\",[15,\"^J\",\"^K\",536870913]],[\"^3R\",[15,\"^18\",true,536870913]],[\"^3R\",[16,\"^29\",1727187033524,536870913]],[\"^3R\",[16,\"^2O\",\"^3S\",536870913]],[\"^3R\",[16,\"^3H\",\"background-image\",536870913]],[\"^3R\",[16,\"^3C\",\"bNY\",536870913]],[\"^3R\",[16,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3X\",\"^43\",\"^3Y\",true],536870913]],[\"^3R\",[16,\"^2R\",\"background-image\",536870913]],[\"^3R\",[16,\"^3<\",\"property\",536870913]],[\"^3R\",[16,\"^1G\",1727187033524,536870913]],[\"^3R\",[16,\"^1A\",\"~u00000002-2513-1712-8000-000000000000\",536870913]],[\"^3R\",[16,\"^@\",\"^A\",536870913]],[\"^3R\",[16,\"^7\",\"^2>\",536870913]],[\"^3R\",[16,\"^?\",true,536870913]],[\"^3R\",[16,\"^J\",\"^K\",536870913]],[\"^3R\",[16,\"^18\",true,536870913]],[\"^3R\",[17,\"^29\",1727187033524,536870913]],[\"^3R\",[17,\"^2O\",\"^3S\",536870913]],[\"^3R\",[17,\"^3H\",\"heading\",536870913]],[\"^3R\",[17,\"^3C\",\"bNZ\",536870913]],[\"^3R\",[17,\"^2B\",[\"^ \",\"^3T\",\"~:any\",\"^3V\",true],536870913]],[\"^3R\",[17,\"^2R\",\"heading\",536870913]],[\"^3R\",[17,\"^3<\",\"property\",536870913]],[\"^3R\",[17,\"^1G\",1727187033524,536870913]],[\"^3R\",[17,\"^1A\",\"~u00000002-1858-7494-1500-000000000000\",536870913]],[\"^3R\",[17,\"^@\",\"^A\",536870913]],[\"^3R\",[17,\"^7\",\"^1>\",536870913]],[\"^3R\",[17,\"^?\",true,536870913]],[\"^3R\",[17,\"^18\",true,536870913]],[\"^3R\",[18,\"^29\",1727187033524,536870913]],[\"^3R\",[18,\"^2O\",\"^3S\",536870913]],[\"^3R\",[18,\"^3H\",\"created-from-property\",536870913]],[\"^3R\",[18,\"^3C\",\"bNa\",536870913]],[\"^3R\",[18,\"^2B\",[\"^ \",\"^3T\",\"~:entity\",\"^3V\",true],536870913]],[\"^3R\",[18,\"^2R\",\"created-from-property\",536870913]],[\"^3R\",[18,\"^3<\",\"property\",536870913]],[\"^3R\",[18,\"^1G\",1727187033524,536870913]],[\"^3R\",[18,\"^1A\",\"~u00000002-8618-9226-7000-000000000000\",536870913]],[\"^3R\",[18,\"^@\",\"^A\",536870913]],[\"^3R\",[18,\"^7\",\"^2J\",536870913]],[\"^3R\",[18,\"^?\",true,536870913]],[\"^3R\",[18,\"^J\",\"^K\",536870913]],[\"^3R\",[18,\"^18\",true,536870913]],[\"^3R\",[19,\"^29\",1727187033524,536870913]],[\"^3R\",[19,\"^2O\",\"^3S\",536870913]],[\"^3R\",[19,\"^3H\",\"ls-type\",536870913]],[\"^3R\",[19,\"^3C\",\"bNb\",536870913]],[\"^3R\",[19,\"^2B\",[\"^ \",\"^3T\",\"~:keyword\",\"^3V\",true],536870913]],[\"^3R\",[19,\"^2R\",\"ls-type\",536870913]],[\"^3R\",[19,\"^3<\",\"property\",536870913]],[\"^3R\",[19,\"^1G\",1727187033524,536870913]],[\"^3R\",[19,\"^1A\",\"~u00000002-3269-7934-5000-000000000000\",536870913]],[\"^3R\",[19,\"^@\",\"^A\",536870913]],[\"^3R\",[19,\"^7\",\"^2G\",536870913]],[\"^3R\",[19,\"^?\",true,536870913]],[\"^3R\",[19,\"^18\",true,536870913]],[\"^3R\",[20,\"^29\",1727187033524,536870913]],[\"^3R\",[20,\"^2O\",\"^3S\",536870913]],[\"^3R\",[20,\"^3H\",\"hl-type\",536870913]],[\"^3R\",[20,\"^3C\",\"bNc\",536870913]],[\"^3R\",[20,\"^2B\",[\"^ \",\"^3T\",\"^46\",\"^3V\",true],536870913]],[\"^3R\",[20,\"^2R\",\"hl-type\",536870913]],[\"^3R\",[20,\"^3<\",\"property\",536870913]],[\"^3R\",[20,\"^1G\",1727187033524,536870913]],[\"^3R\",[20,\"^1A\",\"~u00000002-2083-0223-8000-000000000000\",536870913]],[\"^3R\",[20,\"^@\",\"^A\",536870913]],[\"^3R\",[20,\"^7\",\"^1W\",536870913]],[\"^3R\",[20,\"^?\",true,536870913]],[\"^3R\",[20,\"^18\",true,536870913]],[\"^3R\",[21,\"^29\",1727187033524,536870913]],[\"^3R\",[21,\"^2O\",\"^3S\",536870913]],[\"^3R\",[21,\"^3H\",\"hl-color\",536870913]],[\"^3R\",[21,\"^3C\",\"bNd\",536870913]],[\"^3R\",[21,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3V\",true],536870913]],[\"^3R\",[21,\"^2R\",\"hl-color\",536870913]],[\"^3R\",[21,\"^3<\",\"property\",536870913]],[\"^3R\",[21,\"^1G\",1727187033524,536870913]],[\"^3R\",[21,\"^1A\",\"~u00000002-2137-2691-4700-000000000000\",536870913]],[\"^3R\",[21,\"^@\",\"^A\",536870913]],[\"^3R\",[21,\"^7\",\"^10\",536870913]],[\"^3R\",[21,\"^?\",true,536870913]],[\"^3R\",[21,\"^J\",\"^K\",536870913]],[\"^3R\",[21,\"^18\",true,536870913]],[\"^3R\",[22,\"^29\",1727187033524,536870913]],[\"^3R\",[22,\"^2O\",\"^3S\",536870913]],[\"^3R\",[22,\"^3H\",\"hl-page\",536870913]],[\"^3R\",[22,\"^3C\",\"bNe\",536870913]],[\"^3R\",[22,\"^2B\",[\"^ \",\"^3T\",\"~:number\",\"^3V\",true],536870913]],[\"^3R\",[22,\"^2R\",\"hl-page\",536870913]],[\"^3R\",[22,\"^3<\",\"property\",536870913]],[\"^3R\",[22,\"^1G\",1727187033524,536870913]],[\"^3R\",[22,\"^1A\",\"~u00000002-7532-8459-6000-000000000000\",536870913]],[\"^3R\",[22,\"^@\",\"^A\",536870913]],[\"^3R\",[22,\"^7\",\"^1V\",536870913]],[\"^3R\",[22,\"^?\",true,536870913]],[\"^3R\",[22,\"^J\",\"^K\",536870913]],[\"^3R\",[22,\"^18\",true,536870913]],[\"^3R\",[23,\"^29\",1727187033524,536870913]],[\"^3R\",[23,\"^2O\",\"^3S\",536870913]],[\"^3R\",[23,\"^3H\",\"hl-stamp\",536870913]],[\"^3R\",[23,\"^3C\",\"bNf\",536870913]],[\"^3R\",[23,\"^2B\",[\"^ \",\"^3T\",\"^47\",\"^3V\",true],536870913]],[\"^3R\",[23,\"^2R\",\"hl-stamp\",536870913]],[\"^3R\",[23,\"^3<\",\"property\",536870913]],[\"^3R\",[23,\"^1G\",1727187033524,536870913]],[\"^3R\",[23,\"^1A\",\"~u00000002-1293-4649-2300-000000000000\",536870913]],[\"^3R\",[23,\"^@\",\"^A\",536870913]],[\"^3R\",[23,\"^7\",\"^2[\",536870913]],[\"^3R\",[23,\"^?\",true,536870913]],[\"^3R\",[23,\"^J\",\"^K\",536870913]],[\"^3R\",[23,\"^18\",true,536870913]],[\"^3R\",[24,\"^29\",1727187033524,536870913]],[\"^3R\",[24,\"^2O\",\"^3S\",536870913]],[\"^3R\",[24,\"^3H\",\"hl-value\",536870913]],[\"^3R\",[24,\"^3C\",\"bNg\",536870913]],[\"^3R\",[24,\"^2B\",[\"^ \",\"^3T\",\"~:map\",\"^3V\",true],536870913]],[\"^3R\",[24,\"^2R\",\"hl-value\",536870913]],[\"^3R\",[24,\"^3<\",\"property\",536870913]],[\"^3R\",[24,\"^1G\",1727187033524,536870913]],[\"^3R\",[24,\"^1A\",\"~u00000002-5458-2940-2000-000000000000\",536870913]],[\"^3R\",[24,\"^@\",\"^A\",536870913]],[\"^3R\",[24,\"^7\",\"^33\",536870913]],[\"^3R\",[24,\"^?\",true,536870913]],[\"^3R\",[24,\"^18\",true,536870913]],[\"^3R\",[25,\"^29\",1727187033525,536870913]],[\"^3R\",[25,\"^2O\",\"^3S\",536870913]],[\"^3R\",[25,\"^3H\",\"file\",536870913]],[\"^3R\",[25,\"^3C\",\"bNh\",536870913]],[\"^3R\",[25,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3V\",true,\"^3Y\",true,\"^3X\",\"^3W\"],536870913]],[\"^3R\",[25,\"^2R\",\"file\",536870913]],[\"^3R\",[25,\"^3<\",\"property\",536870913]],[\"^3R\",[25,\"^1G\",1727187033525,536870913]],[\"^3R\",[25,\"^1A\",\"~u00000002-1681-6464-3400-000000000000\",536870913]],[\"^3R\",[25,\"^@\",\"^A\",536870913]],[\"^3R\",[25,\"^7\",\"^3:\",536870913]],[\"^3R\",[25,\"^?\",true,536870913]],[\"^3R\",[25,\"^J\",\"^K\",536870913]],[\"^3R\",[25,\"^18\",true,536870913]],[\"^3R\",[26,\"^29\",1727187033525,536870913]],[\"^3R\",[26,\"^2O\",\"^3S\",536870913]],[\"^3R\",[26,\"^3H\",\"file-path\",536870913]],[\"^3R\",[26,\"^3C\",\"bNi\",536870913]],[\"^3R\",[26,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3V\",true,\"^3Y\",true,\"^3X\",\"^3W\"],536870913]],[\"^3R\",[26,\"^2R\",\"file-path\",536870913]],[\"^3R\",[26,\"^3<\",\"property\",536870913]],[\"^3R\",[26,\"^1G\",1727187033525,536870913]],[\"^3R\",[26,\"^1A\",\"~u00000002-5663-3568-2000-000000000000\",536870913]],[\"^3R\",[26,\"^@\",\"^A\",536870913]],[\"^3R\",[26,\"^7\",\"^I\",536870913]],[\"^3R\",[26,\"^?\",true,536870913]],[\"^3R\",[26,\"^J\",\"^K\",536870913]],[\"^3R\",[26,\"^18\",true,536870913]],[\"^3R\",[27,\"^29\",1727187033525,536870913]],[\"^3R\",[27,\"^2O\",\"^3S\",536870913]],[\"^3R\",[27,\"^3H\",\"logseq.order-list-type\",536870913]],[\"^3R\",[27,\"^3C\",\"bNj\",536870913]],[\"^3R\",[27,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3V\",true],536870913]],[\"^3R\",[27,\"^2R\",\"logseq.order-list-type\",536870913]],[\"^3R\",[27,\"^3<\",\"property\",536870913]],[\"^3R\",[27,\"^1G\",1727187033525,536870913]],[\"^3R\",[27,\"^1A\",\"~u00000002-6078-1711-1000-000000000000\",536870913]],[\"^3R\",[27,\"^@\",\"^A\",536870913]],[\"^3R\",[27,\"^7\",\"^31\",536870913]],[\"^3R\",[27,\"^?\",true,536870913]],[\"^3R\",[27,\"^J\",\"^K\",536870913]],[\"^3R\",[27,\"^18\",true,536870913]],[\"^3R\",[28,\"^29\",1727187033525,536870913]],[\"^3R\",[28,\"^2O\",\"^3S\",536870913]],[\"^3R\",[28,\"^3H\",\"includes\",536870913]],[\"^3R\",[28,\"^3C\",\"bNk\",536870913]],[\"^3R\",[28,\"^2B\",[\"^ \",\"^3T\",\"^3[\",\"^3V\",true],536870913]],[\"^3R\",[28,\"^2R\",\"includes\",536870913]],[\"^3R\",[28,\"^3<\",\"property\",536870913]],[\"^3R\",[28,\"^1G\",1727187033525,536870913]],[\"^3R\",[28,\"^1A\",\"~u00000002-1680-5777-0300-000000000000\",536870913]],[\"^3R\",[28,\"^@\",\"^13\",536870913]],[\"^3R\",[28,\"^7\",\"^1;\",536870913]],[\"^3R\",[28,\"^?\",true,536870913]],[\"^3R\",[28,\"^J\",\"^K\",536870913]],[\"^3R\",[28,\"^18\",true,536870913]],[\"^3R\",[29,\"^29\",1727187033525,536870913]],[\"^3R\",[29,\"^2O\",\"^3S\",536870913]],[\"^3R\",[29,\"^3H\",\"excludes\",536870913]],[\"^3R\",[29,\"^3C\",\"bNl\",536870913]],[\"^3R\",[29,\"^2B\",[\"^ \",\"^3T\",\"^3[\",\"^3V\",true],536870913]],[\"^3R\",[29,\"^2R\",\"excludes\",536870913]],[\"^3R\",[29,\"^3<\",\"property\",536870913]],[\"^3R\",[29,\"^1G\",1727187033525,536870913]],[\"^3R\",[29,\"^1A\",\"~u00000002-2426-7588-9000-000000000000\",536870913]],[\"^3R\",[29,\"^@\",\"^13\",536870913]],[\"^3R\",[29,\"^7\",\"^2F\",536870913]],[\"^3R\",[29,\"^?\",true,536870913]],[\"^3R\",[29,\"^J\",\"^K\",536870913]],[\"^3R\",[29,\"^18\",true,536870913]],[\"^3R\",[30,\"^29\",1727187033525,536870913]],[\"^3R\",[30,\"^2O\",\"^3S\",536870913]],[\"^3R\",[30,\"^3H\",\"logseq.tldraw.page\",536870913]],[\"^3R\",[30,\"^3C\",\"bNm\",536870913]],[\"^3R\",[30,\"^2B\",[\"^ \",\"^3T\",\"^48\",\"^3V\",true],536870913]],[\"^3R\",[30,\"^2R\",\"logseq.tldraw.page\",536870913]],[\"^3R\",[30,\"^3<\",\"property\",536870913]],[\"^3R\",[30,\"^1G\",1727187033525,536870913]],[\"^3R\",[30,\"^1A\",\"~u00000002-3546-2145-7000-000000000000\",536870913]],[\"^3R\",[30,\"^@\",\"^A\",536870913]],[\"^3R\",[30,\"^7\",\"^2<\",536870913]],[\"^3R\",[30,\"^?\",true,536870913]],[\"^3R\",[30,\"^18\",true,536870913]],[\"^3R\",[31,\"^29\",1727187033525,536870913]],[\"^3R\",[31,\"^2O\",\"^3S\",536870913]],[\"^3R\",[31,\"^3H\",\"logseq.tldraw.shape\",536870913]],[\"^3R\",[31,\"^3C\",\"bNn\",536870913]],[\"^3R\",[31,\"^2B\",[\"^ \",\"^3T\",\"^48\",\"^3V\",true],536870913]],[\"^3R\",[31,\"^2R\",\"logseq.tldraw.shape\",536870913]],[\"^3R\",[31,\"^3<\",\"property\",536870913]],[\"^3R\",[31,\"^1G\",1727187033525,536870913]],[\"^3R\",[31,\"^1A\",\"~u00000002-1313-2454-2000-000000000000\",536870913]],[\"^3R\",[31,\"^@\",\"^A\",536870913]],[\"^3R\",[31,\"^7\",\"^2S\",536870913]],[\"^3R\",[31,\"^?\",true,536870913]],[\"^3R\",[31,\"^18\",true,536870913]],[\"^3R\",[32,\"^29\",1727187033525,536870913]],[\"^3R\",[32,\"^2O\",\"^3S\",536870913]],[\"^3R\",[32,\"^3H\",\"title format\",536870913]],[\"^3R\",[32,\"^3C\",\"bNo\",536870913]],[\"^3R\",[32,\"^2B\",[\"^ \",\"^3T\",\"~:string\",\"^3Y\",false],536870913]],[\"^3R\",[32,\"^2R\",\"Title Format\",536870913]],[\"^3R\",[32,\"^3<\",\"property\",536870913]],[\"^3R\",[32,\"^1G\",1727187033525,536870913]],[\"^3R\",[32,\"^1A\",\"~u00000002-1536-4979-5400-000000000000\",536870913]],[\"^3R\",[32,\"^@\",\"^A\",536870913]],[\"^3R\",[32,\"^7\",\"^3\",536870913]],[\"^3R\",[32,\"^?\",true,536870913]],[\"^3R\",[32,\"^18\",true,536870913]],[\"^3R\",[33,\"^29\",1727187033525,536870913]],[\"^3R\",[33,\"^2O\",\"^3S\",536870913]],[\"^3R\",[33,\"^3H\",\"status\",536870913]],[\"^3R\",[33,\"^3C\",\"bNp\",536870913]],[\"^3R\",[33,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3Y\",true,\"~:position\",\"~:block-left\"],536870913]],[\"^3R\",[33,\"^2R\",\"Status\",536870913]],[\"^3R\",[33,\"^3<\",\"property\",536870913]],[\"^3R\",[33,\"^1G\",1727187033525,536870913]],[\"^3R\",[33,\"^1A\",\"~u00000002-1399-1718-0300-000000000000\",536870913]],[\"^3R\",[33,\"^@\",\"^A\",536870913]],[\"^3R\",[33,\"^7\",\"^;\",536870913]],[\"^3R\",[33,\"^?\",true,536870913]],[\"^3R\",[33,\"^J\",\"^K\",536870913]],[\"^3R\",[33,\"^18\",true,536870913]],[\"^3R\",[34,\"^20\",33,536870913]],[\"^3R\",[34,\"^29\",1727187033525,536870913]],[\"^3R\",[34,\"^2O\",\"^3S\",536870913]],[\"^3R\",[34,\"^3C\",\"bNq\",536870913]],[\"^3R\",[34,\"^3G\",33,536870913]],[\"^3R\",[34,\"^38\",33,536870913]],[\"^3R\",[34,\"^2R\",\"Backlog\",536870913]],[\"^3R\",[34,\"^3<\",\"closed value\",536870913]],[\"^3R\",[34,\"^1G\",1727187033525,536870913]],[\"^3R\",[34,\"^1A\",\"~u00000002-1797-5174-0500-000000000000\",536870913]],[\"^3R\",[34,\"^7\",\"^F\",536870913]],[\"^3R\",[34,\"^18\",true,536870913]],[\"^3R\",[34,\"^2J\",33,536870913]],[\"^3R\",[34,\"^25\",[\"^ \",\"^3T\",\"~:tabler-icon\",\"~:id\",\"Backlog\"],536870913]],[\"^3R\",[35,\"^20\",33,536870913]],[\"^3R\",[35,\"^29\",1727187033525,536870913]],[\"^3R\",[35,\"^2O\",\"^3S\",536870913]],[\"^3R\",[35,\"^3C\",\"bNr\",536870913]],[\"^3R\",[35,\"^3G\",33,536870913]],[\"^3R\",[35,\"^38\",33,536870913]],[\"^3R\",[35,\"^2R\",\"Todo\",536870913]],[\"^3R\",[35,\"^3<\",\"closed value\",536870913]],[\"^3R\",[35,\"^1G\",1727187033525,536870913]],[\"^3R\",[35,\"^1A\",\"~u00000002-1776-1920-4900-000000000000\",536870913]],[\"^3R\",[35,\"^7\",\"^N\",536870913]],[\"^3R\",[35,\"^18\",true,536870913]],[\"^3R\",[35,\"^2J\",33,536870913]],[\"^3R\",[35,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"Todo\"],536870913]],[\"^3R\",[36,\"^20\",33,536870913]],[\"^3R\",[36,\"^29\",1727187033525,536870913]],[\"^3R\",[36,\"^2O\",\"^3S\",536870913]],[\"^3R\",[36,\"^3C\",\"bNs\",536870913]],[\"^3R\",[36,\"^3G\",33,536870913]],[\"^3R\",[36,\"^38\",33,536870913]],[\"^3R\",[36,\"^2R\",\"Doing\",536870913]],[\"^3R\",[36,\"^3<\",\"closed value\",536870913]],[\"^3R\",[36,\"^1G\",1727187033525,536870913]],[\"^3R\",[36,\"^1A\",\"~u00000002-5524-7947-6000-000000000000\",536870913]],[\"^3R\",[36,\"^7\",\"^T\",536870913]],[\"^3R\",[36,\"^18\",true,536870913]],[\"^3R\",[36,\"^2J\",33,536870913]],[\"^3R\",[36,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"InProgress50\"],536870913]],[\"^3R\",[37,\"^20\",33,536870913]],[\"^3R\",[37,\"^29\",1727187033525,536870913]],[\"^3R\",[37,\"^2O\",\"^3S\",536870913]],[\"^3R\",[37,\"^3C\",\"bNt\",536870913]],[\"^3R\",[37,\"^3G\",33,536870913]],[\"^3R\",[37,\"^38\",33,536870913]],[\"^3R\",[37,\"^2R\",\"In Review\",536870913]],[\"^3R\",[37,\"^3<\",\"closed value\",536870913]],[\"^3R\",[37,\"^1G\",1727187033525,536870913]],[\"^3R\",[37,\"^1A\",\"~u00000002-3550-9421-0000-000000000000\",536870913]],[\"^3R\",[37,\"^7\",\"^Z\",536870913]],[\"^3R\",[37,\"^18\",true,536870913]],[\"^3R\",[37,\"^2J\",33,536870913]],[\"^3R\",[37,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"InReview\"],536870913]],[\"^3R\",[38,\"^20\",33,536870913]],[\"^3R\",[38,\"^29\",1727187033525,536870913]],[\"^3R\",[38,\"^2O\",\"^3S\",536870913]],[\"^3R\",[38,\"^3C\",\"bNu\",536870913]],[\"^3R\",[38,\"^3G\",33,536870913]],[\"^3R\",[38,\"^38\",33,536870913]],[\"^3R\",[38,\"^2R\",\"Done\",536870913]],[\"^3R\",[38,\"^3<\",\"closed value\",536870913]],[\"^3R\",[38,\"^1G\",1727187033525,536870913]],[\"^3R\",[38,\"^1A\",\"~u00000002-1430-0577-4000-000000000000\",536870913]],[\"^3R\",[38,\"^7\",\"^16\",536870913]],[\"^3R\",[38,\"^18\",true,536870913]],[\"^3R\",[38,\"^2J\",33,536870913]],[\"^3R\",[38,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"Done\"],536870913]],[\"^3R\",[39,\"^20\",33,536870913]],[\"^3R\",[39,\"^29\",1727187033525,536870913]],[\"^3R\",[39,\"^2O\",\"^3S\",536870913]],[\"^3R\",[39,\"^3C\",\"bNv\",536870913]],[\"^3R\",[39,\"^3G\",33,536870913]],[\"^3R\",[39,\"^38\",33,536870913]],[\"^3R\",[39,\"^2R\",\"Canceled\",536870913]],[\"^3R\",[39,\"^3<\",\"closed value\",536870913]],[\"^3R\",[39,\"^1G\",1727187033525,536870913]],[\"^3R\",[39,\"^1A\",\"~u00000002-1217-7438-9000-000000000000\",536870913]],[\"^3R\",[39,\"^7\",\"^1:\",536870913]],[\"^3R\",[39,\"^18\",true,536870913]],[\"^3R\",[39,\"^2J\",33,536870913]],[\"^3R\",[39,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"Cancelled\"],536870913]],[\"^3R\",[40,\"^29\",1727187033525,536870913]],[\"^3R\",[40,\"^2O\",\"^3S\",536870913]],[\"^3R\",[40,\"^3H\",\"priority\",536870913]],[\"^3R\",[40,\"^3C\",\"bNw\",536870913]],[\"^3R\",[40,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3Y\",true,\"^4:\",\"^4;\"],536870913]],[\"^3R\",[40,\"^2R\",\"Priority\",536870913]],[\"^3R\",[40,\"^3<\",\"property\",536870913]],[\"^3R\",[40,\"^1G\",1727187033525,536870913]],[\"^3R\",[40,\"^1A\",\"~u00000002-1714-7859-9500-000000000000\",536870913]],[\"^3R\",[40,\"^@\",\"^A\",536870913]],[\"^3R\",[40,\"^7\",\"^1@\",536870913]],[\"^3R\",[40,\"^?\",true,536870913]],[\"^3R\",[40,\"^J\",\"^K\",536870913]],[\"^3R\",[40,\"^18\",true,536870913]],[\"^3R\",[41,\"^20\",40,536870913]],[\"^3R\",[41,\"^29\",1727187033525,536870913]],[\"^3R\",[41,\"^2O\",\"^3S\",536870913]],[\"^3R\",[41,\"^3C\",\"bNx\",536870913]],[\"^3R\",[41,\"^3G\",40,536870913]],[\"^3R\",[41,\"^38\",40,536870913]],[\"^3R\",[41,\"^2R\",\"Low\",536870913]],[\"^3R\",[41,\"^3<\",\"closed value\",536870913]],[\"^3R\",[41,\"^1G\",1727187033525,536870913]],[\"^3R\",[41,\"^1A\",\"~u00000002-8891-7452-4000-000000000000\",536870913]],[\"^3R\",[41,\"^7\",\"^U\",536870913]],[\"^3R\",[41,\"^18\",true,536870913]],[\"^3R\",[41,\"^2J\",40,536870913]],[\"^3R\",[41,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"priorityLvlLow\"],536870913]],[\"^3R\",[42,\"^20\",40,536870913]],[\"^3R\",[42,\"^29\",1727187033525,536870913]],[\"^3R\",[42,\"^2O\",\"^3S\",536870913]],[\"^3R\",[42,\"^3C\",\"bNy\",536870913]],[\"^3R\",[42,\"^3G\",40,536870913]],[\"^3R\",[42,\"^38\",40,536870913]],[\"^3R\",[42,\"^2R\",\"Medium\",536870913]],[\"^3R\",[42,\"^3<\",\"closed value\",536870913]],[\"^3R\",[42,\"^1G\",1727187033525,536870913]],[\"^3R\",[42,\"^1A\",\"~u00000002-4650-7295-0000-000000000000\",536870913]],[\"^3R\",[42,\"^7\",\"^1L\",536870913]],[\"^3R\",[42,\"^18\",true,536870913]],[\"^3R\",[42,\"^2J\",40,536870913]],[\"^3R\",[42,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"priorityLvlMedium\"],536870913]],[\"^3R\",[43,\"^20\",40,536870913]],[\"^3R\",[43,\"^29\",1727187033525,536870913]],[\"^3R\",[43,\"^2O\",\"^3S\",536870913]],[\"^3R\",[43,\"^3C\",\"bNz\",536870913]],[\"^3R\",[43,\"^3G\",40,536870913]],[\"^3R\",[43,\"^38\",40,536870913]],[\"^3R\",[43,\"^2R\",\"High\",536870913]],[\"^3R\",[43,\"^3<\",\"closed value\",536870913]],[\"^3R\",[43,\"^1G\",1727187033525,536870913]],[\"^3R\",[43,\"^1A\",\"~u00000002-1281-2351-0000-000000000000\",536870913]],[\"^3R\",[43,\"^7\",\"^W\",536870913]],[\"^3R\",[43,\"^18\",true,536870913]],[\"^3R\",[43,\"^2J\",40,536870913]],[\"^3R\",[43,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"priorityLvlHigh\"],536870913]],[\"^3R\",[44,\"^20\",40,536870913]],[\"^3R\",[44,\"^29\",1727187033525,536870913]],[\"^3R\",[44,\"^2O\",\"^3S\",536870913]],[\"^3R\",[44,\"^3C\",\"bO0\",536870913]],[\"^3R\",[44,\"^3G\",40,536870913]],[\"^3R\",[44,\"^38\",40,536870913]],[\"^3R\",[44,\"^2R\",\"Urgent\",536870913]],[\"^3R\",[44,\"^3<\",\"closed value\",536870913]],[\"^3R\",[44,\"^1G\",1727187033525,536870913]],[\"^3R\",[44,\"^1A\",\"~u00000002-4458-8138-1000-000000000000\",536870913]],[\"^3R\",[44,\"^7\",\"^[\",536870913]],[\"^3R\",[44,\"^18\",true,536870913]],[\"^3R\",[44,\"^2J\",40,536870913]],[\"^3R\",[44,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"priorityLvlUrgent\"],536870913]],[\"^3R\",[45,\"^29\",1727187033525,536870913]],[\"^3R\",[45,\"^2O\",\"^3S\",536870913]],[\"^3R\",[45,\"^3H\",\"deadline\",536870913]],[\"^3R\",[45,\"^3C\",\"bO1\",536870913]],[\"^3R\",[45,\"^2B\",[\"^ \",\"^3T\",\"~:date\",\"^3Y\",true,\"^4:\",\"~:block-below\"],536870913]],[\"^3R\",[45,\"^2R\",\"Deadline\",536870913]],[\"^3R\",[45,\"^3<\",\"property\",536870913]],[\"^3R\",[45,\"^1G\",1727187033525,536870913]],[\"^3R\",[45,\"^1A\",\"~u00000002-2149-5604-4000-000000000000\",536870913]],[\"^3R\",[45,\"^@\",\"^A\",536870913]],[\"^3R\",[45,\"^7\",\"^1[\",536870913]],[\"^3R\",[45,\"^?\",true,536870913]],[\"^3R\",[45,\"^J\",\"^K\",536870913]],[\"^3R\",[45,\"^18\",true,536870913]],[\"^3R\",[46,\"^29\",1727187033526,536870913]],[\"^3R\",[46,\"^2O\",\"^3S\",536870913]],[\"^3R\",[46,\"^3H\",\"icon\",536870913]],[\"^3R\",[46,\"^3C\",\"bO2\",536870913]],[\"^3R\",[46,\"^2B\",[\"^ \",\"^3T\",\"^48\"],536870913]],[\"^3R\",[46,\"^2R\",\"Icon\",536870913]],[\"^3R\",[46,\"^3<\",\"property\",536870913]],[\"^3R\",[46,\"^1G\",1727187033526,536870913]],[\"^3R\",[46,\"^1A\",\"~u00000002-5891-2328-5000-000000000000\",536870913]],[\"^3R\",[46,\"^@\",\"^A\",536870913]],[\"^3R\",[46,\"^7\",\"^25\",536870913]],[\"^3R\",[46,\"^?\",true,536870913]],[\"^3R\",[46,\"^18\",true,536870913]],[\"^3R\",[47,\"^29\",1727187033526,536870913]],[\"^3R\",[47,\"^2O\",\"^3S\",536870913]],[\"^3R\",[47,\"^3H\",\"public\",536870913]],[\"^3R\",[47,\"^3C\",\"bO3\",536870913]],[\"^3R\",[47,\"^2B\",[\"^ \",\"^3T\",\"^3U\",\"^3V\",true,\"^3X\",\"^3W\",\"^3Y\",true],536870913]],[\"^3R\",[47,\"^2R\",\"public\",536870913]],[\"^3R\",[47,\"^3<\",\"property\",536870913]],[\"^3R\",[47,\"^1G\",1727187033526,536870913]],[\"^3R\",[47,\"^1A\",\"~u00000002-1705-3327-6500-000000000000\",536870913]],[\"^3R\",[47,\"^@\",\"^A\",536870913]],[\"^3R\",[47,\"^7\",\"^Q\",536870913]],[\"^3R\",[47,\"^?\",true,536870913]],[\"^3R\",[47,\"^18\",true,536870913]],[\"^3R\",[48,\"^29\",1727187033526,536870913]],[\"^3R\",[48,\"^2O\",\"^3S\",536870913]],[\"^3R\",[48,\"^3H\",\"exclude-from-graph-view\",536870913]],[\"^3R\",[48,\"^3C\",\"bO4\",536870913]],[\"^3R\",[48,\"^2B\",[\"^ \",\"^3T\",\"^3U\",\"^3V\",true,\"^3X\",\"^3W\",\"^3Y\",true],536870913]],[\"^3R\",[48,\"^2R\",\"exclude-from-graph-view\",536870913]],[\"^3R\",[48,\"^3<\",\"property\",536870913]],[\"^3R\",[48,\"^1G\",1727187033526,536870913]],[\"^3R\",[48,\"^1A\",\"~u00000002-4524-3306-5000-000000000000\",536870913]],[\"^3R\",[48,\"^@\",\"^A\",536870913]],[\"^3R\",[48,\"^7\",\"^2@\",536870913]],[\"^3R\",[48,\"^?\",true,536870913]],[\"^3R\",[48,\"^18\",true,536870913]],[\"^3R\",[49,\"^29\",1727187033526,536870913]],[\"^3R\",[49,\"^2O\",\"^3S\",536870913]],[\"^3R\",[49,\"^3H\",\"description\",536870913]],[\"^3R\",[49,\"^3C\",\"bO5\",536870913]],[\"^3R\",[49,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3Y\",true],536870913]],[\"^3R\",[49,\"^2R\",\"Description\",536870913]],[\"^3R\",[49,\"^3<\",\"property\",536870913]],[\"^3R\",[49,\"^1G\",1727187033526,536870913]],[\"^3R\",[49,\"^1A\",\"~u00000002-3362-3620-0000-000000000000\",536870913]],[\"^3R\",[49,\"^@\",\"^A\",536870913]],[\"^3R\",[49,\"^7\",\"^2E\",536870913]],[\"^3R\",[49,\"^?\",true,536870913]],[\"^3R\",[49,\"^J\",\"^K\",536870913]],[\"^3R\",[49,\"^18\",true,536870913]],[\"^3R\",[50,\"^29\",1727187033526,536870913]],[\"^3R\",[50,\"^2O\",\"^3S\",536870913]],[\"^3R\",[50,\"^3H\",\"view type\",536870913]],[\"^3R\",[50,\"^3C\",\"bO6\",536870913]],[\"^3R\",[50,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3Y\",false,\"^3V\",true],536870913]],[\"^3R\",[50,\"^2R\",\"View Type\",536870913]],[\"^3R\",[50,\"^3<\",\"property\",536870913]],[\"^3R\",[50,\"^1G\",1727187033526,536870913]],[\"^3R\",[50,\"^1A\",\"~u00000002-2182-3760-7000-000000000000\",536870913]],[\"^3R\",[50,\"^@\",\"^A\",536870913]],[\"^3R\",[50,\"^7\",\"^1=\",536870913]],[\"^3R\",[50,\"^?\",true,536870913]],[\"^3R\",[50,\"^J\",\"^K\",536870913]],[\"^3R\",[50,\"^18\",true,536870913]],[\"^3R\",[51,\"^20\",50,536870913]],[\"^3R\",[51,\"^29\",1727187033526,536870913]],[\"^3R\",[51,\"^2O\",\"^3S\",536870913]],[\"^3R\",[51,\"^3C\",\"bO7\",536870913]],[\"^3R\",[51,\"^3G\",50,536870913]],[\"^3R\",[51,\"^38\",50,536870913]],[\"^3R\",[51,\"^2R\",\"Table View\",536870913]],[\"^3R\",[51,\"^3<\",\"closed value\",536870913]],[\"^3R\",[51,\"^1G\",1727187033526,536870913]],[\"^3R\",[51,\"^1A\",\"~u00000002-1942-5424-0000-000000000000\",536870913]],[\"^3R\",[51,\"^7\",\"^6\",536870913]],[\"^3R\",[51,\"^18\",true,536870913]],[\"^3R\",[51,\"^2J\",50,536870913]],[\"^3R\",[52,\"^20\",50,536870913]],[\"^3R\",[52,\"^29\",1727187033526,536870913]],[\"^3R\",[52,\"^2O\",\"^3S\",536870913]],[\"^3R\",[52,\"^3C\",\"bO8\",536870913]],[\"^3R\",[52,\"^3G\",50,536870913]],[\"^3R\",[52,\"^38\",50,536870913]],[\"^3R\",[52,\"^2R\",\"List View\",536870913]],[\"^3R\",[52,\"^3<\",\"closed value\",536870913]],[\"^3R\",[52,\"^1G\",1727187033526,536870913]],[\"^3R\",[52,\"^1A\",\"~u00000002-1164-8285-0200-000000000000\",536870913]],[\"^3R\",[52,\"^7\",\"^1M\",536870913]],[\"^3R\",[52,\"^18\",true,536870913]],[\"^3R\",[52,\"^2J\",50,536870913]],[\"^3R\",[53,\"^29\",1727187033526,536870913]],[\"^3R\",[53,\"^2O\",\"^3S\",536870913]],[\"^3R\",[53,\"^3H\",\"sorting\",536870913]],[\"^3R\",[53,\"^3C\",\"bO9\",536870913]],[\"^3R\",[53,\"^2B\",[\"^ \",\"^3T\",\"~:coll\",\"^3V\",true,\"^3Y\",false],536870913]],[\"^3R\",[53,\"^2R\",\"sorting\",536870913]],[\"^3R\",[53,\"^3<\",\"property\",536870913]],[\"^3R\",[53,\"^1G\",1727187033526,536870913]],[\"^3R\",[53,\"^1A\",\"~u00000002-2081-0259-4000-000000000000\",536870913]],[\"^3R\",[53,\"^@\",\"^A\",536870913]],[\"^3R\",[53,\"^7\",\"^L\",536870913]],[\"^3R\",[53,\"^?\",true,536870913]],[\"^3R\",[53,\"^18\",true,536870913]],[\"^3R\",[54,\"^29\",1727187033526,536870913]],[\"^3R\",[54,\"^2O\",\"^3S\",536870913]],[\"^3R\",[54,\"^3H\",\"filters\",536870913]],[\"^3R\",[54,\"^3C\",\"bOA\",536870913]],[\"^3R\",[54,\"^2B\",[\"^ \",\"^3T\",\"^4@\",\"^3V\",true,\"^3Y\",false],536870913]],[\"^3R\",[54,\"^2R\",\"filters\",536870913]],[\"^3R\",[54,\"^3<\",\"property\",536870913]],[\"^3R\",[54,\"^1G\",1727187033526,536870913]],[\"^3R\",[54,\"^1A\",\"~u00000002-1702-3936-3300-000000000000\",536870913]],[\"^3R\",[54,\"^@\",\"^A\",536870913]],[\"^3R\",[54,\"^7\",\"^2Y\",536870913]],[\"^3R\",[54,\"^?\",true,536870913]],[\"^3R\",[54,\"^18\",true,536870913]],[\"^3R\",[55,\"^29\",1727187033526,536870913]],[\"^3R\",[55,\"^2O\",\"^3S\",536870913]],[\"^3R\",[55,\"^3H\",\"hidden-columns\",536870913]],[\"^3R\",[55,\"^3C\",\"bOB\",536870913]],[\"^3R\",[55,\"^2B\",[\"^ \",\"^3T\",\"^46\",\"^3V\",true,\"^3Y\",false],536870913]],[\"^3R\",[55,\"^2R\",\"hidden-columns\",536870913]],[\"^3R\",[55,\"^3<\",\"property\",536870913]],[\"^3R\",[55,\"^1G\",1727187033526,536870913]],[\"^3R\",[55,\"^1A\",\"~u00000002-9750-5719-2000-000000000000\",536870913]],[\"^3R\",[55,\"^@\",\"^13\",536870913]],[\"^3R\",[55,\"^7\",\"^1D\",536870913]],[\"^3R\",[55,\"^?\",true,536870913]],[\"^3R\",[55,\"^18\",true,536870913]],[\"^3R\",[56,\"^29\",1727187033526,536870913]],[\"^3R\",[56,\"^2O\",\"^3S\",536870913]],[\"^3R\",[56,\"^3H\",\"ordered-columns\",536870913]],[\"^3R\",[56,\"^3C\",\"bOC\",536870913]],[\"^3R\",[56,\"^2B\",[\"^ \",\"^3T\",\"^4@\",\"^3V\",true,\"^3Y\",false],536870913]],[\"^3R\",[56,\"^2R\",\"ordered-columns\",536870913]],[\"^3R\",[56,\"^3<\",\"property\",536870913]],[\"^3R\",[56,\"^1G\",1727187033526,536870913]],[\"^3R\",[56,\"^1A\",\"~u00000002-1485-5871-0000-000000000000\",536870913]],[\"^3R\",[56,\"^@\",\"^A\",536870913]],[\"^3R\",[56,\"^7\",\"^35\",536870913]],[\"^3R\",[56,\"^?\",true,536870913]],[\"^3R\",[56,\"^18\",true,536870913]],[\"^3R\",[57,\"^29\",1727187033526,536870913]],[\"^3R\",[57,\"^2O\",\"^3S\",536870913]],[\"^3R\",[57,\"^3H\",\"sized-columns\",536870913]],[\"^3R\",[57,\"^3C\",\"bOD\",536870913]],[\"^3R\",[57,\"^2B\",[\"^ \",\"^3T\",\"^48\",\"^3V\",true,\"^3Y\",false],536870913]],[\"^3R\",[57,\"^2R\",\"sized-columns\",536870913]],[\"^3R\",[57,\"^3<\",\"property\",536870913]],[\"^3R\",[57,\"^1G\",1727187033526,536870913]],[\"^3R\",[57,\"^1A\",\"~u00000002-1675-5105-5500-000000000000\",536870913]],[\"^3R\",[57,\"^@\",\"^A\",536870913]],[\"^3R\",[57,\"^7\",\"^11\",536870913]],[\"^3R\",[57,\"^?\",true,536870913]],[\"^3R\",[57,\"^18\",true,536870913]],[\"^3R\",[58,\"^29\",1727187033526,536870913]],[\"^3R\",[58,\"^2O\",\"^3S\",536870913]],[\"^3R\",[58,\"^3H\",\"view-for\",536870913]],[\"^3R\",[58,\"^3C\",\"bOE\",536870913]],[\"^3R\",[58,\"^2B\",[\"^ \",\"^3T\",\"^3[\",\"^3V\",true,\"^3Y\",false],536870913]],[\"^3R\",[58,\"^2R\",\"view-for\",536870913]],[\"^3R\",[58,\"^3<\",\"property\",536870913]],[\"^3R\",[58,\"^1G\",1727187033526,536870913]],[\"^3R\",[58,\"^1A\",\"~u00000002-3627-4319-0000-000000000000\",536870913]],[\"^3R\",[58,\"^@\",\"^A\",536870913]],[\"^3R\",[58,\"^7\",\"^2H\",536870913]],[\"^3R\",[58,\"^?\",true,536870913]],[\"^3R\",[58,\"^J\",\"^K\",536870913]],[\"^3R\",[58,\"^18\",true,536870913]],[\"^3R\",[59,\"^29\",1727187033526,536870913]],[\"^3R\",[59,\"^2O\",\"^3S\",536870913]],[\"^3R\",[59,\"^3H\",\"remote-metadata\",536870913]],[\"^3R\",[59,\"^3C\",\"bOF\",536870913]],[\"^3R\",[59,\"^2B\",[\"^ \",\"^3T\",\"^48\",\"^3V\",true,\"^3Y\",false],536870913]],[\"^3R\",[59,\"^2R\",\"remote-metadata\",536870913]],[\"^3R\",[59,\"^3<\",\"property\",536870913]],[\"^3R\",[59,\"^1G\",1727187033526,536870913]],[\"^3R\",[59,\"^1A\",\"~u00000002-9907-5046-9000-000000000000\",536870913]],[\"^3R\",[59,\"^@\",\"^A\",536870913]],[\"^3R\",[59,\"^7\",\"^3B\",536870913]],[\"^3R\",[59,\"^?\",true,536870913]],[\"^3R\",[59,\"^18\",true,536870913]],[\"^3R\",[60,\"^29\",1727187033526,536870913]],[\"^3R\",[60,\"^2O\",\"^3S\",536870913]],[\"^3R\",[60,\"^3H\",\"due\",536870913]],[\"^3R\",[60,\"^3C\",\"bOG\",536870913]],[\"^3R\",[60,\"^2B\",[\"^ \",\"^3T\",\"~:datetime\",\"^3V\",false,\"^3Y\",false],536870913]],[\"^3R\",[60,\"^2R\",\"Due\",536870913]],[\"^3R\",[60,\"^3<\",\"property\",536870913]],[\"^3R\",[60,\"^1G\",1727187033526,536870913]],[\"^3R\",[60,\"^1A\",\"~u00000002-1089-0805-4900-000000000000\",536870913]],[\"^3R\",[60,\"^@\",\"^A\",536870913]],[\"^3R\",[60,\"^7\",\"^3D\",536870913]],[\"^3R\",[60,\"^?\",true,536870913]],[\"^3R\",[60,\"^18\",true,536870913]],[\"^3R\",[61,\"^29\",1727187033526,536870913]],[\"^3R\",[61,\"^2O\",\"^3S\",536870913]],[\"^3R\",[61,\"^3H\",\"state\",536870913]],[\"^3R\",[61,\"^3C\",\"bOH\",536870913]],[\"^3R\",[61,\"^2B\",[\"^ \",\"^3T\",\"^48\",\"^3V\",false,\"^3Y\",false],536870913]],[\"^3R\",[61,\"^2R\",\"State\",536870913]],[\"^3R\",[61,\"^3<\",\"property\",536870913]],[\"^3R\",[61,\"^1G\",1727187033526,536870913]],[\"^3R\",[61,\"^1A\",\"~u00000002-1165-1650-8700-000000000000\",536870913]],[\"^3R\",[61,\"^@\",\"^A\",536870913]],[\"^3R\",[61,\"^7\",\"^>\",536870913]],[\"^3R\",[61,\"^?\",true,536870913]],[\"^3R\",[61,\"^18\",true,536870913]],[\"^3R\",[62,\"^29\",1727187033526,536870913]],[\"^3R\",[62,\"^2O\",\"^3S\",536870913]],[\"^3R\",[62,\"^3H\",\"task\",536870913]],[\"^3R\",[62,\"^2R\",\"Task\",536870913]],[\"^3R\",[62,\"^3<\",\"class\",536870913]],[\"^3R\",[62,\"^1G\",1727187033526,536870913]],[\"^3R\",[62,\"^1A\",\"~u00000002-1282-1814-5700-000000000000\",536870913]],[\"^3R\",[62,\"^7\",\"^2:\",536870913]],[\"^3R\",[62,\"^18\",true,536870913]],[\"^3R\",[62,\"^1J\",6,536870913]],[\"^3R\",[62,\"^1O\",33,536870913]],[\"^3R\",[62,\"^1O\",40,536870913]],[\"^3R\",[62,\"^1O\",45,536870913]],[\"^3R\",[63,\"^29\",1727187033527,536870913]],[\"^3R\",[63,\"^2O\",\"^3S\",536870913]],[\"^3R\",[63,\"^3H\",\"journal\",536870913]],[\"^3R\",[63,\"^2R\",\"Journal\",536870913]],[\"^3R\",[63,\"^3<\",\"class\",536870913]],[\"^3R\",[63,\"^1G\",1727187033527,536870913]],[\"^3R\",[63,\"^1A\",\"~u00000002-1979-7410-8100-000000000000\",536870913]],[\"^3R\",[63,\"^7\",\"^3=\",536870913]],[\"^3R\",[63,\"^18\",true,536870913]],[\"^3R\",[63,\"^1J\",6,536870913]],[\"^3R\",[63,\"^3\",\"MMM do, yyyy\",536870913]],[\"^3R\",[64,\"^29\",1727187033527,536870913]],[\"^3R\",[64,\"^2O\",\"^3S\",536870913]],[\"^3R\",[64,\"^3H\",\"query\",536870913]],[\"^3R\",[64,\"^2R\",\"Query\",536870913]],[\"^3R\",[64,\"^3<\",\"class\",536870913]],[\"^3R\",[64,\"^1G\",1727187033527,536870913]],[\"^3R\",[64,\"^1A\",\"~u00000002-2324-8016-6000-000000000000\",536870913]],[\"^3R\",[64,\"^7\",\"^5\",536870913]],[\"^3R\",[64,\"^18\",true,536870913]],[\"^3R\",[64,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"search\"],536870913]],[\"^3R\",[64,\"^1J\",6,536870913]],[\"^3R\",[64,\"^1O\",13,536870913]],[\"^3R\",[65,\"^29\",1727187033527,536870913]],[\"^3R\",[65,\"^2O\",\"^3S\",536870913]],[\"^3R\",[65,\"^3H\",\"advanced query\",536870913]],[\"^3R\",[65,\"^2R\",\"Advanced query\",536870913]],[\"^3R\",[65,\"^3<\",\"class\",536870913]],[\"^3R\",[65,\"^1G\",1727187033527,536870913]],[\"^3R\",[65,\"^1A\",\"~u00000002-1141-5857-5800-000000000000\",536870913]],[\"^3R\",[65,\"^7\",\"^=\",536870913]],[\"^3R\",[65,\"^18\",true,536870913]],[\"^3R\",[65,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"search\"],536870913]],[\"^3R\",[65,\"^1J\",64,536870913]],[\"^3R\",[66,\"^29\",1727187033527,536870913]],[\"^3R\",[66,\"^2O\",\"^3S\",536870913]],[\"^3R\",[66,\"^3H\",\"card\",536870913]],[\"^3R\",[66,\"^2R\",\"Card\",536870913]],[\"^3R\",[66,\"^3<\",\"class\",536870913]],[\"^3R\",[66,\"^1G\",1727187033527,536870913]],[\"^3R\",[66,\"^1A\",\"~u00000002-1358-2811-0900-000000000000\",536870913]],[\"^3R\",[66,\"^7\",\"^H\",536870913]],[\"^3R\",[66,\"^18\",true,536870913]],[\"^3R\",[66,\"^1J\",6,536870913]],[\"^3R\",[66,\"^1O\",60,536870913]],[\"^3R\",[66,\"^1O\",61,536870913]],[\"^3R\",[67,\"^29\",1727187033527,536870913]],[\"^3R\",[67,\"^2O\",\"^3S\",536870913]],[\"^3R\",[67,\"^3H\",\"cards\",536870913]],[\"^3R\",[67,\"^2R\",\"Cards\",536870913]],[\"^3R\",[67,\"^3<\",\"class\",536870913]],[\"^3R\",[67,\"^1G\",1727187033527,536870913]],[\"^3R\",[67,\"^1A\",\"~u00000002-1284-2651-6700-000000000000\",536870913]],[\"^3R\",[67,\"^7\",\"^P\",536870913]],[\"^3R\",[67,\"^18\",true,536870913]],[\"^3R\",[67,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"search\"],536870913]],[\"^3R\",[67,\"^1J\",64,536870913]],[\"^3R\",[68,\"^1A\",\"~u66f2c859-0e01-4f36-81c2-db5c0eb86adf\",536870913]],[\"^3R\",[68,\"^V\",\"{:meta/version 1\\n\\n ;; Set the preferred format.\\n ;; This is _only_ for file graphs.\\n ;; Available options:\\n ;; - Markdown (default)\\n ;; - Org\\n ;; :preferred-format \\\"Markdown\\\"\\n\\n ;; Set the preferred workflow style.\\n ;; This is _only_ for file graphs.\\n ;; Available options:\\n ;; - :now for NOW/LATER style (default)\\n ;; - :todo for TODO/DOING style\\n ;; Exclude directories/files.\\n ;; This is _only_ for file graphs.\\n ;; Example usage:\\n ;; :hidden [\\\"/archived\\\" \\\"/test.md\\\" \\\"../assets/archived\\\"]\\n ;; Define the default journal page template.\\n ;; Enter the template name between the quotes.\\n :default-templates\\n {:journals \\\"\\\"}\\n\\n ;; Set a custom date format for the journal page title.\\n ;; This is _only_ for file graphs.\\n ;; Default value: \\\"MMM do, yyyy\\\"\\n ;; e.g., \\\"Jan 19th, 2038\\\"\\n ;; Example usage e.g., \\\"Tue 19th, Jan 2038\\\"\\n ;; :journal/page-title-format \\\"EEE do, MMM yyyy\\\"\\n\\n ;; Specify the journal filename format using a valid date format string.\\n ;; !Warning:\\n ;; This configuration is not retroactive and affects only new journals.\\n ;; To show old journal files in the app, manually rename the files in the\\n ;; journal directory to match the new format.\\n ;; Default value: \\\"yyyy_MM_dd\\\"\\n ;; :journal/file-name-format \\\"yyyy_MM_dd\\\"\\n\\n ;; Enable tooltip preview on hover.\\n ;; Default value: true\\n :ui/enable-tooltip? true\\n\\n ;; Display brackets [[]] around page references.\\n ;; Default value: true\\n ;; :ui/show-brackets? true\\n\\n ;; Display all lines of a block when referencing ((block)).\\n ;; Default value: false\\n :ui/show-full-blocks? false\\n\\n ;; Automatically expand block references when zooming in.\\n ;; Default value: true\\n :ui/auto-expand-block-refs? true\\n\\n ;; Hide empty block properties\\n ;; This is _only_ for DB graphs.\\n ;; Default value: false\\n ;; :ui/hide-empty-properties? false\\n\\n ;; Disable accent marks when searching.\\n ;; After changing this setting, rebuild the search index by pressing (^C ^S).\\n ;; Default value: true\\n :feature/enable-search-remove-accents? true\\n\\n ;; Enable journals.\\n ;; Default value: true\\n ;; :feature/enable-journals? true\\n\\n ;; Enable flashcards.\\n ;; Default value: true\\n ;; :feature/enable-flashcards? true\\n\\n ;; Enable whiteboards.\\n ;; Default value: true\\n ;; :feature/enable-whiteboards? true\\n\\n ;; Disable the journal's built-in 'Scheduled tasks and deadlines' query.\\n ;; Default value: false\\n ;; :feature/disable-scheduled-and-deadline-query? false\\n\\n ;; Specify the number of days displayed in the future for\\n ;; the 'scheduled tasks and deadlines' query.\\n ;; Example usage:\\n ;; Display all scheduled and deadline blocks for the next 14 days:\\n ;; :scheduled/future-days 14\\n ;; Default value: 7\\n ;; :scheduled/future-days 7\\n\\n ;; Specify the first day of the week.\\n ;; Available options:\\n ;; - integer from 0 to 6 (Monday to Sunday)\\n ;; Default value: 6 (Sunday)\\n :start-of-week 6\\n\\n ;; Specify a custom CSS import.\\n ;; This option takes precedence over the local `logseq/custom.css` file.\\n ;; Example usage:\\n ;; :custom-css-url \\\"@import url('https://cdn.jsdelivr.net/gh/dracula/logseq@master/custom.css');\\\"\\n\\n ;; Specify a custom JS import.\\n ;; This option takes precedence over the local `logseq/custom.js` file.\\n ;; Example usage:\\n ;; :custom-js-url \\\"https://cdn.logseq.com/custom.js\\\"\\n\\n ;; Set bullet indentation when exporting\\n ;; Available options:\\n ;; - `:eight-spaces` as eight spaces\\n ;; - `:four-spaces` as four spaces\\n ;; - `:two-spaces` as two spaces\\n ;; - `:tab` as a tab character (default)\\n ;; :export/bullet-indentation :tab\\n\\n ;; Publish all pages within the Graph\\n ;; Regardless of whether individual pages have been marked as public.\\n ;; Default value: false\\n ;; :publishing/all-pages-public? false\\n\\n ;; Define the default home page and sidebar status.\\n ;; If unspecified, the journal page will be loaded on startup and the right sidebar will stay hidden.\\n ;; The `:page` value represents the name of the page displayed at startup.\\n ;; Available options for `:sidebar` are:\\n ;; - \\\"Contents\\\" to display the Contents page in the right sidebar.\\n ;; - A specific page name to display in the right sidebar.\\n ;; - An array of multiple pages, e.g., [\\\"Contents\\\" \\\"Page A\\\" \\\"Page B\\\"].\\n ;; If `:sidebar` remains unset, the right sidebar will stay hidden.\\n ;; Examples:\\n ;; 1. Set \\\"Changelog\\\" as the home page and display \\\"Contents\\\" in the right sidebar:\\n ;; :default-home {:page \\\"Changelog\\\", :sidebar \\\"Contents\\\"}\\n ;; 2. Set \\\"Jun 3rd, 2021\\\" as the home page without the right sidebar:\\n ;; :default-home {:page \\\"Jun 3rd, 2021\\\"}\\n ;; 3. Set \\\"home\\\" as the home page and display multiple pages in the right sidebar:\\n ;; :default-home {:page \\\"home\\\", :sidebar [\\\"Page A\\\" \\\"Page B\\\"]}\\n\\n ;; Set the default location for storing notes.\\n ;; Default value: \\\"pages\\\"\\n ;; :pages-directory \\\"pages\\\"\\n\\n ;; Set the default location for storing journals.\\n ;; Default value: \\\"journals\\\"\\n ;; :journals-directory \\\"journals\\\"\\n\\n ;; Set the default location for storing whiteboards.\\n ;; Default value: \\\"whiteboards\\\"\\n ;; :whiteboards-directory \\\"whiteboards\\\"\\n\\n ;; Enabling this option converts\\n ;; This is _only_ for file graphs.\\n ;; [[Grant Ideas]] to [[file:./grant_ideas.org][Grant Ideas]] for org-mode.\\n ;; For more information, visit https://github.com/logseq/logseq/issues/672\\n ;; :org-mode/insert-file-link? false\\n\\n ;; Configure custom shortcuts.\\n ;; Syntax:\\n ;; 1. + indicates simultaneous key presses, e.g., `Ctrl+Shift+a`.\\n ;; 2. A space between keys represents key chords, e.g., `t s` means\\n ;; pressing `t` followed by `s`.\\n ;; 3. mod refers to `Ctrl` for Windows/Linux and `Command` for Mac.\\n ;; 4. Use false to disable a specific shortcut.\\n ;; 5. You can define multiple bindings for a single action, e.g., [\\\"ctrl+j\\\" \\\"down\\\"].\\n ;; The full list of configurable shortcuts is available at:\\n ;; https://github.com/logseq/logseq/blob/master/src/main/frontend/modules/shortcut/config.cljs\\n ;; Example:\\n ;; :shortcuts\\n ;; {:editor/new-block \\\"enter\\\"\\n ;; :editor/new-line \\\"shift+enter\\\"\\n ;; :editor/insert-link \\\"mod+shift+k\\\"\\n ;; :editor/highlight false\\n ;; :ui/toggle-settings \\\"t s\\\"\\n ;; :editor/up [\\\"ctrl+k\\\" \\\"up\\\"]\\n ;; :editor/down [\\\"ctrl+j\\\" \\\"down\\\"]\\n ;; :editor/left [\\\"ctrl+h\\\" \\\"left\\\"]\\n ;; :editor/right [\\\"ctrl+l\\\" \\\"right\\\"]}\\n :shortcuts {}\\n\\n ;; Configure the behavior of pressing Enter in document mode.\\n ;; if set to true, pressing Enter will create a new block.\\n ;; Default value: false\\n :shortcut/doc-mode-enter-for-new-block? false\\n\\n ;; Block content larger than `block/title-max-length` will not be searchable\\n ;; or editable for performance.\\n ;; Default value: 10000\\n :block/title-max-length 10000\\n\\n ;; Display command documentation on hover.\\n ;; Default value: true\\n :ui/show-command-doc? true\\n\\n ;; Display empty bullet points.\\n ;; Default value: false\\n :ui/show-empty-bullets? false\\n\\n ;; Pre-defined :view function to use with advanced queries.\\n :query/views\\n {:pprint\\n (fn [r] [:pre.code (pprint r)])}\\n\\n ;; Advanced queries `:result-transform` function.\\n ;; Transform the query result before displaying it.\\n ;; Example usage for DB graphs:\\n;; :query/result-transforms\\n;; {:sort-by-priority\\n;; (fn [result] (sort-by (fn [h] (get h :logseq.property/priority \\\"Z\\\")) result))}\\n\\n;; Queries will be displayed at the bottom of today's journal page.\\n;; Example usage:\\n;; :default-queries\\n;; {:journals []}\\n\\n ;; Add custom commands to the command palette\\n ;; Example usage:\\n ;; :commands\\n ;; [\\n ;; [\\\"js\\\" \\\"Javascript\\\"]\\n ;; [\\\"md\\\" \\\"Markdown\\\"]\\n ;; ]\\n :commands []\\n\\n ;; Enable collapsing blocks with titles but no children.\\n ;; By default, only blocks with children can be collapsed.\\n ;; Setting `:outliner/block-title-collapse-enabled?` to true allows collapsing\\n ;; blocks with titles (multiple lines) and content. For example:\\n ;; - block title\\n ;; block content\\n ;; Default value: false\\n :outliner/block-title-collapse-enabled? false\\n\\n ;; Macros replace texts and will make you more productive.\\n ;; Example usage:\\n ;; Change the :macros value below to:\\n ;; {\\\"poem\\\" \\\"Rose is $1, violet's $2. Life's ordered: Org assists you.\\\"}\\n ;; input \\\"{{poem red,blue}}\\\"\\n ;; becomes\\n ;; Rose is red, violet's blue. Life's ordered: Org assists you.\\n :macros {}\\n\\n ;; Configure the default expansion level for linked references.\\n ;; For example, consider the following block hierarchy:\\n ;; - a [[page]] (level 1)\\n ;; - b (level 2)\\n ;; - c (level 3)\\n ;; - d (level 4)\\n ;;\\n ;; With the default value of level 2, block b will be collapsed.\\n ;; If the level's value is set to 3, block c will be collapsed.\\n ;; Default value: 2\\n :ref/default-open-blocks-level 2\\n\\n ;; Configure the threshold for linked references before collapsing.\\n ;; Default value: 100\\n :ref/linked-references-collapsed-threshold 50\\n\\n ;; Graph view configuration.\\n ;; Example usage:\\n ;; :graph/settings\\n ;; {:orphan-pages? true ; Default value: true\\n ;; :builtin-pages? false ; Default value: false\\n ;; :excluded-pages? false ; Default value: false\\n ;; :journal? false} ; Default value: false\\n\\n ;; Graph view configuration.\\n ;; Example usage:\\n ;; :graph/forcesettings\\n ;; {:link-dist 180 ; Default value: 180\\n ;; :charge-strength -600 ; Default value: -600\\n ;; :charge-range 600} ; Default value: 600\\n\\n\\n ;; Favorites to list on the left sidebar\\n ;; This is _only_ for file graphs.\\n ;; Set flashcards interval.\\n ;; Expected value:\\n ;; - Float between 0 and 1\\n ;; higher values result in faster changes to the next review interval.\\n ;; Default value: 0.5\\n ;; :srs/learning-fraction 0.5\\n\\n ;; Set the initial interval after the first successful review of a card.\\n ;; Default value: 4\\n ;; :srs/initial-interval 4\\n\\n ;; Hide specific block properties.\\n ;; Example usage:\\n ;; :block-hidden-properties #{:public :icon}\\n\\n ;; Create a page for all properties.\\n ;; This is _only_ for file graphs.\\n ;; Default value: true\\n;; Properties to exclude from having property pages\\n ;; This is _only_ for file graphs.\\n ;; Example usage:\\n ;; :property-pages/excludelist #{:duration :author}\\n\\n ;; By default, property value separated by commas will not be treated as\\n ;; page references. You can add properties to enable it.\\n ;; This is _only_ for file graphs.\\n ;; Example usage:\\n ;; :property/separated-by-commas #{:alias :tags}\\n\\n ;; Properties that are ignored when parsing property values for references\\n ;; This is _only_ for file graphs.\\n ;; Example usage:\\n ;; :ignored-page-references-keywords #{:author :website}\\n\\n ;; logbook configuration.\\n ;; :logbook/settings\\n ;; {:with-second-support? false ;limit logbook to minutes, seconds will be eliminated\\n ;; :enabled-in-all-blocks true ;display logbook in all blocks after timetracking\\n ;; :enabled-in-timestamped-blocks false ;don't display logbook at all\\n ;; }\\n\\n ;; Mobile photo upload configuration.\\n ;; :mobile/photo\\n ;; {:allow-editing? true\\n ;; :quality 80}\\n\\n ;; Mobile features options\\n ;; Gestures\\n ;; Example usage:\\n ;; :mobile\\n ;; {:gestures/disabled-in-block-with-tags [\\\"kanban\\\"]}\\n\\n ;; Extra CodeMirror options\\n ;; See https://codemirror.net/5/doc/manual.html#config for possible options\\n ;; Example usage:\\n ;; :editor/extra-codemirror-options\\n ;; {:lineWrapping false ; Default value: false\\n ;; :lineNumbers true ; Default value: true\\n ;; :readOnly false} ; Default value: false\\n\\n ;; Enable logical outdenting\\n ;; Default value: false\\n ;; :editor/logical-outdenting? false\\n\\n ;; Prefer pasting the file when text and a file are in the clipboard.\\n ;; Default value: false\\n ;; :editor/preferred-pasting-file? false\\n\\n ;; Quick capture templates for receiving content from other apps.\\n ;; Each template contains three elements {time}, {text} and {url}, which can be auto-expanded\\n ;; by receiving content from other apps. Note: the {} cannot be omitted.\\n ;; - {time}: capture time\\n ;; - {date}: capture date using current date format, use `[[{date}]]` to get a page reference\\n ;; - {text}: text that users selected before sharing.\\n ;; - {url}: URL or assets path for media files stored in Logseq.\\n ;; You can also reorder them or use only one or two of them in the template.\\n ;; You can also insert or format any text in the template, as shown in the following examples.\\n ;; :quick-capture-templates\\n ;; {:text \\\"[[quick capture]] **{time}**: {text} from {url}\\\"\\n ;; :media \\\"[[quick capture]] **{time}**: {url}\\\"}\\n\\n ;; Quick capture options.\\n ;; - insert-today? Insert the capture at the end of today's journal page (boolean).\\n ;; - redirect-page? Redirect to the quick capture page after capturing (boolean).\\n ;; - default-page The default page to capture to if insert-today? is false (string).\\n ;; :quick-capture-options\\n ;; {:insert-today? false ;; Default value: true\\n ;; :redirect-page? false ;; Default value: false\\n ;; :default-page \\\"quick capture\\\"} ;; Default page: \\\"quick capture\\\"\\n\\n ;; File sync options\\n ;; Ignore these files when syncing, regexp is supported.\\n ;; :file-sync/ignore-files []\\n\\n ;; Configure the Enter key behavior for\\n ;; context-aware editing with DWIM (Do What I Mean).\\n ;; context-aware Enter key behavior implies that pressing Enter will\\n ;; have different outcomes based on the context.\\n ;; For instance, pressing Enter within a list generates a new list item,\\n ;; whereas pressing Enter in a block reference opens the referenced block.\\n ;; :dwim/settings\\n ;; {:admonition&src? true ;; Default value: true\\n ;; :markup? false ;; Default value: false\\n ;; :block-ref? true ;; Default value: true\\n ;; :page-ref? true ;; Default value: true\\n ;; :properties? true ;; Default value: true\\n ;; :list? false} ;; Default value: false\\n\\n ;; Configure the escaping method for special characters in page titles.\\n ;; This is _only_ for file graphs.\\n ;; Warning:\\n ;; This is a dangerous operation. To modify the setting,\\n ;; you'll need to manually rename all affected files and\\n ;; re-index them on all clients after synchronization.\\n ;; Incorrect handling may result in messy page titles.\\n ;; Available options:\\n ;; - :triple-lowbar (default)\\n ;; ;use triple underscore `___` for slash `/` in page title\\n ;; ;use Percent-encoding for other invalid characters\\n}\\n\",536870913]],[\"^3R\",[68,\"^8\",\"~m1727187033523\",536870913]],[\"^3R\",[68,\"^23\",\"~m1727187033523\",536870913]],[\"^3R\",[68,\"^3I\",\"logseq/config.edn\",536870913]],[\"^3R\",[69,\"^1A\",\"~u66f2c859-fb71-49ad-b56f-b177b647ed89\",536870913]],[\"^3R\",[69,\"^V\",\"\",536870913]],[\"^3R\",[69,\"^8\",\"~m1727187033523\",536870913]],[\"^3R\",[69,\"^23\",\"~m1727187033523\",536870913]],[\"^3R\",[69,\"^3I\",\"logseq/custom.css\",536870913]],[\"^3R\",[70,\"^1A\",\"~u66f2c859-a95c-4b95-96dc-339b7181e86e\",536870913]],[\"^3R\",[70,\"^V\",\"\",536870913]],[\"^3R\",[70,\"^8\",\"~m1727187033523\",536870913]],[\"^3R\",[70,\"^23\",\"~m1727187033523\",536870913]],[\"^3R\",[70,\"^3I\",\"logseq/custom.js\",536870913]],[\"^3R\",[71,\"^29\",1727187033527,536870913]],[\"^3R\",[71,\"^2O\",\"^3S\",536870913]],[\"^3R\",[71,\"^3H\",\"contents\",536870913]],[\"^3R\",[71,\"^2R\",\"Contents\",536870913]],[\"^3R\",[71,\"^3<\",\"page\",536870913]],[\"^3R\",[71,\"^1G\",1727187033527,536870913]],[\"^3R\",[71,\"^1A\",\"~u66f2c859-d18d-433a-bd24-ab24995cfae1\",536870913]],[\"^3R\",[71,\"^18\",true,536870913]],[\"^3R\",[72,\"^29\",1727187033588,536870914]],[\"^3R\",[72,\"^2O\",\"^3S\",536870914]],[\"^3R\",[72,\"^3H\",\"$$$views\",536870914]],[\"^3R\",[72,\"^2R\",\"$$$views\",536870914]],[\"^3R\",[72,\"^3<\",\"hidden\",536870914]],[\"^3R\",[72,\"^1G\",1727187033588,536870914]],[\"^3R\",[72,\"^1A\",\"~u66f2c859-f1f7-40da-8854-604ef354f7ff\",536870914]],[\"^3R\",[73,\"^29\",1727187033588,536870914]],[\"^3R\",[73,\"^2O\",\"^3S\",536870914]],[\"^3R\",[73,\"^3C\",\"bOI\",536870914]],[\"^3R\",[73,\"^3G\",72,536870914]],[\"^3R\",[73,\"^38\",72,536870914]],[\"^3R\",[73,\"^2R\",\"All Pages Default View\",536870914]],[\"^3R\",[73,\"^1G\",1727187033588,536870914]],[\"^3R\",[73,\"^1A\",\"~u66f2c859-9076-4a30-a788-533c01d02f85\",536870914]],[\"^3R\",[73,\"^18\",true,536870914]],[\"^3R\",[73,\"^2H\",72,536870914]],[\"^3R\",[74,\"^29\",1727187033721,536870915]],[\"^3R\",[74,\"^2O\",\"^3S\",536870915]],[\"^3R\",[74,\"^2L\",20240924,536870915]],[\"^3R\",[74,\"^3H\",\"sep 24th, 2024\",536870915]],[\"^3R\",[74,\"^37\",9,536870918]],[\"^3R\",[74,\"^37\",63,536870918]],[\"^3R\",[74,\"^1R\",9,536870917]],[\"^3R\",[74,\"^1R\",63,536870917]],[\"^3R\",[74,\"^1E\",63,536870915]],[\"^3R\",[74,\"^2R\",\"Sep 24th, 2024\",536870915]],[\"^3R\",[74,\"^C\",536870917,536870918]],[\"^3R\",[74,\"^3<\",\"journal\",536870915]],[\"^3R\",[74,\"^1G\",1727187033721,536870915]],[\"^3R\",[74,\"^1A\",\"~u00000001-2024-0924-0000-000000000000\",536870915]],[\"^3R\",[75,\"^29\",1727187033722,536870915]],[\"^3R\",[75,\"^2O\",\"^3S\",536870915]],[\"^3R\",[75,\"^3C\",\"a0\",536870915]],[\"^3R\",[75,\"^3G\",74,536870915]],[\"^3R\",[75,\"^38\",74,536870915]],[\"^3R\",[75,\"^37\",74,536870918]],[\"^3R\",[75,\"^2R\",\"\",536870915]],[\"^3R\",[75,\"^C\",536870917,536870918]],[\"^3R\",[75,\"^1G\",1727187033722,536870915]],[\"^3R\",[75,\"^1A\",\"~u66f2c859-8d26-4147-b6dc-a7f93fbd3989\",536870915]]]]]]") + "[\"~#datascript/DB\",[\"^ \",\"~:schema\",[\"^ \",\"~i32\",\"~:logseq.property.journal/title-format\",\"~i64\",\"~:logseq.class/Query\",\"~:logseq.property.view/type.table\",[\"^ \",\"~:db/ident\",\"^6\"],\"~:file/created-at\",[\"^ \"],\"~i1\",\"~:logseq.kv/db-type\",\"~i33\",\"~:logseq.property/status\",\"~i65\",\"~:logseq.class/Advanced-Query\",\"~:logseq.property.fsrs/state\",[\"^ \",\"~:db/index\",true,\"~:db/cardinality\",\"~:db.cardinality/one\",\"^7\",\"^>\"],\"~:logseq.kv/graph-initial-schema-version\",[\"^ \",\"^7\",\"^B\"],\"~:block/tx-id\",[\"^ \"],\"~i2\",\"~:logseq.kv/schema-version\",\"~i34\",\"~:logseq.property/status.backlog\",\"~i66\",\"~:logseq.class/Card\",\"~:logseq.property.pdf/file-path\",[\"^ \",\"^?\",true,\"~:db/valueType\",\"~:db.type/ref\",\"^@\",\"^A\",\"^7\",\"^I\"],\"~:logseq.property.table/sorting\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^L\"],\"~i3\",\"^B\",\"~i35\",\"~:logseq.property/status.todo\",\"~i67\",\"~:logseq.class/Cards\",\"~:logseq.property/public\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^Q\"],\"~i4\",\"~:logseq.kv/graph-created-at\",\"~i36\",\"~:logseq.property/status.doing\",\"~:logseq.property/priority.low\",[\"^ \",\"^7\",\"^U\"],\"~:file/content\",[\"^ \"],\"~:logseq.property/priority.high\",[\"^ \",\"^7\",\"^W\"],\"~i5\",\"~:logseq.property/empty-placeholder\",\"~i37\",\"~:logseq.property/status.in-review\",\"~:logseq.property/priority.urgent\",[\"^ \",\"^7\",\"^[\"],\"~:logseq.property/hl-color\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^10\"],\"~:logseq.property.table/sized-columns\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^11\"],\"~:block/alias\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"~:db.cardinality/many\",\"^7\",\"^12\"],\"~i6\",\"~:logseq.class/Root\",\"~i38\",\"~:logseq.property/status.done\",\"~:kv/value\",[\"^ \"],\"~i7\",\"~:logseq.property/built-in?\",\"~i39\",\"~:logseq.property/status.canceled\",\"~:logseq.property.linked-references/includes\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^13\",\"^7\",\"^1;\"],\"~:block/link\",[\"^ \",\"^J\",\"^K\",\"^?\",true],\"~:logseq.property.view/type\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^1=\"],\"~:logseq.property/heading\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^1>\"],\"~i8\",\"^12\",\"~i40\",\"~:logseq.property/priority\",\"~:block/uuid\",[\"^ \",\"~:db/unique\",\"~:db.unique/identity\"],\"~:logseq.property.table/hidden-columns\",[\"^ \",\"^?\",true,\"^@\",\"^13\",\"^7\",\"^1D\"],\"~i9\",\"~:block/tags\",\"~i41\",\"^U\",\"~:block/updated-at\",[\"^ \",\"^?\",true],\"~:asset/uuid\",[\"^ \",\"^1B\",\"^1C\"],\"~i10\",\"~:logseq.property.class/extends\",\"~i42\",\"~:logseq.property/priority.medium\",\"~:logseq.property.view/type.list\",[\"^ \",\"^7\",\"^1M\"],\"^1L\",[\"^ \",\"^7\",\"^1L\"],\"~i11\",\"~:logseq.property.class/properties\",\"~:file/size\",[\"^ \"],\"~i43\",\"^W\",\"~:block/refs\",[\"^ \",\"^J\",\"^K\",\"^@\",\"^13\"],\"^H\",[\"^ \",\"^7\",\"^H\"],\"^1@\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^1@\"],\"~i12\",\"~:logseq.property.class/hide-from-node\",\"~i44\",\"^[\",\"^T\",[\"^ \",\"^7\",\"^T\"],\"^D\",[\"^ \",\"^7\",\"^D\"],\"~:logseq.property.pdf/hl-page\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^1V\"],\"~:logseq.property/hl-type\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^1W\"],\"~i13\",\"~:logseq.property/query\",\"~i45\",\"~:logseq.property/deadline\",\"~:block/closed-value-property\",[\"^ \",\"^J\",\"^K\",\"^@\",\"^13\"],\"^Z\",[\"^ \",\"^7\",\"^Z\"],\"~i14\",\"~:logseq.property/page-tags\",\"~:file/last-modified-at\",[\"^ \"],\"~i46\",\"~:logseq.property/icon\",\"^16\",[\"^ \",\"^7\",\"^16\"],\"^1O\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^13\",\"^7\",\"^1O\"],\"^1:\",[\"^ \",\"^7\",\"^1:\"],\"~i15\",\"~:logseq.property/background-color\",\"~i47\",\"^Q\",\"~:block/created-at\",[\"^ \",\"^?\",true],\"^22\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^13\",\"^7\",\"^22\"],\"^N\",[\"^ \",\"^7\",\"^N\"],\"~:logseq.class/Task\",[\"^ \",\"^7\",\"^2:\"],\"~:block/collapsed?\",[\"^ \"],\"~:logseq.property.tldraw/page\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^2<\"],\"~i16\",\"~:logseq.property/background-image\",\"~i48\",\"~:logseq.property/exclude-from-graph-view\",\"~:logseq.property/value\",[\"^ \"],\"^18\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^18\"],\"~:block/schema\",[\"^ \"],\"~i17\",\"^1>\",\"~i49\",\"~:logseq.property/description\",\"^1T\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^1T\"],\"~:logseq.property.linked-references/excludes\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^13\",\"^7\",\"^2F\"],\"~:logseq.property/ls-type\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^2G\"],\"^P\",[\"^ \",\"^7\",\"^P\"],\"~:logseq.property/view-for\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^2H\"],\"~i18\",\"~:logseq.property/created-from-property\",\"^1Y\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^1Y\"],\"~i50\",\"^1=\",\"^27\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^27\"],\"~:block/journal-day\",[\"^ \",\"^?\",true],\"~i19\",\"^2G\",\"^14\",[\"^ \",\"^7\",\"^14\"],\"~i51\",\"^6\",\"~:block/format\",[\"^ \"],\"^X\",[\"^ \",\"^7\",\"^X\"],\"~i20\",\"^1W\",\"~i52\",\"^1M\",\"^1E\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^13\",\"^7\",\"^1E\"],\"~:block/title\",[\"^ \",\"^?\",true],\"~:logseq.property.tldraw/shape\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^2S\"],\"~:asset/meta\",[\"^ \"],\"^1[\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^1[\"],\"~i21\",\"^10\",\"~i53\",\"^L\",\"^2J\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^2J\"],\"^25\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^25\"],\"~i22\",\"^1V\",\"~i54\",\"~:logseq.property.table/filters\",\"^R\",[\"^ \",\"^7\",\"^R\"],\"~i23\",\"~:logseq.property.pdf/hl-stamp\",\"~i55\",\"^1D\",\"~:logseq.property/order-list-type\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^31\"],\"^2@\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^2@\"],\"~i24\",\"~:logseq.property.pdf/hl-value\",\"~i56\",\"~:logseq.property.table/ordered-columns\",\"^2>\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^2>\"],\"^7\",[\"^ \",\"^1B\",\"^1C\"],\"~:property/schema.classes\",[\"^ \",\"^J\",\"^K\",\"^@\",\"^13\"],\"^2E\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^2E\"],\"~:block/path-refs\",[\"^ \",\"^J\",\"^K\",\"^@\",\"^13\"],\"~:block/parent\",[\"^ \",\"^J\",\"^K\",\"^?\",true],\"~i25\",\"~:logseq.property.pdf/file\",\"~i57\",\"^11\",\"~:block/type\",[\"^ \",\"^?\",true],\"~:logseq.class/Journal\",[\"^ \",\"^7\",\"^3=\"],\"~i26\",\"^I\",\"~i58\",\"^2H\",\"^33\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^33\"],\"^5\",[\"^ \",\"^7\",\"^5\"],\"~i27\",\"^31\",\"~i59\",\"~:logseq.property.asset/remote-metadata\",\"^3B\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^3B\"],\"^2[\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^2[\"],\"~:block/order\",[\"^ \",\"^?\",true],\"^;\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^;\"],\"~:logseq.property.fsrs/due\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^3D\"],\"~i28\",\"^1;\",\"~i60\",\"^3D\",\"~:block/page\",[\"^ \",\"^J\",\"^K\",\"^?\",true],\"~:block/name\",[\"^ \",\"^?\",true],\"^35\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^35\"],\"~:file/path\",[\"^ \",\"^1B\",\"^1C\"],\"~i29\",\"^2F\",\"~i61\",\"^>\",\"^F\",[\"^ \",\"^7\",\"^F\"],\"^1J\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^1J\"],\"~i30\",\"^2<\",\"~i62\",\"^2:\",\"^3:\",[\"^ \",\"^?\",true,\"^J\",\"^K\",\"^@\",\"^A\",\"^7\",\"^3:\"],\"^3\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^3\"],\"^=\",[\"^ \",\"^7\",\"^=\"],\"~i31\",\"^2S\",\"~i63\",\"^3=\",\"^9\",[\"^ \",\"^7\",\"^9\"],\"^2Y\",[\"^ \",\"^?\",true,\"^@\",\"^A\",\"^7\",\"^2Y\"]],\"~:datoms\",[\"~#list\",[[\"~#datascript/Datom\",[1,\"^7\",\"^9\",536870913]],[\"^3R\",[1,\"^17\",\"db\",536870913]],[\"^3R\",[2,\"^7\",\"^D\",536870913]],[\"^3R\",[2,\"^17\",25,536870913]],[\"^3R\",[3,\"^7\",\"^B\",536870913]],[\"^3R\",[3,\"^17\",25,536870913]],[\"^3R\",[4,\"^7\",\"^R\",536870913]],[\"^3R\",[4,\"^17\",1727187033523,536870913]],[\"^3R\",[5,\"^7\",\"^X\",536870913]],[\"^3R\",[6,\"^29\",1727187033526,536870913]],[\"^3R\",[6,\"^2O\",\"~:markdown\",536870913]],[\"^3R\",[6,\"^3H\",\"root tag\",536870913]],[\"^3R\",[6,\"^2R\",\"Root Tag\",536870913]],[\"^3R\",[6,\"^3<\",\"class\",536870913]],[\"^3R\",[6,\"^1G\",1727187033526,536870913]],[\"^3R\",[6,\"^1A\",\"~u00000002-2737-8382-7000-000000000000\",536870913]],[\"^3R\",[6,\"^7\",\"^14\",536870913]],[\"^3R\",[6,\"^18\",true,536870913]],[\"^3R\",[7,\"^29\",1727187033523,536870913]],[\"^3R\",[7,\"^2O\",\"^3S\",536870913]],[\"^3R\",[7,\"^3H\",\"built-in?\",536870913]],[\"^3R\",[7,\"^3C\",\"bNP\",536870913]],[\"^3R\",[7,\"^2B\",[\"^ \",\"~:type\",\"~:checkbox\",\"~:hide?\",true],536870913]],[\"^3R\",[7,\"^2R\",\"built-in?\",536870913]],[\"^3R\",[7,\"^3<\",\"property\",536870913]],[\"^3R\",[7,\"^1G\",1727187033523,536870913]],[\"^3R\",[7,\"^1A\",\"~u00000002-1125-9581-6000-000000000000\",536870913]],[\"^3R\",[7,\"^@\",\"^A\",536870913]],[\"^3R\",[7,\"^7\",\"^18\",536870913]],[\"^3R\",[7,\"^?\",true,536870913]],[\"^3R\",[7,\"^18\",true,536870913]],[\"^3R\",[8,\"^29\",1727187033524,536870913]],[\"^3R\",[8,\"^2O\",\"^3S\",536870913]],[\"^3R\",[8,\"^3H\",\"alias\",536870913]],[\"^3R\",[8,\"^3C\",\"bNQ\",536870913]],[\"^3R\",[8,\"^2B\",[\"^ \",\"^3T\",\"~:page\",\"~:view-context\",\"^3W\",\"~:public?\",true],536870913]],[\"^3R\",[8,\"^2R\",\"Alias\",536870913]],[\"^3R\",[8,\"^3<\",\"property\",536870913]],[\"^3R\",[8,\"^1G\",1727187033524,536870913]],[\"^3R\",[8,\"^1A\",\"~u00000002-2112-6446-9900-000000000000\",536870913]],[\"^3R\",[8,\"^@\",\"^13\",536870913]],[\"^3R\",[8,\"^7\",\"^12\",536870913]],[\"^3R\",[8,\"^?\",true,536870913]],[\"^3R\",[8,\"^J\",\"^K\",536870913]],[\"^3R\",[8,\"^18\",true,536870913]],[\"^3R\",[9,\"^29\",1727187033524,536870913]],[\"^3R\",[9,\"^2O\",\"^3S\",536870913]],[\"^3R\",[9,\"^3H\",\"tags\",536870913]],[\"^3R\",[9,\"^3C\",\"bNR\",536870913]],[\"^3R\",[9,\"^2B\",[\"^ \",\"^3T\",\"~:class\",\"^3Y\",true],536870913]],[\"^3R\",[9,\"^2R\",\"Tags\",536870913]],[\"^3R\",[9,\"^3<\",\"property\",536870913]],[\"^3R\",[9,\"^1G\",1727187033524,536870913]],[\"^3R\",[9,\"^1A\",\"~u00000002-1814-9483-4000-000000000000\",536870913]],[\"^3R\",[9,\"^@\",\"^13\",536870913]],[\"^3R\",[9,\"^7\",\"^1E\",536870913]],[\"^3R\",[9,\"^?\",true,536870913]],[\"^3R\",[9,\"^J\",\"^K\",536870913]],[\"^3R\",[9,\"^18\",true,536870913]],[\"^3R\",[9,\"^36\",6,536870913]],[\"^3R\",[10,\"^29\",1727187033524,536870913]],[\"^3R\",[10,\"^2O\",\"^3S\",536870913]],[\"^3R\",[10,\"^3H\",\"parent\",536870913]],[\"^3R\",[10,\"^3C\",\"bNS\",536870913]],[\"^3R\",[10,\"^2B\",[\"^ \",\"^3T\",\"~:node\",\"^3Y\",true,\"^3X\",\"^3W\"],536870913]],[\"^3R\",[10,\"^2R\",\"Parent\",536870913]],[\"^3R\",[10,\"^3<\",\"property\",536870913]],[\"^3R\",[10,\"^1G\",1727187033524,536870913]],[\"^3R\",[10,\"^1A\",\"~u00000002-1779-8450-9000-000000000000\",536870913]],[\"^3R\",[10,\"^@\",\"^A\",536870913]],[\"^3R\",[10,\"^7\",\"^1J\",536870913]],[\"^3R\",[10,\"^?\",true,536870913]],[\"^3R\",[10,\"^J\",\"^K\",536870913]],[\"^3R\",[10,\"^18\",true,536870913]],[\"^3R\",[11,\"^29\",1727187033524,536870913]],[\"^3R\",[11,\"^2O\",\"^3S\",536870913]],[\"^3R\",[11,\"^3H\",\"tag properties\",536870913]],[\"^3R\",[11,\"^3C\",\"bNT\",536870913]],[\"^3R\",[11,\"^2B\",[\"^ \",\"^3T\",\"~:property\",\"^3Y\",true,\"^3X\",\"~:never\"],536870913]],[\"^3R\",[11,\"^2R\",\"Tag Properties\",536870913]],[\"^3R\",[11,\"^3<\",\"property\",536870913]],[\"^3R\",[11,\"^1G\",1727187033524,536870913]],[\"^3R\",[11,\"^1A\",\"~u00000002-2123-7120-5000-000000000000\",536870913]],[\"^3R\",[11,\"^@\",\"^13\",536870913]],[\"^3R\",[11,\"^7\",\"^1O\",536870913]],[\"^3R\",[11,\"^?\",true,536870913]],[\"^3R\",[11,\"^J\",\"^K\",536870913]],[\"^3R\",[11,\"^18\",true,536870913]],[\"^3R\",[12,\"^29\",1727187033524,536870913]],[\"^3R\",[12,\"^2O\",\"^3S\",536870913]],[\"^3R\",[12,\"^3H\",\"hide from node\",536870913]],[\"^3R\",[12,\"^3C\",\"bNU\",536870913]],[\"^3R\",[12,\"^2B\",[\"^ \",\"^3T\",\"^3U\",\"^3Y\",true,\"^3X\",\"^3Z\"],536870913]],[\"^3R\",[12,\"^2R\",\"Hide from Node\",536870913]],[\"^3R\",[12,\"^3<\",\"property\",536870913]],[\"^3R\",[12,\"^1G\",1727187033524,536870913]],[\"^3R\",[12,\"^1A\",\"~u00000002-2610-3727-0000-000000000000\",536870913]],[\"^3R\",[12,\"^@\",\"^A\",536870913]],[\"^3R\",[12,\"^7\",\"^1T\",536870913]],[\"^3R\",[12,\"^?\",true,536870913]],[\"^3R\",[12,\"^18\",true,536870913]],[\"^3R\",[13,\"^29\",1727187033524,536870913]],[\"^3R\",[13,\"^2O\",\"^3S\",536870913]],[\"^3R\",[13,\"^3H\",\"query\",536870913]],[\"^3R\",[13,\"^3C\",\"bNV\",536870913]],[\"^3R\",[13,\"^2B\",[\"^ \",\"^3T\",\"~:default\",\"^3Y\",true,\"^3X\",\"~:block\"],536870913]],[\"^3R\",[13,\"^2R\",\"Query\",536870913]],[\"^3R\",[13,\"^3<\",\"property\",536870913]],[\"^3R\",[13,\"^1G\",1727187033524,536870913]],[\"^3R\",[13,\"^1A\",\"~u00000002-9741-4126-0000-000000000000\",536870913]],[\"^3R\",[13,\"^@\",\"^A\",536870913]],[\"^3R\",[13,\"^7\",\"^1Y\",536870913]],[\"^3R\",[13,\"^?\",true,536870913]],[\"^3R\",[13,\"^J\",\"^K\",536870913]],[\"^3R\",[13,\"^18\",true,536870913]],[\"^3R\",[14,\"^29\",1727187033524,536870913]],[\"^3R\",[14,\"^2O\",\"^3S\",536870913]],[\"^3R\",[14,\"^3H\",\"page tags\",536870913]],[\"^3R\",[14,\"^3C\",\"bNW\",536870913]],[\"^3R\",[14,\"^2B\",[\"^ \",\"^3T\",\"^3W\",\"^3Y\",true,\"^3X\",\"^3W\"],536870913]],[\"^3R\",[14,\"^2R\",\"Page Tags\",536870913]],[\"^3R\",[14,\"^3<\",\"property\",536870913]],[\"^3R\",[14,\"^1G\",1727187033524,536870913]],[\"^3R\",[14,\"^1A\",\"~u00000002-2133-5311-8500-000000000000\",536870913]],[\"^3R\",[14,\"^@\",\"^13\",536870913]],[\"^3R\",[14,\"^7\",\"^22\",536870913]],[\"^3R\",[14,\"^?\",true,536870913]],[\"^3R\",[14,\"^J\",\"^K\",536870913]],[\"^3R\",[14,\"^18\",true,536870913]],[\"^3R\",[15,\"^29\",1727187033524,536870913]],[\"^3R\",[15,\"^2O\",\"^3S\",536870913]],[\"^3R\",[15,\"^3H\",\"background-color\",536870913]],[\"^3R\",[15,\"^3C\",\"bNX\",536870913]],[\"^3R\",[15,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3V\",true],536870913]],[\"^3R\",[15,\"^2R\",\"background-color\",536870913]],[\"^3R\",[15,\"^3<\",\"property\",536870913]],[\"^3R\",[15,\"^1G\",1727187033524,536870913]],[\"^3R\",[15,\"^1A\",\"~u00000002-5191-2660-6000-000000000000\",536870913]],[\"^3R\",[15,\"^@\",\"^A\",536870913]],[\"^3R\",[15,\"^7\",\"^27\",536870913]],[\"^3R\",[15,\"^?\",true,536870913]],[\"^3R\",[15,\"^J\",\"^K\",536870913]],[\"^3R\",[15,\"^18\",true,536870913]],[\"^3R\",[16,\"^29\",1727187033524,536870913]],[\"^3R\",[16,\"^2O\",\"^3S\",536870913]],[\"^3R\",[16,\"^3H\",\"background-image\",536870913]],[\"^3R\",[16,\"^3C\",\"bNY\",536870913]],[\"^3R\",[16,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3X\",\"^43\",\"^3Y\",true],536870913]],[\"^3R\",[16,\"^2R\",\"background-image\",536870913]],[\"^3R\",[16,\"^3<\",\"property\",536870913]],[\"^3R\",[16,\"^1G\",1727187033524,536870913]],[\"^3R\",[16,\"^1A\",\"~u00000002-2513-1712-8000-000000000000\",536870913]],[\"^3R\",[16,\"^@\",\"^A\",536870913]],[\"^3R\",[16,\"^7\",\"^2>\",536870913]],[\"^3R\",[16,\"^?\",true,536870913]],[\"^3R\",[16,\"^J\",\"^K\",536870913]],[\"^3R\",[16,\"^18\",true,536870913]],[\"^3R\",[17,\"^29\",1727187033524,536870913]],[\"^3R\",[17,\"^2O\",\"^3S\",536870913]],[\"^3R\",[17,\"^3H\",\"heading\",536870913]],[\"^3R\",[17,\"^3C\",\"bNZ\",536870913]],[\"^3R\",[17,\"^2B\",[\"^ \",\"^3T\",\"~:any\",\"^3V\",true],536870913]],[\"^3R\",[17,\"^2R\",\"heading\",536870913]],[\"^3R\",[17,\"^3<\",\"property\",536870913]],[\"^3R\",[17,\"^1G\",1727187033524,536870913]],[\"^3R\",[17,\"^1A\",\"~u00000002-1858-7494-1500-000000000000\",536870913]],[\"^3R\",[17,\"^@\",\"^A\",536870913]],[\"^3R\",[17,\"^7\",\"^1>\",536870913]],[\"^3R\",[17,\"^?\",true,536870913]],[\"^3R\",[17,\"^18\",true,536870913]],[\"^3R\",[18,\"^29\",1727187033524,536870913]],[\"^3R\",[18,\"^2O\",\"^3S\",536870913]],[\"^3R\",[18,\"^3H\",\"created-from-property\",536870913]],[\"^3R\",[18,\"^3C\",\"bNa\",536870913]],[\"^3R\",[18,\"^2B\",[\"^ \",\"^3T\",\"~:entity\",\"^3V\",true],536870913]],[\"^3R\",[18,\"^2R\",\"created-from-property\",536870913]],[\"^3R\",[18,\"^3<\",\"property\",536870913]],[\"^3R\",[18,\"^1G\",1727187033524,536870913]],[\"^3R\",[18,\"^1A\",\"~u00000002-8618-9226-7000-000000000000\",536870913]],[\"^3R\",[18,\"^@\",\"^A\",536870913]],[\"^3R\",[18,\"^7\",\"^2J\",536870913]],[\"^3R\",[18,\"^?\",true,536870913]],[\"^3R\",[18,\"^J\",\"^K\",536870913]],[\"^3R\",[18,\"^18\",true,536870913]],[\"^3R\",[19,\"^29\",1727187033524,536870913]],[\"^3R\",[19,\"^2O\",\"^3S\",536870913]],[\"^3R\",[19,\"^3H\",\"ls-type\",536870913]],[\"^3R\",[19,\"^3C\",\"bNb\",536870913]],[\"^3R\",[19,\"^2B\",[\"^ \",\"^3T\",\"~:keyword\",\"^3V\",true],536870913]],[\"^3R\",[19,\"^2R\",\"ls-type\",536870913]],[\"^3R\",[19,\"^3<\",\"property\",536870913]],[\"^3R\",[19,\"^1G\",1727187033524,536870913]],[\"^3R\",[19,\"^1A\",\"~u00000002-3269-7934-5000-000000000000\",536870913]],[\"^3R\",[19,\"^@\",\"^A\",536870913]],[\"^3R\",[19,\"^7\",\"^2G\",536870913]],[\"^3R\",[19,\"^?\",true,536870913]],[\"^3R\",[19,\"^18\",true,536870913]],[\"^3R\",[20,\"^29\",1727187033524,536870913]],[\"^3R\",[20,\"^2O\",\"^3S\",536870913]],[\"^3R\",[20,\"^3H\",\"hl-type\",536870913]],[\"^3R\",[20,\"^3C\",\"bNc\",536870913]],[\"^3R\",[20,\"^2B\",[\"^ \",\"^3T\",\"^46\",\"^3V\",true],536870913]],[\"^3R\",[20,\"^2R\",\"hl-type\",536870913]],[\"^3R\",[20,\"^3<\",\"property\",536870913]],[\"^3R\",[20,\"^1G\",1727187033524,536870913]],[\"^3R\",[20,\"^1A\",\"~u00000002-2083-0223-8000-000000000000\",536870913]],[\"^3R\",[20,\"^@\",\"^A\",536870913]],[\"^3R\",[20,\"^7\",\"^1W\",536870913]],[\"^3R\",[20,\"^?\",true,536870913]],[\"^3R\",[20,\"^18\",true,536870913]],[\"^3R\",[21,\"^29\",1727187033524,536870913]],[\"^3R\",[21,\"^2O\",\"^3S\",536870913]],[\"^3R\",[21,\"^3H\",\"hl-color\",536870913]],[\"^3R\",[21,\"^3C\",\"bNd\",536870913]],[\"^3R\",[21,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3V\",true],536870913]],[\"^3R\",[21,\"^2R\",\"hl-color\",536870913]],[\"^3R\",[21,\"^3<\",\"property\",536870913]],[\"^3R\",[21,\"^1G\",1727187033524,536870913]],[\"^3R\",[21,\"^1A\",\"~u00000002-2137-2691-4700-000000000000\",536870913]],[\"^3R\",[21,\"^@\",\"^A\",536870913]],[\"^3R\",[21,\"^7\",\"^10\",536870913]],[\"^3R\",[21,\"^?\",true,536870913]],[\"^3R\",[21,\"^J\",\"^K\",536870913]],[\"^3R\",[21,\"^18\",true,536870913]],[\"^3R\",[22,\"^29\",1727187033524,536870913]],[\"^3R\",[22,\"^2O\",\"^3S\",536870913]],[\"^3R\",[22,\"^3H\",\"hl-page\",536870913]],[\"^3R\",[22,\"^3C\",\"bNe\",536870913]],[\"^3R\",[22,\"^2B\",[\"^ \",\"^3T\",\"~:number\",\"^3V\",true],536870913]],[\"^3R\",[22,\"^2R\",\"hl-page\",536870913]],[\"^3R\",[22,\"^3<\",\"property\",536870913]],[\"^3R\",[22,\"^1G\",1727187033524,536870913]],[\"^3R\",[22,\"^1A\",\"~u00000002-7532-8459-6000-000000000000\",536870913]],[\"^3R\",[22,\"^@\",\"^A\",536870913]],[\"^3R\",[22,\"^7\",\"^1V\",536870913]],[\"^3R\",[22,\"^?\",true,536870913]],[\"^3R\",[22,\"^J\",\"^K\",536870913]],[\"^3R\",[22,\"^18\",true,536870913]],[\"^3R\",[23,\"^29\",1727187033524,536870913]],[\"^3R\",[23,\"^2O\",\"^3S\",536870913]],[\"^3R\",[23,\"^3H\",\"hl-stamp\",536870913]],[\"^3R\",[23,\"^3C\",\"bNf\",536870913]],[\"^3R\",[23,\"^2B\",[\"^ \",\"^3T\",\"^47\",\"^3V\",true],536870913]],[\"^3R\",[23,\"^2R\",\"hl-stamp\",536870913]],[\"^3R\",[23,\"^3<\",\"property\",536870913]],[\"^3R\",[23,\"^1G\",1727187033524,536870913]],[\"^3R\",[23,\"^1A\",\"~u00000002-1293-4649-2300-000000000000\",536870913]],[\"^3R\",[23,\"^@\",\"^A\",536870913]],[\"^3R\",[23,\"^7\",\"^2[\",536870913]],[\"^3R\",[23,\"^?\",true,536870913]],[\"^3R\",[23,\"^J\",\"^K\",536870913]],[\"^3R\",[23,\"^18\",true,536870913]],[\"^3R\",[24,\"^29\",1727187033524,536870913]],[\"^3R\",[24,\"^2O\",\"^3S\",536870913]],[\"^3R\",[24,\"^3H\",\"hl-value\",536870913]],[\"^3R\",[24,\"^3C\",\"bNg\",536870913]],[\"^3R\",[24,\"^2B\",[\"^ \",\"^3T\",\"~:map\",\"^3V\",true],536870913]],[\"^3R\",[24,\"^2R\",\"hl-value\",536870913]],[\"^3R\",[24,\"^3<\",\"property\",536870913]],[\"^3R\",[24,\"^1G\",1727187033524,536870913]],[\"^3R\",[24,\"^1A\",\"~u00000002-5458-2940-2000-000000000000\",536870913]],[\"^3R\",[24,\"^@\",\"^A\",536870913]],[\"^3R\",[24,\"^7\",\"^33\",536870913]],[\"^3R\",[24,\"^?\",true,536870913]],[\"^3R\",[24,\"^18\",true,536870913]],[\"^3R\",[25,\"^29\",1727187033525,536870913]],[\"^3R\",[25,\"^2O\",\"^3S\",536870913]],[\"^3R\",[25,\"^3H\",\"file\",536870913]],[\"^3R\",[25,\"^3C\",\"bNh\",536870913]],[\"^3R\",[25,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3V\",true,\"^3Y\",true,\"^3X\",\"^3W\"],536870913]],[\"^3R\",[25,\"^2R\",\"file\",536870913]],[\"^3R\",[25,\"^3<\",\"property\",536870913]],[\"^3R\",[25,\"^1G\",1727187033525,536870913]],[\"^3R\",[25,\"^1A\",\"~u00000002-1681-6464-3400-000000000000\",536870913]],[\"^3R\",[25,\"^@\",\"^A\",536870913]],[\"^3R\",[25,\"^7\",\"^3:\",536870913]],[\"^3R\",[25,\"^?\",true,536870913]],[\"^3R\",[25,\"^J\",\"^K\",536870913]],[\"^3R\",[25,\"^18\",true,536870913]],[\"^3R\",[26,\"^29\",1727187033525,536870913]],[\"^3R\",[26,\"^2O\",\"^3S\",536870913]],[\"^3R\",[26,\"^3H\",\"file-path\",536870913]],[\"^3R\",[26,\"^3C\",\"bNi\",536870913]],[\"^3R\",[26,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3V\",true,\"^3Y\",true,\"^3X\",\"^3W\"],536870913]],[\"^3R\",[26,\"^2R\",\"file-path\",536870913]],[\"^3R\",[26,\"^3<\",\"property\",536870913]],[\"^3R\",[26,\"^1G\",1727187033525,536870913]],[\"^3R\",[26,\"^1A\",\"~u00000002-5663-3568-2000-000000000000\",536870913]],[\"^3R\",[26,\"^@\",\"^A\",536870913]],[\"^3R\",[26,\"^7\",\"^I\",536870913]],[\"^3R\",[26,\"^?\",true,536870913]],[\"^3R\",[26,\"^J\",\"^K\",536870913]],[\"^3R\",[26,\"^18\",true,536870913]],[\"^3R\",[27,\"^29\",1727187033525,536870913]],[\"^3R\",[27,\"^2O\",\"^3S\",536870913]],[\"^3R\",[27,\"^3H\",\"logseq.order-list-type\",536870913]],[\"^3R\",[27,\"^3C\",\"bNj\",536870913]],[\"^3R\",[27,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3V\",true],536870913]],[\"^3R\",[27,\"^2R\",\"logseq.order-list-type\",536870913]],[\"^3R\",[27,\"^3<\",\"property\",536870913]],[\"^3R\",[27,\"^1G\",1727187033525,536870913]],[\"^3R\",[27,\"^1A\",\"~u00000002-6078-1711-1000-000000000000\",536870913]],[\"^3R\",[27,\"^@\",\"^A\",536870913]],[\"^3R\",[27,\"^7\",\"^31\",536870913]],[\"^3R\",[27,\"^?\",true,536870913]],[\"^3R\",[27,\"^J\",\"^K\",536870913]],[\"^3R\",[27,\"^18\",true,536870913]],[\"^3R\",[28,\"^29\",1727187033525,536870913]],[\"^3R\",[28,\"^2O\",\"^3S\",536870913]],[\"^3R\",[28,\"^3H\",\"includes\",536870913]],[\"^3R\",[28,\"^3C\",\"bNk\",536870913]],[\"^3R\",[28,\"^2B\",[\"^ \",\"^3T\",\"^3[\",\"^3V\",true],536870913]],[\"^3R\",[28,\"^2R\",\"includes\",536870913]],[\"^3R\",[28,\"^3<\",\"property\",536870913]],[\"^3R\",[28,\"^1G\",1727187033525,536870913]],[\"^3R\",[28,\"^1A\",\"~u00000002-1680-5777-0300-000000000000\",536870913]],[\"^3R\",[28,\"^@\",\"^13\",536870913]],[\"^3R\",[28,\"^7\",\"^1;\",536870913]],[\"^3R\",[28,\"^?\",true,536870913]],[\"^3R\",[28,\"^J\",\"^K\",536870913]],[\"^3R\",[28,\"^18\",true,536870913]],[\"^3R\",[29,\"^29\",1727187033525,536870913]],[\"^3R\",[29,\"^2O\",\"^3S\",536870913]],[\"^3R\",[29,\"^3H\",\"excludes\",536870913]],[\"^3R\",[29,\"^3C\",\"bNl\",536870913]],[\"^3R\",[29,\"^2B\",[\"^ \",\"^3T\",\"^3[\",\"^3V\",true],536870913]],[\"^3R\",[29,\"^2R\",\"excludes\",536870913]],[\"^3R\",[29,\"^3<\",\"property\",536870913]],[\"^3R\",[29,\"^1G\",1727187033525,536870913]],[\"^3R\",[29,\"^1A\",\"~u00000002-2426-7588-9000-000000000000\",536870913]],[\"^3R\",[29,\"^@\",\"^13\",536870913]],[\"^3R\",[29,\"^7\",\"^2F\",536870913]],[\"^3R\",[29,\"^?\",true,536870913]],[\"^3R\",[29,\"^J\",\"^K\",536870913]],[\"^3R\",[29,\"^18\",true,536870913]],[\"^3R\",[30,\"^29\",1727187033525,536870913]],[\"^3R\",[30,\"^2O\",\"^3S\",536870913]],[\"^3R\",[30,\"^3H\",\"logseq.tldraw.page\",536870913]],[\"^3R\",[30,\"^3C\",\"bNm\",536870913]],[\"^3R\",[30,\"^2B\",[\"^ \",\"^3T\",\"^48\",\"^3V\",true],536870913]],[\"^3R\",[30,\"^2R\",\"logseq.tldraw.page\",536870913]],[\"^3R\",[30,\"^3<\",\"property\",536870913]],[\"^3R\",[30,\"^1G\",1727187033525,536870913]],[\"^3R\",[30,\"^1A\",\"~u00000002-3546-2145-7000-000000000000\",536870913]],[\"^3R\",[30,\"^@\",\"^A\",536870913]],[\"^3R\",[30,\"^7\",\"^2<\",536870913]],[\"^3R\",[30,\"^?\",true,536870913]],[\"^3R\",[30,\"^18\",true,536870913]],[\"^3R\",[31,\"^29\",1727187033525,536870913]],[\"^3R\",[31,\"^2O\",\"^3S\",536870913]],[\"^3R\",[31,\"^3H\",\"logseq.tldraw.shape\",536870913]],[\"^3R\",[31,\"^3C\",\"bNn\",536870913]],[\"^3R\",[31,\"^2B\",[\"^ \",\"^3T\",\"^48\",\"^3V\",true],536870913]],[\"^3R\",[31,\"^2R\",\"logseq.tldraw.shape\",536870913]],[\"^3R\",[31,\"^3<\",\"property\",536870913]],[\"^3R\",[31,\"^1G\",1727187033525,536870913]],[\"^3R\",[31,\"^1A\",\"~u00000002-1313-2454-2000-000000000000\",536870913]],[\"^3R\",[31,\"^@\",\"^A\",536870913]],[\"^3R\",[31,\"^7\",\"^2S\",536870913]],[\"^3R\",[31,\"^?\",true,536870913]],[\"^3R\",[31,\"^18\",true,536870913]],[\"^3R\",[32,\"^29\",1727187033525,536870913]],[\"^3R\",[32,\"^2O\",\"^3S\",536870913]],[\"^3R\",[32,\"^3H\",\"title format\",536870913]],[\"^3R\",[32,\"^3C\",\"bNo\",536870913]],[\"^3R\",[32,\"^2B\",[\"^ \",\"^3T\",\"~:string\",\"^3Y\",false],536870913]],[\"^3R\",[32,\"^2R\",\"Title Format\",536870913]],[\"^3R\",[32,\"^3<\",\"property\",536870913]],[\"^3R\",[32,\"^1G\",1727187033525,536870913]],[\"^3R\",[32,\"^1A\",\"~u00000002-1536-4979-5400-000000000000\",536870913]],[\"^3R\",[32,\"^@\",\"^A\",536870913]],[\"^3R\",[32,\"^7\",\"^3\",536870913]],[\"^3R\",[32,\"^?\",true,536870913]],[\"^3R\",[32,\"^18\",true,536870913]],[\"^3R\",[33,\"^29\",1727187033525,536870913]],[\"^3R\",[33,\"^2O\",\"^3S\",536870913]],[\"^3R\",[33,\"^3H\",\"status\",536870913]],[\"^3R\",[33,\"^3C\",\"bNp\",536870913]],[\"^3R\",[33,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3Y\",true,\"~:position\",\"~:block-left\"],536870913]],[\"^3R\",[33,\"^2R\",\"Status\",536870913]],[\"^3R\",[33,\"^3<\",\"property\",536870913]],[\"^3R\",[33,\"^1G\",1727187033525,536870913]],[\"^3R\",[33,\"^1A\",\"~u00000002-1399-1718-0300-000000000000\",536870913]],[\"^3R\",[33,\"^@\",\"^A\",536870913]],[\"^3R\",[33,\"^7\",\"^;\",536870913]],[\"^3R\",[33,\"^?\",true,536870913]],[\"^3R\",[33,\"^J\",\"^K\",536870913]],[\"^3R\",[33,\"^18\",true,536870913]],[\"^3R\",[34,\"^20\",33,536870913]],[\"^3R\",[34,\"^29\",1727187033525,536870913]],[\"^3R\",[34,\"^2O\",\"^3S\",536870913]],[\"^3R\",[34,\"^3C\",\"bNq\",536870913]],[\"^3R\",[34,\"^3G\",33,536870913]],[\"^3R\",[34,\"^38\",33,536870913]],[\"^3R\",[34,\"^2R\",\"Backlog\",536870913]],[\"^3R\",[34,\"^3<\",\"closed value\",536870913]],[\"^3R\",[34,\"^1G\",1727187033525,536870913]],[\"^3R\",[34,\"^1A\",\"~u00000002-1797-5174-0500-000000000000\",536870913]],[\"^3R\",[34,\"^7\",\"^F\",536870913]],[\"^3R\",[34,\"^18\",true,536870913]],[\"^3R\",[34,\"^2J\",33,536870913]],[\"^3R\",[34,\"^25\",[\"^ \",\"^3T\",\"~:tabler-icon\",\"~:id\",\"Backlog\"],536870913]],[\"^3R\",[35,\"^20\",33,536870913]],[\"^3R\",[35,\"^29\",1727187033525,536870913]],[\"^3R\",[35,\"^2O\",\"^3S\",536870913]],[\"^3R\",[35,\"^3C\",\"bNr\",536870913]],[\"^3R\",[35,\"^3G\",33,536870913]],[\"^3R\",[35,\"^38\",33,536870913]],[\"^3R\",[35,\"^2R\",\"Todo\",536870913]],[\"^3R\",[35,\"^3<\",\"closed value\",536870913]],[\"^3R\",[35,\"^1G\",1727187033525,536870913]],[\"^3R\",[35,\"^1A\",\"~u00000002-1776-1920-4900-000000000000\",536870913]],[\"^3R\",[35,\"^7\",\"^N\",536870913]],[\"^3R\",[35,\"^18\",true,536870913]],[\"^3R\",[35,\"^2J\",33,536870913]],[\"^3R\",[35,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"Todo\"],536870913]],[\"^3R\",[36,\"^20\",33,536870913]],[\"^3R\",[36,\"^29\",1727187033525,536870913]],[\"^3R\",[36,\"^2O\",\"^3S\",536870913]],[\"^3R\",[36,\"^3C\",\"bNs\",536870913]],[\"^3R\",[36,\"^3G\",33,536870913]],[\"^3R\",[36,\"^38\",33,536870913]],[\"^3R\",[36,\"^2R\",\"Doing\",536870913]],[\"^3R\",[36,\"^3<\",\"closed value\",536870913]],[\"^3R\",[36,\"^1G\",1727187033525,536870913]],[\"^3R\",[36,\"^1A\",\"~u00000002-5524-7947-6000-000000000000\",536870913]],[\"^3R\",[36,\"^7\",\"^T\",536870913]],[\"^3R\",[36,\"^18\",true,536870913]],[\"^3R\",[36,\"^2J\",33,536870913]],[\"^3R\",[36,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"InProgress50\"],536870913]],[\"^3R\",[37,\"^20\",33,536870913]],[\"^3R\",[37,\"^29\",1727187033525,536870913]],[\"^3R\",[37,\"^2O\",\"^3S\",536870913]],[\"^3R\",[37,\"^3C\",\"bNt\",536870913]],[\"^3R\",[37,\"^3G\",33,536870913]],[\"^3R\",[37,\"^38\",33,536870913]],[\"^3R\",[37,\"^2R\",\"In Review\",536870913]],[\"^3R\",[37,\"^3<\",\"closed value\",536870913]],[\"^3R\",[37,\"^1G\",1727187033525,536870913]],[\"^3R\",[37,\"^1A\",\"~u00000002-3550-9421-0000-000000000000\",536870913]],[\"^3R\",[37,\"^7\",\"^Z\",536870913]],[\"^3R\",[37,\"^18\",true,536870913]],[\"^3R\",[37,\"^2J\",33,536870913]],[\"^3R\",[37,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"InReview\"],536870913]],[\"^3R\",[38,\"^20\",33,536870913]],[\"^3R\",[38,\"^29\",1727187033525,536870913]],[\"^3R\",[38,\"^2O\",\"^3S\",536870913]],[\"^3R\",[38,\"^3C\",\"bNu\",536870913]],[\"^3R\",[38,\"^3G\",33,536870913]],[\"^3R\",[38,\"^38\",33,536870913]],[\"^3R\",[38,\"^2R\",\"Done\",536870913]],[\"^3R\",[38,\"^3<\",\"closed value\",536870913]],[\"^3R\",[38,\"^1G\",1727187033525,536870913]],[\"^3R\",[38,\"^1A\",\"~u00000002-1430-0577-4000-000000000000\",536870913]],[\"^3R\",[38,\"^7\",\"^16\",536870913]],[\"^3R\",[38,\"^18\",true,536870913]],[\"^3R\",[38,\"^2J\",33,536870913]],[\"^3R\",[38,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"Done\"],536870913]],[\"^3R\",[39,\"^20\",33,536870913]],[\"^3R\",[39,\"^29\",1727187033525,536870913]],[\"^3R\",[39,\"^2O\",\"^3S\",536870913]],[\"^3R\",[39,\"^3C\",\"bNv\",536870913]],[\"^3R\",[39,\"^3G\",33,536870913]],[\"^3R\",[39,\"^38\",33,536870913]],[\"^3R\",[39,\"^2R\",\"Canceled\",536870913]],[\"^3R\",[39,\"^3<\",\"closed value\",536870913]],[\"^3R\",[39,\"^1G\",1727187033525,536870913]],[\"^3R\",[39,\"^1A\",\"~u00000002-1217-7438-9000-000000000000\",536870913]],[\"^3R\",[39,\"^7\",\"^1:\",536870913]],[\"^3R\",[39,\"^18\",true,536870913]],[\"^3R\",[39,\"^2J\",33,536870913]],[\"^3R\",[39,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"Cancelled\"],536870913]],[\"^3R\",[40,\"^29\",1727187033525,536870913]],[\"^3R\",[40,\"^2O\",\"^3S\",536870913]],[\"^3R\",[40,\"^3H\",\"priority\",536870913]],[\"^3R\",[40,\"^3C\",\"bNw\",536870913]],[\"^3R\",[40,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3Y\",true,\"^4:\",\"^4;\"],536870913]],[\"^3R\",[40,\"^2R\",\"Priority\",536870913]],[\"^3R\",[40,\"^3<\",\"property\",536870913]],[\"^3R\",[40,\"^1G\",1727187033525,536870913]],[\"^3R\",[40,\"^1A\",\"~u00000002-1714-7859-9500-000000000000\",536870913]],[\"^3R\",[40,\"^@\",\"^A\",536870913]],[\"^3R\",[40,\"^7\",\"^1@\",536870913]],[\"^3R\",[40,\"^?\",true,536870913]],[\"^3R\",[40,\"^J\",\"^K\",536870913]],[\"^3R\",[40,\"^18\",true,536870913]],[\"^3R\",[41,\"^20\",40,536870913]],[\"^3R\",[41,\"^29\",1727187033525,536870913]],[\"^3R\",[41,\"^2O\",\"^3S\",536870913]],[\"^3R\",[41,\"^3C\",\"bNx\",536870913]],[\"^3R\",[41,\"^3G\",40,536870913]],[\"^3R\",[41,\"^38\",40,536870913]],[\"^3R\",[41,\"^2R\",\"Low\",536870913]],[\"^3R\",[41,\"^3<\",\"closed value\",536870913]],[\"^3R\",[41,\"^1G\",1727187033525,536870913]],[\"^3R\",[41,\"^1A\",\"~u00000002-8891-7452-4000-000000000000\",536870913]],[\"^3R\",[41,\"^7\",\"^U\",536870913]],[\"^3R\",[41,\"^18\",true,536870913]],[\"^3R\",[41,\"^2J\",40,536870913]],[\"^3R\",[41,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"priorityLvlLow\"],536870913]],[\"^3R\",[42,\"^20\",40,536870913]],[\"^3R\",[42,\"^29\",1727187033525,536870913]],[\"^3R\",[42,\"^2O\",\"^3S\",536870913]],[\"^3R\",[42,\"^3C\",\"bNy\",536870913]],[\"^3R\",[42,\"^3G\",40,536870913]],[\"^3R\",[42,\"^38\",40,536870913]],[\"^3R\",[42,\"^2R\",\"Medium\",536870913]],[\"^3R\",[42,\"^3<\",\"closed value\",536870913]],[\"^3R\",[42,\"^1G\",1727187033525,536870913]],[\"^3R\",[42,\"^1A\",\"~u00000002-4650-7295-0000-000000000000\",536870913]],[\"^3R\",[42,\"^7\",\"^1L\",536870913]],[\"^3R\",[42,\"^18\",true,536870913]],[\"^3R\",[42,\"^2J\",40,536870913]],[\"^3R\",[42,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"priorityLvlMedium\"],536870913]],[\"^3R\",[43,\"^20\",40,536870913]],[\"^3R\",[43,\"^29\",1727187033525,536870913]],[\"^3R\",[43,\"^2O\",\"^3S\",536870913]],[\"^3R\",[43,\"^3C\",\"bNz\",536870913]],[\"^3R\",[43,\"^3G\",40,536870913]],[\"^3R\",[43,\"^38\",40,536870913]],[\"^3R\",[43,\"^2R\",\"High\",536870913]],[\"^3R\",[43,\"^3<\",\"closed value\",536870913]],[\"^3R\",[43,\"^1G\",1727187033525,536870913]],[\"^3R\",[43,\"^1A\",\"~u00000002-1281-2351-0000-000000000000\",536870913]],[\"^3R\",[43,\"^7\",\"^W\",536870913]],[\"^3R\",[43,\"^18\",true,536870913]],[\"^3R\",[43,\"^2J\",40,536870913]],[\"^3R\",[43,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"priorityLvlHigh\"],536870913]],[\"^3R\",[44,\"^20\",40,536870913]],[\"^3R\",[44,\"^29\",1727187033525,536870913]],[\"^3R\",[44,\"^2O\",\"^3S\",536870913]],[\"^3R\",[44,\"^3C\",\"bO0\",536870913]],[\"^3R\",[44,\"^3G\",40,536870913]],[\"^3R\",[44,\"^38\",40,536870913]],[\"^3R\",[44,\"^2R\",\"Urgent\",536870913]],[\"^3R\",[44,\"^3<\",\"closed value\",536870913]],[\"^3R\",[44,\"^1G\",1727187033525,536870913]],[\"^3R\",[44,\"^1A\",\"~u00000002-4458-8138-1000-000000000000\",536870913]],[\"^3R\",[44,\"^7\",\"^[\",536870913]],[\"^3R\",[44,\"^18\",true,536870913]],[\"^3R\",[44,\"^2J\",40,536870913]],[\"^3R\",[44,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"priorityLvlUrgent\"],536870913]],[\"^3R\",[45,\"^29\",1727187033525,536870913]],[\"^3R\",[45,\"^2O\",\"^3S\",536870913]],[\"^3R\",[45,\"^3H\",\"deadline\",536870913]],[\"^3R\",[45,\"^3C\",\"bO1\",536870913]],[\"^3R\",[45,\"^2B\",[\"^ \",\"^3T\",\"~:date\",\"^3Y\",true,\"^4:\",\"~:block-below\"],536870913]],[\"^3R\",[45,\"^2R\",\"Deadline\",536870913]],[\"^3R\",[45,\"^3<\",\"property\",536870913]],[\"^3R\",[45,\"^1G\",1727187033525,536870913]],[\"^3R\",[45,\"^1A\",\"~u00000002-2149-5604-4000-000000000000\",536870913]],[\"^3R\",[45,\"^@\",\"^A\",536870913]],[\"^3R\",[45,\"^7\",\"^1[\",536870913]],[\"^3R\",[45,\"^?\",true,536870913]],[\"^3R\",[45,\"^J\",\"^K\",536870913]],[\"^3R\",[45,\"^18\",true,536870913]],[\"^3R\",[46,\"^29\",1727187033526,536870913]],[\"^3R\",[46,\"^2O\",\"^3S\",536870913]],[\"^3R\",[46,\"^3H\",\"icon\",536870913]],[\"^3R\",[46,\"^3C\",\"bO2\",536870913]],[\"^3R\",[46,\"^2B\",[\"^ \",\"^3T\",\"^48\"],536870913]],[\"^3R\",[46,\"^2R\",\"Icon\",536870913]],[\"^3R\",[46,\"^3<\",\"property\",536870913]],[\"^3R\",[46,\"^1G\",1727187033526,536870913]],[\"^3R\",[46,\"^1A\",\"~u00000002-5891-2328-5000-000000000000\",536870913]],[\"^3R\",[46,\"^@\",\"^A\",536870913]],[\"^3R\",[46,\"^7\",\"^25\",536870913]],[\"^3R\",[46,\"^?\",true,536870913]],[\"^3R\",[46,\"^18\",true,536870913]],[\"^3R\",[47,\"^29\",1727187033526,536870913]],[\"^3R\",[47,\"^2O\",\"^3S\",536870913]],[\"^3R\",[47,\"^3H\",\"public\",536870913]],[\"^3R\",[47,\"^3C\",\"bO3\",536870913]],[\"^3R\",[47,\"^2B\",[\"^ \",\"^3T\",\"^3U\",\"^3V\",true,\"^3X\",\"^3W\",\"^3Y\",true],536870913]],[\"^3R\",[47,\"^2R\",\"public\",536870913]],[\"^3R\",[47,\"^3<\",\"property\",536870913]],[\"^3R\",[47,\"^1G\",1727187033526,536870913]],[\"^3R\",[47,\"^1A\",\"~u00000002-1705-3327-6500-000000000000\",536870913]],[\"^3R\",[47,\"^@\",\"^A\",536870913]],[\"^3R\",[47,\"^7\",\"^Q\",536870913]],[\"^3R\",[47,\"^?\",true,536870913]],[\"^3R\",[47,\"^18\",true,536870913]],[\"^3R\",[48,\"^29\",1727187033526,536870913]],[\"^3R\",[48,\"^2O\",\"^3S\",536870913]],[\"^3R\",[48,\"^3H\",\"exclude-from-graph-view\",536870913]],[\"^3R\",[48,\"^3C\",\"bO4\",536870913]],[\"^3R\",[48,\"^2B\",[\"^ \",\"^3T\",\"^3U\",\"^3V\",true,\"^3X\",\"^3W\",\"^3Y\",true],536870913]],[\"^3R\",[48,\"^2R\",\"exclude-from-graph-view\",536870913]],[\"^3R\",[48,\"^3<\",\"property\",536870913]],[\"^3R\",[48,\"^1G\",1727187033526,536870913]],[\"^3R\",[48,\"^1A\",\"~u00000002-4524-3306-5000-000000000000\",536870913]],[\"^3R\",[48,\"^@\",\"^A\",536870913]],[\"^3R\",[48,\"^7\",\"^2@\",536870913]],[\"^3R\",[48,\"^?\",true,536870913]],[\"^3R\",[48,\"^18\",true,536870913]],[\"^3R\",[49,\"^29\",1727187033526,536870913]],[\"^3R\",[49,\"^2O\",\"^3S\",536870913]],[\"^3R\",[49,\"^3H\",\"description\",536870913]],[\"^3R\",[49,\"^3C\",\"bO5\",536870913]],[\"^3R\",[49,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3Y\",true],536870913]],[\"^3R\",[49,\"^2R\",\"Description\",536870913]],[\"^3R\",[49,\"^3<\",\"property\",536870913]],[\"^3R\",[49,\"^1G\",1727187033526,536870913]],[\"^3R\",[49,\"^1A\",\"~u00000002-3362-3620-0000-000000000000\",536870913]],[\"^3R\",[49,\"^@\",\"^A\",536870913]],[\"^3R\",[49,\"^7\",\"^2E\",536870913]],[\"^3R\",[49,\"^?\",true,536870913]],[\"^3R\",[49,\"^J\",\"^K\",536870913]],[\"^3R\",[49,\"^18\",true,536870913]],[\"^3R\",[50,\"^29\",1727187033526,536870913]],[\"^3R\",[50,\"^2O\",\"^3S\",536870913]],[\"^3R\",[50,\"^3H\",\"view type\",536870913]],[\"^3R\",[50,\"^3C\",\"bO6\",536870913]],[\"^3R\",[50,\"^2B\",[\"^ \",\"^3T\",\"^42\",\"^3Y\",false,\"^3V\",true],536870913]],[\"^3R\",[50,\"^2R\",\"View Type\",536870913]],[\"^3R\",[50,\"^3<\",\"property\",536870913]],[\"^3R\",[50,\"^1G\",1727187033526,536870913]],[\"^3R\",[50,\"^1A\",\"~u00000002-2182-3760-7000-000000000000\",536870913]],[\"^3R\",[50,\"^@\",\"^A\",536870913]],[\"^3R\",[50,\"^7\",\"^1=\",536870913]],[\"^3R\",[50,\"^?\",true,536870913]],[\"^3R\",[50,\"^J\",\"^K\",536870913]],[\"^3R\",[50,\"^18\",true,536870913]],[\"^3R\",[51,\"^20\",50,536870913]],[\"^3R\",[51,\"^29\",1727187033526,536870913]],[\"^3R\",[51,\"^2O\",\"^3S\",536870913]],[\"^3R\",[51,\"^3C\",\"bO7\",536870913]],[\"^3R\",[51,\"^3G\",50,536870913]],[\"^3R\",[51,\"^38\",50,536870913]],[\"^3R\",[51,\"^2R\",\"Table View\",536870913]],[\"^3R\",[51,\"^3<\",\"closed value\",536870913]],[\"^3R\",[51,\"^1G\",1727187033526,536870913]],[\"^3R\",[51,\"^1A\",\"~u00000002-1942-5424-0000-000000000000\",536870913]],[\"^3R\",[51,\"^7\",\"^6\",536870913]],[\"^3R\",[51,\"^18\",true,536870913]],[\"^3R\",[51,\"^2J\",50,536870913]],[\"^3R\",[52,\"^20\",50,536870913]],[\"^3R\",[52,\"^29\",1727187033526,536870913]],[\"^3R\",[52,\"^2O\",\"^3S\",536870913]],[\"^3R\",[52,\"^3C\",\"bO8\",536870913]],[\"^3R\",[52,\"^3G\",50,536870913]],[\"^3R\",[52,\"^38\",50,536870913]],[\"^3R\",[52,\"^2R\",\"List View\",536870913]],[\"^3R\",[52,\"^3<\",\"closed value\",536870913]],[\"^3R\",[52,\"^1G\",1727187033526,536870913]],[\"^3R\",[52,\"^1A\",\"~u00000002-1164-8285-0200-000000000000\",536870913]],[\"^3R\",[52,\"^7\",\"^1M\",536870913]],[\"^3R\",[52,\"^18\",true,536870913]],[\"^3R\",[52,\"^2J\",50,536870913]],[\"^3R\",[53,\"^29\",1727187033526,536870913]],[\"^3R\",[53,\"^2O\",\"^3S\",536870913]],[\"^3R\",[53,\"^3H\",\"sorting\",536870913]],[\"^3R\",[53,\"^3C\",\"bO9\",536870913]],[\"^3R\",[53,\"^2B\",[\"^ \",\"^3T\",\"~:coll\",\"^3V\",true,\"^3Y\",false],536870913]],[\"^3R\",[53,\"^2R\",\"sorting\",536870913]],[\"^3R\",[53,\"^3<\",\"property\",536870913]],[\"^3R\",[53,\"^1G\",1727187033526,536870913]],[\"^3R\",[53,\"^1A\",\"~u00000002-2081-0259-4000-000000000000\",536870913]],[\"^3R\",[53,\"^@\",\"^A\",536870913]],[\"^3R\",[53,\"^7\",\"^L\",536870913]],[\"^3R\",[53,\"^?\",true,536870913]],[\"^3R\",[53,\"^18\",true,536870913]],[\"^3R\",[54,\"^29\",1727187033526,536870913]],[\"^3R\",[54,\"^2O\",\"^3S\",536870913]],[\"^3R\",[54,\"^3H\",\"filters\",536870913]],[\"^3R\",[54,\"^3C\",\"bOA\",536870913]],[\"^3R\",[54,\"^2B\",[\"^ \",\"^3T\",\"^4@\",\"^3V\",true,\"^3Y\",false],536870913]],[\"^3R\",[54,\"^2R\",\"filters\",536870913]],[\"^3R\",[54,\"^3<\",\"property\",536870913]],[\"^3R\",[54,\"^1G\",1727187033526,536870913]],[\"^3R\",[54,\"^1A\",\"~u00000002-1702-3936-3300-000000000000\",536870913]],[\"^3R\",[54,\"^@\",\"^A\",536870913]],[\"^3R\",[54,\"^7\",\"^2Y\",536870913]],[\"^3R\",[54,\"^?\",true,536870913]],[\"^3R\",[54,\"^18\",true,536870913]],[\"^3R\",[55,\"^29\",1727187033526,536870913]],[\"^3R\",[55,\"^2O\",\"^3S\",536870913]],[\"^3R\",[55,\"^3H\",\"hidden-columns\",536870913]],[\"^3R\",[55,\"^3C\",\"bOB\",536870913]],[\"^3R\",[55,\"^2B\",[\"^ \",\"^3T\",\"^46\",\"^3V\",true,\"^3Y\",false],536870913]],[\"^3R\",[55,\"^2R\",\"hidden-columns\",536870913]],[\"^3R\",[55,\"^3<\",\"property\",536870913]],[\"^3R\",[55,\"^1G\",1727187033526,536870913]],[\"^3R\",[55,\"^1A\",\"~u00000002-9750-5719-2000-000000000000\",536870913]],[\"^3R\",[55,\"^@\",\"^13\",536870913]],[\"^3R\",[55,\"^7\",\"^1D\",536870913]],[\"^3R\",[55,\"^?\",true,536870913]],[\"^3R\",[55,\"^18\",true,536870913]],[\"^3R\",[56,\"^29\",1727187033526,536870913]],[\"^3R\",[56,\"^2O\",\"^3S\",536870913]],[\"^3R\",[56,\"^3H\",\"ordered-columns\",536870913]],[\"^3R\",[56,\"^3C\",\"bOC\",536870913]],[\"^3R\",[56,\"^2B\",[\"^ \",\"^3T\",\"^4@\",\"^3V\",true,\"^3Y\",false],536870913]],[\"^3R\",[56,\"^2R\",\"ordered-columns\",536870913]],[\"^3R\",[56,\"^3<\",\"property\",536870913]],[\"^3R\",[56,\"^1G\",1727187033526,536870913]],[\"^3R\",[56,\"^1A\",\"~u00000002-1485-5871-0000-000000000000\",536870913]],[\"^3R\",[56,\"^@\",\"^A\",536870913]],[\"^3R\",[56,\"^7\",\"^35\",536870913]],[\"^3R\",[56,\"^?\",true,536870913]],[\"^3R\",[56,\"^18\",true,536870913]],[\"^3R\",[57,\"^29\",1727187033526,536870913]],[\"^3R\",[57,\"^2O\",\"^3S\",536870913]],[\"^3R\",[57,\"^3H\",\"sized-columns\",536870913]],[\"^3R\",[57,\"^3C\",\"bOD\",536870913]],[\"^3R\",[57,\"^2B\",[\"^ \",\"^3T\",\"^48\",\"^3V\",true,\"^3Y\",false],536870913]],[\"^3R\",[57,\"^2R\",\"sized-columns\",536870913]],[\"^3R\",[57,\"^3<\",\"property\",536870913]],[\"^3R\",[57,\"^1G\",1727187033526,536870913]],[\"^3R\",[57,\"^1A\",\"~u00000002-1675-5105-5500-000000000000\",536870913]],[\"^3R\",[57,\"^@\",\"^A\",536870913]],[\"^3R\",[57,\"^7\",\"^11\",536870913]],[\"^3R\",[57,\"^?\",true,536870913]],[\"^3R\",[57,\"^18\",true,536870913]],[\"^3R\",[58,\"^29\",1727187033526,536870913]],[\"^3R\",[58,\"^2O\",\"^3S\",536870913]],[\"^3R\",[58,\"^3H\",\"view-for\",536870913]],[\"^3R\",[58,\"^3C\",\"bOE\",536870913]],[\"^3R\",[58,\"^2B\",[\"^ \",\"^3T\",\"^3[\",\"^3V\",true,\"^3Y\",false],536870913]],[\"^3R\",[58,\"^2R\",\"view-for\",536870913]],[\"^3R\",[58,\"^3<\",\"property\",536870913]],[\"^3R\",[58,\"^1G\",1727187033526,536870913]],[\"^3R\",[58,\"^1A\",\"~u00000002-3627-4319-0000-000000000000\",536870913]],[\"^3R\",[58,\"^@\",\"^A\",536870913]],[\"^3R\",[58,\"^7\",\"^2H\",536870913]],[\"^3R\",[58,\"^?\",true,536870913]],[\"^3R\",[58,\"^J\",\"^K\",536870913]],[\"^3R\",[58,\"^18\",true,536870913]],[\"^3R\",[59,\"^29\",1727187033526,536870913]],[\"^3R\",[59,\"^2O\",\"^3S\",536870913]],[\"^3R\",[59,\"^3H\",\"remote-metadata\",536870913]],[\"^3R\",[59,\"^3C\",\"bOF\",536870913]],[\"^3R\",[59,\"^2B\",[\"^ \",\"^3T\",\"^48\",\"^3V\",true,\"^3Y\",false],536870913]],[\"^3R\",[59,\"^2R\",\"remote-metadata\",536870913]],[\"^3R\",[59,\"^3<\",\"property\",536870913]],[\"^3R\",[59,\"^1G\",1727187033526,536870913]],[\"^3R\",[59,\"^1A\",\"~u00000002-9907-5046-9000-000000000000\",536870913]],[\"^3R\",[59,\"^@\",\"^A\",536870913]],[\"^3R\",[59,\"^7\",\"^3B\",536870913]],[\"^3R\",[59,\"^?\",true,536870913]],[\"^3R\",[59,\"^18\",true,536870913]],[\"^3R\",[60,\"^29\",1727187033526,536870913]],[\"^3R\",[60,\"^2O\",\"^3S\",536870913]],[\"^3R\",[60,\"^3H\",\"due\",536870913]],[\"^3R\",[60,\"^3C\",\"bOG\",536870913]],[\"^3R\",[60,\"^2B\",[\"^ \",\"^3T\",\"~:datetime\",\"^3V\",false,\"^3Y\",false],536870913]],[\"^3R\",[60,\"^2R\",\"Due\",536870913]],[\"^3R\",[60,\"^3<\",\"property\",536870913]],[\"^3R\",[60,\"^1G\",1727187033526,536870913]],[\"^3R\",[60,\"^1A\",\"~u00000002-1089-0805-4900-000000000000\",536870913]],[\"^3R\",[60,\"^@\",\"^A\",536870913]],[\"^3R\",[60,\"^7\",\"^3D\",536870913]],[\"^3R\",[60,\"^?\",true,536870913]],[\"^3R\",[60,\"^18\",true,536870913]],[\"^3R\",[61,\"^29\",1727187033526,536870913]],[\"^3R\",[61,\"^2O\",\"^3S\",536870913]],[\"^3R\",[61,\"^3H\",\"state\",536870913]],[\"^3R\",[61,\"^3C\",\"bOH\",536870913]],[\"^3R\",[61,\"^2B\",[\"^ \",\"^3T\",\"^48\",\"^3V\",false,\"^3Y\",false],536870913]],[\"^3R\",[61,\"^2R\",\"State\",536870913]],[\"^3R\",[61,\"^3<\",\"property\",536870913]],[\"^3R\",[61,\"^1G\",1727187033526,536870913]],[\"^3R\",[61,\"^1A\",\"~u00000002-1165-1650-8700-000000000000\",536870913]],[\"^3R\",[61,\"^@\",\"^A\",536870913]],[\"^3R\",[61,\"^7\",\"^>\",536870913]],[\"^3R\",[61,\"^?\",true,536870913]],[\"^3R\",[61,\"^18\",true,536870913]],[\"^3R\",[62,\"^29\",1727187033526,536870913]],[\"^3R\",[62,\"^2O\",\"^3S\",536870913]],[\"^3R\",[62,\"^3H\",\"task\",536870913]],[\"^3R\",[62,\"^2R\",\"Task\",536870913]],[\"^3R\",[62,\"^3<\",\"class\",536870913]],[\"^3R\",[62,\"^1G\",1727187033526,536870913]],[\"^3R\",[62,\"^1A\",\"~u00000002-1282-1814-5700-000000000000\",536870913]],[\"^3R\",[62,\"^7\",\"^2:\",536870913]],[\"^3R\",[62,\"^18\",true,536870913]],[\"^3R\",[62,\"^1J\",6,536870913]],[\"^3R\",[62,\"^1O\",33,536870913]],[\"^3R\",[62,\"^1O\",40,536870913]],[\"^3R\",[62,\"^1O\",45,536870913]],[\"^3R\",[63,\"^29\",1727187033527,536870913]],[\"^3R\",[63,\"^2O\",\"^3S\",536870913]],[\"^3R\",[63,\"^3H\",\"journal\",536870913]],[\"^3R\",[63,\"^2R\",\"Journal\",536870913]],[\"^3R\",[63,\"^3<\",\"class\",536870913]],[\"^3R\",[63,\"^1G\",1727187033527,536870913]],[\"^3R\",[63,\"^1A\",\"~u00000002-1979-7410-8100-000000000000\",536870913]],[\"^3R\",[63,\"^7\",\"^3=\",536870913]],[\"^3R\",[63,\"^18\",true,536870913]],[\"^3R\",[63,\"^1J\",6,536870913]],[\"^3R\",[63,\"^3\",\"MMM do, yyyy\",536870913]],[\"^3R\",[64,\"^29\",1727187033527,536870913]],[\"^3R\",[64,\"^2O\",\"^3S\",536870913]],[\"^3R\",[64,\"^3H\",\"query\",536870913]],[\"^3R\",[64,\"^2R\",\"Query\",536870913]],[\"^3R\",[64,\"^3<\",\"class\",536870913]],[\"^3R\",[64,\"^1G\",1727187033527,536870913]],[\"^3R\",[64,\"^1A\",\"~u00000002-2324-8016-6000-000000000000\",536870913]],[\"^3R\",[64,\"^7\",\"^5\",536870913]],[\"^3R\",[64,\"^18\",true,536870913]],[\"^3R\",[64,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"search\"],536870913]],[\"^3R\",[64,\"^1J\",6,536870913]],[\"^3R\",[64,\"^1O\",13,536870913]],[\"^3R\",[65,\"^29\",1727187033527,536870913]],[\"^3R\",[65,\"^2O\",\"^3S\",536870913]],[\"^3R\",[65,\"^3H\",\"advanced query\",536870913]],[\"^3R\",[65,\"^2R\",\"Advanced query\",536870913]],[\"^3R\",[65,\"^3<\",\"class\",536870913]],[\"^3R\",[65,\"^1G\",1727187033527,536870913]],[\"^3R\",[65,\"^1A\",\"~u00000002-1141-5857-5800-000000000000\",536870913]],[\"^3R\",[65,\"^7\",\"^=\",536870913]],[\"^3R\",[65,\"^18\",true,536870913]],[\"^3R\",[65,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"search\"],536870913]],[\"^3R\",[65,\"^1J\",64,536870913]],[\"^3R\",[66,\"^29\",1727187033527,536870913]],[\"^3R\",[66,\"^2O\",\"^3S\",536870913]],[\"^3R\",[66,\"^3H\",\"card\",536870913]],[\"^3R\",[66,\"^2R\",\"Card\",536870913]],[\"^3R\",[66,\"^3<\",\"class\",536870913]],[\"^3R\",[66,\"^1G\",1727187033527,536870913]],[\"^3R\",[66,\"^1A\",\"~u00000002-1358-2811-0900-000000000000\",536870913]],[\"^3R\",[66,\"^7\",\"^H\",536870913]],[\"^3R\",[66,\"^18\",true,536870913]],[\"^3R\",[66,\"^1J\",6,536870913]],[\"^3R\",[66,\"^1O\",60,536870913]],[\"^3R\",[66,\"^1O\",61,536870913]],[\"^3R\",[67,\"^29\",1727187033527,536870913]],[\"^3R\",[67,\"^2O\",\"^3S\",536870913]],[\"^3R\",[67,\"^3H\",\"cards\",536870913]],[\"^3R\",[67,\"^2R\",\"Cards\",536870913]],[\"^3R\",[67,\"^3<\",\"class\",536870913]],[\"^3R\",[67,\"^1G\",1727187033527,536870913]],[\"^3R\",[67,\"^1A\",\"~u00000002-1284-2651-6700-000000000000\",536870913]],[\"^3R\",[67,\"^7\",\"^P\",536870913]],[\"^3R\",[67,\"^18\",true,536870913]],[\"^3R\",[67,\"^25\",[\"^ \",\"^3T\",\"^4<\",\"^4=\",\"search\"],536870913]],[\"^3R\",[67,\"^1J\",64,536870913]],[\"^3R\",[68,\"^1A\",\"~u66f2c859-0e01-4f36-81c2-db5c0eb86adf\",536870913]],[\"^3R\",[68,\"^V\",\"{:meta/version 1\\n\\n ;; Set the preferred format.\\n ;; This is _only_ for file graphs.\\n ;; Available options:\\n ;; - Markdown (default)\\n ;; - Org\\n ;; :preferred-format \\\"Markdown\\\"\\n\\n ;; Set the preferred workflow style.\\n ;; This is _only_ for file graphs.\\n ;; Available options:\\n ;; - :now for NOW/LATER style (default)\\n ;; - :todo for TODO/DOING style\\n ;; Exclude directories/files.\\n ;; This is _only_ for file graphs.\\n ;; Example usage:\\n ;; :hidden [\\\"/archived\\\" \\\"/test.md\\\" \\\"../assets/archived\\\"]\\n ;; Define the default journal page template.\\n ;; Enter the template name between the quotes.\\n :default-templates\\n {:journals \\\"\\\"}\\n\\n ;; Set a custom date format for the journal page title.\\n ;; This is _only_ for file graphs.\\n ;; Default value: \\\"MMM do, yyyy\\\"\\n ;; e.g., \\\"Jan 19th, 2038\\\"\\n ;; Example usage e.g., \\\"Tue 19th, Jan 2038\\\"\\n ;; :journal/page-title-format \\\"EEE do, MMM yyyy\\\"\\n\\n ;; Specify the journal filename format using a valid date format string.\\n ;; !Warning:\\n ;; This configuration is not retroactive and affects only new journals.\\n ;; To show old journal files in the app, manually rename the files in the\\n ;; journal directory to match the new format.\\n ;; Default value: \\\"yyyy_MM_dd\\\"\\n ;; :journal/file-name-format \\\"yyyy_MM_dd\\\"\\n\\n ;; Enable tooltip preview on hover.\\n ;; Default value: true\\n :ui/enable-tooltip? true\\n\\n ;; Display brackets [[]] around page references.\\n ;; Default value: true\\n ;; :ui/show-brackets? true\\n\\n ;; Display all lines of a block when referencing ((block)).\\n ;; Default value: false\\n :ui/show-full-blocks? false\\n\\n ;; Automatically expand block references when zooming in.\\n ;; Default value: true\\n :ui/auto-expand-block-refs? true\\n\\n ;; Hide empty block properties\\n ;; This is _only_ for DB graphs.\\n ;; Default value: false\\n ;; :ui/hide-empty-properties? false\\n\\n ;; Disable accent marks when searching.\\n ;; After changing this setting, rebuild the search index by pressing (^C ^S).\\n ;; Default value: true\\n :feature/enable-search-remove-accents? true\\n\\n ;; Enable journals.\\n ;; Default value: true\\n ;; :feature/enable-journals? true\\n\\n ;; Enable flashcards.\\n ;; Default value: true\\n ;; :feature/enable-flashcards? true\\n\\n ;; Enable whiteboards.\\n ;; Default value: true\\n ;; :feature/enable-whiteboards? true\\n\\n ;; Disable the journal's built-in 'Scheduled tasks and deadlines' query.\\n ;; Default value: false\\n ;; :feature/disable-scheduled-and-deadline-query? false\\n\\n ;; Specify the number of days displayed in the future for\\n ;; the 'scheduled tasks and deadlines' query.\\n ;; Example usage:\\n ;; Display all scheduled and deadline blocks for the next 14 days:\\n ;; :scheduled/future-days 14\\n ;; Default value: 7\\n ;; :scheduled/future-days 7\\n\\n ;; Specify the first day of the week.\\n ;; Available options:\\n ;; - integer from 0 to 6 (Monday to Sunday)\\n ;; Default value: 6 (Sunday)\\n :start-of-week 6\\n\\n ;; Specify a custom CSS import.\\n ;; This option takes precedence over the local `logseq/custom.css` file.\\n ;; Example usage:\\n ;; :custom-css-url \\\"@import url('https://cdn.jsdelivr.net/gh/dracula/logseq@master/custom.css');\\\"\\n\\n ;; Specify a custom JS import.\\n ;; This option takes precedence over the local `logseq/custom.js` file.\\n ;; Example usage:\\n ;; :custom-js-url \\\"https://cdn.logseq.com/custom.js\\\"\\n\\n ;; Set bullet indentation when exporting\\n ;; Available options:\\n ;; - `:eight-spaces` as eight spaces\\n ;; - `:four-spaces` as four spaces\\n ;; - `:two-spaces` as two spaces\\n ;; - `:tab` as a tab character (default)\\n ;; :export/bullet-indentation :tab\\n\\n ;; Publish all pages within the Graph\\n ;; Regardless of whether individual pages have been marked as public.\\n ;; Default value: false\\n ;; :publishing/all-pages-public? false\\n\\n ;; Define the default home page and sidebar status.\\n ;; If unspecified, the journal page will be loaded on startup and the right sidebar will stay hidden.\\n ;; The `:page` value represents the name of the page displayed at startup.\\n ;; Available options for `:sidebar` are:\\n ;; - \\\"Contents\\\" to display the Contents page in the right sidebar.\\n ;; - A specific page name to display in the right sidebar.\\n ;; - An array of multiple pages, e.g., [\\\"Contents\\\" \\\"Page A\\\" \\\"Page B\\\"].\\n ;; If `:sidebar` remains unset, the right sidebar will stay hidden.\\n ;; Examples:\\n ;; 1. Set \\\"Changelog\\\" as the home page and display \\\"Contents\\\" in the right sidebar:\\n ;; :default-home {:page \\\"Changelog\\\", :sidebar \\\"Contents\\\"}\\n ;; 2. Set \\\"Jun 3rd, 2021\\\" as the home page without the right sidebar:\\n ;; :default-home {:page \\\"Jun 3rd, 2021\\\"}\\n ;; 3. Set \\\"home\\\" as the home page and display multiple pages in the right sidebar:\\n ;; :default-home {:page \\\"home\\\", :sidebar [\\\"Page A\\\" \\\"Page B\\\"]}\\n\\n ;; Set the default location for storing notes.\\n ;; Default value: \\\"pages\\\"\\n ;; :pages-directory \\\"pages\\\"\\n\\n ;; Set the default location for storing journals.\\n ;; Default value: \\\"journals\\\"\\n ;; :journals-directory \\\"journals\\\"\\n\\n ;; Set the default location for storing whiteboards.\\n ;; Default value: \\\"whiteboards\\\"\\n ;; :whiteboards-directory \\\"whiteboards\\\"\\n\\n ;; Enabling this option converts\\n ;; This is _only_ for file graphs.\\n ;; [[Grant Ideas]] to [[file:./grant_ideas.org][Grant Ideas]] for org-mode.\\n ;; For more information, visit https://github.com/logseq/logseq/issues/672\\n ;; :org-mode/insert-file-link? false\\n\\n ;; Configure custom shortcuts.\\n ;; Syntax:\\n ;; 1. + indicates simultaneous key presses, e.g., `Ctrl+Shift+a`.\\n ;; 2. A space between keys represents key chords, e.g., `t s` means\\n ;; pressing `t` followed by `s`.\\n ;; 3. mod refers to `Ctrl` for Windows/Linux and `Command` for Mac.\\n ;; 4. Use false to disable a specific shortcut.\\n ;; 5. You can define multiple bindings for a single action, e.g., [\\\"ctrl+j\\\" \\\"down\\\"].\\n ;; The full list of configurable shortcuts is available at:\\n ;; https://github.com/logseq/logseq/blob/master/src/main/frontend/modules/shortcut/config.cljs\\n ;; Example:\\n ;; :shortcuts\\n ;; {:editor/new-block \\\"enter\\\"\\n ;; :editor/new-line \\\"shift+enter\\\"\\n ;; :editor/insert-link \\\"mod+shift+k\\\"\\n ;; :editor/highlight false\\n ;; :ui/toggle-settings \\\"t s\\\"\\n ;; :editor/up [\\\"ctrl+k\\\" \\\"up\\\"]\\n ;; :editor/down [\\\"ctrl+j\\\" \\\"down\\\"]\\n ;; :editor/left [\\\"ctrl+h\\\" \\\"left\\\"]\\n ;; :editor/right [\\\"ctrl+l\\\" \\\"right\\\"]}\\n :shortcuts {}\\n\\n ;; Configure the behavior of pressing Enter in document mode.\\n ;; if set to true, pressing Enter will create a new block.\\n ;; Default value: false\\n :shortcut/doc-mode-enter-for-new-block? false\\n\\n ;; Block content larger than `block/title-max-length` will not be searchable\\n ;; or editable for performance.\\n ;; Default value: 10000\\n :block/title-max-length 10000\\n\\n ;; Display command documentation on hover.\\n ;; Default value: true\\n :ui/show-command-doc? true\\n\\n ;; Display empty bullet points.\\n ;; Default value: false\\n :ui/show-empty-bullets? false\\n\\n ;; Pre-defined :view function to use with advanced queries.\\n :query/views\\n {:pprint\\n (fn [r] [:pre.code (pprint r)])}\\n\\n ;; Advanced queries `:result-transform` function.\\n ;; Transform the query result before displaying it.\\n ;; Example usage for DB graphs:\\n;; :query/result-transforms\\n;; {:sort-by-priority\\n;; (fn [result] (sort-by (fn [h] (get h :logseq.property/priority \\\"Z\\\")) result))}\\n\\n;; Queries will be displayed at the bottom of today's journal page.\\n;; Example usage:\\n;; :default-queries\\n;; {:journals []}\\n\\n ;; Add custom commands to the command palette\\n ;; Example usage:\\n ;; :commands\\n ;; [\\n ;; [\\\"js\\\" \\\"Javascript\\\"]\\n ;; [\\\"md\\\" \\\"Markdown\\\"]\\n ;; ]\\n :commands []\\n\\n ;; Enable collapsing blocks with titles but no children.\\n ;; By default, only blocks with children can be collapsed.\\n ;; Setting `:outliner/block-title-collapse-enabled?` to true allows collapsing\\n ;; blocks with titles (multiple lines) and content. For example:\\n ;; - block title\\n ;; block content\\n ;; Default value: false\\n :outliner/block-title-collapse-enabled? false\\n\\n ;; Macros replace texts and will make you more productive.\\n ;; Example usage:\\n ;; Change the :macros value below to:\\n ;; {\\\"poem\\\" \\\"Rose is $1, violet's $2. Life's ordered: Org assists you.\\\"}\\n ;; input \\\"{{poem red,blue}}\\\"\\n ;; becomes\\n ;; Rose is red, violet's blue. Life's ordered: Org assists you.\\n :macros {}\\n\\n ;; Configure the default expansion level for linked references.\\n ;; For example, consider the following block hierarchy:\\n ;; - a [[page]] (level 1)\\n ;; - b (level 2)\\n ;; - c (level 3)\\n ;; - d (level 4)\\n ;;\\n ;; With the default value of level 2, block b will be collapsed.\\n ;; If the level's value is set to 3, block c will be collapsed.\\n ;; Default value: 2\\n :ref/default-open-blocks-level 2\\n\\n ;; Configure the threshold for linked references before collapsing.\\n ;; Default value: 100\\n :ref/linked-references-collapsed-threshold 50\\n\\n ;; Graph view configuration.\\n ;; Example usage:\\n ;; :graph/settings\\n ;; {:orphan-pages? true ; Default value: true\\n ;; :builtin-pages? false ; Default value: false\\n ;; :excluded-pages? false ; Default value: false\\n ;; :journal? false} ; Default value: false\\n\\n ;; Graph view configuration.\\n ;; Example usage:\\n ;; :graph/forcesettings\\n ;; {:link-dist 180 ; Default value: 180\\n ;; :charge-strength -600 ; Default value: -600\\n ;; :charge-range 600} ; Default value: 600\\n\\n\\n ;; Favorites to list on the left sidebar\\n ;; This is _only_ for file graphs.\\n ;; Set flashcards interval.\\n ;; Expected value:\\n ;; - Float between 0 and 1\\n ;; higher values result in faster changes to the next review interval.\\n ;; Default value: 0.5\\n ;; :srs/learning-fraction 0.5\\n\\n ;; Set the initial interval after the first successful review of a card.\\n ;; Default value: 4\\n ;; :srs/initial-interval 4\\n\\n ;; Hide specific block properties.\\n ;; Example usage:\\n ;; :block-hidden-properties #{:public :icon}\\n\\n ;; Create a page for all properties.\\n ;; This is _only_ for file graphs.\\n ;; Default value: true\\n;; Properties to exclude from having property pages\\n ;; This is _only_ for file graphs.\\n ;; Example usage:\\n ;; :property-pages/excludelist #{:duration :author}\\n\\n ;; By default, property value separated by commas will not be treated as\\n ;; page references. You can add properties to enable it.\\n ;; This is _only_ for file graphs.\\n ;; Example usage:\\n ;; :property/separated-by-commas #{:alias :tags}\\n\\n ;; Properties that are ignored when parsing property values for references\\n ;; This is _only_ for file graphs.\\n ;; Example usage:\\n ;; :ignored-page-references-keywords #{:author :website}\\n\\n ;; logbook configuration.\\n ;; :logbook/settings\\n ;; {:with-second-support? false ;limit logbook to minutes, seconds will be eliminated\\n ;; :enabled-in-all-blocks true ;display logbook in all blocks after timetracking\\n ;; :enabled-in-timestamped-blocks false ;don't display logbook at all\\n ;; }\\n\\n ;; Mobile photo upload configuration.\\n ;; :mobile/photo\\n ;; {:allow-editing? true\\n ;; :quality 80}\\n\\n ;; Mobile features options\\n ;; Gestures\\n ;; Example usage:\\n ;; :mobile\\n ;; {:gestures/disabled-in-block-with-tags [\\\"kanban\\\"]}\\n\\n ;; Extra CodeMirror options\\n ;; See https://codemirror.net/5/doc/manual.html#config for possible options\\n ;; Example usage:\\n ;; :editor/extra-codemirror-options\\n ;; {:lineWrapping false ; Default value: false\\n ;; :lineNumbers true ; Default value: true\\n ;; :readOnly false} ; Default value: false\\n\\n ;; Enable logical outdenting\\n ;; Default value: false\\n ;; :editor/logical-outdenting? false\\n\\n ;; Prefer pasting the file when text and a file are in the clipboard.\\n ;; Default value: false\\n ;; :editor/preferred-pasting-file? false\\n\\n ;; Quick capture templates for receiving content from other apps.\\n ;; Each template contains three elements {time}, {text} and {url}, which can be auto-expanded\\n ;; by receiving content from other apps. Note: the {} cannot be omitted.\\n ;; - {time}: capture time\\n ;; - {date}: capture date using current date format, use `[[{date}]]` to get a page reference\\n ;; - {text}: text that users selected before sharing.\\n ;; - {url}: URL or assets path for media files stored in Logseq.\\n ;; You can also reorder them or use only one or two of them in the template.\\n ;; You can also insert or format any text in the template, as shown in the following examples.\\n ;; :quick-capture-templates\\n ;; {:text \\\"[[quick capture]] **{time}**: {text} from {url}\\\"\\n ;; :media \\\"[[quick capture]] **{time}**: {url}\\\"}\\n\\n ;; Quick capture options.\\n ;; - insert-today? Insert the capture at the end of today's journal page (boolean).\\n ;; - redirect-page? Redirect to the quick capture page after capturing (boolean).\\n ;; - default-page The default page to capture to if insert-today? is false (string).\\n ;; :quick-capture-options\\n ;; {:insert-today? false ;; Default value: true\\n ;; :redirect-page? false ;; Default value: false\\n ;; :default-page \\\"quick capture\\\"} ;; Default page: \\\"quick capture\\\"\\n\\n ;; File sync options\\n ;; Ignore these files when syncing, regexp is supported.\\n ;; :file-sync/ignore-files []\\n\\n ;; Configure the Enter key behavior for\\n ;; context-aware editing with DWIM (Do What I Mean).\\n ;; context-aware Enter key behavior implies that pressing Enter will\\n ;; have different outcomes based on the context.\\n ;; For instance, pressing Enter within a list generates a new list item,\\n ;; whereas pressing Enter in a block reference opens the referenced block.\\n ;; :dwim/settings\\n ;; {:admonition&src? true ;; Default value: true\\n ;; :markup? false ;; Default value: false\\n ;; :block-ref? true ;; Default value: true\\n ;; :page-ref? true ;; Default value: true\\n ;; :properties? true ;; Default value: true\\n ;; :list? false} ;; Default value: false\\n\\n ;; Configure the escaping method for special characters in page titles.\\n ;; This is _only_ for file graphs.\\n ;; Warning:\\n ;; This is a dangerous operation. To modify the setting,\\n ;; you'll need to manually rename all affected files and\\n ;; re-index them on all clients after synchronization.\\n ;; Incorrect handling may result in messy page titles.\\n ;; Available options:\\n ;; - :triple-lowbar (default)\\n ;; ;use triple underscore `___` for slash `/` in page title\\n ;; ;use Percent-encoding for other invalid characters\\n}\\n\",536870913]],[\"^3R\",[68,\"^8\",\"~m1727187033523\",536870913]],[\"^3R\",[68,\"^23\",\"~m1727187033523\",536870913]],[\"^3R\",[68,\"^3I\",\"logseq/config.edn\",536870913]],[\"^3R\",[69,\"^1A\",\"~u66f2c859-fb71-49ad-b56f-b177b647ed89\",536870913]],[\"^3R\",[69,\"^V\",\"\",536870913]],[\"^3R\",[69,\"^8\",\"~m1727187033523\",536870913]],[\"^3R\",[69,\"^23\",\"~m1727187033523\",536870913]],[\"^3R\",[69,\"^3I\",\"logseq/custom.css\",536870913]],[\"^3R\",[70,\"^1A\",\"~u66f2c859-a95c-4b95-96dc-339b7181e86e\",536870913]],[\"^3R\",[70,\"^V\",\"\",536870913]],[\"^3R\",[70,\"^8\",\"~m1727187033523\",536870913]],[\"^3R\",[70,\"^23\",\"~m1727187033523\",536870913]],[\"^3R\",[70,\"^3I\",\"logseq/custom.js\",536870913]],[\"^3R\",[71,\"^29\",1727187033527,536870913]],[\"^3R\",[71,\"^2O\",\"^3S\",536870913]],[\"^3R\",[71,\"^3H\",\"contents\",536870913]],[\"^3R\",[71,\"^2R\",\"Contents\",536870913]],[\"^3R\",[71,\"^3<\",\"page\",536870913]],[\"^3R\",[71,\"^1G\",1727187033527,536870913]],[\"^3R\",[71,\"^1A\",\"~u66f2c859-d18d-433a-bd24-ab24995cfae1\",536870913]],[\"^3R\",[71,\"^18\",true,536870913]],[\"^3R\",[72,\"^29\",1727187033588,536870914]],[\"^3R\",[72,\"^2O\",\"^3S\",536870914]],[\"^3R\",[72,\"^3H\",\"$$$views\",536870914]],[\"^3R\",[72,\"^2R\",\"$$$views\",536870914]],[\"^3R\",[72,\"^3<\",\"hidden\",536870914]],[\"^3R\",[72,\"^1G\",1727187033588,536870914]],[\"^3R\",[72,\"^1A\",\"~u66f2c859-f1f7-40da-8854-604ef354f7ff\",536870914]],[\"^3R\",[73,\"^29\",1727187033588,536870914]],[\"^3R\",[73,\"^2O\",\"^3S\",536870914]],[\"^3R\",[73,\"^3C\",\"bOI\",536870914]],[\"^3R\",[73,\"^3G\",72,536870914]],[\"^3R\",[73,\"^38\",72,536870914]],[\"^3R\",[73,\"^2R\",\"All Pages Default View\",536870914]],[\"^3R\",[73,\"^1G\",1727187033588,536870914]],[\"^3R\",[73,\"^1A\",\"~u66f2c859-9076-4a30-a788-533c01d02f85\",536870914]],[\"^3R\",[73,\"^18\",true,536870914]],[\"^3R\",[73,\"^2H\",72,536870914]],[\"^3R\",[74,\"^29\",1727187033721,536870915]],[\"^3R\",[74,\"^2O\",\"^3S\",536870915]],[\"^3R\",[74,\"^2L\",20240924,536870915]],[\"^3R\",[74,\"^3H\",\"sep 24th, 2024\",536870915]],[\"^3R\",[74,\"^37\",9,536870918]],[\"^3R\",[74,\"^37\",63,536870918]],[\"^3R\",[74,\"^1R\",9,536870917]],[\"^3R\",[74,\"^1R\",63,536870917]],[\"^3R\",[74,\"^1E\",63,536870915]],[\"^3R\",[74,\"^2R\",\"Sep 24th, 2024\",536870915]],[\"^3R\",[74,\"^C\",536870917,536870918]],[\"^3R\",[74,\"^3<\",\"journal\",536870915]],[\"^3R\",[74,\"^1G\",1727187033721,536870915]],[\"^3R\",[74,\"^1A\",\"~u00000001-2024-0924-0000-000000000000\",536870915]],[\"^3R\",[75,\"^29\",1727187033722,536870915]],[\"^3R\",[75,\"^2O\",\"^3S\",536870915]],[\"^3R\",[75,\"^3C\",\"a0\",536870915]],[\"^3R\",[75,\"^3G\",74,536870915]],[\"^3R\",[75,\"^38\",74,536870915]],[\"^3R\",[75,\"^37\",74,536870918]],[\"^3R\",[75,\"^2R\",\"\",536870915]],[\"^3R\",[75,\"^C\",536870917,536870918]],[\"^3R\",[75,\"^1G\",1727187033722,536870915]],[\"^3R\",[75,\"^1A\",\"~u66f2c859-8d26-4147-b6dc-a7f93fbd3989\",536870915]]]]]]") (def example-db (dt/read-transit-str example-db-transit)) diff --git a/src/test/frontend/db/db_based_model_test.cljs b/src/test/frontend/db/db_based_model_test.cljs index 628cdbcba7..fac58f184f 100644 --- a/src/test/frontend/db/db_based_model_test.cljs +++ b/src/test/frontend/db/db_based_model_test.cljs @@ -46,7 +46,7 @@ ;; set class2's parent to class1 (let [class2 (db/get-case-page "class2")] (db/transact! [{:db/id (:db/id class2) - :logseq.property/parent (:db/id class)}])) + :logseq.property.class/extends (:db/id class)}])) (test-helper/save-block! repo sbid "Block 2" {:tags ["class2"]}) (is (= (map :db/id (model/get-class-objects repo (:db/id class))) [(:db/id (db/entity [:block/uuid fbid])) @@ -68,9 +68,9 @@ class2 (db/get-case-page "class2") class3 (db/get-case-page "class3") _ (db/transact! [{:db/id (:db/id class2) - :logseq.property/parent (:db/id class1)} + :logseq.property.class/extends (:db/id class1)} {:db/id (:db/id class3) - :logseq.property/parent (:db/id class2)}])] + :logseq.property.class/extends (:db/id class2)}])] (is (= (model/get-structured-children repo (:db/id (db/get-case-page "class1"))) [(:db/id class2) (:db/id class3)])))) diff --git a/src/test/frontend/worker/handler/page/db_based/page_test.cljs b/src/test/frontend/worker/handler/page/db_based/page_test.cljs index bda2164d6a..34e1ea5e88 100644 --- a/src/test/frontend/worker/handler/page/db_based/page_test.cljs +++ b/src/test/frontend/worker/handler/page/db_based/page_test.cljs @@ -2,7 +2,9 @@ (:require [cljs.test :refer [deftest is testing]] [datascript.core :as d] [frontend.worker.handler.page.db-based.page :as worker-db-page] + [logseq.common.config :as common-config] [logseq.db :as ldb] + [logseq.db.frontend.db :as db-db] [logseq.db.test.helper :as db-test])) (deftest create-class @@ -30,11 +32,18 @@ child-page2 (d/entity @conn [:block/uuid child-uuid2]) ;; Create a child page for a class [_ child-uuid3] (worker-db-page/create! conn "c1/c2" {:split-namespace? true :class? true}) - child-page3 (d/entity @conn [:block/uuid child-uuid3])] - (is (= ["foo" "bar"] (map :block/title (ldb/get-page-parents child-page))) + child-page3 (d/entity @conn [:block/uuid child-uuid3]) + library (ldb/get-built-in-page @conn common-config/library-page-name) + bar (ldb/get-page @conn "bar")] + (is (= ["foo"] (map :block/title (:block/_parent library))) + "Namespace (non-class) pages are added to the Library page") + (is (= ["baz" "baz2"] (map :block/title (:block/_parent bar))) + "Child pages are created under the same parent") + (is (= ["foo" "bar"] (map :block/title [(:block/parent (:block/parent child-page)) + (:block/parent child-page)])) "Child page with new parent has correct parents") - (is (= (map :block/uuid (ldb/get-page-parents child-page)) - (map :block/uuid (ldb/get-page-parents child-page2))) + (is (= (map :block/uuid (db-db/get-page-parents child-page)) + (map :block/uuid (db-db/get-page-parents child-page2))) "Child page with existing parents has correct parents") (is (= ["Root Tag" "c1"] (map :block/title (ldb/get-classes-parents [child-page3]))) "Child class with new parent has correct parents") @@ -52,8 +61,8 @@ (let [_ (worker-db-page/create! conn "vim/keys" {:split-namespace? true}) _ (worker-db-page/create! conn "emacs/keys" {:split-namespace? true})] (is (= #{"vim" "emacs"} - (->> (d/q '[:find [(pull ?b [{:logseq.property/parent [:block/title]}]) ...] :where [?b :block/title "keys"]] @conn) - (map #(get-in % [:logseq.property/parent :block/title])) + (->> (d/q '[:find [(pull ?b [{:block/parent [:block/title]}]) ...] :where [?b :block/title "keys"]] @conn) + (map #(get-in % [:block/parent :block/title])) set)) "Two child pages with same name exist and have different parents"))) diff --git a/src/test/frontend/worker/migrate_test.cljs b/src/test/frontend/worker/migrate_test.cljs index 90f3200444..a662e3b044 100644 --- a/src/test/frontend/worker/migrate_test.cljs +++ b/src/test/frontend/worker/migrate_test.cljs @@ -1,10 +1,111 @@ (ns frontend.worker.migrate-test (:require ["fs" :as fs-node] [cljs.test :refer [deftest is testing]] + [clojure.string :as string] [datascript.core :as d] [frontend.worker.db.migrate :as db-migrate] + [logseq.common.config :as common-config] [logseq.db :as ldb])) +(deftest test-fix-rename-parent-to-extends + (testing "Rename parent to extends" + (let [db-transit (str (fs-node/readFileSync "src/test/migration/64.8.transit")) + db (ldb/read-transit-str db-transit) + conn (d/conn-from-db db) + tx-data (db-migrate/fix-rename-parent-to-extends conn nil)] + (is (= (->> tx-data + (map (fn [data] + (cond + (and (map? data) (:block/created-at data)) + (dissoc data :block/created-at :block/updated-at) + (and (map? data) (:block/order data)) + (dissoc data :block/order) + :else + data)))) + [{:db/id 35, + :db/ident :logseq.property.class/extends, + :block/title "Extends", + :block/name "extends"} + [:db/retract 161 :logseq.property/parent] + [:db/add 161 :logseq.property.class/extends 1] + [:db/retract 163 :logseq.property/parent] + [:db/add 163 :logseq.property.class/extends 162] + [:db/retract 139 :logseq.property/parent] + [:db/add 139 :logseq.property.class/extends 137] + [:db/retract 138 :logseq.property/parent] + [:db/add 138 :logseq.property.class/extends 1] + [:db/retract 140 :logseq.property/parent] + [:db/add 140 :logseq.property.class/extends 1] + [:db/retract 158 :logseq.property/parent] + [:db/add 158 :block/parent 155] + [:db/retract 134 :logseq.property/parent] + [:db/add 134 :logseq.property.class/extends 133] + [:db/retract 3 :logseq.property/parent] + [:db/add 3 :logseq.property.class/extends 1] + [:db/retract 142 :logseq.property/parent] + [:db/add 142 :logseq.property.class/extends 1] + [:db/retract 135 :logseq.property/parent] + [:db/add 135 :logseq.property.class/extends 133] + [:db/retract 133 :logseq.property/parent] + [:db/add 133 :logseq.property.class/extends 1] + [:db/retract 162 :logseq.property/parent] + [:db/add 162 :logseq.property.class/extends 161] + [:db/retract 144 :logseq.property/parent] + [:db/add 144 :logseq.property.class/extends 1] + [:db/retract 155 :logseq.property/parent] + [:db/add 155 :block/parent 154] + [:db/retract 165 :logseq.property/parent] + [:db/add 165 :logseq.property.class/extends 162] + [:db/retract 143 :logseq.property/parent] + [:db/add 143 :logseq.property.class/extends 1] + [:db/retract 136 :logseq.property/parent] + [:db/add 136 :logseq.property.class/extends 1] + [:db/retract 2 :logseq.property/parent] + [:db/add 2 :logseq.property.class/extends 1] + [:db/retract 4 :logseq.property/parent] + [:db/add 4 :logseq.property.class/extends 1] + [:db/retract 156 :logseq.property/parent] + [:db/add 156 :block/parent 155] + [:db/retract 141 :logseq.property/parent] + [:db/add 141 :logseq.property.class/extends 1] + [:db/retract 137 :logseq.property/parent] + [:db/add 137 :logseq.property.class/extends 1] + {:block/name (string/lower-case common-config/library-page-name), + :block/title common-config/library-page-name, + :block/uuid #uuid "00000004-1294-7765-6000-000000000000", + :block/tags #{:logseq.class/Page}, + :logseq.property/built-in? true} + {:db/id 154, + :block/parent + [:block/uuid #uuid "00000004-1294-7765-6000-000000000000"], + ;; :block/order "a6" + } + {:db/id 155, + ;; :block/order "a7" + } + {:db/id 156, + ;; :block/order "a8" + } + {:db/id 158, + ;; :block/order "a9" + }]))))) + +(deftest ensure-built-in-data-exists! + (let [db-transit (str (fs-node/readFileSync "src/test/migration/64.8.transit")) + db (ldb/read-transit-str db-transit) + conn (d/conn-from-db db) + initial-version (:kv/value (d/entity @conn :logseq.kv/graph-initial-schema-version)) + graph-created-at (:kv/value (d/entity @conn :logseq.kv/graph-created-at)) + _ (assert (= {:major 64 :minor 8} initial-version)) + _ (assert (some? graph-created-at)) + _ (db-migrate/ensure-built-in-data-exists! conn)] + (is (= initial-version + (:kv/value (d/entity @conn :logseq.kv/graph-initial-schema-version))) + "Initial version not changed by fn") + (is (= graph-created-at + (:kv/value (d/entity @conn :logseq.kv/graph-created-at))) + "Graph created at not changed by fn"))) + (deftest test-separate-classes-and-properties (testing "Separate properties from classes" (let [db-transit (str (fs-node/readFileSync "src/test/migration/65.0.transit")) diff --git a/src/test/frontend/worker/rtc/gen_client_op_test.cljs b/src/test/frontend/worker/rtc/gen_client_op_test.cljs index 63e689635a..c989c51108 100644 --- a/src/test/frontend/worker/rtc/gen_client_op_test.cljs +++ b/src/test/frontend/worker/rtc/gen_client_op_test.cljs @@ -89,7 +89,7 @@ (let [conn (db-test/create-conn) tx-data [[:db/add 1000000 :block/uuid #uuid "66856a29-6eb3-4122-af97-8580a853c6a6" 536870954] [:db/add 1000000 :block/updated-at 1720019497643 536870954] - [:db/add 1000000 :logseq.property/parent :logseq.class/Root 536870954] + [:db/add 1000000 :logseq.property.class/extends :logseq.class/Root 536870954] [:db/add 1000000 :block/created-at 1720019497643 536870954] [:db/add 1000000 :db/ident :user.class/zzz 536870954] [:db/add 1000000 :block/tags :logseq.class/Tag 536870954] @@ -109,7 +109,7 @@ [:block/created-at "[\"~#'\",1720019497643]"] [:block/tags #uuid "00000002-5389-0208-3000-000000000000"] [:block/title "[\"~#'\",\"zzz\"]"] - [:logseq.property/parent #uuid "00000002-2737-8382-7000-000000000000"] + [:logseq.property.class/extends #uuid "00000002-2737-8382-7000-000000000000"] ;;1. shouldn't have :db/ident, :db/ident is special, will be handled later ])}]] (map (fn [[op-type _t op-value]] @@ -179,7 +179,7 @@ (let [repo (state/get-current-repo) db (conn/get-db repo true) ent (d/entity db :logseq.class/Template) - av-coll-attrs #{:logseq.property.class/properties :logseq.property/built-in? :logseq.property/parent + av-coll-attrs #{:logseq.property.class/properties :logseq.property/built-in? :logseq.property.class/extends :block/tags :block/title}] #_{:clj-kondo/ignore [:unresolved-symbol :invalid-arity]} (is (->> (me/find (subject/generate-rtc-ops-from-class-entities [ent]) diff --git a/src/test/frontend/worker/rtc/rtc_fns_test.cljs b/src/test/frontend/worker/rtc/rtc_fns_test.cljs index 8b1b980435..26d4e241af 100644 --- a/src/test/frontend/worker/rtc/rtc_fns_test.cljs +++ b/src/test/frontend/worker/rtc/rtc_fns_test.cljs @@ -179,7 +179,7 @@ :block/order "a2" :block/parent [:block/uuid page-uuid]}] (ldb/get-page @conn page-name) - {:sibling? true :keep-uuid? true})) + {:sibling? false :keep-uuid? true})) (testing "apply-remote-move-ops-test1" (let [data-from-ws {:req-id "req-id" :t 1 ;; not used @@ -249,7 +249,7 @@ :block/left [:block/uuid uuid1-client] :block/parent [:block/uuid page-uuid]}] (ldb/get-page @conn page-name) - {:sibling? true :keep-uuid? true})) + {:sibling? false :keep-uuid? true})) (testing "apply-remote-remove-ops-test1" (let [data-from-ws {:req-id "req-id" :t 1 :t-before 0 :affected-blocks @@ -406,7 +406,7 @@ result: :block/left [:block/uuid uuid1-client] :block/parent [:block/uuid page1-uuid]}] (ldb/get-page @conn page-name) - {:sibling? true :keep-uuid? true})) + {:sibling? false :keep-uuid? true})) (let [data-from-ws {:req-id "req-id" :t 1 :t-before 0 :affected-blocks {page2-uuid {:op :update-page diff --git a/src/test/migration/64.8.transit b/src/test/migration/64.8.transit new file mode 100644 index 0000000000..9ac89046d1 --- /dev/null +++ b/src/test/migration/64.8.transit @@ -0,0 +1 @@ +["~#datascript/DB",["^ ","~:schema",["^ ","~i32","~:logseq.property.node/display-type","~i64","~:logseq.property.tldraw/shape","~i96","~:logseq.property/icon","~i128","~:logseq.property.history/scalar-value","~:logseq.property.view/type.table",["^ ","~:db/ident","^:"],"~:logseq.property/ui-position",["^ ","~:db/index",true,"~:db/cardinality","~:db.cardinality/one","^;","^<"],"~:file/created-at",["^ "],"~:logseq.property.repeat/temporal-property",["^ ","^=",true,"~:db/valueType","~:db.type/ref","^>","^?","^;","^A"],"~:logseq.property.user/name",["^ ","^=",true,"^>","^?","^;","^D"],"~i1","~:logseq.class/Root","~i33","~:logseq.property/description","~i65","~:logseq.property.journal/title-format","~i97","~:logseq.property/publishing-public?","~:logseq.property.pdf/hl-image",["^ ","^=",true,"^B","^C","^>","^?","^;","^L"],"~i129","~:logseq.property/created-by","~i161","~:user.class/c1-WZWvHmP_","~:logseq.property.fsrs/state",["^ ","^=",true,"^>","^?","^;","^Q"],"~:logseq.property.pdf/hl-color",["^ ","^=",true,"^B","^C","^>","^?","^;","^R"],"~:logseq.kv/graph-initial-schema-version",["^ ","^;","^S"],"~:block/tx-id",["^ "],"~:logseq.property/value",["^ ","^=",true,"^>","^?","^;","^U"],"~:logseq.property.repeat/recur-unit.week",["^ ","^;","^V"],"~i2","~:logseq.class/Tag","~i34","~:logseq.property.code/lang","~i66","~:logseq.property/choice-checkbox-state","~i98","~:logseq.property/exclude-from-graph-view","~i130","~:logseq.property/created-by-ref","~i162","~:user.class/c2-MLtnsZDo","~:logseq.property.table/sorting",["^ ","^=",true,"^>","^?","^;","^16"],"~:logseq.property.table/pinned-columns",["^ ","^=",true,"^B","^C","^>","~:db.cardinality/many","^;","^17"],"~:logseq.property.repeat/recur-unit.day",["^ ","^;","^19"],"~i3","~:logseq.class/Property","~i35","~:logseq.property/parent","~i67","~:logseq.property/checkbox-display-properties","~i99","~:logseq.property.view/type","~i131","~:logseq.property/used-template","~i163","~:user.class/c3-ohC96z8l","~i4","~:logseq.class/Template","~i68","~:logseq.property/status","~i100","^:","~i132","~:logseq.property/template-applied-to","~:logseq.property/deadline",["^ ","^=",true,"^>","^?","^;","^1K"],"~:logseq.property/type",["^ ","^=",true,"^>","^?","^;","^1L"],"~:logseq.property.repeat/recur-unit.year",["^ ","^;","^1M"],"~:file/content",["^ "],"~i5","~:logseq.kv/db-type","~i37","~:logseq.property/default-value","~i69","~:logseq.property/status.backlog","~i101","~:logseq.property.view/type.list","~i133","~:logseq.class/Page","~i165","~:user.class/c4-jwaGdjpF","~:logseq.property.table/sized-columns",["^ ","^=",true,"^>","^?","^;","^1Z"],"~:block/alias",["^ ","^=",true,"^B","^C","^>","^18","^;","^1["],"~i6","~:logseq.kv/schema-version","~:logseq.property.user/avatar",["^ ","^=",true,"^>","^?","^;","^21"],"~i38","~:logseq.property/scalar-default-value","~i70","~:logseq.property/status.todo","~i102","~:logseq.property.view/type.gallery","~i134","~:logseq.class/Journal","~:kv/value",["^ "],"^23",["^ ","^=",true,"^>","^?","^;","^23"],"~:logseq.property.asset/type",["^ ","^=",true,"^>","^?","^;","^2;"],"~:logseq.class/Asset",["^ ","^;","^2<"],"~:logseq.property/color.green",["^ ","^;","^2="],"~i7","^S","~i39","~:logseq.property.class/properties","~i71","~:logseq.property/status.doing","~i103","~:logseq.property.view/feature-type","~i135","~:logseq.class/Whiteboard","~:logseq.property.linked-references/includes",["^ ","^=",true,"^B","^C","^>","^18","^;","^2F"],"~:logseq.property.repeat/recur-unit",["^ ","^=",true,"^B","^C","^>","^?","^;","^2G"],"^1>",["^ ","^=",true,"^B","^C","^>","^18","^;","^1>"],"~:block/link",["^ ","^=",true,"^B","^C","^>","^?","^;","^2H"],"^1@",["^ ","^=",true,"^B","^C","^>","^?","^;","^1@"],"~:logseq.class/Quote-block",["^ ","^;","^2I"],"~:logseq.property/heading",["^ ","^=",true,"^>","^?","^;","^2J"],"~i8","~:logseq.kv/graph-created-at","~i40","~:logseq.property/hide-empty-value","~i72","~:logseq.property/status.in-review","~i104","~:logseq.property.view/group-by-property","~:block/uuid",["^ ","~:db/unique","~:db.unique/identity"],"~i136","~:logseq.class/Task","~:logseq.property/color.purple",["^ ","^;","^2W"],"~:logseq.property.table/hidden-columns",["^ ","^=",true,"^>","^18","^;","^2X"],"^1:",["^ ","^;","^1:"],"~i9","~:logseq.property/empty-placeholder","~i73","~:logseq.property/status.done","~i105","^16","^1W",["^ ","^;","^1W"],"~i137","~:logseq.class/Query","~:block/updated-at",["^ ","^=",true,"^>","^?","^;","^33"],"~:logseq.property/color.blue",["^ ","^;","^34"],"~i10","^1L","~i42","~:logseq.property.class/hide-from-node","~i74","~:logseq.property/status.canceled","~i106","~:logseq.property.table/filters","~i138","~:logseq.class/Card","^1U",["^ ","^;","^1U"],"~i11","~:logseq.property/built-in?","~:file/size",["^ "],"~i43","~:logseq.property/query","^1G",["^ ","^=",true,"^B","^C","^>","^?","^;","^1G"],"~i75","~:logseq.property/priority","~i107","^2X","~i139","~:logseq.class/Cards","^2M",["^ ","^=",true,"^>","^?","^;","^2M"],"~:block/refs",["^ ","^=",true,"^B","^C","^>","^18","^;","^3H"],"^3=",["^ ","^;","^3="],"^N",["^ ","^=",true,"^>","^?","^;","^N"],"~i12","~:logseq.property/hide?","~i44","~:logseq.property/page-tags","~i76","~:logseq.property/priority.low","~i108","~:logseq.property.table/ordered-columns","~i140","^2<","^15",["^ ","^;","^15"],"^2Q",["^ ","^=",true,"^B","^C","^>","^?","^;","^2Q"],"~:logseq.property/view-context",["^ ","^=",true,"^>","^?","^;","^3R"],"^20",["^ ","^;","^20"],"~:logseq.property.pdf/hl-page",["^ ","^=",true,"^>","^?","^;","^3S"],"~i13","~:logseq.property/created-from-property","~:block/closed-value-property",["^ ","^=",true,"^B","^C","^>","^18","^;","^3V"],"~i77","~:logseq.property/priority.medium","~i109","^1Z","~:logseq.property.asset/checksum",["^ ","^=",true,"^>","^?","^;","^3Z"],"^K",["^ ","^=",true,"^>","^?","^;","^K"],"~i141","~:logseq.class/Code-block","^3",["^ ","^=",true,"^>","^?","^;","^3"],"^1S",["^ ","^;","^1S"],"~i14","~:logseq.property/public?","~:file/last-modified-at",["^ "],"~i46","~:logseq.property/background-color","~i78","~:logseq.property/priority.high","~i110","^17","~i142","^2I","^2?",["^ ","^=",true,"^B","^C","^>","^18","^;","^2?"],"^1B",["^ ","^=",true,"^B","^C","^>","^?","^;","^1B"],"~:logseq.property/enable-history?",["^ ","^=",true,"^>","^?","^;","^4:"],"~i15","^3R","~i47","^2J","~i79","~:logseq.property/priority.urgent","~:logseq.class/Math-block",["^ ","^;","^4?"],"~i111","~:logseq.property/view-for","~i143","^4?","~:block/created-at",["^ ","^=",true,"^>","^?","^;","^4C"],"^9",["^ ","^=",true,"^>","^?","^;","^9"],"^3L",["^ ","^=",true,"^B","^C","^>","^18","^;","^3L"],"~:logseq.property/scheduled",["^ ","^=",true,"^>","^?","^;","^4D"],"^2V",["^ ","^;","^2V"],"~:block/collapsed?",["^ ","^=",true,"^>","^?","^;","^4E"],"~:logseq.property.asset/last-visit-page",["^ ","^=",true,"^>","^?","^;","^4F"],"~:logseq.property.tldraw/page",["^ ","^=",true,"^>","^?","^;","^4G"],"~i16","^<","~i48","~:logseq.property/asset","~i80","^1K","^P",["^ ","^;","^P"],"~i112","^2;","~i144","~:logseq.class/Pdf-annotation","^3?",["^ ","^=",true,"^>","^?","^;","^3?"],"~i17","~:logseq.property/classes","~i49","~:logseq.property/ls-type","^37",["^ ","^=",true,"^>","^?","^;","^37"],"~i113","~:logseq.property.asset/size","~:logseq.property.linked-references/excludes",["^ ","^=",true,"^B","^C","^>","^18","^;","^4U"],"^2C",["^ ","^=",true,"^>","^?","^;","^2C"],"^40",["^ ","^;","^40"],"^[",["^ ","^=",true,"^>","^?","^;","^["],"~:logseq.property.repeat/checked-property",["^ ","^=",true,"^B","^C","^>","^?","^;","^4V"],"~:logseq.property.asset/resize-metadata",["^ ","^=",true,"^>","^?","^;","^4W"],"^4R",["^ ","^=",true,"^>","^?","^;","^4R"],"^3G",["^ ","^;","^3G"],"^1D",["^ ","^;","^1D"],"~:logseq.property.user/email",["^ ","^=",true,"^>","^?","^;","^4X"],"^4A",["^ ","^=",true,"^B","^C","^>","^?","^;","^4A"],"~i18","^U","^3B",["^ ","^=",true,"^B","^C","^>","^?","^;","^3B"],"~i50","~:logseq.property.pdf/hl-type","~i82","^4D","~i114","^3Z","^3J",["^ ","^=",true,"^>","^?","^;","^3J"],"^45",["^ ","^=",true,"^B","^C","^>","^?","^;","^45"],"~:logseq.property.repeat/recur-frequency",["^ ","^=",true,"^B","^C","^>","^?","^;","^52"],"^1Q",["^ ","^=",true,"^B","^C","^>","^?","^;","^1Q"],"~:block/journal-day",["^ ","^=",true],"^1Y",["^ ","^;","^1Y"],"~:logseq.property/color.red",["^ ","^;","^54"],"~i19","^1[","^E",["^ ","^;","^E"],"~i51","^R","~i115","^4F","~:logseq.property.repeat/recur-unit.minute",["^ ","^;","^58"],"^2Y",["^ ","^;","^2Y"],"^Y",["^ ","^=",true,"^>","^?","^;","^Y"],"~i20","~:block/tags","~i52","~:logseq.property/color.yellow","~i84","^52","~i116","~:logseq.property.asset/remote-metadata","^13",["^ ","^=",true,"^B","^C","^>","^?","^;","^13"],"^47",["^ ","^;","^47"],"^3N",["^ ","^;","^3N"],"^5:",["^ ","^=",true,"^B","^C","^>","^18","^;","^5:"],"~:block/title",["^ ","^=",true,"^>","^?","^;","^5@"],"^5",["^ ","^=",true,"^>","^?","^;","^5"],"^2E",["^ ","^;","^2E"],"~i21","~:block/parent","~i53","^54","~i117","^4W","^3U",["^ ","^=",true,"^B","^C","^>","^?","^;","^3U"],"^7",["^ ","^=",true,"^>","^?","^;","^7"],"^4>",["^ ","^;","^4>"],"^4T",["^ ","^=",true,"^>","^?","^;","^4T"],"~i22","~:block/order","~i54","^2=","~i86","^2G","~i118","~:logseq.property.fsrs/due","^4P",["^ ","^=",true,"^B","^C","^>","^18","^;","^4P"],"^4J",["^ ","^=",true,"^B","^C","^>","^?","^;","^4J"],"^2K",["^ ","^;","^2K"],"~i23","^4E","~i55","^34","~i87","^58","~i119","^Q","~:logseq.property/order-list-type",["^ ","^=",true,"^B","^C","^>","^?","^;","^5O"],"^11",["^ ","^=",true,"^>","^?","^;","^11"],"~i24","~:block/page","~i56","^2W","^4[",["^ ","^=",true,"^>","^?","^;","^4["],"~i88","~:logseq.property.repeat/recur-unit.hour","~i120","^D","^;",["^ ","^2S","^2T"],"^27",["^ ","^;","^27"],"^G",["^ ","^=",true,"^B","^C","^>","^?","^;","^G"],"~:logseq.property.history/block",["^ ","^=",true,"^B","^C","^>","^?","^;","^5V"],"~:block/path-refs",["^ ","^=",true,"^B","^C","^>","^18","^;","^5W"],"^5B",["^ ","^=",true,"^B","^C","^>","^?","^;","^5B"],"~i25","^3H","~i57","^3S","~i89","^19","~i121","^4X","^29",["^ ","^;","^29"],"~i26","^5W","~i58","^L","~i90","^V","^5T",["^ ","^;","^5T"],"^5<",["^ ","^;","^5<"],"~i122","^21","^3X",["^ ","^;","^3X"],"~:logseq.property.history/property",["^ ","^=",true,"^B","^C","^>","^?","^;","^64"],"~:logseq.property.pdf/hl-value",["^ ","^=",true,"^>","^?","^;","^65"],"^32",["^ ","^;","^32"],"~i27","^2H","~i59","^65","~i91","~:logseq.property.repeat/recur-unit.month","~i123","^4:","^5?",["^ ","^=",true,"^>","^?","^;","^5?"],"^69",["^ ","^;","^69"],"^5F",["^ ","^=",true,"^>","^?","^;","^5F"],"^3D",["^ ","^=",true,"^B","^C","^>","^?","^;","^3D"],"~:logseq.property.history/ref-value",["^ ","^=",true,"^B","^C","^>","^?","^;","^6;"],"^5J",["^ ","^=",true,"^>","^?","^;","^5J"],"~i28","^5@","^2A",["^ ","^;","^2A"],"~i60","^5O","~i92","^1M","^5Q",["^ ","^=",true,"^B","^C","^>","^?","^;","^5Q"],"~:block/name",["^ ","^=",true],"^4N",["^ ","^;","^4N"],"^3P",["^ ","^=",true,"^>","^?","^;","^3P"],"~:file/path",["^ ","^2S","^2T"],"~i29","^3V","~i61","^2F","~i93","~:logseq.property.repeat/repeated?","~i125","^5V","^6D",["^ ","^=",true,"^>","^?","^;","^6D"],"^W",["^ ","^;","^W"],"^2O",["^ ","^;","^2O"],"^42",["^ ","^=",true,"^>","^?","^;","^42"],"^1<",["^ ","^=",true,"^B","^C","^>","^?","^;","^1<"],"~i30","^4C","~i62","^4U","~i94","^A","~i126","^64","^39",["^ ","^;","^39"],"^1J",["^ ","^=",true,"^B","^C","^>","^18","^;","^1J"],"^1E",["^ ","^;","^1E"],"^I",["^ ","^=",true,"^>","^?","^;","^I"],"^2[",["^ ","^;","^2["],"~i31","^33","~i63","^4G","^1O",["^ ","^;","^1O"],"~i95","^4V","~i127","^6;","^3;",["^ ","^=",true,"^>","^?","^;","^3;"],"^25",["^ ","^;","^25"]],"~:datoms",["~#list",[["~#datascript/Datom",[1,"^4C",1747407249336,536870913]],["^6P",[1,"^6?","root tag",536870913]],["^6P",[1,"^5:",2,536870913]],["^6P",[1,"^5@","Root Tag",536870913]],["^6P",[1,"^33",1747407249336,536870913]],["^6P",[1,"^2R","~u00000002-2737-8382-7000-000000000000",536870913]],["^6P",[1,"^;","^E",536870913]],["^6P",[1,"^3?",true,536870913]],["^6P",[2,"^4C",1747407249336,536870913]],["^6P",[2,"^6?","tag",536870913]],["^6P",[2,"^5:",2,536870913]],["^6P",[2,"^5@","Tag",536870913]],["^6P",[2,"^33",1747407249336,536870913]],["^6P",[2,"^2R","~u00000002-5389-0208-3000-000000000000",536870913]],["^6P",[2,"^;","^W",536870913]],["^6P",[2,"^3?",true,536870913]],["^6P",[2,"^1<",1,536870913]],["^6P",[3,"^4C",1747407249336,536870913]],["^6P",[3,"^6?","property",536870913]],["^6P",[3,"^5:",2,536870913]],["^6P",[3,"^5@","Property",536870913]],["^6P",[3,"^33",1747407249336,536870913]],["^6P",[3,"^2R","~u00000002-1038-7670-4800-000000000000",536870913]],["^6P",[3,"^;","^1:",536870913]],["^6P",[3,"^3?",true,536870913]],["^6P",[3,"^1<",1,536870913]],["^6P",[4,"^4C",1747407249337,536870913]],["^6P",[4,"^6?","template",536870913]],["^6P",[4,"^5:",2,536870913]],["^6P",[4,"^5@","Template",536870913]],["^6P",[4,"^33",1747407249337,536870913]],["^6P",[4,"^2R","~u00000002-1720-8548-4600-000000000000",536870913]],["^6P",[4,"^;","^1E",536870913]],["^6P",[4,"^3?",true,536870913]],["^6P",[4,"^1<",1,536870913]],["^6P",[4,"^2?",132,536870913]],["^6P",[5,"^;","^1O",536870913]],["^6P",[5,"^2:","db",536870913]],["^6P",[6,"^;","^20",536870913]],["^6P",[6,"^2:",["^ ","~:major",64,"~:minor",8],536870913]],["^6P",[7,"^;","^S",536870913]],["^6P",[7,"^2:",["^ ","^6Q",64,"^6R",8],536870913]],["^6P",[8,"^;","^2K",536870913]],["^6P",[8,"^2:",1747407249331,536870913]],["^6P",[9,"^;","^2Y",536870913]],["^6P",[10,"^4C",1747407249331,536870913]],["^6P",[10,"^6?","property type",536870913]],["^6P",[10,"^5F","czyz",536870913]],["^6P",[10,"^5:",3,536870913]],["^6P",[10,"^5@","Property type",536870913]],["^6P",[10,"^33",1747407249331,536870913]],["^6P",[10,"^2R","~u00000002-8384-2404-0000-000000000000",536870913]],["^6P",[10,"^>","^?",536870913]],["^6P",[10,"^;","^1L",536870913]],["^6P",[10,"^=",true,536870913]],["^6P",[10,"^3?",true,536870913]],["^6P",[10,"^3J",true,536870913]],["^6P",[10,"^1L","~:keyword",536870913]],["^6P",[11,"^4C",1747407249331,536870913]],["^6P",[11,"^6?","built in?",536870913]],["^6P",[11,"^5F","czz0",536870913]],["^6P",[11,"^5:",3,536870913]],["^6P",[11,"^5@","Built in?",536870913]],["^6P",[11,"^33",1747407249331,536870913]],["^6P",[11,"^2R","~u00000002-1125-9581-6000-000000000000",536870913]],["^6P",[11,"^>","^?",536870913]],["^6P",[11,"^;","^3?",536870913]],["^6P",[11,"^=",true,536870913]],["^6P",[11,"^3?",true,536870913]],["^6P",[11,"^3J",true,536870913]],["^6P",[11,"^1L","~:checkbox",536870913]],["^6P",[12,"^4C",1747407249332,536870913]],["^6P",[12,"^6?","hide this property",536870913]],["^6P",[12,"^5F","czz1",536870913]],["^6P",[12,"^5:",3,536870913]],["^6P",[12,"^5@","Hide this property",536870913]],["^6P",[12,"^33",1747407249332,536870913]],["^6P",[12,"^2R","~u00000002-6836-5746-0000-000000000000",536870913]],["^6P",[12,"^>","^?",536870913]],["^6P",[12,"^;","^3J",536870913]],["^6P",[12,"^=",true,536870913]],["^6P",[12,"^3?",true,536870913]],["^6P",[12,"^3J",true,536870913]],["^6P",[12,"^1L","^6T",536870913]],["^6P",[13,"^4C",1747407249332,536870913]],["^6P",[13,"^6?","created from property",536870913]],["^6P",[13,"^5F","czz2",536870913]],["^6P",[13,"^5:",3,536870913]],["^6P",[13,"^5@","Created from property",536870913]],["^6P",[13,"^33",1747407249332,536870913]],["^6P",[13,"^2R","~u00000002-8618-9226-7000-000000000000",536870913]],["^6P",[13,"^>","^?",536870913]],["^6P",[13,"^;","^3U",536870913]],["^6P",[13,"^=",true,536870913]],["^6P",[13,"^B","^C",536870913]],["^6P",[13,"^3?",true,536870913]],["^6P",[13,"^3J",true,536870913]],["^6P",[13,"^1L","~:entity",536870913]],["^6P",[14,"^4C",1747407249332,536870913]],["^6P",[14,"^6?","property public?",536870913]],["^6P",[14,"^5F","czz3",536870913]],["^6P",[14,"^5:",3,536870913]],["^6P",[14,"^5@","Property public?",536870913]],["^6P",[14,"^33",1747407249332,536870913]],["^6P",[14,"^2R","~u00000002-1843-0851-4900-000000000000",536870913]],["^6P",[14,"^>","^?",536870913]],["^6P",[14,"^;","^42",536870913]],["^6P",[14,"^=",true,536870913]],["^6P",[14,"^3?",true,536870913]],["^6P",[14,"^3J",true,536870913]],["^6P",[14,"^1L","^6T",536870913]],["^6P",[15,"^4C",1747407249332,536870913]],["^6P",[15,"^6?","property view context",536870913]],["^6P",[15,"^5F","czz4",536870913]],["^6P",[15,"^5:",3,536870913]],["^6P",[15,"^5@","Property view context",536870913]],["^6P",[15,"^33",1747407249332,536870913]],["^6P",[15,"^2R","~u00000002-1547-3958-2800-000000000000",536870913]],["^6P",[15,"^>","^?",536870913]],["^6P",[15,"^;","^3R",536870913]],["^6P",[15,"^=",true,536870913]],["^6P",[15,"^3?",true,536870913]],["^6P",[15,"^3J",true,536870913]],["^6P",[15,"^1L","^6S",536870913]],["^6P",[16,"^4C",1747407249332,536870913]],["^6P",[16,"^6?","property position",536870913]],["^6P",[16,"^5F","czz5",536870913]],["^6P",[16,"^5:",3,536870913]],["^6P",[16,"^5@","Property position",536870913]],["^6P",[16,"^33",1747407249332,536870913]],["^6P",[16,"^2R","~u00000002-1869-2008-6400-000000000000",536870913]],["^6P",[16,"^>","^?",536870913]],["^6P",[16,"^;","^<",536870913]],["^6P",[16,"^=",true,536870913]],["^6P",[16,"^3?",true,536870913]],["^6P",[16,"^3J",true,536870913]],["^6P",[16,"^1L","^6S",536870913]],["^6P",[17,"^4C",1747407249332,536870913]],["^6P",[17,"^6?","property classes",536870913]],["^6P",[17,"^5F","czz6",536870913]],["^6P",[17,"^5:",3,536870913]],["^6P",[17,"^5@","Property classes",536870913]],["^6P",[17,"^33",1747407249332,536870913]],["^6P",[17,"^2R","~u00000002-9137-5048-6000-000000000000",536870913]],["^6P",[17,"^>","^18",536870913]],["^6P",[17,"^;","^4P",536870913]],["^6P",[17,"^=",true,536870913]],["^6P",[17,"^B","^C",536870913]],["^6P",[17,"^3?",true,536870913]],["^6P",[17,"^3J",true,536870913]],["^6P",[17,"^42",false,536870913]],["^6P",[17,"^1L","^6U",536870913]],["^6P",[18,"^4C",1747407249332,536870913]],["^6P",[18,"^6?","property value",536870913]],["^6P",[18,"^5F","czz7",536870913]],["^6P",[18,"^5:",3,536870913]],["^6P",[18,"^5@","Property value",536870913]],["^6P",[18,"^33",1747407249332,536870913]],["^6P",[18,"^2R","~u00000002-1396-5248-6500-000000000000",536870913]],["^6P",[18,"^>","^?",536870913]],["^6P",[18,"^;","^U",536870913]],["^6P",[18,"^=",true,536870913]],["^6P",[18,"^3?",true,536870913]],["^6P",[18,"^3J",true,536870913]],["^6P",[18,"^42",false,536870913]],["^6P",[18,"^1L","~:any",536870913]],["^6P",[19,"^4C",1747407249332,536870913]],["^6P",[19,"^6?","alias",536870913]],["^6P",[19,"^5F","czz8",536870913]],["^6P",[19,"^5:",3,536870913]],["^6P",[19,"^5@","Alias",536870913]],["^6P",[19,"^33",1747407249332,536870913]],["^6P",[19,"^2R","~u00000002-2112-6446-9900-000000000000",536870913]],["^6P",[19,"^>","^18",536870913]],["^6P",[19,"^;","^1[",536870913]],["^6P",[19,"^=",true,536870913]],["^6P",[19,"^B","^C",536870913]],["^6P",[19,"^3?",true,536870913]],["^6P",[19,"^42",true,536870913]],["^6P",[19,"^1L","~:page",536870913]],["^6P",[19,"^3R","^6W",536870913]],["^6P",[20,"^4C",1747407249332,536870913]],["^6P",[20,"^6?","tags",536870913]],["^6P",[20,"^5F","czz9",536870913]],["^6P",[20,"^5:",3,536870913]],["^6P",[20,"^5@","Tags",536870913]],["^6P",[20,"^33",1747407249332,536870913]],["^6P",[20,"^2R","~u00000002-1814-9483-4000-000000000000",536870913]],["^6P",[20,"^>","^18",536870913]],["^6P",[20,"^;","^5:",536870913]],["^6P",[20,"^=",true,536870913]],["^6P",[20,"^B","^C",536870913]],["^6P",[20,"^3?",true,536870913]],["^6P",[20,"^42",true,536870913]],["^6P",[20,"^1L","~:class",536870913]],["^6P",[21,"^4C",1747407249332,536870913]],["^6P",[21,"^6?","node parent",536870913]],["^6P",[21,"^5F","czzA",536870913]],["^6P",[21,"^5:",3,536870913]],["^6P",[21,"^5@","Node parent",536870913]],["^6P",[21,"^33",1747407249332,536870913]],["^6P",[21,"^2R","~u00000002-9183-0906-4000-000000000000",536870913]],["^6P",[21,"^>","^?",536870913]],["^6P",[21,"^;","^5B",536870913]],["^6P",[21,"^=",true,536870913]],["^6P",[21,"^B","^C",536870913]],["^6P",[21,"^3?",true,536870913]],["^6P",[21,"^3J",true,536870913]],["^6P",[21,"^42",false,536870913]],["^6P",[21,"^1L","^6U",536870913]],["^6P",[22,"^4C",1747407249332,536870913]],["^6P",[22,"^6?","node order",536870913]],["^6P",[22,"^5F","czzB",536870913]],["^6P",[22,"^5:",3,536870913]],["^6P",[22,"^5@","Node order",536870913]],["^6P",[22,"^33",1747407249332,536870913]],["^6P",[22,"^2R","~u00000002-1429-2824-3700-000000000000",536870913]],["^6P",[22,"^>","^?",536870913]],["^6P",[22,"^;","^5F",536870913]],["^6P",[22,"^=",true,536870913]],["^6P",[22,"^3?",true,536870913]],["^6P",[22,"^3J",true,536870913]],["^6P",[22,"^42",false,536870913]],["^6P",[22,"^1L","~:string",536870913]],["^6P",[23,"^4C",1747407249332,536870913]],["^6P",[23,"^6?","node collapsed?",536870913]],["^6P",[23,"^5F","czzC",536870913]],["^6P",[23,"^5:",3,536870913]],["^6P",[23,"^5@","Node collapsed?",536870913]],["^6P",[23,"^33",1747407249332,536870913]],["^6P",[23,"^2R","~u00000002-2140-2109-9100-000000000000",536870913]],["^6P",[23,"^>","^?",536870913]],["^6P",[23,"^;","^4E",536870913]],["^6P",[23,"^=",true,536870913]],["^6P",[23,"^3?",true,536870913]],["^6P",[23,"^3J",true,536870913]],["^6P",[23,"^42",false,536870913]],["^6P",[23,"^1L","^6T",536870913]],["^6P",[24,"^4C",1747407249332,536870913]],["^6P",[24,"^6?","node page",536870913]],["^6P",[24,"^5F","czzD",536870913]],["^6P",[24,"^5:",3,536870913]],["^6P",[24,"^5@","Node page",536870913]],["^6P",[24,"^33",1747407249332,536870913]],["^6P",[24,"^2R","~u00000002-8223-1410-8000-000000000000",536870913]],["^6P",[24,"^>","^?",536870913]],["^6P",[24,"^;","^5Q",536870913]],["^6P",[24,"^=",true,536870913]],["^6P",[24,"^B","^C",536870913]],["^6P",[24,"^3?",true,536870913]],["^6P",[24,"^3J",true,536870913]],["^6P",[24,"^42",false,536870913]],["^6P",[24,"^1L","^6U",536870913]],["^6P",[25,"^4C",1747407249333,536870913]],["^6P",[25,"^6?","node references",536870913]],["^6P",[25,"^5F","czzE",536870913]],["^6P",[25,"^5:",3,536870913]],["^6P",[25,"^5@","Node references",536870913]],["^6P",[25,"^33",1747407249333,536870913]],["^6P",[25,"^2R","~u00000002-1214-4953-4900-000000000000",536870913]],["^6P",[25,"^>","^18",536870913]],["^6P",[25,"^;","^3H",536870913]],["^6P",[25,"^=",true,536870913]],["^6P",[25,"^B","^C",536870913]],["^6P",[25,"^3?",true,536870913]],["^6P",[25,"^3J",true,536870913]],["^6P",[25,"^42",false,536870913]],["^6P",[25,"^1L","^6U",536870913]],["^6P",[26,"^4C",1747407249333,536870913]],["^6P",[26,"^6?","node path references",536870913]],["^6P",[26,"^5F","czzF",536870913]],["^6P",[26,"^5:",3,536870913]],["^6P",[26,"^5@","Node path references",536870913]],["^6P",[26,"^33",1747407249333,536870913]],["^6P",[26,"^2R","~u00000002-2109-1813-5200-000000000000",536870913]],["^6P",[26,"^>","^18",536870913]],["^6P",[26,"^;","^5W",536870913]],["^6P",[26,"^=",true,536870913]],["^6P",[26,"^B","^C",536870913]],["^6P",[26,"^3?",true,536870913]],["^6P",[26,"^3J",true,536870913]],["^6P",[26,"^42",false,536870913]],["^6P",[26,"^1L","^6U",536870913]],["^6P",[27,"^4C",1747407249333,536870913]],["^6P",[27,"^6?","node links to",536870913]],["^6P",[27,"^5F","czzG",536870913]],["^6P",[27,"^5:",3,536870913]],["^6P",[27,"^5@","Node links to",536870913]],["^6P",[27,"^33",1747407249333,536870913]],["^6P",[27,"^2R","~u00000002-1872-3999-9300-000000000000",536870913]],["^6P",[27,"^>","^?",536870913]],["^6P",[27,"^;","^2H",536870913]],["^6P",[27,"^=",true,536870913]],["^6P",[27,"^B","^C",536870913]],["^6P",[27,"^3?",true,536870913]],["^6P",[27,"^3J",true,536870913]],["^6P",[27,"^42",false,536870913]],["^6P",[27,"^1L","^6U",536870913]],["^6P",[28,"^4C",1747407249333,536870913]],["^6P",[28,"^6?","node title",536870913]],["^6P",[28,"^5F","czzH",536870913]],["^6P",[28,"^5:",3,536870913]],["^6P",[28,"^5@","Node title",536870913]],["^6P",[28,"^33",1747407249333,536870913]],["^6P",[28,"^2R","~u00000002-7104-4568-4000-000000000000",536870913]],["^6P",[28,"^>","^?",536870913]],["^6P",[28,"^;","^5@",536870913]],["^6P",[28,"^=",true,536870913]],["^6P",[28,"^3?",true,536870913]],["^6P",[28,"^3J",true,536870913]],["^6P",[28,"^42",false,536870913]],["^6P",[28,"^1L","^6Y",536870913]],["^6P",[29,"^4C",1747407249333,536870913]],["^6P",[29,"^6?","closed value property",536870913]],["^6P",[29,"^5F","czzI",536870913]],["^6P",[29,"^5:",3,536870913]],["^6P",[29,"^5@","Closed value property",536870913]],["^6P",[29,"^33",1747407249333,536870913]],["^6P",[29,"^2R","~u00000002-1157-7928-1300-000000000000",536870913]],["^6P",[29,"^>","^?",536870913]],["^6P",[29,"^;","^3V",536870913]],["^6P",[29,"^=",true,536870913]],["^6P",[29,"^B","^C",536870913]],["^6P",[29,"^3?",true,536870913]],["^6P",[29,"^3J",true,536870913]],["^6P",[29,"^42",false,536870913]],["^6P",[29,"^1L","^6U",536870913]],["^6P",[30,"^4C",1747407249333,536870913]],["^6P",[30,"^6?","node created at",536870913]],["^6P",[30,"^5F","czzJ",536870913]],["^6P",[30,"^5:",3,536870913]],["^6P",[30,"^5@","Node created at",536870913]],["^6P",[30,"^33",1747407249333,536870913]],["^6P",[30,"^2R","~u00000002-1440-0150-0000-000000000000",536870913]],["^6P",[30,"^>","^?",536870913]],["^6P",[30,"^;","^4C",536870913]],["^6P",[30,"^=",true,536870913]],["^6P",[30,"^3?",true,536870913]],["^6P",[30,"^3J",true,536870913]],["^6P",[30,"^42",false,536870913]],["^6P",[30,"^1L","~:datetime",536870913]],["^6P",[31,"^4C",1747407249333,536870913]],["^6P",[31,"^6?","node updated at",536870913]],["^6P",[31,"^5F","czzK",536870913]],["^6P",[31,"^5:",3,536870913]],["^6P",[31,"^5@","Node updated at",536870913]],["^6P",[31,"^33",1747407249333,536870913]],["^6P",[31,"^2R","~u00000002-1516-5505-5100-000000000000",536870913]],["^6P",[31,"^>","^?",536870913]],["^6P",[31,"^;","^33",536870913]],["^6P",[31,"^=",true,536870913]],["^6P",[31,"^3?",true,536870913]],["^6P",[31,"^3J",true,536870913]],["^6P",[31,"^42",false,536870913]],["^6P",[31,"^1L","^6Z",536870913]],["^6P",[32,"^4C",1747407249333,536870913]],["^6P",[32,"^6?","node display type",536870913]],["^6P",[32,"^5F","czzL",536870913]],["^6P",[32,"^5:",3,536870913]],["^6P",[32,"^5@","Node Display Type",536870913]],["^6P",[32,"^33",1747407249333,536870913]],["^6P",[32,"^2R","~u00000002-4424-4618-9000-000000000000",536870913]],["^6P",[32,"^>","^?",536870913]],["^6P",[32,"^;","^3",536870913]],["^6P",[32,"^=",true,536870913]],["^6P",[32,"^3?",true,536870913]],["^6P",[32,"^3J",true,536870913]],["^6P",[32,"^42",false,536870913]],["^6P",[32,"^1L","^6S",536870913]],["^6P",[32,"^3R","~:block",536870913]],["^6P",[33,"^4C",1747407249333,536870913]],["^6P",[33,"^6?","description",536870913]],["^6P",[33,"^5F","czzM",536870913]],["^6P",[33,"^5:",3,536870913]],["^6P",[33,"^5@","Description",536870913]],["^6P",[33,"^33",1747407249333,536870913]],["^6P",[33,"^2R","~u00000002-3362-3620-0000-000000000000",536870913]],["^6P",[33,"^>","^?",536870913]],["^6P",[33,"^;","^G",536870913]],["^6P",[33,"^=",true,536870913]],["^6P",[33,"^B","^C",536870913]],["^6P",[33,"^3?",true,536870913]],["^6P",[33,"^42",true,536870913]],["^6P",[33,"^1L","~:default",536870913]],["^6P",[34,"^4C",1747407249333,536870913]],["^6P",[34,"^6?","code mode",536870913]],["^6P",[34,"^5F","czzN",536870913]],["^6P",[34,"^5:",3,536870913]],["^6P",[34,"^5@","Code Mode",536870913]],["^6P",[34,"^33",1747407249333,536870913]],["^6P",[34,"^2R","~u00000002-8578-9716-5000-000000000000",536870913]],["^6P",[34,"^>","^?",536870913]],["^6P",[34,"^;","^Y",536870913]],["^6P",[34,"^=",true,536870913]],["^6P",[34,"^3?",true,536870913]],["^6P",[34,"^3J",true,536870913]],["^6P",[34,"^42",false,536870913]],["^6P",[34,"^1L","^6Y",536870913]],["^6P",[34,"^3R","^6[",536870913]],["^6P",[35,"^4C",1747407249333,536870913]],["^6P",[35,"^6?","parent",536870913]],["^6P",[35,"^5F","czzO",536870913]],["^6P",[35,"^5:",3,536870913]],["^6P",[35,"^5@","Parent",536870913]],["^6P",[35,"^33",1747407249333,536870913]],["^6P",[35,"^2R","~u00000002-1779-8450-9000-000000000000",536870913]],["^6P",[35,"^>","^?",536870913]],["^6P",[35,"^;","^1<",536870913]],["^6P",[35,"^=",true,536870913]],["^6P",[35,"^B","^C",536870913]],["^6P",[35,"^3?",true,536870913]],["^6P",[35,"^G",36,536870913]],["^6P",[35,"^42",true,536870913]],["^6P",[35,"^1L","~:node",536870913]],["^6P",[35,"^3R","^6W",536870913]],["^6P",[36,"^4C",1747407249333,536870913]],["^6P",[36,"^5F","czzP",536870913]],["^6P",[36,"^5Q",35,536870913]],["^6P",[36,"^5B",35,536870913]],["^6P",[36,"^5@","Provides parent-child relationships between nodes. For tags this enables inheritance and for pages this enables namespaces.",536870913]],["^6P",[36,"^33",1747407249333,536870913]],["^6P",[36,"^2R","~u00000004-6576-7869-2000-000000000000",536870913]],["^6P",[36,"^3?",true,536870913]],["^6P",[36,"^3U",33,536870913]],["^6P",[37,"^4C",1747407249333,536870913]],["^6P",[37,"^6?","default value",536870913]],["^6P",[37,"^5F","czzQ",536870913]],["^6P",[37,"^5:",3,536870913]],["^6P",[37,"^5@","Default value",536870913]],["^6P",[37,"^33",1747407249333,536870913]],["^6P",[37,"^2R","~u00000002-8920-7966-2000-000000000000",536870913]],["^6P",[37,"^>","^?",536870913]],["^6P",[37,"^;","^1Q",536870913]],["^6P",[37,"^=",true,536870913]],["^6P",[37,"^B","^C",536870913]],["^6P",[37,"^3?",true,536870913]],["^6P",[37,"^3J",true,536870913]],["^6P",[37,"^42",false,536870913]],["^6P",[37,"^1L","^6U",536870913]],["^6P",[37,"^3R","~:property",536870913]],["^6P",[38,"^4C",1747407249333,536870913]],["^6P",[38,"^6?","non ref type default value",536870913]],["^6P",[38,"^5F","czzR",536870913]],["^6P",[38,"^5:",3,536870913]],["^6P",[38,"^5@","Non ref type default value",536870913]],["^6P",[38,"^33",1747407249333,536870913]],["^6P",[38,"^2R","~u00000002-1595-7230-1400-000000000000",536870913]],["^6P",[38,"^>","^?",536870913]],["^6P",[38,"^;","^23",536870913]],["^6P",[38,"^=",true,536870913]],["^6P",[38,"^3?",true,536870913]],["^6P",[38,"^3J",true,536870913]],["^6P",[38,"^42",false,536870913]],["^6P",[38,"^1L","^6V",536870913]],["^6P",[38,"^3R","^72",536870913]],["^6P",[39,"^4C",1747407249333,536870913]],["^6P",[39,"^6?","tag properties",536870913]],["^6P",[39,"^5F","czzS",536870913]],["^6P",[39,"^5:",3,536870913]],["^6P",[39,"^5@","Tag Properties",536870913]],["^6P",[39,"^33",1747407249333,536870913]],["^6P",[39,"^2R","~u00000002-2123-7120-5000-000000000000",536870913]],["^6P",[39,"^>","^18",536870913]],["^6P",[39,"^;","^2?",536870913]],["^6P",[39,"^=",true,536870913]],["^6P",[39,"^B","^C",536870913]],["^6P",[39,"^3?",true,536870913]],["^6P",[39,"^42",true,536870913]],["^6P",[39,"^1L","^72",536870913]],["^6P",[39,"^3R","~:never",536870913]],["^6P",[40,"^4C",1747407249333,536870913]],["^6P",[40,"^6?","hide empty value",536870913]],["^6P",[40,"^5F","czzT",536870913]],["^6P",[40,"^5:",3,536870913]],["^6P",[40,"^5@","Hide empty value",536870913]],["^6P",[40,"^33",1747407249333,536870913]],["^6P",[40,"^2R","~u00000002-2062-3258-9900-000000000000",536870913]],["^6P",[40,"^>","^?",536870913]],["^6P",[40,"^;","^2M",536870913]],["^6P",[40,"^=",true,536870913]],["^6P",[40,"^3?",true,536870913]],["^6P",[40,"^G",41,536870913]],["^6P",[40,"^42",true,536870913]],["^6P",[40,"^1L","^6T",536870913]],["^6P",[40,"^3R","^72",536870913]],["^6P",[41,"^4C",1747407249333,536870913]],["^6P",[41,"^5F","czzU",536870913]],["^6P",[41,"^5Q",40,536870913]],["^6P",[41,"^5B",40,536870913]],["^6P",[41,"^5@","Hides a property's value on any node when empty e.g. when a property appears on a node through a tag.",536870913]],["^6P",[41,"^33",1747407249333,536870913]],["^6P",[41,"^2R","~u00000004-1118-8585-8000-000000000000",536870913]],["^6P",[41,"^3?",true,536870913]],["^6P",[41,"^3U",33,536870913]],["^6P",[42,"^4C",1747407249333,536870913]],["^6P",[42,"^6?","hide from node",536870913]],["^6P",[42,"^5F","czzV",536870913]],["^6P",[42,"^5:",3,536870913]],["^6P",[42,"^5@","Hide from Node",536870913]],["^6P",[42,"^33",1747407249333,536870913]],["^6P",[42,"^2R","~u00000002-2610-3727-0000-000000000000",536870913]],["^6P",[42,"^>","^?",536870913]],["^6P",[42,"^;","^37",536870913]],["^6P",[42,"^=",true,536870913]],["^6P",[42,"^3?",true,536870913]],["^6P",[42,"^42",true,536870913]],["^6P",[42,"^1L","^6T",536870913]],["^6P",[42,"^3R","^6X",536870913]],["^6P",[43,"^4C",1747407249333,536870913]],["^6P",[43,"^6?","query",536870913]],["^6P",[43,"^5F","czzW",536870913]],["^6P",[43,"^5:",3,536870913]],["^6P",[43,"^5@","Query",536870913]],["^6P",[43,"^33",1747407249333,536870913]],["^6P",[43,"^2R","~u00000002-9741-4126-0000-000000000000",536870913]],["^6P",[43,"^>","^?",536870913]],["^6P",[43,"^;","^3B",536870913]],["^6P",[43,"^=",true,536870913]],["^6P",[43,"^B","^C",536870913]],["^6P",[43,"^3?",true,536870913]],["^6P",[43,"^3J",true,536870913]],["^6P",[43,"^42",true,536870913]],["^6P",[43,"^1L","^70",536870913]],["^6P",[43,"^3R","^6[",536870913]],["^6P",[44,"^4C",1747407249333,536870913]],["^6P",[44,"^6?","page tags",536870913]],["^6P",[44,"^5F","czzX",536870913]],["^6P",[44,"^5:",3,536870913]],["^6P",[44,"^5@","Page Tags",536870913]],["^6P",[44,"^33",1747407249333,536870913]],["^6P",[44,"^2R","~u00000002-2133-5311-8500-000000000000",536870913]],["^6P",[44,"^>","^18",536870913]],["^6P",[44,"^;","^3L",536870913]],["^6P",[44,"^=",true,536870913]],["^6P",[44,"^B","^C",536870913]],["^6P",[44,"^3?",true,536870913]],["^6P",[44,"^G",45,536870913]],["^6P",[44,"^42",true,536870913]],["^6P",[44,"^1L","^6W",536870913]],["^6P",[44,"^3R","^6W",536870913]],["^6P",[45,"^4C",1747407249333,536870913]],["^6P",[45,"^5F","czzY",536870913]],["^6P",[45,"^5Q",44,536870913]],["^6P",[45,"^5B",44,536870913]],["^6P",[45,"^5@","Provides a way for a page to associate to another page i.e. backward compatible tagging.",536870913]],["^6P",[45,"^33",1747407249333,536870913]],["^6P",[45,"^2R","~u00000004-1223-8671-8000-000000000000",536870913]],["^6P",[45,"^3?",true,536870913]],["^6P",[45,"^3U",33,536870913]],["^6P",[46,"^4C",1747407249333,536870913]],["^6P",[46,"^6?","background color",536870913]],["^6P",[46,"^5F","czzZ",536870913]],["^6P",[46,"^5:",3,536870913]],["^6P",[46,"^5@","Background color",536870913]],["^6P",[46,"^33",1747407249333,536870913]],["^6P",[46,"^2R","~u00000002-5191-2660-6000-000000000000",536870913]],["^6P",[46,"^>","^?",536870913]],["^6P",[46,"^;","^45",536870913]],["^6P",[46,"^=",true,536870913]],["^6P",[46,"^B","^C",536870913]],["^6P",[46,"^3?",true,536870913]],["^6P",[46,"^3J",true,536870913]],["^6P",[46,"^1L","^70",536870913]],["^6P",[47,"^4C",1747407249333,536870913]],["^6P",[47,"^6?","heading",536870913]],["^6P",[47,"^5F","czza",536870913]],["^6P",[47,"^5:",3,536870913]],["^6P",[47,"^5@","Heading",536870913]],["^6P",[47,"^33",1747407249333,536870913]],["^6P",[47,"^2R","~u00000002-1858-7494-1500-000000000000",536870913]],["^6P",[47,"^>","^?",536870913]],["^6P",[47,"^;","^2J",536870913]],["^6P",[47,"^=",true,536870913]],["^6P",[47,"^3?",true,536870913]],["^6P",[47,"^3J",true,536870913]],["^6P",[47,"^1L","^6V",536870913]],["^6P",[48,"^4C",1747407249333,536870913]],["^6P",[48,"^6?","asset",536870913]],["^6P",[48,"^5F","czzb",536870913]],["^6P",[48,"^5:",3,536870913]],["^6P",[48,"^5@","Asset",536870913]],["^6P",[48,"^33",1747407249333,536870913]],["^6P",[48,"^2R","~u00000002-8768-5679-0000-000000000000",536870913]],["^6P",[48,"^>","^?",536870913]],["^6P",[48,"^;","^4J",536870913]],["^6P",[48,"^=",true,536870913]],["^6P",[48,"^B","^C",536870913]],["^6P",[48,"^3?",true,536870913]],["^6P",[48,"^3J",true,536870913]],["^6P",[48,"^1L","^6U",536870913]],["^6P",[49,"^4C",1747407249334,536870913]],["^6P",[49,"^6?","ls-type",536870913]],["^6P",[49,"^5F","czzc",536870913]],["^6P",[49,"^5:",3,536870913]],["^6P",[49,"^5@","ls-type",536870913]],["^6P",[49,"^33",1747407249334,536870913]],["^6P",[49,"^2R","~u00000002-3269-7934-5000-000000000000",536870913]],["^6P",[49,"^>","^?",536870913]],["^6P",[49,"^;","^4R",536870913]],["^6P",[49,"^=",true,536870913]],["^6P",[49,"^3?",true,536870913]],["^6P",[49,"^3J",true,536870913]],["^6P",[49,"^1L","^6S",536870913]],["^6P",[50,"^4C",1747407249334,536870913]],["^6P",[50,"^6?","annotation type",536870913]],["^6P",[50,"^5F","czzd",536870913]],["^6P",[50,"^5:",3,536870913]],["^6P",[50,"^5@","Annotation type",536870913]],["^6P",[50,"^33",1747407249334,536870913]],["^6P",[50,"^2R","~u00000002-9984-3783-2000-000000000000",536870913]],["^6P",[50,"^>","^?",536870913]],["^6P",[50,"^;","^4[",536870913]],["^6P",[50,"^=",true,536870913]],["^6P",[50,"^3?",true,536870913]],["^6P",[50,"^3J",true,536870913]],["^6P",[50,"^1L","^6S",536870913]],["^6P",[51,"^4C",1747407249334,536870913]],["^6P",[51,"^6?","annotation color",536870913]],["^6P",[51,"^5F","czze",536870913]],["^6P",[51,"^5:",3,536870913]],["^6P",[51,"^5@","Annotation color",536870913]],["^6P",[51,"^33",1747407249334,536870913]],["^6P",[51,"^2R","~u00000002-6747-9388-7000-000000000000",536870913]],["^6P",[51,"^>","^?",536870913]],["^6P",[51,"^;","^R",536870913]],["^6P",[51,"^=",true,536870913]],["^6P",[51,"^B","^C",536870913]],["^6P",[51,"^3?",true,536870913]],["^6P",[51,"^3J",true,536870913]],["^6P",[51,"^1L","^70",536870913]],["^6P",[52,"^3V",51,536870913]],["^6P",[52,"^4C",1747407249334,536870913]],["^6P",[52,"^5F","czzf",536870913]],["^6P",[52,"^5Q",51,536870913]],["^6P",[52,"^5B",51,536870913]],["^6P",[52,"^5@","yellow",536870913]],["^6P",[52,"^33",1747407249334,536870913]],["^6P",[52,"^2R","~u00000002-1752-1030-0200-000000000000",536870913]],["^6P",[52,"^;","^5<",536870913]],["^6P",[52,"^3?",true,536870913]],["^6P",[52,"^3U",51,536870913]],["^6P",[53,"^3V",51,536870913]],["^6P",[53,"^4C",1747407249334,536870913]],["^6P",[53,"^5F","czzg",536870913]],["^6P",[53,"^5Q",51,536870913]],["^6P",[53,"^5B",51,536870913]],["^6P",[53,"^5@","red",536870913]],["^6P",[53,"^33",1747407249334,536870913]],["^6P",[53,"^2R","~u00000002-4136-2216-2000-000000000000",536870913]],["^6P",[53,"^;","^54",536870913]],["^6P",[53,"^3?",true,536870913]],["^6P",[53,"^3U",51,536870913]],["^6P",[54,"^3V",51,536870913]],["^6P",[54,"^4C",1747407249334,536870913]],["^6P",[54,"^5F","czzh",536870913]],["^6P",[54,"^5Q",51,536870913]],["^6P",[54,"^5B",51,536870913]],["^6P",[54,"^5@","green",536870913]],["^6P",[54,"^33",1747407249334,536870913]],["^6P",[54,"^2R","~u00000002-1992-2016-2600-000000000000",536870913]],["^6P",[54,"^;","^2=",536870913]],["^6P",[54,"^3?",true,536870913]],["^6P",[54,"^3U",51,536870913]],["^6P",[55,"^3V",51,536870913]],["^6P",[55,"^4C",1747407249334,536870913]],["^6P",[55,"^5F","czzi",536870913]],["^6P",[55,"^5Q",51,536870913]],["^6P",[55,"^5B",51,536870913]],["^6P",[55,"^5@","blue",536870913]],["^6P",[55,"^33",1747407249334,536870913]],["^6P",[55,"^2R","~u00000002-1836-0512-4100-000000000000",536870913]],["^6P",[55,"^;","^34",536870913]],["^6P",[55,"^3?",true,536870913]],["^6P",[55,"^3U",51,536870913]],["^6P",[56,"^3V",51,536870913]],["^6P",[56,"^4C",1747407249334,536870913]],["^6P",[56,"^5F","czzj",536870913]],["^6P",[56,"^5Q",51,536870913]],["^6P",[56,"^5B",51,536870913]],["^6P",[56,"^5@","purple",536870913]],["^6P",[56,"^33",1747407249334,536870913]],["^6P",[56,"^2R","~u00000002-1104-3848-5600-000000000000",536870913]],["^6P",[56,"^;","^2W",536870913]],["^6P",[56,"^3?",true,536870913]],["^6P",[56,"^3U",51,536870913]],["^6P",[57,"^4C",1747407249334,536870913]],["^6P",[57,"^6?","annotation page",536870913]],["^6P",[57,"^5F","czzk",536870913]],["^6P",[57,"^5:",3,536870913]],["^6P",[57,"^5@","Annotation page",536870913]],["^6P",[57,"^33",1747407249334,536870913]],["^6P",[57,"^2R","~u00000002-7532-8459-6000-000000000000",536870913]],["^6P",[57,"^>","^?",536870913]],["^6P",[57,"^;","^3S",536870913]],["^6P",[57,"^=",true,536870913]],["^6P",[57,"^3?",true,536870913]],["^6P",[57,"^3J",true,536870913]],["^6P",[57,"^1L","~:raw-number",536870913]],["^6P",[58,"^4C",1747407249334,536870913]],["^6P",[58,"^6?","annotation image",536870913]],["^6P",[58,"^5F","czzl",536870913]],["^6P",[58,"^5:",3,536870913]],["^6P",[58,"^5@","Annotation image",536870913]],["^6P",[58,"^33",1747407249334,536870913]],["^6P",[58,"^2R","~u00000002-1377-6700-9000-000000000000",536870913]],["^6P",[58,"^>","^?",536870913]],["^6P",[58,"^;","^L",536870913]],["^6P",[58,"^=",true,536870913]],["^6P",[58,"^B","^C",536870913]],["^6P",[58,"^3?",true,536870913]],["^6P",[58,"^3J",true,536870913]],["^6P",[58,"^1L","^6U",536870913]],["^6P",[59,"^4C",1747407249334,536870913]],["^6P",[59,"^6?","annotation data",536870913]],["^6P",[59,"^5F","czzm",536870913]],["^6P",[59,"^5:",3,536870913]],["^6P",[59,"^5@","Annotation data",536870913]],["^6P",[59,"^33",1747407249334,536870913]],["^6P",[59,"^2R","~u00000002-5458-2940-2000-000000000000",536870913]],["^6P",[59,"^>","^?",536870913]],["^6P",[59,"^;","^65",536870913]],["^6P",[59,"^=",true,536870913]],["^6P",[59,"^3?",true,536870913]],["^6P",[59,"^3J",true,536870913]],["^6P",[59,"^1L","~:map",536870913]],["^6P",[60,"^4C",1747407249334,536870913]],["^6P",[60,"^6?","list type",536870913]],["^6P",[60,"^5F","czzn",536870913]],["^6P",[60,"^5:",3,536870913]],["^6P",[60,"^5@","List type",536870913]],["^6P",[60,"^33",1747407249334,536870913]],["^6P",[60,"^2R","~u00000002-6078-1711-1000-000000000000",536870913]],["^6P",[60,"^>","^?",536870913]],["^6P",[60,"^;","^5O",536870913]],["^6P",[60,"^=",true,536870913]],["^6P",[60,"^B","^C",536870913]],["^6P",[60,"^3?",true,536870913]],["^6P",[60,"^3J",true,536870913]],["^6P",[60,"^1L","^70",536870913]],["^6P",[61,"^4C",1747407249334,536870913]],["^6P",[61,"^6?","included references",536870913]],["^6P",[61,"^5F","czzo",536870913]],["^6P",[61,"^5:",3,536870913]],["^6P",[61,"^5@","Included references",536870913]],["^6P",[61,"^33",1747407249334,536870913]],["^6P",[61,"^2R","~u00000002-1680-5777-0300-000000000000",536870913]],["^6P",[61,"^>","^18",536870913]],["^6P",[61,"^;","^2F",536870913]],["^6P",[61,"^=",true,536870913]],["^6P",[61,"^B","^C",536870913]],["^6P",[61,"^3?",true,536870913]],["^6P",[61,"^3J",true,536870913]],["^6P",[61,"^1L","^71",536870913]],["^6P",[62,"^4C",1747407249334,536870913]],["^6P",[62,"^6?","excluded references",536870913]],["^6P",[62,"^5F","czzp",536870913]],["^6P",[62,"^5:",3,536870913]],["^6P",[62,"^5@","Excluded references",536870913]],["^6P",[62,"^33",1747407249334,536870913]],["^6P",[62,"^2R","~u00000002-2426-7588-9000-000000000000",536870913]],["^6P",[62,"^>","^18",536870913]],["^6P",[62,"^;","^4U",536870913]],["^6P",[62,"^=",true,536870913]],["^6P",[62,"^B","^C",536870913]],["^6P",[62,"^3?",true,536870913]],["^6P",[62,"^3J",true,536870913]],["^6P",[62,"^1L","^71",536870913]],["^6P",[63,"^4C",1747407249334,536870913]],["^6P",[63,"^6?","tldraw page",536870913]],["^6P",[63,"^5F","czzq",536870913]],["^6P",[63,"^5:",3,536870913]],["^6P",[63,"^5@","Tldraw Page",536870913]],["^6P",[63,"^33",1747407249334,536870913]],["^6P",[63,"^2R","~u00000002-3546-2145-7000-000000000000",536870913]],["^6P",[63,"^>","^?",536870913]],["^6P",[63,"^;","^4G",536870913]],["^6P",[63,"^=",true,536870913]],["^6P",[63,"^3?",true,536870913]],["^6P",[63,"^3J",true,536870913]],["^6P",[63,"^1L","^75",536870913]],["^6P",[64,"^4C",1747407249334,536870913]],["^6P",[64,"^6?","tldraw shape",536870913]],["^6P",[64,"^5F","czzr",536870913]],["^6P",[64,"^5:",3,536870913]],["^6P",[64,"^5@","Tldraw Shape",536870913]],["^6P",[64,"^33",1747407249334,536870913]],["^6P",[64,"^2R","~u00000002-1313-2454-2000-000000000000",536870913]],["^6P",[64,"^>","^?",536870913]],["^6P",[64,"^;","^5",536870913]],["^6P",[64,"^=",true,536870913]],["^6P",[64,"^3?",true,536870913]],["^6P",[64,"^3J",true,536870913]],["^6P",[64,"^1L","^75",536870913]],["^6P",[65,"^4C",1747407249334,536870913]],["^6P",[65,"^6?","title format",536870913]],["^6P",[65,"^5F","czzs",536870913]],["^6P",[65,"^5:",3,536870913]],["^6P",[65,"^5@","Title Format",536870913]],["^6P",[65,"^33",1747407249334,536870913]],["^6P",[65,"^2R","~u00000002-1536-4979-5400-000000000000",536870913]],["^6P",[65,"^>","^?",536870913]],["^6P",[65,"^;","^I",536870913]],["^6P",[65,"^=",true,536870913]],["^6P",[65,"^3?",true,536870913]],["^6P",[65,"^42",false,536870913]],["^6P",[65,"^1L","^6Y",536870913]],["^6P",[66,"^4C",1747407249334,536870913]],["^6P",[66,"^6?","choice checkbox state",536870913]],["^6P",[66,"^5F","czzt",536870913]],["^6P",[66,"^5:",3,536870913]],["^6P",[66,"^5@","Choice checkbox state",536870913]],["^6P",[66,"^33",1747407249334,536870913]],["^6P",[66,"^2R","~u00000002-1272-4228-6300-000000000000",536870913]],["^6P",[66,"^>","^?",536870913]],["^6P",[66,"^;","^[",536870913]],["^6P",[66,"^=",true,536870913]],["^6P",[66,"^3?",true,536870913]],["^6P",[66,"^3J",true,536870913]],["^6P",[66,"^1L","^6T",536870913]],["^6P",[67,"^4C",1747407249334,536870913]],["^6P",[67,"^6?","properties displayed as checkbox",536870913]],["^6P",[67,"^5F","czzu",536870913]],["^6P",[67,"^5:",3,536870913]],["^6P",[67,"^5@","Properties displayed as checkbox",536870913]],["^6P",[67,"^33",1747407249334,536870913]],["^6P",[67,"^2R","~u00000002-3215-3256-9000-000000000000",536870913]],["^6P",[67,"^>","^18",536870913]],["^6P",[67,"^;","^1>",536870913]],["^6P",[67,"^=",true,536870913]],["^6P",[67,"^B","^C",536870913]],["^6P",[67,"^3?",true,536870913]],["^6P",[67,"^3J",true,536870913]],["^6P",[67,"^1L","^72",536870913]],["^6P",[68,"^4C",1747407249334,536870913]],["^6P",[68,"^6?","status",536870913]],["^6P",[68,"^5F","czzv",536870913]],["^6P",[68,"^5:",3,536870913]],["^6P",[68,"^5@","Status",536870913]],["^6P",[68,"^33",1747407249334,536870913]],["^6P",[68,"^2R","~u00000002-9072-1685-3000-000000000000",536870913]],["^6P",[68,"^>","^?",536870913]],["^6P",[68,"^;","^1G",536870913]],["^6P",[68,"^=",true,536870913]],["^6P",[68,"^B","^C",536870913]],["^6P",[68,"^3?",true,536870913]],["^6P",[68,"^1Q",70,536870913]],["^6P",[68,"^4:",true,536870913]],["^6P",[68,"^2M",true,536870913]],["^6P",[68,"^42",true,536870913]],["^6P",[68,"^1L","^70",536870913]],["^6P",[68,"^<","~:block-left",536870913]],["^6P",[69,"^3V",68,536870913]],["^6P",[69,"^4C",1747407249334,536870913]],["^6P",[69,"^5F","czzw",536870913]],["^6P",[69,"^5Q",68,536870913]],["^6P",[69,"^5B",68,536870913]],["^6P",[69,"^5@","Backlog",536870913]],["^6P",[69,"^33",1747407249334,536870913]],["^6P",[69,"^2R","~u00000002-7233-3491-0000-000000000000",536870913]],["^6P",[69,"^;","^1S",536870913]],["^6P",[69,"^3?",true,536870913]],["^6P",[69,"^3U",68,536870913]],["^6P",[69,"^7",["^ ","~:type","~:tabler-icon","~:id","Backlog"],536870913]],["^6P",[70,"^3V",68,536870913]],["^6P",[70,"^4C",1747407249334,536870913]],["^6P",[70,"^5F","czzx",536870913]],["^6P",[70,"^5Q",68,536870913]],["^6P",[70,"^5B",68,536870913]],["^6P",[70,"^5@","Todo",536870913]],["^6P",[70,"^33",1747407249334,536870913]],["^6P",[70,"^2R","~u00000002-1615-5853-7700-000000000000",536870913]],["^6P",[70,"^;","^25",536870913]],["^6P",[70,"^3?",true,536870913]],["^6P",[70,"^[",false,536870913]],["^6P",[70,"^3U",68,536870913]],["^6P",[70,"^7",["^ ","^77","^78","^79","Todo"],536870913]],["^6P",[71,"^3V",68,536870913]],["^6P",[71,"^4C",1747407249334,536870913]],["^6P",[71,"^5F","czzy",536870913]],["^6P",[71,"^5Q",68,536870913]],["^6P",[71,"^5B",68,536870913]],["^6P",[71,"^5@","Doing",536870913]],["^6P",[71,"^33",1747407249334,536870913]],["^6P",[71,"^2R","~u00000002-1840-1229-0800-000000000000",536870913]],["^6P",[71,"^;","^2A",536870913]],["^6P",[71,"^3?",true,536870913]],["^6P",[71,"^3U",68,536870913]],["^6P",[71,"^7",["^ ","^77","^78","^79","InProgress50"],536870913]],["^6P",[72,"^3V",68,536870913]],["^6P",[72,"^4C",1747407249334,536870913]],["^6P",[72,"^5F","czzz",536870913]],["^6P",[72,"^5Q",68,536870913]],["^6P",[72,"^5B",68,536870913]],["^6P",[72,"^5@","In Review",536870913]],["^6P",[72,"^33",1747407249334,536870913]],["^6P",[72,"^2R","~u00000002-1870-0014-4300-000000000000",536870913]],["^6P",[72,"^;","^2O",536870913]],["^6P",[72,"^3?",true,536870913]],["^6P",[72,"^3U",68,536870913]],["^6P",[72,"^7",["^ ","^77","^78","^79","InReview"],536870913]],["^6P",[73,"^3V",68,536870913]],["^6P",[73,"^4C",1747407249334,536870913]],["^6P",[73,"^5F","d0000",536870913]],["^6P",[73,"^5Q",68,536870913]],["^6P",[73,"^5B",68,536870913]],["^6P",[73,"^5@","Done",536870913]],["^6P",[73,"^33",1747407249334,536870913]],["^6P",[73,"^2R","~u00000002-1827-5820-8200-000000000000",536870913]],["^6P",[73,"^;","^2[",536870913]],["^6P",[73,"^3?",true,536870913]],["^6P",[73,"^[",true,536870913]],["^6P",[73,"^3U",68,536870913]],["^6P",[73,"^7",["^ ","^77","^78","^79","Done"],536870913]],["^6P",[74,"^3V",68,536870913]],["^6P",[74,"^4C",1747407249334,536870913]],["^6P",[74,"^5F","d0001",536870913]],["^6P",[74,"^5Q",68,536870913]],["^6P",[74,"^5B",68,536870913]],["^6P",[74,"^5@","Canceled",536870913]],["^6P",[74,"^33",1747407249334,536870913]],["^6P",[74,"^2R","~u00000002-7526-4326-2000-000000000000",536870913]],["^6P",[74,"^;","^39",536870913]],["^6P",[74,"^3?",true,536870913]],["^6P",[74,"^3U",68,536870913]],["^6P",[74,"^7",["^ ","^77","^78","^79","Cancelled"],536870913]],["^6P",[75,"^4C",1747407249334,536870913]],["^6P",[75,"^6?","priority",536870913]],["^6P",[75,"^5F","d0002",536870913]],["^6P",[75,"^5:",3,536870913]],["^6P",[75,"^5@","Priority",536870913]],["^6P",[75,"^33",1747407249334,536870913]],["^6P",[75,"^2R","~u00000002-2392-2841-1000-000000000000",536870913]],["^6P",[75,"^>","^?",536870913]],["^6P",[75,"^;","^3D",536870913]],["^6P",[75,"^=",true,536870913]],["^6P",[75,"^B","^C",536870913]],["^6P",[75,"^3?",true,536870913]],["^6P",[75,"^4:",true,536870913]],["^6P",[75,"^2M",true,536870913]],["^6P",[75,"^42",true,536870913]],["^6P",[75,"^1L","^70",536870913]],["^6P",[75,"^<","^76",536870913]],["^6P",[76,"^3V",75,536870913]],["^6P",[76,"^4C",1747407249334,536870913]],["^6P",[76,"^5F","d0003",536870913]],["^6P",[76,"^5Q",75,536870913]],["^6P",[76,"^5B",75,536870913]],["^6P",[76,"^5@","Low",536870913]],["^6P",[76,"^33",1747407249334,536870913]],["^6P",[76,"^2R","~u00000002-2107-4537-4800-000000000000",536870913]],["^6P",[76,"^;","^3N",536870913]],["^6P",[76,"^3?",true,536870913]],["^6P",[76,"^3U",75,536870913]],["^6P",[76,"^7",["^ ","^77","^78","^79","priorityLvlLow"],536870913]],["^6P",[77,"^3V",75,536870913]],["^6P",[77,"^4C",1747407249334,536870913]],["^6P",[77,"^5F","d0004",536870913]],["^6P",[77,"^5Q",75,536870913]],["^6P",[77,"^5B",75,536870913]],["^6P",[77,"^5@","Medium",536870913]],["^6P",[77,"^33",1747407249334,536870913]],["^6P",[77,"^2R","~u00000002-1829-3222-7800-000000000000",536870913]],["^6P",[77,"^;","^3X",536870913]],["^6P",[77,"^3?",true,536870913]],["^6P",[77,"^3U",75,536870913]],["^6P",[77,"^7",["^ ","^77","^78","^79","priorityLvlMedium"],536870913]],["^6P",[78,"^3V",75,536870913]],["^6P",[78,"^4C",1747407249334,536870913]],["^6P",[78,"^5F","d0005",536870913]],["^6P",[78,"^5Q",75,536870913]],["^6P",[78,"^5B",75,536870913]],["^6P",[78,"^5@","High",536870913]],["^6P",[78,"^33",1747407249334,536870913]],["^6P",[78,"^2R","~u00000002-5672-2766-8000-000000000000",536870913]],["^6P",[78,"^;","^47",536870913]],["^6P",[78,"^3?",true,536870913]],["^6P",[78,"^3U",75,536870913]],["^6P",[78,"^7",["^ ","^77","^78","^79","priorityLvlHigh"],536870913]],["^6P",[79,"^3V",75,536870913]],["^6P",[79,"^4C",1747407249334,536870913]],["^6P",[79,"^5F","d0006",536870913]],["^6P",[79,"^5Q",75,536870913]],["^6P",[79,"^5B",75,536870913]],["^6P",[79,"^5@","Urgent",536870913]],["^6P",[79,"^33",1747407249334,536870913]],["^6P",[79,"^2R","~u00000002-1996-4346-6700-000000000000",536870913]],["^6P",[79,"^;","^4>",536870913]],["^6P",[79,"^3?",true,536870913]],["^6P",[79,"^3U",75,536870913]],["^6P",[79,"^7",["^ ","^77","^78","^79","priorityLvlUrgent"],536870913]],["^6P",[80,"^4C",1747407249334,536870913]],["^6P",[80,"^6?","deadline",536870913]],["^6P",[80,"^5F","d0007",536870913]],["^6P",[80,"^5:",3,536870913]],["^6P",[80,"^5@","Deadline",536870913]],["^6P",[80,"^33",1747407249334,536870913]],["^6P",[80,"^2R","~u00000002-1685-9016-0400-000000000000",536870913]],["^6P",[80,"^>","^?",536870913]],["^6P",[80,"^;","^1K",536870913]],["^6P",[80,"^=",true,536870913]],["^6P",[80,"^3?",true,536870913]],["^6P",[80,"^G",81,536870913]],["^6P",[80,"^2M",true,536870913]],["^6P",[80,"^42",true,536870913]],["^6P",[80,"^1L","^6Z",536870913]],["^6P",[80,"^<","~:block-below",536870913]],["^6P",[81,"^4C",1747407249334,536870913]],["^6P",[81,"^5F","d0008",536870913]],["^6P",[81,"^5Q",80,536870913]],["^6P",[81,"^5B",80,536870913]],["^6P",[81,"^5@","Use it to finish something at a specific date(time).",536870913]],["^6P",[81,"^33",1747407249334,536870913]],["^6P",[81,"^2R","~u00000004-1356-3664-2200-000000000000",536870913]],["^6P",[81,"^3?",true,536870913]],["^6P",[81,"^3U",33,536870913]],["^6P",[82,"^4C",1747407249334,536870913]],["^6P",[82,"^6?","scheduled",536870913]],["^6P",[82,"^5F","d0009",536870913]],["^6P",[82,"^5:",3,536870913]],["^6P",[82,"^5@","Scheduled",536870913]],["^6P",[82,"^33",1747407249334,536870913]],["^6P",[82,"^2R","~u00000002-1644-5209-4300-000000000000",536870913]],["^6P",[82,"^>","^?",536870913]],["^6P",[82,"^;","^4D",536870913]],["^6P",[82,"^=",true,536870913]],["^6P",[82,"^3?",true,536870913]],["^6P",[82,"^G",83,536870913]],["^6P",[82,"^2M",true,536870913]],["^6P",[82,"^42",true,536870913]],["^6P",[82,"^1L","^6Z",536870913]],["^6P",[82,"^<","^7:",536870913]],["^6P",[83,"^4C",1747407249334,536870913]],["^6P",[83,"^5F","d000A",536870913]],["^6P",[83,"^5Q",82,536870913]],["^6P",[83,"^5B",82,536870913]],["^6P",[83,"^5@","Use it to plan something to start at a specific date(time).",536870913]],["^6P",[83,"^33",1747407249334,536870913]],["^6P",[83,"^2R","~u00000004-9817-6380-0000-000000000000",536870913]],["^6P",[83,"^3?",true,536870913]],["^6P",[83,"^3U",33,536870913]],["^6P",[84,"^4C",1747407249335,536870913]],["^6P",[84,"^6?","repeating recur frequency",536870913]],["^6P",[84,"^5F","d000B",536870913]],["^6P",[84,"^5:",3,536870913]],["^6P",[84,"^5@","Repeating recur frequency",536870913]],["^6P",[84,"^33",1747407249335,536870913]],["^6P",[84,"^2R","~u00000002-8716-1592-2000-000000000000",536870913]],["^6P",[84,"^>","^?",536870913]],["^6P",[84,"^;","^52",536870913]],["^6P",[84,"^=",true,536870913]],["^6P",[84,"^B","^C",536870913]],["^6P",[84,"^3?",true,536870913]],["^6P",[84,"^1Q",85,536870913]],["^6P",[84,"^2M",true,536870913]],["^6P",[84,"^42",false,536870913]],["^6P",[84,"^1L","~:number",536870913]],["^6P",[85,"^4C",1747407249335,536870913]],["^6P",[85,"^5F","d000C",536870913]],["^6P",[85,"^5Q",84,536870913]],["^6P",[85,"^5B",84,536870913]],["^6P",[85,"^33",1747407249335,536870913]],["^6P",[85,"^2R","~u00000004-1654-1034-2600-000000000000",536870913]],["^6P",[85,"^3?",true,536870913]],["^6P",[85,"^3U",84,536870913]],["^6P",[85,"^U",1,536870913]],["^6P",[86,"^4C",1747407249335,536870913]],["^6P",[86,"^6?","repeating recur unit",536870913]],["^6P",[86,"^5F","d000D",536870913]],["^6P",[86,"^5:",3,536870913]],["^6P",[86,"^5@","Repeating recur unit",536870913]],["^6P",[86,"^33",1747407249335,536870913]],["^6P",[86,"^2R","~u00000002-6903-0624-7000-000000000000",536870913]],["^6P",[86,"^>","^?",536870913]],["^6P",[86,"^;","^2G",536870913]],["^6P",[86,"^=",true,536870913]],["^6P",[86,"^B","^C",536870913]],["^6P",[86,"^3?",true,536870913]],["^6P",[86,"^1Q",89,536870913]],["^6P",[86,"^2M",true,536870913]],["^6P",[86,"^42",false,536870913]],["^6P",[86,"^1L","^70",536870913]],["^6P",[87,"^3V",86,536870913]],["^6P",[87,"^4C",1747407249335,536870913]],["^6P",[87,"^5F","d000E",536870913]],["^6P",[87,"^5Q",86,536870913]],["^6P",[87,"^5B",86,536870913]],["^6P",[87,"^5@","Minute",536870913]],["^6P",[87,"^33",1747407249335,536870913]],["^6P",[87,"^2R","~u00000002-1513-6550-8500-000000000000",536870913]],["^6P",[87,"^;","^58",536870913]],["^6P",[87,"^3?",true,536870913]],["^6P",[87,"^3U",86,536870913]],["^6P",[88,"^3V",86,536870913]],["^6P",[88,"^4C",1747407249335,536870913]],["^6P",[88,"^5F","d000F",536870913]],["^6P",[88,"^5Q",86,536870913]],["^6P",[88,"^5B",86,536870913]],["^6P",[88,"^5@","Hour",536870913]],["^6P",[88,"^33",1747407249335,536870913]],["^6P",[88,"^2R","~u00000002-1438-8849-5400-000000000000",536870913]],["^6P",[88,"^;","^5T",536870913]],["^6P",[88,"^3?",true,536870913]],["^6P",[88,"^3U",86,536870913]],["^6P",[89,"^3V",86,536870913]],["^6P",[89,"^4C",1747407249335,536870913]],["^6P",[89,"^5F","d000G",536870913]],["^6P",[89,"^5Q",86,536870913]],["^6P",[89,"^5B",86,536870913]],["^6P",[89,"^5@","Day",536870913]],["^6P",[89,"^33",1747407249335,536870913]],["^6P",[89,"^2R","~u00000002-3924-1785-8000-000000000000",536870913]],["^6P",[89,"^;","^19",536870913]],["^6P",[89,"^3?",true,536870913]],["^6P",[89,"^3U",86,536870913]],["^6P",[90,"^3V",86,536870913]],["^6P",[90,"^4C",1747407249335,536870913]],["^6P",[90,"^5F","d000H",536870913]],["^6P",[90,"^5Q",86,536870913]],["^6P",[90,"^5B",86,536870913]],["^6P",[90,"^5@","Week",536870913]],["^6P",[90,"^33",1747407249335,536870913]],["^6P",[90,"^2R","~u00000002-2130-9244-4900-000000000000",536870913]],["^6P",[90,"^;","^V",536870913]],["^6P",[90,"^3?",true,536870913]],["^6P",[90,"^3U",86,536870913]],["^6P",[91,"^3V",86,536870913]],["^6P",[91,"^4C",1747407249335,536870913]],["^6P",[91,"^5F","d000I",536870913]],["^6P",[91,"^5Q",86,536870913]],["^6P",[91,"^5B",86,536870913]],["^6P",[91,"^5@","Month",536870913]],["^6P",[91,"^33",1747407249335,536870913]],["^6P",[91,"^2R","~u00000002-2073-3937-9700-000000000000",536870913]],["^6P",[91,"^;","^69",536870913]],["^6P",[91,"^3?",true,536870913]],["^6P",[91,"^3U",86,536870913]],["^6P",[92,"^3V",86,536870913]],["^6P",[92,"^4C",1747407249335,536870913]],["^6P",[92,"^5F","d000J",536870913]],["^6P",[92,"^5Q",86,536870913]],["^6P",[92,"^5B",86,536870913]],["^6P",[92,"^5@","Year",536870913]],["^6P",[92,"^33",1747407249335,536870913]],["^6P",[92,"^2R","~u00000002-1520-4385-2400-000000000000",536870913]],["^6P",[92,"^;","^1M",536870913]],["^6P",[92,"^3?",true,536870913]],["^6P",[92,"^3U",86,536870913]],["^6P",[93,"^4C",1747407249335,536870913]],["^6P",[93,"^6?","node repeats?",536870913]],["^6P",[93,"^5F","d000K",536870913]],["^6P",[93,"^5:",3,536870913]],["^6P",[93,"^5@","Node Repeats?",536870913]],["^6P",[93,"^33",1747407249335,536870913]],["^6P",[93,"^2R","~u00000002-1908-1217-8900-000000000000",536870913]],["^6P",[93,"^>","^?",536870913]],["^6P",[93,"^;","^6D",536870913]],["^6P",[93,"^=",true,536870913]],["^6P",[93,"^3?",true,536870913]],["^6P",[93,"^3J",true,536870913]],["^6P",[93,"^1L","^6T",536870913]],["^6P",[94,"^4C",1747407249335,536870913]],["^6P",[94,"^6?","repeating temporal property",536870913]],["^6P",[94,"^5F","d000L",536870913]],["^6P",[94,"^5:",3,536870913]],["^6P",[94,"^5@","Repeating Temporal Property",536870913]],["^6P",[94,"^33",1747407249335,536870913]],["^6P",[94,"^2R","~u00000002-8346-1078-4000-000000000000",536870913]],["^6P",[94,"^>","^?",536870913]],["^6P",[94,"^;","^A",536870913]],["^6P",[94,"^=",true,536870913]],["^6P",[94,"^B","^C",536870913]],["^6P",[94,"^3?",true,536870913]],["^6P",[94,"^3J",true,536870913]],["^6P",[94,"^1L","^72",536870913]],["^6P",[95,"^4C",1747407249335,536870913]],["^6P",[95,"^6?","repeating checked property",536870913]],["^6P",[95,"^5F","d000M",536870913]],["^6P",[95,"^5:",3,536870913]],["^6P",[95,"^5@","Repeating Checked Property",536870913]],["^6P",[95,"^33",1747407249335,536870913]],["^6P",[95,"^2R","~u00000002-1866-3655-5300-000000000000",536870913]],["^6P",[95,"^>","^?",536870913]],["^6P",[95,"^;","^4V",536870913]],["^6P",[95,"^=",true,536870913]],["^6P",[95,"^B","^C",536870913]],["^6P",[95,"^3?",true,536870913]],["^6P",[95,"^3J",true,536870913]],["^6P",[95,"^1L","^72",536870913]],["^6P",[96,"^4C",1747407249335,536870913]],["^6P",[96,"^6?","icon",536870913]],["^6P",[96,"^5F","d000N",536870913]],["^6P",[96,"^5:",3,536870913]],["^6P",[96,"^5@","Icon",536870913]],["^6P",[96,"^33",1747407249335,536870913]],["^6P",[96,"^2R","~u00000002-5891-2328-5000-000000000000",536870913]],["^6P",[96,"^>","^?",536870913]],["^6P",[96,"^;","^7",536870913]],["^6P",[96,"^=",true,536870913]],["^6P",[96,"^3?",true,536870913]],["^6P",[96,"^1L","^75",536870913]],["^6P",[97,"^4C",1747407249335,536870913]],["^6P",[97,"^6?","publishing public?",536870913]],["^6P",[97,"^5F","d000O",536870913]],["^6P",[97,"^5:",3,536870913]],["^6P",[97,"^5@","Publishing Public?",536870913]],["^6P",[97,"^33",1747407249335,536870913]],["^6P",[97,"^2R","~u00000002-1094-6579-3900-000000000000",536870913]],["^6P",[97,"^>","^?",536870913]],["^6P",[97,"^;","^K",536870913]],["^6P",[97,"^=",true,536870913]],["^6P",[97,"^3?",true,536870913]],["^6P",[97,"^3J",true,536870913]],["^6P",[97,"^42",true,536870913]],["^6P",[97,"^1L","^6T",536870913]],["^6P",[97,"^3R","^6W",536870913]],["^6P",[98,"^4C",1747407249335,536870913]],["^6P",[98,"^6?","excluded from graph view?",536870913]],["^6P",[98,"^5F","d000P",536870913]],["^6P",[98,"^5:",3,536870913]],["^6P",[98,"^5@","Excluded from Graph view?",536870913]],["^6P",[98,"^33",1747407249335,536870913]],["^6P",[98,"^2R","~u00000002-4524-3306-5000-000000000000",536870913]],["^6P",[98,"^>","^?",536870913]],["^6P",[98,"^;","^11",536870913]],["^6P",[98,"^=",true,536870913]],["^6P",[98,"^3?",true,536870913]],["^6P",[98,"^3J",true,536870913]],["^6P",[98,"^42",true,536870913]],["^6P",[98,"^1L","^6T",536870913]],["^6P",[98,"^3R","^6W",536870913]],["^6P",[99,"^4C",1747407249335,536870913]],["^6P",[99,"^6?","view type",536870913]],["^6P",[99,"^5F","d000Q",536870913]],["^6P",[99,"^5:",3,536870913]],["^6P",[99,"^5@","View Type",536870913]],["^6P",[99,"^33",1747407249335,536870913]],["^6P",[99,"^2R","~u00000002-2182-3760-7000-000000000000",536870913]],["^6P",[99,"^>","^?",536870913]],["^6P",[99,"^;","^1@",536870913]],["^6P",[99,"^=",true,536870913]],["^6P",[99,"^B","^C",536870913]],["^6P",[99,"^3?",true,536870913]],["^6P",[99,"^1Q",100,536870913]],["^6P",[99,"^3J",true,536870913]],["^6P",[99,"^42",false,536870913]],["^6P",[99,"^1L","^70",536870913]],["^6P",[100,"^3V",99,536870913]],["^6P",[100,"^4C",1747407249335,536870913]],["^6P",[100,"^5F","d000R",536870913]],["^6P",[100,"^5Q",99,536870913]],["^6P",[100,"^5B",99,536870913]],["^6P",[100,"^5@","Table View",536870913]],["^6P",[100,"^33",1747407249335,536870913]],["^6P",[100,"^2R","~u00000002-1942-5424-0000-000000000000",536870913]],["^6P",[100,"^;","^:",536870913]],["^6P",[100,"^3?",true,536870913]],["^6P",[100,"^3U",99,536870913]],["^6P",[100,"^7",["^ ","^77","^78","^79","table"],536870913]],["^6P",[101,"^3V",99,536870913]],["^6P",[101,"^4C",1747407249335,536870913]],["^6P",[101,"^5F","d000S",536870913]],["^6P",[101,"^5Q",99,536870913]],["^6P",[101,"^5B",99,536870913]],["^6P",[101,"^5@","List View",536870913]],["^6P",[101,"^33",1747407249335,536870913]],["^6P",[101,"^2R","~u00000002-1164-8285-0200-000000000000",536870913]],["^6P",[101,"^;","^1U",536870913]],["^6P",[101,"^3?",true,536870913]],["^6P",[101,"^3U",99,536870913]],["^6P",[101,"^7",["^ ","^77","^78","^79","list"],536870913]],["^6P",[102,"^3V",99,536870913]],["^6P",[102,"^4C",1747407249335,536870913]],["^6P",[102,"^5F","d000T",536870913]],["^6P",[102,"^5Q",99,536870913]],["^6P",[102,"^5B",99,536870913]],["^6P",[102,"^5@","Gallery View",536870913]],["^6P",[102,"^33",1747407249335,536870913]],["^6P",[102,"^2R","~u00000002-1506-0511-2000-000000000000",536870913]],["^6P",[102,"^;","^27",536870913]],["^6P",[102,"^3?",true,536870913]],["^6P",[102,"^3U",99,536870913]],["^6P",[102,"^7",["^ ","^77","^78","^79","layout-grid"],536870913]],["^6P",[103,"^4C",1747407249335,536870913]],["^6P",[103,"^6?","view feature type",536870913]],["^6P",[103,"^5F","d000U",536870913]],["^6P",[103,"^5:",3,536870913]],["^6P",[103,"^5@","View Feature Type",536870913]],["^6P",[103,"^33",1747407249335,536870913]],["^6P",[103,"^2R","~u00000002-9391-4187-1000-000000000000",536870913]],["^6P",[103,"^>","^?",536870913]],["^6P",[103,"^;","^2C",536870913]],["^6P",[103,"^=",true,536870913]],["^6P",[103,"^3?",true,536870913]],["^6P",[103,"^3J",true,536870913]],["^6P",[103,"^42",false,536870913]],["^6P",[103,"^1L","^6S",536870913]],["^6P",[104,"^4C",1747407249335,536870913]],["^6P",[104,"^6?","view group by property",536870913]],["^6P",[104,"^5F","d000V",536870913]],["^6P",[104,"^5:",3,536870913]],["^6P",[104,"^5@","View group by property",536870913]],["^6P",[104,"^33",1747407249335,536870913]],["^6P",[104,"^2R","~u00000002-8092-1623-6000-000000000000",536870913]],["^6P",[104,"^>","^?",536870913]],["^6P",[104,"^;","^2Q",536870913]],["^6P",[104,"^=",true,536870913]],["^6P",[104,"^B","^C",536870913]],["^6P",[104,"^3?",true,536870913]],["^6P",[104,"^3J",true,536870913]],["^6P",[104,"^42",false,536870913]],["^6P",[104,"^1L","^72",536870913]],["^6P",[105,"^4C",1747407249335,536870913]],["^6P",[105,"^6?","view sorting",536870913]],["^6P",[105,"^5F","d000W",536870913]],["^6P",[105,"^5:",3,536870913]],["^6P",[105,"^5@","View sorting",536870913]],["^6P",[105,"^33",1747407249335,536870913]],["^6P",[105,"^2R","~u00000002-2081-0259-4000-000000000000",536870913]],["^6P",[105,"^>","^?",536870913]],["^6P",[105,"^;","^16",536870913]],["^6P",[105,"^=",true,536870913]],["^6P",[105,"^3?",true,536870913]],["^6P",[105,"^3J",true,536870913]],["^6P",[105,"^42",false,536870913]],["^6P",[105,"^1L","~:coll",536870913]],["^6P",[106,"^4C",1747407249335,536870913]],["^6P",[106,"^6?","view filters",536870913]],["^6P",[106,"^5F","d000X",536870913]],["^6P",[106,"^5:",3,536870913]],["^6P",[106,"^5@","View filters",536870913]],["^6P",[106,"^33",1747407249335,536870913]],["^6P",[106,"^2R","~u00000002-1702-3936-3300-000000000000",536870913]],["^6P",[106,"^>","^?",536870913]],["^6P",[106,"^;","^3;",536870913]],["^6P",[106,"^=",true,536870913]],["^6P",[106,"^3?",true,536870913]],["^6P",[106,"^3J",true,536870913]],["^6P",[106,"^42",false,536870913]],["^6P",[106,"^1L","^75",536870913]],["^6P",[107,"^4C",1747407249335,536870913]],["^6P",[107,"^6?","view hidden columns",536870913]],["^6P",[107,"^5F","d000Y",536870913]],["^6P",[107,"^5:",3,536870913]],["^6P",[107,"^5@","View hidden columns",536870913]],["^6P",[107,"^33",1747407249335,536870913]],["^6P",[107,"^2R","~u00000002-9750-5719-2000-000000000000",536870913]],["^6P",[107,"^>","^18",536870913]],["^6P",[107,"^;","^2X",536870913]],["^6P",[107,"^=",true,536870913]],["^6P",[107,"^3?",true,536870913]],["^6P",[107,"^3J",true,536870913]],["^6P",[107,"^42",false,536870913]],["^6P",[107,"^1L","^6S",536870913]],["^6P",[108,"^4C",1747407249335,536870913]],["^6P",[108,"^6?","view ordered columns",536870913]],["^6P",[108,"^5F","d000Z",536870913]],["^6P",[108,"^5:",3,536870913]],["^6P",[108,"^5@","View ordered columns",536870913]],["^6P",[108,"^33",1747407249335,536870913]],["^6P",[108,"^2R","~u00000002-1485-5871-0000-000000000000",536870913]],["^6P",[108,"^>","^?",536870913]],["^6P",[108,"^;","^3P",536870913]],["^6P",[108,"^=",true,536870913]],["^6P",[108,"^3?",true,536870913]],["^6P",[108,"^3J",true,536870913]],["^6P",[108,"^42",false,536870913]],["^6P",[108,"^1L","^7<",536870913]],["^6P",[109,"^4C",1747407249335,536870913]],["^6P",[109,"^6?","view columns settings",536870913]],["^6P",[109,"^5F","d000a",536870913]],["^6P",[109,"^5:",3,536870913]],["^6P",[109,"^5@","View columns settings",536870913]],["^6P",[109,"^33",1747407249335,536870913]],["^6P",[109,"^2R","~u00000002-1675-5105-5500-000000000000",536870913]],["^6P",[109,"^>","^?",536870913]],["^6P",[109,"^;","^1Z",536870913]],["^6P",[109,"^=",true,536870913]],["^6P",[109,"^3?",true,536870913]],["^6P",[109,"^3J",true,536870913]],["^6P",[109,"^42",false,536870913]],["^6P",[109,"^1L","^75",536870913]],["^6P",[110,"^4C",1747407249335,536870913]],["^6P",[110,"^6?","table view pinned columns",536870913]],["^6P",[110,"^5F","d000b",536870913]],["^6P",[110,"^5:",3,536870913]],["^6P",[110,"^5@","Table view pinned columns",536870913]],["^6P",[110,"^33",1747407249335,536870913]],["^6P",[110,"^2R","~u00000002-2673-7513-8000-000000000000",536870913]],["^6P",[110,"^>","^18",536870913]],["^6P",[110,"^;","^17",536870913]],["^6P",[110,"^=",true,536870913]],["^6P",[110,"^B","^C",536870913]],["^6P",[110,"^3?",true,536870913]],["^6P",[110,"^3J",true,536870913]],["^6P",[110,"^42",false,536870913]],["^6P",[110,"^1L","^72",536870913]],["^6P",[111,"^4C",1747407249335,536870913]],["^6P",[111,"^6?","this view belongs to",536870913]],["^6P",[111,"^5F","d000c",536870913]],["^6P",[111,"^5:",3,536870913]],["^6P",[111,"^5@","This view belongs to",536870913]],["^6P",[111,"^33",1747407249335,536870913]],["^6P",[111,"^2R","~u00000002-3627-4319-0000-000000000000",536870913]],["^6P",[111,"^>","^?",536870913]],["^6P",[111,"^;","^4A",536870913]],["^6P",[111,"^=",true,536870913]],["^6P",[111,"^B","^C",536870913]],["^6P",[111,"^3?",true,536870913]],["^6P",[111,"^3J",true,536870913]],["^6P",[111,"^42",false,536870913]],["^6P",[111,"^1L","^71",536870913]],["^6P",[112,"^4C",1747407249335,536870913]],["^6P",[112,"^6?","file type",536870913]],["^6P",[112,"^5F","d000d",536870913]],["^6P",[112,"^5:",3,536870913]],["^6P",[112,"^5@","File Type",536870913]],["^6P",[112,"^33",1747407249335,536870913]],["^6P",[112,"^2R","~u00000002-1142-0830-9800-000000000000",536870913]],["^6P",[112,"^>","^?",536870913]],["^6P",[112,"^;","^2;",536870913]],["^6P",[112,"^=",true,536870913]],["^6P",[112,"^3?",true,536870913]],["^6P",[112,"^3J",true,536870913]],["^6P",[112,"^42",false,536870913]],["^6P",[112,"^1L","^6Y",536870913]],["^6P",[113,"^4C",1747407249335,536870913]],["^6P",[113,"^6?","file size",536870913]],["^6P",[113,"^5F","d000e",536870913]],["^6P",[113,"^5:",3,536870913]],["^6P",[113,"^5@","File Size",536870913]],["^6P",[113,"^33",1747407249335,536870913]],["^6P",[113,"^2R","~u00000002-1167-8621-9000-000000000000",536870913]],["^6P",[113,"^>","^?",536870913]],["^6P",[113,"^;","^4T",536870913]],["^6P",[113,"^=",true,536870913]],["^6P",[113,"^3?",true,536870913]],["^6P",[113,"^3J",true,536870913]],["^6P",[113,"^42",false,536870913]],["^6P",[113,"^1L","^74",536870913]],["^6P",[114,"^4C",1747407249335,536870913]],["^6P",[114,"^6?","file checksum",536870913]],["^6P",[114,"^5F","d000f",536870913]],["^6P",[114,"^5:",3,536870913]],["^6P",[114,"^5@","File checksum",536870913]],["^6P",[114,"^33",1747407249335,536870913]],["^6P",[114,"^2R","~u00000002-1011-4169-7900-000000000000",536870913]],["^6P",[114,"^>","^?",536870913]],["^6P",[114,"^;","^3Z",536870913]],["^6P",[114,"^=",true,536870913]],["^6P",[114,"^3?",true,536870913]],["^6P",[114,"^3J",true,536870913]],["^6P",[114,"^42",false,536870913]],["^6P",[114,"^1L","^6Y",536870913]],["^6P",[115,"^4C",1747407249335,536870913]],["^6P",[115,"^6?","last visit page",536870913]],["^6P",[115,"^5F","d000g",536870913]],["^6P",[115,"^5:",3,536870913]],["^6P",[115,"^5@","Last visit page",536870913]],["^6P",[115,"^33",1747407249335,536870913]],["^6P",[115,"^2R","~u00000002-2107-8035-3500-000000000000",536870913]],["^6P",[115,"^>","^?",536870913]],["^6P",[115,"^;","^4F",536870913]],["^6P",[115,"^=",true,536870913]],["^6P",[115,"^3?",true,536870913]],["^6P",[115,"^3J",true,536870913]],["^6P",[115,"^42",false,536870913]],["^6P",[115,"^1L","^74",536870913]],["^6P",[116,"^4C",1747407249335,536870913]],["^6P",[116,"^6?","file remote metadata",536870913]],["^6P",[116,"^5F","d000h",536870913]],["^6P",[116,"^5:",3,536870913]],["^6P",[116,"^5@","File remote metadata",536870913]],["^6P",[116,"^33",1747407249335,536870913]],["^6P",[116,"^2R","~u00000002-9907-5046-9000-000000000000",536870913]],["^6P",[116,"^>","^?",536870913]],["^6P",[116,"^;","^5?",536870913]],["^6P",[116,"^=",true,536870913]],["^6P",[116,"^3?",true,536870913]],["^6P",[116,"^3J",true,536870913]],["^6P",[116,"^42",false,536870913]],["^6P",[116,"^1L","^75",536870913]],["^6P",[117,"^4C",1747407249335,536870913]],["^6P",[117,"^6?","asset resize metadata",536870913]],["^6P",[117,"^5F","d000i",536870913]],["^6P",[117,"^5:",3,536870913]],["^6P",[117,"^5@","Asset resize metadata",536870913]],["^6P",[117,"^33",1747407249335,536870913]],["^6P",[117,"^2R","~u00000002-1297-5230-5500-000000000000",536870913]],["^6P",[117,"^>","^?",536870913]],["^6P",[117,"^;","^4W",536870913]],["^6P",[117,"^=",true,536870913]],["^6P",[117,"^3?",true,536870913]],["^6P",[117,"^3J",true,536870913]],["^6P",[117,"^42",false,536870913]],["^6P",[117,"^1L","^75",536870913]],["^6P",[118,"^4C",1747407249335,536870913]],["^6P",[118,"^6?","due",536870913]],["^6P",[118,"^5F","d000j",536870913]],["^6P",[118,"^5:",3,536870913]],["^6P",[118,"^5@","Due",536870913]],["^6P",[118,"^33",1747407249335,536870913]],["^6P",[118,"^2R","~u00000002-1089-0805-4900-000000000000",536870913]],["^6P",[118,"^>","^?",536870913]],["^6P",[118,"^;","^5J",536870913]],["^6P",[118,"^=",true,536870913]],["^6P",[118,"^3?",true,536870913]],["^6P",[118,"^3J",false,536870913]],["^6P",[118,"^42",false,536870913]],["^6P",[118,"^1L","^6Z",536870913]],["^6P",[119,"^4C",1747407249336,536870913]],["^6P",[119,"^6?","state",536870913]],["^6P",[119,"^5F","d000k",536870913]],["^6P",[119,"^5:",3,536870913]],["^6P",[119,"^5@","State",536870913]],["^6P",[119,"^33",1747407249336,536870913]],["^6P",[119,"^2R","~u00000002-1165-1650-8700-000000000000",536870913]],["^6P",[119,"^>","^?",536870913]],["^6P",[119,"^;","^Q",536870913]],["^6P",[119,"^=",true,536870913]],["^6P",[119,"^3?",true,536870913]],["^6P",[119,"^3J",false,536870913]],["^6P",[119,"^42",false,536870913]],["^6P",[119,"^1L","^75",536870913]],["^6P",[120,"^4C",1747407249336,536870913]],["^6P",[120,"^6?","user name",536870913]],["^6P",[120,"^5F","d000l",536870913]],["^6P",[120,"^5:",3,536870913]],["^6P",[120,"^5@","User Name",536870913]],["^6P",[120,"^33",1747407249336,536870913]],["^6P",[120,"^2R","~u00000002-1360-0260-1600-000000000000",536870913]],["^6P",[120,"^>","^?",536870913]],["^6P",[120,"^;","^D",536870913]],["^6P",[120,"^=",true,536870913]],["^6P",[120,"^3?",true,536870913]],["^6P",[120,"^3J",false,536870913]],["^6P",[120,"^42",true,536870913]],["^6P",[120,"^1L","^6Y",536870913]],["^6P",[121,"^4C",1747407249336,536870913]],["^6P",[121,"^6?","user email",536870913]],["^6P",[121,"^5F","d000m",536870913]],["^6P",[121,"^5:",3,536870913]],["^6P",[121,"^5@","User Email",536870913]],["^6P",[121,"^33",1747407249336,536870913]],["^6P",[121,"^2R","~u00000002-1655-2060-6300-000000000000",536870913]],["^6P",[121,"^>","^?",536870913]],["^6P",[121,"^;","^4X",536870913]],["^6P",[121,"^=",true,536870913]],["^6P",[121,"^3?",true,536870913]],["^6P",[121,"^3J",false,536870913]],["^6P",[121,"^42",true,536870913]],["^6P",[121,"^1L","^6Y",536870913]],["^6P",[122,"^4C",1747407249336,536870913]],["^6P",[122,"^6?","user avatar",536870913]],["^6P",[122,"^5F","d000n",536870913]],["^6P",[122,"^5:",3,536870913]],["^6P",[122,"^5@","User Avatar",536870913]],["^6P",[122,"^33",1747407249336,536870913]],["^6P",[122,"^2R","~u00000002-4165-4885-8000-000000000000",536870913]],["^6P",[122,"^>","^?",536870913]],["^6P",[122,"^;","^21",536870913]],["^6P",[122,"^=",true,536870913]],["^6P",[122,"^3?",true,536870913]],["^6P",[122,"^3J",false,536870913]],["^6P",[122,"^42",true,536870913]],["^6P",[122,"^1L","^6Y",536870913]],["^6P",[123,"^4C",1747407249336,536870913]],["^6P",[123,"^6?","enable property history",536870913]],["^6P",[123,"^5F","d000o",536870913]],["^6P",[123,"^5:",3,536870913]],["^6P",[123,"^5@","Enable property history",536870913]],["^6P",[123,"^33",1747407249336,536870913]],["^6P",[123,"^2R","~u00000002-8058-5960-2000-000000000000",536870913]],["^6P",[123,"^>","^?",536870913]],["^6P",[123,"^;","^4:",536870913]],["^6P",[123,"^=",true,536870913]],["^6P",[123,"^3?",true,536870913]],["^6P",[123,"^G",124,536870913]],["^6P",[123,"^42",true,536870913]],["^6P",[123,"^1L","^6T",536870913]],["^6P",[123,"^3R","^72",536870913]],["^6P",[124,"^4C",1747407249336,536870913]],["^6P",[124,"^5F","d000p",536870913]],["^6P",[124,"^5Q",123,536870913]],["^6P",[124,"^5B",123,536870913]],["^6P",[124,"^5@","Records history anytime a property's value changes on a node.",536870913]],["^6P",[124,"^33",1747407249336,536870913]],["^6P",[124,"^2R","~u00000004-1438-1481-0000-000000000000",536870913]],["^6P",[124,"^3?",true,536870913]],["^6P",[124,"^3U",33,536870913]],["^6P",[125,"^4C",1747407249336,536870913]],["^6P",[125,"^6?","history block",536870913]],["^6P",[125,"^5F","d000q",536870913]],["^6P",[125,"^5:",3,536870913]],["^6P",[125,"^5@","History block",536870913]],["^6P",[125,"^33",1747407249336,536870913]],["^6P",[125,"^2R","~u00000002-1142-5541-6000-000000000000",536870913]],["^6P",[125,"^>","^?",536870913]],["^6P",[125,"^;","^5V",536870913]],["^6P",[125,"^=",true,536870913]],["^6P",[125,"^B","^C",536870913]],["^6P",[125,"^3?",true,536870913]],["^6P",[125,"^3J",true,536870913]],["^6P",[125,"^1L","^6U",536870913]],["^6P",[126,"^4C",1747407249336,536870913]],["^6P",[126,"^6?","history property",536870913]],["^6P",[126,"^5F","d000r",536870913]],["^6P",[126,"^5:",3,536870913]],["^6P",[126,"^5@","History property",536870913]],["^6P",[126,"^33",1747407249336,536870913]],["^6P",[126,"^2R","~u00000002-1600-4090-8200-000000000000",536870913]],["^6P",[126,"^>","^?",536870913]],["^6P",[126,"^;","^64",536870913]],["^6P",[126,"^=",true,536870913]],["^6P",[126,"^B","^C",536870913]],["^6P",[126,"^3?",true,536870913]],["^6P",[126,"^3J",true,536870913]],["^6P",[126,"^1L","^72",536870913]],["^6P",[127,"^4C",1747407249336,536870913]],["^6P",[127,"^6?","history value",536870913]],["^6P",[127,"^5F","d000s",536870913]],["^6P",[127,"^5:",3,536870913]],["^6P",[127,"^5@","History value",536870913]],["^6P",[127,"^33",1747407249336,536870913]],["^6P",[127,"^2R","~u00000002-5131-3603-7000-000000000000",536870913]],["^6P",[127,"^>","^?",536870913]],["^6P",[127,"^;","^6;",536870913]],["^6P",[127,"^=",true,536870913]],["^6P",[127,"^B","^C",536870913]],["^6P",[127,"^3?",true,536870913]],["^6P",[127,"^3J",true,536870913]],["^6P",[127,"^1L","^6U",536870913]],["^6P",[128,"^4C",1747407249336,536870913]],["^6P",[128,"^6?","history scalar value",536870913]],["^6P",[128,"^5F","d000t",536870913]],["^6P",[128,"^5:",3,536870913]],["^6P",[128,"^5@","History scalar value",536870913]],["^6P",[128,"^33",1747407249336,536870913]],["^6P",[128,"^2R","~u00000002-2393-3777-5000-000000000000",536870913]],["^6P",[128,"^>","^?",536870913]],["^6P",[128,"^;","^9",536870913]],["^6P",[128,"^=",true,536870913]],["^6P",[128,"^3?",true,536870913]],["^6P",[128,"^3J",true,536870913]],["^6P",[128,"^1L","^6V",536870913]],["^6P",[129,"^4C",1747407249336,536870913]],["^6P",[129,"^6?","node created by(deprecated)",536870913]],["^6P",[129,"^5F","d000u",536870913]],["^6P",[129,"^5:",3,536870913]],["^6P",[129,"^5@","Node created by(deprecated)",536870913]],["^6P",[129,"^33",1747407249336,536870913]],["^6P",[129,"^2R","~u00000002-1367-2955-9500-000000000000",536870913]],["^6P",[129,"^>","^?",536870913]],["^6P",[129,"^;","^N",536870913]],["^6P",[129,"^=",true,536870913]],["^6P",[129,"^3?",true,536870913]],["^6P",[129,"^3J",true,536870913]],["^6P",[129,"^1L","^6Y",536870913]],["^6P",[130,"^4C",1747407249336,536870913]],["^6P",[130,"^6?","node created by",536870913]],["^6P",[130,"^5F","d000v",536870913]],["^6P",[130,"^5:",3,536870913]],["^6P",[130,"^5@","Node created by",536870913]],["^6P",[130,"^33",1747407249336,536870913]],["^6P",[130,"^2R","~u00000002-8544-3390-8000-000000000000",536870913]],["^6P",[130,"^>","^?",536870913]],["^6P",[130,"^;","^13",536870913]],["^6P",[130,"^=",true,536870913]],["^6P",[130,"^B","^C",536870913]],["^6P",[130,"^3?",true,536870913]],["^6P",[130,"^3J",true,536870913]],["^6P",[130,"^1L","^6U",536870913]],["^6P",[131,"^4C",1747407249336,536870913]],["^6P",[131,"^6?","used template",536870913]],["^6P",[131,"^5F","d000w",536870913]],["^6P",[131,"^5:",3,536870913]],["^6P",[131,"^5@","Used template",536870913]],["^6P",[131,"^33",1747407249336,536870913]],["^6P",[131,"^2R","~u00000002-9803-6990-6000-000000000000",536870913]],["^6P",[131,"^>","^?",536870913]],["^6P",[131,"^;","^1B",536870913]],["^6P",[131,"^=",true,536870913]],["^6P",[131,"^B","^C",536870913]],["^6P",[131,"^3?",true,536870913]],["^6P",[131,"^4P",4,536870913]],["^6P",[131,"^3J",true,536870913]],["^6P",[131,"^42",false,536870913]],["^6P",[131,"^1L","^71",536870913]],["^6P",[132,"^4C",1747407249336,536870913]],["^6P",[132,"^6?","apply template to tags",536870913]],["^6P",[132,"^5F","d000x",536870913]],["^6P",[132,"^5:",3,536870913]],["^6P",[132,"^5@","Apply template to tags",536870913]],["^6P",[132,"^33",1747407249336,536870913]],["^6P",[132,"^2R","~u00000002-4291-2432-2000-000000000000",536870913]],["^6P",[132,"^>","^18",536870913]],["^6P",[132,"^;","^1J",536870913]],["^6P",[132,"^=",true,536870913]],["^6P",[132,"^B","^C",536870913]],["^6P",[132,"^3?",true,536870913]],["^6P",[132,"^42",true,536870913]],["^6P",[132,"^1L","^6X",536870913]],["^6P",[133,"^4C",1747407249336,536870913]],["^6P",[133,"^6?","page",536870913]],["^6P",[133,"^5:",2,536870913]],["^6P",[133,"^5@","Page",536870913]],["^6P",[133,"^33",1747407249336,536870913]],["^6P",[133,"^2R","~u00000002-1484-3403-2900-000000000000",536870913]],["^6P",[133,"^;","^1W",536870913]],["^6P",[133,"^3?",true,536870913]],["^6P",[133,"^1<",1,536870913]],["^6P",[134,"^4C",1747407249336,536870913]],["^6P",[134,"^6?","journal",536870913]],["^6P",[134,"^5:",2,536870913]],["^6P",[134,"^5@","Journal",536870913]],["^6P",[134,"^33",1747407249336,536870913]],["^6P",[134,"^2R","~u00000002-1979-7410-8100-000000000000",536870913]],["^6P",[134,"^;","^29",536870913]],["^6P",[134,"^3?",true,536870913]],["^6P",[134,"^1<",133,536870913]],["^6P",[134,"^I","MMM do, yyyy",536870913]],["^6P",[135,"^4C",1747407249336,536870913]],["^6P",[135,"^6?","whiteboard",536870913]],["^6P",[135,"^5:",2,536870913]],["^6P",[135,"^5@","Whiteboard",536870913]],["^6P",[135,"^33",1747407249336,536870913]],["^6P",[135,"^2R","~u00000002-1013-6984-5200-000000000000",536870913]],["^6P",[135,"^;","^2E",536870913]],["^6P",[135,"^3?",true,536870913]],["^6P",[135,"^1<",133,536870913]],["^6P",[136,"^4C",1747407249336,536870913]],["^6P",[136,"^6?","task",536870913]],["^6P",[136,"^5:",2,536870913]],["^6P",[136,"^5@","Task",536870913]],["^6P",[136,"^33",1747407249336,536870913]],["^6P",[136,"^2R","~u00000002-1282-1814-5700-000000000000",536870913]],["^6P",[136,"^;","^2V",536870913]],["^6P",[136,"^3?",true,536870913]],["^6P",[136,"^1<",1,536870913]],["^6P",[136,"^2?",68,536870913]],["^6P",[136,"^2?",75,536870913]],["^6P",[136,"^2?",80,536870913]],["^6P",[136,"^2?",82,536870913]],["^6P",[137,"^4C",1747407249336,536870913]],["^6P",[137,"^6?","query",536870913]],["^6P",[137,"^5:",2,536870913]],["^6P",[137,"^5@","Query",536870913]],["^6P",[137,"^33",1747407249336,536870913]],["^6P",[137,"^2R","~u00000002-2324-8016-6000-000000000000",536870913]],["^6P",[137,"^;","^32",536870913]],["^6P",[137,"^3?",true,536870913]],["^6P",[137,"^7",["^ ","^77","^78","^79","search"],536870913]],["^6P",[137,"^1<",1,536870913]],["^6P",[137,"^2?",43,536870913]],["^6P",[138,"^4C",1747407249336,536870913]],["^6P",[138,"^6?","card",536870913]],["^6P",[138,"^5:",2,536870913]],["^6P",[138,"^5@","Card",536870913]],["^6P",[138,"^33",1747407249336,536870913]],["^6P",[138,"^2R","~u00000002-1358-2811-0900-000000000000",536870913]],["^6P",[138,"^;","^3=",536870913]],["^6P",[138,"^3?",true,536870913]],["^6P",[138,"^1<",1,536870913]],["^6P",[138,"^2?",118,536870913]],["^6P",[138,"^2?",119,536870913]],["^6P",[139,"^4C",1747407249336,536870913]],["^6P",[139,"^6?","cards",536870913]],["^6P",[139,"^5:",2,536870913]],["^6P",[139,"^5@","Cards",536870913]],["^6P",[139,"^33",1747407249336,536870913]],["^6P",[139,"^2R","~u00000002-1284-2651-6700-000000000000",536870913]],["^6P",[139,"^;","^3G",536870913]],["^6P",[139,"^3?",true,536870913]],["^6P",[139,"^7",["^ ","^77","^78","^79","search"],536870913]],["^6P",[139,"^1<",137,536870913]],["^6P",[140,"^4C",1747407249336,536870913]],["^6P",[140,"^6?","asset",536870913]],["^6P",[140,"^5:",2,536870913]],["^6P",[140,"^5@","Asset",536870913]],["^6P",[140,"^33",1747407249336,536870913]],["^6P",[140,"^2R","~u00000002-7975-0297-0000-000000000000",536870913]],["^6P",[140,"^;","^2<",536870913]],["^6P",[140,"^3?",true,536870913]],["^6P",[140,"^1<",1,536870913]],["^6P",[140,"^37",true,536870913]],["^6P",[140,"^2?",112,536870913]],["^6P",[140,"^2?",113,536870913]],["^6P",[140,"^2?",114,536870913]],["^6P",[140,"^1@",102,536870913]],["^6P",[141,"^4C",1747407249336,536870913]],["^6P",[141,"^6?","code",536870913]],["^6P",[141,"^5:",2,536870913]],["^6P",[141,"^5@","Code",536870913]],["^6P",[141,"^33",1747407249336,536870913]],["^6P",[141,"^2R","~u00000002-1454-9866-4100-000000000000",536870913]],["^6P",[141,"^;","^40",536870913]],["^6P",[141,"^3?",true,536870913]],["^6P",[141,"^1<",1,536870913]],["^6P",[141,"^37",true,536870913]],["^6P",[141,"^2?",32,536870913]],["^6P",[141,"^2?",34,536870913]],["^6P",[142,"^4C",1747407249336,536870913]],["^6P",[142,"^6?","quote",536870913]],["^6P",[142,"^5:",2,536870913]],["^6P",[142,"^5@","Quote",536870913]],["^6P",[142,"^33",1747407249336,536870913]],["^6P",[142,"^2R","~u00000002-1176-1666-1700-000000000000",536870913]],["^6P",[142,"^;","^2I",536870913]],["^6P",[142,"^3?",true,536870913]],["^6P",[142,"^1<",1,536870913]],["^6P",[142,"^37",true,536870913]],["^6P",[142,"^2?",32,536870913]],["^6P",[143,"^4C",1747407249336,536870913]],["^6P",[143,"^6?","math",536870913]],["^6P",[143,"^5:",2,536870913]],["^6P",[143,"^5@","Math",536870913]],["^6P",[143,"^33",1747407249336,536870913]],["^6P",[143,"^2R","~u00000002-2038-9631-2100-000000000000",536870913]],["^6P",[143,"^;","^4?",536870913]],["^6P",[143,"^3?",true,536870913]],["^6P",[143,"^1<",1,536870913]],["^6P",[143,"^37",true,536870913]],["^6P",[143,"^2?",32,536870913]],["^6P",[144,"^4C",1747407249336,536870913]],["^6P",[144,"^6?","pdf annotation",536870913]],["^6P",[144,"^5:",2,536870913]],["^6P",[144,"^5@","PDF Annotation",536870913]],["^6P",[144,"^33",1747407249336,536870913]],["^6P",[144,"^2R","~u00000002-5049-5962-0000-000000000000",536870913]],["^6P",[144,"^;","^4N",536870913]],["^6P",[144,"^3?",true,536870913]],["^6P",[144,"^1<",1,536870913]],["^6P",[144,"^37",true,536870913]],["^6P",[144,"^2?",48,536870913]],["^6P",[144,"^2?",49,536870913]],["^6P",[144,"^2?",50,536870913]],["^6P",[144,"^2?",51,536870913]],["^6P",[144,"^2?",57,536870913]],["^6P",[144,"^2?",58,536870913]],["^6P",[144,"^2?",59,536870913]],["^6P",[145,"^2R","~u00000004-3919-3813-3000-000000000000",536870913]],["^6P",[145,"^1N","{:meta/version 1\n ;; Hide empty block properties\n ;; This is _only_ for DB graphs.\n ;; Default value: false\n ;; :ui/hide-empty-properties? false\n\n ;; Enable tooltip preview on hover.\n ;; Default value: true\n :ui/enable-tooltip? true\n\n ;; Display brackets [[]] around page references.\n ;; Default value: true\n ;; :ui/show-brackets? true\n\n ;; Display all lines of a block when referencing ((block)).\n ;; Default value: false\n :ui/show-full-blocks? false\n\n ;; Automatically expand block references when zooming in.\n ;; Default value: true\n :ui/auto-expand-block-refs? true\n\n ;; Disable accent marks when searching.\n ;; After changing this setting, rebuild the search index by pressing (^C ^S).\n ;; Default value: true\n :feature/enable-search-remove-accents? true\n\n ;; Enable journals.\n ;; Default value: true\n ;; :feature/enable-journals? true\n\n ;; Enable flashcards.\n ;; Default value: true\n ;; :feature/enable-flashcards? true\n\n ;; Enable whiteboards.\n ;; Default value: true\n ;; :feature/enable-whiteboards? true\n\n ;; Disable the journal's built-in 'Scheduled tasks and deadlines' query.\n ;; Default value: false\n ;; :feature/disable-scheduled-and-deadline-query? false\n\n ;; Specify the number of days displayed in the future for\n ;; the 'scheduled tasks and deadlines' query.\n ;; Example usage:\n ;; Display all scheduled and deadline blocks for the next 14 days:\n ;; :scheduled/future-days 14\n ;; Default value: 7\n ;; :scheduled/future-days 7\n\n ;; Specify the first day of the week.\n ;; Available options:\n ;; - integer from 0 to 6 (Monday to Sunday)\n ;; Default value: 6 (Sunday)\n :start-of-week 6\n\n ;; Specify a custom CSS import.\n ;; This option takes precedence over the local `logseq/custom.css` file.\n ;; Example usage:\n ;; :custom-css-url \"@import url('https://cdn.jsdelivr.net/gh/dracula/logseq@master/custom.css');\"\n\n ;; Specify a custom JS import.\n ;; This option takes precedence over the local `logseq/custom.js` file.\n ;; Example usage:\n ;; :custom-js-url \"https://cdn.logseq.com/custom.js\"\n\n ;; Set bullet indentation when exporting\n ;; Available options:\n ;; - `:eight-spaces` as eight spaces\n ;; - `:four-spaces` as four spaces\n ;; - `:two-spaces` as two spaces\n ;; - `:tab` as a tab character (default)\n ;; :export/bullet-indentation :tab\n\n ;; Publish all pages within the Graph\n ;; Regardless of whether individual pages have been marked as public.\n ;; Default value: false\n ;; :publishing/all-pages-public? false\n\n ;; Define the default home page and sidebar status.\n ;; If unspecified, the journal page will be loaded on startup and the right sidebar will stay hidden.\n ;; The `:page` value represents the name of the page displayed at startup.\n ;; Available options for `:sidebar` are:\n ;; - \"Contents\" to display the Contents page in the right sidebar.\n ;; - A specific page name to display in the right sidebar.\n ;; - An array of multiple pages, e.g., [\"Contents\" \"Page A\" \"Page B\"].\n ;; If `:sidebar` remains unset, the right sidebar will stay hidden.\n ;; Examples:\n ;; 1. Set \"Changelog\" as the home page and display \"Contents\" in the right sidebar:\n ;; :default-home {:page \"Changelog\", :sidebar \"Contents\"}\n ;; 2. Set \"Jun 3rd, 2021\" as the home page without the right sidebar:\n ;; :default-home {:page \"Jun 3rd, 2021\"}\n ;; 3. Set \"home\" as the home page and display multiple pages in the right sidebar:\n ;; :default-home {:page \"home\", :sidebar [\"Page A\" \"Page B\"]}\n\n ;; Configure custom shortcuts.\n ;; Syntax:\n ;; 1. + indicates simultaneous key presses, e.g., `Ctrl+Shift+a`.\n ;; 2. A space between keys represents key chords, e.g., `t s` means\n ;; pressing `t` followed by `s`.\n ;; 3. mod refers to `Ctrl` for Windows/Linux and `Command` for Mac.\n ;; 4. Use false to disable a specific shortcut.\n ;; 5. You can define multiple bindings for a single action, e.g., [\"ctrl+j\" \"down\"].\n ;; The full list of configurable shortcuts is available at:\n ;; https://github.com/logseq/logseq/blob/master/src/main/frontend/modules/shortcut/config.cljs\n ;; Example:\n ;; :shortcuts\n ;; {:editor/new-block \"enter\"\n ;; :editor/new-line \"shift+enter\"\n ;; :editor/insert-link \"mod+shift+k\"\n ;; :editor/highlight false\n ;; :ui/toggle-settings \"t s\"\n ;; :editor/up [\"ctrl+k\" \"up\"]\n ;; :editor/down [\"ctrl+j\" \"down\"]\n ;; :editor/left [\"ctrl+h\" \"left\"]\n ;; :editor/right [\"ctrl+l\" \"right\"]}\n :shortcuts {}\n\n ;; Configure the behavior of pressing Enter in document mode.\n ;; if set to true, pressing Enter will create a new block.\n ;; Default value: false\n :shortcut/doc-mode-enter-for-new-block? false\n\n ;; Block content larger than `block/title-max-length` will not be searchable\n ;; or editable for performance.\n ;; Default value: 10000\n :block/title-max-length 10000\n\n ;; Display command documentation on hover.\n ;; Default value: true\n :ui/show-command-doc? true\n\n ;; Display empty bullet points.\n ;; Default value: false\n :ui/show-empty-bullets? false\n\n ;; Pre-defined :view function to use with advanced queries.\n :query/views\n {:pprint\n (fn [r] [:pre.code (pprint r)])}\n\n ;; Advanced queries `:result-transform` function.\n ;; Transform the query result before displaying it.\n ;; Example usage for DB graphs:\n;; :query/result-transforms\n;; {:sort-by-priority\n;; (fn [result] (sort-by (fn [h] (get h :logseq.property/priority \"Z\")) result))}\n\n;; Queries will be displayed at the bottom of today's journal page.\n;; Example usage:\n;; :default-queries\n;; {:journals []}\n\n ;; Add custom commands to the command palette\n ;; Example usage:\n ;; :commands\n ;; [\n ;; [\"js\" \"Javascript\"]\n ;; [\"md\" \"Markdown\"]\n ;; ]\n :commands []\n\n ;; Enable collapsing blocks with titles but no children.\n ;; By default, only blocks with children can be collapsed.\n ;; Setting `:outliner/block-title-collapse-enabled?` to true allows collapsing\n ;; blocks with titles (multiple lines) and content. For example:\n ;; - block title\n ;; block content\n ;; Default value: false\n :outliner/block-title-collapse-enabled? false\n\n ;; Macros replace texts and will make you more productive.\n ;; Example usage:\n ;; Change the :macros value below to:\n ;; {\"poem\" \"Rose is $1, violet's $2. Life's ordered: Org assists you.\"}\n ;; input \"{{poem red,blue}}\"\n ;; becomes\n ;; Rose is red, violet's blue. Life's ordered: Org assists you.\n :macros {}\n\n ;; Configure the default expansion level for linked references.\n ;; For example, consider the following block hierarchy:\n ;; - a [[page]] (level 1)\n ;; - b (level 2)\n ;; - c (level 3)\n ;; - d (level 4)\n ;;\n ;; With the default value of level 2, block b will be collapsed.\n ;; If the level's value is set to 3, block c will be collapsed.\n ;; Default value: 2\n :ref/default-open-blocks-level 2\n\n ;; Configure the threshold for linked references before collapsing.\n ;; Default value: 100\n :ref/linked-references-collapsed-threshold 50\n\n ;; Graph view configuration.\n ;; Example usage:\n ;; :graph/settings\n ;; {:orphan-pages? true ; Default value: true\n ;; :builtin-pages? false ; Default value: false\n ;; :excluded-pages? false ; Default value: false\n ;; :journal? false} ; Default value: false\n\n ;; Graph view configuration.\n ;; Example usage:\n ;; :graph/forcesettings\n ;; {:link-dist 180 ; Default value: 180\n ;; :charge-strength -600 ; Default value: -600\n ;; :charge-range 600} ; Default value: 600\n\n ;; Mobile photo upload configuration.\n ;; :mobile/photo\n ;; {:allow-editing? true\n ;; :quality 80}\n\n ;; Mobile features options\n ;; Gestures\n ;; Example usage:\n ;; :mobile\n ;; {:gestures/disabled-in-block-with-tags [\"kanban\"]}\n\n ;; Extra CodeMirror options\n ;; See https://codemirror.net/5/doc/manual.html#config for possible options\n ;; Example usage:\n ;; :editor/extra-codemirror-options\n ;; {:lineWrapping false ; Default value: false\n ;; :lineNumbers true ; Default value: true\n ;; :readOnly false} ; Default value: false\n\n ;; Enable logical outdenting\n ;; Default value: false\n ;; :editor/logical-outdenting? false\n\n ;; Prefer pasting the file when text and a file are in the clipboard.\n ;; Default value: false\n ;; :editor/preferred-pasting-file? false\n\n ;; Quick capture templates for receiving content from other apps.\n ;; Each template contains three elements {time}, {text} and {url}, which can be auto-expanded\n ;; by receiving content from other apps. Note: the {} cannot be omitted.\n ;; - {time}: capture time\n ;; - {date}: capture date using current date format, use `[[{date}]]` to get a page reference\n ;; - {text}: text that users selected before sharing.\n ;; - {url}: URL or assets path for media files stored in Logseq.\n ;; You can also reorder them or use only one or two of them in the template.\n ;; You can also insert or format any text in the template, as shown in the following examples.\n ;; :quick-capture-templates\n ;; {:text \"[[quick capture]] **{time}**: {text} from {url}\"\n ;; :media \"[[quick capture]] **{time}**: {url}\"}\n\n ;; Quick capture options.\n ;; - insert-today? Insert the capture at the end of today's journal page (boolean).\n ;; - redirect-page? Redirect to the quick capture page after capturing (boolean).\n ;; - default-page The default page to capture to if insert-today? is false (string).\n ;; :quick-capture-options\n ;; {:insert-today? false ;; Default value: true\n ;; :redirect-page? false ;; Default value: false\n ;; :default-page \"quick capture\"} ;; Default page: \"quick capture\"\n\n ;; Configure the Enter key behavior for\n ;; context-aware editing with DWIM (Do What I Mean).\n ;; context-aware Enter key behavior implies that pressing Enter will\n ;; have different outcomes based on the context.\n ;; For instance, pressing Enter within a list generates a new list item,\n ;; whereas pressing Enter in a block reference opens the referenced block.\n ;; :dwim/settings\n ;; {:admonition&src? true ;; Default value: true\n ;; :markup? false ;; Default value: false\n ;; :block-ref? true ;; Default value: true\n ;; :page-ref? true ;; Default value: true\n ;; :properties? true ;; Default value: true\n ;; :list? false} ;; Default value: false\n }",536870913]],["^6P",[145,"^@","~m1747407249331",536870913]],["^6P",[145,"^43","~m1747407249331",536870913]],["^6P",[145,"^6@","logseq/config.edn",536870913]],["^6P",[146,"^2R","~u00000004-1713-4660-3800-000000000000",536870913]],["^6P",[146,"^1N","",536870913]],["^6P",[146,"^@","~m1747407249331",536870913]],["^6P",[146,"^43","~m1747407249331",536870913]],["^6P",[146,"^6@","logseq/custom.css",536870913]],["^6P",[147,"^2R","~u00000004-1335-6485-2300-000000000000",536870913]],["^6P",[147,"^1N","",536870913]],["^6P",[147,"^@","~m1747407249331",536870913]],["^6P",[147,"^43","~m1747407249331",536870913]],["^6P",[147,"^6@","logseq/custom.js",536870913]],["^6P",[148,"^4C",1747407249337,536870913]],["^6P",[148,"^6?","contents",536870913]],["^6P",[148,"^5:",133,536870913]],["^6P",[148,"^5@","Contents",536870913]],["^6P",[148,"^33",1747407249337,536870913]],["^6P",[148,"^2R","~u00000004-1690-2597-3200-000000000000",536870913]],["^6P",[148,"^3?",true,536870913]],["^6P",[149,"^4C",1747407249336,536870913]],["^6P",[149,"^6?","$$$views",536870913]],["^6P",[149,"^5:",133,536870913]],["^6P",[149,"^5@","$$$views",536870913]],["^6P",[149,"^T",536870978,536870979]],["^6P",[149,"^33",1747407249336,536870913]],["^6P",[149,"^2R","~u00000004-1906-3437-5800-000000000000",536870913]],["^6P",[149,"^3?",true,536870913]],["^6P",[149,"^3J",true,536870913]],["^6P",[150,"^4C",1747407249336,536870913]],["^6P",[150,"^6?","$$$favorites",536870913]],["^6P",[150,"^5:",133,536870913]],["^6P",[150,"^5@","$$$favorites",536870913]],["^6P",[150,"^33",1747407249336,536870913]],["^6P",[150,"^2R","~u00000004-1018-5888-4100-000000000000",536870913]],["^6P",[150,"^3?",true,536870913]],["^6P",[150,"^3J",true,536870913]],["^6P",[151,"^4C",1747407249597,536870914]],["^6P",[151,"^53",20250516,536870914]],["^6P",[151,"^6?","may 16th, 2025",536870914]],["^6P",[151,"^5W",20,536870918]],["^6P",[151,"^5W",134,536870918]],["^6P",[151,"^5W",153,536870918]],["^6P",[151,"^3H",20,536870917]],["^6P",[151,"^3H",134,536870917]],["^6P",[151,"^3H",153,536870917]],["^6P",[151,"^5:",134,536870914]],["^6P",[151,"^5@","May 16th, 2025",536870914]],["^6P",[151,"^T",536870917,536870918]],["^6P",[151,"^33",1747407249597,536870914]],["^6P",[151,"^2R","~u00000001-2025-0516-0000-000000000000",536870914]],["^6P",[151,"^13",153,536870916]],["^6P",[152,"^4C",1747407249597,536870914]],["^6P",[152,"^5F","a0",536870914]],["^6P",[152,"^5Q",151,536870914]],["^6P",[152,"^5B",151,536870914]],["^6P",[152,"^5W",151,536870918]],["^6P",[152,"^5W",153,536870918]],["^6P",[152,"^3H",153,536870917]],["^6P",[152,"^5@","",536870914]],["^6P",[152,"^T",536870917,536870918]],["^6P",[152,"^33",1747407249597,536870914]],["^6P",[152,"^2R","~u68275191-57ca-44af-9e86-2fa286a7b6d4",536870914]],["^6P",[152,"^13",153,536870916]],["^6P",[153,"^4C",1747407249603,536870916]],["^6P",[153,"^6?","tienson",536870916]],["^6P",[153,"^5W",20,536870918]],["^6P",[153,"^5W",120,536870918]],["^6P",[153,"^5W",121,536870918]],["^6P",[153,"^5W",133,536870918]],["^6P",[153,"^3H",20,536870917]],["^6P",[153,"^3H",120,536870917]],["^6P",[153,"^3H",121,536870917]],["^6P",[153,"^3H",133,536870917]],["^6P",[153,"^5:",133,536870916]],["^6P",[153,"^5@","tienson",536870916]],["^6P",[153,"^T",536870917,536870918]],["^6P",[153,"^33",1747407249603,536870916]],["^6P",[153,"^2R","~u59f30f2c-6dc9-4a53-927b-ea405814c9e9",536870916]],["^6P",[153,"^4X","tiensonqin@gmail.com",536870916]],["^6P",[153,"^D","tienson",536870916]],["^6P",[154,"^4C",1747407263357,536870921]],["^6P",[154,"^6?","foo",536870921]],["^6P",[154,"^5W",20,536870925]],["^6P",[154,"^5W",133,536870925]],["^6P",[154,"^5W",153,536870925]],["^6P",[154,"^3H",20,536870924]],["^6P",[154,"^3H",133,536870924]],["^6P",[154,"^3H",153,536870924]],["^6P",[154,"^5:",133,536870921]],["^6P",[154,"^5@","foo",536870921]],["^6P",[154,"^T",536870924,536870925]],["^6P",[154,"^33",1747407263357,536870921]],["^6P",[154,"^2R","~u6827519f-683a-4984-b05b-2689a4fd20d9",536870921]],["^6P",[154,"^13",153,536870923]],["^6P",[155,"^4C",1747407263360,536870921]],["^6P",[155,"^6?","bar",536870921]],["^6P",[155,"^5W",20,536870925]],["^6P",[155,"^5W",35,536870925]],["^6P",[155,"^5W",133,536870925]],["^6P",[155,"^5W",153,536870925]],["^6P",[155,"^5W",154,536870925]],["^6P",[155,"^3H",20,536870924]],["^6P",[155,"^3H",35,536870924]],["^6P",[155,"^3H",133,536870924]],["^6P",[155,"^3H",153,536870924]],["^6P",[155,"^3H",154,536870924]],["^6P",[155,"^5:",133,536870921]],["^6P",[155,"^5@","bar",536870921]],["^6P",[155,"^T",536870924,536870925]],["^6P",[155,"^33",1747407263360,536870921]],["^6P",[155,"^2R","~u6827519f-d7a2-4569-9375-fe175d2e489b",536870921]],["^6P",[155,"^13",153,536870923]],["^6P",[155,"^1<",154,536870921]],["^6P",[156,"^4C",1747407263361,536870921]],["^6P",[156,"^6?","baz",536870921]],["^6P",[156,"^5W",20,536870925]],["^6P",[156,"^5W",35,536870925]],["^6P",[156,"^5W",133,536870925]],["^6P",[156,"^5W",153,536870925]],["^6P",[156,"^5W",155,536870925]],["^6P",[156,"^3H",20,536870924]],["^6P",[156,"^3H",35,536870924]],["^6P",[156,"^3H",133,536870924]],["^6P",[156,"^3H",153,536870924]],["^6P",[156,"^3H",155,536870924]],["^6P",[156,"^5:",133,536870921]],["^6P",[156,"^5@","baz",536870921]],["^6P",[156,"^T",536870924,536870925]],["^6P",[156,"^33",1747407263361,536870921]],["^6P",[156,"^2R","~u6827519f-a791-4937-9b93-614e6add2d0d",536870921]],["^6P",[156,"^13",153,536870923]],["^6P",[156,"^1<",155,536870921]],["^6P",[157,"^4C",1747407263361,536870921]],["^6P",[157,"^5F","a0",536870921]],["^6P",[157,"^5Q",156,536870921]],["^6P",[157,"^5B",156,536870921]],["^6P",[157,"^5W",153,536870925]],["^6P",[157,"^5W",156,536870925]],["^6P",[157,"^3H",153,536870924]],["^6P",[157,"^5@","",536870921]],["^6P",[157,"^T",536870924,536870925]],["^6P",[157,"^33",1747407263361,536870921]],["^6P",[157,"^2R","~u6827519f-0e67-496f-a65f-7ea487d4d99e",536870921]],["^6P",[157,"^13",153,536870923]],["^6P",[158,"^4C",1747407268977,536870926]],["^6P",[158,"^6?","baz2",536870926]],["^6P",[158,"^5W",20,536870930]],["^6P",[158,"^5W",35,536870930]],["^6P",[158,"^5W",133,536870930]],["^6P",[158,"^5W",153,536870930]],["^6P",[158,"^5W",155,536870930]],["^6P",[158,"^3H",20,536870929]],["^6P",[158,"^3H",35,536870929]],["^6P",[158,"^3H",133,536870929]],["^6P",[158,"^3H",153,536870929]],["^6P",[158,"^3H",155,536870929]],["^6P",[158,"^5:",133,536870926]],["^6P",[158,"^5@","baz2",536870926]],["^6P",[158,"^T",536870929,536870930]],["^6P",[158,"^33",1747407268977,536870926]],["^6P",[158,"^2R","~u682751a4-a79b-476f-b0e2-0c5e276a545a",536870926]],["^6P",[158,"^13",153,536870928]],["^6P",[158,"^1<",155,536870926]],["^6P",[159,"^4C",1747407268977,536870926]],["^6P",[159,"^5F","a0",536870926]],["^6P",[159,"^5Q",158,536870926]],["^6P",[159,"^5B",158,536870926]],["^6P",[159,"^5W",153,536870930]],["^6P",[159,"^5W",158,536870930]],["^6P",[159,"^3H",153,536870929]],["^6P",[159,"^5@","",536870926]],["^6P",[159,"^T",536870929,536870930]],["^6P",[159,"^33",1747407268977,536870926]],["^6P",[159,"^2R","~u682751a4-cb46-4a6e-a869-530eabd44fa6",536870926]],["^6P",[159,"^13",153,536870928]],["^6P",[160,"^4C",1747407272155,536870931]],["^6P",[160,"^5F","a0",536870931]],["^6P",[160,"^5Q",149,536870931]],["^6P",[160,"^5B",149,536870931]],["^6P",[160,"^5W",24,536870939]],["^6P",[160,"^5W",149,536870939]],["^6P",[160,"^5W",153,536870939]],["^6P",[160,"^5W",154,536870939]],["^6P",[160,"^3H",24,536870938]],["^6P",[160,"^3H",153,536870938]],["^6P",[160,"^3H",154,536870938]],["^6P",[160,"^5@","Linked references",536870931]],["^6P",[160,"^T",536870938,536870939]],["^6P",[160,"^33",1747407272164,536870935]],["^6P",[160,"^2R","~u682751a8-4854-464c-94f2-0d4fcdcb2c37",536870931]],["^6P",[160,"^13",153,536870937]],["^6P",[160,"^4A",154,536870932]],["^6P",[160,"^2C","~:linked-references",536870933]],["^6P",[160,"^2Q",24,536870935]],["^6P",[160,"^1@",101,536870934]],["^6P",[161,"^4C",1747407284707,536870940]],["^6P",[161,"^6?","c1",536870940]],["^6P",[161,"^5W",1,536870944]],["^6P",[161,"^5W",2,536870944]],["^6P",[161,"^5W",20,536870944]],["^6P",[161,"^5W",35,536870944]],["^6P",[161,"^5W",153,536870944]],["^6P",[161,"^3H",1,536870943]],["^6P",[161,"^3H",2,536870943]],["^6P",[161,"^3H",20,536870943]],["^6P",[161,"^3H",35,536870943]],["^6P",[161,"^3H",153,536870943]],["^6P",[161,"^5:",2,536870940]],["^6P",[161,"^5@","c1",536870940]],["^6P",[161,"^T",536870943,536870944]],["^6P",[161,"^33",1747407284710,536870940]],["^6P",[161,"^2R","~u682751b4-c13d-4e2d-9bf1-f98ff2222cc1",536870940]],["^6P",[161,"^;","^P",536870940]],["^6P",[161,"^13",153,536870942]],["^6P",[161,"^1<",1,536870940]],["^6P",[162,"^4C",1747407284708,536870940]],["^6P",[162,"^6?","c2",536870940]],["^6P",[162,"^5W",2,536870944]],["^6P",[162,"^5W",20,536870944]],["^6P",[162,"^5W",35,536870944]],["^6P",[162,"^5W",153,536870944]],["^6P",[162,"^5W",161,536870944]],["^6P",[162,"^3H",2,536870943]],["^6P",[162,"^3H",20,536870943]],["^6P",[162,"^3H",35,536870943]],["^6P",[162,"^3H",153,536870943]],["^6P",[162,"^3H",161,536870943]],["^6P",[162,"^5:",2,536870940]],["^6P",[162,"^5@","c2",536870940]],["^6P",[162,"^T",536870943,536870944]],["^6P",[162,"^33",1747407284710,536870940]],["^6P",[162,"^2R","~u682751b4-645a-4eab-9acf-e2f7b8696fa9",536870940]],["^6P",[162,"^;","^15",536870940]],["^6P",[162,"^13",153,536870942]],["^6P",[162,"^1<",161,536870940]],["^6P",[163,"^4C",1747407284710,536870940]],["^6P",[163,"^6?","c3",536870940]],["^6P",[163,"^5W",2,536870944]],["^6P",[163,"^5W",20,536870944]],["^6P",[163,"^5W",35,536870944]],["^6P",[163,"^5W",153,536870944]],["^6P",[163,"^5W",162,536870944]],["^6P",[163,"^3H",2,536870943]],["^6P",[163,"^3H",20,536870943]],["^6P",[163,"^3H",35,536870943]],["^6P",[163,"^3H",153,536870943]],["^6P",[163,"^3H",162,536870943]],["^6P",[163,"^5:",2,536870940]],["^6P",[163,"^5@","c3",536870940]],["^6P",[163,"^T",536870943,536870944]],["^6P",[163,"^33",1747407284710,536870940]],["^6P",[163,"^2R","~u682751b4-1d01-4da5-95f5-38512503e352",536870940]],["^6P",[163,"^;","^1D",536870940]],["^6P",[163,"^13",153,536870942]],["^6P",[163,"^1<",162,536870940]],["^6P",[164,"^4C",1747407285103,536870945]],["^6P",[164,"^5F","a1",536870945]],["^6P",[164,"^5Q",149,536870945]],["^6P",[164,"^5B",149,536870945]],["^6P",[164,"^5W",149,536870951]],["^6P",[164,"^5W",153,536870951]],["^6P",[164,"^5W",163,536870951]],["^6P",[164,"^3H",153,536870950]],["^6P",[164,"^3H",163,536870950]],["^6P",[164,"^5@","All",536870945]],["^6P",[164,"^T",536870950,536870951]],["^6P",[164,"^33",1747407285106,536870947]],["^6P",[164,"^2R","~u682751b5-90ca-4d49-b10e-5ff16891b4ca",536870945]],["^6P",[164,"^13",153,536870949]],["^6P",[164,"^4A",163,536870946]],["^6P",[164,"^2C","~:class-objects",536870947]],["^6P",[165,"^4C",1747407295104,536870952]],["^6P",[165,"^6?","c4",536870952]],["^6P",[165,"^5W",2,536870956]],["^6P",[165,"^5W",20,536870956]],["^6P",[165,"^5W",35,536870956]],["^6P",[165,"^5W",153,536870956]],["^6P",[165,"^5W",162,536870956]],["^6P",[165,"^3H",2,536870955]],["^6P",[165,"^3H",20,536870955]],["^6P",[165,"^3H",35,536870955]],["^6P",[165,"^3H",153,536870955]],["^6P",[165,"^3H",162,536870955]],["^6P",[165,"^5:",2,536870952]],["^6P",[165,"^5@","c4",536870952]],["^6P",[165,"^T",536870955,536870956]],["^6P",[165,"^33",1747407295104,536870952]],["^6P",[165,"^2R","~u682751bf-e47c-449f-b0eb-1aedda4760a5",536870952]],["^6P",[165,"^;","^1Y",536870952]],["^6P",[165,"^13",153,536870954]],["^6P",[165,"^1<",162,536870952]],["^6P",[166,"^4C",1747407295481,536870957]],["^6P",[166,"^5F","a2",536870957]],["^6P",[166,"^5Q",149,536870957]],["^6P",[166,"^5B",149,536870957]],["^6P",[166,"^5W",149,536870963]],["^6P",[166,"^5W",153,536870963]],["^6P",[166,"^5W",165,536870963]],["^6P",[166,"^3H",153,536870962]],["^6P",[166,"^3H",165,536870962]],["^6P",[166,"^5@","All",536870957]],["^6P",[166,"^T",536870962,536870963]],["^6P",[166,"^33",1747407295483,536870959]],["^6P",[166,"^2R","~u682751bf-0471-47c1-ad81-88c888db956e",536870957]],["^6P",[166,"^13",153,536870961]],["^6P",[166,"^4A",165,536870958]],["^6P",[166,"^2C","^7>",536870959]],["^6P",[167,"^4C",1747407300408,536870964]],["^6P",[167,"^5F","a3",536870964]],["^6P",[167,"^5Q",149,536870964]],["^6P",[167,"^5B",149,536870964]],["^6P",[167,"^5W",149,536870970]],["^6P",[167,"^5W",153,536870970]],["^6P",[167,"^5W",161,536870970]],["^6P",[167,"^3H",153,536870969]],["^6P",[167,"^3H",161,536870969]],["^6P",[167,"^5@","All",536870964]],["^6P",[167,"^T",536870969,536870970]],["^6P",[167,"^33",1747407300415,536870966]],["^6P",[167,"^2R","~u682751c4-1d6d-4f1b-8eae-adeb8a59036f",536870964]],["^6P",[167,"^13",153,536870968]],["^6P",[167,"^4A",161,536870965]],["^6P",[167,"^2C","^7>",536870966]],["^6P",[168,"^4C",1747407300448,536870971]],["^6P",[168,"^5F","a4",536870971]],["^6P",[168,"^5Q",149,536870971]],["^6P",[168,"^5B",149,536870971]],["^6P",[168,"^5W",24,536870979]],["^6P",[168,"^5W",149,536870979]],["^6P",[168,"^5W",153,536870979]],["^6P",[168,"^5W",161,536870979]],["^6P",[168,"^3H",24,536870978]],["^6P",[168,"^3H",153,536870978]],["^6P",[168,"^3H",161,536870978]],["^6P",[168,"^5@","Linked references",536870971]],["^6P",[168,"^T",536870978,536870979]],["^6P",[168,"^33",1747407300453,536870975]],["^6P",[168,"^2R","~u682751c4-e2ae-431b-8368-7135f3f926d4",536870971]],["^6P",[168,"^13",153,536870977]],["^6P",[168,"^4A",161,536870972]],["^6P",[168,"^2C","^7=",536870973]],["^6P",[168,"^2Q",24,536870975]],["^6P",[168,"^1@",101,536870974]]]]]] \ No newline at end of file