From ccb1eb503852fd29bd7d18c6b64cef011aa55790 Mon Sep 17 00:00:00 2001 From: cmungall Date: Fri, 19 Aug 2022 08:56:17 -0700 Subject: [PATCH 1/6] Deployed 68a0fd1 with MkDocs version: 1.3.1 --- .nojekyll | 0 404.html | 306 + AliasedClass/index.html | 354 + ClassDerivation/index.html | 403 + Inverse/index.html | 353 + SlotDerivation/index.html | 423 ++ TransformationSpecification/index.html | 406 + alias/index.html | 373 + assets/images/favicon.png | Bin 0 -> 1870 bytes assets/javascripts/bundle.9c69f0bc.min.js | 29 + assets/javascripts/bundle.9c69f0bc.min.js.map | 8 + assets/javascripts/lunr/min/lunr.ar.min.js | 1 + assets/javascripts/lunr/min/lunr.da.min.js | 18 + assets/javascripts/lunr/min/lunr.de.min.js | 18 + assets/javascripts/lunr/min/lunr.du.min.js | 18 + assets/javascripts/lunr/min/lunr.es.min.js | 18 + assets/javascripts/lunr/min/lunr.fi.min.js | 18 + assets/javascripts/lunr/min/lunr.fr.min.js | 18 + assets/javascripts/lunr/min/lunr.hi.min.js | 1 + assets/javascripts/lunr/min/lunr.hu.min.js | 18 + assets/javascripts/lunr/min/lunr.it.min.js | 18 + assets/javascripts/lunr/min/lunr.ja.min.js | 1 + assets/javascripts/lunr/min/lunr.jp.min.js | 1 + assets/javascripts/lunr/min/lunr.multi.min.js | 1 + assets/javascripts/lunr/min/lunr.nl.min.js | 18 + assets/javascripts/lunr/min/lunr.no.min.js | 18 + assets/javascripts/lunr/min/lunr.pt.min.js | 18 + assets/javascripts/lunr/min/lunr.ro.min.js | 18 + assets/javascripts/lunr/min/lunr.ru.min.js | 18 + .../lunr/min/lunr.stemmer.support.min.js | 1 + assets/javascripts/lunr/min/lunr.sv.min.js | 18 + assets/javascripts/lunr/min/lunr.th.min.js | 1 + assets/javascripts/lunr/min/lunr.tr.min.js | 18 + assets/javascripts/lunr/min/lunr.vi.min.js | 1 + assets/javascripts/lunr/min/lunr.zh.min.js | 1 + assets/javascripts/lunr/tinyseg.js | 206 + assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++++ .../workers/search.ecf98df9.min.js | 48 + .../workers/search.ecf98df9.min.js.map | 8 + assets/stylesheets/main.69437709.min.css | 1 + assets/stylesheets/main.69437709.min.css.map | 1 + assets/stylesheets/palette.cbb835fc.min.css | 1 + .../stylesheets/palette.cbb835fc.min.css.map | 1 + class_derivations/index.html | 374 + class_name/index.html | 373 + class_named/index.html | 374 + expr/index.html | 373 + hide/index.html | 373 + id/index.html | 373 + img/Mapping Between LinkML Schemas0.png | Bin 0 -> 187865 bytes img/Mapping Between LinkML Schemas1.png | Bin 0 -> 79188 bytes img/Mapping Between LinkML Schemas10.png | Bin 0 -> 182340 bytes img/Mapping Between LinkML Schemas11.png | Bin 0 -> 36395 bytes img/Mapping Between LinkML Schemas12.png | Bin 0 -> 128490 bytes img/Mapping Between LinkML Schemas13.png | Bin 0 -> 85125 bytes img/Mapping Between LinkML Schemas14.png | Bin 0 -> 404705 bytes img/Mapping Between LinkML Schemas15.png | Bin 0 -> 56248 bytes img/Mapping Between LinkML Schemas16.png | Bin 0 -> 93285 bytes img/Mapping Between LinkML Schemas17.png | Bin 0 -> 24093 bytes img/Mapping Between LinkML Schemas18.png | Bin 0 -> 84629 bytes img/Mapping Between LinkML Schemas19.png | Bin 0 -> 10449 bytes img/Mapping Between LinkML Schemas2.png | Bin 0 -> 54667 bytes img/Mapping Between LinkML Schemas20.png | Bin 0 -> 20516 bytes img/Mapping Between LinkML Schemas3.png | Bin 0 -> 57703 bytes img/Mapping Between LinkML Schemas4.png | Bin 0 -> 79188 bytes img/Mapping Between LinkML Schemas5.png | Bin 0 -> 54667 bytes img/Mapping Between LinkML Schemas6.png | Bin 0 -> 82911 bytes img/Mapping Between LinkML Schemas7.png | Bin 0 -> 3699 bytes img/Mapping Between LinkML Schemas8.png | Bin 0 -> 159497 bytes img/Mapping Between LinkML Schemas9.png | Bin 0 -> 144396 bytes index.html | 592 ++ inverse_of/index.html | 373 + joins/index.html | 374 + name/index.html | 374 + overview/index.html | 986 +++ populated_from/index.html | 374 + prefixes/index.html | 373 + same_as/index.html | 374 + search/search_index.json | 1 + sitemap.xml | 143 + sitemap.xml.gz | Bin 0 -> 409 bytes slot_derivations/index.html | 373 + slot_name/index.html | 373 + source_schema/index.html | 373 + target_schema/index.html | 373 + title/index.html | 373 + transformer/index.html | 328 + type_designator/index.html | 373 + types/index.html | 328 + 89 files changed, 19006 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 AliasedClass/index.html create mode 100644 ClassDerivation/index.html create mode 100644 Inverse/index.html create mode 100644 SlotDerivation/index.html create mode 100644 TransformationSpecification/index.html create mode 100644 alias/index.html create mode 100644 assets/images/favicon.png create mode 100644 assets/javascripts/bundle.9c69f0bc.min.js create mode 100644 assets/javascripts/bundle.9c69f0bc.min.js.map create mode 100644 assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 assets/javascripts/lunr/tinyseg.js create mode 100644 assets/javascripts/lunr/wordcut.js create mode 100644 assets/javascripts/workers/search.ecf98df9.min.js create mode 100644 assets/javascripts/workers/search.ecf98df9.min.js.map create mode 100644 assets/stylesheets/main.69437709.min.css create mode 100644 assets/stylesheets/main.69437709.min.css.map create mode 100644 assets/stylesheets/palette.cbb835fc.min.css create mode 100644 assets/stylesheets/palette.cbb835fc.min.css.map create mode 100644 class_derivations/index.html create mode 100644 class_name/index.html create mode 100644 class_named/index.html create mode 100644 expr/index.html create mode 100644 hide/index.html create mode 100644 id/index.html create mode 100644 img/Mapping Between LinkML Schemas0.png create mode 100644 img/Mapping Between LinkML Schemas1.png create mode 100644 img/Mapping Between LinkML Schemas10.png create mode 100644 img/Mapping Between LinkML Schemas11.png create mode 100644 img/Mapping Between LinkML Schemas12.png create mode 100644 img/Mapping Between LinkML Schemas13.png create mode 100644 img/Mapping Between LinkML Schemas14.png create mode 100644 img/Mapping Between LinkML Schemas15.png create mode 100644 img/Mapping Between LinkML Schemas16.png create mode 100644 img/Mapping Between LinkML Schemas17.png create mode 100644 img/Mapping Between LinkML Schemas18.png create mode 100644 img/Mapping Between LinkML Schemas19.png create mode 100644 img/Mapping Between LinkML Schemas2.png create mode 100644 img/Mapping Between LinkML Schemas20.png create mode 100644 img/Mapping Between LinkML Schemas3.png create mode 100644 img/Mapping Between LinkML Schemas4.png create mode 100644 img/Mapping Between LinkML Schemas5.png create mode 100644 img/Mapping Between LinkML Schemas6.png create mode 100644 img/Mapping Between LinkML Schemas7.png create mode 100644 img/Mapping Between LinkML Schemas8.png create mode 100644 img/Mapping Between LinkML Schemas9.png create mode 100644 index.html create mode 100644 inverse_of/index.html create mode 100644 joins/index.html create mode 100644 name/index.html create mode 100644 overview/index.html create mode 100644 populated_from/index.html create mode 100644 prefixes/index.html create mode 100644 same_as/index.html create mode 100644 search/search_index.json create mode 100644 sitemap.xml create mode 100644 sitemap.xml.gz create mode 100644 slot_derivations/index.html create mode 100644 slot_name/index.html create mode 100644 source_schema/index.html create mode 100644 target_schema/index.html create mode 100644 title/index.html create mode 100644 transformer/index.html create mode 100644 type_designator/index.html create mode 100644 types/index.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..cbc05e8 --- /dev/null +++ b/404.html @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + +
+
+ +

404 - Not found

+ +
+ + + +
+
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/AliasedClass/index.html b/AliasedClass/index.html new file mode 100644 index 0000000..aae0ec2 --- /dev/null +++ b/AliasedClass/index.html @@ -0,0 +1,354 @@ + + + + + + + + + + +Class: AliasedClass - LinkML-Transformer + + + + + + + + + + + +
+ + Skip to content + +
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+ + + +

Class: AliasedClass

+

alias-class key value pairs for classes

+

URI: tr:AliasedClass

+
classDiagram + class AliasedClass + AliasedClass : alias + AliasedClass : class_named + +
+ +

Slots

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameRangeCardinalityDescriptionInfo
aliasNONE0..1None.
class_namedNONE0..1local alias for the class.
+

Usages

+ + + + + + + + + + + + + + + + + +
used byused intypeused
ClassDerivationjoinsrangeAliasedClass
+

Identifier and Mapping Information

+

Schema Source

+
    +
  • from schema: https://w3id.org/linkml/transformer
  • +
+

Mappings

+ + + + + + + + + + + + + + + + + +
Mapping TypeMapped Value
self['tr:AliasedClass']
native['tr:AliasedClass']
+

LinkML Specification

+ +

Direct

+
+
name: AliasedClass
+description: alias-class key value pairs for classes
+from_schema: https://w3id.org/linkml/transformer
+attributes:
+  alias:
+    name: alias
+    from_schema: https://w3id.org/linkml/transformer
+    key: true
+  class_named:
+    name: class_named
+    description: local alias for the class
+    from_schema: https://w3id.org/linkml/transformer
+
+
+
+

Induced

+
+
name: AliasedClass
+description: alias-class key value pairs for classes
+from_schema: https://w3id.org/linkml/transformer
+attributes:
+  alias:
+    name: alias
+    from_schema: https://w3id.org/linkml/transformer
+    key: true
+    alias: alias
+    owner: AliasedClass
+  class_named:
+    name: class_named
+    description: local alias for the class
+    from_schema: https://w3id.org/linkml/transformer
+    alias: class_named
+    owner: AliasedClass
+
+
+
+
+ +
+
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/ClassDerivation/index.html b/ClassDerivation/index.html new file mode 100644 index 0000000..e859e8b --- /dev/null +++ b/ClassDerivation/index.html @@ -0,0 +1,403 @@ + + + + + + + + + + +Class: ClassDerivation - LinkML-Transformer + + + + + + + + + + + +
+ + Skip to content + +
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+ + + +

Class: ClassDerivation

+

URI: tr:ClassDerivation

+
classDiagram + class ClassDerivation + ClassDerivation : joins + ClassDerivation : name + ClassDerivation : populated_from + ClassDerivation : slot_derivations + +
+ +

Slots

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameRangeCardinalityDescriptionInfo
nameNONE0..1Name of the class in the target schema.
populated_fromxsd:string0..1Name of the class in the source schema.
joinsAliasedClass0..*Additional classes to be joined to derive instances of the target class.
slot_derivationsSlotDerivation0..*None.
+

Usages

+ + + + + + + + + + + + + + + + + +
used byused intypeused
TransformationSpecificationclass_derivationsrangeClassDerivation
+

Identifier and Mapping Information

+

Schema Source

+
    +
  • from schema: https://w3id.org/linkml/transformer
  • +
+

Mappings

+ + + + + + + + + + + + + + + + + +
Mapping TypeMapped Value
self['tr:ClassDerivation']
native['tr:ClassDerivation']
+

LinkML Specification

+ +

Direct

+
+
name: ClassDerivation
+from_schema: https://w3id.org/linkml/transformer
+attributes:
+  name:
+    name: name
+    description: Name of the class in the target schema
+    from_schema: https://w3id.org/linkml/transformer
+    key: true
+  populated_from:
+    name: populated_from
+    description: Name of the class in the source schema
+    from_schema: https://w3id.org/linkml/transformer
+    range: string
+  joins:
+    name: joins
+    description: Additional classes to be joined to derive instances of the target
+      class
+    from_schema: https://w3id.org/linkml/transformer
+    multivalued: true
+    range: AliasedClass
+    inlined: true
+  slot_derivations:
+    name: slot_derivations
+    from_schema: https://w3id.org/linkml/transformer
+    multivalued: true
+    range: SlotDerivation
+    inlined: true
+
+
+
+

Induced

+
+
name: ClassDerivation
+from_schema: https://w3id.org/linkml/transformer
+attributes:
+  name:
+    name: name
+    description: Name of the class in the target schema
+    from_schema: https://w3id.org/linkml/transformer
+    key: true
+    alias: name
+    owner: ClassDerivation
+  populated_from:
+    name: populated_from
+    description: Name of the class in the source schema
+    from_schema: https://w3id.org/linkml/transformer
+    alias: populated_from
+    owner: ClassDerivation
+    range: string
+  joins:
+    name: joins
+    description: Additional classes to be joined to derive instances of the target
+      class
+    from_schema: https://w3id.org/linkml/transformer
+    multivalued: true
+    alias: joins
+    owner: ClassDerivation
+    range: AliasedClass
+    inlined: true
+  slot_derivations:
+    name: slot_derivations
+    from_schema: https://w3id.org/linkml/transformer
+    multivalued: true
+    alias: slot_derivations
+    owner: ClassDerivation
+    range: SlotDerivation
+    inlined: true
+
+
+
+
+ +
+
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Inverse/index.html b/Inverse/index.html new file mode 100644 index 0000000..d29045b --- /dev/null +++ b/Inverse/index.html @@ -0,0 +1,353 @@ + + + + + + + + + + +Class: Inverse - LinkML-Transformer + + + + + + + + + + + +
+ + Skip to content + +
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+ + + +

Class: Inverse

+

URI: tr:Inverse

+
classDiagram + class Inverse + Inverse : class_name + Inverse : slot_name + +
+ +

Slots

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameRangeCardinalityDescriptionInfo
slot_nameNONE0..1None.
class_nameNONE0..1None.
+

Usages

+ + + + + + + + + + + + + + + + + +
used byused intypeused
SlotDerivationinverse_ofrangeInverse
+

Identifier and Mapping Information

+

Schema Source

+
    +
  • from schema: https://w3id.org/linkml/transformer
  • +
+

Mappings

+ + + + + + + + + + + + + + + + + +
Mapping TypeMapped Value
self['tr:Inverse']
native['tr:Inverse']
+

LinkML Specification

+ +

Direct

+
+
name: Inverse
+from_schema: https://w3id.org/linkml/transformer
+aliases:
+- backref
+- back references
+attributes:
+  slot_name:
+    name: slot_name
+    from_schema: https://w3id.org/linkml/transformer
+  class_name:
+    name: class_name
+    from_schema: https://w3id.org/linkml/transformer
+
+
+
+

Induced

+
+
name: Inverse
+from_schema: https://w3id.org/linkml/transformer
+aliases:
+- backref
+- back references
+attributes:
+  slot_name:
+    name: slot_name
+    from_schema: https://w3id.org/linkml/transformer
+    alias: slot_name
+    owner: Inverse
+  class_name:
+    name: class_name
+    from_schema: https://w3id.org/linkml/transformer
+    alias: class_name
+    owner: Inverse
+
+
+
+
+ +
+
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/SlotDerivation/index.html b/SlotDerivation/index.html new file mode 100644 index 0000000..98dbd37 --- /dev/null +++ b/SlotDerivation/index.html @@ -0,0 +1,423 @@ + + + + + + + + + + +Class: SlotDerivation - LinkML-Transformer + + + + + + + + + + + +
+ + Skip to content + +
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+ + + +

Class: SlotDerivation

+

URI: tr:SlotDerivation

+
classDiagram + class SlotDerivation + SlotDerivation : expr + SlotDerivation : hide + SlotDerivation : inverse_of + SlotDerivation : name + SlotDerivation : populated_from + SlotDerivation : type_designator + +
+ +

Slots

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameRangeCardinalityDescriptionInfo
nameNONE0..1None.
populated_fromxsd:string0..1None.
exprxsd:string0..1None.
inverse_ofInverse0..1None.
hidexsd:boolean0..1None.
type_designatorxsd:boolean0..1None.
+

Usages

+ + + + + + + + + + + + + + + + + +
used byused intypeused
ClassDerivationslot_derivationsrangeSlotDerivation
+

Identifier and Mapping Information

+

Schema Source

+
    +
  • from schema: https://w3id.org/linkml/transformer
  • +
+

Mappings

+ + + + + + + + + + + + + + + + + +
Mapping TypeMapped Value
self['tr:SlotDerivation']
native['tr:SlotDerivation']
+

LinkML Specification

+ +

Direct

+
+
name: SlotDerivation
+from_schema: https://w3id.org/linkml/transformer
+attributes:
+  name:
+    name: name
+    from_schema: https://w3id.org/linkml/transformer
+    key: true
+  populated_from:
+    name: populated_from
+    from_schema: https://w3id.org/linkml/transformer
+    range: string
+  expr:
+    name: expr
+    from_schema: https://w3id.org/linkml/transformer
+    range: string
+  inverse_of:
+    name: inverse_of
+    from_schema: https://w3id.org/linkml/transformer
+    range: Inverse
+  hide:
+    name: hide
+    from_schema: https://w3id.org/linkml/transformer
+    range: boolean
+  type_designator:
+    name: type_designator
+    from_schema: https://w3id.org/linkml/transformer
+    range: boolean
+
+
+
+

Induced

+
+
name: SlotDerivation
+from_schema: https://w3id.org/linkml/transformer
+attributes:
+  name:
+    name: name
+    from_schema: https://w3id.org/linkml/transformer
+    key: true
+    alias: name
+    owner: SlotDerivation
+  populated_from:
+    name: populated_from
+    from_schema: https://w3id.org/linkml/transformer
+    alias: populated_from
+    owner: SlotDerivation
+    range: string
+  expr:
+    name: expr
+    from_schema: https://w3id.org/linkml/transformer
+    alias: expr
+    owner: SlotDerivation
+    range: string
+  inverse_of:
+    name: inverse_of
+    from_schema: https://w3id.org/linkml/transformer
+    alias: inverse_of
+    owner: SlotDerivation
+    range: Inverse
+  hide:
+    name: hide
+    from_schema: https://w3id.org/linkml/transformer
+    alias: hide
+    owner: SlotDerivation
+    range: boolean
+  type_designator:
+    name: type_designator
+    from_schema: https://w3id.org/linkml/transformer
+    alias: type_designator
+    owner: SlotDerivation
+    range: boolean
+
+
+
+
+ +
+
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/TransformationSpecification/index.html b/TransformationSpecification/index.html new file mode 100644 index 0000000..58669f4 --- /dev/null +++ b/TransformationSpecification/index.html @@ -0,0 +1,406 @@ + + + + + + + + + + +Class: TransformationSpecification - LinkML-Transformer + + + + + + + + + + + +
+ + Skip to content + +
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+ + + +

Class: TransformationSpecification

+

A collection of mappings between source and target classes

+

URI: tr:TransformationSpecification

+
classDiagram + class TransformationSpecification + TransformationSpecification : class_derivations + TransformationSpecification : id + TransformationSpecification : prefixes + TransformationSpecification : source_schema + TransformationSpecification : target_schema + TransformationSpecification : title + +
+ +

Slots

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameRangeCardinalityDescriptionInfo
idNONE0..1None.
titleNONE0..1None.
prefixesNONE0..1None.
source_schemaNONE0..1None.
target_schemaNONE0..1None.
class_derivationsClassDerivation0..*Instructions on how to derive a set of class in the target schema.
+

Usages

+

Identifier and Mapping Information

+

Schema Source

+
    +
  • from schema: https://w3id.org/linkml/transformer
  • +
+

Mappings

+ + + + + + + + + + + + + + + + + +
Mapping TypeMapped Value
self['tr:TransformationSpecification']
native['tr:TransformationSpecification']
+

LinkML Specification

+ +

Direct

+
+
name: TransformationSpecification
+description: A collection of mappings between source and target classes
+from_schema: https://w3id.org/linkml/transformer
+attributes:
+  id:
+    name: id
+    from_schema: https://w3id.org/linkml/transformer
+  title:
+    name: title
+    from_schema: https://w3id.org/linkml/transformer
+  prefixes:
+    name: prefixes
+    from_schema: https://w3id.org/linkml/transformer
+  source_schema:
+    name: source_schema
+    from_schema: https://w3id.org/linkml/transformer
+  target_schema:
+    name: target_schema
+    from_schema: https://w3id.org/linkml/transformer
+  class_derivations:
+    name: class_derivations
+    description: Instructions on how to derive a set of class in the target schema
+    from_schema: https://w3id.org/linkml/transformer
+    multivalued: true
+    range: ClassDerivation
+    inlined: true
+tree_root: true
+
+
+
+

Induced

+
+
name: TransformationSpecification
+description: A collection of mappings between source and target classes
+from_schema: https://w3id.org/linkml/transformer
+attributes:
+  id:
+    name: id
+    from_schema: https://w3id.org/linkml/transformer
+    alias: id
+    owner: TransformationSpecification
+  title:
+    name: title
+    from_schema: https://w3id.org/linkml/transformer
+    alias: title
+    owner: TransformationSpecification
+  prefixes:
+    name: prefixes
+    from_schema: https://w3id.org/linkml/transformer
+    alias: prefixes
+    owner: TransformationSpecification
+  source_schema:
+    name: source_schema
+    from_schema: https://w3id.org/linkml/transformer
+    alias: source_schema
+    owner: TransformationSpecification
+  target_schema:
+    name: target_schema
+    from_schema: https://w3id.org/linkml/transformer
+    alias: target_schema
+    owner: TransformationSpecification
+  class_derivations:
+    name: class_derivations
+    description: Instructions on how to derive a set of class in the target schema
+    from_schema: https://w3id.org/linkml/transformer
+    multivalued: true
+    alias: class_derivations
+    owner: TransformationSpecification
+    range: ClassDerivation
+    inlined: true
+tree_root: true
+
+
+
+
+ +
+
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/alias/index.html b/alias/index.html new file mode 100644 index 0000000..89e75b0 --- /dev/null +++ b/alias/index.html @@ -0,0 +1,373 @@ + + + + + + + + + + + + + + + + + + Slot: alias - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + +
+ + + + +
+
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/assets/images/favicon.png b/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf13b9f9d978896599290a74f77d5dbe7d1655c GIT binary patch literal 1870 zcmV-U2eJ5xP)Gc)JR9QMau)O=X#!i9;T z37kk-upj^(fsR36MHs_+1RCI)NNu9}lD0S{B^g8PN?Ww(5|~L#Ng*g{WsqleV}|#l zz8@ri&cTzw_h33bHI+12+kK6WN$h#n5cD8OQt`5kw6p~9H3()bUQ8OS4Q4HTQ=1Ol z_JAocz`fLbT2^{`8n~UAo=#AUOf=SOq4pYkt;XbC&f#7lb$*7=$na!mWCQ`dBQsO0 zLFBSPj*N?#u5&pf2t4XjEGH|=pPQ8xh7tpx;US5Cx_Ju;!O`ya-yF`)b%TEt5>eP1ZX~}sjjA%FJF?h7cX8=b!DZl<6%Cv z*G0uvvU+vmnpLZ2paivG-(cd*y3$hCIcsZcYOGh{$&)A6*XX&kXZd3G8m)G$Zz-LV z^GF3VAW^Mdv!)4OM8EgqRiz~*Cji;uzl2uC9^=8I84vNp;ltJ|q-*uQwGp2ma6cY7 z;`%`!9UXO@fr&Ebapfs34OmS9^u6$)bJxrucutf>`dKPKT%%*d3XlFVKunp9 zasduxjrjs>f8V=D|J=XNZp;_Zy^WgQ$9WDjgY=z@stwiEBm9u5*|34&1Na8BMjjgf3+SHcr`5~>oz1Y?SW^=K z^bTyO6>Gar#P_W2gEMwq)ot3; zREHn~U&Dp0l6YT0&k-wLwYjb?5zGK`W6S2v+K>AM(95m2C20L|3m~rN8dprPr@t)5lsk9Hu*W z?pS990s;Ez=+Rj{x7p``4>+c0G5^pYnB1^!TL=(?HLHZ+HicG{~4F1d^5Awl_2!1jICM-!9eoLhbbT^;yHcefyTAaqRcY zmuctDopPT!%k+}x%lZRKnzykr2}}XfG_ne?nRQO~?%hkzo;@RN{P6o`&mMUWBYMTe z6i8ChtjX&gXl`nvrU>jah)2iNM%JdjqoaeaU%yVn!^70x-flljp6Q5tK}5}&X8&&G zX3fpb3E(!rH=zVI_9Gjl45w@{(ITqngWFe7@9{mX;tO25Z_8 zQHEpI+FkTU#4xu>RkN>b3Tnc3UpWzPXWm#o55GKF09j^Mh~)K7{QqbO_~(@CVq! zS<8954|P8mXN2MRs86xZ&Q4EfM@JB94b=(YGuk)s&^jiSF=t3*oNK3`rD{H`yQ?d; ztE=laAUoZx5?RC8*WKOj`%LXEkgDd>&^Q4M^z`%u0rg-It=hLCVsq!Z%^6eB-OvOT zFZ28TN&cRmgU}Elrnk43)!>Z1FCPL2K$7}gwzIc48NX}#!A1BpJP?#v5wkNprhV** z?Cpalt1oH&{r!o3eSKc&ap)iz2BTn_VV`4>9M^b3;(YY}4>#ML6{~(4mH+?%07*qo IM6N<$f(jP3KmY&$ literal 0 HcmV?d00001 diff --git a/assets/javascripts/bundle.9c69f0bc.min.js b/assets/javascripts/bundle.9c69f0bc.min.js new file mode 100644 index 0000000..91fc7b5 --- /dev/null +++ b/assets/javascripts/bundle.9c69f0bc.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var oa=Object.create;var xr=Object.defineProperty;var ia=Object.getOwnPropertyDescriptor;var aa=Object.getOwnPropertyNames,kt=Object.getOwnPropertySymbols,sa=Object.getPrototypeOf,Sr=Object.prototype.hasOwnProperty,sn=Object.prototype.propertyIsEnumerable;var an=(e,t,r)=>t in e?xr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,H=(e,t)=>{for(var r in t||(t={}))Sr.call(t,r)&&an(e,r,t[r]);if(kt)for(var r of kt(t))sn.call(t,r)&&an(e,r,t[r]);return e};var cn=(e,t)=>{var r={};for(var n in e)Sr.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&kt)for(var n of kt(e))t.indexOf(n)<0&&sn.call(e,n)&&(r[n]=e[n]);return r};var yt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ca=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of aa(t))!Sr.call(e,o)&&o!==r&&xr(e,o,{get:()=>t[o],enumerable:!(n=ia(t,o))||n.enumerable});return e};var Ye=(e,t,r)=>(r=e!=null?oa(sa(e)):{},ca(t||!e||!e.__esModule?xr(r,"default",{value:e,enumerable:!0}):r,e));var fn=yt((wr,un)=>{(function(e,t){typeof wr=="object"&&typeof un!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(wr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(O){return!!(O&&O!==document&&O.nodeName!=="HTML"&&O.nodeName!=="BODY"&&"classList"in O&&"contains"in O.classList)}function c(O){var Ue=O.type,He=O.tagName;return!!(He==="INPUT"&&a[Ue]&&!O.readOnly||He==="TEXTAREA"&&!O.readOnly||O.isContentEditable)}function u(O){O.classList.contains("focus-visible")||(O.classList.add("focus-visible"),O.setAttribute("data-focus-visible-added",""))}function f(O){!O.hasAttribute("data-focus-visible-added")||(O.classList.remove("focus-visible"),O.removeAttribute("data-focus-visible-added"))}function p(O){O.metaKey||O.altKey||O.ctrlKey||(s(r.activeElement)&&u(r.activeElement),n=!0)}function l(O){n=!1}function d(O){!s(O.target)||(n||c(O.target))&&u(O.target)}function h(O){!s(O.target)||(O.target.classList.contains("focus-visible")||O.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),f(O.target))}function b(O){document.visibilityState==="hidden"&&(o&&(n=!0),U())}function U(){document.addEventListener("mousemove",W),document.addEventListener("mousedown",W),document.addEventListener("mouseup",W),document.addEventListener("pointermove",W),document.addEventListener("pointerdown",W),document.addEventListener("pointerup",W),document.addEventListener("touchmove",W),document.addEventListener("touchstart",W),document.addEventListener("touchend",W)}function G(){document.removeEventListener("mousemove",W),document.removeEventListener("mousedown",W),document.removeEventListener("mouseup",W),document.removeEventListener("pointermove",W),document.removeEventListener("pointerdown",W),document.removeEventListener("pointerup",W),document.removeEventListener("touchmove",W),document.removeEventListener("touchstart",W),document.removeEventListener("touchend",W)}function W(O){O.target.nodeName&&O.target.nodeName.toLowerCase()==="html"||(n=!1,G())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",l,!0),document.addEventListener("pointerdown",l,!0),document.addEventListener("touchstart",l,!0),document.addEventListener("visibilitychange",b,!0),U(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var pn=yt(Er=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(u){return!1}},r=t(),n=function(u){var f={next:function(){var p=u.shift();return{done:p===void 0,value:p}}};return r&&(f[Symbol.iterator]=function(){return f}),f},o=function(u){return encodeURIComponent(u).replace(/%20/g,"+")},i=function(u){return decodeURIComponent(String(u).replace(/\+/g," "))},a=function(){var u=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var l=typeof p;if(l!=="undefined")if(l==="string")p!==""&&this._fromString(p);else if(p instanceof u){var d=this;p.forEach(function(G,W){d.append(W,G)})}else if(p!==null&&l==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),u._entries&&(u._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er);(function(e){var t=function(){try{var o=new e.URL("b","http://a/");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(c,u){typeof c!="string"&&(c=String(c)),u&&typeof u!="string"&&(u=String(u));var f=document,p;if(u&&(e.location===void 0||u!==e.location.href)){u=u.toLowerCase(),f=document.implementation.createHTMLDocument(""),p=f.createElement("base"),p.href=u,f.head.appendChild(p);try{if(p.href.indexOf(u)!==0)throw new Error(p.href)}catch(O){throw new Error("URL unable to set base "+u+" due to "+O)}}var l=f.createElement("a");l.href=c,p&&(f.body.appendChild(l),l.href=l.href);var d=f.createElement("input");if(d.type="url",d.value=c,l.protocol===":"||!/:/.test(l.href)||!d.checkValidity()&&!u)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:l});var h=new e.URLSearchParams(this.search),b=!0,U=!0,G=this;["append","delete","set"].forEach(function(O){var Ue=h[O];h[O]=function(){Ue.apply(h,arguments),b&&(U=!1,G.search=h.toString(),U=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var W=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==W&&(W=this.search,U&&(b=!1,this.searchParams._fromString(this.search),b=!0))}})},a=i.prototype,s=function(c){Object.defineProperty(a,c,{get:function(){return this._anchorElement[c]},set:function(u){this._anchorElement[c]=u},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(c){s(c)}),Object.defineProperty(a,"search",{get:function(){return this._anchorElement.search},set:function(c){this._anchorElement.search=c,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(a,{toString:{get:function(){var c=this;return function(){return c.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(c){this._anchorElement.href=c,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(c){this._anchorElement.pathname=c},enumerable:!0},origin:{get:function(){var c={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],u=this._anchorElement.port!=c&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(u?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(c){},enumerable:!0},username:{get:function(){return""},set:function(c){},enumerable:!0}}),i.createObjectURL=function(c){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(c){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er)});var kn=yt((zs,It)=>{/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */var ln,mn,dn,hn,bn,vn,gn,yn,xn,Ht,Or,Sn,wn,En,rt,On,_n,Tn,Mn,Ln,An,Cn,Rn,Pt;(function(e){var t=typeof global=="object"?global:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(n){e(r(t,r(n)))}):typeof It=="object"&&typeof It.exports=="object"?e(r(t,r(It.exports))):e(r(t));function r(n,o){return n!==t&&(typeof Object.create=="function"?Object.defineProperty(n,"__esModule",{value:!0}):n.__esModule=!0),function(i,a){return n[i]=o?o(i,a):a}}})(function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,o){n.__proto__=o}||function(n,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(n[i]=o[i])};ln=function(n,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");t(n,o);function i(){this.constructor=n}n.prototype=o===null?Object.create(o):(i.prototype=o.prototype,new i)},mn=Object.assign||function(n){for(var o,i=1,a=arguments.length;i=0;f--)(u=n[f])&&(c=(s<3?u(c):s>3?u(o,i,c):u(o,i))||c);return s>3&&c&&Object.defineProperty(o,i,c),c},bn=function(n,o){return function(i,a){o(i,a,n)}},vn=function(n,o){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,o)},gn=function(n,o,i,a){function s(c){return c instanceof i?c:new i(function(u){u(c)})}return new(i||(i=Promise))(function(c,u){function f(d){try{l(a.next(d))}catch(h){u(h)}}function p(d){try{l(a.throw(d))}catch(h){u(h)}}function l(d){d.done?c(d.value):s(d.value).then(f,p)}l((a=a.apply(n,o||[])).next())})},yn=function(n,o){var i={label:0,sent:function(){if(c[0]&1)throw c[1];return c[1]},trys:[],ops:[]},a,s,c,u;return u={next:f(0),throw:f(1),return:f(2)},typeof Symbol=="function"&&(u[Symbol.iterator]=function(){return this}),u;function f(l){return function(d){return p([l,d])}}function p(l){if(a)throw new TypeError("Generator is already executing.");for(;i;)try{if(a=1,s&&(c=l[0]&2?s.return:l[0]?s.throw||((c=s.return)&&c.call(s),0):s.next)&&!(c=c.call(s,l[1])).done)return c;switch(s=0,c&&(l=[l[0]&2,c.value]),l[0]){case 0:case 1:c=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,s=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(c=i.trys,!(c=c.length>0&&c[c.length-1])&&(l[0]===6||l[0]===2)){i=0;continue}if(l[0]===3&&(!c||l[1]>c[0]&&l[1]=n.length&&(n=void 0),{value:n&&n[a++],done:!n}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")},Or=function(n,o){var i=typeof Symbol=="function"&&n[Symbol.iterator];if(!i)return n;var a=i.call(n),s,c=[],u;try{for(;(o===void 0||o-- >0)&&!(s=a.next()).done;)c.push(s.value)}catch(f){u={error:f}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(u)throw u.error}}return c},Sn=function(){for(var n=[],o=0;o1||f(b,U)})})}function f(b,U){try{p(a[b](U))}catch(G){h(c[0][3],G)}}function p(b){b.value instanceof rt?Promise.resolve(b.value.v).then(l,d):h(c[0][2],b)}function l(b){f("next",b)}function d(b){f("throw",b)}function h(b,U){b(U),c.shift(),c.length&&f(c[0][0],c[0][1])}},_n=function(n){var o,i;return o={},a("next"),a("throw",function(s){throw s}),a("return"),o[Symbol.iterator]=function(){return this},o;function a(s,c){o[s]=n[s]?function(u){return(i=!i)?{value:rt(n[s](u)),done:s==="return"}:c?c(u):u}:c}},Tn=function(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n[Symbol.asyncIterator],i;return o?o.call(n):(n=typeof Ht=="function"?Ht(n):n[Symbol.iterator](),i={},a("next"),a("throw"),a("return"),i[Symbol.asyncIterator]=function(){return this},i);function a(c){i[c]=n[c]&&function(u){return new Promise(function(f,p){u=n[c](u),s(f,p,u.done,u.value)})}}function s(c,u,f,p){Promise.resolve(p).then(function(l){c({value:l,done:f})},u)}},Mn=function(n,o){return Object.defineProperty?Object.defineProperty(n,"raw",{value:o}):n.raw=o,n};var r=Object.create?function(n,o){Object.defineProperty(n,"default",{enumerable:!0,value:o})}:function(n,o){n.default=o};Ln=function(n){if(n&&n.__esModule)return n;var o={};if(n!=null)for(var i in n)i!=="default"&&Object.prototype.hasOwnProperty.call(n,i)&&Pt(o,n,i);return r(o,n),o},An=function(n){return n&&n.__esModule?n:{default:n}},Cn=function(n,o,i,a){if(i==="a"&&!a)throw new TypeError("Private accessor was defined without a getter");if(typeof o=="function"?n!==o||!a:!o.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return i==="m"?a:i==="a"?a.call(n):a?a.value:o.get(n)},Rn=function(n,o,i,a,s){if(a==="m")throw new TypeError("Private method is not writable");if(a==="a"&&!s)throw new TypeError("Private accessor was defined without a setter");if(typeof o=="function"?n!==o||!s:!o.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return a==="a"?s.call(n,i):s?s.value=i:o.set(n,i),i},e("__extends",ln),e("__assign",mn),e("__rest",dn),e("__decorate",hn),e("__param",bn),e("__metadata",vn),e("__awaiter",gn),e("__generator",yn),e("__exportStar",xn),e("__createBinding",Pt),e("__values",Ht),e("__read",Or),e("__spread",Sn),e("__spreadArrays",wn),e("__spreadArray",En),e("__await",rt),e("__asyncGenerator",On),e("__asyncDelegator",_n),e("__asyncValues",Tn),e("__makeTemplateObject",Mn),e("__importStar",Ln),e("__importDefault",An),e("__classPrivateFieldGet",Cn),e("__classPrivateFieldSet",Rn)})});var Kr=yt((At,Yr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof At=="object"&&typeof Yr=="object"?Yr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof At=="object"?At.ClipboardJS=r():t.ClipboardJS=r()})(At,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return na}});var a=i(279),s=i.n(a),c=i(370),u=i.n(c),f=i(817),p=i.n(f);function l(j){try{return document.execCommand(j)}catch(_){return!1}}var d=function(_){var E=p()(_);return l("cut"),E},h=d;function b(j){var _=document.documentElement.getAttribute("dir")==="rtl",E=document.createElement("textarea");E.style.fontSize="12pt",E.style.border="0",E.style.padding="0",E.style.margin="0",E.style.position="absolute",E.style[_?"right":"left"]="-9999px";var k=window.pageYOffset||document.documentElement.scrollTop;return E.style.top="".concat(k,"px"),E.setAttribute("readonly",""),E.value=j,E}var U=function(_,E){var k=b(_);E.container.appendChild(k);var I=p()(k);return l("copy"),k.remove(),I},G=function(_){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},k="";return typeof _=="string"?k=U(_,E):_ instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(_==null?void 0:_.type)?k=U(_.value,E):(k=p()(_),l("copy")),k},W=G;function O(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?O=function(E){return typeof E}:O=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},O(j)}var Ue=function(){var _=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},E=_.action,k=E===void 0?"copy":E,I=_.container,Q=_.target,Oe=_.text;if(k!=="copy"&&k!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(Q!==void 0)if(Q&&O(Q)==="object"&&Q.nodeType===1){if(k==="copy"&&Q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(k==="cut"&&(Q.hasAttribute("readonly")||Q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Oe)return W(Oe,{container:I});if(Q)return k==="cut"?h(Q):W(Q,{container:I})},He=Ue;function Ce(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ce=function(E){return typeof E}:Ce=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},Ce(j)}function Bi(j,_){if(!(j instanceof _))throw new TypeError("Cannot call a class as a function")}function on(j,_){for(var E=0;E<_.length;E++){var k=_[E];k.enumerable=k.enumerable||!1,k.configurable=!0,"value"in k&&(k.writable=!0),Object.defineProperty(j,k.key,k)}}function Gi(j,_,E){return _&&on(j.prototype,_),E&&on(j,E),j}function Ji(j,_){if(typeof _!="function"&&_!==null)throw new TypeError("Super expression must either be null or a function");j.prototype=Object.create(_&&_.prototype,{constructor:{value:j,writable:!0,configurable:!0}}),_&&gr(j,_)}function gr(j,_){return gr=Object.setPrototypeOf||function(k,I){return k.__proto__=I,k},gr(j,_)}function Xi(j){var _=ta();return function(){var k=Ct(j),I;if(_){var Q=Ct(this).constructor;I=Reflect.construct(k,arguments,Q)}else I=k.apply(this,arguments);return Zi(this,I)}}function Zi(j,_){return _&&(Ce(_)==="object"||typeof _=="function")?_:ea(j)}function ea(j){if(j===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return j}function ta(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(j){return!1}}function Ct(j){return Ct=Object.setPrototypeOf?Object.getPrototypeOf:function(E){return E.__proto__||Object.getPrototypeOf(E)},Ct(j)}function yr(j,_){var E="data-clipboard-".concat(j);if(!!_.hasAttribute(E))return _.getAttribute(E)}var ra=function(j){Ji(E,j);var _=Xi(E);function E(k,I){var Q;return Bi(this,E),Q=_.call(this),Q.resolveOptions(I),Q.listenClick(k),Q}return Gi(E,[{key:"resolveOptions",value:function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof I.action=="function"?I.action:this.defaultAction,this.target=typeof I.target=="function"?I.target:this.defaultTarget,this.text=typeof I.text=="function"?I.text:this.defaultText,this.container=Ce(I.container)==="object"?I.container:document.body}},{key:"listenClick",value:function(I){var Q=this;this.listener=u()(I,"click",function(Oe){return Q.onClick(Oe)})}},{key:"onClick",value:function(I){var Q=I.delegateTarget||I.currentTarget,Oe=this.action(Q)||"copy",Rt=He({action:Oe,container:this.container,target:this.target(Q),text:this.text(Q)});this.emit(Rt?"success":"error",{action:Oe,text:Rt,trigger:Q,clearSelection:function(){Q&&Q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(I){return yr("action",I)}},{key:"defaultTarget",value:function(I){var Q=yr("target",I);if(Q)return document.querySelector(Q)}},{key:"defaultText",value:function(I){return yr("text",I)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(I){var Q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return W(I,Q)}},{key:"cut",value:function(I){return h(I)}},{key:"isSupported",value:function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],Q=typeof I=="string"?[I]:I,Oe=!!document.queryCommandSupported;return Q.forEach(function(Rt){Oe=Oe&&!!document.queryCommandSupported(Rt)}),Oe}}]),E}(s()),na=ra},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function a(s,c){for(;s&&s.nodeType!==o;){if(typeof s.matches=="function"&&s.matches(c))return s;s=s.parentNode}}n.exports=a},438:function(n,o,i){var a=i(828);function s(f,p,l,d,h){var b=u.apply(this,arguments);return f.addEventListener(l,b,h),{destroy:function(){f.removeEventListener(l,b,h)}}}function c(f,p,l,d,h){return typeof f.addEventListener=="function"?s.apply(null,arguments):typeof l=="function"?s.bind(null,document).apply(null,arguments):(typeof f=="string"&&(f=document.querySelectorAll(f)),Array.prototype.map.call(f,function(b){return s(b,p,l,d,h)}))}function u(f,p,l,d){return function(h){h.delegateTarget=a(h.target,p),h.delegateTarget&&d.call(f,h)}}n.exports=c},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var a=Object.prototype.toString.call(i);return i!==void 0&&(a==="[object NodeList]"||a==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var a=Object.prototype.toString.call(i);return a==="[object Function]"}},370:function(n,o,i){var a=i(879),s=i(438);function c(l,d,h){if(!l&&!d&&!h)throw new Error("Missing required arguments");if(!a.string(d))throw new TypeError("Second argument must be a String");if(!a.fn(h))throw new TypeError("Third argument must be a Function");if(a.node(l))return u(l,d,h);if(a.nodeList(l))return f(l,d,h);if(a.string(l))return p(l,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function u(l,d,h){return l.addEventListener(d,h),{destroy:function(){l.removeEventListener(d,h)}}}function f(l,d,h){return Array.prototype.forEach.call(l,function(b){b.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(l,function(b){b.removeEventListener(d,h)})}}}function p(l,d,h){return s(document.body,l,d,h)}n.exports=c},817:function(n){function o(i){var a;if(i.nodeName==="SELECT")i.focus(),a=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var s=i.hasAttribute("readonly");s||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),s||i.removeAttribute("readonly"),a=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var c=window.getSelection(),u=document.createRange();u.selectNodeContents(i),c.removeAllRanges(),c.addRange(u),a=c.toString()}return a}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,a,s){var c=this.e||(this.e={});return(c[i]||(c[i]=[])).push({fn:a,ctx:s}),this},once:function(i,a,s){var c=this;function u(){c.off(i,u),a.apply(s,arguments)}return u._=a,this.on(i,u,s)},emit:function(i){var a=[].slice.call(arguments,1),s=((this.e||(this.e={}))[i]||[]).slice(),c=0,u=s.length;for(c;c{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var _s=/["'&<>]/;Si.exports=Ts;function Ts(e){var t=""+e,r=_s.exec(t);if(!r)return t;var n,o="",i=0,a=0;for(i=r.index;i0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,a=o.isStopped,s=o.observers;return i||a?_r:(this.currentObservers=null,s.push(r),new Re(function(){n.currentObservers=null,Pe(s,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,a=n.isStopped;o?r.error(i):a&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,n){return new qn(r,n)},t}(F);var qn=function(e){re(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:_r},t}(w);var St={now:function(){return(St.delegate||Date).now()},delegate:void 0};var wt=function(e){re(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=St);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,a=n._infiniteTimeWindow,s=n._timestampProvider,c=n._windowTime;o||(i.push(r),!a&&i.push(s.now()+c)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,a=o._buffer,s=a.slice(),c=0;c0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=at.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){if(o===void 0&&(o=0),o!=null&&o>0||o==null&&this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);r.actions.some(function(i){return i.id===n})||(at.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Nt);var Kn=function(e){re(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(zt);var Te=new Kn(Yn);var C=new F(function(e){return e.complete()});function qt(e){return e&&T(e.schedule)}function kr(e){return e[e.length-1]}function De(e){return T(kr(e))?e.pop():void 0}function ye(e){return qt(kr(e))?e.pop():void 0}function Qt(e,t){return typeof kr(e)=="number"?e.pop():t}var st=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Yt(e){return T(e==null?void 0:e.then)}function Kt(e){return T(e[it])}function Bt(e){return Symbol.asyncIterator&&T(e==null?void 0:e[Symbol.asyncIterator])}function Gt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function va(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Jt=va();function Xt(e){return T(e==null?void 0:e[Jt])}function Zt(e){return In(this,arguments,function(){var r,n,o,i;return $t(this,function(a){switch(a.label){case 0:r=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,jt(r.read())];case 3:return n=a.sent(),o=n.value,i=n.done,i?[4,jt(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,jt(o)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function er(e){return T(e==null?void 0:e.getReader)}function N(e){if(e instanceof F)return e;if(e!=null){if(Kt(e))return ga(e);if(st(e))return ya(e);if(Yt(e))return xa(e);if(Bt(e))return Bn(e);if(Xt(e))return Sa(e);if(er(e))return wa(e)}throw Gt(e)}function ga(e){return new F(function(t){var r=e[it]();if(T(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function ya(e){return new F(function(t){for(var r=0;r=2,!0))}function oe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new w}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,a=i===void 0?!0:i,s=e.resetOnRefCountZero,c=s===void 0?!0:s;return function(u){var f,p,l,d=0,h=!1,b=!1,U=function(){p==null||p.unsubscribe(),p=void 0},G=function(){U(),f=l=void 0,h=b=!1},W=function(){var O=f;G(),O==null||O.unsubscribe()};return g(function(O,Ue){d++,!b&&!h&&U();var He=l=l!=null?l:r();Ue.add(function(){d--,d===0&&!b&&!h&&(p=Ur(W,c))}),He.subscribe(Ue),!f&&d>0&&(f=new Be({next:function(Ce){return He.next(Ce)},error:function(Ce){b=!0,U(),p=Ur(G,o,Ce),He.error(Ce)},complete:function(){h=!0,U(),p=Ur(G,a),He.complete()}}),N(O).subscribe(f))})(u)}}function Ur(e,t){for(var r=[],n=2;ne.next(document)),e}function B(e,t=document){return Array.from(t.querySelectorAll(e))}function z(e,t=document){let r=pe(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function pe(e,t=document){return t.querySelector(e)||void 0}function Ne(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function nr(e){return R(v(document.body,"focusin"),v(document.body,"focusout")).pipe(Ze(1),m(()=>{let t=Ne();return typeof t!="undefined"?e.contains(t):!1}),q(e===Ne()),K())}function ze(e){return{x:e.offsetLeft,y:e.offsetTop}}function vo(e){return R(v(window,"load"),v(window,"resize")).pipe($e(0,Te),m(()=>ze(e)),q(ze(e)))}function or(e){return{x:e.scrollLeft,y:e.scrollTop}}function pt(e){return R(v(e,"scroll"),v(window,"resize")).pipe($e(0,Te),m(()=>or(e)),q(or(e)))}var yo=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!zr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),za?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!zr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=Na.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),xo=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),wo=typeof WeakMap!="undefined"?new WeakMap:new yo,Eo=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=qa.getInstance(),n=new ts(t,r,this);wo.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Eo.prototype[e]=function(){var t;return(t=wo.get(this))[e].apply(t,arguments)}});var rs=function(){return typeof ir.ResizeObserver!="undefined"?ir.ResizeObserver:Eo}(),Oo=rs;var _o=new w,ns=P(()=>$(new Oo(e=>{for(let t of e)_o.next(t)}))).pipe(S(e=>R(xe,$(e)).pipe(L(()=>e.disconnect()))),X(1));function Ae(e){return{width:e.offsetWidth,height:e.offsetHeight}}function de(e){return ns.pipe(x(t=>t.observe(e)),S(t=>_o.pipe(M(({target:r})=>r===e),L(()=>t.unobserve(e)),m(()=>Ae(e)))),q(Ae(e)))}function mt(e){return{width:e.scrollWidth,height:e.scrollHeight}}var To=new w,os=P(()=>$(new IntersectionObserver(e=>{for(let t of e)To.next(t)},{threshold:0}))).pipe(S(e=>R(xe,$(e)).pipe(L(()=>e.disconnect()))),X(1));function cr(e){return os.pipe(x(t=>t.observe(e)),S(t=>To.pipe(M(({target:r})=>r===e),L(()=>t.unobserve(e)),m(({isIntersecting:r})=>r))))}function Mo(e,t=16){return pt(e).pipe(m(({y:r})=>{let n=Ae(e),o=mt(e);return r>=o.height-n.height-t}),K())}var ur={drawer:z("[data-md-toggle=drawer]"),search:z("[data-md-toggle=search]")};function Lo(e){return ur[e].checked}function qe(e,t){ur[e].checked!==t&&ur[e].click()}function dt(e){let t=ur[e];return v(t,"change").pipe(m(()=>t.checked),q(t.checked))}function is(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ao(){return v(window,"keydown").pipe(M(e=>!(e.metaKey||e.ctrlKey)),m(e=>({mode:Lo("search")?"search":"global",type:e.key,claim(){e.preventDefault(),e.stopPropagation()}})),M(({mode:e,type:t})=>{if(e==="global"){let r=Ne();if(typeof r!="undefined")return!is(r,t)}return!0}),oe())}function Se(){return new URL(location.href)}function fr(e){location.href=e.href}function Co(){return new w}function Ro(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)Ro(e,r)}function A(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)Ro(n,o);return n}function ko(e,t){let r=t;if(e.length>r){for(;e[r]!==" "&&--r>0;);return`${e.substring(0,r)}...`}return e}function pr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function Ho(){return location.hash.substring(1)}function Po(e){let t=A("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function as(){return v(window,"hashchange").pipe(m(Ho),q(Ho()),M(e=>e.length>0),X(1))}function Io(){return as().pipe(m(e=>pe(`[id="${e}"]`)),M(e=>typeof e!="undefined"))}function qr(e){let t=matchMedia(e);return rr(r=>t.addListener(()=>r(t.matches))).pipe(q(t.matches))}function $o(){let e=matchMedia("print");return R(v(window,"beforeprint").pipe(m(()=>!0)),v(window,"afterprint").pipe(m(()=>!1))).pipe(q(e.matches))}function Qr(e,t){return e.pipe(S(r=>r?t():C))}function lr(e,t={credentials:"same-origin"}){return fe(fetch(`${e}`,t)).pipe(ae(()=>C),S(r=>r.status!==200?Ot(()=>new Error(r.statusText)):$(r)))}function ke(e,t){return lr(e,t).pipe(S(r=>r.json()),X(1))}function jo(e,t){let r=new DOMParser;return lr(e,t).pipe(S(n=>n.text()),m(n=>r.parseFromString(n,"text/xml")),X(1))}function Fo(e){let t=A("script",{src:e});return P(()=>(document.head.appendChild(t),R(v(t,"load"),v(t,"error").pipe(S(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(m(()=>{}),L(()=>document.head.removeChild(t)),se(1))))}function Uo(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function Do(){return R(v(window,"scroll",{passive:!0}),v(window,"resize",{passive:!0})).pipe(m(Uo),q(Uo()))}function Wo(){return{width:innerWidth,height:innerHeight}}function Vo(){return v(window,"resize",{passive:!0}).pipe(m(Wo),q(Wo()))}function No(){return Y([Do(),Vo()]).pipe(m(([e,t])=>({offset:e,size:t})),X(1))}function mr(e,{viewport$:t,header$:r}){let n=t.pipe(J("size")),o=Y([n,r]).pipe(m(()=>ze(e)));return Y([r,t,o]).pipe(m(([{height:i},{offset:a,size:s},{x:c,y:u}])=>({offset:{x:a.x-c,y:a.y-u+i},size:s})))}function zo(e,{tx$:t}){let r=v(e,"message").pipe(m(({data:n})=>n));return t.pipe(Lt(()=>r,{leading:!0,trailing:!0}),x(n=>e.postMessage(n)),S(()=>r),oe())}var ss=z("#__config"),ht=JSON.parse(ss.textContent);ht.base=`${new URL(ht.base,Se())}`;function he(){return ht}function ee(e){return ht.features.includes(e)}function te(e,t){return typeof t!="undefined"?ht.translations[e].replace("#",t.toString()):ht.translations[e]}function we(e,t=document){return z(`[data-md-component=${e}]`,t)}function ne(e,t=document){return B(`[data-md-component=${e}]`,t)}function cs(e){let t=z(".md-typeset > :first-child",e);return v(t,"click",{once:!0}).pipe(m(()=>z(".md-typeset",e)),m(r=>({hash:__md_hash(r.innerHTML)})))}function qo(e){return!ee("announce.dismiss")||!e.childElementCount?C:P(()=>{let t=new w;return t.pipe(q({hash:__md_get("__announce")})).subscribe(({hash:r})=>{var n;r&&r===((n=__md_get("__announce"))!=null?n:r)&&(e.hidden=!0,__md_set("__announce",r))}),cs(e).pipe(x(r=>t.next(r)),L(()=>t.complete()),m(r=>H({ref:e},r)))})}function us(e,{target$:t}){return t.pipe(m(r=>({hidden:r!==e})))}function Qo(e,t){let r=new w;return r.subscribe(({hidden:n})=>{e.hidden=n}),us(e,t).pipe(x(n=>r.next(n)),L(()=>r.complete()),m(n=>H({ref:e},n)))}var ni=Ye(Kr());function Yo(e){return A("aside",{class:"md-annotation",tabIndex:0},A("div",{class:"md-annotation__inner md-tooltip"},A("div",{class:"md-tooltip__inner md-typeset"})),A("span",{class:"md-annotation__index"},A("span",{"data-md-annotation-id":e})))}function Ko(e){return A("button",{class:"md-clipboard md-icon",title:te("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}function Br(e,t){let r=t&2,n=t&1,o=Object.keys(e.terms).filter(a=>!e.terms[a]).reduce((a,s)=>[...a,A("del",null,s)," "],[]).slice(0,-1),i=new URL(e.location);return ee("search.highlight")&&i.searchParams.set("h",Object.entries(e.terms).filter(([,a])=>a).reduce((a,[s])=>`${a} ${s}`.trim(),"")),A("a",{href:`${i}`,class:"md-search-result__link",tabIndex:-1},A("article",{class:["md-search-result__article",...r?["md-search-result__article--document"]:[]].join(" "),"data-md-score":e.score.toFixed(2)},r>0&&A("div",{class:"md-search-result__icon md-icon"}),A("h1",{class:"md-search-result__title"},e.title),n>0&&e.text.length>0&&A("p",{class:"md-search-result__teaser"},ko(e.text,320)),e.tags&&e.tags.map(a=>A("span",{class:"md-tag"},a)),n>0&&o.length>0&&A("p",{class:"md-search-result__terms"},te("search.result.term.missing"),": ",...o)))}function Bo(e){let t=e[0].score,r=[...e],n=r.findIndex(u=>!u.location.includes("#")),[o]=r.splice(n,1),i=r.findIndex(u=>u.scoreBr(u,1)),...s.length?[A("details",{class:"md-search-result__more"},A("summary",{tabIndex:-1},s.length>0&&s.length===1?te("search.result.more.one"):te("search.result.more.other",s.length)),...s.map(u=>Br(u,1)))]:[]];return A("li",{class:"md-search-result__item"},c)}function Go(e){return A("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>A("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?pr(r):r)))}function Gr(e){let t=`tabbed-control tabbed-control--${e}`;return A("div",{class:t,hidden:!0},A("button",{class:"tabbed-button",tabIndex:-1}))}function Jo(e){return A("div",{class:"md-typeset__scrollwrap"},A("div",{class:"md-typeset__table"},e))}function fs(e){let t=he(),r=new URL(`../${e.version}/`,t.base);return A("li",{class:"md-version__item"},A("a",{href:`${r}`,class:"md-version__link"},e.title))}function Xo(e,t){return A("div",{class:"md-version"},A("button",{class:"md-version__current","aria-label":te("select.version.title")},t.title),A("ul",{class:"md-version__list"},e.map(fs)))}function ps(e,t){let r=P(()=>Y([vo(e),pt(t)])).pipe(m(([{x:n,y:o},i])=>{let{width:a}=Ae(e);return{x:n-i.x+a/2,y:o-i.y}}));return nr(e).pipe(S(n=>r.pipe(m(o=>({active:n,offset:o})),se(+!n||1/0))))}function Zo(e,t){return P(()=>{let r=new w;r.subscribe({next({offset:a}){e.style.setProperty("--md-tooltip-x",`${a.x}px`),e.style.setProperty("--md-tooltip-y",`${a.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}});let n=r.pipe(ce(1));cr(e).pipe(Z(n)).subscribe(a=>{e.toggleAttribute("data-md-visible",a)}),r.pipe(Vr(500,Te),m(()=>t.getBoundingClientRect()),m(({x:a})=>a)).subscribe({next(a){a?e.style.setProperty("--md-tooltip-0",`${-a}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}});let o=z(":scope > :last-child",e),i=v(o,"mousedown",{once:!0});return r.pipe(S(({active:a})=>a?i:C),x(a=>a.preventDefault())).subscribe(()=>e.blur()),ps(e,t).pipe(x(a=>r.next(a)),L(()=>r.complete()),m(a=>H({ref:e},a)))})}function ls(e){let t=[];for(let r of B(".c, .c1, .cm",e)){let n,o=r.firstChild;if(o instanceof Text)for(;n=/\((\d+)\)/.exec(o.textContent);){let i=o.splitText(n.index);o=i.splitText(n[0].length),t.push(i)}}return t}function ei(e,t){t.append(...Array.from(e.childNodes))}function ti(e,t,{print$:r}){let n=new Map;for(let o of ls(t)){let[,i]=o.textContent.match(/\((\d+)\)/);pe(`li:nth-child(${i})`,e)&&(n.set(+i,Yo(+i)),o.replaceWith(n.get(+i)))}return n.size===0?C:P(()=>{let o=new w;return r.pipe(Z(o.pipe(ce(1)))).subscribe(i=>{e.hidden=!i;for(let[a,s]of n){let c=z(".md-typeset",s),u=z(`li:nth-child(${a})`,e);i?ei(c,u):ei(u,c)}}),R(...[...n].map(([,i])=>Zo(i,t))).pipe(L(()=>o.complete()),oe())})}var ms=0;function oi(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return oi(t)}}function ri(e){return de(e).pipe(m(({width:t})=>({scrollable:mt(e).width>t})),J("scrollable"))}function ii(e,t){let{matches:r}=matchMedia("(hover)"),n=P(()=>{let o=new w;if(o.subscribe(({scrollable:a})=>{a&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}),ni.default.isSupported()){let a=e.closest("pre");a.id=`__code_${++ms}`,a.insertBefore(Ko(a.id),e)}let i=e.closest(".highlight");if(i instanceof HTMLElement){let a=oi(i);if(typeof a!="undefined"&&(i.classList.contains("annotate")||ee("content.code.annotate"))){let s=ti(a,e,t);return ri(e).pipe(x(c=>o.next(c)),L(()=>o.complete()),m(c=>H({ref:e},c)),et(de(i).pipe(Z(o.pipe(ce(1))),m(({width:c,height:u})=>c&&u),K(),S(c=>c?s:C))))}}return ri(e).pipe(x(a=>o.next(a)),L(()=>o.complete()),m(a=>H({ref:e},a)))});return cr(e).pipe(M(o=>o),se(1),S(()=>n))}var ai=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:transparent}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel rect,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel rect{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color)}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}defs #flowchart-circleEnd,defs #flowchart-circleStart,defs #flowchart-crossEnd,defs #flowchart-crossStart,defs #flowchart-pointEnd,defs #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}.actor,defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{stroke:var(--md-mermaid-node-fg-color)}text.actor>tspan{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-default-fg-color--lighter)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-edge-color)}.loopText>tspan,.messageText{font-family:var(--md-mermaid-font-family)!important}#arrowhead path,.loopText>tspan,.messageText{fill:var(--md-mermaid-edge-color);stroke:none}.loopLine{stroke:var(--md-mermaid-node-fg-color)}.labelBox,.loopLine{fill:var(--md-mermaid-node-bg-color)}.labelBox{stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-node-fg-color);font-family:var(--md-mermaid-font-family)}";var Jr,hs=0;function bs(){return typeof mermaid=="undefined"||mermaid instanceof Element?Fo("https://unpkg.com/mermaid@9.0.1/dist/mermaid.min.js"):$(void 0)}function si(e){return e.classList.remove("mermaid"),Jr||(Jr=bs().pipe(x(()=>mermaid.initialize({startOnLoad:!1,themeCSS:ai})),m(()=>{}),X(1))),Jr.subscribe(()=>{e.classList.add("mermaid");let t=`__mermaid_${hs++}`,r=A("div",{class:"mermaid"});mermaid.mermaidAPI.render(t,e.textContent,n=>{let o=r.attachShadow({mode:"closed"});o.innerHTML=n,e.replaceWith(r)})}),Jr.pipe(m(()=>({ref:e})))}function vs(e,{target$:t,print$:r}){let n=!0;return R(t.pipe(m(o=>o.closest("details:not([open])")),M(o=>e===o),m(()=>({action:"open",reveal:!0}))),r.pipe(M(o=>o||!n),x(()=>n=e.open),m(o=>({action:o?"open":"close"}))))}function ci(e,t){return P(()=>{let r=new w;return r.subscribe(({action:n,reveal:o})=>{n==="open"?e.setAttribute("open",""):e.removeAttribute("open"),o&&e.scrollIntoView()}),vs(e,t).pipe(x(n=>r.next(n)),L(()=>r.complete()),m(n=>H({ref:e},n)))})}var ui=A("table");function fi(e){return e.replaceWith(ui),ui.replaceWith(Jo(e)),$({ref:e})}function gs(e){let t=B(":scope > input",e),r=t.find(n=>n.checked)||t[0];return R(...t.map(n=>v(n,"change").pipe(m(()=>z(`label[for="${n.id}"]`))))).pipe(q(z(`label[for="${r.id}"]`)),m(n=>({active:n})))}function pi(e){let t=Gr("prev");e.append(t);let r=Gr("next");e.append(r);let n=z(".tabbed-labels",e);return P(()=>{let o=new w,i=o.pipe(ce(1));return Y([o,de(e)]).pipe($e(1,Te),Z(i)).subscribe({next([{active:a},s]){let c=ze(a),{width:u}=Ae(a);e.style.setProperty("--md-indicator-x",`${c.x}px`),e.style.setProperty("--md-indicator-width",`${u}px`);let f=or(n);(c.xf.x+s.width)&&n.scrollTo({left:Math.max(0,c.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),Y([pt(n),de(n)]).pipe(Z(i)).subscribe(([a,s])=>{let c=mt(n);t.hidden=a.x<16,r.hidden=a.x>c.width-s.width-16}),R(v(t,"click").pipe(m(()=>-1)),v(r,"click").pipe(m(()=>1))).pipe(Z(i)).subscribe(a=>{let{width:s}=Ae(n);n.scrollBy({left:s*a,behavior:"smooth"})}),ee("content.tabs.link")&&o.pipe(Le(1)).subscribe(({active:a})=>{let s=a.innerText.trim();for(let u of B("[data-tabs]"))for(let f of B(":scope > input",u))if(z(`label[for="${f.id}"]`).innerText.trim()===s){f.click();break}let c=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([s,...c])])}),gs(e).pipe(x(a=>o.next(a)),L(()=>o.complete()),m(a=>H({ref:e},a)))}).pipe(Ge(ue))}function li(e,{target$:t,print$:r}){return R(...B("pre:not(.mermaid) > code",e).map(n=>ii(n,{print$:r})),...B("pre.mermaid",e).map(n=>si(n)),...B("table:not([class])",e).map(n=>fi(n)),...B("details",e).map(n=>ci(n,{target$:t,print$:r})),...B("[data-tabs]",e).map(n=>pi(n)))}function ys(e,{alert$:t}){return t.pipe(S(r=>R($(!0),$(!1).pipe(Fe(2e3))).pipe(m(n=>({message:r,active:n})))))}function mi(e,t){let r=z(".md-typeset",e);return P(()=>{let n=new w;return n.subscribe(({message:o,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=o}),ys(e,t).pipe(x(o=>n.next(o)),L(()=>n.complete()),m(o=>H({ref:e},o)))})}function xs({viewport$:e}){if(!ee("header.autohide"))return $(!1);let t=e.pipe(m(({offset:{y:o}})=>o),Me(2,1),m(([o,i])=>[oMath.abs(i-o.y)>100),m(([,[o]])=>o),K()),n=dt("search");return Y([e,n]).pipe(m(([{offset:o},i])=>o.y>400&&!i),K(),S(o=>o?r:$(!1)),q(!1))}function di(e,t){return P(()=>Y([de(e),xs(t)])).pipe(m(([{height:r},n])=>({height:r,hidden:n})),K((r,n)=>r.height===n.height&&r.hidden===n.hidden),X(1))}function hi(e,{header$:t,main$:r}){return P(()=>{let n=new w,o=n.pipe(ce(1));return n.pipe(J("active"),Xe(t)).subscribe(([{active:i},{hidden:a}])=>{e.classList.toggle("md-header--shadow",i&&!a),e.hidden=a}),r.subscribe(n),t.pipe(Z(o),m(i=>H({ref:e},i)))})}function Ss(e,{viewport$:t,header$:r}){return mr(e,{viewport$:t,header$:r}).pipe(m(({offset:{y:n}})=>{let{height:o}=Ae(e);return{active:n>=o}}),J("active"))}function bi(e,t){return P(()=>{let r=new w;r.subscribe(({active:o})=>{e.classList.toggle("md-header__title--active",o)});let n=pe("article h1");return typeof n=="undefined"?C:Ss(n,t).pipe(x(o=>r.next(o)),L(()=>r.complete()),m(o=>H({ref:e},o)))})}function vi(e,{viewport$:t,header$:r}){let n=r.pipe(m(({height:i})=>i),K()),o=n.pipe(S(()=>de(e).pipe(m(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),J("bottom"))));return Y([n,o,t]).pipe(m(([i,{top:a,bottom:s},{offset:{y:c},size:{height:u}}])=>(u=Math.max(0,u-Math.max(0,a-c,i)-Math.max(0,u+c-s)),{offset:a-i,height:u,active:a-i<=c})),K((i,a)=>i.offset===a.offset&&i.height===a.height&&i.active===a.active))}function ws(e){let t=__md_get("__palette")||{index:e.findIndex(r=>matchMedia(r.getAttribute("data-md-color-media")).matches)};return $(...e).pipe(ie(r=>v(r,"change").pipe(m(()=>r))),q(e[Math.max(0,t.index)]),m(r=>({index:e.indexOf(r),color:{scheme:r.getAttribute("data-md-color-scheme"),primary:r.getAttribute("data-md-color-primary"),accent:r.getAttribute("data-md-color-accent")}})),X(1))}function gi(e){return P(()=>{let t=new w;t.subscribe(n=>{document.body.setAttribute("data-md-color-switching","");for(let[o,i]of Object.entries(n.color))document.body.setAttribute(`data-md-color-${o}`,i);for(let o=0;o{document.body.removeAttribute("data-md-color-switching")});let r=B("input",e);return ws(r).pipe(x(n=>t.next(n)),L(()=>t.complete()),m(n=>H({ref:e},n)))})}var Xr=Ye(Kr());function Es(e){e.setAttribute("data-md-copying","");let t=e.innerText;return e.removeAttribute("data-md-copying"),t}function yi({alert$:e}){Xr.default.isSupported()&&new F(t=>{new Xr.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||Es(z(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(x(t=>{t.trigger.focus()}),m(()=>te("clipboard.copied"))).subscribe(e)}function Os(e){if(e.length<2)return[""];let[t,r]=[...e].sort((o,i)=>o.length-i.length).map(o=>o.replace(/[^/]+$/,"")),n=0;if(t===r)n=t.length;else for(;t.charCodeAt(n)===r.charCodeAt(n);)n++;return e.map(o=>o.replace(t.slice(0,n),""))}function dr(e){let t=__md_get("__sitemap",sessionStorage,e);if(t)return $(t);{let r=he();return jo(new URL("sitemap.xml",e||r.base)).pipe(m(n=>Os(B("loc",n).map(o=>o.textContent))),ae(()=>C),je([]),x(n=>__md_set("__sitemap",n,sessionStorage,e)))}}function xi({document$:e,location$:t,viewport$:r}){let n=he();if(location.protocol==="file:")return;"scrollRestoration"in history&&(history.scrollRestoration="manual",v(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}));let o=pe("link[rel=icon]");typeof o!="undefined"&&(o.href=o.href);let i=dr().pipe(m(u=>u.map(f=>`${new URL(f,n.base)}`)),S(u=>v(document.body,"click").pipe(M(f=>!f.metaKey&&!f.ctrlKey),S(f=>{if(f.target instanceof Element){let p=f.target.closest("a");if(p&&!p.target){let l=new URL(p.href);if(l.search="",l.hash="",l.pathname!==location.pathname&&u.includes(l.toString()))return f.preventDefault(),$({url:new URL(p.href)})}}return xe}))),oe()),a=v(window,"popstate").pipe(M(u=>u.state!==null),m(u=>({url:new URL(location.href),offset:u.state})),oe());R(i,a).pipe(K((u,f)=>u.url.href===f.url.href),m(({url:u})=>u)).subscribe(t);let s=t.pipe(J("pathname"),S(u=>lr(u.href).pipe(ae(()=>(fr(u),xe)))),oe());i.pipe(ft(s)).subscribe(({url:u})=>{history.pushState({},"",`${u}`)});let c=new DOMParser;s.pipe(S(u=>u.text()),m(u=>c.parseFromString(u,"text/html"))).subscribe(e),e.pipe(Le(1)).subscribe(u=>{for(let f of["title","link[rel=canonical]","meta[name=author]","meta[name=description]","[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...ee("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let p=pe(f),l=pe(f,u);typeof p!="undefined"&&typeof l!="undefined"&&p.replaceWith(l)}}),e.pipe(Le(1),m(()=>we("container")),S(u=>B("script",u)),Ir(u=>{let f=A("script");if(u.src){for(let p of u.getAttributeNames())f.setAttribute(p,u.getAttribute(p));return u.replaceWith(f),new F(p=>{f.onload=()=>p.complete()})}else return f.textContent=u.textContent,u.replaceWith(f),C})).subscribe(),R(i,a).pipe(ft(e)).subscribe(({url:u,offset:f})=>{u.hash&&!f?Po(u.hash):window.scrollTo(0,(f==null?void 0:f.y)||0)}),r.pipe(Mt(i),Ze(250),J("offset")).subscribe(({offset:u})=>{history.replaceState(u,"")}),R(i,a).pipe(Me(2,1),M(([u,f])=>u.url.pathname===f.url.pathname),m(([,u])=>u)).subscribe(({offset:u})=>{window.scrollTo(0,(u==null?void 0:u.y)||0)})}var Ms=Ye(Zr());var wi=Ye(Zr());function en(e,t){let r=new RegExp(e.separator,"img"),n=(o,i,a)=>`${i}${a}`;return o=>{o=o.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator})(${o.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return a=>(t?(0,wi.default)(a):a).replace(i,n).replace(/<\/mark>(\s+)]*>/img,"$1")}}function Ei(e){return e.split(/"([^"]+)"/g).map((t,r)=>r&1?t.replace(/^\b|^(?![^\x00-\x7F]|$)|\s+/g," +"):t).join("").replace(/"|(?:^|\s+)[*+\-:^~]+(?=\s+|$)/g,"").trim()}function bt(e){return e.type===1}function Oi(e){return e.type===2}function vt(e){return e.type===3}function As({config:e,docs:t}){e.lang.length===1&&e.lang[0]==="en"&&(e.lang=[te("search.config.lang")]),e.separator==="[\\s\\-]+"&&(e.separator=te("search.config.separator"));let n={pipeline:te("search.config.pipeline").split(/\s*,\s*/).filter(Boolean),suggestions:ee("search.suggest")};return{config:e,docs:t,options:n}}function _i(e,t){let r=he(),n=new Worker(e),o=new w,i=zo(n,{tx$:o}).pipe(m(a=>{if(vt(a))for(let s of a.data.items)for(let c of s)c.location=`${new URL(c.location,r.base)}`;return a}),oe());return fe(t).pipe(m(a=>({type:0,data:As(a)}))).subscribe(o.next.bind(o)),{tx$:o,rx$:i}}function Ti({document$:e}){let t=he(),r=ke(new URL("../versions.json",t.base)).pipe(ae(()=>C)),n=r.pipe(m(o=>{let[,i]=t.base.match(/([^/]+)\/?$/);return o.find(({version:a,aliases:s})=>a===i||s.includes(i))||o[0]}));r.pipe(m(o=>new Map(o.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),S(o=>v(document.body,"click").pipe(M(i=>!i.metaKey&&!i.ctrlKey),ge(n),S(([i,a])=>{if(i.target instanceof Element){let s=i.target.closest("a");if(s&&!s.target&&o.has(s.href)){let c=s.href;return!i.target.closest(".md-version")&&o.get(c)===a?C:(i.preventDefault(),$(c))}}return C}),S(i=>{let{version:a}=o.get(i);return dr(new URL(i)).pipe(m(s=>{let u=Se().href.replace(t.base,"");return s.includes(u)?new URL(`../${a}/${u}`,t.base):new URL(i)}))})))).subscribe(o=>fr(o)),Y([r,n]).subscribe(([o,i])=>{z(".md-header__topic").appendChild(Xo(o,i))}),e.pipe(S(()=>n)).subscribe(o=>{var a;let i=__md_get("__outdated",sessionStorage);if(i===null){let s=((a=t.version)==null?void 0:a.default)||"latest";i=!o.aliases.includes(s),__md_set("__outdated",i,sessionStorage)}if(i)for(let s of ne("outdated"))s.hidden=!1})}function Cs(e,{rx$:t}){let r=(__search==null?void 0:__search.transform)||Ei,{searchParams:n}=Se();n.has("q")&&qe("search",!0);let o=t.pipe(M(bt),se(1),m(()=>n.get("q")||""));dt("search").pipe(M(s=>!s),se(1)).subscribe(()=>{let s=new URL(location.href);s.searchParams.delete("q"),history.replaceState({},"",`${s}`)}),o.subscribe(s=>{s&&(e.value=s,e.focus())});let i=nr(e),a=R(v(e,"keyup"),v(e,"focus").pipe(Fe(1)),o).pipe(m(()=>r(e.value)),q(""),K());return Y([a,i]).pipe(m(([s,c])=>({value:s,focus:c})),X(1))}function Mi(e,{tx$:t,rx$:r}){let n=new w,o=n.pipe(ce(1));return n.pipe(J("value"),m(({value:i})=>({type:2,data:i}))).subscribe(t.next.bind(t)),n.pipe(J("focus")).subscribe(({focus:i})=>{i?(qe("search",i),e.placeholder=""):e.placeholder=te("search.placeholder")}),v(e.form,"reset").pipe(Z(o)).subscribe(()=>e.focus()),Cs(e,{tx$:t,rx$:r}).pipe(x(i=>n.next(i)),L(()=>n.complete()),m(i=>H({ref:e},i)),oe())}function Li(e,{rx$:t},{query$:r}){let n=new w,o=Mo(e.parentElement).pipe(M(Boolean)),i=z(":scope > :first-child",e),a=z(":scope > :last-child",e),s=t.pipe(M(bt),se(1));return n.pipe(ge(r),Mt(s)).subscribe(([{items:u},{value:f}])=>{if(f)switch(u.length){case 0:i.textContent=te("search.result.none");break;case 1:i.textContent=te("search.result.one");break;default:i.textContent=te("search.result.other",pr(u.length))}else i.textContent=te("search.result.placeholder")}),n.pipe(x(()=>a.innerHTML=""),S(({items:u})=>R($(...u.slice(0,10)),$(...u.slice(10)).pipe(Me(4),Nr(o),S(([f])=>f))))).subscribe(u=>a.appendChild(Bo(u))),t.pipe(M(vt),m(({data:u})=>u)).pipe(x(u=>n.next(u)),L(()=>n.complete()),m(u=>H({ref:e},u)))}function Rs(e,{query$:t}){return t.pipe(m(({value:r})=>{let n=Se();return n.hash="",n.searchParams.delete("h"),n.searchParams.set("q",r),{url:n}}))}function Ai(e,t){let r=new w;return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),v(e,"click").subscribe(n=>n.preventDefault()),Rs(e,t).pipe(x(n=>r.next(n)),L(()=>r.complete()),m(n=>H({ref:e},n)))}function Ci(e,{rx$:t},{keyboard$:r}){let n=new w,o=we("search-query"),i=R(v(o,"keydown"),v(o,"focus")).pipe(Ie(ue),m(()=>o.value),K());return n.pipe(Xe(i),m(([{suggestions:s},c])=>{let u=c.split(/([\s-]+)/);if((s==null?void 0:s.length)&&u[u.length-1]){let f=s[s.length-1];f.startsWith(u[u.length-1])&&(u[u.length-1]=f)}else u.length=0;return u})).subscribe(s=>e.innerHTML=s.join("").replace(/\s/g," ")),r.pipe(M(({mode:s})=>s==="search")).subscribe(s=>{switch(s.type){case"ArrowRight":e.innerText.length&&o.selectionStart===o.value.length&&(o.value=e.innerText);break}}),t.pipe(M(vt),m(({data:s})=>s)).pipe(x(s=>n.next(s)),L(()=>n.complete()),m(()=>({ref:e})))}function Ri(e,{index$:t,keyboard$:r}){let n=he();try{let o=(__search==null?void 0:__search.worker)||n.search,i=_i(o,t),a=we("search-query",e),s=we("search-result",e),{tx$:c,rx$:u}=i;c.pipe(M(Oi),ft(u.pipe(M(bt))),se(1)).subscribe(c.next.bind(c)),r.pipe(M(({mode:l})=>l==="search")).subscribe(l=>{let d=Ne();switch(l.type){case"Enter":if(d===a){let h=new Map;for(let b of B(":first-child [href]",s)){let U=b.firstElementChild;h.set(b,parseFloat(U.getAttribute("data-md-score")))}if(h.size){let[[b]]=[...h].sort(([,U],[,G])=>G-U);b.click()}l.claim()}break;case"Escape":case"Tab":qe("search",!1),a.blur();break;case"ArrowUp":case"ArrowDown":if(typeof d=="undefined")a.focus();else{let h=[a,...B(":not(details) > [href], summary, details[open] [href]",s)],b=Math.max(0,(Math.max(0,h.indexOf(d))+h.length+(l.type==="ArrowUp"?-1:1))%h.length);h[b].focus()}l.claim();break;default:a!==Ne()&&a.focus()}}),r.pipe(M(({mode:l})=>l==="global")).subscribe(l=>{switch(l.type){case"f":case"s":case"/":a.focus(),a.select(),l.claim();break}});let f=Mi(a,i),p=Li(s,i,{query$:f});return R(f,p).pipe(et(...ne("search-share",e).map(l=>Ai(l,{query$:f})),...ne("search-suggest",e).map(l=>Ci(l,i,{keyboard$:r}))))}catch(o){return e.hidden=!0,xe}}function ki(e,{index$:t,location$:r}){return Y([t,r.pipe(q(Se()),M(n=>!!n.searchParams.get("h")))]).pipe(m(([n,o])=>en(n.config,!0)(o.searchParams.get("h"))),m(n=>{var a;let o=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let s=i.nextNode();s;s=i.nextNode())if((a=s.parentElement)!=null&&a.offsetHeight){let c=s.textContent,u=n(c);u.length>c.length&&o.set(s,u)}for(let[s,c]of o){let{childNodes:u}=A("span",null,c);s.replaceWith(...Array.from(u))}return{ref:e,nodes:o}}))}function ks(e,{viewport$:t,main$:r}){let n=e.parentElement,o=n.offsetTop-n.parentElement.offsetTop;return Y([r,t]).pipe(m(([{offset:i,height:a},{offset:{y:s}}])=>(a=a+Math.min(o,Math.max(0,s-i))-o,{height:a,locked:s>=i+o})),K((i,a)=>i.height===a.height&&i.locked===a.locked))}function tn(e,n){var o=n,{header$:t}=o,r=cn(o,["header$"]);let i=z(".md-sidebar__scrollwrap",e),{y:a}=ze(i);return P(()=>{let s=new w;return s.pipe($e(0,Te),ge(t)).subscribe({next([{height:c},{height:u}]){i.style.height=`${c-2*a}px`,e.style.top=`${u}px`},complete(){i.style.height="",e.style.top=""}}),ks(e,r).pipe(x(c=>s.next(c)),L(()=>s.complete()),m(c=>H({ref:e},c)))})}function Hi(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return _t(ke(`${r}/releases/latest`).pipe(ae(()=>C),m(n=>({version:n.tag_name})),je({})),ke(r).pipe(ae(()=>C),m(n=>({stars:n.stargazers_count,forks:n.forks_count})),je({}))).pipe(m(([n,o])=>H(H({},n),o)))}else{let r=`https://api.github.com/users/${e}`;return ke(r).pipe(m(n=>({repositories:n.public_repos})),je({}))}}function Pi(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return ke(r).pipe(ae(()=>C),m(({star_count:n,forks_count:o})=>({stars:n,forks:o})),je({}))}function Ii(e){let[t]=e.match(/(git(?:hub|lab))/i)||[];switch(t.toLowerCase()){case"github":let[,r,n]=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);return Hi(r,n);case"gitlab":let[,o,i]=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i);return Pi(o,i);default:return C}}var Hs;function Ps(e){return Hs||(Hs=P(()=>{let t=__md_get("__source",sessionStorage);return t?$(t):Ii(e.href).pipe(x(r=>__md_set("__source",r,sessionStorage)))}).pipe(ae(()=>C),M(t=>Object.keys(t).length>0),m(t=>({facts:t})),X(1)))}function $i(e){let t=z(":scope > :last-child",e);return P(()=>{let r=new w;return r.subscribe(({facts:n})=>{t.appendChild(Go(n)),t.classList.add("md-source__repository--active")}),Ps(e).pipe(x(n=>r.next(n)),L(()=>r.complete()),m(n=>H({ref:e},n)))})}function Is(e,{viewport$:t,header$:r}){return de(document.body).pipe(S(()=>mr(e,{header$:r,viewport$:t})),m(({offset:{y:n}})=>({hidden:n>=10})),J("hidden"))}function ji(e,t){return P(()=>{let r=new w;return r.subscribe({next({hidden:n}){e.hidden=n},complete(){e.hidden=!1}}),(ee("navigation.tabs.sticky")?$({hidden:!1}):Is(e,t)).pipe(x(n=>r.next(n)),L(()=>r.complete()),m(n=>H({ref:e},n)))})}function $s(e,{viewport$:t,header$:r}){let n=new Map,o=B("[href^=\\#]",e);for(let s of o){let c=decodeURIComponent(s.hash.substring(1)),u=pe(`[id="${c}"]`);typeof u!="undefined"&&n.set(s,u)}let i=r.pipe(J("height"),m(({height:s})=>{let c=we("main"),u=z(":scope > :first-child",c);return s+.8*(u.offsetTop-c.offsetTop)}),oe());return de(document.body).pipe(J("height"),S(s=>P(()=>{let c=[];return $([...n].reduce((u,[f,p])=>{for(;c.length&&n.get(c[c.length-1]).tagName>=p.tagName;)c.pop();let l=p.offsetTop;for(;!l&&p.parentElement;)p=p.parentElement,l=p.offsetTop;return u.set([...c=[...c,f]].reverse(),l)},new Map))}).pipe(m(c=>new Map([...c].sort(([,u],[,f])=>u-f))),Xe(i),S(([c,u])=>t.pipe(Fr(([f,p],{offset:{y:l},size:d})=>{let h=l+d.height>=Math.floor(s.height);for(;p.length;){let[,b]=p[0];if(b-u=l&&!h)p=[f.pop(),...p];else break}return[f,p]},[[],[...c]]),K((f,p)=>f[0]===p[0]&&f[1]===p[1])))))).pipe(m(([s,c])=>({prev:s.map(([u])=>u),next:c.map(([u])=>u)})),q({prev:[],next:[]}),Me(2,1),m(([s,c])=>s.prev.length{let o=new w,i=o.pipe(ce(1));return o.subscribe(({prev:a,next:s})=>{for(let[c]of s)c.classList.remove("md-nav__link--passed"),c.classList.remove("md-nav__link--active");for(let[c,[u]]of a.entries())u.classList.add("md-nav__link--passed"),u.classList.toggle("md-nav__link--active",c===a.length-1)}),ee("navigation.tracking")&&t.pipe(Z(i),J("offset"),Ze(250),Le(1),Z(n.pipe(Le(1))),Tt({delay:250}),ge(o)).subscribe(([,{prev:a}])=>{let s=Se(),c=a[a.length-1];if(c&&c.length){let[u]=c,{hash:f}=new URL(u.href);s.hash!==f&&(s.hash=f,history.replaceState({},"",`${s}`))}else s.hash="",history.replaceState({},"",`${s}`)}),$s(e,{viewport$:t,header$:r}).pipe(x(a=>o.next(a)),L(()=>o.complete()),m(a=>H({ref:e},a)))})}function js(e,{viewport$:t,main$:r,target$:n}){let o=t.pipe(m(({offset:{y:a}})=>a),Me(2,1),m(([a,s])=>a>s&&s>0),K()),i=r.pipe(m(({active:a})=>a));return Y([i,o]).pipe(m(([a,s])=>!(a&&s)),K(),Z(n.pipe(Le(1))),jr(!0),Tt({delay:250}),m(a=>({hidden:a})))}function Ui(e,{viewport$:t,header$:r,main$:n,target$:o}){let i=new w,a=i.pipe(ce(1));return i.subscribe({next({hidden:s}){e.hidden=s,s?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(Z(a),J("height")).subscribe(({height:s})=>{e.style.top=`${s+16}px`}),js(e,{viewport$:t,main$:n,target$:o}).pipe(x(s=>i.next(s)),L(()=>i.complete()),m(s=>H({ref:e},s)))}function Di({document$:e,tablet$:t}){e.pipe(S(()=>B(".md-toggle--indeterminate, [data-md-state=indeterminate]")),x(r=>{r.indeterminate=!0,r.checked=!1}),ie(r=>v(r,"change").pipe(Dr(()=>r.classList.contains("md-toggle--indeterminate")),m(()=>r))),ge(t)).subscribe(([r,n])=>{r.classList.remove("md-toggle--indeterminate"),n&&(r.checked=!1)})}function Fs(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function Wi({document$:e}){e.pipe(S(()=>B("[data-md-scrollfix]")),x(t=>t.removeAttribute("data-md-scrollfix")),M(Fs),ie(t=>v(t,"touchstart").pipe(m(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function Vi({viewport$:e,tablet$:t}){Y([dt("search"),t]).pipe(m(([r,n])=>r&&!n),S(r=>$(r).pipe(Fe(r?400:100))),ge(e)).subscribe(([r,{offset:{y:n}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${n}px`;else{let o=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",o&&window.scrollTo(0,o)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let n=e[r];typeof n!="object"?n=document.createTextNode(n):n.parentNode&&n.parentNode.removeChild(n),r?t.insertBefore(this.previousSibling,n):t.replaceChild(n,this)}}}));document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var tt=bo(),br=Co(),gt=Io(),rn=Ao(),Ee=No(),vr=qr("(min-width: 960px)"),zi=qr("(min-width: 1220px)"),qi=$o(),Qi=he(),Yi=document.forms.namedItem("search")?(__search==null?void 0:__search.index)||ke(new URL("search/search_index.json",Qi.base)):xe,nn=new w;yi({alert$:nn});ee("navigation.instant")&&xi({document$:tt,location$:br,viewport$:Ee});var Ni;((Ni=Qi.version)==null?void 0:Ni.provider)==="mike"&&Ti({document$:tt});R(br,gt).pipe(Fe(125)).subscribe(()=>{qe("drawer",!1),qe("search",!1)});rn.pipe(M(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=pe("[href][rel=prev]");typeof t!="undefined"&&t.click();break;case"n":case".":let r=pe("[href][rel=next]");typeof r!="undefined"&&r.click();break}});Di({document$:tt,tablet$:vr});Wi({document$:tt});Vi({viewport$:Ee,tablet$:vr});var Qe=di(we("header"),{viewport$:Ee}),hr=tt.pipe(m(()=>we("main")),S(e=>vi(e,{viewport$:Ee,header$:Qe})),X(1)),Us=R(...ne("consent").map(e=>Qo(e,{target$:gt})),...ne("dialog").map(e=>mi(e,{alert$:nn})),...ne("header").map(e=>hi(e,{viewport$:Ee,header$:Qe,main$:hr})),...ne("palette").map(e=>gi(e)),...ne("search").map(e=>Ri(e,{index$:Yi,keyboard$:rn})),...ne("source").map(e=>$i(e))),Ds=P(()=>R(...ne("announce").map(e=>qo(e)),...ne("content").map(e=>li(e,{target$:gt,print$:qi})),...ne("content").map(e=>ee("search.highlight")?ki(e,{index$:Yi,location$:br}):C),...ne("header-title").map(e=>bi(e,{viewport$:Ee,header$:Qe})),...ne("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?Qr(zi,()=>tn(e,{viewport$:Ee,header$:Qe,main$:hr})):Qr(vr,()=>tn(e,{viewport$:Ee,header$:Qe,main$:hr}))),...ne("tabs").map(e=>ji(e,{viewport$:Ee,header$:Qe})),...ne("toc").map(e=>Fi(e,{viewport$:Ee,header$:Qe,target$:gt})),...ne("top").map(e=>Ui(e,{viewport$:Ee,header$:Qe,main$:hr,target$:gt})))),Ki=tt.pipe(S(()=>Ds),et(Us),X(1));Ki.subscribe();window.document$=tt;window.location$=br;window.target$=gt;window.keyboard$=rn;window.viewport$=Ee;window.tablet$=vr;window.screen$=zi;window.print$=qi;window.alert$=nn;window.component$=Ki;})(); +//# sourceMappingURL=bundle.9c69f0bc.min.js.map + diff --git a/assets/javascripts/bundle.9c69f0bc.min.js.map b/assets/javascripts/bundle.9c69f0bc.min.js.map new file mode 100644 index 0000000..27a0842 --- /dev/null +++ b/assets/javascripts/bundle.9c69f0bc.min.js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["node_modules/focus-visible/dist/focus-visible.js", "node_modules/url-polyfill/url-polyfill.js", "node_modules/rxjs/node_modules/tslib/tslib.js", "node_modules/clipboard/dist/clipboard.js", "node_modules/escape-html/index.js", "node_modules/array-flat-polyfill/index.mjs", "src/assets/javascripts/bundle.ts", "node_modules/unfetch/polyfill/index.js", "node_modules/rxjs/node_modules/tslib/modules/index.js", "node_modules/rxjs/src/internal/util/isFunction.ts", "node_modules/rxjs/src/internal/util/createErrorClass.ts", "node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "node_modules/rxjs/src/internal/util/arrRemove.ts", "node_modules/rxjs/src/internal/Subscription.ts", "node_modules/rxjs/src/internal/config.ts", "node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "node_modules/rxjs/src/internal/util/noop.ts", "node_modules/rxjs/src/internal/NotificationFactories.ts", "node_modules/rxjs/src/internal/util/errorContext.ts", "node_modules/rxjs/src/internal/Subscriber.ts", "node_modules/rxjs/src/internal/symbol/observable.ts", "node_modules/rxjs/src/internal/util/identity.ts", "node_modules/rxjs/src/internal/util/pipe.ts", "node_modules/rxjs/src/internal/Observable.ts", "node_modules/rxjs/src/internal/util/lift.ts", "node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts", "node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "node_modules/rxjs/src/internal/Subject.ts", "node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "node_modules/rxjs/src/internal/ReplaySubject.ts", "node_modules/rxjs/src/internal/scheduler/Action.ts", "node_modules/rxjs/src/internal/scheduler/intervalProvider.ts", "node_modules/rxjs/src/internal/scheduler/AsyncAction.ts", "node_modules/rxjs/src/internal/Scheduler.ts", "node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts", "node_modules/rxjs/src/internal/scheduler/async.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts", "node_modules/rxjs/src/internal/scheduler/animationFrame.ts", "node_modules/rxjs/src/internal/observable/empty.ts", "node_modules/rxjs/src/internal/util/isScheduler.ts", "node_modules/rxjs/src/internal/util/args.ts", "node_modules/rxjs/src/internal/util/isArrayLike.ts", "node_modules/rxjs/src/internal/util/isPromise.ts", "node_modules/rxjs/src/internal/util/isInteropObservable.ts", "node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "node_modules/rxjs/src/internal/symbol/iterator.ts", "node_modules/rxjs/src/internal/util/isIterable.ts", "node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "node_modules/rxjs/src/internal/observable/innerFrom.ts", "node_modules/rxjs/src/internal/util/executeSchedule.ts", "node_modules/rxjs/src/internal/operators/observeOn.ts", "node_modules/rxjs/src/internal/operators/subscribeOn.ts", "node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "node_modules/rxjs/src/internal/scheduled/scheduled.ts", "node_modules/rxjs/src/internal/observable/from.ts", "node_modules/rxjs/src/internal/observable/of.ts", "node_modules/rxjs/src/internal/observable/throwError.ts", "node_modules/rxjs/src/internal/util/isDate.ts", "node_modules/rxjs/src/internal/operators/map.ts", "node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts", "node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts", "node_modules/rxjs/src/internal/util/createObject.ts", "node_modules/rxjs/src/internal/observable/combineLatest.ts", "node_modules/rxjs/src/internal/operators/mergeInternals.ts", "node_modules/rxjs/src/internal/operators/mergeMap.ts", "node_modules/rxjs/src/internal/operators/mergeAll.ts", "node_modules/rxjs/src/internal/operators/concatAll.ts", "node_modules/rxjs/src/internal/observable/concat.ts", "node_modules/rxjs/src/internal/observable/defer.ts", "node_modules/rxjs/src/internal/observable/fromEvent.ts", "node_modules/rxjs/src/internal/observable/fromEventPattern.ts", "node_modules/rxjs/src/internal/observable/timer.ts", "node_modules/rxjs/src/internal/observable/merge.ts", "node_modules/rxjs/src/internal/observable/never.ts", "node_modules/rxjs/src/internal/util/argsOrArgArray.ts", "node_modules/rxjs/src/internal/operators/filter.ts", "node_modules/rxjs/src/internal/observable/zip.ts", "node_modules/rxjs/src/internal/operators/audit.ts", "node_modules/rxjs/src/internal/operators/auditTime.ts", "node_modules/rxjs/src/internal/operators/bufferCount.ts", "node_modules/rxjs/src/internal/operators/catchError.ts", "node_modules/rxjs/src/internal/operators/scanInternals.ts", "node_modules/rxjs/src/internal/operators/combineLatest.ts", "node_modules/rxjs/src/internal/operators/combineLatestWith.ts", "node_modules/rxjs/src/internal/operators/concatMap.ts", "node_modules/rxjs/src/internal/operators/debounceTime.ts", "node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts", "node_modules/rxjs/src/internal/operators/take.ts", "node_modules/rxjs/src/internal/operators/ignoreElements.ts", "node_modules/rxjs/src/internal/operators/mapTo.ts", "node_modules/rxjs/src/internal/operators/delayWhen.ts", "node_modules/rxjs/src/internal/operators/delay.ts", "node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts", "node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts", "node_modules/rxjs/src/internal/operators/endWith.ts", "node_modules/rxjs/src/internal/operators/finalize.ts", "node_modules/rxjs/src/internal/operators/takeLast.ts", "node_modules/rxjs/src/internal/operators/merge.ts", "node_modules/rxjs/src/internal/operators/mergeWith.ts", "node_modules/rxjs/src/internal/operators/repeat.ts", "node_modules/rxjs/src/internal/operators/sample.ts", "node_modules/rxjs/src/internal/operators/scan.ts", "node_modules/rxjs/src/internal/operators/share.ts", "node_modules/rxjs/src/internal/operators/shareReplay.ts", "node_modules/rxjs/src/internal/operators/skip.ts", "node_modules/rxjs/src/internal/operators/skipUntil.ts", "node_modules/rxjs/src/internal/operators/startWith.ts", "node_modules/rxjs/src/internal/operators/switchMap.ts", "node_modules/rxjs/src/internal/operators/takeUntil.ts", "node_modules/rxjs/src/internal/operators/takeWhile.ts", "node_modules/rxjs/src/internal/operators/tap.ts", "node_modules/rxjs/src/internal/operators/throttle.ts", "node_modules/rxjs/src/internal/operators/throttleTime.ts", "node_modules/rxjs/src/internal/operators/withLatestFrom.ts", "node_modules/rxjs/src/internal/operators/zip.ts", "node_modules/rxjs/src/internal/operators/zipWith.ts", "src/assets/javascripts/browser/document/index.ts", "src/assets/javascripts/browser/element/_/index.ts", "src/assets/javascripts/browser/element/focus/index.ts", "src/assets/javascripts/browser/element/offset/_/index.ts", "src/assets/javascripts/browser/element/offset/content/index.ts", "node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js", "src/assets/javascripts/browser/element/size/_/index.ts", "src/assets/javascripts/browser/element/size/content/index.ts", "src/assets/javascripts/browser/element/visibility/index.ts", "src/assets/javascripts/browser/toggle/index.ts", "src/assets/javascripts/browser/keyboard/index.ts", "src/assets/javascripts/browser/location/_/index.ts", "src/assets/javascripts/utilities/h/index.ts", "src/assets/javascripts/utilities/string/index.ts", "src/assets/javascripts/browser/location/hash/index.ts", "src/assets/javascripts/browser/media/index.ts", "src/assets/javascripts/browser/request/index.ts", "src/assets/javascripts/browser/script/index.ts", "src/assets/javascripts/browser/viewport/offset/index.ts", "src/assets/javascripts/browser/viewport/size/index.ts", "src/assets/javascripts/browser/viewport/_/index.ts", "src/assets/javascripts/browser/viewport/at/index.ts", "src/assets/javascripts/browser/worker/index.ts", "src/assets/javascripts/_/index.ts", "src/assets/javascripts/components/_/index.ts", "src/assets/javascripts/components/announce/index.ts", "src/assets/javascripts/components/consent/index.ts", "src/assets/javascripts/components/content/code/_/index.ts", "src/assets/javascripts/templates/annotation/index.tsx", "src/assets/javascripts/templates/clipboard/index.tsx", "src/assets/javascripts/templates/search/index.tsx", "src/assets/javascripts/templates/source/index.tsx", "src/assets/javascripts/templates/tabbed/index.tsx", "src/assets/javascripts/templates/table/index.tsx", "src/assets/javascripts/templates/version/index.tsx", "src/assets/javascripts/components/content/annotation/_/index.ts", "src/assets/javascripts/components/content/annotation/list/index.ts", "src/assets/javascripts/components/content/code/mermaid/index.ts", "src/assets/javascripts/components/content/details/index.ts", "src/assets/javascripts/components/content/table/index.ts", "src/assets/javascripts/components/content/tabs/index.ts", "src/assets/javascripts/components/content/_/index.ts", "src/assets/javascripts/components/dialog/index.ts", "src/assets/javascripts/components/header/_/index.ts", "src/assets/javascripts/components/header/title/index.ts", "src/assets/javascripts/components/main/index.ts", "src/assets/javascripts/components/palette/index.ts", "src/assets/javascripts/integrations/clipboard/index.ts", "src/assets/javascripts/integrations/sitemap/index.ts", "src/assets/javascripts/integrations/instant/index.ts", "src/assets/javascripts/integrations/search/document/index.ts", "src/assets/javascripts/integrations/search/highlighter/index.ts", "src/assets/javascripts/integrations/search/query/transform/index.ts", "src/assets/javascripts/integrations/search/worker/message/index.ts", "src/assets/javascripts/integrations/search/worker/_/index.ts", "src/assets/javascripts/integrations/version/index.ts", "src/assets/javascripts/components/search/query/index.ts", "src/assets/javascripts/components/search/result/index.ts", "src/assets/javascripts/components/search/share/index.ts", "src/assets/javascripts/components/search/suggest/index.ts", "src/assets/javascripts/components/search/_/index.ts", "src/assets/javascripts/components/search/highlight/index.ts", "src/assets/javascripts/components/sidebar/index.ts", "src/assets/javascripts/components/source/facts/github/index.ts", "src/assets/javascripts/components/source/facts/gitlab/index.ts", "src/assets/javascripts/components/source/facts/_/index.ts", "src/assets/javascripts/components/source/_/index.ts", "src/assets/javascripts/components/tabs/index.ts", "src/assets/javascripts/components/toc/index.ts", "src/assets/javascripts/components/top/index.ts", "src/assets/javascripts/patches/indeterminate/index.ts", "src/assets/javascripts/patches/scrollfix/index.ts", "src/assets/javascripts/patches/scrolllock/index.ts", "src/assets/javascripts/polyfills/index.ts"], + "sourceRoot": "../../../..", + "sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-visible\n */\n function applyFocusVisiblePolyfill(scope) {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesAllowlist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {KeyboardEvent} e\n */\n function onKeyDown(e) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (isValidFocusTarget(scope.activeElement)) {\n addFocusVisibleClass(scope.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on whenever the\n // window blurs, even if you're tabbing out of the page. \u00AF\\_(\u30C4)_/\u00AF\n if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n // For some kinds of state, we are interested in changes at the global scope\n // only. For example, global pointer input, global key presses and global\n // visibility change should affect the state at every scope:\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n addInitialPointerMoveListeners();\n\n // For focus and blur, we specifically care about state changes in the local\n // scope. This is because focus / blur events that originate from within a\n // shadow root are not re-dispatched from the host element if it was already\n // the active element in its own scope:\n scope.addEventListener('focus', onFocus, true);\n scope.addEventListener('blur', onBlur, true);\n\n // We detect that a node is a ShadowRoot by ensuring that it is a\n // DocumentFragment and also has a host property. This check covers native\n // implementation and polyfill implementation transparently. If we only cared\n // about the native implementation, we could just check if the scope was\n // an instance of a ShadowRoot.\n if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n // have a root element to add a class to. So, we add this attribute to the\n // host element instead:\n scope.host.setAttribute('data-js-focus-visible', '');\n } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n document.documentElement.classList.add('js-focus-visible');\n document.documentElement.setAttribute('data-js-focus-visible', '');\n }\n }\n\n // It is important to wrap all references to global window and document in\n // these checks to support server-side rendering use cases\n // @see https://github.com/WICG/focus-visible/issues/199\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Make the polyfill helper globally available. This can be used as a signal\n // to interested libraries that wish to coordinate with the polyfill for e.g.,\n // applying the polyfill to a shadow root:\n window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n // Notify interested libraries of the polyfill's presence, in case the\n // polyfill was loaded lazily:\n var event;\n\n try {\n event = new CustomEvent('focus-visible-polyfill-ready');\n } catch (error) {\n // IE11 does not support using CustomEvent as a constructor directly:\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n }\n\n window.dispatchEvent(event);\n }\n\n if (typeof document !== 'undefined') {\n // Apply the polyfill to the global document, so that no JavaScript\n // coordination is required to use the polyfill in the top-level document:\n applyFocusVisiblePolyfill(document);\n }\n\n})));\n", "(function(global) {\r\n /**\r\n * Polyfill URLSearchParams\r\n *\r\n * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n */\r\n\r\n var checkIfIteratorIsSupported = function() {\r\n try {\r\n return !!Symbol.iterator;\r\n } catch (error) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n var createIterator = function(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift();\r\n return { done: value === void 0, value: value };\r\n }\r\n };\r\n\r\n if (iteratorSupported) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n };\r\n\r\n /**\r\n * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n */\r\n var serializeParam = function(value) {\r\n return encodeURIComponent(value).replace(/%20/g, '+');\r\n };\r\n\r\n var deserializeParam = function(value) {\r\n return decodeURIComponent(String(value).replace(/\\+/g, ' '));\r\n };\r\n\r\n var polyfillURLSearchParams = function() {\r\n\r\n var URLSearchParams = function(searchString) {\r\n Object.defineProperty(this, '_entries', { writable: true, value: {} });\r\n var typeofSearchString = typeof searchString;\r\n\r\n if (typeofSearchString === 'undefined') {\r\n // do nothing\r\n } else if (typeofSearchString === 'string') {\r\n if (searchString !== '') {\r\n this._fromString(searchString);\r\n }\r\n } else if (searchString instanceof URLSearchParams) {\r\n var _this = this;\r\n searchString.forEach(function(value, name) {\r\n _this.append(name, value);\r\n });\r\n } else if ((searchString !== null) && (typeofSearchString === 'object')) {\r\n if (Object.prototype.toString.call(searchString) === '[object Array]') {\r\n for (var i = 0; i < searchString.length; i++) {\r\n var entry = searchString[i];\r\n if ((Object.prototype.toString.call(entry) === '[object Array]') || (entry.length !== 2)) {\r\n this.append(entry[0], entry[1]);\r\n } else {\r\n throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\\'s input');\r\n }\r\n }\r\n } else {\r\n for (var key in searchString) {\r\n if (searchString.hasOwnProperty(key)) {\r\n this.append(key, searchString[key]);\r\n }\r\n }\r\n }\r\n } else {\r\n throw new TypeError('Unsupported input\\'s type for URLSearchParams');\r\n }\r\n };\r\n\r\n var proto = URLSearchParams.prototype;\r\n\r\n proto.append = function(name, value) {\r\n if (name in this._entries) {\r\n this._entries[name].push(String(value));\r\n } else {\r\n this._entries[name] = [String(value)];\r\n }\r\n };\r\n\r\n proto.delete = function(name) {\r\n delete this._entries[name];\r\n };\r\n\r\n proto.get = function(name) {\r\n return (name in this._entries) ? this._entries[name][0] : null;\r\n };\r\n\r\n proto.getAll = function(name) {\r\n return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n };\r\n\r\n proto.has = function(name) {\r\n return (name in this._entries);\r\n };\r\n\r\n proto.set = function(name, value) {\r\n this._entries[name] = [String(value)];\r\n };\r\n\r\n proto.forEach = function(callback, thisArg) {\r\n var entries;\r\n for (var name in this._entries) {\r\n if (this._entries.hasOwnProperty(name)) {\r\n entries = this._entries[name];\r\n for (var i = 0; i < entries.length; i++) {\r\n callback.call(thisArg, entries[i], name, this);\r\n }\r\n }\r\n }\r\n };\r\n\r\n proto.keys = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push(name);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.values = function() {\r\n var items = [];\r\n this.forEach(function(value) {\r\n items.push(value);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.entries = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n if (iteratorSupported) {\r\n proto[Symbol.iterator] = proto.entries;\r\n }\r\n\r\n proto.toString = function() {\r\n var searchArray = [];\r\n this.forEach(function(value, name) {\r\n searchArray.push(serializeParam(name) + '=' + serializeParam(value));\r\n });\r\n return searchArray.join('&');\r\n };\r\n\r\n\r\n global.URLSearchParams = URLSearchParams;\r\n };\r\n\r\n var checkIfURLSearchParamsSupported = function() {\r\n try {\r\n var URLSearchParams = global.URLSearchParams;\r\n\r\n return (\r\n (new URLSearchParams('?a=1').toString() === 'a=1') &&\r\n (typeof URLSearchParams.prototype.set === 'function') &&\r\n (typeof URLSearchParams.prototype.entries === 'function')\r\n );\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n if (!checkIfURLSearchParamsSupported()) {\r\n polyfillURLSearchParams();\r\n }\r\n\r\n var proto = global.URLSearchParams.prototype;\r\n\r\n if (typeof proto.sort !== 'function') {\r\n proto.sort = function() {\r\n var _this = this;\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n if (!_this._entries) {\r\n _this.delete(name);\r\n }\r\n });\r\n items.sort(function(a, b) {\r\n if (a[0] < b[0]) {\r\n return -1;\r\n } else if (a[0] > b[0]) {\r\n return +1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n if (_this._entries) { // force reset because IE keeps keys index\r\n _this._entries = {};\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n this.append(items[i][0], items[i][1]);\r\n }\r\n };\r\n }\r\n\r\n if (typeof proto._fromString !== 'function') {\r\n Object.defineProperty(proto, '_fromString', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function(searchString) {\r\n if (this._entries) {\r\n this._entries = {};\r\n } else {\r\n var keys = [];\r\n this.forEach(function(value, name) {\r\n keys.push(name);\r\n });\r\n for (var i = 0; i < keys.length; i++) {\r\n this.delete(keys[i]);\r\n }\r\n }\r\n\r\n searchString = searchString.replace(/^\\?/, '');\r\n var attributes = searchString.split('&');\r\n var attribute;\r\n for (var i = 0; i < attributes.length; i++) {\r\n attribute = attributes[i].split('=');\r\n this.append(\r\n deserializeParam(attribute[0]),\r\n (attribute.length > 1) ? deserializeParam(attribute[1]) : ''\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n // HTMLAnchorElement\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n /**\r\n * Polyfill URL\r\n *\r\n * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n */\r\n\r\n var checkIfURLIsSupported = function() {\r\n try {\r\n var u = new global.URL('b', 'http://a/');\r\n u.pathname = 'c d';\r\n return (u.href === 'http://a/c%20d') && u.searchParams;\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var polyfillURL = function() {\r\n var _URL = global.URL;\r\n\r\n var URL = function(url, base) {\r\n if (typeof url !== 'string') url = String(url);\r\n if (base && typeof base !== 'string') base = String(base);\r\n\r\n // Only create another document if the base is different from current location.\r\n var doc = document, baseElement;\r\n if (base && (global.location === void 0 || base !== global.location.href)) {\r\n base = base.toLowerCase();\r\n doc = document.implementation.createHTMLDocument('');\r\n baseElement = doc.createElement('base');\r\n baseElement.href = base;\r\n doc.head.appendChild(baseElement);\r\n try {\r\n if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);\r\n } catch (err) {\r\n throw new Error('URL unable to set base ' + base + ' due to ' + err);\r\n }\r\n }\r\n\r\n var anchorElement = doc.createElement('a');\r\n anchorElement.href = url;\r\n if (baseElement) {\r\n doc.body.appendChild(anchorElement);\r\n anchorElement.href = anchorElement.href; // force href to refresh\r\n }\r\n\r\n var inputElement = doc.createElement('input');\r\n inputElement.type = 'url';\r\n inputElement.value = url;\r\n\r\n if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href) || (!inputElement.checkValidity() && !base)) {\r\n throw new TypeError('Invalid URL');\r\n }\r\n\r\n Object.defineProperty(this, '_anchorElement', {\r\n value: anchorElement\r\n });\r\n\r\n\r\n // create a linked searchParams which reflect its changes on URL\r\n var searchParams = new global.URLSearchParams(this.search);\r\n var enableSearchUpdate = true;\r\n var enableSearchParamsUpdate = true;\r\n var _this = this;\r\n ['append', 'delete', 'set'].forEach(function(methodName) {\r\n var method = searchParams[methodName];\r\n searchParams[methodName] = function() {\r\n method.apply(searchParams, arguments);\r\n if (enableSearchUpdate) {\r\n enableSearchParamsUpdate = false;\r\n _this.search = searchParams.toString();\r\n enableSearchParamsUpdate = true;\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperty(this, 'searchParams', {\r\n value: searchParams,\r\n enumerable: true\r\n });\r\n\r\n var search = void 0;\r\n Object.defineProperty(this, '_updateSearchParams', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function() {\r\n if (this.search !== search) {\r\n search = this.search;\r\n if (enableSearchParamsUpdate) {\r\n enableSearchUpdate = false;\r\n this.searchParams._fromString(this.search);\r\n enableSearchUpdate = true;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n var proto = URL.prototype;\r\n\r\n var linkURLWithAnchorAttribute = function(attributeName) {\r\n Object.defineProperty(proto, attributeName, {\r\n get: function() {\r\n return this._anchorElement[attributeName];\r\n },\r\n set: function(value) {\r\n this._anchorElement[attributeName] = value;\r\n },\r\n enumerable: true\r\n });\r\n };\r\n\r\n ['hash', 'host', 'hostname', 'port', 'protocol']\r\n .forEach(function(attributeName) {\r\n linkURLWithAnchorAttribute(attributeName);\r\n });\r\n\r\n Object.defineProperty(proto, 'search', {\r\n get: function() {\r\n return this._anchorElement['search'];\r\n },\r\n set: function(value) {\r\n this._anchorElement['search'] = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n });\r\n\r\n Object.defineProperties(proto, {\r\n\r\n 'toString': {\r\n get: function() {\r\n var _this = this;\r\n return function() {\r\n return _this.href;\r\n };\r\n }\r\n },\r\n\r\n 'href': {\r\n get: function() {\r\n return this._anchorElement.href.replace(/\\?$/, '');\r\n },\r\n set: function(value) {\r\n this._anchorElement.href = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'pathname': {\r\n get: function() {\r\n return this._anchorElement.pathname.replace(/(^\\/?)/, '/');\r\n },\r\n set: function(value) {\r\n this._anchorElement.pathname = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'origin': {\r\n get: function() {\r\n // get expected port from protocol\r\n var expectedPort = { 'http:': 80, 'https:': 443, 'ftp:': 21 }[this._anchorElement.protocol];\r\n // add port to origin if, expected port is different than actual port\r\n // and it is not empty f.e http://foo:8080\r\n // 8080 != 80 && 8080 != ''\r\n var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n this._anchorElement.port !== '';\r\n\r\n return this._anchorElement.protocol +\r\n '//' +\r\n this._anchorElement.hostname +\r\n (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'password': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'username': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n });\r\n\r\n URL.createObjectURL = function(blob) {\r\n return _URL.createObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n URL.revokeObjectURL = function(url) {\r\n return _URL.revokeObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n global.URL = URL;\r\n\r\n };\r\n\r\n if (!checkIfURLIsSupported()) {\r\n polyfillURL();\r\n }\r\n\r\n if ((global.location !== void 0) && !('origin' in global.location)) {\r\n var getOrigin = function() {\r\n return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n };\r\n\r\n try {\r\n Object.defineProperty(global.location, 'origin', {\r\n get: getOrigin,\r\n enumerable: true\r\n });\r\n } catch (e) {\r\n setInterval(function() {\r\n global.location.origin = getOrigin();\r\n }, 100);\r\n }\r\n }\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global global, define, System, Reflect, Promise */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __createBinding;\r\n(function (factory) {\r\n var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n if (typeof define === \"function\" && define.amd) {\r\n define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n }\r\n else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n factory(createExporter(root, createExporter(module.exports)));\r\n }\r\n else {\r\n factory(createExporter(root));\r\n }\r\n function createExporter(exports, previous) {\r\n if (exports !== root) {\r\n if (typeof Object.create === \"function\") {\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n }\r\n else {\r\n exports.__esModule = true;\r\n }\r\n }\r\n return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n }\r\n})\r\n(function (exporter) {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n __extends = function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n\r\n __rest = function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n };\r\n\r\n __decorate = function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n };\r\n\r\n __param = function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n };\r\n\r\n __metadata = function (metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n };\r\n\r\n __awaiter = function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n };\r\n\r\n __generator = function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n };\r\n\r\n __exportStar = function(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n };\r\n\r\n __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n }) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n });\r\n\r\n __values = function (o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n };\r\n\r\n __read = function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spread = function () {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spreadArrays = function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n };\r\n\r\n __spreadArray = function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n };\r\n\r\n __await = function (v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n };\r\n\r\n __asyncGenerator = function (thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n };\r\n\r\n __asyncDelegator = function (o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n };\r\n\r\n __asyncValues = function (o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n };\r\n\r\n __makeTemplateObject = function (cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n };\r\n\r\n var __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n }) : function(o, v) {\r\n o[\"default\"] = v;\r\n };\r\n\r\n __importStar = function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n };\r\n\r\n __importDefault = function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n };\r\n\r\n __classPrivateFieldGet = function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n };\r\n\r\n __classPrivateFieldSet = function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n };\r\n\r\n exporter(\"__extends\", __extends);\r\n exporter(\"__assign\", __assign);\r\n exporter(\"__rest\", __rest);\r\n exporter(\"__decorate\", __decorate);\r\n exporter(\"__param\", __param);\r\n exporter(\"__metadata\", __metadata);\r\n exporter(\"__awaiter\", __awaiter);\r\n exporter(\"__generator\", __generator);\r\n exporter(\"__exportStar\", __exportStar);\r\n exporter(\"__createBinding\", __createBinding);\r\n exporter(\"__values\", __values);\r\n exporter(\"__read\", __read);\r\n exporter(\"__spread\", __spread);\r\n exporter(\"__spreadArrays\", __spreadArrays);\r\n exporter(\"__spreadArray\", __spreadArray);\r\n exporter(\"__await\", __await);\r\n exporter(\"__asyncGenerator\", __asyncGenerator);\r\n exporter(\"__asyncDelegator\", __asyncDelegator);\r\n exporter(\"__asyncValues\", __asyncValues);\r\n exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n exporter(\"__importStar\", __importStar);\r\n exporter(\"__importDefault\", __importDefault);\r\n exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n});\r\n", "/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT \u00A9 Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n try {\n return document.execCommand(type);\n } catch (err) {\n return false;\n }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n var selectedText = select_default()(target);\n command('cut');\n return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n fakeElement.style.fontSize = '12pt'; // Reset box model\n\n fakeElement.style.border = '0';\n fakeElement.style.padding = '0';\n fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n fakeElement.style.position = 'absolute';\n fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n fakeElement.style.top = \"\".concat(yPosition, \"px\");\n fakeElement.setAttribute('readonly', '');\n fakeElement.value = value;\n return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n var fakeElement = createFakeElement(value);\n options.container.appendChild(fakeElement);\n var selectedText = select_default()(fakeElement);\n command('copy');\n fakeElement.remove();\n return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n var selectedText = '';\n\n if (typeof target === 'string') {\n selectedText = fakeCopyAction(target, options);\n } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n selectedText = fakeCopyAction(target.value, options);\n } else {\n selectedText = select_default()(target);\n command('copy');\n }\n\n return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Defines base properties passed from constructor.\n var _options$action = options.action,\n action = _options$action === void 0 ? 'copy' : _options$action,\n container = options.container,\n target = options.target,\n text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n if (action !== 'copy' && action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n } // Sets the `target` property using an element that will be have its content copied.\n\n\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n } // Define selection strategy based on `text` property.\n\n\n if (text) {\n return actions_copy(text, {\n container: container\n });\n } // Defines which selection strategy based on `target` property.\n\n\n if (target) {\n return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n container: container\n });\n }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n var _this;\n\n _classCallCheck(this, Clipboard);\n\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n var action = this.action(trigger) || 'copy';\n var text = actions_default({\n action: action,\n container: this.container,\n target: this.target(trigger),\n text: this.text(trigger)\n }); // Fires an event based on the copy operation result.\n\n this.emit(text ? 'success' : 'error', {\n action: action,\n text: text,\n trigger: trigger,\n clearSelection: function clearSelection() {\n if (trigger) {\n trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Allow fire programmatically a copy action\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @returns Text copied.\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n }\n }], [{\n key: \"copy\",\n value: function copy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n return actions_copy(target, options);\n }\n /**\n * Allow fire programmatically a cut action\n * @param {String|HTMLElement} target\n * @returns Text cutted.\n */\n\n }, {\n key: \"cut\",\n value: function cut(target) {\n return actions_cut(target);\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n\n return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "Array.prototype.flat||Object.defineProperty(Array.prototype,\"flat\",{configurable:!0,value:function r(){var t=isNaN(arguments[0])?1:Number(arguments[0]);return t?Array.prototype.reduce.call(this,function(a,e){return Array.isArray(e)?a.push.apply(a,r.call(e,t-1)):a.push(e),a},[]):Array.prototype.slice.call(this)},writable:!0}),Array.prototype.flatMap||Object.defineProperty(Array.prototype,\"flatMap\",{configurable:!0,value:function(r){return Array.prototype.map.apply(this,arguments).flat()},writable:!0})\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport \"array-flat-polyfill\"\nimport \"focus-visible\"\nimport \"unfetch/polyfill\"\nimport \"url-polyfill\"\n\nimport {\n EMPTY,\n NEVER,\n Subject,\n defer,\n delay,\n filter,\n map,\n merge,\n mergeWith,\n shareReplay,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"./_\"\nimport {\n at,\n getOptionalElement,\n requestJSON,\n setToggle,\n watchDocument,\n watchKeyboard,\n watchLocation,\n watchLocationTarget,\n watchMedia,\n watchPrint,\n watchViewport\n} from \"./browser\"\nimport {\n getComponentElement,\n getComponentElements,\n mountAnnounce,\n mountBackToTop,\n mountConsent,\n mountContent,\n mountDialog,\n mountHeader,\n mountHeaderTitle,\n mountPalette,\n mountSearch,\n mountSearchHiglight,\n mountSidebar,\n mountSource,\n mountTableOfContents,\n mountTabs,\n watchHeader,\n watchMain\n} from \"./components\"\nimport {\n SearchIndex,\n setupClipboardJS,\n setupInstantLoading,\n setupVersionSelector\n} from \"./integrations\"\nimport {\n patchIndeterminate,\n patchScrollfix,\n patchScrolllock\n} from \"./patches\"\nimport \"./polyfills\"\n\n/* ----------------------------------------------------------------------------\n * Application\n * ------------------------------------------------------------------------- */\n\n/* Yay, JavaScript is available */\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Set up navigation observables and subjects */\nconst document$ = watchDocument()\nconst location$ = watchLocation()\nconst target$ = watchLocationTarget()\nconst keyboard$ = watchKeyboard()\n\n/* Set up media observables */\nconst viewport$ = watchViewport()\nconst tablet$ = watchMedia(\"(min-width: 960px)\")\nconst screen$ = watchMedia(\"(min-width: 1220px)\")\nconst print$ = watchPrint()\n\n/* Retrieve search index, if search is enabled */\nconst config = configuration()\nconst index$ = document.forms.namedItem(\"search\")\n ? __search?.index || requestJSON(\n new URL(\"search/search_index.json\", config.base)\n )\n : NEVER\n\n/* Set up Clipboard.js integration */\nconst alert$ = new Subject()\nsetupClipboardJS({ alert$ })\n\n/* Set up instant loading, if enabled */\nif (feature(\"navigation.instant\"))\n setupInstantLoading({ document$, location$, viewport$ })\n\n/* Set up version selector */\nif (config.version?.provider === \"mike\")\n setupVersionSelector({ document$ })\n\n/* Always close drawer and search on navigation */\nmerge(location$, target$)\n .pipe(\n delay(125)\n )\n .subscribe(() => {\n setToggle(\"drawer\", false)\n setToggle(\"search\", false)\n })\n\n/* Set up global keyboard handlers */\nkeyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Go to previous page */\n case \"p\":\n case \",\":\n const prev = getOptionalElement(\"[href][rel=prev]\")\n if (typeof prev !== \"undefined\")\n prev.click()\n break\n\n /* Go to next page */\n case \"n\":\n case \".\":\n const next = getOptionalElement(\"[href][rel=next]\")\n if (typeof next !== \"undefined\")\n next.click()\n break\n }\n })\n\n/* Set up patches */\npatchIndeterminate({ document$, tablet$ })\npatchScrollfix({ document$ })\npatchScrolllock({ viewport$, tablet$ })\n\n/* Set up header and main area observable */\nconst header$ = watchHeader(getComponentElement(\"header\"), { viewport$ })\nconst main$ = document$\n .pipe(\n map(() => getComponentElement(\"main\")),\n switchMap(el => watchMain(el, { viewport$, header$ })),\n shareReplay(1)\n )\n\n/* Set up control component observables */\nconst control$ = merge(\n\n /* Consent */\n ...getComponentElements(\"consent\")\n .map(el => mountConsent(el, { target$ })),\n\n /* Dialog */\n ...getComponentElements(\"dialog\")\n .map(el => mountDialog(el, { alert$ })),\n\n /* Header */\n ...getComponentElements(\"header\")\n .map(el => mountHeader(el, { viewport$, header$, main$ })),\n\n /* Color palette */\n ...getComponentElements(\"palette\")\n .map(el => mountPalette(el)),\n\n /* Search */\n ...getComponentElements(\"search\")\n .map(el => mountSearch(el, { index$, keyboard$ })),\n\n /* Repository information */\n ...getComponentElements(\"source\")\n .map(el => mountSource(el))\n)\n\n/* Set up content component observables */\nconst content$ = defer(() => merge(\n\n /* Announcement bar */\n ...getComponentElements(\"announce\")\n .map(el => mountAnnounce(el)),\n\n /* Content */\n ...getComponentElements(\"content\")\n .map(el => mountContent(el, { target$, print$ })),\n\n /* Search highlighting */\n ...getComponentElements(\"content\")\n .map(el => feature(\"search.highlight\")\n ? mountSearchHiglight(el, { index$, location$ })\n : EMPTY\n ),\n\n /* Header title */\n ...getComponentElements(\"header-title\")\n .map(el => mountHeaderTitle(el, { viewport$, header$ })),\n\n /* Sidebar */\n ...getComponentElements(\"sidebar\")\n .map(el => el.getAttribute(\"data-md-type\") === \"navigation\"\n ? at(screen$, () => mountSidebar(el, { viewport$, header$, main$ }))\n : at(tablet$, () => mountSidebar(el, { viewport$, header$, main$ }))\n ),\n\n /* Navigation tabs */\n ...getComponentElements(\"tabs\")\n .map(el => mountTabs(el, { viewport$, header$ })),\n\n /* Table of contents */\n ...getComponentElements(\"toc\")\n .map(el => mountTableOfContents(el, { viewport$, header$, target$ })),\n\n /* Back-to-top button */\n ...getComponentElements(\"top\")\n .map(el => mountBackToTop(el, { viewport$, header$, main$, target$ }))\n))\n\n/* Set up component observables */\nconst component$ = document$\n .pipe(\n switchMap(() => content$),\n mergeWith(control$),\n shareReplay(1)\n )\n\n/* Subscribe to all components */\ncomponent$.subscribe()\n\n/* ----------------------------------------------------------------------------\n * Exports\n * ------------------------------------------------------------------------- */\n\nwindow.document$ = document$ /* Document observable */\nwindow.location$ = location$ /* Location subject */\nwindow.target$ = target$ /* Location target observable */\nwindow.keyboard$ = keyboard$ /* Keyboard observable */\nwindow.viewport$ = viewport$ /* Viewport observable */\nwindow.tablet$ = tablet$ /* Media tablet observable */\nwindow.screen$ = screen$ /* Media screen observable */\nwindow.print$ = print$ /* Media print observable */\nwindow.alert$ = alert$ /* Alert subject */\nwindow.component$ = component$ /* Component observable */\n", "self.fetch||(self.fetch=function(e,n){return n=n||{},new Promise(function(t,s){var r=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(r.status/100|0),statusText:r.statusText,status:r.status,url:r.responseURL,text:function(){return Promise.resolve(r.responseText)},json:function(){return Promise.resolve(r.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([r.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var c in r.open(n.method||\"get\",e,!0),r.onload=function(){r.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},r.onerror=s,r.withCredentials=\"include\"==n.credentials,n.headers)r.setRequestHeader(c,n.headers[c]);r.send(n.body||null)})});\n", "import tslib from '../tslib.js';\r\nconst {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n} = tslib;\r\nexport {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n};\r\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n ReplaySubject,\n Subject,\n fromEvent\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch document\n *\n * Documents are implemented as subjects, so all downstream observables are\n * automatically updated when a new document is emitted.\n *\n * @returns Document subject\n */\nexport function watchDocument(): Subject {\n const document$ = new ReplaySubject(1)\n fromEvent(document, \"DOMContentLoaded\", { once: true })\n .subscribe(() => document$.next(document))\n\n /* Return document */\n return document$\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve all elements matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getElements(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T][]\n\nexport function getElements(\n selector: string, node?: ParentNode\n): T[]\n\nexport function getElements(\n selector: string, node: ParentNode = document\n): T[] {\n return Array.from(node.querySelectorAll(selector))\n}\n\n/**\n * Retrieve an element matching a query selector or throw a reference error\n *\n * Note that this function assumes that the element is present. If unsure if an\n * element is existent, use the `getOptionalElement` function instead.\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getElement(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T]\n\nexport function getElement(\n selector: string, node?: ParentNode\n): T\n\nexport function getElement(\n selector: string, node: ParentNode = document\n): T {\n const el = getOptionalElement(selector, node)\n if (typeof el === \"undefined\")\n throw new ReferenceError(\n `Missing element: expected \"${selector}\" to be present`\n )\n\n /* Return element */\n return el\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Retrieve an optional element matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element or nothing\n */\nexport function getOptionalElement(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T] | undefined\n\nexport function getOptionalElement(\n selector: string, node?: ParentNode\n): T | undefined\n\nexport function getOptionalElement(\n selector: string, node: ParentNode = document\n): T | undefined {\n return node.querySelector(selector) || undefined\n}\n\n/**\n * Retrieve the currently active element\n *\n * @returns Element or nothing\n */\nexport function getActiveElement(): HTMLElement | undefined {\n return document.activeElement instanceof HTMLElement\n ? document.activeElement || undefined\n : undefined\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n debounceTime,\n distinctUntilChanged,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\nimport { getActiveElement } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch element focus\n *\n * Previously, this function used `focus` and `blur` events to determine whether\n * an element is focused, but this doesn't work if there are focusable elements\n * within the elements itself. A better solutions are `focusin` and `focusout`\n * events, which bubble up the tree and allow for more fine-grained control.\n *\n * `debounceTime` is necessary, because when a focus change happens inside an\n * element, the observable would first emit `false` and then `true` again.\n *\n * @param el - Element\n *\n * @returns Element focus observable\n */\nexport function watchElementFocus(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(document.body, \"focusin\"),\n fromEvent(document.body, \"focusout\")\n )\n .pipe(\n debounceTime(1),\n map(() => {\n const active = getActiveElement()\n return typeof active !== \"undefined\"\n ? el.contains(active)\n : false\n }),\n startWith(el === getActiveElement()),\n distinctUntilChanged()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n animationFrameScheduler,\n auditTime,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element offset\n *\n * @param el - Element\n *\n * @returns Element offset\n */\nexport function getElementOffset(\n el: HTMLElement\n): ElementOffset {\n return {\n x: el.offsetLeft,\n y: el.offsetTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element offset\n *\n * @param el - Element\n *\n * @returns Element offset observable\n */\nexport function watchElementOffset(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(window, \"load\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n auditTime(0, animationFrameScheduler),\n map(() => getElementOffset(el)),\n startWith(getElementOffset(el))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n animationFrameScheduler,\n auditTime,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\nimport { ElementOffset } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element content offset (= scroll offset)\n *\n * @param el - Element\n *\n * @returns Element content offset\n */\nexport function getElementContentOffset(\n el: HTMLElement\n): ElementOffset {\n return {\n x: el.scrollLeft,\n y: el.scrollTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element content offset\n *\n * @param el - Element\n *\n * @returns Element content offset observable\n */\nexport function watchElementContentOffset(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(el, \"scroll\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n auditTime(0, animationFrameScheduler),\n map(() => getElementContentOffset(el)),\n startWith(getElementContentOffset(el))\n )\n}\n", "/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ResizeObserver from \"resize-observer-polyfill\"\nimport {\n NEVER,\n Observable,\n Subject,\n defer,\n filter,\n finalize,\n map,\n merge,\n of,\n shareReplay,\n startWith,\n switchMap,\n tap\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementSize {\n width: number /* Element width */\n height: number /* Element height */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Resize observer entry subject\n */\nconst entry$ = new Subject()\n\n/**\n * Resize observer observable\n *\n * This observable will create a `ResizeObserver` on the first subscription\n * and will automatically terminate it when there are no more subscribers.\n * It's quite important to centralize observation in a single `ResizeObserver`,\n * as the performance difference can be quite dramatic, as the link shows.\n *\n * @see https://bit.ly/3iIYfEm - Google Groups on performance\n */\nconst observer$ = defer(() => of(\n new ResizeObserver(entries => {\n for (const entry of entries)\n entry$.next(entry)\n })\n))\n .pipe(\n switchMap(observer => merge(NEVER, of(observer))\n .pipe(\n finalize(() => observer.disconnect())\n )\n ),\n shareReplay(1)\n )\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element size\n *\n * @param el - Element\n *\n * @returns Element size\n */\nexport function getElementSize(\n el: HTMLElement\n): ElementSize {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element size\n *\n * This function returns an observable that subscribes to a single internal\n * instance of `ResizeObserver` upon subscription, and emit resize events until\n * termination. Note that this function should not be called with the same\n * element twice, as the first unsubscription will terminate observation.\n *\n * Sadly, we can't use the `DOMRect` objects returned by the observer, because\n * we need the emitted values to be consistent with `getElementSize`, which will\n * return the used values (rounded) and not actual values (unrounded). Thus, we\n * use the `offset*` properties. See the linked GitHub issue.\n *\n * @see https://bit.ly/3m0k3he - GitHub issue\n *\n * @param el - Element\n *\n * @returns Element size observable\n */\nexport function watchElementSize(\n el: HTMLElement\n): Observable {\n return observer$\n .pipe(\n tap(observer => observer.observe(el)),\n switchMap(observer => entry$\n .pipe(\n filter(({ target }) => target === el),\n finalize(() => observer.unobserve(el)),\n map(() => getElementSize(el))\n )\n ),\n startWith(getElementSize(el))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ElementSize } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element content size (= scroll width and height)\n *\n * @param el - Element\n *\n * @returns Element content size\n */\nexport function getElementContentSize(\n el: HTMLElement\n): ElementSize {\n return {\n width: el.scrollWidth,\n height: el.scrollHeight\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n NEVER,\n Observable,\n Subject,\n defer,\n distinctUntilChanged,\n filter,\n finalize,\n map,\n merge,\n of,\n shareReplay,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport {\n getElementContentSize,\n getElementSize,\n watchElementContentOffset\n} from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Intersection observer entry subject\n */\nconst entry$ = new Subject()\n\n/**\n * Intersection observer observable\n *\n * This observable will create an `IntersectionObserver` on first subscription\n * and will automatically terminate it when there are no more subscribers.\n *\n * @see https://bit.ly/3iIYfEm - Google Groups on performance\n */\nconst observer$ = defer(() => of(\n new IntersectionObserver(entries => {\n for (const entry of entries)\n entry$.next(entry)\n }, {\n threshold: 0\n })\n))\n .pipe(\n switchMap(observer => merge(NEVER, of(observer))\n .pipe(\n finalize(() => observer.disconnect())\n )\n ),\n shareReplay(1)\n )\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch element visibility\n *\n * @param el - Element\n *\n * @returns Element visibility observable\n */\nexport function watchElementVisibility(\n el: HTMLElement\n): Observable {\n return observer$\n .pipe(\n tap(observer => observer.observe(el)),\n switchMap(observer => entry$\n .pipe(\n filter(({ target }) => target === el),\n finalize(() => observer.unobserve(el)),\n map(({ isIntersecting }) => isIntersecting)\n )\n )\n )\n}\n\n/**\n * Watch element boundary\n *\n * This function returns an observable which emits whether the bottom content\n * boundary (= scroll offset) of an element is within a certain threshold.\n *\n * @param el - Element\n * @param threshold - Threshold\n *\n * @returns Element boundary observable\n */\nexport function watchElementBoundary(\n el: HTMLElement, threshold = 16\n): Observable {\n return watchElementContentOffset(el)\n .pipe(\n map(({ y }) => {\n const visible = getElementSize(el)\n const content = getElementContentSize(el)\n return y >= (\n content.height - visible.height - threshold\n )\n }),\n distinctUntilChanged()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n startWith\n} from \"rxjs\"\n\nimport { getElement } from \"../element\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle\n */\nexport type Toggle =\n | \"drawer\" /* Toggle for drawer */\n | \"search\" /* Toggle for search */\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle map\n */\nconst toggles: Record = {\n drawer: getElement(\"[data-md-toggle=drawer]\"),\n search: getElement(\"[data-md-toggle=search]\")\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the value of a toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value\n */\nexport function getToggle(name: Toggle): boolean {\n return toggles[name].checked\n}\n\n/**\n * Set toggle\n *\n * Simulating a click event seems to be the most cross-browser compatible way\n * of changing the value while also emitting a `change` event. Before, Material\n * used `CustomEvent` to programmatically change the value of a toggle, but this\n * is a much simpler and cleaner solution which doesn't require a polyfill.\n *\n * @param name - Toggle\n * @param value - Toggle value\n */\nexport function setToggle(name: Toggle, value: boolean): void {\n if (toggles[name].checked !== value)\n toggles[name].click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value observable\n */\nexport function watchToggle(name: Toggle): Observable {\n const el = toggles[name]\n return fromEvent(el, \"change\")\n .pipe(\n map(() => el.checked),\n startWith(el.checked)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n share\n} from \"rxjs\"\n\nimport { getActiveElement } from \"../element\"\nimport { getToggle } from \"../toggle\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Keyboard mode\n */\nexport type KeyboardMode =\n | \"global\" /* Global */\n | \"search\" /* Search is open */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Keyboard\n */\nexport interface Keyboard {\n mode: KeyboardMode /* Keyboard mode */\n type: string /* Key type */\n claim(): void /* Key claim */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether an element may receive keyboard input\n *\n * @param el - Element\n * @param type - Key type\n *\n * @returns Test result\n */\nfunction isSusceptibleToKeyboard(\n el: HTMLElement, type: string\n): boolean {\n switch (el.constructor) {\n\n /* Input elements */\n case HTMLInputElement:\n /* @ts-expect-error - omit unnecessary type cast */\n if (el.type === \"radio\")\n return /^Arrow/.test(type)\n else\n return true\n\n /* Select element and textarea */\n case HTMLSelectElement:\n case HTMLTextAreaElement:\n return true\n\n /* Everything else */\n default:\n return el.isContentEditable\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch keyboard\n *\n * @returns Keyboard observable\n */\nexport function watchKeyboard(): Observable {\n return fromEvent(window, \"keydown\")\n .pipe(\n filter(ev => !(ev.metaKey || ev.ctrlKey)),\n map(ev => ({\n mode: getToggle(\"search\") ? \"search\" : \"global\",\n type: ev.key,\n claim() {\n ev.preventDefault()\n ev.stopPropagation()\n }\n } as Keyboard)),\n filter(({ mode, type }) => {\n if (mode === \"global\") {\n const active = getActiveElement()\n if (typeof active !== \"undefined\")\n return !isSusceptibleToKeyboard(active, type)\n }\n return true\n }),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Subject } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location\n *\n * This function returns a `URL` object (and not `Location`) to normalize the\n * typings across the application. Furthermore, locations need to be tracked\n * without setting them and `Location` is a singleton which represents the\n * current location.\n *\n * @returns URL\n */\nexport function getLocation(): URL {\n return new URL(location.href)\n}\n\n/**\n * Set location\n *\n * @param url - URL to change to\n */\nexport function setLocation(url: URL): void {\n location.href = url.href\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location\n *\n * @returns Location subject\n */\nexport function watchLocation(): Subject {\n return new Subject()\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { JSX as JSXInternal } from \"preact\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * HTML attributes\n */\ntype Attributes =\n & JSXInternal.HTMLAttributes\n & JSXInternal.SVGAttributes\n & Record\n\n/**\n * Child element\n */\ntype Child =\n | HTMLElement\n | Text\n | string\n | number\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Append a child node to an element\n *\n * @param el - Element\n * @param child - Child node(s)\n */\nfunction appendChild(el: HTMLElement, child: Child | Child[]): void {\n\n /* Handle primitive types (including raw HTML) */\n if (typeof child === \"string\" || typeof child === \"number\") {\n el.innerHTML += child.toString()\n\n /* Handle nodes */\n } else if (child instanceof Node) {\n el.appendChild(child)\n\n /* Handle nested children */\n } else if (Array.isArray(child)) {\n for (const node of child)\n appendChild(el, node)\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * JSX factory\n *\n * @template T - Element type\n *\n * @param tag - HTML tag\n * @param attributes - HTML attributes\n * @param children - Child elements\n *\n * @returns Element\n */\nexport function h(\n tag: T, attributes?: Attributes | null, ...children: Child[]\n): HTMLElementTagNameMap[T]\n\nexport function h(\n tag: string, attributes?: Attributes | null, ...children: Child[]\n): T\n\nexport function h(\n tag: string, attributes?: Attributes | null, ...children: Child[]\n): T {\n const el = document.createElement(tag)\n\n /* Set attributes, if any */\n if (attributes)\n for (const attr of Object.keys(attributes)) {\n if (typeof attributes[attr] === \"undefined\")\n continue\n\n /* Set default attribute or boolean */\n if (typeof attributes[attr] !== \"boolean\")\n el.setAttribute(attr, attributes[attr])\n else\n el.setAttribute(attr, \"\")\n }\n\n /* Append child nodes */\n for (const child of children)\n appendChild(el, child)\n\n /* Return element */\n return el as T\n}\n\n/* ----------------------------------------------------------------------------\n * Namespace\n * ------------------------------------------------------------------------- */\n\nexport declare namespace h {\n namespace JSX {\n type Element = HTMLElement\n type IntrinsicElements = JSXInternal.IntrinsicElements\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Truncate a string after the given number of characters\n *\n * This is not a very reasonable approach, since the summaries kind of suck.\n * It would be better to create something more intelligent, highlighting the\n * search occurrences and making a better summary out of it, but this note was\n * written three years ago, so who knows if we'll ever fix it.\n *\n * @param value - Value to be truncated\n * @param n - Number of characters\n *\n * @returns Truncated value\n */\nexport function truncate(value: string, n: number): string {\n let i = n\n if (value.length > i) {\n while (value[i] !== \" \" && --i > 0) { /* keep eating */ }\n return `${value.substring(0, i)}...`\n }\n return value\n}\n\n/**\n * Round a number for display with repository facts\n *\n * This is a reverse-engineered version of GitHub's weird rounding algorithm\n * for stars, forks and all other numbers. While all numbers below `1,000` are\n * returned as-is, bigger numbers are converted to fixed numbers:\n *\n * - `1,049` => `1k`\n * - `1,050` => `1.1k`\n * - `1,949` => `1.9k`\n * - `1,950` => `2k`\n *\n * @param value - Original value\n *\n * @returns Rounded value\n */\nexport function round(value: number): string {\n if (value > 999) {\n const digits = +((value - 950) % 1000 > 99)\n return `${((value + 0.000001) / 1000).toFixed(digits)}k`\n } else {\n return value.toString()\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n shareReplay,\n startWith\n} from \"rxjs\"\n\nimport { getOptionalElement } from \"~/browser\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location hash\n *\n * @returns Location hash\n */\nexport function getLocationHash(): string {\n return location.hash.substring(1)\n}\n\n/**\n * Set location hash\n *\n * Setting a new fragment identifier via `location.hash` will have no effect\n * if the value doesn't change. When a new fragment identifier is set, we want\n * the browser to target the respective element at all times, which is why we\n * use this dirty little trick.\n *\n * @param hash - Location hash\n */\nexport function setLocationHash(hash: string): void {\n const el = h(\"a\", { href: hash })\n el.addEventListener(\"click\", ev => ev.stopPropagation())\n el.click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location hash\n *\n * @returns Location hash observable\n */\nexport function watchLocationHash(): Observable {\n return fromEvent(window, \"hashchange\")\n .pipe(\n map(getLocationHash),\n startWith(getLocationHash()),\n filter(hash => hash.length > 0),\n shareReplay(1)\n )\n}\n\n/**\n * Watch location target\n *\n * @returns Location target observable\n */\nexport function watchLocationTarget(): Observable {\n return watchLocationHash()\n .pipe(\n map(id => getOptionalElement(`[id=\"${id}\"]`)!),\n filter(el => typeof el !== \"undefined\")\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n fromEvent,\n fromEventPattern,\n map,\n merge,\n startWith,\n switchMap\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch media query\n *\n * Note that although `MediaQueryList.addListener` is deprecated we have to\n * use it, because it's the only way to ensure proper downward compatibility.\n *\n * @see https://bit.ly/3dUBH2m - GitHub issue\n *\n * @param query - Media query\n *\n * @returns Media observable\n */\nexport function watchMedia(query: string): Observable {\n const media = matchMedia(query)\n return fromEventPattern(next => (\n media.addListener(() => next(media.matches))\n ))\n .pipe(\n startWith(media.matches)\n )\n}\n\n/**\n * Watch print mode\n *\n * @returns Print observable\n */\nexport function watchPrint(): Observable {\n const media = matchMedia(\"print\")\n return merge(\n fromEvent(window, \"beforeprint\").pipe(map(() => true)),\n fromEvent(window, \"afterprint\").pipe(map(() => false))\n )\n .pipe(\n startWith(media.matches)\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Toggle an observable with a media observable\n *\n * @template T - Data type\n *\n * @param query$ - Media observable\n * @param factory - Observable factory\n *\n * @returns Toggled observable\n */\nexport function at(\n query$: Observable, factory: () => Observable\n): Observable {\n return query$\n .pipe(\n switchMap(active => active ? factory() : EMPTY)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n catchError,\n from,\n map,\n of,\n shareReplay,\n switchMap,\n throwError\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch the given URL\n *\n * If the request fails (e.g. when dispatched from `file://` locations), the\n * observable will complete without emitting a value.\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Response observable\n */\nexport function request(\n url: URL | string, options: RequestInit = { credentials: \"same-origin\" }\n): Observable {\n return from(fetch(`${url}`, options))\n .pipe(\n catchError(() => EMPTY),\n switchMap(res => res.status !== 200\n ? throwError(() => new Error(res.statusText))\n : of(res)\n )\n )\n}\n\n/**\n * Fetch JSON from the given URL\n *\n * @template T - Data type\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestJSON(\n url: URL | string, options?: RequestInit\n): Observable {\n return request(url, options)\n .pipe(\n switchMap(res => res.json()),\n shareReplay(1)\n )\n}\n\n/**\n * Fetch XML from the given URL\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestXML(\n url: URL | string, options?: RequestInit\n): Observable {\n const dom = new DOMParser()\n return request(url, options)\n .pipe(\n switchMap(res => res.text()),\n map(res => dom.parseFromString(res, \"text/xml\")),\n shareReplay(1)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n defer,\n finalize,\n fromEvent,\n map,\n merge,\n switchMap,\n take,\n throwError\n} from \"rxjs\"\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create and load a `script` element\n *\n * This function returns an observable that will emit when the script was\n * successfully loaded, or throw an error if it didn't.\n *\n * @param src - Script URL\n *\n * @returns Script observable\n */\nexport function watchScript(src: string): Observable {\n const script = h(\"script\", { src })\n return defer(() => {\n document.head.appendChild(script)\n return merge(\n fromEvent(script, \"load\"),\n fromEvent(script, \"error\")\n .pipe(\n switchMap(() => (\n throwError(() => new ReferenceError(`Invalid script: ${src}`))\n ))\n )\n )\n .pipe(\n map(() => undefined),\n finalize(() => document.head.removeChild(script)),\n take(1)\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport offset\n */\nexport interface ViewportOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport offset\n *\n * On iOS Safari, viewport offset can be negative due to overflow scrolling.\n * As this may induce strange behaviors downstream, we'll just limit it to 0.\n *\n * @returns Viewport offset\n */\nexport function getViewportOffset(): ViewportOffset {\n return {\n x: Math.max(0, scrollX),\n y: Math.max(0, scrollY)\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport offset\n *\n * @returns Viewport offset observable\n */\nexport function watchViewportOffset(): Observable {\n return merge(\n fromEvent(window, \"scroll\", { passive: true }),\n fromEvent(window, \"resize\", { passive: true })\n )\n .pipe(\n map(getViewportOffset),\n startWith(getViewportOffset())\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport size\n */\nexport interface ViewportSize {\n width: number /* Viewport width */\n height: number /* Viewport height */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport size\n *\n * @returns Viewport size\n */\nexport function getViewportSize(): ViewportSize {\n return {\n width: innerWidth,\n height: innerHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport size\n *\n * @returns Viewport size observable\n */\nexport function watchViewportSize(): Observable {\n return fromEvent(window, \"resize\", { passive: true })\n .pipe(\n map(getViewportSize),\n startWith(getViewportSize())\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n map,\n shareReplay\n} from \"rxjs\"\n\nimport {\n ViewportOffset,\n watchViewportOffset\n} from \"../offset\"\nimport {\n ViewportSize,\n watchViewportSize\n} from \"../size\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport\n */\nexport interface Viewport {\n offset: ViewportOffset /* Viewport offset */\n size: ViewportSize /* Viewport size */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport\n *\n * @returns Viewport observable\n */\nexport function watchViewport(): Observable {\n return combineLatest([\n watchViewportOffset(),\n watchViewportSize()\n ])\n .pipe(\n map(([offset, size]) => ({ offset, size })),\n shareReplay(1)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n distinctUntilKeyChanged,\n map\n} from \"rxjs\"\n\nimport { Header } from \"~/components\"\n\nimport { getElementOffset } from \"../../element\"\nimport { Viewport } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
/* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport relative to element\n *\n * @param el - Element\n * @param options - Options\n *\n * @returns Viewport observable\n */\nexport function watchViewportAt(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n const size$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\")\n )\n\n /* Compute element offset */\n const offset$ = combineLatest([size$, header$])\n .pipe(\n map(() => getElementOffset(el))\n )\n\n /* Compute relative viewport, return hot observable */\n return combineLatest([header$, viewport$, offset$])\n .pipe(\n map(([{ height }, { offset, size }, { x, y }]) => ({\n offset: {\n x: offset.x - x,\n y: offset.y - y + height\n },\n size\n }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n fromEvent,\n map,\n share,\n switchMap,\n tap,\n throttle\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Worker message\n */\nexport interface WorkerMessage {\n type: unknown /* Message type */\n data?: unknown /* Message data */\n}\n\n/**\n * Worker handler\n *\n * @template T - Message type\n */\nexport interface WorkerHandler<\n T extends WorkerMessage\n> {\n tx$: Subject /* Message transmission subject */\n rx$: Observable /* Message receive observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n *\n * @template T - Worker message type\n */\ninterface WatchOptions {\n tx$: Observable /* Message transmission observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch a web worker\n *\n * This function returns an observable that sends all values emitted by the\n * message observable to the web worker. Web worker communication is expected\n * to be bidirectional (request-response) and synchronous. Messages that are\n * emitted during a pending request are throttled, the last one is emitted.\n *\n * @param worker - Web worker\n * @param options - Options\n *\n * @returns Worker message observable\n */\nexport function watchWorker(\n worker: Worker, { tx$ }: WatchOptions\n): Observable {\n\n /* Intercept messages from worker-like objects */\n const rx$ = fromEvent(worker, \"message\")\n .pipe(\n map(({ data }) => data as T)\n )\n\n /* Send and receive messages, return hot observable */\n return tx$\n .pipe(\n throttle(() => rx$, { leading: true, trailing: true }),\n tap(message => worker.postMessage(message)),\n switchMap(() => rx$),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElement, getLocation } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Feature flag\n */\nexport type Flag =\n | \"announce.dismiss\" /* Dismissable announcement bar */\n | \"content.code.annotate\" /* Code annotations */\n | \"content.tabs.link\" /* Link content tabs */\n | \"header.autohide\" /* Hide header */\n | \"navigation.expand\" /* Automatic expansion */\n | \"navigation.indexes\" /* Section pages */\n | \"navigation.instant\" /* Instant loading */\n | \"navigation.sections\" /* Section navigation */\n | \"navigation.tabs\" /* Tabs navigation */\n | \"navigation.tabs.sticky\" /* Tabs navigation (sticky) */\n | \"navigation.top\" /* Back-to-top button */\n | \"navigation.tracking\" /* Anchor tracking */\n | \"search.highlight\" /* Search highlighting */\n | \"search.share\" /* Search sharing */\n | \"search.suggest\" /* Search suggestions */\n | \"toc.integrate\" /* Integrated table of contents */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Translation\n */\nexport type Translation =\n | \"clipboard.copy\" /* Copy to clipboard */\n | \"clipboard.copied\" /* Copied to clipboard */\n | \"search.config.lang\" /* Search language */\n | \"search.config.pipeline\" /* Search pipeline */\n | \"search.config.separator\" /* Search separator */\n | \"search.placeholder\" /* Search */\n | \"search.result.placeholder\" /* Type to start searching */\n | \"search.result.none\" /* No matching documents */\n | \"search.result.one\" /* 1 matching document */\n | \"search.result.other\" /* # matching documents */\n | \"search.result.more.one\" /* 1 more on this page */\n | \"search.result.more.other\" /* # more on this page */\n | \"search.result.term.missing\" /* Missing */\n | \"select.version.title\" /* Version selector */\n\n/**\n * Translations\n */\nexport type Translations = Record\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Versioning\n */\nexport interface Versioning {\n provider: \"mike\" /* Version provider */\n default?: string /* Default version */\n}\n\n/**\n * Configuration\n */\nexport interface Config {\n base: string /* Base URL */\n features: Flag[] /* Feature flags */\n translations: Translations /* Translations */\n search: string /* Search worker URL */\n version?: Versioning /* Versioning */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration and make base URL absolute\n */\nconst script = getElement(\"#__config\")\nconst config: Config = JSON.parse(script.textContent!)\nconfig.base = `${new URL(config.base, getLocation())}`\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration\n *\n * @returns Global configuration\n */\nexport function configuration(): Config {\n return config\n}\n\n/**\n * Check whether a feature flag is enabled\n *\n * @param flag - Feature flag\n *\n * @returns Test result\n */\nexport function feature(flag: Flag): boolean {\n return config.features.includes(flag)\n}\n\n/**\n * Retrieve the translation for the given key\n *\n * @param key - Key to be translated\n * @param value - Positional value, if any\n *\n * @returns Translation\n */\nexport function translation(\n key: Translation, value?: string | number\n): string {\n return typeof value !== \"undefined\"\n ? config.translations[key].replace(\"#\", value.toString())\n : config.translations[key]\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElement, getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component type\n */\nexport type ComponentType =\n | \"announce\" /* Announcement bar */\n | \"container\" /* Container */\n | \"consent\" /* Consent */\n | \"content\" /* Content */\n | \"dialog\" /* Dialog */\n | \"header\" /* Header */\n | \"header-title\" /* Header title */\n | \"header-topic\" /* Header topic */\n | \"main\" /* Main area */\n | \"outdated\" /* Version warning */\n | \"palette\" /* Color palette */\n | \"search\" /* Search */\n | \"search-query\" /* Search input */\n | \"search-result\" /* Search results */\n | \"search-share\" /* Search sharing */\n | \"search-suggest\" /* Search suggestions */\n | \"sidebar\" /* Sidebar */\n | \"skip\" /* Skip link */\n | \"source\" /* Repository information */\n | \"tabs\" /* Navigation tabs */\n | \"toc\" /* Table of contents */\n | \"top\" /* Back-to-top button */\n\n/**\n * Component\n *\n * @template T - Component type\n * @template U - Reference type\n */\nexport type Component<\n T extends {} = {},\n U extends HTMLElement = HTMLElement\n> =\n T & {\n ref: U /* Component reference */\n }\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component type map\n */\ninterface ComponentTypeMap {\n \"announce\": HTMLElement /* Announcement bar */\n \"container\": HTMLElement /* Container */\n \"consent\": HTMLElement /* Consent */\n \"content\": HTMLElement /* Content */\n \"dialog\": HTMLElement /* Dialog */\n \"header\": HTMLElement /* Header */\n \"header-title\": HTMLElement /* Header title */\n \"header-topic\": HTMLElement /* Header topic */\n \"main\": HTMLElement /* Main area */\n \"outdated\": HTMLElement /* Version warning */\n \"palette\": HTMLElement /* Color palette */\n \"search\": HTMLElement /* Search */\n \"search-query\": HTMLInputElement /* Search input */\n \"search-result\": HTMLElement /* Search results */\n \"search-share\": HTMLAnchorElement /* Search sharing */\n \"search-suggest\": HTMLElement /* Search suggestions */\n \"sidebar\": HTMLElement /* Sidebar */\n \"skip\": HTMLAnchorElement /* Skip link */\n \"source\": HTMLAnchorElement /* Repository information */\n \"tabs\": HTMLElement /* Navigation tabs */\n \"toc\": HTMLElement /* Table of contents */\n \"top\": HTMLAnchorElement /* Back-to-top button */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the element for a given component or throw a reference error\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getComponentElement(\n type: T, node: ParentNode = document\n): ComponentTypeMap[T] {\n return getElement(`[data-md-component=${type}]`, node)\n}\n\n/**\n * Retrieve all elements for a given component\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getComponentElements(\n type: T, node: ParentNode = document\n): ComponentTypeMap[T][] {\n return getElements(`[data-md-component=${type}]`, node)\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n finalize,\n fromEvent,\n map,\n startWith,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport { getElement } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Announcement bar\n */\nexport interface Announce {\n hash: number /* Content hash */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch announcement bar\n *\n * @param el - Announcement bar element\n *\n * @returns Announcement bar observable\n */\nexport function watchAnnounce(\n el: HTMLElement\n): Observable {\n const button = getElement(\".md-typeset > :first-child\", el)\n return fromEvent(button, \"click\", { once: true })\n .pipe(\n map(() => getElement(\".md-typeset\", el)),\n map(content => ({ hash: __md_hash(content.innerHTML) }))\n )\n}\n\n/**\n * Mount announcement bar\n *\n * @param el - Announcement bar element\n *\n * @returns Announcement bar component observable\n */\nexport function mountAnnounce(\n el: HTMLElement\n): Observable> {\n if (!feature(\"announce.dismiss\") || !el.childElementCount)\n return EMPTY\n\n /* Mount component on subscription */\n return defer(() => {\n const push$ = new Subject()\n push$\n .pipe(\n startWith({ hash: __md_get(\"__announce\") })\n )\n .subscribe(({ hash }) => {\n if (hash && hash === (__md_get(\"__announce\") ?? hash)) {\n el.hidden = true\n\n /* Persist preference in local storage */\n __md_set(\"__announce\", hash)\n }\n })\n\n /* Create and return component */\n return watchAnnounce(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n finalize,\n map,\n tap\n} from \"rxjs\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Consent\n */\nexport interface Consent {\n hidden: boolean /* Consent is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n target$: Observable /* Target observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch consent\n *\n * @param el - Consent element\n * @param options - Options\n *\n * @returns Consent observable\n */\nexport function watchConsent(\n el: HTMLElement, { target$ }: WatchOptions\n): Observable {\n return target$\n .pipe(\n map(target => ({ hidden: target !== el }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount consent\n *\n * @param el - Consent element\n * @param options - Options\n *\n * @returns Consent component observable\n */\nexport function mountConsent(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const internal$ = new Subject()\n internal$.subscribe(({ hidden }) => {\n el.hidden = hidden\n })\n\n /* Create and return component */\n return watchConsent(el, options)\n .pipe(\n tap(state => internal$.next(state)),\n finalize(() => internal$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ClipboardJS from \"clipboard\"\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n finalize,\n map,\n mergeWith,\n switchMap,\n take,\n takeLast,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n getElementContentSize,\n watchElementSize,\n watchElementVisibility\n} from \"~/browser\"\nimport { renderClipboardButton } from \"~/templates\"\n\nimport { Component } from \"../../../_\"\nimport {\n Annotation,\n mountAnnotationList\n} from \"../../annotation\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Code block\n */\nexport interface CodeBlock {\n scrollable: boolean /* Code block overflows */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Global sequence number for Clipboard.js integration\n */\nlet sequence = 0\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Find candidate list element directly following a code block\n *\n * @param el - Code block element\n *\n * @returns List element or nothing\n */\nfunction findCandidateList(el: HTMLElement): HTMLElement | undefined {\n if (el.nextElementSibling) {\n const sibling = el.nextElementSibling as HTMLElement\n if (sibling.tagName === \"OL\")\n return sibling\n\n /* Skip empty paragraphs - see https://bit.ly/3r4ZJ2O */\n else if (sibling.tagName === \"P\" && !sibling.children.length)\n return findCandidateList(sibling)\n }\n\n /* Everything else */\n return undefined\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch code block\n *\n * This function monitors size changes of the viewport, as well as switches of\n * content tabs with embedded code blocks, as both may trigger overflow.\n *\n * @param el - Code block element\n *\n * @returns Code block observable\n */\nexport function watchCodeBlock(\n el: HTMLElement\n): Observable {\n return watchElementSize(el)\n .pipe(\n map(({ width }) => {\n const content = getElementContentSize(el)\n return {\n scrollable: content.width > width\n }\n }),\n distinctUntilKeyChanged(\"scrollable\")\n )\n}\n\n/**\n * Mount code block\n *\n * This function ensures that an overflowing code block is focusable through\n * keyboard, so it can be scrolled without a mouse to improve on accessibility.\n * Furthermore, if code annotations are enabled, they are mounted if and only\n * if the code block is currently visible, e.g., not in a hidden content tab.\n *\n * @param el - Code block element\n * @param options - Options\n *\n * @returns Code block and annotation component observable\n */\nexport function mountCodeBlock(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const { matches: hover } = matchMedia(\"(hover)\")\n\n /* Defer mounting of code block - see https://bit.ly/3vHVoVD */\n const factory$ = defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ scrollable }) => {\n if (scrollable && hover)\n el.setAttribute(\"tabindex\", \"0\")\n else\n el.removeAttribute(\"tabindex\")\n })\n\n /* Render button for Clipboard.js integration */\n if (ClipboardJS.isSupported()) {\n const parent = el.closest(\"pre\")!\n parent.id = `__code_${++sequence}`\n parent.insertBefore(\n renderClipboardButton(parent.id),\n el\n )\n }\n\n /* Handle code annotations */\n const container = el.closest(\".highlight\")\n if (container instanceof HTMLElement) {\n const list = findCandidateList(container)\n\n /* Mount code annotations, if enabled */\n if (typeof list !== \"undefined\" && (\n container.classList.contains(\"annotate\") ||\n feature(\"content.code.annotate\")\n )) {\n const annotations$ = mountAnnotationList(list, el, options)\n\n /* Create and return component */\n return watchCodeBlock(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state })),\n mergeWith(\n watchElementSize(container)\n .pipe(\n takeUntil(push$.pipe(takeLast(1))),\n map(({ width, height }) => width && height),\n distinctUntilChanged(),\n switchMap(active => active ? annotations$ : EMPTY)\n )\n )\n )\n }\n }\n\n /* Create and return component */\n return watchCodeBlock(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n\n /* Mount code block on first sight */\n return watchElementVisibility(el)\n .pipe(\n filter(visible => visible),\n take(1),\n switchMap(() => factory$)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render an empty annotation\n *\n * @param id - Annotation identifier\n *\n * @returns Element\n */\nexport function renderAnnotation(id: number): HTMLElement {\n return (\n \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { translation } from \"~/_\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a 'copy-to-clipboard' button\n *\n * @param id - Unique identifier\n *\n * @returns Element\n */\nexport function renderClipboardButton(id: string): HTMLElement {\n return (\n code`}\n >\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ComponentChild } from \"preact\"\n\nimport { feature, translation } from \"~/_\"\nimport {\n SearchDocument,\n SearchMetadata,\n SearchResultItem\n} from \"~/integrations/search\"\nimport { h, truncate } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Render flag\n */\nconst enum Flag {\n TEASER = 1, /* Render teaser */\n PARENT = 2 /* Render as parent */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper function\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search document\n *\n * @param document - Search document\n * @param flag - Render flags\n *\n * @returns Element\n */\nfunction renderSearchDocument(\n document: SearchDocument & SearchMetadata, flag: Flag\n): HTMLElement {\n const parent = flag & Flag.PARENT\n const teaser = flag & Flag.TEASER\n\n /* Render missing query terms */\n const missing = Object.keys(document.terms)\n .filter(key => !document.terms[key])\n .reduce((list, key) => [\n ...list, {key}, \" \"\n ], [])\n .slice(0, -1)\n\n /* Assemble query string for highlighting */\n const url = new URL(document.location)\n if (feature(\"search.highlight\"))\n url.searchParams.set(\"h\", Object.entries(document.terms)\n .filter(([, match]) => match)\n .reduce((highlight, [value]) => `${highlight} ${value}`.trim(), \"\")\n )\n\n /* Render article or section, depending on flags */\n return (\n \n \n {parent > 0 &&
}\n

{document.title}

\n {teaser > 0 && document.text.length > 0 &&\n

\n {truncate(document.text, 320)}\n

\n }\n {document.tags && document.tags.map(tag => (\n {tag}\n ))}\n {teaser > 0 && missing.length > 0 &&\n

\n {translation(\"search.result.term.missing\")}: {...missing}\n

\n }\n \n
\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search result\n *\n * @param result - Search result\n *\n * @returns Element\n */\nexport function renderSearchResultItem(\n result: SearchResultItem\n): HTMLElement {\n const threshold = result[0].score\n const docs = [...result]\n\n /* Find and extract parent article */\n const parent = docs.findIndex(doc => !doc.location.includes(\"#\"))\n const [article] = docs.splice(parent, 1)\n\n /* Determine last index above threshold */\n let index = docs.findIndex(doc => doc.score < threshold)\n if (index === -1)\n index = docs.length\n\n /* Partition sections */\n const best = docs.slice(0, index)\n const more = docs.slice(index)\n\n /* Render children */\n const children = [\n renderSearchDocument(article, Flag.PARENT | +(!parent && index === 0)),\n ...best.map(section => renderSearchDocument(section, Flag.TEASER)),\n ...more.length ? [\n
\n \n {more.length > 0 && more.length === 1\n ? translation(\"search.result.more.one\")\n : translation(\"search.result.more.other\", more.length)\n }\n \n {...more.map(section => renderSearchDocument(section, Flag.TEASER))}\n
\n ] : []\n ]\n\n /* Render search result */\n return (\n
  • \n {children}\n
  • \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SourceFacts } from \"~/components\"\nimport { h, round } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render repository facts\n *\n * @param facts - Repository facts\n *\n * @returns Element\n */\nexport function renderSourceFacts(facts: SourceFacts): HTMLElement {\n return (\n
      \n {Object.entries(facts).map(([key, value]) => (\n
    • \n {typeof value === \"number\" ? round(value) : value}\n
    • \n ))}\n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Tabbed control type\n */\ntype TabbedControlType =\n | \"prev\"\n | \"next\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render control for content tabs\n *\n * @param type - Control type\n *\n * @returns Element\n */\nexport function renderTabbedControl(\n type: TabbedControlType\n): HTMLElement {\n const classes = `tabbed-control tabbed-control--${type}`\n return (\n \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a table inside a wrapper to improve scrolling on mobile\n *\n * @param table - Table element\n *\n * @returns Element\n */\nexport function renderTable(table: HTMLElement): HTMLElement {\n return (\n
    \n
    \n {table}\n
    \n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { configuration, translation } from \"~/_\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Version\n */\nexport interface Version {\n version: string /* Version identifier */\n title: string /* Version title */\n aliases: string[] /* Version aliases */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a version\n *\n * @param version - Version\n *\n * @returns Element\n */\nfunction renderVersion(version: Version): HTMLElement {\n const config = configuration()\n\n /* Ensure trailing slash, see https://bit.ly/3rL5u3f */\n const url = new URL(`../${version.version}/`, config.base)\n return (\n
  • \n \n {version.title}\n \n
  • \n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a version selector\n *\n * @param versions - Versions\n * @param active - Active version\n *\n * @returns Element\n */\nexport function renderVersionSelector(\n versions: Version[], active: Version\n): HTMLElement {\n return (\n
    \n \n {active.title}\n \n
      \n {versions.map(renderVersion)}\n
    \n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n animationFrameScheduler,\n combineLatest,\n defer,\n finalize,\n fromEvent,\n map,\n switchMap,\n take,\n takeLast,\n takeUntil,\n tap,\n throttleTime\n} from \"rxjs\"\n\nimport {\n ElementOffset,\n getElement,\n getElementSize,\n watchElementContentOffset,\n watchElementFocus,\n watchElementOffset,\n watchElementVisibility\n} from \"~/browser\"\n\nimport { Component } from \"../../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Annotation\n */\nexport interface Annotation {\n active: boolean /* Annotation is active */\n offset: ElementOffset /* Annotation offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch annotation\n *\n * @param el - Annotation element\n * @param container - Containing element\n *\n * @returns Annotation observable\n */\nexport function watchAnnotation(\n el: HTMLElement, container: HTMLElement\n): Observable {\n const offset$ = defer(() => combineLatest([\n watchElementOffset(el),\n watchElementContentOffset(container)\n ]))\n .pipe(\n map(([{ x, y }, scroll]) => {\n const { width } = getElementSize(el)\n return ({\n x: x - scroll.x + width / 2,\n y: y - scroll.y\n })\n })\n )\n\n /* Actively watch annotation on focus */\n return watchElementFocus(el)\n .pipe(\n switchMap(active => offset$\n .pipe(\n map(offset => ({ active, offset })),\n take(+!active || Infinity)\n )\n )\n )\n}\n\n/**\n * Mount annotation\n *\n * @param el - Annotation element\n * @param container - Containing element\n *\n * @returns Annotation component observable\n */\nexport function mountAnnotation(\n el: HTMLElement, container: HTMLElement\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe({\n\n /* Handle emission */\n next({ offset }) {\n el.style.setProperty(\"--md-tooltip-x\", `${offset.x}px`)\n el.style.setProperty(\"--md-tooltip-y\", `${offset.y}px`)\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-tooltip-x\")\n el.style.removeProperty(\"--md-tooltip-y\")\n }\n })\n\n /* Start animation only when annotation is visible */\n const done$ = push$.pipe(takeLast(1))\n watchElementVisibility(el)\n .pipe(\n takeUntil(done$)\n )\n .subscribe(visible => {\n el.toggleAttribute(\"data-md-visible\", visible)\n })\n\n /* Track relative origin of tooltip */\n push$\n .pipe(\n throttleTime(500, animationFrameScheduler),\n map(() => container.getBoundingClientRect()),\n map(({ x }) => x)\n )\n .subscribe({\n\n /* Handle emission */\n next(origin) {\n if (origin)\n el.style.setProperty(\"--md-tooltip-0\", `${-origin}px`)\n else\n el.style.removeProperty(\"--md-tooltip-0\")\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-tooltip-0\")\n }\n })\n\n /* Close open annotation on click */\n const index = getElement(\":scope > :last-child\", el)\n const blur$ = fromEvent(index, \"mousedown\", { once: true })\n push$\n .pipe(\n switchMap(({ active }) => active ? blur$ : EMPTY),\n tap(ev => ev.preventDefault())\n )\n .subscribe(() => el.blur())\n\n /* Create and return component */\n return watchAnnotation(el, container)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n finalize,\n merge,\n share,\n takeLast,\n takeUntil\n} from \"rxjs\"\n\nimport {\n getElement,\n getElements,\n getOptionalElement\n} from \"~/browser\"\nimport { renderAnnotation } from \"~/templates\"\n\nimport { Component } from \"../../../_\"\nimport {\n Annotation,\n mountAnnotation\n} from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Find all annotation markers in the given code block\n *\n * @param container - Containing element\n *\n * @returns Annotation markers\n */\nfunction findAnnotationMarkers(container: HTMLElement): Text[] {\n const markers: Text[] = []\n for (const comment of getElements(\".c, .c1, .cm\", container)) {\n let match: RegExpExecArray | null\n\n /* Split text at marker and add to list */\n let text = comment.firstChild as Text\n if (text instanceof Text)\n while ((match = /\\((\\d+)\\)/.exec(text.textContent!))) {\n const marker = text.splitText(match.index)\n text = marker.splitText(match[0].length)\n markers.push(marker)\n }\n }\n return markers\n}\n\n/**\n * Swap the child nodes of two elements\n *\n * @param source - Source element\n * @param target - Target element\n */\nfunction swap(source: HTMLElement, target: HTMLElement): void {\n target.append(...Array.from(source.childNodes))\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount annotation list\n *\n * This function analyzes the containing code block and checks for markers\n * referring to elements in the given annotation list. If no markers are found,\n * the list is left untouched. Otherwise, list elements are rendered as\n * annotations inside the code block.\n *\n * @param el - Annotation list element\n * @param container - Containing element\n * @param options - Options\n *\n * @returns Annotation component observable\n */\nexport function mountAnnotationList(\n el: HTMLElement, container: HTMLElement, { print$ }: MountOptions\n): Observable> {\n\n /* Find and replace all markers with empty annotations */\n const annotations = new Map()\n for (const marker of findAnnotationMarkers(container)) {\n const [, id] = marker.textContent!.match(/\\((\\d+)\\)/)!\n if (getOptionalElement(`li:nth-child(${id})`, el)) {\n annotations.set(+id, renderAnnotation(+id))\n marker.replaceWith(annotations.get(+id)!)\n }\n }\n\n /* Keep list if there are no annotations to render */\n if (annotations.size === 0)\n return EMPTY\n\n /* Create and return component */\n return defer(() => {\n const done$ = new Subject()\n\n /* Handle print mode - see https://bit.ly/3rgPdpt */\n print$\n .pipe(\n takeUntil(done$.pipe(takeLast(1)))\n )\n .subscribe(active => {\n el.hidden = !active\n\n /* Show annotations in code block or list (print) */\n for (const [id, annotation] of annotations) {\n const inner = getElement(\".md-typeset\", annotation)\n const child = getElement(`li:nth-child(${id})`, el)\n if (!active)\n swap(child, inner)\n else\n swap(inner, child)\n }\n })\n\n /* Create and return component */\n return merge(...[...annotations]\n .map(([, annotation]) => (\n mountAnnotation(annotation, container)\n ))\n )\n .pipe(\n finalize(() => done$.complete()),\n share()\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n map,\n of,\n shareReplay,\n tap\n} from \"rxjs\"\n\nimport { watchScript } from \"~/browser\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../../_\"\n\nimport themeCSS from \"./index.css\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mermaid diagram\n */\nexport interface Mermaid {}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Mermaid instance observable\n */\nlet mermaid$: Observable\n\n/**\n * Global sequence number for diagrams\n */\nlet sequence = 0\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch Mermaid script\n *\n * @returns Mermaid scripts observable\n */\nfunction fetchScripts(): Observable {\n return typeof mermaid === \"undefined\" || mermaid instanceof Element\n ? watchScript(\"https://unpkg.com/mermaid@9.0.1/dist/mermaid.min.js/")\n : of(undefined)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount Mermaid diagram\n *\n * @param el - Code block element\n *\n * @returns Mermaid diagram component observable\n */\nexport function mountMermaid(\n el: HTMLElement\n): Observable> {\n el.classList.remove(\"mermaid\") // Hack: mitigate https://bit.ly/3CiN6Du\n mermaid$ ||= fetchScripts()\n .pipe(\n tap(() => mermaid.initialize({\n startOnLoad: false,\n themeCSS\n })),\n map(() => undefined),\n shareReplay(1)\n )\n\n /* Render diagram */\n mermaid$.subscribe(() => {\n el.classList.add(\"mermaid\") // Hack: mitigate https://bit.ly/3CiN6Du\n const id = `__mermaid_${sequence++}`\n const host = h(\"div\", { class: \"mermaid\" })\n mermaid.mermaidAPI.render(id, el.textContent, (svg: string) => {\n\n /* Create a shadow root and inject diagram */\n const shadow = host.attachShadow({ mode: \"closed\" })\n shadow.innerHTML = svg\n\n /* Replace code block with diagram */\n el.replaceWith(host)\n })\n })\n\n /* Create and return component */\n return mermaid$\n .pipe(\n map(() => ({ ref: el }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n filter,\n finalize,\n map,\n merge,\n tap\n} from \"rxjs\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Details\n */\nexport interface Details {\n action: \"open\" | \"close\" /* Details state */\n reveal?: boolean /* Details is revealed */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch details\n *\n * @param el - Details element\n * @param options - Options\n *\n * @returns Details observable\n */\nexport function watchDetails(\n el: HTMLDetailsElement, { target$, print$ }: WatchOptions\n): Observable
    {\n let open = true\n return merge(\n\n /* Open and focus details on location target */\n target$\n .pipe(\n map(target => target.closest(\"details:not([open])\")!),\n filter(details => el === details),\n map(() => ({\n action: \"open\", reveal: true\n }) as Details)\n ),\n\n /* Open details on print and close afterwards */\n print$\n .pipe(\n filter(active => active || !open),\n tap(() => open = el.open),\n map(active => ({\n action: active ? \"open\" : \"close\"\n }) as Details)\n )\n )\n}\n\n/**\n * Mount details\n *\n * This function ensures that `details` tags are opened on anchor jumps and\n * prior to printing, so the whole content of the page is visible.\n *\n * @param el - Details element\n * @param options - Options\n *\n * @returns Details component observable\n */\nexport function mountDetails(\n el: HTMLDetailsElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject
    ()\n push$.subscribe(({ action, reveal }) => {\n if (action === \"open\")\n el.setAttribute(\"open\", \"\")\n else\n el.removeAttribute(\"open\")\n if (reveal)\n el.scrollIntoView()\n })\n\n /* Create and return component */\n return watchDetails(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, of } from \"rxjs\"\n\nimport { renderTable } from \"~/templates\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Data table\n */\nexport interface DataTable {}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Sentinel for replacement\n */\nconst sentinel = h(\"table\")\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount data table\n *\n * This function wraps a data table in another scrollable container, so it can\n * be smoothly scrolled on smaller screen sizes and won't break the layout.\n *\n * @param el - Data table element\n *\n * @returns Data table component observable\n */\nexport function mountDataTable(\n el: HTMLElement\n): Observable> {\n el.replaceWith(sentinel)\n sentinel.replaceWith(renderTable(el))\n\n /* Create and return component */\n return of({ ref: el })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n asyncScheduler,\n auditTime,\n combineLatest,\n defer,\n finalize,\n fromEvent,\n map,\n merge,\n skip,\n startWith,\n subscribeOn,\n takeLast,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n getElement,\n getElementContentOffset,\n getElementContentSize,\n getElementOffset,\n getElementSize,\n getElements,\n watchElementContentOffset,\n watchElementSize\n} from \"~/browser\"\nimport { renderTabbedControl } from \"~/templates\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Content tabs\n */\nexport interface ContentTabs {\n active: HTMLLabelElement /* Active tab label */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch content tabs\n *\n * @param el - Content tabs element\n *\n * @returns Content tabs observable\n */\nexport function watchContentTabs(\n el: HTMLElement\n): Observable {\n const inputs = getElements(\":scope > input\", el)\n const initial = inputs.find(input => input.checked) || inputs[0]\n return merge(...inputs.map(input => fromEvent(input, \"change\")\n .pipe(\n map(() => getElement(`label[for=\"${input.id}\"]`))\n )\n ))\n .pipe(\n startWith(getElement(`label[for=\"${initial.id}\"]`)),\n map(active => ({ active }))\n )\n}\n\n/**\n * Mount content tabs\n *\n * This function scrolls the active tab into view. While this functionality is\n * provided by browsers as part of `scrollInfoView`, browsers will always also\n * scroll the vertical axis, which we do not want. Thus, we decided to provide\n * this functionality ourselves.\n *\n * @param el - Content tabs element\n *\n * @returns Content tabs component observable\n */\nexport function mountContentTabs(\n el: HTMLElement\n): Observable> {\n\n /* Render content tab previous button for pagination */\n const prev = renderTabbedControl(\"prev\")\n el.append(prev)\n\n /* Render content tab next button for pagination */\n const next = renderTabbedControl(\"next\")\n el.append(next)\n\n /* Mount component on subscription */\n const container = getElement(\".tabbed-labels\", el)\n return defer(() => {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n combineLatest([push$, watchElementSize(el)])\n .pipe(\n auditTime(1, animationFrameScheduler),\n takeUntil(done$)\n )\n .subscribe({\n\n /* Handle emission */\n next([{ active }, size]) {\n const offset = getElementOffset(active)\n const { width } = getElementSize(active)\n\n /* Set tab indicator offset and width */\n el.style.setProperty(\"--md-indicator-x\", `${offset.x}px`)\n el.style.setProperty(\"--md-indicator-width\", `${width}px`)\n\n /* Scroll container to active content tab */\n const content = getElementContentOffset(container)\n if (\n offset.x < content.x ||\n offset.x + width > content.x + size.width\n )\n container.scrollTo({\n left: Math.max(0, offset.x - 16),\n behavior: \"smooth\"\n })\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-indicator-x\")\n el.style.removeProperty(\"--md-indicator-width\")\n }\n })\n\n /* Hide content tab buttons on borders */\n combineLatest([\n watchElementContentOffset(container),\n watchElementSize(container)\n ])\n .pipe(\n takeUntil(done$)\n )\n .subscribe(([offset, size]) => {\n const content = getElementContentSize(container)\n prev.hidden = offset.x < 16\n next.hidden = offset.x > content.width - size.width - 16\n })\n\n /* Paginate content tab container on click */\n merge(\n fromEvent(prev, \"click\").pipe(map(() => -1)),\n fromEvent(next, \"click\").pipe(map(() => +1))\n )\n .pipe(\n takeUntil(done$)\n )\n .subscribe(direction => {\n const { width } = getElementSize(container)\n container.scrollBy({\n left: width * direction,\n behavior: \"smooth\"\n })\n })\n\n /* Set up linking of content tabs, if enabled */\n if (feature(\"content.tabs.link\"))\n push$.pipe(skip(1))\n .subscribe(({ active }) => {\n const tab = active.innerText.trim()\n for (const set of getElements(\"[data-tabs]\"))\n for (const input of getElements(\n \":scope > input\", set\n )) {\n const label = getElement(`label[for=\"${input.id}\"]`)\n if (label.innerText.trim() === tab) {\n input.click()\n break\n }\n }\n\n /* Persist active tabs in local storage */\n const tabs = __md_get(\"__tabs\") || []\n __md_set(\"__tabs\", [...new Set([tab, ...tabs])])\n })\n\n /* Create and return component */\n return watchContentTabs(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n .pipe(\n subscribeOn(asyncScheduler)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, merge } from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Annotation } from \"../annotation\"\nimport {\n CodeBlock,\n Mermaid,\n mountCodeBlock,\n mountMermaid\n} from \"../code\"\nimport {\n Details,\n mountDetails\n} from \"../details\"\nimport {\n DataTable,\n mountDataTable\n} from \"../table\"\nimport {\n ContentTabs,\n mountContentTabs\n} from \"../tabs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Content\n */\nexport type Content =\n | Annotation\n | ContentTabs\n | CodeBlock\n | Mermaid\n | DataTable\n | Details\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount content\n *\n * This function mounts all components that are found in the content of the\n * actual article, including code blocks, data tables and details.\n *\n * @param el - Content element\n * @param options - Options\n *\n * @returns Content component observable\n */\nexport function mountContent(\n el: HTMLElement, { target$, print$ }: MountOptions\n): Observable> {\n return merge(\n\n /* Code blocks */\n ...getElements(\"pre:not(.mermaid) > code\", el)\n .map(child => mountCodeBlock(child, { print$ })),\n\n /* Mermaid diagrams */\n ...getElements(\"pre.mermaid\", el)\n .map(child => mountMermaid(child)),\n\n /* Data tables */\n ...getElements(\"table:not([class])\", el)\n .map(child => mountDataTable(child)),\n\n /* Details */\n ...getElements(\"details\", el)\n .map(child => mountDetails(child, { target$, print$ })),\n\n /* Content tabs */\n ...getElements(\"[data-tabs]\", el)\n .map(child => mountContentTabs(child))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n delay,\n finalize,\n map,\n merge,\n of,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { getElement } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Dialog\n */\nexport interface Dialog {\n message: string /* Dialog message */\n active: boolean /* Dialog is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n alert$: Subject /* Alert subject */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n alert$: Subject /* Alert subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch dialog\n *\n * @param _el - Dialog element\n * @param options - Options\n *\n * @returns Dialog observable\n */\nexport function watchDialog(\n _el: HTMLElement, { alert$ }: WatchOptions\n): Observable {\n return alert$\n .pipe(\n switchMap(message => merge(\n of(true),\n of(false).pipe(delay(2000))\n )\n .pipe(\n map(active => ({ message, active }))\n )\n )\n )\n}\n\n/**\n * Mount dialog\n *\n * This function reveals the dialog in the right corner when a new alert is\n * emitted through the subject that is passed as part of the options.\n *\n * @param el - Dialog element\n * @param options - Options\n *\n * @returns Dialog component observable\n */\nexport function mountDialog(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const inner = getElement(\".md-typeset\", el)\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ message, active }) => {\n el.classList.toggle(\"md-dialog--active\", active)\n inner.textContent = message\n })\n\n /* Create and return component */\n return watchDialog(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatest,\n combineLatestWith,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n map,\n of,\n shareReplay,\n startWith,\n switchMap,\n takeLast,\n takeUntil\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n watchElementSize,\n watchToggle\n} from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Main } from \"../../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface Header {\n height: number /* Header visible height */\n hidden: boolean /* Header is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Compute whether the header is hidden\n *\n * If the user scrolls past a certain threshold, the header can be hidden when\n * scrolling down, and shown when scrolling up.\n *\n * @param options - Options\n *\n * @returns Toggle observable\n */\nfunction isHidden({ viewport$ }: WatchOptions): Observable {\n if (!feature(\"header.autohide\"))\n return of(false)\n\n /* Compute direction and turning point */\n const direction$ = viewport$\n .pipe(\n map(({ offset: { y } }) => y),\n bufferCount(2, 1),\n map(([a, b]) => [a < b, b] as const),\n distinctUntilKeyChanged(0)\n )\n\n /* Compute whether header should be hidden */\n const hidden$ = combineLatest([viewport$, direction$])\n .pipe(\n filter(([{ offset }, [, y]]) => Math.abs(y - offset.y) > 100),\n map(([, [direction]]) => direction),\n distinctUntilChanged()\n )\n\n /* Compute threshold for hiding */\n const search$ = watchToggle(\"search\")\n return combineLatest([viewport$, search$])\n .pipe(\n map(([{ offset }, search]) => offset.y > 400 && !search),\n distinctUntilChanged(),\n switchMap(active => active ? hidden$ : of(false)),\n startWith(false)\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header\n *\n * @param el - Header element\n * @param options - Options\n *\n * @returns Header observable\n */\nexport function watchHeader(\n el: HTMLElement, options: WatchOptions\n): Observable
    {\n return defer(() => combineLatest([\n watchElementSize(el),\n isHidden(options)\n ]))\n .pipe(\n map(([{ height }, hidden]) => ({\n height,\n hidden\n })),\n distinctUntilChanged((a, b) => (\n a.height === b.height &&\n a.hidden === b.hidden\n )),\n shareReplay(1)\n )\n}\n\n/**\n * Mount header\n *\n * This function manages the different states of the header, i.e. whether it's\n * hidden or rendered with a shadow. This depends heavily on the main area.\n *\n * @param el - Header element\n * @param options - Options\n *\n * @returns Header component observable\n */\nexport function mountHeader(\n el: HTMLElement, { header$, main$ }: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject
    ()\n const done$ = push$.pipe(takeLast(1))\n push$\n .pipe(\n distinctUntilKeyChanged(\"active\"),\n combineLatestWith(header$)\n )\n .subscribe(([{ active }, { hidden }]) => {\n el.classList.toggle(\"md-header--shadow\", active && !hidden)\n el.hidden = hidden\n })\n\n /* Link to main area */\n main$.subscribe(push$)\n\n /* Create and return component */\n return header$\n .pipe(\n takeUntil(done$),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n distinctUntilKeyChanged,\n finalize,\n map,\n tap\n} from \"rxjs\"\n\nimport {\n Viewport,\n getElementSize,\n getOptionalElement,\n watchViewportAt\n} from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Header } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface HeaderTitle {\n active: boolean /* Header title is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header title\n *\n * @param el - Heading element\n * @param options - Options\n *\n * @returns Header title observable\n */\nexport function watchHeaderTitle(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n return watchViewportAt(el, { viewport$, header$ })\n .pipe(\n map(({ offset: { y } }) => {\n const { height } = getElementSize(el)\n return {\n active: y >= height\n }\n }),\n distinctUntilKeyChanged(\"active\")\n )\n}\n\n/**\n * Mount header title\n *\n * This function swaps the header title from the site title to the title of the\n * current page when the user scrolls past the first headline.\n *\n * @param el - Header title element\n * @param options - Options\n *\n * @returns Header title component observable\n */\nexport function mountHeaderTitle(\n el: HTMLElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ active }) => {\n el.classList.toggle(\"md-header__title--active\", active)\n })\n\n /* Obtain headline, if any */\n const heading = getOptionalElement(\"article h1\")\n if (typeof heading === \"undefined\")\n return EMPTY\n\n /* Create and return component */\n return watchHeaderTitle(heading, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n map,\n switchMap\n} from \"rxjs\"\n\nimport {\n Viewport,\n watchElementSize\n} from \"~/browser\"\n\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Main area\n */\nexport interface Main {\n offset: number /* Main area top offset */\n height: number /* Main area visible height */\n active: boolean /* Main area is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch main area\n *\n * This function returns an observable that computes the visual parameters of\n * the main area which depends on the viewport vertical offset and height, as\n * well as the height of the header element, if the header is fixed.\n *\n * @param el - Main area element\n * @param options - Options\n *\n * @returns Main area observable\n */\nexport function watchMain(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable
    {\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n map(({ height }) => height),\n distinctUntilChanged()\n )\n\n /* Compute the main area's top and bottom borders */\n const border$ = adjust$\n .pipe(\n switchMap(() => watchElementSize(el)\n .pipe(\n map(({ height }) => ({\n top: el.offsetTop,\n bottom: el.offsetTop + height\n })),\n distinctUntilKeyChanged(\"bottom\")\n )\n )\n )\n\n /* Compute the main area's offset, visible height and if we scrolled past */\n return combineLatest([adjust$, border$, viewport$])\n .pipe(\n map(([header, { top, bottom }, { offset: { y }, size: { height } }]) => {\n height = Math.max(0, height\n - Math.max(0, top - y, header)\n - Math.max(0, height + y - bottom)\n )\n return {\n offset: top - header,\n height,\n active: top - header <= y\n }\n }),\n distinctUntilChanged((a, b) => (\n a.offset === b.offset &&\n a.height === b.height &&\n a.active === b.active\n ))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n asyncScheduler,\n defer,\n finalize,\n fromEvent,\n map,\n mergeMap,\n observeOn,\n of,\n shareReplay,\n startWith,\n tap\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Palette colors\n */\nexport interface PaletteColor {\n scheme?: string /* Color scheme */\n primary?: string /* Primary color */\n accent?: string /* Accent color */\n}\n\n/**\n * Palette\n */\nexport interface Palette {\n index: number /* Palette index */\n color: PaletteColor /* Palette colors */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch color palette\n *\n * @param inputs - Color palette element\n *\n * @returns Color palette observable\n */\nexport function watchPalette(\n inputs: HTMLInputElement[]\n): Observable {\n const current = __md_get(\"__palette\") || {\n index: inputs.findIndex(input => matchMedia(\n input.getAttribute(\"data-md-color-media\")!\n ).matches)\n }\n\n /* Emit changes in color palette */\n return of(...inputs)\n .pipe(\n mergeMap(input => fromEvent(input, \"change\")\n .pipe(\n map(() => input)\n )\n ),\n startWith(inputs[Math.max(0, current.index)]),\n map(input => ({\n index: inputs.indexOf(input),\n color: {\n scheme: input.getAttribute(\"data-md-color-scheme\"),\n primary: input.getAttribute(\"data-md-color-primary\"),\n accent: input.getAttribute(\"data-md-color-accent\")\n }\n } as Palette)),\n shareReplay(1)\n )\n}\n\n/**\n * Mount color palette\n *\n * @param el - Color palette element\n *\n * @returns Color palette component observable\n */\nexport function mountPalette(\n el: HTMLElement\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(palette => {\n document.body.setAttribute(\"data-md-color-switching\", \"\")\n\n /* Set color palette */\n for (const [key, value] of Object.entries(palette.color))\n document.body.setAttribute(`data-md-color-${key}`, value)\n\n /* Toggle visibility */\n for (let index = 0; index < inputs.length; index++) {\n const label = inputs[index].nextElementSibling\n if (label instanceof HTMLElement)\n label.hidden = palette.index !== index\n }\n\n /* Persist preference in local storage */\n __md_set(\"__palette\", palette)\n })\n\n /* Revert transition durations after color switch */\n push$.pipe(observeOn(asyncScheduler))\n .subscribe(() => {\n document.body.removeAttribute(\"data-md-color-switching\")\n })\n\n /* Create and return component */\n const inputs = getElements(\"input\", el)\n return watchPalette(inputs)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ClipboardJS from \"clipboard\"\nimport {\n Observable,\n Subject,\n map,\n tap\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport { getElement } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n alert$: Subject /* Alert subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Extract text to copy\n *\n * @param el - HTML element\n *\n * @returns Extracted text\n */\nfunction extract(el: HTMLElement): string {\n el.setAttribute(\"data-md-copying\", \"\")\n const text = el.innerText\n el.removeAttribute(\"data-md-copying\")\n return text\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up Clipboard.js integration\n *\n * @param options - Options\n */\nexport function setupClipboardJS(\n { alert$ }: SetupOptions\n): void {\n if (ClipboardJS.isSupported()) {\n new Observable(subscriber => {\n new ClipboardJS(\"[data-clipboard-target], [data-clipboard-text]\", {\n text: el => (\n el.getAttribute(\"data-clipboard-text\")! ||\n extract(getElement(\n el.getAttribute(\"data-clipboard-target\")!\n ))\n )\n })\n .on(\"success\", ev => subscriber.next(ev))\n })\n .pipe(\n tap(ev => {\n const trigger = ev.trigger as HTMLElement\n trigger.focus()\n }),\n map(() => translation(\"clipboard.copied\"))\n )\n .subscribe(alert$)\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map,\n of,\n tap\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport { getElements, requestXML } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sitemap, i.e. a list of URLs\n */\nexport type Sitemap = string[]\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Preprocess a list of URLs\n *\n * This function replaces the `site_url` in the sitemap with the actual base\n * URL, to allow instant loading to work in occasions like Netlify previews.\n *\n * @param urls - URLs\n *\n * @returns URL path parts\n */\nfunction preprocess(urls: Sitemap): Sitemap {\n if (urls.length < 2)\n return [\"\"]\n\n /* Take the first two URLs and remove everything after the last slash */\n const [root, next] = [...urls]\n .sort((a, b) => a.length - b.length)\n .map(url => url.replace(/[^/]+$/, \"\"))\n\n /* Compute common prefix */\n let index = 0\n if (root === next)\n index = root.length\n else\n while (root.charCodeAt(index) === next.charCodeAt(index))\n index++\n\n /* Remove common prefix and return in original order */\n return urls.map(url => url.replace(root.slice(0, index), \"\"))\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch the sitemap for the given base URL\n *\n * @param base - Base URL\n *\n * @returns Sitemap observable\n */\nexport function fetchSitemap(base?: URL): Observable {\n const cached = __md_get(\"__sitemap\", sessionStorage, base)\n if (cached) {\n return of(cached)\n } else {\n const config = configuration()\n return requestXML(new URL(\"sitemap.xml\", base || config.base))\n .pipe(\n map(sitemap => preprocess(getElements(\"loc\", sitemap)\n .map(node => node.textContent!)\n )),\n catchError(() => EMPTY), // @todo refactor instant loading\n defaultIfEmpty([]),\n tap(sitemap => __md_set(\"__sitemap\", sitemap, sessionStorage, base))\n )\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n NEVER,\n Observable,\n Subject,\n bufferCount,\n catchError,\n concatMap,\n debounceTime,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n fromEvent,\n map,\n merge,\n of,\n sample,\n share,\n skip,\n skipUntil,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"~/_\"\nimport {\n Viewport,\n ViewportOffset,\n getElements,\n getOptionalElement,\n request,\n setLocation,\n setLocationHash\n} from \"~/browser\"\nimport { getComponentElement } from \"~/components\"\nimport { h } from \"~/utilities\"\n\nimport { fetchSitemap } from \"../sitemap\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * History state\n */\nexport interface HistoryState {\n url: URL /* State URL */\n offset?: ViewportOffset /* State viewport offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Subject /* Document subject */\n location$: Subject /* Location subject */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up instant loading\n *\n * When fetching, theoretically, we could use `responseType: \"document\"`, but\n * since all MkDocs links are relative, we need to make sure that the current\n * location matches the document we just loaded. Otherwise any relative links\n * in the document could use the old location.\n *\n * This is the reason why we need to synchronize history events and the process\n * of fetching the document for navigation changes (except `popstate` events):\n *\n * 1. Fetch document via `XMLHTTPRequest`\n * 2. Set new location via `history.pushState`\n * 3. Parse and emit fetched document\n *\n * For `popstate` events, we must not use `history.pushState`, or the forward\n * history will be irreversibly overwritten. In case the request fails, the\n * location change is dispatched regularly.\n *\n * @param options - Options\n */\nexport function setupInstantLoading(\n { document$, location$, viewport$ }: SetupOptions\n): void {\n const config = configuration()\n if (location.protocol === \"file:\")\n return\n\n /* Disable automatic scroll restoration */\n if (\"scrollRestoration\" in history) {\n history.scrollRestoration = \"manual\"\n\n /* Hack: ensure that reloads restore viewport offset */\n fromEvent(window, \"beforeunload\")\n .subscribe(() => {\n history.scrollRestoration = \"auto\"\n })\n }\n\n /* Hack: ensure absolute favicon link to omit 404s when switching */\n const favicon = getOptionalElement(\"link[rel=icon]\")\n if (typeof favicon !== \"undefined\")\n favicon.href = favicon.href\n\n /* Intercept internal navigation */\n const push$ = fetchSitemap()\n .pipe(\n map(paths => paths.map(path => `${new URL(path, config.base)}`)),\n switchMap(urls => fromEvent(document.body, \"click\")\n .pipe(\n filter(ev => !ev.metaKey && !ev.ctrlKey),\n switchMap(ev => {\n if (ev.target instanceof Element) {\n const el = ev.target.closest(\"a\")\n if (el && !el.target) {\n const url = new URL(el.href)\n\n /* Canonicalize URL */\n url.search = \"\"\n url.hash = \"\"\n\n /* Check if URL should be intercepted */\n if (\n url.pathname !== location.pathname &&\n urls.includes(url.toString())\n ) {\n ev.preventDefault()\n return of({\n url: new URL(el.href)\n })\n }\n }\n }\n return NEVER\n })\n )\n ),\n share()\n )\n\n /* Intercept history back and forward */\n const pop$ = fromEvent(window, \"popstate\")\n .pipe(\n filter(ev => ev.state !== null),\n map(ev => ({\n url: new URL(location.href),\n offset: ev.state\n })),\n share()\n )\n\n /* Emit location change */\n merge(push$, pop$)\n .pipe(\n distinctUntilChanged((a, b) => a.url.href === b.url.href),\n map(({ url }) => url)\n )\n .subscribe(location$)\n\n /* Fetch document via `XMLHTTPRequest` */\n const response$ = location$\n .pipe(\n distinctUntilKeyChanged(\"pathname\"),\n switchMap(url => request(url.href)\n .pipe(\n catchError(() => {\n setLocation(url)\n return NEVER\n })\n )\n ),\n share()\n )\n\n /* Set new location via `history.pushState` */\n push$\n .pipe(\n sample(response$)\n )\n .subscribe(({ url }) => {\n history.pushState({}, \"\", `${url}`)\n })\n\n /* Parse and emit fetched document */\n const dom = new DOMParser()\n response$\n .pipe(\n switchMap(res => res.text()),\n map(res => dom.parseFromString(res, \"text/html\"))\n )\n .subscribe(document$)\n\n /* Replace meta tags and components */\n document$\n .pipe(\n skip(1)\n )\n .subscribe(replacement => {\n for (const selector of [\n\n /* Meta tags */\n \"title\",\n \"link[rel=canonical]\",\n \"meta[name=author]\",\n \"meta[name=description]\",\n\n /* Components */\n \"[data-md-component=announce]\",\n \"[data-md-component=container]\",\n \"[data-md-component=header-topic]\",\n \"[data-md-component=outdated]\",\n \"[data-md-component=logo]\",\n \"[data-md-component=skip]\",\n ...feature(\"navigation.tabs.sticky\")\n ? [\"[data-md-component=tabs]\"]\n : []\n ]) {\n const source = getOptionalElement(selector)\n const target = getOptionalElement(selector, replacement)\n if (\n typeof source !== \"undefined\" &&\n typeof target !== \"undefined\"\n ) {\n source.replaceWith(target)\n }\n }\n })\n\n /* Re-evaluate scripts */\n document$\n .pipe(\n skip(1),\n map(() => getComponentElement(\"container\")),\n switchMap(el => getElements(\"script\", el)),\n concatMap(el => {\n const script = h(\"script\")\n if (el.src) {\n for (const name of el.getAttributeNames())\n script.setAttribute(name, el.getAttribute(name)!)\n el.replaceWith(script)\n\n /* Complete when script is loaded */\n return new Observable(observer => {\n script.onload = () => observer.complete()\n })\n\n /* Complete immediately */\n } else {\n script.textContent = el.textContent\n el.replaceWith(script)\n return EMPTY\n }\n })\n )\n .subscribe()\n\n /* Emit history state change */\n merge(push$, pop$)\n .pipe(\n sample(document$)\n )\n .subscribe(({ url, offset }) => {\n if (url.hash && !offset) {\n setLocationHash(url.hash)\n } else {\n window.scrollTo(0, offset?.y || 0)\n }\n })\n\n /* Debounce update of viewport offset */\n viewport$\n .pipe(\n skipUntil(push$),\n debounceTime(250),\n distinctUntilKeyChanged(\"offset\")\n )\n .subscribe(({ offset }) => {\n history.replaceState(offset, \"\")\n })\n\n /* Set viewport offset from history */\n merge(push$, pop$)\n .pipe(\n bufferCount(2, 1),\n filter(([a, b]) => a.url.pathname === b.url.pathname),\n map(([, state]) => state)\n )\n .subscribe(({ offset }) => {\n window.scrollTo(0, offset?.y || 0)\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexDocument } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search document\n */\nexport interface SearchDocument extends SearchIndexDocument {\n parent?: SearchIndexDocument /* Parent article */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search document mapping\n */\nexport type SearchDocumentMap = Map\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search document mapping\n *\n * @param docs - Search index documents\n *\n * @returns Search document map\n */\nexport function setupSearchDocumentMap(\n docs: SearchIndexDocument[]\n): SearchDocumentMap {\n const documents = new Map()\n const parents = new Set()\n for (const doc of docs) {\n const [path, hash] = doc.location.split(\"#\")\n\n /* Extract location, title and tags */\n const location = doc.location\n const title = doc.title\n const tags = doc.tags\n\n /* Escape and cleanup text */\n const text = escapeHTML(doc.text)\n .replace(/\\s+(?=[,.:;!?])/g, \"\")\n .replace(/\\s+/g, \" \")\n\n /* Handle section */\n if (hash) {\n const parent = documents.get(path)!\n\n /* Ignore first section, override article */\n if (!parents.has(parent)) {\n parent.title = doc.title\n parent.text = text\n\n /* Remember that we processed the article */\n parents.add(parent)\n\n /* Add subsequent section */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n parent\n })\n }\n\n /* Add article */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n ...tags && { tags }\n })\n }\n }\n return documents\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexConfig } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlight function\n *\n * @param value - Value\n *\n * @returns Highlighted value\n */\nexport type SearchHighlightFn = (value: string) => string\n\n/**\n * Search highlight factory function\n *\n * @param query - Query value\n *\n * @returns Search highlight function\n */\nexport type SearchHighlightFactoryFn = (query: string) => SearchHighlightFn\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search highlighter\n *\n * @param config - Search index configuration\n * @param escape - Whether to escape HTML\n *\n * @returns Search highlight factory function\n */\nexport function setupSearchHighlighter(\n config: SearchIndexConfig, escape: boolean\n): SearchHighlightFactoryFn {\n const separator = new RegExp(config.separator, \"img\")\n const highlight = (_: unknown, data: string, term: string) => {\n return `${data}${term}`\n }\n\n /* Return factory function */\n return (query: string) => {\n query = query\n .replace(/[\\s*+\\-:~^]+/g, \" \")\n .trim()\n\n /* Create search term match expression */\n const match = new RegExp(`(^|${config.separator})(${\n query\n .replace(/[|\\\\{}()[\\]^$+*?.-]/g, \"\\\\$&\")\n .replace(separator, \"|\")\n })`, \"img\")\n\n /* Highlight string value */\n return value => (\n escape\n ? escapeHTML(value)\n : value\n )\n .replace(match, highlight)\n .replace(/<\\/mark>(\\s+)]*>/img, \"$1\")\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search transformation function\n *\n * @param value - Query value\n *\n * @returns Transformed query value\n */\nexport type SearchTransformFn = (value: string) => string\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Default transformation function\n *\n * 1. Search for terms in quotation marks and prepend a `+` modifier to denote\n * that the resulting document must contain all terms, converting the query\n * to an `AND` query (as opposed to the default `OR` behavior). While users\n * may expect terms enclosed in quotation marks to map to span queries, i.e.\n * for which order is important, Lunr.js doesn't support them, so the best\n * we can do is to convert the terms to an `AND` query.\n *\n * 2. Replace control characters which are not located at the beginning of the\n * query or preceded by white space, or are not followed by a non-whitespace\n * character or are at the end of the query string. Furthermore, filter\n * unmatched quotation marks.\n *\n * 3. Trim excess whitespace from left and right.\n *\n * @param query - Query value\n *\n * @returns Transformed query value\n */\nexport function defaultTransform(query: string): string {\n return query\n .split(/\"([^\"]+)\"/g) /* => 1 */\n .map((terms, index) => index & 1\n ? terms.replace(/^\\b|^(?![^\\x00-\\x7F]|$)|\\s+/g, \" +\")\n : terms\n )\n .join(\"\")\n .replace(/\"|(?:^|\\s+)[*+\\-:^~]+(?=\\s+|$)/g, \"\") /* => 2 */\n .trim() /* => 3 */\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchIndex, SearchResult } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search message type\n */\nexport const enum SearchMessageType {\n SETUP, /* Search index setup */\n READY, /* Search index ready */\n QUERY, /* Search query */\n RESULT /* Search results */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Message containing the data necessary to setup the search index\n */\nexport interface SearchSetupMessage {\n type: SearchMessageType.SETUP /* Message type */\n data: SearchIndex /* Message data */\n}\n\n/**\n * Message indicating the search index is ready\n */\nexport interface SearchReadyMessage {\n type: SearchMessageType.READY /* Message type */\n}\n\n/**\n * Message containing a search query\n */\nexport interface SearchQueryMessage {\n type: SearchMessageType.QUERY /* Message type */\n data: string /* Message data */\n}\n\n/**\n * Message containing results for a search query\n */\nexport interface SearchResultMessage {\n type: SearchMessageType.RESULT /* Message type */\n data: SearchResult /* Message data */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Message exchanged with the search worker\n */\nexport type SearchMessage =\n | SearchSetupMessage\n | SearchReadyMessage\n | SearchQueryMessage\n | SearchResultMessage\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Type guard for search setup messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchSetupMessage(\n message: SearchMessage\n): message is SearchSetupMessage {\n return message.type === SearchMessageType.SETUP\n}\n\n/**\n * Type guard for search ready messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchReadyMessage(\n message: SearchMessage\n): message is SearchReadyMessage {\n return message.type === SearchMessageType.READY\n}\n\n/**\n * Type guard for search query messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchQueryMessage(\n message: SearchMessage\n): message is SearchQueryMessage {\n return message.type === SearchMessageType.QUERY\n}\n\n/**\n * Type guard for search result messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchResultMessage(\n message: SearchMessage\n): message is SearchResultMessage {\n return message.type === SearchMessageType.RESULT\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n ObservableInput,\n Subject,\n from,\n map,\n share\n} from \"rxjs\"\n\nimport { configuration, feature, translation } from \"~/_\"\nimport { WorkerHandler, watchWorker } from \"~/browser\"\n\nimport { SearchIndex } from \"../../_\"\nimport {\n SearchOptions,\n SearchPipeline\n} from \"../../options\"\nimport {\n SearchMessage,\n SearchMessageType,\n SearchSetupMessage,\n isSearchResultMessage\n} from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search worker\n */\nexport type SearchWorker = WorkerHandler\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up search index\n *\n * @param data - Search index\n *\n * @returns Search index\n */\nfunction setupSearchIndex({ config, docs }: SearchIndex): SearchIndex {\n\n /* Override default language with value from translation */\n if (config.lang.length === 1 && config.lang[0] === \"en\")\n config.lang = [\n translation(\"search.config.lang\")\n ]\n\n /* Override default separator with value from translation */\n if (config.separator === \"[\\\\s\\\\-]+\")\n config.separator = translation(\"search.config.separator\")\n\n /* Set pipeline from translation */\n const pipeline = translation(\"search.config.pipeline\")\n .split(/\\s*,\\s*/)\n .filter(Boolean) as SearchPipeline\n\n /* Determine search options */\n const options: SearchOptions = {\n pipeline,\n suggestions: feature(\"search.suggest\")\n }\n\n /* Return search index after defaulting */\n return { config, docs, options }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up search worker\n *\n * This function creates a web worker to set up and query the search index,\n * which is done using Lunr.js. The index must be passed as an observable to\n * enable hacks like _localsearch_ via search index embedding as JSON.\n *\n * @param url - Worker URL\n * @param index - Search index observable input\n *\n * @returns Search worker\n */\nexport function setupSearchWorker(\n url: string, index: ObservableInput\n): SearchWorker {\n const config = configuration()\n const worker = new Worker(url)\n\n /* Create communication channels and resolve relative links */\n const tx$ = new Subject()\n const rx$ = watchWorker(worker, { tx$ })\n .pipe(\n map(message => {\n if (isSearchResultMessage(message)) {\n for (const result of message.data.items)\n for (const document of result)\n document.location = `${new URL(document.location, config.base)}`\n }\n return message\n }),\n share()\n )\n\n /* Set up search index */\n from(index)\n .pipe(\n map(data => ({\n type: SearchMessageType.SETUP,\n data: setupSearchIndex(data)\n } as SearchSetupMessage))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Return search worker */\n return { tx$, rx$ }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Subject,\n catchError,\n combineLatest,\n filter,\n fromEvent,\n map,\n of,\n switchMap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport {\n getElement,\n getLocation,\n requestJSON,\n setLocation\n} from \"~/browser\"\nimport { getComponentElements } from \"~/components\"\nimport {\n Version,\n renderVersionSelector\n} from \"~/templates\"\n\nimport { fetchSitemap } from \"../sitemap\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Subject /* Document subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up version selector\n *\n * @param options - Options\n */\nexport function setupVersionSelector(\n { document$ }: SetupOptions\n): void {\n const config = configuration()\n const versions$ = requestJSON(\n new URL(\"../versions.json\", config.base)\n )\n .pipe(\n catchError(() => EMPTY) // @todo refactor instant loading\n )\n\n /* Determine current version */\n const current$ = versions$\n .pipe(\n map(versions => {\n const [, current] = config.base.match(/([^/]+)\\/?$/)!\n return versions.find(({ version, aliases }) => (\n version === current || aliases.includes(current)\n )) || versions[0]\n })\n )\n\n /* Intercept inter-version navigation */\n versions$\n .pipe(\n map(versions => new Map(versions.map(version => [\n `${new URL(`../${version.version}/`, config.base)}`,\n version\n ]))),\n switchMap(urls => fromEvent(document.body, \"click\")\n .pipe(\n filter(ev => !ev.metaKey && !ev.ctrlKey),\n withLatestFrom(current$),\n switchMap(([ev, current]) => {\n if (ev.target instanceof Element) {\n const el = ev.target.closest(\"a\")\n if (el && !el.target && urls.has(el.href)) {\n const url = el.href\n // This is a temporary hack to detect if a version inside the\n // version selector or on another part of the site was clicked.\n // If we're inside the version selector, we definitely want to\n // find the same page, as we might have different deployments\n // due to aliases. However, if we're outside the version\n // selector, we must abort here, because we might otherwise\n // interfere with instant loading. We need to refactor this\n // at some point together with instant loading.\n //\n // See https://github.com/squidfunk/mkdocs-material/issues/4012\n if (!ev.target.closest(\".md-version\")) {\n const version = urls.get(url)!\n if (version === current)\n return EMPTY\n }\n ev.preventDefault()\n return of(url)\n }\n }\n return EMPTY\n }),\n switchMap(url => {\n const { version } = urls.get(url)!\n return fetchSitemap(new URL(url))\n .pipe(\n map(sitemap => {\n const location = getLocation()\n const path = location.href.replace(config.base, \"\")\n return sitemap.includes(path)\n ? new URL(`../${version}/${path}`, config.base)\n : new URL(url)\n })\n )\n })\n )\n )\n )\n .subscribe(url => setLocation(url))\n\n /* Render version selector and warning */\n combineLatest([versions$, current$])\n .subscribe(([versions, current]) => {\n const topic = getElement(\".md-header__topic\")\n topic.appendChild(renderVersionSelector(versions, current))\n })\n\n /* Integrate outdated version banner with instant loading */\n document$.pipe(switchMap(() => current$))\n .subscribe(current => {\n\n /* Check if version state was already determined */\n let outdated = __md_get(\"__outdated\", sessionStorage)\n if (outdated === null) {\n const latest = config.version?.default || \"latest\"\n outdated = !current.aliases.includes(latest)\n\n /* Persist version state in session storage */\n __md_set(\"__outdated\", outdated, sessionStorage)\n }\n\n /* Unhide outdated version banner */\n if (outdated)\n for (const warning of getComponentElements(\"outdated\"))\n warning.hidden = false\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n combineLatest,\n delay,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n share,\n shareReplay,\n startWith,\n take,\n takeLast,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport {\n getLocation,\n setToggle,\n watchElementFocus,\n watchToggle\n} from \"~/browser\"\nimport {\n SearchMessageType,\n SearchQueryMessage,\n SearchWorker,\n defaultTransform,\n isSearchReadyMessage\n} from \"~/integrations\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search query\n */\nexport interface SearchQuery {\n value: string /* Query value */\n focus: boolean /* Query focus */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch search query\n *\n * Note that the focus event which triggers re-reading the current query value\n * is delayed by `1ms` so the input's empty state is allowed to propagate.\n *\n * @param el - Search query element\n * @param worker - Search worker\n *\n * @returns Search query observable\n */\nexport function watchSearchQuery(\n el: HTMLInputElement, { rx$ }: SearchWorker\n): Observable {\n const fn = __search?.transform || defaultTransform\n\n /* Immediately show search dialog */\n const { searchParams } = getLocation()\n if (searchParams.has(\"q\"))\n setToggle(\"search\", true)\n\n /* Intercept query parameter (deep link) */\n const param$ = rx$\n .pipe(\n filter(isSearchReadyMessage),\n take(1),\n map(() => searchParams.get(\"q\") || \"\")\n )\n\n /* Remove query parameter when search is closed */\n watchToggle(\"search\")\n .pipe(\n filter(active => !active),\n take(1)\n )\n .subscribe(() => {\n const url = new URL(location.href)\n url.searchParams.delete(\"q\")\n history.replaceState({}, \"\", `${url}`)\n })\n\n /* Set query from parameter */\n param$.subscribe(value => { // TODO: not ideal - find a better way\n if (value) {\n el.value = value\n el.focus()\n }\n })\n\n /* Intercept focus and input events */\n const focus$ = watchElementFocus(el)\n const value$ = merge(\n fromEvent(el, \"keyup\"),\n fromEvent(el, \"focus\").pipe(delay(1)),\n param$\n )\n .pipe(\n map(() => fn(el.value)),\n startWith(\"\"),\n distinctUntilChanged(),\n )\n\n /* Combine into single observable */\n return combineLatest([value$, focus$])\n .pipe(\n map(([value, focus]) => ({ value, focus })),\n shareReplay(1)\n )\n}\n\n/**\n * Mount search query\n *\n * @param el - Search query element\n * @param worker - Search worker\n *\n * @returns Search query component observable\n */\nexport function mountSearchQuery(\n el: HTMLInputElement, { tx$, rx$ }: SearchWorker\n): Observable> {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n\n /* Handle value changes */\n push$\n .pipe(\n distinctUntilKeyChanged(\"value\"),\n map(({ value }): SearchQueryMessage => ({\n type: SearchMessageType.QUERY,\n data: value\n }))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Handle focus changes */\n push$\n .pipe(\n distinctUntilKeyChanged(\"focus\")\n )\n .subscribe(({ focus }) => {\n if (focus) {\n setToggle(\"search\", focus)\n el.placeholder = \"\"\n } else {\n el.placeholder = translation(\"search.placeholder\")\n }\n })\n\n /* Handle reset */\n fromEvent(el.form!, \"reset\")\n .pipe(\n takeUntil(done$)\n )\n .subscribe(() => el.focus())\n\n /* Create and return component */\n return watchSearchQuery(el, { tx$, rx$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state })),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n filter,\n finalize,\n map,\n merge,\n of,\n skipUntil,\n switchMap,\n take,\n tap,\n withLatestFrom,\n zipWith\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport {\n getElement,\n watchElementBoundary\n} from \"~/browser\"\nimport {\n SearchResult,\n SearchWorker,\n isSearchReadyMessage,\n isSearchResultMessage\n} from \"~/integrations\"\nimport { renderSearchResultItem } from \"~/templates\"\nimport { round } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search result list\n *\n * This function performs a lazy rendering of the search results, depending on\n * the vertical offset of the search result container.\n *\n * @param el - Search result list element\n * @param worker - Search worker\n * @param options - Options\n *\n * @returns Search result list component observable\n */\nexport function mountSearchResult(\n el: HTMLElement, { rx$ }: SearchWorker, { query$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n const boundary$ = watchElementBoundary(el.parentElement!)\n .pipe(\n filter(Boolean)\n )\n\n /* Retrieve nested components */\n const meta = getElement(\":scope > :first-child\", el)\n const list = getElement(\":scope > :last-child\", el)\n\n /* Wait until search is ready */\n const ready$ = rx$\n .pipe(\n filter(isSearchReadyMessage),\n take(1)\n )\n\n /* Update search result metadata */\n push$\n .pipe(\n withLatestFrom(query$),\n skipUntil(ready$)\n )\n .subscribe(([{ items }, { value }]) => {\n if (value) {\n switch (items.length) {\n\n /* No results */\n case 0:\n meta.textContent = translation(\"search.result.none\")\n break\n\n /* One result */\n case 1:\n meta.textContent = translation(\"search.result.one\")\n break\n\n /* Multiple result */\n default:\n meta.textContent = translation(\n \"search.result.other\",\n round(items.length)\n )\n }\n } else {\n meta.textContent = translation(\"search.result.placeholder\")\n }\n })\n\n /* Update search result list */\n push$\n .pipe(\n tap(() => list.innerHTML = \"\"),\n switchMap(({ items }) => merge(\n of(...items.slice(0, 10)),\n of(...items.slice(10))\n .pipe(\n bufferCount(4),\n zipWith(boundary$),\n switchMap(([chunk]) => chunk)\n )\n ))\n )\n .subscribe(result => list.appendChild(\n renderSearchResultItem(result)\n ))\n\n /* Filter search result message */\n const result$ = rx$\n .pipe(\n filter(isSearchResultMessage),\n map(({ data }) => data)\n )\n\n /* Create and return component */\n return result$\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n finalize,\n fromEvent,\n map,\n tap\n} from \"rxjs\"\n\nimport { getLocation } from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search sharing\n */\nexport interface SearchShare {\n url: URL /* Deep link for sharing */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n query$: Observable /* Search query observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search sharing\n *\n * @param _el - Search sharing element\n * @param options - Options\n *\n * @returns Search sharing observable\n */\nexport function watchSearchShare(\n _el: HTMLElement, { query$ }: WatchOptions\n): Observable {\n return query$\n .pipe(\n map(({ value }) => {\n const url = getLocation()\n url.hash = \"\"\n url.searchParams.delete(\"h\")\n url.searchParams.set(\"q\", value)\n return { url }\n })\n )\n}\n\n/**\n * Mount search sharing\n *\n * @param el - Search sharing element\n * @param options - Options\n *\n * @returns Search sharing component observable\n */\nexport function mountSearchShare(\n el: HTMLAnchorElement, options: MountOptions\n): Observable> {\n const push$ = new Subject()\n push$.subscribe(({ url }) => {\n el.setAttribute(\"data-clipboard-text\", el.href)\n el.href = `${url}`\n })\n\n /* Prevent following of link */\n fromEvent(el, \"click\")\n .subscribe(ev => ev.preventDefault())\n\n /* Create and return component */\n return watchSearchShare(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n asyncScheduler,\n combineLatestWith,\n distinctUntilChanged,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n observeOn,\n tap\n} from \"rxjs\"\n\nimport { Keyboard } from \"~/browser\"\nimport {\n SearchResult,\n SearchWorker,\n isSearchResultMessage\n} from \"~/integrations\"\n\nimport { Component, getComponentElement } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search suggestions\n */\nexport interface SearchSuggest {}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n keyboard$: Observable /* Keyboard observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search suggestions\n *\n * This function will perform a lazy rendering of the search results, depending\n * on the vertical offset of the search result container.\n *\n * @param el - Search result list element\n * @param worker - Search worker\n * @param options - Options\n *\n * @returns Search result list component observable\n */\nexport function mountSearchSuggest(\n el: HTMLElement, { rx$ }: SearchWorker, { keyboard$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n\n /* Retrieve query component and track all changes */\n const query = getComponentElement(\"search-query\")\n const query$ = merge(\n fromEvent(query, \"keydown\"),\n fromEvent(query, \"focus\")\n )\n .pipe(\n observeOn(asyncScheduler),\n map(() => query.value),\n distinctUntilChanged(),\n )\n\n /* Update search suggestions */\n push$\n .pipe(\n combineLatestWith(query$),\n map(([{ suggestions }, value]) => {\n const words = value.split(/([\\s-]+)/)\n if (suggestions?.length && words[words.length - 1]) {\n const last = suggestions[suggestions.length - 1]\n if (last.startsWith(words[words.length - 1]))\n words[words.length - 1] = last\n } else {\n words.length = 0\n }\n return words\n })\n )\n .subscribe(words => el.innerHTML = words\n .join(\"\")\n .replace(/\\s/g, \" \")\n )\n\n /* Set up search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Right arrow: accept current suggestion */\n case \"ArrowRight\":\n if (\n el.innerText.length &&\n query.selectionStart === query.value.length\n )\n query.value = el.innerText\n break\n }\n })\n\n /* Filter search result message */\n const result$ = rx$\n .pipe(\n filter(isSearchResultMessage),\n map(({ data }) => data)\n )\n\n /* Create and return component */\n return result$\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(() => ({ ref: el }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n NEVER,\n Observable,\n ObservableInput,\n filter,\n merge,\n mergeWith,\n sample,\n take\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport {\n Keyboard,\n getActiveElement,\n getElements,\n setToggle\n} from \"~/browser\"\nimport {\n SearchIndex,\n SearchResult,\n isSearchQueryMessage,\n isSearchReadyMessage,\n setupSearchWorker\n} from \"~/integrations\"\n\nimport {\n Component,\n getComponentElement,\n getComponentElements\n} from \"../../_\"\nimport {\n SearchQuery,\n mountSearchQuery\n} from \"../query\"\nimport { mountSearchResult } from \"../result\"\nimport {\n SearchShare,\n mountSearchShare\n} from \"../share\"\nimport {\n SearchSuggest,\n mountSearchSuggest\n} from \"../suggest\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search\n */\nexport type Search =\n | SearchQuery\n | SearchResult\n | SearchShare\n | SearchSuggest\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n index$: ObservableInput /* Search index observable */\n keyboard$: Observable /* Keyboard observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search\n *\n * This function sets up the search functionality, including the underlying\n * web worker and all keyboard bindings.\n *\n * @param el - Search element\n * @param options - Options\n *\n * @returns Search component observable\n */\nexport function mountSearch(\n el: HTMLElement, { index$, keyboard$ }: MountOptions\n): Observable> {\n const config = configuration()\n try {\n const url = __search?.worker || config.search\n const worker = setupSearchWorker(url, index$)\n\n /* Retrieve query and result components */\n const query = getComponentElement(\"search-query\", el)\n const result = getComponentElement(\"search-result\", el)\n\n /* Re-emit query when search is ready */\n const { tx$, rx$ } = worker\n tx$\n .pipe(\n filter(isSearchQueryMessage),\n sample(rx$.pipe(filter(isSearchReadyMessage))),\n take(1)\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Set up search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\")\n )\n .subscribe(key => {\n const active = getActiveElement()\n switch (key.type) {\n\n /* Enter: go to first (best) result */\n case \"Enter\":\n if (active === query) {\n const anchors = new Map()\n for (const anchor of getElements(\n \":first-child [href]\", result\n )) {\n const article = anchor.firstElementChild!\n anchors.set(anchor, parseFloat(\n article.getAttribute(\"data-md-score\")!\n ))\n }\n\n /* Go to result with highest score, if any */\n if (anchors.size) {\n const [[best]] = [...anchors].sort(([, a], [, b]) => b - a)\n best.click()\n }\n\n /* Otherwise omit form submission */\n key.claim()\n }\n break\n\n /* Escape or Tab: close search */\n case \"Escape\":\n case \"Tab\":\n setToggle(\"search\", false)\n query.blur()\n break\n\n /* Vertical arrows: select previous or next search result */\n case \"ArrowUp\":\n case \"ArrowDown\":\n if (typeof active === \"undefined\") {\n query.focus()\n } else {\n const els = [query, ...getElements(\n \":not(details) > [href], summary, details[open] [href]\",\n result\n )]\n const i = Math.max(0, (\n Math.max(0, els.indexOf(active)) + els.length + (\n key.type === \"ArrowUp\" ? -1 : +1\n )\n ) % els.length)\n els[i].focus()\n }\n\n /* Prevent scrolling of page */\n key.claim()\n break\n\n /* All other keys: hand to search query */\n default:\n if (query !== getActiveElement())\n query.focus()\n }\n })\n\n /* Set up global keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\"),\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Open search and select query */\n case \"f\":\n case \"s\":\n case \"/\":\n query.focus()\n query.select()\n\n /* Prevent scrolling of page */\n key.claim()\n break\n }\n })\n\n /* Create and return component */\n const query$ = mountSearchQuery(query, worker)\n const result$ = mountSearchResult(result, worker, { query$ })\n return merge(query$, result$)\n .pipe(\n mergeWith(\n\n /* Search sharing */\n ...getComponentElements(\"search-share\", el)\n .map(child => mountSearchShare(child, { query$ })),\n\n /* Search suggestions */\n ...getComponentElements(\"search-suggest\", el)\n .map(child => mountSearchSuggest(child, worker, { keyboard$ }))\n )\n )\n\n /* Gracefully handle broken search */\n } catch (err) {\n el.hidden = true\n return NEVER\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n ObservableInput,\n combineLatest,\n filter,\n map,\n startWith\n} from \"rxjs\"\n\nimport { getLocation } from \"~/browser\"\nimport {\n SearchIndex,\n setupSearchHighlighter\n} from \"~/integrations\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlighting\n */\nexport interface SearchHighlight {\n nodes: Map /* Map of replacements */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n index$: ObservableInput /* Search index observable */\n location$: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search highlighting\n *\n * @param el - Content element\n * @param options - Options\n *\n * @returns Search highlighting component observable\n */\nexport function mountSearchHiglight(\n el: HTMLElement, { index$, location$ }: MountOptions\n): Observable> {\n return combineLatest([\n index$,\n location$\n .pipe(\n startWith(getLocation()),\n filter(url => !!url.searchParams.get(\"h\"))\n )\n ])\n .pipe(\n map(([index, url]) => setupSearchHighlighter(index.config, true)(\n url.searchParams.get(\"h\")!\n )),\n map(fn => {\n const nodes = new Map()\n\n /* Traverse text nodes and collect matches */\n const it = document.createNodeIterator(el, NodeFilter.SHOW_TEXT)\n for (let node = it.nextNode(); node; node = it.nextNode()) {\n if (node.parentElement?.offsetHeight) {\n const original = node.textContent!\n const replaced = fn(original)\n if (replaced.length > original.length)\n nodes.set(node as ChildNode, replaced)\n }\n }\n\n /* Replace original nodes with matches */\n for (const [node, text] of nodes) {\n const { childNodes } = h(\"span\", null, text)\n node.replaceWith(...Array.from(childNodes))\n }\n\n /* Return component */\n return { ref: el, nodes }\n })\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n auditTime,\n combineLatest,\n defer,\n distinctUntilChanged,\n finalize,\n map,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n Viewport,\n getElement,\n getElementOffset\n} from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\nimport { Main } from \"../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sidebar\n */\nexport interface Sidebar {\n height: number /* Sidebar height */\n locked: boolean /* Sidebar is locked */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n main$: Observable
    /* Main area observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch sidebar\n *\n * This function returns an observable that computes the visual parameters of\n * the sidebar which depends on the vertical viewport offset, as well as the\n * height of the main area. When the page is scrolled beyond the header, the\n * sidebar is locked and fills the remaining space.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @returns Sidebar observable\n */\nexport function watchSidebar(\n el: HTMLElement, { viewport$, main$ }: WatchOptions\n): Observable {\n const parent = el.parentElement!\n const adjust =\n parent.offsetTop -\n parent.parentElement!.offsetTop\n\n /* Compute the sidebar's available height and if it should be locked */\n return combineLatest([main$, viewport$])\n .pipe(\n map(([{ offset, height }, { offset: { y } }]) => {\n height = height\n + Math.min(adjust, Math.max(0, y - offset))\n - adjust\n return {\n height,\n locked: y >= offset + adjust\n }\n }),\n distinctUntilChanged((a, b) => (\n a.height === b.height &&\n a.locked === b.locked\n ))\n )\n}\n\n/**\n * Mount sidebar\n *\n * This function doesn't set the height of the actual sidebar, but of its first\n * child \u2013 the `.md-sidebar__scrollwrap` element in order to mitigiate jittery\n * sidebars when the footer is scrolled into view. At some point we switched\n * from `absolute` / `fixed` positioning to `sticky` positioning, significantly\n * reducing jitter in some browsers (respectively Firefox and Safari) when\n * scrolling from the top. However, top-aligned sticky positioning means that\n * the sidebar snaps to the bottom when the end of the container is reached.\n * This is what leads to the mentioned jitter, as the sidebar's height may be\n * updated too slowly.\n *\n * This behaviour can be mitigiated by setting the height of the sidebar to `0`\n * while preserving the padding, and the height on its first element.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @returns Sidebar component observable\n */\nexport function mountSidebar(\n el: HTMLElement, { header$, ...options }: MountOptions\n): Observable> {\n const inner = getElement(\".md-sidebar__scrollwrap\", el)\n const { y } = getElementOffset(inner)\n return defer(() => {\n const push$ = new Subject()\n push$\n .pipe(\n auditTime(0, animationFrameScheduler),\n withLatestFrom(header$)\n )\n .subscribe({\n\n /* Handle emission */\n next([{ height }, { height: offset }]) {\n inner.style.height = `${height - 2 * y}px`\n el.style.top = `${offset}px`\n },\n\n /* Handle complete */\n complete() {\n inner.style.height = \"\"\n el.style.top = \"\"\n }\n })\n\n /* Create and return component */\n return watchSidebar(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Repo, User } from \"github-types\"\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map,\n zip\n} from \"rxjs\"\n\nimport { requestJSON } from \"~/browser\"\n\nimport { SourceFacts } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * GitHub release (partial)\n */\ninterface Release {\n tag_name: string /* Tag name */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitHub repository facts\n *\n * @param user - GitHub user or organization\n * @param repo - GitHub repository\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFactsFromGitHub(\n user: string, repo?: string\n): Observable {\n if (typeof repo !== \"undefined\") {\n const url = `https://api.github.com/repos/${user}/${repo}`\n return zip(\n\n /* Fetch version */\n requestJSON(`${url}/releases/latest`)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(release => ({\n version: release.tag_name\n })),\n defaultIfEmpty({})\n ),\n\n /* Fetch stars and forks */\n requestJSON(url)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(info => ({\n stars: info.stargazers_count,\n forks: info.forks_count\n })),\n defaultIfEmpty({})\n )\n )\n .pipe(\n map(([release, info]) => ({ ...release, ...info }))\n )\n\n /* User or organization */\n } else {\n const url = `https://api.github.com/users/${user}`\n return requestJSON(url)\n .pipe(\n map(info => ({\n repositories: info.public_repos\n })),\n defaultIfEmpty({})\n )\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ProjectSchema } from \"gitlab\"\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map\n} from \"rxjs\"\n\nimport { requestJSON } from \"~/browser\"\n\nimport { SourceFacts } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitLab repository facts\n *\n * @param base - GitLab base\n * @param project - GitLab project\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFactsFromGitLab(\n base: string, project: string\n): Observable {\n const url = `https://${base}/api/v4/projects/${encodeURIComponent(project)}`\n return requestJSON(url)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(({ star_count, forks_count }) => ({\n stars: star_count,\n forks: forks_count\n })),\n defaultIfEmpty({})\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { EMPTY, Observable } from \"rxjs\"\n\nimport { fetchSourceFactsFromGitHub } from \"../github\"\nimport { fetchSourceFactsFromGitLab } from \"../gitlab\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository facts for repositories\n */\nexport interface RepositoryFacts {\n stars?: number /* Number of stars */\n forks?: number /* Number of forks */\n version?: string /* Latest version */\n}\n\n/**\n * Repository facts for organizations\n */\nexport interface OrganizationFacts {\n repositories?: number /* Number of repositories */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Repository facts\n */\nexport type SourceFacts =\n | RepositoryFacts\n | OrganizationFacts\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch repository facts\n *\n * @param url - Repository URL\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFacts(\n url: string\n): Observable {\n const [type] = url.match(/(git(?:hub|lab))/i) || []\n switch (type.toLowerCase()) {\n\n /* GitHub repository */\n case \"github\":\n const [, user, repo] = url.match(/^.+github\\.com\\/([^/]+)\\/?([^/]+)?/i)!\n return fetchSourceFactsFromGitHub(user, repo)\n\n /* GitLab repository */\n case \"gitlab\":\n const [, base, slug] = url.match(/^.+?([^/]*gitlab[^/]+)\\/(.+?)\\/?$/i)!\n return fetchSourceFactsFromGitLab(base, slug)\n\n /* Everything else */\n default:\n return EMPTY\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n catchError,\n defer,\n filter,\n finalize,\n map,\n of,\n shareReplay,\n tap\n} from \"rxjs\"\n\nimport { getElement } from \"~/browser\"\nimport { renderSourceFacts } from \"~/templates\"\n\nimport { Component } from \"../../_\"\nimport {\n SourceFacts,\n fetchSourceFacts\n} from \"../facts\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository information\n */\nexport interface Source {\n facts: SourceFacts /* Repository facts */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository information observable\n */\nlet fetch$: Observable\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch repository information\n *\n * This function tries to read the repository facts from session storage, and\n * if unsuccessful, fetches them from the underlying provider.\n *\n * @param el - Repository information element\n *\n * @returns Repository information observable\n */\nexport function watchSource(\n el: HTMLAnchorElement\n): Observable {\n return fetch$ ||= defer(() => {\n const cached = __md_get(\"__source\", sessionStorage)\n if (cached)\n return of(cached)\n else\n return fetchSourceFacts(el.href)\n .pipe(\n tap(facts => __md_set(\"__source\", facts, sessionStorage))\n )\n })\n .pipe(\n catchError(() => EMPTY),\n filter(facts => Object.keys(facts).length > 0),\n map(facts => ({ facts })),\n shareReplay(1)\n )\n}\n\n/**\n * Mount repository information\n *\n * @param el - Repository information element\n *\n * @returns Repository information component observable\n */\nexport function mountSource(\n el: HTMLAnchorElement\n): Observable> {\n const inner = getElement(\":scope > :last-child\", el)\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ facts }) => {\n inner.appendChild(renderSourceFacts(facts))\n inner.classList.add(\"md-source__repository--active\")\n })\n\n /* Create and return component */\n return watchSource(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n distinctUntilKeyChanged,\n finalize,\n map,\n of,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n watchElementSize,\n watchViewportAt\n} from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Navigation tabs\n */\nexport interface Tabs {\n hidden: boolean /* Navigation tabs are hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch navigation tabs\n *\n * @param el - Navigation tabs element\n * @param options - Options\n *\n * @returns Navigation tabs observable\n */\nexport function watchTabs(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n return watchElementSize(document.body)\n .pipe(\n switchMap(() => watchViewportAt(el, { header$, viewport$ })),\n map(({ offset: { y } }) => {\n return {\n hidden: y >= 10\n }\n }),\n distinctUntilKeyChanged(\"hidden\")\n )\n}\n\n/**\n * Mount navigation tabs\n *\n * This function hides the navigation tabs when scrolling past the threshold\n * and makes them reappear in a nice CSS animation when scrolling back up.\n *\n * @param el - Navigation tabs element\n * @param options - Options\n *\n * @returns Navigation tabs component observable\n */\nexport function mountTabs(\n el: HTMLElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe({\n\n /* Handle emission */\n next({ hidden }) {\n el.hidden = hidden\n },\n\n /* Handle complete */\n complete() {\n el.hidden = false\n }\n })\n\n /* Create and return component */\n return (\n feature(\"navigation.tabs.sticky\")\n ? of({ hidden: false })\n : watchTabs(el, options)\n )\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatestWith,\n debounceTime,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n finalize,\n map,\n of,\n repeat,\n scan,\n share,\n skip,\n startWith,\n switchMap,\n takeLast,\n takeUntil,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n getElement,\n getElements,\n getLocation,\n getOptionalElement,\n watchElementSize\n} from \"~/browser\"\n\nimport {\n Component,\n getComponentElement\n} from \"../_\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Table of contents\n */\nexport interface TableOfContents {\n prev: HTMLAnchorElement[][] /* Anchors (previous) */\n next: HTMLAnchorElement[][] /* Anchors (next) */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n target$: Observable /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch table of contents\n *\n * This is effectively a scroll spy implementation which will account for the\n * fixed header and automatically re-calculate anchor offsets when the viewport\n * is resized. The returned observable will only emit if the table of contents\n * needs to be repainted.\n *\n * This implementation tracks an anchor element's entire path starting from its\n * level up to the top-most anchor element, e.g. `[h3, h2, h1]`. Although the\n * Material theme currently doesn't make use of this information, it enables\n * the styling of the entire hierarchy through customization.\n *\n * Note that the current anchor is the last item of the `prev` anchor list.\n *\n * @param el - Table of contents element\n * @param options - Options\n *\n * @returns Table of contents observable\n */\nexport function watchTableOfContents(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n const table = new Map()\n\n /* Compute anchor-to-target mapping */\n const anchors = getElements(\"[href^=\\\\#]\", el)\n for (const anchor of anchors) {\n const id = decodeURIComponent(anchor.hash.substring(1))\n const target = getOptionalElement(`[id=\"${id}\"]`)\n if (typeof target !== \"undefined\")\n table.set(anchor, target)\n }\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n distinctUntilKeyChanged(\"height\"),\n map(({ height }) => {\n const main = getComponentElement(\"main\")\n const grid = getElement(\":scope > :first-child\", main)\n return height + 0.8 * (\n grid.offsetTop -\n main.offsetTop\n )\n }),\n share()\n )\n\n /* Compute partition of previous and next anchors */\n const partition$ = watchElementSize(document.body)\n .pipe(\n distinctUntilKeyChanged(\"height\"),\n\n /* Build index to map anchor paths to vertical offsets */\n switchMap(body => defer(() => {\n let path: HTMLAnchorElement[] = []\n return of([...table].reduce((index, [anchor, target]) => {\n while (path.length) {\n const last = table.get(path[path.length - 1])!\n if (last.tagName >= target.tagName) {\n path.pop()\n } else {\n break\n }\n }\n\n /* If the current anchor is hidden, continue with its parent */\n let offset = target.offsetTop\n while (!offset && target.parentElement) {\n target = target.parentElement\n offset = target.offsetTop\n }\n\n /* Map reversed anchor path to vertical offset */\n return index.set(\n [...path = [...path, anchor]].reverse(),\n offset\n )\n }, new Map()))\n })\n .pipe(\n\n /* Sort index by vertical offset (see https://bit.ly/30z6QSO) */\n map(index => new Map([...index].sort(([, a], [, b]) => a - b))),\n combineLatestWith(adjust$),\n\n /* Re-compute partition when viewport offset changes */\n switchMap(([index, adjust]) => viewport$\n .pipe(\n scan(([prev, next], { offset: { y }, size }) => {\n const last = y + size.height >= Math.floor(body.height)\n\n /* Look forward */\n while (next.length) {\n const [, offset] = next[0]\n if (offset - adjust < y || last) {\n prev = [...prev, next.shift()!]\n } else {\n break\n }\n }\n\n /* Look backward */\n while (prev.length) {\n const [, offset] = prev[prev.length - 1]\n if (offset - adjust >= y && !last) {\n next = [prev.pop()!, ...next]\n } else {\n break\n }\n }\n\n /* Return partition */\n return [prev, next]\n }, [[], [...index]]),\n distinctUntilChanged((a, b) => (\n a[0] === b[0] &&\n a[1] === b[1]\n ))\n )\n )\n )\n )\n )\n\n /* Compute and return anchor list migrations */\n return partition$\n .pipe(\n map(([prev, next]) => ({\n prev: prev.map(([path]) => path),\n next: next.map(([path]) => path)\n })),\n\n /* Extract anchor list migrations */\n startWith({ prev: [], next: [] }),\n bufferCount(2, 1),\n map(([a, b]) => {\n\n /* Moving down */\n if (a.prev.length < b.prev.length) {\n return {\n prev: b.prev.slice(Math.max(0, a.prev.length - 1), b.prev.length),\n next: []\n }\n\n /* Moving up */\n } else {\n return {\n prev: b.prev.slice(-1),\n next: b.next.slice(0, b.next.length - a.next.length)\n }\n }\n })\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount table of contents\n *\n * @param el - Table of contents element\n * @param options - Options\n *\n * @returns Table of contents component observable\n */\nexport function mountTableOfContents(\n el: HTMLElement, { viewport$, header$, target$ }: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n push$.subscribe(({ prev, next }) => {\n\n /* Look forward */\n for (const [anchor] of next) {\n anchor.classList.remove(\"md-nav__link--passed\")\n anchor.classList.remove(\"md-nav__link--active\")\n }\n\n /* Look backward */\n for (const [index, [anchor]] of prev.entries()) {\n anchor.classList.add(\"md-nav__link--passed\")\n anchor.classList.toggle(\n \"md-nav__link--active\",\n index === prev.length - 1\n )\n }\n })\n\n /* Set up anchor tracking, if enabled */\n if (feature(\"navigation.tracking\"))\n viewport$\n .pipe(\n takeUntil(done$),\n distinctUntilKeyChanged(\"offset\"),\n debounceTime(250),\n skip(1),\n takeUntil(target$.pipe(skip(1))),\n repeat({ delay: 250 }),\n withLatestFrom(push$)\n )\n .subscribe(([, { prev }]) => {\n const url = getLocation()\n\n /* Set hash fragment to active anchor */\n const anchor = prev[prev.length - 1]\n if (anchor && anchor.length) {\n const [active] = anchor\n const { hash } = new URL(active.href)\n if (url.hash !== hash) {\n url.hash = hash\n history.replaceState({}, \"\", `${url}`)\n }\n\n /* Reset anchor when at the top */\n } else {\n url.hash = \"\"\n history.replaceState({}, \"\", `${url}`)\n }\n })\n\n /* Create and return component */\n return watchTableOfContents(el, { viewport$, header$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatest,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n endWith,\n finalize,\n map,\n repeat,\n skip,\n takeLast,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { Viewport } from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\nimport { Main } from \"../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Back-to-top button\n */\nexport interface BackToTop {\n hidden: boolean /* Back-to-top button is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n main$: Observable
    /* Main area observable */\n target$: Observable /* Location target observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n target$: Observable /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch back-to-top\n *\n * @param _el - Back-to-top element\n * @param options - Options\n *\n * @returns Back-to-top observable\n */\nexport function watchBackToTop(\n _el: HTMLElement, { viewport$, main$, target$ }: WatchOptions\n): Observable {\n\n /* Compute direction */\n const direction$ = viewport$\n .pipe(\n map(({ offset: { y } }) => y),\n bufferCount(2, 1),\n map(([a, b]) => a > b && b > 0),\n distinctUntilChanged()\n )\n\n /* Compute whether main area is active */\n const active$ = main$\n .pipe(\n map(({ active }) => active)\n )\n\n /* Compute threshold for hiding */\n return combineLatest([active$, direction$])\n .pipe(\n map(([active, direction]) => !(active && direction)),\n distinctUntilChanged(),\n takeUntil(target$.pipe(skip(1))),\n endWith(true),\n repeat({ delay: 250 }),\n map(hidden => ({ hidden }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount back-to-top\n *\n * @param el - Back-to-top element\n * @param options - Options\n *\n * @returns Back-to-top component observable\n */\nexport function mountBackToTop(\n el: HTMLElement, { viewport$, header$, main$, target$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n push$.subscribe({\n\n /* Handle emission */\n next({ hidden }) {\n el.hidden = hidden\n if (hidden) {\n el.setAttribute(\"tabindex\", \"-1\")\n el.blur()\n } else {\n el.removeAttribute(\"tabindex\")\n }\n },\n\n /* Handle complete */\n complete() {\n el.style.top = \"\"\n el.hidden = true\n el.removeAttribute(\"tabindex\")\n }\n })\n\n /* Watch header height */\n header$\n .pipe(\n takeUntil(done$),\n distinctUntilKeyChanged(\"height\")\n )\n .subscribe(({ height }) => {\n el.style.top = `${height + 16}px`\n })\n\n /* Create and return component */\n return watchBackToTop(el, { viewport$, main$, target$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n mergeMap,\n switchMap,\n takeWhile,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n tablet$: Observable /* Media tablet observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch indeterminate checkboxes\n *\n * This function replaces the indeterminate \"pseudo state\" with the actual\n * indeterminate state, which is used to keep navigation always expanded.\n *\n * @param options - Options\n */\nexport function patchIndeterminate(\n { document$, tablet$ }: PatchOptions\n): void {\n document$\n .pipe(\n switchMap(() => getElements(\n // @todo `data-md-state` is deprecated and removed in v9\n \".md-toggle--indeterminate, [data-md-state=indeterminate]\"\n )),\n tap(el => {\n el.indeterminate = true\n el.checked = false\n }),\n mergeMap(el => fromEvent(el, \"change\")\n .pipe(\n takeWhile(() => el.classList.contains(\"md-toggle--indeterminate\")),\n map(() => el)\n )\n ),\n withLatestFrom(tablet$)\n )\n .subscribe(([el, tablet]) => {\n el.classList.remove(\"md-toggle--indeterminate\")\n if (tablet)\n el.checked = false\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n mergeMap,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether the given device is an Apple device\n *\n * @returns Test result\n */\nfunction isAppleDevice(): boolean {\n return /(iPad|iPhone|iPod)/.test(navigator.userAgent)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all elements with `data-md-scrollfix` attributes\n *\n * This is a year-old patch which ensures that overflow scrolling works at the\n * top and bottom of containers on iOS by ensuring a `1px` scroll offset upon\n * the start of a touch event.\n *\n * @see https://bit.ly/2SCtAOO - Original source\n *\n * @param options - Options\n */\nexport function patchScrollfix(\n { document$ }: PatchOptions\n): void {\n document$\n .pipe(\n switchMap(() => getElements(\"[data-md-scrollfix]\")),\n tap(el => el.removeAttribute(\"data-md-scrollfix\")),\n filter(isAppleDevice),\n mergeMap(el => fromEvent(el, \"touchstart\")\n .pipe(\n map(() => el)\n )\n )\n )\n .subscribe(el => {\n const top = el.scrollTop\n\n /* We're at the top of the container */\n if (top === 0) {\n el.scrollTop = 1\n\n /* We're at the bottom of the container */\n } else if (top + el.offsetHeight === el.scrollHeight) {\n el.scrollTop = top - 1\n }\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n delay,\n map,\n of,\n switchMap,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n Viewport,\n watchToggle\n} from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n viewport$: Observable /* Viewport observable */\n tablet$: Observable /* Media tablet observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch the document body to lock when search is open\n *\n * For mobile and tablet viewports, the search is rendered full screen, which\n * leads to scroll leaking when at the top or bottom of the search result. This\n * function locks the body when the search is in full screen mode, and restores\n * the scroll position when leaving.\n *\n * @param options - Options\n */\nexport function patchScrolllock(\n { viewport$, tablet$ }: PatchOptions\n): void {\n combineLatest([watchToggle(\"search\"), tablet$])\n .pipe(\n map(([active, tablet]) => active && !tablet),\n switchMap(active => of(active)\n .pipe(\n delay(active ? 400 : 100)\n )\n ),\n withLatestFrom(viewport$)\n )\n .subscribe(([active, { offset: { y }}]) => {\n if (active) {\n document.body.setAttribute(\"data-md-scrolllock\", \"\")\n document.body.style.top = `-${y}px`\n } else {\n const value = -1 * parseInt(document.body.style.top, 10)\n document.body.removeAttribute(\"data-md-scrolllock\")\n document.body.style.top = \"\"\n if (value)\n window.scrollTo(0, value)\n }\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Polyfills\n * ------------------------------------------------------------------------- */\n\n/* Polyfill `Object.entries` */\nif (!Object.entries)\n Object.entries = function (obj: object) {\n const data: [string, string][] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push([key, obj[key]])\n\n /* Return entries */\n return data\n }\n\n/* Polyfill `Object.values` */\nif (!Object.values)\n Object.values = function (obj: object) {\n const data: string[] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push(obj[key])\n\n /* Return values */\n return data\n }\n\n/* ------------------------------------------------------------------------- */\n\n/* Polyfills for `Element` */\nif (typeof Element !== \"undefined\") {\n\n /* Polyfill `Element.scrollTo` */\n if (!Element.prototype.scrollTo)\n Element.prototype.scrollTo = function (\n x?: ScrollToOptions | number, y?: number\n ): void {\n if (typeof x === \"object\") {\n this.scrollLeft = x.left!\n this.scrollTop = x.top!\n } else {\n this.scrollLeft = x!\n this.scrollTop = y!\n }\n }\n\n /* Polyfill `Element.replaceWith` */\n if (!Element.prototype.replaceWith)\n Element.prototype.replaceWith = function (\n ...nodes: Array\n ): void {\n const parent = this.parentNode\n if (parent) {\n if (nodes.length === 0)\n parent.removeChild(this)\n\n /* Replace children and create text nodes */\n for (let i = nodes.length - 1; i >= 0; i--) {\n let node = nodes[i]\n if (typeof node !== \"object\")\n node = document.createTextNode(node)\n else if (node.parentNode)\n node.parentNode.removeChild(node)\n\n /* Replace child or insert before previous sibling */\n if (!i)\n parent.replaceChild(node, this)\n else\n parent.insertBefore(this.previousSibling!, node)\n }\n }\n }\n}\n"], + "mappings": "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", + "names": ["require_focus_visible", "__commonJSMin", "exports", "module", "global", "factory", "applyFocusVisiblePolyfill", "scope", "hadKeyboardEvent", "hadFocusVisibleRecently", "hadFocusVisibleRecentlyTimeout", "inputTypesAllowlist", "isValidFocusTarget", "el", "focusTriggersKeyboardModality", "type", "tagName", "addFocusVisibleClass", "removeFocusVisibleClass", "onKeyDown", "e", "onPointerDown", "onFocus", "onBlur", "onVisibilityChange", "addInitialPointerMoveListeners", "onInitialPointerMove", "removeInitialPointerMoveListeners", "event", "error", "require_url_polyfill", "__commonJSMin", "exports", "global", "checkIfIteratorIsSupported", "error", "iteratorSupported", "createIterator", "items", "iterator", "value", "serializeParam", "deserializeParam", "polyfillURLSearchParams", "URLSearchParams", "searchString", "typeofSearchString", "_this", "name", "i", "entry", "key", "proto", "callback", "thisArg", "entries", "searchArray", "checkIfURLSearchParamsSupported", "e", "a", "b", "keys", "attributes", "attribute", "checkIfURLIsSupported", "u", "polyfillURL", "_URL", "URL", "url", "base", "doc", "baseElement", "err", "anchorElement", "inputElement", "searchParams", "enableSearchUpdate", "enableSearchParamsUpdate", "methodName", "method", "search", "linkURLWithAnchorAttribute", "attributeName", "expectedPort", "addPortToOrigin", "blob", "getOrigin", "require_tslib", "__commonJSMin", "exports", "module", "__extends", "__assign", "__rest", "__decorate", "__param", "__metadata", "__awaiter", "__generator", "__exportStar", "__values", "__read", "__spread", "__spreadArrays", "__spreadArray", "__await", "__asyncGenerator", "__asyncDelegator", "__asyncValues", "__makeTemplateObject", "__importStar", "__importDefault", "__classPrivateFieldGet", "__classPrivateFieldSet", "__createBinding", "factory", "root", "createExporter", "previous", "id", "v", "exporter", "extendStatics", "d", "b", "p", "__", "t", "s", "n", "e", "i", "decorators", "target", "key", "desc", "c", "r", "paramIndex", "decorator", "metadataKey", "metadataValue", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "reject", "fulfilled", "step", "rejected", "result", "body", "_", "f", "y", "g", "verb", "op", "m", "o", "k", "k2", "ar", "error", "il", "a", "j", "jl", "to", "from", "pack", "l", "q", "resume", "settle", "fulfill", "cooked", "raw", "__setModuleDefault", "mod", "receiver", "state", "kind", "require_clipboard", "__commonJSMin", "exports", "module", "root", "factory", "__webpack_modules__", "__unused_webpack_module", "__webpack_exports__", "__webpack_require__", "clipboard", "tiny_emitter", "tiny_emitter_default", "listen", "listen_default", "src_select", "select_default", "command", "type", "err", "ClipboardActionCut", "target", "selectedText", "actions_cut", "createFakeElement", "value", "isRTL", "fakeElement", "yPosition", "fakeCopyAction", "options", "ClipboardActionCopy", "actions_copy", "_typeof", "obj", "ClipboardActionDefault", "_options$action", "action", "container", "text", "actions_default", "clipboard_typeof", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "i", "descriptor", "_createClass", "protoProps", "staticProps", "_inherits", "subClass", "superClass", "_setPrototypeOf", "o", "p", "_createSuper", "Derived", "hasNativeReflectConstruct", "_isNativeReflectConstruct", "Super", "_getPrototypeOf", "result", "NewTarget", "_possibleConstructorReturn", "self", "call", "_assertThisInitialized", "e", "getAttributeValue", "suffix", "element", "attribute", "Clipboard", "_Emitter", "_super", "trigger", "_this", "_this2", "selector", "actions", "support", "DOCUMENT_NODE_TYPE", "proto", "closest", "__unused_webpack_exports", "_delegate", "callback", "useCapture", "listenerFn", "listener", "delegate", "elements", "is", "listenNode", "listenNodeList", "listenSelector", "node", "nodeList", "select", "isReadOnly", "selection", "range", "E", "name", "ctx", "data", "evtArr", "len", "evts", "liveEvents", "__webpack_module_cache__", "moduleId", "getter", "definition", "key", "prop", "require_escape_html", "__commonJSMin", "exports", "module", "matchHtmlRegExp", "escapeHtml", "string", "str", "match", "escape", "html", "index", "lastIndex", "r", "a", "e", "import_focus_visible", "n", "t", "s", "r", "o", "u", "i", "a", "e", "c", "import_url_polyfill", "import_tslib", "__extends", "__assign", "__rest", "__decorate", "__param", "__metadata", "__awaiter", "__generator", "__exportStar", "__createBinding", "__values", "__read", "__spread", "__spreadArrays", "__spreadArray", "__await", "__asyncGenerator", "__asyncDelegator", "__asyncValues", "__makeTemplateObject", "__importStar", "__importDefault", "__classPrivateFieldGet", "__classPrivateFieldSet", "tslib", "isFunction", "value", "createErrorClass", "createImpl", "_super", "instance", "ctorFunc", "UnsubscriptionError", "createErrorClass", "_super", "errors", "err", "i", "arrRemove", "arr", "item", "index", "Subscription", "initialTeardown", "errors", "_parentage", "_parentage_1", "__values", "_parentage_1_1", "parent_1", "initialFinalizer", "isFunction", "e", "UnsubscriptionError", "_finalizers", "_finalizers_1", "_finalizers_1_1", "finalizer", "execFinalizer", "err", "__spreadArray", "__read", "teardown", "_a", "parent", "arrRemove", "empty", "EMPTY_SUBSCRIPTION", "Subscription", "isSubscription", "value", "isFunction", "execFinalizer", "finalizer", "config", "timeoutProvider", "handler", "timeout", "args", "_i", "delegate", "__spreadArray", "__read", "handle", "reportUnhandledError", "err", "timeoutProvider", "onUnhandledError", "config", "noop", "COMPLETE_NOTIFICATION", "createNotification", "errorNotification", "error", "nextNotification", "value", "kind", "context", "errorContext", "cb", "config", "isRoot", "_a", "errorThrown", "error", "captureError", "err", "Subscriber", "_super", "__extends", "destination", "_this", "isSubscription", "EMPTY_OBSERVER", "next", "error", "complete", "SafeSubscriber", "value", "handleStoppedNotification", "nextNotification", "err", "errorNotification", "COMPLETE_NOTIFICATION", "Subscription", "_bind", "bind", "fn", "thisArg", "ConsumerObserver", "partialObserver", "value", "error", "handleUnhandledError", "err", "SafeSubscriber", "_super", "__extends", "observerOrNext", "complete", "_this", "isFunction", "context_1", "config", "Subscriber", "handleUnhandledError", "error", "config", "captureError", "reportUnhandledError", "defaultErrorHandler", "err", "handleStoppedNotification", "notification", "subscriber", "onStoppedNotification", "timeoutProvider", "EMPTY_OBSERVER", "noop", "observable", "identity", "x", "pipe", "fns", "_i", "pipeFromArray", "identity", "input", "prev", "fn", "Observable", "subscribe", "operator", "observable", "observerOrNext", "error", "complete", "_this", "subscriber", "isSubscriber", "SafeSubscriber", "errorContext", "_a", "source", "sink", "err", "next", "promiseCtor", "getPromiseCtor", "resolve", "reject", "value", "operations", "_i", "pipeFromArray", "x", "getPromiseCtor", "promiseCtor", "_a", "config", "isObserver", "value", "isFunction", "isSubscriber", "Subscriber", "isSubscription", "hasLift", "source", "isFunction", "operate", "init", "liftedSource", "err", "createOperatorSubscriber", "destination", "onNext", "onComplete", "onError", "onFinalize", "OperatorSubscriber", "_super", "__extends", "shouldUnsubscribe", "_this", "value", "err", "closed_1", "_a", "Subscriber", "animationFrameProvider", "callback", "request", "cancel", "delegate", "handle", "timestamp", "Subscription", "args", "_i", "__spreadArray", "__read", "ObjectUnsubscribedError", "createErrorClass", "_super", "Subject", "_super", "__extends", "_this", "operator", "subject", "AnonymousSubject", "ObjectUnsubscribedError", "value", "errorContext", "_b", "__values", "_c", "observer", "err", "observers", "_a", "subscriber", "hasError", "isStopped", "EMPTY_SUBSCRIPTION", "Subscription", "arrRemove", "thrownError", "observable", "Observable", "destination", "source", "AnonymousSubject", "_super", "__extends", "destination", "source", "_this", "value", "_b", "_a", "err", "subscriber", "EMPTY_SUBSCRIPTION", "Subject", "dateTimestampProvider", "ReplaySubject", "_super", "__extends", "_bufferSize", "_windowTime", "_timestampProvider", "dateTimestampProvider", "_this", "value", "_a", "isStopped", "_buffer", "_infiniteTimeWindow", "subscriber", "subscription", "copy", "i", "adjustedBufferSize", "now", "last", "Subject", "Action", "_super", "__extends", "scheduler", "work", "state", "delay", "Subscription", "intervalProvider", "handler", "timeout", "args", "_i", "delegate", "__spreadArray", "__read", "handle", "AsyncAction", "_super", "__extends", "scheduler", "work", "_this", "state", "delay", "id", "_id", "intervalProvider", "_scheduler", "error", "_delay", "errored", "errorValue", "e", "_a", "actions", "arrRemove", "Action", "Scheduler", "schedulerActionCtor", "now", "work", "delay", "state", "dateTimestampProvider", "AsyncScheduler", "_super", "__extends", "SchedulerAction", "now", "Scheduler", "_this", "action", "actions", "error", "asyncScheduler", "AsyncScheduler", "AsyncAction", "async", "AnimationFrameAction", "_super", "__extends", "scheduler", "work", "_this", "id", "delay", "animationFrameProvider", "action", "AsyncAction", "AnimationFrameScheduler", "_super", "__extends", "action", "flushId", "actions", "error", "AsyncScheduler", "animationFrameScheduler", "AnimationFrameScheduler", "AnimationFrameAction", "EMPTY", "Observable", "subscriber", "isScheduler", "value", "isFunction", "last", "arr", "popResultSelector", "args", "isFunction", "popScheduler", "isScheduler", "popNumber", "defaultValue", "isArrayLike", "x", "isPromise", "value", "isFunction", "isInteropObservable", "input", "isFunction", "observable", "isAsyncIterable", "obj", "isFunction", "createInvalidObservableTypeError", "input", "getSymbolIterator", "iterator", "isIterable", "input", "isFunction", "iterator", "readableStreamLikeToAsyncGenerator", "readableStream", "reader", "__await", "_a", "_b", "value", "done", "isReadableStreamLike", "obj", "isFunction", "innerFrom", "input", "Observable", "isInteropObservable", "fromInteropObservable", "isArrayLike", "fromArrayLike", "isPromise", "fromPromise", "isAsyncIterable", "fromAsyncIterable", "isIterable", "fromIterable", "isReadableStreamLike", "fromReadableStreamLike", "createInvalidObservableTypeError", "obj", "subscriber", "obs", "observable", "isFunction", "array", "i", "promise", "value", "err", "reportUnhandledError", "iterable", "iterable_1", "__values", "iterable_1_1", "asyncIterable", "process", "readableStream", "readableStreamLikeToAsyncGenerator", "asyncIterable_1", "__asyncValues", "asyncIterable_1_1", "executeSchedule", "parentSubscription", "scheduler", "work", "delay", "repeat", "scheduleSubscription", "observeOn", "scheduler", "delay", "operate", "source", "subscriber", "createOperatorSubscriber", "value", "executeSchedule", "err", "subscribeOn", "scheduler", "delay", "operate", "source", "subscriber", "scheduleObservable", "input", "scheduler", "innerFrom", "subscribeOn", "observeOn", "schedulePromise", "input", "scheduler", "innerFrom", "subscribeOn", "observeOn", "scheduleArray", "input", "scheduler", "Observable", "subscriber", "i", "scheduleIterable", "input", "scheduler", "Observable", "subscriber", "iterator", "executeSchedule", "value", "done", "_a", "err", "isFunction", "scheduleAsyncIterable", "input", "scheduler", "Observable", "subscriber", "executeSchedule", "iterator", "result", "scheduleReadableStreamLike", "input", "scheduler", "scheduleAsyncIterable", "readableStreamLikeToAsyncGenerator", "scheduled", "input", "scheduler", "isInteropObservable", "scheduleObservable", "isArrayLike", "scheduleArray", "isPromise", "schedulePromise", "isAsyncIterable", "scheduleAsyncIterable", "isIterable", "scheduleIterable", "isReadableStreamLike", "scheduleReadableStreamLike", "createInvalidObservableTypeError", "from", "input", "scheduler", "scheduled", "innerFrom", "of", "args", "_i", "scheduler", "popScheduler", "from", "throwError", "errorOrErrorFactory", "scheduler", "errorFactory", "isFunction", "init", "subscriber", "Observable", "isValidDate", "value", "map", "project", "thisArg", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "isArray", "callOrApply", "fn", "args", "__spreadArray", "__read", "mapOneOrManyArgs", "map", "isArray", "getPrototypeOf", "objectProto", "getKeys", "argsArgArrayOrObject", "args", "first_1", "isPOJO", "keys", "key", "obj", "createObject", "keys", "values", "result", "key", "i", "combineLatest", "args", "_i", "scheduler", "popScheduler", "resultSelector", "popResultSelector", "_a", "argsArgArrayOrObject", "observables", "keys", "from", "result", "Observable", "combineLatestInit", "values", "createObject", "identity", "mapOneOrManyArgs", "valueTransform", "subscriber", "maybeSchedule", "length", "active", "remainingFirstValues", "i", "source", "hasFirstValue", "createOperatorSubscriber", "value", "execute", "subscription", "executeSchedule", "mergeInternals", "source", "subscriber", "project", "concurrent", "onBeforeNext", "expand", "innerSubScheduler", "additionalFinalizer", "buffer", "active", "index", "isComplete", "checkComplete", "outerNext", "value", "doInnerSub", "innerComplete", "innerFrom", "createOperatorSubscriber", "innerValue", "bufferedValue", "executeSchedule", "err", "mergeMap", "project", "resultSelector", "concurrent", "isFunction", "a", "i", "map", "b", "ii", "innerFrom", "operate", "source", "subscriber", "mergeInternals", "mergeAll", "concurrent", "mergeMap", "identity", "concatAll", "mergeAll", "concat", "args", "_i", "concatAll", "from", "popScheduler", "defer", "observableFactory", "Observable", "subscriber", "innerFrom", "nodeEventEmitterMethods", "eventTargetMethods", "jqueryMethods", "fromEvent", "target", "eventName", "options", "resultSelector", "isFunction", "mapOneOrManyArgs", "_a", "__read", "isEventTarget", "methodName", "handler", "isNodeStyleEventEmitter", "toCommonHandlerRegistry", "isJQueryStyleEventEmitter", "add", "remove", "isArrayLike", "mergeMap", "subTarget", "innerFrom", "Observable", "subscriber", "args", "_i", "fromEventPattern", "addHandler", "removeHandler", "resultSelector", "mapOneOrManyArgs", "Observable", "subscriber", "handler", "e", "_i", "retValue", "isFunction", "timer", "dueTime", "intervalOrScheduler", "scheduler", "async", "intervalDuration", "isScheduler", "Observable", "subscriber", "due", "isValidDate", "n", "merge", "args", "_i", "scheduler", "popScheduler", "concurrent", "popNumber", "sources", "innerFrom", "mergeAll", "from", "EMPTY", "NEVER", "Observable", "noop", "isArray", "argsOrArgArray", "args", "filter", "predicate", "thisArg", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "zip", "args", "_i", "resultSelector", "popResultSelector", "sources", "argsOrArgArray", "Observable", "subscriber", "buffers", "completed", "sourceIndex", "innerFrom", "createOperatorSubscriber", "value", "buffer", "result", "__spreadArray", "__read", "i", "EMPTY", "audit", "durationSelector", "operate", "source", "subscriber", "hasValue", "lastValue", "durationSubscriber", "isComplete", "endDuration", "value", "cleanupDuration", "createOperatorSubscriber", "innerFrom", "auditTime", "duration", "scheduler", "asyncScheduler", "audit", "timer", "bufferCount", "bufferSize", "startBufferEvery", "operate", "source", "subscriber", "buffers", "count", "createOperatorSubscriber", "value", "toEmit", "buffers_1", "__values", "buffers_1_1", "buffer", "toEmit_1", "toEmit_1_1", "arrRemove", "buffers_2", "buffers_2_1", "catchError", "selector", "operate", "source", "subscriber", "innerSub", "syncUnsub", "handledResult", "createOperatorSubscriber", "err", "innerFrom", "scanInternals", "accumulator", "seed", "hasSeed", "emitOnNext", "emitBeforeComplete", "source", "subscriber", "hasState", "state", "index", "createOperatorSubscriber", "value", "i", "combineLatest", "args", "_i", "resultSelector", "popResultSelector", "pipe", "__spreadArray", "__read", "mapOneOrManyArgs", "operate", "source", "subscriber", "combineLatestInit", "argsOrArgArray", "combineLatestWith", "otherSources", "_i", "combineLatest", "__spreadArray", "__read", "concatMap", "project", "resultSelector", "isFunction", "mergeMap", "debounceTime", "dueTime", "scheduler", "asyncScheduler", "operate", "source", "subscriber", "activeTask", "lastValue", "lastTime", "emit", "value", "emitWhenIdle", "targetTime", "now", "createOperatorSubscriber", "defaultIfEmpty", "defaultValue", "operate", "source", "subscriber", "hasValue", "createOperatorSubscriber", "value", "take", "count", "EMPTY", "operate", "source", "subscriber", "seen", "createOperatorSubscriber", "value", "ignoreElements", "operate", "source", "subscriber", "createOperatorSubscriber", "noop", "mapTo", "value", "map", "delayWhen", "delayDurationSelector", "subscriptionDelay", "source", "concat", "take", "ignoreElements", "mergeMap", "value", "index", "mapTo", "delay", "due", "scheduler", "asyncScheduler", "duration", "timer", "delayWhen", "distinctUntilChanged", "comparator", "keySelector", "identity", "defaultCompare", "operate", "source", "subscriber", "previousKey", "first", "createOperatorSubscriber", "value", "currentKey", "a", "b", "distinctUntilKeyChanged", "key", "compare", "distinctUntilChanged", "x", "y", "endWith", "values", "_i", "source", "concat", "of", "__spreadArray", "__read", "finalize", "callback", "operate", "source", "subscriber", "takeLast", "count", "EMPTY", "operate", "source", "subscriber", "buffer", "createOperatorSubscriber", "value", "buffer_1", "__values", "buffer_1_1", "merge", "args", "_i", "scheduler", "popScheduler", "concurrent", "popNumber", "argsOrArgArray", "operate", "source", "subscriber", "mergeAll", "from", "__spreadArray", "__read", "mergeWith", "otherSources", "_i", "merge", "__spreadArray", "__read", "repeat", "countOrConfig", "count", "delay", "_a", "EMPTY", "operate", "source", "subscriber", "soFar", "sourceSub", "resubscribe", "notifier", "timer", "innerFrom", "notifierSubscriber_1", "createOperatorSubscriber", "subscribeToSource", "syncUnsub", "sample", "notifier", "operate", "source", "subscriber", "hasValue", "lastValue", "createOperatorSubscriber", "value", "noop", "scan", "accumulator", "seed", "operate", "scanInternals", "share", "options", "_a", "connector", "Subject", "_b", "resetOnError", "_c", "resetOnComplete", "_d", "resetOnRefCountZero", "wrapperSource", "connection", "resetConnection", "subject", "refCount", "hasCompleted", "hasErrored", "cancelReset", "reset", "resetAndUnsubscribe", "conn", "operate", "source", "subscriber", "dest", "handleReset", "SafeSubscriber", "value", "err", "innerFrom", "on", "args", "_i", "onSubscriber", "__spreadArray", "__read", "shareReplay", "configOrBufferSize", "windowTime", "scheduler", "bufferSize", "refCount", "_a", "_b", "_c", "share", "ReplaySubject", "skip", "count", "filter", "_", "index", "skipUntil", "notifier", "operate", "source", "subscriber", "taking", "skipSubscriber", "createOperatorSubscriber", "noop", "innerFrom", "value", "startWith", "values", "_i", "scheduler", "popScheduler", "operate", "source", "subscriber", "concat", "switchMap", "project", "resultSelector", "operate", "source", "subscriber", "innerSubscriber", "index", "isComplete", "checkComplete", "createOperatorSubscriber", "value", "innerIndex", "outerIndex", "innerFrom", "innerValue", "takeUntil", "notifier", "operate", "source", "subscriber", "innerFrom", "createOperatorSubscriber", "noop", "takeWhile", "predicate", "inclusive", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "result", "tap", "observerOrNext", "error", "complete", "tapObserver", "isFunction", "operate", "source", "subscriber", "_a", "isUnsub", "createOperatorSubscriber", "value", "err", "_b", "identity", "defaultThrottleConfig", "throttle", "durationSelector", "config", "operate", "source", "subscriber", "leading", "trailing", "hasValue", "sendValue", "throttled", "isComplete", "endThrottling", "send", "cleanupThrottling", "startThrottle", "value", "innerFrom", "createOperatorSubscriber", "throttleTime", "duration", "scheduler", "config", "asyncScheduler", "defaultThrottleConfig", "duration$", "timer", "throttle", "withLatestFrom", "inputs", "_i", "project", "popResultSelector", "operate", "source", "subscriber", "len", "otherValues", "hasValue", "ready", "i", "innerFrom", "createOperatorSubscriber", "value", "identity", "noop", "values", "__spreadArray", "__read", "zip", "sources", "_i", "operate", "source", "subscriber", "__spreadArray", "__read", "zipWith", "otherInputs", "_i", "zip", "__spreadArray", "__read", "watchDocument", "document$", "ReplaySubject", "fromEvent", "getElements", "selector", "node", "getElement", "el", "getOptionalElement", "getActiveElement", "watchElementFocus", "el", "merge", "fromEvent", "debounceTime", "map", "active", "getActiveElement", "startWith", "distinctUntilChanged", "getElementOffset", "el", "watchElementOffset", "merge", "fromEvent", "auditTime", "animationFrameScheduler", "map", "startWith", "getElementContentOffset", "el", "watchElementContentOffset", "merge", "fromEvent", "auditTime", "animationFrameScheduler", "map", "startWith", "MapShim", "getIndex", "arr", "key", "result", "entry", "index", "class_1", "value", "entries", "callback", "ctx", "_i", "_a", "isBrowser", "global$1", "requestAnimationFrame$1", "trailingTimeout", "throttle", "delay", "leadingCall", "trailingCall", "lastCallTime", "resolvePending", "proxy", "timeoutCallback", "timeStamp", "REFRESH_DELAY", "transitionKeys", "mutationObserverSupported", "ResizeObserverController", "observer", "observers", "changesDetected", "activeObservers", "_b", "propertyName", "isReflowProperty", "defineConfigurable", "target", "props", "getWindowOf", "ownerGlobal", "emptyRect", "createRectInit", "toFloat", "getBordersSize", "styles", "positions", "size", "position", "getPaddings", "paddings", "positions_1", "getSVGContentRect", "bbox", "getHTMLElementContentRect", "clientWidth", "clientHeight", "horizPad", "vertPad", "width", "height", "isDocumentElement", "vertScrollbar", "horizScrollbar", "isSVGGraphicsElement", "getContentRect", "createReadOnlyRect", "x", "y", "Constr", "rect", "ResizeObservation", "ResizeObserverEntry", "rectInit", "contentRect", "ResizeObserverSPI", "controller", "callbackCtx", "observations", "_this", "observation", "ResizeObserver", "method", "ResizeObserver_es_default", "entry$", "Subject", "observer$", "defer", "of", "ResizeObserver_es_default", "entries", "entry", "switchMap", "observer", "merge", "NEVER", "finalize", "shareReplay", "getElementSize", "el", "watchElementSize", "tap", "filter", "target", "map", "startWith", "getElementContentSize", "el", "entry$", "Subject", "observer$", "defer", "of", "entries", "entry", "switchMap", "observer", "merge", "NEVER", "finalize", "shareReplay", "watchElementVisibility", "el", "tap", "filter", "target", "map", "isIntersecting", "watchElementBoundary", "threshold", "watchElementContentOffset", "y", "visible", "getElementSize", "content", "getElementContentSize", "distinctUntilChanged", "toggles", "getElement", "getToggle", "name", "setToggle", "value", "watchToggle", "el", "fromEvent", "map", "startWith", "isSusceptibleToKeyboard", "el", "type", "watchKeyboard", "fromEvent", "filter", "ev", "map", "getToggle", "mode", "active", "getActiveElement", "share", "getLocation", "setLocation", "url", "watchLocation", "Subject", "appendChild", "el", "child", "node", "h", "tag", "attributes", "children", "attr", "truncate", "value", "n", "i", "round", "digits", "getLocationHash", "setLocationHash", "hash", "el", "h", "ev", "watchLocationHash", "fromEvent", "map", "startWith", "filter", "shareReplay", "watchLocationTarget", "id", "getOptionalElement", "watchMedia", "query", "media", "fromEventPattern", "next", "startWith", "watchPrint", "merge", "fromEvent", "map", "at", "query$", "factory", "switchMap", "active", "EMPTY", "request", "url", "options", "from", "catchError", "EMPTY", "switchMap", "res", "throwError", "of", "requestJSON", "shareReplay", "requestXML", "dom", "map", "watchScript", "src", "script", "h", "defer", "merge", "fromEvent", "switchMap", "throwError", "map", "finalize", "take", "getViewportOffset", "watchViewportOffset", "merge", "fromEvent", "map", "startWith", "getViewportSize", "watchViewportSize", "fromEvent", "map", "startWith", "watchViewport", "combineLatest", "watchViewportOffset", "watchViewportSize", "map", "offset", "size", "shareReplay", "watchViewportAt", "el", "viewport$", "header$", "size$", "distinctUntilKeyChanged", "offset$", "combineLatest", "map", "getElementOffset", "height", "offset", "size", "x", "y", "watchWorker", "worker", "tx$", "rx$", "fromEvent", "map", "data", "throttle", "tap", "message", "switchMap", "share", "script", "getElement", "config", "getLocation", "configuration", "feature", "flag", "translation", "key", "value", "getComponentElement", "type", "node", "getElement", "getComponentElements", "getElements", "watchAnnounce", "el", "button", "getElement", "fromEvent", "map", "content", "mountAnnounce", "feature", "EMPTY", "defer", "push$", "Subject", "startWith", "hash", "_a", "tap", "state", "finalize", "__spreadValues", "watchConsent", "el", "target$", "map", "target", "mountConsent", "options", "internal$", "Subject", "hidden", "tap", "state", "finalize", "__spreadValues", "import_clipboard", "renderAnnotation", "id", "h", "renderClipboardButton", "id", "h", "translation", "renderSearchDocument", "document", "flag", "parent", "teaser", "missing", "key", "list", "h", "url", "feature", "match", "highlight", "value", "truncate", "tag", "translation", "renderSearchResultItem", "result", "threshold", "docs", "doc", "article", "index", "best", "more", "children", "section", "renderSourceFacts", "facts", "h", "key", "value", "round", "renderTabbedControl", "type", "classes", "h", "renderTable", "table", "h", "renderVersion", "version", "config", "configuration", "url", "h", "renderVersionSelector", "versions", "active", "translation", "watchAnnotation", "el", "container", "offset$", "defer", "combineLatest", "watchElementOffset", "watchElementContentOffset", "map", "x", "y", "scroll", "width", "getElementSize", "watchElementFocus", "switchMap", "active", "offset", "take", "mountAnnotation", "push$", "Subject", "done$", "takeLast", "watchElementVisibility", "takeUntil", "visible", "throttleTime", "animationFrameScheduler", "origin", "index", "getElement", "blur$", "fromEvent", "EMPTY", "tap", "ev", "state", "finalize", "__spreadValues", "findAnnotationMarkers", "container", "markers", "comment", "getElements", "match", "text", "marker", "swap", "source", "target", "mountAnnotationList", "el", "print$", "annotations", "id", "getOptionalElement", "renderAnnotation", "EMPTY", "defer", "done$", "Subject", "takeUntil", "takeLast", "active", "annotation", "inner", "getElement", "child", "merge", "mountAnnotation", "finalize", "share", "sequence", "findCandidateList", "el", "sibling", "watchCodeBlock", "watchElementSize", "map", "width", "getElementContentSize", "distinctUntilKeyChanged", "mountCodeBlock", "options", "hover", "factory$", "defer", "push$", "Subject", "scrollable", "ClipboardJS", "parent", "renderClipboardButton", "container", "list", "feature", "annotations$", "mountAnnotationList", "tap", "state", "finalize", "__spreadValues", "mergeWith", "takeUntil", "takeLast", "height", "distinctUntilChanged", "switchMap", "active", "EMPTY", "watchElementVisibility", "filter", "visible", "take", "mermaid$", "sequence", "fetchScripts", "watchScript", "of", "mountMermaid", "el", "tap", "mermaid_default", "map", "shareReplay", "id", "host", "h", "svg", "shadow", "watchDetails", "el", "target$", "print$", "open", "merge", "map", "target", "filter", "details", "active", "tap", "mountDetails", "options", "defer", "push$", "Subject", "action", "reveal", "state", "finalize", "__spreadValues", "sentinel", "h", "mountDataTable", "el", "renderTable", "of", "watchContentTabs", "el", "inputs", "getElements", "initial", "input", "merge", "fromEvent", "map", "getElement", "startWith", "active", "mountContentTabs", "prev", "renderTabbedControl", "next", "container", "defer", "push$", "Subject", "done$", "takeLast", "combineLatest", "watchElementSize", "auditTime", "animationFrameScheduler", "takeUntil", "size", "offset", "getElementOffset", "width", "getElementSize", "content", "getElementContentOffset", "watchElementContentOffset", "getElementContentSize", "direction", "feature", "skip", "tab", "set", "tabs", "tap", "state", "finalize", "__spreadValues", "subscribeOn", "asyncScheduler", "mountContent", "el", "target$", "print$", "merge", "getElements", "child", "mountCodeBlock", "mountMermaid", "mountDataTable", "mountDetails", "mountContentTabs", "watchDialog", "_el", "alert$", "switchMap", "message", "merge", "of", "delay", "map", "active", "mountDialog", "el", "options", "inner", "getElement", "defer", "push$", "Subject", "tap", "state", "finalize", "__spreadValues", "isHidden", "viewport$", "feature", "of", "direction$", "map", "y", "bufferCount", "a", "b", "distinctUntilKeyChanged", "hidden$", "combineLatest", "filter", "offset", "direction", "distinctUntilChanged", "search$", "watchToggle", "search", "switchMap", "active", "startWith", "watchHeader", "el", "options", "defer", "watchElementSize", "height", "hidden", "shareReplay", "mountHeader", "header$", "main$", "push$", "Subject", "done$", "takeLast", "combineLatestWith", "takeUntil", "state", "__spreadValues", "watchHeaderTitle", "el", "viewport$", "header$", "watchViewportAt", "map", "y", "height", "getElementSize", "distinctUntilKeyChanged", "mountHeaderTitle", "options", "defer", "push$", "Subject", "active", "heading", "getOptionalElement", "EMPTY", "tap", "state", "finalize", "__spreadValues", "watchMain", "el", "viewport$", "header$", "adjust$", "map", "height", "distinctUntilChanged", "border$", "switchMap", "watchElementSize", "distinctUntilKeyChanged", "combineLatest", "header", "top", "bottom", "y", "a", "b", "watchPalette", "inputs", "current", "input", "of", "mergeMap", "fromEvent", "map", "startWith", "shareReplay", "mountPalette", "el", "defer", "push$", "Subject", "palette", "key", "value", "index", "label", "observeOn", "asyncScheduler", "getElements", "tap", "state", "finalize", "__spreadValues", "import_clipboard", "extract", "el", "text", "setupClipboardJS", "alert$", "ClipboardJS", "Observable", "subscriber", "getElement", "ev", "tap", "map", "translation", "preprocess", "urls", "root", "next", "a", "b", "url", "index", "fetchSitemap", "base", "cached", "of", "config", "configuration", "requestXML", "map", "sitemap", "getElements", "node", "catchError", "EMPTY", "defaultIfEmpty", "tap", "setupInstantLoading", "document$", "location$", "viewport$", "config", "configuration", "fromEvent", "favicon", "getOptionalElement", "push$", "fetchSitemap", "map", "paths", "path", "switchMap", "urls", "filter", "ev", "el", "url", "of", "NEVER", "share", "pop$", "merge", "distinctUntilChanged", "a", "b", "response$", "distinctUntilKeyChanged", "request", "catchError", "setLocation", "sample", "dom", "res", "skip", "replacement", "selector", "feature", "source", "target", "getComponentElement", "getElements", "concatMap", "script", "h", "name", "Observable", "observer", "EMPTY", "offset", "setLocationHash", "skipUntil", "debounceTime", "bufferCount", "state", "import_escape_html", "import_escape_html", "setupSearchHighlighter", "config", "escape", "separator", "highlight", "_", "data", "term", "query", "match", "value", "escapeHTML", "defaultTransform", "query", "terms", "index", "isSearchReadyMessage", "message", "isSearchQueryMessage", "isSearchResultMessage", "setupSearchIndex", "config", "docs", "translation", "options", "feature", "setupSearchWorker", "url", "index", "configuration", "worker", "tx$", "Subject", "rx$", "watchWorker", "map", "message", "isSearchResultMessage", "result", "document", "share", "from", "data", "setupVersionSelector", "document$", "config", "configuration", "versions$", "requestJSON", "catchError", "EMPTY", "current$", "map", "versions", "current", "version", "aliases", "switchMap", "urls", "fromEvent", "filter", "ev", "withLatestFrom", "el", "url", "of", "fetchSitemap", "sitemap", "path", "getLocation", "setLocation", "combineLatest", "getElement", "renderVersionSelector", "_a", "outdated", "latest", "warning", "getComponentElements", "watchSearchQuery", "el", "rx$", "fn", "defaultTransform", "searchParams", "getLocation", "setToggle", "param$", "filter", "isSearchReadyMessage", "take", "map", "watchToggle", "active", "url", "value", "focus$", "watchElementFocus", "value$", "merge", "fromEvent", "delay", "startWith", "distinctUntilChanged", "combineLatest", "focus", "shareReplay", "mountSearchQuery", "tx$", "push$", "Subject", "done$", "takeLast", "distinctUntilKeyChanged", "translation", "takeUntil", "tap", "state", "finalize", "__spreadValues", "share", "mountSearchResult", "el", "rx$", "query$", "push$", "Subject", "boundary$", "watchElementBoundary", "filter", "meta", "getElement", "list", "ready$", "isSearchReadyMessage", "take", "withLatestFrom", "skipUntil", "items", "value", "translation", "round", "tap", "switchMap", "merge", "of", "bufferCount", "zipWith", "chunk", "result", "renderSearchResultItem", "isSearchResultMessage", "map", "data", "state", "finalize", "__spreadValues", "watchSearchShare", "_el", "query$", "map", "value", "url", "getLocation", "mountSearchShare", "el", "options", "push$", "Subject", "fromEvent", "ev", "tap", "state", "finalize", "__spreadValues", "mountSearchSuggest", "el", "rx$", "keyboard$", "push$", "Subject", "query", "getComponentElement", "query$", "merge", "fromEvent", "observeOn", "asyncScheduler", "map", "distinctUntilChanged", "combineLatestWith", "suggestions", "value", "words", "last", "filter", "mode", "key", "isSearchResultMessage", "data", "tap", "state", "finalize", "mountSearch", "el", "index$", "keyboard$", "config", "configuration", "url", "worker", "setupSearchWorker", "query", "getComponentElement", "result", "tx$", "rx$", "filter", "isSearchQueryMessage", "sample", "isSearchReadyMessage", "take", "mode", "key", "active", "getActiveElement", "anchors", "anchor", "getElements", "article", "best", "a", "b", "setToggle", "els", "i", "query$", "mountSearchQuery", "result$", "mountSearchResult", "merge", "mergeWith", "getComponentElements", "child", "mountSearchShare", "mountSearchSuggest", "err", "NEVER", "mountSearchHiglight", "el", "index$", "location$", "combineLatest", "startWith", "getLocation", "filter", "url", "map", "index", "setupSearchHighlighter", "fn", "_a", "nodes", "it", "node", "original", "replaced", "text", "childNodes", "h", "watchSidebar", "el", "viewport$", "main$", "parent", "adjust", "combineLatest", "map", "offset", "height", "y", "distinctUntilChanged", "a", "b", "mountSidebar", "_a", "_b", "header$", "options", "__objRest", "inner", "getElement", "getElementOffset", "defer", "push$", "Subject", "auditTime", "animationFrameScheduler", "withLatestFrom", "tap", "state", "finalize", "__spreadValues", "fetchSourceFactsFromGitHub", "user", "repo", "url", "zip", "requestJSON", "catchError", "EMPTY", "map", "release", "defaultIfEmpty", "info", "__spreadValues", "fetchSourceFactsFromGitLab", "base", "project", "url", "requestJSON", "catchError", "EMPTY", "map", "star_count", "forks_count", "defaultIfEmpty", "fetchSourceFacts", "url", "type", "user", "repo", "fetchSourceFactsFromGitHub", "base", "slug", "fetchSourceFactsFromGitLab", "EMPTY", "fetch$", "watchSource", "el", "defer", "cached", "of", "fetchSourceFacts", "tap", "facts", "catchError", "EMPTY", "filter", "map", "shareReplay", "mountSource", "inner", "getElement", "push$", "Subject", "renderSourceFacts", "state", "finalize", "__spreadValues", "watchTabs", "el", "viewport$", "header$", "watchElementSize", "switchMap", "watchViewportAt", "map", "y", "distinctUntilKeyChanged", "mountTabs", "options", "defer", "push$", "Subject", "hidden", "feature", "of", "tap", "state", "finalize", "__spreadValues", "watchTableOfContents", "el", "viewport$", "header$", "table", "anchors", "getElements", "anchor", "id", "target", "getOptionalElement", "adjust$", "distinctUntilKeyChanged", "map", "height", "main", "getComponentElement", "grid", "getElement", "share", "watchElementSize", "switchMap", "body", "defer", "path", "of", "index", "offset", "a", "b", "combineLatestWith", "adjust", "scan", "prev", "next", "y", "size", "last", "distinctUntilChanged", "startWith", "bufferCount", "mountTableOfContents", "target$", "push$", "Subject", "done$", "takeLast", "feature", "takeUntil", "debounceTime", "skip", "repeat", "withLatestFrom", "url", "getLocation", "active", "hash", "tap", "state", "finalize", "__spreadValues", "watchBackToTop", "_el", "viewport$", "main$", "target$", "direction$", "map", "y", "bufferCount", "b", "distinctUntilChanged", "active$", "active", "combineLatest", "direction", "takeUntil", "skip", "endWith", "repeat", "hidden", "mountBackToTop", "el", "header$", "push$", "Subject", "done$", "takeLast", "distinctUntilKeyChanged", "height", "tap", "state", "finalize", "__spreadValues", "patchIndeterminate", "document$", "tablet$", "switchMap", "getElements", "tap", "el", "mergeMap", "fromEvent", "takeWhile", "map", "withLatestFrom", "tablet", "isAppleDevice", "patchScrollfix", "document$", "switchMap", "getElements", "tap", "el", "filter", "mergeMap", "fromEvent", "map", "top", "patchScrolllock", "viewport$", "tablet$", "combineLatest", "watchToggle", "map", "active", "tablet", "switchMap", "of", "delay", "withLatestFrom", "y", "value", "obj", "data", "key", "x", "y", "nodes", "parent", "i", "node", "document$", "watchDocument", "location$", "watchLocation", "target$", "watchLocationTarget", "keyboard$", "watchKeyboard", "viewport$", "watchViewport", "tablet$", "watchMedia", "screen$", "print$", "watchPrint", "config", "configuration", "index$", "requestJSON", "NEVER", "alert$", "Subject", "setupClipboardJS", "feature", "setupInstantLoading", "_a", "setupVersionSelector", "merge", "delay", "setToggle", "filter", "mode", "key", "prev", "getOptionalElement", "next", "patchIndeterminate", "patchScrollfix", "patchScrolllock", "header$", "watchHeader", "getComponentElement", "main$", "map", "switchMap", "el", "watchMain", "shareReplay", "control$", "getComponentElements", "mountConsent", "mountDialog", "mountHeader", "mountPalette", "mountSearch", "mountSource", "content$", "defer", "mountAnnounce", "mountContent", "mountSearchHiglight", "EMPTY", "mountHeaderTitle", "at", "mountSidebar", "mountTabs", "mountTableOfContents", "mountBackToTop", "component$", "mergeWith"] +} diff --git a/assets/javascripts/lunr/min/lunr.ar.min.js b/assets/javascripts/lunr/min/lunr.ar.min.js new file mode 100644 index 0000000..248ddc5 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ar.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ar=function(){this.pipeline.reset(),this.pipeline.add(e.ar.trimmer,e.ar.stopWordFilter,e.ar.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ar.stemmer))},e.ar.wordCharacters="ء-ٛٱـ",e.ar.trimmer=e.trimmerSupport.generateTrimmer(e.ar.wordCharacters),e.Pipeline.registerFunction(e.ar.trimmer,"trimmer-ar"),e.ar.stemmer=function(){var e=this;return e.result=!1,e.preRemoved=!1,e.sufRemoved=!1,e.pre={pre1:"ف ك ب و س ل ن ا ي ت",pre2:"ال لل",pre3:"بال وال فال تال كال ولل",pre4:"فبال كبال وبال وكال"},e.suf={suf1:"ه ك ت ن ا ي",suf2:"نك نه ها وك يا اه ون ين تن تم نا وا ان كم كن ني نن ما هم هن تك ته ات يه",suf3:"تين كهم نيه نهم ونه وها يهم ونا ونك وني وهم تكم تنا تها تني تهم كما كها ناه نكم هنا تان يها",suf4:"كموه ناها ونني ونهم تكما تموه تكاه كماه ناكم ناهم نيها وننا"},e.patterns=JSON.parse('{"pt43":[{"pt":[{"c":"ا","l":1}]},{"pt":[{"c":"ا,ت,ن,ي","l":0}],"mPt":[{"c":"ف","l":0,"m":1},{"c":"ع","l":1,"m":2},{"c":"ل","l":2,"m":3}]},{"pt":[{"c":"و","l":2}],"mPt":[{"c":"ف","l":0,"m":0},{"c":"ع","l":1,"m":1},{"c":"ل","l":2,"m":3}]},{"pt":[{"c":"ا","l":2}]},{"pt":[{"c":"ي","l":2}],"mPt":[{"c":"ف","l":0,"m":0},{"c":"ع","l":1,"m":1},{"c":"ا","l":2},{"c":"ل","l":3,"m":3}]},{"pt":[{"c":"م","l":0}]}],"pt53":[{"pt":[{"c":"ت","l":0},{"c":"ا","l":2}]},{"pt":[{"c":"ا,ن,ت,ي","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":0},{"c":"ا","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":3},{"c":"ل","l":3,"m":4},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":0},{"c":"ا","l":3}],"mPt":[{"c":"ف","l":0,"m":1},{"c":"ع","l":1,"m":2},{"c":"ل","l":2,"m":4}]},{"pt":[{"c":"ا","l":3},{"c":"ن","l":4}]},{"pt":[{"c":"ت","l":0},{"c":"ي","l":3}]},{"pt":[{"c":"م","l":0},{"c":"و","l":3}]},{"pt":[{"c":"ا","l":1},{"c":"و","l":3}]},{"pt":[{"c":"و","l":1},{"c":"ا","l":2}]},{"pt":[{"c":"م","l":0},{"c":"ا","l":3}]},{"pt":[{"c":"م","l":0},{"c":"ي","l":3}]},{"pt":[{"c":"ا","l":2},{"c":"ن","l":3}]},{"pt":[{"c":"م","l":0},{"c":"ن","l":1}],"mPt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ف","l":2,"m":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"م","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"م","l":0},{"c":"ا","l":2}]},{"pt":[{"c":"م","l":1},{"c":"ا","l":3}]},{"pt":[{"c":"ي,ت,ا,ن","l":0},{"c":"ت","l":1}],"mPt":[{"c":"ف","l":0,"m":2},{"c":"ع","l":1,"m":3},{"c":"ا","l":2},{"c":"ل","l":3,"m":4}]},{"pt":[{"c":"ت,ي,ا,ن","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":2},{"c":"ي","l":3}]},{"pt":[{"c":"ا,ي,ت,ن","l":0},{"c":"ن","l":1}],"mPt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ف","l":2,"m":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":3},{"c":"ء","l":4}]}],"pt63":[{"pt":[{"c":"ا","l":0},{"c":"ت","l":2},{"c":"ا","l":4}]},{"pt":[{"c":"ا,ت,ن,ي","l":0},{"c":"س","l":1},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ف","l":3,"m":3},{"c":"ع","l":4,"m":4},{"c":"ا","l":5},{"c":"ل","l":6,"m":5}]},{"pt":[{"c":"ا,ن,ت,ي","l":0},{"c":"و","l":3}]},{"pt":[{"c":"م","l":0},{"c":"س","l":1},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ف","l":3,"m":3},{"c":"ع","l":4,"m":4},{"c":"ا","l":5},{"c":"ل","l":6,"m":5}]},{"pt":[{"c":"ي","l":1},{"c":"ي","l":3},{"c":"ا","l":4},{"c":"ء","l":5}]},{"pt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ا","l":4}]}],"pt54":[{"pt":[{"c":"ت","l":0}]},{"pt":[{"c":"ا,ي,ت,ن","l":0}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":2},{"c":"ل","l":3,"m":3},{"c":"ر","l":4,"m":4},{"c":"ا","l":5},{"c":"ر","l":6,"m":4}]},{"pt":[{"c":"م","l":0}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":2},{"c":"ل","l":3,"m":3},{"c":"ر","l":4,"m":4},{"c":"ا","l":5},{"c":"ر","l":6,"m":4}]},{"pt":[{"c":"ا","l":2}]},{"pt":[{"c":"ا","l":0},{"c":"ن","l":2}]}],"pt64":[{"pt":[{"c":"ا","l":0},{"c":"ا","l":4}]},{"pt":[{"c":"م","l":0},{"c":"ت","l":1}]}],"pt73":[{"pt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ا","l":5}]}],"pt75":[{"pt":[{"c":"ا","l":0},{"c":"ا","l":5}]}]}'),e.execArray=["cleanWord","removeDiacritics","cleanAlef","removeStopWords","normalizeHamzaAndAlef","removeStartWaw","removePre432","removeEndTaa","wordCheck"],e.stem=function(){var r=0;for(e.result=!1,e.preRemoved=!1,e.sufRemoved=!1;r=0)return!0},e.normalizeHamzaAndAlef=function(){return e.word=e.word.replace("ؤ","ء"),e.word=e.word.replace("ئ","ء"),e.word=e.word.replace(/([\u0627])\1+/gi,"ا"),!1},e.removeEndTaa=function(){return!(e.word.length>2)||(e.word=e.word.replace(/[\u0627]$/,""),e.word=e.word.replace("ة",""),!1)},e.removeStartWaw=function(){return e.word.length>3&&"و"==e.word[0]&&"و"==e.word[1]&&(e.word=e.word.slice(1)),!1},e.removePre432=function(){var r=e.word;if(e.word.length>=7){var t=new RegExp("^("+e.pre.pre4.split(" ").join("|")+")");e.word=e.word.replace(t,"")}if(e.word==r&&e.word.length>=6){var c=new RegExp("^("+e.pre.pre3.split(" ").join("|")+")");e.word=e.word.replace(c,"")}if(e.word==r&&e.word.length>=5){var l=new RegExp("^("+e.pre.pre2.split(" ").join("|")+")");e.word=e.word.replace(l,"")}return r!=e.word&&(e.preRemoved=!0),!1},e.patternCheck=function(r){for(var t=0;t3){var t=new RegExp("^("+e.pre.pre1.split(" ").join("|")+")");e.word=e.word.replace(t,"")}return r!=e.word&&(e.preRemoved=!0),!1},e.removeSuf1=function(){var r=e.word;if(0==e.sufRemoved&&e.word.length>3){var t=new RegExp("("+e.suf.suf1.split(" ").join("|")+")$");e.word=e.word.replace(t,"")}return r!=e.word&&(e.sufRemoved=!0),!1},e.removeSuf432=function(){var r=e.word;if(e.word.length>=6){var t=new RegExp("("+e.suf.suf4.split(" ").join("|")+")$");e.word=e.word.replace(t,"")}if(e.word==r&&e.word.length>=5){var c=new RegExp("("+e.suf.suf3.split(" ").join("|")+")$");e.word=e.word.replace(c,"")}if(e.word==r&&e.word.length>=4){var l=new RegExp("("+e.suf.suf2.split(" ").join("|")+")$");e.word=e.word.replace(l,"")}return r!=e.word&&(e.sufRemoved=!0),!1},e.wordCheck=function(){for(var r=(e.word,[e.removeSuf432,e.removeSuf1,e.removePre1]),t=0,c=!1;e.word.length>=7&&!e.result&&t=f.limit)return;f.cursor++}for(;!f.out_grouping(w,97,248);){if(f.cursor>=f.limit)return;f.cursor++}d=f.cursor,d=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(c,32),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del();break;case 2:f.in_grouping_b(p,97,229)&&f.slice_del()}}function t(){var e,r=f.limit-f.cursor;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.find_among_b(l,4)?(f.bra=f.cursor,f.limit_backward=e,f.cursor=f.limit-r,f.cursor>f.limit_backward&&(f.cursor--,f.bra=f.cursor,f.slice_del())):f.limit_backward=e)}function s(){var e,r,i,n=f.limit-f.cursor;if(f.ket=f.cursor,f.eq_s_b(2,"st")&&(f.bra=f.cursor,f.eq_s_b(2,"ig")&&f.slice_del()),f.cursor=f.limit-n,f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(m,5),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del(),i=f.limit-f.cursor,t(),f.cursor=f.limit-i;break;case 2:f.slice_from("løs")}}function o(){var e;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.out_grouping_b(w,97,248)?(f.bra=f.cursor,u=f.slice_to(u),f.limit_backward=e,f.eq_v_b(u)&&f.slice_del()):f.limit_backward=e)}var a,d,u,c=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],l=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],w=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],p=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],f=new i;this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var r=f.cursor;return e(),f.limit_backward=r,f.cursor=f.limit,n(),f.cursor=f.limit,t(),f.cursor=f.limit,s(),f.cursor=f.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.de.min.js b/assets/javascripts/lunr/min/lunr.de.min.js new file mode 100644 index 0000000..f3b5c10 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.de.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `German` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.de=function(){this.pipeline.reset(),this.pipeline.add(e.de.trimmer,e.de.stopWordFilter,e.de.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.de.stemmer))},e.de.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.de.trimmer=e.trimmerSupport.generateTrimmer(e.de.wordCharacters),e.Pipeline.registerFunction(e.de.trimmer,"trimmer-de"),e.de.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(e,r,n){return!(!v.eq_s(1,e)||(v.ket=v.cursor,!v.in_grouping(p,97,252)))&&(v.slice_from(r),v.cursor=n,!0)}function i(){for(var r,n,i,s,t=v.cursor;;)if(r=v.cursor,v.bra=r,v.eq_s(1,"ß"))v.ket=v.cursor,v.slice_from("ss");else{if(r>=v.limit)break;v.cursor=r+1}for(v.cursor=t;;)for(n=v.cursor;;){if(i=v.cursor,v.in_grouping(p,97,252)){if(s=v.cursor,v.bra=s,e("u","U",i))break;if(v.cursor=s,e("y","Y",i))break}if(i>=v.limit)return void(v.cursor=n);v.cursor=i+1}}function s(){for(;!v.in_grouping(p,97,252);){if(v.cursor>=v.limit)return!0;v.cursor++}for(;!v.out_grouping(p,97,252);){if(v.cursor>=v.limit)return!0;v.cursor++}return!1}function t(){m=v.limit,l=m;var e=v.cursor+3;0<=e&&e<=v.limit&&(d=e,s()||(m=v.cursor,m=v.limit)return;v.cursor++}}}function c(){return m<=v.cursor}function u(){return l<=v.cursor}function a(){var e,r,n,i,s=v.limit-v.cursor;if(v.ket=v.cursor,(e=v.find_among_b(w,7))&&(v.bra=v.cursor,c()))switch(e){case 1:v.slice_del();break;case 2:v.slice_del(),v.ket=v.cursor,v.eq_s_b(1,"s")&&(v.bra=v.cursor,v.eq_s_b(3,"nis")&&v.slice_del());break;case 3:v.in_grouping_b(g,98,116)&&v.slice_del()}if(v.cursor=v.limit-s,v.ket=v.cursor,(e=v.find_among_b(f,4))&&(v.bra=v.cursor,c()))switch(e){case 1:v.slice_del();break;case 2:if(v.in_grouping_b(k,98,116)){var t=v.cursor-3;v.limit_backward<=t&&t<=v.limit&&(v.cursor=t,v.slice_del())}}if(v.cursor=v.limit-s,v.ket=v.cursor,(e=v.find_among_b(_,8))&&(v.bra=v.cursor,u()))switch(e){case 1:v.slice_del(),v.ket=v.cursor,v.eq_s_b(2,"ig")&&(v.bra=v.cursor,r=v.limit-v.cursor,v.eq_s_b(1,"e")||(v.cursor=v.limit-r,u()&&v.slice_del()));break;case 2:n=v.limit-v.cursor,v.eq_s_b(1,"e")||(v.cursor=v.limit-n,v.slice_del());break;case 3:if(v.slice_del(),v.ket=v.cursor,i=v.limit-v.cursor,!v.eq_s_b(2,"er")&&(v.cursor=v.limit-i,!v.eq_s_b(2,"en")))break;v.bra=v.cursor,c()&&v.slice_del();break;case 4:v.slice_del(),v.ket=v.cursor,e=v.find_among_b(b,2),e&&(v.bra=v.cursor,u()&&1==e&&v.slice_del())}}var d,l,m,h=[new r("",-1,6),new r("U",0,2),new r("Y",0,1),new r("ä",0,3),new r("ö",0,4),new r("ü",0,5)],w=[new r("e",-1,2),new r("em",-1,1),new r("en",-1,2),new r("ern",-1,1),new r("er",-1,1),new r("s",-1,3),new r("es",5,2)],f=[new r("en",-1,1),new r("er",-1,1),new r("st",-1,2),new r("est",2,1)],b=[new r("ig",-1,1),new r("lich",-1,1)],_=[new r("end",-1,1),new r("ig",-1,2),new r("ung",-1,1),new r("lich",-1,3),new r("isch",-1,2),new r("ik",-1,2),new r("heit",-1,3),new r("keit",-1,4)],p=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32,8],g=[117,30,5],k=[117,30,4],v=new n;this.setCurrent=function(e){v.setCurrent(e)},this.getCurrent=function(){return v.getCurrent()},this.stem=function(){var e=v.cursor;return i(),v.cursor=e,t(),v.limit_backward=e,v.cursor=v.limit,a(),v.cursor=v.limit_backward,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.de.stemmer,"stemmer-de"),e.de.stopWordFilter=e.generateStopWordFilter("aber alle allem allen aller alles als also am an ander andere anderem anderen anderer anderes anderm andern anderr anders auch auf aus bei bin bis bist da damit dann das dasselbe dazu daß dein deine deinem deinen deiner deines dem demselben den denn denselben der derer derselbe derselben des desselben dessen dich die dies diese dieselbe dieselben diesem diesen dieser dieses dir doch dort du durch ein eine einem einen einer eines einig einige einigem einigen einiger einiges einmal er es etwas euch euer eure eurem euren eurer eures für gegen gewesen hab habe haben hat hatte hatten hier hin hinter ich ihm ihn ihnen ihr ihre ihrem ihren ihrer ihres im in indem ins ist jede jedem jeden jeder jedes jene jenem jenen jener jenes jetzt kann kein keine keinem keinen keiner keines können könnte machen man manche manchem manchen mancher manches mein meine meinem meinen meiner meines mich mir mit muss musste nach nicht nichts noch nun nur ob oder ohne sehr sein seine seinem seinen seiner seines selbst sich sie sind so solche solchem solchen solcher solches soll sollte sondern sonst um und uns unse unsem unsen unser unses unter viel vom von vor war waren warst was weg weil weiter welche welchem welchen welcher welches wenn werde werden wie wieder will wir wird wirst wo wollen wollte während würde würden zu zum zur zwar zwischen über".split(" ")),e.Pipeline.registerFunction(e.de.stopWordFilter,"stopWordFilter-de")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.du.min.js b/assets/javascripts/lunr/min/lunr.du.min.js new file mode 100644 index 0000000..49a0f3f --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.du.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Dutch` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");console.warn('[Lunr Languages] Please use the "nl" instead of the "du". The "nl" code is the standard code for Dutch language, and "du" will be removed in the next major versions.'),e.du=function(){this.pipeline.reset(),this.pipeline.add(e.du.trimmer,e.du.stopWordFilter,e.du.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.du.stemmer))},e.du.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.du.trimmer=e.trimmerSupport.generateTrimmer(e.du.wordCharacters),e.Pipeline.registerFunction(e.du.trimmer,"trimmer-du"),e.du.stemmer=function(){var r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,n=new function(){function e(){for(var e,r,i,o=C.cursor;;){if(C.bra=C.cursor,e=C.find_among(b,11))switch(C.ket=C.cursor,e){case 1:C.slice_from("a");continue;case 2:C.slice_from("e");continue;case 3:C.slice_from("i");continue;case 4:C.slice_from("o");continue;case 5:C.slice_from("u");continue;case 6:if(C.cursor>=C.limit)break;C.cursor++;continue}break}for(C.cursor=o,C.bra=o,C.eq_s(1,"y")?(C.ket=C.cursor,C.slice_from("Y")):C.cursor=o;;)if(r=C.cursor,C.in_grouping(q,97,232)){if(i=C.cursor,C.bra=i,C.eq_s(1,"i"))C.ket=C.cursor,C.in_grouping(q,97,232)&&(C.slice_from("I"),C.cursor=r);else if(C.cursor=i,C.eq_s(1,"y"))C.ket=C.cursor,C.slice_from("Y"),C.cursor=r;else if(n(r))break}else if(n(r))break}function n(e){return C.cursor=e,e>=C.limit||(C.cursor++,!1)}function o(){_=C.limit,f=_,t()||(_=C.cursor,_<3&&(_=3),t()||(f=C.cursor))}function t(){for(;!C.in_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}for(;!C.out_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}return!1}function s(){for(var e;;)if(C.bra=C.cursor,e=C.find_among(p,3))switch(C.ket=C.cursor,e){case 1:C.slice_from("y");break;case 2:C.slice_from("i");break;case 3:if(C.cursor>=C.limit)return;C.cursor++}}function u(){return _<=C.cursor}function c(){return f<=C.cursor}function a(){var e=C.limit-C.cursor;C.find_among_b(g,3)&&(C.cursor=C.limit-e,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del()))}function l(){var e;w=!1,C.ket=C.cursor,C.eq_s_b(1,"e")&&(C.bra=C.cursor,u()&&(e=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-e,C.slice_del(),w=!0,a())))}function m(){var e;u()&&(e=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-e,C.eq_s_b(3,"gem")||(C.cursor=C.limit-e,C.slice_del(),a())))}function d(){var e,r,i,n,o,t,s=C.limit-C.cursor;if(C.ket=C.cursor,e=C.find_among_b(h,5))switch(C.bra=C.cursor,e){case 1:u()&&C.slice_from("heid");break;case 2:m();break;case 3:u()&&C.out_grouping_b(z,97,232)&&C.slice_del()}if(C.cursor=C.limit-s,l(),C.cursor=C.limit-s,C.ket=C.cursor,C.eq_s_b(4,"heid")&&(C.bra=C.cursor,c()&&(r=C.limit-C.cursor,C.eq_s_b(1,"c")||(C.cursor=C.limit-r,C.slice_del(),C.ket=C.cursor,C.eq_s_b(2,"en")&&(C.bra=C.cursor,m())))),C.cursor=C.limit-s,C.ket=C.cursor,e=C.find_among_b(k,6))switch(C.bra=C.cursor,e){case 1:if(c()){if(C.slice_del(),i=C.limit-C.cursor,C.ket=C.cursor,C.eq_s_b(2,"ig")&&(C.bra=C.cursor,c()&&(n=C.limit-C.cursor,!C.eq_s_b(1,"e")))){C.cursor=C.limit-n,C.slice_del();break}C.cursor=C.limit-i,a()}break;case 2:c()&&(o=C.limit-C.cursor,C.eq_s_b(1,"e")||(C.cursor=C.limit-o,C.slice_del()));break;case 3:c()&&(C.slice_del(),l());break;case 4:c()&&C.slice_del();break;case 5:c()&&w&&C.slice_del()}C.cursor=C.limit-s,C.out_grouping_b(j,73,232)&&(t=C.limit-C.cursor,C.find_among_b(v,4)&&C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-t,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del())))}var f,_,w,b=[new r("",-1,6),new r("á",0,1),new r("ä",0,1),new r("é",0,2),new r("ë",0,2),new r("í",0,3),new r("ï",0,3),new r("ó",0,4),new r("ö",0,4),new r("ú",0,5),new r("ü",0,5)],p=[new r("",-1,3),new r("I",0,2),new r("Y",0,1)],g=[new r("dd",-1,-1),new r("kk",-1,-1),new r("tt",-1,-1)],h=[new r("ene",-1,2),new r("se",-1,3),new r("en",-1,2),new r("heden",2,1),new r("s",-1,3)],k=[new r("end",-1,1),new r("ig",-1,2),new r("ing",-1,1),new r("lijk",-1,3),new r("baar",-1,4),new r("bar",-1,5)],v=[new r("aa",-1,-1),new r("ee",-1,-1),new r("oo",-1,-1),new r("uu",-1,-1)],q=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],j=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],z=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],C=new i;this.setCurrent=function(e){C.setCurrent(e)},this.getCurrent=function(){return C.getCurrent()},this.stem=function(){var r=C.cursor;return e(),C.cursor=r,o(),C.limit_backward=r,C.cursor=C.limit,d(),C.cursor=C.limit_backward,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.du.stemmer,"stemmer-du"),e.du.stopWordFilter=e.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),e.Pipeline.registerFunction(e.du.stopWordFilter,"stopWordFilter-du")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.es.min.js b/assets/javascripts/lunr/min/lunr.es.min.js new file mode 100644 index 0000000..2989d34 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.es.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Spanish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,s){"function"==typeof define&&define.amd?define(s):"object"==typeof exports?module.exports=s():s()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.es=function(){this.pipeline.reset(),this.pipeline.add(e.es.trimmer,e.es.stopWordFilter,e.es.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.es.stemmer))},e.es.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.es.trimmer=e.trimmerSupport.generateTrimmer(e.es.wordCharacters),e.Pipeline.registerFunction(e.es.trimmer,"trimmer-es"),e.es.stemmer=function(){var s=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,n=new function(){function e(){if(A.out_grouping(x,97,252)){for(;!A.in_grouping(x,97,252);){if(A.cursor>=A.limit)return!0;A.cursor++}return!1}return!0}function n(){if(A.in_grouping(x,97,252)){var s=A.cursor;if(e()){if(A.cursor=s,!A.in_grouping(x,97,252))return!0;for(;!A.out_grouping(x,97,252);){if(A.cursor>=A.limit)return!0;A.cursor++}}return!1}return!0}function i(){var s,r=A.cursor;if(n()){if(A.cursor=r,!A.out_grouping(x,97,252))return;if(s=A.cursor,e()){if(A.cursor=s,!A.in_grouping(x,97,252)||A.cursor>=A.limit)return;A.cursor++}}g=A.cursor}function a(){for(;!A.in_grouping(x,97,252);){if(A.cursor>=A.limit)return!1;A.cursor++}for(;!A.out_grouping(x,97,252);){if(A.cursor>=A.limit)return!1;A.cursor++}return!0}function t(){var e=A.cursor;g=A.limit,p=g,v=g,i(),A.cursor=e,a()&&(p=A.cursor,a()&&(v=A.cursor))}function o(){for(var e;;){if(A.bra=A.cursor,e=A.find_among(k,6))switch(A.ket=A.cursor,e){case 1:A.slice_from("a");continue;case 2:A.slice_from("e");continue;case 3:A.slice_from("i");continue;case 4:A.slice_from("o");continue;case 5:A.slice_from("u");continue;case 6:if(A.cursor>=A.limit)break;A.cursor++;continue}break}}function u(){return g<=A.cursor}function w(){return p<=A.cursor}function c(){return v<=A.cursor}function m(){var e;if(A.ket=A.cursor,A.find_among_b(y,13)&&(A.bra=A.cursor,(e=A.find_among_b(q,11))&&u()))switch(e){case 1:A.bra=A.cursor,A.slice_from("iendo");break;case 2:A.bra=A.cursor,A.slice_from("ando");break;case 3:A.bra=A.cursor,A.slice_from("ar");break;case 4:A.bra=A.cursor,A.slice_from("er");break;case 5:A.bra=A.cursor,A.slice_from("ir");break;case 6:A.slice_del();break;case 7:A.eq_s_b(1,"u")&&A.slice_del()}}function l(e,s){if(!c())return!0;A.slice_del(),A.ket=A.cursor;var r=A.find_among_b(e,s);return r&&(A.bra=A.cursor,1==r&&c()&&A.slice_del()),!1}function d(e){return!c()||(A.slice_del(),A.ket=A.cursor,A.eq_s_b(2,e)&&(A.bra=A.cursor,c()&&A.slice_del()),!1)}function b(){var e;if(A.ket=A.cursor,e=A.find_among_b(S,46)){switch(A.bra=A.cursor,e){case 1:if(!c())return!1;A.slice_del();break;case 2:if(d("ic"))return!1;break;case 3:if(!c())return!1;A.slice_from("log");break;case 4:if(!c())return!1;A.slice_from("u");break;case 5:if(!c())return!1;A.slice_from("ente");break;case 6:if(!w())return!1;A.slice_del(),A.ket=A.cursor,e=A.find_among_b(C,4),e&&(A.bra=A.cursor,c()&&(A.slice_del(),1==e&&(A.ket=A.cursor,A.eq_s_b(2,"at")&&(A.bra=A.cursor,c()&&A.slice_del()))));break;case 7:if(l(P,3))return!1;break;case 8:if(l(F,3))return!1;break;case 9:if(d("at"))return!1}return!0}return!1}function f(){var e,s;if(A.cursor>=g&&(s=A.limit_backward,A.limit_backward=g,A.ket=A.cursor,e=A.find_among_b(W,12),A.limit_backward=s,e)){if(A.bra=A.cursor,1==e){if(!A.eq_s_b(1,"u"))return!1;A.slice_del()}return!0}return!1}function _(){var e,s,r,n;if(A.cursor>=g&&(s=A.limit_backward,A.limit_backward=g,A.ket=A.cursor,e=A.find_among_b(L,96),A.limit_backward=s,e))switch(A.bra=A.cursor,e){case 1:r=A.limit-A.cursor,A.eq_s_b(1,"u")?(n=A.limit-A.cursor,A.eq_s_b(1,"g")?A.cursor=A.limit-n:A.cursor=A.limit-r):A.cursor=A.limit-r,A.bra=A.cursor;case 2:A.slice_del()}}function h(){var e,s;if(A.ket=A.cursor,e=A.find_among_b(z,8))switch(A.bra=A.cursor,e){case 1:u()&&A.slice_del();break;case 2:u()&&(A.slice_del(),A.ket=A.cursor,A.eq_s_b(1,"u")&&(A.bra=A.cursor,s=A.limit-A.cursor,A.eq_s_b(1,"g")&&(A.cursor=A.limit-s,u()&&A.slice_del())))}}var v,p,g,k=[new s("",-1,6),new s("á",0,1),new s("é",0,2),new s("í",0,3),new s("ó",0,4),new s("ú",0,5)],y=[new s("la",-1,-1),new s("sela",0,-1),new s("le",-1,-1),new s("me",-1,-1),new s("se",-1,-1),new s("lo",-1,-1),new s("selo",5,-1),new s("las",-1,-1),new s("selas",7,-1),new s("les",-1,-1),new s("los",-1,-1),new s("selos",10,-1),new s("nos",-1,-1)],q=[new s("ando",-1,6),new s("iendo",-1,6),new s("yendo",-1,7),new s("ándo",-1,2),new s("iéndo",-1,1),new s("ar",-1,6),new s("er",-1,6),new s("ir",-1,6),new s("ár",-1,3),new s("ér",-1,4),new s("ír",-1,5)],C=[new s("ic",-1,-1),new s("ad",-1,-1),new s("os",-1,-1),new s("iv",-1,1)],P=[new s("able",-1,1),new s("ible",-1,1),new s("ante",-1,1)],F=[new s("ic",-1,1),new s("abil",-1,1),new s("iv",-1,1)],S=[new s("ica",-1,1),new s("ancia",-1,2),new s("encia",-1,5),new s("adora",-1,2),new s("osa",-1,1),new s("ista",-1,1),new s("iva",-1,9),new s("anza",-1,1),new s("logía",-1,3),new s("idad",-1,8),new s("able",-1,1),new s("ible",-1,1),new s("ante",-1,2),new s("mente",-1,7),new s("amente",13,6),new s("ación",-1,2),new s("ución",-1,4),new s("ico",-1,1),new s("ismo",-1,1),new s("oso",-1,1),new s("amiento",-1,1),new s("imiento",-1,1),new s("ivo",-1,9),new s("ador",-1,2),new s("icas",-1,1),new s("ancias",-1,2),new s("encias",-1,5),new s("adoras",-1,2),new s("osas",-1,1),new s("istas",-1,1),new s("ivas",-1,9),new s("anzas",-1,1),new s("logías",-1,3),new s("idades",-1,8),new s("ables",-1,1),new s("ibles",-1,1),new s("aciones",-1,2),new s("uciones",-1,4),new s("adores",-1,2),new s("antes",-1,2),new s("icos",-1,1),new s("ismos",-1,1),new s("osos",-1,1),new s("amientos",-1,1),new s("imientos",-1,1),new s("ivos",-1,9)],W=[new s("ya",-1,1),new s("ye",-1,1),new s("yan",-1,1),new s("yen",-1,1),new s("yeron",-1,1),new s("yendo",-1,1),new s("yo",-1,1),new s("yas",-1,1),new s("yes",-1,1),new s("yais",-1,1),new s("yamos",-1,1),new s("yó",-1,1)],L=[new s("aba",-1,2),new s("ada",-1,2),new s("ida",-1,2),new s("ara",-1,2),new s("iera",-1,2),new s("ía",-1,2),new s("aría",5,2),new s("ería",5,2),new s("iría",5,2),new s("ad",-1,2),new s("ed",-1,2),new s("id",-1,2),new s("ase",-1,2),new s("iese",-1,2),new s("aste",-1,2),new s("iste",-1,2),new s("an",-1,2),new s("aban",16,2),new s("aran",16,2),new s("ieran",16,2),new s("ían",16,2),new s("arían",20,2),new s("erían",20,2),new s("irían",20,2),new s("en",-1,1),new s("asen",24,2),new s("iesen",24,2),new s("aron",-1,2),new s("ieron",-1,2),new s("arán",-1,2),new s("erán",-1,2),new s("irán",-1,2),new s("ado",-1,2),new s("ido",-1,2),new s("ando",-1,2),new s("iendo",-1,2),new s("ar",-1,2),new s("er",-1,2),new s("ir",-1,2),new s("as",-1,2),new s("abas",39,2),new s("adas",39,2),new s("idas",39,2),new s("aras",39,2),new s("ieras",39,2),new s("ías",39,2),new s("arías",45,2),new s("erías",45,2),new s("irías",45,2),new s("es",-1,1),new s("ases",49,2),new s("ieses",49,2),new s("abais",-1,2),new s("arais",-1,2),new s("ierais",-1,2),new s("íais",-1,2),new s("aríais",55,2),new s("eríais",55,2),new s("iríais",55,2),new s("aseis",-1,2),new s("ieseis",-1,2),new s("asteis",-1,2),new s("isteis",-1,2),new s("áis",-1,2),new s("éis",-1,1),new s("aréis",64,2),new s("eréis",64,2),new s("iréis",64,2),new s("ados",-1,2),new s("idos",-1,2),new s("amos",-1,2),new s("ábamos",70,2),new s("áramos",70,2),new s("iéramos",70,2),new s("íamos",70,2),new s("aríamos",74,2),new s("eríamos",74,2),new s("iríamos",74,2),new s("emos",-1,1),new s("aremos",78,2),new s("eremos",78,2),new s("iremos",78,2),new s("ásemos",78,2),new s("iésemos",78,2),new s("imos",-1,2),new s("arás",-1,2),new s("erás",-1,2),new s("irás",-1,2),new s("ís",-1,2),new s("ará",-1,2),new s("erá",-1,2),new s("irá",-1,2),new s("aré",-1,2),new s("eré",-1,2),new s("iré",-1,2),new s("ió",-1,2)],z=[new s("a",-1,1),new s("e",-1,2),new s("o",-1,1),new s("os",-1,1),new s("á",-1,1),new s("é",-1,2),new s("í",-1,1),new s("ó",-1,1)],x=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,4,10],A=new r;this.setCurrent=function(e){A.setCurrent(e)},this.getCurrent=function(){return A.getCurrent()},this.stem=function(){var e=A.cursor;return t(),A.limit_backward=e,A.cursor=A.limit,m(),A.cursor=A.limit,b()||(A.cursor=A.limit,f()||(A.cursor=A.limit,_())),A.cursor=A.limit,h(),A.cursor=A.limit_backward,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.es.stemmer,"stemmer-es"),e.es.stopWordFilter=e.generateStopWordFilter("a al algo algunas algunos ante antes como con contra cual cuando de del desde donde durante e el ella ellas ellos en entre era erais eran eras eres es esa esas ese eso esos esta estaba estabais estaban estabas estad estada estadas estado estados estamos estando estar estaremos estará estarán estarás estaré estaréis estaría estaríais estaríamos estarían estarías estas este estemos esto estos estoy estuve estuviera estuvierais estuvieran estuvieras estuvieron estuviese estuvieseis estuviesen estuvieses estuvimos estuviste estuvisteis estuviéramos estuviésemos estuvo está estábamos estáis están estás esté estéis estén estés fue fuera fuerais fueran fueras fueron fuese fueseis fuesen fueses fui fuimos fuiste fuisteis fuéramos fuésemos ha habida habidas habido habidos habiendo habremos habrá habrán habrás habré habréis habría habríais habríamos habrían habrías habéis había habíais habíamos habían habías han has hasta hay haya hayamos hayan hayas hayáis he hemos hube hubiera hubierais hubieran hubieras hubieron hubiese hubieseis hubiesen hubieses hubimos hubiste hubisteis hubiéramos hubiésemos hubo la las le les lo los me mi mis mucho muchos muy más mí mía mías mío míos nada ni no nos nosotras nosotros nuestra nuestras nuestro nuestros o os otra otras otro otros para pero poco por porque que quien quienes qué se sea seamos sean seas seremos será serán serás seré seréis sería seríais seríamos serían serías seáis sido siendo sin sobre sois somos son soy su sus suya suyas suyo suyos sí también tanto te tendremos tendrá tendrán tendrás tendré tendréis tendría tendríais tendríamos tendrían tendrías tened tenemos tenga tengamos tengan tengas tengo tengáis tenida tenidas tenido tenidos teniendo tenéis tenía teníais teníamos tenían tenías ti tiene tienen tienes todo todos tu tus tuve tuviera tuvierais tuvieran tuvieras tuvieron tuviese tuvieseis tuviesen tuvieses tuvimos tuviste tuvisteis tuviéramos tuviésemos tuvo tuya tuyas tuyo tuyos tú un una uno unos vosotras vosotros vuestra vuestras vuestro vuestros y ya yo él éramos".split(" ")),e.Pipeline.registerFunction(e.es.stopWordFilter,"stopWordFilter-es")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.fi.min.js b/assets/javascripts/lunr/min/lunr.fi.min.js new file mode 100644 index 0000000..29f5dfc --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.fi.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Finnish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(i,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():e()(i.lunr)}(this,function(){return function(i){if(void 0===i)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===i.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");i.fi=function(){this.pipeline.reset(),this.pipeline.add(i.fi.trimmer,i.fi.stopWordFilter,i.fi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(i.fi.stemmer))},i.fi.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",i.fi.trimmer=i.trimmerSupport.generateTrimmer(i.fi.wordCharacters),i.Pipeline.registerFunction(i.fi.trimmer,"trimmer-fi"),i.fi.stemmer=function(){var e=i.stemmerSupport.Among,r=i.stemmerSupport.SnowballProgram,n=new function(){function i(){f=A.limit,d=f,n()||(f=A.cursor,n()||(d=A.cursor))}function n(){for(var i;;){if(i=A.cursor,A.in_grouping(W,97,246))break;if(A.cursor=i,i>=A.limit)return!0;A.cursor++}for(A.cursor=i;!A.out_grouping(W,97,246);){if(A.cursor>=A.limit)return!0;A.cursor++}return!1}function t(){return d<=A.cursor}function s(){var i,e;if(A.cursor>=f)if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,i=A.find_among_b(h,10)){switch(A.bra=A.cursor,A.limit_backward=e,i){case 1:if(!A.in_grouping_b(x,97,246))return;break;case 2:if(!t())return}A.slice_del()}else A.limit_backward=e}function o(){var i,e,r;if(A.cursor>=f)if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,i=A.find_among_b(v,9))switch(A.bra=A.cursor,A.limit_backward=e,i){case 1:r=A.limit-A.cursor,A.eq_s_b(1,"k")||(A.cursor=A.limit-r,A.slice_del());break;case 2:A.slice_del(),A.ket=A.cursor,A.eq_s_b(3,"kse")&&(A.bra=A.cursor,A.slice_from("ksi"));break;case 3:A.slice_del();break;case 4:A.find_among_b(p,6)&&A.slice_del();break;case 5:A.find_among_b(g,6)&&A.slice_del();break;case 6:A.find_among_b(j,2)&&A.slice_del()}else A.limit_backward=e}function l(){return A.find_among_b(q,7)}function a(){return A.eq_s_b(1,"i")&&A.in_grouping_b(L,97,246)}function u(){var i,e,r;if(A.cursor>=f)if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,i=A.find_among_b(C,30)){switch(A.bra=A.cursor,A.limit_backward=e,i){case 1:if(!A.eq_s_b(1,"a"))return;break;case 2:case 9:if(!A.eq_s_b(1,"e"))return;break;case 3:if(!A.eq_s_b(1,"i"))return;break;case 4:if(!A.eq_s_b(1,"o"))return;break;case 5:if(!A.eq_s_b(1,"ä"))return;break;case 6:if(!A.eq_s_b(1,"ö"))return;break;case 7:if(r=A.limit-A.cursor,!l()&&(A.cursor=A.limit-r,!A.eq_s_b(2,"ie"))){A.cursor=A.limit-r;break}if(A.cursor=A.limit-r,A.cursor<=A.limit_backward){A.cursor=A.limit-r;break}A.cursor--,A.bra=A.cursor;break;case 8:if(!A.in_grouping_b(W,97,246)||!A.out_grouping_b(W,97,246))return}A.slice_del(),k=!0}else A.limit_backward=e}function c(){var i,e,r;if(A.cursor>=d)if(e=A.limit_backward,A.limit_backward=d,A.ket=A.cursor,i=A.find_among_b(P,14)){if(A.bra=A.cursor,A.limit_backward=e,1==i){if(r=A.limit-A.cursor,A.eq_s_b(2,"po"))return;A.cursor=A.limit-r}A.slice_del()}else A.limit_backward=e}function m(){var i;A.cursor>=f&&(i=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,A.find_among_b(F,2)?(A.bra=A.cursor,A.limit_backward=i,A.slice_del()):A.limit_backward=i)}function w(){var i,e,r,n,t,s;if(A.cursor>=f){if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,A.eq_s_b(1,"t")&&(A.bra=A.cursor,r=A.limit-A.cursor,A.in_grouping_b(W,97,246)&&(A.cursor=A.limit-r,A.slice_del(),A.limit_backward=e,n=A.limit-A.cursor,A.cursor>=d&&(A.cursor=d,t=A.limit_backward,A.limit_backward=A.cursor,A.cursor=A.limit-n,A.ket=A.cursor,i=A.find_among_b(S,2))))){if(A.bra=A.cursor,A.limit_backward=t,1==i){if(s=A.limit-A.cursor,A.eq_s_b(2,"po"))return;A.cursor=A.limit-s}return void A.slice_del()}A.limit_backward=e}}function _(){var i,e,r,n;if(A.cursor>=f){for(i=A.limit_backward,A.limit_backward=f,e=A.limit-A.cursor,l()&&(A.cursor=A.limit-e,A.ket=A.cursor,A.cursor>A.limit_backward&&(A.cursor--,A.bra=A.cursor,A.slice_del())),A.cursor=A.limit-e,A.ket=A.cursor,A.in_grouping_b(y,97,228)&&(A.bra=A.cursor,A.out_grouping_b(W,97,246)&&A.slice_del()),A.cursor=A.limit-e,A.ket=A.cursor,A.eq_s_b(1,"j")&&(A.bra=A.cursor,r=A.limit-A.cursor,A.eq_s_b(1,"o")?A.slice_del():(A.cursor=A.limit-r,A.eq_s_b(1,"u")&&A.slice_del())),A.cursor=A.limit-e,A.ket=A.cursor,A.eq_s_b(1,"o")&&(A.bra=A.cursor,A.eq_s_b(1,"j")&&A.slice_del()),A.cursor=A.limit-e,A.limit_backward=i;;){if(n=A.limit-A.cursor,A.out_grouping_b(W,97,246)){A.cursor=A.limit-n;break}if(A.cursor=A.limit-n,A.cursor<=A.limit_backward)return;A.cursor--}A.ket=A.cursor,A.cursor>A.limit_backward&&(A.cursor--,A.bra=A.cursor,b=A.slice_to(),A.eq_v_b(b)&&A.slice_del())}}var k,b,d,f,h=[new e("pa",-1,1),new e("sti",-1,2),new e("kaan",-1,1),new e("han",-1,1),new e("kin",-1,1),new e("hän",-1,1),new e("kään",-1,1),new e("ko",-1,1),new e("pä",-1,1),new e("kö",-1,1)],p=[new e("lla",-1,-1),new e("na",-1,-1),new e("ssa",-1,-1),new e("ta",-1,-1),new e("lta",3,-1),new e("sta",3,-1)],g=[new e("llä",-1,-1),new e("nä",-1,-1),new e("ssä",-1,-1),new e("tä",-1,-1),new e("ltä",3,-1),new e("stä",3,-1)],j=[new e("lle",-1,-1),new e("ine",-1,-1)],v=[new e("nsa",-1,3),new e("mme",-1,3),new e("nne",-1,3),new e("ni",-1,2),new e("si",-1,1),new e("an",-1,4),new e("en",-1,6),new e("än",-1,5),new e("nsä",-1,3)],q=[new e("aa",-1,-1),new e("ee",-1,-1),new e("ii",-1,-1),new e("oo",-1,-1),new e("uu",-1,-1),new e("ää",-1,-1),new e("öö",-1,-1)],C=[new e("a",-1,8),new e("lla",0,-1),new e("na",0,-1),new e("ssa",0,-1),new e("ta",0,-1),new e("lta",4,-1),new e("sta",4,-1),new e("tta",4,9),new e("lle",-1,-1),new e("ine",-1,-1),new e("ksi",-1,-1),new e("n",-1,7),new e("han",11,1),new e("den",11,-1,a),new e("seen",11,-1,l),new e("hen",11,2),new e("tten",11,-1,a),new e("hin",11,3),new e("siin",11,-1,a),new e("hon",11,4),new e("hän",11,5),new e("hön",11,6),new e("ä",-1,8),new e("llä",22,-1),new e("nä",22,-1),new e("ssä",22,-1),new e("tä",22,-1),new e("ltä",26,-1),new e("stä",26,-1),new e("ttä",26,9)],P=[new e("eja",-1,-1),new e("mma",-1,1),new e("imma",1,-1),new e("mpa",-1,1),new e("impa",3,-1),new e("mmi",-1,1),new e("immi",5,-1),new e("mpi",-1,1),new e("impi",7,-1),new e("ejä",-1,-1),new e("mmä",-1,1),new e("immä",10,-1),new e("mpä",-1,1),new e("impä",12,-1)],F=[new e("i",-1,-1),new e("j",-1,-1)],S=[new e("mma",-1,1),new e("imma",0,-1)],y=[17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8],W=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],L=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],x=[17,97,24,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],A=new r;this.setCurrent=function(i){A.setCurrent(i)},this.getCurrent=function(){return A.getCurrent()},this.stem=function(){var e=A.cursor;return i(),k=!1,A.limit_backward=e,A.cursor=A.limit,s(),A.cursor=A.limit,o(),A.cursor=A.limit,u(),A.cursor=A.limit,c(),A.cursor=A.limit,k?(m(),A.cursor=A.limit):(A.cursor=A.limit,w(),A.cursor=A.limit),_(),!0}};return function(i){return"function"==typeof i.update?i.update(function(i){return n.setCurrent(i),n.stem(),n.getCurrent()}):(n.setCurrent(i),n.stem(),n.getCurrent())}}(),i.Pipeline.registerFunction(i.fi.stemmer,"stemmer-fi"),i.fi.stopWordFilter=i.generateStopWordFilter("ei eivät emme en et ette että he heidän heidät heihin heille heillä heiltä heissä heistä heitä hän häneen hänelle hänellä häneltä hänen hänessä hänestä hänet häntä itse ja johon joiden joihin joiksi joilla joille joilta joina joissa joista joita joka joksi jolla jolle jolta jona jonka jos jossa josta jota jotka kanssa keiden keihin keiksi keille keillä keiltä keinä keissä keistä keitä keneen keneksi kenelle kenellä keneltä kenen kenenä kenessä kenestä kenet ketkä ketkä ketä koska kuin kuka kun me meidän meidät meihin meille meillä meiltä meissä meistä meitä mihin miksi mikä mille millä miltä minkä minkä minua minulla minulle minulta minun minussa minusta minut minuun minä minä missä mistä mitkä mitä mukaan mutta ne niiden niihin niiksi niille niillä niiltä niin niin niinä niissä niistä niitä noiden noihin noiksi noilla noille noilta noin noina noissa noista noita nuo nyt näiden näihin näiksi näille näillä näiltä näinä näissä näistä näitä nämä ole olemme olen olet olette oli olimme olin olisi olisimme olisin olisit olisitte olisivat olit olitte olivat olla olleet ollut on ovat poikki se sekä sen siihen siinä siitä siksi sille sillä sillä siltä sinua sinulla sinulle sinulta sinun sinussa sinusta sinut sinuun sinä sinä sitä tai te teidän teidät teihin teille teillä teiltä teissä teistä teitä tuo tuohon tuoksi tuolla tuolle tuolta tuon tuona tuossa tuosta tuota tähän täksi tälle tällä tältä tämä tämän tänä tässä tästä tätä vaan vai vaikka yli".split(" ")),i.Pipeline.registerFunction(i.fi.stopWordFilter,"stopWordFilter-fi")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.fr.min.js b/assets/javascripts/lunr/min/lunr.fr.min.js new file mode 100644 index 0000000..68cd009 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.fr.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `French` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.fr=function(){this.pipeline.reset(),this.pipeline.add(e.fr.trimmer,e.fr.stopWordFilter,e.fr.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.fr.stemmer))},e.fr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.fr.trimmer=e.trimmerSupport.generateTrimmer(e.fr.wordCharacters),e.Pipeline.registerFunction(e.fr.trimmer,"trimmer-fr"),e.fr.stemmer=function(){var r=e.stemmerSupport.Among,s=e.stemmerSupport.SnowballProgram,i=new function(){function e(e,r,s){return!(!W.eq_s(1,e)||(W.ket=W.cursor,!W.in_grouping(F,97,251)))&&(W.slice_from(r),W.cursor=s,!0)}function i(e,r,s){return!!W.eq_s(1,e)&&(W.ket=W.cursor,W.slice_from(r),W.cursor=s,!0)}function n(){for(var r,s;;){if(r=W.cursor,W.in_grouping(F,97,251)){if(W.bra=W.cursor,s=W.cursor,e("u","U",r))continue;if(W.cursor=s,e("i","I",r))continue;if(W.cursor=s,i("y","Y",r))continue}if(W.cursor=r,W.bra=r,!e("y","Y",r)){if(W.cursor=r,W.eq_s(1,"q")&&(W.bra=W.cursor,i("u","U",r)))continue;if(W.cursor=r,r>=W.limit)return;W.cursor++}}}function t(){for(;!W.in_grouping(F,97,251);){if(W.cursor>=W.limit)return!0;W.cursor++}for(;!W.out_grouping(F,97,251);){if(W.cursor>=W.limit)return!0;W.cursor++}return!1}function u(){var e=W.cursor;if(q=W.limit,g=q,p=q,W.in_grouping(F,97,251)&&W.in_grouping(F,97,251)&&W.cursor=W.limit){W.cursor=q;break}W.cursor++}while(!W.in_grouping(F,97,251))}q=W.cursor,W.cursor=e,t()||(g=W.cursor,t()||(p=W.cursor))}function o(){for(var e,r;;){if(r=W.cursor,W.bra=r,!(e=W.find_among(h,4)))break;switch(W.ket=W.cursor,e){case 1:W.slice_from("i");break;case 2:W.slice_from("u");break;case 3:W.slice_from("y");break;case 4:if(W.cursor>=W.limit)return;W.cursor++}}}function c(){return q<=W.cursor}function a(){return g<=W.cursor}function l(){return p<=W.cursor}function w(){var e,r;if(W.ket=W.cursor,e=W.find_among_b(C,43)){switch(W.bra=W.cursor,e){case 1:if(!l())return!1;W.slice_del();break;case 2:if(!l())return!1;W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"ic")&&(W.bra=W.cursor,l()?W.slice_del():W.slice_from("iqU"));break;case 3:if(!l())return!1;W.slice_from("log");break;case 4:if(!l())return!1;W.slice_from("u");break;case 5:if(!l())return!1;W.slice_from("ent");break;case 6:if(!c())return!1;if(W.slice_del(),W.ket=W.cursor,e=W.find_among_b(z,6))switch(W.bra=W.cursor,e){case 1:l()&&(W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"at")&&(W.bra=W.cursor,l()&&W.slice_del()));break;case 2:l()?W.slice_del():a()&&W.slice_from("eux");break;case 3:l()&&W.slice_del();break;case 4:c()&&W.slice_from("i")}break;case 7:if(!l())return!1;if(W.slice_del(),W.ket=W.cursor,e=W.find_among_b(y,3))switch(W.bra=W.cursor,e){case 1:l()?W.slice_del():W.slice_from("abl");break;case 2:l()?W.slice_del():W.slice_from("iqU");break;case 3:l()&&W.slice_del()}break;case 8:if(!l())return!1;if(W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"at")&&(W.bra=W.cursor,l()&&(W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"ic")))){W.bra=W.cursor,l()?W.slice_del():W.slice_from("iqU");break}break;case 9:W.slice_from("eau");break;case 10:if(!a())return!1;W.slice_from("al");break;case 11:if(l())W.slice_del();else{if(!a())return!1;W.slice_from("eux")}break;case 12:if(!a()||!W.out_grouping_b(F,97,251))return!1;W.slice_del();break;case 13:return c()&&W.slice_from("ant"),!1;case 14:return c()&&W.slice_from("ent"),!1;case 15:return r=W.limit-W.cursor,W.in_grouping_b(F,97,251)&&c()&&(W.cursor=W.limit-r,W.slice_del()),!1}return!0}return!1}function f(){var e,r;if(W.cursor=q){if(s=W.limit_backward,W.limit_backward=q,W.ket=W.cursor,e=W.find_among_b(P,7))switch(W.bra=W.cursor,e){case 1:if(l()){if(i=W.limit-W.cursor,!W.eq_s_b(1,"s")&&(W.cursor=W.limit-i,!W.eq_s_b(1,"t")))break;W.slice_del()}break;case 2:W.slice_from("i");break;case 3:W.slice_del();break;case 4:W.eq_s_b(2,"gu")&&W.slice_del()}W.limit_backward=s}}function b(){var e=W.limit-W.cursor;W.find_among_b(U,5)&&(W.cursor=W.limit-e,W.ket=W.cursor,W.cursor>W.limit_backward&&(W.cursor--,W.bra=W.cursor,W.slice_del()))}function d(){for(var e,r=1;W.out_grouping_b(F,97,251);)r--;if(r<=0){if(W.ket=W.cursor,e=W.limit-W.cursor,!W.eq_s_b(1,"é")&&(W.cursor=W.limit-e,!W.eq_s_b(1,"è")))return;W.bra=W.cursor,W.slice_from("e")}}function k(){if(!w()&&(W.cursor=W.limit,!f()&&(W.cursor=W.limit,!m())))return W.cursor=W.limit,void _();W.cursor=W.limit,W.ket=W.cursor,W.eq_s_b(1,"Y")?(W.bra=W.cursor,W.slice_from("i")):(W.cursor=W.limit,W.eq_s_b(1,"ç")&&(W.bra=W.cursor,W.slice_from("c")))}var p,g,q,v=[new r("col",-1,-1),new r("par",-1,-1),new r("tap",-1,-1)],h=[new r("",-1,4),new r("I",0,1),new r("U",0,2),new r("Y",0,3)],z=[new r("iqU",-1,3),new r("abl",-1,3),new r("Ièr",-1,4),new r("ièr",-1,4),new r("eus",-1,2),new r("iv",-1,1)],y=[new r("ic",-1,2),new r("abil",-1,1),new r("iv",-1,3)],C=[new r("iqUe",-1,1),new r("atrice",-1,2),new r("ance",-1,1),new r("ence",-1,5),new r("logie",-1,3),new r("able",-1,1),new r("isme",-1,1),new r("euse",-1,11),new r("iste",-1,1),new r("ive",-1,8),new r("if",-1,8),new r("usion",-1,4),new r("ation",-1,2),new r("ution",-1,4),new r("ateur",-1,2),new r("iqUes",-1,1),new r("atrices",-1,2),new r("ances",-1,1),new r("ences",-1,5),new r("logies",-1,3),new r("ables",-1,1),new r("ismes",-1,1),new r("euses",-1,11),new r("istes",-1,1),new r("ives",-1,8),new r("ifs",-1,8),new r("usions",-1,4),new r("ations",-1,2),new r("utions",-1,4),new r("ateurs",-1,2),new r("ments",-1,15),new r("ements",30,6),new r("issements",31,12),new r("ités",-1,7),new r("ment",-1,15),new r("ement",34,6),new r("issement",35,12),new r("amment",34,13),new r("emment",34,14),new r("aux",-1,10),new r("eaux",39,9),new r("eux",-1,1),new r("ité",-1,7)],x=[new r("ira",-1,1),new r("ie",-1,1),new r("isse",-1,1),new r("issante",-1,1),new r("i",-1,1),new r("irai",4,1),new r("ir",-1,1),new r("iras",-1,1),new r("ies",-1,1),new r("îmes",-1,1),new r("isses",-1,1),new r("issantes",-1,1),new r("îtes",-1,1),new r("is",-1,1),new r("irais",13,1),new r("issais",13,1),new r("irions",-1,1),new r("issions",-1,1),new r("irons",-1,1),new r("issons",-1,1),new r("issants",-1,1),new r("it",-1,1),new r("irait",21,1),new r("issait",21,1),new r("issant",-1,1),new r("iraIent",-1,1),new r("issaIent",-1,1),new r("irent",-1,1),new r("issent",-1,1),new r("iront",-1,1),new r("ît",-1,1),new r("iriez",-1,1),new r("issiez",-1,1),new r("irez",-1,1),new r("issez",-1,1)],I=[new r("a",-1,3),new r("era",0,2),new r("asse",-1,3),new r("ante",-1,3),new r("ée",-1,2),new r("ai",-1,3),new r("erai",5,2),new r("er",-1,2),new r("as",-1,3),new r("eras",8,2),new r("âmes",-1,3),new r("asses",-1,3),new r("antes",-1,3),new r("âtes",-1,3),new r("ées",-1,2),new r("ais",-1,3),new r("erais",15,2),new r("ions",-1,1),new r("erions",17,2),new r("assions",17,3),new r("erons",-1,2),new r("ants",-1,3),new r("és",-1,2),new r("ait",-1,3),new r("erait",23,2),new r("ant",-1,3),new r("aIent",-1,3),new r("eraIent",26,2),new r("èrent",-1,2),new r("assent",-1,3),new r("eront",-1,2),new r("ât",-1,3),new r("ez",-1,2),new r("iez",32,2),new r("eriez",33,2),new r("assiez",33,3),new r("erez",32,2),new r("é",-1,2)],P=[new r("e",-1,3),new r("Ière",0,2),new r("ière",0,2),new r("ion",-1,1),new r("Ier",-1,2),new r("ier",-1,2),new r("ë",-1,4)],U=[new r("ell",-1,-1),new r("eill",-1,-1),new r("enn",-1,-1),new r("onn",-1,-1),new r("ett",-1,-1)],F=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,128,130,103,8,5],S=[1,65,20,0,0,0,0,0,0,0,0,0,0,0,0,0,128],W=new s;this.setCurrent=function(e){W.setCurrent(e)},this.getCurrent=function(){return W.getCurrent()},this.stem=function(){var e=W.cursor;return n(),W.cursor=e,u(),W.limit_backward=e,W.cursor=W.limit,k(),W.cursor=W.limit,b(),W.cursor=W.limit,d(),W.cursor=W.limit_backward,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.fr.stemmer,"stemmer-fr"),e.fr.stopWordFilter=e.generateStopWordFilter("ai aie aient aies ait as au aura aurai auraient aurais aurait auras aurez auriez aurions aurons auront aux avaient avais avait avec avez aviez avions avons ayant ayez ayons c ce ceci celà ces cet cette d dans de des du elle en es est et eu eue eues eurent eus eusse eussent eusses eussiez eussions eut eux eûmes eût eûtes furent fus fusse fussent fusses fussiez fussions fut fûmes fût fûtes ici il ils j je l la le les leur leurs lui m ma mais me mes moi mon même n ne nos notre nous on ont ou par pas pour qu que quel quelle quelles quels qui s sa sans se sera serai seraient serais serait seras serez seriez serions serons seront ses soi soient sois soit sommes son sont soyez soyons suis sur t ta te tes toi ton tu un une vos votre vous y à étaient étais était étant étiez étions été étée étées étés êtes".split(" ")),e.Pipeline.registerFunction(e.fr.stopWordFilter,"stopWordFilter-fr")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.hi.min.js b/assets/javascripts/lunr/min/lunr.hi.min.js new file mode 100644 index 0000000..7dbc414 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.hi.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hi=function(){this.pipeline.reset(),this.pipeline.add(e.hi.trimmer,e.hi.stopWordFilter,e.hi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hi.stemmer))},e.hi.wordCharacters="ऀ-ःऄ-एऐ-टठ-यर-िी-ॏॐ-य़ॠ-९॰-ॿa-zA-Za-zA-Z0-90-9",e.hi.trimmer=e.trimmerSupport.generateTrimmer(e.hi.wordCharacters),e.Pipeline.registerFunction(e.hi.trimmer,"trimmer-hi"),e.hi.stopWordFilter=e.generateStopWordFilter("अत अपना अपनी अपने अभी अंदर आदि आप इत्यादि इन इनका इन्हीं इन्हें इन्हों इस इसका इसकी इसके इसमें इसी इसे उन उनका उनकी उनके उनको उन्हीं उन्हें उन्हों उस उसके उसी उसे एक एवं एस ऐसे और कई कर करता करते करना करने करें कहते कहा का काफ़ी कि कितना किन्हें किन्हों किया किर किस किसी किसे की कुछ कुल के को कोई कौन कौनसा गया घर जब जहाँ जा जितना जिन जिन्हें जिन्हों जिस जिसे जीधर जैसा जैसे जो तक तब तरह तिन तिन्हें तिन्हों तिस तिसे तो था थी थे दबारा दिया दुसरा दूसरे दो द्वारा न नके नहीं ना निहायत नीचे ने पर पहले पूरा पे फिर बनी बही बहुत बाद बाला बिलकुल भी भीतर मगर मानो मे में यदि यह यहाँ यही या यिह ये रखें रहा रहे ऱ्वासा लिए लिये लेकिन व वग़ैरह वर्ग वह वहाँ वहीं वाले वुह वे वो सकता सकते सबसे सभी साथ साबुत साभ सारा से सो संग ही हुआ हुई हुए है हैं हो होता होती होते होना होने".split(" ")),e.hi.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.hi.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var t=i.toString().toLowerCase().replace(/^\s+/,"");return r.cut(t).split("|")},e.Pipeline.registerFunction(e.hi.stemmer,"stemmer-hi"),e.Pipeline.registerFunction(e.hi.stopWordFilter,"stopWordFilter-hi")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.hu.min.js b/assets/javascripts/lunr/min/lunr.hu.min.js new file mode 100644 index 0000000..ed9d909 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.hu.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Hungarian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hu=function(){this.pipeline.reset(),this.pipeline.add(e.hu.trimmer,e.hu.stopWordFilter,e.hu.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hu.stemmer))},e.hu.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.hu.trimmer=e.trimmerSupport.generateTrimmer(e.hu.wordCharacters),e.Pipeline.registerFunction(e.hu.trimmer,"trimmer-hu"),e.hu.stemmer=function(){var n=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,i=new function(){function e(){var e,n=L.cursor;if(d=L.limit,L.in_grouping(W,97,252))for(;;){if(e=L.cursor,L.out_grouping(W,97,252))return L.cursor=e,L.find_among(g,8)||(L.cursor=e,e=L.limit)return void(d=e);L.cursor++}if(L.cursor=n,L.out_grouping(W,97,252)){for(;!L.in_grouping(W,97,252);){if(L.cursor>=L.limit)return;L.cursor++}d=L.cursor}}function i(){return d<=L.cursor}function a(){var e;if(L.ket=L.cursor,(e=L.find_among_b(h,2))&&(L.bra=L.cursor,i()))switch(e){case 1:L.slice_from("a");break;case 2:L.slice_from("e")}}function t(){var e=L.limit-L.cursor;return!!L.find_among_b(p,23)&&(L.cursor=L.limit-e,!0)}function s(){if(L.cursor>L.limit_backward){L.cursor--,L.ket=L.cursor;var e=L.cursor-1;L.limit_backward<=e&&e<=L.limit&&(L.cursor=e,L.bra=e,L.slice_del())}}function c(){var e;if(L.ket=L.cursor,(e=L.find_among_b(_,2))&&(L.bra=L.cursor,i())){if((1==e||2==e)&&!t())return;L.slice_del(),s()}}function o(){L.ket=L.cursor,L.find_among_b(v,44)&&(L.bra=L.cursor,i()&&(L.slice_del(),a()))}function w(){var e;if(L.ket=L.cursor,(e=L.find_among_b(z,3))&&(L.bra=L.cursor,i()))switch(e){case 1:L.slice_from("e");break;case 2:case 3:L.slice_from("a")}}function l(){var e;if(L.ket=L.cursor,(e=L.find_among_b(y,6))&&(L.bra=L.cursor,i()))switch(e){case 1:case 2:L.slice_del();break;case 3:L.slice_from("a");break;case 4:L.slice_from("e")}}function u(){var e;if(L.ket=L.cursor,(e=L.find_among_b(j,2))&&(L.bra=L.cursor,i())){if((1==e||2==e)&&!t())return;L.slice_del(),s()}}function m(){var e;if(L.ket=L.cursor,(e=L.find_among_b(C,7))&&(L.bra=L.cursor,i()))switch(e){case 1:L.slice_from("a");break;case 2:L.slice_from("e");break;case 3:case 4:case 5:case 6:case 7:L.slice_del()}}function k(){var e;if(L.ket=L.cursor,(e=L.find_among_b(P,12))&&(L.bra=L.cursor,i()))switch(e){case 1:case 4:case 7:case 9:L.slice_del();break;case 2:case 5:case 8:L.slice_from("e");break;case 3:case 6:L.slice_from("a")}}function f(){var e;if(L.ket=L.cursor,(e=L.find_among_b(F,31))&&(L.bra=L.cursor,i()))switch(e){case 1:case 4:case 7:case 8:case 9:case 12:case 13:case 16:case 17:case 18:L.slice_del();break;case 2:case 5:case 10:case 14:case 19:L.slice_from("a");break;case 3:case 6:case 11:case 15:case 20:L.slice_from("e")}}function b(){var e;if(L.ket=L.cursor,(e=L.find_among_b(S,42))&&(L.bra=L.cursor,i()))switch(e){case 1:case 4:case 5:case 6:case 9:case 10:case 11:case 14:case 15:case 16:case 17:case 20:case 21:case 24:case 25:case 26:case 29:L.slice_del();break;case 2:case 7:case 12:case 18:case 22:case 27:L.slice_from("a");break;case 3:case 8:case 13:case 19:case 23:case 28:L.slice_from("e")}}var d,g=[new n("cs",-1,-1),new n("dzs",-1,-1),new n("gy",-1,-1),new n("ly",-1,-1),new n("ny",-1,-1),new n("sz",-1,-1),new n("ty",-1,-1),new n("zs",-1,-1)],h=[new n("á",-1,1),new n("é",-1,2)],p=[new n("bb",-1,-1),new n("cc",-1,-1),new n("dd",-1,-1),new n("ff",-1,-1),new n("gg",-1,-1),new n("jj",-1,-1),new n("kk",-1,-1),new n("ll",-1,-1),new n("mm",-1,-1),new n("nn",-1,-1),new n("pp",-1,-1),new n("rr",-1,-1),new n("ccs",-1,-1),new n("ss",-1,-1),new n("zzs",-1,-1),new n("tt",-1,-1),new n("vv",-1,-1),new n("ggy",-1,-1),new n("lly",-1,-1),new n("nny",-1,-1),new n("tty",-1,-1),new n("ssz",-1,-1),new n("zz",-1,-1)],_=[new n("al",-1,1),new n("el",-1,2)],v=[new n("ba",-1,-1),new n("ra",-1,-1),new n("be",-1,-1),new n("re",-1,-1),new n("ig",-1,-1),new n("nak",-1,-1),new n("nek",-1,-1),new n("val",-1,-1),new n("vel",-1,-1),new n("ul",-1,-1),new n("nál",-1,-1),new n("nél",-1,-1),new n("ból",-1,-1),new n("ról",-1,-1),new n("tól",-1,-1),new n("bõl",-1,-1),new n("rõl",-1,-1),new n("tõl",-1,-1),new n("ül",-1,-1),new n("n",-1,-1),new n("an",19,-1),new n("ban",20,-1),new n("en",19,-1),new n("ben",22,-1),new n("képpen",22,-1),new n("on",19,-1),new n("ön",19,-1),new n("képp",-1,-1),new n("kor",-1,-1),new n("t",-1,-1),new n("at",29,-1),new n("et",29,-1),new n("ként",29,-1),new n("anként",32,-1),new n("enként",32,-1),new n("onként",32,-1),new n("ot",29,-1),new n("ért",29,-1),new n("öt",29,-1),new n("hez",-1,-1),new n("hoz",-1,-1),new n("höz",-1,-1),new n("vá",-1,-1),new n("vé",-1,-1)],z=[new n("án",-1,2),new n("én",-1,1),new n("ánként",-1,3)],y=[new n("stul",-1,2),new n("astul",0,1),new n("ástul",0,3),new n("stül",-1,2),new n("estül",3,1),new n("éstül",3,4)],j=[new n("á",-1,1),new n("é",-1,2)],C=[new n("k",-1,7),new n("ak",0,4),new n("ek",0,6),new n("ok",0,5),new n("ák",0,1),new n("ék",0,2),new n("ök",0,3)],P=[new n("éi",-1,7),new n("áéi",0,6),new n("ééi",0,5),new n("é",-1,9),new n("ké",3,4),new n("aké",4,1),new n("eké",4,1),new n("oké",4,1),new n("áké",4,3),new n("éké",4,2),new n("öké",4,1),new n("éé",3,8)],F=[new n("a",-1,18),new n("ja",0,17),new n("d",-1,16),new n("ad",2,13),new n("ed",2,13),new n("od",2,13),new n("ád",2,14),new n("éd",2,15),new n("öd",2,13),new n("e",-1,18),new n("je",9,17),new n("nk",-1,4),new n("unk",11,1),new n("ánk",11,2),new n("énk",11,3),new n("ünk",11,1),new n("uk",-1,8),new n("juk",16,7),new n("ájuk",17,5),new n("ük",-1,8),new n("jük",19,7),new n("éjük",20,6),new n("m",-1,12),new n("am",22,9),new n("em",22,9),new n("om",22,9),new n("ám",22,10),new n("ém",22,11),new n("o",-1,18),new n("á",-1,19),new n("é",-1,20)],S=[new n("id",-1,10),new n("aid",0,9),new n("jaid",1,6),new n("eid",0,9),new n("jeid",3,6),new n("áid",0,7),new n("éid",0,8),new n("i",-1,15),new n("ai",7,14),new n("jai",8,11),new n("ei",7,14),new n("jei",10,11),new n("ái",7,12),new n("éi",7,13),new n("itek",-1,24),new n("eitek",14,21),new n("jeitek",15,20),new n("éitek",14,23),new n("ik",-1,29),new n("aik",18,26),new n("jaik",19,25),new n("eik",18,26),new n("jeik",21,25),new n("áik",18,27),new n("éik",18,28),new n("ink",-1,20),new n("aink",25,17),new n("jaink",26,16),new n("eink",25,17),new n("jeink",28,16),new n("áink",25,18),new n("éink",25,19),new n("aitok",-1,21),new n("jaitok",32,20),new n("áitok",-1,22),new n("im",-1,5),new n("aim",35,4),new n("jaim",36,1),new n("eim",35,4),new n("jeim",38,1),new n("áim",35,2),new n("éim",35,3)],W=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,52,14],L=new r;this.setCurrent=function(e){L.setCurrent(e)},this.getCurrent=function(){return L.getCurrent()},this.stem=function(){var n=L.cursor;return e(),L.limit_backward=n,L.cursor=L.limit,c(),L.cursor=L.limit,o(),L.cursor=L.limit,w(),L.cursor=L.limit,l(),L.cursor=L.limit,u(),L.cursor=L.limit,k(),L.cursor=L.limit,f(),L.cursor=L.limit,b(),L.cursor=L.limit,m(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.hu.stemmer,"stemmer-hu"),e.hu.stopWordFilter=e.generateStopWordFilter("a abban ahhoz ahogy ahol aki akik akkor alatt amely amelyek amelyekben amelyeket amelyet amelynek ami amikor amit amolyan amíg annak arra arról az azok azon azonban azt aztán azután azzal azért be belül benne bár cikk cikkek cikkeket csak de e ebben eddig egy egyes egyetlen egyik egyre egyéb egész ehhez ekkor el ellen elsõ elég elõ elõször elõtt emilyen ennek erre ez ezek ezen ezt ezzel ezért fel felé hanem hiszen hogy hogyan igen ill ill. illetve ilyen ilyenkor ismét ison itt jobban jó jól kell kellett keressünk keresztül ki kívül között közül legalább legyen lehet lehetett lenne lenni lesz lett maga magát majd majd meg mellett mely melyek mert mi mikor milyen minden mindenki mindent mindig mint mintha mit mivel miért most már más másik még míg nagy nagyobb nagyon ne nekem neki nem nincs néha néhány nélkül olyan ott pedig persze rá s saját sem semmi sok sokat sokkal szemben szerint szinte számára talán tehát teljes tovább továbbá több ugyanis utolsó után utána vagy vagyis vagyok valaki valami valamint való van vannak vele vissza viszont volna volt voltak voltam voltunk által általában át én éppen és így õ õk õket össze úgy új újabb újra".split(" ")),e.Pipeline.registerFunction(e.hu.stopWordFilter,"stopWordFilter-hu")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.it.min.js b/assets/javascripts/lunr/min/lunr.it.min.js new file mode 100644 index 0000000..344b6a3 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.it.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Italian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.it=function(){this.pipeline.reset(),this.pipeline.add(e.it.trimmer,e.it.stopWordFilter,e.it.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.it.stemmer))},e.it.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.it.trimmer=e.trimmerSupport.generateTrimmer(e.it.wordCharacters),e.Pipeline.registerFunction(e.it.trimmer,"trimmer-it"),e.it.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(e,r,n){return!(!x.eq_s(1,e)||(x.ket=x.cursor,!x.in_grouping(L,97,249)))&&(x.slice_from(r),x.cursor=n,!0)}function i(){for(var r,n,i,o,t=x.cursor;;){if(x.bra=x.cursor,r=x.find_among(h,7))switch(x.ket=x.cursor,r){case 1:x.slice_from("à");continue;case 2:x.slice_from("è");continue;case 3:x.slice_from("ì");continue;case 4:x.slice_from("ò");continue;case 5:x.slice_from("ù");continue;case 6:x.slice_from("qU");continue;case 7:if(x.cursor>=x.limit)break;x.cursor++;continue}break}for(x.cursor=t;;)for(n=x.cursor;;){if(i=x.cursor,x.in_grouping(L,97,249)){if(x.bra=x.cursor,o=x.cursor,e("u","U",i))break;if(x.cursor=o,e("i","I",i))break}if(x.cursor=i,x.cursor>=x.limit)return void(x.cursor=n);x.cursor++}}function o(e){if(x.cursor=e,!x.in_grouping(L,97,249))return!1;for(;!x.out_grouping(L,97,249);){if(x.cursor>=x.limit)return!1;x.cursor++}return!0}function t(){if(x.in_grouping(L,97,249)){var e=x.cursor;if(x.out_grouping(L,97,249)){for(;!x.in_grouping(L,97,249);){if(x.cursor>=x.limit)return o(e);x.cursor++}return!0}return o(e)}return!1}function s(){var e,r=x.cursor;if(!t()){if(x.cursor=r,!x.out_grouping(L,97,249))return;if(e=x.cursor,x.out_grouping(L,97,249)){for(;!x.in_grouping(L,97,249);){if(x.cursor>=x.limit)return x.cursor=e,void(x.in_grouping(L,97,249)&&x.cursor=x.limit)return;x.cursor++}k=x.cursor}function a(){for(;!x.in_grouping(L,97,249);){if(x.cursor>=x.limit)return!1;x.cursor++}for(;!x.out_grouping(L,97,249);){if(x.cursor>=x.limit)return!1;x.cursor++}return!0}function u(){var e=x.cursor;k=x.limit,p=k,g=k,s(),x.cursor=e,a()&&(p=x.cursor,a()&&(g=x.cursor))}function c(){for(var e;;){if(x.bra=x.cursor,!(e=x.find_among(q,3)))break;switch(x.ket=x.cursor,e){case 1:x.slice_from("i");break;case 2:x.slice_from("u");break;case 3:if(x.cursor>=x.limit)return;x.cursor++}}}function w(){return k<=x.cursor}function l(){return p<=x.cursor}function m(){return g<=x.cursor}function f(){var e;if(x.ket=x.cursor,x.find_among_b(C,37)&&(x.bra=x.cursor,(e=x.find_among_b(z,5))&&w()))switch(e){case 1:x.slice_del();break;case 2:x.slice_from("e")}}function v(){var e;if(x.ket=x.cursor,!(e=x.find_among_b(S,51)))return!1;switch(x.bra=x.cursor,e){case 1:if(!m())return!1;x.slice_del();break;case 2:if(!m())return!1;x.slice_del(),x.ket=x.cursor,x.eq_s_b(2,"ic")&&(x.bra=x.cursor,m()&&x.slice_del());break;case 3:if(!m())return!1;x.slice_from("log");break;case 4:if(!m())return!1;x.slice_from("u");break;case 5:if(!m())return!1;x.slice_from("ente");break;case 6:if(!w())return!1;x.slice_del();break;case 7:if(!l())return!1;x.slice_del(),x.ket=x.cursor,e=x.find_among_b(P,4),e&&(x.bra=x.cursor,m()&&(x.slice_del(),1==e&&(x.ket=x.cursor,x.eq_s_b(2,"at")&&(x.bra=x.cursor,m()&&x.slice_del()))));break;case 8:if(!m())return!1;x.slice_del(),x.ket=x.cursor,e=x.find_among_b(F,3),e&&(x.bra=x.cursor,1==e&&m()&&x.slice_del());break;case 9:if(!m())return!1;x.slice_del(),x.ket=x.cursor,x.eq_s_b(2,"at")&&(x.bra=x.cursor,m()&&(x.slice_del(),x.ket=x.cursor,x.eq_s_b(2,"ic")&&(x.bra=x.cursor,m()&&x.slice_del())))}return!0}function b(){var e,r;x.cursor>=k&&(r=x.limit_backward,x.limit_backward=k,x.ket=x.cursor,e=x.find_among_b(W,87),e&&(x.bra=x.cursor,1==e&&x.slice_del()),x.limit_backward=r)}function d(){var e=x.limit-x.cursor;if(x.ket=x.cursor,x.in_grouping_b(y,97,242)&&(x.bra=x.cursor,w()&&(x.slice_del(),x.ket=x.cursor,x.eq_s_b(1,"i")&&(x.bra=x.cursor,w()))))return void x.slice_del();x.cursor=x.limit-e}function _(){d(),x.ket=x.cursor,x.eq_s_b(1,"h")&&(x.bra=x.cursor,x.in_grouping_b(U,99,103)&&w()&&x.slice_del())}var g,p,k,h=[new r("",-1,7),new r("qu",0,6),new r("á",0,1),new r("é",0,2),new r("í",0,3),new r("ó",0,4),new r("ú",0,5)],q=[new r("",-1,3),new r("I",0,1),new r("U",0,2)],C=[new r("la",-1,-1),new r("cela",0,-1),new r("gliela",0,-1),new r("mela",0,-1),new r("tela",0,-1),new r("vela",0,-1),new r("le",-1,-1),new r("cele",6,-1),new r("gliele",6,-1),new r("mele",6,-1),new r("tele",6,-1),new r("vele",6,-1),new r("ne",-1,-1),new r("cene",12,-1),new r("gliene",12,-1),new r("mene",12,-1),new r("sene",12,-1),new r("tene",12,-1),new r("vene",12,-1),new r("ci",-1,-1),new r("li",-1,-1),new r("celi",20,-1),new r("glieli",20,-1),new r("meli",20,-1),new r("teli",20,-1),new r("veli",20,-1),new r("gli",20,-1),new r("mi",-1,-1),new r("si",-1,-1),new r("ti",-1,-1),new r("vi",-1,-1),new r("lo",-1,-1),new r("celo",31,-1),new r("glielo",31,-1),new r("melo",31,-1),new r("telo",31,-1),new r("velo",31,-1)],z=[new r("ando",-1,1),new r("endo",-1,1),new r("ar",-1,2),new r("er",-1,2),new r("ir",-1,2)],P=[new r("ic",-1,-1),new r("abil",-1,-1),new r("os",-1,-1),new r("iv",-1,1)],F=[new r("ic",-1,1),new r("abil",-1,1),new r("iv",-1,1)],S=[new r("ica",-1,1),new r("logia",-1,3),new r("osa",-1,1),new r("ista",-1,1),new r("iva",-1,9),new r("anza",-1,1),new r("enza",-1,5),new r("ice",-1,1),new r("atrice",7,1),new r("iche",-1,1),new r("logie",-1,3),new r("abile",-1,1),new r("ibile",-1,1),new r("usione",-1,4),new r("azione",-1,2),new r("uzione",-1,4),new r("atore",-1,2),new r("ose",-1,1),new r("ante",-1,1),new r("mente",-1,1),new r("amente",19,7),new r("iste",-1,1),new r("ive",-1,9),new r("anze",-1,1),new r("enze",-1,5),new r("ici",-1,1),new r("atrici",25,1),new r("ichi",-1,1),new r("abili",-1,1),new r("ibili",-1,1),new r("ismi",-1,1),new r("usioni",-1,4),new r("azioni",-1,2),new r("uzioni",-1,4),new r("atori",-1,2),new r("osi",-1,1),new r("anti",-1,1),new r("amenti",-1,6),new r("imenti",-1,6),new r("isti",-1,1),new r("ivi",-1,9),new r("ico",-1,1),new r("ismo",-1,1),new r("oso",-1,1),new r("amento",-1,6),new r("imento",-1,6),new r("ivo",-1,9),new r("ità",-1,8),new r("istà",-1,1),new r("istè",-1,1),new r("istì",-1,1)],W=[new r("isca",-1,1),new r("enda",-1,1),new r("ata",-1,1),new r("ita",-1,1),new r("uta",-1,1),new r("ava",-1,1),new r("eva",-1,1),new r("iva",-1,1),new r("erebbe",-1,1),new r("irebbe",-1,1),new r("isce",-1,1),new r("ende",-1,1),new r("are",-1,1),new r("ere",-1,1),new r("ire",-1,1),new r("asse",-1,1),new r("ate",-1,1),new r("avate",16,1),new r("evate",16,1),new r("ivate",16,1),new r("ete",-1,1),new r("erete",20,1),new r("irete",20,1),new r("ite",-1,1),new r("ereste",-1,1),new r("ireste",-1,1),new r("ute",-1,1),new r("erai",-1,1),new r("irai",-1,1),new r("isci",-1,1),new r("endi",-1,1),new r("erei",-1,1),new r("irei",-1,1),new r("assi",-1,1),new r("ati",-1,1),new r("iti",-1,1),new r("eresti",-1,1),new r("iresti",-1,1),new r("uti",-1,1),new r("avi",-1,1),new r("evi",-1,1),new r("ivi",-1,1),new r("isco",-1,1),new r("ando",-1,1),new r("endo",-1,1),new r("Yamo",-1,1),new r("iamo",-1,1),new r("avamo",-1,1),new r("evamo",-1,1),new r("ivamo",-1,1),new r("eremo",-1,1),new r("iremo",-1,1),new r("assimo",-1,1),new r("ammo",-1,1),new r("emmo",-1,1),new r("eremmo",54,1),new r("iremmo",54,1),new r("immo",-1,1),new r("ano",-1,1),new r("iscano",58,1),new r("avano",58,1),new r("evano",58,1),new r("ivano",58,1),new r("eranno",-1,1),new r("iranno",-1,1),new r("ono",-1,1),new r("iscono",65,1),new r("arono",65,1),new r("erono",65,1),new r("irono",65,1),new r("erebbero",-1,1),new r("irebbero",-1,1),new r("assero",-1,1),new r("essero",-1,1),new r("issero",-1,1),new r("ato",-1,1),new r("ito",-1,1),new r("uto",-1,1),new r("avo",-1,1),new r("evo",-1,1),new r("ivo",-1,1),new r("ar",-1,1),new r("ir",-1,1),new r("erà",-1,1),new r("irà",-1,1),new r("erò",-1,1),new r("irò",-1,1)],L=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2,1],y=[17,65,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2],U=[17],x=new n;this.setCurrent=function(e){x.setCurrent(e)},this.getCurrent=function(){return x.getCurrent()},this.stem=function(){var e=x.cursor;return i(),x.cursor=e,u(),x.limit_backward=e,x.cursor=x.limit,f(),x.cursor=x.limit,v()||(x.cursor=x.limit,b()),x.cursor=x.limit,_(),x.cursor=x.limit_backward,c(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.it.stemmer,"stemmer-it"),e.it.stopWordFilter=e.generateStopWordFilter("a abbia abbiamo abbiano abbiate ad agl agli ai al all alla alle allo anche avemmo avendo avesse avessero avessi avessimo aveste avesti avete aveva avevamo avevano avevate avevi avevo avrai avranno avrebbe avrebbero avrei avremmo avremo avreste avresti avrete avrà avrò avuta avute avuti avuto c che chi ci coi col come con contro cui da dagl dagli dai dal dall dalla dalle dallo degl degli dei del dell della delle dello di dov dove e ebbe ebbero ebbi ed era erano eravamo eravate eri ero essendo faccia facciamo facciano facciate faccio facemmo facendo facesse facessero facessi facessimo faceste facesti faceva facevamo facevano facevate facevi facevo fai fanno farai faranno farebbe farebbero farei faremmo faremo fareste faresti farete farà farò fece fecero feci fosse fossero fossi fossimo foste fosti fu fui fummo furono gli ha hai hanno ho i il in io l la le lei li lo loro lui ma mi mia mie miei mio ne negl negli nei nel nell nella nelle nello noi non nostra nostre nostri nostro o per perché più quale quanta quante quanti quanto quella quelle quelli quello questa queste questi questo sarai saranno sarebbe sarebbero sarei saremmo saremo sareste saresti sarete sarà sarò se sei si sia siamo siano siate siete sono sta stai stando stanno starai staranno starebbe starebbero starei staremmo staremo stareste staresti starete starà starò stava stavamo stavano stavate stavi stavo stemmo stesse stessero stessi stessimo steste stesti stette stettero stetti stia stiamo stiano stiate sto su sua sue sugl sugli sui sul sull sulla sulle sullo suo suoi ti tra tu tua tue tuo tuoi tutti tutto un una uno vi voi vostra vostre vostri vostro è".split(" ")),e.Pipeline.registerFunction(e.it.stopWordFilter,"stopWordFilter-it")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.ja.min.js b/assets/javascripts/lunr/min/lunr.ja.min.js new file mode 100644 index 0000000..5f254eb --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ja.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.ja=function(){this.pipeline.reset(),this.pipeline.add(e.ja.trimmer,e.ja.stopWordFilter,e.ja.stemmer),r?this.tokenizer=e.ja.tokenizer:(e.tokenizer&&(e.tokenizer=e.ja.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.ja.tokenizer))};var t=new e.TinySegmenter;e.ja.tokenizer=function(i){var n,o,s,p,a,u,m,l,c,f;if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t.toLowerCase()):t.toLowerCase()});for(o=i.toString().toLowerCase().replace(/^\s+/,""),n=o.length-1;n>=0;n--)if(/\S/.test(o.charAt(n))){o=o.substring(0,n+1);break}for(a=[],s=o.length,c=0,l=0;c<=s;c++)if(u=o.charAt(c),m=c-l,u.match(/\s/)||c==s){if(m>0)for(p=t.segment(o.slice(l,c)).filter(function(e){return!!e}),f=l,n=0;n=C.limit)break;C.cursor++;continue}break}for(C.cursor=o,C.bra=o,C.eq_s(1,"y")?(C.ket=C.cursor,C.slice_from("Y")):C.cursor=o;;)if(e=C.cursor,C.in_grouping(q,97,232)){if(i=C.cursor,C.bra=i,C.eq_s(1,"i"))C.ket=C.cursor,C.in_grouping(q,97,232)&&(C.slice_from("I"),C.cursor=e);else if(C.cursor=i,C.eq_s(1,"y"))C.ket=C.cursor,C.slice_from("Y"),C.cursor=e;else if(n(e))break}else if(n(e))break}function n(r){return C.cursor=r,r>=C.limit||(C.cursor++,!1)}function o(){_=C.limit,d=_,t()||(_=C.cursor,_<3&&(_=3),t()||(d=C.cursor))}function t(){for(;!C.in_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}for(;!C.out_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}return!1}function s(){for(var r;;)if(C.bra=C.cursor,r=C.find_among(p,3))switch(C.ket=C.cursor,r){case 1:C.slice_from("y");break;case 2:C.slice_from("i");break;case 3:if(C.cursor>=C.limit)return;C.cursor++}}function u(){return _<=C.cursor}function c(){return d<=C.cursor}function a(){var r=C.limit-C.cursor;C.find_among_b(g,3)&&(C.cursor=C.limit-r,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del()))}function l(){var r;w=!1,C.ket=C.cursor,C.eq_s_b(1,"e")&&(C.bra=C.cursor,u()&&(r=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-r,C.slice_del(),w=!0,a())))}function m(){var r;u()&&(r=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-r,C.eq_s_b(3,"gem")||(C.cursor=C.limit-r,C.slice_del(),a())))}function f(){var r,e,i,n,o,t,s=C.limit-C.cursor;if(C.ket=C.cursor,r=C.find_among_b(h,5))switch(C.bra=C.cursor,r){case 1:u()&&C.slice_from("heid");break;case 2:m();break;case 3:u()&&C.out_grouping_b(j,97,232)&&C.slice_del()}if(C.cursor=C.limit-s,l(),C.cursor=C.limit-s,C.ket=C.cursor,C.eq_s_b(4,"heid")&&(C.bra=C.cursor,c()&&(e=C.limit-C.cursor,C.eq_s_b(1,"c")||(C.cursor=C.limit-e,C.slice_del(),C.ket=C.cursor,C.eq_s_b(2,"en")&&(C.bra=C.cursor,m())))),C.cursor=C.limit-s,C.ket=C.cursor,r=C.find_among_b(k,6))switch(C.bra=C.cursor,r){case 1:if(c()){if(C.slice_del(),i=C.limit-C.cursor,C.ket=C.cursor,C.eq_s_b(2,"ig")&&(C.bra=C.cursor,c()&&(n=C.limit-C.cursor,!C.eq_s_b(1,"e")))){C.cursor=C.limit-n,C.slice_del();break}C.cursor=C.limit-i,a()}break;case 2:c()&&(o=C.limit-C.cursor,C.eq_s_b(1,"e")||(C.cursor=C.limit-o,C.slice_del()));break;case 3:c()&&(C.slice_del(),l());break;case 4:c()&&C.slice_del();break;case 5:c()&&w&&C.slice_del()}C.cursor=C.limit-s,C.out_grouping_b(z,73,232)&&(t=C.limit-C.cursor,C.find_among_b(v,4)&&C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-t,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del())))}var d,_,w,b=[new e("",-1,6),new e("á",0,1),new e("ä",0,1),new e("é",0,2),new e("ë",0,2),new e("í",0,3),new e("ï",0,3),new e("ó",0,4),new e("ö",0,4),new e("ú",0,5),new e("ü",0,5)],p=[new e("",-1,3),new e("I",0,2),new e("Y",0,1)],g=[new e("dd",-1,-1),new e("kk",-1,-1),new e("tt",-1,-1)],h=[new e("ene",-1,2),new e("se",-1,3),new e("en",-1,2),new e("heden",2,1),new e("s",-1,3)],k=[new e("end",-1,1),new e("ig",-1,2),new e("ing",-1,1),new e("lijk",-1,3),new e("baar",-1,4),new e("bar",-1,5)],v=[new e("aa",-1,-1),new e("ee",-1,-1),new e("oo",-1,-1),new e("uu",-1,-1)],q=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],z=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],j=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],C=new i;this.setCurrent=function(r){C.setCurrent(r)},this.getCurrent=function(){return C.getCurrent()},this.stem=function(){var e=C.cursor;return r(),C.cursor=e,o(),C.limit_backward=e,C.cursor=C.limit,f(),C.cursor=C.limit_backward,s(),!0}};return function(r){return"function"==typeof r.update?r.update(function(r){return n.setCurrent(r),n.stem(),n.getCurrent()}):(n.setCurrent(r),n.stem(),n.getCurrent())}}(),r.Pipeline.registerFunction(r.nl.stemmer,"stemmer-nl"),r.nl.stopWordFilter=r.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),r.Pipeline.registerFunction(r.nl.stopWordFilter,"stopWordFilter-nl")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.no.min.js b/assets/javascripts/lunr/min/lunr.no.min.js new file mode 100644 index 0000000..92bc7e4 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.no.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Norwegian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.no=function(){this.pipeline.reset(),this.pipeline.add(e.no.trimmer,e.no.stopWordFilter,e.no.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.no.stemmer))},e.no.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.no.trimmer=e.trimmerSupport.generateTrimmer(e.no.wordCharacters),e.Pipeline.registerFunction(e.no.trimmer,"trimmer-no"),e.no.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(){var e,r=w.cursor+3;if(a=w.limit,0<=r||r<=w.limit){for(s=r;;){if(e=w.cursor,w.in_grouping(d,97,248)){w.cursor=e;break}if(e>=w.limit)return;w.cursor=e+1}for(;!w.out_grouping(d,97,248);){if(w.cursor>=w.limit)return;w.cursor++}a=w.cursor,a=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(m,29),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:n=w.limit-w.cursor,w.in_grouping_b(c,98,122)?w.slice_del():(w.cursor=w.limit-n,w.eq_s_b(1,"k")&&w.out_grouping_b(d,97,248)&&w.slice_del());break;case 3:w.slice_from("er")}}function t(){var e,r=w.limit-w.cursor;w.cursor>=a&&(e=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,w.find_among_b(u,2)?(w.bra=w.cursor,w.limit_backward=e,w.cursor=w.limit-r,w.cursor>w.limit_backward&&(w.cursor--,w.bra=w.cursor,w.slice_del())):w.limit_backward=e)}function o(){var e,r;w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(l,11),e?(w.bra=w.cursor,w.limit_backward=r,1==e&&w.slice_del()):w.limit_backward=r)}var s,a,m=[new r("a",-1,1),new r("e",-1,1),new r("ede",1,1),new r("ande",1,1),new r("ende",1,1),new r("ane",1,1),new r("ene",1,1),new r("hetene",6,1),new r("erte",1,3),new r("en",-1,1),new r("heten",9,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",12,1),new r("s",-1,2),new r("as",14,1),new r("es",14,1),new r("edes",16,1),new r("endes",16,1),new r("enes",16,1),new r("hetenes",19,1),new r("ens",14,1),new r("hetens",21,1),new r("ers",14,1),new r("ets",14,1),new r("et",-1,1),new r("het",25,1),new r("ert",-1,3),new r("ast",-1,1)],u=[new r("dt",-1,-1),new r("vt",-1,-1)],l=[new r("leg",-1,1),new r("eleg",0,1),new r("ig",-1,1),new r("eig",2,1),new r("lig",2,1),new r("elig",4,1),new r("els",-1,1),new r("lov",-1,1),new r("elov",7,1),new r("slov",7,1),new r("hetslov",9,1)],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],c=[119,125,149,1],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,i(),w.cursor=w.limit,t(),w.cursor=w.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.no.stemmer,"stemmer-no"),e.no.stopWordFilter=e.generateStopWordFilter("alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" ")),e.Pipeline.registerFunction(e.no.stopWordFilter,"stopWordFilter-no")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.pt.min.js b/assets/javascripts/lunr/min/lunr.pt.min.js new file mode 100644 index 0000000..6c16996 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.pt.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Portuguese` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.pt=function(){this.pipeline.reset(),this.pipeline.add(e.pt.trimmer,e.pt.stopWordFilter,e.pt.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.pt.stemmer))},e.pt.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.pt.trimmer=e.trimmerSupport.generateTrimmer(e.pt.wordCharacters),e.Pipeline.registerFunction(e.pt.trimmer,"trimmer-pt"),e.pt.stemmer=function(){var r=e.stemmerSupport.Among,s=e.stemmerSupport.SnowballProgram,n=new function(){function e(){for(var e;;){if(z.bra=z.cursor,e=z.find_among(k,3))switch(z.ket=z.cursor,e){case 1:z.slice_from("a~");continue;case 2:z.slice_from("o~");continue;case 3:if(z.cursor>=z.limit)break;z.cursor++;continue}break}}function n(){if(z.out_grouping(y,97,250)){for(;!z.in_grouping(y,97,250);){if(z.cursor>=z.limit)return!0;z.cursor++}return!1}return!0}function i(){if(z.in_grouping(y,97,250))for(;!z.out_grouping(y,97,250);){if(z.cursor>=z.limit)return!1;z.cursor++}return g=z.cursor,!0}function o(){var e,r,s=z.cursor;if(z.in_grouping(y,97,250))if(e=z.cursor,n()){if(z.cursor=e,i())return}else g=z.cursor;if(z.cursor=s,z.out_grouping(y,97,250)){if(r=z.cursor,n()){if(z.cursor=r,!z.in_grouping(y,97,250)||z.cursor>=z.limit)return;z.cursor++}g=z.cursor}}function t(){for(;!z.in_grouping(y,97,250);){if(z.cursor>=z.limit)return!1;z.cursor++}for(;!z.out_grouping(y,97,250);){if(z.cursor>=z.limit)return!1;z.cursor++}return!0}function a(){var e=z.cursor;g=z.limit,b=g,h=g,o(),z.cursor=e,t()&&(b=z.cursor,t()&&(h=z.cursor))}function u(){for(var e;;){if(z.bra=z.cursor,e=z.find_among(q,3))switch(z.ket=z.cursor,e){case 1:z.slice_from("ã");continue;case 2:z.slice_from("õ");continue;case 3:if(z.cursor>=z.limit)break;z.cursor++;continue}break}}function w(){return g<=z.cursor}function m(){return b<=z.cursor}function c(){return h<=z.cursor}function l(){var e;if(z.ket=z.cursor,!(e=z.find_among_b(F,45)))return!1;switch(z.bra=z.cursor,e){case 1:if(!c())return!1;z.slice_del();break;case 2:if(!c())return!1;z.slice_from("log");break;case 3:if(!c())return!1;z.slice_from("u");break;case 4:if(!c())return!1;z.slice_from("ente");break;case 5:if(!m())return!1;z.slice_del(),z.ket=z.cursor,e=z.find_among_b(j,4),e&&(z.bra=z.cursor,c()&&(z.slice_del(),1==e&&(z.ket=z.cursor,z.eq_s_b(2,"at")&&(z.bra=z.cursor,c()&&z.slice_del()))));break;case 6:if(!c())return!1;z.slice_del(),z.ket=z.cursor,e=z.find_among_b(C,3),e&&(z.bra=z.cursor,1==e&&c()&&z.slice_del());break;case 7:if(!c())return!1;z.slice_del(),z.ket=z.cursor,e=z.find_among_b(P,3),e&&(z.bra=z.cursor,1==e&&c()&&z.slice_del());break;case 8:if(!c())return!1;z.slice_del(),z.ket=z.cursor,z.eq_s_b(2,"at")&&(z.bra=z.cursor,c()&&z.slice_del());break;case 9:if(!w()||!z.eq_s_b(1,"e"))return!1;z.slice_from("ir")}return!0}function f(){var e,r;if(z.cursor>=g){if(r=z.limit_backward,z.limit_backward=g,z.ket=z.cursor,e=z.find_among_b(S,120))return z.bra=z.cursor,1==e&&z.slice_del(),z.limit_backward=r,!0;z.limit_backward=r}return!1}function d(){var e;z.ket=z.cursor,(e=z.find_among_b(W,7))&&(z.bra=z.cursor,1==e&&w()&&z.slice_del())}function v(e,r){if(z.eq_s_b(1,e)){z.bra=z.cursor;var s=z.limit-z.cursor;if(z.eq_s_b(1,r))return z.cursor=z.limit-s,w()&&z.slice_del(),!1}return!0}function p(){var e;if(z.ket=z.cursor,e=z.find_among_b(L,4))switch(z.bra=z.cursor,e){case 1:w()&&(z.slice_del(),z.ket=z.cursor,z.limit-z.cursor,v("u","g")&&v("i","c"));break;case 2:z.slice_from("c")}}function _(){if(!l()&&(z.cursor=z.limit,!f()))return z.cursor=z.limit,void d();z.cursor=z.limit,z.ket=z.cursor,z.eq_s_b(1,"i")&&(z.bra=z.cursor,z.eq_s_b(1,"c")&&(z.cursor=z.limit,w()&&z.slice_del()))}var h,b,g,k=[new r("",-1,3),new r("ã",0,1),new r("õ",0,2)],q=[new r("",-1,3),new r("a~",0,1),new r("o~",0,2)],j=[new r("ic",-1,-1),new r("ad",-1,-1),new r("os",-1,-1),new r("iv",-1,1)],C=[new r("ante",-1,1),new r("avel",-1,1),new r("ível",-1,1)],P=[new r("ic",-1,1),new r("abil",-1,1),new r("iv",-1,1)],F=[new r("ica",-1,1),new r("ância",-1,1),new r("ência",-1,4),new r("ira",-1,9),new r("adora",-1,1),new r("osa",-1,1),new r("ista",-1,1),new r("iva",-1,8),new r("eza",-1,1),new r("logía",-1,2),new r("idade",-1,7),new r("ante",-1,1),new r("mente",-1,6),new r("amente",12,5),new r("ável",-1,1),new r("ível",-1,1),new r("ución",-1,3),new r("ico",-1,1),new r("ismo",-1,1),new r("oso",-1,1),new r("amento",-1,1),new r("imento",-1,1),new r("ivo",-1,8),new r("aça~o",-1,1),new r("ador",-1,1),new r("icas",-1,1),new r("ências",-1,4),new r("iras",-1,9),new r("adoras",-1,1),new r("osas",-1,1),new r("istas",-1,1),new r("ivas",-1,8),new r("ezas",-1,1),new r("logías",-1,2),new r("idades",-1,7),new r("uciones",-1,3),new r("adores",-1,1),new r("antes",-1,1),new r("aço~es",-1,1),new r("icos",-1,1),new r("ismos",-1,1),new r("osos",-1,1),new r("amentos",-1,1),new r("imentos",-1,1),new r("ivos",-1,8)],S=[new r("ada",-1,1),new r("ida",-1,1),new r("ia",-1,1),new r("aria",2,1),new r("eria",2,1),new r("iria",2,1),new r("ara",-1,1),new r("era",-1,1),new r("ira",-1,1),new r("ava",-1,1),new r("asse",-1,1),new r("esse",-1,1),new r("isse",-1,1),new r("aste",-1,1),new r("este",-1,1),new r("iste",-1,1),new r("ei",-1,1),new r("arei",16,1),new r("erei",16,1),new r("irei",16,1),new r("am",-1,1),new r("iam",20,1),new r("ariam",21,1),new r("eriam",21,1),new r("iriam",21,1),new r("aram",20,1),new r("eram",20,1),new r("iram",20,1),new r("avam",20,1),new r("em",-1,1),new r("arem",29,1),new r("erem",29,1),new r("irem",29,1),new r("assem",29,1),new r("essem",29,1),new r("issem",29,1),new r("ado",-1,1),new r("ido",-1,1),new r("ando",-1,1),new r("endo",-1,1),new r("indo",-1,1),new r("ara~o",-1,1),new r("era~o",-1,1),new r("ira~o",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("ir",-1,1),new r("as",-1,1),new r("adas",47,1),new r("idas",47,1),new r("ias",47,1),new r("arias",50,1),new r("erias",50,1),new r("irias",50,1),new r("aras",47,1),new r("eras",47,1),new r("iras",47,1),new r("avas",47,1),new r("es",-1,1),new r("ardes",58,1),new r("erdes",58,1),new r("irdes",58,1),new r("ares",58,1),new r("eres",58,1),new r("ires",58,1),new r("asses",58,1),new r("esses",58,1),new r("isses",58,1),new r("astes",58,1),new r("estes",58,1),new r("istes",58,1),new r("is",-1,1),new r("ais",71,1),new r("eis",71,1),new r("areis",73,1),new r("ereis",73,1),new r("ireis",73,1),new r("áreis",73,1),new r("éreis",73,1),new r("íreis",73,1),new r("ásseis",73,1),new r("ésseis",73,1),new r("ísseis",73,1),new r("áveis",73,1),new r("íeis",73,1),new r("aríeis",84,1),new r("eríeis",84,1),new r("iríeis",84,1),new r("ados",-1,1),new r("idos",-1,1),new r("amos",-1,1),new r("áramos",90,1),new r("éramos",90,1),new r("íramos",90,1),new r("ávamos",90,1),new r("íamos",90,1),new r("aríamos",95,1),new r("eríamos",95,1),new r("iríamos",95,1),new r("emos",-1,1),new r("aremos",99,1),new r("eremos",99,1),new r("iremos",99,1),new r("ássemos",99,1),new r("êssemos",99,1),new r("íssemos",99,1),new r("imos",-1,1),new r("armos",-1,1),new r("ermos",-1,1),new r("irmos",-1,1),new r("ámos",-1,1),new r("arás",-1,1),new r("erás",-1,1),new r("irás",-1,1),new r("eu",-1,1),new r("iu",-1,1),new r("ou",-1,1),new r("ará",-1,1),new r("erá",-1,1),new r("irá",-1,1)],W=[new r("a",-1,1),new r("i",-1,1),new r("o",-1,1),new r("os",-1,1),new r("á",-1,1),new r("í",-1,1),new r("ó",-1,1)],L=[new r("e",-1,1),new r("ç",-1,2),new r("é",-1,1),new r("ê",-1,1)],y=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,3,19,12,2],z=new s;this.setCurrent=function(e){z.setCurrent(e)},this.getCurrent=function(){return z.getCurrent()},this.stem=function(){var r=z.cursor;return e(),z.cursor=r,a(),z.limit_backward=r,z.cursor=z.limit,_(),z.cursor=z.limit,p(),z.cursor=z.limit_backward,u(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.pt.stemmer,"stemmer-pt"),e.pt.stopWordFilter=e.generateStopWordFilter("a ao aos aquela aquelas aquele aqueles aquilo as até com como da das de dela delas dele deles depois do dos e ela elas ele eles em entre era eram essa essas esse esses esta estamos estas estava estavam este esteja estejam estejamos estes esteve estive estivemos estiver estivera estiveram estiverem estivermos estivesse estivessem estivéramos estivéssemos estou está estávamos estão eu foi fomos for fora foram forem formos fosse fossem fui fôramos fôssemos haja hajam hajamos havemos hei houve houvemos houver houvera houveram houverei houverem houveremos houveria houveriam houvermos houverá houverão houveríamos houvesse houvessem houvéramos houvéssemos há hão isso isto já lhe lhes mais mas me mesmo meu meus minha minhas muito na nas nem no nos nossa nossas nosso nossos num numa não nós o os ou para pela pelas pelo pelos por qual quando que quem se seja sejam sejamos sem serei seremos seria seriam será serão seríamos seu seus somos sou sua suas são só também te tem temos tenha tenham tenhamos tenho terei teremos teria teriam terá terão teríamos teu teus teve tinha tinham tive tivemos tiver tivera tiveram tiverem tivermos tivesse tivessem tivéramos tivéssemos tu tua tuas tém tínhamos um uma você vocês vos à às éramos".split(" ")),e.Pipeline.registerFunction(e.pt.stopWordFilter,"stopWordFilter-pt")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.ro.min.js b/assets/javascripts/lunr/min/lunr.ro.min.js new file mode 100644 index 0000000..7277140 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ro.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Romanian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ro=function(){this.pipeline.reset(),this.pipeline.add(e.ro.trimmer,e.ro.stopWordFilter,e.ro.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ro.stemmer))},e.ro.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.ro.trimmer=e.trimmerSupport.generateTrimmer(e.ro.wordCharacters),e.Pipeline.registerFunction(e.ro.trimmer,"trimmer-ro"),e.ro.stemmer=function(){var i=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,n=new function(){function e(e,i){L.eq_s(1,e)&&(L.ket=L.cursor,L.in_grouping(W,97,259)&&L.slice_from(i))}function n(){for(var i,r;;){if(i=L.cursor,L.in_grouping(W,97,259)&&(r=L.cursor,L.bra=r,e("u","U"),L.cursor=r,e("i","I")),L.cursor=i,L.cursor>=L.limit)break;L.cursor++}}function t(){if(L.out_grouping(W,97,259)){for(;!L.in_grouping(W,97,259);){if(L.cursor>=L.limit)return!0;L.cursor++}return!1}return!0}function a(){if(L.in_grouping(W,97,259))for(;!L.out_grouping(W,97,259);){if(L.cursor>=L.limit)return!0;L.cursor++}return!1}function o(){var e,i,r=L.cursor;if(L.in_grouping(W,97,259)){if(e=L.cursor,!t())return void(h=L.cursor);if(L.cursor=e,!a())return void(h=L.cursor)}L.cursor=r,L.out_grouping(W,97,259)&&(i=L.cursor,t()&&(L.cursor=i,L.in_grouping(W,97,259)&&L.cursor=L.limit)return!1;L.cursor++}for(;!L.out_grouping(W,97,259);){if(L.cursor>=L.limit)return!1;L.cursor++}return!0}function c(){var e=L.cursor;h=L.limit,k=h,g=h,o(),L.cursor=e,u()&&(k=L.cursor,u()&&(g=L.cursor))}function s(){for(var e;;){if(L.bra=L.cursor,e=L.find_among(z,3))switch(L.ket=L.cursor,e){case 1:L.slice_from("i");continue;case 2:L.slice_from("u");continue;case 3:if(L.cursor>=L.limit)break;L.cursor++;continue}break}}function w(){return h<=L.cursor}function m(){return k<=L.cursor}function l(){return g<=L.cursor}function f(){var e,i;if(L.ket=L.cursor,(e=L.find_among_b(C,16))&&(L.bra=L.cursor,m()))switch(e){case 1:L.slice_del();break;case 2:L.slice_from("a");break;case 3:L.slice_from("e");break;case 4:L.slice_from("i");break;case 5:i=L.limit-L.cursor,L.eq_s_b(2,"ab")||(L.cursor=L.limit-i,L.slice_from("i"));break;case 6:L.slice_from("at");break;case 7:L.slice_from("aţi")}}function p(){var e,i=L.limit-L.cursor;if(L.ket=L.cursor,(e=L.find_among_b(P,46))&&(L.bra=L.cursor,m())){switch(e){case 1:L.slice_from("abil");break;case 2:L.slice_from("ibil");break;case 3:L.slice_from("iv");break;case 4:L.slice_from("ic");break;case 5:L.slice_from("at");break;case 6:L.slice_from("it")}return _=!0,L.cursor=L.limit-i,!0}return!1}function d(){var e,i;for(_=!1;;)if(i=L.limit-L.cursor,!p()){L.cursor=L.limit-i;break}if(L.ket=L.cursor,(e=L.find_among_b(F,62))&&(L.bra=L.cursor,l())){switch(e){case 1:L.slice_del();break;case 2:L.eq_s_b(1,"ţ")&&(L.bra=L.cursor,L.slice_from("t"));break;case 3:L.slice_from("ist")}_=!0}}function b(){var e,i,r;if(L.cursor>=h){if(i=L.limit_backward,L.limit_backward=h,L.ket=L.cursor,e=L.find_among_b(q,94))switch(L.bra=L.cursor,e){case 1:if(r=L.limit-L.cursor,!L.out_grouping_b(W,97,259)&&(L.cursor=L.limit-r,!L.eq_s_b(1,"u")))break;case 2:L.slice_del()}L.limit_backward=i}}function v(){var e;L.ket=L.cursor,(e=L.find_among_b(S,5))&&(L.bra=L.cursor,w()&&1==e&&L.slice_del())}var _,g,k,h,z=[new i("",-1,3),new i("I",0,1),new i("U",0,2)],C=[new i("ea",-1,3),new i("aţia",-1,7),new i("aua",-1,2),new i("iua",-1,4),new i("aţie",-1,7),new i("ele",-1,3),new i("ile",-1,5),new i("iile",6,4),new i("iei",-1,4),new i("atei",-1,6),new i("ii",-1,4),new i("ului",-1,1),new i("ul",-1,1),new i("elor",-1,3),new i("ilor",-1,4),new i("iilor",14,4)],P=[new i("icala",-1,4),new i("iciva",-1,4),new i("ativa",-1,5),new i("itiva",-1,6),new i("icale",-1,4),new i("aţiune",-1,5),new i("iţiune",-1,6),new i("atoare",-1,5),new i("itoare",-1,6),new i("ătoare",-1,5),new i("icitate",-1,4),new i("abilitate",-1,1),new i("ibilitate",-1,2),new i("ivitate",-1,3),new i("icive",-1,4),new i("ative",-1,5),new i("itive",-1,6),new i("icali",-1,4),new i("atori",-1,5),new i("icatori",18,4),new i("itori",-1,6),new i("ători",-1,5),new i("icitati",-1,4),new i("abilitati",-1,1),new i("ivitati",-1,3),new i("icivi",-1,4),new i("ativi",-1,5),new i("itivi",-1,6),new i("icităi",-1,4),new i("abilităi",-1,1),new i("ivităi",-1,3),new i("icităţi",-1,4),new i("abilităţi",-1,1),new i("ivităţi",-1,3),new i("ical",-1,4),new i("ator",-1,5),new i("icator",35,4),new i("itor",-1,6),new i("ător",-1,5),new i("iciv",-1,4),new i("ativ",-1,5),new i("itiv",-1,6),new i("icală",-1,4),new i("icivă",-1,4),new i("ativă",-1,5),new i("itivă",-1,6)],F=[new i("ica",-1,1),new i("abila",-1,1),new i("ibila",-1,1),new i("oasa",-1,1),new i("ata",-1,1),new i("ita",-1,1),new i("anta",-1,1),new i("ista",-1,3),new i("uta",-1,1),new i("iva",-1,1),new i("ic",-1,1),new i("ice",-1,1),new i("abile",-1,1),new i("ibile",-1,1),new i("isme",-1,3),new i("iune",-1,2),new i("oase",-1,1),new i("ate",-1,1),new i("itate",17,1),new i("ite",-1,1),new i("ante",-1,1),new i("iste",-1,3),new i("ute",-1,1),new i("ive",-1,1),new i("ici",-1,1),new i("abili",-1,1),new i("ibili",-1,1),new i("iuni",-1,2),new i("atori",-1,1),new i("osi",-1,1),new i("ati",-1,1),new i("itati",30,1),new i("iti",-1,1),new i("anti",-1,1),new i("isti",-1,3),new i("uti",-1,1),new i("işti",-1,3),new i("ivi",-1,1),new i("ităi",-1,1),new i("oşi",-1,1),new i("ităţi",-1,1),new i("abil",-1,1),new i("ibil",-1,1),new i("ism",-1,3),new i("ator",-1,1),new i("os",-1,1),new i("at",-1,1),new i("it",-1,1),new i("ant",-1,1),new i("ist",-1,3),new i("ut",-1,1),new i("iv",-1,1),new i("ică",-1,1),new i("abilă",-1,1),new i("ibilă",-1,1),new i("oasă",-1,1),new i("ată",-1,1),new i("ită",-1,1),new i("antă",-1,1),new i("istă",-1,3),new i("ută",-1,1),new i("ivă",-1,1)],q=[new i("ea",-1,1),new i("ia",-1,1),new i("esc",-1,1),new i("ăsc",-1,1),new i("ind",-1,1),new i("ând",-1,1),new i("are",-1,1),new i("ere",-1,1),new i("ire",-1,1),new i("âre",-1,1),new i("se",-1,2),new i("ase",10,1),new i("sese",10,2),new i("ise",10,1),new i("use",10,1),new i("âse",10,1),new i("eşte",-1,1),new i("ăşte",-1,1),new i("eze",-1,1),new i("ai",-1,1),new i("eai",19,1),new i("iai",19,1),new i("sei",-1,2),new i("eşti",-1,1),new i("ăşti",-1,1),new i("ui",-1,1),new i("ezi",-1,1),new i("âi",-1,1),new i("aşi",-1,1),new i("seşi",-1,2),new i("aseşi",29,1),new i("seseşi",29,2),new i("iseşi",29,1),new i("useşi",29,1),new i("âseşi",29,1),new i("işi",-1,1),new i("uşi",-1,1),new i("âşi",-1,1),new i("aţi",-1,2),new i("eaţi",38,1),new i("iaţi",38,1),new i("eţi",-1,2),new i("iţi",-1,2),new i("âţi",-1,2),new i("arăţi",-1,1),new i("serăţi",-1,2),new i("aserăţi",45,1),new i("seserăţi",45,2),new i("iserăţi",45,1),new i("userăţi",45,1),new i("âserăţi",45,1),new i("irăţi",-1,1),new i("urăţi",-1,1),new i("ârăţi",-1,1),new i("am",-1,1),new i("eam",54,1),new i("iam",54,1),new i("em",-1,2),new i("asem",57,1),new i("sesem",57,2),new i("isem",57,1),new i("usem",57,1),new i("âsem",57,1),new i("im",-1,2),new i("âm",-1,2),new i("ăm",-1,2),new i("arăm",65,1),new i("serăm",65,2),new i("aserăm",67,1),new i("seserăm",67,2),new i("iserăm",67,1),new i("userăm",67,1),new i("âserăm",67,1),new i("irăm",65,1),new i("urăm",65,1),new i("ârăm",65,1),new i("au",-1,1),new i("eau",76,1),new i("iau",76,1),new i("indu",-1,1),new i("ându",-1,1),new i("ez",-1,1),new i("ească",-1,1),new i("ară",-1,1),new i("seră",-1,2),new i("aseră",84,1),new i("seseră",84,2),new i("iseră",84,1),new i("useră",84,1),new i("âseră",84,1),new i("iră",-1,1),new i("ură",-1,1),new i("âră",-1,1),new i("ează",-1,1)],S=[new i("a",-1,1),new i("e",-1,1),new i("ie",1,1),new i("i",-1,1),new i("ă",-1,1)],W=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,2,32,0,0,4],L=new r;this.setCurrent=function(e){L.setCurrent(e)},this.getCurrent=function(){return L.getCurrent()},this.stem=function(){var e=L.cursor;return n(),L.cursor=e,c(),L.limit_backward=e,L.cursor=L.limit,f(),L.cursor=L.limit,d(),L.cursor=L.limit,_||(L.cursor=L.limit,b(),L.cursor=L.limit),v(),L.cursor=L.limit_backward,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.ro.stemmer,"stemmer-ro"),e.ro.stopWordFilter=e.generateStopWordFilter("acea aceasta această aceea acei aceia acel acela acele acelea acest acesta aceste acestea aceşti aceştia acolo acord acum ai aia aibă aici al ale alea altceva altcineva am ar are asemenea asta astea astăzi asupra au avea avem aveţi azi aş aşadar aţi bine bucur bună ca care caut ce cel ceva chiar cinci cine cineva contra cu cum cumva curând curînd când cât câte câtva câţi cînd cît cîte cîtva cîţi că căci cărei căror cărui către da dacă dar datorită dată dau de deci deja deoarece departe deşi din dinaintea dintr- dintre doi doilea două drept după dă ea ei el ele eram este eu eşti face fata fi fie fiecare fii fim fiu fiţi frumos fără graţie halbă iar ieri la le li lor lui lângă lîngă mai mea mei mele mereu meu mi mie mine mult multă mulţi mulţumesc mâine mîine mă ne nevoie nici nicăieri nimeni nimeri nimic nişte noastre noastră noi noroc nostru nouă noştri nu opt ori oricare orice oricine oricum oricând oricât oricînd oricît oriunde patra patru patrulea pe pentru peste pic poate pot prea prima primul prin puţin puţina puţină până pînă rog sa sale sau se spate spre sub sunt suntem sunteţi sută sînt sîntem sînteţi să săi său ta tale te timp tine toate toată tot totuşi toţi trei treia treilea tu tăi tău un una unde undeva unei uneia unele uneori unii unor unora unu unui unuia unul vi voastre voastră voi vostru vouă voştri vreme vreo vreun vă zece zero zi zice îi îl îmi împotriva în înainte înaintea încotro încât încît între întrucât întrucît îţi ăla ălea ăsta ăstea ăştia şapte şase şi ştiu ţi ţie".split(" ")),e.Pipeline.registerFunction(e.ro.stopWordFilter,"stopWordFilter-ro")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.ru.min.js b/assets/javascripts/lunr/min/lunr.ru.min.js new file mode 100644 index 0000000..186cc48 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ru.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Russian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ru=function(){this.pipeline.reset(),this.pipeline.add(e.ru.trimmer,e.ru.stopWordFilter,e.ru.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ru.stemmer))},e.ru.wordCharacters="Ѐ-҄҇-ԯᴫᵸⷠ-ⷿꙀ-ꚟ︮︯",e.ru.trimmer=e.trimmerSupport.generateTrimmer(e.ru.wordCharacters),e.Pipeline.registerFunction(e.ru.trimmer,"trimmer-ru"),e.ru.stemmer=function(){var n=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,t=new function(){function e(){for(;!W.in_grouping(S,1072,1103);){if(W.cursor>=W.limit)return!1;W.cursor++}return!0}function t(){for(;!W.out_grouping(S,1072,1103);){if(W.cursor>=W.limit)return!1;W.cursor++}return!0}function w(){b=W.limit,_=b,e()&&(b=W.cursor,t()&&e()&&t()&&(_=W.cursor))}function i(){return _<=W.cursor}function u(e,n){var r,t;if(W.ket=W.cursor,r=W.find_among_b(e,n)){switch(W.bra=W.cursor,r){case 1:if(t=W.limit-W.cursor,!W.eq_s_b(1,"а")&&(W.cursor=W.limit-t,!W.eq_s_b(1,"я")))return!1;case 2:W.slice_del()}return!0}return!1}function o(){return u(h,9)}function s(e,n){var r;return W.ket=W.cursor,!!(r=W.find_among_b(e,n))&&(W.bra=W.cursor,1==r&&W.slice_del(),!0)}function c(){return s(g,26)}function m(){return!!c()&&(u(C,8),!0)}function f(){return s(k,2)}function l(){return u(P,46)}function a(){s(v,36)}function p(){var e;W.ket=W.cursor,(e=W.find_among_b(F,2))&&(W.bra=W.cursor,i()&&1==e&&W.slice_del())}function d(){var e;if(W.ket=W.cursor,e=W.find_among_b(q,4))switch(W.bra=W.cursor,e){case 1:if(W.slice_del(),W.ket=W.cursor,!W.eq_s_b(1,"н"))break;W.bra=W.cursor;case 2:if(!W.eq_s_b(1,"н"))break;case 3:W.slice_del()}}var _,b,h=[new n("в",-1,1),new n("ив",0,2),new n("ыв",0,2),new n("вши",-1,1),new n("ивши",3,2),new n("ывши",3,2),new n("вшись",-1,1),new n("ившись",6,2),new n("ывшись",6,2)],g=[new n("ее",-1,1),new n("ие",-1,1),new n("ое",-1,1),new n("ые",-1,1),new n("ими",-1,1),new n("ыми",-1,1),new n("ей",-1,1),new n("ий",-1,1),new n("ой",-1,1),new n("ый",-1,1),new n("ем",-1,1),new n("им",-1,1),new n("ом",-1,1),new n("ым",-1,1),new n("его",-1,1),new n("ого",-1,1),new n("ему",-1,1),new n("ому",-1,1),new n("их",-1,1),new n("ых",-1,1),new n("ею",-1,1),new n("ою",-1,1),new n("ую",-1,1),new n("юю",-1,1),new n("ая",-1,1),new n("яя",-1,1)],C=[new n("ем",-1,1),new n("нн",-1,1),new n("вш",-1,1),new n("ивш",2,2),new n("ывш",2,2),new n("щ",-1,1),new n("ющ",5,1),new n("ующ",6,2)],k=[new n("сь",-1,1),new n("ся",-1,1)],P=[new n("ла",-1,1),new n("ила",0,2),new n("ыла",0,2),new n("на",-1,1),new n("ена",3,2),new n("ете",-1,1),new n("ите",-1,2),new n("йте",-1,1),new n("ейте",7,2),new n("уйте",7,2),new n("ли",-1,1),new n("или",10,2),new n("ыли",10,2),new n("й",-1,1),new n("ей",13,2),new n("уй",13,2),new n("л",-1,1),new n("ил",16,2),new n("ыл",16,2),new n("ем",-1,1),new n("им",-1,2),new n("ым",-1,2),new n("н",-1,1),new n("ен",22,2),new n("ло",-1,1),new n("ило",24,2),new n("ыло",24,2),new n("но",-1,1),new n("ено",27,2),new n("нно",27,1),new n("ет",-1,1),new n("ует",30,2),new n("ит",-1,2),new n("ыт",-1,2),new n("ют",-1,1),new n("уют",34,2),new n("ят",-1,2),new n("ны",-1,1),new n("ены",37,2),new n("ть",-1,1),new n("ить",39,2),new n("ыть",39,2),new n("ешь",-1,1),new n("ишь",-1,2),new n("ю",-1,2),new n("ую",44,2)],v=[new n("а",-1,1),new n("ев",-1,1),new n("ов",-1,1),new n("е",-1,1),new n("ие",3,1),new n("ье",3,1),new n("и",-1,1),new n("еи",6,1),new n("ии",6,1),new n("ами",6,1),new n("ями",6,1),new n("иями",10,1),new n("й",-1,1),new n("ей",12,1),new n("ией",13,1),new n("ий",12,1),new n("ой",12,1),new n("ам",-1,1),new n("ем",-1,1),new n("ием",18,1),new n("ом",-1,1),new n("ям",-1,1),new n("иям",21,1),new n("о",-1,1),new n("у",-1,1),new n("ах",-1,1),new n("ях",-1,1),new n("иях",26,1),new n("ы",-1,1),new n("ь",-1,1),new n("ю",-1,1),new n("ию",30,1),new n("ью",30,1),new n("я",-1,1),new n("ия",33,1),new n("ья",33,1)],F=[new n("ост",-1,1),new n("ость",-1,1)],q=[new n("ейше",-1,1),new n("н",-1,2),new n("ейш",-1,1),new n("ь",-1,3)],S=[33,65,8,232],W=new r;this.setCurrent=function(e){W.setCurrent(e)},this.getCurrent=function(){return W.getCurrent()},this.stem=function(){return w(),W.cursor=W.limit,!(W.cursor=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},in_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},out_grouping:function(t,i,s){if(this.cursors||e>3]&1<<(7&e)))return this.cursor++,!0}return!1},out_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e>s||e>3]&1<<(7&e)))return this.cursor--,!0}return!1},eq_s:function(t,i){if(this.limit-this.cursor>1),f=0,l=o0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n+_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n+_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},find_among_b:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit_backward,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o=0;m--){if(n-l==u){f=-1;break}if(f=r.charCodeAt(n-1-l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n-_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n-_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},replace_s:function(t,i,s){var e=s.length-(i-t),n=r.substring(0,t),u=r.substring(i);return r=n+s+u,this.limit+=e,this.cursor>=i?this.cursor+=e:this.cursor>t&&(this.cursor=t),e},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>r.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){var s=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=s),r<=this.ket&&(this.ket+=s)},slice_to:function(){return this.slice_check(),r.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.sv.min.js b/assets/javascripts/lunr/min/lunr.sv.min.js new file mode 100644 index 0000000..3e5eb64 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.sv.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Swedish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWordFilter,e.sv.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sv.stemmer))},e.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.sv.trimmer=e.trimmerSupport.generateTrimmer(e.sv.wordCharacters),e.Pipeline.registerFunction(e.sv.trimmer,"trimmer-sv"),e.sv.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,t=new function(){function e(){var e,r=w.cursor+3;if(o=w.limit,0<=r||r<=w.limit){for(a=r;;){if(e=w.cursor,w.in_grouping(l,97,246)){w.cursor=e;break}if(w.cursor=e,w.cursor>=w.limit)return;w.cursor++}for(;!w.out_grouping(l,97,246);){if(w.cursor>=w.limit)return;w.cursor++}o=w.cursor,o=o&&(w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(u,37),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.in_grouping_b(d,98,121)&&w.slice_del()}}function i(){var e=w.limit_backward;w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.find_among_b(c,7)&&(w.cursor=w.limit,w.ket=w.cursor,w.cursor>w.limit_backward&&(w.bra=--w.cursor,w.slice_del())),w.limit_backward=e)}function s(){var e,r;if(w.cursor>=o){if(r=w.limit_backward,w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(m,5))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.slice_from("lös");break;case 3:w.slice_from("full")}w.limit_backward=r}}var a,o,u=[new r("a",-1,1),new r("arna",0,1),new r("erna",0,1),new r("heterna",2,1),new r("orna",0,1),new r("ad",-1,1),new r("e",-1,1),new r("ade",6,1),new r("ande",6,1),new r("arne",6,1),new r("are",6,1),new r("aste",6,1),new r("en",-1,1),new r("anden",12,1),new r("aren",12,1),new r("heten",12,1),new r("ern",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",18,1),new r("or",-1,1),new r("s",-1,2),new r("as",21,1),new r("arnas",22,1),new r("ernas",22,1),new r("ornas",22,1),new r("es",21,1),new r("ades",26,1),new r("andes",26,1),new r("ens",21,1),new r("arens",29,1),new r("hetens",29,1),new r("erns",21,1),new r("at",-1,1),new r("andet",-1,1),new r("het",-1,1),new r("ast",-1,1)],c=[new r("dd",-1,-1),new r("gd",-1,-1),new r("nn",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1),new r("tt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("els",-1,1),new r("fullt",-1,3),new r("löst",-1,2)],l=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],d=[119,127,149],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,t(),w.cursor=w.limit,i(),w.cursor=w.limit,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return t.setCurrent(e),t.stem(),t.getCurrent()}):(t.setCurrent(e),t.stem(),t.getCurrent())}}(),e.Pipeline.registerFunction(e.sv.stemmer,"stemmer-sv"),e.sv.stopWordFilter=e.generateStopWordFilter("alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" ")),e.Pipeline.registerFunction(e.sv.stopWordFilter,"stopWordFilter-sv")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.th.min.js b/assets/javascripts/lunr/min/lunr.th.min.js new file mode 100644 index 0000000..dee3aac --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.th.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.th=function(){this.pipeline.reset(),this.pipeline.add(e.th.trimmer),r?this.tokenizer=e.th.tokenizer:(e.tokenizer&&(e.tokenizer=e.th.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.th.tokenizer))},e.th.wordCharacters="[฀-๿]",e.th.trimmer=e.trimmerSupport.generateTrimmer(e.th.wordCharacters),e.Pipeline.registerFunction(e.th.trimmer,"trimmer-th");var t=e.wordcut;t.init(),e.th.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t):t});var n=i.toString().replace(/^\s+/,"");return t.cut(n).split("|")}}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.tr.min.js b/assets/javascripts/lunr/min/lunr.tr.min.js new file mode 100644 index 0000000..563f6ec --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.tr.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Turkish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(r,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(r.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");r.tr=function(){this.pipeline.reset(),this.pipeline.add(r.tr.trimmer,r.tr.stopWordFilter,r.tr.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(r.tr.stemmer))},r.tr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.tr.trimmer=r.trimmerSupport.generateTrimmer(r.tr.wordCharacters),r.Pipeline.registerFunction(r.tr.trimmer,"trimmer-tr"),r.tr.stemmer=function(){var i=r.stemmerSupport.Among,e=r.stemmerSupport.SnowballProgram,n=new function(){function r(r,i,e){for(;;){var n=Dr.limit-Dr.cursor;if(Dr.in_grouping_b(r,i,e)){Dr.cursor=Dr.limit-n;break}if(Dr.cursor=Dr.limit-n,Dr.cursor<=Dr.limit_backward)return!1;Dr.cursor--}return!0}function n(){var i,e;i=Dr.limit-Dr.cursor,r(Wr,97,305);for(var n=0;nDr.limit_backward&&(Dr.cursor--,e=Dr.limit-Dr.cursor,i()))?(Dr.cursor=Dr.limit-e,!0):(Dr.cursor=Dr.limit-n,r()?(Dr.cursor=Dr.limit-n,!1):(Dr.cursor=Dr.limit-n,!(Dr.cursor<=Dr.limit_backward)&&(Dr.cursor--,!!i()&&(Dr.cursor=Dr.limit-n,!0))))}function u(r){return t(r,function(){return Dr.in_grouping_b(Wr,97,305)})}function o(){return u(function(){return Dr.eq_s_b(1,"n")})}function s(){return u(function(){return Dr.eq_s_b(1,"s")})}function c(){return u(function(){return Dr.eq_s_b(1,"y")})}function l(){return t(function(){return Dr.in_grouping_b(Lr,105,305)},function(){return Dr.out_grouping_b(Wr,97,305)})}function a(){return Dr.find_among_b(ur,10)&&l()}function m(){return n()&&Dr.in_grouping_b(Lr,105,305)&&s()}function d(){return Dr.find_among_b(or,2)}function f(){return n()&&Dr.in_grouping_b(Lr,105,305)&&c()}function b(){return n()&&Dr.find_among_b(sr,4)}function w(){return n()&&Dr.find_among_b(cr,4)&&o()}function _(){return n()&&Dr.find_among_b(lr,2)&&c()}function k(){return n()&&Dr.find_among_b(ar,2)}function p(){return n()&&Dr.find_among_b(mr,4)}function g(){return n()&&Dr.find_among_b(dr,2)}function y(){return n()&&Dr.find_among_b(fr,4)}function z(){return n()&&Dr.find_among_b(br,2)}function v(){return n()&&Dr.find_among_b(wr,2)&&c()}function h(){return Dr.eq_s_b(2,"ki")}function q(){return n()&&Dr.find_among_b(_r,2)&&o()}function C(){return n()&&Dr.find_among_b(kr,4)&&c()}function P(){return n()&&Dr.find_among_b(pr,4)}function F(){return n()&&Dr.find_among_b(gr,4)&&c()}function S(){return Dr.find_among_b(yr,4)}function W(){return n()&&Dr.find_among_b(zr,2)}function L(){return n()&&Dr.find_among_b(vr,4)}function x(){return n()&&Dr.find_among_b(hr,8)}function A(){return Dr.find_among_b(qr,2)}function E(){return n()&&Dr.find_among_b(Cr,32)&&c()}function j(){return Dr.find_among_b(Pr,8)&&c()}function T(){return n()&&Dr.find_among_b(Fr,4)&&c()}function Z(){return Dr.eq_s_b(3,"ken")&&c()}function B(){var r=Dr.limit-Dr.cursor;return!(T()||(Dr.cursor=Dr.limit-r,E()||(Dr.cursor=Dr.limit-r,j()||(Dr.cursor=Dr.limit-r,Z()))))}function D(){if(A()){var r=Dr.limit-Dr.cursor;if(S()||(Dr.cursor=Dr.limit-r,W()||(Dr.cursor=Dr.limit-r,C()||(Dr.cursor=Dr.limit-r,P()||(Dr.cursor=Dr.limit-r,F()||(Dr.cursor=Dr.limit-r))))),T())return!1}return!0}function G(){if(W()){Dr.bra=Dr.cursor,Dr.slice_del();var r=Dr.limit-Dr.cursor;return Dr.ket=Dr.cursor,x()||(Dr.cursor=Dr.limit-r,E()||(Dr.cursor=Dr.limit-r,j()||(Dr.cursor=Dr.limit-r,T()||(Dr.cursor=Dr.limit-r)))),nr=!1,!1}return!0}function H(){if(!L())return!0;var r=Dr.limit-Dr.cursor;return!E()&&(Dr.cursor=Dr.limit-r,!j())}function I(){var r,i=Dr.limit-Dr.cursor;return!(S()||(Dr.cursor=Dr.limit-i,F()||(Dr.cursor=Dr.limit-i,P()||(Dr.cursor=Dr.limit-i,C()))))||(Dr.bra=Dr.cursor,Dr.slice_del(),r=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,T()||(Dr.cursor=Dr.limit-r),!1)}function J(){var r,i=Dr.limit-Dr.cursor;if(Dr.ket=Dr.cursor,nr=!0,B()&&(Dr.cursor=Dr.limit-i,D()&&(Dr.cursor=Dr.limit-i,G()&&(Dr.cursor=Dr.limit-i,H()&&(Dr.cursor=Dr.limit-i,I()))))){if(Dr.cursor=Dr.limit-i,!x())return;Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,r=Dr.limit-Dr.cursor,S()||(Dr.cursor=Dr.limit-r,W()||(Dr.cursor=Dr.limit-r,C()||(Dr.cursor=Dr.limit-r,P()||(Dr.cursor=Dr.limit-r,F()||(Dr.cursor=Dr.limit-r))))),T()||(Dr.cursor=Dr.limit-r)}Dr.bra=Dr.cursor,Dr.slice_del()}function K(){var r,i,e,n;if(Dr.ket=Dr.cursor,h()){if(r=Dr.limit-Dr.cursor,p())return Dr.bra=Dr.cursor,Dr.slice_del(),i=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,W()?(Dr.bra=Dr.cursor,Dr.slice_del(),K()):(Dr.cursor=Dr.limit-i,a()&&(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()))),!0;if(Dr.cursor=Dr.limit-r,w()){if(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,e=Dr.limit-Dr.cursor,d())Dr.bra=Dr.cursor,Dr.slice_del();else{if(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,!a()&&(Dr.cursor=Dr.limit-e,!m()&&(Dr.cursor=Dr.limit-e,!K())))return!0;Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K())}return!0}if(Dr.cursor=Dr.limit-r,g()){if(n=Dr.limit-Dr.cursor,d())Dr.bra=Dr.cursor,Dr.slice_del();else if(Dr.cursor=Dr.limit-n,m())Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K());else if(Dr.cursor=Dr.limit-n,!K())return!1;return!0}}return!1}function M(r){if(Dr.ket=Dr.cursor,!g()&&(Dr.cursor=Dr.limit-r,!k()))return!1;var i=Dr.limit-Dr.cursor;if(d())Dr.bra=Dr.cursor,Dr.slice_del();else if(Dr.cursor=Dr.limit-i,m())Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K());else if(Dr.cursor=Dr.limit-i,!K())return!1;return!0}function N(r){if(Dr.ket=Dr.cursor,!z()&&(Dr.cursor=Dr.limit-r,!b()))return!1;var i=Dr.limit-Dr.cursor;return!(!m()&&(Dr.cursor=Dr.limit-i,!d()))&&(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()),!0)}function O(){var r,i=Dr.limit-Dr.cursor;return Dr.ket=Dr.cursor,!(!w()&&(Dr.cursor=Dr.limit-i,!v()))&&(Dr.bra=Dr.cursor,Dr.slice_del(),r=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,!(!W()||(Dr.bra=Dr.cursor,Dr.slice_del(),!K()))||(Dr.cursor=Dr.limit-r,Dr.ket=Dr.cursor,!(a()||(Dr.cursor=Dr.limit-r,m()||(Dr.cursor=Dr.limit-r,K())))||(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()),!0)))}function Q(){var r,i,e=Dr.limit-Dr.cursor;if(Dr.ket=Dr.cursor,!p()&&(Dr.cursor=Dr.limit-e,!f()&&(Dr.cursor=Dr.limit-e,!_())))return!1;if(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,r=Dr.limit-Dr.cursor,a())Dr.bra=Dr.cursor,Dr.slice_del(),i=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,W()||(Dr.cursor=Dr.limit-i);else if(Dr.cursor=Dr.limit-r,!W())return!0;return Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,K(),!0}function R(){var r,i,e=Dr.limit-Dr.cursor;if(Dr.ket=Dr.cursor,W())return Dr.bra=Dr.cursor,Dr.slice_del(),void K();if(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,q())if(Dr.bra=Dr.cursor,Dr.slice_del(),r=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,d())Dr.bra=Dr.cursor,Dr.slice_del();else{if(Dr.cursor=Dr.limit-r,Dr.ket=Dr.cursor,!a()&&(Dr.cursor=Dr.limit-r,!m())){if(Dr.cursor=Dr.limit-r,Dr.ket=Dr.cursor,!W())return;if(Dr.bra=Dr.cursor,Dr.slice_del(),!K())return}Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K())}else if(Dr.cursor=Dr.limit-e,!M(e)&&(Dr.cursor=Dr.limit-e,!N(e))){if(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,y())return Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,i=Dr.limit-Dr.cursor,void(a()?(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K())):(Dr.cursor=Dr.limit-i,W()?(Dr.bra=Dr.cursor,Dr.slice_del(),K()):(Dr.cursor=Dr.limit-i,K())));if(Dr.cursor=Dr.limit-e,!O()){if(Dr.cursor=Dr.limit-e,d())return Dr.bra=Dr.cursor,void Dr.slice_del();Dr.cursor=Dr.limit-e,K()||(Dr.cursor=Dr.limit-e,Q()||(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,(a()||(Dr.cursor=Dr.limit-e,m()))&&(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()))))}}}function U(){var r;if(Dr.ket=Dr.cursor,r=Dr.find_among_b(Sr,4))switch(Dr.bra=Dr.cursor,r){case 1:Dr.slice_from("p");break;case 2:Dr.slice_from("ç");break;case 3:Dr.slice_from("t");break;case 4:Dr.slice_from("k")}}function V(){for(;;){var r=Dr.limit-Dr.cursor;if(Dr.in_grouping_b(Wr,97,305)){Dr.cursor=Dr.limit-r;break}if(Dr.cursor=Dr.limit-r,Dr.cursor<=Dr.limit_backward)return!1;Dr.cursor--}return!0}function X(r,i,e){if(Dr.cursor=Dr.limit-r,V()){var n=Dr.limit-Dr.cursor;if(!Dr.eq_s_b(1,i)&&(Dr.cursor=Dr.limit-n,!Dr.eq_s_b(1,e)))return!0;Dr.cursor=Dr.limit-r;var t=Dr.cursor;return Dr.insert(Dr.cursor,Dr.cursor,e),Dr.cursor=t,!1}return!0}function Y(){var r=Dr.limit-Dr.cursor;(Dr.eq_s_b(1,"d")||(Dr.cursor=Dr.limit-r,Dr.eq_s_b(1,"g")))&&X(r,"a","ı")&&X(r,"e","i")&&X(r,"o","u")&&X(r,"ö","ü")}function $(){for(var r,i=Dr.cursor,e=2;;){for(r=Dr.cursor;!Dr.in_grouping(Wr,97,305);){if(Dr.cursor>=Dr.limit)return Dr.cursor=r,!(e>0)&&(Dr.cursor=i,!0);Dr.cursor++}e--}}function rr(r,i,e){for(;!Dr.eq_s(i,e);){if(Dr.cursor>=Dr.limit)return!0;Dr.cursor++}return(tr=i)!=Dr.limit||(Dr.cursor=r,!1)}function ir(){var r=Dr.cursor;return!rr(r,2,"ad")||(Dr.cursor=r,!rr(r,5,"soyad"))}function er(){var r=Dr.cursor;return!ir()&&(Dr.limit_backward=r,Dr.cursor=Dr.limit,Y(),Dr.cursor=Dr.limit,U(),!0)}var nr,tr,ur=[new i("m",-1,-1),new i("n",-1,-1),new i("miz",-1,-1),new i("niz",-1,-1),new i("muz",-1,-1),new i("nuz",-1,-1),new i("müz",-1,-1),new i("nüz",-1,-1),new i("mız",-1,-1),new i("nız",-1,-1)],or=[new i("leri",-1,-1),new i("ları",-1,-1)],sr=[new i("ni",-1,-1),new i("nu",-1,-1),new i("nü",-1,-1),new i("nı",-1,-1)],cr=[new i("in",-1,-1),new i("un",-1,-1),new i("ün",-1,-1),new i("ın",-1,-1)],lr=[new i("a",-1,-1),new i("e",-1,-1)],ar=[new i("na",-1,-1),new i("ne",-1,-1)],mr=[new i("da",-1,-1),new i("ta",-1,-1),new i("de",-1,-1),new i("te",-1,-1)],dr=[new i("nda",-1,-1),new i("nde",-1,-1)],fr=[new i("dan",-1,-1),new i("tan",-1,-1),new i("den",-1,-1),new i("ten",-1,-1)],br=[new i("ndan",-1,-1),new i("nden",-1,-1)],wr=[new i("la",-1,-1),new i("le",-1,-1)],_r=[new i("ca",-1,-1),new i("ce",-1,-1)],kr=[new i("im",-1,-1),new i("um",-1,-1),new i("üm",-1,-1),new i("ım",-1,-1)],pr=[new i("sin",-1,-1),new i("sun",-1,-1),new i("sün",-1,-1),new i("sın",-1,-1)],gr=[new i("iz",-1,-1),new i("uz",-1,-1),new i("üz",-1,-1),new i("ız",-1,-1)],yr=[new i("siniz",-1,-1),new i("sunuz",-1,-1),new i("sünüz",-1,-1),new i("sınız",-1,-1)],zr=[new i("lar",-1,-1),new i("ler",-1,-1)],vr=[new i("niz",-1,-1),new i("nuz",-1,-1),new i("nüz",-1,-1),new i("nız",-1,-1)],hr=[new i("dir",-1,-1),new i("tir",-1,-1),new i("dur",-1,-1),new i("tur",-1,-1),new i("dür",-1,-1),new i("tür",-1,-1),new i("dır",-1,-1),new i("tır",-1,-1)],qr=[new i("casına",-1,-1),new i("cesine",-1,-1)],Cr=[new i("di",-1,-1),new i("ti",-1,-1),new i("dik",-1,-1),new i("tik",-1,-1),new i("duk",-1,-1),new i("tuk",-1,-1),new i("dük",-1,-1),new i("tük",-1,-1),new i("dık",-1,-1),new i("tık",-1,-1),new i("dim",-1,-1),new i("tim",-1,-1),new i("dum",-1,-1),new i("tum",-1,-1),new i("düm",-1,-1),new i("tüm",-1,-1),new i("dım",-1,-1),new i("tım",-1,-1),new i("din",-1,-1),new i("tin",-1,-1),new i("dun",-1,-1),new i("tun",-1,-1),new i("dün",-1,-1),new i("tün",-1,-1),new i("dın",-1,-1),new i("tın",-1,-1),new i("du",-1,-1),new i("tu",-1,-1),new i("dü",-1,-1),new i("tü",-1,-1),new i("dı",-1,-1),new i("tı",-1,-1)],Pr=[new i("sa",-1,-1),new i("se",-1,-1),new i("sak",-1,-1),new i("sek",-1,-1),new i("sam",-1,-1),new i("sem",-1,-1),new i("san",-1,-1),new i("sen",-1,-1)],Fr=[new i("miş",-1,-1),new i("muş",-1,-1),new i("müş",-1,-1),new i("mış",-1,-1)],Sr=[new i("b",-1,1),new i("c",-1,2),new i("d",-1,3),new i("ğ",-1,4)],Wr=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,8,0,0,0,0,0,0,1],Lr=[1,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,1],xr=[1,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],Ar=[17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130],Er=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],jr=[17],Tr=[65],Zr=[65],Br=[["a",xr,97,305],["e",Ar,101,252],["ı",Er,97,305],["i",jr,101,105],["o",Tr,111,117],["ö",Zr,246,252],["u",Tr,111,117]],Dr=new e;this.setCurrent=function(r){Dr.setCurrent(r)},this.getCurrent=function(){return Dr.getCurrent()},this.stem=function(){return!!($()&&(Dr.limit_backward=Dr.cursor,Dr.cursor=Dr.limit,J(),Dr.cursor=Dr.limit,nr&&(R(),Dr.cursor=Dr.limit_backward,er())))}};return function(r){return"function"==typeof r.update?r.update(function(r){return n.setCurrent(r),n.stem(),n.getCurrent()}):(n.setCurrent(r),n.stem(),n.getCurrent())}}(),r.Pipeline.registerFunction(r.tr.stemmer,"stemmer-tr"),r.tr.stopWordFilter=r.generateStopWordFilter("acaba altmış altı ama ancak arada aslında ayrıca bana bazı belki ben benden beni benim beri beş bile bin bir biri birkaç birkez birçok birşey birşeyi biz bizden bize bizi bizim bu buna bunda bundan bunlar bunları bunların bunu bunun burada böyle böylece da daha dahi de defa değil diye diğer doksan dokuz dolayı dolayısıyla dört edecek eden ederek edilecek ediliyor edilmesi ediyor elli en etmesi etti ettiği ettiğini eğer gibi göre halen hangi hatta hem henüz hep hepsi her herhangi herkesin hiç hiçbir iki ile ilgili ise itibaren itibariyle için işte kadar karşın katrilyon kendi kendilerine kendini kendisi kendisine kendisini kez ki kim kimden kime kimi kimse kırk milyar milyon mu mü mı nasıl ne neden nedenle nerde nerede nereye niye niçin o olan olarak oldu olduklarını olduğu olduğunu olmadı olmadığı olmak olması olmayan olmaz olsa olsun olup olur olursa oluyor on ona ondan onlar onlardan onları onların onu onun otuz oysa pek rağmen sadece sanki sekiz seksen sen senden seni senin siz sizden sizi sizin tarafından trilyon tüm var vardı ve veya ya yani yapacak yapmak yaptı yaptıkları yaptığı yaptığını yapılan yapılması yapıyor yedi yerine yetmiş yine yirmi yoksa yüz zaten çok çünkü öyle üzere üç şey şeyden şeyi şeyler şu şuna şunda şundan şunları şunu şöyle".split(" ")),r.Pipeline.registerFunction(r.tr.stopWordFilter,"stopWordFilter-tr")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.vi.min.js b/assets/javascripts/lunr/min/lunr.vi.min.js new file mode 100644 index 0000000..22aed28 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.vi.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.vi=function(){this.pipeline.reset(),this.pipeline.add(e.vi.stopWordFilter,e.vi.trimmer)},e.vi.wordCharacters="[A-Za-ẓ̀͐́͑̉̃̓ÂâÊêÔôĂ-ăĐ-đƠ-ơƯ-ư]",e.vi.trimmer=e.trimmerSupport.generateTrimmer(e.vi.wordCharacters),e.Pipeline.registerFunction(e.vi.trimmer,"trimmer-vi"),e.vi.stopWordFilter=e.generateStopWordFilter("là cái nhưng mà".split(" "))}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.zh.min.js b/assets/javascripts/lunr/min/lunr.zh.min.js new file mode 100644 index 0000000..7727bbe --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.zh.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r(require("nodejieba")):r()(e.lunr)}(this,function(e){return function(r,t){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var i="2"==r.version[0];r.zh=function(){this.pipeline.reset(),this.pipeline.add(r.zh.trimmer,r.zh.stopWordFilter,r.zh.stemmer),i?this.tokenizer=r.zh.tokenizer:(r.tokenizer&&(r.tokenizer=r.zh.tokenizer),this.tokenizerFn&&(this.tokenizerFn=r.zh.tokenizer))},r.zh.tokenizer=function(n){if(!arguments.length||null==n||void 0==n)return[];if(Array.isArray(n))return n.map(function(e){return i?new r.Token(e.toLowerCase()):e.toLowerCase()});t&&e.load(t);var o=n.toString().trim().toLowerCase(),s=[];e.cut(o,!0).forEach(function(e){s=s.concat(e.split(" "))}),s=s.filter(function(e){return!!e});var u=0;return s.map(function(e,t){if(i){var n=o.indexOf(e,u),s={};return s.position=[n,e.length],s.index=t,u=n,new r.Token(e,s)}return e})},r.zh.wordCharacters="\\w一-龥",r.zh.trimmer=r.trimmerSupport.generateTrimmer(r.zh.wordCharacters),r.Pipeline.registerFunction(r.zh.trimmer,"trimmer-zh"),r.zh.stemmer=function(){return function(e){return e}}(),r.Pipeline.registerFunction(r.zh.stemmer,"stemmer-zh"),r.zh.stopWordFilter=r.generateStopWordFilter("的 一 不 在 人 有 是 为 以 于 上 他 而 后 之 来 及 了 因 下 可 到 由 这 与 也 此 但 并 个 其 已 无 小 我 们 起 最 再 今 去 好 只 又 或 很 亦 某 把 那 你 乃 它 吧 被 比 别 趁 当 从 到 得 打 凡 儿 尔 该 各 给 跟 和 何 还 即 几 既 看 据 距 靠 啦 了 另 么 每 们 嘛 拿 哪 那 您 凭 且 却 让 仍 啥 如 若 使 谁 虽 随 同 所 她 哇 嗡 往 哪 些 向 沿 哟 用 于 咱 则 怎 曾 至 致 着 诸 自".split(" ")),r.Pipeline.registerFunction(r.zh.stopWordFilter,"stopWordFilter-zh")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/tinyseg.js b/assets/javascripts/lunr/tinyseg.js new file mode 100644 index 0000000..167fa6d --- /dev/null +++ b/assets/javascripts/lunr/tinyseg.js @@ -0,0 +1,206 @@ +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +;(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function () { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + + return function(lunr) { + // TinySegmenter 0.1 -- Super compact Japanese tokenizer in Javascript + // (c) 2008 Taku Kudo + // TinySegmenter is freely distributable under the terms of a new BSD licence. + // For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt + + function TinySegmenter() { + var patterns = { + "[一二三四五六七八九十百千万億兆]":"M", + "[一-龠々〆ヵヶ]":"H", + "[ぁ-ん]":"I", + "[ァ-ヴーア-ン゙ー]":"K", + "[a-zA-Za-zA-Z]":"A", + "[0-90-9]":"N" + } + this.chartype_ = []; + for (var i in patterns) { + var regexp = new RegExp(i); + this.chartype_.push([regexp, patterns[i]]); + } + + this.BIAS__ = -332 + this.BC1__ = {"HH":6,"II":2461,"KH":406,"OH":-1378}; + this.BC2__ = {"AA":-3267,"AI":2744,"AN":-878,"HH":-4070,"HM":-1711,"HN":4012,"HO":3761,"IA":1327,"IH":-1184,"II":-1332,"IK":1721,"IO":5492,"KI":3831,"KK":-8741,"MH":-3132,"MK":3334,"OO":-2920}; + this.BC3__ = {"HH":996,"HI":626,"HK":-721,"HN":-1307,"HO":-836,"IH":-301,"KK":2762,"MK":1079,"MM":4034,"OA":-1652,"OH":266}; + this.BP1__ = {"BB":295,"OB":304,"OO":-125,"UB":352}; + this.BP2__ = {"BO":60,"OO":-1762}; + this.BQ1__ = {"BHH":1150,"BHM":1521,"BII":-1158,"BIM":886,"BMH":1208,"BNH":449,"BOH":-91,"BOO":-2597,"OHI":451,"OIH":-296,"OKA":1851,"OKH":-1020,"OKK":904,"OOO":2965}; + this.BQ2__ = {"BHH":118,"BHI":-1159,"BHM":466,"BIH":-919,"BKK":-1720,"BKO":864,"OHH":-1139,"OHM":-181,"OIH":153,"UHI":-1146}; + this.BQ3__ = {"BHH":-792,"BHI":2664,"BII":-299,"BKI":419,"BMH":937,"BMM":8335,"BNN":998,"BOH":775,"OHH":2174,"OHM":439,"OII":280,"OKH":1798,"OKI":-793,"OKO":-2242,"OMH":-2402,"OOO":11699}; + this.BQ4__ = {"BHH":-3895,"BIH":3761,"BII":-4654,"BIK":1348,"BKK":-1806,"BMI":-3385,"BOO":-12396,"OAH":926,"OHH":266,"OHK":-2036,"ONN":-973}; + this.BW1__ = {",と":660,",同":727,"B1あ":1404,"B1同":542,"、と":660,"、同":727,"」と":1682,"あっ":1505,"いう":1743,"いっ":-2055,"いる":672,"うし":-4817,"うん":665,"から":3472,"がら":600,"こう":-790,"こと":2083,"こん":-1262,"さら":-4143,"さん":4573,"した":2641,"して":1104,"すで":-3399,"そこ":1977,"それ":-871,"たち":1122,"ため":601,"った":3463,"つい":-802,"てい":805,"てき":1249,"でき":1127,"です":3445,"では":844,"とい":-4915,"とみ":1922,"どこ":3887,"ない":5713,"なっ":3015,"など":7379,"なん":-1113,"にし":2468,"には":1498,"にも":1671,"に対":-912,"の一":-501,"の中":741,"ませ":2448,"まで":1711,"まま":2600,"まる":-2155,"やむ":-1947,"よっ":-2565,"れた":2369,"れで":-913,"をし":1860,"を見":731,"亡く":-1886,"京都":2558,"取り":-2784,"大き":-2604,"大阪":1497,"平方":-2314,"引き":-1336,"日本":-195,"本当":-2423,"毎日":-2113,"目指":-724,"B1あ":1404,"B1同":542,"」と":1682}; + this.BW2__ = {"..":-11822,"11":-669,"――":-5730,"−−":-13175,"いう":-1609,"うか":2490,"かし":-1350,"かも":-602,"から":-7194,"かれ":4612,"がい":853,"がら":-3198,"きた":1941,"くな":-1597,"こと":-8392,"この":-4193,"させ":4533,"され":13168,"さん":-3977,"しい":-1819,"しか":-545,"した":5078,"して":972,"しな":939,"その":-3744,"たい":-1253,"たた":-662,"ただ":-3857,"たち":-786,"たと":1224,"たは":-939,"った":4589,"って":1647,"っと":-2094,"てい":6144,"てき":3640,"てく":2551,"ては":-3110,"ても":-3065,"でい":2666,"でき":-1528,"でし":-3828,"です":-4761,"でも":-4203,"とい":1890,"とこ":-1746,"とと":-2279,"との":720,"とみ":5168,"とも":-3941,"ない":-2488,"なが":-1313,"など":-6509,"なの":2614,"なん":3099,"にお":-1615,"にし":2748,"にな":2454,"によ":-7236,"に対":-14943,"に従":-4688,"に関":-11388,"のか":2093,"ので":-7059,"のに":-6041,"のの":-6125,"はい":1073,"はが":-1033,"はず":-2532,"ばれ":1813,"まし":-1316,"まで":-6621,"まれ":5409,"めて":-3153,"もい":2230,"もの":-10713,"らか":-944,"らし":-1611,"らに":-1897,"りし":651,"りま":1620,"れた":4270,"れて":849,"れば":4114,"ろう":6067,"われ":7901,"を通":-11877,"んだ":728,"んな":-4115,"一人":602,"一方":-1375,"一日":970,"一部":-1051,"上が":-4479,"会社":-1116,"出て":2163,"分の":-7758,"同党":970,"同日":-913,"大阪":-2471,"委員":-1250,"少な":-1050,"年度":-8669,"年間":-1626,"府県":-2363,"手権":-1982,"新聞":-4066,"日新":-722,"日本":-7068,"日米":3372,"曜日":-601,"朝鮮":-2355,"本人":-2697,"東京":-1543,"然と":-1384,"社会":-1276,"立て":-990,"第に":-1612,"米国":-4268,"11":-669}; + this.BW3__ = {"あた":-2194,"あり":719,"ある":3846,"い.":-1185,"い。":-1185,"いい":5308,"いえ":2079,"いく":3029,"いた":2056,"いっ":1883,"いる":5600,"いわ":1527,"うち":1117,"うと":4798,"えと":1454,"か.":2857,"か。":2857,"かけ":-743,"かっ":-4098,"かに":-669,"から":6520,"かり":-2670,"が,":1816,"が、":1816,"がき":-4855,"がけ":-1127,"がっ":-913,"がら":-4977,"がり":-2064,"きた":1645,"けど":1374,"こと":7397,"この":1542,"ころ":-2757,"さい":-714,"さを":976,"し,":1557,"し、":1557,"しい":-3714,"した":3562,"して":1449,"しな":2608,"しま":1200,"す.":-1310,"す。":-1310,"する":6521,"ず,":3426,"ず、":3426,"ずに":841,"そう":428,"た.":8875,"た。":8875,"たい":-594,"たの":812,"たり":-1183,"たる":-853,"だ.":4098,"だ。":4098,"だっ":1004,"った":-4748,"って":300,"てい":6240,"てお":855,"ても":302,"です":1437,"でに":-1482,"では":2295,"とう":-1387,"とし":2266,"との":541,"とも":-3543,"どう":4664,"ない":1796,"なく":-903,"など":2135,"に,":-1021,"に、":-1021,"にし":1771,"にな":1906,"には":2644,"の,":-724,"の、":-724,"の子":-1000,"は,":1337,"は、":1337,"べき":2181,"まし":1113,"ます":6943,"まっ":-1549,"まで":6154,"まれ":-793,"らし":1479,"られ":6820,"るる":3818,"れ,":854,"れ、":854,"れた":1850,"れて":1375,"れば":-3246,"れる":1091,"われ":-605,"んだ":606,"んで":798,"カ月":990,"会議":860,"入り":1232,"大会":2217,"始め":1681,"市":965,"新聞":-5055,"日,":974,"日、":974,"社会":2024,"カ月":990}; + this.TC1__ = {"AAA":1093,"HHH":1029,"HHM":580,"HII":998,"HOH":-390,"HOM":-331,"IHI":1169,"IOH":-142,"IOI":-1015,"IOM":467,"MMH":187,"OOI":-1832}; + this.TC2__ = {"HHO":2088,"HII":-1023,"HMM":-1154,"IHI":-1965,"KKH":703,"OII":-2649}; + this.TC3__ = {"AAA":-294,"HHH":346,"HHI":-341,"HII":-1088,"HIK":731,"HOH":-1486,"IHH":128,"IHI":-3041,"IHO":-1935,"IIH":-825,"IIM":-1035,"IOI":-542,"KHH":-1216,"KKA":491,"KKH":-1217,"KOK":-1009,"MHH":-2694,"MHM":-457,"MHO":123,"MMH":-471,"NNH":-1689,"NNO":662,"OHO":-3393}; + this.TC4__ = {"HHH":-203,"HHI":1344,"HHK":365,"HHM":-122,"HHN":182,"HHO":669,"HIH":804,"HII":679,"HOH":446,"IHH":695,"IHO":-2324,"IIH":321,"III":1497,"IIO":656,"IOO":54,"KAK":4845,"KKA":3386,"KKK":3065,"MHH":-405,"MHI":201,"MMH":-241,"MMM":661,"MOM":841}; + this.TQ1__ = {"BHHH":-227,"BHHI":316,"BHIH":-132,"BIHH":60,"BIII":1595,"BNHH":-744,"BOHH":225,"BOOO":-908,"OAKK":482,"OHHH":281,"OHIH":249,"OIHI":200,"OIIH":-68}; + this.TQ2__ = {"BIHH":-1401,"BIII":-1033,"BKAK":-543,"BOOO":-5591}; + this.TQ3__ = {"BHHH":478,"BHHM":-1073,"BHIH":222,"BHII":-504,"BIIH":-116,"BIII":-105,"BMHI":-863,"BMHM":-464,"BOMH":620,"OHHH":346,"OHHI":1729,"OHII":997,"OHMH":481,"OIHH":623,"OIIH":1344,"OKAK":2792,"OKHH":587,"OKKA":679,"OOHH":110,"OOII":-685}; + this.TQ4__ = {"BHHH":-721,"BHHM":-3604,"BHII":-966,"BIIH":-607,"BIII":-2181,"OAAA":-2763,"OAKK":180,"OHHH":-294,"OHHI":2446,"OHHO":480,"OHIH":-1573,"OIHH":1935,"OIHI":-493,"OIIH":626,"OIII":-4007,"OKAK":-8156}; + this.TW1__ = {"につい":-4681,"東京都":2026}; + this.TW2__ = {"ある程":-2049,"いった":-1256,"ころが":-2434,"しょう":3873,"その後":-4430,"だって":-1049,"ていた":1833,"として":-4657,"ともに":-4517,"もので":1882,"一気に":-792,"初めて":-1512,"同時に":-8097,"大きな":-1255,"対して":-2721,"社会党":-3216}; + this.TW3__ = {"いただ":-1734,"してい":1314,"として":-4314,"につい":-5483,"にとっ":-5989,"に当た":-6247,"ので,":-727,"ので、":-727,"のもの":-600,"れから":-3752,"十二月":-2287}; + this.TW4__ = {"いう.":8576,"いう。":8576,"からな":-2348,"してい":2958,"たが,":1516,"たが、":1516,"ている":1538,"という":1349,"ました":5543,"ません":1097,"ようと":-4258,"よると":5865}; + this.UC1__ = {"A":484,"K":93,"M":645,"O":-505}; + this.UC2__ = {"A":819,"H":1059,"I":409,"M":3987,"N":5775,"O":646}; + this.UC3__ = {"A":-1370,"I":2311}; + this.UC4__ = {"A":-2643,"H":1809,"I":-1032,"K":-3450,"M":3565,"N":3876,"O":6646}; + this.UC5__ = {"H":313,"I":-1238,"K":-799,"M":539,"O":-831}; + this.UC6__ = {"H":-506,"I":-253,"K":87,"M":247,"O":-387}; + this.UP1__ = {"O":-214}; + this.UP2__ = {"B":69,"O":935}; + this.UP3__ = {"B":189}; + this.UQ1__ = {"BH":21,"BI":-12,"BK":-99,"BN":142,"BO":-56,"OH":-95,"OI":477,"OK":410,"OO":-2422}; + this.UQ2__ = {"BH":216,"BI":113,"OK":1759}; + this.UQ3__ = {"BA":-479,"BH":42,"BI":1913,"BK":-7198,"BM":3160,"BN":6427,"BO":14761,"OI":-827,"ON":-3212}; + this.UW1__ = {",":156,"、":156,"「":-463,"あ":-941,"う":-127,"が":-553,"き":121,"こ":505,"で":-201,"と":-547,"ど":-123,"に":-789,"の":-185,"は":-847,"も":-466,"や":-470,"よ":182,"ら":-292,"り":208,"れ":169,"を":-446,"ん":-137,"・":-135,"主":-402,"京":-268,"区":-912,"午":871,"国":-460,"大":561,"委":729,"市":-411,"日":-141,"理":361,"生":-408,"県":-386,"都":-718,"「":-463,"・":-135}; + this.UW2__ = {",":-829,"、":-829,"〇":892,"「":-645,"」":3145,"あ":-538,"い":505,"う":134,"お":-502,"か":1454,"が":-856,"く":-412,"こ":1141,"さ":878,"ざ":540,"し":1529,"す":-675,"せ":300,"そ":-1011,"た":188,"だ":1837,"つ":-949,"て":-291,"で":-268,"と":-981,"ど":1273,"な":1063,"に":-1764,"の":130,"は":-409,"ひ":-1273,"べ":1261,"ま":600,"も":-1263,"や":-402,"よ":1639,"り":-579,"る":-694,"れ":571,"を":-2516,"ん":2095,"ア":-587,"カ":306,"キ":568,"ッ":831,"三":-758,"不":-2150,"世":-302,"中":-968,"主":-861,"事":492,"人":-123,"会":978,"保":362,"入":548,"初":-3025,"副":-1566,"北":-3414,"区":-422,"大":-1769,"天":-865,"太":-483,"子":-1519,"学":760,"実":1023,"小":-2009,"市":-813,"年":-1060,"強":1067,"手":-1519,"揺":-1033,"政":1522,"文":-1355,"新":-1682,"日":-1815,"明":-1462,"最":-630,"朝":-1843,"本":-1650,"東":-931,"果":-665,"次":-2378,"民":-180,"気":-1740,"理":752,"発":529,"目":-1584,"相":-242,"県":-1165,"立":-763,"第":810,"米":509,"自":-1353,"行":838,"西":-744,"見":-3874,"調":1010,"議":1198,"込":3041,"開":1758,"間":-1257,"「":-645,"」":3145,"ッ":831,"ア":-587,"カ":306,"キ":568}; + this.UW3__ = {",":4889,"1":-800,"−":-1723,"、":4889,"々":-2311,"〇":5827,"」":2670,"〓":-3573,"あ":-2696,"い":1006,"う":2342,"え":1983,"お":-4864,"か":-1163,"が":3271,"く":1004,"け":388,"げ":401,"こ":-3552,"ご":-3116,"さ":-1058,"し":-395,"す":584,"せ":3685,"そ":-5228,"た":842,"ち":-521,"っ":-1444,"つ":-1081,"て":6167,"で":2318,"と":1691,"ど":-899,"な":-2788,"に":2745,"の":4056,"は":4555,"ひ":-2171,"ふ":-1798,"へ":1199,"ほ":-5516,"ま":-4384,"み":-120,"め":1205,"も":2323,"や":-788,"よ":-202,"ら":727,"り":649,"る":5905,"れ":2773,"わ":-1207,"を":6620,"ん":-518,"ア":551,"グ":1319,"ス":874,"ッ":-1350,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278,"・":-3794,"一":-1619,"下":-1759,"世":-2087,"両":3815,"中":653,"主":-758,"予":-1193,"二":974,"人":2742,"今":792,"他":1889,"以":-1368,"低":811,"何":4265,"作":-361,"保":-2439,"元":4858,"党":3593,"全":1574,"公":-3030,"六":755,"共":-1880,"円":5807,"再":3095,"分":457,"初":2475,"別":1129,"前":2286,"副":4437,"力":365,"動":-949,"務":-1872,"化":1327,"北":-1038,"区":4646,"千":-2309,"午":-783,"協":-1006,"口":483,"右":1233,"各":3588,"合":-241,"同":3906,"和":-837,"員":4513,"国":642,"型":1389,"場":1219,"外":-241,"妻":2016,"学":-1356,"安":-423,"実":-1008,"家":1078,"小":-513,"少":-3102,"州":1155,"市":3197,"平":-1804,"年":2416,"広":-1030,"府":1605,"度":1452,"建":-2352,"当":-3885,"得":1905,"思":-1291,"性":1822,"戸":-488,"指":-3973,"政":-2013,"教":-1479,"数":3222,"文":-1489,"新":1764,"日":2099,"旧":5792,"昨":-661,"時":-1248,"曜":-951,"最":-937,"月":4125,"期":360,"李":3094,"村":364,"東":-805,"核":5156,"森":2438,"業":484,"氏":2613,"民":-1694,"決":-1073,"法":1868,"海":-495,"無":979,"物":461,"特":-3850,"生":-273,"用":914,"町":1215,"的":7313,"直":-1835,"省":792,"県":6293,"知":-1528,"私":4231,"税":401,"立":-960,"第":1201,"米":7767,"系":3066,"約":3663,"級":1384,"統":-4229,"総":1163,"線":1255,"者":6457,"能":725,"自":-2869,"英":785,"見":1044,"調":-562,"財":-733,"費":1777,"車":1835,"軍":1375,"込":-1504,"通":-1136,"選":-681,"郎":1026,"郡":4404,"部":1200,"金":2163,"長":421,"開":-1432,"間":1302,"関":-1282,"雨":2009,"電":-1045,"非":2066,"駅":1620,"1":-800,"」":2670,"・":-3794,"ッ":-1350,"ア":551,"グ":1319,"ス":874,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278}; + this.UW4__ = {",":3930,".":3508,"―":-4841,"、":3930,"。":3508,"〇":4999,"「":1895,"」":3798,"〓":-5156,"あ":4752,"い":-3435,"う":-640,"え":-2514,"お":2405,"か":530,"が":6006,"き":-4482,"ぎ":-3821,"く":-3788,"け":-4376,"げ":-4734,"こ":2255,"ご":1979,"さ":2864,"し":-843,"じ":-2506,"す":-731,"ず":1251,"せ":181,"そ":4091,"た":5034,"だ":5408,"ち":-3654,"っ":-5882,"つ":-1659,"て":3994,"で":7410,"と":4547,"な":5433,"に":6499,"ぬ":1853,"ね":1413,"の":7396,"は":8578,"ば":1940,"ひ":4249,"び":-4134,"ふ":1345,"へ":6665,"べ":-744,"ほ":1464,"ま":1051,"み":-2082,"む":-882,"め":-5046,"も":4169,"ゃ":-2666,"や":2795,"ょ":-1544,"よ":3351,"ら":-2922,"り":-9726,"る":-14896,"れ":-2613,"ろ":-4570,"わ":-1783,"を":13150,"ん":-2352,"カ":2145,"コ":1789,"セ":1287,"ッ":-724,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637,"・":-4371,"ー":-11870,"一":-2069,"中":2210,"予":782,"事":-190,"井":-1768,"人":1036,"以":544,"会":950,"体":-1286,"作":530,"側":4292,"先":601,"党":-2006,"共":-1212,"内":584,"円":788,"初":1347,"前":1623,"副":3879,"力":-302,"動":-740,"務":-2715,"化":776,"区":4517,"協":1013,"参":1555,"合":-1834,"和":-681,"員":-910,"器":-851,"回":1500,"国":-619,"園":-1200,"地":866,"場":-1410,"塁":-2094,"士":-1413,"多":1067,"大":571,"子":-4802,"学":-1397,"定":-1057,"寺":-809,"小":1910,"屋":-1328,"山":-1500,"島":-2056,"川":-2667,"市":2771,"年":374,"庁":-4556,"後":456,"性":553,"感":916,"所":-1566,"支":856,"改":787,"政":2182,"教":704,"文":522,"方":-856,"日":1798,"時":1829,"最":845,"月":-9066,"木":-485,"来":-442,"校":-360,"業":-1043,"氏":5388,"民":-2716,"気":-910,"沢":-939,"済":-543,"物":-735,"率":672,"球":-1267,"生":-1286,"産":-1101,"田":-2900,"町":1826,"的":2586,"目":922,"省":-3485,"県":2997,"空":-867,"立":-2112,"第":788,"米":2937,"系":786,"約":2171,"経":1146,"統":-1169,"総":940,"線":-994,"署":749,"者":2145,"能":-730,"般":-852,"行":-792,"規":792,"警":-1184,"議":-244,"谷":-1000,"賞":730,"車":-1481,"軍":1158,"輪":-1433,"込":-3370,"近":929,"道":-1291,"選":2596,"郎":-4866,"都":1192,"野":-1100,"銀":-2213,"長":357,"間":-2344,"院":-2297,"際":-2604,"電":-878,"領":-1659,"題":-792,"館":-1984,"首":1749,"高":2120,"「":1895,"」":3798,"・":-4371,"ッ":-724,"ー":-11870,"カ":2145,"コ":1789,"セ":1287,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637}; + this.UW5__ = {",":465,".":-299,"1":-514,"E2":-32768,"]":-2762,"、":465,"。":-299,"「":363,"あ":1655,"い":331,"う":-503,"え":1199,"お":527,"か":647,"が":-421,"き":1624,"ぎ":1971,"く":312,"げ":-983,"さ":-1537,"し":-1371,"す":-852,"だ":-1186,"ち":1093,"っ":52,"つ":921,"て":-18,"で":-850,"と":-127,"ど":1682,"な":-787,"に":-1224,"の":-635,"は":-578,"べ":1001,"み":502,"め":865,"ゃ":3350,"ょ":854,"り":-208,"る":429,"れ":504,"わ":419,"を":-1264,"ん":327,"イ":241,"ル":451,"ン":-343,"中":-871,"京":722,"会":-1153,"党":-654,"務":3519,"区":-901,"告":848,"員":2104,"大":-1296,"学":-548,"定":1785,"嵐":-1304,"市":-2991,"席":921,"年":1763,"思":872,"所":-814,"挙":1618,"新":-1682,"日":218,"月":-4353,"査":932,"格":1356,"機":-1508,"氏":-1347,"田":240,"町":-3912,"的":-3149,"相":1319,"省":-1052,"県":-4003,"研":-997,"社":-278,"空":-813,"統":1955,"者":-2233,"表":663,"語":-1073,"議":1219,"選":-1018,"郎":-368,"長":786,"間":1191,"題":2368,"館":-689,"1":-514,"E2":-32768,"「":363,"イ":241,"ル":451,"ン":-343}; + this.UW6__ = {",":227,".":808,"1":-270,"E1":306,"、":227,"。":808,"あ":-307,"う":189,"か":241,"が":-73,"く":-121,"こ":-200,"じ":1782,"す":383,"た":-428,"っ":573,"て":-1014,"で":101,"と":-105,"な":-253,"に":-149,"の":-417,"は":-236,"も":-206,"り":187,"る":-135,"を":195,"ル":-673,"ン":-496,"一":-277,"中":201,"件":-800,"会":624,"前":302,"区":1792,"員":-1212,"委":798,"学":-960,"市":887,"広":-695,"後":535,"業":-697,"相":753,"社":-507,"福":974,"空":-822,"者":1811,"連":463,"郎":1082,"1":-270,"E1":306,"ル":-673,"ン":-496}; + + return this; + } + TinySegmenter.prototype.ctype_ = function(str) { + for (var i in this.chartype_) { + if (str.match(this.chartype_[i][0])) { + return this.chartype_[i][1]; + } + } + return "O"; + } + + TinySegmenter.prototype.ts_ = function(v) { + if (v) { return v; } + return 0; + } + + TinySegmenter.prototype.segment = function(input) { + if (input == null || input == undefined || input == "") { + return []; + } + var result = []; + var seg = ["B3","B2","B1"]; + var ctype = ["O","O","O"]; + var o = input.split(""); + for (i = 0; i < o.length; ++i) { + seg.push(o[i]); + ctype.push(this.ctype_(o[i])) + } + seg.push("E1"); + seg.push("E2"); + seg.push("E3"); + ctype.push("O"); + ctype.push("O"); + ctype.push("O"); + var word = seg[3]; + var p1 = "U"; + var p2 = "U"; + var p3 = "U"; + for (var i = 4; i < seg.length - 3; ++i) { + var score = this.BIAS__; + var w1 = seg[i-3]; + var w2 = seg[i-2]; + var w3 = seg[i-1]; + var w4 = seg[i]; + var w5 = seg[i+1]; + var w6 = seg[i+2]; + var c1 = ctype[i-3]; + var c2 = ctype[i-2]; + var c3 = ctype[i-1]; + var c4 = ctype[i]; + var c5 = ctype[i+1]; + var c6 = ctype[i+2]; + score += this.ts_(this.UP1__[p1]); + score += this.ts_(this.UP2__[p2]); + score += this.ts_(this.UP3__[p3]); + score += this.ts_(this.BP1__[p1 + p2]); + score += this.ts_(this.BP2__[p2 + p3]); + score += this.ts_(this.UW1__[w1]); + score += this.ts_(this.UW2__[w2]); + score += this.ts_(this.UW3__[w3]); + score += this.ts_(this.UW4__[w4]); + score += this.ts_(this.UW5__[w5]); + score += this.ts_(this.UW6__[w6]); + score += this.ts_(this.BW1__[w2 + w3]); + score += this.ts_(this.BW2__[w3 + w4]); + score += this.ts_(this.BW3__[w4 + w5]); + score += this.ts_(this.TW1__[w1 + w2 + w3]); + score += this.ts_(this.TW2__[w2 + w3 + w4]); + score += this.ts_(this.TW3__[w3 + w4 + w5]); + score += this.ts_(this.TW4__[w4 + w5 + w6]); + score += this.ts_(this.UC1__[c1]); + score += this.ts_(this.UC2__[c2]); + score += this.ts_(this.UC3__[c3]); + score += this.ts_(this.UC4__[c4]); + score += this.ts_(this.UC5__[c5]); + score += this.ts_(this.UC6__[c6]); + score += this.ts_(this.BC1__[c2 + c3]); + score += this.ts_(this.BC2__[c3 + c4]); + score += this.ts_(this.BC3__[c4 + c5]); + score += this.ts_(this.TC1__[c1 + c2 + c3]); + score += this.ts_(this.TC2__[c2 + c3 + c4]); + score += this.ts_(this.TC3__[c3 + c4 + c5]); + score += this.ts_(this.TC4__[c4 + c5 + c6]); + // score += this.ts_(this.TC5__[c4 + c5 + c6]); + score += this.ts_(this.UQ1__[p1 + c1]); + score += this.ts_(this.UQ2__[p2 + c2]); + score += this.ts_(this.UQ3__[p3 + c3]); + score += this.ts_(this.BQ1__[p2 + c2 + c3]); + score += this.ts_(this.BQ2__[p2 + c3 + c4]); + score += this.ts_(this.BQ3__[p3 + c2 + c3]); + score += this.ts_(this.BQ4__[p3 + c3 + c4]); + score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]); + score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]); + score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]); + score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]); + var p = "O"; + if (score > 0) { + result.push(word); + word = ""; + p = "B"; + } + p1 = p2; + p2 = p3; + p3 = p; + word += seg[i]; + } + result.push(word); + + return result; + } + + lunr.TinySegmenter = TinySegmenter; + }; + +})); \ No newline at end of file diff --git a/assets/javascripts/lunr/wordcut.js b/assets/javascripts/lunr/wordcut.js new file mode 100644 index 0000000..146f4b4 --- /dev/null +++ b/assets/javascripts/lunr/wordcut.js @@ -0,0 +1,6708 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}(g.lunr || (g.lunr = {})).wordcut = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 1; + }) + this.addWords(words, false) + } + if(finalize){ + this.finalizeDict(); + } + }, + + dictSeek: function (l, r, ch, strOffset, pos) { + var ans = null; + while (l <= r) { + var m = Math.floor((l + r) / 2), + dict_item = this.dict[m], + len = dict_item.length; + if (len <= strOffset) { + l = m + 1; + } else { + var ch_ = dict_item[strOffset]; + if (ch_ < ch) { + l = m + 1; + } else if (ch_ > ch) { + r = m - 1; + } else { + ans = m; + if (pos == LEFT) { + r = m - 1; + } else { + l = m + 1; + } + } + } + } + return ans; + }, + + isFinal: function (acceptor) { + return this.dict[acceptor.l].length == acceptor.strOffset; + }, + + createAcceptor: function () { + return { + l: 0, + r: this.dict.length - 1, + strOffset: 0, + isFinal: false, + dict: this, + transit: function (ch) { + return this.dict.transit(this, ch); + }, + isError: false, + tag: "DICT", + w: 1, + type: "DICT" + }; + }, + + transit: function (acceptor, ch) { + var l = this.dictSeek(acceptor.l, + acceptor.r, + ch, + acceptor.strOffset, + LEFT); + if (l !== null) { + var r = this.dictSeek(l, + acceptor.r, + ch, + acceptor.strOffset, + RIGHT); + acceptor.l = l; + acceptor.r = r; + acceptor.strOffset++; + acceptor.isFinal = this.isFinal(acceptor); + } else { + acceptor.isError = true; + } + return acceptor; + }, + + sortuniq: function(a){ + return a.sort().filter(function(item, pos, arr){ + return !pos || item != arr[pos - 1]; + }) + }, + + flatten: function(a){ + //[[1,2],[3]] -> [1,2,3] + return [].concat.apply([], a); + } +}; +module.exports = WordcutDict; + +}).call(this,"/dist/tmp") +},{"glob":16,"path":22}],3:[function(require,module,exports){ +var WordRule = { + createAcceptor: function(tag) { + if (tag["WORD_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + var lch = ch.toLowerCase(); + if (lch >= "a" && lch <= "z") { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "WORD_RULE", + type: "WORD_RULE", + w: 1}; + } +}; + +var NumberRule = { + createAcceptor: function(tag) { + if (tag["NUMBER_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (ch >= "0" && ch <= "9") { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "NUMBER_RULE", + type: "NUMBER_RULE", + w: 1}; + } +}; + +var SpaceRule = { + tag: "SPACE_RULE", + createAcceptor: function(tag) { + + if (tag["SPACE_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (ch == " " || ch == "\t" || ch == "\r" || ch == "\n" || + ch == "\u00A0" || ch=="\u2003"//nbsp and emsp + ) { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: SpaceRule.tag, + w: 1, + type: "SPACE_RULE"}; + } +} + +var SingleSymbolRule = { + tag: "SINSYM", + createAcceptor: function(tag) { + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (this.strOffset == 0 && ch.match(/^[\@\(\)\/\,\-\."`]$/)) { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "SINSYM", + w: 1, + type: "SINSYM"}; + } +} + + +var LatinRules = [WordRule, SpaceRule, SingleSymbolRule, NumberRule]; + +module.exports = LatinRules; + +},{}],4:[function(require,module,exports){ +var _ = require("underscore") + , WordcutCore = require("./wordcut_core"); +var PathInfoBuilder = { + + /* + buildByPartAcceptors: function(path, acceptors, i) { + var + var genInfos = partAcceptors.reduce(function(genInfos, acceptor) { + + }, []); + + return genInfos; + } + */ + + buildByAcceptors: function(path, finalAcceptors, i) { + var self = this; + var infos = finalAcceptors.map(function(acceptor) { + var p = i - acceptor.strOffset + 1 + , _info = path[p]; + + var info = {p: p, + mw: _info.mw + (acceptor.mw === undefined ? 0 : acceptor.mw), + w: acceptor.w + _info.w, + unk: (acceptor.unk ? acceptor.unk : 0) + _info.unk, + type: acceptor.type}; + + if (acceptor.type == "PART") { + for(var j = p + 1; j <= i; j++) { + path[j].merge = p; + } + info.merge = p; + } + + return info; + }); + return infos.filter(function(info) { return info; }); + }, + + fallback: function(path, leftBoundary, text, i) { + var _info = path[leftBoundary]; + if (text[i].match(/[\u0E48-\u0E4E]/)) { + if (leftBoundary != 0) + leftBoundary = path[leftBoundary].p; + return {p: leftBoundary, + mw: 0, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; +/* } else if(leftBoundary > 0 && path[leftBoundary].type !== "UNK") { + leftBoundary = path[leftBoundary].p; + return {p: leftBoundary, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; */ + } else { + return {p: leftBoundary, + mw: _info.mw, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; + } + }, + + build: function(path, finalAcceptors, i, leftBoundary, text) { + var basicPathInfos = this.buildByAcceptors(path, finalAcceptors, i); + if (basicPathInfos.length > 0) { + return basicPathInfos; + } else { + return [this.fallback(path, leftBoundary, text, i)]; + } + } +}; + +module.exports = function() { + return _.clone(PathInfoBuilder); +} + +},{"./wordcut_core":8,"underscore":25}],5:[function(require,module,exports){ +var _ = require("underscore"); + + +var PathSelector = { + selectPath: function(paths) { + var path = paths.reduce(function(selectedPath, path) { + if (selectedPath == null) { + return path; + } else { + if (path.unk < selectedPath.unk) + return path; + if (path.unk == selectedPath.unk) { + if (path.mw < selectedPath.mw) + return path + if (path.mw == selectedPath.mw) { + if (path.w < selectedPath.w) + return path; + } + } + return selectedPath; + } + }, null); + return path; + }, + + createPath: function() { + return [{p:null, w:0, unk:0, type: "INIT", mw:0}]; + } +}; + +module.exports = function() { + return _.clone(PathSelector); +}; + +},{"underscore":25}],6:[function(require,module,exports){ +function isMatch(pat, offset, ch) { + if (pat.length <= offset) + return false; + var _ch = pat[offset]; + return _ch == ch || + (_ch.match(/[กข]/) && ch.match(/[ก-ฮ]/)) || + (_ch.match(/[มบ]/) && ch.match(/[ก-ฮ]/)) || + (_ch.match(/\u0E49/) && ch.match(/[\u0E48-\u0E4B]/)); +} + +var Rule0 = { + pat: "เหก็ม", + createAcceptor: function(tag) { + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (isMatch(Rule0.pat, this.strOffset,ch)) { + this.isFinal = (this.strOffset + 1 == Rule0.pat.length); + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "THAI_RULE", + type: "THAI_RULE", + w: 1}; + } +}; + +var PartRule = { + createAcceptor: function(tag) { + return {strOffset: 0, + patterns: [ + "แก", "เก", "ก้", "กก์", "กา", "กี", "กิ", "กืก" + ], + isFinal: false, + transit: function(ch) { + var offset = this.strOffset; + this.patterns = this.patterns.filter(function(pat) { + return isMatch(pat, offset, ch); + }); + + if (this.patterns.length > 0) { + var len = 1 + offset; + this.isFinal = this.patterns.some(function(pat) { + return pat.length == len; + }); + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "PART", + type: "PART", + unk: 1, + w: 1}; + } +}; + +var ThaiRules = [Rule0, PartRule]; + +module.exports = ThaiRules; + +},{}],7:[function(require,module,exports){ +var sys = require("sys") + , WordcutDict = require("./dict") + , WordcutCore = require("./wordcut_core") + , PathInfoBuilder = require("./path_info_builder") + , PathSelector = require("./path_selector") + , Acceptors = require("./acceptors") + , latinRules = require("./latin_rules") + , thaiRules = require("./thai_rules") + , _ = require("underscore"); + + +var Wordcut = Object.create(WordcutCore); +Wordcut.defaultPathInfoBuilder = PathInfoBuilder; +Wordcut.defaultPathSelector = PathSelector; +Wordcut.defaultAcceptors = Acceptors; +Wordcut.defaultLatinRules = latinRules; +Wordcut.defaultThaiRules = thaiRules; +Wordcut.defaultDict = WordcutDict; + + +Wordcut.initNoDict = function(dict_path) { + var self = this; + self.pathInfoBuilder = new self.defaultPathInfoBuilder; + self.pathSelector = new self.defaultPathSelector; + self.acceptors = new self.defaultAcceptors; + self.defaultLatinRules.forEach(function(rule) { + self.acceptors.creators.push(rule); + }); + self.defaultThaiRules.forEach(function(rule) { + self.acceptors.creators.push(rule); + }); +}; + +Wordcut.init = function(dict_path, withDefault, additionalWords) { + withDefault = withDefault || false; + this.initNoDict(); + var dict = _.clone(this.defaultDict); + dict.init(dict_path, withDefault, additionalWords); + this.acceptors.creators.push(dict); +}; + +module.exports = Wordcut; + +},{"./acceptors":1,"./dict":2,"./latin_rules":3,"./path_info_builder":4,"./path_selector":5,"./thai_rules":6,"./wordcut_core":8,"sys":28,"underscore":25}],8:[function(require,module,exports){ +var WordcutCore = { + + buildPath: function(text) { + var self = this + , path = self.pathSelector.createPath() + , leftBoundary = 0; + self.acceptors.reset(); + for (var i = 0; i < text.length; i++) { + var ch = text[i]; + self.acceptors.transit(ch); + + var possiblePathInfos = self + .pathInfoBuilder + .build(path, + self.acceptors.getFinalAcceptors(), + i, + leftBoundary, + text); + var selectedPath = self.pathSelector.selectPath(possiblePathInfos) + + path.push(selectedPath); + if (selectedPath.type !== "UNK") { + leftBoundary = i; + } + } + return path; + }, + + pathToRanges: function(path) { + var e = path.length - 1 + , ranges = []; + + while (e > 0) { + var info = path[e] + , s = info.p; + + if (info.merge !== undefined && ranges.length > 0) { + var r = ranges[ranges.length - 1]; + r.s = info.merge; + s = r.s; + } else { + ranges.push({s:s, e:e}); + } + e = s; + } + return ranges.reverse(); + }, + + rangesToText: function(text, ranges, delimiter) { + return ranges.map(function(r) { + return text.substring(r.s, r.e); + }).join(delimiter); + }, + + cut: function(text, delimiter) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + return this + .rangesToText(text, ranges, + (delimiter === undefined ? "|" : delimiter)); + }, + + cutIntoRanges: function(text, noText) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + + if (!noText) { + ranges.forEach(function(r) { + r.text = text.substring(r.s, r.e); + }); + } + return ranges; + }, + + cutIntoArray: function(text) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + + return ranges.map(function(r) { + return text.substring(r.s, r.e) + }); + } +}; + +module.exports = WordcutCore; + +},{}],9:[function(require,module,exports){ +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +// when used in node, this will actually load the util module we depend on +// versus loading the builtin util module as happens otherwise +// this is a bug in node module loading as far as I am concerned +var util = require('util/'); + +var pSlice = Array.prototype.slice; +var hasOwn = Object.prototype.hasOwnProperty; + +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. + +var assert = module.exports = ok; + +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) + +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } + else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; + + // try to strip useless frames + var fn_name = stackStartFunction.name; + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } + + this.stack = out; + } + } +}; + +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); + +function replacer(key, value) { + if (util.isUndefined(value)) { + return '' + value; + } + if (util.isNumber(value) && !isFinite(value)) { + return value.toString(); + } + if (util.isFunction(value) || util.isRegExp(value)) { + return value.toString(); + } + return value; +} + +function truncate(s, n) { + if (util.isString(s)) { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} + +function getMessage(self) { + return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' + + self.operator + ' ' + + truncate(JSON.stringify(self.expected, replacer), 128); +} + +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. + +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} + +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; + +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. + +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); +} +assert.ok = ok; + +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); + +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; + +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; + +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); + +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; + +function _deepEqual(actual, expected) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + + } else if (util.isBuffer(actual) && util.isBuffer(expected)) { + if (actual.length != expected.length) return false; + + for (var i = 0; i < actual.length; i++) { + if (actual[i] !== expected[i]) return false; + } + + return true; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if (!util.isObject(actual) && !util.isObject(expected)) { + return actual == expected; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv(a, b) { + if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b)) + return false; + // an identical 'prototype' property. + if (a.prototype !== b.prototype) return false; + // if one is a primitive, the other must be same + if (util.isPrimitive(a) || util.isPrimitive(b)) { + return a === b; + } + var aIsArgs = isArguments(a), + bIsArgs = isArguments(b); + if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) + return false; + if (aIsArgs) { + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b); + } + var ka = objectKeys(a), + kb = objectKeys(b), + key, i; + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length != kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key])) return false; + } + return true; +} + +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); + +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; + +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); + +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } +}; + +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } else if (actual instanceof expected) { + return true; + } else if (expected.call({}, actual) === true) { + return true; + } + + return false; +} + +function _throws(shouldThrow, block, expected, message) { + var actual; + + if (util.isString(expected)) { + message = expected; + expected = null; + } + + try { + block(); + } catch (e) { + actual = e; + } + + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); + + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + + if (!shouldThrow && expectedException(actual, expected)) { + fail(actual, expected, 'Got unwanted exception' + message); + } + + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} + +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); + +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws.apply(this, [true].concat(pSlice.call(arguments))); +}; + +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/message) { + _throws.apply(this, [false].concat(pSlice.call(arguments))); +}; + +assert.ifError = function(err) { if (err) {throw err;}}; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; + +},{"util/":28}],10:[function(require,module,exports){ +'use strict'; +module.exports = balanced; +function balanced(a, b, str) { + if (a instanceof RegExp) a = maybeMatch(a, str); + if (b instanceof RegExp) b = maybeMatch(b, str); + + var r = range(a, b, str); + + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; +} + +function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; +} + +balanced.range = range; +function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + + if (ai >= 0 && bi > 0) { + begs = []; + left = str.length; + + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [ begs.pop(), bi ]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + + bi = str.indexOf(b, i + 1); + } + + i = ai < bi && ai >= 0 ? ai : bi; + } + + if (begs.length) { + result = [ left, right ]; + } + } + + return result; +} + +},{}],11:[function(require,module,exports){ +var concatMap = require('concat-map'); +var balanced = require('balanced-match'); + +module.exports = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } + + return expand(escapeBraces(str), true).map(unescapeBraces); +} + +function identity(e) { + return e; +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} + +function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m || /\$$/.test(m.pre)) return [str]; + + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length + ? expand(m.post, false) + : ['']; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { return expand(el, false) }); + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + + return expansions; +} + + +},{"balanced-match":10,"concat-map":13}],12:[function(require,module,exports){ + +},{}],13:[function(require,module,exports){ +module.exports = function (xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) res.push.apply(res, x); + else res.push(x); + } + return res; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +},{}],14:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } + throw TypeError('Uncaught, unspecified "error" event.'); + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + handler.apply(this, args); + } + } else if (isObject(handler)) { + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + var m; + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.listenerCount = function(emitter, type) { + var ret; + if (!emitter._events || !emitter._events[type]) + ret = 0; + else if (isFunction(emitter._events[type])) + ret = 1; + else + ret = emitter._events[type].length; + return ret; +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + +},{}],15:[function(require,module,exports){ +(function (process){ +exports.alphasort = alphasort +exports.alphasorti = alphasorti +exports.setopts = setopts +exports.ownProp = ownProp +exports.makeAbs = makeAbs +exports.finish = finish +exports.mark = mark +exports.isIgnored = isIgnored +exports.childrenIgnored = childrenIgnored + +function ownProp (obj, field) { + return Object.prototype.hasOwnProperty.call(obj, field) +} + +var path = require("path") +var minimatch = require("minimatch") +var isAbsolute = require("path-is-absolute") +var Minimatch = minimatch.Minimatch + +function alphasorti (a, b) { + return a.toLowerCase().localeCompare(b.toLowerCase()) +} + +function alphasort (a, b) { + return a.localeCompare(b) +} + +function setupIgnores (self, options) { + self.ignore = options.ignore || [] + + if (!Array.isArray(self.ignore)) + self.ignore = [self.ignore] + + if (self.ignore.length) { + self.ignore = self.ignore.map(ignoreMap) + } +} + +function ignoreMap (pattern) { + var gmatcher = null + if (pattern.slice(-3) === '/**') { + var gpattern = pattern.replace(/(\/\*\*)+$/, '') + gmatcher = new Minimatch(gpattern) + } + + return { + matcher: new Minimatch(pattern), + gmatcher: gmatcher + } +} + +function setopts (self, pattern, options) { + if (!options) + options = {} + + // base-matching: just use globstar for that. + if (options.matchBase && -1 === pattern.indexOf("/")) { + if (options.noglobstar) { + throw new Error("base matching requires globstar") + } + pattern = "**/" + pattern + } + + self.silent = !!options.silent + self.pattern = pattern + self.strict = options.strict !== false + self.realpath = !!options.realpath + self.realpathCache = options.realpathCache || Object.create(null) + self.follow = !!options.follow + self.dot = !!options.dot + self.mark = !!options.mark + self.nodir = !!options.nodir + if (self.nodir) + self.mark = true + self.sync = !!options.sync + self.nounique = !!options.nounique + self.nonull = !!options.nonull + self.nosort = !!options.nosort + self.nocase = !!options.nocase + self.stat = !!options.stat + self.noprocess = !!options.noprocess + + self.maxLength = options.maxLength || Infinity + self.cache = options.cache || Object.create(null) + self.statCache = options.statCache || Object.create(null) + self.symlinks = options.symlinks || Object.create(null) + + setupIgnores(self, options) + + self.changedCwd = false + var cwd = process.cwd() + if (!ownProp(options, "cwd")) + self.cwd = cwd + else { + self.cwd = options.cwd + self.changedCwd = path.resolve(options.cwd) !== cwd + } + + self.root = options.root || path.resolve(self.cwd, "/") + self.root = path.resolve(self.root) + if (process.platform === "win32") + self.root = self.root.replace(/\\/g, "/") + + self.nomount = !!options.nomount + + // disable comments and negation unless the user explicitly + // passes in false as the option. + options.nonegate = options.nonegate === false ? false : true + options.nocomment = options.nocomment === false ? false : true + deprecationWarning(options) + + self.minimatch = new Minimatch(pattern, options) + self.options = self.minimatch.options +} + +// TODO(isaacs): remove entirely in v6 +// exported to reset in tests +exports.deprecationWarned +function deprecationWarning(options) { + if (!options.nonegate || !options.nocomment) { + if (process.noDeprecation !== true && !exports.deprecationWarned) { + var msg = 'glob WARNING: comments and negation will be disabled in v6' + if (process.throwDeprecation) + throw new Error(msg) + else if (process.traceDeprecation) + console.trace(msg) + else + console.error(msg) + + exports.deprecationWarned = true + } + } +} + +function finish (self) { + var nou = self.nounique + var all = nou ? [] : Object.create(null) + + for (var i = 0, l = self.matches.length; i < l; i ++) { + var matches = self.matches[i] + if (!matches || Object.keys(matches).length === 0) { + if (self.nonull) { + // do like the shell, and spit out the literal glob + var literal = self.minimatch.globSet[i] + if (nou) + all.push(literal) + else + all[literal] = true + } + } else { + // had matches + var m = Object.keys(matches) + if (nou) + all.push.apply(all, m) + else + m.forEach(function (m) { + all[m] = true + }) + } + } + + if (!nou) + all = Object.keys(all) + + if (!self.nosort) + all = all.sort(self.nocase ? alphasorti : alphasort) + + // at *some* point we statted all of these + if (self.mark) { + for (var i = 0; i < all.length; i++) { + all[i] = self._mark(all[i]) + } + if (self.nodir) { + all = all.filter(function (e) { + return !(/\/$/.test(e)) + }) + } + } + + if (self.ignore.length) + all = all.filter(function(m) { + return !isIgnored(self, m) + }) + + self.found = all +} + +function mark (self, p) { + var abs = makeAbs(self, p) + var c = self.cache[abs] + var m = p + if (c) { + var isDir = c === 'DIR' || Array.isArray(c) + var slash = p.slice(-1) === '/' + + if (isDir && !slash) + m += '/' + else if (!isDir && slash) + m = m.slice(0, -1) + + if (m !== p) { + var mabs = makeAbs(self, m) + self.statCache[mabs] = self.statCache[abs] + self.cache[mabs] = self.cache[abs] + } + } + + return m +} + +// lotta situps... +function makeAbs (self, f) { + var abs = f + if (f.charAt(0) === '/') { + abs = path.join(self.root, f) + } else if (isAbsolute(f) || f === '') { + abs = f + } else if (self.changedCwd) { + abs = path.resolve(self.cwd, f) + } else { + abs = path.resolve(f) + } + return abs +} + + +// Return true, if pattern ends with globstar '**', for the accompanying parent directory. +// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents +function isIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path)) + }) +} + +function childrenIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return !!(item.gmatcher && item.gmatcher.match(path)) + }) +} + +}).call(this,require('_process')) +},{"_process":24,"minimatch":20,"path":22,"path-is-absolute":23}],16:[function(require,module,exports){ +(function (process){ +// Approach: +// +// 1. Get the minimatch set +// 2. For each pattern in the set, PROCESS(pattern, false) +// 3. Store matches per-set, then uniq them +// +// PROCESS(pattern, inGlobStar) +// Get the first [n] items from pattern that are all strings +// Join these together. This is PREFIX. +// If there is no more remaining, then stat(PREFIX) and +// add to matches if it succeeds. END. +// +// If inGlobStar and PREFIX is symlink and points to dir +// set ENTRIES = [] +// else readdir(PREFIX) as ENTRIES +// If fail, END +// +// with ENTRIES +// If pattern[n] is GLOBSTAR +// // handle the case where the globstar match is empty +// // by pruning it out, and testing the resulting pattern +// PROCESS(pattern[0..n] + pattern[n+1 .. $], false) +// // handle other cases. +// for ENTRY in ENTRIES (not dotfiles) +// // attach globstar + tail onto the entry +// // Mark that this entry is a globstar match +// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true) +// +// else // not globstar +// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) +// Test ENTRY against pattern[n] +// If fails, continue +// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) +// +// Caveat: +// Cache all stats and readdirs results to minimize syscall. Since all +// we ever care about is existence and directory-ness, we can just keep +// `true` for files, and [children,...] for directories, or `false` for +// things that don't exist. + +module.exports = glob + +var fs = require('fs') +var minimatch = require('minimatch') +var Minimatch = minimatch.Minimatch +var inherits = require('inherits') +var EE = require('events').EventEmitter +var path = require('path') +var assert = require('assert') +var isAbsolute = require('path-is-absolute') +var globSync = require('./sync.js') +var common = require('./common.js') +var alphasort = common.alphasort +var alphasorti = common.alphasorti +var setopts = common.setopts +var ownProp = common.ownProp +var inflight = require('inflight') +var util = require('util') +var childrenIgnored = common.childrenIgnored +var isIgnored = common.isIgnored + +var once = require('once') + +function glob (pattern, options, cb) { + if (typeof options === 'function') cb = options, options = {} + if (!options) options = {} + + if (options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return globSync(pattern, options) + } + + return new Glob(pattern, options, cb) +} + +glob.sync = globSync +var GlobSync = glob.GlobSync = globSync.GlobSync + +// old api surface +glob.glob = glob + +glob.hasMagic = function (pattern, options_) { + var options = util._extend({}, options_) + options.noprocess = true + + var g = new Glob(pattern, options) + var set = g.minimatch.set + if (set.length > 1) + return true + + for (var j = 0; j < set[0].length; j++) { + if (typeof set[0][j] !== 'string') + return true + } + + return false +} + +glob.Glob = Glob +inherits(Glob, EE) +function Glob (pattern, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + + if (options && options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return new GlobSync(pattern, options) + } + + if (!(this instanceof Glob)) + return new Glob(pattern, options, cb) + + setopts(this, pattern, options) + this._didRealPath = false + + // process each pattern in the minimatch set + var n = this.minimatch.set.length + + // The matches are stored as {: true,...} so that + // duplicates are automagically pruned. + // Later, we do an Object.keys() on these. + // Keep them as a list so we can fill in when nonull is set. + this.matches = new Array(n) + + if (typeof cb === 'function') { + cb = once(cb) + this.on('error', cb) + this.on('end', function (matches) { + cb(null, matches) + }) + } + + var self = this + var n = this.minimatch.set.length + this._processing = 0 + this.matches = new Array(n) + + this._emitQueue = [] + this._processQueue = [] + this.paused = false + + if (this.noprocess) + return this + + if (n === 0) + return done() + + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false, done) + } + + function done () { + --self._processing + if (self._processing <= 0) + self._finish() + } +} + +Glob.prototype._finish = function () { + assert(this instanceof Glob) + if (this.aborted) + return + + if (this.realpath && !this._didRealpath) + return this._realpath() + + common.finish(this) + this.emit('end', this.found) +} + +Glob.prototype._realpath = function () { + if (this._didRealpath) + return + + this._didRealpath = true + + var n = this.matches.length + if (n === 0) + return this._finish() + + var self = this + for (var i = 0; i < this.matches.length; i++) + this._realpathSet(i, next) + + function next () { + if (--n === 0) + self._finish() + } +} + +Glob.prototype._realpathSet = function (index, cb) { + var matchset = this.matches[index] + if (!matchset) + return cb() + + var found = Object.keys(matchset) + var self = this + var n = found.length + + if (n === 0) + return cb() + + var set = this.matches[index] = Object.create(null) + found.forEach(function (p, i) { + // If there's a problem with the stat, then it means that + // one or more of the links in the realpath couldn't be + // resolved. just return the abs value in that case. + p = self._makeAbs(p) + fs.realpath(p, self.realpathCache, function (er, real) { + if (!er) + set[real] = true + else if (er.syscall === 'stat') + set[p] = true + else + self.emit('error', er) // srsly wtf right here + + if (--n === 0) { + self.matches[index] = set + cb() + } + }) + }) +} + +Glob.prototype._mark = function (p) { + return common.mark(this, p) +} + +Glob.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} + +Glob.prototype.abort = function () { + this.aborted = true + this.emit('abort') +} + +Glob.prototype.pause = function () { + if (!this.paused) { + this.paused = true + this.emit('pause') + } +} + +Glob.prototype.resume = function () { + if (this.paused) { + this.emit('resume') + this.paused = false + if (this._emitQueue.length) { + var eq = this._emitQueue.slice(0) + this._emitQueue.length = 0 + for (var i = 0; i < eq.length; i ++) { + var e = eq[i] + this._emitMatch(e[0], e[1]) + } + } + if (this._processQueue.length) { + var pq = this._processQueue.slice(0) + this._processQueue.length = 0 + for (var i = 0; i < pq.length; i ++) { + var p = pq[i] + this._processing-- + this._process(p[0], p[1], p[2], p[3]) + } + } + } +} + +Glob.prototype._process = function (pattern, index, inGlobStar, cb) { + assert(this instanceof Glob) + assert(typeof cb === 'function') + + if (this.aborted) + return + + this._processing++ + if (this.paused) { + this._processQueue.push([pattern, index, inGlobStar, cb]) + return + } + + //console.error('PROCESS %d', this._processing, pattern) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // see if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index, cb) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + //if ignored, skip _processing + if (childrenIgnored(this, read)) + return cb() + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb) +} + +Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + +Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return cb() + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries) + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return cb() + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this._emitMatch(index, e) + } + // This was the last one, and no stats were needed + return cb() + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + this._process([e].concat(remain), index, inGlobStar, cb) + } + cb() +} + +Glob.prototype._emitMatch = function (index, e) { + if (this.aborted) + return + + if (this.matches[index][e]) + return + + if (isIgnored(this, e)) + return + + if (this.paused) { + this._emitQueue.push([index, e]) + return + } + + var abs = this._makeAbs(e) + + if (this.nodir) { + var c = this.cache[abs] + if (c === 'DIR' || Array.isArray(c)) + return + } + + if (this.mark) + e = this._mark(e) + + this.matches[index][e] = true + + var st = this.statCache[abs] + if (st) + this.emit('stat', e, st) + + this.emit('match', e) +} + +Glob.prototype._readdirInGlobStar = function (abs, cb) { + if (this.aborted) + return + + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false, cb) + + var lstatkey = 'lstat\0' + abs + var self = this + var lstatcb = inflight(lstatkey, lstatcb_) + + if (lstatcb) + fs.lstat(abs, lstatcb) + + function lstatcb_ (er, lstat) { + if (er) + return cb() + + var isSym = lstat.isSymbolicLink() + self.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && !lstat.isDirectory()) { + self.cache[abs] = 'FILE' + cb() + } else + self._readdir(abs, false, cb) + } +} + +Glob.prototype._readdir = function (abs, inGlobStar, cb) { + if (this.aborted) + return + + cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb) + if (!cb) + return + + //console.error('RD %j %j', +inGlobStar, abs) + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs, cb) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return cb() + + if (Array.isArray(c)) + return cb(null, c) + } + + var self = this + fs.readdir(abs, readdirCb(this, abs, cb)) +} + +function readdirCb (self, abs, cb) { + return function (er, entries) { + if (er) + self._readdirError(abs, er, cb) + else + self._readdirEntries(abs, entries, cb) + } +} + +Glob.prototype._readdirEntries = function (abs, entries, cb) { + if (this.aborted) + return + + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + return cb(null, entries) +} + +Glob.prototype._readdirError = function (f, er, cb) { + if (this.aborted) + return + + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + this.cache[this._makeAbs(f)] = 'FILE' + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break + + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) { + this.emit('error', er) + // If the error is handled, then we abort + // if not, we threw out of here + this.abort() + } + if (!this.silent) + console.error('glob error', er) + break + } + + return cb() +} + +Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + + +Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + //console.error('pgs2', prefix, remain[0], entries) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return cb() + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false, cb) + + var isSym = this.symlinks[abs] + var len = entries.length + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return cb() + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true, cb) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true, cb) + } + + cb() +} + +Glob.prototype._processSimple = function (prefix, index, cb) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var self = this + this._stat(prefix, function (er, exists) { + self._processSimple2(prefix, index, er, exists, cb) + }) +} +Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) { + + //console.error('ps2', prefix, exists) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return cb() + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this._emitMatch(index, prefix) + cb() +} + +// Returns either 'DIR', 'FILE', or false +Glob.prototype._stat = function (f, cb) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' + + if (f.length > this.maxLength) + return cb() + + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return cb(null, c) + + if (needDir && c === 'FILE') + return cb() + + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } + + var exists + var stat = this.statCache[abs] + if (stat !== undefined) { + if (stat === false) + return cb(null, stat) + else { + var type = stat.isDirectory() ? 'DIR' : 'FILE' + if (needDir && type === 'FILE') + return cb() + else + return cb(null, type, stat) + } + } + + var self = this + var statcb = inflight('stat\0' + abs, lstatcb_) + if (statcb) + fs.lstat(abs, statcb) + + function lstatcb_ (er, lstat) { + if (lstat && lstat.isSymbolicLink()) { + // If it's a symlink, then treat it as the target, unless + // the target does not exist, then treat it as a file. + return fs.stat(abs, function (er, stat) { + if (er) + self._stat2(f, abs, null, lstat, cb) + else + self._stat2(f, abs, er, stat, cb) + }) + } else { + self._stat2(f, abs, er, lstat, cb) + } + } +} + +Glob.prototype._stat2 = function (f, abs, er, stat, cb) { + if (er) { + this.statCache[abs] = false + return cb() + } + + var needDir = f.slice(-1) === '/' + this.statCache[abs] = stat + + if (abs.slice(-1) === '/' && !stat.isDirectory()) + return cb(null, false, stat) + + var c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[abs] = this.cache[abs] || c + + if (needDir && c !== 'DIR') + return cb() + + return cb(null, c, stat) +} + +}).call(this,require('_process')) +},{"./common.js":15,"./sync.js":17,"_process":24,"assert":9,"events":14,"fs":12,"inflight":18,"inherits":19,"minimatch":20,"once":21,"path":22,"path-is-absolute":23,"util":28}],17:[function(require,module,exports){ +(function (process){ +module.exports = globSync +globSync.GlobSync = GlobSync + +var fs = require('fs') +var minimatch = require('minimatch') +var Minimatch = minimatch.Minimatch +var Glob = require('./glob.js').Glob +var util = require('util') +var path = require('path') +var assert = require('assert') +var isAbsolute = require('path-is-absolute') +var common = require('./common.js') +var alphasort = common.alphasort +var alphasorti = common.alphasorti +var setopts = common.setopts +var ownProp = common.ownProp +var childrenIgnored = common.childrenIgnored + +function globSync (pattern, options) { + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') + + return new GlobSync(pattern, options).found +} + +function GlobSync (pattern, options) { + if (!pattern) + throw new Error('must provide pattern') + + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') + + if (!(this instanceof GlobSync)) + return new GlobSync(pattern, options) + + setopts(this, pattern, options) + + if (this.noprocess) + return this + + var n = this.minimatch.set.length + this.matches = new Array(n) + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false) + } + this._finish() +} + +GlobSync.prototype._finish = function () { + assert(this instanceof GlobSync) + if (this.realpath) { + var self = this + this.matches.forEach(function (matchset, index) { + var set = self.matches[index] = Object.create(null) + for (var p in matchset) { + try { + p = self._makeAbs(p) + var real = fs.realpathSync(p, self.realpathCache) + set[real] = true + } catch (er) { + if (er.syscall === 'stat') + set[self._makeAbs(p)] = true + else + throw er + } + } + }) + } + common.finish(this) +} + + +GlobSync.prototype._process = function (pattern, index, inGlobStar) { + assert(this instanceof GlobSync) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // See if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + //if ignored, skip processing + if (childrenIgnored(this, read)) + return + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar) +} + + +GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) { + var entries = this._readdir(abs, inGlobStar) + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix.slice(-1) !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this.matches[index][e] = true + } + // This was the last one, and no stats were needed + return + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) + newPattern = [prefix, e] + else + newPattern = [e] + this._process(newPattern.concat(remain), index, inGlobStar) + } +} + + +GlobSync.prototype._emitMatch = function (index, e) { + var abs = this._makeAbs(e) + if (this.mark) + e = this._mark(e) + + if (this.matches[index][e]) + return + + if (this.nodir) { + var c = this.cache[this._makeAbs(e)] + if (c === 'DIR' || Array.isArray(c)) + return + } + + this.matches[index][e] = true + if (this.stat) + this._stat(e) +} + + +GlobSync.prototype._readdirInGlobStar = function (abs) { + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false) + + var entries + var lstat + var stat + try { + lstat = fs.lstatSync(abs) + } catch (er) { + // lstat failed, doesn't exist + return null + } + + var isSym = lstat.isSymbolicLink() + this.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && !lstat.isDirectory()) + this.cache[abs] = 'FILE' + else + entries = this._readdir(abs, false) + + return entries +} + +GlobSync.prototype._readdir = function (abs, inGlobStar) { + var entries + + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return null + + if (Array.isArray(c)) + return c + } + + try { + return this._readdirEntries(abs, fs.readdirSync(abs)) + } catch (er) { + this._readdirError(abs, er) + return null + } +} + +GlobSync.prototype._readdirEntries = function (abs, entries) { + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + + // mark and cache dir-ness + return entries +} + +GlobSync.prototype._readdirError = function (f, er) { + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + this.cache[this._makeAbs(f)] = 'FILE' + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break + + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) + throw er + if (!this.silent) + console.error('glob error', er) + break + } +} + +GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) { + + var entries = this._readdir(abs, inGlobStar) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false) + + var len = entries.length + var isSym = this.symlinks[abs] + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true) + } +} + +GlobSync.prototype._processSimple = function (prefix, index) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var exists = this._stat(prefix) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this.matches[index][prefix] = true +} + +// Returns either 'DIR', 'FILE', or false +GlobSync.prototype._stat = function (f) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' + + if (f.length > this.maxLength) + return false + + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return c + + if (needDir && c === 'FILE') + return false + + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } + + var exists + var stat = this.statCache[abs] + if (!stat) { + var lstat + try { + lstat = fs.lstatSync(abs) + } catch (er) { + return false + } + + if (lstat.isSymbolicLink()) { + try { + stat = fs.statSync(abs) + } catch (er) { + stat = lstat + } + } else { + stat = lstat + } + } + + this.statCache[abs] = stat + + var c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[abs] = this.cache[abs] || c + + if (needDir && c !== 'DIR') + return false + + return c +} + +GlobSync.prototype._mark = function (p) { + return common.mark(this, p) +} + +GlobSync.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} + +}).call(this,require('_process')) +},{"./common.js":15,"./glob.js":16,"_process":24,"assert":9,"fs":12,"minimatch":20,"path":22,"path-is-absolute":23,"util":28}],18:[function(require,module,exports){ +(function (process){ +var wrappy = require('wrappy') +var reqs = Object.create(null) +var once = require('once') + +module.exports = wrappy(inflight) + +function inflight (key, cb) { + if (reqs[key]) { + reqs[key].push(cb) + return null + } else { + reqs[key] = [cb] + return makeres(key) + } +} + +function makeres (key) { + return once(function RES () { + var cbs = reqs[key] + var len = cbs.length + var args = slice(arguments) + + // XXX It's somewhat ambiguous whether a new callback added in this + // pass should be queued for later execution if something in the + // list of callbacks throws, or if it should just be discarded. + // However, it's such an edge case that it hardly matters, and either + // choice is likely as surprising as the other. + // As it happens, we do go ahead and schedule it for later execution. + try { + for (var i = 0; i < len; i++) { + cbs[i].apply(null, args) + } + } finally { + if (cbs.length > len) { + // added more in the interim. + // de-zalgo, just in case, but don't call again. + cbs.splice(0, len) + process.nextTick(function () { + RES.apply(null, args) + }) + } else { + delete reqs[key] + } + } + }) +} + +function slice (args) { + var length = args.length + var array = [] + + for (var i = 0; i < length; i++) array[i] = args[i] + return array +} + +}).call(this,require('_process')) +},{"_process":24,"once":21,"wrappy":29}],19:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +},{}],20:[function(require,module,exports){ +module.exports = minimatch +minimatch.Minimatch = Minimatch + +var path = { sep: '/' } +try { + path = require('path') +} catch (er) {} + +var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} +var expand = require('brace-expansion') + +var plTypes = { + '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, + '?': { open: '(?:', close: ')?' }, + '+': { open: '(?:', close: ')+' }, + '*': { open: '(?:', close: ')*' }, + '@': { open: '(?:', close: ')' } +} + +// any single thing other than / +// don't need to escape / when using new RegExp() +var qmark = '[^/]' + +// * => any number of characters +var star = qmark + '*?' + +// ** when dots are allowed. Anything goes, except .. and . +// not (^ or / followed by one or two dots followed by $ or /), +// followed by anything, any number of times. +var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' + +// not a ^ or / followed by a dot, +// followed by anything, any number of times. +var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' + +// characters that need to be escaped in RegExp. +var reSpecials = charSet('().*{}+?[]^$\\!') + +// "abc" -> { a:true, b:true, c:true } +function charSet (s) { + return s.split('').reduce(function (set, c) { + set[c] = true + return set + }, {}) +} + +// normalizes slashes. +var slashSplit = /\/+/ + +minimatch.filter = filter +function filter (pattern, options) { + options = options || {} + return function (p, i, list) { + return minimatch(p, pattern, options) + } +} + +function ext (a, b) { + a = a || {} + b = b || {} + var t = {} + Object.keys(b).forEach(function (k) { + t[k] = b[k] + }) + Object.keys(a).forEach(function (k) { + t[k] = a[k] + }) + return t +} + +minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return minimatch + + var orig = minimatch + + var m = function minimatch (p, pattern, options) { + return orig.minimatch(p, pattern, ext(def, options)) + } + + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) + } + + return m +} + +Minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return Minimatch + return minimatch.defaults(def).Minimatch +} + +function minimatch (p, pattern, options) { + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') + } + + if (!options) options = {} + + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + return false + } + + // "" only matches "" + if (pattern.trim() === '') return p === '' + + return new Minimatch(pattern, options).match(p) +} + +function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options) + } + + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') + } + + if (!options) options = {} + pattern = pattern.trim() + + // windows support: need to use /, not \ + if (path.sep !== '/') { + pattern = pattern.split(path.sep).join('/') + } + + this.options = options + this.set = [] + this.pattern = pattern + this.regexp = null + this.negate = false + this.comment = false + this.empty = false + + // make the set of regexps etc. + this.make() +} + +Minimatch.prototype.debug = function () {} + +Minimatch.prototype.make = make +function make () { + // don't do it more than once. + if (this._made) return + + var pattern = this.pattern + var options = this.options + + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } + + // step 1: figure out negation, etc. + this.parseNegate() + + // step 2: expand braces + var set = this.globSet = this.braceExpand() + + if (options.debug) this.debug = console.error + + this.debug(this.pattern, set) + + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }) + + this.debug(this.pattern, set) + + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) + + this.debug(this.pattern, set) + + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return s.indexOf(false) === -1 + }) + + this.debug(this.pattern, set) + + this.set = set +} + +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + var negate = false + var options = this.options + var negateOffset = 0 + + if (options.nonegate) return + + for (var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === '!' + ; i++) { + negate = !negate + negateOffset++ + } + + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate +} + +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return braceExpand(pattern, options) +} + +Minimatch.prototype.braceExpand = braceExpand + +function braceExpand (pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options + } else { + options = {} + } + } + + pattern = typeof pattern === 'undefined' + ? this.pattern : pattern + + if (typeof pattern === 'undefined') { + throw new TypeError('undefined pattern') + } + + if (options.nobrace || + !pattern.match(/\{.*\}/)) { + // shortcut. no need to expand. + return [pattern] + } + + return expand(pattern) +} + +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + if (pattern.length > 1024 * 64) { + throw new TypeError('pattern is too long') + } + + var options = this.options + + // shortcuts + if (!options.noglobstar && pattern === '**') return GLOBSTAR + if (pattern === '') return '' + + var re = '' + var hasMagic = !!options.nocase + var escaping = false + // ? => one single character + var patternListStack = [] + var negativeLists = [] + var stateChar + var inClass = false + var reClassStart = -1 + var classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + var patternStart = pattern.charAt(0) === '.' ? '' // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' + : '(?!\\.)' + var self = this + + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case '*': + re += star + hasMagic = true + break + case '?': + re += qmark + hasMagic = true + break + default: + re += '\\' + stateChar + break + } + self.debug('clearStateChar %j %j', stateChar, re) + stateChar = false + } + } + + for (var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i++) { + this.debug('%s\t%s %s %j', pattern, i, re, c) + + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += '\\' + c + escaping = false + continue + } + + switch (c) { + case '/': + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + + case '\\': + clearStateChar() + escaping = true + continue + + // the various stateChar values + // for the "extglob" stuff. + case '?': + case '*': + case '+': + case '@': + case '!': + this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) + + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class') + if (c === '!' && i === classStart + 1) c = '^' + re += c + continue + } + + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + self.debug('call clearStateChar %j', stateChar) + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue + + case '(': + if (inClass) { + re += '(' + continue + } + + if (!stateChar) { + re += '\\(' + continue + } + + patternListStack.push({ + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close + }) + // negation is (?:(?!js)[^/]*) + re += stateChar === '!' ? '(?:(?!(?:' : '(?:' + this.debug('plType %j %j', stateChar, re) + stateChar = false + continue + + case ')': + if (inClass || !patternListStack.length) { + re += '\\)' + continue + } + + clearStateChar() + hasMagic = true + var pl = patternListStack.pop() + // negation is (?:(?!js)[^/]*) + // The others are (?:) + re += pl.close + if (pl.type === '!') { + negativeLists.push(pl) + } + pl.reEnd = re.length + continue + + case '|': + if (inClass || !patternListStack.length || escaping) { + re += '\\|' + escaping = false + continue + } + + clearStateChar() + re += '|' + continue + + // these are mostly the same in regexp and glob + case '[': + // swallow any state-tracking char before the [ + clearStateChar() + + if (inClass) { + re += '\\' + c + continue + } + + inClass = true + classStart = i + reClassStart = re.length + re += c + continue + + case ']': + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += '\\' + c + escaping = false + continue + } + + // handle the case where we left a class open. + // "[z-a]" is valid, equivalent to "\[z-a\]" + if (inClass) { + // split where the last [ was, make sure we don't have + // an invalid re. if so, re-walk the contents of the + // would-be class to re-translate any characters that + // were passed through as-is + // TODO: It would probably be faster to determine this + // without a try/catch and a new RegExp, but it's tricky + // to do safely. For now, this is safe and works. + var cs = pattern.substring(classStart + 1, i) + try { + RegExp('[' + cs + ']') + } catch (er) { + // not a valid class! + var sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' + hasMagic = hasMagic || sp[1] + inClass = false + continue + } + } + + // finish up the class. + hasMagic = true + inClass = false + re += c + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar() + + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === '^' && inClass)) { + re += '\\' + } + + re += c + + } // switch + } // for + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + cs = pattern.substr(classStart + 1) + sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + hasMagic = hasMagic || sp[1] + } + + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + pl.open.length) + this.debug('setting tail', re, pl) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = '\\' + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + '|' + }) + + this.debug('tail=%j\n %s', tail, tail, pl, re) + var t = pl.type === '*' ? star + : pl.type === '?' ? qmark + : '\\' + pl.type + + hasMagic = true + re = re.slice(0, pl.reStart) + t + '\\(' + tail + } + + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += '\\\\' + } + + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case '.': + case '[': + case '(': addPatternStart = true + } + + // Hack to work around lack of negative lookbehind in JS + // A pattern like: *.!(x).!(y|z) needs to ensure that a name + // like 'a.xyz.yz' doesn't match. So, the first negative + // lookahead, has to look ALL the way ahead, to the end of + // the pattern. + for (var n = negativeLists.length - 1; n > -1; n--) { + var nl = negativeLists[n] + + var nlBefore = re.slice(0, nl.reStart) + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + var nlAfter = re.slice(nl.reEnd) + + nlLast += nlAfter + + // Handle nested stuff like *(*.js|!(*.json)), where open parens + // mean that we should *not* include the ) in the bit that is considered + // "after" the negated section. + var openParensBefore = nlBefore.split('(').length - 1 + var cleanAfter = nlAfter + for (i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') + } + nlAfter = cleanAfter + + var dollar = '' + if (nlAfter === '' && isSub !== SUBPARSE) { + dollar = '$' + } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast + re = newRe + } + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== '' && hasMagic) { + re = '(?=.)' + re + } + + if (addPatternStart) { + re = patternStart + re + } + + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [re, hasMagic] + } + + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } + + var flags = options.nocase ? 'i' : '' + try { + var regExp = new RegExp('^' + re + '$', flags) + } catch (er) { + // If it was an invalid regular expression, then it can't match + // anything. This trick looks for a character after the end of + // the string, which is of course impossible, except in multi-line + // mode, but it's not a /m regex. + return new RegExp('$.') + } + + regExp._glob = pattern + regExp._src = re + + return regExp +} + +minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() +} + +Minimatch.prototype.makeRe = makeRe +function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set + + if (!set.length) { + this.regexp = false + return this.regexp + } + var options = this.options + + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + var flags = options.nocase ? 'i' : '' + + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === 'string') ? regExpEscape(p) + : p._src + }).join('\\\/') + }).join('|') + + // must match entire pattern + // ending in a * or ** will make it less strict. + re = '^(?:' + re + ')$' + + // can match anything, as long as it's not this. + if (this.negate) re = '^(?!' + re + ').*$' + + try { + this.regexp = new RegExp(re, flags) + } catch (ex) { + this.regexp = false + } + return this.regexp +} + +minimatch.match = function (list, pattern, options) { + options = options || {} + var mm = new Minimatch(pattern, options) + list = list.filter(function (f) { + return mm.match(f) + }) + if (mm.options.nonull && !list.length) { + list.push(pattern) + } + return list +} + +Minimatch.prototype.match = match +function match (f, partial) { + this.debug('match', f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === '' + + if (f === '/' && partial) return true + + var options = this.options + + // windows: need to use /, not \ + if (path.sep !== '/') { + f = f.split(path.sep).join('/') + } + + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + this.debug(this.pattern, 'split', f) + + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + + var set = this.set + this.debug(this.pattern, 'set', set) + + // Find the basename of the path by looking for the last non-empty segment + var filename + var i + for (i = f.length - 1; i >= 0; i--) { + filename = f[i] + if (filename) break + } + + for (i = 0; i < set.length; i++) { + var pattern = set[i] + var file = f + if (options.matchBase && pattern.length === 1) { + file = [filename] + } + var hit = this.matchOne(file, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate +} + +// set partial to true to test if, for example, +// "/a/b" matches the start of "/*/b/*/d" +// Partial means, if you run out of file before you run +// out of pattern, then that's fine, as long as all +// the parts match. +Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options + + this.debug('matchOne', + { 'this': this, file: file, pattern: pattern }) + + this.debug('matchOne', file.length, pattern.length) + + for (var fi = 0, + pi = 0, + fl = file.length, + pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi++, pi++) { + this.debug('matchOne loop') + var p = pattern[pi] + var f = file[fi] + + this.debug(pattern, p, f) + + // should be impossible. + // some invalid regexp stuff in the set. + if (p === false) return false + + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]) + + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + var pr = pi + 1 + if (pr === pl) { + this.debug('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for (; fi < fl; fi++) { + if (file[fi] === '.' || file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) return false + } + return true + } + + // ok, let's see if we can swallow whatever we can. + while (fr < fl) { + var swallowee = file[fr] + + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) + + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === '.' || swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr) + break + } + + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue') + fr++ + } + } + + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + if (partial) { + // ran out of file + this.debug('\n>>> no match, partial?', file, fr, pattern, pr) + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === 'string') { + if (options.nocase) { + hit = f.toLowerCase() === p.toLowerCase() + } else { + hit = f === p + } + this.debug('string match', p, f, hit) + } else { + hit = f.match(p) + this.debug('pattern match', p, f, hit) + } + + if (!hit) return false + } + + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') + return emptyFileEnd + } + + // should be unreachable. + throw new Error('wtf?') +} + +// replace stuff like \* with * +function globUnescape (s) { + return s.replace(/\\(.)/g, '$1') +} + +function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') +} + +},{"brace-expansion":11,"path":22}],21:[function(require,module,exports){ +var wrappy = require('wrappy') +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) + +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) + + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }) +}) + +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f +} + +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) + } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f +} + +},{"wrappy":29}],22:[function(require,module,exports){ +(function (process){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// resolves . and .. elements in a path array with directory names there +// must be no slashes, empty elements, or device names (c:\) in the array +// (so also no leading and trailing slashes - it does not distinguish +// relative and absolute paths) +function normalizeArray(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + + return parts; +} + +// Split a filename into [root, dir, basename, ext], unix version +// 'root' is just a slash, or nothing. +var splitPathRe = + /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; +var splitPath = function(filename) { + return splitPathRe.exec(filename).slice(1); +}; + +// path.resolve([from ...], to) +// posix version +exports.resolve = function() { + var resolvedPath = '', + resolvedAbsolute = false; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : process.cwd(); + + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; +}; + +// path.normalize(path) +// posix version +exports.normalize = function(path) { + var isAbsolute = exports.isAbsolute(path), + trailingSlash = substr(path, -1) === '/'; + + // Normalize the path + path = normalizeArray(filter(path.split('/'), function(p) { + return !!p; + }), !isAbsolute).join('/'); + + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + + return (isAbsolute ? '/' : '') + path; +}; + +// posix version +exports.isAbsolute = function(path) { + return path.charAt(0) === '/'; +}; + +// posix version +exports.join = function() { + var paths = Array.prototype.slice.call(arguments, 0); + return exports.normalize(filter(paths, function(p, index) { + if (typeof p !== 'string') { + throw new TypeError('Arguments to path.join must be strings'); + } + return p; + }).join('/')); +}; + + +// path.relative(from, to) +// posix version +exports.relative = function(from, to) { + from = exports.resolve(from).substr(1); + to = exports.resolve(to).substr(1); + + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + + return outputParts.join('/'); +}; + +exports.sep = '/'; +exports.delimiter = ':'; + +exports.dirname = function(path) { + var result = splitPath(path), + root = result[0], + dir = result[1]; + + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + + return root + dir; +}; + + +exports.basename = function(path, ext) { + var f = splitPath(path)[2]; + // TODO: make this comparison case-insensitive on windows? + if (ext && f.substr(-1 * ext.length) === ext) { + f = f.substr(0, f.length - ext.length); + } + return f; +}; + + +exports.extname = function(path) { + return splitPath(path)[3]; +}; + +function filter (xs, f) { + if (xs.filter) return xs.filter(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + if (f(xs[i], i, xs)) res.push(xs[i]); + } + return res; +} + +// String.prototype.substr - negative index don't work in IE8 +var substr = 'ab'.substr(-1) === 'b' + ? function (str, start, len) { return str.substr(start, len) } + : function (str, start, len) { + if (start < 0) start = str.length + start; + return str.substr(start, len); + } +; + +}).call(this,require('_process')) +},{"_process":24}],23:[function(require,module,exports){ +(function (process){ +'use strict'; + +function posix(path) { + return path.charAt(0) === '/'; +} + +function win32(path) { + // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 + var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + var result = splitDeviceRe.exec(path); + var device = result[1] || ''; + var isUnc = Boolean(device && device.charAt(1) !== ':'); + + // UNC paths are always absolute + return Boolean(result[2] || isUnc); +} + +module.exports = process.platform === 'win32' ? win32 : posix; +module.exports.posix = posix; +module.exports.win32 = win32; + +}).call(this,require('_process')) +},{"_process":24}],24:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],25:[function(require,module,exports){ +// Underscore.js 1.8.3 +// http://underscorejs.org +// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +(function() { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `exports` on the server. + var root = this; + + // Save the previous value of the `_` variable. + var previousUnderscore = root._; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; + + // Create quick reference variables for speed access to core prototypes. + var + push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var + nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeBind = FuncProto.bind, + nativeCreate = Object.create; + + // Naked function reference for surrogate-prototype-swapping. + var Ctor = function(){}; + + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; + + // Export the Underscore object for **Node.js**, with + // backwards-compatibility for the old `require()` API. If we're in + // the browser, add `_` as a global object. + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = _; + } + exports._ = _; + } else { + root._ = _; + } + + // Current version. + _.VERSION = '1.8.3'; + + // Internal function that returns an efficient (for current engines) version + // of the passed-in callback, to be repeatedly applied in other Underscore + // functions. + var optimizeCb = function(func, context, argCount) { + if (context === void 0) return func; + switch (argCount == null ? 3 : argCount) { + case 1: return function(value) { + return func.call(context, value); + }; + case 2: return function(value, other) { + return func.call(context, value, other); + }; + case 3: return function(value, index, collection) { + return func.call(context, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; + } + return function() { + return func.apply(context, arguments); + }; + }; + + // A mostly-internal function to generate callbacks that can be applied + // to each element in a collection, returning the desired result — either + // identity, an arbitrary callback, a property matcher, or a property accessor. + var cb = function(value, context, argCount) { + if (value == null) return _.identity; + if (_.isFunction(value)) return optimizeCb(value, context, argCount); + if (_.isObject(value)) return _.matcher(value); + return _.property(value); + }; + _.iteratee = function(value, context) { + return cb(value, context, Infinity); + }; + + // An internal function for creating assigner functions. + var createAssigner = function(keysFunc, undefinedOnly) { + return function(obj) { + var length = arguments.length; + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key]; + } + } + return obj; + }; + }; + + // An internal function for creating a new object that inherits from another. + var baseCreate = function(prototype) { + if (!_.isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; + }; + + var property = function(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; + }; + + // Helper for collection methods to determine whether a collection + // should be iterated as an array or as an object + // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength + // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 + var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; + var getLength = property('length'); + var isArrayLike = function(collection) { + var length = getLength(collection); + return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX; + }; + + // Collection Functions + // -------------------- + + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles raw objects in addition to array-likes. Treats all + // sparse array-likes as if they were dense. + _.each = _.forEach = function(obj, iteratee, context) { + iteratee = optimizeCb(iteratee, context); + var i, length; + if (isArrayLike(obj)) { + for (i = 0, length = obj.length; i < length; i++) { + iteratee(obj[i], i, obj); + } + } else { + var keys = _.keys(obj); + for (i = 0, length = keys.length; i < length; i++) { + iteratee(obj[keys[i]], keys[i], obj); + } + } + return obj; + }; + + // Return the results of applying the iteratee to each element. + _.map = _.collect = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + results = Array(length); + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Create a reducing function iterating left or right. + function createReduce(dir) { + // Optimized iterator function as using arguments.length + // in the main function will deoptimize the, see #1991. + function iterator(obj, iteratee, memo, keys, index, length) { + for (; index >= 0 && index < length; index += dir) { + var currentKey = keys ? keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; + } + + return function(obj, iteratee, memo, context) { + iteratee = optimizeCb(iteratee, context, 4); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + index = dir > 0 ? 0 : length - 1; + // Determine the initial value if none is provided. + if (arguments.length < 3) { + memo = obj[keys ? keys[index] : index]; + index += dir; + } + return iterator(obj, iteratee, memo, keys, index, length); + }; + } + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. + _.reduce = _.foldl = _.inject = createReduce(1); + + // The right-associative version of reduce, also known as `foldr`. + _.reduceRight = _.foldr = createReduce(-1); + + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, predicate, context) { + var key; + if (isArrayLike(obj)) { + key = _.findIndex(obj, predicate, context); + } else { + key = _.findKey(obj, predicate, context); + } + if (key !== void 0 && key !== -1) return obj[key]; + }; + + // Return all the elements that pass a truth test. + // Aliased as `select`. + _.filter = _.select = function(obj, predicate, context) { + var results = []; + predicate = cb(predicate, context); + _.each(obj, function(value, index, list) { + if (predicate(value, index, list)) results.push(value); + }); + return results; + }; + + // Return all the elements for which a truth test fails. + _.reject = function(obj, predicate, context) { + return _.filter(obj, _.negate(cb(predicate)), context); + }; + + // Determine whether all of the elements match a truth test. + // Aliased as `all`. + _.every = _.all = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; + } + return true; + }; + + // Determine if at least one element in the object matches a truth test. + // Aliased as `any`. + _.some = _.any = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; + } + return false; + }; + + // Determine if the array or object contains a given item (using `===`). + // Aliased as `includes` and `include`. + _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + if (typeof fromIndex != 'number' || guard) fromIndex = 0; + return _.indexOf(obj, item, fromIndex) >= 0; + }; + + // Invoke a method (with arguments) on every item in a collection. + _.invoke = function(obj, method) { + var args = slice.call(arguments, 2); + var isFunc = _.isFunction(method); + return _.map(obj, function(value) { + var func = isFunc ? method : value[method]; + return func == null ? func : func.apply(value, args); + }); + }; + + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, _.property(key)); + }; + + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs) { + return _.filter(obj, _.matcher(attrs)); + }; + + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.find(obj, _.matcher(attrs)); + }; + + // Return the maximum element (or element-based computation). + _.max = function(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value > result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed > lastComputed || computed === -Infinity && result === -Infinity) { + result = value; + lastComputed = computed; + } + }); + } + return result; + }; + + // Return the minimum element (or element-based computation). + _.min = function(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value < result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed < lastComputed || computed === Infinity && result === Infinity) { + result = value; + lastComputed = computed; + } + }); + } + return result; + }; + + // Shuffle a collection, using the modern version of the + // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). + _.shuffle = function(obj) { + var set = isArrayLike(obj) ? obj : _.values(obj); + var length = set.length; + var shuffled = Array(length); + for (var index = 0, rand; index < length; index++) { + rand = _.random(0, index); + if (rand !== index) shuffled[index] = shuffled[rand]; + shuffled[rand] = set[index]; + } + return shuffled; + }; + + // Sample **n** random values from a collection. + // If **n** is not specified, returns a single random element. + // The internal `guard` argument allows it to work with `map`. + _.sample = function(obj, n, guard) { + if (n == null || guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + return obj[_.random(obj.length - 1)]; + } + return _.shuffle(obj).slice(0, Math.max(0, n)); + }; + + // Sort the object's values by a criterion produced by an iteratee. + _.sortBy = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + return _.pluck(_.map(obj, function(value, index, list) { + return { + value: value, + index: index, + criteria: iteratee(value, index, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); + }; + + // An internal function used for aggregate "group by" operations. + var group = function(behavior) { + return function(obj, iteratee, context) { + var result = {}; + iteratee = cb(iteratee, context); + _.each(obj, function(value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); + }); + return result; + }; + }; + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = group(function(result, value, key) { + if (_.has(result, key)) result[key].push(value); else result[key] = [value]; + }); + + // Indexes the object's values by a criterion, similar to `groupBy`, but for + // when you know that your index values will be unique. + _.indexBy = group(function(result, value, key) { + result[key] = value; + }); + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = group(function(result, value, key) { + if (_.has(result, key)) result[key]++; else result[key] = 1; + }); + + // Safely create a real, live array from anything iterable. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (isArrayLike(obj)) return _.map(obj, _.identity); + return _.values(obj); + }; + + // Return the number of elements in an object. + _.size = function(obj) { + if (obj == null) return 0; + return isArrayLike(obj) ? obj.length : _.keys(obj).length; + }; + + // Split a collection into two arrays: one whose elements all satisfy the given + // predicate, and one whose elements all do not satisfy the predicate. + _.partition = function(obj, predicate, context) { + predicate = cb(predicate, context); + var pass = [], fail = []; + _.each(obj, function(value, key, obj) { + (predicate(value, key, obj) ? pass : fail).push(value); + }); + return [pass, fail]; + }; + + // Array Functions + // --------------- + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[0]; + return _.initial(array, array.length - n); + }; + + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. + _.initial = function(array, n, guard) { + return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); + }; + + // Get the last element of an array. Passing **n** will return the last N + // values in the array. + _.last = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[array.length - 1]; + return _.rest(array, Math.max(0, array.length - n)); + }; + + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); + }; + + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, _.identity); + }; + + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, strict, startIndex) { + var output = [], idx = 0; + for (var i = startIndex || 0, length = getLength(input); i < length; i++) { + var value = input[i]; + if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) { + //flatten current level of array or arguments object + if (!shallow) value = flatten(value, shallow, strict); + var j = 0, len = value.length; + output.length += len; + while (j < len) { + output[idx++] = value[j++]; + } + } else if (!strict) { + output[idx++] = value; + } + } + return output; + }; + + // Flatten out an array, either recursively (by default), or just one level. + _.flatten = function(array, shallow) { + return flatten(array, shallow, false); + }; + + // Return a version of the array that does not contain the specified value(s). + _.without = function(array) { + return _.difference(array, slice.call(arguments, 1)); + }; + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted, iteratee, context) { + if (!_.isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!_.contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!_.contains(result, value)) { + result.push(value); + } + } + return result; + }; + + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + _.union = function() { + return _.uniq(flatten(arguments, true, true)); + }; + + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersection = function(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = getLength(array); i < length; i++) { + var item = array[i]; + if (_.contains(result, item)) continue; + for (var j = 1; j < argsLength; j++) { + if (!_.contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; + }; + + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + _.difference = function(array) { + var rest = flatten(arguments, true, true, 1); + return _.filter(array, function(value){ + return !_.contains(rest, value); + }); + }; + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = function() { + return _.unzip(arguments); + }; + + // Complement of _.zip. Unzip accepts an array of arrays and groups + // each array's elements on shared indices + _.unzip = function(array) { + var length = array && _.max(array, getLength).length || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = _.pluck(array, index); + } + return result; + }; + + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. + _.object = function(list, values) { + var result = {}; + for (var i = 0, length = getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; + + // Generator function to create the findIndex and findLastIndex functions + function createPredicateIndexFinder(dir) { + return function(array, predicate, context) { + predicate = cb(predicate, context); + var length = getLength(array); + var index = dir > 0 ? 0 : length - 1; + for (; index >= 0 && index < length; index += dir) { + if (predicate(array[index], index, array)) return index; + } + return -1; + }; + } + + // Returns the first index on an array-like that passes a predicate test + _.findIndex = createPredicateIndexFinder(1); + _.findLastIndex = createPredicateIndexFinder(-1); + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iteratee, context) { + iteratee = cb(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, high = getLength(array); + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; + } + return low; + }; + + // Generator function to create the indexOf and lastIndexOf functions + function createIndexFinder(dir, predicateFind, sortedIndex) { + return function(array, item, idx) { + var i = 0, length = getLength(array); + if (typeof idx == 'number') { + if (dir > 0) { + i = idx >= 0 ? idx : Math.max(idx + length, i); + } else { + length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; + } + } else if (sortedIndex && idx && length) { + idx = sortedIndex(array, item); + return array[idx] === item ? idx : -1; + } + if (item !== item) { + idx = predicateFind(slice.call(array, i, length), _.isNaN); + return idx >= 0 ? idx + i : -1; + } + for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { + if (array[idx] === item) return idx; + } + return -1; + }; + } + + // Return the position of the first occurrence of an item in an array, + // or -1 if the item is not included in the array. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex); + _.lastIndexOf = createIndexFinder(-1, _.findLastIndex); + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + step = step || 1; + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; + }; + + // Function (ahem) Functions + // ------------------ + + // Determines whether to execute a function as a constructor + // or a normal function with the provided arguments + var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) { + if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); + var self = baseCreate(sourceFunc.prototype); + var result = sourceFunc.apply(self, args); + if (_.isObject(result)) return result; + return self; + }; + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = function(func, context) { + if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); + if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function'); + var args = slice.call(arguments, 2); + var bound = function() { + return executeBound(func, bound, context, this, args.concat(slice.call(arguments))); + }; + return bound; + }; + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. _ acts + // as a placeholder, allowing any combination of arguments to be pre-filled. + _.partial = function(func) { + var boundArgs = slice.call(arguments, 1); + var bound = function() { + var position = 0, length = boundArgs.length; + var args = Array(length); + for (var i = 0; i < length; i++) { + args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i]; + } + while (position < arguments.length) args.push(arguments[position++]); + return executeBound(func, bound, this, this, args); + }; + return bound; + }; + + // Bind a number of an object's methods to that object. Remaining arguments + // are the method names to be bound. Useful for ensuring that all callbacks + // defined on an object belong to it. + _.bindAll = function(obj) { + var i, length = arguments.length, key; + if (length <= 1) throw new Error('bindAll must be passed function names'); + for (i = 1; i < length; i++) { + key = arguments[i]; + obj[key] = _.bind(obj[key], obj); + } + return obj; + }; + + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memoize = function(key) { + var cache = memoize.cache; + var address = '' + (hasher ? hasher.apply(this, arguments) : key); + if (!_.has(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; + memoize.cache = {}; + return memoize; + }; + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = function(func, wait) { + var args = slice.call(arguments, 2); + return setTimeout(function(){ + return func.apply(null, args); + }, wait); + }; + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = _.partial(_.delay, _, 1); + + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. Normally, the throttled function will run + // as much as it can, without ever going more than once per `wait` duration; + // but if you'd like to disable the execution on the leading edge, pass + // `{leading: false}`. To disable execution on the trailing edge, ditto. + _.throttle = function(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + if (!options) options = {}; + var later = function() { + previous = options.leading === false ? 0 : _.now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; + return function() { + var now = _.now(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }; + + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, args, context, timestamp, result; + + var later = function() { + var last = _.now() - timestamp; + + if (last < wait && last >= 0) { + timeout = setTimeout(later, wait - last); + } else { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + if (!timeout) context = args = null; + } + } + }; + + return function() { + context = this; + args = arguments; + timestamp = _.now(); + var callNow = immediate && !timeout; + if (!timeout) timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + context = args = null; + } + + return result; + }; + }; + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return _.partial(wrapper, func); + }; + + // Returns a negated version of the passed-in predicate. + _.negate = function(predicate) { + return function() { + return !predicate.apply(this, arguments); + }; + }; + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var args = arguments; + var start = args.length - 1; + return function() { + var i = start; + var result = args[start].apply(this, arguments); + while (i--) result = args[i].call(this, result); + return result; + }; + }; + + // Returns a function that will only be executed on and after the Nth call. + _.after = function(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + }; + + // Returns a function that will only be executed up to (but not including) the Nth call. + _.before = function(times, func) { + var memo; + return function() { + if (--times > 0) { + memo = func.apply(this, arguments); + } + if (times <= 1) func = null; + return memo; + }; + }; + + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + _.once = _.partial(_.before, 2); + + // Object Functions + // ---------------- + + // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. + var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); + var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; + + function collectNonEnumProps(obj, keys) { + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto; + + // Constructor is a special case. + var prop = 'constructor'; + if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop); + + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) { + keys.push(prop); + } + } + } + + // Retrieve the names of an object's own properties. + // Delegates to **ECMAScript 5**'s native `Object.keys` + _.keys = function(obj) { + if (!_.isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (_.has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve all the property names of an object. + _.allKeys = function(obj) { + if (!_.isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve the values of an object's properties. + _.values = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[keys[i]]; + } + return values; + }; + + // Returns the results of applying the iteratee to each element of the object + // In contrast to _.map it returns an object + _.mapObject = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = _.keys(obj), + length = keys.length, + results = {}, + currentKey; + for (var index = 0; index < length; index++) { + currentKey = keys[index]; + results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Convert an object into a list of `[key, value]` pairs. + _.pairs = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [keys[i], obj[keys[i]]]; + } + return pairs; + }; + + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + result[obj[keys[i]]] = keys[i]; + } + return result; + }; + + // Return a sorted list of the function names available on the object. + // Aliased as `methods` + _.functions = _.methods = function(obj) { + var names = []; + for (var key in obj) { + if (_.isFunction(obj[key])) names.push(key); + } + return names.sort(); + }; + + // Extend a given object with all the properties in passed-in object(s). + _.extend = createAssigner(_.allKeys); + + // Assigns a given object with all the own properties in the passed-in object(s) + // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) + _.extendOwn = _.assign = createAssigner(_.keys); + + // Returns the first key on an object that passes a predicate test + _.findKey = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = _.keys(obj), key; + for (var i = 0, length = keys.length; i < length; i++) { + key = keys[i]; + if (predicate(obj[key], key, obj)) return key; + } + }; + + // Return a copy of the object only containing the whitelisted properties. + _.pick = function(object, oiteratee, context) { + var result = {}, obj = object, iteratee, keys; + if (obj == null) return result; + if (_.isFunction(oiteratee)) { + keys = _.allKeys(obj); + iteratee = optimizeCb(oiteratee, context); + } else { + keys = flatten(arguments, false, false, 1); + iteratee = function(value, key, obj) { return key in obj; }; + obj = Object(obj); + } + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i]; + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } + return result; + }; + + // Return a copy of the object without the blacklisted properties. + _.omit = function(obj, iteratee, context) { + if (_.isFunction(iteratee)) { + iteratee = _.negate(iteratee); + } else { + var keys = _.map(flatten(arguments, false, false, 1), String); + iteratee = function(value, key) { + return !_.contains(keys, key); + }; + } + return _.pick(obj, iteratee, context); + }; + + // Fill in a given object with default properties. + _.defaults = createAssigner(_.allKeys, true); + + // Creates an object that inherits from the given prototype object. + // If additional properties are provided then they will be added to the + // created object. + _.create = function(prototype, props) { + var result = baseCreate(prototype); + if (props) _.extendOwn(result, props); + return result; + }; + + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + if (!_.isObject(obj)) return obj; + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; + + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; + + // Returns whether an object has a given set of `key:value` pairs. + _.isMatch = function(object, attrs) { + var keys = _.keys(attrs), length = keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; + }; + + + // Internal recursive comparison function for `isEqual`. + var eq = function(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // A strict comparison is necessary because `null == undefined`. + if (a == null || b == null) return a === b; + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className !== toString.call(b)) return false; + switch (className) { + // Strings, numbers, regular expressions, dates, and booleans are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + } + + var areArrays = className === '[object Array]'; + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; + + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor && + _.isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } + + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var keys = _.keys(a), key; + length = keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (_.keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = keys[length]; + if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; + }; + + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + return eq(a, b); + }; + + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + _.isEmpty = function(obj) { + if (obj == null) return true; + if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0; + return _.keys(obj).length === 0; + }; + + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType === 1); + }; + + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return toString.call(obj) === '[object Array]'; + }; + + // Is a given variable an object? + _.isObject = function(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; + }; + + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError. + _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) === '[object ' + name + ']'; + }; + }); + + // Define a fallback version of the method in browsers (ahem, IE < 9), where + // there isn't any inspectable "Arguments" type. + if (!_.isArguments(arguments)) { + _.isArguments = function(obj) { + return _.has(obj, 'callee'); + }; + } + + // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8, + // IE 11 (#1621), and in Safari 8 (#1929). + if (typeof /./ != 'function' && typeof Int8Array != 'object') { + _.isFunction = function(obj) { + return typeof obj == 'function' || false; + }; + } + + // Is a given object a finite number? + _.isFinite = function(obj) { + return isFinite(obj) && !isNaN(parseFloat(obj)); + }; + + // Is the given value `NaN`? (NaN is the only number which does not equal itself). + _.isNaN = function(obj) { + return _.isNumber(obj) && obj !== +obj; + }; + + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; + }; + + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; + + // Is a given variable undefined? + _.isUndefined = function(obj) { + return obj === void 0; + }; + + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, key) { + return obj != null && hasOwnProperty.call(obj, key); + }; + + // Utility Functions + // ----------------- + + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; + + // Keep the identity function around for default iteratees. + _.identity = function(value) { + return value; + }; + + // Predicate-generating functions. Often useful outside of Underscore. + _.constant = function(value) { + return function() { + return value; + }; + }; + + _.noop = function(){}; + + _.property = property; + + // Generates a function for a given object that returns a given property. + _.propertyOf = function(obj) { + return obj == null ? function(){} : function(key) { + return obj[key]; + }; + }; + + // Returns a predicate for checking whether an object has a given set of + // `key:value` pairs. + _.matcher = _.matches = function(attrs) { + attrs = _.extendOwn({}, attrs); + return function(obj) { + return _.isMatch(obj, attrs); + }; + }; + + // Run a function **n** times. + _.times = function(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = optimizeCb(iteratee, context, 1); + for (var i = 0; i < n; i++) accum[i] = iteratee(i); + return accum; + }; + + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + }; + + // A (possibly faster) way to get the current timestamp as an integer. + _.now = Date.now || function() { + return new Date().getTime(); + }; + + // List of HTML entities for escaping. + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + var unescapeMap = _.invert(escapeMap); + + // Functions for escaping and unescaping strings to/from HTML interpolation. + var createEscaper = function(map) { + var escaper = function(match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped + var source = '(?:' + _.keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + }; + _.escape = createEscaper(escapeMap); + _.unescape = createEscaper(unescapeMap); + + // If the value of the named `property` is a function then invoke it with the + // `object` as context; otherwise, return it. + _.result = function(object, property, fallback) { + var value = object == null ? void 0 : object[property]; + if (value === void 0) { + value = fallback; + } + return _.isFunction(value) ? value.call(object) : value; + }; + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\u2028|\u2029/g; + + var escapeChar = function(match) { + return '\\' + escapes[match]; + }; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + // NB: `oldSettings` only exists for backwards compatibility. + _.template = function(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escaper, escapeChar); + index = offset + match.length; + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + + // Adobe VMs need the match returned to produce the correct offest. + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + 'return __p;\n'; + + try { + var render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled source as a convenience for precompilation. + var argument = settings.variable || 'obj'; + template.source = 'function(' + argument + '){\n' + source + '}'; + + return template; + }; + + // Add a "chain" function. Start chaining a wrapped Underscore object. + _.chain = function(obj) { + var instance = _(obj); + instance._chain = true; + return instance; + }; + + // OOP + // --------------- + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. + + // Helper function to continue chaining intermediate results. + var result = function(instance, obj) { + return instance._chain ? _(obj).chain() : obj; + }; + + // Add your own custom functions to the Underscore object. + _.mixin = function(obj) { + _.each(_.functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return result(this, func.apply(_, args)); + }; + }); + }; + + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); + + // Add all mutator Array functions to the wrapper. + _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0]; + return result(this, obj); + }; + }); + + // Add all accessor Array functions to the wrapper. + _.each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + return result(this, method.apply(this._wrapped, arguments)); + }; + }); + + // Extracts the result from a wrapped and chained object. + _.prototype.value = function() { + return this._wrapped; + }; + + // Provide unwrapping proxy for some methods used in engine operations + // such as arithmetic and JSON stringification. + _.prototype.valueOf = _.prototype.toJSON = _.prototype.value; + + _.prototype.toString = function() { + return '' + this._wrapped; + }; + + // AMD registration happens at the end for compatibility with AMD loaders + // that may not enforce next-turn semantics on modules. Even though general + // practice for AMD registration is to be anonymous, underscore registers + // as a named module because, like jQuery, it is a base library that is + // popular enough to be bundled in a third party lib, but not be part of + // an AMD load request. Those cases could generate an error when an + // anonymous define() is called outside of a loader request. + if (typeof define === 'function' && define.amd) { + define('underscore', [], function() { + return _; + }); + } +}.call(this)); + +},{}],26:[function(require,module,exports){ +arguments[4][19][0].apply(exports,arguments) +},{"dup":19}],27:[function(require,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],28:[function(require,module,exports){ +(function (process,global){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = require('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = require('inherits'); + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./support/isBuffer":27,"_process":24,"inherits":26}],29:[function(require,module,exports){ +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + + return wrapper + + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} + +},{}]},{},[7])(7) +}); \ No newline at end of file diff --git a/assets/javascripts/workers/search.ecf98df9.min.js b/assets/javascripts/workers/search.ecf98df9.min.js new file mode 100644 index 0000000..f8c7399 --- /dev/null +++ b/assets/javascripts/workers/search.ecf98df9.min.js @@ -0,0 +1,48 @@ +"use strict";(()=>{var ge=Object.create;var W=Object.defineProperty,ye=Object.defineProperties,me=Object.getOwnPropertyDescriptor,ve=Object.getOwnPropertyDescriptors,xe=Object.getOwnPropertyNames,G=Object.getOwnPropertySymbols,Se=Object.getPrototypeOf,X=Object.prototype.hasOwnProperty,Qe=Object.prototype.propertyIsEnumerable;var J=(t,e,r)=>e in t?W(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,M=(t,e)=>{for(var r in e||(e={}))X.call(e,r)&&J(t,r,e[r]);if(G)for(var r of G(e))Qe.call(e,r)&&J(t,r,e[r]);return t},Z=(t,e)=>ye(t,ve(e));var K=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var be=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of xe(e))!X.call(t,i)&&i!==r&&W(t,i,{get:()=>e[i],enumerable:!(n=me(e,i))||n.enumerable});return t};var H=(t,e,r)=>(r=t!=null?ge(Se(t)):{},be(e||!t||!t.__esModule?W(r,"default",{value:t,enumerable:!0}):r,t));var z=(t,e,r)=>new Promise((n,i)=>{var s=u=>{try{a(r.next(u))}catch(c){i(c)}},o=u=>{try{a(r.throw(u))}catch(c){i(c)}},a=u=>u.done?n(u.value):Promise.resolve(u.value).then(s,o);a((r=r.apply(t,e)).next())});var re=K((ee,te)=>{/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";/*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + */t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;i0){var h=t.utils.clone(r)||{};h.position=[a,c],h.index=s.length,s.push(new t.Token(n.slice(a,o),h))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;/*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + */t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,r){r in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+r),e.label=r,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var r=e.label&&e.label in this.registeredFunctions;r||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n1&&(oe&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ou?h+=2:a==u&&(r+=n[c+1]*i[h+1],c+=2,h+=2);return r},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),r=1,n=0;r0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}if(s.str.length==0&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var c=s.node.edges["*"];else{var c=new t.TokenSet;s.node.edges["*"]=c}s.str.length==1&&(c.final=!0),i.push({node:c,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var h=s.str.charAt(0),y=s.str.charAt(1),g;y in s.node.edges?g=s.node.edges[y]:(g=new t.TokenSet,s.node.edges[y]=g),s.str.length==1&&(g.final=!0),i.push({node:g,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i=e;r--){var n=this.uncheckedNodes[r],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}};/*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + */t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var r=e.peekLexeme();if(r!=null)switch(r.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,r){typeof define=="function"&&define.amd?define(r):typeof ee=="object"?te.exports=r():e.lunr=r()}(this,function(){return t})})()});var q=K((Re,ne)=>{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var Le=/["'&<>]/;ne.exports=we;function we(t){var e=""+t,r=Le.exec(e);if(!r)return e;var n,i="",s=0,o=0;for(s=r.index;s=0;r--){let n=t[r];typeof n!="object"?n=document.createTextNode(n):n.parentNode&&n.parentNode.removeChild(n),r?e.insertBefore(this.previousSibling,n):e.replaceChild(n,this)}}}));var ie=H(q());function se(t){let e=new Map,r=new Set;for(let n of t){let[i,s]=n.location.split("#"),o=n.location,a=n.title,u=n.tags,c=(0,ie.default)(n.text).replace(/\s+(?=[,.:;!?])/g,"").replace(/\s+/g," ");if(s){let h=e.get(i);r.has(h)?e.set(o,{location:o,title:a,text:c,parent:h}):(h.title=n.title,h.text=c,r.add(h))}else e.set(o,M({location:o,title:a,text:c},u&&{tags:u}))}return e}var oe=H(q());function ae(t,e){let r=new RegExp(t.separator,"img"),n=(i,s,o)=>`${s}${o}`;return i=>{i=i.replace(/[\s*+\-:~^]+/g," ").trim();let s=new RegExp(`(^|${t.separator})(${i.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return o=>(e?(0,oe.default)(o):o).replace(s,n).replace(/<\/mark>(\s+)]*>/img,"$1")}}function ue(t){let e=new lunr.Query(["title","text"]);return new lunr.QueryParser(t,e).parse(),e.clauses}function ce(t,e){var i;let r=new Set(t),n={};for(let s=0;s!n.has(i)))]}var U=class{constructor({config:e,docs:r,options:n}){this.options=n,this.documents=se(r),this.highlight=ae(e,!1),lunr.tokenizer.separator=new RegExp(e.separator),this.index=lunr(function(){e.lang.length===1&&e.lang[0]!=="en"?this.use(lunr[e.lang[0]]):e.lang.length>1&&this.use(lunr.multiLanguage(...e.lang));let i=Ee(["trimmer","stopWordFilter","stemmer"],n.pipeline);for(let s of e.lang.map(o=>o==="en"?lunr:lunr[o]))for(let o of i)this.pipeline.remove(s[o]),this.searchPipeline.remove(s[o]);this.ref("location"),this.field("title",{boost:1e3}),this.field("text"),this.field("tags",{boost:1e6,extractor:s=>{let{tags:o=[]}=s;return o.reduce((a,u)=>[...a,...lunr.tokenizer(u)],[])}});for(let s of r)this.add(s,{boost:s.boost})})}search(e){if(e)try{let r=this.highlight(e),n=ue(e).filter(o=>o.presence!==lunr.Query.presence.PROHIBITED),i=this.index.search(`${e}*`).reduce((o,{ref:a,score:u,matchData:c})=>{let h=this.documents.get(a);if(typeof h!="undefined"){let{location:y,title:g,text:b,tags:m,parent:Q}=h,p=ce(n,Object.keys(c.metadata)),d=+!Q+ +Object.values(p).every(w=>w);o.push(Z(M({location:y,title:r(g),text:r(b)},m&&{tags:m.map(r)}),{score:u*(1+d),terms:p}))}return o},[]).sort((o,a)=>a.score-o.score).reduce((o,a)=>{let u=this.documents.get(a.location);if(typeof u!="undefined"){let c="parent"in u?u.parent.location:u.location;o.set(c,[...o.get(c)||[],a])}return o},new Map),s;if(this.options.suggestions){let o=this.index.query(a=>{for(let u of n)a.term(u.term,{fields:["title"],presence:lunr.Query.presence.REQUIRED,wildcard:lunr.Query.wildcard.TRAILING})});s=o.length?Object.keys(o[0].matchData.metadata):[]}return M({items:[...i.values()]},typeof s!="undefined"&&{suggestions:s})}catch(r){console.warn(`Invalid query: ${e} \u2013 see https://bit.ly/2s3ChXG`)}return{items:[]}}};var Y;function ke(t){return z(this,null,function*(){let e="../lunr";if(typeof parent!="undefined"&&"IFrameWorker"in parent){let n=document.querySelector("script[src]"),[i]=n.src.split("/worker");e=e.replace("..",i)}let r=[];for(let n of t.lang){switch(n){case"ja":r.push(`${e}/tinyseg.js`);break;case"hi":case"th":r.push(`${e}/wordcut.js`);break}n!=="en"&&r.push(`${e}/min/lunr.${n}.min.js`)}t.lang.length>1&&r.push(`${e}/min/lunr.multi.min.js`),r.length&&(yield importScripts(`${e}/min/lunr.stemmer.support.min.js`,...r))})}function Te(t){return z(this,null,function*(){switch(t.type){case 0:return yield ke(t.data.config),Y=new U(t.data),{type:1};case 2:return{type:3,data:Y?Y.search(t.data):{items:[]}};default:throw new TypeError("Invalid message type")}})}self.lunr=le.default;addEventListener("message",t=>z(void 0,null,function*(){postMessage(yield Te(t.data))}));})(); +//# sourceMappingURL=search.ecf98df9.min.js.map + diff --git a/assets/javascripts/workers/search.ecf98df9.min.js.map b/assets/javascripts/workers/search.ecf98df9.min.js.map new file mode 100644 index 0000000..eada3e6 --- /dev/null +++ b/assets/javascripts/workers/search.ecf98df9.min.js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["node_modules/lunr/lunr.js", "node_modules/escape-html/index.js", "src/assets/javascripts/integrations/search/worker/main/index.ts", "src/assets/javascripts/polyfills/index.ts", "src/assets/javascripts/integrations/search/document/index.ts", "src/assets/javascripts/integrations/search/highlighter/index.ts", "src/assets/javascripts/integrations/search/query/_/index.ts", "src/assets/javascripts/integrations/search/_/index.ts"], + "sourceRoot": "../../../..", + "sourcesContent": ["/**\n * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9\n * Copyright (C) 2020 Oliver Nightingale\n * @license MIT\n */\n\n;(function(){\n\n/**\n * A convenience function for configuring and constructing\n * a new lunr Index.\n *\n * A lunr.Builder instance is created and the pipeline setup\n * with a trimmer, stop word filter and stemmer.\n *\n * This builder object is yielded to the configuration function\n * that is passed as a parameter, allowing the list of fields\n * and other builder parameters to be customised.\n *\n * All documents _must_ be added within the passed config function.\n *\n * @example\n * var idx = lunr(function () {\n * this.field('title')\n * this.field('body')\n * this.ref('id')\n *\n * documents.forEach(function (doc) {\n * this.add(doc)\n * }, this)\n * })\n *\n * @see {@link lunr.Builder}\n * @see {@link lunr.Pipeline}\n * @see {@link lunr.trimmer}\n * @see {@link lunr.stopWordFilter}\n * @see {@link lunr.stemmer}\n * @namespace {function} lunr\n */\nvar lunr = function (config) {\n var builder = new lunr.Builder\n\n builder.pipeline.add(\n lunr.trimmer,\n lunr.stopWordFilter,\n lunr.stemmer\n )\n\n builder.searchPipeline.add(\n lunr.stemmer\n )\n\n config.call(builder, builder)\n return builder.build()\n}\n\nlunr.version = \"2.3.9\"\n/*!\n * lunr.utils\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A namespace containing utils for the rest of the lunr library\n * @namespace lunr.utils\n */\nlunr.utils = {}\n\n/**\n * Print a warning message to the console.\n *\n * @param {String} message The message to be printed.\n * @memberOf lunr.utils\n * @function\n */\nlunr.utils.warn = (function (global) {\n /* eslint-disable no-console */\n return function (message) {\n if (global.console && console.warn) {\n console.warn(message)\n }\n }\n /* eslint-enable no-console */\n})(this)\n\n/**\n * Convert an object to a string.\n *\n * In the case of `null` and `undefined` the function returns\n * the empty string, in all other cases the result of calling\n * `toString` on the passed object is returned.\n *\n * @param {Any} obj The object to convert to a string.\n * @return {String} string representation of the passed object.\n * @memberOf lunr.utils\n */\nlunr.utils.asString = function (obj) {\n if (obj === void 0 || obj === null) {\n return \"\"\n } else {\n return obj.toString()\n }\n}\n\n/**\n * Clones an object.\n *\n * Will create a copy of an existing object such that any mutations\n * on the copy cannot affect the original.\n *\n * Only shallow objects are supported, passing a nested object to this\n * function will cause a TypeError.\n *\n * Objects with primitives, and arrays of primitives are supported.\n *\n * @param {Object} obj The object to clone.\n * @return {Object} a clone of the passed object.\n * @throws {TypeError} when a nested object is passed.\n * @memberOf Utils\n */\nlunr.utils.clone = function (obj) {\n if (obj === null || obj === undefined) {\n return obj\n }\n\n var clone = Object.create(null),\n keys = Object.keys(obj)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i],\n val = obj[key]\n\n if (Array.isArray(val)) {\n clone[key] = val.slice()\n continue\n }\n\n if (typeof val === 'string' ||\n typeof val === 'number' ||\n typeof val === 'boolean') {\n clone[key] = val\n continue\n }\n\n throw new TypeError(\"clone is not deep and does not support nested objects\")\n }\n\n return clone\n}\nlunr.FieldRef = function (docRef, fieldName, stringValue) {\n this.docRef = docRef\n this.fieldName = fieldName\n this._stringValue = stringValue\n}\n\nlunr.FieldRef.joiner = \"/\"\n\nlunr.FieldRef.fromString = function (s) {\n var n = s.indexOf(lunr.FieldRef.joiner)\n\n if (n === -1) {\n throw \"malformed field ref string\"\n }\n\n var fieldRef = s.slice(0, n),\n docRef = s.slice(n + 1)\n\n return new lunr.FieldRef (docRef, fieldRef, s)\n}\n\nlunr.FieldRef.prototype.toString = function () {\n if (this._stringValue == undefined) {\n this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef\n }\n\n return this._stringValue\n}\n/*!\n * lunr.Set\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A lunr set.\n *\n * @constructor\n */\nlunr.Set = function (elements) {\n this.elements = Object.create(null)\n\n if (elements) {\n this.length = elements.length\n\n for (var i = 0; i < this.length; i++) {\n this.elements[elements[i]] = true\n }\n } else {\n this.length = 0\n }\n}\n\n/**\n * A complete set that contains all elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.complete = {\n intersect: function (other) {\n return other\n },\n\n union: function () {\n return this\n },\n\n contains: function () {\n return true\n }\n}\n\n/**\n * An empty set that contains no elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.empty = {\n intersect: function () {\n return this\n },\n\n union: function (other) {\n return other\n },\n\n contains: function () {\n return false\n }\n}\n\n/**\n * Returns true if this set contains the specified object.\n *\n * @param {object} object - Object whose presence in this set is to be tested.\n * @returns {boolean} - True if this set contains the specified object.\n */\nlunr.Set.prototype.contains = function (object) {\n return !!this.elements[object]\n}\n\n/**\n * Returns a new set containing only the elements that are present in both\n * this set and the specified set.\n *\n * @param {lunr.Set} other - set to intersect with this set.\n * @returns {lunr.Set} a new set that is the intersection of this and the specified set.\n */\n\nlunr.Set.prototype.intersect = function (other) {\n var a, b, elements, intersection = []\n\n if (other === lunr.Set.complete) {\n return this\n }\n\n if (other === lunr.Set.empty) {\n return other\n }\n\n if (this.length < other.length) {\n a = this\n b = other\n } else {\n a = other\n b = this\n }\n\n elements = Object.keys(a.elements)\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i]\n if (element in b.elements) {\n intersection.push(element)\n }\n }\n\n return new lunr.Set (intersection)\n}\n\n/**\n * Returns a new set combining the elements of this and the specified set.\n *\n * @param {lunr.Set} other - set to union with this set.\n * @return {lunr.Set} a new set that is the union of this and the specified set.\n */\n\nlunr.Set.prototype.union = function (other) {\n if (other === lunr.Set.complete) {\n return lunr.Set.complete\n }\n\n if (other === lunr.Set.empty) {\n return this\n }\n\n return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)))\n}\n/**\n * A function to calculate the inverse document frequency for\n * a posting. This is shared between the builder and the index\n *\n * @private\n * @param {object} posting - The posting for a given term\n * @param {number} documentCount - The total number of documents.\n */\nlunr.idf = function (posting, documentCount) {\n var documentsWithTerm = 0\n\n for (var fieldName in posting) {\n if (fieldName == '_index') continue // Ignore the term index, its not a field\n documentsWithTerm += Object.keys(posting[fieldName]).length\n }\n\n var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5)\n\n return Math.log(1 + Math.abs(x))\n}\n\n/**\n * A token wraps a string representation of a token\n * as it is passed through the text processing pipeline.\n *\n * @constructor\n * @param {string} [str=''] - The string token being wrapped.\n * @param {object} [metadata={}] - Metadata associated with this token.\n */\nlunr.Token = function (str, metadata) {\n this.str = str || \"\"\n this.metadata = metadata || {}\n}\n\n/**\n * Returns the token string that is being wrapped by this object.\n *\n * @returns {string}\n */\nlunr.Token.prototype.toString = function () {\n return this.str\n}\n\n/**\n * A token update function is used when updating or optionally\n * when cloning a token.\n *\n * @callback lunr.Token~updateFunction\n * @param {string} str - The string representation of the token.\n * @param {Object} metadata - All metadata associated with this token.\n */\n\n/**\n * Applies the given function to the wrapped string token.\n *\n * @example\n * token.update(function (str, metadata) {\n * return str.toUpperCase()\n * })\n *\n * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.update = function (fn) {\n this.str = fn(this.str, this.metadata)\n return this\n}\n\n/**\n * Creates a clone of this token. Optionally a function can be\n * applied to the cloned token.\n *\n * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.clone = function (fn) {\n fn = fn || function (s) { return s }\n return new lunr.Token (fn(this.str, this.metadata), this.metadata)\n}\n/*!\n * lunr.tokenizer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A function for splitting a string into tokens ready to be inserted into\n * the search index. Uses `lunr.tokenizer.separator` to split strings, change\n * the value of this property to change how strings are split into tokens.\n *\n * This tokenizer will convert its parameter to a string by calling `toString` and\n * then will split this string on the character in `lunr.tokenizer.separator`.\n * Arrays will have their elements converted to strings and wrapped in a lunr.Token.\n *\n * Optional metadata can be passed to the tokenizer, this metadata will be cloned and\n * added as metadata to every token that is created from the object to be tokenized.\n *\n * @static\n * @param {?(string|object|object[])} obj - The object to convert into tokens\n * @param {?object} metadata - Optional metadata to associate with every token\n * @returns {lunr.Token[]}\n * @see {@link lunr.Pipeline}\n */\nlunr.tokenizer = function (obj, metadata) {\n if (obj == null || obj == undefined) {\n return []\n }\n\n if (Array.isArray(obj)) {\n return obj.map(function (t) {\n return new lunr.Token(\n lunr.utils.asString(t).toLowerCase(),\n lunr.utils.clone(metadata)\n )\n })\n }\n\n var str = obj.toString().toLowerCase(),\n len = str.length,\n tokens = []\n\n for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {\n var char = str.charAt(sliceEnd),\n sliceLength = sliceEnd - sliceStart\n\n if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) {\n\n if (sliceLength > 0) {\n var tokenMetadata = lunr.utils.clone(metadata) || {}\n tokenMetadata[\"position\"] = [sliceStart, sliceLength]\n tokenMetadata[\"index\"] = tokens.length\n\n tokens.push(\n new lunr.Token (\n str.slice(sliceStart, sliceEnd),\n tokenMetadata\n )\n )\n }\n\n sliceStart = sliceEnd + 1\n }\n\n }\n\n return tokens\n}\n\n/**\n * The separator used to split a string into tokens. Override this property to change the behaviour of\n * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.\n *\n * @static\n * @see lunr.tokenizer\n */\nlunr.tokenizer.separator = /[\\s\\-]+/\n/*!\n * lunr.Pipeline\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.Pipelines maintain an ordered list of functions to be applied to all\n * tokens in documents entering the search index and queries being ran against\n * the index.\n *\n * An instance of lunr.Index created with the lunr shortcut will contain a\n * pipeline with a stop word filter and an English language stemmer. Extra\n * functions can be added before or after either of these functions or these\n * default functions can be removed.\n *\n * When run the pipeline will call each function in turn, passing a token, the\n * index of that token in the original list of all tokens and finally a list of\n * all the original tokens.\n *\n * The output of functions in the pipeline will be passed to the next function\n * in the pipeline. To exclude a token from entering the index the function\n * should return undefined, the rest of the pipeline will not be called with\n * this token.\n *\n * For serialisation of pipelines to work, all functions used in an instance of\n * a pipeline should be registered with lunr.Pipeline. Registered functions can\n * then be loaded. If trying to load a serialised pipeline that uses functions\n * that are not registered an error will be thrown.\n *\n * If not planning on serialising the pipeline then registering pipeline functions\n * is not necessary.\n *\n * @constructor\n */\nlunr.Pipeline = function () {\n this._stack = []\n}\n\nlunr.Pipeline.registeredFunctions = Object.create(null)\n\n/**\n * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token\n * string as well as all known metadata. A pipeline function can mutate the token string\n * or mutate (or add) metadata for a given token.\n *\n * A pipeline function can indicate that the passed token should be discarded by returning\n * null, undefined or an empty string. This token will not be passed to any downstream pipeline\n * functions and will not be added to the index.\n *\n * Multiple tokens can be returned by returning an array of tokens. Each token will be passed\n * to any downstream pipeline functions and all will returned tokens will be added to the index.\n *\n * Any number of pipeline functions may be chained together using a lunr.Pipeline.\n *\n * @interface lunr.PipelineFunction\n * @param {lunr.Token} token - A token from the document being processed.\n * @param {number} i - The index of this token in the complete list of tokens for this document/field.\n * @param {lunr.Token[]} tokens - All tokens for this document/field.\n * @returns {(?lunr.Token|lunr.Token[])}\n */\n\n/**\n * Register a function with the pipeline.\n *\n * Functions that are used in the pipeline should be registered if the pipeline\n * needs to be serialised, or a serialised pipeline needs to be loaded.\n *\n * Registering a function does not add it to a pipeline, functions must still be\n * added to instances of the pipeline for them to be used when running a pipeline.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @param {String} label - The label to register this function with\n */\nlunr.Pipeline.registerFunction = function (fn, label) {\n if (label in this.registeredFunctions) {\n lunr.utils.warn('Overwriting existing registered function: ' + label)\n }\n\n fn.label = label\n lunr.Pipeline.registeredFunctions[fn.label] = fn\n}\n\n/**\n * Warns if the function is not registered as a Pipeline function.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @private\n */\nlunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n var isRegistered = fn.label && (fn.label in this.registeredFunctions)\n\n if (!isRegistered) {\n lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\\n', fn)\n }\n}\n\n/**\n * Loads a previously serialised pipeline.\n *\n * All functions to be loaded must already be registered with lunr.Pipeline.\n * If any function from the serialised data has not been registered then an\n * error will be thrown.\n *\n * @param {Object} serialised - The serialised pipeline to load.\n * @returns {lunr.Pipeline}\n */\nlunr.Pipeline.load = function (serialised) {\n var pipeline = new lunr.Pipeline\n\n serialised.forEach(function (fnName) {\n var fn = lunr.Pipeline.registeredFunctions[fnName]\n\n if (fn) {\n pipeline.add(fn)\n } else {\n throw new Error('Cannot load unregistered function: ' + fnName)\n }\n })\n\n return pipeline\n}\n\n/**\n * Adds new functions to the end of the pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.\n */\nlunr.Pipeline.prototype.add = function () {\n var fns = Array.prototype.slice.call(arguments)\n\n fns.forEach(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n this._stack.push(fn)\n }, this)\n}\n\n/**\n * Adds a single function after a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.after = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n pos = pos + 1\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Adds a single function before a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.before = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Removes a function from the pipeline.\n *\n * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.\n */\nlunr.Pipeline.prototype.remove = function (fn) {\n var pos = this._stack.indexOf(fn)\n if (pos == -1) {\n return\n }\n\n this._stack.splice(pos, 1)\n}\n\n/**\n * Runs the current list of functions that make up the pipeline against the\n * passed tokens.\n *\n * @param {Array} tokens The tokens to run through the pipeline.\n * @returns {Array}\n */\nlunr.Pipeline.prototype.run = function (tokens) {\n var stackLength = this._stack.length\n\n for (var i = 0; i < stackLength; i++) {\n var fn = this._stack[i]\n var memo = []\n\n for (var j = 0; j < tokens.length; j++) {\n var result = fn(tokens[j], j, tokens)\n\n if (result === null || result === void 0 || result === '') continue\n\n if (Array.isArray(result)) {\n for (var k = 0; k < result.length; k++) {\n memo.push(result[k])\n }\n } else {\n memo.push(result)\n }\n }\n\n tokens = memo\n }\n\n return tokens\n}\n\n/**\n * Convenience method for passing a string through a pipeline and getting\n * strings out. This method takes care of wrapping the passed string in a\n * token and mapping the resulting tokens back to strings.\n *\n * @param {string} str - The string to pass through the pipeline.\n * @param {?object} metadata - Optional metadata to associate with the token\n * passed to the pipeline.\n * @returns {string[]}\n */\nlunr.Pipeline.prototype.runString = function (str, metadata) {\n var token = new lunr.Token (str, metadata)\n\n return this.run([token]).map(function (t) {\n return t.toString()\n })\n}\n\n/**\n * Resets the pipeline by removing any existing processors.\n *\n */\nlunr.Pipeline.prototype.reset = function () {\n this._stack = []\n}\n\n/**\n * Returns a representation of the pipeline ready for serialisation.\n *\n * Logs a warning if the function has not been registered.\n *\n * @returns {Array}\n */\nlunr.Pipeline.prototype.toJSON = function () {\n return this._stack.map(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n\n return fn.label\n })\n}\n/*!\n * lunr.Vector\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A vector is used to construct the vector space of documents and queries. These\n * vectors support operations to determine the similarity between two documents or\n * a document and a query.\n *\n * Normally no parameters are required for initializing a vector, but in the case of\n * loading a previously dumped vector the raw elements can be provided to the constructor.\n *\n * For performance reasons vectors are implemented with a flat array, where an elements\n * index is immediately followed by its value. E.g. [index, value, index, value]. This\n * allows the underlying array to be as sparse as possible and still offer decent\n * performance when being used for vector calculations.\n *\n * @constructor\n * @param {Number[]} [elements] - The flat list of element index and element value pairs.\n */\nlunr.Vector = function (elements) {\n this._magnitude = 0\n this.elements = elements || []\n}\n\n\n/**\n * Calculates the position within the vector to insert a given index.\n *\n * This is used internally by insert and upsert. If there are duplicate indexes then\n * the position is returned as if the value for that index were to be updated, but it\n * is the callers responsibility to check whether there is a duplicate at that index\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @returns {Number}\n */\nlunr.Vector.prototype.positionForIndex = function (index) {\n // For an empty vector the tuple can be inserted at the beginning\n if (this.elements.length == 0) {\n return 0\n }\n\n var start = 0,\n end = this.elements.length / 2,\n sliceLength = end - start,\n pivotPoint = Math.floor(sliceLength / 2),\n pivotIndex = this.elements[pivotPoint * 2]\n\n while (sliceLength > 1) {\n if (pivotIndex < index) {\n start = pivotPoint\n }\n\n if (pivotIndex > index) {\n end = pivotPoint\n }\n\n if (pivotIndex == index) {\n break\n }\n\n sliceLength = end - start\n pivotPoint = start + Math.floor(sliceLength / 2)\n pivotIndex = this.elements[pivotPoint * 2]\n }\n\n if (pivotIndex == index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex > index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex < index) {\n return (pivotPoint + 1) * 2\n }\n}\n\n/**\n * Inserts an element at an index within the vector.\n *\n * Does not allow duplicates, will throw an error if there is already an entry\n * for this index.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n */\nlunr.Vector.prototype.insert = function (insertIdx, val) {\n this.upsert(insertIdx, val, function () {\n throw \"duplicate index\"\n })\n}\n\n/**\n * Inserts or updates an existing index within the vector.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n * @param {function} fn - A function that is called for updates, the existing value and the\n * requested value are passed as arguments\n */\nlunr.Vector.prototype.upsert = function (insertIdx, val, fn) {\n this._magnitude = 0\n var position = this.positionForIndex(insertIdx)\n\n if (this.elements[position] == insertIdx) {\n this.elements[position + 1] = fn(this.elements[position + 1], val)\n } else {\n this.elements.splice(position, 0, insertIdx, val)\n }\n}\n\n/**\n * Calculates the magnitude of this vector.\n *\n * @returns {Number}\n */\nlunr.Vector.prototype.magnitude = function () {\n if (this._magnitude) return this._magnitude\n\n var sumOfSquares = 0,\n elementsLength = this.elements.length\n\n for (var i = 1; i < elementsLength; i += 2) {\n var val = this.elements[i]\n sumOfSquares += val * val\n }\n\n return this._magnitude = Math.sqrt(sumOfSquares)\n}\n\n/**\n * Calculates the dot product of this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The vector to compute the dot product with.\n * @returns {Number}\n */\nlunr.Vector.prototype.dot = function (otherVector) {\n var dotProduct = 0,\n a = this.elements, b = otherVector.elements,\n aLen = a.length, bLen = b.length,\n aVal = 0, bVal = 0,\n i = 0, j = 0\n\n while (i < aLen && j < bLen) {\n aVal = a[i], bVal = b[j]\n if (aVal < bVal) {\n i += 2\n } else if (aVal > bVal) {\n j += 2\n } else if (aVal == bVal) {\n dotProduct += a[i + 1] * b[j + 1]\n i += 2\n j += 2\n }\n }\n\n return dotProduct\n}\n\n/**\n * Calculates the similarity between this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The other vector to calculate the\n * similarity with.\n * @returns {Number}\n */\nlunr.Vector.prototype.similarity = function (otherVector) {\n return this.dot(otherVector) / this.magnitude() || 0\n}\n\n/**\n * Converts the vector to an array of the elements within the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toArray = function () {\n var output = new Array (this.elements.length / 2)\n\n for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {\n output[j] = this.elements[i]\n }\n\n return output\n}\n\n/**\n * A JSON serializable representation of the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toJSON = function () {\n return this.elements\n}\n/* eslint-disable */\n/*!\n * lunr.stemmer\n * Copyright (C) 2020 Oliver Nightingale\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n/**\n * lunr.stemmer is an english language stemmer, this is a JavaScript\n * implementation of the PorterStemmer taken from http://tartarus.org/~martin\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token - The string to stem\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n * @function\n */\nlunr.stemmer = (function(){\n var step2list = {\n \"ational\" : \"ate\",\n \"tional\" : \"tion\",\n \"enci\" : \"ence\",\n \"anci\" : \"ance\",\n \"izer\" : \"ize\",\n \"bli\" : \"ble\",\n \"alli\" : \"al\",\n \"entli\" : \"ent\",\n \"eli\" : \"e\",\n \"ousli\" : \"ous\",\n \"ization\" : \"ize\",\n \"ation\" : \"ate\",\n \"ator\" : \"ate\",\n \"alism\" : \"al\",\n \"iveness\" : \"ive\",\n \"fulness\" : \"ful\",\n \"ousness\" : \"ous\",\n \"aliti\" : \"al\",\n \"iviti\" : \"ive\",\n \"biliti\" : \"ble\",\n \"logi\" : \"log\"\n },\n\n step3list = {\n \"icate\" : \"ic\",\n \"ative\" : \"\",\n \"alize\" : \"al\",\n \"iciti\" : \"ic\",\n \"ical\" : \"ic\",\n \"ful\" : \"\",\n \"ness\" : \"\"\n },\n\n c = \"[^aeiou]\", // consonant\n v = \"[aeiouy]\", // vowel\n C = c + \"[^aeiouy]*\", // consonant sequence\n V = v + \"[aeiou]*\", // vowel sequence\n\n mgr0 = \"^(\" + C + \")?\" + V + C, // [C]VC... is m>0\n meq1 = \"^(\" + C + \")?\" + V + C + \"(\" + V + \")?$\", // [C]VC[V] is m=1\n mgr1 = \"^(\" + C + \")?\" + V + C + V + C, // [C]VCVC... is m>1\n s_v = \"^(\" + C + \")?\" + v; // vowel in stem\n\n var re_mgr0 = new RegExp(mgr0);\n var re_mgr1 = new RegExp(mgr1);\n var re_meq1 = new RegExp(meq1);\n var re_s_v = new RegExp(s_v);\n\n var re_1a = /^(.+?)(ss|i)es$/;\n var re2_1a = /^(.+?)([^s])s$/;\n var re_1b = /^(.+?)eed$/;\n var re2_1b = /^(.+?)(ed|ing)$/;\n var re_1b_2 = /.$/;\n var re2_1b_2 = /(at|bl|iz)$/;\n var re3_1b_2 = new RegExp(\"([^aeiouylsz])\\\\1$\");\n var re4_1b_2 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var re_1c = /^(.+?[^aeiou])y$/;\n var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n\n var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n\n var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n var re2_4 = /^(.+?)(s|t)(ion)$/;\n\n var re_5 = /^(.+?)e$/;\n var re_5_1 = /ll$/;\n var re3_5 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var porterStemmer = function porterStemmer(w) {\n var stem,\n suffix,\n firstch,\n re,\n re2,\n re3,\n re4;\n\n if (w.length < 3) { return w; }\n\n firstch = w.substr(0,1);\n if (firstch == \"y\") {\n w = firstch.toUpperCase() + w.substr(1);\n }\n\n // Step 1a\n re = re_1a\n re2 = re2_1a;\n\n if (re.test(w)) { w = w.replace(re,\"$1$2\"); }\n else if (re2.test(w)) { w = w.replace(re2,\"$1$2\"); }\n\n // Step 1b\n re = re_1b;\n re2 = re2_1b;\n if (re.test(w)) {\n var fp = re.exec(w);\n re = re_mgr0;\n if (re.test(fp[1])) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1];\n re2 = re_s_v;\n if (re2.test(stem)) {\n w = stem;\n re2 = re2_1b_2;\n re3 = re3_1b_2;\n re4 = re4_1b_2;\n if (re2.test(w)) { w = w + \"e\"; }\n else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,\"\"); }\n else if (re4.test(w)) { w = w + \"e\"; }\n }\n }\n\n // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)\n re = re_1c;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n w = stem + \"i\";\n }\n\n // Step 2\n re = re_2;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step2list[suffix];\n }\n }\n\n // Step 3\n re = re_3;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step3list[suffix];\n }\n }\n\n // Step 4\n re = re_4;\n re2 = re2_4;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n if (re.test(stem)) {\n w = stem;\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1] + fp[2];\n re2 = re_mgr1;\n if (re2.test(stem)) {\n w = stem;\n }\n }\n\n // Step 5\n re = re_5;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n re2 = re_meq1;\n re3 = re3_5;\n if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {\n w = stem;\n }\n }\n\n re = re_5_1;\n re2 = re_mgr1;\n if (re.test(w) && re2.test(w)) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n\n // and turn initial Y back to y\n\n if (firstch == \"y\") {\n w = firstch.toLowerCase() + w.substr(1);\n }\n\n return w;\n };\n\n return function (token) {\n return token.update(porterStemmer);\n }\n})();\n\nlunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')\n/*!\n * lunr.stopWordFilter\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.generateStopWordFilter builds a stopWordFilter function from the provided\n * list of stop words.\n *\n * The built in lunr.stopWordFilter is built using this generator and can be used\n * to generate custom stopWordFilters for applications or non English languages.\n *\n * @function\n * @param {Array} token The token to pass through the filter\n * @returns {lunr.PipelineFunction}\n * @see lunr.Pipeline\n * @see lunr.stopWordFilter\n */\nlunr.generateStopWordFilter = function (stopWords) {\n var words = stopWords.reduce(function (memo, stopWord) {\n memo[stopWord] = stopWord\n return memo\n }, {})\n\n return function (token) {\n if (token && words[token.toString()] !== token.toString()) return token\n }\n}\n\n/**\n * lunr.stopWordFilter is an English language stop word list filter, any words\n * contained in the list will not be passed through the filter.\n *\n * This is intended to be used in the Pipeline. If the token does not pass the\n * filter then undefined will be returned.\n *\n * @function\n * @implements {lunr.PipelineFunction}\n * @params {lunr.Token} token - A token to check for being a stop word.\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n */\nlunr.stopWordFilter = lunr.generateStopWordFilter([\n 'a',\n 'able',\n 'about',\n 'across',\n 'after',\n 'all',\n 'almost',\n 'also',\n 'am',\n 'among',\n 'an',\n 'and',\n 'any',\n 'are',\n 'as',\n 'at',\n 'be',\n 'because',\n 'been',\n 'but',\n 'by',\n 'can',\n 'cannot',\n 'could',\n 'dear',\n 'did',\n 'do',\n 'does',\n 'either',\n 'else',\n 'ever',\n 'every',\n 'for',\n 'from',\n 'get',\n 'got',\n 'had',\n 'has',\n 'have',\n 'he',\n 'her',\n 'hers',\n 'him',\n 'his',\n 'how',\n 'however',\n 'i',\n 'if',\n 'in',\n 'into',\n 'is',\n 'it',\n 'its',\n 'just',\n 'least',\n 'let',\n 'like',\n 'likely',\n 'may',\n 'me',\n 'might',\n 'most',\n 'must',\n 'my',\n 'neither',\n 'no',\n 'nor',\n 'not',\n 'of',\n 'off',\n 'often',\n 'on',\n 'only',\n 'or',\n 'other',\n 'our',\n 'own',\n 'rather',\n 'said',\n 'say',\n 'says',\n 'she',\n 'should',\n 'since',\n 'so',\n 'some',\n 'than',\n 'that',\n 'the',\n 'their',\n 'them',\n 'then',\n 'there',\n 'these',\n 'they',\n 'this',\n 'tis',\n 'to',\n 'too',\n 'twas',\n 'us',\n 'wants',\n 'was',\n 'we',\n 'were',\n 'what',\n 'when',\n 'where',\n 'which',\n 'while',\n 'who',\n 'whom',\n 'why',\n 'will',\n 'with',\n 'would',\n 'yet',\n 'you',\n 'your'\n])\n\nlunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')\n/*!\n * lunr.trimmer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.trimmer is a pipeline function for trimming non word\n * characters from the beginning and end of tokens before they\n * enter the index.\n *\n * This implementation may not work correctly for non latin\n * characters and should either be removed or adapted for use\n * with languages with non-latin characters.\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token The token to pass through the filter\n * @returns {lunr.Token}\n * @see lunr.Pipeline\n */\nlunr.trimmer = function (token) {\n return token.update(function (s) {\n return s.replace(/^\\W+/, '').replace(/\\W+$/, '')\n })\n}\n\nlunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')\n/*!\n * lunr.TokenSet\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A token set is used to store the unique list of all tokens\n * within an index. Token sets are also used to represent an\n * incoming query to the index, this query token set and index\n * token set are then intersected to find which tokens to look\n * up in the inverted index.\n *\n * A token set can hold multiple tokens, as in the case of the\n * index token set, or it can hold a single token as in the\n * case of a simple query token set.\n *\n * Additionally token sets are used to perform wildcard matching.\n * Leading, contained and trailing wildcards are supported, and\n * from this edit distance matching can also be provided.\n *\n * Token sets are implemented as a minimal finite state automata,\n * where both common prefixes and suffixes are shared between tokens.\n * This helps to reduce the space used for storing the token set.\n *\n * @constructor\n */\nlunr.TokenSet = function () {\n this.final = false\n this.edges = {}\n this.id = lunr.TokenSet._nextId\n lunr.TokenSet._nextId += 1\n}\n\n/**\n * Keeps track of the next, auto increment, identifier to assign\n * to a new tokenSet.\n *\n * TokenSets require a unique identifier to be correctly minimised.\n *\n * @private\n */\nlunr.TokenSet._nextId = 1\n\n/**\n * Creates a TokenSet instance from the given sorted array of words.\n *\n * @param {String[]} arr - A sorted array of strings to create the set from.\n * @returns {lunr.TokenSet}\n * @throws Will throw an error if the input array is not sorted.\n */\nlunr.TokenSet.fromArray = function (arr) {\n var builder = new lunr.TokenSet.Builder\n\n for (var i = 0, len = arr.length; i < len; i++) {\n builder.insert(arr[i])\n }\n\n builder.finish()\n return builder.root\n}\n\n/**\n * Creates a token set from a query clause.\n *\n * @private\n * @param {Object} clause - A single clause from lunr.Query.\n * @param {string} clause.term - The query clause term.\n * @param {number} [clause.editDistance] - The optional edit distance for the term.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromClause = function (clause) {\n if ('editDistance' in clause) {\n return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance)\n } else {\n return lunr.TokenSet.fromString(clause.term)\n }\n}\n\n/**\n * Creates a token set representing a single string with a specified\n * edit distance.\n *\n * Insertions, deletions, substitutions and transpositions are each\n * treated as an edit distance of 1.\n *\n * Increasing the allowed edit distance will have a dramatic impact\n * on the performance of both creating and intersecting these TokenSets.\n * It is advised to keep the edit distance less than 3.\n *\n * @param {string} str - The string to create the token set from.\n * @param {number} editDistance - The allowed edit distance to match.\n * @returns {lunr.Vector}\n */\nlunr.TokenSet.fromFuzzyString = function (str, editDistance) {\n var root = new lunr.TokenSet\n\n var stack = [{\n node: root,\n editsRemaining: editDistance,\n str: str\n }]\n\n while (stack.length) {\n var frame = stack.pop()\n\n // no edit\n if (frame.str.length > 0) {\n var char = frame.str.charAt(0),\n noEditNode\n\n if (char in frame.node.edges) {\n noEditNode = frame.node.edges[char]\n } else {\n noEditNode = new lunr.TokenSet\n frame.node.edges[char] = noEditNode\n }\n\n if (frame.str.length == 1) {\n noEditNode.final = true\n }\n\n stack.push({\n node: noEditNode,\n editsRemaining: frame.editsRemaining,\n str: frame.str.slice(1)\n })\n }\n\n if (frame.editsRemaining == 0) {\n continue\n }\n\n // insertion\n if (\"*\" in frame.node.edges) {\n var insertionNode = frame.node.edges[\"*\"]\n } else {\n var insertionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = insertionNode\n }\n\n if (frame.str.length == 0) {\n insertionNode.final = true\n }\n\n stack.push({\n node: insertionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str\n })\n\n // deletion\n // can only do a deletion if we have enough edits remaining\n // and if there are characters left to delete in the string\n if (frame.str.length > 1) {\n stack.push({\n node: frame.node,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // deletion\n // just removing the last character from the str\n if (frame.str.length == 1) {\n frame.node.final = true\n }\n\n // substitution\n // can only do a substitution if we have enough edits remaining\n // and if there are characters left to substitute\n if (frame.str.length >= 1) {\n if (\"*\" in frame.node.edges) {\n var substitutionNode = frame.node.edges[\"*\"]\n } else {\n var substitutionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = substitutionNode\n }\n\n if (frame.str.length == 1) {\n substitutionNode.final = true\n }\n\n stack.push({\n node: substitutionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // transposition\n // can only do a transposition if there are edits remaining\n // and there are enough characters to transpose\n if (frame.str.length > 1) {\n var charA = frame.str.charAt(0),\n charB = frame.str.charAt(1),\n transposeNode\n\n if (charB in frame.node.edges) {\n transposeNode = frame.node.edges[charB]\n } else {\n transposeNode = new lunr.TokenSet\n frame.node.edges[charB] = transposeNode\n }\n\n if (frame.str.length == 1) {\n transposeNode.final = true\n }\n\n stack.push({\n node: transposeNode,\n editsRemaining: frame.editsRemaining - 1,\n str: charA + frame.str.slice(2)\n })\n }\n }\n\n return root\n}\n\n/**\n * Creates a TokenSet from a string.\n *\n * The string may contain one or more wildcard characters (*)\n * that will allow wildcard matching when intersecting with\n * another TokenSet.\n *\n * @param {string} str - The string to create a TokenSet from.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromString = function (str) {\n var node = new lunr.TokenSet,\n root = node\n\n /*\n * Iterates through all characters within the passed string\n * appending a node for each character.\n *\n * When a wildcard character is found then a self\n * referencing edge is introduced to continually match\n * any number of any characters.\n */\n for (var i = 0, len = str.length; i < len; i++) {\n var char = str[i],\n final = (i == len - 1)\n\n if (char == \"*\") {\n node.edges[char] = node\n node.final = final\n\n } else {\n var next = new lunr.TokenSet\n next.final = final\n\n node.edges[char] = next\n node = next\n }\n }\n\n return root\n}\n\n/**\n * Converts this TokenSet into an array of strings\n * contained within the TokenSet.\n *\n * This is not intended to be used on a TokenSet that\n * contains wildcards, in these cases the results are\n * undefined and are likely to cause an infinite loop.\n *\n * @returns {string[]}\n */\nlunr.TokenSet.prototype.toArray = function () {\n var words = []\n\n var stack = [{\n prefix: \"\",\n node: this\n }]\n\n while (stack.length) {\n var frame = stack.pop(),\n edges = Object.keys(frame.node.edges),\n len = edges.length\n\n if (frame.node.final) {\n /* In Safari, at this point the prefix is sometimes corrupted, see:\n * https://github.com/olivernn/lunr.js/issues/279 Calling any\n * String.prototype method forces Safari to \"cast\" this string to what\n * it's supposed to be, fixing the bug. */\n frame.prefix.charAt(0)\n words.push(frame.prefix)\n }\n\n for (var i = 0; i < len; i++) {\n var edge = edges[i]\n\n stack.push({\n prefix: frame.prefix.concat(edge),\n node: frame.node.edges[edge]\n })\n }\n }\n\n return words\n}\n\n/**\n * Generates a string representation of a TokenSet.\n *\n * This is intended to allow TokenSets to be used as keys\n * in objects, largely to aid the construction and minimisation\n * of a TokenSet. As such it is not designed to be a human\n * friendly representation of the TokenSet.\n *\n * @returns {string}\n */\nlunr.TokenSet.prototype.toString = function () {\n // NOTE: Using Object.keys here as this.edges is very likely\n // to enter 'hash-mode' with many keys being added\n //\n // avoiding a for-in loop here as it leads to the function\n // being de-optimised (at least in V8). From some simple\n // benchmarks the performance is comparable, but allowing\n // V8 to optimize may mean easy performance wins in the future.\n\n if (this._str) {\n return this._str\n }\n\n var str = this.final ? '1' : '0',\n labels = Object.keys(this.edges).sort(),\n len = labels.length\n\n for (var i = 0; i < len; i++) {\n var label = labels[i],\n node = this.edges[label]\n\n str = str + label + node.id\n }\n\n return str\n}\n\n/**\n * Returns a new TokenSet that is the intersection of\n * this TokenSet and the passed TokenSet.\n *\n * This intersection will take into account any wildcards\n * contained within the TokenSet.\n *\n * @param {lunr.TokenSet} b - An other TokenSet to intersect with.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.prototype.intersect = function (b) {\n var output = new lunr.TokenSet,\n frame = undefined\n\n var stack = [{\n qNode: b,\n output: output,\n node: this\n }]\n\n while (stack.length) {\n frame = stack.pop()\n\n // NOTE: As with the #toString method, we are using\n // Object.keys and a for loop instead of a for-in loop\n // as both of these objects enter 'hash' mode, causing\n // the function to be de-optimised in V8\n var qEdges = Object.keys(frame.qNode.edges),\n qLen = qEdges.length,\n nEdges = Object.keys(frame.node.edges),\n nLen = nEdges.length\n\n for (var q = 0; q < qLen; q++) {\n var qEdge = qEdges[q]\n\n for (var n = 0; n < nLen; n++) {\n var nEdge = nEdges[n]\n\n if (nEdge == qEdge || qEdge == '*') {\n var node = frame.node.edges[nEdge],\n qNode = frame.qNode.edges[qEdge],\n final = node.final && qNode.final,\n next = undefined\n\n if (nEdge in frame.output.edges) {\n // an edge already exists for this character\n // no need to create a new node, just set the finality\n // bit unless this node is already final\n next = frame.output.edges[nEdge]\n next.final = next.final || final\n\n } else {\n // no edge exists yet, must create one\n // set the finality bit and insert it\n // into the output\n next = new lunr.TokenSet\n next.final = final\n frame.output.edges[nEdge] = next\n }\n\n stack.push({\n qNode: qNode,\n output: next,\n node: node\n })\n }\n }\n }\n }\n\n return output\n}\nlunr.TokenSet.Builder = function () {\n this.previousWord = \"\"\n this.root = new lunr.TokenSet\n this.uncheckedNodes = []\n this.minimizedNodes = {}\n}\n\nlunr.TokenSet.Builder.prototype.insert = function (word) {\n var node,\n commonPrefix = 0\n\n if (word < this.previousWord) {\n throw new Error (\"Out of order word insertion\")\n }\n\n for (var i = 0; i < word.length && i < this.previousWord.length; i++) {\n if (word[i] != this.previousWord[i]) break\n commonPrefix++\n }\n\n this.minimize(commonPrefix)\n\n if (this.uncheckedNodes.length == 0) {\n node = this.root\n } else {\n node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child\n }\n\n for (var i = commonPrefix; i < word.length; i++) {\n var nextNode = new lunr.TokenSet,\n char = word[i]\n\n node.edges[char] = nextNode\n\n this.uncheckedNodes.push({\n parent: node,\n char: char,\n child: nextNode\n })\n\n node = nextNode\n }\n\n node.final = true\n this.previousWord = word\n}\n\nlunr.TokenSet.Builder.prototype.finish = function () {\n this.minimize(0)\n}\n\nlunr.TokenSet.Builder.prototype.minimize = function (downTo) {\n for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {\n var node = this.uncheckedNodes[i],\n childKey = node.child.toString()\n\n if (childKey in this.minimizedNodes) {\n node.parent.edges[node.char] = this.minimizedNodes[childKey]\n } else {\n // Cache the key for this node since\n // we know it can't change anymore\n node.child._str = childKey\n\n this.minimizedNodes[childKey] = node.child\n }\n\n this.uncheckedNodes.pop()\n }\n}\n/*!\n * lunr.Index\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * An index contains the built index of all documents and provides a query interface\n * to the index.\n *\n * Usually instances of lunr.Index will not be created using this constructor, instead\n * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be\n * used to load previously built and serialized indexes.\n *\n * @constructor\n * @param {Object} attrs - The attributes of the built search index.\n * @param {Object} attrs.invertedIndex - An index of term/field to document reference.\n * @param {Object} attrs.fieldVectors - Field vectors\n * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.\n * @param {string[]} attrs.fields - The names of indexed document fields.\n * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.\n */\nlunr.Index = function (attrs) {\n this.invertedIndex = attrs.invertedIndex\n this.fieldVectors = attrs.fieldVectors\n this.tokenSet = attrs.tokenSet\n this.fields = attrs.fields\n this.pipeline = attrs.pipeline\n}\n\n/**\n * A result contains details of a document matching a search query.\n * @typedef {Object} lunr.Index~Result\n * @property {string} ref - The reference of the document this result represents.\n * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.\n * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.\n */\n\n/**\n * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple\n * query language which itself is parsed into an instance of lunr.Query.\n *\n * For programmatically building queries it is advised to directly use lunr.Query, the query language\n * is best used for human entered text rather than program generated text.\n *\n * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported\n * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'\n * or 'world', though those that contain both will rank higher in the results.\n *\n * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can\n * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding\n * wildcards will increase the number of documents that will be found but can also have a negative\n * impact on query performance, especially with wildcards at the beginning of a term.\n *\n * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term\n * hello in the title field will match this query. Using a field not present in the index will lead\n * to an error being thrown.\n *\n * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term\n * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported\n * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.\n * Avoid large values for edit distance to improve query performance.\n *\n * Each term also supports a presence modifier. By default a term's presence in document is optional, however\n * this can be changed to either required or prohibited. For a term's presence to be required in a document the\n * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and\n * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not\n * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.\n *\n * To escape special characters the backslash character '\\' can be used, this allows searches to include\n * characters that would normally be considered modifiers, e.g. `foo\\~2` will search for a term \"foo~2\" instead\n * of attempting to apply a boost of 2 to the search term \"foo\".\n *\n * @typedef {string} lunr.Index~QueryString\n * @example Simple single term query\n * hello\n * @example Multiple term query\n * hello world\n * @example term scoped to a field\n * title:hello\n * @example term with a boost of 10\n * hello^10\n * @example term with an edit distance of 2\n * hello~2\n * @example terms with presence modifiers\n * -foo +bar baz\n */\n\n/**\n * Performs a search against the index using lunr query syntax.\n *\n * Results will be returned sorted by their score, the most relevant results\n * will be returned first. For details on how the score is calculated, please see\n * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.\n *\n * For more programmatic querying use lunr.Index#query.\n *\n * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.\n * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.search = function (queryString) {\n return this.query(function (query) {\n var parser = new lunr.QueryParser(queryString, query)\n parser.parse()\n })\n}\n\n/**\n * A query builder callback provides a query object to be used to express\n * the query to perform on the index.\n *\n * @callback lunr.Index~queryBuilder\n * @param {lunr.Query} query - The query object to build up.\n * @this lunr.Query\n */\n\n/**\n * Performs a query against the index using the yielded lunr.Query object.\n *\n * If performing programmatic queries against the index, this method is preferred\n * over lunr.Index#search so as to avoid the additional query parsing overhead.\n *\n * A query object is yielded to the supplied function which should be used to\n * express the query to be run against the index.\n *\n * Note that although this function takes a callback parameter it is _not_ an\n * asynchronous operation, the callback is just yielded a query object to be\n * customized.\n *\n * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.query = function (fn) {\n // for each query clause\n // * process terms\n // * expand terms from token set\n // * find matching documents and metadata\n // * get document vectors\n // * score documents\n\n var query = new lunr.Query(this.fields),\n matchingFields = Object.create(null),\n queryVectors = Object.create(null),\n termFieldCache = Object.create(null),\n requiredMatches = Object.create(null),\n prohibitedMatches = Object.create(null)\n\n /*\n * To support field level boosts a query vector is created per\n * field. An empty vector is eagerly created to support negated\n * queries.\n */\n for (var i = 0; i < this.fields.length; i++) {\n queryVectors[this.fields[i]] = new lunr.Vector\n }\n\n fn.call(query, query)\n\n for (var i = 0; i < query.clauses.length; i++) {\n /*\n * Unless the pipeline has been disabled for this term, which is\n * the case for terms with wildcards, we need to pass the clause\n * term through the search pipeline. A pipeline returns an array\n * of processed terms. Pipeline functions may expand the passed\n * term, which means we may end up performing multiple index lookups\n * for a single query term.\n */\n var clause = query.clauses[i],\n terms = null,\n clauseMatches = lunr.Set.empty\n\n if (clause.usePipeline) {\n terms = this.pipeline.runString(clause.term, {\n fields: clause.fields\n })\n } else {\n terms = [clause.term]\n }\n\n for (var m = 0; m < terms.length; m++) {\n var term = terms[m]\n\n /*\n * Each term returned from the pipeline needs to use the same query\n * clause object, e.g. the same boost and or edit distance. The\n * simplest way to do this is to re-use the clause object but mutate\n * its term property.\n */\n clause.term = term\n\n /*\n * From the term in the clause we create a token set which will then\n * be used to intersect the indexes token set to get a list of terms\n * to lookup in the inverted index\n */\n var termTokenSet = lunr.TokenSet.fromClause(clause),\n expandedTerms = this.tokenSet.intersect(termTokenSet).toArray()\n\n /*\n * If a term marked as required does not exist in the tokenSet it is\n * impossible for the search to return any matches. We set all the field\n * scoped required matches set to empty and stop examining any further\n * clauses.\n */\n if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = lunr.Set.empty\n }\n\n break\n }\n\n for (var j = 0; j < expandedTerms.length; j++) {\n /*\n * For each term get the posting and termIndex, this is required for\n * building the query vector.\n */\n var expandedTerm = expandedTerms[j],\n posting = this.invertedIndex[expandedTerm],\n termIndex = posting._index\n\n for (var k = 0; k < clause.fields.length; k++) {\n /*\n * For each field that this query term is scoped by (by default\n * all fields are in scope) we need to get all the document refs\n * that have this term in that field.\n *\n * The posting is the entry in the invertedIndex for the matching\n * term from above.\n */\n var field = clause.fields[k],\n fieldPosting = posting[field],\n matchingDocumentRefs = Object.keys(fieldPosting),\n termField = expandedTerm + \"/\" + field,\n matchingDocumentsSet = new lunr.Set(matchingDocumentRefs)\n\n /*\n * if the presence of this term is required ensure that the matching\n * documents are added to the set of required matches for this clause.\n *\n */\n if (clause.presence == lunr.Query.presence.REQUIRED) {\n clauseMatches = clauseMatches.union(matchingDocumentsSet)\n\n if (requiredMatches[field] === undefined) {\n requiredMatches[field] = lunr.Set.complete\n }\n }\n\n /*\n * if the presence of this term is prohibited ensure that the matching\n * documents are added to the set of prohibited matches for this field,\n * creating that set if it does not yet exist.\n */\n if (clause.presence == lunr.Query.presence.PROHIBITED) {\n if (prohibitedMatches[field] === undefined) {\n prohibitedMatches[field] = lunr.Set.empty\n }\n\n prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet)\n\n /*\n * Prohibited matches should not be part of the query vector used for\n * similarity scoring and no metadata should be extracted so we continue\n * to the next field\n */\n continue\n }\n\n /*\n * The query field vector is populated using the termIndex found for\n * the term and a unit value with the appropriate boost applied.\n * Using upsert because there could already be an entry in the vector\n * for the term we are working with. In that case we just add the scores\n * together.\n */\n queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b })\n\n /**\n * If we've already seen this term, field combo then we've already collected\n * the matching documents and metadata, no need to go through all that again\n */\n if (termFieldCache[termField]) {\n continue\n }\n\n for (var l = 0; l < matchingDocumentRefs.length; l++) {\n /*\n * All metadata for this term/field/document triple\n * are then extracted and collected into an instance\n * of lunr.MatchData ready to be returned in the query\n * results\n */\n var matchingDocumentRef = matchingDocumentRefs[l],\n matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field),\n metadata = fieldPosting[matchingDocumentRef],\n fieldMatch\n\n if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {\n matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata)\n } else {\n fieldMatch.add(expandedTerm, field, metadata)\n }\n\n }\n\n termFieldCache[termField] = true\n }\n }\n }\n\n /**\n * If the presence was required we need to update the requiredMatches field sets.\n * We do this after all fields for the term have collected their matches because\n * the clause terms presence is required in _any_ of the fields not _all_ of the\n * fields.\n */\n if (clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = requiredMatches[field].intersect(clauseMatches)\n }\n }\n }\n\n /**\n * Need to combine the field scoped required and prohibited\n * matching documents into a global set of required and prohibited\n * matches\n */\n var allRequiredMatches = lunr.Set.complete,\n allProhibitedMatches = lunr.Set.empty\n\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i]\n\n if (requiredMatches[field]) {\n allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field])\n }\n\n if (prohibitedMatches[field]) {\n allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field])\n }\n }\n\n var matchingFieldRefs = Object.keys(matchingFields),\n results = [],\n matches = Object.create(null)\n\n /*\n * If the query is negated (contains only prohibited terms)\n * we need to get _all_ fieldRefs currently existing in the\n * index. This is only done when we know that the query is\n * entirely prohibited terms to avoid any cost of getting all\n * fieldRefs unnecessarily.\n *\n * Additionally, blank MatchData must be created to correctly\n * populate the results.\n */\n if (query.isNegated()) {\n matchingFieldRefs = Object.keys(this.fieldVectors)\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n var matchingFieldRef = matchingFieldRefs[i]\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRef)\n matchingFields[matchingFieldRef] = new lunr.MatchData\n }\n }\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n /*\n * Currently we have document fields that match the query, but we\n * need to return documents. The matchData and scores are combined\n * from multiple fields belonging to the same document.\n *\n * Scores are calculated by field, using the query vectors created\n * above, and combined into a final document score using addition.\n */\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),\n docRef = fieldRef.docRef\n\n if (!allRequiredMatches.contains(docRef)) {\n continue\n }\n\n if (allProhibitedMatches.contains(docRef)) {\n continue\n }\n\n var fieldVector = this.fieldVectors[fieldRef],\n score = queryVectors[fieldRef.fieldName].similarity(fieldVector),\n docMatch\n\n if ((docMatch = matches[docRef]) !== undefined) {\n docMatch.score += score\n docMatch.matchData.combine(matchingFields[fieldRef])\n } else {\n var match = {\n ref: docRef,\n score: score,\n matchData: matchingFields[fieldRef]\n }\n matches[docRef] = match\n results.push(match)\n }\n }\n\n /*\n * Sort the results objects by score, highest first.\n */\n return results.sort(function (a, b) {\n return b.score - a.score\n })\n}\n\n/**\n * Prepares the index for JSON serialization.\n *\n * The schema for this JSON blob will be described in a\n * separate JSON schema file.\n *\n * @returns {Object}\n */\nlunr.Index.prototype.toJSON = function () {\n var invertedIndex = Object.keys(this.invertedIndex)\n .sort()\n .map(function (term) {\n return [term, this.invertedIndex[term]]\n }, this)\n\n var fieldVectors = Object.keys(this.fieldVectors)\n .map(function (ref) {\n return [ref, this.fieldVectors[ref].toJSON()]\n }, this)\n\n return {\n version: lunr.version,\n fields: this.fields,\n fieldVectors: fieldVectors,\n invertedIndex: invertedIndex,\n pipeline: this.pipeline.toJSON()\n }\n}\n\n/**\n * Loads a previously serialized lunr.Index\n *\n * @param {Object} serializedIndex - A previously serialized lunr.Index\n * @returns {lunr.Index}\n */\nlunr.Index.load = function (serializedIndex) {\n var attrs = {},\n fieldVectors = {},\n serializedVectors = serializedIndex.fieldVectors,\n invertedIndex = Object.create(null),\n serializedInvertedIndex = serializedIndex.invertedIndex,\n tokenSetBuilder = new lunr.TokenSet.Builder,\n pipeline = lunr.Pipeline.load(serializedIndex.pipeline)\n\n if (serializedIndex.version != lunr.version) {\n lunr.utils.warn(\"Version mismatch when loading serialised index. Current version of lunr '\" + lunr.version + \"' does not match serialized index '\" + serializedIndex.version + \"'\")\n }\n\n for (var i = 0; i < serializedVectors.length; i++) {\n var tuple = serializedVectors[i],\n ref = tuple[0],\n elements = tuple[1]\n\n fieldVectors[ref] = new lunr.Vector(elements)\n }\n\n for (var i = 0; i < serializedInvertedIndex.length; i++) {\n var tuple = serializedInvertedIndex[i],\n term = tuple[0],\n posting = tuple[1]\n\n tokenSetBuilder.insert(term)\n invertedIndex[term] = posting\n }\n\n tokenSetBuilder.finish()\n\n attrs.fields = serializedIndex.fields\n\n attrs.fieldVectors = fieldVectors\n attrs.invertedIndex = invertedIndex\n attrs.tokenSet = tokenSetBuilder.root\n attrs.pipeline = pipeline\n\n return new lunr.Index(attrs)\n}\n/*!\n * lunr.Builder\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.Builder performs indexing on a set of documents and\n * returns instances of lunr.Index ready for querying.\n *\n * All configuration of the index is done via the builder, the\n * fields to index, the document reference, the text processing\n * pipeline and document scoring parameters are all set on the\n * builder before indexing.\n *\n * @constructor\n * @property {string} _ref - Internal reference to the document reference field.\n * @property {string[]} _fields - Internal reference to the document fields to index.\n * @property {object} invertedIndex - The inverted index maps terms to document fields.\n * @property {object} documentTermFrequencies - Keeps track of document term frequencies.\n * @property {object} documentLengths - Keeps track of the length of documents added to the index.\n * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.\n * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.\n * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.\n * @property {number} documentCount - Keeps track of the total number of documents indexed.\n * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.\n * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.\n * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.\n * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.\n */\nlunr.Builder = function () {\n this._ref = \"id\"\n this._fields = Object.create(null)\n this._documents = Object.create(null)\n this.invertedIndex = Object.create(null)\n this.fieldTermFrequencies = {}\n this.fieldLengths = {}\n this.tokenizer = lunr.tokenizer\n this.pipeline = new lunr.Pipeline\n this.searchPipeline = new lunr.Pipeline\n this.documentCount = 0\n this._b = 0.75\n this._k1 = 1.2\n this.termIndex = 0\n this.metadataWhitelist = []\n}\n\n/**\n * Sets the document field used as the document reference. Every document must have this field.\n * The type of this field in the document should be a string, if it is not a string it will be\n * coerced into a string by calling toString.\n *\n * The default ref is 'id'.\n *\n * The ref should _not_ be changed during indexing, it should be set before any documents are\n * added to the index. Changing it during indexing can lead to inconsistent results.\n *\n * @param {string} ref - The name of the reference field in the document.\n */\nlunr.Builder.prototype.ref = function (ref) {\n this._ref = ref\n}\n\n/**\n * A function that is used to extract a field from a document.\n *\n * Lunr expects a field to be at the top level of a document, if however the field\n * is deeply nested within a document an extractor function can be used to extract\n * the right field for indexing.\n *\n * @callback fieldExtractor\n * @param {object} doc - The document being added to the index.\n * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.\n * @example Extracting a nested field\n * function (doc) { return doc.nested.field }\n */\n\n/**\n * Adds a field to the list of document fields that will be indexed. Every document being\n * indexed should have this field. Null values for this field in indexed documents will\n * not cause errors but will limit the chance of that document being retrieved by searches.\n *\n * All fields should be added before adding documents to the index. Adding fields after\n * a document has been indexed will have no effect on already indexed documents.\n *\n * Fields can be boosted at build time. This allows terms within that field to have more\n * importance when ranking search results. Use a field boost to specify that matches within\n * one field are more important than other fields.\n *\n * @param {string} fieldName - The name of a field to index in all documents.\n * @param {object} attributes - Optional attributes associated with this field.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.\n * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.\n * @throws {RangeError} fieldName cannot contain unsupported characters '/'\n */\nlunr.Builder.prototype.field = function (fieldName, attributes) {\n if (/\\//.test(fieldName)) {\n throw new RangeError (\"Field '\" + fieldName + \"' contains illegal character '/'\")\n }\n\n this._fields[fieldName] = attributes || {}\n}\n\n/**\n * A parameter to tune the amount of field length normalisation that is applied when\n * calculating relevance scores. A value of 0 will completely disable any normalisation\n * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b\n * will be clamped to the range 0 - 1.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.b = function (number) {\n if (number < 0) {\n this._b = 0\n } else if (number > 1) {\n this._b = 1\n } else {\n this._b = number\n }\n}\n\n/**\n * A parameter that controls the speed at which a rise in term frequency results in term\n * frequency saturation. The default value is 1.2. Setting this to a higher value will give\n * slower saturation levels, a lower value will result in quicker saturation.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.k1 = function (number) {\n this._k1 = number\n}\n\n/**\n * Adds a document to the index.\n *\n * Before adding fields to the index the index should have been fully setup, with the document\n * ref and all fields to index already having been specified.\n *\n * The document must have a field name as specified by the ref (by default this is 'id') and\n * it should have all fields defined for indexing, though null or undefined values will not\n * cause errors.\n *\n * Entire documents can be boosted at build time. Applying a boost to a document indicates that\n * this document should rank higher in search results than other documents.\n *\n * @param {object} doc - The document to add to the index.\n * @param {object} attributes - Optional attributes associated with this document.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.\n */\nlunr.Builder.prototype.add = function (doc, attributes) {\n var docRef = doc[this._ref],\n fields = Object.keys(this._fields)\n\n this._documents[docRef] = attributes || {}\n this.documentCount += 1\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i],\n extractor = this._fields[fieldName].extractor,\n field = extractor ? extractor(doc) : doc[fieldName],\n tokens = this.tokenizer(field, {\n fields: [fieldName]\n }),\n terms = this.pipeline.run(tokens),\n fieldRef = new lunr.FieldRef (docRef, fieldName),\n fieldTerms = Object.create(null)\n\n this.fieldTermFrequencies[fieldRef] = fieldTerms\n this.fieldLengths[fieldRef] = 0\n\n // store the length of this field for this document\n this.fieldLengths[fieldRef] += terms.length\n\n // calculate term frequencies for this field\n for (var j = 0; j < terms.length; j++) {\n var term = terms[j]\n\n if (fieldTerms[term] == undefined) {\n fieldTerms[term] = 0\n }\n\n fieldTerms[term] += 1\n\n // add to inverted index\n // create an initial posting if one doesn't exist\n if (this.invertedIndex[term] == undefined) {\n var posting = Object.create(null)\n posting[\"_index\"] = this.termIndex\n this.termIndex += 1\n\n for (var k = 0; k < fields.length; k++) {\n posting[fields[k]] = Object.create(null)\n }\n\n this.invertedIndex[term] = posting\n }\n\n // add an entry for this term/fieldName/docRef to the invertedIndex\n if (this.invertedIndex[term][fieldName][docRef] == undefined) {\n this.invertedIndex[term][fieldName][docRef] = Object.create(null)\n }\n\n // store all whitelisted metadata about this token in the\n // inverted index\n for (var l = 0; l < this.metadataWhitelist.length; l++) {\n var metadataKey = this.metadataWhitelist[l],\n metadata = term.metadata[metadataKey]\n\n if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {\n this.invertedIndex[term][fieldName][docRef][metadataKey] = []\n }\n\n this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata)\n }\n }\n\n }\n}\n\n/**\n * Calculates the average document length for this index\n *\n * @private\n */\nlunr.Builder.prototype.calculateAverageFieldLengths = function () {\n\n var fieldRefs = Object.keys(this.fieldLengths),\n numberOfFields = fieldRefs.length,\n accumulator = {},\n documentsWithField = {}\n\n for (var i = 0; i < numberOfFields; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n field = fieldRef.fieldName\n\n documentsWithField[field] || (documentsWithField[field] = 0)\n documentsWithField[field] += 1\n\n accumulator[field] || (accumulator[field] = 0)\n accumulator[field] += this.fieldLengths[fieldRef]\n }\n\n var fields = Object.keys(this._fields)\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i]\n accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName]\n }\n\n this.averageFieldLength = accumulator\n}\n\n/**\n * Builds a vector space model of every document using lunr.Vector\n *\n * @private\n */\nlunr.Builder.prototype.createFieldVectors = function () {\n var fieldVectors = {},\n fieldRefs = Object.keys(this.fieldTermFrequencies),\n fieldRefsLength = fieldRefs.length,\n termIdfCache = Object.create(null)\n\n for (var i = 0; i < fieldRefsLength; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n fieldName = fieldRef.fieldName,\n fieldLength = this.fieldLengths[fieldRef],\n fieldVector = new lunr.Vector,\n termFrequencies = this.fieldTermFrequencies[fieldRef],\n terms = Object.keys(termFrequencies),\n termsLength = terms.length\n\n\n var fieldBoost = this._fields[fieldName].boost || 1,\n docBoost = this._documents[fieldRef.docRef].boost || 1\n\n for (var j = 0; j < termsLength; j++) {\n var term = terms[j],\n tf = termFrequencies[term],\n termIndex = this.invertedIndex[term]._index,\n idf, score, scoreWithPrecision\n\n if (termIdfCache[term] === undefined) {\n idf = lunr.idf(this.invertedIndex[term], this.documentCount)\n termIdfCache[term] = idf\n } else {\n idf = termIdfCache[term]\n }\n\n score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf)\n score *= fieldBoost\n score *= docBoost\n scoreWithPrecision = Math.round(score * 1000) / 1000\n // Converts 1.23456789 to 1.234.\n // Reducing the precision so that the vectors take up less\n // space when serialised. Doing it now so that they behave\n // the same before and after serialisation. Also, this is\n // the fastest approach to reducing a number's precision in\n // JavaScript.\n\n fieldVector.insert(termIndex, scoreWithPrecision)\n }\n\n fieldVectors[fieldRef] = fieldVector\n }\n\n this.fieldVectors = fieldVectors\n}\n\n/**\n * Creates a token set of all tokens in the index using lunr.TokenSet\n *\n * @private\n */\nlunr.Builder.prototype.createTokenSet = function () {\n this.tokenSet = lunr.TokenSet.fromArray(\n Object.keys(this.invertedIndex).sort()\n )\n}\n\n/**\n * Builds the index, creating an instance of lunr.Index.\n *\n * This completes the indexing process and should only be called\n * once all documents have been added to the index.\n *\n * @returns {lunr.Index}\n */\nlunr.Builder.prototype.build = function () {\n this.calculateAverageFieldLengths()\n this.createFieldVectors()\n this.createTokenSet()\n\n return new lunr.Index({\n invertedIndex: this.invertedIndex,\n fieldVectors: this.fieldVectors,\n tokenSet: this.tokenSet,\n fields: Object.keys(this._fields),\n pipeline: this.searchPipeline\n })\n}\n\n/**\n * Applies a plugin to the index builder.\n *\n * A plugin is a function that is called with the index builder as its context.\n * Plugins can be used to customise or extend the behaviour of the index\n * in some way. A plugin is just a function, that encapsulated the custom\n * behaviour that should be applied when building the index.\n *\n * The plugin function will be called with the index builder as its argument, additional\n * arguments can also be passed when calling use. The function will be called\n * with the index builder as its context.\n *\n * @param {Function} plugin The plugin to apply.\n */\nlunr.Builder.prototype.use = function (fn) {\n var args = Array.prototype.slice.call(arguments, 1)\n args.unshift(this)\n fn.apply(this, args)\n}\n/**\n * Contains and collects metadata about a matching document.\n * A single instance of lunr.MatchData is returned as part of every\n * lunr.Index~Result.\n *\n * @constructor\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n * @property {object} metadata - A cloned collection of metadata associated with this document.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData = function (term, field, metadata) {\n var clonedMetadata = Object.create(null),\n metadataKeys = Object.keys(metadata || {})\n\n // Cloning the metadata to prevent the original\n // being mutated during match data combination.\n // Metadata is kept in an array within the inverted\n // index so cloning the data can be done with\n // Array#slice\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n clonedMetadata[key] = metadata[key].slice()\n }\n\n this.metadata = Object.create(null)\n\n if (term !== undefined) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = clonedMetadata\n }\n}\n\n/**\n * An instance of lunr.MatchData will be created for every term that matches a\n * document. However only one instance is required in a lunr.Index~Result. This\n * method combines metadata from another instance of lunr.MatchData with this\n * objects metadata.\n *\n * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData.prototype.combine = function (otherMatchData) {\n var terms = Object.keys(otherMatchData.metadata)\n\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i],\n fields = Object.keys(otherMatchData.metadata[term])\n\n if (this.metadata[term] == undefined) {\n this.metadata[term] = Object.create(null)\n }\n\n for (var j = 0; j < fields.length; j++) {\n var field = fields[j],\n keys = Object.keys(otherMatchData.metadata[term][field])\n\n if (this.metadata[term][field] == undefined) {\n this.metadata[term][field] = Object.create(null)\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k]\n\n if (this.metadata[term][field][key] == undefined) {\n this.metadata[term][field][key] = otherMatchData.metadata[term][field][key]\n } else {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key])\n }\n\n }\n }\n }\n}\n\n/**\n * Add metadata for a term/field pair to this instance of match data.\n *\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n */\nlunr.MatchData.prototype.add = function (term, field, metadata) {\n if (!(term in this.metadata)) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = metadata\n return\n }\n\n if (!(field in this.metadata[term])) {\n this.metadata[term][field] = metadata\n return\n }\n\n var metadataKeys = Object.keys(metadata)\n\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n\n if (key in this.metadata[term][field]) {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key])\n } else {\n this.metadata[term][field][key] = metadata[key]\n }\n }\n}\n/**\n * A lunr.Query provides a programmatic way of defining queries to be performed\n * against a {@link lunr.Index}.\n *\n * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method\n * so the query object is pre-initialized with the right index fields.\n *\n * @constructor\n * @property {lunr.Query~Clause[]} clauses - An array of query clauses.\n * @property {string[]} allFields - An array of all available fields in a lunr.Index.\n */\nlunr.Query = function (allFields) {\n this.clauses = []\n this.allFields = allFields\n}\n\n/**\n * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.\n *\n * This allows wildcards to be added to the beginning and end of a term without having to manually do any string\n * concatenation.\n *\n * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.\n *\n * @constant\n * @default\n * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour\n * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists\n * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example query term with trailing wildcard\n * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })\n * @example query term with leading and trailing wildcard\n * query.term('foo', {\n * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING\n * })\n */\n\nlunr.Query.wildcard = new String (\"*\")\nlunr.Query.wildcard.NONE = 0\nlunr.Query.wildcard.LEADING = 1\nlunr.Query.wildcard.TRAILING = 2\n\n/**\n * Constants for indicating what kind of presence a term must have in matching documents.\n *\n * @constant\n * @enum {number}\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example query term with required presence\n * query.term('foo', { presence: lunr.Query.presence.REQUIRED })\n */\nlunr.Query.presence = {\n /**\n * Term's presence in a document is optional, this is the default value.\n */\n OPTIONAL: 1,\n\n /**\n * Term's presence in a document is required, documents that do not contain\n * this term will not be returned.\n */\n REQUIRED: 2,\n\n /**\n * Term's presence in a document is prohibited, documents that do contain\n * this term will not be returned.\n */\n PROHIBITED: 3\n}\n\n/**\n * A single clause in a {@link lunr.Query} contains a term and details on how to\n * match that term against a {@link lunr.Index}.\n *\n * @typedef {Object} lunr.Query~Clause\n * @property {string[]} fields - The fields in an index this clause should be matched against.\n * @property {number} [boost=1] - Any boost that should be applied when matching this clause.\n * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.\n * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.\n * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.\n * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.\n */\n\n/**\n * Adds a {@link lunr.Query~Clause} to this query.\n *\n * Unless the clause contains the fields to be matched all fields will be matched. In addition\n * a default boost of 1 is applied to the clause.\n *\n * @param {lunr.Query~Clause} clause - The clause to add to this query.\n * @see lunr.Query~Clause\n * @returns {lunr.Query}\n */\nlunr.Query.prototype.clause = function (clause) {\n if (!('fields' in clause)) {\n clause.fields = this.allFields\n }\n\n if (!('boost' in clause)) {\n clause.boost = 1\n }\n\n if (!('usePipeline' in clause)) {\n clause.usePipeline = true\n }\n\n if (!('wildcard' in clause)) {\n clause.wildcard = lunr.Query.wildcard.NONE\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) {\n clause.term = \"*\" + clause.term\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) {\n clause.term = \"\" + clause.term + \"*\"\n }\n\n if (!('presence' in clause)) {\n clause.presence = lunr.Query.presence.OPTIONAL\n }\n\n this.clauses.push(clause)\n\n return this\n}\n\n/**\n * A negated query is one in which every clause has a presence of\n * prohibited. These queries require some special processing to return\n * the expected results.\n *\n * @returns boolean\n */\nlunr.Query.prototype.isNegated = function () {\n for (var i = 0; i < this.clauses.length; i++) {\n if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}\n * to the list of clauses that make up this query.\n *\n * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion\n * to a token or token-like string should be done before calling this method.\n *\n * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an\n * array, each term in the array will share the same options.\n *\n * @param {object|object[]} term - The term(s) to add to the query.\n * @param {object} [options] - Any additional properties to add to the query clause.\n * @returns {lunr.Query}\n * @see lunr.Query#clause\n * @see lunr.Query~Clause\n * @example adding a single term to a query\n * query.term(\"foo\")\n * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard\n * query.term(\"foo\", {\n * fields: [\"title\"],\n * boost: 10,\n * wildcard: lunr.Query.wildcard.TRAILING\n * })\n * @example using lunr.tokenizer to convert a string to tokens before using them as terms\n * query.term(lunr.tokenizer(\"foo bar\"))\n */\nlunr.Query.prototype.term = function (term, options) {\n if (Array.isArray(term)) {\n term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this)\n return this\n }\n\n var clause = options || {}\n clause.term = term.toString()\n\n this.clause(clause)\n\n return this\n}\nlunr.QueryParseError = function (message, start, end) {\n this.name = \"QueryParseError\"\n this.message = message\n this.start = start\n this.end = end\n}\n\nlunr.QueryParseError.prototype = new Error\nlunr.QueryLexer = function (str) {\n this.lexemes = []\n this.str = str\n this.length = str.length\n this.pos = 0\n this.start = 0\n this.escapeCharPositions = []\n}\n\nlunr.QueryLexer.prototype.run = function () {\n var state = lunr.QueryLexer.lexText\n\n while (state) {\n state = state(this)\n }\n}\n\nlunr.QueryLexer.prototype.sliceString = function () {\n var subSlices = [],\n sliceStart = this.start,\n sliceEnd = this.pos\n\n for (var i = 0; i < this.escapeCharPositions.length; i++) {\n sliceEnd = this.escapeCharPositions[i]\n subSlices.push(this.str.slice(sliceStart, sliceEnd))\n sliceStart = sliceEnd + 1\n }\n\n subSlices.push(this.str.slice(sliceStart, this.pos))\n this.escapeCharPositions.length = 0\n\n return subSlices.join('')\n}\n\nlunr.QueryLexer.prototype.emit = function (type) {\n this.lexemes.push({\n type: type,\n str: this.sliceString(),\n start: this.start,\n end: this.pos\n })\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.escapeCharacter = function () {\n this.escapeCharPositions.push(this.pos - 1)\n this.pos += 1\n}\n\nlunr.QueryLexer.prototype.next = function () {\n if (this.pos >= this.length) {\n return lunr.QueryLexer.EOS\n }\n\n var char = this.str.charAt(this.pos)\n this.pos += 1\n return char\n}\n\nlunr.QueryLexer.prototype.width = function () {\n return this.pos - this.start\n}\n\nlunr.QueryLexer.prototype.ignore = function () {\n if (this.start == this.pos) {\n this.pos += 1\n }\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.backup = function () {\n this.pos -= 1\n}\n\nlunr.QueryLexer.prototype.acceptDigitRun = function () {\n var char, charCode\n\n do {\n char = this.next()\n charCode = char.charCodeAt(0)\n } while (charCode > 47 && charCode < 58)\n\n if (char != lunr.QueryLexer.EOS) {\n this.backup()\n }\n}\n\nlunr.QueryLexer.prototype.more = function () {\n return this.pos < this.length\n}\n\nlunr.QueryLexer.EOS = 'EOS'\nlunr.QueryLexer.FIELD = 'FIELD'\nlunr.QueryLexer.TERM = 'TERM'\nlunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE'\nlunr.QueryLexer.BOOST = 'BOOST'\nlunr.QueryLexer.PRESENCE = 'PRESENCE'\n\nlunr.QueryLexer.lexField = function (lexer) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.FIELD)\n lexer.ignore()\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexTerm = function (lexer) {\n if (lexer.width() > 1) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.TERM)\n }\n\n lexer.ignore()\n\n if (lexer.more()) {\n return lunr.QueryLexer.lexText\n }\n}\n\nlunr.QueryLexer.lexEditDistance = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.EDIT_DISTANCE)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexBoost = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.BOOST)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexEOS = function (lexer) {\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n}\n\n// This matches the separator used when tokenising fields\n// within a document. These should match otherwise it is\n// not possible to search for some tokens within a document.\n//\n// It is possible for the user to change the separator on the\n// tokenizer so it _might_ clash with any other of the special\n// characters already used within the search string, e.g. :.\n//\n// This means that it is possible to change the separator in\n// such a way that makes some words unsearchable using a search\n// string.\nlunr.QueryLexer.termSeparator = lunr.tokenizer.separator\n\nlunr.QueryLexer.lexText = function (lexer) {\n while (true) {\n var char = lexer.next()\n\n if (char == lunr.QueryLexer.EOS) {\n return lunr.QueryLexer.lexEOS\n }\n\n // Escape character is '\\'\n if (char.charCodeAt(0) == 92) {\n lexer.escapeCharacter()\n continue\n }\n\n if (char == \":\") {\n return lunr.QueryLexer.lexField\n }\n\n if (char == \"~\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexEditDistance\n }\n\n if (char == \"^\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexBoost\n }\n\n // \"+\" indicates term presence is required\n // checking for length to ensure that only\n // leading \"+\" are considered\n if (char == \"+\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n // \"-\" indicates term presence is prohibited\n // checking for length to ensure that only\n // leading \"-\" are considered\n if (char == \"-\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n if (char.match(lunr.QueryLexer.termSeparator)) {\n return lunr.QueryLexer.lexTerm\n }\n }\n}\n\nlunr.QueryParser = function (str, query) {\n this.lexer = new lunr.QueryLexer (str)\n this.query = query\n this.currentClause = {}\n this.lexemeIdx = 0\n}\n\nlunr.QueryParser.prototype.parse = function () {\n this.lexer.run()\n this.lexemes = this.lexer.lexemes\n\n var state = lunr.QueryParser.parseClause\n\n while (state) {\n state = state(this)\n }\n\n return this.query\n}\n\nlunr.QueryParser.prototype.peekLexeme = function () {\n return this.lexemes[this.lexemeIdx]\n}\n\nlunr.QueryParser.prototype.consumeLexeme = function () {\n var lexeme = this.peekLexeme()\n this.lexemeIdx += 1\n return lexeme\n}\n\nlunr.QueryParser.prototype.nextClause = function () {\n var completedClause = this.currentClause\n this.query.clause(completedClause)\n this.currentClause = {}\n}\n\nlunr.QueryParser.parseClause = function (parser) {\n var lexeme = parser.peekLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.type) {\n case lunr.QueryLexer.PRESENCE:\n return lunr.QueryParser.parsePresence\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expected either a field or a term, found \" + lexeme.type\n\n if (lexeme.str.length >= 1) {\n errorMessage += \" with value '\" + lexeme.str + \"'\"\n }\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n}\n\nlunr.QueryParser.parsePresence = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.str) {\n case \"-\":\n parser.currentClause.presence = lunr.Query.presence.PROHIBITED\n break\n case \"+\":\n parser.currentClause.presence = lunr.Query.presence.REQUIRED\n break\n default:\n var errorMessage = \"unrecognised presence operator'\" + lexeme.str + \"'\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term or field, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term or field, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseField = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n if (parser.query.allFields.indexOf(lexeme.str) == -1) {\n var possibleFields = parser.query.allFields.map(function (f) { return \"'\" + f + \"'\" }).join(', '),\n errorMessage = \"unrecognised field '\" + lexeme.str + \"', possible fields: \" + possibleFields\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.fields = [lexeme.str]\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseTerm = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n parser.currentClause.term = lexeme.str.toLowerCase()\n\n if (lexeme.str.indexOf(\"*\") != -1) {\n parser.currentClause.usePipeline = false\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseEditDistance = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var editDistance = parseInt(lexeme.str, 10)\n\n if (isNaN(editDistance)) {\n var errorMessage = \"edit distance must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.editDistance = editDistance\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseBoost = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var boost = parseInt(lexeme.str, 10)\n\n if (isNaN(boost)) {\n var errorMessage = \"boost must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.boost = boost\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\n /**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */\n ;(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory)\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like enviroments that support module.exports,\n * like Node.\n */\n module.exports = factory()\n } else {\n // Browser globals (root is window)\n root.lunr = factory()\n }\n }(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return lunr\n }))\n})();\n", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport lunr from \"lunr\"\n\nimport \"~/polyfills\"\n\nimport { Search, SearchIndexConfig } from \"../../_\"\nimport {\n SearchMessage,\n SearchMessageType\n} from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Add support for usage with `iframe-worker` polyfill\n *\n * While `importScripts` is synchronous when executed inside of a web worker,\n * it's not possible to provide a synchronous polyfilled implementation. The\n * cool thing is that awaiting a non-Promise is a noop, so extending the type\n * definition to return a `Promise` shouldn't break anything.\n *\n * @see https://bit.ly/2PjDnXi - GitHub comment\n */\ndeclare global {\n function importScripts(...urls: string[]): Promise | void\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Search index\n */\nlet index: Search\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch (= import) multi-language support through `lunr-languages`\n *\n * This function automatically imports the stemmers necessary to process the\n * languages, which are defined through the search index configuration.\n *\n * If the worker runs inside of an `iframe` (when using `iframe-worker` as\n * a shim), the base URL for the stemmers to be loaded must be determined by\n * searching for the first `script` element with a `src` attribute, which will\n * contain the contents of this script.\n *\n * @param config - Search index configuration\n *\n * @returns Promise resolving with no result\n */\nasync function setupSearchLanguages(\n config: SearchIndexConfig\n): Promise {\n let base = \"../lunr\"\n\n /* Detect `iframe-worker` and fix base URL */\n if (typeof parent !== \"undefined\" && \"IFrameWorker\" in parent) {\n const worker = document.querySelector(\"script[src]\")!\n const [path] = worker.src.split(\"/worker\")\n\n /* Prefix base with path */\n base = base.replace(\"..\", path)\n }\n\n /* Add scripts for languages */\n const scripts = []\n for (const lang of config.lang) {\n switch (lang) {\n\n /* Add segmenter for Japanese */\n case \"ja\":\n scripts.push(`${base}/tinyseg.js`)\n break\n\n /* Add segmenter for Hindi and Thai */\n case \"hi\":\n case \"th\":\n scripts.push(`${base}/wordcut.js`)\n break\n }\n\n /* Add language support */\n if (lang !== \"en\")\n scripts.push(`${base}/min/lunr.${lang}.min.js`)\n }\n\n /* Add multi-language support */\n if (config.lang.length > 1)\n scripts.push(`${base}/min/lunr.multi.min.js`)\n\n /* Load scripts synchronously */\n if (scripts.length)\n await importScripts(\n `${base}/min/lunr.stemmer.support.min.js`,\n ...scripts\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Message handler\n *\n * @param message - Source message\n *\n * @returns Target message\n */\nexport async function handler(\n message: SearchMessage\n): Promise {\n switch (message.type) {\n\n /* Search setup message */\n case SearchMessageType.SETUP:\n await setupSearchLanguages(message.data.config)\n index = new Search(message.data)\n return {\n type: SearchMessageType.READY\n }\n\n /* Search query message */\n case SearchMessageType.QUERY:\n return {\n type: SearchMessageType.RESULT,\n data: index ? index.search(message.data) : { items: [] }\n }\n\n /* All other messages */\n default:\n throw new TypeError(\"Invalid message type\")\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Worker\n * ------------------------------------------------------------------------- */\n\n/* @ts-expect-error - expose Lunr.js in global scope, or stemmers won't work */\nself.lunr = lunr\n\n/* Handle messages */\naddEventListener(\"message\", async ev => {\n postMessage(await handler(ev.data))\n})\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Polyfills\n * ------------------------------------------------------------------------- */\n\n/* Polyfill `Object.entries` */\nif (!Object.entries)\n Object.entries = function (obj: object) {\n const data: [string, string][] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push([key, obj[key]])\n\n /* Return entries */\n return data\n }\n\n/* Polyfill `Object.values` */\nif (!Object.values)\n Object.values = function (obj: object) {\n const data: string[] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push(obj[key])\n\n /* Return values */\n return data\n }\n\n/* ------------------------------------------------------------------------- */\n\n/* Polyfills for `Element` */\nif (typeof Element !== \"undefined\") {\n\n /* Polyfill `Element.scrollTo` */\n if (!Element.prototype.scrollTo)\n Element.prototype.scrollTo = function (\n x?: ScrollToOptions | number, y?: number\n ): void {\n if (typeof x === \"object\") {\n this.scrollLeft = x.left!\n this.scrollTop = x.top!\n } else {\n this.scrollLeft = x!\n this.scrollTop = y!\n }\n }\n\n /* Polyfill `Element.replaceWith` */\n if (!Element.prototype.replaceWith)\n Element.prototype.replaceWith = function (\n ...nodes: Array\n ): void {\n const parent = this.parentNode\n if (parent) {\n if (nodes.length === 0)\n parent.removeChild(this)\n\n /* Replace children and create text nodes */\n for (let i = nodes.length - 1; i >= 0; i--) {\n let node = nodes[i]\n if (typeof node !== \"object\")\n node = document.createTextNode(node)\n else if (node.parentNode)\n node.parentNode.removeChild(node)\n\n /* Replace child or insert before previous sibling */\n if (!i)\n parent.replaceChild(node, this)\n else\n parent.insertBefore(this.previousSibling!, node)\n }\n }\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexDocument } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search document\n */\nexport interface SearchDocument extends SearchIndexDocument {\n parent?: SearchIndexDocument /* Parent article */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search document mapping\n */\nexport type SearchDocumentMap = Map\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search document mapping\n *\n * @param docs - Search index documents\n *\n * @returns Search document map\n */\nexport function setupSearchDocumentMap(\n docs: SearchIndexDocument[]\n): SearchDocumentMap {\n const documents = new Map()\n const parents = new Set()\n for (const doc of docs) {\n const [path, hash] = doc.location.split(\"#\")\n\n /* Extract location, title and tags */\n const location = doc.location\n const title = doc.title\n const tags = doc.tags\n\n /* Escape and cleanup text */\n const text = escapeHTML(doc.text)\n .replace(/\\s+(?=[,.:;!?])/g, \"\")\n .replace(/\\s+/g, \" \")\n\n /* Handle section */\n if (hash) {\n const parent = documents.get(path)!\n\n /* Ignore first section, override article */\n if (!parents.has(parent)) {\n parent.title = doc.title\n parent.text = text\n\n /* Remember that we processed the article */\n parents.add(parent)\n\n /* Add subsequent section */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n parent\n })\n }\n\n /* Add article */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n ...tags && { tags }\n })\n }\n }\n return documents\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexConfig } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlight function\n *\n * @param value - Value\n *\n * @returns Highlighted value\n */\nexport type SearchHighlightFn = (value: string) => string\n\n/**\n * Search highlight factory function\n *\n * @param query - Query value\n *\n * @returns Search highlight function\n */\nexport type SearchHighlightFactoryFn = (query: string) => SearchHighlightFn\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search highlighter\n *\n * @param config - Search index configuration\n * @param escape - Whether to escape HTML\n *\n * @returns Search highlight factory function\n */\nexport function setupSearchHighlighter(\n config: SearchIndexConfig, escape: boolean\n): SearchHighlightFactoryFn {\n const separator = new RegExp(config.separator, \"img\")\n const highlight = (_: unknown, data: string, term: string) => {\n return `${data}${term}`\n }\n\n /* Return factory function */\n return (query: string) => {\n query = query\n .replace(/[\\s*+\\-:~^]+/g, \" \")\n .trim()\n\n /* Create search term match expression */\n const match = new RegExp(`(^|${config.separator})(${\n query\n .replace(/[|\\\\{}()[\\]^$+*?.-]/g, \"\\\\$&\")\n .replace(separator, \"|\")\n })`, \"img\")\n\n /* Highlight string value */\n return value => (\n escape\n ? escapeHTML(value)\n : value\n )\n .replace(match, highlight)\n .replace(/<\\/mark>(\\s+)]*>/img, \"$1\")\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search query clause\n */\nexport interface SearchQueryClause {\n presence: lunr.Query.presence /* Clause presence */\n term: string /* Clause term */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search query terms\n */\nexport type SearchQueryTerms = Record\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Parse a search query for analysis\n *\n * @param value - Query value\n *\n * @returns Search query clauses\n */\nexport function parseSearchQuery(\n value: string\n): SearchQueryClause[] {\n const query = new (lunr as any).Query([\"title\", \"text\"])\n const parser = new (lunr as any).QueryParser(value, query)\n\n /* Parse and return query clauses */\n parser.parse()\n return query.clauses\n}\n\n/**\n * Analyze the search query clauses in regard to the search terms found\n *\n * @param query - Search query clauses\n * @param terms - Search terms\n *\n * @returns Search query terms\n */\nexport function getSearchQueryTerms(\n query: SearchQueryClause[], terms: string[]\n): SearchQueryTerms {\n const clauses = new Set(query)\n\n /* Match query clauses against terms */\n const result: SearchQueryTerms = {}\n for (let t = 0; t < terms.length; t++)\n for (const clause of clauses)\n if (terms[t].startsWith(clause.term)) {\n result[clause.term] = true\n clauses.delete(clause)\n }\n\n /* Annotate unmatched non-stopword query clauses */\n for (const clause of clauses)\n if (lunr.stopWordFilter?.(clause.term as any))\n result[clause.term] = false\n\n /* Return query terms */\n return result\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n SearchDocument,\n SearchDocumentMap,\n setupSearchDocumentMap\n} from \"../document\"\nimport {\n SearchHighlightFactoryFn,\n setupSearchHighlighter\n} from \"../highlighter\"\nimport { SearchOptions } from \"../options\"\nimport {\n SearchQueryTerms,\n getSearchQueryTerms,\n parseSearchQuery\n} from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search index configuration\n */\nexport interface SearchIndexConfig {\n lang: string[] /* Search languages */\n separator: string /* Search separator */\n}\n\n/**\n * Search index document\n */\nexport interface SearchIndexDocument {\n location: string /* Document location */\n title: string /* Document title */\n text: string /* Document text */\n tags?: string[] /* Document tags */\n boost?: number /* Document boost */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search index\n *\n * This interfaces describes the format of the `search_index.json` file which\n * is automatically built by the MkDocs search plugin.\n */\nexport interface SearchIndex {\n config: SearchIndexConfig /* Search index configuration */\n docs: SearchIndexDocument[] /* Search index documents */\n options: SearchOptions /* Search options */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search metadata\n */\nexport interface SearchMetadata {\n score: number /* Score (relevance) */\n terms: SearchQueryTerms /* Search query terms */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search result document\n */\nexport type SearchResultDocument = SearchDocument & SearchMetadata\n\n/**\n * Search result item\n */\nexport type SearchResultItem = SearchResultDocument[]\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search result\n */\nexport interface SearchResult {\n items: SearchResultItem[] /* Search result items */\n suggestions?: string[] /* Search suggestions */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Compute the difference of two lists of strings\n *\n * @param a - 1st list of strings\n * @param b - 2nd list of strings\n *\n * @returns Difference\n */\nfunction difference(a: string[], b: string[]): string[] {\n const [x, y] = [new Set(a), new Set(b)]\n return [\n ...new Set([...x].filter(value => !y.has(value)))\n ]\n}\n\n/* ----------------------------------------------------------------------------\n * Class\n * ------------------------------------------------------------------------- */\n\n/**\n * Search index\n */\nexport class Search {\n\n /**\n * Search document mapping\n *\n * A mapping of URLs (including hash fragments) to the actual articles and\n * sections of the documentation. The search document mapping must be created\n * regardless of whether the index was prebuilt or not, as Lunr.js itself\n * only stores the actual index.\n */\n protected documents: SearchDocumentMap\n\n /**\n * Search highlight factory function\n */\n protected highlight: SearchHighlightFactoryFn\n\n /**\n * The underlying Lunr.js search index\n */\n protected index: lunr.Index\n\n /**\n * Search options\n */\n protected options: SearchOptions\n\n /**\n * Create the search integration\n *\n * @param data - Search index\n */\n public constructor({ config, docs, options }: SearchIndex) {\n this.options = options\n\n /* Set up document map and highlighter factory */\n this.documents = setupSearchDocumentMap(docs)\n this.highlight = setupSearchHighlighter(config, false)\n\n /* Set separator for tokenizer */\n lunr.tokenizer.separator = new RegExp(config.separator)\n\n /* Create search index */\n this.index = lunr(function () {\n\n /* Set up multi-language support */\n if (config.lang.length === 1 && config.lang[0] !== \"en\") {\n this.use((lunr as any)[config.lang[0]])\n } else if (config.lang.length > 1) {\n this.use((lunr as any).multiLanguage(...config.lang))\n }\n\n /* Compute functions to be removed from the pipeline */\n const fns = difference([\n \"trimmer\", \"stopWordFilter\", \"stemmer\"\n ], options.pipeline)\n\n /* Remove functions from the pipeline for registered languages */\n for (const lang of config.lang.map(language => (\n language === \"en\" ? lunr : (lunr as any)[language]\n ))) {\n for (const fn of fns) {\n this.pipeline.remove(lang[fn])\n this.searchPipeline.remove(lang[fn])\n }\n }\n\n /* Set up reference */\n this.ref(\"location\")\n\n /* Set up fields */\n this.field(\"title\", { boost: 1e3 })\n this.field(\"text\")\n this.field(\"tags\", { boost: 1e6, extractor: doc => {\n const { tags = [] } = doc as SearchDocument\n return tags.reduce((list, tag) => [\n ...list,\n ...lunr.tokenizer(tag)\n ], [] as lunr.Token[])\n } })\n\n /* Index documents */\n for (const doc of docs)\n this.add(doc, { boost: doc.boost })\n })\n }\n\n /**\n * Search for matching documents\n *\n * The search index which MkDocs provides is divided up into articles, which\n * contain the whole content of the individual pages, and sections, which only\n * contain the contents of the subsections obtained by breaking the individual\n * pages up at `h1` ... `h6`. As there may be many sections on different pages\n * with identical titles (for example within this very project, e.g. \"Usage\"\n * or \"Installation\"), they need to be put into the context of the containing\n * page. For this reason, section results are grouped within their respective\n * articles which are the top-level results that are returned.\n *\n * @param query - Query value\n *\n * @returns Search results\n */\n public search(query: string): SearchResult {\n if (query) {\n try {\n const highlight = this.highlight(query)\n\n /* Parse query to extract clauses for analysis */\n const clauses = parseSearchQuery(query)\n .filter(clause => (\n clause.presence !== lunr.Query.presence.PROHIBITED\n ))\n\n /* Perform search and post-process results */\n const groups = this.index.search(`${query}*`)\n\n /* Apply post-query boosts based on title and search query terms */\n .reduce((item, { ref, score, matchData }) => {\n const document = this.documents.get(ref)\n if (typeof document !== \"undefined\") {\n const { location, title, text, tags, parent } = document\n\n /* Compute and analyze search query terms */\n const terms = getSearchQueryTerms(\n clauses,\n Object.keys(matchData.metadata)\n )\n\n /* Highlight title and text and apply post-query boosts */\n const boost = +!parent + +Object.values(terms).every(t => t)\n item.push({\n location,\n title: highlight(title),\n text: highlight(text),\n ...tags && { tags: tags.map(highlight) },\n score: score * (1 + boost),\n terms\n })\n }\n return item\n }, [])\n\n /* Sort search results again after applying boosts */\n .sort((a, b) => b.score - a.score)\n\n /* Group search results by page */\n .reduce((items, result) => {\n const document = this.documents.get(result.location)\n if (typeof document !== \"undefined\") {\n const ref = \"parent\" in document\n ? document.parent!.location\n : document.location\n items.set(ref, [...items.get(ref) || [], result])\n }\n return items\n }, new Map())\n\n /* Generate search suggestions, if desired */\n let suggestions: string[] | undefined\n if (this.options.suggestions) {\n const titles = this.index.query(builder => {\n for (const clause of clauses)\n builder.term(clause.term, {\n fields: [\"title\"],\n presence: lunr.Query.presence.REQUIRED,\n wildcard: lunr.Query.wildcard.TRAILING\n })\n })\n\n /* Retrieve suggestions for best match */\n suggestions = titles.length\n ? Object.keys(titles[0].matchData.metadata)\n : []\n }\n\n /* Return items and suggestions */\n return {\n items: [...groups.values()],\n ...typeof suggestions !== \"undefined\" && { suggestions }\n }\n\n /* Log errors to console (for now) */\n } catch {\n console.warn(`Invalid query: ${query} \u2013 see https://bit.ly/2s3ChXG`)\n }\n }\n\n /* Return nothing in case of error or empty query */\n return { items: [] }\n }\n}\n"], + "mappings": "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L,CAAI,KACrDD,EAAIC,EAER,CAEA,OAAAG,EAAKP,EACLQ,EAAMzB,EACFwB,EAAG,KAAKJ,CAAC,GAAKK,EAAI,KAAKL,CAAC,IAC1BI,EAAKjB,EACLa,EAAIA,EAAE,QAAQI,EAAG,EAAE,GAKjBD,GAAW,MACbH,EAAIG,EAAQ,YAAY,EAAIH,EAAE,OAAO,CAAC,GAGjCA,CACT,EAEA,OAAO,SAAUhD,EAAO,CACtB,OAAOA,EAAM,OAAO+C,CAAa,CACnC,CACF,EAAG,EAEHpG,EAAK,SAAS,iBAAiBA,EAAK,QAAS,SAAS,EACtD;AAAA;AAAA;AAAA,GAkBAA,EAAK,uBAAyB,SAAU8G,EAAW,CACjD,IAAIC,EAAQD,EAAU,OAAO,SAAU7D,EAAM+D,EAAU,CACrD,OAAA/D,EAAK+D,GAAYA,EACV/D,CACT,EAAG,CAAC,CAAC,EAEL,OAAO,SAAUI,EAAO,CACtB,GAAIA,GAAS0D,EAAM1D,EAAM,SAAS,KAAOA,EAAM,SAAS,EAAG,OAAOA,CACpE,CACF,EAeArD,EAAK,eAAiBA,EAAK,uBAAuB,CAChD,IACA,OACA,QACA,SACA,QACA,MACA,SACA,OACA,KACA,QACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,UACA,OACA,MACA,KACA,MACA,SACA,QACA,OACA,MACA,KACA,OACA,SACA,OACA,OACA,QACA,MACA,OACA,MACA,MACA,MACA,MACA,OACA,KACA,MACA,OACA,MACA,MACA,MACA,UACA,IACA,KACA,KACA,OACA,KACA,KACA,MACA,OACA,QACA,MACA,OACA,SACA,MACA,KACA,QACA,OACA,OACA,KACA,UACA,KACA,MACA,MACA,KACA,MACA,QACA,KACA,OACA,KACA,QACA,MACA,MACA,SACA,OACA,MACA,OACA,MACA,SACA,QACA,KACA,OACA,OACA,OACA,MACA,QACA,OACA,OACA,QACA,QACA,OACA,OACA,MACA,KACA,MACA,OACA,KACA,QACA,MACA,KACA,OACA,OACA,OACA,QACA,QACA,QACA,MACA,OACA,MACA,OACA,OACA,QACA,MACA,MACA,MACF,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", + "names": ["require_lunr", "__commonJSMin", "exports", "module", "lunr", "config", "builder", "global", "message", "obj", "clone", "keys", "key", "val", "docRef", "fieldName", "stringValue", "s", "n", "fieldRef", "elements", "i", "other", "object", "a", "b", "intersection", "element", "posting", "documentCount", "documentsWithTerm", "x", "str", "metadata", "fn", "t", "len", "tokens", "sliceEnd", "sliceStart", "char", "sliceLength", "tokenMetadata", "label", "isRegistered", "serialised", "pipeline", "fnName", "fns", "existingFn", "newFn", "pos", "stackLength", "memo", "j", "result", "k", "token", "index", "start", "end", "pivotPoint", "pivotIndex", "insertIdx", "position", "sumOfSquares", "elementsLength", "otherVector", "dotProduct", "aLen", "bLen", "aVal", "bVal", "output", "step2list", "step3list", "c", "v", "C", "V", "mgr0", "meq1", "mgr1", "s_v", "re_mgr0", "re_mgr1", "re_meq1", "re_s_v", "re_1a", "re2_1a", "re_1b", "re2_1b", "re_1b_2", "re2_1b_2", "re3_1b_2", "re4_1b_2", "re_1c", "re_2", "re_3", "re_4", "re2_4", "re_5", "re_5_1", "re3_5", "porterStemmer", "w", "stem", "suffix", "firstch", "re", "re2", "re3", "re4", "fp", "stopWords", "words", "stopWord", "arr", "clause", "editDistance", "root", "stack", "frame", "noEditNode", "insertionNode", "substitutionNode", "charA", "charB", "transposeNode", "node", "final", "next", "edges", "edge", "labels", "qEdges", "qLen", "nEdges", "nLen", "q", "qEdge", "nEdge", "qNode", "word", "commonPrefix", "nextNode", "downTo", "childKey", "attrs", "queryString", "query", "parser", "matchingFields", "queryVectors", "termFieldCache", "requiredMatches", "prohibitedMatches", "terms", "clauseMatches", "m", "term", "termTokenSet", "expandedTerms", "field", "expandedTerm", "termIndex", "fieldPosting", "matchingDocumentRefs", "termField", "matchingDocumentsSet", "l", "matchingDocumentRef", "matchingFieldRef", "fieldMatch", "allRequiredMatches", "allProhibitedMatches", "matchingFieldRefs", "results", "matches", "fieldVector", "score", "docMatch", "match", "invertedIndex", "fieldVectors", "ref", "serializedIndex", "serializedVectors", "serializedInvertedIndex", "tokenSetBuilder", "tuple", "attributes", "number", "doc", "fields", "extractor", "fieldTerms", "metadataKey", "fieldRefs", "numberOfFields", "accumulator", "documentsWithField", "fieldRefsLength", "termIdfCache", "fieldLength", "termFrequencies", "termsLength", "fieldBoost", "docBoost", "tf", "idf", "scoreWithPrecision", "args", "clonedMetadata", "metadataKeys", "otherMatchData", "allFields", "options", "state", "subSlices", "type", "charCode", "lexer", "lexeme", "completedClause", "errorMessage", "nextLexeme", "possibleFields", "f", "boost", "factory", "require_escape_html", "__commonJSMin", "exports", "module", "matchHtmlRegExp", "escapeHtml", "string", "str", "match", "escape", "html", "index", "lastIndex", "import_lunr", "obj", "data", "key", "x", "y", "nodes", "parent", "i", "node", "import_escape_html", "setupSearchDocumentMap", "docs", "documents", "parents", "doc", "path", "hash", "location", "title", "tags", "text", "escapeHTML", "parent", "__spreadValues", "import_escape_html", "setupSearchHighlighter", "config", "escape", "separator", "highlight", "_", "data", "term", "query", "match", "value", "escapeHTML", "parseSearchQuery", "value", "query", "getSearchQueryTerms", "terms", "_a", "clauses", "result", "t", "clause", "difference", "a", "b", "x", "y", "value", "Search", "config", "docs", "options", "setupSearchDocumentMap", "setupSearchHighlighter", "fns", "lang", "language", "fn", "doc", "tags", "list", "tag", "query", "highlight", "clauses", "parseSearchQuery", "clause", "groups", "item", "ref", "score", "matchData", "document", "location", "title", "text", "parent", "terms", "getSearchQueryTerms", "boost", "t", "__spreadProps", "__spreadValues", "items", "result", "suggestions", "titles", "builder", "e", "index", "setupSearchLanguages", "config", "__async", "base", "worker", "path", "scripts", "lang", "handler", "message", "Search", "lunr", "ev"] +} diff --git a/assets/stylesheets/main.69437709.min.css b/assets/stylesheets/main.69437709.min.css new file mode 100644 index 0000000..702d013 --- /dev/null +++ b/assets/stylesheets/main.69437709.min.css @@ -0,0 +1 @@ +@charset "UTF-8";html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box}*,:after,:before{box-sizing:inherit}@media (prefers-reduced-motion){*,:after,:before{transition:none!important}}body{margin:0}a,button,input,label{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}hr{border:0;box-sizing:initial;display:block;height:.05rem;overflow:visible;padding:0}small{font-size:80%}sub,sup{line-height:1em}img{border-style:none}table{border-collapse:initial;border-spacing:0}td,th{font-weight:400;vertical-align:top}button{background:transparent;border:0;font-family:inherit;font-size:inherit;margin:0;padding:0}input{border:0;outline:none}:root,[data-md-color-scheme=default]{--md-default-fg-color:rgba(0,0,0,.87);--md-default-fg-color--light:rgba(0,0,0,.54);--md-default-fg-color--lighter:rgba(0,0,0,.32);--md-default-fg-color--lightest:rgba(0,0,0,.07);--md-default-bg-color:#fff;--md-default-bg-color--light:hsla(0,0%,100%,.7);--md-default-bg-color--lighter:hsla(0,0%,100%,.3);--md-default-bg-color--lightest:hsla(0,0%,100%,.12);--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:rgba(82,108,254,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7);--md-code-fg-color:#36464e;--md-code-bg-color:#f5f5f5;--md-code-hl-color:rgba(255,255,0,.5);--md-code-hl-number-color:#d52a2a;--md-code-hl-special-color:#db1457;--md-code-hl-function-color:#a846b9;--md-code-hl-constant-color:#6e59d9;--md-code-hl-keyword-color:#3f6ec6;--md-code-hl-string-color:#1c7d4d;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-mark-color:rgba(255,255,0,.5);--md-typeset-del-color:rgba(245,80,61,.15);--md-typeset-ins-color:rgba(11,213,112,.15);--md-typeset-kbd-color:#fafafa;--md-typeset-kbd-accent-color:#fff;--md-typeset-kbd-border-color:#b8b8b8;--md-typeset-table-color:rgba(0,0,0,.12);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-fg-color:#fff;--md-footer-fg-color--light:hsla(0,0%,100%,.7);--md-footer-fg-color--lighter:hsla(0,0%,100%,.3);--md-footer-bg-color:rgba(0,0,0,.87);--md-footer-bg-color--dark:rgba(0,0,0,.32);--md-shadow-z1:0 0.2rem 0.5rem rgba(0,0,0,.05),0 0 0.05rem rgba(0,0,0,.1);--md-shadow-z2:0 0.2rem 0.5rem rgba(0,0,0,.1),0 0 0.05rem rgba(0,0,0,.25);--md-shadow-z3:0 0.2rem 0.5rem rgba(0,0,0,.2),0 0 0.05rem rgba(0,0,0,.35)}.md-icon svg{fill:currentcolor;display:block;height:1.2rem;width:1.2rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--md-text-font-family:var(--md-text-font,_),-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;--md-code-font-family:var(--md-code-font,_),SFMono-Regular,Consolas,Menlo,monospace}body,input{font-feature-settings:"kern","liga";font-family:var(--md-text-font-family)}body,code,input,kbd,pre{color:var(--md-typeset-color)}code,kbd,pre{font-feature-settings:"kern";font-family:var(--md-code-font-family)}:root{--md-typeset-table-sort-icon:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--asc:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--desc:url('data:image/svg+xml;charset=utf-8,')}.md-typeset{-webkit-print-color-adjust:exact;color-adjust:exact;font-size:.8rem;line-height:1.6}@media print{.md-typeset{font-size:.68rem}}.md-typeset blockquote,.md-typeset dl,.md-typeset figure,.md-typeset ol,.md-typeset pre,.md-typeset ul{margin-bottom:1em;margin-top:1em}.md-typeset h1{color:var(--md-default-fg-color--light);font-size:2em;line-height:1.3;margin:0 0 1.25em}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{font-size:1.5625em;line-height:1.4;margin:1.6em 0 .64em}.md-typeset h3{font-size:1.25em;font-weight:400;letter-spacing:-.01em;line-height:1.5;margin:1.6em 0 .8em}.md-typeset h2+h3{margin-top:.8em}.md-typeset h4{font-weight:700;letter-spacing:-.01em;margin:1em 0}.md-typeset h5,.md-typeset h6{color:var(--md-default-fg-color--light);font-size:.8em;font-weight:700;letter-spacing:-.01em;margin:1.25em 0}.md-typeset h5{text-transform:uppercase}.md-typeset hr{border-bottom:.05rem solid var(--md-default-fg-color--lightest);display:flow-root;margin:1.5em 0}.md-typeset a{color:var(--md-typeset-a-color);word-break:break-word}.md-typeset a,.md-typeset a:before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset a:focus code,.md-typeset a:hover code{background-color:var(--md-accent-fg-color--transparent)}.md-typeset a code{color:currentcolor;transition:background-color 125ms}.md-typeset a.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset code,.md-typeset kbd,.md-typeset pre{color:var(--md-code-fg-color);direction:ltr}@media print{.md-typeset code,.md-typeset kbd,.md-typeset pre{white-space:pre-wrap}}.md-typeset code{background-color:var(--md-code-bg-color);border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em;padding:0 .2941176471em;word-break:break-word}.md-typeset code:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-typeset pre{display:flow-root;line-height:1.4;position:relative}.md-typeset pre>code{-webkit-box-decoration-break:slice;box-decoration-break:slice;box-shadow:none;display:block;margin:0;outline-color:var(--md-accent-fg-color);overflow:auto;padding:.7720588235em 1.1764705882em;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin;touch-action:auto;word-break:normal}.md-typeset pre>code:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-typeset pre>code::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset kbd{background-color:var(--md-typeset-kbd-color);border-radius:.1rem;box-shadow:0 .1rem 0 .05rem var(--md-typeset-kbd-border-color),0 .1rem 0 var(--md-typeset-kbd-border-color),0 -.1rem .2rem var(--md-typeset-kbd-accent-color) inset;color:var(--md-default-fg-color);display:inline-block;font-size:.75em;padding:0 .6666666667em;vertical-align:text-top;word-break:break-word}.md-typeset mark{background-color:var(--md-typeset-mark-color);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:inherit;word-break:break-word}.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light);cursor:help;text-decoration:none}@media (hover:none){.md-typeset abbr{position:relative}.md-typeset abbr[title]:-webkit-any(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:-webkit-max-content;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}.md-typeset abbr[title]:-moz-any(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:-moz-max-content;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}[dir=ltr] .md-typeset abbr[title]:-webkit-any(:focus,:hover):after{left:0}[dir=ltr] .md-typeset abbr[title]:-moz-any(:focus,:hover):after{left:0}[dir=ltr] .md-typeset abbr[title]:is(:focus,:hover):after{left:0}[dir=rtl] .md-typeset abbr[title]:-webkit-any(:focus,:hover):after{right:0}[dir=rtl] .md-typeset abbr[title]:-moz-any(:focus,:hover):after{right:0}[dir=rtl] .md-typeset abbr[title]:is(:focus,:hover):after{right:0}.md-typeset abbr[title]:is(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}}.md-typeset small{opacity:.75}[dir=ltr] .md-typeset sub,[dir=ltr] .md-typeset sup{margin-left:.078125em}[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{margin-right:.078125em}[dir=ltr] .md-typeset blockquote{padding-left:.6rem}[dir=rtl] .md-typeset blockquote{padding-right:.6rem}[dir=ltr] .md-typeset blockquote{border-left:.2rem solid var(--md-default-fg-color--lighter)}[dir=rtl] .md-typeset blockquote{border-right:.2rem solid var(--md-default-fg-color--lighter)}.md-typeset blockquote{color:var(--md-default-fg-color--light);margin-left:0;margin-right:0}.md-typeset ul{list-style-type:disc}[dir=ltr] .md-typeset ol,[dir=ltr] .md-typeset ul{margin-left:.625em}[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{margin-right:.625em}.md-typeset ol,.md-typeset ul{padding:0}.md-typeset ol:not([hidden]),.md-typeset ul:not([hidden]){display:flow-root}.md-typeset ol ol,.md-typeset ul ol{list-style-type:lower-alpha}.md-typeset ol ol ol,.md-typeset ul ol ol{list-style-type:lower-roman}[dir=ltr] .md-typeset ol li,[dir=ltr] .md-typeset ul li{margin-left:1.25em}[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{margin-right:1.25em}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}.md-typeset ol li :-webkit-any(ul,ol),.md-typeset ul li :-webkit-any(ul,ol){margin-bottom:.5em;margin-top:.5em}.md-typeset ol li :-moz-any(ul,ol),.md-typeset ul li :-moz-any(ul,ol){margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset ol li :-webkit-any(ul,ol),[dir=ltr] .md-typeset ul li :-webkit-any(ul,ol){margin-left:.625em}[dir=ltr] .md-typeset ol li :-moz-any(ul,ol),[dir=ltr] .md-typeset ul li :-moz-any(ul,ol){margin-left:.625em}[dir=ltr] .md-typeset ol li :is(ul,ol),[dir=ltr] .md-typeset ul li :is(ul,ol){margin-left:.625em}[dir=rtl] .md-typeset ol li :-webkit-any(ul,ol),[dir=rtl] .md-typeset ul li :-webkit-any(ul,ol){margin-right:.625em}[dir=rtl] .md-typeset ol li :-moz-any(ul,ol),[dir=rtl] .md-typeset ul li :-moz-any(ul,ol){margin-right:.625em}[dir=rtl] .md-typeset ol li :is(ul,ol),[dir=rtl] .md-typeset ul li :is(ul,ol){margin-right:.625em}.md-typeset ol li :is(ul,ol),.md-typeset ul li :is(ul,ol){margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset dd{margin-left:1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em}.md-typeset dd{margin-bottom:1.5em;margin-top:1em}.md-typeset img,.md-typeset svg,.md-typeset video{height:auto;max-width:100%}.md-typeset img[align=left]{margin:1em 1em 1em 0}.md-typeset img[align=right]{margin:1em 0 1em 1em}.md-typeset img[align]:only-child{margin-top:0}.md-typeset img[src$="#gh-dark-mode-only"],.md-typeset img[src$="#only-dark"]{display:none}.md-typeset figure{display:flow-root;margin:1em auto;max-width:100%;text-align:center;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.md-typeset figure img{display:block}.md-typeset figcaption{font-style:italic;margin:1em auto;max-width:24rem}.md-typeset iframe{max-width:100%}.md-typeset table:not([class]){background-color:var(--md-default-bg-color);border:.05rem solid var(--md-typeset-table-color);border-radius:.1rem;display:inline-block;font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto}@media print{.md-typeset table:not([class]){display:table}}.md-typeset table:not([class])+*{margin-top:1.5em}.md-typeset table:not([class]) :-webkit-any(th,td)>:first-child{margin-top:0}.md-typeset table:not([class]) :-moz-any(th,td)>:first-child{margin-top:0}.md-typeset table:not([class]) :is(th,td)>:first-child{margin-top:0}.md-typeset table:not([class]) :-webkit-any(th,td)>:last-child{margin-bottom:0}.md-typeset table:not([class]) :-moz-any(th,td)>:last-child{margin-bottom:0}.md-typeset table:not([class]) :is(th,td)>:last-child{margin-bottom:0}.md-typeset table:not([class]) :-webkit-any(th,td):not([align]){text-align:left}.md-typeset table:not([class]) :-moz-any(th,td):not([align]){text-align:left}.md-typeset table:not([class]) :is(th,td):not([align]){text-align:left}[dir=rtl] .md-typeset table:not([class]) :-webkit-any(th,td):not([align]){text-align:right}[dir=rtl] .md-typeset table:not([class]) :-moz-any(th,td):not([align]){text-align:right}[dir=rtl] .md-typeset table:not([class]) :is(th,td):not([align]){text-align:right}.md-typeset table:not([class]) th{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) th a{color:inherit}.md-typeset table:not([class]) td{border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) tbody tr{transition:background-color 125ms}.md-typeset table:not([class]) tbody tr:hover{background-color:rgba(0,0,0,.035);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table:not([class]) a{word-break:normal}.md-typeset table th[role=columnheader]{cursor:pointer}[dir=ltr] .md-typeset table th[role=columnheader]:after{margin-left:.5em}[dir=rtl] .md-typeset table th[role=columnheader]:after{margin-right:.5em}.md-typeset table th[role=columnheader]:after{content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-typeset-table-sort-icon);mask-image:var(--md-typeset-table-sort-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset table th[role=columnheader]:hover:after{background-color:var(--md-default-fg-color--lighter)}.md-typeset table th[role=columnheader][aria-sort=ascending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--asc);mask-image:var(--md-typeset-table-sort-icon--asc)}.md-typeset table th[role=columnheader][aria-sort=descending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--desc);mask-image:var(--md-typeset-table-sort-icon--desc)}.md-typeset__scrollwrap{margin:1em -.8rem;overflow-x:auto;touch-action:auto}.md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}@media print{.md-typeset__table{display:block}}html .md-typeset__table table{display:table;margin:0;overflow:hidden;width:100%}@media screen and (max-width:44.9375em){.md-content__inner>pre{margin:1em -.8rem}.md-content__inner>pre code{border-radius:0}}.md-banner{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color);overflow:auto}@media print{.md-banner{display:none}}.md-banner--warning{background:var(--md-typeset-mark-color);color:var(--md-default-fg-color)}.md-banner__inner{font-size:.7rem;margin:.6rem auto;padding:0 .8rem}.md-banner__button{color:inherit;cursor:pointer;float:right;transition:opacity .25s}.md-banner__button:hover{opacity:.7}html{font-size:125%;height:100%;overflow-x:hidden}@media screen and (min-width:100em){html{font-size:137.5%}}@media screen and (min-width:125em){html{font-size:150%}}body{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;font-size:.5rem;min-height:100%;position:relative;width:100%}@media print{body{display:block}}@media screen and (max-width:59.9375em){body[data-md-scrolllock]{position:fixed}}.md-grid{margin-left:auto;margin-right:auto;max-width:61rem}.md-container{display:flex;flex-direction:column;flex-grow:1}@media print{.md-container{display:block}}.md-main{flex-grow:1}.md-main__inner{display:flex;height:100%;margin-top:1.5rem}.md-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-toggle{display:none}.md-option{height:0;opacity:0;position:absolute;width:0}.md-option:checked+label:not([hidden]){display:block}.md-option.focus-visible+label{outline-color:var(--md-accent-fg-color);outline-style:auto}.md-skip{background-color:var(--md-default-fg-color);border-radius:.1rem;color:var(--md-default-bg-color);font-size:.64rem;margin:.5rem;opacity:0;outline-color:var(--md-accent-fg-color);padding:.3rem .5rem;position:fixed;transform:translateY(.4rem);z-index:-1}.md-skip:focus{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 175ms 75ms;z-index:10}@page{margin:25mm}:root{--md-clipboard-icon:url('data:image/svg+xml;charset=utf-8,')}.md-clipboard{border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;position:absolute;right:.5em;top:.5em;transition:color .25s;width:1.5em;z-index:1}@media print{.md-clipboard{display:none}}.md-clipboard:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}:hover>.md-clipboard{color:var(--md-default-fg-color--light)}.md-clipboard:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-image:var(--md-clipboard-icon);mask-image:var(--md-clipboard-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-clipboard--inline{cursor:pointer}.md-clipboard--inline code{transition:color .25s,background-color .25s}.md-clipboard--inline:-webkit-any(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-clipboard--inline:-moz-any(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-clipboard--inline:is(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}@-webkit-keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@-webkit-keyframes overlay{0%{opacity:0}to{opacity:1}}@keyframes overlay{0%{opacity:0}to{opacity:1}}.md-consent__overlay{-webkit-animation:overlay .25s both;animation:overlay .25s both;-webkit-backdrop-filter:blur(.1rem);backdrop-filter:blur(.1rem);background-color:rgba(0,0,0,.54);height:100%;opacity:1;position:fixed;top:0;width:100%;z-index:5}.md-consent__inner{-webkit-animation:consent .5s cubic-bezier(.1,.7,.1,1) both;animation:consent .5s cubic-bezier(.1,.7,.1,1) both;background-color:var(--md-default-bg-color);border:0;border-radius:.1rem;bottom:0;box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2);max-height:100%;overflow:auto;padding:0;position:fixed;width:100%;z-index:5}.md-consent__form{padding:.8rem}.md-consent__settings{display:none;margin:1em 0}input:checked+.md-consent__settings{display:block}.md-consent__controls{margin-bottom:.8rem}.md-typeset .md-consent__controls .md-button{display:inline}@media screen and (max-width:44.9375em){.md-typeset .md-consent__controls .md-button{display:block;margin-top:.4rem;text-align:center;width:100%}}.md-consent label{cursor:pointer}.md-content{flex-grow:1;min-width:0}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}@media screen and (min-width:76.25em){[dir=ltr] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}[dir=ltr] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner,[dir=rtl] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-right:1.2rem}[dir=rtl] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}}.md-content__inner:before{content:"";display:block;height:.4rem}.md-content__inner>:last-child{margin-bottom:0}[dir=ltr] .md-content__button{margin-left:.4rem}[dir=rtl] .md-content__button{margin-right:.4rem}.md-content__button{float:right;margin:.4rem 0;padding:0}@media print{.md-content__button{display:none}}[dir=rtl] .md-content__button{float:left}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}[dir=ltr] .md-dialog{right:.8rem}[dir=rtl] .md-dialog{left:.8rem}.md-dialog{background-color:var(--md-default-fg-color);border-radius:.1rem;bottom:.8rem;box-shadow:var(--md-shadow-z3);min-width:11.1rem;opacity:0;padding:.4rem .6rem;pointer-events:none;position:fixed;transform:translateY(100%);transition:transform 0ms .4s,opacity .4s;z-index:4}@media print{.md-dialog{display:none}}.md-dialog--active{opacity:1;pointer-events:auto;transform:translateY(0);transition:transform .4s cubic-bezier(.075,.85,.175,1),opacity .4s}.md-dialog__inner{color:var(--md-default-bg-color);font-size:.7rem}.md-feedback{margin:2em 0 1em;text-align:center}.md-feedback fieldset{border:none;margin:0;padding:0}.md-feedback__title{font-weight:700;margin:1em auto}.md-feedback__inner{position:relative}.md-feedback__list{align-content:baseline;display:flex;flex-wrap:wrap;justify-content:center;position:relative}.md-feedback__list:hover .md-icon:not(:disabled){color:var(--md-default-fg-color--lighter)}:disabled .md-feedback__list{min-height:1.8rem}.md-feedback__icon{color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;margin:0 .1rem;transition:color 125ms}.md-feedback__icon:not(:disabled).md-icon:hover{color:var(--md-accent-fg-color)}.md-feedback__icon:disabled{color:var(--md-default-fg-color--lightest);pointer-events:none}.md-feedback__note{opacity:0;position:relative;transform:translateY(.4rem);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-feedback__note>*{margin:0 auto;max-width:16rem}:disabled .md-feedback__note{opacity:1;transform:translateY(0)}.md-footer{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color)}@media print{.md-footer{display:none}}.md-footer__inner{justify-content:space-between;overflow:auto;padding:.2rem}.md-footer__inner:not([hidden]){display:flex}.md-footer__link{display:flex;flex-grow:0.01;outline-color:var(--md-accent-fg-color);overflow:hidden;padding-bottom:.4rem;padding-top:1.4rem;transition:opacity .25s}.md-footer__link:-webkit-any(:focus,:hover){opacity:.7}.md-footer__link:-moz-any(:focus,:hover){opacity:.7}.md-footer__link:is(:focus,:hover){opacity:.7}[dir=rtl] .md-footer__link svg{transform:scaleX(-1)}@media screen and (max-width:44.9375em){.md-footer__link--prev .md-footer__title{display:none}}[dir=ltr] .md-footer__link--next{margin-left:auto}[dir=rtl] .md-footer__link--next{margin-right:auto}.md-footer__link--next{text-align:right}[dir=rtl] .md-footer__link--next{text-align:left}.md-footer__title{flex-grow:1;font-size:.9rem;line-height:2.4rem;max-width:calc(100% - 2.4rem);padding:0 1rem;position:relative;white-space:nowrap}.md-footer__button{margin:.2rem;padding:.4rem}.md-footer__direction{font-size:.64rem;left:0;margin-top:-1rem;opacity:.7;padding:0 1rem;position:absolute;right:0}.md-footer-meta{background-color:var(--md-footer-bg-color--dark)}.md-footer-meta__inner{display:flex;flex-wrap:wrap;justify-content:space-between;padding:.2rem}html .md-footer-meta.md-typeset a{color:var(--md-footer-fg-color--light)}html .md-footer-meta.md-typeset a:-webkit-any(:focus,:hover){color:var(--md-footer-fg-color)}html .md-footer-meta.md-typeset a:-moz-any(:focus,:hover){color:var(--md-footer-fg-color)}html .md-footer-meta.md-typeset a:is(:focus,:hover){color:var(--md-footer-fg-color)}.md-copyright{color:var(--md-footer-fg-color--lighter);font-size:.64rem;margin:auto .6rem;padding:.4rem 0;width:100%}@media screen and (min-width:45em){.md-copyright{width:auto}}.md-copyright__highlight{color:var(--md-footer-fg-color--light)}.md-social{margin:0 .4rem;padding:.2rem 0 .6rem}@media screen and (min-width:45em){.md-social{padding:.6rem 0}}.md-social__link{display:inline-block;height:1.6rem;text-align:center;width:1.6rem}.md-social__link:before{line-height:1.9}.md-social__link svg{fill:currentcolor;max-height:.8rem;vertical-align:-25%}.md-typeset .md-button{border:.1rem solid;border-radius:.1rem;color:var(--md-primary-fg-color);cursor:pointer;display:inline-block;font-weight:700;padding:.625em 2em;transition:color 125ms,background-color 125ms,border-color 125ms}.md-typeset .md-button--primary{background-color:var(--md-primary-fg-color);border-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-typeset .md-button:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-typeset .md-button:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-typeset .md-button:is(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[dir=ltr] .md-typeset .md-input{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .md-input,[dir=rtl] .md-typeset .md-input{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .md-input{border-top-left-radius:.1rem}.md-typeset .md-input{border-bottom:.1rem solid var(--md-default-fg-color--lighter);box-shadow:var(--md-shadow-z1);font-size:.8rem;height:1.8rem;padding:0 .6rem;transition:border .25s,box-shadow .25s}.md-typeset .md-input:-webkit-any(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input:-moz-any(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input:is(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input--stretch{width:100%}.md-header{background-color:var(--md-primary-fg-color);box-shadow:0 0 .2rem transparent,0 .2rem .4rem transparent;color:var(--md-primary-bg-color);display:block;left:0;position:-webkit-sticky;position:sticky;right:0;top:0;z-index:4}@media print{.md-header{display:none}}.md-header[hidden]{transform:translateY(-100%);transition:transform .25s cubic-bezier(.8,0,.6,1),box-shadow .25s}.md-header--shadow{box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2);transition:transform .25s cubic-bezier(.1,.7,.1,1),box-shadow .25s}.md-header__inner{align-items:center;display:flex;padding:0 .2rem}.md-header__button{color:currentcolor;cursor:pointer;margin:.2rem;outline-color:var(--md-accent-fg-color);padding:.4rem;position:relative;transition:opacity .25s;vertical-align:middle;z-index:1}.md-header__button:hover{opacity:.7}.md-header__button:not([hidden]){display:inline-block}.md-header__button:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-header__button.md-logo{margin:.2rem;padding:.4rem}@media screen and (max-width:76.1875em){.md-header__button.md-logo{display:none}}.md-header__button.md-logo :-webkit-any(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}.md-header__button.md-logo :-moz-any(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}.md-header__button.md-logo :is(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}@media screen and (min-width:60em){.md-header__button[for=__search]{display:none}}.no-js .md-header__button[for=__search]{display:none}[dir=rtl] .md-header__button[for=__search] svg{transform:scaleX(-1)}@media screen and (min-width:76.25em){.md-header__button[for=__drawer]{display:none}}.md-header__topic{display:flex;max-width:100%;position:absolute;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;white-space:nowrap}.md-header__topic+.md-header__topic{opacity:0;pointer-events:none;transform:translateX(1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__topic+.md-header__topic{transform:translateX(-1.25rem)}.md-header__topic:first-child{font-weight:700}[dir=ltr] .md-header__title{margin-right:.4rem}[dir=rtl] .md-header__title{margin-left:.4rem}[dir=ltr] .md-header__title{margin-left:1rem}[dir=rtl] .md-header__title{margin-right:1rem}.md-header__title{flex-grow:1;font-size:.9rem;height:2.4rem;line-height:2.4rem}.md-header__title--active .md-header__topic{opacity:0;pointer-events:none;transform:translateX(-1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__title--active .md-header__topic{transform:translateX(1.25rem)}.md-header__title--active .md-header__topic+.md-header__topic{opacity:1;pointer-events:auto;transform:translateX(0);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;z-index:0}.md-header__title>.md-header__ellipsis{height:100%;position:relative;width:100%}.md-header__option{display:flex;flex-shrink:0;max-width:100%;transition:max-width 0ms .25s,opacity .25s .25s;white-space:nowrap}[data-md-toggle=search]:checked~.md-header .md-header__option{max-width:0;opacity:0;transition:max-width 0ms,opacity 0ms}.md-header__source{display:none}@media screen and (min-width:60em){[dir=ltr] .md-header__source{margin-left:1rem}[dir=rtl] .md-header__source{margin-right:1rem}.md-header__source{display:block;max-width:11.7rem;width:11.7rem}}@media screen and (min-width:76.25em){[dir=ltr] .md-header__source{margin-left:1.4rem}[dir=rtl] .md-header__source{margin-right:1.4rem}}:root{--md-nav-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-nav-icon--next:url('data:image/svg+xml;charset=utf-8,');--md-toc-icon:url('data:image/svg+xml;charset=utf-8,')}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{display:block;font-weight:700;overflow:hidden;padding:0 .6rem;text-overflow:ellipsis}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{height:100%;width:auto}.md-nav__title .md-nav__button.md-logo :-webkit-any(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__title .md-nav__button.md-logo :-moz-any(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__title .md-nav__button.md-logo :is(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__list{list-style:none;margin:0;padding:0}.md-nav__item{padding:0 .6rem}[dir=ltr] .md-nav__item .md-nav__item{padding-right:0}[dir=rtl] .md-nav__item .md-nav__item{padding-left:0}.md-nav__link{align-items:center;cursor:pointer;display:flex;justify-content:space-between;margin-top:.625em;overflow:hidden;scroll-snap-align:start;text-overflow:ellipsis;transition:color 125ms}.md-nav__link--passed{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active{color:var(--md-typeset-a-color)}.md-nav__item .md-nav__link--index [href]{width:100%}.md-nav__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-nav--primary .md-nav__link[for=__toc]{display:none}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{background-color:currentcolor;display:block;height:100%;-webkit-mask-image:var(--md-toc-icon);mask-image:var(--md-toc-icon);width:100%}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__link>*{cursor:pointer;display:flex}.md-nav__icon{flex-shrink:0}.md-nav__source{display:none}@media screen and (max-width:76.1875em){.md-nav--primary,.md-nav--primary .md-nav{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;height:100%;left:0;position:absolute;right:0;top:0;z-index:1}.md-nav--primary :-webkit-any(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary :-moz-any(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary :is(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);cursor:pointer;height:5.6rem;line-height:2.4rem;padding:3rem .8rem .2rem;position:relative;white-space:nowrap}[dir=ltr] .md-nav--primary .md-nav__title .md-nav__icon{left:.4rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem}.md-nav--primary .md-nav__title .md-nav__icon{display:block;height:1.2rem;margin:.2rem;position:absolute;top:.4rem;width:1.2rem}.md-nav--primary .md-nav__title .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--prev);mask-image:var(--md-nav-icon--prev);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:0 .05rem 0 var(--md-default-fg-color--lightest) inset;overflow-y:auto;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;touch-action:pan-y}.md-nav--primary .md-nav__title~.md-nav__list>:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-weight:700}.md-nav--primary .md-nav__title .md-logo{display:block;left:.2rem;margin:.2rem;padding:.4rem;position:absolute;right:.2rem;top:.2rem}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{border-top:.05rem solid var(--md-default-fg-color--lightest);padding:0}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-typeset-a-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__link{margin-top:0;padding:.6rem .8rem}[dir=ltr] .md-nav--primary .md-nav__link .md-nav__icon{margin-right:-.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{margin-left:-.2rem}.md-nav--primary .md-nav__link .md-nav__icon{font-size:1.2rem;height:1.2rem;width:1.2rem}.md-nav--primary .md-nav__link .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-nav--primary .md-nav__icon:after{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav{background-color:initial;position:static}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem}.md-nav--secondary{background-color:initial}.md-nav__toggle~.md-nav{display:flex;opacity:0;transform:translateX(100%);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity 125ms 50ms}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 125ms 125ms}.md-nav__toggle:checked~.md-nav>.md-nav__list{-webkit-backface-visibility:hidden;backface-visibility:hidden}}@media screen and (max-width:59.9375em){.md-nav--primary .md-nav__link[for=__toc]{display:flex}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--primary .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:flex}.md-nav__source{background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color);display:block;padding:0 .2rem}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-nav--integrated .md-nav__link[for=__toc]{display:flex}.md-nav--integrated .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--integrated .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--integrated .md-nav__link[for=__toc]~.md-nav{display:flex}}@media screen and (min-width:60em){.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}}@media screen and (min-width:76.25em){.md-nav{transition:max-height .25s cubic-bezier(.86,0,.07,1)}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon,.md-nav__toggle~.md-nav{display:none}.md-nav__toggle:-webkit-any(:checked,:indeterminate)~.md-nav{display:block}.md-nav__toggle:-moz-any(:checked,:indeterminate)~.md-nav{display:block}.md-nav__toggle:is(:checked,:indeterminate)~.md-nav{display:block}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__item--section{display:block;margin:1.25em 0}.md-nav__item--section:last-child{margin-bottom:0}.md-nav__item--section>.md-nav__link{font-weight:700;pointer-events:none}.md-nav__item--section>.md-nav__link--index [href]{pointer-events:auto}.md-nav__item--section>.md-nav__link .md-nav__icon{display:none}.md-nav__item--section>.md-nav{display:block}.md-nav__item--section>.md-nav>.md-nav__list>.md-nav__item{padding:0}.md-nav__icon{border-radius:100%;float:right;height:.9rem;transition:background-color .25s,transform .25s;width:.9rem}[dir=rtl] .md-nav__icon{float:left;transform:rotate(180deg)}.md-nav__icon:hover{background-color:var(--md-accent-fg-color--transparent)}.md-nav__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.1rem;width:100%}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon,.md-nav__item--nested .md-nav__toggle:indeterminate~.md-nav__link .md-nav__icon{transform:rotate(90deg)}.md-nav--lifted>.md-nav__list>.md-nav__item,.md-nav--lifted>.md-nav__list>.md-nav__item--nested,.md-nav--lifted>.md-nav__title{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active{display:block;padding:0}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link{font-weight:700;margin-top:0;padding:0 .6rem;pointer-events:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link--index [href]{pointer-events:auto}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link .md-nav__icon{display:none}.md-nav--lifted .md-nav[data-md-level="1"]{display:block}[dir=ltr] .md-nav--lifted .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding-right:.6rem}[dir=rtl] .md-nav--lifted .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding-left:.6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested){padding:0 .6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested)>.md-nav__link{padding:0}[dir=ltr] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-left:.05rem solid var(--md-primary-fg-color)}[dir=rtl] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-right:.05rem solid var(--md-primary-fg-color)}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{display:block;margin-bottom:1.25em}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__title{display:none}}:root{--md-search-result-icon:url('data:image/svg+xml;charset=utf-8,')}.md-search{position:relative}@media screen and (min-width:60em){.md-search{padding:.2rem 0}}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__overlay{left:-2.2rem}[dir=rtl] .md-search__overlay{right:-2.2rem}.md-search__overlay{background-color:var(--md-default-bg-color);border-radius:1rem;height:2rem;overflow:hidden;pointer-events:none;position:absolute;top:-1rem;transform-origin:center;transition:transform .3s .1s,opacity .2s .2s;width:2rem}[data-md-toggle=search]:checked~.md-header .md-search__overlay{opacity:1;transition:transform .4s,opacity .1s}}@media screen and (min-width:60em){[dir=ltr] .md-search__overlay{left:0}[dir=rtl] .md-search__overlay{right:0}.md-search__overlay{background-color:rgba(0,0,0,.54);cursor:pointer;height:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0}[data-md-toggle=search]:checked~.md-header .md-search__overlay{height:200vh;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@media screen and (max-width:29.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width:30em) and (max-width:44.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width:45em) and (max-width:59.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}.md-search__inner{-webkit-backface-visibility:hidden;backface-visibility:hidden}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__inner{left:0}[dir=rtl] .md-search__inner{right:0}.md-search__inner{height:0;opacity:0;overflow:hidden;position:fixed;top:0;transform:translateX(5%);transition:width 0ms .3s,height 0ms .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s;width:0;z-index:2}[dir=rtl] .md-search__inner{transform:translateX(-5%)}[data-md-toggle=search]:checked~.md-header .md-search__inner{height:100%;opacity:1;transform:translateX(0);transition:width 0ms 0ms,height 0ms 0ms,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;width:100%}}@media screen and (min-width:60em){.md-search__inner{float:right;padding:.1rem 0;position:relative;transition:width .25s cubic-bezier(.1,.7,.1,1);width:11.7rem}[dir=rtl] .md-search__inner{float:left}}@media screen and (min-width:60em) and (max-width:76.1875em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}}@media screen and (min-width:76.25em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}}.md-search__form{background-color:var(--md-default-bg-color);box-shadow:0 0 .6rem transparent;height:2.4rem;position:relative;transition:color .25s,background-color .25s;z-index:2}@media screen and (min-width:60em){.md-search__form{background-color:rgba(0,0,0,.26);border-radius:.1rem;height:1.8rem}.md-search__form:hover{background-color:hsla(0,0%,100%,.12)}}[data-md-toggle=search]:checked~.md-header .md-search__form{background-color:var(--md-default-bg-color);border-radius:.1rem .1rem 0 0;box-shadow:0 0 .6rem rgba(0,0,0,.07);color:var(--md-default-fg-color)}[dir=ltr] .md-search__input{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__input{padding-left:2.2rem;padding-right:3.6rem}.md-search__input{background:transparent;font-size:.9rem;height:100%;position:relative;text-overflow:ellipsis;width:100%;z-index:2}.md-search__input::-ms-input-placeholder{-ms-transition:color .25s;transition:color .25s}.md-search__input::placeholder{transition:color .25s}.md-search__input::-ms-input-placeholder{color:var(--md-default-fg-color--light)}.md-search__input::placeholder,.md-search__input~.md-search__icon{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}@media screen and (max-width:59.9375em){.md-search__input{font-size:.9rem;height:2.4rem;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__input{padding-left:2.2rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input{color:inherit;font-size:.8rem}.md-search__input::-ms-input-placeholder{color:var(--md-primary-bg-color--light)}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}[data-md-toggle=search]:checked~.md-header .md-search__input{text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input::-ms-input-placeholder{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon,[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:var(--md-default-fg-color--light)}}.md-search__icon{cursor:pointer;display:inline-block;height:1.2rem;transition:color .25s,opacity .25s;width:1.2rem}.md-search__icon:hover{opacity:.7}[dir=ltr] .md-search__icon[for=__search]{left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem}.md-search__icon[for=__search]{position:absolute;top:.3rem;z-index:2}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__icon[for=__search]{left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem}.md-search__icon[for=__search]{top:.6rem}.md-search__icon[for=__search] svg:first-child{display:none}}@media screen and (min-width:60em){.md-search__icon[for=__search]{pointer-events:none}.md-search__icon[for=__search] svg:last-child{display:none}}[dir=ltr] .md-search__options{right:.5rem}[dir=rtl] .md-search__options{left:.5rem}.md-search__options{pointer-events:none;position:absolute;top:.3rem;z-index:2}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__options{right:.8rem}[dir=rtl] .md-search__options{left:.8rem}.md-search__options{top:.6rem}}[dir=ltr] .md-search__options>*{margin-left:.2rem}[dir=rtl] .md-search__options>*{margin-right:.2rem}.md-search__options>*{color:var(--md-default-fg-color--light);opacity:0;transform:scale(.75);transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-search__options>:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>*{opacity:1;pointer-events:auto;transform:scale(1)}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>:hover{opacity:.7}[dir=ltr] .md-search__suggest{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__suggest{padding-left:2.2rem;padding-right:3.6rem}.md-search__suggest{align-items:center;color:var(--md-default-fg-color--lighter);display:flex;font-size:.9rem;height:100%;opacity:0;position:absolute;top:0;transition:opacity 50ms;white-space:nowrap;width:100%}@media screen and (min-width:60em){[dir=ltr] .md-search__suggest{padding-left:2.2rem}[dir=rtl] .md-search__suggest{padding-right:2.2rem}.md-search__suggest{font-size:.8rem}}[data-md-toggle=search]:checked~.md-header .md-search__suggest{opacity:1;transition:opacity .3s .1s}[dir=ltr] .md-search__output{border-bottom-left-radius:.1rem}[dir=ltr] .md-search__output,[dir=rtl] .md-search__output{border-bottom-right-radius:.1rem}[dir=rtl] .md-search__output{border-bottom-left-radius:.1rem}.md-search__output{overflow:hidden;position:absolute;width:100%;z-index:1}@media screen and (max-width:59.9375em){.md-search__output{bottom:0;top:2.4rem}}@media screen and (min-width:60em){.md-search__output{opacity:0;top:1.9rem;transition:opacity .4s}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:var(--md-shadow-z3);opacity:1}}.md-search__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);height:100%;overflow-y:auto;touch-action:pan-y}@media (-webkit-max-device-pixel-ratio:1),(max-resolution:1dppx){.md-search__scrollwrap{transform:translateZ(0)}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-search__scrollwrap{width:23.4rem}}@media screen and (min-width:76.25em){.md-search__scrollwrap{width:34.4rem}}@media screen and (min-width:60em){.md-search__scrollwrap{max-height:0;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-search__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;padding:0 .8rem;scroll-snap-align:start}@media screen and (min-width:60em){[dir=ltr] .md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem}}.md-search-result__list{list-style:none;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.md-search-result__item{box-shadow:0 -.05rem var(--md-default-fg-color--lightest)}.md-search-result__item:first-child{box-shadow:none}.md-search-result__link{display:block;outline:none;scroll-snap-align:start;transition:background-color .25s}.md-search-result__link:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:is(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:last-child p:last-child{margin-bottom:.6rem}.md-search-result__more summary{color:var(--md-typeset-a-color);cursor:pointer;display:block;font-size:.64rem;outline:none;padding:.75em .8rem;scroll-snap-align:start;transition:color .25s,background-color .25s}@media screen and (min-width:60em){[dir=ltr] .md-search-result__more summary{padding-left:2.2rem}[dir=rtl] .md-search-result__more summary{padding-right:2.2rem}}.md-search-result__more summary:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary:is(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary::marker{display:none}.md-search-result__more summary::-webkit-details-marker{display:none}.md-search-result__more summary~*>*{opacity:.65}.md-search-result__article{overflow:hidden;padding:0 .8rem;position:relative}@media screen and (min-width:60em){[dir=ltr] .md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem}}.md-search-result__article--document .md-search-result__title{font-size:.8rem;font-weight:400;line-height:1.4;margin:.55rem 0}[dir=ltr] .md-search-result__icon{left:0}[dir=rtl] .md-search-result__icon{right:0}.md-search-result__icon{color:var(--md-default-fg-color--light);height:1.2rem;margin:.5rem;position:absolute;width:1.2rem}@media screen and (max-width:59.9375em){.md-search-result__icon{display:none}}.md-search-result__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-search-result-icon);mask-image:var(--md-search-result-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-search-result__icon:after{transform:scaleX(-1)}.md-search-result__title{font-size:.64rem;font-weight:700;line-height:1.6;margin:.5em 0}.md-search-result__teaser{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--md-default-fg-color--light);display:-webkit-box;font-size:.64rem;line-height:1.6;margin:.5em 0;max-height:2rem;overflow:hidden;text-overflow:ellipsis}@media screen and (max-width:44.9375em){.md-search-result__teaser{-webkit-line-clamp:3;max-height:3rem}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-search-result__teaser{-webkit-line-clamp:3;max-height:3rem}}.md-search-result__teaser mark{background-color:initial;text-decoration:underline}.md-search-result__terms{font-size:.64rem;font-style:italic;margin:.5em 0}.md-search-result mark{background-color:initial;color:var(--md-accent-fg-color)}.md-select{position:relative;z-index:1}.md-select__inner{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:50%;margin-top:.2rem;max-height:0;opacity:0;position:absolute;top:calc(100% - .2rem);transform:translate3d(-50%,.3rem,0);transition:transform .25s 375ms,opacity .25s .25s,max-height 0ms .5s}.md-select:-webkit-any(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);-webkit-transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms;transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select:-moz-any(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);-moz-transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms;transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select:is(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select__inner:after{border-bottom:.2rem solid transparent;border-bottom-color:var(--md-default-bg-color);border-left:.2rem solid transparent;border-right:.2rem solid transparent;border-top:0;content:"";height:0;left:50%;margin-left:-.2rem;margin-top:-.2rem;position:absolute;top:0;width:0}.md-select__list{border-radius:.1rem;font-size:.8rem;list-style-type:none;margin:0;max-height:inherit;overflow:auto;padding:0}.md-select__item{line-height:1.8rem}[dir=ltr] .md-select__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-select__link{padding-left:1.2rem;padding-right:.6rem}.md-select__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:background-color .25s,color .25s;width:100%}.md-select__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:focus{background-color:var(--md-default-fg-color--lightest)}.md-sidebar{align-self:flex-start;flex-shrink:0;padding:1.2rem 0;position:-webkit-sticky;position:sticky;top:2.4rem;width:12.1rem}@media print{.md-sidebar{display:none}}@media screen and (max-width:76.1875em){[dir=ltr] .md-sidebar--primary{left:-12.1rem}[dir=rtl] .md-sidebar--primary{right:-12.1rem}.md-sidebar--primary{background-color:var(--md-default-bg-color);display:block;height:100%;position:fixed;top:0;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;width:12.1rem;z-index:5}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:var(--md-shadow-z3);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{bottom:0;left:0;margin:0;overflow:hidden;position:absolute;right:0;-ms-scroll-snap-type:none;scroll-snap-type:none;top:0}}@media screen and (min-width:76.25em){.md-sidebar{height:0}.no-js .md-sidebar{height:auto}}.md-sidebar--secondary{display:none;order:2}@media screen and (min-width:60em){.md-sidebar--secondary{height:0}.no-js .md-sidebar--secondary{height:auto}.md-sidebar--secondary:not([hidden]){display:block}.md-sidebar--secondary .md-sidebar__scrollwrap{touch-action:pan-y}}.md-sidebar__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;margin:0 .2rem;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin}.md-sidebar__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-sidebar__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@media screen and (max-width:76.1875em){.md-overlay{background-color:rgba(0,0,0,.54);height:0;opacity:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0;z-index:5}[data-md-toggle=drawer]:checked~.md-overlay{height:100%;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@-webkit-keyframes facts{0%{height:0}to{height:.65rem}}@keyframes facts{0%{height:0}to{height:.65rem}}@-webkit-keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}@keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}:root{--md-source-forks-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-repositories-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-source{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.65rem;line-height:1.2;outline-color:var(--md-accent-fg-color);transition:opacity .25s;white-space:nowrap}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;height:2.4rem;vertical-align:middle;width:2rem}[dir=ltr] .md-source__icon svg{margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem}.md-source__icon svg{margin-top:.6rem}[dir=ltr] .md-source__icon+.md-source__repository{margin-left:-2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem}[dir=ltr] .md-source__icon+.md-source__repository{padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{padding-right:2rem}[dir=ltr] .md-source__repository{margin-left:.6rem}[dir=rtl] .md-source__repository{margin-right:.6rem}.md-source__repository{display:inline-block;max-width:calc(100% - 1.2rem);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.md-source__facts{display:flex;font-size:.55rem;gap:.4rem;list-style-type:none;margin:.1rem 0 0;opacity:.75;overflow:hidden;padding:0;width:100%}.md-source__repository--active .md-source__facts{-webkit-animation:facts .25s ease-in;animation:facts .25s ease-in}.md-source__fact{overflow:hidden;text-overflow:ellipsis}.md-source__repository--active .md-source__fact{-webkit-animation:fact .4s ease-out;animation:fact .4s ease-out}[dir=ltr] .md-source__fact:before{margin-right:.1rem}[dir=rtl] .md-source__fact:before{margin-left:.1rem}.md-source__fact:before{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-top;width:.6rem}.md-source__fact:nth-child(1n+2){flex-shrink:0}.md-source__fact--version:before{-webkit-mask-image:var(--md-source-version-icon);mask-image:var(--md-source-version-icon)}.md-source__fact--stars:before{-webkit-mask-image:var(--md-source-stars-icon);mask-image:var(--md-source-stars-icon)}.md-source__fact--forks:before{-webkit-mask-image:var(--md-source-forks-icon);mask-image:var(--md-source-forks-icon)}.md-source__fact--repositories:before{-webkit-mask-image:var(--md-source-repositories-icon);mask-image:var(--md-source-repositories-icon)}.md-tabs{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block;line-height:1.3;overflow:auto;width:100%;z-index:3}@media print{.md-tabs{display:none}}@media screen and (max-width:76.1875em){.md-tabs{display:none}}.md-tabs[hidden]{pointer-events:none}[dir=ltr] .md-tabs__list{margin-left:.2rem}[dir=rtl] .md-tabs__list{margin-right:.2rem}.md-tabs__list{contain:content;list-style:none;margin:0;padding:0;white-space:nowrap}.md-tabs__item{display:inline-block;height:2.4rem;padding-left:.6rem;padding-right:.6rem}.md-tabs__link{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.7rem;margin-top:.8rem;opacity:.7;outline-color:var(--md-accent-fg-color);outline-offset:.2rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s}.md-tabs__link--active,.md-tabs__link:-webkit-any(:focus,:hover){color:inherit;opacity:1}.md-tabs__link--active,.md-tabs__link:-moz-any(:focus,:hover){color:inherit;opacity:1}.md-tabs__link--active,.md-tabs__link:is(:focus,:hover){color:inherit;opacity:1}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:.1s}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:.12s}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:.14s}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:.16s}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:.18s}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:.2s}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:.22s}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:.24s}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:.26s}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:.28s}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:.3s}.md-tabs[hidden] .md-tabs__link{opacity:0;transform:translateY(50%);transition:transform 0ms .1s,opacity .1s}.md-tags{margin-bottom:.75em}[dir=ltr] .md-tag{margin-right:.5em}[dir=rtl] .md-tag{margin-left:.5em}.md-tag{background:var(--md-default-fg-color--lightest);border-radius:.4rem;display:inline-block;font-size:.64rem;font-weight:700;line-height:1.6;margin-bottom:.5em;padding:.3125em .9375em}.md-tag[href]{-webkit-tap-highlight-color:transparent;color:inherit;outline:none;transition:color 125ms,background-color 125ms}.md-tag[href]:focus,.md-tag[href]:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[id]>.md-tag{vertical-align:text-top}@-webkit-keyframes pulse{0%{box-shadow:0 0 0 0 var(--md-default-fg-color--lightest);transform:scale(.95)}75%{box-shadow:0 0 0 .625em transparent;transform:scale(1)}to{box-shadow:0 0 0 0 transparent;transform:scale(.95)}}@keyframes pulse{0%{box-shadow:0 0 0 0 var(--md-default-fg-color--lightest);transform:scale(.95)}75%{box-shadow:0 0 0 .625em transparent;transform:scale(1)}to{box-shadow:0 0 0 0 transparent;transform:scale(.95)}}:root{--md-tooltip-width:20rem}.md-tooltip{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:clamp(var(--md-tooltip-0,0rem) + .8rem,var(--md-tooltip-x),100vw + var(--md-tooltip-0,0rem) + .8rem - var(--md-tooltip-width) - 2 * .8rem);max-height:0;max-width:calc(100vw - 1.6rem);opacity:0;position:absolute;top:var(--md-tooltip-y);transform:translateY(-.4rem);transition:transform 0ms .25s,opacity .25s,max-height 0ms .25s,z-index .25s;width:var(--md-tooltip-width);z-index:0}:focus-within>.md-tooltip{max-height:1000%;opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height .25s,z-index 0ms}.focus-visible>.md-tooltip{outline:var(--md-accent-fg-color) auto}.md-tooltip__inner{font-size:.64rem;padding:.8rem}.md-tooltip__inner.md-typeset>:first-child{margin-top:0}.md-tooltip__inner.md-typeset>:last-child{margin-bottom:0}.md-annotation{outline:none;white-space:normal}[dir=rtl] .md-annotation{direction:rtl}.md-annotation:not([hidden]){display:inline-block;line-height:1.325}.md-annotation:focus-within>*{z-index:2}.md-annotation__inner{font-family:var(--md-text-font-family);top:calc(var(--md-tooltip-y) + 1.2ch)}:not(:focus-within)>.md-annotation__inner{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.md-annotation__index{color:#fff;cursor:pointer;margin:0 1ch;position:relative;transition:z-index .25s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0}.md-annotation__index:after{background-color:var(--md-default-fg-color--lighter);border-radius:2ch;content:"";height:2.2ch;left:-.126em;margin:0 -.4ch;padding:0 .4ch;position:absolute;transition:color .25s,background-color .25s;width:calc(100% + 1.2ch);width:max(2.2ch,100% + 1.2ch);z-index:-1}@media not all and (prefers-reduced-motion){[data-md-visible]>.md-annotation__index:after{-webkit-animation:pulse 2s infinite;animation:pulse 2s infinite}}:-webkit-any(:focus-within,:hover)>.md-annotation__index:after{background-color:var(--md-accent-fg-color)}:-moz-any(:focus-within,:hover)>.md-annotation__index:after{background-color:var(--md-accent-fg-color)}:is(:focus-within,:hover)>.md-annotation__index:after{background-color:var(--md-accent-fg-color)}:focus-within>.md-annotation__index:after{-webkit-animation:none;animation:none;transition:color .25s,background-color .25s}.md-annotation__index [data-md-annotation-id]{display:inline-block;line-height:90%}.md-annotation__index [data-md-annotation-id]:before{content:attr(data-md-annotation-id);display:inline-block;padding-bottom:.1em;transform:scale(1.15);transition:transform .4s cubic-bezier(.1,.7,.1,1);vertical-align:.065em}@media not print{.md-annotation__index [data-md-annotation-id]:before{content:"+"}:focus-within>.md-annotation__index [data-md-annotation-id]:before{transform:scale(1.25) rotate(45deg)}}:-webkit-any(:focus-within,:hover)>.md-annotation__index{color:var(--md-accent-bg-color)}:-moz-any(:focus-within,:hover)>.md-annotation__index{color:var(--md-accent-bg-color)}:is(:focus-within,:hover)>.md-annotation__index{color:var(--md-accent-bg-color)}:focus-within>.md-annotation__index{-webkit-animation:none;animation:none;transition:none}[dir=ltr] .md-top{margin-left:50%}[dir=rtl] .md-top{margin-right:50%}.md-top{background-color:var(--md-default-bg-color);border-radius:1.6rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color--light);display:block;font-size:.7rem;outline:none;padding:.4rem .8rem;position:fixed;top:3.2rem;transform:translate(-50%);transition:color 125ms,background-color 125ms,transform 125ms cubic-bezier(.4,0,.2,1),opacity 125ms;z-index:2}@media print{.md-top{display:none}}[dir=rtl] .md-top{transform:translate(50%)}.md-top[hidden]{opacity:0;pointer-events:none;transform:translate(-50%,.2rem);transition-duration:0ms}[dir=rtl] .md-top[hidden]{transform:translate(50%,.2rem)}.md-top:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top:is(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top svg{display:inline-block;vertical-align:-.5em}@-webkit-keyframes hoverfix{0%{pointer-events:none}}@keyframes hoverfix{0%{pointer-events:none}}:root{--md-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-version{flex-shrink:0;font-size:.8rem;height:2.4rem}[dir=ltr] .md-version__current{margin-left:1.4rem;margin-right:.4rem}[dir=rtl] .md-version__current{margin-left:.4rem;margin-right:1.4rem}.md-version__current{color:inherit;cursor:pointer;outline:none;position:relative;top:.05rem}[dir=ltr] .md-version__current:after{margin-left:.4rem}[dir=rtl] .md-version__current:after{margin-right:.4rem}.md-version__current:after{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-image:var(--md-version-icon);mask-image:var(--md-version-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;width:.4rem}.md-version__list{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);list-style-type:none;margin:.2rem .8rem;max-height:0;opacity:0;overflow:auto;padding:0;position:absolute;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;top:.15rem;transition:max-height 0ms .5s,opacity .25s .25s;z-index:3}.md-version:-webkit-any(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;-webkit-transition:max-height 0ms,opacity .25s;transition:max-height 0ms,opacity .25s}.md-version:-moz-any(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;-moz-transition:max-height 0ms,opacity .25s;transition:max-height 0ms,opacity .25s}.md-version:is(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;transition:max-height 0ms,opacity .25s}@media (pointer:coarse){.md-version:hover .md-version__list{-webkit-animation:hoverfix .25s forwards;animation:hoverfix .25s forwards}.md-version:focus-within .md-version__list{-webkit-animation:none;animation:none}}.md-version__item{line-height:1.8rem}[dir=ltr] .md-version__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-version__link{padding-left:1.2rem;padding-right:.6rem}.md-version__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:color .25s,background-color .25s;white-space:nowrap;width:100%}.md-version__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:focus{background-color:var(--md-default-fg-color--lightest)}:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,')}.md-typeset :-webkit-any(.admonition,details){background-color:var(--md-admonition-bg-color);border:0 solid #448aff;border-radius:.1rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid}.md-typeset :-moz-any(.admonition,details){background-color:var(--md-admonition-bg-color);border:0 solid #448aff;border-radius:.1rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid}[dir=ltr] .md-typeset :-webkit-any(.admonition,details){border-left-width:.2rem}[dir=ltr] .md-typeset :-moz-any(.admonition,details){border-left-width:.2rem}[dir=ltr] .md-typeset :is(.admonition,details){border-left-width:.2rem}[dir=rtl] .md-typeset :-webkit-any(.admonition,details){border-right-width:.2rem}[dir=rtl] .md-typeset :-moz-any(.admonition,details){border-right-width:.2rem}[dir=rtl] .md-typeset :is(.admonition,details){border-right-width:.2rem}.md-typeset :is(.admonition,details){background-color:var(--md-admonition-bg-color);border:0 solid #448aff;border-radius:.1rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid}@media print{.md-typeset :-webkit-any(.admonition,details){box-shadow:none}.md-typeset :-moz-any(.admonition,details){box-shadow:none}.md-typeset :is(.admonition,details){box-shadow:none}}.md-typeset :-webkit-any(.admonition,details)>*{box-sizing:border-box}.md-typeset :-moz-any(.admonition,details)>*{box-sizing:border-box}.md-typeset :is(.admonition,details)>*{box-sizing:border-box}.md-typeset :-webkit-any(.admonition,details) :-webkit-any(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset :-moz-any(.admonition,details) :-moz-any(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset :is(.admonition,details) :is(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset :-webkit-any(.admonition,details) .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset :-moz-any(.admonition,details) .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset :is(.admonition,details) .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset :-webkit-any(.admonition,details) .md-typeset__table{padding:0 .6rem}.md-typeset :-moz-any(.admonition,details) .md-typeset__table{padding:0 .6rem}.md-typeset :is(.admonition,details) .md-typeset__table{padding:0 .6rem}.md-typeset :-webkit-any(.admonition,details)>.tabbed-set:only-child{margin-top:0}.md-typeset :-moz-any(.admonition,details)>.tabbed-set:only-child{margin-top:0}.md-typeset :is(.admonition,details)>.tabbed-set:only-child{margin-top:0}html .md-typeset :-webkit-any(.admonition,details)>:last-child{margin-bottom:.6rem}html .md-typeset :-moz-any(.admonition,details)>:last-child{margin-bottom:.6rem}html .md-typeset :is(.admonition,details)>:last-child{margin-bottom:.6rem}.md-typeset :-webkit-any(.admonition-title,summary){background-color:rgba(68,138,255,.1);border:none;font-weight:700;margin-bottom:0;margin-top:0;padding-bottom:.4rem;padding-top:.4rem;position:relative}.md-typeset :-moz-any(.admonition-title,summary){background-color:rgba(68,138,255,.1);border:none;font-weight:700;margin-bottom:0;margin-top:0;padding-bottom:.4rem;padding-top:.4rem;position:relative}[dir=ltr] .md-typeset :-webkit-any(.admonition-title,summary){margin-left:-.8rem;margin-right:-.6rem}[dir=ltr] .md-typeset :-moz-any(.admonition-title,summary){margin-left:-.8rem;margin-right:-.6rem}[dir=ltr] .md-typeset :is(.admonition-title,summary){margin-left:-.8rem;margin-right:-.6rem}[dir=rtl] .md-typeset :-webkit-any(.admonition-title,summary){margin-left:-.6rem;margin-right:-.8rem}[dir=rtl] .md-typeset :-moz-any(.admonition-title,summary){margin-left:-.6rem;margin-right:-.8rem}[dir=rtl] .md-typeset :is(.admonition-title,summary){margin-left:-.6rem;margin-right:-.8rem}[dir=ltr] .md-typeset :-webkit-any(.admonition-title,summary){padding-left:2.2rem;padding-right:.6rem}[dir=ltr] .md-typeset :-moz-any(.admonition-title,summary){padding-left:2.2rem;padding-right:.6rem}[dir=ltr] .md-typeset :is(.admonition-title,summary){padding-left:2.2rem;padding-right:.6rem}[dir=rtl] .md-typeset :-webkit-any(.admonition-title,summary){padding-left:.6rem;padding-right:2.2rem}[dir=rtl] .md-typeset :-moz-any(.admonition-title,summary){padding-left:.6rem;padding-right:2.2rem}[dir=rtl] .md-typeset :is(.admonition-title,summary){padding-left:.6rem;padding-right:2.2rem}[dir=ltr] .md-typeset :-webkit-any(.admonition-title,summary){border-left-width:.2rem}[dir=ltr] .md-typeset :-moz-any(.admonition-title,summary){border-left-width:.2rem}[dir=ltr] .md-typeset :is(.admonition-title,summary){border-left-width:.2rem}[dir=rtl] .md-typeset :-webkit-any(.admonition-title,summary){border-right-width:.2rem}[dir=rtl] .md-typeset :-moz-any(.admonition-title,summary){border-right-width:.2rem}[dir=rtl] .md-typeset :is(.admonition-title,summary){border-right-width:.2rem}[dir=ltr] .md-typeset :-webkit-any(.admonition-title,summary){border-top-left-radius:.1rem}[dir=ltr] .md-typeset :-moz-any(.admonition-title,summary){border-top-left-radius:.1rem}[dir=ltr] .md-typeset :is(.admonition-title,summary){border-top-left-radius:.1rem}[dir=rtl] .md-typeset :-webkit-any(.admonition-title,summary){border-top-right-radius:.1rem}[dir=rtl] .md-typeset :-moz-any(.admonition-title,summary){border-top-right-radius:.1rem}[dir=rtl] .md-typeset :is(.admonition-title,summary){border-top-right-radius:.1rem}[dir=ltr] .md-typeset :-webkit-any(.admonition-title,summary){border-top-right-radius:.1rem}[dir=ltr] .md-typeset :-moz-any(.admonition-title,summary){border-top-right-radius:.1rem}[dir=ltr] .md-typeset :is(.admonition-title,summary){border-top-right-radius:.1rem}[dir=rtl] .md-typeset :-webkit-any(.admonition-title,summary){border-top-left-radius:.1rem}[dir=rtl] .md-typeset :-moz-any(.admonition-title,summary){border-top-left-radius:.1rem}[dir=rtl] .md-typeset :is(.admonition-title,summary){border-top-left-radius:.1rem}.md-typeset :is(.admonition-title,summary){background-color:rgba(68,138,255,.1);border:none;font-weight:700;margin-bottom:0;margin-top:0;padding-bottom:.4rem;padding-top:.4rem;position:relative}html .md-typeset :-webkit-any(.admonition-title,summary):last-child{margin-bottom:0}html .md-typeset :-moz-any(.admonition-title,summary):last-child{margin-bottom:0}html .md-typeset :is(.admonition-title,summary):last-child{margin-bottom:0}.md-typeset :-webkit-any(.admonition-title,summary):before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset :-moz-any(.admonition-title,summary):before{background-color:#448aff;content:"";height:1rem;mask-image:var(--md-admonition-icon--note);mask-repeat:no-repeat;mask-size:contain;position:absolute;top:.625em;width:1rem}[dir=ltr] .md-typeset :-webkit-any(.admonition-title,summary):before{left:.8rem}[dir=ltr] .md-typeset :-moz-any(.admonition-title,summary):before{left:.8rem}[dir=ltr] .md-typeset :is(.admonition-title,summary):before{left:.8rem}[dir=rtl] .md-typeset :-webkit-any(.admonition-title,summary):before{right:.8rem}[dir=rtl] .md-typeset :-moz-any(.admonition-title,summary):before{right:.8rem}[dir=rtl] .md-typeset :is(.admonition-title,summary):before{right:.8rem}.md-typeset :is(.admonition-title,summary):before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.note){border-color:#448aff}.md-typeset :-moz-any(.admonition,details):-moz-any(.note){border-color:#448aff}.md-typeset :is(.admonition,details):is(.note){border-color:#448aff}.md-typeset :-webkit-any(.note)>:-webkit-any(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :-moz-any(.note)>:-moz-any(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :is(.note)>:is(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :-webkit-any(.note)>:-webkit-any(.admonition-title,summary):before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.note)>:-moz-any(.admonition-title,summary):before{background-color:#448aff;mask-image:var(--md-admonition-icon--note);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.note)>:is(.admonition-title,summary):before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :-moz-any(.admonition,details):-moz-any(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :is(.admonition,details):is(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :-webkit-any(.abstract,.summary,.tldr)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :-moz-any(.abstract,.summary,.tldr)>:-moz-any(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :is(.abstract,.summary,.tldr)>:is(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :-webkit-any(.abstract,.summary,.tldr)>:-webkit-any(.admonition-title,summary):before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.abstract,.summary,.tldr)>:-moz-any(.admonition-title,summary):before{background-color:#00b0ff;mask-image:var(--md-admonition-icon--abstract);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.abstract,.summary,.tldr)>:is(.admonition-title,summary):before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.info,.todo){border-color:#00b8d4}.md-typeset :-moz-any(.admonition,details):-moz-any(.info,.todo){border-color:#00b8d4}.md-typeset :is(.admonition,details):is(.info,.todo){border-color:#00b8d4}.md-typeset :-webkit-any(.info,.todo)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :-moz-any(.info,.todo)>:-moz-any(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :is(.info,.todo)>:is(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :-webkit-any(.info,.todo)>:-webkit-any(.admonition-title,summary):before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.info,.todo)>:-moz-any(.admonition-title,summary):before{background-color:#00b8d4;mask-image:var(--md-admonition-icon--info);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.info,.todo)>:is(.admonition-title,summary):before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :-moz-any(.admonition,details):-moz-any(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :is(.admonition,details):is(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :-webkit-any(.tip,.hint,.important)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :-moz-any(.tip,.hint,.important)>:-moz-any(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :is(.tip,.hint,.important)>:is(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :-webkit-any(.tip,.hint,.important)>:-webkit-any(.admonition-title,summary):before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.tip,.hint,.important)>:-moz-any(.admonition-title,summary):before{background-color:#00bfa5;mask-image:var(--md-admonition-icon--tip);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.tip,.hint,.important)>:is(.admonition-title,summary):before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.success,.check,.done){border-color:#00c853}.md-typeset :-moz-any(.admonition,details):-moz-any(.success,.check,.done){border-color:#00c853}.md-typeset :is(.admonition,details):is(.success,.check,.done){border-color:#00c853}.md-typeset :-webkit-any(.success,.check,.done)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :-moz-any(.success,.check,.done)>:-moz-any(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :is(.success,.check,.done)>:is(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :-webkit-any(.success,.check,.done)>:-webkit-any(.admonition-title,summary):before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.success,.check,.done)>:-moz-any(.admonition-title,summary):before{background-color:#00c853;mask-image:var(--md-admonition-icon--success);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.success,.check,.done)>:is(.admonition-title,summary):before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.question,.help,.faq){border-color:#64dd17}.md-typeset :-moz-any(.admonition,details):-moz-any(.question,.help,.faq){border-color:#64dd17}.md-typeset :is(.admonition,details):is(.question,.help,.faq){border-color:#64dd17}.md-typeset :-webkit-any(.question,.help,.faq)>:-webkit-any(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :-moz-any(.question,.help,.faq)>:-moz-any(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :is(.question,.help,.faq)>:is(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :-webkit-any(.question,.help,.faq)>:-webkit-any(.admonition-title,summary):before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.question,.help,.faq)>:-moz-any(.admonition-title,summary):before{background-color:#64dd17;mask-image:var(--md-admonition-icon--question);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.question,.help,.faq)>:is(.admonition-title,summary):before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :-moz-any(.admonition,details):-moz-any(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :is(.admonition,details):is(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :-webkit-any(.warning,.caution,.attention)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :-moz-any(.warning,.caution,.attention)>:-moz-any(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :is(.warning,.caution,.attention)>:is(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :-webkit-any(.warning,.caution,.attention)>:-webkit-any(.admonition-title,summary):before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.warning,.caution,.attention)>:-moz-any(.admonition-title,summary):before{background-color:#ff9100;mask-image:var(--md-admonition-icon--warning);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.warning,.caution,.attention)>:is(.admonition-title,summary):before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :-moz-any(.admonition,details):-moz-any(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :is(.admonition,details):is(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :-webkit-any(.failure,.fail,.missing)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :-moz-any(.failure,.fail,.missing)>:-moz-any(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :is(.failure,.fail,.missing)>:is(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :-webkit-any(.failure,.fail,.missing)>:-webkit-any(.admonition-title,summary):before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.failure,.fail,.missing)>:-moz-any(.admonition-title,summary):before{background-color:#ff5252;mask-image:var(--md-admonition-icon--failure);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.failure,.fail,.missing)>:is(.admonition-title,summary):before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.danger,.error){border-color:#ff1744}.md-typeset :-moz-any(.admonition,details):-moz-any(.danger,.error){border-color:#ff1744}.md-typeset :is(.admonition,details):is(.danger,.error){border-color:#ff1744}.md-typeset :-webkit-any(.danger,.error)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :-moz-any(.danger,.error)>:-moz-any(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :is(.danger,.error)>:is(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :-webkit-any(.danger,.error)>:-webkit-any(.admonition-title,summary):before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.danger,.error)>:-moz-any(.admonition-title,summary):before{background-color:#ff1744;mask-image:var(--md-admonition-icon--danger);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.danger,.error)>:is(.admonition-title,summary):before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.bug){border-color:#f50057}.md-typeset :-moz-any(.admonition,details):-moz-any(.bug){border-color:#f50057}.md-typeset :is(.admonition,details):is(.bug){border-color:#f50057}.md-typeset :-webkit-any(.bug)>:-webkit-any(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :-moz-any(.bug)>:-moz-any(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :is(.bug)>:is(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :-webkit-any(.bug)>:-webkit-any(.admonition-title,summary):before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.bug)>:-moz-any(.admonition-title,summary):before{background-color:#f50057;mask-image:var(--md-admonition-icon--bug);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.bug)>:is(.admonition-title,summary):before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.example){border-color:#7c4dff}.md-typeset :-moz-any(.admonition,details):-moz-any(.example){border-color:#7c4dff}.md-typeset :is(.admonition,details):is(.example){border-color:#7c4dff}.md-typeset :-webkit-any(.example)>:-webkit-any(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :-moz-any(.example)>:-moz-any(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :is(.example)>:is(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :-webkit-any(.example)>:-webkit-any(.admonition-title,summary):before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.example)>:-moz-any(.admonition-title,summary):before{background-color:#7c4dff;mask-image:var(--md-admonition-icon--example);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.example)>:is(.admonition-title,summary):before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.quote,.cite){border-color:#9e9e9e}.md-typeset :-moz-any(.admonition,details):-moz-any(.quote,.cite){border-color:#9e9e9e}.md-typeset :is(.admonition,details):is(.quote,.cite){border-color:#9e9e9e}.md-typeset :-webkit-any(.quote,.cite)>:-webkit-any(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :-moz-any(.quote,.cite)>:-moz-any(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :is(.quote,.cite)>:is(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :-webkit-any(.quote,.cite)>:-webkit-any(.admonition-title,summary):before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.quote,.cite)>:-moz-any(.admonition-title,summary):before{background-color:#9e9e9e;mask-image:var(--md-admonition-icon--quote);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.quote,.cite)>:is(.admonition-title,summary):before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}:root{--md-footnotes-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}[dir=ltr] .md-typeset .footnote>ol{margin-left:0}[dir=rtl] .md-typeset .footnote>ol{margin-right:0}.md-typeset .footnote>ol>li{transition:color 125ms}.md-typeset .footnote>ol>li:target{color:var(--md-default-fg-color)}.md-typeset .footnote>ol>li:focus-within .footnote-backref{opacity:1;transform:translateX(0);transition:none}.md-typeset .footnote>ol>li:-webkit-any(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li:-moz-any(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li:is(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li>:first-child{margin-top:0}.md-typeset .footnote-ref{font-size:.75em;font-weight:700}html .md-typeset .footnote-ref{outline-offset:.1rem}.md-typeset [id^="fnref:"]:target>.footnote-ref{outline:auto}.md-typeset .footnote-backref{color:var(--md-typeset-a-color);display:inline-block;font-size:0;opacity:0;transform:translateX(.25rem);transition:color .25s,transform .25s .25s,opacity 125ms .25s;vertical-align:text-bottom}@media print{.md-typeset .footnote-backref{color:var(--md-typeset-a-color);opacity:1;transform:translateX(0)}}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-.25rem)}.md-typeset .footnote-backref:hover{color:var(--md-accent-fg-color)}.md-typeset .footnote-backref:before{background-color:currentcolor;content:"";display:inline-block;height:.8rem;-webkit-mask-image:var(--md-footnotes-icon);mask-image:var(--md-footnotes-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.8rem}[dir=rtl] .md-typeset .footnote-backref:before svg{transform:scaleX(-1)}[dir=ltr] .md-typeset .headerlink{margin-left:.5rem}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem}.md-typeset .headerlink{color:var(--md-default-fg-color--lighter);display:inline-block;opacity:0;transition:color .25s,opacity 125ms}@media print{.md-typeset .headerlink{display:none}}.md-typeset .headerlink:focus,.md-typeset :-webkit-any(:hover,:target)>.headerlink{opacity:1;-webkit-transition:color .25s,opacity 125ms;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset :-moz-any(:hover,:target)>.headerlink{opacity:1;-moz-transition:color .25s,opacity 125ms;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset :is(:hover,:target)>.headerlink{opacity:1;transition:color .25s,opacity 125ms}.md-typeset .headerlink:-webkit-any(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset .headerlink:-moz-any(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset .headerlink:is(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset :target{--md-scroll-margin:3.6rem;--md-scroll-offset:0rem;scroll-margin-top:calc(var(--md-scroll-margin) - var(--md-scroll-offset))}@media screen and (min-width:76.25em){.md-header--lifted~.md-container .md-typeset :target{--md-scroll-margin:6rem}}.md-typeset :-webkit-any(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset :-moz-any(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset :is(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset h4:target{--md-scroll-offset:0.15rem}.md-typeset div.arithmatex{overflow:auto}@media screen and (max-width:44.9375em){.md-typeset div.arithmatex{margin:0 -.8rem}}.md-typeset div.arithmatex>*{margin-left:auto!important;margin-right:auto!important;padding:0 .8rem;touch-action:auto;width:-webkit-min-content;width:-moz-min-content;width:min-content}.md-typeset div.arithmatex>* mjx-container{margin:0!important}.md-typeset :-webkit-any(del,ins,.comment).critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset :-moz-any(del,ins,.comment).critic{box-decoration-break:clone}.md-typeset :is(del,ins,.comment).critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset del.critic{background-color:var(--md-typeset-del-color)}.md-typeset ins.critic{background-color:var(--md-typeset-ins-color)}.md-typeset .critic.comment{color:var(--md-code-hl-comment-color)}.md-typeset .critic.comment:before{content:"/* "}.md-typeset .critic.comment:after{content:" */"}.md-typeset .critic.block{box-shadow:none;display:block;margin:1em 0;overflow:auto;padding-left:.8rem;padding-right:.8rem}.md-typeset .critic.block>:first-child{margin-top:.5em}.md-typeset .critic.block>:last-child{margin-bottom:.5em}:root{--md-details-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset details{display:flow-root;overflow:visible;padding-top:0}.md-typeset details[open]>summary:after{transform:rotate(90deg)}.md-typeset details:not([open]){box-shadow:none;padding-bottom:0}.md-typeset details:not([open])>summary{border-radius:.1rem}[dir=ltr] .md-typeset summary{padding-right:1.8rem}[dir=rtl] .md-typeset summary{padding-left:1.8rem}[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset summary{cursor:pointer;display:block;min-height:1rem}.md-typeset summary.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset summary:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[dir=ltr] .md-typeset summary:after{right:.4rem}[dir=rtl] .md-typeset summary:after{left:.4rem}.md-typeset summary:after{background-color:currentcolor;content:"";height:1rem;-webkit-mask-image:var(--md-details-icon);mask-image:var(--md-details-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;transform:rotate(0deg);transition:transform .25s;width:1rem}[dir=rtl] .md-typeset summary:after{transform:rotate(180deg)}.md-typeset summary::marker{display:none}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset :-webkit-any(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :-moz-any(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :is(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :-webkit-any(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.md-typeset :-moz-any(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.md-typeset :is(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.highlight :-webkit-any(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight :-moz-any(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight :is(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight .p{color:var(--md-code-hl-punctuation-color)}.highlight :-webkit-any(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :-moz-any(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :is(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :-webkit-any(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :-moz-any(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :is(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :-webkit-any(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :-moz-any(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :is(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :-webkit-any(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :-moz-any(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :is(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :-webkit-any(.kc,.n){color:var(--md-code-hl-name-color)}.highlight :-moz-any(.kc,.n){color:var(--md-code-hl-name-color)}.highlight :is(.kc,.n){color:var(--md-code-hl-name-color)}.highlight :-webkit-any(.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :-moz-any(.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :is(.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :-webkit-any(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :-moz-any(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :is(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :-webkit-any(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :-moz-any(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :is(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :-webkit-any(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :-moz-any(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :is(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :-webkit-any(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :-moz-any(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :is(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :-webkit-any(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :-moz-any(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :is(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :-webkit-any(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight :-moz-any(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight :is(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight .gd{background-color:var(--md-typeset-del-color)}.highlight .gi{background-color:var(--md-typeset-ins-color)}.highlight .hll{background-color:var(--md-code-hl-color);display:block;margin:0 -1.1764705882em;padding:0 1.1764705882em}.highlight span.filename{background-color:var(--md-code-bg-color);border-bottom:.05rem solid var(--md-default-fg-color--lightest);border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:flow-root;font-size:.85em;font-weight:700;margin-top:1em;padding:.6617647059em 1.1764705882em;position:relative}.highlight span.filename+pre{margin-top:0}.highlight span.filename+pre>code{border-top-left-radius:0;border-top-right-radius:0}.highlight [data-linenos]:before{background-color:var(--md-code-bg-color);box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;color:var(--md-default-fg-color--light);content:attr(data-linenos);float:left;left:-1.1764705882em;margin-left:-1.1764705882em;margin-right:1.1764705882em;padding-left:1.1764705882em;position:-webkit-sticky;position:sticky;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:3}.highlight code a[id]{position:absolute;visibility:hidden}.highlight code[data-md-copying] .hll{display:contents}.highlight code[data-md-copying] .md-annotation{display:none}.highlighttable{display:flow-root}.highlighttable :-webkit-any(tbody,td){display:block;padding:0}.highlighttable :-moz-any(tbody,td){display:block;padding:0}.highlighttable :is(tbody,td){display:block;padding:0}.highlighttable tr{display:flex}.highlighttable pre{margin:0}.highlighttable th.filename{flex-grow:1;padding:0;text-align:left}.highlighttable th.filename span.filename{margin-top:0}.highlighttable .linenos{background-color:var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-top-left-radius:.1rem;font-size:.85em;padding:.7720588235em 0 .7720588235em 1.1764705882em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.highlighttable .linenodiv{box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;padding-right:.5882352941em}.highlighttable .linenodiv pre{color:var(--md-default-fg-color--light);text-align:right}.highlighttable .code{flex:1;min-width:0}.linenodiv a{color:inherit}.md-typeset .highlighttable{direction:ltr;margin:1em 0}.md-typeset .highlighttable>tbody>tr>.code>div>pre>code{border-bottom-left-radius:0;border-top-left-radius:0}.md-typeset .highlight+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset .highlight+.result:after{clear:both;content:"";display:block}@media screen and (max-width:44.9375em){.md-content__inner>.highlight{margin:1em -.8rem}.md-content__inner>.highlight>.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.code>div>pre>code,.md-content__inner>.highlight>.highlighttable>tbody>tr>.filename span.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.linenos,.md-content__inner>.highlight>pre>code{border-radius:0}.md-content__inner>.highlight+.result{border-left-width:0;border-radius:0;border-right-width:0;margin-left:-.8rem;margin-right:-.8rem}}.md-typeset .keys kbd:-webkit-any(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys kbd:-moz-any(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys kbd:is(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys span{color:var(--md-default-fg-color--light);padding:0 .2em}.md-typeset .keys .key-alt:before,.md-typeset .keys .key-left-alt:before,.md-typeset .keys .key-right-alt:before{content:"⎇";padding-right:.4em}.md-typeset .keys .key-command:before,.md-typeset .keys .key-left-command:before,.md-typeset .keys .key-right-command:before{content:"⌘";padding-right:.4em}.md-typeset .keys .key-control:before,.md-typeset .keys .key-left-control:before,.md-typeset .keys .key-right-control:before{content:"⌃";padding-right:.4em}.md-typeset .keys .key-left-meta:before,.md-typeset .keys .key-meta:before,.md-typeset .keys .key-right-meta:before{content:"◆";padding-right:.4em}.md-typeset .keys .key-left-option:before,.md-typeset .keys .key-option:before,.md-typeset .keys .key-right-option:before{content:"⌥";padding-right:.4em}.md-typeset .keys .key-left-shift:before,.md-typeset .keys .key-right-shift:before,.md-typeset .keys .key-shift:before{content:"⇧";padding-right:.4em}.md-typeset .keys .key-left-super:before,.md-typeset .keys .key-right-super:before,.md-typeset .keys .key-super:before{content:"❖";padding-right:.4em}.md-typeset .keys .key-left-windows:before,.md-typeset .keys .key-right-windows:before,.md-typeset .keys .key-windows:before{content:"⊞";padding-right:.4em}.md-typeset .keys .key-arrow-down:before{content:"↓";padding-right:.4em}.md-typeset .keys .key-arrow-left:before{content:"←";padding-right:.4em}.md-typeset .keys .key-arrow-right:before{content:"→";padding-right:.4em}.md-typeset .keys .key-arrow-up:before{content:"↑";padding-right:.4em}.md-typeset .keys .key-backspace:before{content:"⌫";padding-right:.4em}.md-typeset .keys .key-backtab:before{content:"⇤";padding-right:.4em}.md-typeset .keys .key-caps-lock:before{content:"⇪";padding-right:.4em}.md-typeset .keys .key-clear:before{content:"⌧";padding-right:.4em}.md-typeset .keys .key-context-menu:before{content:"☰";padding-right:.4em}.md-typeset .keys .key-delete:before{content:"⌦";padding-right:.4em}.md-typeset .keys .key-eject:before{content:"⏏";padding-right:.4em}.md-typeset .keys .key-end:before{content:"⤓";padding-right:.4em}.md-typeset .keys .key-escape:before{content:"⎋";padding-right:.4em}.md-typeset .keys .key-home:before{content:"⤒";padding-right:.4em}.md-typeset .keys .key-insert:before{content:"⎀";padding-right:.4em}.md-typeset .keys .key-page-down:before{content:"⇟";padding-right:.4em}.md-typeset .keys .key-page-up:before{content:"⇞";padding-right:.4em}.md-typeset .keys .key-print-screen:before{content:"⎙";padding-right:.4em}.md-typeset .keys .key-tab:after{content:"⇥";padding-left:.4em}.md-typeset .keys .key-num-enter:after{content:"⌤";padding-left:.4em}.md-typeset .keys .key-enter:after{content:"⏎";padding-left:.4em}:root{--md-tabbed-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-tabbed-icon--next:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .tabbed-set{border-radius:.1rem;display:flex;flex-flow:column wrap;margin:1em 0;position:relative}.md-typeset .tabbed-set>input{height:0;opacity:0;position:absolute;width:0}.md-typeset .tabbed-set>input:target{--md-scroll-offset:0.625em}.md-typeset .tabbed-labels{-ms-overflow-style:none;box-shadow:0 -.05rem var(--md-default-fg-color--lightest) inset;display:flex;max-width:100%;overflow:auto;scrollbar-width:none}@media print{.md-typeset .tabbed-labels{display:contents}}@media screen{.js .md-typeset .tabbed-labels{position:relative}.js .md-typeset .tabbed-labels:before{background:var(--md-accent-fg-color);bottom:0;content:"";display:block;height:2px;left:0;position:absolute;transform:translateX(var(--md-indicator-x));transition:width 225ms,transform .25s;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--md-indicator-width)}}.md-typeset .tabbed-labels::-webkit-scrollbar{display:none}.md-typeset .tabbed-labels>label{border-bottom:.1rem solid transparent;border-radius:.1rem .1rem 0 0;color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;font-size:.64rem;font-weight:700;padding:.78125em 1.25em .625em;scroll-margin-inline-start:1rem;transition:background-color .25s,color .25s;white-space:nowrap;width:auto}@media print{.md-typeset .tabbed-labels>label:first-child{order:1}.md-typeset .tabbed-labels>label:nth-child(2){order:2}.md-typeset .tabbed-labels>label:nth-child(3){order:3}.md-typeset .tabbed-labels>label:nth-child(4){order:4}.md-typeset .tabbed-labels>label:nth-child(5){order:5}.md-typeset .tabbed-labels>label:nth-child(6){order:6}.md-typeset .tabbed-labels>label:nth-child(7){order:7}.md-typeset .tabbed-labels>label:nth-child(8){order:8}.md-typeset .tabbed-labels>label:nth-child(9){order:9}.md-typeset .tabbed-labels>label:nth-child(10){order:10}.md-typeset .tabbed-labels>label:nth-child(11){order:11}.md-typeset .tabbed-labels>label:nth-child(12){order:12}.md-typeset .tabbed-labels>label:nth-child(13){order:13}.md-typeset .tabbed-labels>label:nth-child(14){order:14}.md-typeset .tabbed-labels>label:nth-child(15){order:15}.md-typeset .tabbed-labels>label:nth-child(16){order:16}.md-typeset .tabbed-labels>label:nth-child(17){order:17}.md-typeset .tabbed-labels>label:nth-child(18){order:18}.md-typeset .tabbed-labels>label:nth-child(19){order:19}.md-typeset .tabbed-labels>label:nth-child(20){order:20}}.md-typeset .tabbed-labels>label:hover{color:var(--md-accent-fg-color)}.md-typeset .tabbed-content{width:100%}@media print{.md-typeset .tabbed-content{display:contents}}.md-typeset .tabbed-block{display:none}@media print{.md-typeset .tabbed-block{display:block}.md-typeset .tabbed-block:first-child{order:1}.md-typeset .tabbed-block:nth-child(2){order:2}.md-typeset .tabbed-block:nth-child(3){order:3}.md-typeset .tabbed-block:nth-child(4){order:4}.md-typeset .tabbed-block:nth-child(5){order:5}.md-typeset .tabbed-block:nth-child(6){order:6}.md-typeset .tabbed-block:nth-child(7){order:7}.md-typeset .tabbed-block:nth-child(8){order:8}.md-typeset .tabbed-block:nth-child(9){order:9}.md-typeset .tabbed-block:nth-child(10){order:10}.md-typeset .tabbed-block:nth-child(11){order:11}.md-typeset .tabbed-block:nth-child(12){order:12}.md-typeset .tabbed-block:nth-child(13){order:13}.md-typeset .tabbed-block:nth-child(14){order:14}.md-typeset .tabbed-block:nth-child(15){order:15}.md-typeset .tabbed-block:nth-child(16){order:16}.md-typeset .tabbed-block:nth-child(17){order:17}.md-typeset .tabbed-block:nth-child(18){order:18}.md-typeset .tabbed-block:nth-child(19){order:19}.md-typeset .tabbed-block:nth-child(20){order:20}}.md-typeset .tabbed-block>.highlight:first-child>pre,.md-typeset .tabbed-block>pre:first-child{margin:0}.md-typeset .tabbed-block>.highlight:first-child>pre>code,.md-typeset .tabbed-block>pre:first-child>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child>.filename{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable{margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.filename span.filename,.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.linenos{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.code>div>pre>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child+.result{margin-top:-.125em}.md-typeset .tabbed-block>.tabbed-set{margin:0}.md-typeset .tabbed-button{align-self:center;border-radius:100%;color:var(--md-default-fg-color--light);cursor:pointer;display:block;height:.9rem;margin-top:.1rem;pointer-events:auto;transition:background-color .25s;width:.9rem}.md-typeset .tabbed-button:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .tabbed-button:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-tabbed-icon--prev);mask-image:var(--md-tabbed-icon--prev);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color .25s,transform .25s;width:100%}.md-typeset .tabbed-control{background:linear-gradient(to right,var(--md-default-bg-color) 60%,transparent);display:flex;height:1.9rem;justify-content:start;pointer-events:none;position:absolute;transition:opacity 125ms;width:1.2rem}[dir=rtl] .md-typeset .tabbed-control{transform:rotate(180deg)}.md-typeset .tabbed-control[hidden]{opacity:0}.md-typeset .tabbed-control--next{background:linear-gradient(to left,var(--md-default-bg-color) 60%,transparent);justify-content:end;right:0}.md-typeset .tabbed-control--next .tabbed-button:after{-webkit-mask-image:var(--md-tabbed-icon--next);mask-image:var(--md-tabbed-icon--next)}@media screen and (max-width:44.9375em){[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels{margin:0 -.8rem;max-width:100vw;scroll-padding-inline-start:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels:after{content:""}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-left:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-right:-.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{width:2rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-right:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-left:-.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{width:2rem}}@media screen{.md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){color:var(--md-accent-fg-color)}.md-typeset .no-js .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .no-js .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .no-js .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .no-js .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .no-js .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .no-js .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .no-js .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .no-js .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .no-js .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .no-js .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .no-js .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .no-js .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .no-js .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .no-js .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .no-js .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .no-js .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .no-js .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .no-js .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .no-js .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .no-js .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),.no-js .md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.no-js .md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.no-js .md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.no-js .md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.no-js .md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.no-js .md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.no-js .md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.no-js .md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.no-js .md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.no-js .md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.no-js .md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.no-js .md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.no-js .md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.no-js .md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.no-js .md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.no-js .md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.no-js .md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.no-js .md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.no-js .md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.no-js .md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){border-color:var(--md-accent-fg-color)}}.md-typeset .tabbed-set>input:first-child.focus-visible~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10).focus-visible~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11).focus-visible~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12).focus-visible~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13).focus-visible~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14).focus-visible~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15).focus-visible~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16).focus-visible~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17).focus-visible~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18).focus-visible~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19).focus-visible~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2).focus-visible~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20).focus-visible~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3).focus-visible~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4).focus-visible~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5).focus-visible~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6).focus-visible~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7).focus-visible~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8).focus-visible~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9).focus-visible~.tabbed-labels>:nth-child(9){background-color:var(--md-accent-fg-color--transparent)}.md-typeset .tabbed-set>input:first-child:checked~.tabbed-content>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-content>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-content>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-content>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-content>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-content>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-content>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-content>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-content>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-content>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-content>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-content>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-content>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-content>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-content>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-content>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-content>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-content>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-content>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-content>:nth-child(9){display:block}:root{--md-tasklist-icon:url('data:image/svg+xml;charset=utf-8,');--md-tasklist-icon--checked:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .task-list-item{list-style-type:none;position:relative}[dir=ltr] .md-typeset .task-list-item [type=checkbox]{left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}[dir=ltr] .md-typeset .task-list-indicator:before{left:-1.5em}[dir=rtl] .md-typeset .task-list-indicator:before{right:-1.5em}.md-typeset .task-list-indicator:before{background-color:var(--md-default-fg-color--lightest);content:"";height:1.25em;-webkit-mask-image:var(--md-tasklist-icon);mask-image:var(--md-tasklist-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.15em;width:1.25em}.md-typeset [type=checkbox]:checked+.task-list-indicator:before{background-color:#00e676;-webkit-mask-image:var(--md-tasklist-icon--checked);mask-image:var(--md-tasklist-icon--checked)}:root>*{--md-mermaid-font-family:var(--md-text-font-family),sans-serif;--md-mermaid-edge-color:var(--md-code-fg-color);--md-mermaid-node-bg-color:var(--md-accent-fg-color--transparent);--md-mermaid-node-fg-color:var(--md-accent-fg-color);--md-mermaid-label-bg-color:var(--md-default-bg-color);--md-mermaid-label-fg-color:var(--md-code-fg-color)}.mermaid{line-height:normal;margin:1em 0}@media screen and (min-width:45em){[dir=ltr] .md-typeset .inline{margin-right:.8rem}[dir=rtl] .md-typeset .inline{margin-left:.8rem}.md-typeset .inline{float:left;margin-bottom:.8rem;margin-top:0;width:11.7rem}[dir=rtl] .md-typeset .inline{float:right}[dir=ltr] .md-typeset .inline.end{margin-left:.8rem;margin-right:0}[dir=rtl] .md-typeset .inline.end{margin-left:0;margin-right:.8rem}.md-typeset .inline.end{float:right}[dir=rtl] .md-typeset .inline.end{float:left}} \ No newline at end of file diff --git a/assets/stylesheets/main.69437709.min.css.map b/assets/stylesheets/main.69437709.min.css.map new file mode 100644 index 0000000..4c56066 --- /dev/null +++ b/assets/stylesheets/main.69437709.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["src/assets/stylesheets/main/extensions/pymdownx/_keys.scss","../../../src/assets/stylesheets/main.scss","src/assets/stylesheets/main/_resets.scss","src/assets/stylesheets/main/_colors.scss","src/assets/stylesheets/main/_icons.scss","src/assets/stylesheets/main/_typeset.scss","src/assets/stylesheets/utilities/_break.scss","src/assets/stylesheets/main/layout/_banner.scss","src/assets/stylesheets/main/layout/_base.scss","src/assets/stylesheets/main/layout/_clipboard.scss","src/assets/stylesheets/main/layout/_consent.scss","src/assets/stylesheets/main/layout/_content.scss","src/assets/stylesheets/main/layout/_dialog.scss","src/assets/stylesheets/main/layout/_feedback.scss","src/assets/stylesheets/main/layout/_footer.scss","src/assets/stylesheets/main/layout/_form.scss","src/assets/stylesheets/main/layout/_header.scss","src/assets/stylesheets/main/layout/_nav.scss","src/assets/stylesheets/main/layout/_search.scss","src/assets/stylesheets/main/layout/_select.scss","src/assets/stylesheets/main/layout/_sidebar.scss","src/assets/stylesheets/main/layout/_source.scss","src/assets/stylesheets/main/layout/_tabs.scss","src/assets/stylesheets/main/layout/_tag.scss","src/assets/stylesheets/main/layout/_tooltip.scss","src/assets/stylesheets/main/layout/_top.scss","src/assets/stylesheets/main/layout/_version.scss","src/assets/stylesheets/main/extensions/markdown/_admonition.scss","node_modules/material-design-color/material-color.scss","src/assets/stylesheets/main/extensions/markdown/_footnotes.scss","src/assets/stylesheets/main/extensions/markdown/_toc.scss","src/assets/stylesheets/main/extensions/pymdownx/_arithmatex.scss","src/assets/stylesheets/main/extensions/pymdownx/_critic.scss","src/assets/stylesheets/main/extensions/pymdownx/_details.scss","src/assets/stylesheets/main/extensions/pymdownx/_emoji.scss","src/assets/stylesheets/main/extensions/pymdownx/_highlight.scss","src/assets/stylesheets/main/extensions/pymdownx/_tabbed.scss","src/assets/stylesheets/main/extensions/pymdownx/_tasklist.scss","src/assets/stylesheets/main/integrations/_mermaid.scss","src/assets/stylesheets/main/_modifiers.scss"],"names":[],"mappings":"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CALA,UnC4lHN,CmC7kHM,aAII,6CACE,OnC4kHV,CmC7kHQ,8CACE,OnC+kHV,CmChlHQ,8CACE,OnCklHV,CmCnlHQ,8CACE,OnCqlHV,CmCtlHQ,8CACE,OnCwlHV,CmCzlHQ,8CACE,OnC2lHV,CmC5lHQ,8CACE,OnC8lHV,CmC/lHQ,8CACE,OnCimHV,CmClmHQ,8CACE,OnComHV,CmCrmHQ,+CACE,QnCumHV,CmCxmHQ,+CACE,QnC0mHV,CmC3mHQ,+CACE,QnC6mHV,CmC9mHQ,+CACE,QnCgnHV,CmCjnHQ,+CACE,QnCmnHV,CmCpnHQ,+CACE,QnCsnHV,CmCvnHQ,+CACE,QnCynHV,CmC1nHQ,+CACE,QnC4nHV,CmC7nHQ,+CACE,QnC+nHV,CmChoHQ,+CACE,QnCkoHV,CmCnoHQ,+CACE,QnCqoHV,CACF,CmChoHM,uCACE,+BnCkoHR,CmC5nHE,4BACE,UnC8nHJ,CmC3nHI,aAJF,4BAKI,gBnC8nHJ,CACF,CmC1nHE,0BACE,YnC4nHJ,CmCznHI,aAJF,0BAKI,anC4nHJ,CmCxnHM,sCACE,OnC0nHR,CmC3nHM,uCACE,OnC6nHR,CmC9nHM,uCACE,OnCgoHR,CmCjoHM,uCACE,OnCmoHR,CmCpoHM,uCACE,OnCsoHR,CmCvoHM,uCACE,OnCyoHR,CmC1oHM,uCACE,OnC4oHR,CmC7oHM,uCACE,OnC+oHR,CmChpHM,uCACE,OnCkpHR,CmCnpHM,wCACE,QnCqpHR,CmCtpHM,wCACE,QnCwpHR,CmCzpHM,wCACE,QnC2pHR,CmC5pHM,wCACE,QnC8pHR,CmC/pHM,wCACE,QnCiqHR,CmClqHM,wCACE,QnCoqHR,CmCrqHM,wCACE,QnCuqHR,CmCxqHM,wCACE,QnC0qHR,CmC3qHM,wCACE,QnC6qHR,CmC9qHM,wCACE,QnCgrHR,CmCjrHM,wCACE,QnCmrHR,CACF,CmC7qHI,+FAEE,QnC+qHN,CmC5qHM,yGACE,wBAAA,CACA,yBnC+qHR,CmCtqHM,2DAEE,wBAAA,CACA,yBAAA,CAFA,QnC0qHR,CmCnqHM,iEACE,QnCqqHR,CmClqHQ,qLAGE,wBAAA,CACA,yBAAA,CAFA,QnCsqHV,CmChqHQ,6FACE,wBAAA,CACA,yBnCkqHV,CmC7pHM,yDACE,kBnC+pHR,CmC1pHI,sCACE,QnC4pHN,CmCvpHE,2BAEE,iBAAA,CAKA,kBAAA,CADA,uCAAA,CAEA,cAAA,CAPA,aAAA,CAGA,YAAA,CACA,gBAAA,CAKA,mBAAA,CADA,gCAAA,CANA,WnCgqHJ,CmCtpHI,iCAEE,uDAAA,CADA,+BnCypHN,CmCppHI,iCAIE,6BAAA,CAOA,UAAA,CAVA,aAAA,CAEA,WAAA,CAKA,8CAAA,CAAA,sCAAA,CACA,6BAAA,CAAA,qBAAA,CACA,yBAAA,CAAA,iBAAA,CALA,+CACE,CAJF,UnC6pHN,CmC/oHE,4BAME,+EACE,CALF,YAAA,CAGA,aAAA,CAFA,qBAAA,CAUA,mBAAA,CAZA,iBAAA,CAWA,wBAAA,CARA,YnCqpHJ,CmCzoHI,sCACE,wBnC2oHN,CmCvoHI,oCACE,SnCyoHN,CmCroHI,kCAGE,8EACE,CAFF,mBAAA,CADA,OnCyoHN,CmC/nHM,uDACE,8CAAA,CAAA,sCnCioHR,CKhvHI,wC8B6HF,wDAGE,kBnCwnHF,CmC3nHA,wDAGE,mBnCwnHF,CmC3nHA,8CAEE,eAAA,CADA,eAAA,CAGA,iCnCunHF,CmCnnHE,8DACE,mBnCsnHJ,CmCvnHE,8DACE,kBnCsnHJ,CmCvnHE,oDAEE,UnCqnHJ,CmCjnHE,8EAEE,kBnConHJ,CmCtnHE,8EAEE,mBnConHJ,CmCtnHE,8EAGE,kBnCmnHJ,CmCtnHE,8EAGE,mBnCmnHJ,CmCtnHE,oEACE,UnCqnHJ,CmC/mHE,8EAEE,mBnCknHJ,CmCpnHE,8EAEE,kBnCknHJ,CmCpnHE,8EAGE,mBnCinHJ,CmCpnHE,8EAGE,kBnCinHJ,CmCpnHE,oEACE,UnCmnHJ,CACF,CmCrmHE,cAHF,olDAII,+BnCwmHF,CmCrmHE,g8GACE,sCnCumHJ,CACF,CmClmHA,4sDACE,uDnCqmHF,CmCjmHA,wmDACE,anComHF,CoCh9HA,MACE,mVAAA,CAEA,4VpCo9HF,CoC18HE,4BAEE,oBAAA,CADA,iBpC88HJ,CoCz8HI,sDAGE,SpC28HN,CoC98HI,sDAGE,UpC28HN,CoC98HI,4CACE,iBAAA,CACA,SpC48HN,CoCt8HE,+CAEE,SAAA,CADA,UpCy8HJ,CoCp8HE,kDAGE,WpC68HJ,CoCh9HE,kDAGE,YpC68HJ,CoCh9HE,wCAME,qDAAA,CAIA,UAAA,CALA,aAAA,CAEA,0CAAA,CAAA,kCAAA,CACA,6BAAA,CAAA,qBAAA,CACA,yBAAA,CAAA,iBAAA,CARA,iBAAA,CACA,SAAA,CAEA,YpC48HJ,CoCl8HE,gEACE,wBT0Wa,CSzWb,mDAAA,CAAA,2CpCo8HJ,CqCr/HA,QACE,8DAAA,CAGA,+CAAA,CACA,iEAAA,CACA,oDAAA,CACA,sDAAA,CACA,mDrCs/HF,CqCl/HA,SAEE,kBAAA,CADA,YrCs/HF,CK71HI,mCiChKA,8BAIE,kBtCkgIJ,CsCtgIE,8BAIE,iBtCkgIJ,CsCtgIE,oBACE,UAAA,CAIA,mBAAA,CAFA,YAAA,CADA,atCogIJ,CsC9/HI,8BACE,WtCggIN,CsC5/HI,kCAEE,iBAAA,CAAA,ctC8/HN,CsChgII,kCAEE,aAAA,CAAA,kBtC8/HN,CsChgII,wBACE,WtC+/HN,CsC3/HM,kCACE,UtC6/HR,CACF","file":"main.css"} \ No newline at end of file diff --git a/assets/stylesheets/palette.cbb835fc.min.css b/assets/stylesheets/palette.cbb835fc.min.css new file mode 100644 index 0000000..30f9264 --- /dev/null +++ b/assets/stylesheets/palette.cbb835fc.min.css @@ -0,0 +1 @@ +@media screen{[data-md-color-scheme=slate]{--md-hue:232;--md-default-fg-color:hsla(var(--md-hue),75%,95%,1);--md-default-fg-color--light:hsla(var(--md-hue),75%,90%,0.62);--md-default-fg-color--lighter:hsla(var(--md-hue),75%,90%,0.32);--md-default-fg-color--lightest:hsla(var(--md-hue),75%,90%,0.12);--md-default-bg-color:hsla(var(--md-hue),15%,21%,1);--md-default-bg-color--light:hsla(var(--md-hue),15%,21%,0.54);--md-default-bg-color--lighter:hsla(var(--md-hue),15%,21%,0.26);--md-default-bg-color--lightest:hsla(var(--md-hue),15%,21%,0.07);--md-code-fg-color:hsla(var(--md-hue),18%,86%,1);--md-code-bg-color:hsla(var(--md-hue),15%,15%,1);--md-code-hl-color:rgba(66,135,255,.15);--md-code-hl-number-color:#e6695b;--md-code-hl-special-color:#f06090;--md-code-hl-function-color:#c973d9;--md-code-hl-constant-color:#9383e2;--md-code-hl-keyword-color:#6791e0;--md-code-hl-string-color:#2fb170;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-mark-color:rgba(66,135,255,.3);--md-typeset-kbd-color:hsla(var(--md-hue),15%,94%,0.12);--md-typeset-kbd-accent-color:hsla(var(--md-hue),15%,94%,0.2);--md-typeset-kbd-border-color:hsla(var(--md-hue),15%,14%,1);--md-typeset-table-color:hsla(var(--md-hue),75%,95%,0.12);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-bg-color:hsla(var(--md-hue),15%,12%,0.87);--md-footer-bg-color--dark:hsla(var(--md-hue),15%,10%,1);--md-shadow-z1:0 0.2rem 0.5rem rgba(0,0,0,.2),0 0 0.05rem rgba(0,0,0,.1);--md-shadow-z2:0 0.2rem 0.5rem rgba(0,0,0,.3),0 0 0.05rem rgba(0,0,0,.25);--md-shadow-z3:0 0.2rem 0.5rem rgba(0,0,0,.4),0 0 0.05rem rgba(0,0,0,.35)}[data-md-color-scheme=slate] img[src$="#gh-light-mode-only"],[data-md-color-scheme=slate] img[src$="#only-light"]{display:none}[data-md-color-scheme=slate] img[src$="#gh-dark-mode-only"],[data-md-color-scheme=slate] img[src$="#only-dark"]{display:initial}[data-md-color-scheme=slate][data-md-color-primary=pink]{--md-typeset-a-color:#ed5487}[data-md-color-scheme=slate][data-md-color-primary=purple]{--md-typeset-a-color:#bd78c9}[data-md-color-scheme=slate][data-md-color-primary=deep-purple]{--md-typeset-a-color:#a682e3}[data-md-color-scheme=slate][data-md-color-primary=indigo]{--md-typeset-a-color:#6c91d5}[data-md-color-scheme=slate][data-md-color-primary=teal]{--md-typeset-a-color:#00ccb8}[data-md-color-scheme=slate][data-md-color-primary=green]{--md-typeset-a-color:#71c174}[data-md-color-scheme=slate][data-md-color-primary=deep-orange]{--md-typeset-a-color:#ff9575}[data-md-color-scheme=slate][data-md-color-primary=brown]{--md-typeset-a-color:#c7846b}[data-md-color-scheme=slate][data-md-color-primary=black],[data-md-color-scheme=slate][data-md-color-primary=blue-grey],[data-md-color-scheme=slate][data-md-color-primary=grey],[data-md-color-scheme=slate][data-md-color-primary=white]{--md-typeset-a-color:#6c91d5}[data-md-color-switching] *,[data-md-color-switching] :after,[data-md-color-switching] :before{transition-duration:0ms!important}}[data-md-color-accent=red]{--md-accent-fg-color:#ff1947;--md-accent-fg-color--transparent:rgba(255,25,71,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=pink]{--md-accent-fg-color:#f50056;--md-accent-fg-color--transparent:rgba(245,0,86,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=purple]{--md-accent-fg-color:#df41fb;--md-accent-fg-color--transparent:rgba(223,65,251,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=deep-purple]{--md-accent-fg-color:#7c4dff;--md-accent-fg-color--transparent:rgba(124,77,255,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=indigo]{--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:rgba(82,108,254,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=blue]{--md-accent-fg-color:#4287ff;--md-accent-fg-color--transparent:rgba(66,135,255,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=light-blue]{--md-accent-fg-color:#0091eb;--md-accent-fg-color--transparent:rgba(0,145,235,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=cyan]{--md-accent-fg-color:#00bad6;--md-accent-fg-color--transparent:rgba(0,186,214,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=teal]{--md-accent-fg-color:#00bda4;--md-accent-fg-color--transparent:rgba(0,189,164,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=green]{--md-accent-fg-color:#00c753;--md-accent-fg-color--transparent:rgba(0,199,83,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=light-green]{--md-accent-fg-color:#63de17;--md-accent-fg-color--transparent:rgba(99,222,23,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=lime]{--md-accent-fg-color:#b0eb00;--md-accent-fg-color--transparent:rgba(176,235,0,.1);--md-accent-bg-color:rgba(0,0,0,.87);--md-accent-bg-color--light:rgba(0,0,0,.54)}[data-md-color-accent=yellow]{--md-accent-fg-color:#ffd500;--md-accent-fg-color--transparent:rgba(255,213,0,.1);--md-accent-bg-color:rgba(0,0,0,.87);--md-accent-bg-color--light:rgba(0,0,0,.54)}[data-md-color-accent=amber]{--md-accent-fg-color:#fa0;--md-accent-fg-color--transparent:rgba(255,170,0,.1);--md-accent-bg-color:rgba(0,0,0,.87);--md-accent-bg-color--light:rgba(0,0,0,.54)}[data-md-color-accent=orange]{--md-accent-fg-color:#ff9100;--md-accent-fg-color--transparent:rgba(255,145,0,.1);--md-accent-bg-color:rgba(0,0,0,.87);--md-accent-bg-color--light:rgba(0,0,0,.54)}[data-md-color-accent=deep-orange]{--md-accent-fg-color:#ff6e42;--md-accent-fg-color--transparent:rgba(255,110,66,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=red]{--md-primary-fg-color:#ef5552;--md-primary-fg-color--light:#e57171;--md-primary-fg-color--dark:#e53734;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=pink]{--md-primary-fg-color:#e92063;--md-primary-fg-color--light:#ec417a;--md-primary-fg-color--dark:#c3185d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=purple]{--md-primary-fg-color:#ab47bd;--md-primary-fg-color--light:#bb69c9;--md-primary-fg-color--dark:#8c24a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=deep-purple]{--md-primary-fg-color:#7e56c2;--md-primary-fg-color--light:#9574cd;--md-primary-fg-color--dark:#673ab6;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=indigo]{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=blue]{--md-primary-fg-color:#2094f3;--md-primary-fg-color--light:#42a5f5;--md-primary-fg-color--dark:#1975d2;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=light-blue]{--md-primary-fg-color:#02a6f2;--md-primary-fg-color--light:#28b5f6;--md-primary-fg-color--dark:#0287cf;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=cyan]{--md-primary-fg-color:#00bdd6;--md-primary-fg-color--light:#25c5da;--md-primary-fg-color--dark:#0097a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=teal]{--md-primary-fg-color:#009485;--md-primary-fg-color--light:#26a699;--md-primary-fg-color--dark:#007a6c;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=green]{--md-primary-fg-color:#4cae4f;--md-primary-fg-color--light:#68bb6c;--md-primary-fg-color--dark:#398e3d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=light-green]{--md-primary-fg-color:#8bc34b;--md-primary-fg-color--light:#9ccc66;--md-primary-fg-color--dark:#689f38;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=lime]{--md-primary-fg-color:#cbdc38;--md-primary-fg-color--light:#d3e156;--md-primary-fg-color--dark:#b0b52c;--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54)}[data-md-color-primary=yellow]{--md-primary-fg-color:#ffec3d;--md-primary-fg-color--light:#ffee57;--md-primary-fg-color--dark:#fbc02d;--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54)}[data-md-color-primary=amber]{--md-primary-fg-color:#ffc105;--md-primary-fg-color--light:#ffc929;--md-primary-fg-color--dark:#ffa200;--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54)}[data-md-color-primary=orange]{--md-primary-fg-color:#ffa724;--md-primary-fg-color--light:#ffa724;--md-primary-fg-color--dark:#fa8900;--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54)}[data-md-color-primary=deep-orange]{--md-primary-fg-color:#ff6e42;--md-primary-fg-color--light:#ff8a66;--md-primary-fg-color--dark:#f4511f;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=brown]{--md-primary-fg-color:#795649;--md-primary-fg-color--light:#8d6e62;--md-primary-fg-color--dark:#5d4037;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=grey]{--md-primary-fg-color:#757575;--md-primary-fg-color--light:#9e9e9e;--md-primary-fg-color--dark:#616161;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-typeset-a-color:#4051b5}[data-md-color-primary=blue-grey]{--md-primary-fg-color:#546d78;--md-primary-fg-color--light:#607c8a;--md-primary-fg-color--dark:#455a63;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-typeset-a-color:#4051b5}[data-md-color-primary=light-green]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#72ad2e}[data-md-color-primary=lime]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#8b990a}[data-md-color-primary=yellow]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#b8a500}[data-md-color-primary=amber]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#d19d00}[data-md-color-primary=orange]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#e68a00}[data-md-color-primary=white]{--md-primary-fg-color:#fff;--md-primary-fg-color--light:hsla(0,0%,100%,.7);--md-primary-fg-color--dark:rgba(0,0,0,.07);--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54);--md-typeset-a-color:#4051b5}@media screen and (min-width:60em){[data-md-color-primary=white] .md-search__form{background-color:rgba(0,0,0,.07)}[data-md-color-primary=white] .md-search__form:hover{background-color:rgba(0,0,0,.32)}[data-md-color-primary=white] .md-search__input+.md-search__icon{color:rgba(0,0,0,.87)}}@media screen and (min-width:76.25em){[data-md-color-primary=white] .md-tabs{border-bottom:.05rem solid rgba(0,0,0,.07)}}[data-md-color-primary=black]{--md-primary-fg-color:#000;--md-primary-fg-color--light:rgba(0,0,0,.54);--md-primary-fg-color--dark:#000;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-typeset-a-color:#4051b5}[data-md-color-primary=black] .md-header{background-color:#000}@media screen and (max-width:59.9375em){[data-md-color-primary=black] .md-nav__source{background-color:rgba(0,0,0,.87)}}@media screen and (min-width:60em){[data-md-color-primary=black] .md-search__form{background-color:hsla(0,0%,100%,.12)}[data-md-color-primary=black] .md-search__form:hover{background-color:hsla(0,0%,100%,.3)}}@media screen and (max-width:76.1875em){html [data-md-color-primary=black] .md-nav--primary .md-nav__title[for=__drawer]{background-color:#000}}@media screen and (min-width:76.25em){[data-md-color-primary=black] .md-tabs{background-color:#000}} \ No newline at end of file diff --git a/assets/stylesheets/palette.cbb835fc.min.css.map b/assets/stylesheets/palette.cbb835fc.min.css.map new file mode 100644 index 0000000..96e380c --- /dev/null +++ b/assets/stylesheets/palette.cbb835fc.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["src/assets/stylesheets/palette/_scheme.scss","../../../src/assets/stylesheets/palette.scss","src/assets/stylesheets/palette/_accent.scss","src/assets/stylesheets/palette/_primary.scss","src/assets/stylesheets/utilities/_break.scss"],"names":[],"mappings":"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","file":"palette.css"} \ No newline at end of file diff --git a/class_derivations/index.html b/class_derivations/index.html new file mode 100644 index 0000000..1a48e16 --- /dev/null +++ b/class_derivations/index.html @@ -0,0 +1,374 @@ + + + + + + + + + + + + + + + + + + Slot: class_derivations - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    + + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/class_name/index.html b/class_name/index.html new file mode 100644 index 0000000..a48b0ce --- /dev/null +++ b/class_name/index.html @@ -0,0 +1,373 @@ + + + + + + + + + + + + + + + + + + Slot: class_name - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    + + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/class_named/index.html b/class_named/index.html new file mode 100644 index 0000000..86d63e1 --- /dev/null +++ b/class_named/index.html @@ -0,0 +1,374 @@ + + + + + + + + + + + + + + + + + + Slot: class_named - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    +
    + + + + + + + + +

    Slot: class_named

    +

    local alias for the class

    +

    URI: https://w3id.org/linkml/transformer/class_named

    + + +

    Properties

    +
      +
    • Range: NONE
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    + + + + + +
    + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/expr/index.html b/expr/index.html new file mode 100644 index 0000000..8cb9566 --- /dev/null +++ b/expr/index.html @@ -0,0 +1,373 @@ + + + + + + + + + + + + + + + + + + Slot: expr - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    + + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/hide/index.html b/hide/index.html new file mode 100644 index 0000000..89b4d96 --- /dev/null +++ b/hide/index.html @@ -0,0 +1,373 @@ + + + + + + + + + + + + + + + + + + Slot: hide - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    + + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/id/index.html b/id/index.html new file mode 100644 index 0000000..35abe1b --- /dev/null +++ b/id/index.html @@ -0,0 +1,373 @@ + + + + + + + + + + + + + + + + + + Slot: id - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    +
    + + + + + + + + +

    Slot: id

    +

    URI: https://w3id.org/linkml/transformer/id

    + + +

    Properties

    +
      +
    • Range: NONE
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    + + + + + +
    + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/img/Mapping Between LinkML Schemas0.png b/img/Mapping Between LinkML Schemas0.png new file mode 100644 index 0000000000000000000000000000000000000000..2a775a99b32878b71488cc183da3c6c6440c9542 GIT binary patch literal 187865 zcmeFYWmJ`KyD$1oI;Fcyy1PLd1f--pB&0#Qq&p;~OG;9@TSNpzTDnWRb3fB}t#!^A zd#!!`@3-?|k1+=_@tOC$`gheG`AS6&9fcSL0049ad1-Y3Kmvb-3?dDMH`5 zs>{6qszyn70e})vke1Z+G&;zJchmezFxV9<43}hrjG47^c$jQ9u(;S^?d%bS`?RjU zK!(El${<)67XydEA`++|M1(}cf23xK=}-fy6vA6CIL#=>Dj-*xdbVt z1Vn=Mzf&vC54-AF)P3SwMuKzx1QF1UB=*NIk9`9_$t^lQ62MS0o|Dxu<`6+Qv1H#WeiR)!L z_^>||@cd)AeH5Tb{QrSugdhZWfBOp%&L5zW-_>A_8A>A(H$)ad;$|Y3{~z((ISl#% zD~36&zaN0|r-B6iHDVje$~I2m;{PP+h&1REX?>$AP-bDF%mzzZ5&UJA7D}`Kf5Ya# zg8%=C*&b{Vi9Q7XHyGS2yHa)ZP(wCUxJCy->K)SVXG)kTSpuV@1p@pf^vGQiwPq zRQ&$_#|s$F6i`B(?iRCbP_bNdf`{D`isvXpMOvE!{$H&>(%k=^mjy9UgZjh`ila$$ zu2qOJVAEZ-*u<3c?sw?th0@c2Wf=gaM?wy2Qh$@x{}eeTg8S3q1EPTE24R&^TM!0? zSbtt>E#rSV%}>ehIYBBe%a`F?1JTq$AI#l&f@Wx;d^^DMCJ8&wsm`~Cw+Z>E zOe6=6Ivb=jF)p0|nyLg@Q-PG#n{3PcRn-<$R$DPLz7F4RS%sbM`x&qA5c}Vt9SHwt z;0;8EdDqxjYIyd>;zw4ZuRLWhlE?-8bQa&&$INa+TUDAEJKxfwZ-*iym0h2J>thQQ z-yOa?LIjvCD=YaF2EjTXtDx`-xjgQqIXcPJBCozzs2Eg1rF0+_lc!r#fBm`~sz0qF zFS5V3mk+h9d{~_LkM5iE=p)AMr1PGWZ{DT+r%_P)!eKvmdXaWnxw2zI(TU^5gPcxT zb5=*xdce{5z~3(gvr4~m=u3Y2%orXxB1a1zj1pYxQ{_6$rn1xf^M;iNqKB)PhNyL_ z#o;#5I|4KC0Wai>`}^h@=SzmyIG{XUV^EN&LN)yVvc@$*Xu@*?7Xeu`u5rU-^D&Nv zu$tohmr*jS*9*NkFcmQY7yyJkI+2bw!!xFKn-R3HoXX)x zyP}4Ob+vt=@y(ayS8bw%g^VxI92wwi`ItrVS)x_M^96N*UPptFTSoz0SV_Ss*~ zp)pgMMRi*Cud~HLoy}or%^;W&h;Wq}eg>5XR3t@E6IQPoY*YLb&Z+6sPI8WP$N>*v zq47M^F7exsf9!G#?r6x~qXW-2uMzjV4Y|8IT3;JLZT8#eTe|M-*&fSP=2MyA*U{DO z85n@i;Cl07Yb0ZJBN?!=vf3l1prA15bVFX!Za=x7bG^Q~ktBKfp2*eJRX|9fmphie z&f;4XE~9$)1lR2VCFt8RUf*8-B}^J>O9hd2Vt=`@gi7BM79TNF2`n^7HQz=4hdomV zLERJJC4a2|kq{vTspt9+>g6C3Bcu!ZO%AJ*-##>Z9FdFpUIzw_K@uX+KSdz{JXXXh zgFWBAAq%=}g`}mW-8RLKDH*hSB5#jo_wDmnuO4kz?;)!Ic|Wa99IT#^kdPE9W)lm# zZUvUS`Dh(34Tb>>2+3dMNPGdRRla9f@o!MLgi7=>M$5pS5rhYKi#c{E2T)k}mrBO2 z^+-UFbl;$DvrA47`8?3#h<-fA>d ztx$IF#RVeHrFhZn%#4iu7okx@2~@CbhOHrsZ61Ew^mJr__cL8jfk#5()T$ua)HZd0 zp(a8QN`RnwPwHP=s)wpXujZ^k7X0&y+rQKS{zO6r!&2{y$gd%?pe)9bPVUB`vLmMQ zucik{8p%SXkwtqt42uNvd~ZqH>vOwk;2WpSF z&ra?NAq|<0g(f)$I&IGT9-);n^@DY0f9=o$8XCA(Jk>=(JG987sm%o6Q!fa-=7rj! z1S0?*ZZ-O{F$(Hq)TyABu)cq2_!~h#Lsj*eq)uSQ1Ptg433XCf(%szdOgegcd8U7C zo!p!Pi%NO8f319Z9es7QY`*mLx_5dIA+6dVI*+-I`0v-xL3J~?j-#&!y69V?vh?37 zAkT-h{q?D80Ol`Q=^1hq045%l2IwF08h#D^-tKrXvssZtKK1>3!Y1^DO;|$2j}*Ev z0LIlusrK2MW?GeyH|)MOUSEwoja!HjBWh7kLM5V~UnI~dS;^x98Zs4AYdrz+oThtk zeIM@yJ55Z*L1C_OLZRtoMb2af42=@$C-qF=``zvUxh6*7`kA$w6AC;KM5O^>!heWM zgPKl|HMHBoBe6~QR~OH*BG6$1p;56vGC-|J9;>;vRYtJ$&+n$5krC3(?`as*m;{@# zQERA&OC6}w)6)z_?b0E}f?RNbZUSeGNxFKP4p){rYpyoNF3&I|gTQFW(R1 zmASJtohC1z5WX^t+TP=rn{jw{d~1DQ<5#PGPfz3Pa=&@C?%Z=nY}DmXW=lp+&bX2& zLL>&pXnl{v)tl(F{2ZKA*w3FokJn4GwtKBdrvx~ld}mbik0HD#nW;q97uL77qXPD~{-!PL}n$gO*Kl{(MX+j}H)N5-K(S6U0pWlrh4 z$ZV=P8ejhTGepPhM>6?gsm>=jHp7;vzNdSVO~0C^FH#SBQ%-k>q6dOb0>jl~sIqLJ zoT<}}uBO@4Z20UKkj8jy62t=@k1C%Jk49TVBy17$JZ;gF1R+g1u=>?@Cw!E{t$nC6 zut7ukK=Z5sRhOKKC+*8P#AkN(j)DY$OXC7l0!tfI5$eWd+n1 zL34Qp92dfQiT#a(E-+Y(0A}IRg7{+~px@l6wo7Ui~zd!JKSc_Ii12&|-)rzFt7X_Q#>e|m&X z{j3*`n$`~M=U{3Yv=)k*_qNQ;siq0_d@)$=$@J^tgMiO!-Kr~RGRDE8jEvW{>#ujD zLZ^RpX6NS08x?*wRT@>=GGvKkd>Ye@u;X`-*-G%$UVQyJ)p|ZJ4qI8CVl$)FcF~Gd z*jaBXjm{N;r%W5Q*ATU|HlxcEeyP)kVC|x)s&i3T0_}Ins8RRYrd{uXn9Z-9W&eSI z_*|3w$vIOoc0P)9Dnnv7+h1tg?1nuHGT+TKwZkxW;OXhVn*6SJS$ux)dSFpsFX&PA z*7|i9UtG38sAUDev=<5XbNRq!|37g`+EuIZp`3OL?|X-`ILYQ4tVy5C8s0ra{^hLZ zl_2t^gRA%}h?C9_TYnf@c;JEMaIasVl#e@oiHNu@r5kLgx~h}d--vphN_U{rDu0}O z6(8YFz-oZxgXrUSw6q?+7a#S3MiEHh#o{QALKyf3YbD#`Ep`pTxq_8?_O04&fiYzQ z(wN%aT3u}>KG~A266m3d&JxU0EoK+=rn9?Xy*r{$ul;Jq@Of|t0>K@`KNnJstheBg zbHBN*^)t@~vT|bA?bq%=8kRD(GK1ZH&=ok^=KuCBwGyzBNXdwhd=SD#q}aVMvM}DG z3h~!@XUi)4=ZOq5-;8zf&A>ct!UnZM?68xZ^S!7(Dzm{(t?`tu=ir#<{h>_F2Mg`! zV)^|wq8*>7F^K2IDqf?{(ZDCAHs{mT0g8|7E-n^GfW@-q_1P-eCM*F)y`qgb-jjkhFdD^UD{9xrt5WHL%EY`n_Oc>AC)kk3 z$6-q50({QSjLZzvvB$0&%k3rki_T|u<}^~kc%>Ax=ciMNWvbpE_1lRX`4kuW;sb?u z)lyR(Y+1MNM-dhZi*PVVOW>d&G0*ppn0n68&1A(UIQg%_RK48#FrSjTX=~SdW zJD+p?VBTy$BSv=`5%&TjF3-YOaDMTrATD`H+Y~e&PKOu|Z zWWoE`m^E(d7r-k@#$#={Sg!lKcGxO0SfdU^k*pw|NPro23<$nMb59G!OLn?Nn;0>*s=J5;-cGq1p5)Q>Bb%Xjj`o23=gJ;TrLet!-tY=Grb zW+9>?X#7$$7@8vlk@!iZb#naYi^=}tvK5}XpwCKAh1@maO3BOGM*L}~Mx|1nXu`b3 z`K4Kp{jdE?iBv#>AAxSJFdbMIvl-Ha7`kb>9PFqaEOn5O3A?}l^2Ifo*L*Dm`Fi7O zmt;GohDTyr9gkU4IxL3B`D9H-zP>+Cg~PN=Zt3nbOXc_%?dlp*^0KdB`c~$tD+om& zX%Z0p3eZK_UqaJD&R_}9OVx`NLlMwPh=mvs%E54EwwpwkAfu92Wk@C4QiBiXrHV|a zanbfL0Ow(A%Z@aIq|%eA`RYDNUH;@XDHf2fuVb=tT{djOA`??be)#QYrJs^zDUs-| zhlqc{a!X9RGg9T&5GL@F{EXyqsV)9n*BI*M=_fd##l=GAEX-YV==$WB6*Gn!BQ++| z>r%kK>^1Tr77+@;NVGR^1yfD{i{7)NiWzhgMl;N6ohsbnRE7dE5?&jG95Fv~d4STr z%liRAN>&+-c94S(z+CNK>0C_CS1uqnXn9A&Q?GX0As4l=v)GWm`ti-EaqoLNX4r;& z@02J8LxXKzI?LU1cLD#?ml1zPGKCR8PTt9I;v@75TH}VTFo7{<3mGhoe!V#!V#v-k zZ6Sn~2^P16SaKIfQ$)F9H~Efeq`&hjKLIOuUxk>)eDAM0w|-=!+L74#-XCNA(C3jm z-C*o&Lk78BHq_4f{*wF}+ss zBZr^s+z>Wk%@cUBQXTVlBnZ1KsPc#VQZ0HaYz4awEHbd<3vekxwRcKmVg zY^YTLYKlfJa8FqBVxI7}___mR2lshK$!EviAf%uF)UM2`#|Ut6e|i~xPvG0QF8SVQ zT8l86!7bMKi;`w%B?x;s-1}`H8MS*tgoTASzUNYuX_SODU0G%cdypS3cW7*X-#$D% z3=^w1ZhEGWL@SxfqU*FXPSx&vqmImzR3abL8;aUDKR@sEnGw>R$?xdaZq)hekF%4L z^isRmR6}g^dC%bB^VtOd#6%d%I(Xprk@vF(4*cm>|HRb3^SzSi<;J(90^eP;gs13N z672%<<^mheizf9wMM+J^C2fBrHZ!26ym%@mJYQ``8Oe6Go1dEip?4n5~GG7G1` z|Ic2t-!{3!a!0&b=qcmTO?hvF<*;c#io*FiLE;_*Jok~RRaN6tl@XSg|cxEU4 zyJy#TvyrbT#PEhwHMbAvJ&^R@9UxzNYQO{%i)+6qGYfUP?4=udGB#On&^*@&@b{fkZ9#8(;7Wg{{7C+mDQ9nk&O0z_tqbu8lNYsU_b)xrg!YyPsrL$`?^xL zdL$zx(ATKm2{Kvs_+hQ)bWAzFE@BwAUm%xP>3O}ij@;r0M_)fq--SsDEJA5Y$`_D1 z>m+%UuaBZ+Yo9($3Yxv55D=O*zsrFw)od(^vgPzWNOq*A91=)oGSVqV!IUZ*5sh@= ztPjADLJ350w=I=Nk&Anb=H7-0m$RS9!zU#pby^u;Zr<_3%it=KS%tYt=>Gv<*K)q{ z)7+rhcfe^3Nk4-f`(W3-Wp|SlF(iR z6?M+Kt{~-zVjN(xGt#+Ojlr~}iTU0~v|Uk{txsor-tjrLhWNI)QW_s-fq6vHVVNDj zvp<1<0&qE`>FP$lc_FR#?IkluK)wUx++^+#rN+V-MFgumO0*;T7I5u;V!L+DcVZ+3kOQZ(0C-;VNp z*g{YJeEn-&S>dTbr$qi!L72QIJ{HY4QTAfDZv{h#DGD+XSQuxS9*1Rulw~rsd(oK{ zsKY5tVYpmiiQ)M;fk>~K%U#5EW0VsEVEVg66R@fur8L;i^v?6zY3)3wR_ghENZJPr z=j*$pu9J-u^J~Ownjj4r&rb@$2XkL4%)y3jAdTGPVD|5(sRx>6g))PdI&ba8PCsE0 z5s?ITV=*ZjFujW_l#4I-(DWK>YWgCV`dK$o(ABE%V)MauEJu{#RUVKd>Jyg9?;tTx z-L-sr$kc1*mw0vUx;?r&c(D&M*>IZmay19$=8Pb)va)g&>>MtYc`-j_Fo`n(r5Q%S zQ_4ZxjzMT2>OC!~CDb!Th(|s{7W^PZ8Rt{YhMZ*MY`F-!N%FKbE4SPx--uXKv!CWC zI+S@8MUH=yvwkEP&oe<;(EyxIAskL6_*XIhy(~NuGw+Etf1nk)A<#Z_cVPrYhSv++ zNo&7Bpf@pMMRyQGtm=SM^noE-2&DcM*hbO7kW9K`pc72`4Ioiknb%n9r!kooV-@p5 zIDL-zTx*iD3DLwJa(_nWqh3v>M;cJ76fn-2i@^H@D9a9te{4M~A)PLNLexIT0^Xwl z=U;t1eosl>*lC#Lx985r=bc}jyom%pYtF1V+xCQU9y*WHK?VZ`5 z0WyU1U*%|FnZeA@pDqw>w@bs`DscC{G!Of(T4g?L9I*0f47RT})e7I*xP~*Tcr@HX zMdA4HmvEN98xi-DZiuiL2Kral3U2r&SXqNkwd}S!v*~Fc`>GY zjAiyW(oKNGQj0~k5 zLkx><`^sjDOeInOir;E4e7g_x9qv|n)%#Esuy;P-beJEEm?GJ3R;(Cw32ZdU`{P(V zQQObgC!F&_C24%oy*opae)!o5rQjG%^tKo`kt^%e&dIxWO#Z<>%%=)XDQeCHt5%;jGJ+v zI>o=5v47i`m(VumWh{~Y-+UEIk+K{PnAj2D8c~aG8&v*S`a^^hjoqLIFq6kG>|l9s z5&Q~Yd8%BSzX%112}poXDg7KzCi*GH+^m#04^q@6VMpnWXOe!ZB(+PpILp5%cVt9Gu+TG^3S~zwce`;(X+_`*cg)i@-Tr z(b>}6J+eTmnk%A~NzM9^UoNRgK}+~+ELp|8t+`#rC_(VUuM$3! z;EznaxoMaAp6cZ8uJwn6+loiJgKc~0Q(55$8l#(b_54Xo2%GOYNr@yp;4+%@^q|V> zV!6spema&b%3b6&&OU#%*bzMtO~4F!arcbuWfVXy1yFjm(FJ&nQ?Ju70=vXP|Y|W&hEF1Ed*s6t%W{cr=wa32_Nn)VHedNIvl|Ejlg}p5U&k3|M|hBEK!XG z%W|g=hMXKCIO@j?o;$cvnq0u_Q&@KRqty?S5nN~bT$YE^O)1;VGgHv9w&xgM6D-)X zmJH{?5Vq}idKT>YRuL;WgYdN!(|S0DroBP48=eXx=P7aS8?YlHYG+k%t8PrRgU@Ol zo7r?2)=b1@Gl>aq9t0Y}y5A5gr+}Tlov9Xda*Ba#MjHGh)V@^y%qc0fHBR!Btc;=%&Vniu=#@CC`N$FU=?hYV7ZXa!qJ zR7~01Su}D%HKOD9%)1kxWYZd1SMDy!ZZXJ$)ue8FrU!{>=wE7=;h)oKAbe9;l6OuP zWH7_=5f*NLI#we(A%DEmsbx!N=O>=5stRF6O{?O|VlU&AMLVb*^xjGTCckkIqhkND z{8qZ?=RI)oHkgba3?~1Z}N4BTzX6NRa3L6O1syOf{eeW>Ui(c~D~@#WTjuF*&Q-NAI|P|972 zW7D(YV|KLAXu>ra4$4FUs~^S%gBm$xr@lBpL+@4EeV%#}P&RYd>1)mY$ZF*p0ml>D zDMGJv+IkmyBnfV|`*&S+>P}Vr&hp&9gbi(_s6DWbq1uEuq@>*XoQ`;fo!~+gnx0jf zI=-pcij0Xz(z9S&Y;{!?MHTnIhXZrPy5i`3+W{BbXK~qFIMv4C2?Dorjw=)b;sTJs z^IE@(!J%}v%DuKCp+q045I&cHmsyYD#O4@RxI2r*m8)XdwZRL0F6_e(Q?>3Iyc8QP zRE&lp%WYRjQ=)7y5#k7|_1Fh}i0n*R2Yt(=4moYUrjq&8+AT|JK9q@^ZVVw{eJS%9 z*-mMd+q}u_pTf)j&8ux=n(Qf87-Y95y+^L!X$2ei=(E?x2#yED+-^C3o|4bEDwDA2 z)ni^AEj~S;JY}Y!U@`7A=(rnhD@J;`$?Y|U<7``|UhH%=N@iJ_<{{A{4w|3a*oKh% zuyonuVYtubvFbQgzJ5xB?t-CeHkh(DEjSbNQ+HH5S~MkD3f{IV(+^PywhjU8OJxq! zwW5@QNBUK8sYVlIS2oRT4S^Ae3#36`9Rn>?TI*r7a{xgr>(wWs1hf+kX6x}rLd;_# z&r1ZS8U)g}ZfhaEU+SAzVR4~VzV4j=@Fl~k4sR)wO{>; zWHAc{Ow2YRrHOy&58C_*D<2QclhTSa1nZiMLNCwWWcj@_BwOE1#jhY44a!a-GxGC{ zjepEtF{}1jiklO~b5-44`WffGfTWG6eckQ@FKnkT;&+C|_AFAX^e%JEq42;r8?o-Q zjBMI|@O(>o&(jz2oG!oo7w1Y3s=m4TgKMdt8x_&s?+VAT;H+W6F>Y1wX4k_tKFvGj z{zRXW+R6cJJjLa!LiU^vzaZMUs+xxS0hObUon{*jCM$+WNU;!2CzpaOte+FQ2Nf==Poh)=PR89n7DiwL@=xjlbOS++c5d&Z zzghNO9rFqa3Bd!W3kF}T(5sAE3UV?}SyDZmy&U#t?vf^CNO?DWbgM~@JPzg?P`}2L zY1|PpYJBQXq>*zndGb%s$fQbirM?iO+O@R6_~g*xjqnCG@}A*68}hy*OMk293Cwi0 ze!OA|6P4;xyH4lZ3?Y?E=M8?DoZo`3o9Zw@>tEwdXGRU>|6~xOlki13VFliIMl!6O zZhpT$>XO^@<1L~#*tp`f|5&d$^xTJX!pQ3?ahVxQW}($x19|qvZ@ZehI@!~WZ!0Nt zsAZy}%8x33S0Q(!IN*3p#YrRj8d*L$9Z5CXU#t{Hf6ZK%DdJiD_^3s8wH)wd`q=JeyZ#El#bsf>!EVKGjzrL9qkBxN zqI}&V*kyjQ%odA4eN+an~)hMu)kAy`#mFc-v~gvp01$u z2qut=E~;Q&b+fC*?>y}GctN`d8JIM1SjM(dFX{gbue9Q~DJ1)J$$aqEzQ%P~^6g@+ zw&8Q*98zn|l27xRJEHOgRc(gf2aku-jl7(m5px>-@ZgL?KUmbtewq>gT5I)y4{|k{ zXpR`4mB)wMkICKa=wV5^ZiD@yqhCT2Ka?ltGy z?G&uW%Yf4nWDxg(W8I7er79g87^>}hn3p0VD2_1Iis@Lh-#gkaX@9zqsiMoe2zywm zq8Vf>(`XNr9-^}Ukag)2>+s;O(Nd4PITrksBQmfP$&EX+0tdLn{_MKw+aA+HBjn=~ z(V$k0!+Q>$mC6*hQW-g3+_Da*f8vir^l&P6DOM{pP+-yRAb-jch^;G*Dzq)G(`jE* z%@XmOcG7#w$xfEo9PPME=P|D`V{kRtYCZ0}TFD1}lt}n<*KOx=!q2d?fxcG5=)q?1 z_2*V2x*?DbAsXib>Df9v_DeE>&v8m?TPQ7~>m_3xw!Ll_8AyP%1P#J>Q}YsrF&C`2 z3OpE`B961IICsy;B?r-Le%5MfxKqUB@My@yCsG@Yg`RD58ffRt(I8x^8-ywP8OJ;< z3O9tkQN+mV+K6q5PNk8Ap-0=DF^pt*Mk*NPPSR9%8%4kvs5j-W{uEaW11O=Q5m#}~ z5~q#nRo;r;Hps~}w>F!M_4Lg)YFvq6!=8078Bz{zqY5hPH~)T9YoN{b^(@CQIymc=_>J42ugScfeG(L)hcU zd@V+NvO%M@L}F~zezNxa>uT+sl^d5g;25}JviXXPYnUTGlfOLLVD3xl_EPuix`~5B zn5188na{&19v0ob>eTL95+SVjJM}K(C;c0Gl`J6=uv=_yQ2)w*vg+}JcNjW3ui7SC zd>I{>Tp*QyoPCea_DT>~z+Gevj1n zY`Vpm@;o3^>6I?qbpR5NqV)l)bVkBnTkWSiX-V|j?^0e!6Qw*K(_AZCQ3rU+^>J>_ zHZ-wBpFI^u6H?CXEqo%%5evxA8C%u|H%%x6Pn;IoZE$R-KO}GjH=GVoehQHu}uk zh1^QXdH3KaV$1s{n|yp9hu!uQjHXG-0Na&W(YztjN=blnM!*-Aq2<^vlb?S&@1@X6 z?r({fP`wCN(Gn7;g6PrpY0FZ4G2{1*>57n7OuRL1DYB7-wroGmzH1p8U-C@lS$MA` zA>n_rOL6A6hPI5gN3#e8W(;S-o-+q+5_HM}=>agMNf7xpIL)W!8N1=y_3yUh9kk=7 z@EoOFCZ^=VZ~#f>h+LyZ2Itw4O!{%!p$B(8wb34d&w=*U{sfL4hv$)nyJED6J4fD2 zZC{k@5H8pKwbgxk1V~^J0Rv~nb6>IB^0UX?8Z3urY}Os^sFzE^K_7LQOkSi=?OlDE zU&CkO>1=4BYveb6KN+cE_BG{Ur^Ym}H4X`wY+L<)$G~3=5%Zfy=G~qmjW)AES?llM zwr*BT%N5J;Gb7z=hHMeLCg|) z2s?`ar+PAKsS} zNszxZxo^&hqc=3jpJy$QjQUpj; zl`NNPq6${NX8jyP5WDt=-Lz2n-9c&lcFD_(0(@t~)_3Sd-P1nn;j{o|U(+Og{_p;s zDt4DeEoSZVSb3ZH(s@fNR@u{%u^guLR>CJyQBk#Of4@Fzb^L-`zWx0q|CfZ~-s z?MzqtP(lJD$oeDLWkyp%Ti?dL+h;>CW4>rH@Hj73E04uClmr(AKUdn1*P0_npcook z;Ar#dh^l|m+$AmoJ3|(x%)LmFZj>a*gGMkFuPb{SDzsDhbp~UIrVy$b*64&J$0yNl z_hrHWiNQA2rgu&^*s+pTbV~(&U!(KZe@aADd6X+{o6K!TXz z;>Dx;VO4L2HB_u`{b@_*a?QD&)d47trp-vxT*KosaEAhy^W8Np6m$7zo$l1rBGAGx z4l4Kl%zMa3j5UC$yY`@elvd7kP=De_H7IvNh%XtItXU>9{>9wRpv#NomlZqGrQTXG z)1V%wRb-ENDHwkbr}I-#6e{_T!)O7*g{I6?w?keh&xnWUa`yd4b*)e%@#C50y(DGg zN!h3(g_Rv^3`C#otNPA}+RL8-s+u7QW!&4Ldp2CQPR2UA`ldTO3d5*Em2a3VCj-td zSrO2tkSRBeQd<~hwG{+SNIx0AIDArXaG``qWLlx8$eUiiFK*tb{C(oM1diG*zrQC6 zU{TMXD_&evU~?x9Pa>dkgQ2HCCohV=&LaRKnkA$WZq={Sa@C3?#O{4g(V*Kjua);{ zd{Re-Jy~-4Z!t4Z?;p#|h4^oGtXxi(G{QFKP=8q zObv*5-_s@}8cOq1BPAjsOG(3>oK)l~p5{1m=}f>{cQEQA_vFfkwpsbHl^T*CBZ|+%L6z5=Pf!h zoVRwn%O=Y7XCr$|1Ta}yyU;CG#FIiSsyyvvB)=E+xlsQJ+pnaxWH0Qoi>9xi4e0n+ zY%C>=75|x_@H+>v?mlu6KSTf$FDFX6Lekj<$pr4ND{8F`bkR@YM?;FymW#LT5(m%) ze(46EVFdbqX&C=bNf+`obx2(F5>8XEbl{K#T!?Q-wXN;B+fP?1EtPC4kT@&u#&)bc zeLT`ZBW%SZd>os3M_U6!jxo9NM~-sSleO;oxD0@a5ul)Ze80a>yKn#qE3HJbA0Jlm z;XGYTbq`>biWo;58ozkV#0Fy6iY1S@x|6iX!52iZ@ z)`*V&e@ZIp66Wxn>L4o1uqb0wy+_;$bCSVl4*(XxB9K3j_>P!G7@5cL>7sQE(Hhrv z3|Y@$uRM|$CUCJbmBxN;lCaK|G&O6^Bv6fC$#Qb!=8T`;zX?4!LBy2nvkea-`%;H= z{&GdnQ8dKpnUUTbE)*Ypi3iI+P6v;I!9d>BN26H}jjJ3+OP!V+>*PBE7V#DY*sGU= zMZ>UaqWYHS%Oa%A?DqVm+t!xh8ipR_5di#~z3Db;Pz+DK+!gDU%QFfoH6mp;zq21}Zt<>Uu!SuRXFVy$u47yRw1QT6EhWi!PSz?^PYb$DJZ@N-{XQ?pU z+e$73kjVKnmMgAdgD|i{o&i=dcdQWOf>>~18Y}xSD8Kvyn;Hof3n=B)C^TB z=HwuTb{VvS-Z@Pysgd`^%+BjuWR{cVM#b;-j&s|r>-Cut956iayzho;allJH47XQ1 zMK8*f2=DR)VK%+ZJa@(2K2yO2*840Z>juT8+{wrJt*!^>7rK*+4}zOCdpw^tq=-8E z2^|djVTIHRLYN4ei%2-MXbEn+mljvHkHU>$U+^U$(gWi&%m{Q?kRth1IKevao+YCu zn}D4obDcKRijPV(h!=y4cNiR|^I0b0@&&Z_)79a(MlqLQWq;b@Nqe<3t0(%#YSg&E zr7xbmpiR!3d^oN8KX(DnDe&dfsj#q<=#>ll;eKlMBeBW;1eY!f{VVr|&kRKtUAIT7 zCS<|pHl*ufKdudfoC!8Bg3@8RE&k>1gxUBI@^C5kN4YPa_R&|3NbFlI6Psdb%H+s+ zY-lA-B3(he)8CM#craD5Fx$IG$z}I^ffWGMd#D z0k8C0@~DSBfAzwK{AKLoH5RNE;mvQ4ql!CY8TpZJMsp+#q&Y_!8S&y@W55-L6Bm# z(Zu;d3N1j${ooayXRFh$BIQPs;*0)Qrwf@)o-LBVzZM(Tf~v$N2aVD0_#KveMp~jd zi;OYo_^{X87b*rVuLF&kUi97m_??0z1t*NX7jSyy3QJbP@9_O7SDN=HDnM%=daj*Q zi~Zw8fnNVP6ddPSyY}HvH>BUgwZ=NN#A6E!(|FaAhs~+1jhTC?>2d09+>^ zwKg~+a6gPr69ZQnw2)I(a>PnUVpLcZt2C;q!;`S_?VRF+(a;0s(&Z^RE8~|W zI;Brbyd^5x<#1)#eoXb)_>jP*QsZWM(_}Wo=dV)ChSKDXb|;E8-m5*-T7FN}@+!KJ ziMchG-KQQwBju5gR7+(y4ij!VD!nrG8cQpc1$TPTlYNBhFTY=b1*X7)UNB5q;B9me z?@T8#Rea+#W%Z%E_^VpNQkk{`;*nBV10NVqL@zSdl`_-|WAifn%#JP;piX&mtxoOw z9zw@UsE1EjgGG2({o3o6;2iGK3)V4My1J_Lu1qRPP0!-p1Tt`V3)npOwd47bEggJH z6qNi-0^6s1j+|kmOo`x?eImYo*Q}^AGH}U1m8avqGR~Xb-QBEtjO|R7@a{c6hMTSj z3?7Jo?dQSxkqjIcm>jq4tVX_GZ^0bg+ws?$A_h8XWe|^fgXbw^M?*eXO&roz1&Fi$ zTyr>@1&fUNx13z`3h@evZ_EeP43kM1r4-#?{JL*Fz8~By@j_o++Xx$Qf6ff)J`tve z^~-(kY-{196z=Tv$?Wo*76L?KO6G^t>PZ?0I?zgBA2}+cXZE{zai`u3sgcJJs4mK= z`R+p@hInGamRVbba&g3~M$n=P2Q=j@OAds_PHhj;85SfneCQM~_=D5)W0YvL5jl~y zg&^xK=}%jG_Jg()j~bZ3L`$Cn{~Tkd(mvRQHwI@@(rzv*+r2s+8eY_x%;Wn>rV+aXFJokASNxLxFb(gv7iKA(LgIG|~Vj zLcO?K#69`&Q6kc!wDs*t;iz-J+t1R5;`RUq9@3jX$yZ!{SXFh1U{BcmLZ$LI2Df3F zG!ABdMNwm-cfSI4K_Q7R1|bU28BRP#1-&qlt_ogWNf(!WOZ9gdk|_w>OKkROE_7J* zE?=y>PE;1V=?dAO2^aWPF(N~V=>{n~stG|$Nw^0CYN2eLCIZXJG{KnfIyI`QZs4PO z1wNPMaM6oH$K^(JVs36rfe$j3EK9UU+4V9nf}>!J(B^k1N~AixFJPzWqb25iajO|@ zx@w!+9wj1WDb$HXf*N^YqWAytNLp9)~)kwn+M!K5Lg>lqmrIJCZI z`4ez?zRM2-AUA>2EN!U(Pk7*vapC7qbXu3Q&-O@0tSW_gnI;Mp=#uD<#v1HWP?j`x zv;@WEMzg|xgp5CTk_M|p2&?(NiDPt_yKVXL=8WTF&u{|?INe$GNEJUbyj7a;0YYvh4W)_;fU9rHt26^~52`rBovr zMEesj_aw@P1Z>=abKkNXp|>Nrc;rUZVg{Wq%A2ui1@WYmPxz+MNa_|e>RvEP^=LGZ zK%XcJCb}@^NfNx39C9mQtSI+i$ z{YiL#7V&3yI(T&srQaZ&iC`5z7FgP$!33_CjGFBZi+9<4T-c|!O|qttx_zg8rjK?t zh(*6ql#@MAsio)v&iA!L3kV?HV7*(rqa^R`H-K$p@oL$D$+0%V>l_BSF-&lQ#Raaj^Qw zr96E(5&DIfjB|VT8~1FTxoQmzP$um2nq8AYgOnQhu#Cib`dj!-zBF3P>etkp-MAz(>f?vT#N4`c66W-e)2`lb zl4-I736nZEokb~0>)`It26sz12ANO@^U_i|c?Y0UfT&qzFt_2;TK4z^)>?bN=cR*D zhyvli2J&SplX$5MLS}sIl97jO6Yy!GY{si$G#zd|dWt?CwyH%pXm_Fj6Y*1P)0x$x zJI3n4rm`@BXW-Uu7MkZ4Y6=3S^~n>OMRrxFHWEzWyB3~wBMqCY zmvMNYoHw~N}iSc?fds%8a%BhF&-e^U^UG;@4?$<_4b246Z~&^EvUFs9XwA(8o7>`B zy>uq>V{M0(p^Xxf)eMvP&rYWv_PpA&(4v`t--xknY&+CN&#L95`zbTBAxvg1y{JBxa@l}lj)GsH1uWU5^hXIC6?r@B4OQgZb%s>R{evZQMO%E;hoY(OVn zm-6A-%rxK{L68d^I@YNq^Dx$3nc2NT#5x}~iV#t<6z|soYHWTz&jKx^@`DR`NF~L7x;!Adc&a(z9m+`-h_e_yC@y%eXfd$E29`rtNXNH- z$Af<_XOdQZ{(C3g3>}IF5pn^+Vd&^+v||s(;g2sSEELdJWi7v`wXbmdSjslowkDiQ zMia7bbmf6ryo$KrDejMtyuodWYKEgvXJZY`zPojb6bTG!W|qyV)Hw&DH8B-b)dHP)*yg0Wh`;i`PD z5kaK{-`B5kWU%yd^gNC~Ul7d|chvPTCL+C;1+LW~fg!T?zh9?Sj5WW^;()}ds92v3 zz;=VJHZ}C3hg)A?s#rrEhmZ(dKtPyYI`b3y%GOqah(T=2ciC`7h2wkp)XJs6Hq&zi z-V~T_&8{c{w!9Z%(KAI$loaOz-{2X{k`jY&!JB^s!?1#-l8Q0r*ldPq`M0|cIqsmGkx)tc>TRZGZp|-^$tIFe{E`?pHRrEPT^+*5;XdcgoINvpX7Abix(t#814T(?EWQ%#XyP1<9e6wN*Xgs%x#B+tOyn z1Gt?rx9&a+`!W1YCkt~Y54M0;=dgk3raQ*vV$;R+*7zEO2_oXEOghBb<8xQj%D2oV zjeBZ=^VwEKu_~r{-FV=-NQ8LWZ(l0>iD~AwIrfmx3Oc#z_iyfbj*8hoO|E&J(Qs%T zHHIH_RqOYBsb5!Rlydj=L4Yn=y*CyMRjODdRb07(Y=RXCX0xMhv?}gqt0VHM5*X?k6Uvx;SRIH7))D%g)=ZMH?y{w zz-l2OBJ=*S*?^t<(pHH|QZm!!n)I&j#E(*6n_si5i~>KZRjpRE1--uDh?aYBq8Kz^ zk5DUbl5<=8AI7|_vBfRdZ7Nbp1*`TA#;8c5AllT>Fw#pjGBYgTlE*1-wR6*>NduwQ zCPQ!;3pDwOK*X`WqFqlH<%K}9kjywmbG5sfNJ)>2D6o>^A!0Z3EKQ=vo+=-9zunNB zB>=-?1K!j1O)fS^>sYj6?A)iJtQtz7f89L@zJ+|c=Bl%sKmzuL%HEU53V-&t_;?O( z&pcKFn>`MFoqqPI7R;~Df5=e^|6x5nUe%vWY0)6UY=jN*``waOzxpor&kpyBuzEzc zI0B-+_NPLnp9|Q~I`hxAU*VjVOCji+8T#ZrEPss#A~m@{N__vcA^*}}pU+J@&h>vh zdOof25$*On_2mv)wR;1v{vWYR`(#BRD=++E~*F+BPpaTg5UL( zHP}2v<=8X}3&p~0s_1bm|}LsULK~^lgECa#Xd*Sn1vYKUO>NLfK#bwpi}ZAi-x+<0y?b6B1GB0u~PqeD-!Y__wUM zQ9M$3o=k$s`<%u?U(W!4M*65So!WVjXc5x;82DvwGT&zK606|IJc<<&Rza3Zg_Gu{ zSQ#JwINst_$E$Hlms1>;Eca7DCN*Fmk8`#_G3!P6R9B$EsRWJBN^}}Gym%_AY(^}` zlj@`-nfJsq!SMd;WN`Xfe|%b@FrQXuLQO2pr&UUcg%1x+#3wO8i}P-@(Edb&`Er@1T&KZVg2jQP^h}qp!EVyCren#7 z!ugftd66k`;2Ip~veVKbe$a^{qR91@HohVEKGx7!jEvTO$XE&YV=W$MZ={jFK?FV< z)c34)t=%ZW#OrrVYd^J0R8B0tp26lwaY)C-QTx@V%Ru^>5b&)f52d%^jg@b8aLSVF za9jC<&E;bIX+M^q!B*S^Q15Ejcy?RyaiB@Tb-Cj=l1WttAr;Tu_Kj*nwTB?Py`1ua z&_&zw1Hb+K_q=laIkctcUBpfY=LfhaDM7=8)M@Tp;q(==9PDy5J70>0xbHUxeU^`U zyU0_H*=A7V=n>DVt+ql#F5nRI*qNBnhsf(fF3Ug=Y|@ibXP!_o#Z(?$;(%yUY`pjv zPHKjMT4A_UZ`$HHhL`cZ;JZ7i-(@kee>g+?kWRG-;_7{PjXCa`PZFQAc?|AZHdM2*uN?Jun z>izzu-XxbM74Fhg)W_@(PIpo6pgVh1NX(Sln1oY7A(@NB*SAsLJbeG>M<=WEtNVt> zxy0vrFU{f^RImuy4Ze_mbbf&Iz+g3%|0+?o_ZYA5M~N(70*TM`XKnXWIr{pTHFpp? zOZi}8oB_fb@;LZ_*{?4~7I@{Xo)rlR=R8K+nNuZp)U24pky4{%ly_X~eXwUWR^@&2 z0B!phet9@<(OPs>m7r?K=iay{O%d1jo7?w6pnOBpSNV+S0)x!p#6*JiUo`?Wrfq`U z-l3!N?-_kwie5rD-U@6IH|0CO`8xa;mg4PA?dQrZbysif#6LVmh~3N;p4B}+`>oBQ zeNg~Z{}7k7*?Uf(m!It>v^>5K-OZuswjTQMc#AfTQ7vA9sl*ZUTMNt33<%#Sl0_!* zc^LNtq^E4&53i-L;2pJ_2)GG#zQ`K!`BhYtx(1fPVUnhAd%Yr%0(PfwQh6!ucDF%% zCo2Z&tz@3{j{=a(*E|0n7Y#`ak7mtowpCVO>UYid4o7aqcdJUPIm)@{NO=Fs>^P;N z*dZSI)Tf1W^Hci^mr`oR`-GisM9Z}5iPx;dMaSY%kL&DaM23yKe|u%)aiU1`GKWXy zu~!(hY3SeRYd0&^SU#gYPUiG!yu69A|9N>mc(^_D$>Rx#X1C&ig4H34y{WNsz2Hzu z88hc$LZ4&yC6|Cwfn%zds$IUIBVO#-os72k5hOb!tvB)61m*c77MrTv*{91=nc~4~c6AOE zkL%ryCBK<5UHe9N4>}z5jm_2d@RU${9hN40yR(tC`jWl^6Adk2j!QtubEiB0O%^-M zJ9e8&uIly}M}Y&7Q!7D!t`{B32q!E;LQiVm^bo_K<9KUNNR#h1=|;V>$FD6_Xk2Gv zQ8?|HlzAFOOsLPywvdT)p25N5j%@txM+|*GPpkUqtE6oNFDpK@X`Wfrpf@1k@oB$4 zz9{qQ2y!+zT2~_TRmbW6GY2(i6iB07D`0D^qND}eXIan#qe8aWOBWejS%DKN2zzrZW5Ob!!f5uoBA`Nxxo`I6&3)xsU7i}GG!A`2#ZTVBhf=9ei9x{P-fRog zToH(RA_>ZwOdJw-(FY(R34|95fuZMH`v(2{6sTh$nyJ@Vqa!`yyQ9?OGXHL~4>){k9M>=!Y#uU+kF zOW`4&Hh^x@n;?MNW#R`i`qjc#yTa2GBL->_tzx7U>4qmX|Z= zdrVgc}aCIp5>*IhxrZL#gyH&${=hqJg6zTL%=2vbKC1F zYx><2MPx+t%-=l*gM^!Q{1{R(sQ7M^pfo=uKV`qauk3=3%&5=cMCzMOg4%uRSNPWW=Gt>6PfOOJ2CXD%^sEA1~a)zDS`}Y9uD^x4Me1z$HO= z4e!mieJ%G1jpx+hkEiwX9`3kM53?(h6XtoBz)7iXjMXw*dEH%&SYjGu*NBbx|VyE7KaSyiU<>b-QD>-p|SB&kg6 zi6XqAqnX>2tN+%+-AAYGu}0o8JG?gS<>tDY;k3;6s_TOh`8p z3pQw{1M1@ltKQN<462O?sa%C+Jxp9@r>E+(#Kpcx365Dp0LW+B@0=*1t;j!By;Ye^ zpzEf|oeA6R$`LbsXN~PrzT0z*AL`|k5`$tjcd0!j&9jAi6f=UqDrUYAiAGzWQE$kd z@jJI$xe&QcjA5c0eeSwRetmG@VK-XOCdjUg#;)Jm^}PjAJ%h@bK{G#o^JXW z*uz5&`N&cFmu)KW@9X(Bt9;1N83|LM51x4y$~8a7HgDQIuE@;VNGGZnB7b(P*9;>= zG>T=G3BR4FoDy~1_7*m(*Unk|$Y>?vUW?*FVXQjO?1GGgQJ5$bnW)X(nAI2WTAH`C6q%&{Hlj!@At|I^oKY%KaM>VO%56q zg%dvhea!8)IZ_b{e;*};*?FZOzf`;BC9-h0Rg!hi-b9Pe;7n`TF{=uVVz!9sBSCMi z785gENz{ov8`6Xdr5E9dG+hY;$|v_BOW$gvd*8E!-aWPWRTvlhX_zt_&a{<{>`m9b zgrLL6U=Gf_CnmO)+J!$-tfA^;Izft~T&atj9f(9Gc1@8c_n6=S%D2(q5DhBLJgDS9+@iCnLvXw^rgKw!J_I*M;M0M9x z1kh&&^FUh4_iOR>R7c5%=f3=;WGRULZFcZ&8JOga3mdYAH+kz>oPFrfagpWmb%k@3_J*bIn@am3~kj&u4PF@*xRAo6klV!Iz=8Ii^kN6)(XPGlq zC{JjQocVP4uI<|WlU={8Uob)(yeb-h!XxQk_`^eS9QXKMz<@u(B`E|EbYGPj{~HSc zX@iUqw@In#$o?XSi#mlF-c9GW+#0K~#mgEiUN?)wP6e(x5^md4-)rfgzIgo|`oJ;! z`!&v2+mm8-rrUzV<?G+~VE4Xh)03tReT6s}zJm*53{ZIqXb6n{hYefBZcJon%ww zNf;smaWxWy7#@XOXMR0MNH&T3x+)zzh(7Tlf~8vwqOd(O!{t*ij<>9SDeK7VIM`Fh zU*aof$6O<9kLfQc?DJrOf}=20v>{Jkpa!`qX(-D$G_J5??S>=q45G<_m{-uJ51*KfrA9(=-U1fH9cjPfuL^t|%4 z0_Cu-75cDqCQo66({<{INuv=Pt>MsgckAOn`5~dI&xazC?q zy%gU-N%8eWm09*U33LsT8V~`f`oe!j&0+F)X5;Ge^6?7uSPZq7#>yLkQl0(9Zj_Je zaSw|37Q2Oa*;&J}a>bV}EvdC-1zTI)H|`!<{BjQ=00TVq%SXB(M^S^*BOG&;w%S7l z3VjrsK8a8DtAxV=iKc-E3m+wuA6sR!Ee9bHFFV(Vp$o2{s?2ia4<_K2QXUMh@L=0v zJI+~1Z&OmD9;rTU#M+679+`Ggi#<$?Rf4K4@jUZaI#m(pD`ggwV zY80_E*n$$~8k5Ci#FNRz|1{i2cy))u!&-j$tT-~ZJEHLHJrJVj)$G0T7Vc#prkBf4 zKHH8W0m!fyqXQ}Nkhsq0guO*tzfyI0dR8C(Pehwz#Si<_qEJ9AJ1K6#kZRh{OPnEk zV_f8e99nGn(#cBV0)@L0K^*0dA6cG^4)5Hd9||&4+%$0*IKR zB53CDP?=JaYgr86>)Ic4kL>1*M=n{P9}V&7&16h|R!X}%WP9&r1oBO>*x?`P)Cor{ z_c>oI-%#XWWBY_7z8j|l5G?fcb0s)U+R0}dQ{2;MMZYP=#O#^QUewtx4)%%L;PkD& z?&sv;+p?%v%;Hp7are zY~&LcHtRsnnt)t|>>a9t*}V&RgF%Gd){!am+WX(#YQXfP#CDs&3b|k0lTU&}Bnw%N zWc5IIa#d>!ag26v`t5We}lCB3(z8FIfAB+BEru|JlaFK3VOF8%Vd=YOi zEbD7$V7PzEIqrD!;c{JTELw_{5+bN=H>*&b{puNS6P>v-X|mO=w|?tja<|2j$5AuO zK;v?0sx(0(aJP>0vUD5c&Ohe05ETp@W&8i{oWWg^6tuKqYwG zX}01{##AoiDXtU2gHkM7%5HEhGgtHcCQ3Pwh{#Ff3bro*70TI zy&zPdQ^{A0F|S`K+*2RAJuQi$HOsg6ptXK8L?TowP)EFkIT-zkO_Z&t0HXMG+I^)z zq~G$}OIJ+C&310sM(JA($Y6UheH@ApxqEprb0*R3w7>BsS#(ey~CNaVUn_%@zRYf`&7W`|Ra4|KUXyqwVjM;>O6+Gax5#_C0z? zMwTg~%toKE99nc;c9R@Wp8nIX;`LCxj<2GkqI#A)dQ8Goham#>*kGBytLbmD35qF? z^BzWyz9ueU>6a;lZaCmR`7^E1WD%SxbkK%fwQyG$bUtyhbP?$v8YASYtu1aoRxg*G zTe-XJ`#Qz9e8jm++A$5dg+~|%{}uDo=3ZS@dYos^%`gna6W|d zuvM7#9t+N_sX>$2f_mYOOPx*M+dK%f@piC&;>~)Ac@BNm@=*NGDN~Q4J`}nz_H{NPjz5q`E zdk(gTMrVlHj|xQ-h8(npvt_;I_x+DN0Cw{bs?c&ZZ;o_# z&+W?lHuifpb1w47(x{(ZL!MMf$(UWyp6ZPf)8rHSOvzD1r&VEDaBs(Xh*OGPqh z6xS@d%tzyu80CJjiElg8STc+4xVK5~(bj*(vfPqFTDLo`ne#Ep^DM+wC?ZUB&h~Jc zUh(0ll!dFsU^ed{#tC&21F@l4esZhJGDrw39S7&~5aL0r3xD)V~6 z!a?a~rBuCG1V2OE9pCTaBM(wE`wwvq= z`%B^owtI2B5YJ42B`_x0u*N<3h~DYno6S0o>80$ff!jTY0z4~TxDit1G4D^4?~kN8 zdNjfZ^ZTQu*w_!EK0ka)glPcT2`N;kZ~I5t3eO|XE36~QqFANU2>Wt>Fm@%eZo`j~ z)fdK*Z101^;%wh~_pZ#Ey+9Eo*A?y)ea)9zuP zxlBQILJIOK4e+*EPXiXn^4;LtZwjdcH~PDhAmN8n8?o?akMSh(rdMM6SgFf}+QOgR z*?dh{tJ{D426son^=)rD)uVn>1_VMx!tEv}c>M~W-*mN!kMpGp6duYx_xH!ln(bsv zk7FdfcBGo!8lk6luWzJw>t|s|Y=z4Cn*zQGx*eRaR4bWP*S}V~OXBU!k7u*(P3C89 z{jPyRznjsWw^kP~Oqt^JnE&KVWfqyH?}2&aa?$&KMxLMbjY}0*uMc)bd*u_R85tex z&BQjMg4Lh<<0`T-**$nU5jGp5V({ur@l9UXA^*NtZU>#IROW+ISEH_tFJG9B-yjj_ zw~To)eDph!NTmkz{ieVk$(PRSD#FRsfNRa!qr=vuxoxV5gcAafif@-;ktJ4zZp~pO zbW!9LmK#$Q2K8rc-fUJJ;IgyojFy(vw!S^@6z+9;3r!v7m^~aGBFZ+-E?krGvlgTw zQvtEbq#AUO3Rw^BwwOlh!(|-AxWXK2$+uxH_=g$V+AuW51(2{kjw=i2KN|2NP(;i& zJcR+0lDo7{gZYye-vNK}!PmrRu+V>hZ7hy_sGa4(fWjt{IlMpE>7-{$02U8U&C$Vh zeJeCSrj5GTP!m>C0YCyAzqVN3ydu50GR-;uG9JC!pYmvCvaVzIX7R?TqN?Pbi_hZa z+}zzW+u2s!Enck{SaBUVG2$1k0=&h+cOV{QsUxq1DH2JjwZs4wB-^+5Jz1;tUU?Z8 zDhX!cv|bioa~3#%ZM4LUC_?xH0Dhf>QT|NP;=hH62j&y_1I25ipzNZ$LI z3C;i)w3V%g9+xAafp1CiieSIyW>P7~oFlb=ypjdEb~iu$TZ zk^4CxPjUT_gFp+hP%c`9dUpsp1KWEW4#%7>_&ev~>HU|ZYL~g8UU<< z{R2%h!{sg?0K6mOp~1fYA{2P+%2di;;+W9;CBm_mjH#zzqo>@eY?o@qYH&&ZA#~xegU^$}>vlV_EUsj9 zyfgsV!X8(~1GyUu9mdIg+QWLHnOOVN zs~3R}&_#ofpU4+G?BRnN5(DX;c||}ddHg6uw9XJH?Ruz$36e5 zzpN1)=pa)yIponeDlBhR3Wl{$^U#y)8phDkjQ@`e!Cy4ks+2N5nVuJx*eV$|_7Mhh z?;PZ=2R{8RW>KqO4|RMaWIqt3c$FPPBM0zcpA@T?l;c9%(+#4*YOx$BoYD$!6{HgR ziFsW%N#l$UVv_*#(Z7Tcut5^DPG|UswvWOAc2<8q!7B_0?ZLw;_U90V$p?vcH5|s& zF^s)8YtH>ep}68LqksVY~!jM=BJ+ z-pzx+2qZMLr|y+pl>wmzh=(hKp@;ZPM7nIPk3sh`Fx6&D86T&yUBOhGK#)g6Eq1nm0u0AN4+-8rWiUV}D|G7(fUIwmYkcm)Lo zdp9=_FWmsZ;CqPbZWi_>U)Z5tR=K+dV-CYinFz4GWSqSV$B^Bf}b_NC{eSLipEQn(}(~9nQ zmlQKZB|`<-+uJLVoOm3rzBt|H`MuhfD28BvbLpbn;(33lC6k(hfP6(Pj%2CT|Hg-#G7wm#Y;cZE`e*On~x$ z17Eh19JC9Kp)TmDL`n2ke;!*6>!uSa1B<-;uKjZSe!DgfON#)s`>&RWlKo(x4R1bN z-|E0@W}_i#*oVyLJoEmXo~;a{`969wJcRoA6+Z^;a|)zgjJ_Y$ujqRpl+Xag9ko6! zxLU5-gYm~DbOFgQM7USY$$w_G0T^?~sxjl~AFaI@4$ck`5=S1&8P2TQJa@hR{N*C$ z{omrH+If+m+NcqBqxikb2wW?SmYA1^_IE_QuCMS6X`qirHN_DOP$iSoSNBTCLvr#r z3&&r`Sie0Ju63Spc3E~B3clWLFwvz)jS=<+!lMw}_+$$kGE)4o;Y{XL`v;=#ub(wg z-L2#67z~;$?CENzdgsFYU-jjWfEPeI@hL}jDlzv3yact9Nw@&U%stbJw<54AL_|=5 z(An;G9;rYisR8%!t=ZeOSH0=H)#Xu<8BdtZN+Co(ufR7#G z%HZf96}b!>s*ZG3{TKqC*9eh`6+snqs3oLAh<^yLU=4@G6VTk?l%w48QYw>$k@LO( zFj6xr0@>xn`~>s7e9UmMnYf1V{BFtJ{_%|7j8x$4Ozj(Gr?3#Ln0YF;x8J1}Qc2kq z*s>$=vQC@)6J2sv3lPv z41nGo;_okPCDzXQAN9~WHUPSNk@_^VH-VLTd&k2#mKzaF?iN_jmrlrSTh77eX0(14 zVZIy%KodJ>QTH968c%WLp5SH%JXHP(4>LQ#Zh0jP7C@^xoJSZ|jj&YECz?h7>xBRF zr5#p5qMq;uNKyxJS?WEy$MmPpw`q6Hv~uy_9y&`R*GO2`S(E~zeGYHx0DByV8@MUC z>HdTt?CgIX0YNabFp>9MbFQS@q%o`(bjxz@(b-PFukvA?PBX!p1pn141#F&!F|=x! zJ7fIW=|6@|rC0xde5GjA^W^*el~Ds`2?$_sX2E<5$xEm4s;-};9Su<)&Y$>Uv>q%x z0PY^_;SkL$m^TAXmJY~*Rwv2i-=Y4$s|hX%2!j>L_huB) z;fj$8rePFVmG4WeV!^JaU;vEVA%)@*mXthLk^v zF~;pu^GW`zKd`*uVNqVKH%%r6aI&%f_*mw1wYa2@9+es9lKvqe1zR5@K^eeJD4#3ohmp8fxb(Q%o`u-0&LI1#y?+A{i7Z80XrC^S{-)(nEo-G zaQjJ`dzA-0JQ;uZnDS)f^Nt#8X__((M*S(HmH)KqDs1h0REg_F>;)d$mH9{(7N`vl ze;#1qwF5&?kd6x|NSrBn>wlDDdpxXOGNY9-tztBgyVE)n8767uhq^r+>-fI@q&I8p zl$8#~+XV=L-$VY2q8$OI_1;JrB}D;xGU(%?soCEO7&^k%t2}X)qJY!~9>RT!()4FR zLK6eyc$0d1oH%6)kePlL+A=8b$K#8awUP&F(+ zYwah0+bS8hWS0AavK?3i)9k-lyKevKF*G!=cZ#h|_>8Xs?OP7L;J>v{%ZZwu{q;z@ zwoE3zc7oyG<_7B0UcKt4LaMR*DR;xd=I%o`4K=9?ys1@MD;R0)s#^7Ndeg1Jq#(cgBY2DREtyo0$~O)>9ZS*D*WxJ z;V=rwu3Bh{8xi~>o)<#~{pAQq4on!A{9DXFOPbmoSFkdsGI1*WSE>(SQoToA73l!G zB7MJ#<6nXB!vr!bw*3Ja_Erc{?QH+_>SQ$74?TE^zpzmtmamDV$baw9f{BpjO9ZK? z8f;3w`4gZ3%1Hzjgud0XOTH!r6(kC!w)(TY!Kp+8r&=M8 zqFfE@657e(88EU~a0F<<93-RbT0bISZztZfs`SrIIWTV4&tb`w`9Q2;jGU|gaR7%Y zg1U6k>y6r=z?$(sb0y~AcE$2Th+>57E8T<_I>cjWWi|M{PSNf%`A~&~=FYeHt=`59 zXN!pc$eB1BuYOJMx-&s+r6L*{74-4rJzuipHm$L2{LeKt-4$^KOTZD3{MimxcgAgU$R1f1eRdoW)z6vyFtWaw~S#|Z?;yQZ?rTA zv(75&a~|G>_Us!Z42-u9S+9oD-#yMsLRV+w;J{+nZ*Cv8Nvm=?b4?ezGl<$sfbWZ= zmpm}01^$Wq{Jw|JHC&QKDE}Fs_x>Ag5)^Fk{vE*)h8v4>oUeCT22!|x(R|34SqTuy z!UxFvnhtxnEkq|p5+^T-c)Zcb_`UrnT}mh!7#P$%wD)yB+w(-=F}+Et&NsU4XlUHJ zhlnQeQ9>Rtg`hvRQ~^A{-biDo!)*#3BO}j#uRUHnJvr%4ttsK~+C`foZ59rAbM7-y zZ0{n~0;oi~JGzf5U8V^1$jux++hy%Xrh+`nr8cKE4&Oy0-3Cu>&AC!yC*|6Kq z+>lFTN0U&t;nAg~t-y-5 zi^m<_b84kQeYgcoI*F{BDoJ0zf5&)MJR&m2HuIj#rcuePLa!;}OWSpnY!bV~l&kkE z(AodByeZ(EsIdUj;9OFf*q1lK9G(M6r7x?gh9`R8*O**=j~O(rSko_5t>C@Bxfw~`+1{@5-Jx?)ky~vt@VlbDzP|1_c0%yzg=tJzA6@vwAf6QwyI{7(4Y6iZ?Uxy62;e|%KuH#K;krED3U{{nmF-cT*m$X@ ztGlqens2?ebEA6(C@0y6>!n+y8V1vag;Q*X}8C*dpgUz96tPJq}IJ7d^14*>|tAix! zlYM=}j59OCZF7o+=O=ZR*wqfdF6(`7UPf7hFbIiywD0Ll%WQ#1kE#FDJS#BQ)n|FY z@bOWh?pu0|(GqXH$5uXD=a(DFg~Sf@9o}32IC{l(K|)1!#Ir~0Y1@vMk_xML{Dpq? zY2pab>8Wd>UPTCRH+$dk7dYZ4uR112NJc_@suSlH7Q2slK@7uZjk1HXayIS4Qsox9 z2biSAlO^f}#fQ!xkfB6YgD7cLy29&EL@E3pC}_7AglffV_X*jq3pSH-k)h>1Aq|$V z^~fe2Cu4vq)ywr!kh^*e@Z+xt+>v7cH(3XOZK9rcDM3u?#R~u&%6zmLdsnEw0yn@j z_pp7sAu{HPmjcXTIrq#8>$|L)GuogugyqUIQN7ZB>5?|`H8^tRoo!)NBUu(meQvod z;((8C1*qGBqGb{P!zCv1*8X1}SL@B;ZJVTKJ?IV!17Z5u~5EPk%;@1DSINvxF!RaT6~xZB%rI{wR~ApSe+K(--x=8R70t=RwuKxMDub zP2;v}PpN*bmKnZOK%qBz%%HXZM7PZWT``mY%Z-;Cr{}bkON(>SkaC+Z^)uqoXmpT3 z7z7w-I!1SN&|2xAnD&M-;ucUTW_k}N5>k?(_;g2&yhz{=tAV(<~~9>RUpUfo09*;aJyVu?gg=dJKs8{YYj z;3MS?0w=^{VEc?>8DEQxsd0KoUq@WLaNx!aC zTyNhrBy(C>=E6gL>_?kRl0ys?a5sp@J>T{CsPG_jmv44&e3~$e?jj1Z!aDk{=a)9mDz44@Ae|_Oz z6p;Yhdk?@{dgOWXkizRU{Tz!ZjCqW$WDYNh3Q4xc?#v(t3k{z+LG@&-pb+HnlZf&^ zV9|PxDc@=p0)Xy7+7jQUTl;6mCnKH>t8l{GdJQW0*A2d`A<;xQZ-d9p_sRq99UQ&{ zNt+x@?NQFw9IJwD84j02G_$+HpRG4u9QHpT5MDJ&akcRpkZt$$YW?HNYJYhwk85I+%Em+T};_^s4c1Y>sJreRo1B{1VQn9~;AHRQ7?Mzp(&?qBk zM{eIz)%H>lCsmUqz^A!RWmer#oM4wN?w-H(@e`@eXI1kW%JQNlQrdlQDl%T_AOMgp zv9?C7#bnOnrBWUzI2JI)k#1s|ABwO8HL?an5ls8N14DUUj z_Pfiesjmm9Z=JrxMaEGPBq7rhej|Z&!Epue7l2 zTNasyt7vi9g{KmZ+9;{kut6iYJz?Jcrj)r8xCzf#jYM$G@7SGPOrJxv^B3_^at}EgFAMw>@TaIjE ze^2u|+b$s}8!|Y@q{>C)* zD5~3IH&aV2gn5~Dsnb=s(yuPOCn!+q=GW`_fhHxgpMMX;Krnfa?6s9?g!a%_2e`jJ zIXP0#d7!Pyrn-tckiugy*j6%DZ2e;pHvuv{|Djx{+N2+p31@oabe5^NKGjxWDLL9~ zrl*cjdbn4jS@GNA;&g|P(q__`2_)DQWC?l|b4{*@`HI2&_e7@}&MS)I$vRB2pM-OW zs(d3)U7T+4b6JX&KXEDHUK~GY8?JJivR{gpfhrg4p2_5vA{*V@7%WbnSeeh%g4Vvq z)U42Z5%&sRJ>%=UObz&%hy5K=Mmmhjx7H;(+tBAaKr(7Lw@MH>pWFOjmz2yUO0B#G^%b?hVMX&3*x$6 z=6r~!DY&s3D=xu{&hk^%WvvD1u~=39a^|jkM z|Epcedv-g)fn=UXsDwkR9^%g$7tfy6dmKI3$4k8|#8p5~4Yi!Fes?1m^ z0Cp1%b4RGS*{zRMn``>ng7r8Sq@r0An`Lr4EnYm?cw)6Ux|8R1z)?Y_4cpk8VD5DMSxaX8Qu~9T4UH#{rL55m@}ZT;QG>@6o^<<(U=)a?j)W319&y-ZWWO@7hyEFThHO`sA4Ywt!JIP<bECI7Rwg=ZhSRDzkvxnJNFc(( zJAN@(*Ik{Q2vU7M<@;=&xAjM+M9KOI%uuu&Jq}+B86>IgoShZ?jW6$xlg3*ELYBLN z$-e#LFx7e(AchUOdw684j8r(6pPH#qM+V1=WiaB>%7YcQsJ;SY->Vk6u*SP_u&B@E zj(~&}%*+O2lv&#)R;ZYObr7|19PVU^^Q+p;jg6eFS}YYv z05tqE`~@2f(H{v(-M@Bp+^EB?aPXKfw4?T99fbI-die8>fB#IbqF!`9G$^4j2e}nr z1@lOL%9Gp=E!D<4pQj}K^g4Lx_+nqbmafMHc*FjioPn1oLf9J_fR(EeNY#Ay?n7DG zJt_#eskFJ$$bjZ6gF-H=s%>|fkGg`7l8X0L!TO`CU)_%gsDN_rqqT3CEN4@#N@ubM(_JzVbx}ZmvuM3SaH6I%=(f`n5>L?a$bO z4YT)3x@rCVnycFiZ{PO5r%vMCSUH(SeP*SpJoXeAPE;~PY^;42Y{a3})u`KAb+*MrVpLcOV_2P!KaZ}QDbC~jdi0ZslwJpTTZJm^O-jKRvpRDxf^gf7C0~&tY7`LpJC-2n}H9c86k8c0AD3 z)Qoz_so}9bqS)lRr<4t!BeU@`JgLK+ zHoI7kbnhE|thzqSOMY&Vu8aUxRizHF0t}?Gu98m-UU#=GN+Y?_aS!MBkDmNL^*bkd6okl)XQz zN~A&*IgPZW9bw9%RVHg(GiLITQoWXMO+CPhUv8{_n?Pgp?M*(*Pp-nb=Py9!iERWP zqWZr7;UT4@yBlfg zl$01y5KxrvP(VORxF#(A@A`edYd!wqS~@WI&YgSrIr~+c`pX0R zR2mLstv3o4kI5~i6>p2d6(pGD&o^B>2LM8d)0vrsu!!sz`DMR7jf-bg9&YNjE*$iV zahL^+Am1~v2PZT44IHN^!7@}6=TVv0ef;-FiGE25F8mV=vgVM6TECTN`$4}F655a< z#C#SW%ZsdOisB!@m83L?G`71ecxylXHF7>XFf#da#CyWmHsfLkK z{Yy)fc;CfTCgkqB;UO=aPo;M#W^x2G>f8HJ(2(8$X+EX~jF`)OcPA!fy0(^bK3&g> zNf}doL8MrI54k91b*akE@<-iku%d^R{LAKj!2N4QU(uM3;EgvM1Y1+6N+&bH$u-m` zWoPPh=LYM~=ce5r&)^{$CAtgxVB8gs9m)9HcQ5f_DJ!LCt8PLCYgAJ7e_Nqi0_;l6 z-#&r50E7-jn9im|?K{aLL7dA!U%Vg}smB25$cM%?47@7a!MV8D7Y>sK9hV(XuDRIJo`O$4pZV2 zRYi?g*kCy4`&*-yxAm|ti>Y>Az*J+FmE8+AY7}qP82*8UV$mPlVYw)lpeq}K)s+rZ z)0tGIbnora91=nMt<-utXm_UHQ(}X|=9E}L3lx0TE85FQlzR~uIY-Z2wY={$n8Co* zmC}U%OtJ79I_YWj;<9&w*>o;FQ3}lT7;7}jqhBT@0Tb-XKE3#|*_&2xBxO&0Ka~?v z{IL%amrWDC5C6flLmq!=>SF{=xtT4j$1edJ#t`kIR-e>S0*GwKm+9BnDjDihmrchZ z#RX1wB)VInSRYEwu`+K3Ih4rB0au40MDmwp4*R(hEIm7fQ0OzQYW_71ZX=Dqf|vx1 zZ2h&Cvpo}7DzKxORJh+Zep_{y%CKb487zpMS$_Hd;c|c4QK1n-Zn{{AvoV+yq*j)-0}r8*e%b~o4O_>i z``lDP*2E969-?j<1#{o;9qu)&ZzS*;j3l)*+k0={DhEKC(JOW)nj1o_W&5Je5K950>T*j6PqHka=DGZ5xsAajmb+MZ;^YWi}wokEqNZdXt z%VN(~xv|EA^#2lhqT{ASzQb48Hf^0oLmEs>u?XrMaM6|1f{>8cK=EA?yhFER%GunB{ z%43(g4fKZkHh?X2ZqWG)Aq;BAUizCDn$p$epiO>MkI`OevZC%(X=q#V8T#-sm5jUx~m?c%$M^o|eSUDJ?vttA!Gj49Xum%DMs==qXv;@OsX$b292469Us8jn`OwdCdc#ylJ2gD+jr9S!zmpOWWC!Rzxf)CW?TFjV~MB z85>nFFfh-QYKz${^P&sh&3|#KcS}?Mdb$->yRo#CESw2udO~*i^4kC$$g#DVVme;T zVZS@=_i#swT?$pE_@mJ`$#1<9s{lDPxL5%F1ljriY|w(MJDQP!zyzCK0d0CD6(bXj z*h8b}BLfo4=ZQqs=5pinzj)xDc zuiWdjLguQi$<9b7Cf6g1YZ{!-RpyL`5p&5pL}TImZ!piuqR_={+ptHZtz%7 zF)L>s%sV{2Zz9b`707BIr%Cg>tYOyLV_3^Dc|oucyL-|z`taLYTFB3KcqDqTGsf*e ziE+1_uSX@~GHeHngMM45Xp{-W8ZVbsPI@i%-C`p^0rY<$%9>M?kkBedlk$8TmuRfN zdZ(IG=deirsq`10qIUkR0okL0)EcKVn_nF?zP{CGF;cJZFd^7Cvba&$8g{+o(CzVY zQInxZ@eCEt3&sP`e3FxsV-l2c{)s@4mp_3}q9xdvw9V#KNxV=$XPiH5dBF2peA2!Z zmiGTsdEvJPH26xaMuhROv9;*( z{AX_p@7@`6WT+-~y!=d_b{@(?qbp7hWNFrtNpI9A=Mzmtf zrL-P#tIP%hMEWD7o`=%ER?q)%CDa*Akx@&e3ZYE;n9{yxdFMNqEervaI4TB(k0_(V z$@y!#Q6ArROh~3K!uh`<)s>LPCuEdafWN|SjP0zbpLvu07b*n>1zuAFVDv7}XL~;d zDNRbb-?+vR2jG`787^>>yf4(020Y>Ep9urp}>w027Fi)HE0-s>)ulBL`>TR6Xq-?a67S0q}$h<280S5|u zPJ|-1k;H9lItLBuXuypvLd zpF! za(YHVb6=@W0we?RZUaIwbcU-U{^dfAGfBmc>ia}kF!&-@GyfBsA(p`FZSGI47TSy=gb4BKQdF?jgU*$6$66K|V0`I6#ClJQ9KXJsMZF_g(qGle|p?Ks&NseWhqJkfC7Ez3uQk4EZs+U>Z;w3D^I)^E+ z^;js`t!<{-k$KH_6l1YUyeQGN#PvoMjc{7gweo0)wL6~2Ii2rzqu}TBtu#LGb~h#< zJ~KxxcKxT>1oA9^70MofPRIYs20!O)s2Dn_)IpO|xty{F+i53=|z*`28DUDDj2wBC058 z>!6)&pD;IUf($SX zUh>bVk=62w<6O1dQ_IB$srd1aM~BOBfQC|!c>$pG?obi$<7Zaer^t4xvbnX zN1X#ZwVXh#qe70NoTU)tk3qh4-DL*2AL-~3sI>D!OB#+%-YkSFbnPt`S2Ra5nHqA?nsY0EOlT9jpRo0%Kcr+r;RI8L!%=v8d zUHMCh^%T>IK^%iw&%l5dD-dod6ezsv*{BN)L_J;`OuNoW;uE9+W0GI9miB%%{LBRP z$x`DqQCbc9RLHo0ZNzcd(st8Z;TF6rfJ+j$(<_nehFy|}q~(p3UypBU4hIYO_MweF zPE=@GD0>m>*jb`;H>_9E@l|MS*>z86r|NI1jm|Hx9p7E@TM|@NT>s!Q>BR<Eaadm0Gsu|Es&l1`HTHgwxBgC!7i}nAxfs zwedeioGvl_gGpQCxEPLhf0tQ#M+)d?{)h_|a?oB6I|Utgwao?kXqF-dyd;_SXp(5} zb%sw(X-P%LpD_kISPzhYsJj-s4A8|a?5c%&M)G{NoHr`h(DuqwV~zT+P@pB~`tAOp zq+MjFeZ8@#QPG)4heeexpQJs&elTALCV<$q0AX5o&1%EV1sZ3(w|82uPWXMj5;F_6 zwpt#mW;&r4EZosh(?fPmVZKox@dcQu{Z3WwB${XA27~(Z`;Bc*(I_7CBWdO)WW$6H zlj&0R*SD+Ud`4O6J)r{f_>s@F5GYI%K2HIkT$ z&&X+cNu0+0@E~%YZY#9y(=~MW^d7`aqOJ3JO;0u&Cn6^%Psq zNM+rgo%&!cYKJ8b{99-Gfdw3jWwQJm-*eE^hrH1ES4)eH1T>qF1-$4-O{aX-^R9nb zrahp6EIt=n8oOk6)gW5!e5Fir>lVU# zlo~a?T-3fRaonM2(JrO*G%X=Advr2Ys3)%eecAy59z7@!Q?`@G|Gt_De(|q}Q=S$a z3L-I7*fT;f$xcbJQ#q9rmP*Q<|5Mqgi9gqlK7~#@K|9i#Sc{CQDO$)Y2 z%fX0wr5H>8U2nnPh>wSa$oA_`f`dIbJ1IH&=Os*5aH6SF?P#QjAWt+<%MY-zdx|Tm4@4i(oqo9AThOXS><)JexX3u<- ztgBR@-TbXT4kZLH$f9lIFBk)`1dXrz0dJpgC!jfN2`goFc zwTksWMK`VP@#9-M;*@w>Kgz>NVM_V`#pn1R?~ysN-9+f)w?o_CtniO28|m?dcFgGU zpa4(~8<(bvur7B6ycQY*r4F$v`3UG0xw(f<~P$HVjx9N%v9dnwg=JkdX8dVaiDSqo}8sXnwm<27d4o^Ag4r zhN4w%abXaBf4?V`+(~t z^?krc_aT}_{^!a*+RlVvGdYtgjA1;y8^}g8k377+8-CA=?*6O12VW>HKDf--fx@%@ z79{Z7s0_MHsF^_Mei_uc{6B6MVXWs-SNS}sVBZY&N(`Iuj>ZzbswJZY4nu~%KRsl7lTC>YkrIW3e*#bfy|f>*KR0mFc^Z-;taoR zWCdARj&Odzcdb${ZnfeN^WwkqPYEOS*TrIibcYL&?V4Li&WD|!pCh4h4-CH_9ApDl zY=0lqYp}t(z0+x3T-2Fz2YVQx(`+v@QG5-e{nY-rKaw2xch2=-isl@N_~Z~6u)Msq z6aWx>czE~~fY87rAkbaT0z?4@Y^UDcMc%8cf3dYyzQH?KkZO2ObrC&h127tVU$JwG zwMNbf6A|9x4pq*~>4hS{dbo8WbaX!_ku*8wm^r?dZ~;VUCnYbk89~W=+tu(!Xx+#< z>MR)p!!rIod5lA|KZf|Wx*;@?s)t~V*T93eH-EJ8=TD9FgSX3JOi}(T)E9ocuR%x@ zNuJ}RK?eLQ1<0GNvQ{f=`<5IohKax~!awsrvzso*(xKjq(d_RdxW3`hVi+8VxE5P3 ziWqPY3I1~{gHjC~g0a0`IgBV^)R(-c7Xr%4a@vz>*Ud_${g7k~aip)7PN*q~l?s9raHc23&=hCU|3)NnFqp zLzPOuBL8OUTpgIJ5GKr!mATL;4%f{MTylP*R`h8)2aaEOf(jqFL&e5No z{~Wxw05bzQY^P;`F72&Fav%L*jg1M1%QPlgl3ts1>XM0X$;UB77Om3ZXLBoQ;Q+8R zIF9^NZMTEycAw*(O>cOoSqLSs!7yAsl+>jZbogBK5`vu28}opYP-ok9Ejp!twvC58 z?^0jMK>Z_U%y{|k24ZXaAen9v#dmZhjaGtPK4ljV~w3;3S zIY@$*R_{PJ1dLtK8{8!Vr)r$t*xPxV+#)$~!svX>XQ|z`2E}P5v$wOe>nL7M3uAi6 zRPoIn7!dknMJ6a=ph3hH!j|P(-C6V1$;0xJ=N)3C z!X*nm4Foi?%yPKQ-@u+ZC+Gn$PnD9gng4sk79h%M9b{%JEv#4Ck@FXeVPFmxSJ!e> z4$sbBe+?{_`hPX77!x+LRQHn{0C_lcYR5Ob!(RB89@V1i-G!izfW zRI`##G?IQlVmWLIXEb-`^PIBA$!qrw&a%rJe)(!;IYA>wtJ15n zVQ!LL$@0>DGgXT~)nU;5aJ{rW!7Rt}HqV}HJV!;RL3GW>X{wNH>1WgjGI<#emIHvfyLuhhWGQSJU9a(%jASjU&1xJ=Ut z6bSeZ`*TVRWAk%!M~m*8k-Ch}pMPP;rnZWIVFIIFe<)d$I6v;^6hS{Ql5LH1Mjp+v z-W?{7TmeRCe*@|8Om%py>S&T~L@7Q``79USl1m$^XpbH=v8oJN8baZ9$4vS?zkc{L zS>b)0OTGFkhK(#y7`O{C_S1lw2FOG^fH}!_XA+BDr|~7Ai#V)D-_luC+iX@Ir-rfX zz}P`Pv~$wPpz*|OrR6<~@_&NQ@*(%~w#eO5%l`Kvg|HzZ5aE80UGS^no{(cDrhQ+ozG^Yk;z=a)d+l#rFZ*dOreZm0tX3{dzFG?L zK8^K(ER}gBrMx@}-xkNEixD11W`q!OTTv48eDYDwkY5EMF(u30od4|p{^~09kp3#< z$dE>}@t3TTP9PldK;?a*c8MuWb5-S^=XA-qPP0kv`%C^V(*M|1zSAez(9KBjS&{BttB}-Bun{=nlf)8E8k5E5@hV)?C3`B#B@QAe;b8vF`GZQ-=g??*V9vF&IU8s9>_Ef^HTV4q;@ z^2LyJhtn}%V-WtBt@@l|0#O#;YUzt+4w)>N)tecIPFI-u&pB-IHs|jUuxrQiF@z<) za8{^!A8KlH?%t!E(LwgI&f&0;$7Eju3w1nKjqcSdL1K_3HV}buxwk0KHQ10eI6Ghr zQQeohZnA&y3ZW3~tvFT;A>!I>8Q7z7vOV~L_>?3~IfE%%D=)Vru~G^Na=hLX_@QJ) zcPcR5Bx2gu0RWt|T9Nbdq#2cidQQn;)8{~UWT*p$w&&cQa+zMTL4}K%w z;6Ja2JL^6TdU{$MJ_^$*=DK8Z8{B1*1b5C#ov+8bSaRSwq%s@4*<~?}ezAFlm6j~7 zxvPhuL)dbk^LVnjuz#KV(t&uha-s<<6!NCg9HA$5&Ow)Adpwu<<@OLRSSzCNxJ(AR ziuJq?H_pt;KhBZ|2SfEN3c3#UB!{!Dxwg&(ZFh%N1GvJ|X`N){j@;4ce<9?nygm-_ zi3tg*!mOihkM-@L)Wa*5=H`-$%kMm>VJ*}0&ZC;oSCfC6tBLR~?=6zO=OLkB!on?C z2wC|p>y4RFhtr&!XK>0HA7K8}zR}h|(lF0x8(*ERQEjgL`9qYAOx`uFm@w@hLe8~} z`ov?X)x&vfCgbjXU9-XOncuB_V<-Mm*H8C7fQz!9mN$rD$MmLe`a~11GXxWYNi)b7 zOw|>>(`+a?c(sAId-Yc%H>tY8usKrYMYMgaDF3%w}zmG&D=753$&hr$eqo6o8;&Un1NFcYg{rWoQ(bWknG zx$1toB46`e80lPT4c8vel&BV}vm5as0!o_ovhh-zgv+?$q<%UixhFaEgd+%R$lsuU z?`P9#`h>lkEwnCxS&2X1oD#UEN`l>tt<_j9f>z0tKrYu~mV1%=pGbYR@*?IkCZf zX(^q}d!78fm*24Ujw9p1s(@eXutUny_-D+dc~~#a>Sprw>DGu;<;R(F0j39)r+KPu zIR5z3QA`uV)li$Oi#6zKiNnFZ?(8aQ^6&;=__yYAw2Eijzv0O2!}MP>d~O#=PsV}K zQr(KRK3Xw3k{#arL*Kl+2hP#gk^Cq=S1Yh4IvouK;@$K>;PuR{i>Iw*vwAFtCL0by zHbTIr9-JXhptlzvs)Z>rrnKiKrAeeY>*khehD#&S9`Gx>1tsaLYiVU^v>9Y}`Rph9 z-mjmUG3F5u=nAKJ>M&wr!u&r-<@cPLD>_#{xtnd~6+qAFs&^!0t7G@GR7Z6xTPk{; zpU)!K?yoO&*{ls5JyaiQR_v|CUp?%M)nCaMJDs8AYt#|Ha60$&mSnL$S*q0e`7?#6 zDXAm~6bXLJ892oS;VZWqNHQ1-K`3bZ44qUsAec<(9_`n=pZ}*a+zZ09to!DGC8bGj?J$NhThkN^M_+!ya(>-`gdC2n~1%hcXJV2;?y-dMIM=D#}Qr% zjK97+^b(cr4UtwbjWmHY)(ft`%hVe^t= z?O-ih_HGi=h%PEg8u@2Io%*S(#>7H$mKm399_=eL7nkQkfeB#fP?>$@F2D_j~jQIx%pPacr z)L1}(rwiQDhr7R3^0h0l2jZ(D2>^&jE?n*ZSxYERXK+lr{(VtnEU#T@s9uMBByMU5 z`$3$RpzDlb+#eTv2YY*|%zicBHA9Ue?FOGf8_Rk(i_%SdTiZy%bp%vA>5YChI>~o| zV6(Nf`+Mwov)(aKkD})-r)P@+g>bd#@b}&rc2PmQeR`vh#8d(@kbiOk64ZZob4kY( z&WAB5im+(%Q_R9f;vfxt(QMRb1zMWtj-&A9<`dG-sd`q{*S|U0nZ^H@TSQKB;ZyVo*@QVuhLU}EL{VL3kxE;?bFu| zk_}H;2Zijmy%110sEm5wZeT-HotQxmq&5;W3QwiQtQW$`X0Je*Av`pBQo%yk$cVaRU0RFX1i6x5p?ZkQB;V`uvlWETgEk~PP8Bh}U_uLwm|ch7jt z%p9shiYv+_BRbEF7E>f;S~;M~+!o3@-PI^~%snn!<0T3GIYkJ23tc}FJXEq2^mk*! z!1MzeO|2&@*Joyg!;4b8J5Vupb$$%z^Iep2+#?ch(`TH9{Xg*fVszIZb_V^OS|Ka= zt;DCe4_3coJLFsKPBwxzjG5jSdVwt)%15nCbA*yP0 zGI{s4{y0>j%7;KAu1rMd{z5HhN_S7Mt`#jM?Di?UE7fufl zLWG4`SvDKt>ixk)j(PU4Ax4fri{WRj?e`xC&wLM%GV{Mk;Z?}I>GAodvb2Or!Wz$a z?FD}@Wtp7c6U|E8cb93z%#i<~1T9B7BaCC^HaYoI+ci(={q7!33TReFKaUx+t}oOJ zd)UAq7_>uCE5~YV_}af)w0fI`{yH2an|*G%U|w!91>=iKfX9al9;4V6=#RavS3B)K`c27xF9>H)q`F%XJUKgSo8_|{ z&X9M;!emjemzdR)Qqr`NmoO($SSVr(&~;<4VtCTf}@ zKwLg7KNT_+cD-H;9I9`CZF-4TD-Lj-V%>We5P*a6E?2!!t8FMAK3D61Hio#cqHr+s zj(VS26F}oj4K??Mt_5~yme8!;tF+dKa5)CfET2L*;Ha$BJ)2F4>5?wI@nBR`Qq|y< z?Ww%~z+}kq)K}GDJfg{I%V&Waf_y9^i!BCUsd=d>y*UKwSGEaU_cQu@5Z!u?FnRiI6+)k`YpE zmf0wxk?;~Hl9Pkk$YI34>+CILdcrfX*tK0q1*<7mJA@ulk(b7TdLxn9y z(`!Q6ROl5$_iF79d_lEby}hz2b#L`SRw{5}b^N`UYotOIJL|CJ1N`exguD+HYP>(s zzv?ljm4ga{=wC&os2mk~{fqqson4txYMpzpM?~(r=2Se4x?>o$yuwbWm<>+$H}pNk zrHeh z|K?Cq)KR`_fgk2|zRF+;J(j{TeYLK%WzhBmC7|00Mf6_c&t@XV4BESDb;%-SxZEKl73Smf`v_>^k8y+q6E=?%`DFPM(m=nWa5^7;`7%(xy7zfqJ~Q|BC1Ka&ELq#t-b!mO=ch+63PShlo*K59E!tJeE+?{ z*&dn$H@H5G2o=R15csl&UDA^HLI{B&{0P_Ljd05lQF#=|GcCdV3WjW7UM#Xo97i#| zLj=m8)?dH5jOq}d5~nx?%^cpJLJtkJoWnE!jGBb*$h?7p>v&o|?|!`YZFOL$S9fM+yfLf%w{|oleuT>TuF&Ozbd>93+=LU0^jE{&H zKD)Yy-Hz%Lp%+`J&%dnkw=^ZmTXG?j&eXK;eSN(izgDr<>TARAaQ@@hlOF46JUxCv z`j&2`RiCEx>>pDU(V9y_yy&xf%=V#lD!LXI>>$mW!0qKVqkwEHM&AoKXZ> zLg5*52JN7H0ij+NBXnMy;Zz3nXvEyFHc$_oLnvNIyu1m>ewT+1be(K;%!I3*iqSh) z!Jy2WZE%;H{_**;&a~9*=}O&;yd8hSBmB&CN%;11`Nb}c6h223kmAmP%#>Ql`}Zcl z8!TqgpS`QiM*_M$5lS;rr*cB-{j`AZ7kmp%zc0QRF?%Q=Yr=trK*kp(Dt+EWF==J8 z;3uKL7Z#U0mlB&z``bFZKqTykol6Tqj5T-sAX51ZkA^N{Sq(nZJ?t0&a5O#YmnuF_ zpa2nN^BSYda{%f+IK3J_`mc;VA^^8opp>DGEowoUDa4ehWw35u`6U%mh}62a&(~%C zaA9o(>*(YI-JKBk1Q`~rPzf9M{TcH&2PaG1NsAbIAZM={guLIextuyAL_Ry8-q+{_ z6i{|Z@Oq<^)z~)8CxfQxerc_Dh&*uwl02>p@nZz z>jmmSe@!+?bIoIw!K`b#!mOPK`6^EeWnlE!hLwyI!SilY=!fpN@^M{T*g4&%Ikdl9 zb=Kslf1sJn6h!`?rB1@%BSU!TegM`(g+cK<59c>n?CrurS2}|xNq;s%(a+ofh4kSu z<3mo7YYn%4xYz2rWKfF~v?Hd{k1ZKeA9sl>LWWec7P!Q)YO&me5gMtAAlG+?rO9gT z#IPr}_53MIIA5Y_^W`@ZWz(vsJjjIZhQ4J~&F2R-#3E6X_8X9Tl9-lOd>lj1=!?Wq zf{1;wTWS9okVFXs#+)+6tvpysW$1A%OoYSmI$~yB5)tD$P6#P#xPCmuV^*u?3-X=j_4i?FjmllCJ<$)Jrs~dj zNVXzz7!-amy~{Hg>wLOGimA-~X&m=m-bC|~_}u_Hws_V0*B@kjQ1gzDJA-Z)Ieg?X7FBj7#D%2CSokmHmr8E{UEaOEzUgj)TfbN?Hn+40VBy}Nzebx zVhGr5bS8Ti0*LKZfEGFwBE}h=&f-f_W~@NKSt=Dc`Nh>hz#oLgbQ2Ez;!*5$>-e6* z@3xz*+2wR$9W5YsyY))kdSuQq(1?`&HF1cu!$G&x!CXdNKgA#`iW6+K;Bq6E@t|)} z2>T5DGxp|l#(cfvTWBr#Tytv`~?b($P>#hIG2LLQP(XWk5g`RZ_%M`jMQcRsrbuOFP$kk=~uufDr}H= zTa@O@d`Pw1seGnU2&-D8P6eC3v`;|Vg@78<(%DJ8H(L>HM(!OfkZ&YvHfd`eHv$hK z6%v%|kNr%&rBQAkgo4MEW|@=-Oxm^l@z1yXB$UvtC%i6*wMB{QRq5oT(N;TyTbJAX z*SHph99dJvByb?bb8WFD5$*3h2U%bLtOy;&PY|qpii%sx3akS*YmsJEHj9bW$0pl%Z_mfUuPGg!NU*GsY_m_4>>WresNM zkAE~`wOFh~0Ntdt6?8{WB;{akxe5=My{!X$FOOCNzpUPMT^v*5l)J%Ip(;Sc5V~e~ z%+~aKzPVp^W0hMjE>Q1qyKGM9&i?~#{te6CX8l`~lP8vbkTF-@27Em^54!b0y7t~T zgZ0QR7XLV}U=!pVeok=v`V8(w&C<7SWQYaw!Qu?!ZKd5puogl#CJ01 ziIP+IL(wDqwW{3_(9)mIefB z87*-MRCS9G!+~hYg;fygMR=!`Ag*C%F~73hc=s$AKA>5XA;^E)@bgRgJRVTMjUyj$2MhJWO+ z!iIA?#$#&e^`z{^>YhjggMNpWZy|C&t%HpXDn9o2Bw}83FL1j0??MI0t)A4<48QZW z`Ic^NwU2^}Tx>6NGn?j2FxNoB|1EZrUAg{nTi+3_v-iIS>fNoHLhZ-(q{v+@OTi@C#wxVF3LMVJl=dQPs_Qd5q^F_e&c2EARow;2_Is76(=&k z*5CZ{;{t_ublkForX_98ANw|JA=(v2$O=!eA@2jYmLOJzb@E2tw2-VGV~p%&;1z20 z5|D$oV4vYG6?3-*ZVrtUYB8TU=P$uSGOv^%FP!4rRcxPp9H}o+Gi)1rhNPE+sX_9S z{ZO|j=IZ1%@&Yg!Cx?C)e%>L*()6Y(xCbjkc0_+`uBPq>&L%B~UR?N+*JsI-&4Es^ zvE(p2cTwZQoq$Ixq(kZ7QjUC9lD6cy+^Y72P=q@)n|>PZ)(6Ag32JD;QU-5P4r%sDBd4^iB?#`N__hf9*CU#W0sn^uE|0)2mEfcCJwqf?^$Qvjp=E#7He$7``bj#|xUt1%Gv z{Q4#GC7V6x_w#C+-0`JcVB44`5}sD5!+CY%dyiwkm8grx*7D33{q2A3(qjpRu&g_t zTjE2Cc~AW>C}>qm#9AaI)|yk{udN`v5xkHr)O1|0(V&Th;}vwfH4PmeTLEV)OWB`TCKkSU+4xhf69(a_ zp4v~^JZ|TkrSsJTG{I-X`p#RSo*S=O#35qxX4v!nm<-FJ#-~<2iBIJ^LGcH67`-0- zNjW~LiQEZ5XxYHi+FaF0U*99aGz0mF&o~NU`OB_F@57g}Q&?mPY~Pe``WBV1DRt`X>A3wP!wD1=_UL9^7Z--s zcpNqa4T8@1=LMGs6K0KJnzNPKtai7;bZ1R?MR&T#&O9m?)qMc&zAT%CsO=tmbYFo4 z1wDc+6TN(*1gXpqM0WsdAi23U#_~9eQy%kw8aJh;rY`9>{0&^6DW4OrR}x1m%%03O zIVjeOg^8uU4Aym&P-IustZ{+LjsZLnIj+c8_1=35X;J}$*lfzeOWV>{g&~CI{l2hr zD-eOVDF?c>2b55YC3_=#+kiq4=>iz;>&v#UNFkY*c?EJj1c6h>Tm6-d3lfl#=*)hlF z7r!4wBl#a`sLqMZ$I8hKQWY#zY7i0U1-5vTqZVB*_F3)sr~TgLsdiUnzqcf?rb{mV zZlrukDqe*uxHw$nGf1eCsSv5m3`3)m$+9J?TTB{rbEy3?%U_46sRANK!VTN)-xT^O z%jYeu7+fuMwG&{%kLevjRFeMpa<>yD|978M^4C5|R2GaCbH@b_)>i9Kyd(IQug)$A@=4lh|SWAd{m0zQhje4IK1M&r(1;qBBcnO`wwB zklgtjo>X4t|DmTtq#o(%2V)rE>{kGJig<$drZg2EA0-<~%dt|G0JPCON8*DyPS4fj(HoVg4>I;BdyWe(!yX0ZeQ6ac zLM8DG*0Ob9jbHhn?%$XJcn#vgle#&i;{|9E{oM~LWR8BSN!JT6RFEO8ZW(Zp#VebB zwKidBxFPk5Zsm>V-Hp%mD0Mz8Bz&&_GGpQeG%i$sJ@+gb4xS9+Ra^8C9im7sDsgkJ zut8sHGDLMY0Tc*+VT;}8=uVnJng;mH77N~}^e@BF42iyn%E8mhCz7sqzK(8;nEO0g z?m1pp^roZ~^P{bo?nbpLwP*UN_Y;ia#R~RJg#@~a8np}O(ROQ)xfL>99bvoCh)U2O z#bT}Q#Dy9!fmMs_Qz?wV+7^eWkoqIt=EOLtKd!bvGeb7TD6kne(S!fg&OYj_&bCJa zNTaqj`ji_@YEael*)=LZ?2f?s{f0@l`xO4;r3iWSV*m6-pb&ev`@{&{x?mdfe`D4X#>JQ--gFqfsRS}u_K-ApJL=|{~M zy+6xKM8$0#0F%&9UeWjMhJh>_GY6q}YDN?8mjA6-9kfj(P7!e0V*U{1HlQ;dXcHL)$lSqLO4~r8m zk|I{Haf9jeF4pW{5@-2sjqi?Tv$&wYi z78?_4!HZ=(EgS})GtJhrJ4<#5(m;xQ{grE|V)f$W@oFms{2Q`Eyl*m3#3Tz>yleLEPj z^fV;9%r9g_=Nezi#9L9?{jycpk2`k|QRcRHHEs~q=&TNQPrjbiF6?k{%e(6Ee)4(t z!T&&Mm)@Agk({rHx`&Y< zv3p%k>$V9-_EycMW&N7z&-jv`U&sKjK3PP-ooI+m;2-UV1Yeg~Frpw+A?|eIy1j+9 z;jx9m;F^RsmeO;Vk;Qq681KUOY(EWwcnmhsx=@HXAr%#2?xoZi;_ZIB+8r-wPnnly6Oa;)=M{gU3~SjylmbOJXrw$sHn!ETxb83lx*4 ztXBzCYj3Ppu(6ZN|F~VR!;g|hhLf)EjZvxgRb+bxgrF?2@$%-tOT zwGXFTzc5Wt|8Wr?^`X=dOBNfQ)R1~|vPk2pvEaq-1i{rYUg(hQpo&lGME8aX5Sg}u zxZw`YUp^dMW;;`Pc-bWF;cC~UKTU>Ur|h%x0IF%DYhmCG#-t&&sAj(b55%O(45%D@ z^shx=ds?8*%N0Tg zZCq&3@@ZZb2zci@pq>q2_E1MEWC%zJ4!XTUMRpW)Um*Qswl`y^lx9pOkZv3?#IdfK zhUvZLXiCij3(;nNCb(4LrGP?3hw`>Soh*o$FQR{4q`?_}_UT}h{hnaz*Kf+x^^R~G z0|~6NAEOTdCV(q{wd6I$fWkt^($t!7QOT#fgo%~=M(pLX2R)O1!WkZOv>(zFE%@tm zyQu$%xAt>D--5`x9-AH!`n?9HKdq3}a z-t!NfUs3q%z1P}v&1=pvzJuhV-OF#!p_`ol8jP*zS)aR{BY&qBtJ}odmB9Yw2wmV= z1@KvVN+wL>_b3KzVDl5=xXIYNu&`Z%0%5u`-u4pXh-FA@1_F?*yH7Jjv>$$cq3Mex znlgCYez)=IZ?z8qBAH%R3HWaoR@SN3iBC9k$%+5b0*q&H5oYNlM%*Eva2)0`ByXGn z0#qbeBMs;4gq0|!QPjSiMZX(5*qf^pub7k@cFO2k0BmV++YM@jhD_HtS$9|it>#pZN3h^Xv_9&FyX*ORokv;+uMh-} z^4p8_w1x1K%u5Lfwy1$mUksk?ZRQ*Y3Ym$3oGtyB$=>;|$@y;~EZtvi#knibHI02_ z5Lyf0h={xG_&zmxi%mhSboC(`EJg)Lei%28(R=LPpZ?s9tPA7)ff$N#5YwM9X%zQj z#@lglH;k_Zd2ZJbmS-|Q@(+$4PkQ--EG^?Ol(EZTaVI?{^OWbdu$fh4AIczUePG&b z4n?*s8)e!i#p1HDTPr%_7K-+>Dpm}Y>3Ci}z5Tp}SOp=dxkBXSySw56({{#E#4bgB z$bU6P&cR$?BY+`xh+vbw{9A{tW=FL`ub0#r zuoisR&g4w46B*xHJkBI0AM!N6aymF3ht4@}7=g_q^l}f6r`(V^2o_hAu8c{ENYKJ8 z&s8kZ<9JCrg5)I$YnEs@44jB%&$*EI>Ro-tNa?*vyBc>(HMfz{W2%+3rg!qa!bJYZBgbsEGpD!T@f-cm5 z5$uhDjRfvd1~( zQye7@*2bZ`aaQ(h<5VtAMj_zhsnadDUK8}3c0IPsr3i3?2hPULMM(r9TcFN8hsB{3 zjs&}4woV_lbR_QQc)IuMH!VipJ)Erg5|i0Iy}jhjTIu8c^PfdiS#{`~lY`R1lJMi$ z(=Ir!T|RB0S{)dcsQ3akk!lEx>;8=7XNBUH;~3IkNjJkoIl`@ao#5tpLFZ67p!~W> z&JpN}3v{N#IA{87*9**RRTp_Gik8G2y3aC2Oe>Mu8|@cAdR}bjY3x)wvFa7lb6k1Lz3(MvtzwYp{NZj{{6GR_8P`C%HZmY3)&gofgz_>Hz1E3lTui-d!FQ^~IW^g>AYX9*v8IRcX+@HrwfgMQwE4De37j7uO zV^J-XEE!+!!o^%{vhN=yo`%gX*)HzJ(tTx5*Msr0=LPVuju3lZYz>ZO&a(U7Y8I)c z!LY3VX!o|%S;e0|Bk8-#>FgA*{G65KXNsXt}fSeAXBWAL4UWhb`n>q zFZi*Uu^#6gi0%B=wyI_}c*oq2W4q`o76cz@rjo<&jQW1M7>_X;<{^9Qw%+Rx;!=w* zS9~6WaX}vuhtDgTr_RfP$^5^|LRXxGP+owkWIXuPQ|xA|8)d{+Z;S&QaDRhJ1y~Q= zR~dN5>l+C9!nsCG;Lwl<*6l#}gHSsAB@n#B@B{4+mjAUE`&&}*U{lX~ekQ_00Fg6+ zQmnflcsm^TFTbDUh#2BQ=(wbKnhw5R^pcbzrQ5WHsY36AxC`H)vs^!qrr;^5Sw5xf z^OFkWZrS53sP#9QBT?SjDC9B<|AmJ>DBVmfYN>nq(^5)u6`#qr9d9B!@E{*SNDM3h zT{wz({p&TZ@s}@)2}>(mSiWqh!MEFt8_5RvZA}dhXm$#DRNjRswCJ--gzpOIx^P>F zJ@c2f+Pa%-vV9xJL7+t!)mbh=y+HbdI?}&LY^QngmRQdb({7-PjYnYjM}CUo2ccQd z{2)Jfs@dQZ3YLb#|9XaWB7iq7WGxRHpzw^DHdV45d(eI=F*Lss4r@Wq0Vv+&@lX?f z6x(_yv*^fhCd#97EGEEzOa1i)1p?bBUyw+!tw_Mu)#}dB%_KQ8nf1z%~{MAAszFIsMwSnAW=Lf-K`mwdVzsPVa3WowdhG z`3^-EhPxai4ha}Ecgu?NW9j&`}43b@Hhnv zIWnUAh=$MfSLuK@YSAAZ!0b7xc311d|Y)sK3Fx0QMyfygXF)H2n=aK{f28w+o^ z-tlS_VY8cNyAH{RaT%+jEtJ&Rx!uE`Nkg#N<&dB5PAtmbeUpe-3=lu-2?`w%+c<|s zIeg4b!hT+AZ0r5e63TxQzZP`0UXPQ@Wr^5mH-G=;FdT!FzF`T@LKa{vNcMhwCY&10 z;41lC%xxVwJ@c+?YTUEgX8r>ddOOrchmy_a4|91qPZ*AQG}v5IxYbcjXt`6n{ItL#83Fn}Vrg#Q(pP_rSY z!}DPjA_kZ)37iFRK143lLTCiTq>dyF!LNi>2=Y5RTqWPRC89q3vMw<0Wgy~qVgf=~ z5}E<9WXxB}I6oI2^c~xOw&5necmjmNoBbDrwJJ>5>94*glT)fIab$dzG%y+zskFRB4Ol$C<+I8wOExz?^-AQme>BRZ4r8HLt1^K5S^kEQ zIh8HNiIN&&7N?)NvC*yD&S~?O`|^0192ChUztCvkq0e{{3xmHQ4zRspn5Z@S6ipgC z$20}7(Gny;W=M%28jrv2suxB11|)H-FUimd8%=&Uxo_qG&MuTo{y0UG$Ms$$CuKAu z^O00Z>yj(&4j*|c4(0Fa=5(#?hMgibc9TH|-<;FzXlkc|=v)_hUYgr&k7sKQ7Kg$*5?-@Rf)3Har*V(<3uZG@({PW+3_~@sw1%I7&-meJ?(GcE)sWeB&PZt#3b=U zp&gsFC9t|4vtJ1v^#K_Bm^Y|j&h3Cxfyr(CcN&A|8jWpwqFL{F2_1(c5=wf3cd(<0zeF*GFRdGBu-Vwa|nNBW5K)l4ILJ582(>2m+R! zJezM$9#^9-fg1V$_#XbZUBVXmkIcCze0TQx5v;L)yRt36pW7=x9Trk=2U|y0)iPDQ@A7$n{ zU%U0W4YnV1l@tseH=4z%F_$sr3jCDs6KQ2tsCOdl<+?p{gk@D~6gvHm-lZ#kfVW9& zJRUu@bQ9&OVoVrPP1Yu(@rW5tfBv@%yAIV}_dWv+2n8T{21!NYZGzY)2?-?2y9ux3 zJuWkBaja!LKFi>iTK17oW-oWRmtj@OL@AhBKS|kwLC*TYW-yqFhnJ2lF25L3fC|3JNdRTxX0>NeN;R|N#(TbkWZ47A+<&k0m`CkawU#&2sU^L4W2T7)m( z;ct7P8cP`1mjCz7xP~SB*Ng)Ya414ko&^|Ia3vD|@80yUYlo`-AK@V`#K*hu@8WSY zof`a?Q!boIcu0LLSSRmUQYbXo8Y8nO-ONqV0*BX^=InTv&(OT4emHnJ3qO5nb zJt~H-JG?St&PaIyurT={>wFRfAqhvkKqOIym6@O-t)mHL)He3Z(19E|FF-)e$2_C075)r zkgUGGhOJn;jCARqa8C3BA2u}tGE)1xT0)ETG0j}nFGVnre&dYy67XGvqB#%3Ct*Vy zUmDji-H@a73W zyHRO!+A4*fo(VTTwEkHX{PGeXc3q6>UHz`f_xr0O(nIvuRRUznrTYGO@Kz^=)kf5O z4D#TZirc-sti1n)Qp5#2j?%v!z0cn1V`-*86D%AedV)#(_3_F8Xy!EeFGXFl;Br#I zR~sR?Tt)4_uVI&eV8G`#_J>6T$W#AZndyuFn412souGLC)C7766we|_0O|j{$4*Re zd7!S^Wwg)#&##pIdo@nAlm%UD|Ib_YBl_FN0N;kFjocf_|MO3esDH0Y6_JH&;{W-% zpYY#)PZI^=_b^vR`~TmIW08UU50F7uDw+t!E1QBMhvM}7JgD0U`C81w`zE9{#&B8e z2Mdo}<|;v4y#`!Oxd-ch+jxk9B*5Dd#^AmqCcFE?|sj5EIki4<6Eg$_Q^1a!8nBsIpWzLz9z89 zYuYTiVQE#iC$R2}kW==fGW4A{@H(D!%PI=RoE#@LG*E<|_lK9HiK=AzQJ4s-70%HZ zRyH?#U64}I}!m>=#KFz$c6?^E+)2W0HBAJYT+}e~?S3;^Zuj39KVD-27$D zhCiN*jc_qAxM@kDU4Kuq&@_sEC&xp?y*|pe7bg($Pk#$t{O1N!#DmPu&jZN~VgikH z5YP;Xc=`vGlvp;Ggm>nO-upbjH6#hWm$=D1SuK!_!|afZC7y->){~&{@YXib#$+mn zP*g(k?1eu#{0e419#1d;zSavI4P*K&udA^?@z_SL_agpXEPB(LEvG*d9H4zt+NM)*|~pIy3|kKK0w>Ct3i7(PWCNc;LVG~GNtZsbmZ^CV-m!|Bk=>m;>9#o;HFHVCUJgRS|uPPR3ach%d zRcucC^PlpMN_K zD$T#UD-H1c*Q|OAmvBhiJv=;oIf_Q>r zVLF>YRHD?yf3G16Qb;UooKGYJi*)a7zGyR`$V7{VlY3M8;EfQ(aCI#&BQejcpgQUb z3JPa^G9L)+Rdsm$QD)zGQ^!N~UANuIDf*KK=As*tza2gbORfegCI@Yv%0;%v&9IX} zm_Hk99V3C{@b9V7)~Zz}!XyiW`;~3K)`!Ex@@k`ZC{j@$!uMkuyGKT_Y%?t-#$G&k zINJ8EKWd~rAV`z_$;88?W4>wc?pNCTPkC8$2R2jS*p!BJxf}IIrHHjPpM^xs_N=bO zF~;Q@ojeM!d&S*x!-#?4#n<^J=G5p94-a{>y6Z=oyt`9%Xe*uGmN?U2b(?aSw7*0c zo$e*2#b;?%8H72n8f-seP;wytJt1?tFU_eDOxY_Qg#ho{XcjjXn}LvQYhy*n{MeG` zIgRejp*B!_8?>X|G`$&n=ZZ}$qcoZ!yeaB!N&51gi&CZtDG0awOHf!pp}fC)1pfI# zOE$}L{Z>?Ppu1;4OzjW{_cA+ZZTn(KCr06FfZsHloC_C7+v_ehkZb(g7+Ce{$!4nz zd%Iv*JAVr?C1!9qvx4Bl$(mq|h>P7cmu)19kb^=u;I;KXCR51~di<68Jb;MPg)R(( zJR*va&FCsC^z_n2wj}n*&nQk)0|+PZV4|=g_(N%wA|fIlXZ~9j^!FftXUjLwrRJrOJgs_KA6w0bo6q+7{;?R?<_HyAD z?!Szma7D=scY;;Wj@FOzdqZSI4Iy1N9l+ME!zWSd{lAX{sOx`j(qv{`3ip$hZjd-A zzHHqS5*g30L2wES>^qU;BkN{IN{DWF=g} zrc66uYIl~F(Sohz!)U?qWz(XmpYexjC zF+#v^VASb*G6&RheEpWIc)!cNX*fGd(NFrg(8DU}HjlFeerE#e23WsG!>eWWIP$kJ z0g9b4oRqtj4nVPwt!mvr?3x!Py)5wSsV;htRll{+Vcmp?ubOf^SCG`kFyoJ?=djD% zqO1gI34z4<<8e3qWTk%V=F+!1kE_G4$m~u#-^2e3?>hzEtl&gDPo9+T4cB{FF4t*g zXkGW~LGlTy-4c|$ll))Dh-qI0HJ>B!{=43a-Zwv2FY4Rnz;l4IhpHELF8IwmJ)3NC z)#Yoj!)#BXm@Xbm_3j6i+~1>9GZ@^A7=Ld@cq9_ajgN#cV@Y}K*LG`Y*L(iB<3ox@ z-^U>K9`Z|RNa5@e-qcuJoRrk2+!HZcu zOsz4eQy?OavP|xq$;RTaIM-1kGC+1Tk(FvE5bV5L$amBHpOal+{Qr#JaUdZfnzt^* z@r>>ihs#Y!SQLJXkH~)EZ5$83UUHIwFP>1`Z;s z;c!Y7li4G0arO3K$6JbU1hKTY#|2J}tf6SVs~|-H01Mx#H1=N37(=lZJr zF?;$7t$fkAb+FLWoXN7Bs#LT|=sQ-oh$QsW^GV|o4@y0LE3bs1MumoI*(+49IcfHu zhjz?sHj*0KkAy-i{&thYBwwZ&an-jGqXpJxIB0pI{{)>dCI!PRzGr8tMJB^!`6IE# zdNri35biz^`0PP+{a5hBjI4lge5VXNeyL>)@|BE7%fabxBF-Jb-P(=qs@O&0)0Ld| z{zlZIrO)L1K;h$TB%YY3T1?^;PeFH^!Kk#V*WiOX$uU)coGwp(CI7db{Lj5y3kk?j zZ?K+87!ChCk`}_exGswfvB{G~^L_F2S{2hhTa;ke-Z*7l1l?x{esc81vyELEqu3|q zHXg4`O9$aHGl!qj-2%P7ORs#!Z$IYM^%(iO^}U)afK%z3hCa-bjn0WWZqwgl2(vbx z)-m8qPP=)Zt|iF7!g&pGI6rh&BG!jL+g#W@|JAh1wVU3IG~`^rqUmI_xS-Jd)P-T& zN*OR^Bp~|eAKcC4mb}E`1&XweHbGSCYFELt+&VrGjvQf>L?839L*LnCGqrWD=7d@X zgC&54*mR?xnXUe~jgoS?gKopybvTfd9yeeAI=I>G;=rvTp#ag6!f z4&RaJFK?gIlkgw)Y?cIuR;d-tnK-Np4P|x1baWt=FFO%B6Bs01m?=@{!}IWXp%eMR zP8g==WXKO(?Fo9j%ESgvka!u)zd_$;rxt~Q2o?$ZJVRm-uxyG?vcSbpy<^QaVXDP^f zLJws6tZo`vsVLeO{yRP}mini?(ucgR^^m7iNQRd1K`sxc5Pi?Uu~?TpZ#p zEjwmOdF}AkKP!c*e;&zyGr~Z`XT@Z<+7UxMU6S{BeIGo1qusQK%hjA|nFt`6u^1Jw! z@MH~CPcJmTgaB*;!YA`X=HC9#otOGi^L53W3k}wRjTNhTI8MKZA^`}-z?2n|gPE%Cb92QGY>^^`Y(zLD%uDXt8m4iA=zTP9<9)5=aV%{FXu90?_eb^E=^3lW>!<<%r6D zdi8#4;p-N16+V*mG zckbOV8YXh!u?o`qj~3t#C_WYV;Zd!6_90?gffT~tV5^;yf&rpm5eRoyYOml10L#Pi za>&?bz80nZj*r%P+a`!~#HIP_PASj%@y*wF7+`)ZTO_A;dba7E;S81)U5~!ron1jh zYzDOw!@5m2^L;|a*#fT8iAC~LCGJ?=X&$v9-*c7)Ih?oa#V(lq?x95NMocFCu`iE6 zF~uE>rRWB9fS~@IL9;NS!A$F5bIx7XxdvUV3`zh@kjUWNVz)b#%M$iR1ZpgCK=2w{ z{1C&Sau|V0-a7PWaq$jM#K$8}HjYA`Kdc)5P6Oz)fC)*v@^1|4K<#J6YWEYn3s3b? z^-|6E(Ioun_}8!5yRWIiFQi)I&E~oZe})+S{^H2z1Epe!rZhc99gKP^)9S=Yq*r9< zRCWG6^m3NjKs8c4i_Z}t>7+-qI4}$ha-gT{y{d%Fp$NwgiL+@bK$S)^#4^AIL_sr9?+cC2V z7kfuAJnnu5B=i5t6O3)(HabO`iM#Cm{7{@$t7fu4`Jq&}fDckdaW+AqDYwWkGlYM#xg!zENN0w+_DAAD6Iozwo{34wA_r9Q_C2i4zns3AA+?G7>FKh@wO2SI7BVEzr)<}k@C)%UgHZb!5o6@D z6%nqkiNT0;ls~6u@Jp)*uLbV?g8)Pj0VtPJJKr_hL?(e<^6Y{JY`{s7@=?*h)y^O0 zf0mL6kY~)A5{KF~HQ>A~W5tt;Vv*~@K@W-@1@E_)3$AX zT4qfD$?;-I*yr?ijB#$^9ku)hQ?vII;8-e4H8McvPEUL_S(2n8{0v2DZERgUu9omH zvfXHvOLt9@CaAt19$0o|Hsyxaspfd)d3VxUX$xWur|~r42)>nS_J$5W)oa(CvCi1F z#K3xPnnpNN=(XO!$m7Ze`AS*i%$<|dp=@rGUu~RCPkjD@+sBo{X_O^!hbnv*e&`~j z?l*t*quO6@x17Gp+%`{xQLmsr;RMF*e>GpJM|P;4Wwt%t(d2HUf9m zY;ov6VyI+!26hC;Mj;0jdETXFoUVfyclQ;>jnLE>t^&J1$$Tz{#J5;aHn|G5-?Z~X zoII*jAFFF-Q0B*d_g^hiZ{Ze5HTK`dtwcQI3W}hcvHcca`YbUBUN{&Np)Y1oujQ7Y zR7(LfmEY(TVf@IOa;nyJjnEqC_1N)56lIV+Ja5*w4pik5`8b!Be9u(dD~#P(3Wto- ztqpMKU%xs#t!bS*l#TijHI+26xte_~{i?>qj<_${IK1h^$E>y4k!DC}@7EJi<%&m? z1;&s3x4$$!9tIQ_O!U58VLnfkm4+8&-qWfm7W{n|pvGhfi+-3yYB}C1Q3WGAW`bdx ziT}M|{RR!o!{b)o6MlR;k0$WM!0N+)M#{(`f8C((Y9Um*sWyO+NV?MQ9j>g)6INF2 z<$wuc)?$Inb*2>d0}!}jxngTDrP>ANeb|8M5|yA3yYQDGF{%v2dh0q>8=&s`LWex;rZovO$TF(M4GwMkn8Up=WV zk3H_W!*;o+gk2(;#dcd$Q`2P(-5KyVHUk!Ui|auonD0>o1-lXX6_5_EO_xlVnD2B5 zpB*pjcBgVrgFpY$^b~}ZUO1=b=3)UK?8}mGe!Xuq2I&~k2v}?gvf@3KzBy-R1kAEi zbL29+8|>kstX-c-5Zr(`Ucx{7+>o6=AD<}(lPlmfMd!lH4i@cBwbw64#c+uI8SirA?5K)A_Q8Gbgs)+tRVO+b#rXhaeY=gcl zVm%n}E*&oqe`)n$zC-jj8Kg^p^`0bR8Sqj%1hyh>Ml&wf4tAp6zRaXiFOt)4Go$zM zX;Uk4bDd9f-Ji%6W!xY`ltu-t6UpMy4C!*oA8uy_2w>vmYE|6inF+FgKBptnLI<*|td8*Ag=5&3`DJ2waX&V=8&O@9qu)N6AZulm;7JfNrf zp0@UY{|ayjDHnSS6(!O9cfGFtPv<~aG|yH4ewyazW>+KAi}i-&S$G5H=PX9v0EpQa zu`X$j(O^A`L$8?9-3{lR&?#ojZy0kb>ULQjp$5>t9|5tZ7q~n*O!|`j61rwhMz%44 zUXnH}j);D6%`5LTXj6(`6oIraqwguc8_wJgut^A`2*(IZ;Gdxec7nkJ(3?c$LOv^` zrbhLoR%D(X`=0VDu{ww(XGlY2hLpE&|8xz@WA2_XL7+2IKj9%bg%CfHu1e1izJ@6z z9fgJUT)UZb8W(MIHs~G6l$9AB-2~!c)>e3-bz8U1t-!-k0z)q5h@P+GMRVj_2_#Pf zN%!XZk13)J@d?I>Dk7i#M|?TRT8l7l&MJ?|+q;Pkn8gTzYO|MdvS+XeNRCM`2Qtw0 z4Fh}6jI@$c@?im;&0~IAf$W{$F1eLSjSms(vP3qn3jK#EEeCa^&w72%@|nI ze)o(mJE1m#32Vq!Svb9g(tmq;c@Gs%i3ZnzklQ*q45RbT_zem~BDiru=HG47qs;&8 ztx+LRbloBcH9AM7AnV!64e0mH^&FaY9Ei4fxK7Lc&=Dcp_>5%@@Nd(i|1_7De(L*T z)qpe+U2NGY(}KTyoQ8u`kz<;8OhRx&*yEjzMY4;9=!CG=sOHK;^zksls6MFdm@J3b zKPS5oXeAvp5{?D#=|p@k2R4X5uVGKCa2~&pF)aDCXD&CN7%MSDA@Vqye2caAD^pdw z`jF%!fl`Ft{01_|7`k1f`@#6mLdDX~+}9mo55A_KU#fdjTk_uxOMp9<9}u=~s#-NE zU9Rjm+7TK`rX~oB5spc+Gzj54R^Bg>EL?cc?zEwEICsH5ca$C|V(P;|ou=zDM;ZZd zu}Y}I7TH`wYcl%#Vy@+)BmUGh9A9d{g(Jkn?|Mad$aLqJKXk5y$@u0|CJ}Er#GvC` zqV*W*^!5oh^3zk1)FJ_~bU^n-+x1#u1nt`~Hat1N+-o6cHS~`9TxM_5Y;CZ|OOAgZ zBlD^vji5r{gwTcwVif?@!_-hMcAIh zRgX0oL9)=GS9A`ls2yTAdZkO=ZAm{aomD%Z&_-uCsSNo(=E&#Hz}T<)_Kaxdr1N(W zsnbP$>}R$&SxGGWG5e#Re5ypzt?g+o=Jus~m9GZApU3Vp!Cn!^Yj10rhAr`F?1i7 zVJUM@Q>al@AP&Dzjj8DslUYImNFvWNu2L>d1TGAycwhr0k+6)GZ(kAtq?n$*vYFr= zhvm4^ArSt8dMpJX8z5o>uik!#?j(yF2GZ2-|CEFMNT;J!u@V5P8?gJ*ozlq0(&;P% z2&Y87)f78`l2U7Pmp%1Je?;ZTW^jE+=jMVgwV&joU*~0>$3I)FESSuyA)*Zf;T_Ep zMgsC=rHZ$^K6riE#{a zPGq2?!*}cl`aBL3C^n9Be6ks$9nf%<{`!#ju7N~i63OKSvg=NejT}w0MCeB*!~EI^ zyh{D{Aizk7NDqRAJi49#`O}>>UsvsYjhS5a8f7fADRK1DK)6+555WS27$mk5vgKgW z^-+oMudh?z%`MF5Yu7y0xIZ&ev(gIl3ht}Gvi}MVx)z{6)-JRFX{h*gs zNeo`C$TZ+-(YuWc9bKV)b;|wf`eF4c>)Z8`^9=vB(@uHAY~`3O;P$Gd*j7e->??i4 z+-xa@uhBO!U^H=@J=gBd_(Jm@jaDYwxOT3_9&1H4wE(COvV5P8mjwwF>D(wMxo69l z`{d&!!_k%SSxE+=C>m?qZgPe72sn*E?qRB)UJK5l_I*V=fIH<$elqWk40QZr{U1}l z_351$=mTS@kb$TaLz3bEn2}ezuNrrhkZ{|5bf)vrX^D`2B{du#7Lo^eB(Gb9&}HI| zv(vSobXasdKK0XA=yFQ~(bHtHvbTu&)!|;V;{%B$lv1GCklstX!vy2-h^y?A@6853 z02&NJ85o($zz(*v+JBY8X0;;}Ww-Oin*lJOyzvyj{`#}{RaHF!m`jXy_U>^3dcp;l z>9(H1T^ei7;Bd+aRIn%GbcO*!mFTrs`{wlgzU%tU5&0TwCLw)1 z{f=1RC&I7N*}huyD2MI(mh!X;TSS7deOUX9C@&(&O3vhgC17{;QmJh7b(%B`i(iH) zlD}#u!nOag>G|)owpieU?mJ@Bsl~?XOxmm$d8VfJ9Tx)37RaE*F)r{O{(a_S|9X{C zDXWM026Q=Q?&#pfKF~5IB2+qiqPxT;o#yGz#7&zLqMFtQAYgG**ATTmo#8m}~pT+DpO& zu>q7F)^yVDCFJYu&Ph=g*ul2WrIhh0|x9wAjHs=NBG$ znb216Pw1zNF>3WpsK`j)s%$?wo*V@kDDd7oqSCKAtK64C~j> zQMclIdnd$Q-ot{h-9Wj$L!Ggynu+%eUC(jxAlNgHkL%j4MGQSX&#ZntGL>qL_Z*{z zxKH)$X+uuwsmSzibHuIEYhU$wq&a=j7e>1x_YD4A_KTQA6gUFly7O%@j6b{>OrCc? zy-zv6&eJmt8)H78dhvqf&pUGYS~Q6HHs$IfykBnb)aTXr74SX;-p)2UZ%A=)IIQO0 z)*Zb;v!=0URm^GHPvNSA7!7u4X}6!@xY>T0U_~dt%aZ6=nn~yXN>e=69$c4}d?6+d z`)rUxy4r38&u007X5LyhiwYYX85tfP_I*@9W!uC)2+&j9X36T4hM%w5v_rn_7O_*e zl+J{#jUO#$waceYfS|AS@@-(StzPC$&`Um2$XI^JzGZ(dBObyqZ=)z4!icl#f^Pl* zF!VIJ5fKm2DP7N%+LUJ33kDwh6;SI-P3Ni;KvZYG0=C#7U|Ny@3t-pfdku%3*iR7! zqpmcc-Zfg?_pU!GLBtp}1l#W}H5#1%?3;t(A@f)EbH_x;TEif7b2EDPq%kdDrtjsK zb)_sk9VMxoRSm`(-)}iNB47~T8<^%9P2^rhqL_ep*U%#=_f7e`ZPm7gtaP{ghWUVGI=S6 zvIW^%3F8qSe?On*a2bNIXg8yah^%PWJHS}RCP6|Jj9<_AUl3HhZgJ7+c&lzQI)|b( zr@jqc`i6G)r%bfgVl3AGc-52;{hht@&S+PIwE|N8KKBPF$|KHsYSk4VC8B9xK9AQ= z@G}phEsry{txzb%vY<6tqvJG>wvNt)ujDlr!Wi=y@2~JQfRW1(p9nFQ%vLLqk{<|z zho$q0S3ss?faLLK^XA$>ojENga;+aJlHeh~)p45oApG3%yPqv5Sds6qFn}?B?JjA^ z!|4TeT3nw8M~muEMZQUYXSK_B8aI{%0HJuTlO#T_;^0IQ(ej6+dT#f8OHoffXl5Ad zSXd2E5(HyPIj=y{%hQ*I2sTI_x6E~ZBUMi>JYf_8n<;uKn_)CK?U!O!s5c0-I?K_} zfD$>iNE(dzM=OOg5(p22n;I+J=OspN~=YS1d#evDjflSI+-8GVH`!+qT z`T0G+)0w3FfD6&qdDlC#h!+?b_|CTY(F{h+jHtR=F=8NWCZc_ty)L@HpmH6oNU+F@ zU)0?`4>mv@Hk#svtTfA-P9twc#cIMDy{}@2dY9JiKQ9zzc&D?Y>6wK?!atH?D+6OF z3VUZE(=#Y3Ka=LbE)|7?*zAwW_e!3OcP@ z=EmWzoZkFr8!mfdNtZ0UF1J!TBIH}#s9rRD4_{u_;f>sinj#-Ic!<2XJQ?l3HQ-4a z-o?CEa~2+AK9Ve1Q_z39v4!?FcTnz1=BpmvR~!g_&@(p~tsM&Nd^QA~Yf^EnR`gYq zclDp*QzXMAYZ?-S2hhtf3{B+gIpJ=#!ssCBoj=L#7+1fvY;5R}#OzxP?mp*rxQLD0 zzo^HDkd-W4MIDzejAu{dS`*IpU<`{q33|@&T;_Cmyya&2{@gl?^QZwK67R~Ud_p38 z;AojoQP>Wj)hgKBx$Hu)jYeQRYyUgn!PDH{b$Tl_XCMCsUbVlqB*VD-@pV@z#)noV zf!)z=3y*8+h!GOGd}WByd*g_fmzcDcm}up?>S!agqCGiqRddDx3dnqz?GYxc2oTNG z?rFuBWW;kN@b9?CLN_f}OvhQuB)F{u z7#iPNza0yUq#aqiDT7>+dWjzxhoTkr)_VRrh0bfClR2twrW@#^6*_0$JCL~Hq`a8R zSH5VonptO}DKx2e_7!F-DELMueZ%RN&i$3*(V_UbpYJxbAbj2eG_%@Zna+PoG`dt-y~Nj{3@{+kiU z`)1C?%%IxWk$g1jBj$Zpnw5Hg?mAOUq)};-BA}Uq?hHv^)r&qu#N=66O@fkZ-R~}s zAA13#{4^CF(i@J^b1+K*nAY$g@n3#iX;0pIodOGSXVGoJ1|ZJ$n#uGcXcGd&mpuD* zSt=afS$B6JI77f%*5F;KgR(r~=jY(G-%EUhpS;y+_h12H2lCykj!QSE)gfXBdCCXd zB%dR{2j$Ay(tLe?M9&!UJ4etRCMn-}=ZjylRw9TP6ywCJz(8*jlr8u8iTgt# z&;?|rsO}suG{Ax5hS?7f5Dqa1#vy_d@IDw_@zijMuaru8S0~<6MZIFW^Iz}rJQNV; zvs-A!1Po+p0RB8xj>?4m3516SR4fY^&1){rn>0_8g3l}LOHz{EU8=@s8#h0c?m5y{7Bd3xWLDv zFAfkvYBCXo6?fqvCH@k>@Z5-kk(*;74fNCluNB2L9jX53Yc(EC^(p%*O#zO{D zSmY(d>zTRegK6}duflwy`ojl@37O>~)n9a(V0}939wN(qM$o;OUaQ4^AjdFH5J~Mv zaF3PQ?EC0|U-mxYtttBHE^M`X*fv%`s|8$ZGa$6r)BccvaKyL-w z=B|^VfJ&S6eGu-TJ+;B4Tg=kdF6_9yG;e1A`@!m1gBHR>Ro7!D?Wz}lXXIUeE8FVQ zK2hu7(N~Jl!hLzjuBwJ9Q{x3?h>}8kxHyechF0D@>6HPv=uFTZpQp+LtzWbA^H-Ib zaHhpeT`~UhV0O?a*v#5mMPfH4u~%)T!fms90c*_zoStgzofxU(UkB)*_n-H9Hck1f z?H%iFvPex!KEx^tREmjMm%CJS(}ZkV;@W-i@I?u-qCLXKi4 z)^&DcheTZEmskjpSF$5JZw4>4R@YuBO@EyIYN=Lln?R`2%jQH3^Fn&Eep78A86L8} zKDE2@g#IG=4JrgQzEPm@rROby}s(N@y```C-5%40sMYoUYW zwa-~7XL7;#_Z_iYjugN7TSdoC0ZE55ABbZ;R48aSa>}nGPYbU1iKm||3P7dn=*V3o zVr0%5lBVg12q2y8#9FLVgbkpNBCL*SZzSTefiHbq2IGEx$9J==B5>?DVJI{`G_Ilu z1Nr4%Vq-`1i|Griz%N-<6**YQPGBrpe}nGf5f(ukUR=CrxfkgPP~^E--1uD2iQblL z7yISDd>8$)w;=^0ry^QUu4w%wcN(Hu_BN@Lficupm)CjQ`ENZigHv%m`J7iKL%Yhf3-hbnu(l3dPauvLF4l2&2Eg6o7>V8z-JWr1sK=K@N-p2B2o>y<<>s;py1bSVMW~>468xS(%V>(9 z+YBx+Fw*xuc)J4`nw`F2^{)@9*IqHCl6ty8NTqY0RzflUSenRQJt3(IK-)ZHMwLkVoTqizgfjr z4kL0n`ssPpYm_2R89Rc3gG&``U4kto`?YGXtsA{Kwd?Th2c&=^5G!j?w`PcFCDMb8 zC{v^TgBcx0WTBr@R98|HEAsJm|C_YO!z}138jP3|4&ETzzopI}0Y-nG{ns-XNJ_`HPl1FYThw_vtk)Yyu3va-baDcNh}F(y&#%cG_m_XpOh`aBtO18ok8oTZpR`j zVuE+SA-wE$g&!=fE8NJDRe|NWtc9}4I3Yj=uV016*&|!lCvCMivU4PC&K(cT)gJKA z*uSxSE;pz^57|Hkv4?(R1)qj8mSHy^J0h(eKg>^iN)?k5@6+lj+PXV)!5zLcq`bWq zyN0n`zmPvleAeWzj@UAoDRxQfCeHjVn+u5(UuKYonVR>rLJh<@e9WdyB2uC?E`;e(Cz}8_3A-Bw2fp49em6nTu zCHKnxu}@}{_8ot5hL4Jq2C<@rLd#fcN8@V<+5G5~_oOF*Fx?x-sTRNBXu38I?}<;( z?(^@?F;GH#=Bauxq@luwPSE~S*k~Ym!tBHM6IuLR<2iyc*ObXLjrFLuumK<5yl@&| zHs=uaf{F#>bF;JmUO2@EG^-!LOsza~ACu`cz>@GDUmgb%-+u+9HaZ{x^#?Q;lcNG2 zl8mF8ItRD|eI4zs-%jfN`Hk;);R!ZH_cg&YU+T1lReLz~5)kdS8D6rmusi-(9m?dT zv|DN(kaE7y3u*g3V;#4OX#Tp%ZW;60i^u++*pW2WwK)!6RyDDV$?wk~&CStLTQ7d` zUp(A0qdTsb8<+UC;~vs$FnHeE*zUD}JdfX; zNC50U2#EjnDx?WXU>GQ~;&a1c5shZhu8BAK1En4_!sc_wRQp_wq%~`}m%BdFyTAqwPrnv}QlTP0p{Uq@Yp+eae45Wj^~a+U)S5ueng-SnGXmIR;#nHCCHPL$j=plLPkFc$05+3 zk-yph`E|q=G}I(OX|Kr-p_7K>xoBy_{++uHC!?UWh|?gym@-Kk4;vBE)_%un@moyX zpOML+&7=DmvEG3BO=S@9?$T;7c*p1MUhXC3;ZoM~Xpn>uFAGM})0foiJLZT{y~LSB zfe~wUJ2EyggKaXE#r?^fPa2V&@ikIZ2ZD_QTke2relDzG$KNu>^Sj~~f5k5||1=$o zAq|pdM|Kimn4@|@Lx3p5X*SL#JD}&ZB$PMWBL5MRXN7?`4s{nL4;*r+-HZ#Z$v~HE z$`H51j=CZ5!N$dg8+>L_Jpo7N6w}k|tkyQA(-6#2>iVV1R+@L2Bi{|p|q#`;SM=>9n^X#c@a2oyoFY#rvZXjD|)^3=|*PjiI- z4_kj3mSwm-55pHJ-O|$1-Q7qF64IU0-7Vb;2q+~;NO!l=NJxitN=S#)bK?H({r*3^ zA3adKuejH_*37J#NJ%ub&k?OYAJ|igR(xvN9(+qmiBag8$K?Z%6HMXQ^(vT&Us!-+ z3v;-K8vWz4K5d_%Mlkl-II7kP`6s6d+Ooso4HU?uwB!j1la$+DApX5kw~2XC#My4_ z>gKZ$z{fy?jAHeL$cAnA;j6giE+Ss)xB|mUn^#v1cmPq`Xu{NP{SAY*!O4F?AC2f< zy{>0Wll0A8f(-$f0c5{M$d6ty-T1QC=&v$yU22ge>~yGyrf#|18^&Z9C0S$q;wc`h z@!N3wU)=KvzOdM5Bp;?;;QMkViknP@%SJ{=hrg>L%~v!RH#Vj@6g!dw8Nw{ zKe6}@$uv@39*xLV9&QLf)HOTT>tvqF_OxeP?2)%RNe zI)Ja>!u~HzP6A-^o6>S5DDud9qM1c*w)w$W@{2biQ-|7^<5Ucn_9iQ7mO3eEf3FKRt!az}k z^!@G2%VKX>A4`H#rXaHK<+H5-G{Uje?Su?`xgc>uQJ*siw>M!tt$W&jK3Bca0Z8p2 zup9hoa##6`e~>JTd)IMe$S4ST1FWEQyWf-2R%?|Rj)oejkwP@3tor;3DNG-Z9GSSd zTnUMZJ7;FJ-2ICevOuyC7Pb#?#-J5@lO+~-KTJ~t4#VL$R98hC&=hfDdmNbvDVtGI zP3qV2lc$WP8~q&nwc~ARfQ#M45jj8sg9R;{qFoLKC3t>|OWbRfj@6>GCsD9+q{e1u zZvnd8b(zGLk$Ll6fr?HOVh_BRWY(!pbj~}M^%~bboGzm)H)a{oTRt^I-uG1jxo_|p;L9-Bxg>;+cu7uqfh zBas@F*WOi+d`W<@RifaFm07X+t;NjzbLeP_M4O8r&m>p@TT%@k;?>zCY+XWng)Od4 zq1|b0$GU#p8i-~`NcKJ#2LirUJ3pJaE*mQHs2!G+8nLsJ!|4A1;-y;fkPIrpsvY$K zfD{;{B1v~{!|&4O{T8L)-td#=jleTOO#4ygFhp~oNQ67H(n2>8)C8BVw!v3>toV%~ z+P-?SZ4K^cMH=pRbD4j$BvmV`(Vn(#v!uOx`aHTo%2<^qL@L+V%p$a;!H?a4=~)US zj{PhqF_C^`pO1Gs;vp3Po+6{&A&u|mMq;`87!I2Q!-u@wf6XcpDOY)0JPQqDcqHMZ zU)T^d^1ewVk;;r-zj}mOHhSIE36ZTi0k&)vmeV7_6mQ@W_$e-YD=JRr^cuExDU8A=4k z=~zVHse=0Dz|jxaCDCQa@RBCcoPZT@rvAZpBfD)Qlf$vgZNLt&D}7%Lbn>dL((<58 z#i``!&b)esqOG0ARVC=!tFhRezoe*C4h4Phpi#QII;PgEP*x4m9>^KZ+hl5hq<%Z|W@ZNXhA4gI`Ts9PM!ZPgkrCr(|gbVe;Ln>ell ziU4I?D=wcuBgq4x(p|~`*>%u|5L|p6}96qIN zj))uO^8s|U4Zp>rcjn6X?-3xp&z~t7v0=^~FAty1R{7h)UiATga$t^n>W6)-JYcCN zw|pn!PIdUJrNsSrq_tr~09U^Z5VMRRp=m7i^of}aPVR!{kw)KOyV?vEAuj#>iAMLl7@3ds41@!`V%rz2=bOQctaCc!V@T{>A&lYWGE0IyZSUbEi z41w+V9Qe@AJVIfDUdGcv9U;Cc(BEV{t7;YJ@JDPVJT1){?2$YHlp1^c8*CQ6dXPIP z(#YUqO;LyldKUv}aZu;NP@ir+`BaaDjNY}-@bNtGJ?aM7E2UsQBvbDklkVlcBD>5z z-gWPe#in)@NiJuTt(SD!A%Oz^5uPE_;CKNj zUIF`BWu{OJ4=nP&SZQ!16tvTJNlp3fMG47qxUEV56Ec7q`5T~7(A5pFA=RzOwoHTE zn)|H-lGj6p+-giv&Ytc7nyMHtYIMIHMGQi#nUu5aDEX!7UAmh+!6#ho$S#RFUv$NX zeILsrGW#ci(kp4h>OAl`Ptc@H2!}SDdd&Q;37$cbWBJXe8in_FPtISYoL#4okmG9q z)+$L(ANV8ORC+v4M|er**L$s)#rOmwj%;s7i`(0j2B@uxt!)V1=&kcX0VbK)4LFio z{hmc`v$eBd-*gEPrk4ABm4-jwb~Vm6r8nxu;4=8Lwu{OWe6ZL6U#wZ(m&U+%^jkS- z+Cu!xDdP-rq{esCqa8(N{3{*vA=7x>sp?#5Y(4s1v!mZX_-N-V3@^j$>aZ6klV(@0 z(mnMH4Wm&kI4SjByOQ;Nb*1?oDYNd=q?(^A5`#Qqc=kO`NYr|Y1~VoxAB0h^*YMC5$^O`oj_B^v`4A{2$J znP5yznPq={oKvlqM#T3|ELxe1sc7_?LKSTvyh(<~Ik&ZvT@BgwCf&#qA3tjRxM4gKlC-__b`S~cgXiImNq3|R5=Q*@#H!Rl?c!A{SC)2ye{u-e z;96O6ttBgW8Av?+0pJ|QYPx#x2v1h;d@b63Crg{cLN-i#7yCs9LooRYDdFi&2p~Bq z4p7l+Tgn!@q(Eu3A%^WCz4eO4b&&QlR;xG&$#ihOKyWTAON`Y_{Po0??c|#CM2q0N zqvUIqe3-R)S@kyCK|4{GjWNuKm+tMZ8^ig6v@|q?+ap=4ZO4Kb=lr%Gs~<#!4Zp@y zw)hObEJ*zf60dI)-I8DCwkL*NHPsaAV7+Q~BT^M{Y{o~hAPl@X-7IyKlA`8zScIqX z%2E1-x;=Ud?1t^W!igmodxf=yEd8-3SeYz1+Ack)Gt^LhRnO>PLLGnSn^|4EN3#-MJt!>c$ zz|DpGnk$=8^OaOTkSK=(mw=VuDT>U7ITVF4;16rNNqxohz^C=KDbCyv(B7rG3`U#(p)F@!yr_ZBDgvB&R$;S4_B7{`2w0(~MAqRz4{(?RE@Y}tH& zY6T>OChYq+bb(qnq7g);y9VHoaZy%L1WVUgvb^In5^bN^C7P%-0XO?6DM*Q1t9sWM z0xtu2ud7vkfw4O~(-7Rg1RL|n32h}MW$yzuT2R*!(!B~xU2vpABf^3&5b19ofHv~h zPP@tl9rzTmdyWiCSIBRoFlv1b|HM~bwT@7x=z}qK9<}2*TZG(C88)A9D z;{(`QusnmNN@m30<@RW=NRqAs#`tLT&UZgjwIV=jvE3b)MlF{|X0)_Wg{Nn-&PHhE zrwn6y;ecNLMibs8sY{6y5y!`eUS^|uZCmf?Nkgd&HY_>RM;b2?AMW}UNnkY;RQ*8U zsY0^(vqJ_21#Mypps_i-|eow?vi#y9c0~7?5GJPe_G_fcdiG7`u+> zRJl6c_}`ar7I4Qu{zG3MWmRsdk4X4aSm>87L73L`1sk;N7BX;>4G(o01#S9=!F5(-^#ZfCp#AW*Cv$|E0e*Nr5 zd;P&OacGk`H6b$cduot)Xqe1xN6Yhay8k2Y9$Rq?fN_%)NJ2T^Vx--a|4AeM`{5pc z^!VZa_oJ&ktjfwtV{CB^4ZNj}K)T;853g#N5UH`Q94RT_p@*{Tm&ev+rNbr`Z!kJW zjd&sha1iB|y?y*8-Q1L-D=1&${pV}||E>7SsHC_SuTmJaGODX(%Kd+k&wtc(_eTGK zA1vs$!%|=W@d^D$V+a0HXLfK97PK=atgE9-!A`GDcd%AtRrfZ#gZ7%7pxJGg*~HvB zGC?%k9qHBh)BnBK;NCokZLT(9goip@o<`dK?+N~c`ThSXK`5as|Cz*{rvJTsU{nb< zdi>vRQ6_PlEW^?2k1iiV(g=SI<&I`@p&E9aE8wxHtD6B61PsR|?>(&CT&Dl$GHw;_%>^J3<@~7p}P9s^#w8D~L2C{ORqmfv58~!na>mzge=YMLyL+C;Uj27 zd7Jbxr$2;W;o}YT6z%fTnz*i|-J9s%v&r>K0D5^e7kDsM+pW?F`s5hIr|4~KyC5Yb{dwuEj zxBDg=V_-NLo{9r0K~A3{w}K5W3Ntb%F8<{w<;!djr6HJIyVxpEb$?QkbBxo}C6(H! zm-eVRo~e?AqW6r4O*i=)YPzG8q!@p!;o+Lde%A|USRUM`lDO;}q8;dMcKwc1sWe+g zHLvIURzHPtg-;kYZJ=VjRI5P$Y7$@1qvQKumV}2P)u^h+uj2#Ezd8;ss3-cVEYQvw zn-?wi#YM$+om#0l-yCLY#OML;54gLEyoe=z3vBKsY2iZNN>zfV0>X!ltS;2Rq!J8- zwd|~C4sx(j0M0c59!kY67Ki#;8$Yz5!k3wy(VL0^pIYdFP!xzp3HN5ofoG%=EjnR!2AZ)$cnbcXNQWl4zK8dxW%kP43_rNEXa!7nXvHZY=(UKp4yA58Nv8}0! z#nzkg;;AhNh(2+^u=`Z6-k~RIz0cUpK3LE5ewBdyzmWNVD&?aH5!^_T=JU`8g21b* ztInU@IN+dNN6*RY10sUcZ4DM;FvmUhV-QW}ylE)+5LZ%S{#_>+vI?h=8<4qgJ#hyw zdc(vu@tzuD=Xqzgej?~~|C@xIxO3WzxhlEJ&fvr6avRL4_DgJB3eD|Y;`q;@DgIT_r`O> znObE33su)EKNK0OzKJVeeFP0g#|Y=Z<$D4ak{9i3V zSBVxIhh?qe$M*>gI^oIB#9XI^mnO2r9Px!kL?m>ElPUdAx7;<8&VTcXUmmtSDw4qx zC)4xPzt6WpJ43q<2t%;l{R~V4-zOPxk3rWiy*=jMW!itf2~;asc+p1dhp$^a4A9)j zV%=@Ex(=Q!4uhT6N5L`L&T>THa)AY~Zqv<0<`+N@mHOpF$mhVFC5jEZR4b!ZON%vT z@Yn?!Tf7N#3=aMhXZ}SFd#2u9D8O6T>q@-XUOs>TCMeT@_UiB7-B=r*!|ExpyHjz z^Clt>3FZD&LH7$w?!T8}#q)nN=Ba%87jsIM6h|Ho4vC>H7RsbuljZw1Bvcjet!iEv z@nAoJDz5>QtG@x=wHyV?xVPnm*|aSM%ie}*->9e1-CI2h6-F_Zo61O4y*zT<*1j(#Z!B81#Q`86-HFxTf)=x)1pLM zmCGr}EH^3u0R_MNY`4bwc+HzxryOl5}hN z#}xiKlv8TgA-S~3yMsk)GvTGKl%2AOI{ldCQ5|+RR(1#g{M{p3oj-2j{l0o zCMAvY5J||hKW*Ka%g35`6N}2Bc<$f~(iqCUKN|;-l$VeZ;zgyBeLUx!Pyn*zH=r@u zx>_L$?eDk7>$ifVrWS!mU^=?ZzgX4+?M!#?JW@io|Eg;M9uZfX@y*9(B#bD@n=Cq9 z7A@60h1W{Nn)tFR?cZ9xp2PO*iYApYoSg-y5mIm~!8m4PJ#{EO_=eON*13M`A)6>&RueU~$2uwbIK03PvhF+YMK)?X7;gxR@m&81SZ$AF_$)2^|8q;V7kKYxFnSS+!}#Fa-^8=2D= zx)Cby&5NDl=b50tla%Cs7*TK1bVXH!e}eGlEV%N=M-~#)C@~*8wrd3y6-+mKV)DBN zDn=B_&y+_OCkm=Qsqc?>v|TtTf}cdO0L-`%!%rWk^LX6>tchUGL>68LfLafmtIe89 z4Mwa*{C5KyC;JP0o4#!RA6R@byaK!u0C8BY4m8;njbhg)o7-ktqW-xO8oD|G@}u5I%N-Rrj<^w zzW@o11JcRgt`uOM?-S8MD~zFDY&K#MdPuIpUvkdCrXKDa;I4$z8>ujre;OAI`FN+ zyX{CXz~zGc&3B+D3g`_D4?me*M+x4Ur>PwUQ8{Pln~|}xoiPNXntKt`p(%CfOYPoe zjFcz)bLwfI^p4Kopidk-zs=&H@mTYH@mbtW2~CV`E&4jCxv~G*_n$wbkCD*PS3v-! z+L*s=-&hSDJ$+)I#H?yH^K+CjpXg;il22}9GllIk)U>o8pAo{s)pe|oe&k8WCO2qt z+c0~hv>{0^`B(x^vB%_Lg38KRi23ZgF_$x2JiqwhKOS^-DbL#x5btiJLQpDL^Yen4o!=#urkbs=Ig=5SMRD zM&U1r%k9>WEF~pU>zGb(Z$zEOow_#l3DWO4$Ig$o5FhWZS9+UF2vHs`vv z=1beQP&XVAAQEjHz9-^lqX!98fBZV%?6gT;F#J;6aAh`&R>{Sv{qSuRSFPifd|WJ< zF0s3IHN zq6*GkZAcY2{?2~obGo^wOM#4!(wMY)8$SN#cd@WuTta{KY7m{Z`NQ5>F})6R+wb?a z4qBzYp(0O=jxXshczfnzvWm2XNcw-R)&#=8cJPWkX0^D^FnD5Uvgu15 zt4F0ZAu;_QiSE3cpc=0SN;#hCwok+qnQ_&kHF!qtFLE?z)<5P1KFq|spBq~;%JwZ4 zYR_WxA)YZ{5YL3$tEkqS)7IL2cw$yyElN(U}ACm^U{1>Yq7~6wQg_nZOI<#mEUcoPR%wKc9YAL&sD%l z*Jr7l@suoV8joZ~8-dleMIS(VCS z)FTPY5a~rKYz>J9oUJ9CY>y_q&mYVI=88(JhqG0h?)!A)2<2zLcVQ{q(|A#OggAb zzh~8H#t9Gq_y;4Py&Y^mM1(_~yl+`P@~F?W1>Ww!^nz&CW<+GT*QNS>o0wlHx}Epa zu(a&vb5d< z9+~~RF8)Jc0dOQ!C{87N688Oi-(uQ#`=7N$32&Y9-4zcMX*k|3$^ODP{VU>hMBm-r zUFm)5b9S&`0F43#*3l`B|UCZrKUR zqQi*4MT~p(dCjPJ9XRG9`moALJeRay%D>4JO^8L3tyub{qr?@^O_R)^PNr3^zxI<7 z?_0Ql*+zdAGi~n9pUDUr>dD?T4qVlGeebx7owV!}=`lp@2bj03E2>)SC50;FX8URH zh_xG8wL`#iCWY$HoGGV8_FHvTi4~IYNgmi1IGjkll?7PZ?D@M%sCfcx#bk$>n zV!BK(Pv7i^UUmOlg+e6CPE1GS<9zXz23c_{cu12`(;^?A0g|tiXKdoy9-%4Lr*i)k z73Jfq_A#o#5m#5`o)z|Sd*ybXPe|P`mX+C5IuDPzhxQlxgw($hX>TL0=uzJyps5lOIT>CcSD3=;K&p7WNAJTV zS(8j?$+`_KLy)6!8XZ<5+Bp=~Dr*e|OJ8a9;_5&JyCN%ScW=h?6G`x$#>B!pXX#5{ zJWr07?`yjGbY}E9I~Ni@3ptWzgFMD*`A_))NQ*a?f7x3)ynREVLzOqf&6sHQt9mddf~6{Q=cC5O^zb1RcWuH&lA!*-JMwn z<~GY(o~alw2bf!#rF|N3K77x2pY_R0dH%f&*CW2t=s!weR#0p^-}`5BCE)p3>nqlO zl9G|49<<~#7e7Z_!hVaiwj(ki@8gaYi=v0%1H)T|(IJ z7GbYm80>PA(KaTB4S4>%8Jcm*n4L*BKoq?W55aM*w&XD5yd6eR!Poclj>zd4l38+F z=*WjDEkkp@06EGT0kZWtX`=10>z_d1GOdY0Asf26N47d}%GPh=2u@nXDy^QJS2jWc zz^;JJbjY8os&i51GLf!X7*|Gh9Z#bL( z`1llTa{vemPsG=4b%UokeE&m3h3*aX4965c{@yZ;?r0-30} z6+8+KEwe#A2(90n{y`D)KCqXJ}f+~1~i{Tj^_i5p5~%hhs}9a*Cb zMyOMvx$~Rp$>{OBoyFE~^@0J0_T7n;-+(n12^u-C_H&5h=iiGm66PF=_i5FAAX_d3 z$n`jhnmzxp;;SfHG-spYaBQw6a^ z5i@p$@%FgN!Zgm`sy9naY(K#OWuJ3zdwq^?r+b&0;mzZ|r&9o6l7w{YZQ#IW(rk+r zL7)#^-e;7;Sd+Lm)^#`A=$xqliC<-ky2GNA@N{jD z4ss3yPxehSx>)i!;OKZFJX1CkB=8l)Z&v5Y<@G897mgltR0tILuyO<6m0vfWK=S_F zs6unEp5CCDnM}AbK_0h{>$_V8xF6CQ-1QTMDl1@3JB{6h6AU%Qz#!aa3Nf?AZJS4V zlz#1<%hq5NnaE$`yT3fQq%kCCc82YyJS|9QM8a6FUMUdN=+^!2^d3_+lnUJqKexrr z{4*&$+SByN)Ktidd%{C0B`0tT-)BS19(IFw?mM3yV&0GcjflD@oGVblJpH2}>0>;u zNHX{9d&05|WNdC8)ZbrZt|xOZ_TiO24D^+6fGlGF!FH+`Ar+hYFrw*Wdo~VzfKi9Rit|eqm&INE(k|M)8T%&ZmF_bw*fYpz`I0dKO5kVbHqtcC8(voZSC-}S z66u==C-W{J}B%V(%$%~L58tpBHjiaC0K5OI_=PRtC2oViPyko1AY4i?6lVIC+)sOG&6elmd z;4@(c)Bu_ysubz$JXSLQblozM-;rARFS2K-pKT*x`ByFw6<@d1K;kNhZo8iN=)X6_ zXD+VO6FmVIxR*LD$!xwe{(!cnR37VM!MSpD3{>v7+W?`qUgjhx^~Ez; z{T7L=rP=YsR%0Lp5Fe|P*O+N_E38Iu;i2cz^PGnwPqHk=rQjk+30L*OqSMY_gB_=} z{U^gZZdy}IfAi~fDzS_paSJq$vWh|+zFWP^U~8@ajFs{Kfu4~eM$OVtG$O9<@3U!9 zd{i!fT9(bKqx%Pv!+BvkGZz}FEQSzk9hZqJ3`P6C$ghvL$}oX?iVIS~&0rm84&ew_ zIpJNm8KQ20?tAUe*QB|7G23Z7;J$|tDShx~G8F+9fPeANO%Hd*sr{C~2Tq@T?h>~@ z#SnA%?Z%T(*el3J&aC&PF{jhX7iYk2MabJ$<2WvV#4uXtXF>t%@ArJ;82s=5=)w7_Q#2q@+6` zz|BXq=Cr>6C*ZPW3XEhZ&|ExVr`kqAm%6x!VRlphW46+n>EhrQ9AAT!9ghm3;=u$D zDgi^t?!>nBQ%E&E2!wW@81m>87t&Un|A>ARN6RN!GK*7C4vyzVIR9BPNVFFM!N8IH zS)AUmc+vFuJ^Qmw2|d{5r`wg{;Q^=ayFbx^9H<*CXdSIJ%^yTpukB{Zr@q`(n92d*~*-T5WufFTxtqya<$?Zc-g_kXTKCY8qf}w@@cp3nJ5Le5D95dGQ(Jg9I*9KQE+0Pg74lK}093pka}C4d=;^WER4%(^=tbC^RX z>2-b*&}%=sPJItQA1pn)q69d?sJt9#ud&EEZO-^LO10(P9|Qz1WbY8;oL0L9n05KH z6DSW&Pd{X~Ud-3ODaU~Tpo{Z~&$06Z%iytcHgCFO5J>ZgSwKa>=)S#<@xBwnbo<_y zFu1JU<||ZPy1wAfb^QGD-~thp;N=WrGW$5wat>lm0fDUrurYYE<;d-2jK_ zQiK+%F`qoE9{}`TT|H(TZz3>y?BP4eVFjt7NYrO@Ym+5<2|ZB5pT*w1KFm5QMHJ;0 zr3-dm&hQ7V!18M;w%5n&0L4xW8Ch7+qbt(_8;0N+d}Cw9d*rbI?q_Uc$_$wK$=8PO zl2D#V_nTI}Dqpf@PZ}5(;N&YOy6WcG5=4bKzZ2)>?~^K-yDVyOcYD0$OCvgkURJ|e zKTE=`v!JU&d-{q+5LcHdqc4W={Dmzr7WlIE5x-9!nBw>vnf{vu=Rc+_w@fA)yzT43C(P>9WZ|`dY0wkFU$~WJZ%1vb)jl38Bxb=7<7B z$pigVL7-LV2pkZh-Hh5#4f#DRbjcDc9rBIJBm@1oB6whZ}Xv%XuzQw(3M@xTsEU0uKjLl}7DPF;rZ!az;WO7&Gy zy+F$mVB4@976Jk~e`{2@tmN z&=y4M)9HCq-9;(U{!Fr4=UTAZLUT!7ecK2RwP}GVT}Db@QJUplu(X`|2QZ0(Y~5$L zbVUbsiYcsdZ1+a|UBgw`xW8u{hrcsfd{mTx=dx%8-So3bJ_dT+_E&kdAaeE?GvY50 zG-oQ+ZzNACrTz5kXT9x-v62r~T_>c6<~u>*|KWV#8F0E4ySQJdyUw{lPKan;~>Hh_wY;T+*djH7Qxu$P0trEFKK>M zsNQZa^6uusxF>q5KW%_4Q>bpe+ti#|B|9n6Y-ABZpUeM>JwFMyCjn@z5E+(`&jM0K z+gRpn?Gu2PEf(e@*z5)35Po|)GIB`FJ#6rfH@W(ThFW)g zpn)0#|6mln%>2^)q2?58viKlquBLDmBqyc`xU!<)Gsc1glTuK(tpJD?N4MSf$B2Q* z+XXr39d*Rox0_4mF(jm`XyCx)>izD`gjEgjJHFVrOYLw6wjT>EdhS1xksvv*TBmVN zK$un@(L2cHhB*TsZ(v;(MEikz&Tg~8KK1#zLbAD53XogofeFDHP|rYg|6`5z(WnfM z$&eJxbsMhh^+bU`i}n$b#ftop%g7mbE4?QW;{+6!Y;a^Bbqvj+K`&7tB#OUM<5m82 zUf#Z|le2><}s2Ag2m&Kf!eh_f51+$T{5ACw?bx2BP_TK*<81;YV;aKSbF`n zZx-;oB!YqN%C&}8kmi2{(Fiz<0SAm~C}_!QZ~E&{eYiv4;tJpx*5nn-pdi)^umxU4 zAJ2%A-{Y6VjG~Ud=*+2`&R{4tilLaxXk0gr%KWNGe)B4m7DgN+UBIUQrL~{C(pHci zuo3=qo|zn$+OtIZNo)FroE*2VhX`VrX7bHhww zoHv5Sos9xY}z^et!vIjq%o3FGqst2;l62&tcIpjK$x+IB+k+F$6eF zRpk#Ay&8R7RR!;-MZ}cS%kZFmp^f0FPh=oM5E#2{{mI-k`mYw?Jp_C}ehz=y4-wx) z`skryX(Im)2d4AAz?5pOsvsJnGqOt7SKGYzwq5l+7&-5e(HH2saOEM@(n=N^K1J>I zr1nBJ6f4YkM=$`?j#FfOv`P}UXUQ@ML%=}QYNWFuiZuI=iAf;JKYgVI48#)I>V1-H zlVam_cfq6AUdUaG4D~CBFmj?u$G`d@*wl+dna$@YdhaXyX99%#b-jJ^z&>~IAA_~Y zoo-<6(74E)f=MB%i~|8u1lk^9+#Bvoa9*bimXoH^tBZ0YV9kio<8v%}sR+z6;@+$m z*jLupt{r2LiqG{UBV@~Wr8Dmdc^-!RMJMKZEv=oj`4~BZgpIwKcJz7pykh8j_B-_(G53kXWa;GcW)j#1`06& zyD3p);M}d`CjoPeyxv#YmO42n`5f#W?9b=lsoWd@>_Iz21{SJb{xeJj&9AxKAp<4SsW@C+U!yL;i1*aVC-nlaJnRpwdg0)#ae)b{JhT@jc^QPe z0uO%IN&+qx$or#2g{@iiXCm>hm`0~& zWI&xde|XD>Zl_>_dUIX*=|Q{*yX7W=#t*eG33n$x{S16pK!)r?Sa?a80vE&!c77L^ zI?9Na+A+T!A~b9{7z#O zCY~!38xWz}EOfeeyT^&U|CFG&&AfP((6!A|`j8|mg^>O@0LR*r@S;`7U(9GlI>G_f{fs=T%F;-M(>icgD3?{OhF5-*H?oZV0FKX;EAp%c%iE_%wEhHi^LW8r`RAR8YaQ#-v0q$XG5&kI4W zN2qcO0df;ttC<2Y;E`P^A|rvc*d161r-s*lG1+2>T)>0>S4n0Dl;im4kdVWLxh9(J zbtyl|P1jpr=ABf&3KrZkQSTF^8;u zzJpJaTo`)_UdN!2ykcJKN?g>*_gLn`JJ|D7W6ee&hyX+apn`jLu=?$0_#Fkur&<&U z5sfhRb=g9Z?Tg)ucj7&RC78&5B8h#Q8XnJ^GioQI-M)oeY4Kq zT&%-sTn!8+h)HyDipT852Fo>8NQ@^6-1)uN_;2{Y z6PokBa+0c(6_{os49f>)~|Je~Y?A`k~KvmOW_E9fT{q}mks zBJN`)CmCamzl#}g??Z_c9wQrq*;PNt4taL+A|wab5h9U z^}~ZmKN2wOqu`Lxu)^fHY(6fS4{beY4jJV@f*$+b3Z8N_&5b_ioG-Hl->r?p*k3;V z(}(N?+f6}%1Ov@szjI-6W&+*D@9FXg&p*p+^XJJ%esA6$J7PnGL_`#Vg1l07)wQed zvP7evK^lF4nhq1`D1Gn$n(i%LVCVnNEb0yhe%U)KZB>h(6Q=C z!G{S74u)^x~W8ERLT>@lq@NErYMVm$`&xXmgh!k^$F*;bf9T zx}<59ZNgOzGK?Rno&K40@fm*E`vC==^_m`1UTx^FTHsW-{vuxfrPuF716#-v#;RyV zq}^T5eo#zfoAln^G`jPdbjZ_~o-Zr+c{E7dU_i~yrj`qi=JZ`@UmK2&GQP{_@Q zS@~Lu7ShSWN7Je9W_FGb6j!p$f@gw1dVkO4(fGJC3=RsA3TF8UM7TYOuRU>r&4B2R z*eEGLHauw2=y#I2u}c6c4rm3^!=;Xx)Q%#qtoeGmmyl|K#w)woMs$siPaz2mfai9( z1FWE(S#?+ak8JW1t)_L5LB8)~51v6}LGy1hNy#*K{^wu661U;T#l}i|d4i-afQitSxI38ur8%!WK?*T zMuQrNLX3EI1F|GdfYpWurfjgopv%l_NVQo>XE^Jicj-LIRYFx&(wi11I#KS6TRJC@ z?f|Sj_8Rp=Wp#(fWyT^Q@O*hfF!PR?@@S$EvlQQd?ZqjxsTSU!rFIZAO61%ASq%-S zyu;i4dA5+8{v6ul-xlPs_$xn$YTcon6D+tV0;b1n*NxuPpOc9Z(sr9Q?2p$rE9(bh zg5i8>cyeEipij!Jq-#Lpo6q`fmKGObNv11$b|*ecYB8p~0y0y-`~4gBU6|%n26bVr z5q&~|pJ4)0G%X3G_LV+A5Vs^HBr}q6I2cGWZRTZVX!proG@L$lq#1A-2=U--B(iT` zpIQz3h#jAk5E4_-3KE0z)qJ@V_A;}14UDpBJgy(Z^&&D2UTrPqfKlV(Wp+E9)8YP` zQoV+cQBR99WKOqO=2}IB>j7s0M;xi}fw^Zort}u~R8c>`Y-E2IByqq9#Rt4B)2Vrf z|McZcxOD4aX~J5J4uDWMagVvH&Ed@R)$$Dlza`!5W z*U=8;P5v9LSqx3a1*!5xt|@D4Ysp_@XDfg8;DOKH+z~bReg!rJ(r3-q!_l2wUB6YC z$u>b0BA=4Tzk%Nd-rr8-+Zb?uhJ959Tn3|tbd~9Ir|m=g*IUt?LLa$p25nr_w!{P= z^Dh?CkTK=YzMd;uFDB$Zk7K>o_Yoo0+g3x2mBxXZ1M=S)li3RT=L0)R$FxA6}n{x~?WxMx+=s^N6{SOrqQhQC&ncWC?DaRbW2KCv)rJ~w zz6NQlYO5WlrtsT{prlU(8lit;n0_JN%!RDnI-QdWJG|0ikAxqIm*>qmveC<$3 zzN%hj_W;4YVj_Iq;P2-ml1ghYt>7*B@*#diHhJ!i+~$!A9wI{0aQdDf5f zjkZQ{SL=*jrKG5tI^PO}}GMH$_eN~{9PeR97Iw08I0+Rz;=T)z3;IjdN2 zC@-5{`W+2SfA;ACoU$rAQ#l%5^55P0R;}i9+4=3&$ZYC#smZVyp#VZ=sINZzZbdYt-9(Y6&Xuk|#``x;z)5~>t#4oVKyp={ z(c$>$^ms?LK>5+N3^)8Y?O$|X;%9F&W1n8PY3<9h!gM3GqQD+)SFDwE;C4DiG?F1? z0|D=BD=*e;!t#wc7GVp*+XUI)Mxg@5%E+Z z)!FZ%A*s(Nzj2LDOHNvHsApXPnKwwWDeyp^LxdF7=B_cb+f1eD&`z>FKI}6Pa@j_J zqTeo?B}Py`qb6Xg2?qhS%fQNsBIteR*W&3~Yrl0E_>8EbvwH$tJ_ZID6cB;i)q3_D z2|T<6kZd$*c4s|PK*snO+3~3_*6w`gg{jq2;Rj!ACS5F7fc63)d7^75g^vt4cnzQf zfoqeTn+^jY@j+sefa$%lcm>IVdOtgWiTT@lI3OTU7|M>X*)W;K8~N<)ybhdRm_1KF zlVp86riKoSj5JA^Ib3cL&+Zfl!hAYkcTAH*A{hR|u2aXV^ewKUtW@rp?V)vla?)(rdOPM-5^P}?+Ivq42gRpm8{ z1sGTipz#ifjHH@Jr-qP=TqiOl35#r$yf3ZQKdLoT(9q|$P&Vm*9x6{VZ|q>pui|Hm19?bLMjPc2DWNb0Px7_H?ChK34Ug-o`O=CR> z+PUgIo4T)e9II&?Qie#?bI^wZ$n~!xU47XD7`E!QS)x zW-dDIJi4bm`A@Vl{!`7eDGuttTVX+LrL>FOm#^mG9f64fgk+hn$$Vx7A?@@6m!Uh! zI?b20nHtpG_5>Tr@!40^U~!BC!eI&^>uDmYy?nbMCGP%v)g87_DOZdL-Zv6L-kc8? z@W$tk1KJN%C}xY?-{1?FqS^w>FdSsgT4E{mpVK5bp`c?vohP%wAm+3zPpzLMAg;r~ zRsuzlPL@3zCjlQgq{N~U+3Y@Se{B|H@yVQ0PH?z%I4&X}ks@-8Li zTVQ5|}1VMVxx9oiJjpWjzAW_!m&eK|0zKqXX zx~<&lrgC}D)_J!WTA`@oVO`g>I^P{~+78@_puwfD!;LCBeZEFV#l-7Vv|w46AxdYK z#S{qOIjdr6g_n>ySWBbKb}31pK@H72*I2IjSn8H7)pjdt`PKQuz@Gz+JKE-l4sV%k znPy5xEq-q54$NrQUuFs=5v=))lW#m*5j&5NQbpWroD2P`!tFa#Z5EEPnlC)T87qAA z;@p#c<8@PJj`!nlU(I&@FQjNBmmLGokj_`=mA|`A=gc^-Jma+WjbB~2b^72(89cPY ze?zG2UZ`!w>MO`5OQZ$|clxEKy|pAbxW^!MUVz^_gSj9f zwkvJ@dL)Jp%&E43+sDJaL2vF)g9WuG`cTT8Lxm&p_(JzI63wb&!K||^qwB1LTWa+M z&#YMtjK!ta*0)%;_@N)jM%BD+O-n)zU(pZ zWJa?PMM@*eCc6`znoU4>Xr1o`YhYu_c|-Kb5Xr|0R_2#*k8zJc&a9`^j2OOn3+j7!B8f#u>^GI z>Z$UI&0$75h^j@bl~d!Wp~+--=UrG#T9HN;Vcn6LJxtJ%z1S>~F!Jya>_EQEM?{l% zTN+b^tZZ#X6$~d3^i0rI?f>D%po~w}sK%o=>=Q%ddz{Tac%w0Kx`11~TM%VY(>q-- z=8Wb@fCjR?q7QT{^$dQCa^VWAaUh$<;Pb#IGR#}uwTMphde0fxL;T7X6w+n;SzYbS zBYo}>s#AaC{bYcd#lCWOB7UkMvox+$hQE)%8GKjfW-t4NGcuf2Dotc|z1w5OPwFi zRqCzln{(ZYs?=+(lD%!YMXQCle61j1|3=F1lm^$1$E2I}Ac*v?M6J?4KDW1;{540D zb_kE7X^jJFi3H0>|G3|PM+1>sFjpA$;c>WHQ9v75Ux8C=kFRgl&%SPkN`Ng|e`W0@$w6 z^RnSavq1jK59sX@iA@0~bD`!~8oAVnmluXH+E*_(B2pO^@`N6VR`>!2`3NV!8VuA{sKds}#TkFe-y<$3*rbKcq-U#NNht2++i zHyrNzk3KWAvj%^P-nrR5zOFH0^FQ3oWDBox(DkzZFTCgX9OE@q_IKu|nWP#~!(Oye z(3(L?nVWO8CW+`7oh7f!Zns=9&da!HxPu=`Laa(D>l67cB*eFgogd#T9M6nrPL?WI?q)ji z53DdHFQZO>phbL9gsw611%G?>tS43|@tI<@$WN$YA{>2 zT`O}`<<*Yy}Dax({1x87Sw(LK}0<21121G0V|=l!<3p9`cKJw9l1t^ zN3)mDYabuA2+P$#S3w+`+UqcK=;PzdONHa6;2Wh4HaIwX?&QWZ5zWe!fT3$^8%z?M zV1-OU8ltQzQ(5GQPbTjAisW~#j~;Szva;_gw0Zc!LO3>-8Y458#!z}27YJ#>Q}nxz z{;C#%2KNVA#Pc;jBTyn<6&2<)LS->lW>Jk9m=GyNW~-Fy2AUlB-liT!eMk}D+bdP+ z`NE~^cKLc;3F(Pqd%^x%?^_;4omBYqa3b?ZbxloHz6a1d)Y;BflDd#|e_iudoHn`|f(_=TeXnANQ9 zuDA5kw8E;1WA5$SY>`L_sMDr8fAJLx3w4xRCBXP3!J zX=G%#mspBO5K|_fFd4Oal>Wyhf|FVkI4Brzk|z)sWr2*6nHk;yQ%OB}*XS-Rg3i_~ z=3a8yV7S0c!`@Pm=AU<+^xt>gM+i9s9xn$}d*#n^EC{H1Fz8=-(BP31_9Q=o5L6B*sSMMXeZ}vho)8;8 zL_4VV!>qD%o<9(*GP-)fJuasS%t(WDT7;shq>^}Y{eBEupp=od(U~axpvUii@`r0E zEHmK0+qo6kAbDXrCfO#4@D^Y22onRip0KJS&OMI2G8hpBGW&t%Imt~)sS2L-A zFZuHh3u?5DR)H`SC?fOC)O}E&PV0k6c2ItPxHEHegv)KdczG}o14;%GZ*QFq*eqM* zsyQCyu$fCEkgH%*NtKnqqWphhOm2T!a`FVc0&PefQsj@&t6juDKP`d+;D(a#Jr(Uv zToQa2#gCD!#QmftvFVea^+am=U35q;Gk^Cvg<;Z#W1II~`p;vpqkV$BUPGk3hx>J# zt(#85!ee?*Hy8G4oDIMCElXuN;CS}0t{q<;=eF73c>Ua_28ezHcJ-U3?+tXiIj}i7 zl)v})gSnQLzzI)_S8_en9vmgx(jj<|yLq)_J+i+;;4e4<5Rb5@5#|8ZPBsU*tNYI% z{{3;c4scn1fY$n6ORSD>{ui!&B5=5#uYkZ4)H}7p+-?t^_fQ!6&rcR$!y*;J|9yxM zfO^p5L5}wO|BHnD1w`UVpGF>dFlS|?LLvYDI=BDhYw(mXM(04T0=izS7p5^-Iloj^ zR{EJA7yk!K0YCgkpWqa5VMOo3qigWNo-mfbe@!m?&y^tt2k3$f|GtgDc#`%*fxyQ-);yT;1jdx+ou zQW6b>SfTua^4q}0z`x>SHr^thoF}0C@RnssFm82Hjy{!-NQ4?1?Nykpi?$3A$;3_` zLbIje)>b$MX;ypBD5tGTEDq0cCLx@Cjz8vk#%o}2y ziJzipqC(vaqTz=7=9e zF5n@BV{@gD?*_RapcSU$Yo#8LT1rsJv%GNxJ5k^qD7XL9Pa!5Q{(|pwMFlDGTwSm_ zWAB5vC##bn1+le(0TSLc=1y_{x{#Og|oT8(H z+i@d-GxSLC@4(25^jm=i1e?d!R6gHrzRSgeh1dPXD;>PgS6NT2>F^K`o?OA6 zl-rp%TrG-dwBICJ_zZwoBEqgtZ8Ee)1xkMYHBq{9+D^W|Pd_gFFaJ{n?H94mkOfR? zR|l6Qg>1jkeZh?D9v%!`{hy@=f)SOQs0ar+duWjSnvu0~*Fd7h_T3C{*`w~-I+9uP z={I39;r_BT!T$c3o}s*!c_^)3*J-~U&72^qYf&kV0R7?V?(QaMWrfCWzc}%TCKxX) z3e6Olf0i$u)KOomR^@fQ8kKRO=k0Z|$5Z9gg?n}F-KV(OQLGEvhocpNMBI9|21&2Y z=WTTxK-)%VP8TQrV)p#8Kw3kd09c_?)Tna1PIqyIUq5qA^7lj_!z@Mbs#}3 zr%M7UgCnb~?kkZXva(Sa1O%_7pdiDqC@FWLD^lv4207TpnvV^&moQ_SL)VzSnlW>z z#MH+w&7l0c?2J^bk+f$ix)Oa2XRxU~DB~VPX@+?*LBle>&>c<~^8Gb2wX`2%(Nr%) zE@aCN3gRbHifW*&66G9I4LZwW!zH7Sk5u^OEBXoJ;r9bMhfxfI95sk}wgb<#GL1HS zX{>d4&y?V=@P>+FUg9|B_;S%x5XnbGUB4nlMkYwO?FUKN>t!%PfdR>wKUVCwU`}JfQ+SFt!Xqut5ZI%(eLgkiaEv>vT4ll zASgllVgj3dxz3%)_}BsDbKDs@4$Ho#j1ODHn=l>D2nCHccZIN!CWrOTh{RnCJiJh- zd(Y~}(Yipnv^A;Q=a~l$vcP zCw{sYmUNfU;8P#Np1>KrmKv9sQxs}osGeaGm(h2Dov9j$K0&k5B3nW33#Oh{A*Ue@ zRos=%cuvN+HmCD7_Wk`x$@!HdB(k!(t#BJF!p>iv7(fT{8s_`o7x)nu)?WaR2Qunt zyQ_)@%5Gq={W9CgTp?FPT-=##|9!=S{n_r{!%rBrpVAANj#laS7o?w-dW?Zi+Io9+ zrqP0kpTD7|>>AXaC>m8n7VN62K>4TXMa$=7 z1Q4P08JmoMjoCOFQ_$n3ovBVh&Q!Y?YWQn)cSyKkRh?F+88vKNFHIQKP+51;FHy35 zq6iV(`}l0+ZgFT@)gHXZ9v){1GZxxzbi7{M__?>ozP~oZ}eodww=+Ye(0? z*w1bWvh2k3zs1i5Dl75xrq^^HszLkdoAq2V)^I3y6IyLey(n zwKp_DrBf$6euK809Au9^D zDn7RVE@msRO5p6UsgVtm7PU-6-|TXNNCmO}Sd1C~ysp9?fh0{jZSd2OZ&C$Qy2CCoqnA`n?yTNw0`$oyG(knQ^&Yl3x(NP9$ltId< z%*;2FTwcfN(a|`Kd)NIrm?sxmmcRGJW_aW$;4Mt>mUHC#%B<$w;Il~R<{>yaQ)soAtFzN)s;wXz4WR+f+>VT<X??VdLNkY;7gg4vjTE)omFd zQOMv|%6v&j7Zz=1@%HerTfN1Usy361(+SbgDDjZqgq25BG+?$(txOxnA`Kh#Pdz1! zj@4_qZiPA9ZJ&r+tG9*h7k5W5&`ZP;#G(rd?j`4C(jLgLU|ix@3Cm;rln(?=0A4>9 z_hxI27H@{#K*{XJaC*MIpu^(UxGQ*>R}9u{-{0L;86SInzi&g4*qyRTX6x;XC9AgU z;6Ja%d8yJ3%3)IYI%D>cUhti)*NTs1w7jcPA?OVqP{T<2@rfqOF1{0=+YZrmI4uUi zs5$0ihBFP$&!1BdrS8KE2>dGC0%VoW`ph*NkW}cl z+&xd40DNfDul&LGAG2^OynclZ()PENjW{ZICHW)74z>p$T9d$2_Mtqc(NBiq` z*Dji3-OKxT5V0V-S9fv`kNjj;aO#sxST=nGIc{X8zdTxTrJdDGBa;x?z_FaElkK1s$Jn%QIV|U==J?1&qfow6S1&n#`jEMM`a|i zeFZ<^rLDhTJN_Q;6?|7{LWl75pxfs2h{3-3)&3usc6yt|84Bkwn?RgD$B@Py1h0~2 zqIi6K+@L|1wFw$4Jeegyx*o&9cuV@awYH%~R0 zWvA*!4*@TLGPa{GFf^uXvImJlwIaB!jqL2~Z1#@sN=ifs`N4MSI}|8eG`h`}PAqv! zr>M|t8-O0b-g-P+QP^N=ks*2AE;> zyKd@%ZipH8mF~|N0@g;M=GHoPWEU+hEh^rZ$eCV3tb@+0)h@%*X+plAb#D2;ij%+V z2H`m@CMRyVX-jqP2q+;jpom5AaM>cw;WlP*?_MB!Ji7%3J7UP)Ra`W}V%#*xELoz{!k1d&(Cmub$`Nt{^=dol$`W;8za_>F-fM8}u?G?3@Z8|)< zi^M7Jt7@NnOVHf%ayCED(FRcb1qBQ!XhV+NxPt7b(!MI`!Qz0{lqVbmYtTDjN_|&ZHkfP z>gQBQmO&Q{KJQQ>$;rc_*36$_1n^PQgk0gRrpjaoZQ5^Q2-rwD9(>z;ulFLkixXIK zb`NGc{LeKSyj~zm#Xj((C(7Y{=Hmj_^x4>|)%}3+$7HUlGOT96HIHSlK`H zb#VU(w$O+`9sRc8zZ2>g5!vi0jfyWsgv(pAKQw1V;Y}(jjFkU$#tsW{dVsN2GX4s+ zb2(+=zm4OaGvAY@erbm#-<{4EfEK?d<<@o#Z&{fDWH-hC~Ey&jZeZqtE{dex1;ZO{)3MHDJY zMI(x4C#RTR-9Q}gqtTx?+vn+s`R?-KR)|6IOBg(0(Avy*g?cL^0IJ znw6yJev>5t{9Gmy1T_3aya`p%2YTaVL2u6aQWlo6WHvKgUH(h4K~*%y!0X$~4~%PH z0_s4N%(?f)(DPE&*MV(qLKpi&0iZ{+2o6H}xMu(*i+rIR!Vi~0A0|E9pDXdLy>C-M zI`L&RrFcYVMkA=;1m&Tnhe<0d`bz3}A3OwVXBNI{%c5g93xw28pBDEoa76>y1ecBrzBcGR*l~uWg^U2D} zR(qTyZ-@%}A11J-{P^7Jde}Pj-kzu=%D$zC{7{y`-9Gay@?_HXQYcoES8nA8$ zj3>kkdQPE!_qrwqA(nonyL7#oQ`x}M+7B|nK=B&9l@*b8s}~fRke7-=B5V$$puLN|cD=M<(r(2jr=CCN#(8x$OPMbM2rplyb zc6 zua&ULVG~3w>db1I&xdVqjjhdk3%dVOhecpmB&B24%hIQC^K3C)7w?VD91`O+>WdNv zp?qtSmsE>Mf9~w}W-x(lc1=pf*vP0$8^D^KET(6OG>kc!1k}857l0ctRL~nNF*o;&d=|mZB5j$+Aj^DN&TxuM?+3R3NgZxa+DC*D}~f|TomP6y(_#4OhO z(U5V6IJj{uh!ws~v$Px9k1uqcyOvXgoB6zsrM5nEmOTJ&v+sb-xWnsG5NRC_h}e>i z5xxXw7vmdU60QUm63_QaXL;j}fHGG+4 zRLA9ICw3Qxf&(nKYyT4<3E&z1?H$@8gG>aDJx2<1I$Ye@v(fLLPSD8#7sPc}w=(?% zJ8!>u;%r1QAfu6ymXjs9Zey!pjef2B-K(R@0ZQ1z6;CMU-$jJmzw9qJ1EfYktKuw! zpt|-jL11#>po#(^U1*EdY33hoa^%9*PX{73l>XUS921Q_5M{%-C805FoFZ@2I&Zzu z@+HpZ`y*u5RkHJkJ;rStXlEuR4FL*0f5z2fxpdA?vnQX1-Np-se{Zp)E-mTKT#vY% zn_4a8(SsWtw4Oa&ZYzCw@biC@Jn3`mQts2lq6|i8hx6`KALv(~SOWss1UR_yIS>Z} zeOofAk$w%x(V8v|yI;=K3<#qwUs%`DHLp)_n7w<6&!gzN}O$^<&^BPX7D|-$fp6STCDC-4r*AOzK3;#0vei)8|X;MI48MXfV}M00W|KPl?oC<5i9lO9JGU53&$ z^;#FI!Hq%*Y#Joy(|O+8z0eZQ^d}EJO=KFNtZu#vQ)Jy zQ;r&&vO2ybKH2~0;o&BNni{S1bzJvmrFu0MG4WiE_3TO9k9FBIr|Vzh^~!H7r~8Ed z5^Ll<(7xK>u5@9r`}O>02PMVme6uyyhu}(yRjsx=V+Z@IE7E;3V>7HM<@4#-L-9DW~wnhq)Rm#*k<1G;uO^N3xgF^Thb3ogG1)LII>H9cS{uOUSF>Hn zX}@8kuDNAYW+m?O=yMq>5i251#04n9vsfrW9sri~8v=q4gz!W80iWF*cb!QaZNK2V z$$p7=Ry=_CjI=r*cHBD&p$wQfNUbGs@VNsj{vV6U-yi+lf9WN0$Y`OO9Rxu51LEUAL}hSsG1B0lf_4ED zCeIe1U=AzQDr-|LSX9Cp$+a`=dK~G4yS5!mtUvwOMD+i%=bq>zbHK4 z8Y5sCn`<+gaFL&g4fy>>RygHWB{ZFNb#plVUfCT6%rxjiZ0q+NGBPsOORN4_SrAm> zQMLQ~A#4anW}aaT4#RZ&94`~fs*jveS&r2tq}p}C642NC!yx3kM@})qq)SUt z+x{69uE3_>fBTK;lW7K%#!ifAa6}a=A+5_`oa7>zFbyg9C! zKJ*VZ-yJty6x}gw2u+Ta-=av1?avp6hIqbNU3;5lV5Sz8sG}GjppyA%5b>DgU?*zP z6K%Egnhhiw325@wi99|8vN+_S2>Kj#bc)NQG}2UqMiVaT9eaEG?yr^76!OxqeEp%5 z*)4b-HimwDOXG3G0!rVp4OVxue-K#8qdquDG!ci0?w9Xv+JuK+mm05qQBu#!DDWV8 zp{W}zj~t*Fw_1X3T0Q9bff7G=3OVRxl*TL9=8%D;EkYIqF^aJvXOlg@4&H^u^lL&v z%H?C-L#j#{d+XC#lQp)pyq@ci$kOXBPv{=y;6naj8`zd6z(IPf-j14-2p*8Y$d^lR znI-B4WD}ipNJC(KKN-1FLbZ2Xv+_6RVMAu#kNIoOOQC9;1br75=WbDjKjae{;o_I_ zzvAB4MrCbn9_Q*@dNmw3KHx{P;CKW#v%%5v-C}ZP8a)$Me`w;%-ZFSsr*hWy1YzQ^ zm>t7tf4|}Je!e3457LeYSQB8qM0~;-B>~hv)On;fY_u8U)UuGv(gayyYNWry{=2#U z$EsOL`4^W&gxs8OXYSlAes_jh`tV(OKS?_jjDo?>uSG!=qq>bp$$Nzk{(&Rgg*<|n zY7KqOt{+%jf1-XKlLM}<2vSyVgA5h6G-wwUN$;Xla#ID6Qv#UOsL2$Cif3ek$i~jT zphn2FKBMlPzF;++yD2gRiALer}RMy}|ljYD$G>3tE$-meJfqxaFYZBsnsj zdW*~Z!B2guiSSu_4wmR-OMPjxY`?tZZP3V}gfB^3ghg~MRg{+&y^(Iy8mM}vZdlYc~}zStA!f5>ojAso_XuCsA!(Q5E$A7UheKRY}h*DUJIMs)_5-b_XT z<5^zkvzHXYCNHH>S#1}j#3U_{*;m){Wg)qi#!PKav(o2+l%a6oL^`?VaaT)3Lt_eL z>a3*(m6ku>=!_PYNYf0!^gS1zbbC#Wb+DZ2(27 z>u|^YzbO7kQ6Hq4|7rpLyHot=nNhA*ND6RVI3$f?lRpBs4$yvtlP?X=*ZhZY~9)3?3X5D5XdT}lPfU!hwF{PyBN{(@OqSve>))QT_B_;$?m6_&=6U;=x==lTQ=7(ZixA*04wz7(Pl znt+RxzY40BYsUbjs*w9D38|;>sRBK|!iy(Ev}V0ayC2k>qx)Mf8i}lt=UiA>-Mudd z>u79rn$LxkUN2S~_9&U|W@zVnM((YhZVaOgG!!OFIoNRBHgaG$JPh5$aj#_bv09)nsjG%YP&o*IPN zt?GH|SMwg|Yn3Gm`&&Q-dPJv!J_Ia5ucMBl_}7|!AxfH|a44U%Ks7r+v7I8&P}6x` z-&`IDJZ1H#@n``MP_`^!R6^V*G zY$j7jWaj4(ozMZhbNk17&L`W70m3{|4l`{7&$#8QpMh-v#mXJU8C0AP?GfVi47rSe zI3EbbdkO02@q1_eT516mm>5Oerf)$dk-u@%*uVhap*Kzn*`6;%4?!o3F&oLqb|sU0 zZ{czIR=O{mR28Z`b)zro!@Dh>E8??rC%cWTU%WQ8eGGTC3L2GrLm~*Uq22mZowv*^ zQ$3BpapD(6GZSs3DgiM3R;SSps#ih+_?8J=_7orDhl&2qI#H^>vkntN{Z&w)`4R*p zjXzdqr^a*q`TtZ50UgZ(sfA)Cl(o&N(L7rIu&aco12m+$vq8Pej-Kv!AnW~m6T|IA zso$M0ZV%cie%YXz3=yegC`CCtmr7!`24}R?RnOE{UZbT%I2lYfLPyX#ExT|uA~bJ* z+UwliEk*@&8;t#4r@b7wRjT#C8h&v&AIRtWp_=jF!!nk2N1sA+l;x!5%4)Eqdi?-N zz16gd^Bg_74DM>Cw|BjSc8LlB?o6TnO^&#&+x^Z9hID-!n_)3bknm`1^o(FN$aGli z_gF3hFwD>lB+y5K9vW7tQ_u`@wEB3y@Saw6Qo7A$pY`)Aow9Q;r5&jb-&M&MP(^7$ zUoWlV_}(}fcY7baV2CB2z zk>F6zo+*M-5PshWR09J8peOB(CJA@b;6GWfhnsC29~@-Km298B{M4Hdl$x;e@?Btd zyW*C~Gs2R8g~qA^nwYMl_zEE;1QnRsd9|MIx5_Ey0{dSRGyyciGGqcfSd=N``?}TV zI?8%>=v|SbK?0oy7BHQfgrbqL5T5UF=-)aWufi1>>OFf-D{pXXenyA))R08N=PVLS z+H$-zDPz6dkg{(>_~inHMSBX{e$W+sx;b;7#OF#nQK5{U#H6F2kDw9_i(aZ$ z85mwnurZW@rZ7@SxS1m$@tVHLdsK7Gy=brfd{+&W`l^=0 zq0{d_e?vu8rrq>eXF1^75#*z#qb?VELBQMN>J|uG{rsjF+sa>g3Hiz&i>xTfCvIFE zf7<98&P-D#fe2(dw0~W+*vWTgXiR;_S*4ET;%+|G-LrU~e z!WGcx9z?mi=+gIUXm4|Z_SX!@yknqp-mI(hkQ2sOMb$X~FlvAAe9Wc*c9r@^9Q#3t z0n63H>wRdyHwfrCAc$^HWWLpMa%hHzK4z?1&H$A}9X?e4N`KvB{mr`n{;Rk}CG=8G z{;rO-0bZTcg7=buOqy8h?)gzYw)P?fjV|5xZ*YGM8DDQNwN)jkZ7`)XVwVv)?f_fS z6(PBQ`MhUBfgs~l`Ky-&me2F+TUv&IWr~uKJwe0ylN{IN zpMnB#B-63387m;a*quhYICW*5!=|6m{r*OCkV_k=8-;Q*>ZcM!2lRr?p+?JD zi>FKV391F?Y9dzA*bm=y+*%QIbEAfx{ITeF6MsZ*PsC>mi}LalgxrD(O^fqGd$BUD z&yDp-0s)YtBO8f}IBL>bVq4R4A@DWl;InyfFSV()GRV%+vH9M{=#=q`U)qxRYGB3m zY6G7LiYl$k`+}_dQ?ra@P8+PjRaX*0LNc$V+PSlmjnM*+yd2BrRv!~eyhMhK zd=s=X-C9zWUMl-sZ%M-}kThG;CO2JWvMaQ=n-D~wFO$?Uq;Wd&0#gNHd?XC`C99Zr zr$6+IVU(N@oe3B=yN<~3-M0~ifX)UDw!-SB=er^>w=~TMXL867(`6b&p=kSk8H;?% zdr4F11D_dUQ`k0Zx_+kdgrDzDPTgP^N7lK&Q4>yy_rz^Q2%kzV zgrSEc3JNOw=uyL;B*kZ`zZbYW`qXt>flaY&Qbk|TC764?PG1I;3D8hv>lnLXag}-a zP?^|a$ca>;<@g~qlvk~?+_CPjSt3-%#FtjFI5#%cl&*Xes2CN0b|YEXxVX6B3)vF? z)N2F|-cM?(1=wcl};tYcRu6=(GnNO}3cEqQUnSN+UNvWK_7_zZh-HT0# zFlhO8${0x8AIlP<0$n02*O6x2_IGrE|L+%6LxPCDc~fmRA_NT7W*rMmdV;m&+N%8G*Nod7>gwt_0Lm!R?jikc037HS*nqES2YP?@r5;67R+D)k4!ujlryHN{ z{H3%Qy5!yFy*AwXTC)zH`rEfBiE%DG&+&_|Fwz6Z_h&3}Q@7aEG+$gx=5-tGFnf1X z3TeH(g=&O3G-7tQcd5AP;!LVa3ByVIS<~k(KP&?ua^6E3fczMRzgs1Rh9FYr?pE?H z4ZNg9`S$A@&MVD?9t12i&(aNCrbJ8Qi}B;$UK&v5%UyKAn;6#Uc#AuDA+K4{J~tNv zw?W^PZasCl&>9W!74;*Xbx0MUkd4{6`iMS!pozLJ2?`$03KU?8QMVM_ z!68?jD{&0;7oy&F=Vw_k0Rn?`eNatI%#Aw(I3x>W$tL8>o36ek?$;)JXah(P677*zZ!+Y$ zyJvei#Z0L%(FfvZ*;Fsa|26c)tIy`{IV_){I9-{pT4)cs0Ny4rlVan8o#a286+ zTvqM17dB>-6ew415iD~G6sMIKAg;KL%{Wl5N^0QFr`L+{#6#+gaH*~Y?^ zdRwe;b&fbVO-dAe&)<9O9++9?Lh+&bd!I_+%=^~?bEA1o`o9_vJ7^)0`E|+&Ft%1c zV9jxs_#Wy43s_n{`L~|-P{KEj$GQK2v@f4-@xAdli!CRca!{}&B5SfFC{0FD=zD+s zhV_&1Pv~!UOIhGJ-ET;rk+!CBm-6H41AeJlEUEce4qRGVdWsI-KiX-;#DAPEeu}P$ znRx$7NI{Gd&3_FxnQ=HbA<F3bEvZj(_XHHk)z3fw4}4k*{Ry9bBArxY|BVlMT10)5!2gA4xlf;b z8=153>r^3{F;529rSNx&{m1`8{}7sX z_@>FT>c7@8OZLYq{uLL)h2CLcyb{FuchLPqv9CizvJbHZ{}HkN2U8CM`o@u3aEYP& z4zr%80sPN()BF_wTBuZefBk}{pb!e8hg8)G+u4Qv|L5Zgfxih0kA9v9r~_P*=M3bU zKNMb=`5*!LD^OLv>38KhNg6XDSr&>IOlTs)kBt8s1p7d?iiu07U_Z3S$y?Q*8|aE| zA;7jip}`yG{7wfyCH!cXfs_(cUs)xf5g*P=Ppa1X0a)KVI4kJ`0*sFC-eXv*4tG@? zU)&$Y4F;pXN=n3xz^iXhzg@;8q8+R|w;1CVVt{klxeLwgWmMxu7^>YaZF{`7f?c`} zdYFh+mj)?Jmzjbn-LcHSm)la{St1bzfOY-Eq?}xh&hB=}6%HijlVv==viZ+o@tOZvcq_(9Nu?r!mZo?`N!sa)CUqHn0`vdEY5}`h+VCus@qY)r zZ`xC=%?p_Xu@30qkHN=Fn*zEmJ}DH6)nmSr!o9t~>(;7##J1k<5F%{6qMtgSRH?_t z+r$7c{tF%3}<6WGYuC-R+v|XQr`FstzSDRS& z*EJq(?qBf7tUScu(nYmD`gw?Gv7v6g$8vWdGTI36ygK9ISDs>{3aqnwk67_$AZORF z_UKf>ohfgf_%kj%cVjL=PR`nxXT8x!OGQ@=N;1jGjL^~yB|-^SjvS-tckmS55P$J|5>F`vpKaB`v+Dz6mH zZqEm;z0be+bbQvP31xr%P`SWY`wq&+q+#oIQ-m3^uFFoPwwR#Be`nds{~_xw!>a7I z@8NrI0qO282|=VoQd&y7W77yoD%~9df`ACpEh;4`-O?yZw}ffM9bjl(>OSE7p~k?p^W zQj5R-Kj9sCbN`lKwAMN@_*u8&-Hx$wDX_ZT!u&KeM-M?PyP2=6(z2rm4}(Fb8xsBL zXD4Y43N&`owRG&qYFI--FQyXGX++N*+S9BB4LiJt_40jhZQxhq?8^=|O*`7#`b4>r z&cj@mPI>7ks*nTpB5Hl-aNbzWbnS_Lq6K=_#XDs3`3iWL$WeEXSYsThqRL9YDVwgP zlz1#(t@f!|ghBzIo$CyqtKxe7?$~&J&sma_=VxeB6SjG|qa6=uNM;RH7_3)v=?gpv zF*b^pw1Go+?x3mcIEJo13|`>A)-RY&d&d_MpN-Ug@}(o2V5i(`snQ~RApHmGR{;T2 z$t2?Rr-;L{eVbVpaea5u$O!poR?4Aq?P!;5|G7&4Bju#ac>Sji7(4)rQaKBY^H4Sa zN+@gcW?UF!wSw* z7`+5igoHLeXX1&T6duG`7;L4S*4ov@KjAuU&K$cag+du24@P^xrk&Hn|31)U2}fao zdNP}7v8jY2<`Gv;zig|>?`w65ysL zvD1bVX4oelnKGQ+lh=nd1<=rib8mD@znLApPaFGVC?_)aQ#%9YX zVDd=uJZ-f-tLYwi1N|aModH6$CBE@Cprx0Lp%JE*h*Jq2`D9M_W$gv(0v>Q)zT@!W zoC=pS@s5TR0p#J)(3Mo8ldu_(lJY7)sCN(^uru$R#ftyWl0kU1@QK#}*$qSFsZdLA zFZq~-!9Xct_QDY#Bx$OBz)6b0oIzT~ zdUIZY$K&1@3Wb4%=DE~&zhdWm4mzK4cQ+nu*r!oP7rr&)v~Ogc6@$AC#>#UenJeNU z_kJ@qLn|^1NRdZ-Y>YoEIzsaPcmIQ6J7+uv0@}him`VD*3Cgf}Z9{AW0a%WbM7ch9 zEeXkyIz(8KEn&~QyJ^e*9;0tT-Ebad2VpYb`ph>s+uToRTCu!3pd}7Yo&Gent8LOa z3{GUJnktXbV`zgzr6lC1UQD~G1W=6`x*##qZ**EFeTfL1-IXTv`0PFL9@`gul0V&C z`k&!3C#KZSVYQ4hXo`h5&79q65_?jkJmWTq{uUi=IbuJKeaQ)dX?@&HsUbd#G-Sbgj(cS&c=iN{#*B9(^pa23!9xMkFdY(4Y0!?9xI)a#I!<{U@gD8NS76+mL`=Sc68XP zeoZ9+LkFrQytOxiP+VqLIH5)6Sm_@)gE=182)Wp`z_+|eMD|r*QgyH-2Q8yg=#SOe zdtBp%vQW!7<@hlJ{EqqXryH&pwi?ikFtO~$b~ql{JFZrJui77?(k-viNP7c|!4QUV zlTRcD$&mH=_j_Pa>K-XW93pTkLEN?lR!z>ZNirwNgjR&Ze2Sqa$l&=W=3WgVDyS@k z>^CZr86Fl^h9Vv6>zvllLTClG#e3nBxN1ao^B=g{8T4>J+g)ZU`)C@z!oawYAV8&P zMdf4kCRKDXB=()B>y)udkdhD@(H^To!FRBOXDzCgFGh1&u-sb-A)()uB^bQnDE=0B zVutkji682l!?|2(R2D}4Ha+fOOn6(CeDB@B^oMakBz^O_Y6FIefhi(B~{?GlZUAbufNTEPCDz}5eg?rk;G z-L*oqd({59&`J!;pT9NVhzs>dC)ew)`Dw$*{GTKwlov1-O}$v`H+m^Ab}3JSNJ$*7 z|5zgW5(OCqFFtDPn2&Cfleidtf(!Jx?#%h~3N}9&6#UFdJpBAKnqf5hG@@_vN5OIW zPZ4;znzP)3M%+6(e%ZFp=j5a7OiM?)HzR8Bl`j!b)l@4>@NC`RN)ch$XwJ6<3*ZDE znYU+Ozi4{C$|2Q!ud5+*oCQogmYiIsq8KoBQ*4#IZB5`9ga7RIib$GG}ks zz9IWNS2H}6tyTA-?d?ShM5^(%)>N>A2rGBUfcxSc^Q9D1M^j?8PRqgD&0nh@Vv66$Qwp7-bViS7 zxxKVzH}IwTF!WKco|>>e64k;L9_E6uwSfl!Yp}&%TLvP%TACJwW)tG)nXL5Qrt$?g z{6y+r4 zSDO`7%(&FGuO>U@taJpslP9@W!WzM}PoVpuIK+n>V-}_4;OiybuO|;Zgr|6`PQQ-Y zFHmb2e+Y{F{W~GR=5b7HMWqK_Xq%+!{Fi#X=1e0E4E*&dIXtAR6C8mN%)4eArl0na z>F*JtbP&ttWramDw(Gqkk)3~JCLW2BVq;pNO0KM_GQBn=CXn>IAue{m(t`zgubhM6 zer{B6><|~_ea`qmGz%8C?WdAnuXN!v<_B$Z5t0OZNI9%BkNIz`aux{wd&SC&!lXPi z`FLSaG~~3q3)?1a8+2x1;9(A8M1$0u1&W#ebG!bN#fZtZAb_qgI^p7yMHs{JJ}EhQ zRBm^iMK6Yh8y@t#tXfjlDdI6YG(HXwKK#LBF(y|cA%pzrsm{LCA1WU6-St@Xf@Jvl z1FqH$;XQc3RciT+iKz3MoM?C$%UZ9xB07{xYU5b4;qK5szRJ3m;_HIQ3#_AO5mNB7t}}9ba){ zNq;1x3Klq7!bCE6OKI(oBHK6L-4BbR`QAqupzI(tD;8D4U_OF-oaS=pBtc9K73ce| z5JehSc2EE!^U!k}Y#ORu+1TH{UmSj*^ha~CDOjOG*bWzXva;NmH_LDl5vkYWrGP!~ z0X@0>^U&~*>5G{*!@#4yjn>KD2=C7~jw27mLiK_78bk{{k$$Y%$hvetM?Ra96=+Hy zas&eVK<6cw)uwJdT++~A$_J+MH~4~1hgd5&FAc(rCB%S;R}rzuTxjlU%hL3&gG0gm zSj{Jgkh0wrc08y*Q;W({adLj2&#_<6;|)dcJFc0*U!+)5n@irzRiU0oG?Uj1VqW3q zJ>v%=`!Js4vT7e62E48uN=>Jh&2LHS_WOgr{;yJSSMf?fze6lPIEDX&d|ULedv-wi z5DA*n7C?$F;546oY1q6R3=}&}*K5&HF?6y$3-1`V0Lu(Kw~x<4bdy5-+Mm+Va*|73 zyp_GuR}u7Ep|Tok4s@VG&vhSbV~u@2)H-%*el|0@nB@hsG#`2d%iV%7CI}Z95C1|u zrX%JCSpKvDUulhL0kE@_jwcUR&vWX)tXE2_Ps-(eKOL=rc*eyT(%9lQDtqm*7S1!i z_X%P-Z$xmq5-meysfM8(c&WUi+fPY43QSGzCwN68FLogQ4$eCo;Lb3J5hS{ z4b4(KJO#`*SfH)^^f$o^DgTZ&8qCmDqA(xBjyd3zF!T-Xd~^LWX@7yaxWyV7Qd5;e z!)s=vF)N)UXvQE?)w2u_>}3-yJzm-Bm(}Cd_&T4{M$)VxfcN0puqDEKz*w}5Fq8qk3I z4Gb8!9kvk}Dhmq>fW`L4zZPD zLyewEq`?Mj|MjkI$>BW|;Mp5DZiB+W1MBmPmCn+6UoPVBDO5km{~Zl7jP3)q1y_SH z{N`1}$?=VI2v@IwiZSH$>@9k?j;t$POV2<7CwDXf#JSq!*QaEfDc2J9c;xg{#KE4O zN}@Sm*5gJRM7eW3926#U*m7uvzdkrSxbAP{@Zxd$)v%^KLTruOc=)B-$&Nkcc$*8v z6;LrSmb%cHCci}`sKHuNvMopQn%J&IchRGDrhj17aUEdNXro+Udm|RU3)@UEJ`BTR zi8L>qHQUZft1p6@l}m!~JM9yQpcl_{PzT8C7+3^}#c{-eWWy=nnY%eb*$eo9Fx6HWU*94TNW<^a*rq7J-PX&9Kh!oM5We55u^AK*g#))Voh zjgq9=lQdm*JBwuyMP9fjdhfYwE(%%GGo)AjOnq4onz zvP1U^-qUuIs0;V(RGT=<@}vY*C}q{hV1lgS%_2SX0AX)VXfJYbl8&>=7DyCj7}?$@ zd7Ib1hzUOu2*NDn#WH1ORn_nd!9f0!U!w^H=e1=LL1p!o%O_B&h~ou>jJm`TCMp>v43CZ#i$lFuQ8N0J0a z-a$uC-j(9@$#-1xJvBIs&G!7~0t2<;>GyvUTvd<&)l|OW0dp}3TdS@i=NZH4Qy~uF z<{5Xy!#LE}vywoYC?WUaZ*>VC&wAPd;Il}Q&Ym9B7;;|8!T0) zFar&#sS(f_B-b}Jzc^L9c|9@Qm6E#0S$Z0Ip}cUT(pKSzCxR)?2K;ZdkLhLYIa>$X zZ8uFw{fE!U-LCg{XETs42+;^_t7Pc!G>gJJC zP*D7?=tEXZZ0#Pq>*v?>WR?u5X4u>l57kj8jkP16Z)Ath2NH3`@#I|@kbqij{T996ZjweA}tXYaGTGezH|8kgmx~STyI+Q z>I8pO#7@XSw5a$v0}c_Lue+0pjgLJENy{YBhQi4|QsZT2zQTZhrL`?-pa-bGR2sHz zi1lCYG5w5sHb$;S|r==W+G&DUicxK?(Pfh9QBf zBEGnV0nYLY8Neb(AFTfb>R?9+xTNa$4PWb+3lhNzWu28X^b5P{l+QDsamXauh#F%n z8o(-Q32Q~p1G|lU%O&&${bK6Lh@i`_*<3EV6xl;%KRnLv&(YuE9^>H(odFi z1U_y=T{lJr${-<%v2+ze{1^ro2c}LVAi()}_1*)oW~Y1IUoIrEvtj{cK z6Mc}O>54q(PIAX}76~k?w1DnLWO z*Ht#cq9*63Ig};_1e&XQNm5E<;|9$bNEcpxz`NEI=~5WrvHv+L&Gn7^=W;k6V`p>o zOM(M4dwVp17HkEi_P*y5D?oZG)zWZD(-Sm|v5I%}1o67}xysLf58gn>lz%Y53Mk-# zKlMpNkya(~CD2W{nQwZrgNhI3QBcju|BC|R!bIUHY>;Zt@3qM);mfP5vK@(Y6Uqtu zN+4ZNb?JAy+e*s-m6bPopKwfxi(z{%uQgAjI?@#H4efg5S}$ue*$kU>RI)jY25^7a&^ncmAz-M0&1T2 zRV2v8(vTcZpop;g;URUin#Chk6&e!(CnB;DQ60p(>^qlfXI5i`lE2f22S?aa#i$iz z2dtsOT=l!WXDq`*2Z|s>XWJu|lsWtZ;a$9GrB0hD1e1dXed)$5Ot1UBB+JpG=MatW+XQ>15RAgdF^uoC?EAzYw> zlee4ID8i4wupbw)|1l~(A`OQy9tTRTdzB?8K0$&$nlMB-1(EsTDdZ&d66;v{tp!KV zEiEayGX0xQC(t2Sb}CUGLOpLts%%FkB?82cx98Hf8^L7Di`-m_e~~Yc1IXRx0Kc@g zQ5A5v6FvFM-^wPF9Cb#M2>Nq*-chq1d(&w8u zTp!$C?=?TY&TTz=9&a-~M3^*%D%hkS8f}nkYQ~z?r$it~5-Xhb6m0IFJG=u(q4%R} zzi0%TvoY+kzI^Z-9p-S4$itHdrE7&gN;7F`wph2we5vuB0T43(_K15kwWRe*Bfe~i zZRzFQbhL>;GTd|%TZ8l++*MzO{*lO5F{Deq_}QqQmYyDd^U*jxd)ncd-qb5}=)?7V z1Q~&UOFJ`+bpP90zsP7|ta+EGT>r%ZHc%ID*^W_0JkRfVA6nzInaFII{-DgsO{;A9 zl#7d;_gPIQ22B4dg+%HiNxC~TmR^vNxWC7w+>m3sVJZ5X>t`_OI?Gl8;NboYL$s!A zwX#aCu1KC8PCLK-*&}emBEq&C)6yh3NVpD8CPURs zyi_A9 z<|kcU9tRwRS7F`WpYA8ooA}=cg8&5&E9Tw zjErJt3X?W>fFym{^f5bfi{F`nQlf)%+$o);+M(uhFe7)YnOjMmD(dM;T>vu zbyJyFQS`}e-uLC}%uWVYR7+`!hWIvI+RoD8x~vvUEdn1x`Vo1N&&(=_c$7y^Joltg zyPo_BK0adq)F*ZH@752rm;a|om4RAj^#=O;fw9z%W{xV0YK@Ah;3L7s?@5Xt3an7Y zf=VIXUu=mMK1U7<#)V#Nk0Y0tb9wBoBj@CrzXlYo@s%$!78Z=y)M5d{!^4=)L!en> zKtX|ogd&mqg#21m3gTX{;^!ClzfrRJvmr3@tezEJ3m+GcopxL<$Q(9*rP1<>4D}e6 ze2j7TAcdyB3-cFtz??yV=c>VS!tP#Z$TadI10+b4kiBDOF2)-7H9*4@^l2nt;~?G$ zZ^5Db$bi-oWkkG2K=-Qcci8qfJvx)mgQH0^Owx23#*aEvN^7*s1K#6$ix!#62B<>_-h&Jyz8 z#4nvwI1A(MYeeh6oMab*gyxqC0)e8f>m9c%eU4L03n7jU&vR~68FXC+MqXl?hBj5& zOg{4J+3uK5G-PO2EWWIQx6P#aXF%l}G8Ge#IKAe%VX~xm!-z32CU(``)vv29Z#*u< z&QLLxAlf&96yN#C=QFY5c3H@zF8^FTSfC*d6>wadoG3ebhQD)MJ#b*EI)@JgKnVj| zMIzOtJRm*j-r#vg@-F>^OzpZC^nE z3*dWBv#XV)5?FsfS|xb22bq^!7=!e1e&mM)<)h=UG4sWc$GJlVsdu#ijzSyz-}r2q z`H59!`?GaJpmgDAk3m=d=JIU+U{vR!Nn^(u1{p!4l{Dmp+$31^`L5!Vz)BZKU8%^$ z`*xeE9$Du0)a(LYQTIMD8$!b-8mM=Pc6RaNS?(=&;M_N8AYmAmYY1^yuLXw;oM-cm zH@$*-Zc`$~pe>Ifo-dbfZBUA|=`j%XN-02ft2|d-Vht)c*#CXeqs-eLIPP^?N(edR z2)Py6K1M2&yC#156I)fDKK8y?mhUU!M=XPj@l2>17WpImU0A})j!raz5s8{M_iD2% zda?V6o|a4JX4be>sG@IaZtoK0jOdCCcFTqSug4?yPay!t*HeCIU${}>QWK-Z2{_U| z<7H9LV5P~0>>vol?{2%nxBytPy_n+) zHq|3U+r#Evu~a@gl%X0&o_a>sS@Bv&)-TU8m?t*+U(YuDpflP&9>q4h+}*d)9n;gf z+LrRir13XCnX{)VjJ<*JeGuFq3JNkCw%dIIp29JjA^|NA>%HH4wEBDl(b-pu>-p%2 zuoY#tjdrF&F3?NqVSw2v{=u)-75qxhVR+P*hh)4K+3o8g=SoV!^Fzka6y;*cI)U2? z9uTs8(&_FoejbwV`9p+sq&ab$VWoAp@dnMv_KsV&B$+ogS!)kV(@^-+AWnyMnUL^8 zv30rZOCio@O2~rC{68t$58k$t@?SR$wtQ|ZdL6CXoFhi*@@{S2qCX_3zK6|;v8Q7H}Ra)+IbjRog%+2{MNPoJl^nud&UU$V;!Ixssyx#ou|0zQ) zfMGP#&MdMwMN^~xb)bkEbPqDYZUg;P09bBr4(B;*L`Yt`b6~9cFLm*Wco1ezi8WHN z2*D&M>L?0i-*(~b2T$Yr8~%W-Eoiu;>hEgwILrP(ZSHkgN;#xX&VhT6zBDc5k_^d` zbUc&sP*|wVvkh9^$NiG5;tFe#P&RF(+g5LCr92Xq_UB%=V}J$(^U?{)Zod0tjxR9VF8QfkDH zd2(QM((ZBVw_@Ef!^o~$knq-O5+4w4xPeC5|JP>S$V9# zK-KM21f0NVks<7$%c zt^sEuKAV-I?Opkd$lZgcvE6!BB6A)*Su42Y)z4vzAPv$=j50sHoA_+}oVJA6co|mC zD#C0|Vq6Mj=@7=bnl|}>$WT-@Z0T@+zoue61LExmVBioH2PeFy#@*I|tM(Cl|5v~W z0In^#$wBc`{Do+`pU>lF|3oJuoZejb2k5f+2pbS=my_WV=97F7|8&5~qXp<2sGDRM zSTT>C3k4>1%+#y#94n5Yi*H8m>_Oq~TD{V3H83vXINdXY7!-Ey73c90Tx1Gjh5!Hu_`f zki4)&nbrek+B=FuxQv~<)HS)p=*17z6#bB{(b}%lP`NpR5cibS=^h~u`SH`-ZAGGs zkf|liTx9-aUo7_T_x$?m@A>+L&BoRY-JHPu+M(}#?Kqj56(QiQpvc$;|9cqI!ciEZ z(}d`FP!MBdAMft%g@$!r@t3uAtt=;r#x$aYC4@=+x4fPI3Mv)QJ^AN>Okf0XL!Jp7 z2DRKsYiFcE7b|ul5O@aLn{5FIC8-?<0|NSKTIXt`}=`u;eQx*&yO|^XHveo$KU37>aPFieNI(SUqiHZ zB&kS{USFCQ!+$@Z1X7a`SXs`jst2l^IL3{K{l~JdKu&nLASe6pZ$6De0wk}hT|QeZ zGjmP7Db^#|e^(nc98w@4Tk7TvkkqP%Vu63Zv-zoeV1VO}z5ytmQc^Z|xWE$JnbhPZ z{QDCo@wX2Wi-CWV1^&;k^tt%w&)F#fzl;B8U2ch9x_WwT0|P|F#4E!#j6kz};m8gL z2^rbi2Dw5J9U>W<_P80uAdg{^I=D&@FsXGyu}`OGU;vH?F_wMWi^JLNUPcMfyy9o5 zO8LKUL3@D<1OxW%?nTj08_pn}r{4kN)tBi4^z@X#Z7(=6&`^~T>Jb}4iAnr-d-PD> ze#retz-2S6vJ#_z-~nz)lnme)WQchOjgODNc<7*w3cY{-p37yFRK)uniA|eb(fMOR zK|zuBC)ud6;2^m3*5ps#0j*-q9MfDTr!sd5%@@34em-$Lg-;*n_tvu*2hk$d%Hn&H z*hrXENZ(pqCb8+rl>BMhJ4ZSj#@*rSl`ZXQ^yju?)8w`G@N>cY)JxN8p`{ zihIO&@7@K&2B~pIK^>V#EiI4;P0nF8ryz!zUB7Wbz z2kr%nT`_63FAr40a4kVEF{uh!GN_&V#cmp%YH_XSVuuN^Q{l6>cgb;CR`B`AXZI^K zF0ORj0U&a4MlHJkZmeCZ+eQ5@qs>Binr(LPR@a6mw&Fzd_?qo)U%BT-0VWkVHRgpq zifp3(-KG-B__yCg?LqD8;{o!jQyC@;A{jDp1(w;JsDy-s72hiqHiTe z&r04B9^l#hFeoiec(Uqwwtydrj?U%rl%yZW&EX${vZJz!>aIa51Lx)5WzC@^t;@PO ziQ2DU&CkDlGu*vwOa_Ue`Dw%maQebcerS;JfJ?Jf4TC{0_6hefP;gT^wPXi!G?@=p zW&XR&8%TeW6V(550Wc+@*F4rLUv`F5D`&5E#L~ImH6oFbu{NinLe*|Uxbrj}xil8x zE}P?Ywe|H`?mL;zf7CA(X+fB@uaA)aEzEs9LDv|ZFab_>alRS zthAL$_6+w|fy$gl%xb@`b~bprI{jHh78B4G7gg&8Uhv3ra&m{8BV?_uWYODcwmm4i zdj?<-`?y)J_T>f>kb#X@V32j@Qk0kH^m?&lAMpE`{C_qE0+{L8{w&Gz*vk?0`i+Eh zmN{|nD=5$U(=ld^{ZP{3vPZk+=hfR*l?RdRnr+#77Hfb075 z;Tz!X20KU;?0I$b?)~u}J2VIhRfO>Os)8XFowtJpIp4o0^zO_*&wS@GcY4#M9N))5 z0>HuGfPes{849pU^3Tk2W#g8LVJm~_ktM~4Q8i^{9qW7)xC8_-e&Q!9cu-2q{7#ac z=kE}(d}ct9{#`G3ewP?CG+yrdFivT>$*AwW;){v7 z^go0jFG(osRc_z8Cl;xx9tv2-U%zm5^n>ahwwQqJfyJY4(68j=T*_Ot;C)~ax zAQFd_oLb|YT2=qtCvQhHdQE~nnhb2TyA7w?F<3PP9@;&QoK=VMCcigjVBOOs4tnVk zX#V}KjTjnA3L_#(l}LC2Mk8$+poyB##~*<|I?jC3;kbUcL6oOwgy3uhRi)<>*YcPN zdbS{AQ@i$nol#~TlKG(&o#wCc*2mnf1YD$dL)^zX8pGB#G6^j2#XmIpS&%F95XvPio3<7Y=j~pE&l4QgX9&BS-6sk?*An}+Je(OD=vd9T=?Z0 zrntWerI?H0kFk3|X#;pqwvRg#0MCVQ?Uxr9XMegA3w-6T?f7F_2o+f6?@)JC34rYG=5d=hk5T#tM+@MnoT2 z_K%yWmLcefkTee@RtZ4VYS64-KX3p>w+t zmny?rByT7v$d+n6G0u*h&E?j^_P1vY2DwcCOl&aoI?kel0q8cGXyP>^S7+zI@^Unw z`+`bAVbGrAF$&S%`{6S=?4mSb`g2pmfY`JWq>x{F6MwyNI)q5yU zWUfv?@Zi0OCw`;+vyWMj#r*MHiXtqwka@{18P+^2%IK4`Yrzbq-YKH-?9R(vp0;!bn@^)1;^ zV`F2P!`58=`9b~x;y}A6jG#Miy=&-Ly7@YI{`c>WAMvMWXNd0O=YqcHjH9-E{r&x%*4sO~ zCkLGsmWrH+dBp9dy_0*eI^>e^C(@-grGl4kaF9bJs(U2&-A#JRN{phwKdBi$?&&%l zVq;T$u|7==g9VN^@8Ir}^xPE?AfZ0KnVq>y)=QC}Zhgzp>)Szz8*|Lo-k^Czz8GsM zdu{Z!dg0FxYcMnyGmHBKLPW61n*UA1Umx8@!%&0XkCn?Z>!GHZOGJ*xNX~1vM31xe zd*FD@^9bk(dHXG?rA4AKu2K?e!94WkLoQc8!@M#>U#P-GiJ_%y?t%UhX`Di!`*|goQ#Cs+qZ;k_BPKn2p<@RP?Z?$)2Zr#o-~1nD-U)1V_I4tKX!6; zmrMIKkUf%jE$Z6Z*4guh`60EaR{)TYU04dodCm5_C#jFR(aTLrRTat{dY#=41c{A+ zv`_oc*xN!{S2wpXT0oU-`EJR!u$Ce`QI&SM@zCS7d_%)}=22OB`GV~6@s|GMgvFtX z8@)zqA=gR9DdIGmG-kF90sCdy8R{9~Kjna#MdWq38LU;JJwH1mtb5pv-{5rw_dHlx zJ@WDOJ*9l7iul!ETnlWJ9ZTKP>q#HIU^K}L2l^XbzfgeQ3$p(NgnJ_z&i0qu!%sZ+Pw~KX@Id?K&UATFG<1Hv z6$iXdT^z2juPYO^-+go`?3bes%vrG?G zu*S=MOQ?gWgiit@W#D(NM!xE}H`=iRa-u4ONzE z@r~Qihts74x54i!s>UE+LF*NnaNv%dfw1sk?5DIe18Nb!OI!j!vc8EjLNa!*uJDtc zGit=e)WkO;>%ok+&*@X120%c2q0855&42$ln9*%ht94Qn8?#ir=>X>Prq7;z%QQO1 zENirVo=yOaxI#arKXCN#+;4VbqzYm>o~f}vyWd2uQ)=8bEyTlfcqJ$BPwC2?)}liK z)z;PJIKM&h0P-u8l$)l2{zas-sc4+9zV!Rs509(+=FebY#0a$4ven6&_A;Nh0r|Z7 z@Ah zE{9O&0viX{_OH>1D5($UwHzmMj;tJoMcPoywN=;^+IMAXso;xsVlQ|Akr|O@WR(=g z*^`EZ#W~@3!x9_u;`%JH)E|6wi#$Sprmi;l-jlYMdGK4uAS?J1lUlL$5e)h|`^1?T zhxf6eh!g5j%ljLO=_*h9>qPSaqq2e;*6fy3W%TgE+3CE_01Oxl)-%&FQUi_{uc&z7Lz&`=%B~Hu|E$JRqstk-{uleu?HTV4BnZT3`x;lX zQ+zux>ZltLtRsZ_gC|EvF`HFVdxw^-2i_M@bpI%fI~w$z2vyJTLkwrpoqBh2r^AfB zgR4J14h|2BWV+VnHK}1vd3?1!Gu5!ZyO66|sZC|r;6&YgBPOstV^rL+@<6z5q~7lB zv7uob613Ue*dVsQhPLUhk;cC@TxIYyBn&0jyJoPgqM}W_L?D1{8w^K;2vAdBQg5Xy zzvGUNMpHM4B7P92SLxpl1Wn3LheGS8bdfOm?>>J9jBd|yNc*u)?XSM@qiV;Y5vH{2 zQNRLbmX?-6LD19PzaQoOQNVT-34^$Q$#@6QhdXZk3<3ZwWY%?9tXgd5DINZDqvp1I z4WwEg0}Zl~yk|VKI0Pym&%+~e*lWXmP7)N^1k!e zIxe*qd~n`zMM42&%icGKJTybOz(vvSIlvWn`$C=+sV>}Y@ZI<(gZc3lIUn}V4?tU@jniU#d*B5WA}`Wpyb$yROcJI+$e$n}=s<4w%VF{8tNTt~ zv`y>rLj&urN1RLI1Tdxdg4l61qQ8ABB8dI3>t2lk-L1PMlRU71$VgUT>&WHQGITj% zec{oYNak_!i$E$2Q-14s_@}w|N8gKB7L#mx;{MF;P!i35aJew)`4S9hf4MLE9BbW) ziH}$1JcdGGK0A=#VOS?Gp9ldGgxWgcg-@&9n&EK@Y~lT%=PE2+l`_Rb zpm(2}Xk6DW^{UMUGyJqP>PB{AcQ4toPzn>DGB&-Omv9?!}q!O=9hq z(#sI`#|F(b`HJyPYB$;h9yt|GcXYS4PHd9#R<*W-B)~u1*E!8RlpyJCe)|!U?IP^7 zSbn~#=53a)NoC0^#MQg@2+p_1+N9mBE%PetG4dYNtiuM?vY})ZI;oNP`A4WCQJaw- zmn^wFsV11_($hj8>cHJ35-lfj#AENQ>6@G=E)JdMlu_Q}B*C-k!wI4SgBXZZ4-#Qy zoOB40d`Vrcuoqsl5xVZAo(9J5m2!BYi37B}f1{liPIil6`3A8!csD*eItynf{~7tF z8;=@qPzo_tq7m1e=`c|(G&2rDezy*0gA6H^wY*wvYHF%q7k1wY?%vRu&J{8}J6na> zO#hbKoT{M!YRU=+mnqhd4pgnf*4jeRb2U~SL@tGRvH;RfW!anDo-)$Dw?hFP84kw$QOa{#?#*YkK90W8N3pinaqv;G=N+pq1-SIXOK|M1NyCBaehWCj zc2{XIJc_)mF5TRR+L2kn1i&a(sYc=F=}MrsKl$a^5HiHRd9yWD(~|Rmv%Gc4*W206 zyjx|yn00)oKdI!G%hKhpY4D5Zz90^Ts6lKU%v)dd&dz4Yd7@%s&YQ)*eYoV;{&}t} z6yr(q!yCmh%93t%qgxewbJ@80Ogr!$31$=Fa0ZJLyln6~gNI{N%^zJ~d-H9&Ot`iV z07IHG_ZG3@>XbCoU=*++$MqpmKn7q2ej9?61APC5{NR&I3^#v7`o zfGGqRL+qdWamn%HKfmWOF*i?Q*9%%zGc)x8EH{8X5rJ>|9TH?>&Q~9``j<0;&KYgs#=ZQ= z8u6i`Jwl@4MA2PO>{TRd?33Q9@j}07qfB}@655{Zc?f|Wy>Or^t2Q&F%jh5CpO=Uu zqKri57q5_0Z-HYFgGYk5ncz83(-2TY_)YZcpCx@Ins${(&5VXW9i8>Us8Lf0MU z=}=aKk9ZD22%FIZ&CsutlrfzI5e1w#D5o)!QvXkl@m|K^)&%XwX>2>)tJomzYMio~ zzk2*^C-#LLtVaRXQlj&a%QnwX%$*5BWb!yVJU5kH6DN7NBneA45fxqS_dP$9`azSn zG~9YMy^+2gVVylWaUs%2H`vkge2VueKe?{L*V_v??CA?SR*Km33Wq3r8i&b-;8Gc2WIvoE zWB20EWO}&!n2qix*Okj*58cPh-@X}>j`0P`Y0l=tide1a7#htW3w|&5Qhlr=Hr@NB zkB0u8Ptg4MNV{$|`z$9IFGW_me0iVvrVc7pN$;rM`dX*^-m`@HI=x#OUkc>}pl_e* zUgxUM#{AAsc)7VOKwCeM3Uh$QR^Keh^^aPY6-oA{94lWg0p4JM%qXIbhL|fj zba<}H4m2MljBd8WSg^*4Ay{nZW z_U2sl)y2tLi15v}7%;=$IbeaKVGxAy+KiJLRNJ@3x8JRWXo2q8)x}j_NkI%ZfK-DV zjD+*u>{LZ>x28lj-R+j|_n5BK(YZ!$ieal>BnsrS)sz`AlK~QV4%9g;jrT+!TK(B# zV>p>u?nU!&Zm}@Y?>wsx$egS5uMXh~V%`D9R`(=c%qw0kc?BkeCLTtRc2b(QKh zK6(kDZy@fLxvnSp zx89+_PO~Bsi2@DUw|%u1L|+*2Am<k=BtmQu)1aF27O)A4|qo|YC8Kicjp0nPB~rk4Z& zbpFZLO3zf*gJx>l3iSGU^sCMOQ24dgxfTNJv7JBqxrq+?fE z=dJ+(v#Ci8XpMbQfm)7|)M$_xO0E92fy{QMw8*?huvmbnt*< zmy&X8erYT7fjY#=aP!${Y8RLt0NhO9(HB%W*;@+#shU6*b!r8=W)l9a5BeVrS1Swq z05dnaSgKz}UxqB>m_P~er?Rm2@DDAgXxcnLl0Rm5m@12&MvvIUYKVNf;myX>FEQjY z^u%KR`OTZLT&O?`%33zVB?+vZKgx9a|?Z2%R&^r82NRaUaRNGFFZ#E`}o{weJao=$ml>MK&C|D={F@XaZkuS^rvHX6m-7<$kxx&1PVl8Zf^SX0}-&+%5*qo9~J5A9F#1( zIPJ(ZD75rr4-w|sMGxwUiTA%O4~UD-S3!&*Z_n1nJo~|vpZ_FdPV8w$1ITOc!CLB% z(hz25VX!Oz#le^MR|QJxu?hG3ocJSU?gC~zXDbrVuR_f)p!B&~9m>qtbsR5?7YPx^ zm>UWiS?Z2y18!L!SAhEf;y`8se4X|aW|YESNS%s_9k0k-Z(;Q9nMe6-3hn-_)_;f! zlrv+7hj9}wsY>Rs3XqC9tAKv}OmkiLC{G@y5 zCp51N1RN1vuUH$3gOD*yyZY-ydRwZWrX88n%wyr>?5(*OHr}zfK)HISKeQJ--G&GWX+_kUi zj$gW9Y@y_-Iv%7;b5Aj;Yk*?x#tviT?q>g%$}ULO2Dy03yEIyQk^2UDkdsqc_d6bDkCaS+)NVXL27|d@d5UkT zHMeJDpko?npeB5F>|1$Y3YwMzj>g^X-Em;FBQ%xIw!OC({Q_sZPj$59KevC#<0!V> z$AtS&h)EfVWT~r!x_TVvBMvj3J_7m$4^mTKE5ez292YVOA)d#v`w0)o6;;;4`x=Y^ zC$Aug^8e%PE5oYVzOOgkozh)`gp{;MO1CtEbV!SIN(%^5(nxogNSB~=Bi&sRQt!fh zfA`+!|MC6mb3A9W_u6aCImVb{JpBBPpYBT!K^u~YD*gb%licT~$_gLRn(>M3pRGiB zW+Bw(TP+7*zdx$f72*+N<2Pz7L^tSbA5!5DkdaL_gK3S*LSra;zT`(7lJ4+;#p3H8 zQi9q4*co5s&3kfs%Pe2{D{L6i!#0c{=_pFmr)w&uHc!%KZ--Zc>)rRP8s8|J0snN3 zvNqv&8Z116em_(#EWAMsHx{yG#d#dKQ^{GkArTXJf0-9s(a`x-*Y zqVcpV?4$FE9Pld+GA+|6!rcGa6u=zI$RN0x*6f}w8P038bd{7Zjt>va>te#mUnC>g zR@78=jO6${%TzvgA>q#`+fN2fI(j{DVhO_f`)R?3qP?mjW5tnxM_Xy3fy%wg9oKZga&p4D=}&mn+S!RO8BX{t z=bOf1%iVXW;ImX!0+_|4Sm`fpH9A2q)>=-rB|3F5cv&13XmZl6XWs2xCfzpp>?){? ziew-xL#-^yS>pG^tzG@wAi$UWCGpT<-a651p2RvG=>nQlWw&5v6 zy*o$s>KhwOE)G?U3Sbi3(x*KIT(|v!$gTqbe@Z9Vge32PjcSHL^Sf)la}dG;Ag)VE zcnHKczX17cQ+Ji-Ha~VB6wI5b{~2eBCV&S7YO8wIukA^x`7dwXdMRyRZb6t7`~wIu z514^GDw;3-;k?@yIbJ12sr9>@{pL3Z3|bhPWd_ph)kG-JS9}MnguiKgu`?PmSl`b( zUF}4?Rzry%IGkmaXZ!t_W}uM`d-#B#)l}H@BV?43TRz`;9c01!QMAo9GI)NY20>b0 zGr_;))#odr=gJ*;OBS?g>*l2-2nh-0PB4c7-h}wiVxVb~tXo$|NaDyFI z-kC`WaJ*32i-4#RF}h4bp4+o|2*+^i{I4UBpengnA_!H0h`ILf;|d2fC+|gFmzk8X zqUS%PKvX^kL>#Z37`SB$$~n$aB2Vt~S@RV2-@2^BT!Yo~vt)ot=-kKQos8|vZk<6s ziaA|@Of5k<{U+0$M-;;uYCXKNS+!gTh7TX^3@Ro>hDQ#5n<1$(yNM!=#3PJP7pdUn z<+)x)fSQ5AB6XJyKr!%WL3WmwU1g84E}b@hfH720dk2?iSFUWo_T_BhA+u9w``*aS zO(y5-dtpSa&Q4Csj(9Jtz ze_u;ApK;wHvL{Z!h{l>R(~Fv$8-HiwHXxQUDi85t+2fbXbaBjTX{7ylgzGn=Ccp8U zLl7}BF+D};=aF<)oW3X5aCmkS(;1kXEt*-MY^0;v{~nW_R{)UcP~HJ#SFTvkm&9S* z&Tdkl`AJgFsQa~M;<+FmT{%7^Psd?5Cjn?ZR=oyC6d>*Hiu$gz`J$Z3xj%ue`*Yu@ zNYDUfDIZ_$;Iy~-JJ)zFnwPRAknhhErxuv|AW0%g3$&8~bJ%3_zUKdF0pc!Cd{!tm zN>vF!liQjZa0Oo2uve2oIh?@29+v1S9cyt3AiYe!Cu=lD^}PS&3(_n%*9(8r+LREd zyTOQY{5}s)C-q>MEd3c+UXJa&Gs8T7^-MP=XV_?qo4BrgNZEO3g7drW5XPSagI)H1 zh-C&P`O~M&R|UA`<>jrhJxWJsdrk5v!RbJU#`QoDGV6((&L-n8M*>;&D^KDfkyC zRKF0I$K8xt5me7)wK3~k(J7F-Ok9xpN~^eGX4=uOE22eqwAq6pLX?br3j~ig{I9BX z6a@h|?H&_8K4xC)3EHg$X7$-e!DaXu8vX*i0)pZZ@~?W$)2mF@IuX6;C7k2d+Sr&O zEZon87bAmMHA?@8lRUldFVh<%(QkaD9hW{VA&?5MKJg=%gAATk+CgPt1T%Yu#C*=) zr5t7M>kh?is5!V^-rM1PuZ0@SUE3WvO}LyaxVX5afK4oRk?PX)D5G9|YakSg_IO_w zx4uHqp+L1pAd362!SU)$VIYksRqJI7T%z=wSyytmkkel~lfW#RUw;mG59v)coNv@u zy`3o0jY5mYq7d@U&zBMLiGNRZlp?}68R+y%>I?=B$z*G!%k6GoKWxTu5Oohp6|8$2*9VYsCq=uG7d~%~ z*Wn&FN=r#BE_a~`8G7nSGDkebdjq;XSTM1)@oo(mYAqdQOZU}wZ4)x9qKm2*c4n^` zGZ%Uqz3r6s>gi6x(%CvSfQ+9=rWsMLB21LP1$t+DoGH ztI4ZzDbI(o*-H|WoTa$>RPoZ}$KGn-JvE-S9 zTUpiT78@D1S58-{zkq*c`=n4pDtXjb`-6FX5vjdo%bsuRpD||B>lG$2O#ov>3P^Y) zw7WqXX^tagJQupTlj29S3xI47{Fp;P5g}&CV6I;jWOjIJW z(Nb2+1qnE}Jak%)^Zy7n7sGKmm|$8Hk}cg^T3g24RIMh3qtNEvzw&J&L*R+6QCppW zu(SDQkHdse0F&>V>K@(gUj25s~s!0@fT#IiBO&n=ABcsk%QC#a!v&hq%%$8+8XvU&DzmTpV(5 z*=?fD_qOl#u5nRJ$Ysll=)-`oS%g&{{omD9;`~uZ8k+_|85nazi2IvCXhLzK1pl0S zKoi=3fAZB7$=wSDZ))5>wJa)4%?citAEu>I2uZ?T2|B!VVNgnX4`QiT4q6htN|sbx zB&f7ud3kw>dEChe2ktO{Zb~Bbz8o;J2VZ6+Cf9yE^O=V+1_r~B4@h>2mkWmy|DfsM zx?Tz2UlQ9%F*cBGM&$o1bp)4kFQV+#0l7TAI`f7_eDP7KYX;_0ce@`N&#f!6y#Lxb z7w>jc5!B-h@w(IX8=oqFQ*7PemqOpg+}*dsZ)$2HXsRG+YJ$U4dAc=o^JDJD)d5A; z7<_d8%J5Q4eySv;-Gxx}cBS3f8xF_&Q|9nPNUQBJ@{CsaAzyVL{ZfW}Na{mQ% zxRK-(b^jGG46X2qtu3;?;Qy^R9vA=f-7pM?lPDJ7;M54A>t7|UaDV;cpO1?*(q%B8 zSFu7e3A4dS-~V$xEmGind@zLH4E*OGeLme^q$x~mOY@+c>pwpV;a%v%bFX>FBS0&biqV8VuKbyn#=pOo<43zr&H3jN{(O+?5sboHqi?X# zeCmI`)d-fE`tQr@+s+vjaM>1E2~Vd4Z%VufBewO}gU4p#KwbIL&dv`+FoEzle2=r; zTU#e57h707H8qg?u33T=D&ha_V^QnafZng)0axdT%Uvf6yz!?)j-@0HK#1rBHtbKPv)pV6x7oxfHW@;GDlcD>u#-fjn4&Yj7!o|Fcs zyYA?ErT^R^x9j`8INvy&hc$?HuEhcB&CYRzbE|^k+jX3eBLB`d#bNuy|l6MH&Y;`5fCtA zAD-8*w|KC-YkW2eP}T~Ejz;{*Z2Kje&7XN7hTx*Lql4VBL4N!P$Ol;5IDhasS4mc7 z)~8Z6lB8y+Ny!ID4sZhy&$>S3Jbaqv`_-#)v3t^tkuDnkq{^JG0pn5cU+b)e zAp-~2x3MM_Ts4{bXAo^UG%?W)Jj4L#8NXa3{~FeJ3eR@rGZ0mg_rv<)A3&vl|4*>k zt}$Sfk6YE%KE%)_w7LY70vfrq@K5sv3opQn*BaG z#V&QGePMy}Q{8T0W+wGat>yd0MI-riPTj-(@v2Yun~dW!`P8v}Llw_R(aE^+KeA}F zodKl9b~gSqZ`;~m?=Th4{VJzIpa@zDwJpWa4}y$l-`f`G$PhxGQ7N^|{%l`=Z6;yJ z_q&V&4umb?c-B)35V{Q2py!8Qonb&olLC%)VJEox*(+iHdBsB#d~@dpt->H*s;+ag zNnqEap!bP}O91y1udV!%9e^rZXd$XR4ixA|s&GJqlXB^1PxdyaRkSXu~ zZmGjKc7JHuW3I~!-mKh(fh7$A5>!)nK9-h<4cs*W-0pg}25l%Kj@O}fH53lU? zixxzWGdJVC83knY-|xM>JQ%GDm`LEf;sIKPQ8HT%1bl3qF57f^&5lpB_v~N(^}@;| z`br@~%cKU=Bc@A>i^vCZ^97m+!0mwj-?af&)Z0HRDi$89(DGBvMR!&egnAe zwSuCNBB)h9D?qCEogNonFLjSe$w7S-G#7hWw8ZssGvg~A8mg4;;zvzv#TC4?Z^rHY z>j}xU37z;ouMTh?MWLK)i&?!-!BtC%_7V#bLRFPf*6%00Jw~33_IiqAiOAny*{WO` z)TDDeMeh-5(HThhooQGaBa|Ff>Ju&gu(2o6>emaVC|Q+UIA$yB=}bL!26!1-dxPb0 zIj$CdB7Nop0+znwm$Z)qqcpM8o_jA=&SAkE*YE5z^kInk*BqORMy?MU_RP`#@7%iM zf>CHlAE$#6^SsJb4f+NaIT9wNFspca-q;9m?TxX z0d!5<$O!5Z&Jw@JI`{ru16$au!8HAp!n4!4P(%#U07ZAosTQr(F9$OvjGu8);@Nar z6<X zK7KcQO3gBzn8kPyMk3WARcef>qN0L~i7EcVg6Uo$Sh@C%R%u^os>+;Cz}Y@P{t=$- zFv_pw8mko`)0nD!i?_RL^E7k!BOx&{lN0ca38a+IEn>_(9`PgEj z7~$)sPsh3MK_N1vZUHdQdgo!?xF{t^?8iP(lh8Cx(dr;$pn&;n{x4tN)9Mhi%?o;N zLg3g6fW1UBo-Ex1qH*%Mxkhm%C9EP%HmzAX0v1j2KHMBhUBj>5IC&dt$>MK!c$M_P zI|$T?T_E_rGtFsdOmQH`YJ7Wh(g$17jl2tV#+{a4l>m*rCr`z(4>yOsB1i>E6h766 z`L>8Ertp_8OL-K;Seq;@TuwKLdbiVU?vNU-hEQiTpi>Buk1k`C)5&u^qfVw5x=Fbb`gaF}=73d>r z0yk6O?6mn*!&3_D@p4sfuS`wCXf{L@Ac57CUDU2u8h$>44Nr|aG1P+;m{GHuV&zRw zr}=_JUy8qd;d#JI=E;B@c`UW+gO^3uIZS*qI#4Q&Q|7xLoEP7WM}i}VSVDMlo~TIA zq8+SJQ<>jTzr_%WhhJ=?@NJ}$%BX8aZd-75hvuBU-}#$=E@Ax43^-1P!b$}OET z^v5!m_4X+G!{XwAi4rlI7~{3D9C5dyjHk5DjyqvMFrA@&qA70gd9ZJrsQU_=`mm4p z^}MgXU|o3ZRO(z~YgbODTk2PHWp#r>r>zffQuNNk3E6|2z03lGg0ftS%-XjKxuvBU zxgBl8A|5;rv%gCh@lt&<0teS(GTfdxbWNwcDQZ-{nLagqcdEn?E*{&B!3oeIFjj>Q zcZ3g;EXw*+US&MRFHc z@c3w=2MG@GR1;4oj#(G8BRH!2_QvBra)lalyEqgfBTG44?W2t#DUdfsV4*wjj-W%i>Pj%NYc_Ms?e zk{ZuK=umBI23L}HgNf5Ws$*T!nH|2@OtGWgXsKd-Y_=ub+MQ1{6f0AqVu12~*et(j zFX+uNHs?HTW%A+2cUkm53Te=Z<*G9=EK`snGhBVL_oaTwvfNg(U$8?HW3~HQa2pW+ zKDxlZqxz?eD}aRr+Gf94I$a=LthBb>Fn1LfCQu+i&W>Jdg)YmlZicAg)SW7-s)AeY z_{Ix%2a>9M+tWt9uD`sklCbdPLPJAyQ1w~(D!lv#7m5z}_-#1!285qydPEuItL0G; zvZVyaGB#(Fl|`BMPqvPY;e&i*LYK#{$~%|o`@8y%?S2ZhO;1ZAL;0zfCuRXO_{!Uy zj{8c99EcPYqYl5eP32R$P)c;`2xvfJwAfOo_tk`SN@bqs;Smaih)(8@O2D!-UPMGJ z@G4`bQ7c~=$1b($nUWUKJ1Hq-EVO4b`81B2U_$5j>HZ_{+Pb=)cFF!AJRczc;rHIn zzxZ0^G1$fr3x$2Cb?m}D-OpaUT5J zgXXK3XS)yT?Qd-=;h}=t@{n;59=w@MMcZAG&G*^GXO7~22~Y`R5Anl@l_b}^G`9|J zzB;F&5)NZ*RTkt+ajLR;cTPFKvRZ&=m1ky*HyBL~ z$7NcHn1e=@9W3Axf$s6K;Pga@dA7ibV`}~Ggf;hC# zAJs~?sD7U|unNhJ;c?LW4HG~=sS3gphZ@57Dz#`TTlHjRd0<*)ET2|~4TP4?%-7Rs znU|0S)=K!J4gYYXMG;5q(;lA+>%iT~dT8W3p^?%l?J#qfQ7j;z8E!X2nZ(hRGe-Gh3MbL-&^(`N#Id|#26Dl)$KWihlqKjwn!y>D1@-Rg@9n_Tu0i4qVk#w$aSnU!Fn=Y2y(=2{LTX(?x*Ch1NZ z%?lh_+)vfDe?!R*kIo%csxJ_NjCfx(DUZS7l6hX8@hGA`cFeH0-pTO1M9oqXU~92l zK^)H2dxV#_(AWLmNgCwUf@D~CxBVGv134L}+;iGk?@%NvlC&<=k&Y$<8J8Ur6?}-b{~^f`!#~x;aWH)7-EY6ylo*obn0a{^0|P<3Qm&l zMU^Wam<|jED%MPi&=17IX0U+8Vk0}l@AG370W>M4=+JZt`R`M5UjQ_OSzzWVrMJhI z2s)ha+eT3Gk$}+3U`a$do+Y>^TOd#{a<=ZZ@$qLA=H_eM;yRNJg9Z3E(hv8h@;GT9^ZXJG}uM? zE6^_RLz6u~aUO9#8vF-);qV*78;V29O=f^HkU%rf7f_n^=xl%Xejv`UJvaD)b5`5T z45E%Iv&iLd)Xd$%OMwDE@a%_TEnX%RqgM7u9O>iwoqQOaV*k}f-;f^GC-e4cb^Mxy z0vTJ}_fRQ>Jfn5Svb^2#q39DA5a7sU z@FmbK9w?!8!5;JgC;p-# z(U0A&sp_|acJp8SWcODzY;T@J(Q#c26>W>u9Tjf|9~B$6@G5?++2MVrrG;dx!>84p z5DjJMPAY z#H73?S(W?j1~sI`(AWG{_N`c<=D{a-l%?H8i;q8_q-gck|r8vMS(yJd1Oa0Rv6xPPZVX_2z|J^ zmjJ)O%k8nGqg*g&ti#9vO?@?q+V1>PDUADkbcahDKbhMu1O<;V(|*a=Vze=dNgUQ! zjj_4he(B4?BPd@bJ07`NX$u<>b29*J{?y#8_{|j=Dr_Dc?>ZlVoeN~EHm((~bPiob6+GBoi0`_fD~=e}rtl=Wm;?p9U>M5W;1X!0L$Ne1^G zRW7syS-c;uEG&=*e>MRN=nr)9vdnP?2$1OD_vcx`ACHfF$!-0I-T5j+x7ix0*ndk4 zW(ECtAQaaX7*C(sYN{fK(9M(1E30aP3v z_iT&lA@`_AK;CiU=#6L;A81z1v$q!;SJ4Dyn`0~G3%S^89F5c^s4ryO7ion3l=DSf z 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ࢁ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 literal 0 HcmV?d00001 diff --git a/img/Mapping Between LinkML Schemas10.png b/img/Mapping Between LinkML Schemas10.png new file mode 100644 index 0000000000000000000000000000000000000000..56d3eea3ecda760613297f923aa60ee5d8dccf42 GIT binary patch literal 182340 zcmeFZhgVbEyEdvwQE4hFy@`s55J7qguu&1Iid%X>5JPVPsR6+)pmdPl6$PY3q=zJc zNG}P!grYzQ5NZO15XxQb-}&x2Y&(Yd!OatWMK=qJh@ZOp5_Rpp9Sm(jAF<0ES5G4)Z>b={Mn!kYb18s~q#xL*D~%>CcX z*L4TK@h+wQ=QG#KGynJU$+rCeXHSHdD?5Z#1NZ(!>d>&EM?>Z|;`50*Ld)65b2i8O zrs9VMmh)Q&z+3C9E?a3$2VasQNrr>7fNvQ>o>AgM4?b663U_EkjpK;`4C~5sWi;SQ zhT>eQ)!Z~WdU*p7I>T{r#O@;^65?X`hUZakQVss8uI_}Qaf z;Ks1SoiV@Bv}$nOl(!y{CS7bv*apm^lEdZ`zg-4ZFE#P1ppDjHMu5i^%cC!iT6(M% zYWUE2Mm^O)!GBm)=@zJk8=&RFw8G?V;Bz&}+#{%Y!HuOdkQ3Y;LtE^pSo18+Xka$! zz|umtBQ*{Rs`QhtJL#&j`yB5eLe&E&dLXsS1m)2-ZW}AX^9vaII;pTj&~Iu$*V4*w z+BaugyEvV939L_>(uw5baqsH*9x*S2lUh#TSxW6!XGU_etSL;|A%Y2#ifcubepLia zJ@;t4$Yb)Kg_d~mz9W<$SP*{FDW6VlI))dKl^?pf&efsU+;Xb@k0^Pwx|VA5yx65e zVR8y0xJ{E9)=dPf3^#k~fg|Jv;(;)Y{H0mvvo3>!^I#4LAdm2I8eg?1ygysHiWjQx zVFWDZ+utlmOD)nQqe;21^I4xJO3sFWwbwlyTJ`^Z=(_~}B`pfc<`_BV5kko_-2cL} zG@77sxNMXY^y9Z)UiOjIZsY7>1uX7Ehj1t=IpiF@Th*{T$8RQJJDaFhq)gO$k#DIY z$mX-bO?c$epDL4kupsV%8STRZIVIDsCTv~fXe&O)XJD-9Xs2IgTmff23bn!P)*yTb z?=vI)B1PJ=X12dVH1=9JRhBuYv*&4xicJ#@+@F*AxVKF5_Mbs*qK!iLhjO-6s26;C zsrFm@V@;UkBdZ4@s(E=!Re6W5(3~5qk{e1+j1ZyV&6a*BB{9r>*=KKtiWw_;d)eoC z*K$pnMDnS+?9d}x))tDgdqX#=-NG$Di#gPg+Zw(zlH+?<5yu|bK#&9ea;;SnvlZKq z<~iK0Yg#K4Tl;x@fIaqE@0hDWz}>_T8$SGy2EMouB9OC-dJ74srJp}Dog{}%!)$*s zoKfj0h3tIm_W;svY|W6S;?ny*sFUK1zkQJ%*R;=&K^EjyP43Gy>(}PcoFyltAPcA< zPVWswSoml&Qk8Tc5j0IwSU%fN?7GYDL%NW&Ynw9Kqe)d_MjAx`Hdj%uZt$L&jGURY zkNC)74=2thUf1QbCx)$uzkyW@-#>{<;4VgigUKqSmodJXW0DaJ=gVJQWBZ>s(iutnhDelw>2qT?C9NV|3)l)i;{PY zO2%Nt!CUY9k!_rzd##51#UAw^e`?lo3^;KIf*m?tK15KSN7avrK4Rc@ji;$d08b9=8Q)@km8^71FUm20d+eI3J zJ(8WUTlN%%x;B~P1#yju;dALO{{%&llLLQBlM9o7`hGogx|JQ*_2yW}+4?t-)bR^# z3+CCO>!IYtZ0Y&Q!&RsTeqmWajK+cQUas{$OPkP5Gl%bPWx;Y@qSIUqGJf9srTpT+ zh1~O{b{1-g_H(@TsJjzoxb<)T#E6^)zZM2^`zJIrvc#D1!JtLlO&PxRlN<9LFkJvK z$F%%98rYBZLQn;IchYd*(KSD-eF&CI$?o?y4h!nigZyxsT3m~N(3W=2(n9^3QamVV zqDR4rvfnlzuYut`A3>2{aPtVlPwW&=jm2>S)rb-wLhG@49pb?eqOoDZ&Ypk@5x)Hg z+MmrUV4pzXhWP&(@Exl#ZWOq4QikO}slJB*1YZR^@ShJd+JixpsCw{tFm%$Nn< zp9T4gwgE53J@x8u8u;r%RJZ5MXac``{R@)@EI!NI(8(Wn$^(6?b7?Ix6lTdNN7;38 zNAHaG?_Z34S}~NqHA7beK*!AXn=X8g-TKyooQaiJ+m)QPSgmGtkJ5+;GpjV_KtmI4 z+kbK)+U%9#%n)9DUWABNXZBZ4tcbcK#p|kCUO)~X-@5Q#GmAXNo=`Qv z;DDz+Ro=!LD*ps}46kf5LRN{s|7EV&=O6>{THi8|Q9WJ{)}ZLq8|$ubXQGs?<+dki zz{3i$(LA(^{TFAKTQN0($!ww*+KxKh3`;h-KJu=hN1(-~<7Tiktpi!J2aEkGc%J>7 z)P|1aA^m~#&udn1;|w^vEwn2lBCdr+^hh_BRk=QLGmDa7->YOFS?WEWg`wXyZ)6jN zK=5TfMQq@V!dJ#7$iW=9-_h03w`)>@ORwrrg(H=xpP_!Q(yxa+&d-v)aqM=s$&xiL z_p7F2OJ?@#^SQ#^d#LFKi?GMx4^8qc86Y%8Sq3E&3Id!433P(u=^Q>32Jik#FMasw z0|_A6)|Diqff6CCF06k){$R2SlI;^x8!zi3+|*F2N!1+-D#~sQM+P5R4xIN9{tK-* zrx%4Tr3B4ce|)fA#?Tde1{UqGbvN7v;h{}_$}%P4 zzuVf$_}+nO^+X0UkiqKr>h%lLi(Uszk~bpLHoHR4H) zftb&?(S)Nx0SyX~!_-~*GM6t`i>tK3vgDo$zE zq&h-!{GlWcEftYCdswWoS81y)!%P_UAhxq zz-@43nHYq++iq=Wg4&ApSUq_4`qCAXyAjZ%@+dC>iVEJ&(xH)Y-00ec1cSqmRh)UT z#I@0Frie;|g#0g8)dYa_4TS49Q)#vp8qYut92Zgr1;R$faY_Y^rg zvh|dBe?O(i6v%6tz9#6M&(9`)u`U$vR_8l-r+inIBFBh4w^$u`TY89=5Lije1r1;5UmZKDN_^tOA(cepMYe zy)Rd-AN<_7q|fPmyGn1Uq@6K0kcyl>$mH?GvHO@T6Ja`mYjMko8S#qO5^(1i-#%7N zF#@v+@rk8Gm~kL+CefA9<&wl9>Wfh2v~8?P^>XhVjaBtup47iv&!XO^W0R$jvKId{Uq zdxLLf`Z^Zwt%lC}PcO)|-S1G(wsOq&v>M$U{jQB9LOQ0bA6E=0u?+a!Zwy zm83KLVgjCM(jIK4ksb8kIQ3UL*oSaV=^@~2E;@uOjs_}Y`xa|+(V!VdRSAy`00KT~ zfetRr=9@Z`Bth$4n1XTt(MSeYxcxl2E?e5Z*NLni7rLap%Ae|Ro_www8j;hDUpFB? zUU|tDo03-dU7E^7S6jTH?Q(}~y#O88$*75+Ed*=LO!9rY$%2fAj|NR_WMeo9Yys`Y z{P|0)KEf7gzh3TBFvvduDu&?!-+%Va`HIBd7Y@4km5E1fWmgxv(AAc)klV`v!c{V1 z?t!tyo#KPKxGOd9WA=iTieeq#v@uH&Q!?gY$f)+`M}pOX6WnmEsQBOou^gW#k_k=a z2mBY=e`O1mGxt$)si+wd5$D+8@EYZ{T5|2@$*s%U+AP&Ke`S5Xa`_t*k~K~O!F5rj zkE`2Tz@9IiQH<=rO`Qqa_=D)OO8gC6 znzINHut4`J9c5!8nC00$A>Rj#ZyIOUvGA<~Oouny8Rm_E8y07JoU|ZHmt&maPr;YX zu9>9<<-lw>n6Tjef%w-UlAi>6NcU^J7KoY2e#WoZ)lJ|X@U@z;*MkqHT5DtoMSOum z^^qB_(iN?Gdj-(le$|cDgXd3Jea3E%+F$F>R`}%FP0Ifp^p{)ImD;qSt5dVe>i+Gp z$tA$Js;Qxu?iX^q8*(Sw5N0RZaq6AX%?Au_#X3$cN{7>hC;~j*-rH5a>yT1M41A*Xp`st(4Tew32$dpwXZl%_tz9gS4J7n0L zrCccS4vAFrpsnW0g);b6rDuPRTR1~-=0%P>#ainRz@{@H&sf>&0y(BVTiJ8ApV%}P zdPL>85!`fY<|P&xOBa>8{%vWd%vo&clVd7QVti>0VP;maK6#+sIcWp?Ri2cdHnLYy zoMGK9+7S@LEM417P1Bi*uHm+qi?9sKdp;ioU?o(#$a6^DEBE{?HF-oN22#O#{au>l>E`w8-(>Ivao3$%8^(wuS^9eL7ZGrx_xHr3;wlLR~= zuzkBF!sXW^ zi@qN$Hlo5s&B!X+>}{ikhIO+cK|tU5i5p#2VQ9SuOn|bMJ8`j;+ zrq;fH18q4#c&txUGfI=mOYQs~tF9W(Ont_z&p4To%Iy~U|86kM zTN@VWSIS}LtZ%N?7|~p`d^f*X8fwV7YTEGbO<+T6lco0opf?NnRZ2rSx2Q>V_gl3H z-(Nqn!OrYPL$~S9=&DN6fvc&*C?>ROB-L?5{5vUd!x)Y6NE#@X=XJ5kZ`@&9|2ET; zrXHZmOItIBo&mO7l;z^m*RYS0st;&ZX)-aCAD`szTc}^}F4`}jfodmfU4=1BGe&vu zN40xFpiB3fEI^*Ppld}SJ0q&2;k#qiS(>3Z{1+M3FAzX~B6W8vGv;!zie9rQr@^W4 zcsb`!7Kkjj1voEEtu5PjM4-I=NS6sYz{ii0e{!jni?IE~MTw!;sksi)F3Kz!5xB{2 zjV+k{#`HCUVY>Wh_S^t-ATU5Eoh;-5Z6ebdCsL_G@XQ&48j0dY+6ie2V%5BL0T1?0(M{))DmO^lRUn6AJ z0d(ccza-QR4c&^i@fnqXP%_7S2D#xa?aGS_(8k+UyN6ly^FAIX8-jss;)PvZIEpAA#xX=TI^5q^aw`HeYDL2yitQ_V(9KL01 zwU!-H%+TL+ijM+<(rB-rETX6{&q*olKiEVF+c8pZW|n0c`MrW7vS zSa?8xvgZFmx#gSk?v*8XrpqoZeAQ%rHYRVP-0y+Fqxt%Z@-0;u#x!{>+Bqyyo&|Z1 z`QmUZjx~02%ib`*(KodE=FL_dI>0f^yF&=hLfeP&@;bs&97;-)iM zzR0T$o9PjtIsdH$bj^Rf^J7 zw3zQu-~0VG>x0*kDtSEm*)ELFxa*6eZ#h|QSWF_5f5{y_IivV+e#F#fTDR^a#)#3+ z`cEFPJ4nj@jPsus-K0g2A;T&{uKZ=0E;eEA6%Qaqj!Z}*vo}%Ux6?n1 zJ0FxPT-Lq_wlhas1OPcszE@oXo(jNv2_^J>Cjl-sccwvSi?D*{BA&PIP9il7E%UQx z{FL3~o?W$blx-WuiQCt##}|+$ZcFm$DHI`IT(gR>6E%8?9#wyC!s_!@S03{e2+ofYc7wqtLGe{a$!4&T>B+hp( z%TN!tozz`S7^VS^+LRKK_2~+aGm~f}!{>7Pd^Hm?GNRZ2cNhym4r*(|o_t;K{p!qQ z5m5n^RFb>A^y)A9+_VBvX}dE}GEcjbp9aE{D-;0sa<5(Sb**JJLl-Q&Cv4sNe>lQd zVBObdWNcjBxRz#g(0;|@0WRPxC(NOsem>pBhHg>B@T|K1)EXUy7%g^ni)^=5f!Y-~EL$6g zZ#HHIh3r@JjoAaONB*FKMVRQB>5dU{+~`98Z`JgY#^?3|0SuI0UH5H*)yc_zXPA@zGOGJ2TCs zC2;$wTtus9TvxxN6CW252gTctSTQ4yUG&f7%Ir`AAFP&)?&lQfvPX}qThp!l*J;Z` z=PP2*`A}jAJBxtZv-t>{_NYdXgW5IvNiXw`4~VLy2YNAhBuP^di_>M>k+}@yhVR9e zcW2y>f@FrHtFJuDowowWcNGm6g05bwIsK?l9x$FdvZL4FyIX$a_}^%1VMk>e(44~V z0tqV6ZfrR4g-J=TQ{?7*um6}LMkjsf!805sX30Ky9hOHbM{OW~YMj{OGS9m9Mho7( z(d}MjCDgwCxD7|aoo55aCKaiEY-=C~eTcZr&YtD%3qODrj!6{t?R^S| zCdgJ!Rh6G}JX!3BL8qSuUEW8i6Gm2H(&k&(Z!^;yIcE_tEy{$XCg#{ER!xa>9f&iacHxg1p$OCdVOz>HLR<}#V*_yjI9cGv#_-1+YxQTAn)qKfjD!6H9 z{TGitwq;)bC-VS_c_I`n8Nc^Qq{v?1gs+9$CfEy#=dJ1{?$jmLsV@3|D2VWsGLugW zTR-M=ZcbLL;Y-pt{(G=?@$xCE8?a+?Pi%R+MX~@l?LFrcx?+;IQpS}C-6iO~1%YjWsRc26B@&&q_J_C?vZ%_(hdZDvBR5BtW z!zq@^8F9apwE9%iM!isz3MN-Q&#iu$QL`~?Ws;vod*_W@I+-Csa~z%XgKTynkky3Q z9Vhk_fW?vP&|*Sr0HoOK+fU`UMV$XuvpFG9MoSv@S4ve$b*m}>GW^4RWd^9|jTM{N z#5&;-hSqJ_UZ(+Pv+DMQ4&(1H%TUwBum4lfPn@~<^l=*~q_WD;2Vk{x4T5IjRNqvc z6GR53KXD1SQQKeo3=C9&M3lj`HuTVW=6)l5CqGAq*BZp!92)^9{#QT zDkN9?u`u@)ab-8J35PV_L2f-pWMuaSxMn`eLi>X4%5`5o7p8}t5;%1HL0O8pl=-VQ zy5iX7r6Yj)pVZ}^_U@6&@%>Z+^yC%P$4S?v*76yqPv|O@DLFc* zVU6-e3)8i!k0c)%Cde0oA{fq_gJ zY_5&1Vf??tL7Sjz57ju@o6p&4Zg82_IpHn-dygFDABlmFdr1!&VH6eln%vlvY&M^y zC%s%4>-cgM9La3IJa9`)@XFCBqs@PN#9w#vs5e(WDY&ZrmMX?rRC1xsq6*}!4!RW5$QmTpibrm zu0_99jsa_~0DBq8HWu!(aId_X+k*W74nW7-XBz4(XdAVQ3xb>)2cF{ac2nH|^}r&c z&&9D+TVsd^e>rSYMM0n4=d z_(taeV-P5oIDXEz!#Rhdecoq7>?CuV0abu_QUzk4f9D&{BUgI&TX6Y)0^!hzK#+E! zjF*FOdp>ptvXy_tZsKDDQTWJ0 zb&&Me3TRD`gHwG5Rt`BTK&K-l5h!o2v&*bk4dfL!>erDZmF0VoZcpJ00+~600k?1j8?}YT!#C7uJ6Mm3hx1H|A}mc< zQB>aZ%vXo!Z;{Tu+BzVA!fX)u(H|)u`fZ0A+YcC8)wb2E7W{_a0nJVBVDR5*V}#s4 zGhNH9zmrOGZ1fNdek`}axjZr2+*k9i9N8281wmP5^kewrw!TZ+L0o09}P zGYU5jdU6ZMu464sNM1h$(+F7xs{k~(yz)ZysDH*qduVN-9kt*`*FTAg2+iK>?hTK+vWZBXWW^}1N_Y!w^5w*Bh<7rh{bbz}ant!@| zqdM?)`x>!*)l5&oNRA-n#%?q46Mj$OE?0_BFwm=xECj_ebCbN+zLxduNZP2dF>AGWV6{NLVlU&T*FF7O9f!XqFYuNXVKktU1o>EUXr!6bWO z`uJB<@~~PAw480ZMLyHpCfwF>mNl{6^PP{*0+_h))~l7f3LQb*F?@O+J-8|HiH-}Nr5+(CdD4~rJfhgG}B zn6yD+vf(jh9qO_>kfQ#_BB?umiFpKA4N2A|tx1=2vyvLvvXigfB|03G7M%M5U<@!T z=yH0qW*wmZkYM3nS{xd+;_Y_U!nivA#lJ0oexGe;zoej!n`GpcAZq&D>7}7tcFix| zp~yh@?H4v?X}PxpCV0lIUntLiV`&%ckj$=1^@_w0uZ zTEoTcIGj~_=>YzS#+Hq^O#UJIrO5J#&I7mqTFd8-cQ#Oy-==L|-Zt#Rv*cYMR@;B% zzM#z`J^YH0^%X}-wgSJ)jKS9WS9nsxvwZ$w_M|ib@Z|^Ti}*V}-Qerr zxYS~?5{T!pkzL%|Usc7$0<9CdVG`hCOJ}Wu^7-+p!t!vp$p33CvE1mT2RY}TXtfr5 zWTW`nfA->Uk%?nck(ZX3JDS|I1)fRI^VBN=)0Ko9XIiu0x@qtexSqYL#NxA^yXGY@ zo9{qAgJT~xr!O-jN$iSz(|nlB#3&eXC(#cF^L*Tl5-~#4*Be#w`1aZ{SeK?EHAoWC zsT8up8q=7Y=3vh-?Zd~zhY0O|=@}EC{;F(;uYGQVUoof*Xyd&W87Wo46&BP#x+&(3 z`+Y+fmKM!(l8ATNEL~<@+*nqTGk7E?n~z>nVX}8ZnETDIT~|JR0&NbH*ZrCrt77MV zvVv9%5d~f!$AmxY3)L93CHay=?lWrh%zNt_hn>G|-$d5+o#9Boa~pB5knOGJJQ&3P zR=1uU!d8%!TX*l_n#EAFZEtVoX{ErC!QZP{R$lyi!bUBHDf+UhV?BGW3JBGIV5xQY zm_a3Gp^rUAKI!xI{1Y88apC3%yJ;D$?n5yt;n31Q?aIW13ke=fx1FM7hqY&RdGsqf zc7*rI?+Dv5LPPf6`235shcnMvi4j7b+Vp-(`WO>Ts2cK5IJX2LJ(Suw>zfMQMmaRn zHtg?C2sCMXN`Uyq;uZNXGB(Y9kOcZwJ!WL({h1cbEI_M%#{6ZQZOPzo0+TT%^XqvsscfI7ffFoi!+ybWIBkj0fd6<5ng#j(s6Rh_1^*zBX~In1kZ`F`=S#AEUg+gQS5VaVi#;(4Klol#50odjpd$#Y56OCJ}RUg{482DEcq1!Tz=RnAE2CcVtJOuCsq_$KYT zQ{L{AS8MZ%*efU4gqZyhW!p^xlu|i*fP)V*D*V2o>r(ljS?jCdivx-iuY@C1x`}dg zJ&FGchZ+FM+jRrmGmxa}tAK?7?TX88zaIt$bBAnwFm;WPT4oKrCrTuw*~}>CO`M?h zek9NX5-*(ywBC5#=Iu!8x{K8~J}_+kVQVMVF8WnxL^m$)j_%XGe`kG*P6LWE*NK}A zSor#@r%tKy8Ja2Q94WN`?(3IlM&5AJbk~pD*_)5|11=5fb~_B1!Me*(<&}#Ei%!j~ z;lYNrEsQB}^_Ktf2gY##HGWuHB?ZVLpGrr!XPUesxW&p76^-5^LUu}XU_WAk+<~Za zI~gni@-tn&1pbfqIV5&}-NALj563cPhvze+X0Q;7oNaw#u;Evw4HPAAy?#Ef|Mkh& z{QaNjGK=%APz3g`F|FrQ<>E*4089HmTHny`6E1t;0k`$AGRWR4fRGXglh#f8c%sib z{jYw8iQDRK7b|2l{4>BdXygD-;gj?qBN-)k2nDS!wE`oF0aieKvhp(bActTIC@Kc9 zA-h%m3P5{#Vp`xA2Q%oDP{`h&&q08eY3Yc*;rB@wSWe~%eXg>iQ^)P&1+9T7 z(*Xr^>BWIh7=_fln?MNqVZn$KwV+CmB_QrS7C7N8vM4^lz*Gnjn}m`I&41ni#E`og z4Syo|ReC!1PGrfuN*hhbNBv~CU_ea4yS^QUO>_h2O^jLw_%>2ewHL_MaRXM+>A8Kmhp@~WsO>Kxbvi%lO=nMse?Kf2=4#`lNt83e?Zx36 zffA+aw3s`qeZQ?vfHP$nWwinWL?1b5j}uL`U#cFFA@8l%5%5fcC*mEA=OI^ZXx*kN z%kr}~gBbC=wpcW=6~lJ*uSd32yl7i1#_&RlER9 zaxuH(``lKZTH<||46oq~u#wrX%785c=>Rm@OywGI$YOr7 zS4v~{=Ip7P+yDqR%p9_H7g3-(gG(X?bQzJAZZ~p_&QNNB)a=W=cRlZ|jJNT7QOMFE z(U?!11V|KTD=8t9k!wS8aCM}S9giqx{1*NgSoEklhEv%{r5cbR)sEi-bhCYAs5;3! z$6-Kvg@*bbLqDi4QZG+t)~g}iD95%iA_IC-gOskKoO+kB4uGn;zX!7WXK?}^yU1AH%6Robc#7$h#s%hqg7jg>MnBfqGe2~NVc@KhEF zuYLGexGQHNgqApoG{CnR(M6-NKKn9F?65@?V1ilX=gtJqkj=NyywEe#^D%DGDN21n z57hEKzj`BzYovV%^357J8NhK9cX(3!%|x4tGKAx1F~^aK7S2!~htk7J-W5o&#n_E}d+ z*YwN&hx`B(I52R6PVC?PbXvcnngWcCxLBdAzh1bU`z0;76h}RWwJoP=?+)c1ZI9DF z{I^jchbyLe>N>%-xoLVTXgm0 zHT@FrfG$Dz^H#iLc=P`J1c*;cfYLa#Q?a;Vbj}Bsjk@kXO@h?%T1MLn(z{)kPT+&; zaH0T>D%hAeXf@Q#`4i=aAXZPAG=?UjA(ILRu0*&P|%U1Dc z1Wdl)6G$!=w8su^n&b02;vv!(vpgURRd^ktfR`|LM8jfcpMQ#e_Y?4wprwLHmF131 z{wN1{g`YB@RsGOIgy8J}g)&I59!fLlA315lt9tD6RpTFY{W1l35`Xt@6{~qu^vd7R zV>AMozeshoVvGZrsG_G+Wah9FAG!$Z`rssfToI;o^*|*FP><_D|a4g=k|Gd zA8*<1o(Q483iLE3ZmGJS97s7FI5~yjdb9JzQ{lK2Qo@kO+u-e!cw6M#j4^%<^gCa& zC_}eRZ*lIiZRY^I;$nT5SZ6D5c*)NDt*6+f1k5R68dFENd?6}->NicuWKqA5t0e7X z@QSwZzA-dFxV!fU$9%*h0iPORZ=l|8*DpW)xAljhr0OzL^0|KTfQ#7c)XsEzm|Bx> z?59!$X5V%4Aj1a?{p~l=^prYx%sX0Erp-szBufqcmPZ8i4FDSVttz5ADTqVKMy+vG zn06j3)s#Z1$aEupBJg?Ugzl8uxE(zNcgiGeBs9rr{Tb(OVe06wsRt^c0$nTP*}7$J z3C5dgme%j5KvYYuItVH2c;O1sQz5S?qW-Y!Pyrr)q6r8ijhW#R<*_Mywy}$(^CGu? z1zJ(P*D|hyjvoqFh*P-&Kn}cArjB0$gpfWg3-O;rV2E^RD_pPOAlwQ4kHDN$;0%6m zxCrdKx-rEa{H`7R9W=#NL(yscq$aF?iaX6qxDviAy685HR#p@cZqmx!2tB6fxakOJ zU>_+fRGb;hfadQ`U0zkCDf$YGifPO@yb#JM@O7!}gR-uGR?pC`21xFRjJh$MoiObN zugk2rJoT7!S(2exY@xj4+vsm$e>KL@Zx$gW+95FG2J~f$+(inru52K`<)-#t0&)wZ`R%M7PY)-uIcvlZPa52U85G2FG=@B4Ik!F zB|Z%fn-&NIQ&OAa`bD>gmw#2-M%jrzc%fC0I>vIvc5vuyTuOAzU$+z)ubuxn$+Kn~ zT0FkEbC-(jK%BEEjv~%hyniQ2&rR!~=*>r-cRxbU0V$UJ8$J6MLFx$7{v+719SB~6 zc|3_YpB>~zuLTD4#NWQ)RGy_p-WaS##O(@Yjn7F}f^yfya0Vj&OATV*2h-{X#(R@1 zUcm$OQQS_|CNfyk6>Tb5ON>t=03FpHVDnaT*YMB85pcfYZ@6JM{K5BoplHV>;_PXy zm*IZ^>C};~m=r>lsik0ahmn0{s`MSqs%Ji0vZDTz-$VMB+yPPLW}UY+zGXFsZ3+Q) zAt9EhHF2JC%diW+h8c?O3LR#>=&y~%dTsQuh(p}g=sHWd><*RK!23_~t454%CA_+SGtj0dexV=8JcF z@KH*U4OYd6uZ0;#Xnynq;9!SpBS#DGde3B4bHFRX!3!U|d$ff3ZG2u%aWU3fP-T=h zywGOM-mb$nF7)PFdmQFgz>^ZhrKM|Uv&UGlKC@_E(xZlozfRTMnLnmkmc}NXAu!P{ z?t}ySz~9#9X>PTnH||cDnmY1!`&rQLU@vP8pbYQRuQ%N%&Uz_DfElCc3{g{gTMgx+ zn)q(TaSm)S1hgXAI`{oA6k8{Ly0+pMYkGFY&Ev&O4l<|5P>}mN340p_yMJBmxw4K$ zq4L*x>ugv*m@v1~Ykcmw*0jydTH5j7JZhf`3}FRnb-%XDg=CR8E@jrl_sCtVQgsd2Nm8WXc9!I=u;4iVzV z@FE}}5A)c(@1v$4xc$JxGsH3lAndE^L&>#!YnWLc{9ZHwRxDE_d(pLU{4%RgD9{lo z)v^cPUX)YD86cAUg-SXJzUTW**lv1ax2SMtWPtLOy4XSfyR*V_d-KTcsm_2a^+xm~ zNFcr7^>jjLoom$wiK{k)A{de-V#zU;V6+JFEN^}^!+B)j(Xyu)_j$vNe5k{T#E8h! zKaSbK?u}z97PIfe_f%dMd(BWS8+tR6#mRTtgR(UL zn(2tjeSAZT>clqFFGaCf6tI_}X0CsdzOoUCfv?alF~Xjg!q)F>u!hkD&Ta(F_$Q`Q zMKxFg@U+?AtSKnL-ty>n_@98K9^!Z&3c~K&g*n91g0&i~N57c5%_8CZ>ohPb`!?x< zejN3&aCmF^8;<>TE#q7QrGxS~K!5t)5t^~+e1)m`Lv!_QvSO&HUhc)vWRcf1X?K_t zqWyD<#o8RI*Sci`FAa%-J?`DMk-X2?V9ys4Pb}V;c;D29Trk?&n3`3qYAAo!2%fk^ zbH$h{3591g99`c5;;qlkQ7>R7d5|d$YCRFUG3bBmb7}c-EGnNG6(XKi{s|=%s0$TYTlaB zzTNvTw<~`>a}oFrh+qZKHWyPO_V`~8($WJO1z6u(l?VcIO`Z<>1(TWatW2RBmE5OO zGN$k<+)uZ^|AGD0FG`enZt;1qONz;%Z0~73!B)y?ZvWWf3#zKF{nL3U7vxy4E&e(PU)in0UX3z~|dpD$h+D~B_uQ7gA=$D#RIf9`a@?m9Dv)(UAZ zLJ_J~QSR=KhL&QnEO~*0Z<8DtS>}*>)AY*3E_k-a5LW#P#dnR>hpS8?@AZ&a9YTjc zR+n$8@X!82#3Rh{S=)~e0+L~~>JUeW>>K24|6NWJ*jstPMKM7Z=vpv<)>bkjG&nGAOpWAX%=%K%>aHc*)UF%4Ex7wOsZ402Y&yJ z3`>G{#-QI+woR^IT$T&vt?)rU*LJs!$ekzLYk2O>k+Uu3C*4EVd>m=m(|Qg}Xzvg8_7Txq@d>+nxcn?FaV#zYg( z=1S1j&L;cKNJ?{MT5vkdBvq8fU>>;@@^xw8Ch%(YuC%QgwCS2pi1xSp3)i zWShl=jSjarqPOk&;-okRe%|ZZ@;tt9Hx6qliBm7C_*F?xiX^InONTS&tAr!R%s$;& zG>^gm&b_r0(K5%kEaQ18R3j*QtW0_=Uv>O(k;5?tz)|=_$WiIgcd<}Md zE`)gMvEG5(Z7q0Ss;I)zEv5M%&+}EO&Z3<;b?oOic^JE66YJT*Yh8KeKSI|3#*N`Y zq3Z_k6x_wGK5ZD}@`}?#P9?j)C&gL4;KlQ-+`ED6+v%InzFJviXcPZURL*L-G9zf= zYQxqv)ya=_>~4jI{000ss~06MmaINQo^ee^`JYE|Kyn{4`+(JQ?|lOmSMV>^PjjHN z`E)$A5PDwlj(K$)-pwv`$7_Qa{I1y$BK+)|JyL1(TFO*?Oxm{q_+W=z=V`HD^!Rpb zNdJ*{uATACYetf!q3?Y?k-ugnOng%C2FuF1XA;?!%Oc z^3n4|yo8KdD(UR-J$u1$P!d3}Xb9>h6J^eZ8S#q7Dhj2?WmxZXKpjj}IA~1l zwsZ>~+S}C#_2wQ4H|J%~*=v-!)qLFH0OvZF^rAy9;GjCyOsiPX<05O}IIQf-Qk=Rm znK)=(=18d9txVt>>U=OO?jGfoe&_3fdg$YE(_7p!zdy2$-vG`j+__K$sE~==m40Bf zIhovW_Gi0&t~bcuUF3DKcg=9k8lK}c-e2&MN$K~`AYAO!UJsYZqSr0^W+-q1YkVlN z-2wvP631OX?qcs3)tjPkRfPurL+}-gK;3q-|18debWzu}e}Ebl=~I8}to501x3nya zvMt&GW%YakVf;Y}%A&qG_rrfm*{0VnzTtqu{XNo=!-t4^@xe@pov<7b z5;LV2TB7N956)|a0n+Dmx6UK$R2^6ZJ1JWC!;{GDQQlf z>hBUsVq0IJLX(np>SRx*8mJW5zEb)M=?PrBhu}M}x0Y^{_{wlPu=aBRk9D zja)QU!A5d{V#O5-+R%G=cq6wb-H$TjKGi?WZ3!Hq6SZG?42)CtKDG@L<`pbj-3c6L zfLd264yHcFEN+q7_ufI=K@0YAZo7a-04in=ORR9KW?f+_aB6wJQ2OPE8cnAoITYwj zdwK-3HzMqS*EZPRupmitpwcc=vRta+PY3=PxT^fUdWAix5XdnhDqWsp0a+Jgladrn zmD(>q-IlxUjiIz2h3^lv1y;iTjcY5J(URreauyDFtz5`UA+gKh-|8N zV_>L(_&mvWtUz#YC)`*+OfSOWZxXLOSv`HZ$&;6VDNbw0Vm^CD$IEi7Cq;&g6KfD1 z`s@3himaZ}8^2%)2--=%FA>%^uKifJvMxk^RP_oQ(mXNB6R+$7nk^8gQIlL_GX46{JWlw!V!M ze0ystNI9*;LOefZ=+}F)9ilB*(AnmB8!|9=NO!`IMi2fA#v9o(x9vOQ5k3trP^5sL+aX9o#gY(|fz@?yDi!WAyt zoE?d1y**c$n-A$`tu9c}UQK^SIw#l$y%oZKsjk(7xD(L}1h-oCMtuh(GVNA0rOLEa z+s-gwmB{5~CX)M^?3a7EM^5L_oH9IczL`e{`~je4r@s;7fqz)>v}cB4`sKGu2Hdxp zB$+n-Dg|H)9l<;Yb?waiu~?Vub&Y*Amj0BKI3#{G)ugT2LK2rF{+w5`NmtP1Q5!_0 z9DCYcOyaq*OL9@{MScN2Yw8WwUtbuew_tskHT?%)5|~e?1cPQp35X(Qw$Xx8uKrG9~&=VJN}$^Ho-;H<5zklamMEa zBYkDuo9juR+_XOFO@jxLf~LqZsSXWRR^NKFoL6L|eGQDhNx%ED9%;>tgl*u}P}&ze zp7d$Q=_{{iccgH8>Ww@oTGeBnPw1FkV!f)dTvab_T~Qn!`_>} zLmj^F!!6dbwJ>&3s4Nr8I!Hn#OR4M>O)8H_&y^qiP`5w=I@I1%o#|*t*bKUoS-PdxS=hcLhHG9sPX2BFiND{*2DyP+MjY2stX9_iApzA853q8Qn!jW3c^En(qk^Vp_9%$GXPMNPrR zH>b8njb{#Gw+0He4K+O6ujrZDMg3{tX2T%&Jqdv(oXjK-@w2a)(#v7$L5IT7v~C7n zu^}sV2U`6a^{x?4)_uf0fjrpA3w#NdP}cqC!+0gbk;v-m6sl!E+cea9}4N%M|-hv z;>PWwuA$T4uki))0QcVT+?Z%ddHBwK?0~P26InR&8~~SPOW|E^tHc-hilmk07c4g7ih zdjCWX)hFZ0<9E2Z(d+&vjO*WKYCN9{zkS{k z*>;S{q6^!W#%y>kdzghfq$14isLFf>N1U${aAs4z3PzIer8!z%|Hxw*u=o-iEOZuPyVDivwLWCUDf{`HL36X!BsFcP#KS=h!Dn9y-M?R%d zyUUO=v!h(qc00%Z+vuWF@5F|G$n%D>J%qDo&lDhp2zw2YrsgXodQ}67YL|XS$U9xlv;`KZ;+nRC)UnQo1)~puyrFblU)3-F=eJ?eLOLFYhvg)hQ?7pT%n~fBVr@ z|Bl;oW{EcgwL9%epk;Noq*rRpoxZhZ95vXBCxa_rGyVoyF!#Y#s67J*5tukauc zL7JLI&SzG8zEdrQ$NqOo$N6KPF6Ukr7!sQ6(ak5Wk(l2r{rXOAe|r_7SvC|XwVal& z*SP2))7w3C1upg__#9`;cDQv74^;OhLuEjYvrE^)=a@E!B%@xU?JHb-`gCL6GAarU z`{n2$gr&h0FD%}<;+9o6A(J3IuF(f2^Hb@ki`Rrm)wfg{jX#D}D!wGG-}z%xc`TH> zKid6L$f?PLw>8sV$xWK9>XF9UUF=mk!pZ(y`@S36JzdWKpO_30PO_7{2Cn7f>yHaD zl8lXwI;t+=8=m?S5=}!#G$e!r&kLX@pVd*^zEqXU&9`!ezmCZ3U+jtb&l!yx^J@HK zgWHT1NIFSbb!~m#r(T~9u1bQ%rcI?sf!@CbO-Qf3wa^B6K~Q3XsRcb#e91FK_AcHor8(}8)a>{b5yHOX6d!m z{hP?0E!lk&Dls<~o@JrlY*5CuVw`6i+Mkv-)M=z$YxjFQELOXIAv@?+@Z{8bWmUFg zYIM~*_UDYi?W<3O(+F^+YG0skdXBnRZ4A=-19`8r)TfZq2)4;0!(|*)?tb!Uto(_a~5!;xzWB_$W&Ot>s5&{hcLlLwtu9S|ZmdI8@mx(MqvyC*&Jw~IzIivL%>yjZeQ}2 z!3=f^h|B+oQWkI*98%$v1_gk*G>Zi_451oob$U8oEJotJgOZjYv;@jjgbXSK|D;rDH!X@%Ez22kB#(=u8&byUKNmZq-5ors4C)vM=pV{rqAH}<Zbclq;%Kq%L3$6i_qpZ9EQ^eZ_I!BvhYNBy#2^K*Vyv` z;;F|tXP(;(4$1B7X(1$&JN>ZYZ|@e_HO{nc@GQrk}$V*@m?vPx`aupY67-Jjw|eK0C#&26EB z?A{U)X^DWQpC+v0QL-`{{Pm@@gm+UK3BO<+>I+1Jh(@caO1wW_UVMUFylL^`f7kGct~H%(5dmqcz@f+3xF5KSa4OdYl8D3rlXbk4jzmr2R z?&(k0;FIe(SlzqC4;D2kVmpfmw@H5-Kgu^nmYX}T1dB%0@HqJ7pnkzrEQW6mbUG+r zoBg7Qh?7T{F+w7>{NBkfa{|uBlvbrh$kS?z;OQgTA^MR(=1l^NdRI0fej?voq#u+G zv%PtvX3Ry$x3w$^8U#?^WSlt_L0=6TNaxF)?{=6~RSx5qsB>1HtI32hw9^m{3t$n2q$}r_^t>gQ=;3Mkf|NH81nbRD8?oXFx7p|z7l~lZ>w!z@B z<(lg`CVGXigNQeSE}7>wwxX8bbrVuZf<+3mzQPaD(rFQ_#=Ux&Jn2prGu=NnXjd2{ z?6PBPuLj+KKAq;a<}+i@IR04jtn{rqmb=eKq`HZiI6r&veEj&UuI%S0Qtsi)i78yI zPeO~Qc@EHr-6fAE+*t3~aefwe<@#d$6Bue8_>kE18uW|zkM^8Z?b(@XI2_Yafu?GF z0~wh3jT!OY7{zT9LtU?mSpiTLsFExCVR`NC%VsuzrlbKY45vOSQI+oh7l!M6mN;!l z3l_N8-4p?MyJg@I5S|}#T0;V?Ktg_@v_-^A{E_;6*WL4mvRE`MRi?d#B^+sHQJqdY zo}hpmsK=s&o_-bKJ#~6FBHSRh+|eeK5Vlp)rK1llp+Qc0>VFdfPVm&yUX zmW1uLHRMq3j`{Uxsqc`32Nf4F2tA zD=OXnVtqIRUoS>d``feKud0EK-{2d{Cg+7VTZ%E^d`VBr`PL|#JOaV_Jk-EVnPX`R zJfuS#HD1lWPLI{P*f*|DF(%Ursb#;KynMz7_A;zrA-;8jx`^rb6z@Mtu+KBxY{q15 zW|o-}+9&bOC$r8yJsx^fZIxg{C4^iPo6-;MxYp`+Toi0Ts)oaH%)9FraT2J9ByaT_ zBq`OSb3IH_mVf=*wUGxoI@a`4zr9~e-?c0Ic}PBA9Jsb*yzQjt$NQdnrD;aI8Qz|j zyzDrGrZk0`b9c9xO03=X?!3lcx$x`A#;wP@KKui+rKm@@*YAiSv-N=gDp0j6zAJcR zdb-Bz+=Z=~E3G#9)};Szu6sJ-sBz=vy>);fT|9KOUCJeKPIMXDFgZGRuzEH3?M6D?*3 zjS3wiR08i14o2;ag|wsHp~Bq~u6MBsZ z9(u#%XOWi80nE$SHB7}M&e_$F=|99ZV*P@wTzN0=y{O9P^!?eP^2mv6rrzU0C&R~Kx* zqa2?%?z-=&6B~s7LPq$=97p}Jz}m^7gW>z0aoqSIb420HmkXykaQ4rZEOTmq1Z)m` zD5YQ8+v&HG`2yatVBYes)a5EPvtjidaBeD~@O$_?{1jBGnHm<-1Qq38J(fFtc50cg4WBn`?#4t8*xug)fa6C zLHoD>QQrR-3JZJn!)1AilYT2TMOCJgH%jH{@@RdM*e{h{-hGEd;xEu^UvXl!d}bG? zwne>MUr?<)SJzr+;U^5SO*Qj?qj@`BNyKxR9u&FC1hX-CCAxPvNzL zuYW_z==MzeKZHhYJ+hw#8EKrnpPBs-{5_}#h419Vt=T_zP+Rb+V6(GLCyQi|ItjvEZqvq6q&ekY^3^=9j^!HsLrtQY@WK|Kw+ zq+HB(t8%s}riqA#Hf#=;?_8*X4kwJ8R*!ojg1y$!$L>jrvX@ySF*j0w9@q-6-C6or zyFCBMy#(wx=3b~iovA!l^gVIzr-OnqamX#{;`NBLpd8<=21BE-udb+X3}+okH7``fOX`Zb z*YiZbD198(cYDb_W_cfy9s7zt?uinYe+Ek{n-V#aUY8Gj{P{!=``+W>%LsazXs7zO z{xeij$siGxppZ{5dn5utujq|cnf`!1zmmSQD8Xb` zCqLj0&t&T{%{A+uk#tqLb=7#Nap2xgpHHMMFUjR1FCM1Mx@RfxgO;+#PA9|CO7cK* z=>4H6jJ9JwqS3?c_uPZ{Xz-`36mueZs{2ZVfsT*oWWx=|Sn^M!vm3PJx<}@=4xNbr zl=rq`@$4z4;6{)7#)Mv0C2-4kIB=Y;wqHwe^Y44S0Ve*tZQ83;L3tgRm552*vpqL? zPHdR%skT^UQ`$Bz{aIJ{L(^qf)vu04QrHrn^URTVC}E@HVTC{h_qzVV^>6g)nUF7t zR{OaW5iHSg;T$#^;;Q)~OOC(3ZAj(=X6n_6U*orPYM+iono?qE`xyUyCM4qP2bIt6 z^t*mYru6OL-_?n18_=4WR~1LD;ottd|60iR*1VhkX= z!$xdFU&GdiT}`Z=kd!`CC;F?rf0BBXZw)N8peIl4^8)I; z<~S`@9+bz@vKC`WpX(5#gIQX=xVbmz1m(sZdL9cBolP12z(O`>ZbyPhdmB9WLy~dJ zF2I~hh5+qXtsub62wipCFZG#TWQ$V{`EQQ+;}bPuSv6Mq(HoyHZfpnzPMDc zRv*Bx?Gu&kTbRk<82bjU3(bYHs1B=<^01$Z;VxR;N7)9Z*I6n60H8kugx@J;WEQD! z;PUaM79gNrYW75F659sY6e;FgT9dz{G_oev^V6J0Z71nK%36G^st{!}D}$rXQlsO4TAumad)726yC*crh?%C(E-727Su-s(rZR4c&I z`u0;R{k%rKzxV4hz&L626! zEYbLYbsCKTgbezZ>wv<$uD`Bw^^b7#*ZB^CKcAUcAUmzp>x~)ZU#5!-f-TbAR)B&= zpnQF51rZfs?|#7dZ`k6*uVTgT%qm)#(lNG+FJ9zuJr_P|)R!|I*(aP5(~meGkAR7~ zA!0IoSbjs0uHF)+??(6rpWu4>#hxS!VEV7++1$zW%N}WH`dC?H=;9hEx<>c z+-Mj!s;Z>CHpcG&Zs@;H7W7rSH&gOd*mZZ7avPxcMDj9KVt;Xy*zaJJJ)(w9Upu{Z z4*TN=$4Dz3_KlDZ_KN> z+D_Q0Ch>GF+NLlEB~b|^i(b9`UUA((!?W?vdS{)-^t0=q!B_ou`nju*6r%M|$}dCv zvvY%kt)`buYeuexFUwsB1?Y9yNaH}>^%e5;Foz#O-wzsu%ARd@dz(2>APFL#k9Ek(N3f{n8rp`6x%N~*uK{O#)dCQ&cgUzJWmV+L^+(K+L9LeO z;7&n^*B6S%~~(C{h74K(y2iBgL|Gpbp-Z zp6;3;@>l7N_?f>G0aLn6-b5Jv5**oA=`kk9nEh!a#Ea9qMJ#7n^7|2XHm1V#abW6% z35dI9sKyTjJCq27uu2kHRMK7}GEE~dBw)DXr0ZWm%hMbqx2HX$m(CyA0^MLV>!kh2*{ zew%<9ra)AfJykgHW&9Yt;ksvn_I%M5tv|p*atmMA-2vRipZVd(6cVGp4W`e3;BV^ zM3x+fOapIhN@1`=932#ADFO~D$hkw@WL%7#^xLi{g6S)2wj2~`i$pHN&N@F0EoBhd zb_N+mqQ&)@J~^<%0yCtGY}qPo4^ZVYtYd@6#_l}_hn1Qf#csAgU3z1n@zazE`)Qe# zN^A$(E!XXh4|Iy&dAysTCv=Kv=JLCPHnevA!Ue)+2pB)nDBsUjO%82OAG{IWN}_pr zKA9nl&y?!BItAIArtk{u5e(;P$?Xwn~8VATK z$=5Is!7}FfTeG*%!n9Ag$GU%+3TZz=kHo+E8 zyAUzy!c=32464i=bC_B2FwlTJ^Me>TEK(W~2Co~{qMQ`vo!<^Qo+w)!S2*pIg~&}C zI`vm9S}HUU9&(Qx$53T7qH&W%FdgI10E}%@Y%7 z;CEkb{FLZl^ON>^Cg-nLLFY@{d*gS+d;tH)csD^Aol22Q9@(@F>Z2lM=KEB=M&u*! z`t5}+*l%nTcjKqM&}+`V-)~w2h3*4YXS}pn;>`+J_vVemciS4juc<0?^-k|TJeZ>9 z`E79Nufx<)n67|6HgQSLaiKMd8$Ma^`_-SMp_D=adT>mWzMmyiM|Y5c%l%kq8g zAYixKEUXxX2xyRQ*}CRsnN~G1thl!KX(&dW)cxZEi9=co$k6L%xT3$X@xoUet_;mek*I|?MzvuE2&6S`VXO{ZM z&WN6#OSp4rtbs>x-#X-}Ow&cDuvs(~F6nu_6)7wy6UB)b-dCw>xVP1h9Lrhhb0Y}y z(Y2R10U4y1WflDr zyX^$r*VrX<$4jL*=jZ8c7S`2Y?rX_Dac#th;Cltj;!+>K^oyOk8PHO8JN=!iv-KV^ z+Gq2U1*YO&6w-oy40{ark(1FX&sjwL^^4Rij=%&j`tcUOz`lAfCK?%Zyk~#sMGSwL zUR;a)nY%ZcI&19P)oh*O7R)~q2>aRJ+F0kjVPYygwUK0R;{WS(tzlLY4a837-7U=U zLcz|O49a7*7+mBMB>I@$t={fW_Yk(@t1%jXMiNV$v)o>SG90RgcD-k8z?Bwts8LH_ z8iIYB(-7CP{z(a1zxwUn%55>ccA@fIkKrR$%wdN~Ie@FNL__rba=9Us zm0hy+Y(Yqc8CnGjqNWa8;vYn6uQq!GO^0KqX*%@Zd$i^}-!pmzJ$Y}Mlj9XqGYTPE zGY{wAi9|4LJ-rc_=fuJ;3i4~2M3w7AnV_@rhfKu7(Tg{Yn%DDu{uj}4uEcf_B^ zxyFcPjvwvD8aDiTh5AO2ZW*rfgU9~X-c6-9pn>O92A(sb3-9)2m= z*+pbS3SO(+1@-=&Y?zI_W0 zuY@qK8ooU2iY1>*>n~b@Cp(U*Rp!&XYZM0!%IZZDC+c)%oEq$A$?$xn_Ff$-x*+rE zzhJ_R67KnXx=J-(;LGZj>1*?WO|J~2jUtvcCH;a2L@FYkuA&+AIb?=9vCVclUS$89 zT=1CVVu(1$DA|)?ZdaFfYz2j=g>CMx2KAJAMY0+(0#Y zh8TtU-IelyLx9`xX~z`5X-DiXG%8)e7Fr}ZM^+??F~oQ;Vj3q7sn{3C`V;&R=GgQT6V5-`yf4p|hF zC*)^TO9KsE335Q|`IGBE3@3Vz)7o5^;Sf-Uo*tkdY(RP_1x^nvUuTHn{R~UZ5*K!mj@@uMr={rTW}mt!&x39`Xf(v~H0;c_kC>;D+~3 zB*w3(7q$2&GSYr(K9>&n#7BCKrqSdi*MfMA$^Dm^#$H(3^LJ^QlbVEHF&M{pmKXti zci2^&20QH4E5om%ZXq#ZVn5Ob_GR@lW04FDNh`1hdoTU?H^;&rfIKI85X=(>*NGeB3iJ4nBM4O=+v-6K` z^y>bzlQB;VS9j+W`CxJ;9_`s|s!Cqz&|O++mA+T$HKljXBPK_Tl?2_@0ulMvrq_;g zrEHk1MCZ!PWvnW+<^1m|O+9VbGgJy>y!B2xx_n&D&mf?o>G7bgn^}R%XA7ndk%Vn4 z`R^XgbOOR|#+(z(Q_nVKhP8_Ye0_XmL-|*tq;m@6k9aNL9!$H(QoXTjNa4kC3p0-6 zjl_FS%pbsUvop%SZhYzrY|4hpxN+AD3}v5ryAzU%u7KTg6JJ2t8fdu044p{Kd);UC z8#FZDN0Qmcbof!<;3C^<8*jwDuMXXB2Ln$ShAWMMPo>%(C#JdMAJ8c8Dpcn%&^f2K ziW>$+!fE!C9$ycRcTNdIw8HpS6%)yhCXw)(IFJ9B>)hPzJ;xo-ptFpPP1X93lf@z$ z9Awq))f1lDrMHW6bOw#!T4mPmFsuVe1d)g zJ;IUv66@9|+ggKw;v&q8Blsz&FM|@eO zoj%QD9U2LpUb|ZhrG>kaUPWCGF*&sgIg@=6%SJ?RDYmn;z-^-Q?sX(LT>MpDAgB)% zUhwy9?k#>9Bon2F&=M2$<+n9=L~a5)WwVyQ$YmJ3@g;0nk#TZ6MqWl%KI}n zLbsQ!nOBoOYL_QgmZPP6I>r^1!%B5l0!HS5|NQjv?)Xa_sZ{gGu+e>!k7&1_6ul z$gg`jZxooQ1j`7Z`v-OBB;P1*2)3MRE*dt?@aVFFFx3#-^m?=UgtSAxu0`J3?!CNt zuY?65=k)f2rx-gStsY7Hs}=eEnu%KE)!cB;)+Ha1RG6)MiC4ajAz0Sku^u98n!7ox zI#^&hL%`>_3`fb z6f8W*zR86nBPQ0$9azC%u~&YCXDd43vt#f%_6eAt{jPaw-A+yT!5md*z9c&P?|*4| z@FD1XI=fAsrn^{wioo$usoa39hLRi|4%0{2T<6w{!gi_H2)vwFnf};?t4?yFRHYUn zo>)vGP3N`eX@NNW8MjohLKP~S$4)4RxnZk364gT@mW9XZA!aRuGie#i_jPg6Cy5~x zZP~#lGrxG2=J$9O zZ8*q*+acg2#ZXaE`5paDD{+mo0ebBgMKfZmZJ@%W>ldMz7X5LFl`wkQAR_WVcnn1q zPQ4B-W)%x5w#*zc2Vb9`+n`)wU0`Hp5D+{f0EuLu6NU}JzB@y%MWc=D4jWeCf1c!-h&+8^LtKrJMC9;8?4@}p-6u&C*pK21hU2C zju!W2%;}M*2Pa*pZllc;ckSTqxKLg@e!TJg39J zpvtiU*l=I?vUDe1F+q2I_#Ir3Via!66H{53CKY}=T9S#dWok;Q&Pjr)BZ#+TUXFFd z1pWEui3=+3!@?9X2ezr2tTHq2!1ToZU^V)E^#7W}{_ZeRkPOo#G%nMRrkR^S>=(f( zc#$h}#Nw2&jXF}qzB<3VY5x*gtpqe*rL|-!X3E$;k}j1<_z2juPSdNw=5B#W!~TYR zIFaR(=5G2_)$YpJTy1rQxsNFQ3nB`bb^Zks&f{<6)=Ip_WRW890JUl)ScR%1*w)|Z zB}Tmy)>dGE-Zz@eJyzW^F|+%b=2Z8ys|~#!to8ZYCh&8Vb@eX)N_Bpd0^Rd6!c*Y0 zz}?49Mw;o+JwEBNAY4+3S%_FUt@{foXVkxYP?+W2IR}bb;?b?EuM+BwY7j5>|7GoZ z#YSi(s#bZEp0 zXeW3boOQdu=feFUH@xc2nNLMtz479fv~U~{jk+&>dWJTJ7XSSL)vJ5a7Q=1;M2E+0 z@MWCJTq8Cbn36kJ$qv?cjz@U%Tr<~FpZ49S)XCo%O`(XPjl`31?Qri~%xbE!2!U@b zO&c%C26kbIewu9e8aw(-6jzyKHd)*iGTN3wtLO`DE&pOUM zMMmn60{>ao&fuLJsJfd-u$OV z)2daI0|^P8FXkIl#n{(|dk##Te16iN7G>br+fDoa1*@gss#*)87>z4eB#cImwa-?2 z>I@Mw%|JXgapV!O*{f97XmF95J_}^am<(lxv&9iF<+KE^exrCX*^yeS(=`9)?BKqu z(C?Hs(GTUPkqF=!R>&9)l9NUxBKab#a)agB+@FvrzAdDO0ha|tI! zGa4Pq9f^8m(dlw3pr%S+!+O}-uYR`rv6~3;QgWQ?*Jr`wh3xQDf%oqScX=?|aUory zF<{>{W~<(~(5JIp?W(F2oeEq!>AJB?Z^+C`lUoH4{)Y`nw3WsFQlFD_tn&;vP!0ZeQ}DhD;Lhuy!Z37&mLUo zxIPS5`dOUhc?K8>l+($7yFX>XYxu)0EaWv0P@b}^BCg7NSm&aLmLZ>ea| z%apaZ(RZx54oNw#^e0)r8Z;AEn@9sV#qjxIM)gAM-c!%vh3?faH!%s)m~=3I?A2!# z9vo`4*tM#E&z>iHE?+db@z6k{$zNPAf`C|X`qb+Gyr3X>IFf8dB%##Gw%#^WGvs)Oo@ z+bms9GQ?{37i$PLT;&%#V!m4E@cPmisvgbyAHL11%q{<7ko2V-gK2F?7*317n?IMwWqLK# zsD=pA>{%V@z7BaTEOZ0{dA7P(KZl6UVp2!{A53$@Dfm+%L9_w?^MmeSGD8h zm@xeW=IzG$k3J|Y0|^mM)sg52rgE6A6MzJ!O~%Ky4KRxR>beSO+!q6E0gTlYygLO0 zv(3Trlfq1Wey+(0+xgw%(?RSks_3i(9sY;#pv-C~Ge74s9780b0;p0}(`$@$!7P|O z*2EcC6LCcAz-J&jT3oIi!fO5{!5>TNk>k{iS+oITjj3QC%68fkcz*hTBj~7Gz_(;3 zgBjf&4TwxB5VHU*{$tK;>tGw{)<77gzb+c>pzF zE&xWDfA|n$&l;VDJnG!oD4Po1HcLfx zsSvK3p?)`UDlC*;1p{=p?>YiSXy=;+&}r5q2E1f>x)`fXW{K5Vpj6VRN;>V*NLXtC zVyFs?`#v7|s-soAGQaf~N-A!tmN*L|vu|W5dl+#{ z0ND9AQ$jpBFG2ggs*>pZ+nhVXzAKxlg1%BgbGc;gA3$T!9sc^Yi0_Iftnq>18ZUZb z25zKP(xyn!E49WrX;?_H>S%KWsjw2o;!^RgT|lGBd_AdgveTuv`^8CwXro#wL6tI< z1;zy`Jc|*jukq3P^r1ee^14WN;VuryxSuBWJ@(LxSiU3TYkCvB(lEe^5Cjh-{-i$W zvy^A&ZOK6qs^W4oO%OzS$kj*c91}WxBriK7Eyda9(nL_Vttl@Fhn&O1g+R6UF?>=E zSx;ZZA%Uz?U96S4796%}Qet>8NM;tk_61-QEK(T&A5yQX%VD${)HU{@3DIS79vRK* zX5TIU@AuCsvv}sxTkph!3kU|0zR1)k#i<uGWI`!S zVzv67L%(=Wt4i7SbKS=eh6Z`t4oAE}PI)v7R~Kgck7^cC9Zw;*%0aDQ1>AM%4q|Y& z=g3eG%!eDsu7CX6rK4{YMD!@IBsK@Uazp*;~4q&?MSv&>_xvZHakA-S9s)P30ZctS|XVj1C9 zLBNPd)r1_D3eQAp^WfYnQZBTfY>0d%9YTMsU)-DItUq=I?wgvk4e&azw{!un&lHaN z@Tf=~Yq0T&2bX_3Vp)V{BbkWAI~}+&$iihM^XqNirf1-iz{G^QGouY5+na~Xn{VNj zXMnQv(9XdP3;cWU|{C! zKt(!1x$bv!-<@a)^#;ok;Iavcc)dTX{V7Z|SRqqr{aJ1BFZnU)<$jmcKfM$%lPM#3 zsD5M8KEo;6!%@#_XyFO{;)`}|1ftVS#0hgnE0EqHufQ;2jpDdFlFWqF=UlUy%>$KS zuY8A3d=$8C^1*dh=DY+TMeh}>4jM-P-bQjmws%>VLm21wTd&?fKvFW1a2)=~N{{4y zpRGTS3?5kA#jng!eO_}q=C~ZuEpt};nDf~#dnY%8O9sdt5H9OaexwBA0FLYQcK(lA z;_j(6eu#42?WBV@Q(M{=MBK7eb{&}vzd%=AUTevlvy5b&pab8=(7!4;CScd?I)~pC zVzh(SzFR9W?mh|&wPHFDma#vMAnKc`EieS?SCroP{}1y0lh!xY?$@|T5FZ_?Bx zCaz(d0=K7&T<4ZWeLsa9s3j{y7$slOq&XYL`V;?{^!rRpFpoyyf!w%pBOJ7iGg+50oHKhDE#}=*JNyeve02M7HQeV+3wq(>36iELfHWG) zNiQt9Gr4Z+n3-7q4^S1RKlYR%J2YxG966kJbc2u|J#j%vXZ;3dCnu_ndu9hxt`MIf>2f z6BMgDByVNz5X=veLIxSkUA&#z$oVKQ@KuT7CCBjZfVlf-he5JXTIe<8&z}EqjublA z+~%+o-0uawABSi9kY9a$>U0lTFC%JfHg%*5dgn66=@WEXb)*V(`5e zjtiIbY9GXz_gcmiR{&^L^}3!_c!9c#qRf3X?`6?vXU{NjMkTHjrXye3FJx&*p$kN<>6=ma%|%iK@7nc53Y`o zKigA(F?K?J_cHLjPw5+a(EP;;CvdE3FpED~g;lx1DJ1WN_I|W<__Ai#m5G(-6b$21 zzbP-el8h$5`Jg<#Jpv|s`+=l)pGH01?Rbw8v~kCqQlWKmW)?N3az*RCd*LeYA@10KAcEB3zu_!MiGRuFU|ui^f-*|8r$_GE?Q&!WuOE3t4kTc+BfyHamdLKn}d3}R9BQcAC_=xz7D5;tx2WR&&bK#;IU-sQ`J<71^x)n zUv4@Vd(9qa@^2L>3}+iT`6p?byNq?bU4CmJY#Bh!O7dFd=00tEx-nShM|0uo?GvyV zK}ASCa^xD%Ay?NgrgfJ(=<3HTiI5e)T*W5SUCAKP8Rly}Dd;8i$DD0YhQQi6o1aI7 zb=6AYW}Mnrce)uD%bpqe34>_Sel<&lI;W7smO2fp0gs3Ej*l767 zuqL&+V7d88h*JOz?_n4rXW?~Sc~(fN)Ui5;NU-jwk3g6VT40gA`NY&~N&SK<0}O=L zw^;(5OEAsHqy7i?G&pd0eJ{6N zGmGpUln==}=l}(IKIGcQ#wKc^()L;a>|FNLuv?kiLndtO*}=sfT`k29$P!YEImIjx zB$B3{23G{X+{!D3XPY+h_SIb-$W}PNl2;dJOQacRvz(~6^MDk>mTd|yTK|H47W23h zo48dnq-dbA7Utk&rP&u*sL|;*7WKoAf=zxe<{yUAxqGRp8||NTz_fytAv7qP=RckHR?832dXnWD8ewOtQA`{3oDUfHOj z5);1ogOyep{Hsoi{ec4-=6MF^SEj!m&z?#`-DK!6@~p%T`9dCP1bKcdesb*0dZ?#i zo`P~T+A5(+HM<;7zRTQp={3s{^4fX4*!DPla))+7dc!-fuPFd;nGkgsw(A;FaUZ$V ztgeWq4(CT3{X&@O9u@nZQwW?aO!5Hcc21%5NZM+9%-+3Y^3f@ewgVS`+gEqkbV~gF zP=xrOt>te6Op)1~T zhu<73r?|f7gB+kRb^zzF=CYwyzDjml8fx&mJi+6F*WsY&s!EL|$}1!!$;)9JkL3D6 zw>n!E`ZgiHf1y%V_eb^ZJK7MkI1wp1PbmM;nMXzh@o@=#(BEqJn>Efh)rumsAKy-x za!zgX>bBreu~s-*X=4`~m0j z;3pV+#r?dWd0p2nd2jq2COfyI&$edwfs}|YM)Vz8rwJJ4Vn>;;q zT-F3kjr=Z6e)?72wq}`SP(F)%Cr^y3xoK<^$Dt5?&B=KWvYfC(Mq9rkNn>4%88+2d zlsTPS)32(wFH8I^gnZHWyB9p!<1TH(Q>l~AeIc75H9pY!dk;5YYx&F%Y)+dD8pGrU8Vv zC#wyXyv#PL20N8v6`JZhQ7ofM$t>v5@PCA?O<$TpcDXAfOuL{B9u^JieTRD%NCshD z*!LP&Le!Z0u|aDWo`s&FpyaLlwfcZouE>(G(&{bcPpT@C&c0p3;S?zvNqOSj-B*6S$11C5crFy#UUZEfeWh*;sU7|KQM8ux zh<5#jh9>Jg3hA9{rL9|?$IQ{RcB9}>;a*uOqSFQOOj`QUVmcl^TyG*%T;poAE0DtGn0He(X01b z`awh+-`CJy5=z5BzH_s=i_mq6ru8_t`9koiR(SeYF2lwdvEE8KXI~MRMIofdiKo@B zPW#C1NIwg;T0S5xT=)}H3TTC`X@otoKF(QwZg2c1t z-4q$;@s64?^)_AUnZ-p&&0~rjBJ4rgma->DOcgBv;)`2Nq*mojMGa*{GT%yK<<-v8 zusU#L!6GB4Ocdw)ZrEAj6fFebXP1YuiO@;B&*rzBnM0bXaVfYAND7@*`8bwZK#P_i zZio?wW-K(7a#|@N!tl@g&96N_%e{)gPR2_Jy5jl5Bb9uLn(TpH5vtbxUAnpAV|+iV z%0oIM`^Cq^qEiYv@gTDw*D&?wz75$TxtM!Gu7|lB2RwPU#Bs0Uof2mw=RJ_laAnWB zef3S_PNj|CE-&EeB zNuI^qpOQ-Ow$SmLR52L-lKs?7XVm50-xe3`6P3yA^x{VY3r@Q%MfqJu-k;My2@svG zY(IwLw;QfWPtFu9@)>RTbHJEepOPW&wn=f(Vd$-=?d+(A>Vt6qtmBfR!z`d?YcYxi-6)?8FR)Q#6x6D zEaWyT@3cgpm$~6%rE)P!V!){SQ)dmk)pu+oz0jJMP%Ja6vb}|1@DQWLJvIT~Jhzp*!cje~ra!tS~?-01?HS2I39F1BX*&;g^+hFb4F z-k&ZW!u8RZvvsUBnWVr!(7Oa=xL9Vn)Qb&f>T`LBY%zd^&j|>{f+e?^z$BHgL(I_& z(K2mv@pIwB1wwb%wflxRMV%=q*Xjs2VH^7J_dzRr=UP$QHVxRiQHy&C|F$+anWOb& zKW-{o?F<=q+S0%MuCFYcrn859G(lziwM-`d?6c}lRp1ROD(Jwfjw-fdt^A5pffHD5 zXvXRq&gG77g@;O{JssB8U7AI~#|Cvk08&!0s~#%m$pqhms)mp3zp`)*JQC zpnrIX72;UG;VN2ACmp8*rnH(59e5F|cc5sz=9}reNNn)>>ipH{>s+@UF0$oqn2?Wwub1=aLUrePBp`;o>bMTxThDyn3;)D8?l-GL712rp!5TnblvwKAq6TUB7Ou(2WD#(Y` z%L_B89{@hP={Ke*ITorb;8Dg69$Ex5_B(C7!TYL`fV^|p%L+?8lM0;As#lYZV#nEI z&ANnVf19jFTAzF6l7U~%1HlL~SD_AOw4&?7d?*2mQgpVd9&6=rV)W^D-<1Ms%~9vv zSpA0GaF1h~BC`U)L8+0flSStnF9sN{oo)sNr+1r4vhk>d|EOQ6yU$AL01JY#EI9b+sE%^+2dPByvVM?Tx_H^m(t z0%5t!eS5#6TFzqO+llca{r6Y_901Pd3E@A;-eAob>#EOF-mac4lK}V`{+05ZWGmZH zAZGq$!6(A?J&*+E+LhZo4wY(~JS}cjFTLFvq4NHESUoG#sgIaKt1kM55EN2VE4)UA zB+~-*+A5@ z;nL(qJ9{b3?jjh>-6TeBU5yRnLOESU!*v7GzTuJ$vySPtcb0~1jXnZOBE5qEy6zRV z@N9egG}_)*KZL->GMFGsyaf?j7k|6Hjbf5iTzlcyem!mf!JxG}59puj!W3q#Gv?*e z=w_DBjef7p?}5F?F_ejsp-J)UG9p7bcS4IXZoIo1Z0q~#XUpLX%p6B03aopz`yn3g z76d`Za=F(%Ov{=0_TD-Jya1~8sB zI<%YaH&pn0#c4cc_SKusD}nge@9SF?cg?grHa z;~Es3wi2}v<(J*)k|kPz1n@oQ!U*>9mDjLcFp@s+_L*{sdM} z*;CTN*tGP|N)4ehGXAqxY-M@WwVLz9!Vu7X%=h!?iqXsi>2Vwg{*y)CTrI}b zLlq51Lt-rGrcbeuYLPm|0yIwNX6TYY*TRF8ff9iQ58l251z&GwGI zk{8{8WI7(SxAiFQ6dTEQI{CL*@InJ8S1A44EcH96ywoZx3) zpKsMLua^qQT83q*K_phk$aOw@4 zVDHH7hM|Cr+LpF)JMy-hBf&adCr^nax3ISRr68izc&3E2QcNVJk^t`we;2O!w`-9W z!3sEwas}3=!H3b71*vY#c?BWQY(+yF6gaYW|i3M zM%0aE;?!Ex*$8WrcXbA|Ddl2vj%T)zfM}fKj(^RpYsT)XglN&d+CaOSbxSI`YUI3J z6Wey{)#f(5c%iG&d-zw@nD)&X7!DL#^k~L@r zlGG&{Ii;o--MB5?MO&y9J}bw7>ltJsls^I_k(WT0s;T^qDKmvU`ZqNb?5nxxi}0CAl1F%?AXC zQ2>ji=RD}CdQo&}y1!x^;N-ZpWE+;Y_EAA0FNS2D=ihBe>Lhxb$gRlH%J<-+*V|3%$mkS~_k^Ib=qv=DpE70fps>jeDf9B;Q!mgo|P!Wz`Nw_cPL+0r9=C3KCwZJW#Q zcU=qyOiE`B7Jtx&t=o>$xdgPa(ZRlE8E=fog`XT(>F0&-_9cWPHP0?y6L)kQ=Wd*6 zC1=_F_u{%jB{k(@>M?uwTmOtnPu9~k!1T*;yPrHoHM}wEi=Y8`D=KY%ouJGS$#)wP zIEPa2E&3P|;6QtGB$)J;&_C8&E~a|9`mJmvVO-)@)5CFt2<>%E;n9&$V<*5nK8x>Z zLQ5la(bSx$9LBuxs@QL!L>!W9;JLz+zFeLW-wlQl^udFnm^U7elR9s>Ca9C06$WpF z4JL?Y%vUE)=JaQ4cy>P+2)4sC*lV}_Ft$y;QFag;BUkgM4i37RmUG}#e0DQ%bhrG( zI5{UWi>*}3PrF*a+oMJVE^u<(4ZVyS&AP%HT>ER)?5W;VgLlZOqhD{~cS^2vEi{!s zl{^0GY8L5~Ez)9!M^kOdSTa|UO(fhR3Cn!jd{yPbL-K8Dnh^6kivaI?T$7GOYEGm^ zr?U%(^0*B@9s4G^JXhYp{aZz{9}Gyyj_k&U*IMCNXYgUG zifawbR~K10e;3u&LaX)iQ~8u7!gt7HUB^5J+cvz?l!LNfbE?D+%2ak<{HK{T6R!pW zZULST;PJfkBo3p@R$QCkpn_fFtCzbxTr|m{^!^7aJR07$)kw%h3L(rorsqdHTiAwE zIGfQ>b7~^Yr9QJj@%B;&mD#I%ppy_r|1=o>jdn}!<81U)mPIA78UqVA|F}i3k(=JccrOOq<|4WL0^4ga#gkrkv^Rwf zy!~JUW%)J612=SVy2Z0o1UbXgp6k2!LtOky;Oiaj>?QA66?DAkepp)ghcH7bk9o>w0#$t#lH4fdf(S;fMrX zNJlJW%XR6lc1Xx0%i=LVX=X>}EfJV#Ic%N6JN?~Dtu{&pvf63-$Gj$ShlKfGv)wKn zF3rh*+bpEj;s}(ECUGOJ%Vh2uQ-3K>_YzXp{H_FQOx2` z_Dfs;htmr8D+vuRXV#H>vS%viK~f7e$92?>);?;IFV#&o6DnU`Z*=38e2{h!s%#3z z&;rCPr&bA83gB$&ClqS?rGFJsHHlB*q~&@W|<)~FiC`yJp2G>A8$&6~dR!R3dRHFrZlI9K$<)cD2mJzu{$H#-KlZw4Y{BRFMaye8u?83ZDT;7@+7($1mAdfk zxJXeEdyvzGDR=s^P<0osRZ-auJ+@-?>ldi`XT|fjwstG$MZcn6f|u~fE2pkSOhFn~ z_r>VQ4K+Y6SnuB=`Zsvhn=hV5Jq+N}@AVu^qibT4x4hih!|tTA`c-brB{6HQw<;?4 z)jI29I3Lb=Be;X@h4!fetHSS~6zop*{rX>}pz^iYlnMKvTdizM#H!_tNJVM}y4awR zMLCEQjoOcp^Hcw09_j(QCr8WX&k}AH5o{HeSb!i9>H4jSXbwX04$+$dO=2>2|4J)w z8y6^hf;-7!UGs!A%6{Cd(*L$$m|^GqZxE|E=i5MmLJu<{@gat zI-t^lyY=R%&sUsyv6y$fHZq&xh%>qU(x04E!Ih%}5F6g7(ETcpU!B2tH#Z6Pxw$7x zcnLi)Qh0^G!XUvKFRg1_&jd!bEl+BfNsj;uTaIGrf?O4&av8Ph)xzyNtB_!j9E&pxyF9hzCFM z=9){}Qi&hJNBzF3>s%k6MNIq5DRW)%5o_K311lKCT2CNmuqvasQ^m$juYd zft6U)9{we$JJ`t5JHMHv;ud$;UzuB3*x*9FJh8K$tMo=NB^5Hjz5466m}Q@>R(8_N zQ9P zO}XE;>qK$n$EB47H#ST3chpC1sCk{2(DHtdNEiS^uJ#z0Cp_EcgWg^;arczF{NFBWBrlAwg*OX;TKf}FaTi&t#u+#Pd*s5D-(FT}FJ zdb(X2$K`D8(>yovxz7#K*o7#VXTHSRhtb|t;uBQ9W3HeSe0OgG0uATmgcax#!f%p; z^%Mu>*}6_&+`e*>63&Tmmz`kU7o8iA>uW2`Uu>mc>_J2&5yoolfb$X07|v6c_4+JU zAXFdLFyE)p_lBHwdc-dllSPsmIv~#-oz$RIf}~2(m%)`F<`9muY~9uum+Q3iBwUQM zj$jajV=z~V;&bDjW>rnAc30!wgTEbi4+y?h_Uyf(NVr;@S)rJjcTJ0q^nCeY7AHbe zNt(#>4>YIZ&KE0(XQv!lg26EhG#8Y$q3F*I%%YK>ApZT`cVJa+x95(dmf*Z%#k?cW zT_fo8(WyBS;_5_lzsFB_J;CmG>E?5DncMCt-`+sD4f~VsbzJ=(A4Ql+Oe$8&i@sT$}zNPF`D9HXp z+HhANeY0*R8|A{bz||y{B|gig&-S(btxpi@hdMIDe)X)Ki_RhmIy+zE-BfRRGT_)~ zL}FA4B>y|nR&o&~DtvWgOyFzcEZ5D&N?-nwfVl4A?}hd>-}i0(pV(AJO^prO1`Z~G zx%zlOT0ka}J3Y!#YSBZy-u&DLTnSt@{lF6Rr}EnJ>ecR=0>mL}V_3RbU#iodC|uD; zCeA;WcR3b?mSYfreppA`yr^``mG-ZC<=j>$4za#geF3-?)Tg{DMzcL|}`%N@Z&*jCz>_3O)@*jL>rJj?I2 zJ?7}oWA}t$ei`-*0BGh3bI);id^roXK8mWZNVn@MihfR2zM8B^BD_aku^2IkivELi zq_Pk{T!uqWj{gPBfA~@c#_a`1=9-hwKR4e17@F1t>teTLT3MD;TCzlY6lw7;?V$Yej`Sz z6rh)kvbHyYW}|&^(j*Yi`ZymxWE~9^Y^&WIFa;`le{SXP7r;)ArvOl--1EKu!hjo8 zWHP|5BM1110RTWQ)HVU=G8#&Izg1v7|K5KIKmpr>JcmCTB1J9$P`^BYU$^Ie)%feJqZC|a_Xm=_(Hg($WefYT=QSw zMg0^|MQ{e_{ce%$Bq=oD8es8Uq;dd+_eFHd6C$=I0}s0a0#t^9Q34E>x&dI*fDHLV zbZC>nKt@2@P-xN}km90|J_|WvR3gK=eAnU@^>l{{*&TqWl%6c9`Rdl!3BSS zlLaW-;)y&0;3vo(a89ZW9V}WN`fxQ{AiC8);;4$d8Q?N*d-5o(h41nWpk9}u9&he3 zOa$DdJOF}9b}{{f5WV%$ea?5-h5(TNL;xSo^Q-NY3Oodua-{%!{2Mk4Ib?KvFjago zqgO{E-{mk>oOl3KOrPO@H#XtL0eWv!@IllOTjg69lvJ3ifhM5QTsQ-;)Nb1pe?xLDdbJv0XRf3~ zQ{_-wrP5&s2S98R#`S{Woen4s{^vex$P)vAbW)bnv!_B}hY$fI{i|rUZdV8WYfbUW zFU9SlFAl&XfAwQ61YhyAw)*g2yX~+6h7a_8UiGsJ&jqp_Po58`F@`Gdeq~@@9_0)rU?R!={weY z;g#=yb_Lkg_Hn6Ik59b?qOvLYiLwf6<0Ffdu+j3($(CyZFw-J2uwRim%Rg?;PIQ1r2;9T-3X!hS(NFS*ScJh|uUb9&uwyPyJgK}@ zf>TsDfQv3t^`th|0{}caJFXX~Ul6gl!_C6LwTqM8|R$P zJtDwfOq$PG57B~PLi+UwVmU|E;M`3f`=`0>2avFY+~CFA$J-~aQBD_}{*k!V0&GC8 zEDvJg$$$nmA@e^GvOI0KR{F1?B!La`#lj5nO3djT6oZjxMbRstnTl3KcxG{B0O zd|poFptC$vn#OaX=wi z?Q;bbi3CGf?N~UZz>_Onp{=HrbnOy{#OM+!89sVOOM=w&!*3XaDddlmvnsBpo`7i3 zyWS>DvdsVjB#4D=f68)sj6Ga=o9g8fnzmX;`QFyI_ictM0Vx~7-r+-U^xxGhHKs!o zt^+lZ#~jDnAqP@mW=KVTXT?c}4~18+`dIpJ_Q#NkB1ze{5ehX#&sUPgZPgLU<_EP) zlasGG*&@Uan)#z6d=0Qux2Ti&9B%;CHnuS%P{~zN`Cx<~k+zgu5JCnktdxKZc|z6f z0zWb_;K>ceh&Ij96M;|dzsu?3)*sCP;be@>fsUDb|HBw>>*$qb&4c}40w32- zMCzaJ#!s@IMpM(392nIR|9P>>G~Cw{n!=??uC_(Mm+8c*{YGX}Wm3RTVk780f$^OZ zxRV%ftA8N5wTnRM)Khn^4R1CWwix2=tB;jLpSDDYbJ?ETRBxUT z&1MrfAAWqCika{8Y>dB$0uSih81LB`v}_W$2|&6=S^vkSFu=zev^~)xKy-Qi2dOyT zRkKwh$Qcsb6S09Sl;qHwFC5}P`ezt(i1b}aXxCU>rV`_%7=iiWyF}?U&SitwxOO7u zct4=9nZt(tsf0I!w!hL=K(C|YDcC_BKqGNDF&huU8yAM97@oXKteQBU<)XFlhvKDM zM|%P9eEAc6w=+iPX3jcLv4S+sHo%LPCUHJn#sn1x`KMBrrd`@z+`jf2fI8CHw+iH{ zO0u&+gBZNUl|EYuAVu1`P6-`F7NP&Q5CqZ+PrB#x!=?wFavi|n0|gH|>w}nH0QFBG z$4k|(VBcTy#Bgr6!1_;42AAJuMoj7Hd54F)P{M0(&xtyuRf?3v{U@ zj?`3>AQ#(hs$L~ByO`{Wg-31vo0HOafOQ8GVed+-BmxjF;ia-l@P|UjBd1&gffD?2vsHs)1NQ{pGY8p|@1;w3I z_77|q^e-)p8R9l6t01E0%qD>ZB!e0@s}E0oAcYHepGO2C$Bz$E^8>FM(w24Nj5`QU zl^h@9>vyJ?vX>9b%^!Kz%Ier2Ho_Vb#eh(lx!GG~ zS^PD^{F=aP_)B{RbfU#GFA$52j^2G`5}epfdi4ZCRW2U+^~s{0N?r8wirlNLT}-A9 zbIT^n7YnMQf}Xz`*h{z+(w3(nVGFQ`#|2-&M-+#p0uHIl&Nl*;SM6`x-`+079Qd4j zZ0R$fX^;{v@wOUBabs1wzl&L|It-*tQct!qti=$S5qOZ`T`+fPJdd9k^G+u7AX!3X zwck={e^Qn!^Zzb;{?VY78@DB718CiHSUG z|MgGj*%1!C9Eid!YHcCaL#6BuLc#0^$g7_QCb@OWf1Ee{xH;fM2HZV$M(9Qt5fJD&lAr%PodJpg&kaDp zGn|Vl4FHOM;dlKb0CoAB6fS)Why=H+uTs^*H}ao$dmM3J1OKmh6AYs?fUux442?pm zwGFCg1jzqyoMqUqs1tfVtHl}m>&3Avy|VSxs=+uLIEgP({<$WN{+Tw^U_}HJRW2$^ z81HdN-HtxM?Oh?=RRGp{eiPIMZX4m2dsfpRdC-ONz`3c3#~0Bh;93A1xj<=eiZN#2 zrRT2D!z|~A1Ez~X!OPULs0{NR1S`Y2kEH>MApOm;rT|xw-(K>Sdh|fd?4-|PK6n=` zmzG~qOR8s<%T#u=cWIf}{o1%GASRx0r9OP@I%e*(gW<}fA;4}FTvXNjlhdW%v{CHK_m_Z07Dv!B_^dHs+FLNfT-dJe=#5_n{3!0iHtJDjux)QZN5eAnGmv{OHth;K=!b@onK)f(oz=QIv zNNQ4VHwjl>{LoQB6x`kuknAU4!B8{wt0Zdh!)Mz z8(n}>xsz^m6|6geWNDaSSz?-rHv)|{3;kSHc6&Fl!QxG=5F^ng8Pq>%Ycd4j#!>a$Mfha%GBGa`ziqeYCH-;Fw z833&cWHEEo55xJLe$baT>ic#=eZ=hKcrJ{Cjf={VpHYxe5Vl@gR*b|x%q_oH2;=1L zwZdKXxi~X#GIoU0m9I^QOAzB#CT@dJ7Msny7We3aB~Z z5OrC+3}LAIrzr7CYs7g8W+-6)ur9$)4-6w_tm6TpDbB33aOa75jPN zX!}|3w_s=5B0zT_`p@|T#~2}c2|QF5bj)lm2uFBK{|WVo%!W_K)Oc`#205w`*)Q2U(5(U8_4P>&1IRzu zZvIYx34|LQ{o=3Vcu&$$cj!Z;624KGOE%(kvmzAeuQiSC{2@Lo zFrt`8lX&R=v@5E$1~x%JZA=9#kU%8Fv-C*m97n11Opb&!UYFwm^K0q{gEh ze2Ti@XxU#a?o3;8O0rLgyWoq|BnuG0-J&t=0omej>#u!puMii0xz)AFN_lBL3y9fV zvS{xXEO1l`0gyQBt2oBmRp6PqB`<3jGosWi2;RK(5?G_*&Oc`^v^yLOJoLz!r1p^3 z);e8Ix9)@NLw3T$`ydqOqUACcySxRGl;}1pLtaTdqt69MqSkqFlL#V4drk{4E24!R zT&nu=X(q9XR7naf>?Qu=s#S_>QfWU82)Zp^HRKM_6pTLGx-p8o{;OVL9CDWI`3kqD zpy?ln!?deFb^U)pX65iF6wG0c-DqKxnVrTSRL85F?kRUohz@G79K# z*jIN%DIM&rDT-n*W3N*baFz|5QzURC#M*wH@l``7TT^3hhib^IH zMmom4txQ0&+80h3FvbyvFD;7?P_M_as?y3vd3RWxJYsNRzkPhHXdD6s;{J!9*t*wu9LsFbM_ zLxAtO-uK=9kA{IqBqdWE0^^AFj5>l^1-htbB`lv>>MQ+D?rSMsrfLqXZ2+WKaoc#c zyLDp6gc0?WiXAfqkZ6s>**ezuO!$E;@e0Yh8=c>FY5Bl=RP)gWSCh<>fH(sb?dH7+ z@lsQgEt`Et>{8IarK?!0+$L=$&Fls>1|mvZFfqlN=FQ}Y$>!}|hA0U;8ziT5wF~6I zInsA?>%{N$*mKLWt(q<0hlI?eOU-e8#(x%BWgI}J5?hf+4-zN$Y|NT>oE@1Mra=1l zIRXyu?W$|xlfXPycz%t5Q%icV z!0_Aa9R4ZxwD6W;+o|USZ&SZLo-6kUSHywp4<63D8u zp9N&SU=dOY@f_Wco7wdI^-$BUtzo$gk@Hf#^sgYv;ptvnuvjsa>A0jyMPryupy2d$ zZthffFtet2nkqNy30GX|%B!IDA1$(hGSi75?P|fS;rM(bImb=QD6TZ;ywr3T(t{<|cx(9)$Lv)+Au8^4X8tj)8#3AcGYL3z) zr@SjK60eY4c-njU#U0zK<*z4{X_d9K?E;WP_fV|}mL-{Oz4YtV-{z&}`b-gXI5p4> zU+Tjog2Ot*L7js3p$GH;2_L6$%6oW=Oh<}@aJ05Nd$1iFBCY0uVv0(OnU3)wTFP?9 zZ4p8sS#^7`$y%dFrk8Rj_-Qb4g|W`tB4r*3z7jI2>7cK*(KrTdHk5-Q79{ z7`Zw5Xs_$2$NRrFt@g*J2T)=eV{4DQW$twb`MC1&vr59RE}d1= zfAFC1&bi1iVL?F#_K=1K=4|#x)r@KOMman?O;UC!iK)@s%ca(WvTYhd8LRq+Mptbq z+NR{OvEkf2JdHe!@=Xlrm+vy@y_sEoNXg&g`@rhMn{-oR@bILKnYaA+t>iSDv3p_9 zM(|(?v0})PF=2nDJF@rJT~?%sO$5b%j9o_({KBQjb(-tLRqcCIZ_>VuFC$(n)a!QZO4X}JV#;=DNeTttRbqvWDobIdDI4|tnh?FFMw zQYKIbo~g%bF4OLNo$e2jtI8~{;XT=Y>o>tL;TEqXNO_g>zS|4T>>IOtZK`_RRsXa$ zjVn`U>lZF_3nOB#-BWy)no`;xXQ67bVezc@&Ik1J>kkD-Y*xI;Rd*2E%@4xkI@fmz z&Wzu@w|gjqg2oZQuf7;|$s}oRT@)5TI|KDe1Hy0d9lE|;j8aL}{;s(IT4P8Cikoaa zJUNnj{oVDS62vswZh8xvOoHAh08Q7MV8V@G7RY|jr29#v+@xDj<9NpWY+q<;pw>U+ zZ0&Zztmb0M%vau!4}N`uMvf zxlopBEgrFMSDBglL)2xHQbJdUJLb;fo=D^Q?1)<3hp&&2KbKB>e)qe3{YcRTlbg~< zYLWGhJj;)2`|q`cLKls3BbQfI(xeQO&ogd|c4#^2qZt{*GwR1^GK1c`&fYS&m*<}t zj=4A%^Zpk*-wcmp?rTbg71ySYL73A~y&5DOhPWQXAusA2iElQCmzFeqRV^<-{Ng}V zvf%1dS)|NO#L{$_+<$4d_@4~KEveB|4s1WYcrV$1Wva7~hU?iKdA8xV!?bd4?GJhu z-G{}ORY$Avk^IBDyx^Xn+)|vHLnTUWdo9EgVyC%QIf3W#(J!9NewNh#48jFpQA<+uEprW+^KP+D9wgxF%6%Mm@8p0b=?EH;P2Whv*9{ z{CwE~IxjjSNJMKNtwq{9ii^JA5xuqtl)O*om(d?TYn2IqRC}y0^%CEwv_FnZbAG*& zwc0JaQLznWpEY87v><^cNT7h?+0qKF1bA-S4%*ako+>P{1 zMgH#C2WO`1pZq}nn@8P$|{RZ;)jl!DRMUaTWrf#K-4 z37;uj-0C|MRdEuNs2|Z3`IlI=U%9UzSUd}J8u?IXwV*?}yqvZ9O_QQo)GI!%vtS(a z6vB&A8VL>5j4}G320o?xY@NL(4;B3J)PjRm%w}ag5hXIPv(LXL@Vqk7q5d7s-jn1U zT@G>6HOCCU*biF&n5IZwd=4s*6vxvKd~_FrDfh*t8WwydXc4}*cavJ#m!}m|TbbZr zV$_K$M7Ig-vRQcLKAU=rhEzwL5cOWvPX^+MEAd+H#X$)f|g`| zOgT1@J-6gMtBl#s{Kxo{$?doNx4KrB~F4hjpiD6gZfxqbQgYMIREg%h=}6p=5_CoCNPec*E^?^jLxD?` z<-IHDh^a@5YnkY;Arl7*_Z3a-dQ!H<$B%_rE^1;pl;7oS7x?=g@y|9*c`niavPuh4 z{`A|M_=i2%p|cpv7EE`oM%C_`e!!an`priaiwK;>eO_jcu7+;~QqM~H6%ao9W1KR6fh{Yffs#+O3M+T+;hX{kEj z(vuf9px!4fwQuk5K29l&5Qegi+B8b;@j_*6GgTOC_C3G+^`Ht{Gsst@y^&1f9XkGC zAG$_P?zn$ck7>!KqA{2FWqsO{M?R=vQFlzJ|v67gt1+ZeVouVGrG& zIS~C%A@?fM+lruTRa?o>v)3O6NA>wCMEPVJrkl>5O1LV|{<8CCBK~;9J;b8jRfb4Q zQl>+(!>v zP^y|gIREJt$FW@ioxdQ02LY+0vcopJBPS zDh7P#HNrhU5|JNrSS<{-ZF6e7_g|dXHL-t3+;_^cR1WNS^>fy4jJf)mxRr1qmRJxL zFqjEUNLLazT8imAc~aSS7M+69#XQzYuM*6@1~c_tCZED+?yrr6%qW7UT}qO{y#k-~ zQ6sxfSnTSxpW74hemONHWy>-nI+QwQ%2HSGn^uLz#KUyoc$e&^7nh~?E7IMGVJkf9 zE#`~{=%NtPfZ=5&yooSbvjz=+dn4dbIPkRk&^6*+MD)7;59VXwz}zBk*PUHTnJ7L z3d&czwJ$PbugM%ly=}F2I2kW}rMu$*Z^BTb9h($=7C4I^*f zsx=DKJ<9%RoP+RkHHFY=A=15kM9qFnKUXXHJzi=Ghu^5qZbNAE&d2d83fDYf+w2+* z)M(Y9-L39?EHNKY_GZby0DJwG#O4hR=A-C`tzaJ;NcI10`!+AyFPr(4t0K8?ST$qs z%;ZAaR(01s1ZC@{lSXn+$q!>ev^ir1eDO3=SxJ0hwHz$(gLL0k)Yb^;Y(TuuR?hI* zO%8V);THV%y#Jh3>z|FTS<6n0blA6UM(Zl=t13ahg`KzTUXpgjUFoj5zB1!KjrQ_X z(lAaW@(6fBwdR|6It@%u+|$%n)DPqt5mg2IKBZ{Y;|lwCCJGfc1Q6C{X&{l3&ylD40 z>xJO(J)H+&7a!kzqo^$I(&W$L7gj&I2#M-4yd0JtlA3^%M_u|iuFD-r}yt_tnV|jWHHwc%QYd*eF zEi~$3mry2wad^HOHYI@m8vn=DXLSvSq^=S)MOHC~2L^-RFa{$99r}r1Mw^zebVCIU z#C+PU2E3B+qn^jxe+?8Pe%QuZrk$2%6i+rxr$jpY;d89r^muJk!d5C#`9fYN9q%O( z+|int9~{6X6z4;?{9-2?Q;qj@q=uMzmR=URYZW)9WMTzNhd%zhmnD7mQ)@S7e9!2GB_xaOlR5O>J8^3Ab+^K+*oX9vg{-XX1Lq@%u zefkLvjcDu3d*;u6>$744Pp8zG?4FA5VSfI-k6uHQ`G|n}Wwgt+ubziqYGDEl&V?ko z+s-0%bl*$kQ5)NO>NNCkJ8#W%_!pWlwxG`)oaKWKa4tpPK`bsY{hn>fIZqBW9&u~ZiC#buW#gZ$LC9;N4$*yeK#aPFT zt&%KL)?_Ck%S4v4hRPbozGNxO*vB#qW4q7M=kxvj{@?q4dOx{e_Y}saJMpwbp__)FPB}q^VzOT<>DzAn_t6$u$=&@lAMG)zo5jaFg zlH2Tginky1%TbThCP79zW%34wtwA6>5d;ihjm%iU9@vYQe^AHjjx$*@4 z8NT2Hdabp`Wp|P?&|0u1>X=}neZ)JrXHStBuSA*JV*x#L^TtwKa+onw>VFrJSD~VM zI&JrXHfwp0bDkoMax@9L+kdQAdoGF=zl}nD1~(-I#Q#c(uR4L#qF?pcA%K!fc5++h zwS{iNUzxNTs98E@x(TEz5kP#pI(L9Og7Ky4Qx;da}NmW)hyUk-N7S7ns|ib|P`R zN3QoUTw%e-UarGTwp^`h@8+tYY=s)3e%9@&+w#K<*YD|ng}X=1w|gTmm?wnq%^OFi7W}jfl(vv}o(8#M zW1}KGwMLn>danrhy3VoWvamV|ZuSXF?31Sxh6kEfB@1f?D$VCi>AQ{gdVOgdDhFdi zPO!bpI=N0+sBBwHThskbQ zu^&XC!}VqZT)#G~M%AlBxXL9#=|nMe<@EaWSEisd+5z@3LDE$8whGpHM&%{>jmxqP zKEjI3W^vx_D1fgt>Pn?q->3A=G)7>Cr z9WMB$Pi^>a&mFcq%Z*B=^RzE6SP}x4zjf2@M`Bld@Kk%?KpdTGg*)%j>-KzZmOoZ3 z-?aJXZ$%cf@{XD`cjv#)%5uFxFHo)M+&Mk-TN3U6v%u?K{jd82v4!P%M6HXLNk-74 z&T3Rpdg@JjVT4<(!rRXeN9wF5o9||`C13e%8CT477*lb$a?paqFe|7EYKeio-K-GP zxG-F?3D-OFYxuWmhCAk1j$uomcsrkBEpWi<3 zySUumODH>GC0i1)ifA9dIzHU2IHo<;SoMr{O=TRF(du;Xo^TBZ9R_ zr2MI0#!4repa@jsv5dn+vM7Tx$ZTFnP*=?8oH^JK?Vj2jDXpXRF7Eyv;g-s)82Vmk z`Gl=Gg}e8oe0aKS%o9t;Zp}nmLo8^6aN6p#ckQz-g%jIWcx3o*BMq|tQg4T_cR7<9 z4nfKwb|8jApH8!=zb3A&#Nk!B$OF`t&Y8!+d)!auhp8Mqo@C9c!V`MKr8RrzEt~J0 zVy$I3nv-rA+3(tr3sqNYct$mP$JFU(r#6wMF=zWsvAk{e%r}e=>$k-FH~(%B&Tq`h zesCr~zf8T4h1g>s4tO-HATdFWo;Ey+ZqR6JVSnSA-A!Gr9OE;n9DmdjUU6PO%0Kk2 zCtl`YjQUPbDX}EibFTevg4Pd&Q!ByK1287Z~;})Rd_t-8g&bq}PoA2BPNLx!M1yyj*d7>U~Ly>XS*2jJvWLC71 zhUCt=d0aAI%=!0WxK%Dr*ZAdLBF>v2e8+vjgQ+n*diMJ7&Pv#6;nyBZq^u7&))|R{ zIe9baDQAfpwpc33B$afkBz$Fmc2D9F)X$LR4jH8tYz@pI_v{!c^xm()-DV3AC!2$(;kRAms;$G1mGu=DQNoih6Oj;~AeU(q>!uBq{ zH3{ezVmiTpu38bI7bZWU*hC+w97B9$!YgsF|G`byIju8Cz0xt9vwvp%4^FarSP$b_ z_U1R}@D8JQlq}E1GmW=qq&LH_Ycdh}5@!}9vh;_qJ^LClWk`5qD|FS0VCa2UjCnQ`rr!2bn2 z4-~x2b;duNU!jib=dR(km}zsI2hJF8bz_(WkwPw#@czgt_Oze6sLioEQ=$t)58N`s zZ(FhOLcF-vSMBt8FIyai>&{;Chj7rGT)r#t#v?gf$&iZp74hz?>mT!ECyd$P3(|q# zWK2g^b}LB5$2|RnJ}hkSBc=s)h?VZ)Q}p|J|8xLC5K~;Z6g*OgJYwZ`AvtVDTA>w4 z712Fy7-7`w!ICdy|ImIjQ@=3oL-*L= z+7YX=|7JiOHG?#xEJqny2>Gnc8_WK~r~&OKO0sl`QQ3y05_F zDX7`3Uz7c*)J4vb=F;tVmuW>^!&oUlS2QM1SO?i=rzC3vYQprOS0dNfYqF32xow2`(fz9U>{@?4<=u6=={h~( z_BIr?Q1Xw5cwXJ$M_*}bvZ-|E^aX?@AMtGN`<*t9656undvQ(qu-iTNU`AUA;qYw4 zJ*wmjOPZU0^xkfMQn8`{PlTOgkJ4i&1c%M) zQGy9?%E62f2Alim8Zg_3birA|!b;e{@xG-n$i6j(QPn=D7!?zvhZL3Ng^HPd+hg<$ z{-pgU%1eDg*!~Ax>;l0i_?4&DweRpx=YDoj&wO>@Ik5r?Fja4kW0 zzEXeK(h*bZ{oF78q=<#bbs%X_LvWa&R)ss7i&!l0Jt-T$q(I(zNAw^ zhT?`#%TI&2N_-%@s)+N;vKEZmdH-cF*RR=UK8;lB)@tM5OAWK-xjqX)8O~-hUJXw- z2Ei&G-E|5-ZB$g@8sIAIN2SZe<%MJ)B%XwV(5=q%l<*iUe%Q+{V)9wZ3$Of(_pkVU z+0o%?M(}<3p#epR$_P$AEXLI_?4G(|@Y2<>_(3&5rszRY?vlB{y=x@opPYG#WWg>A zuF~b3S)Ea};MT#onO>|%;X$xb?6zzNf(Ev5q6{Md}D zx1KnFcIztUJsfO8X!dg(l^zX?TsF~+Juf?5uVcqDlF3f|)hnLb!;dfhl5>PPa_p1T z8!-6_?>nrScX#+sV{tbp??|pDks(c3_ew8{(6qPaCPUC6-mB%8KqW1b+8*WJuIB^DM>8;&AZEy~-Ftp6I)x*CTto|6->Xc$vrBzWlzz_e}JUJc)`H9)W}e z^XAKX@r;}=vOi_A=_(u>iE@K~HFT-O3jQ>-S5I?ud=+-(_~S+Yw@*`R@g2xK?DjdK zRd!DC^YhdSMV};d^Wo61gqwDQQhW7^fB`WXINzgmyJNRzH1zWEWvJbIT)Zw2 z$T%qg-jY?ohpBab{MCX?X`{Hf?PG^_KZ5#CeVr%?3^tA%k=(I1cJ9XgMMGPPW71OD zcD^?2N{^R^pqGg2sxw#WjR2j+(+_~tq5Rt~P|)3V@Xr=&Igo?L63rQinvwT2uTg1w|AQ<@1Km2_$li8-``=5*dec{;yB>7*Tm3<8E?!P|Ee&hc;%QM*rqn8wr zYhjSu-k)BMH8Zg~l`&|*(%kLP+Fb+C7PqBT#1lYxOjBqf z3EW#jE4CR+0#~k^0YOeXC~hXVNdNL^rs$=IEC?DeHTz^qK?R=T#9%xJ69aQh#RqqEtHi!*&wBL6@ z@V#1|JHMW^aOANpko!VAw)tC4zBZjp{bp}B`WuN6ObgpUvFKR{?z;% zV87M{#^8h7)&eB9rG6bXa+8EmFW!ue)B&5EIen|h!IdeiGk()Xg|C_c75QrZ5QM8$ zw3_~hK?h4#W-Vc`cd;{nHh~)L#CJV>|2)GBBkLZq3c%z3IT@r0UG5w@vApJZHD9#V zCsA<>qF#$*>^=W;sQWTE24RW6{lg)=nObS5(WvqwX}qL+n(zIOp8MBP{+;UY8@4OZ zt{e>YyFcCC>RK*$>*>z{owB9iHqW9o?Z^XH^D}>{Mkuu0`VhBqw2lgL;b7=}tsNW5 zptF1rTf09iIw^fa$&gQR%AG}4pj#%B)T^yFHyT0si z0|CEeJBTaFvm^02khJpi3X2A)Q8}#8EBKy-_0t`>xgG}+^grc)zgpvcR2PG7z8uuV zoc_^&HGgx0oJ=u(4KxNg*m))z_49+m%(W6^wf!23D7o zgm=%pIzJ;)vXqdEdIJNb$sS(w%$B9(p<%U`q$g~9M`MVvdT&)bT(*Sy-)lkJYZmy z`fMWWXFfWqc80fwlxCC;h+QI4Ll%cxbzHl`9sQ6qbamf3k^L(*6I&(IBr9%a7bQdu zB5(DSO*?NW5wjPLGk_0WjfNfOAKfVdaqr>?4H++AwZ;(kydz zsn@5MA%uC|vl|8wd?O%*SARKl)Q6AGao_->yx1!Q8S-zY^798=1 zIb-;mj!IQ_IEmB${`S!nwbF1alO1Wulv&He2wkta!PD`!h>HPbFo^9-Uu2h8y4NFy zUl%;+iOZzJLOp#QYPI=x$Yrz-XYi` zhBjD3_qdl!m(eMl*7>qKo$6hJm|M+EH25#1O!Zi9C>k`wbpH@^mA`e-;rI@gX|5r zNNu1R&U;3rsiX0H)!6n)R_G=eLxk*eu-a`mcEev^IXm`kYe!yEy~RN%(By?* zq?Wp}wM)&A!!=!#-#PKHpNh*%Z;@=cJZ7%P&LyZf8r-$l6Rrqbk~_)UVeGV3jRtca&9DQ?r5@4z)wDOB5D)f)-<^2b zmLaQrITLmuchbhp^KJzvZOQ&fXu4We6)pXr3-6~Vfmk!u0A=JZk5Ny z-1^+AaEfwzd8fjZ$`ukc#57*Z5b>nJ^0%p^Pa~)xP~JME&aHe|2A7aXb{_=&}c_{~XVeDN;1Iq987KH7bi z&Ekd2&X%d34t4(y>CiQ#I%q=)%CtNYIp{?(m*1}7mdm_LaEA4t+v}H?v5*->Mu+Yr zKt6J`dT@*#%R)VYW?*>?OJ*~n576&crP}(uNPfcPfW;^xk@GX?dy-N{(TWQ7VjDug zuDh@(aW=kUCUh?e=Bu0?O4f`v(j@aU+mV(0*iE^;F5PXZBW|OFH!a!pI zZ>xApmspJ=ZwqZ~&V}mF<7l0|#6|dPHVCo1Ac;jTJr3(j?77*tuJLep>%%wgQ=jl` zIhL06Q@?h;1aE9iddQIGsHU4oGOc?#J-t%I8y6O96e;n$`wZn-q)3Dc6IRZYnkAsY za_Kc=V{Dw71<{+=^!fKmT5R};4biM%#WBoKO#kB??xJ1%Xu4Wu5_x>_b4{F?QxHHI zKVcsi_>=bJ>*Lcwe9|vL#mA`oaG#gv>>pO|ckDqZE_EvoMf2Z7Mv(r<4$4n)f8=7# z1B#@WPv*lD(h5wJPD#-0TLepOWBa%w2QKDTUu_fHS|E6HOxf+$Wxb~`jiO-+Nv=Iq zz_W#l1l^}v#gA6VIlV+IaM=Hh$J=OO*HRehol?B&lV-bFXZ<#U?#g;GjUOTpeed*A z#1~@M0?Q>fetAC1=>~gAzzIig>2t>v5nS&B4{>46+#_Rf&61d|-DjoL;-SM=0T0H@ ztouag9A@*QE|Q)rCxBB6B~v;0zVU592x392L4S#Jf2HkmdPl|??E~_`ozzniF}=Gb z%<+cV@PagYP{g*tPx2zqw4r*vYYUaAxiTs)JrOqDzPgHS7JYJAHKh@GG@<^*edC_JpDflD>WXc)yD9HEPDtg1azxvJn)+XVCqJ zyf?c)=4uIKS;i&5wRFF(k$$2|)fr*Zv*{!!3hPx|S;|Ki5;m9i-7`hwW9PV;$LV6c zR^D!VO?uGgsu5nKMs-A38Gj(~9$JcL+=ht;&q6Nev(VB#?wsR#W8?VZR1I5O>?6Al za`jHt5wQ-n=`3{vuZC-7aVEU8w){XVa3CTssgq`XoF^Y>R)||7v(TfTzn1Viw`?d(zIR_&{s-NS z(IJPQ@l-Z9KHr)^(3YSdTRYmbPh0j2c(b*u(+q3L+kZ7_#U-d=hymz1arM?mnClTs-@^Q-=b0K6suki{Q(YZR`#O_qo zCDyWU<2Ste*OJaTOr<3+X}8J7KfQJ(qcls8?NsUZ@>?1_Pw@~p!7KdzMbXIDFs1NJ z_3qzabaD!u*gZZ2TyffB_subV1y7Mn1qtwH#^K%caM=k zz+kWsf!pUdy+V66p?VB@_ZC=i=td=aOhD;*GO}PYEj5+9)tr!AiuWvxJfU*9T%?7~ z)0nr9tOBS%Qph~5nDuORH%F~vY$oP-xJkgbV)0iTx_5is-YT=->q=E47(%BAYq^af zig`*ch9gTVdlxD*rJA)T86Stq%+;&tqRw(H_}3d}(N{Cw-PsD^6V*YC;+W$rr9T^1 zE*p-^H@%O}znHXT0SqB($$9Dvp4}se>F)hk0!oVQ*t>{m_Qy2DvNxS>Iotep45NfQg?4%bWglS^7^ ze>!VfttAUCK1E$?iR($X=FFll4+=nBU5tm{^eI^0%B)v$o@Meb!sW-*Qt_nU_JkeX zWDp976RSUxf?O#|$RTXnUh>i2%NzZ{DCMeFckDuKPiP^u|mhS_MpQV$Ade26J`mR_{ zp^Zkn4vJ&zTWNO;JuJg|dvtr+sQi)BeDp(&`E3E1C!R7^ z_oEEzpsqJ-8!$^bxC3ts1R*$g{~IFB6uX0Al9Z$JRM#yXgRpCuUK&SqoLHX3l4e89 zg#e~kTxq$lC1HaJF|kh2KeulWs6I!0%Max0B#eeYEW zRe<-hrvE}|&Z>0(evoT-@5@gDrpJoQ4b)bywM9w~#GOW6>~ zzm5yTmF?z7{@fBTZ@l3aD8P0-;geLpr&_4j9ZzxcFoY6vdBvM)4rV_teLqao+YOs7 zp)uD#eXh>Vampg)RvtXOdi~C<`CfLp;n?WSh6}6eT_6fYG~`>t@PxC>@LP+f?iwAF;jJdLJVtqzemcujE6iCroS2=aK|THvU0{`CCXwguB2ewe5g~ zGxo|$+_7}!4NAtMJi_Js6FhYD;VrQDqFS9hP^!ZlT*{DdU#ekA!TKFm&VA|w9qcAn zIs9;3vrB_aOH~BT8-e$B3ryQUJLyGkFBJSQ8IH#c?X!+ACB1tC@g)tsh}+as-&?;> zw@q`bp#aYO{4Iw`6T6jTJOf3YoX@*j{IG$2Ym4li6pL=5RT+nC_93!Bn%_R=0BOFZ zOCP<6bjyav?5m*D1wt4!;o^cx!o*i9D>`1((E&5G@At(WVnk1S1?E{=d>X8eS+1(X zX-vM{)UNc?%TDp_ODN72j&kaBRbok)=S+xONML?2jpN;HQzM)byCGy?m~+1=dV|Kn zkm76aeV#5-Gp@ztK&vuNesXn~{UkP$xJ0gDP&NO?2xWv%tl<0ojWd)uQN5h|gA~zu zDnbS$Chv*7-}V7J*qcFnO%C1I`Tpv3Hu&vAOR8Ms$eNx0+pB%EE}(f+OB=3SrR~+w z8Z-rKUij)o9@;t6swoXLHqQ)yt#T#iRm?Z})=#VJvf3KDr3`gBuQb0t++rwFay zeYJX4GrrrhXg$RZ^X`)tDNSQEi>`3YS+t8OLSy3U2qtVVP#dz6FSf|W!LF=3@;B@E zkRJ!Q$`YbG+A62avdlFmsIvoAHD94|CsJ3vqN7#K_h$^gtlyY*p&7q8{CcC;Mni+I zI_XD$4|8)&?}~6B996&&PvEIeYA2~6+2l+2YdbABbW-iW5&U1Wk`~7lQ;6`?I#1$g z2FoE)nlMyn8@`>kX#Jm9vvahUGLeZs<#0~j|EWZq#-l%k0&DWXZo$dCk`}FC#VfLKs7swka$p%M@k zeWkmO9AfCX{d33T#xBKS7K+p3U3nCl|1I?!J%IE6lz#r9?JJtrpQNgWk(ut*S_h#P zNG>=7!zTndd_8VMUzoTPuDSJuD2i$kc2j~%MXo=1~HYcsuaY%)(u`fCF-RsP(SzkM=-zPnSt+6Xn> zvTpD%_Xe zH?eh=0b!SV)EWWkJ#eFDH0cX1SFSWIGpKN#;m76#^*{d>wW-|Tt<14dcMJ?F(-JyCxIztHi(TXI6XgH+V^W7yz)9YrZg^lggH`Uh zit^wy;Y6pkQ@}Ko0`v9+sq6Hb^1F(tytS_n{$t#ve!uHztkq-Jf4n%+u*`6&Vfs}( zoeBVs7sh?78A#2%a8Vd@KuX8=U$>n=XEc*|@J6!>8aneyNF;;P3;>N(#teBRKbnLp zQJZ#cUgZ!wxtF+vFcnuk&oj7&n0@2Q(xN_}FR-2Kdm}llGhwl8*1XHn3y^CDpfef? zpU?n2HO|TJM=w0GlqLNpYXZ-44>=dOly!@wH)&n){QC8oFeK&ck$Ik`X%%_v z{(sM=Pf}+gvtGoP?-Copno(taUd-c-qlaTlLysq$_y)R8-#CkHE<)DcLPJAMUBo|F z0H@8&=iPT2E5~;Xeg8O%7JwDSXr$^+Cx5d_KkJj1GlY-M34qQwsOtjM_t<9p@4rm< z&W0C@p02BB{*M!ZXaE4A2@PuR07Y^6>;n=<>#p8=V?FEWzqwfn%*ZW8;)ndcKO`F# z!PKu7wQ9Anb1_N>GH{1KtHQQ=3n&hzF64);!fEyt zbIG?p=q2%2k7tq!F=lqRF>&+ulhto26rRaDNmA3P%NPnd7*2CQ)XiQ7`5BtX89hky z?+yAKo?&!TqtD{PIhbxL_E;>>I_!n5)k|*tzH^Gn%p9~9;vf1TA${}ju>;u+GgZPD zQvr~Su8geHr~NebW6{uSGq#qe`_f8+K+ap+*&iVS6{ z;r5`9q&q_$boINkA@rvjQyI8b{}tC9PqkUV7ds8psI>(1i^c2z&l(iSS24IPky#8$r9H*#JWm)MS_Y=Z1syyfWwE-|PTrNyW;lEM=ur{dEMphXFHq{rTW#ii zS#tIcPxXjWy9&j4umM&^Bl=p}7OAG)Hkl(Qaq8yz^Hiod=CvXjVaf+l=1Zmj7)2(% z;G9hQlSd9zQAxkM-pJR-=X8g@UiZwGw_aw~B)Oil;T|Jx%g-A=Yh z-q|r#gxmeN9u?cZZ>n)^&2C7hglDOao&7w!%V?-*+}`?E?-L&<^D>4a<?Jpz0BCDek9q1u}7%p_CoLHV27bha}EL{ z$)?V8BvLsa?1aAvk=kM?0cBC1@Hegnc0E#um&JX{G!mxEN(wSe=_=1 zABTl$(?j_|dWZl7d4R==S~s<7nkAgFn3Q8WW=L}jtM6#LD|H*=W=~@Nh zj{y+MF&{s~SD!G5O_N{x$_vV=3kH&$0Y}9nZ(R@L%$y7Z0YyV@U-Y ziS>hLnjY34=VvI54l#5dISTE`?>0X@)x|v{caWtqGt0a&{>sz6fx2gROCg@Wi+3o8 ztl9t4K=N-=U9_O=Geg9kZRnrffvZ$k+dm`qpn3p7`}V2PRL7<1I)hXh7|}pvDxEkH zf>JZ2mpJPfloXj6KmY!Wh2AUqc3EOZb68a2WwKHJk_|clVr-9a@@(+T8yn zVr0IgDRB6Noo*=s@EQW~4RR`#Pp)mrNMP%tzE&{=gCgms8TMx*GkL#6jJT%(@uocD z&6H+PGr6^Z?7>?Ta^mHxuW8uVa@MC9JbKW0=JqX>RAr7=pxA=zzn-{*QKEJ6Fuz+; zAZjJ@`93f_qIEgAwoH}|>xJ;;u!Xi@;IvV}sH8$o=qXFx_B>(_E`g0k`xG=_z}S^E zm}b^+KdipL{l3SVkIPXlBP%H1iy;+9tI^|5MM>9$L9LyBV7fxsK)CtyLt~NYXQ<{q z!F3cLx#~T}4DwX*`&)~b(o7fvtzW^%NyIU7-JzwAI5p{_EjyL5$^;s!A<3F@bPf^t zU&6Yu&0j>iRw~@DD^yPE<&e)ok$Mrdj0#njfDqOEg5--ScTB1tIm){29T#T!D2L@( z%|rE+ukalDrhK8NB%4=KH4b)GVE z{MJ0#TDh7r6slY`s28G`vT9O&j!rlvM@ffP_tclm!i_B|e~y5W=_faObpww=%F2Y! z=k1tLwwa5-}-yljtg%L3f=wi z-wjLB@qtT;z*B$*JpcUDwMcb$G_U&#rfx9l*@T+d=aP{M1P8_)KI!h5z4wF7{Z~M` zz$(a@{;c30WwS{v_oP;OK^4KC)@LZo&Xjn8vOeHJty+Crx*w&`?Cw` z__-8!MejPK!lM|82$juga&lRf&urJ&g+iH9eHwl|RQs6}wWcRiT59|XCp$Ej>`$e{ z`7!Vm#XNy(k(#=t$}aft$+O5ZK&L7A``te1d^s6t-r+Fed4}qF@)zEdIFIzC#;wke zSN!s#9%!5Ez$kRMNVtMOLd@y3*mBzkc}(Ln@x(yTS|hevG3?RwSIUHEqI;!20tLpAfHm(+L*b_eNpo@l(y`%_yNSDNWAA~#nkeX=M_?6rStt1+wLpzP0}Y;LYcSHttp+r9yrgX+OFVabY~H|B8UNG zJOU1qb63RqF?Ibhw@U|&PYn{q8qGOs?pp@Ho&%_J<$C~iuDI?EqGoWHaM5p8<1#9@ z9s*7e^d}jGb(=lWS+KHMdj?2Y5W~X@8rCRHfoYKr$TL=Fwg6olo6NmMrSnTbo$;HQ#e$*4smTVY4BSNQDG#t9W@Jfi$pJ#td z!o;xUITf&DCd$nmMXSE7(Ji09UYU^m|b_EBV$-)fakyWb+m;IlM$}11OB$CN7mAd)g0@N^8F>j2Im5-XP7u@Sek* z3opvaSKSsr05s9+1&xZ#{`GI6qZgJb#fSPJAXs3)Pv7rPfEX(T3$%Tw8CfDfKuxT= zjxpgyVNxrS1QXc|pLb}zg-nEa)BECrq{vRz4Carw`UOMYL(G~C<;Nc-9r#9AF>k+e z4xGepw&(kdRB>FIB~?kSBVwSG{+Aeyyne>A_zYF2Ib@+)xOUjp+pN&(57%ONq>ygT z9_vCTiyfS-;XUq2Vjm9jnJX1lEOn3sLr@<|ylG+0oj9mPQeJ+oGOtHUvi3u}rPL>? zGbVtqSOqYZT@uCLn%IG3%>eVsM8EWab?e*z+982xZRx^o{|+yaWg}rz+w>kLUv8x7 z2odRh0TVs^9m8u@#nWaYeyvpOLnD>dn_rCzW z|34U5>;DZXb(!=bfH!eAY!$mhkpP_IAJ}|GnwK=nD`ji)U=7NJVJZTfB&N+(hm zKT~%VK=ivfnOrdHbjTfWuOvkFWrU*E+y;0`#Q0_Cf|mX$c-CF9Bs}mj!d1V`F?gT2 ztL1rrxjC_FfAQ1%Ef*3tO)rKKyHgR~bj&<Q_ z{y_qI8odm~*eC%Rp10>O2yE^(X~jY@2S79T`{5*Z?PN8QlJriI1Jt=su~To;CcF!W zB-H%uXsZTditjgAN6tn?{~3>bw|IFE*7IbU0zt zZ+pD8UZ4000>F>9uv9 zH#RTz*7H;Z!2UAn2bK9RLuVo2+U(bIFOBOY&7~962mp~7un5J09<9Yo8XoD)df=ZNL1`mJK4vKDPN@HDzk z4MhX&p^=otwe^JkUp%tT=9az>JIs(ET0UwVa z2YOe??a=@++f5?Ugv0(IlWXM8E2OEJH-q@Tn9(oKl11pUDL8vFxF(-Ga5x#@#p0?HrO{!bAO9|#r{DU~!n^Xen zgvmgF@m2Ewgzb*B#ApAsgawTI)^DawlXwFy`hHE!QdUH}%{?=>FLn|iW(Xej8wqHa z%7f4Q8y(U^o+v=)-Poak>?nIT)J*QrNvB|K3vLDCpP@w7_Kz{ukTBbzYf=M2Lp2lL z`(VrnqA=?9>{@Ck(>tLZU?Kb#W#F9adnC$woNqRLfx}_~{Nqa766ifNO+p`=&B`wq zYMCfp)Q(yr*&Vlb(CUA$vdecrz`B501qTx5=M~p}gclDlhDzBT-3%p9gbyyBMS{C? z@A@tH)m-(;jmj{`x{Em71E;1nk`~XU-Q*jA?+%)|TU2~2he3$c-j^WwE3)cAjivad zx>R2P$V+KB0>;^;vTZ7Dm*o$MmNBg#_=nkS=wKhKG}+3u(GDla?R5Fpdu_5K4@t9w zn3H)72mqc9TVlt8i671Hi?glPT=ox1c;7ordTh<{-?Lq(`pxV-A5IUQq`nA zpSoqPJXTeFt1>KO#+&4V=Qm^cC`50ugcY@O zQ=;kVSUxC(u;-!|YZfXM0O+h6sJL#!E#E6~P}ky~hMp&2NG`CQY;X-kDO9yECUG%J zV7NL|%0}l3k$d)u=!}z|N0j9OK**MVNkpP_X_d&ve`AL-kyoiX)Pf#SiPe(_kSR5H zW2@#Nwc!xse6-9^#)42F^Ea0?rT>2KIlDC1x8xfVde-Cw^+-sta@$b6I z#<2_bH+nbq;~Z3J<25R^Rncze$w@d9mbgL47qw-8cDnDJFIPgGA8SW0)*~R5bSY1* zg3;eNv zsbp{eS$13Iv53IS4xqJ!bM?OK1MZ9MSIz4CH5_*baxyI*qey^swv2H2qpBAx+6a-y z&@li8imkjdN4uN0fyuYAC4lDb!lM(wGuUaIyL2_Kc;}Drqo<#Tz!(wu;@jB3?k%=d z(viV7_G0oTM<3sgxJw9zIE-hXTMUY=HK48)lpE_d$ZwFbvKcd2ufLfZyl)8xQl(U@ zBR^A%Ynkors-TbbFZ~Mhlec~A^JMRC*zh=xqo_1T$6LFX)Dpx%6E=9X*KjmOBYgBB zn>C_qHEWZ|w{=RL{Z_utPHH%yHnH8BCxn0!hi^*EpP{RiZ&I;C*)D(B+4WAGldH9Y zOs&N;ea>lDVO;VjajNt=hMv;4-&AV7o1LIJGwrubJ3n-l2Xl_j#9W_jygGgJbr>f% z*80tX4U+yx;~B9`O37WUN6~%J0FI5&E89yHw!LF{7wZ_d!q(R}C>Gy54Nm$!yCxm; z*$VyX>F1>FpR5Wf`HPg0C+z%<8Q&WlUv6Gk2dxh`O=W+v@&C*aoT{sEbpkYuwjcgm zOXt}O4Xu`e+93hrTxqKoxsqS6kTCz_HRixYg+nS-Gu5aeBUBZ`=3-E3W!3C0M^4pM znvu6wkAKpDV;{s*q&`wYtD8?pxP@L)GA^j_R+iUauw=4Ca&!({f}TC+f9VuO0?}7k z=7-8QYCsOZ7b|S6`L=wK+N0c?PmKH?yJ{6Y`BZ>l*Op2Vf~fdWz2(bfC{#6xxJ8aU z7uNdZptruh-$9jO*WXKJC;&A0!e^sYE z6q7L+`&JU~Dn5cBfV(EM6iDg|N`bj2b@9vNCfqsCv&O0#hDUH~H2A0=w8kGq%^#Yb z&?fIU1_aBM>>obIofFYLav5Z~%DP%LcA@tHX4VDONp0YbXdZ&!-6Y(UuPR;ZT{NxT zA)QqZ{K{+d?A?KLD)$)r+z$GZ9i{#Rf3?C>glTrA$;*DfNtC~A64yqRNMX~LUNTVq z&16EJ62Y}zo`cs%L^9s z+;XQ}<_WT3Ot+r+4Z*!GO$b7_W5T!1UIdwc|XwtKRu4oH`- zSRjz-5$&ydHx3pkjVXszJi@V!ONdu~rscKvW<3jtV@1OL+e2Cxe2S~g~ww)c$$;j!J``~rI}}6!1uC)UA$4-h0EJ`(Ci9M@kp- zO`W8cB=gH|6wdw^0YL*#tyQrLz5H{JD5$2 z1QgB+Js;Vq0V5DV{-*WgY2ILfvk1kt8XxT{AD?WaueyCrbN4vpos)kOC~r<{^&S!4 zO-Sd{pckUKqL#jlg3RWh@9C1Q+}xk~w0y$W0vdR6L-2M_l2wO0Y@Qq|X7oGt=iL6T*iI^#NR@8$G_itpl=SpNf5u979mI zz0ynlz~bB-CT=OpdrjHUqM3o-8*%2RbUFLHMC^)t;ta$6X|Pvw@PyQl_pmIUU!Y$T zV3~;J4XA;&-+}*M7-liUDd-Yqt8ikULQ(bB^KATPe~>84g=w9cgI5UnBsEO3n(au} zwRC;KoTOP%EL{U0TrMNEF&Jm`_{9gKKWF*Zb&^KFQ9Rp>Gl`+!JH-Pk%fa1kdw*ez zj3fUu3S6(2EG=||?{VT`<&n0YI26SzT(e=NbqWDV9y z%m1vyZ5Eg-T$tHH(OQ@32*_&YmbzP(&K$oFa^l8N5sa%mcKMC1wEh@sRyKdn0rag0 z!pXIzWbS*#8^8NHvq1Oz-4AR`h=k~AM-g^b+Xh%9kT>F73T>#)W^o4nG`Er;mc_^` zg`aR8I34RbF}1#-Q?Kz!o0mbR)Sam zbS${N?R|pP#2DH*U!_PqqgQBjPy;ZmCvvsuFuUVBIt_{rEs`-sZV>c@ZTP2o0I>-p z{f66>ThSp$?e4306{l0b+n(f~b-#~$UpmCpqxtIyvROfkHdk3^QYKCZM*kf=hmD>0 z)E8fL>Z%#`ttXmt2JC%={SNFt9{(d`%x7WXs$C2_<1lDvqW@ub#Ia#H0A6E?U8O(9 zQ#oG{IjfF5mK;?>e?1>0mDNJfM!n@zs<*|Wuf7iiW@9jdCm8xzH!|}>S;S92+i~j{ ze-eMcSHVdjw^^NZMuL6S%oAKNtLmHGT@*lKGmCuTW2s{H^bL2zS`JLgv zyu@wQeguAU(?5D`UV4i?{hV#eMhq;QUo-Y{+tjvs|NHxAuE^82>a7(lPft|AQX2Lg=*1EaI9*5{ixzQ(aLU(a#B1|^lJN@_?Wr={s6bKauwV9$4aM zFu>8B$*{>n%dP<{6%QbyIQ$U9i zl3MKh*eu_2(_tsmlemWX>PZ^qoX)k8ew6PB02Uj}G;CBOlG+gPm9Ye;QJQZ4@Ctjn zsrU^>+j_~--D*0&!%~Z8h^)?HgAs@&wh2B12aba;K(t9IW(o8c&STwD>g!@R0QaMk znYFxo62Sdg zHNvgn$}6JwN;-S4RxQOw(Z8&ffq}s>5tn%hGAohgYr|3~)UyJcG`tH0XhX#e4EcXw z!`hEh0j+G6@}K1@z466C;sW5@*V z$*e%fNomHQVB@qne(VfIdHyeYpJ|dAN2#lNA=E%|4RJnsxIX6 z@@xKr&B3Z_k$(i#(pQI+ij6}1U1r&Dcr>E=f z--&rHNhY@#XYk+mRLv^1Jl6kFIr1*UwYheFyUAxM-wI*3!(>*aI&U2kleS#H;gCA^ zq+kv$%jmZqz2L-#L%YG#fk6>iFu8V`OVnM(JX0I6kL-nx zOtedZP%-0TSH#9gpEPO@DjHZ4M>$}j_gxq#0por$rL(QlZGSv~E|D4^i zC5%Wwrd)Px^|h41=E)rPxY&6rZ_8@M{b%XxCM~=!%h4j4>H8)Po*j8eYoszeswnB4 z2%zuVK>XvS&OI94Q7|GBHht7c%U$RNoXx*@?I9B2;C6s);lMsFjUjH24x3v^hGFb( z^)N6v9G1H1N9|x|k4Q0%&f0BHD^vQxQx{vr&G9@6RF6t)KA3xaDn85z=7=AWf0?i4eh>-Vu~?&BQH_-)Jx7O->5S^!Ouq-ueJQ1s>f_x%hlNyOnpnmjPbE*qBB-Z`Wwrwl z5l#p|?OMp&+DKsTyI=wQJsg9-5GXPP=E@pGqbNPE^(sxula@VUVGy<#K$?~3{+qrv z|3QVEhKWwnmBT{c2nR#qx?Qe;j#bcz9cRw2=VR4GzZr&!$57e&8jc@a(rWN1{}F(m z2a)#EkgPp$uJSf1lD$JX{`9nE_9L5R-qkMW-a_-scf9V`fgP=+u)652l_R1PdLY}o zfcb7s1JZ$w)RzC;*_e;p;5oN0$7E&B`u{lVgI#*2;fbKaisO=`@Ok$cHVETg0~4T) zqL#L;?Y=?wWs0Erod!f{tGce-H(K+`#AP0%pzi0_WjDkU#7IhT-RO70pbsUm^B-9} z-4oQGPoqWwCB7w`SM?%nQSbO_$_wvIZEs}94gm)oXWPcKW4$4R296cEo&i**sI*Ki z^!$~N#*f-8Cd!=La$nBpTUg^}<*%85_k#4ypd(2iN-hya#E(WxaWUu1YwGE5-p{{A zr*S8C^_rAHrn9D=f@>|5fzy#Up#uzGpQu&g2JWxGwHv$0 zJHMW%{kqcF%=6VcdEAH7!1SH2b9))>UX$*fQz+Z|+ z33++BgYM_cL{$&glcOT{Q+vtyv1m@}r_Y1{f*=+oV6d14D!V->y&(4G&))5QM!WMS z7nExLP5HY+dCnfBYB!p8Jr*!u?VMh>pB}pyvxlvJ-lXpSv+mH3<6txYF|TUTZlY1{ z1N!Zfv|?A8Z8Rotvo;TPu^84D1zTPU?G~l`f^t1WhXw`c6LT=w#Ggwvi^e3a>p{bQ zf#qqP1kh^1$(7bE0*4WfW-`xf&5YE)ay#(>#_ilp&ED1?JkANYfN1NO#}KTec^>t*{Pyq)k#7dd z%Sxz1ozuqfzOJ!5^dsCnq>KOf*dgN>mlC$hr`S=EtWBxh3+v->Q=j1^%xpC3UBfgM z*JlwwMV0NM8Z21jlM`n?6WKwgYSw2p(`7(U2_|<;j6|vmkPTRu?+XF- zg6bFUTF%qS*+R?N9|I_ee3Pg-Tl#ost$HonU0O_LRLeUz0)X zuHO~(e3k`F=WU>IYA%JaZnY0gQ4vQb;X|=4oSQl}6ucI8`|i2Z)17A8txM%BZAd{> z{}MaRU#0J>dmv>a@OC&X(ofI+-;VWb@D`JW!Oh(?UMY|gIk(IPpLcvUMsZ_VsDK(M z`=1)9>_As6dmn0cN#696mvqleUZrhf%wPR*t|OIm?wJ>&YmQYAxr{jozNmjQ{7Pvv z5KI2GwGjXv8Z@yO`t8;lAY{u&W`laI6 zgGLm`bN}RapLyT^q;r5;c3@L#KtbfC@-%A=X#^{8Yv}OA5_s=KBd4!?!d30AP2c|D zjdU)?Em|679x`YG!kryP>KMITIIj>MOE{Fz%Ih{t4Ek}3FlqHrZ{wHJ*(D@u!eTDH zA);v>cRlI&G*~d|WiG+p3Jb+<5DNPW{uYs*j~g!pBaVW*?A6zx4{5jINkJeXBUqUm zWrTLvzGZCC(?;9)32l4Y>+Og5Cv_4#Peuu!q-{yZ_-YU~Y}VJhUI(wLTDu1ae2((V zWxGkI9TZ2{8wkKcYX1`liFq4fm-gZ1t+>qlHia3tK!pKb*}nrHEQcFIlZp9C&lW`S zfb;egK>O$QvNhm%GIC{jOA4N5@n=4*%`Q+q2TGq0>XL$^sViH;1?29SF`(Q89t;sy zce+dUPGs3SYFc&awqMHjoxOu_Ez81JRIAvZ{RL=@*$7)*@*SV5%5N1OdUW3K z6+F88YbN)4(2fZYjbx*qSer!bjWMQDqfyX+HcXXx1~O2Iy_h!Ia|WIh@KYHUv8S_0jika@d||xBY---Zb;}XUl7(!d z?^`zEZ|Hd;KK`Eo7d;W-l)ZN%x?7CKB1>_;wp_Xg4;B~W)+@>pD0B>oftM#7zxbN4 zemA$b0BH~Y#i(?Kkr+t$`Z?^oJWwm}(Uwxrt*P_S8;qEq+&bEBDF0L+c5GH9u@;mL=1O34;PefiI&AQJT_ zj|xHMQJZO_Sq8yNL|3n}zSk^8dLE~ABmMszHtJv6X#5Re&T;LjqD)-){Q%>NSU_~> zxy0&bI^#G2 zvlH%|2AD5nOoohSe4RK)Te@Rn;DB%W_u0D?AU>;ni%Y3O9h{eTj*ap!SQHF-?+58E zI6ehjQt{opjmqnHDRk5UYQqJM%Lw#fa=c^I0BDaW%QrQoDnyp0xSR}^J6-3R81%Gf zTW?PiJSWU6PgKqyVSHh%836FhrswGw&x9L(Yzm<>Rv-^KPQYk0A`dx5d2eI#zr`f~ z^fi8{xpJN#`%WW0AhEPc*`J1g96iNER^fo%FjXc3^3tzIY z8|fx}CA7afQdZZcgZI(#(eu~HaBjH+6#m_WstjP(MXllvy}=2|BdmCT6h(k~iv_>vq5-#UOpTvUgra@Lx7 zed1?r?)5>?yD>S_qKKTYveLeLd!|!|0D$i?s`i!RbSOk=3*b{BU=H z1oF4SOqz~2GyOT|J{aj1S9$XtKf+HQLm(q>4tC!Fd}xtsxO<}>Zd4P`eJ&O#8uRoQ zTg$#z6@W7{CYxOt*q)qEpHHPJYDL)GU*JwrTeJlFJ>F=4das$!`VbYY}|@Ty!d+@|lE# zumXrkfxh)+uagbs5AZR;7;g`i$X~>JIvies2^dZ>^xcoyDsbPW@^rc1=Q9V7C^0{C6P=h8Q zM}{U?>#s!Ys2bSg{WGaDQ5F!v5!D*cOTI4}Pj8<1!2|(#o(v$6-xz>1V~i*Aq=ih* zeC3UcH+2uA`5dO7+LEp8FUAh}hzT$fuK{h*)=SfvdMb}+NML+?_eNr3 z!rhc=Yvr1sm-mF(^;6zHLUfYD zYWw2J6B!-&UhOwrNA;t={n#B+u19{81r@59d{fE$d0f9-U=SJAIU&=0hHKH2lhazT zfeiAJYhH978O_Mctw&6)+g{J!g0Z@_!%|p3D~rSnNB}tpNwVAx&-mnvvx(lt|}QsUp&_4aanXG>M0dE}NX$!GOc@6rA`Jx%FU6^kjk)_Q4< z+osNC+%ZE4>z0o1LuRSp&CP}6N=2Krkc$N&8s)5KOppWow)p(J5 zJubZJZav6DuNaAt%H_aYMn%tGq-IiNSz(^9+U<7F@e}YZ;o|`fRBWm<#$O2ZysUI3 ztRih?)_rzs5tN5e;1T?>WfBF?MDS)M?vY~$lbEEg&*$t3RLL-4J8)^~y;qbDa~xN( zCRgB0gNfw%#Ql1TLuI0-dszcnFn`i4+O|#>`4y%{|FDYrt(zJ`ZpVfcdsDRGr;~T% zXwB3#v2JJO=jB! zkS0&pW|dG`t>6r!Y!Qdc@w;u*Z)b1Yp!dpRgc-;)jQ${j1xrOD1MJL5;h(i}Tfs-B zw~7yKe2Zt4Y{_*i7={EG21Xf|Kc1a>ARJN!q{ofT`6<8bjk0&-9JD7(s&6uDWmTW} zOwR->qwgA7luw;z^z!&!_B`6N z66EGnDx~64{lQeMZXN@1K*$XfX}faOLYA`HjsM~y(^$!UzH;!wU2Xd8l?}mm%-wcH z77{W|y!YlAc7{d9Egwa3$*}<}A2(ZaJg5 z0d5;7E3(h8#=XFi>tkCIa_(`XFR7vVyu9SW>)&Twu-M7Q1iYGFP?U;(k^VKU@hy63 zn@WdxTmM7g?w`_4hp;fA0^}<-sBEi&zZxxjvd*xhTp|wy#25LjHkpuI?pv<((9sN7gTO~R@k7?YgQ$Z&9newE767$t!Zs~72;DKMmPZs|oz&M$kGk!Cly!6kv9RPCC z+8UEdA$!#+?u)foKf@9&&)b-?h-s~6b8ra`54JOYPTv35_gs{x^S7<9D9bkB%uwr~ zs=KV{C@#zt_X4^R?y3fO(ip)04TtP;FT%=olk0LVKZFCX9kTQJz`M8H1Gb~|JWONv zLAb4#Yia8+XyryXPHf;M5=CphHZZ&VYSexMbCAHBMJ?msud1Ky?vbc}^5@m7o(Jdt z*IP_X647$?|9T5}%+vpG{t)tB^!&G*wKJgAxo!yXKsgt&gUlCc3f}>vxp@26|N360 zkGsFjuakq*=Zhx>~)6AQPl`U3qsJXN~@J-Ah` z#>^XdU=x|LXDlEcEfFaW0hqzHWIP=UmR5ib06a9##hFf&j2V>5*A;i7aWj-%W4tTSrKJfDhEDlGh24|vF)3*om>td#E&T3f$R3K?s|vXWW_m32pDL&2X|_V> zJO6$VndV03y`&Egl%ja)9WhuvA8`D+B$p|OzQS7^AusB(Q0jTA=#z&%pjI+#x`v~E zPAZ>kpryW&jAwveA!yI0CMcN6JrK}V*4S?v#Iu5D3Fym%1*Cp;W^_0Wd%Dz;Pi;aClOj)FDkQ z9DR1w1_N7hV=bXO8BnaALYWWyzrRm9Y`y zOlP%@q(AEZS~l*-uK%=6-4 zu~E8@7|?fiyC@n%017aT70Ju7InOas>g&?;lkZ}eV*|U7mvn*#mSd&CO#oZnx-i|fe+OuYACU~C zmvm`BNjuWhEgk3FwOk>`(V_JHg*al4oNkR*pgbt}sq zXqRvvx&=N});U6g3av8{*yq`U-g_usedhcP3Dh?E+X%ly|9QIGa4O{VyGh0kV7t1F zFx;&a<~5*O+IrY=9(#do(5CT&HUuy(k?ge#VPBo zjB|~#=Fr`DUZTIu#l_blMo%~zvb zh9?l53`<{YPtTz!WK(p`&6Qu2)WgJ=>rov+$KZf=T(&`Ee;->`bA$2~rB5Pp1D-U*Z9}W3=Zjpgivcc7lU#*Ac*_va=3w2f{GB*Mg$G0(p^Z)_OV%`k{Oi(tzX9a&DPqy`GdS%U*{!m?m? zUMzA-*ZX*YR%u6jENex0$E{RxU-!cH)}!IjJnSy9Q-5}6`fe2`*5Dh-iEIiGCrP5@&y5>ldS2#+buI zpOqMiJsWzH!ijzHV>v77zb&vAxY4D)G`MUop;{2eJRAZ@u-%#o(wu}XFJbb%Ob1fu zzpK9lgbck_XKwGVxOnD-u6cs$is<){m!XzV8L(9%nIM&1_PC@Wr8x2+752ECYx{Tz z^lKSMfMi4bt~LSB63UKqEVASb%OuuJycn0J8=_}xFQ`^ckpImIvUd2ey{x%eEGN>= zFQ)+02&x-RoJXnLA17m7LUD3M(4RH)^wb>_$ILcP68Mln%T-U3F9^H}} z>Ho2!j{j*)SNOqUho4$aKE|L=c-ZCF6k^QVqjPa|qoHf{)DeU&hWuh9bj_i=PIq2! zBc@$|x6<`0E`=!9i6GK4`tuFo%uQK%GIsQlV!PjaR(vF-RI&12PcB!FAJEqV`-0Uf z1X+2~ZBH(#(rAjCCeoVl$ntsWnxC-aWaUx+Dv_k}&wai(8^blTg?&d4%*6DG(0PeS zw%i!Bx<}i^3+J&Q1TIXso-4g^iOu&YulN~Hs{>=Kz#Ou@x1`AfxJ0RTJETBCyqwZvt%f8xi7~U z8I-J53B!}LW|YU<#&NGblJEdKL+c_Yu|Bpv&q~LFmmNEYs^QFDt~wa#iIgf9;LUEI zXfAXaXn|?Mj+`a!o7crpB|MDZtDXLR1v)C{_&vt44;Rt3>x#x~RRkpWW74~a?o$fk z1hLScKXj4D{+6{rs~nFLWg5+i)jmaCRT;hLP*Ao1OjwhjNDhCZkwwygu@ZN=$Z1%E zZVH-2=p>2$Lcbxo?TsuKn~kqh|0e-9!nRsjf)Tn=@4%zs!!4#7*Bg=6%c1;jpNVS% zpJiMJ0n(OA%+BeChBKLim_sM%W`X0*ugsIm;Ht!>R zXg)!?(lal;ip4*kgj(@wXOO?7q`^st2<$zXP4k-RovF`j zR8F6mPtDFAF^1ts^kSR+Z#0b8c`+v2DS!y(&o>d2t0SQmD|wN5g1J&VXQ z4@{{3WrlcGtRsfJDNlGiw_`H7k>$?9JnNw+xtv!J%&`CKZ2;iLx$|ZH1}65kLiRk6 z?C-{M3_F@t?g~c|+}&>8J~t^dDhwzb#;+*;JA$g(Wp^)s{`<8%gq`@1!%3#HEJ{xC zF@Cr%aa!Os`xi3a zFy@#??`s=97JT|o!=H&s;$t=F+x(?77V9$AwkFzEt9cQfws*ahGxQ;|PWz_^?rvS* z7xK54=yc~~N>kl@{@m-^XlC5q0|CilXO%Xk45dfYds;TGO>VLknbD3=C8>#L!LBhQ zZTO+Afy?2vhsKVM1=0SXt4*LYwvH^exjPvrAux+?e$5rrMX0-D#4`p1$MB?&jJT2& z-@-`F%b_XUe)T>ulE$F-1AK07?v?S(wCGAR+RYQ=EE8eMf~Z8u!#xuqc!;FRp_w)s zG$*~n6Y74e&?72+Bv)=rzbfLdp6uNS{`iu)RcQS<$I%ogiiN+F>x$C*2X#-V8tyF4 z;H7Ub8>jc-gN{O+SwC_lJMWTr@hF8-MvoRxv-hye#|h_XAG7$IXDD}O0i>tK@i|O} z*9XMzmztL33?h=cGOMCSokNyc2lOH@bT1R;r*L|%J@s&zUJ!8vzu+PlwjR}Qj=hLl zHBV4mzu{WO1Cak^oaJE=Gl-r(JNX^n(%?mg#oaM$pW(ni!tS(puYom0o^tpG-OY= z2S-nA_nEsn8Mka+{)Tv&*~d?&THXD{rY!WwDeGml<}Nkqp=I&dTGF{X|6a?=3?|pL zgJ%v+X(Z6538tu^Lkn3(Pyx=Y7SaZE82W5jgrIbu_PCw(KNofjtGr@E1C3o3!LUN* z`pHiX6Wsl`8%m6CVY&IHU?=28UaaS)$IsDUVL?V|J4fC*wC>GwFU#Y|sq3X~PCrT-*Tpu|cEqw*vUA)uC>9QuAR) z+UOYJ_q*%#I2*An?x~Mw{NcP#D0R^Mij6Jw(I-%gaG2Yr4PdCQ;glspTa`+*dZK$| z(B+6o)^h=)s77Kl{=E)j>EB<~b)=(sY`$_m7S!zR=h2!DaoUnz3riMj++nUXdLX?t z6)TbJH*5fsSFGSLwRtjcb*n>(Ld~PvxMFmp=&!D6nnr9v-# zW+Tu*OL=%mnA*`qUELT3dZ{qT-ijLXVR8*l%F+HA-aWPMj>dm4FvXE_Og@X>**y)M zLM=P)4@B7OAb^LHW#k5UKBIQIvqVXX&ZRF(6lqo2$y49p4BNT>II*sSBLWl((J8lZ zFjj*pyGx$#2hipb5(rf#@3`^WE+V*H^1h>C{*@9C?OPJ3L>beBX=4md@SgH*iRC{J znsmxdJV|kXOY7*A%v32^?R+MjLs!YZW=+tH`8b-(^ugV!d9Q6v1nQVozT@ROKV*rT zp}aCFiN8R{u#4)_o$g-mLnsyCxeFZ`xPd{_SXT@3UHlosI!{9#$)THBEKXpl+A?^? zfM*8y>tYB7<#jsakKG5mwcn%_H_G^V9jZVPsH_@Q>97}g9TEw`8B|VA>jlXTE*eEm z8Llx;uAbYN;fI&VFNif65?YWn^WfZm7If%N3z^6nnPkzXAX%HTSdX0%sw{&u#9GSp z)C;rIm5uCS94Q|Pq)|ZgYL}j~Wjwv(ZhHEt<=Vj!erA3pkEFIpmgvfIm!vcv3tWj) zrfltE-mNTOk`OMCu4S~(=T{P)1D3d}`r>dRXY-{Azp&RMBC!u3-l8U+B^Sy z!_B$cQO;{dA9LaX)c!=%)Oa!9OEQ1FlOm_7ySbw8zuX{wFG+ag8@PhkN1Y4P*4jnkWTS?%GI$H9e4MX)X3~ZjPiv}pw&iA+At*|&d z94q-0J&d}iv!sajj=fnj{Ia)Q!75(P%U}39{FrW);uv|c99wQEl8^%_A=xhRKj70J zNF>Kj;E+RWJ#4;^j17PdIP>oopXzc(=d|-XyxNG_Wes@gWFvn0SY{rdAspOW9s652 zCyjWl3mN4jrW4MqlC7cZ@U{qtl14)NEXc#oKz~q5Q!*IH`ONQj=*s`KBqoJ~PvbN= z-hE=}iEv1R&%ROmV_@vO0&i*WXQrL$tdXQJxg%1jgs1)!t_smSX;;MGgvBbzp6G~a z+b{yQwMX|!i07eG()@9OTdVBL-lWLUKv4onH%}!~pd_&-!GMWja)M~M4F51x&Z}gE ztDBGok9;cD1GNk_PR)xS=_p&3Te~$+=m+3nZBh3PI1@N&8fZGsq73X2CQ4All?S{X zP-m#t87tF_6&j;{Lf=skvbU2*7iXK{o@;5IJdc!fux==eFmsd>0pUblMu3LtRlv2M zO>zm%if|^nKUY@a!(>T9#k;8$gvX-IjZUmv|D2IAgi_%@Hk37ug*Ry6cc6Y z49ZbXEppYt5U=i@HJUunW%1x{DirW4xotD+$FS&0jkB{e?RF$!ET^MF+McALk_u4a zNW={#^m4=Ik^xOPw))==*uFN%pBDXYR80Mw>PF0bK`$@1U?s7Ij=cN;?GpY^SAn96 zGC1M(*{EdQ(;@7as{fZqAroo7WY!`T?sKVjn{li!?c`86B&_oOsr=i}Ga_BLq8r)C zyzlUJS*gLl%{jgqD3?SctM#JO>T>8dge#c>(n%)A*X$o54CX|M9)whz-gfZ@xUi^$ zrl2Led07p@;q9+==xmt5I+U_ZD9M~xnH8BlX8uupAEi#mwKx&PW;UQm1s#IJP$eG0 zX&;{nc7Jq7wn76`008)yG7fjIM)`0a9+ETY*k-?TiF2E@Q;b$Ph$!^BvXLi;?ng<8 z=DCrNU9by(!RWXZw3i8RJ-?L^x>JfZna`mmF7osUIsT4|HIxI0e!e+VM;*tp#R#-AI2ow-JrXehirrIvKg0@B96Zc~oJ}=m8IJu)*4t;=Aot`jK(h8^R=Ep_17?5e z9s;8sd2iHxR_saFb0>+#vgAXZ!jNq%X_gOni1}u8^qf@6Q7+^R3Gg$X^T1)Q z&F$mB9oS91*iZl;QVj-(g|-|-a$2|Ej(hlG8D-aBj45_5q}g7$HeWO4Z|1!R3Ld%M z4(s8sak|9_jpr7YA_5Y(IU;pyDh&}Q7}Fw%eU`|v9j7Irjy%Ui5Y!qa0^E{3O9K%t zSoS)`1YKH0pL;$OoAbY1cL6UczA1CtdIXgBm9xLcnG^|S5d+yqIA}H$6?d#&{dRtc zKN}0Awy(TBaWQ=iKLVTY3JNh)QbWI?$nl#6({_1n)jxmO6aD-})AJ2RtyZn|P_=(b zsi-_sjbv}>V^H*cx&>DPD*G}rs_%>JCHLO4Xh(!U_0hudagz!uaGx}Fqo+YT7!({a z#Erd-Qm|*2iE3W>fNurBfCNn0m6ef;Q}tFoON&ypRc ztD-PeEz(#=1AMu%185Ey+2&P%86r*#V3$(kvw%^JPIFe%VB={vcX_=?J|04&$QPtgvkY)Q{;vx)LAJAJ#3^q*pX@hPiWnv&-(%Vy?W@=8eZT|^QNUz~E<6t$JZiVk#^0H}~?xpeQ z-P-FMiK}TR^wD6?jGyceyA?UBdA`Qj$L^Z1e)S*Osr&X`(TB3+DrB-4RZHP-cTvlc zh~%Rg>$z&+1i(^Fo2*Jd2^ z$%M+PNK`>Pf7hCQUKD#L8LlQBwP*2F<|NWdeu8wvZk5VzXkC6<238QQ41(0u&mZJI z{?w`_cTTP$IXWXua*Si0kI{`G)kgC6;94ZFDmzhb00wB;e_T}Uj5DY(zgB+ zVPj?n-d;W!uxjf+0|v7iM2vJ33>5kMQ&hxs9$AHxjCYHzrweLC4($QzA|msq*7(ob zD~Ocd_aj7t!c}S2(%yt9h5X6^$wYpZE`e6D>-FcVN%D-~n0J2K*-ut;{Mq6&!SrHh zcb7Y0M9!ec(869_xe53aK0-|SQ%ektSkk`QO}UT;j(>#Ig#^QJ1O<&%t*Ig zTHai^n#sVTkwp+Kf-yW(@0onc6w*Yx?!u!JTKcuTuw*0H@vS72VV&rGL$1z4yV=SrVngLl*H5-g;jdta zukTOH9bW01y99|3ovPhd7+UTyOXsH}fE`+|@Ae1R5E6veb&FE2+fNgY7QtRd@b^NB?5pqkcPg+3OI)#)J&} z=L7WI6i`J4iwGlf=wYSbQ6F3RMdjN5^{6oElnLq`;I(3tgTjMVcfP_QKya3SjlQSK z=)Dk>*uYfP`VVm2J1UoBprDZCefmqs8UfT~KIDL2O6Wfv1P~TbCIcX_b{vSh;-~O= zn=8mP6wb1M8lE4&rzC((a4!B0HX}p-KLwiqAHej1?u-A15%0irChdNDBhY^D^TUNQ9_1*!%S6OGACyBB7 zWy?W3zUm@MCyLT+9hmyoe<~1z3U7c%0V-{%M;)T(>1tB#`y!gO+kx{^mxzL@`NJRp zR%D2q)emHfEzeL|eMprCARX_m{2*8F5cLNjZeK)6@Fa?k0hJ9a&5b!83TS;KN@K&A z*gC^wLM0_Uoa=8YLKO`K)Y2T#okllTtyG{B0zd^a*WB20N-JK~z_jcuS{F=OHX66cj^DRIU>V#U1 zp=>yJ74v^S;J47xkPmz_MTIL(z|?@nBmfu?5+DBamBUc#d?;1~Gs+hK{(${KFLUf5 z5A0%T>Wz+(5E9T86~Bv)z5^x@i%J}JlCQ&5_29QC_#V24LhuZuu7UCupTu6n@*3#y z3K+C4S|2lT-Ya>vk>^$q!bve4km6}r_%H>S62BMjm*oyXCrn_34OW3tnHvd20zzO? zBX_`+C2>c+f|4JcLdn8S{TJAA$h~(RP&5?Qz`q3~w|GNAV1I7__ypv~x&$>pCJ3(f zOTF`R9TGwe1^_5a*|#hoV36UuZ5(eWb(!?#O8ok!)ZO(l=b_-G??Uib6F?f(8g(#r zmSW8^u1YxE?|}K)8PYQ-_4_GYwsgMo4pp8;3r|2mZe&}c2mANXOX<$Mmh}U49$R1* z@yK9S7&xwj8P)hnwYvzMNX|v0Yd|6_9X0*;SomTzHo%=HAZb0@aqU74B_Q=Rxg*s& zQ>^v&TfF+$`q&;&VDp;|7{I)s@+oKmA_!9q{W710Anc^}2}sQJ&3zkllzx&mpdh{~ z84Y080dq+<-=j>#0$^vu5`ggQAu(h_{#aNI2?cmE1~aeM*Z@Vu9h8D(bJi=OgdQpY z822&AdgA`4!YqC2!>yv=5@0Ke7ssn zyC2SwK<U@TOjuf5{4zWef^HLc9JK!8170%_(prgGq`!#ucS zcJ?D_&Gkt%OUg`ie!Mkr*-zp^nYH>#RW?CcHN$m{VE@5-6^1qD_Dk$5F=E5K@c|nV zgS_C&+IC6!$;-2QJFGo9+CuplKiPHcQ#9V*a{j^BkSTCD=oQ9zdRaUq`e&f zX99RZdnch;T!C@TvL6Km(8*D*!mHr~RnLg#{~^CrQJ#FGhBocX`!5Z<6UIUfN4>W}p?DR>Or;r!Ng! zfHXJTDos2vcTk=#UaRK7GdpDt_T6o;UQ()!!a8GhR>}CS>E9k;ZNHh0Pns{@JcCV< zHcmT$y_SOcjw63N;3b~U7|2fq5DT)Bb|21&&o+aWOgR@uql891NU2>GIIua$1@r05 zO?LNIE|=Ygb%9H8kkjqc6JI2P!lgwe$G6{gVq5SrkVnh1CSL*H*`Og&(;HbcA)2ey zTH5~eoltC91d?MSu?|Hh7#J6Mv$&d6TrJ zwDoK=!Ja+LPh0--u)jv=E7K&;h=J*#L`8t5LEg%#4`IB!i9}7{yOeW=TnN6};ef3* zt)RN!?Gf4#$$s@PzeT)U&+#+PwX7qia|lp&Sv$3u%lDRhU(bx{kqUU0LTwin4mmfa zftq%)-UyT^xO1qvADDxOGA9=NyombD4e06KT>Ht0e~aPAA*xw2H{94=^+Iz z-_70f5yzFvf^w)z8|n;r^V_c9aVv2{0Ik-BgT>%{8ai)1)hp7Z>0jdbO2HP7B3?QW zcS(m5>G@9q1c}G$m7_+<2q-z4s*%i&%yhq{K0vRPlo|D>882+fk(^`3rccO%-|m4BzS+BvrRG^)MrhtOZwS`t~z#a@~&XO zfS6uSMh?7sW)1!0Du1dQNNkXj`VSvbv{_hf+upEaNbNt zZgR616(PKB+Wg~+QNm=1!xp*a=ES}o2BkPqki<}yfzSH+jl^Xs&EB0a?N7tg@4kKT zrD%?KF@F(AZ4vG4JrI-E8vQW2+E5^Zz(x{j+s&gBof!GCpqjz74g5Ekf~3*Y3yY*?Zv1TG$JnY2~@ zJCBJ9L#r+uEuQpNyuz?NI{Zkl{+;FrF5G8U!IqkzEER zGt@e`hw`QitI#h5Gn}VkiAB{k{t?RGuZvK_I;pq$OtXc`*b^;+jn95hG={AXz<7^; z$n&maH8RyV)*CGTZkLAUlQfSPXWS@OCmjpMDJiK8xqW;VP!A+6uWY>`=ICXot-5eo zGwa|n4_qqIetBTr>+?Ob-yOItCXM38KU~;_LL^Gg-{}cd3lh?|0wG4(3NOVh6}wI8 z;!XWtj9fFVfVtj4wGKohXf83kWbaSxx>$c0h0<36UX-6;JNQXTC~uSB=5HWcFl;0d zR9T)I6#XsI_N8NnkWKd9I@}w`QC{s|#K!o&*)XkV40nvFO)zt?%t@mm! zf>#a~{Q4*TS$MM^>?F-(t}3DTt3QAa_f)c$tV{UYG0yVhG+<|?b^E1}O!HKd3WluuRx=q!oerLc=`U)! z%LMcOky1hX1MQZ?(joo#clLu%UM?q~Iyhxp2YVA+NP|O4n-%BY5R>8E!+VB@t(wK? zcd{A}S;`~viZ~<1>4T@A_$Suuj<}CmZ6uUTp}4#^T_@0jq+9X(y{!ivW5M@!#G=i> zPIs0infQN^QRQ|syjP%ngKAlh2+ZSj;IS;irRC|#%^B~8MC%Cit=hcQRl0$9 zzs2RR#@wI8QQ6WopG00VEVUMCu{H&E*tG_AQ%GW7XmGVMM%uS-JKbAcJ2iT|5`)S8 z<7IlR>%T>-^XndW{z1zg%$bw;S4;z3;XZ#G@_}BVFjwbjt3;4wnJ!Y(KD2q)*(Y#7 zminMOB8)crgn2wnu!&>vTsVW^2Y$GTxMSkhgmKc=XG!fUGaDDf+dzszLXFv%EyO0V z?E73Yf^IZfb1+gtvnBy(*SJ;5N2=$|0dZnP%GV2yw(ev!Jtr!W=7zMu!^><d1^rj};N6}^zo;FA<{a(cDq%!_D zIa0=7ROG+lwVwKfUA;aHAl}Q{k;+yL=u2!{g;*%{x+l*-uQ(tC!Gb{7grFo9FGnr@JWW&qP_6?s8D%8zgS*cH(=Ew3_iEV6kW5Zf{k_ zJYs4!)#h$2<+Fuk_@8a4+rI7?x7yK5D?LkRcT?+lX#7!vOd@dX4iUTUpwdOy0}J<4 zrh%_KT5sd!@>xoX8bN_b&U*|PZ`&B*Yp`R3HadSE{@Y%o{#~)!V_Ppar3ktujsop5t|J}ETEQLly=vg!H}pbTzz2(5Ea zs042xt-~p_O@c6No%_Cr8R4IXoW}$$W${VDri6XkEMX1RdL~1!E9fNNhZS*}QkI^b z8E1_W>GJeaLon3{9di$~>*J^^@;mCq@ckNaHLTqQult*#2QaGfO$bK~13+5)joNbOfP!W5(=FYUp&N57Ci?)_oGbjFWJQRKQk$KgCJ%P|`# zh`xFy>1m31j!fCpp2uxG8~;?+n)`+c=BHnoF?h#G1m`eh8YxO7<~n#R=YI(YMMjgU zvN|=RdaCTcR`KS@I1S>MClcXJ{TMUiTNmt%UFBlSeV5=Fm$lDUY@7u&zgI*}lVZvx zpx6{+8Pz2f(w%o*ajCY2TCU_`KIQKz!`Lz$RFxXv$@~E6g62&tQ-H&;zf1mGMOFvuZr4B8`#Y`T-!2qU_@ zG#v;&4SXR&qev zHoY1XSl%-XDlyEjLBMkyZSj=WYKnlbog8|y6E42&5_KJ5GOA?ym^N=`&IGv4nGaI6BjFW#Pn&y(-MH$iC5az zdWsU*JXjr?`nbM#S?RX?mO+S$1UFf~jPuD^@^kE3Pv@36i{2eWdK}$J559F_+CyZv zO;NG)`YXcOq42;N(tcCkXh)5wjpz1bV3ny{vJ9k^(Fk0-$Pd3d_ZWkt+a$tI^)heS z9VP*>ga^hq>vz`l`Jz>u$-uxDM!6sxXeunxs#XPk7eTa1yTl&td1q7b-V4l!EJs1) z8LbR4&2R7^K_(h0RymC88HzVw(~}_=^3hRj^XBqgMo#fT#9)4dm4?hWaHi4#(C1;2 z51T$_C&-om&6OiCoCPHeJMN<%ou)qq1~JT@dg3V|VM=|w5Bhlv(eJ-*#H#}yMvRNt zQC*2vq)d~lF?4VwCEuN2&;cTCdF7m^iC#k$3TFr`o`e6dZTxoR(J_dhTr_CiK3~YK zOY|i`8FRiJWXW29>N10c-c7aKM(0* z8{XY`LFzBqcP8|A=W$0=46Q3{BA-00kwa27nisl5*%}9J&RDIhU*8`YQ``gudu@P` zIQkgVn9FRM<+s&0@6OztiW*Cmo(cdK-5~Yc*eYz4Xv~g!NqmuorRX%ZXaq;>j6l$( ze-E}At1!xgENv=^zJi?lu_7rOo8*orxi{aCveMz^-ncX7Nd8C9f8;$%2NBujsB=8s zpXQN_`h%T}oIz>PD0SD;yT`&nsE^@s0`&sC&`L|ExKSp$AJKM+>!bUr>~1}JERp9@ zvJ_kS8>@y#36TS#Cd1yQK?cN_)pOdA(sKmq0PdE_TCjnjtQk@ahK zVOL!RJxqW>QwaUw#QKjX@`&zdbso|HUf~QVN~`=N6@E?V@Fe$VRPfvAapkDLwIM2B5jUo< zxu=Z&TTzyW+XMCt7)V~bWGw2C3_Qz9>lPk}O`I&)+9JbO&KO;anR?HGkiDV4wE6Je z&$1L6N&e4edyqlNIkgM)PO>!!>!o94!2kFRN<6`amCp!|v^ziZB{kh@fY?*2x*32E zD>8(J|0K9memS+VA;!&Yf-k8Ux~V11S5YGT2(qJcwpxW(D8k1kHD(_H&bdSwYGX{_ z`N`Yy+bEIn2<)c2hx_xn!N-2W!DK3};y<|Dlw^mH>sw7k|E;Nz;xQLp<5CI`R76w= z=!V|$2~P?h14UNjyOT=Do~HcciqAf(@@)6-Nh?S6qPeRh=&=!gbQ;8lLZ9v4IH{RF zWiFmc@#<+nscW|Xv$>Pc?}#j-XK~ZITwn`4s=2h}cPwTU{c5qr!PS|Y=E6>|WIpc5 zoy|KwAW1%B)X8i6<-+B30v(SlbG}u^gElITAf_+Ah#m-fJtG*)dh|Rwh;dzMDduOaQ-*Y?mk!}uXtd_P@>32kY`A1 z9+)Zb0AH31cp>2Y;_q@d^^tgBydwvQid%oa0h+5rSTH2vuwtQM`6FLqbPml=KV|41 zP=PfK|94C49qE$(x;9u@lYOI*y#;wS{pW7=X|v;5`8t2yTqSuKNi-&DE3NpL)GRNU zozK!O&N82L!;ust zyB_EtQr@0?0zj^U{sqM-$-anBa{{)<4J9QUZf1bkin{Hax*PFQ)G@-u$~Zw4pW+l9 z{r&U0cXE_M6FYMWaBS=uBB|<)-=n8^V!FVJc--3cEbndO+Uf7;A>fP)Jv()at?@}f zdE4?zX6LR#0em(FS`Z~{F&p2QEeN+y(^AlRAn<3!j`9{FN@L;hC>W}7e zE+I;Cbdrm=$E3FXkN4b1q)sTO08%31kyD<*BG4(49y%BA>h^y8W5r(-q7!eGv=*x@#Ny)*i9E;P@W-m%# zq?@G|aWAzv|v8;Xk?NoGMUXzg_x8yu!c z=6)iPNYRP+r}t;OC##Fp8ys>B$KoxVto6BbGeg~Bs2`3=Q~cI}WO{e}6F*%g@Q-|2 zXVS^aw^h-`FBN@*$MT>(ML5*lMhC6 zR>fYTRf7gEqoIj4x4ffK25d39bY~8&`6E%Z`g5oB#jAa{HpF105B(u;(2dTZ>WI0i zR8tLQyM&Di;R>OD?iqb0bjXEB!ywr2OG=GdCe3W|0xF{DGx1J%1uN2#jbQ#QpyMgf z%?o3=K8uvs{6l~4ku;hye{bz?Tk%8C{~X}JArI3DtCJi0rvcQeRYE^%ZFzrj;i$L& zYt^+|zLqEz)9I5c^9}O0fxCBe#EtxG6wcz+hmC3Uwp;<7SkV;uEjrCqx;#_C2Y?*p8OCcsTYM!6g9K{AnxctQUGuEc0(ARhoIk>4WU5 zM~n?EEXG4YesJd=U%!__6TWh<*P8&Q9EQrm%p5ZgJmsbQFlmEtYG!TVUlDSP3}{hD zK)1d^-l%6C3XDA=7M--p@Rc+CfZY=8z|}TbD79NHtnZNaoCe0yei!ip&C-B3FE*na zwa;i|su%3^OIZyRAx?^yS3jqEBu~8hLV>0ky3{q_p-ZPp(wJH->F<iirL(5>6>Joz`6B{6THOXTH>va?#bbaJ@rp}m+t(C$o+wR>L@`{Nnte1@#|w> zxFP}0CuxDpvKHcUDRX>m=1+36oH?#t% zmQ)~izI*nk9A(Wif8u(t5hs*j26D%re@7ei(kiZ8jj3+vsnXJ+dhHZ0q6cZ}>&WRp z1T6?>J8-m`Z@d9oO6yOo)hz|$Y(E44krDA4CQW|eC?&uw)_>=W#?UII_NN|&iNVa$ zqT$ZaYQq`vjtzdqiHXxY9t~PY88ZpD`8wjU%4E5;uGzwu`FcJ7B_bdb z%Ec(`0Pd>K-+K{gJrlR*-)t*5(O&si;X*<-%mK7ZW_IA70=UWdCxJQEnch~MvYnms zaO)_DA6At1xwKD8oPY1~?I8e$&u)^|l^nUxytZ6upVw z@8&NxTJ%bfDa{F$9`~_NzM!SC<-@}$9kfNEhNayV7+YT{F#PgPg%_}CII7JWWP(4b z%@Ei}%iGZWie@PD`J?&cooTfnFW z957{NM9%+_k9fN+4#-EShmGj@nJrU@om2OatO_t510NRqp#ys>8-$h%OjFam{fo6U zMJgWSzTezoENMZfMc>eN*VF9`YYT(%p%uJ zE`SR>^MYdfi-oz`EJ~S(k6?$13gfoQ+Wa~FcmM?sT$&BwFL{G|vt?IczP+>+K&%A3 za{3nz`$x^;9FVmZX~GIKB$>GMZ3Ci@Y1pq~6wX~qP@X8g*L+}w1+uos)L6jy@-uEx zu9Zy}0McbV!FPd)2`~xgNJC+nvPQ|P6V$6tk_Xt?mc$u0d%%6ZnN6N?YQsc1gGwK5 ze2LTVT-5|9tz-WF4Xi8xzWmhN7M>n@HBIyt7J%{vp0BL@h1IrrmM$!W?m28d=@u-7 zOFaQp9Hi7oe1R%-2|RW_w4-$bgH>-xcsnhNRZO9Ae@~my6}rFc+2$KNjKwm(mS1iz z*6g=F1>__4K>HV^o-Ovkdf*9TPC3fjuFjtM#X7FH0o}!IESvV+_^ONLs+@e!=7-pD z-|l-IirM+UsG^#950+pnBtQf)`s;WDXk4w&1%<7JUDMyUq3e%;fh=SEB#91#;`njw z_fGf?!AC~8fGWj+N^OMHuueJ18$irz;};ZY8W&H8Jp~@^t;-!ZBuG}C^SF`VMsRUG zg^ylVkCt#!dupQ3C)?~-VQ~}Wjq-;%B>V}yqiq1pbv#J(PO8;`ByDrH34s;QNDyyv zS!u-V8z*r9+eBbfqqAgkB0!O3`aL*4>-$(m`Lzn+Wz-^iBbTnbLDW zcB%hE8m)K?h+4E9HUk1UBhMJ8VU&%buB!>J1o}6z9jj+v{C45pV2U&UKYK>ri}%HX zcAIt^?Tcgu0bP&=oj6pVM`clKi~U1Gba_f2CYlS3O5YZ^H$U6W7336smE?PYR+Bfv zm#5dDB2{~+_m~Td-PGd z=&&S2SO1(hWRg6hiRA{RQT^|DL9q{jZrw2Va26#WitfC$L z9ADad^G(59Dnc=Ni0kiaAC!)fikS#&Nf!E=OWK)1t+58ZzMs)Dz{TMGJNzZEKfCG>&k%i5HR!&j?ei+7_ zw7+zE!}F%bl$f6~#ymaEsnOQ|e(1$g=8d*e&joL5d+-hSaQmibyub&Z7-Wa$mOIz5Pe!?y(f)lm)r zm(?M7X+oQM*r}J|x%J6cW*K!ce5Lgk3#O#H8x)5Hz%KLW^v`(;$|vIJeSW<{lf(gN zaM4(`0X|K?RM1Tm4ZCc5+ytPx|7htnYrC2)*R@dE_Mc;?3xIO$>>4btIfjnr^)oQd zU-6Y57{YBc(C@i_7&p*kI9z;wje&GWURF2?v8>oHVFhIT2G0OESgsDwIhWG&L(Dx~?bq?9LXouY;isx96S{mO(<&|52JEO;#Q>-5<|nqP96sHf`5 zr~8g^jaFBzM4PEnhgdMe8CmZ@!_@K0Tt?n570O{n$_lSC{!qhfk=u_UvB2dPAajaHGXlZj4aKoZrDv z2I_8P%DJ6rzH=wQR$yY*bG2yC4X(#L3<}2mT`#y0!|t)X?v(I0!BAc_uU6wUEA_8z+{9Ym0je<*3`@U zWgWe^2kTe@)Z2?680dmZeLmRqfl?tOy4HL08cgRnYZcK}fvONDQ8bH`%Nt&~TcS~U z7xVYsM0?96qmh<2U*H2s)h*~<_q*O)C4R8LkcIod5PjjYBDC;8$qy$J_g}+@Rq5um(T;?AtFth94Zve!Tl7jLHF}z8#tR#Wqj{@oiyH)^PSX%(BmVy-+ z;)8O4@C@hHeHAIQZ3RI=z~ug>=ez>_e)|^xw#z5-T?_N5z%#{obx{jv{OHri&l9XHOE0C#3S_}-fK$NAz@f?9RTpsrcc}2=g7vtmRfkFQy63?El&RyyIi=ttQ0RZ_Nl7odo`K&p|a!i@F@M*_a5;D=F<6hKbS5N|+ap4$a60+~Dh?T@?2y zmO)bGPxMjl8@27+wxet;IQ$?7*w=qBJr-3HyJwiUEzH=DR1tCt4>;ao>LJ}CHE(mC z@1>nN5=nu|Mh9zFgIRj&3o?D|TJr~y2w|DE*f#H+&nQu?#FJvd<*M31+W7UX`r+kP z&GVP9{laXa;Ap+qt-vpT)76VXufN_3+~r?43vv_nfYa#GO;tDSzIK=e<_@JbioPo@ z(noqwZV8ojgos$02pq0X{#j0|H@%Q=T>HD}#A;R1s)S)wTA?FI%H((m2XBQLD)9U%H_51GR6@0@T0|U0r}D7g6@wPQmjWWl_~sR&>kk16lZ&A1 z1Vi`w-Es-zhQuS+90Tuzd{AhD#L%hF!t(mLXW*p$I6S(1?$CES%)B9ai=?m&pnyu< zESfJEPn}t{y*ud?hqV`B*&9Uc5y2ovC`?M>(_U4yko+I!L#l;*gyaRdSZ8^!dqe~# zf3={RQlH|GdRu0H>P4m|^>l@^<-RC2X}qg6n8L^GdU#oAC&HyaPTsk`V6Da0B-ser z{ywaNbuq@;*7sCG6>T**f|MW|NE%XgvLAgY{&-xLYW-e6N9Mzi5C4pFJjMTDU17ePLPsI)TY7RHbFwNZ(; zK*PD&vInGtT4}fHR|*g&(_+IN6K91rQ#i#bt|q_eT#Sk(P&E}K3BCt}hvRdIim7m9 zsp#>fMMf(=&{&yTlA8albrt0+HdMDY>@M_GE1w*B<{+7Nrkn1YfAj$u0)HltxG89c zRQ97T)IDmB964T^$+zZ>q#|qzb59;9+NtB}x?3#lDr=Lf)L`8z7Y%iUJ*W*&E)&OT zikCVE7%dqR5A4NBdl@CSmlmF)@K+}S9oMkr3W z3hu3!PQ|A`4YEk5?%QC*Gu`TOS6l|!??j}~YV}0w`y1%>oPV;8PH?^d9lms;ifL65l#oz?rFNao@KZl)Ww4`8;||R{;A`d(scb zeq(0%Nt%kbx7=NJ5Sc}~06~a&>aNn&M@y>HVQ1~MyPkLZX+u$76#}+hx}lb-(7--jp*Y zd43HQNE1P7mc$i3Ect`8C4ex9eDchD3XKa^JdXF*@P#-k1$;bSH}GH#6$Vt+CwP2k zz#1PKvd-h*A__s7odzA{5&6>a5)y&tXYwnQFSnKAVYPOMmkRg=g1T~FnW_>;7K{6x z9;G5Aca`WwJoIP|OUUI%9z9N5_O|iej!~EDuD~saN5R7VGuOQk$mBK~qK^z8X!T#u z#~w^P^hEXN28oU!t`@o{L`q*G)9mUrPgQ!Yh94N+v~Mcrd~+*8*zr3enOJY@+Z26q z3_Z%Fq`A?wSdT?>Xa3J}ht>BWC;BIT>SOms#&Rr_3Ief1k_@!(Y*{s_w7Whs5qdHS z%SO;>%;4c^Zou&~5G*RevQp4=9_^d&u7As`njQc#ZVkk+^kK_On|FDe@vT^vzxos*0p-T1%a3Q%-XbUvLCFP@h?R!itxVVikNvMZZw9sL1UI;$kxrE#gLqxn0bQsc zEz^Fh5ASJi#B9vM;2uNLxjP0di#Y6am59-t z;h9bGCN}tD0KTzj>33ajy*_)`j7gfML6rX}r(4&AKOt1s{+!mbq*74u)w`>oNBr45 zjqTW7W)gZr?nJNT$}nufZb8ziVw_?bFf=U>HFdT6zNt~nZ8K~AV|ZDb(EJN8^P3O! z#S-cUluoFkn49dH&9$Qs_rRoDZ&$>}{%0RawZ*^G^QS9-`1b10LuT}&gqiZECP&3+ zQI5#JJ86Fu*hzjA$cSsT*$c1gsfeb2eV{Fd`(z;uzEzp^11(yvjo#%D-v)uKF}VZB zFKX8!3EoRejpZEF#Qsb^=&S*D&d-zqwe{53pQF8_GQ?U_y0Z*gYe|DYH&2J()I&0K zRw#Skh}UEuEFcfgF*zdT{!$xAo-1Z$29qG$i|hW5w^IR#SN%{igM#B|;I(Nb;*EvS zn4bYs@5d8V^YdvD1J%j;N0)Tx`iqLPA7c#W5#^=$E#CurIIJ9=&rtu+oS>z#n{YQ> zsmoXhbeC79qXVFsqa-sOs}nD)!GMbstxUds6Oj;lOMu8Wtlp|Gw@kP9@s;7A6cZS4*Vi zt2{ZoNZV3WZt$i z8RTSPT+ti0Z$m>k6KGt(MX|sxX+wZEV82{bSG$OinQ?FKPwW;j2rXW9@w%U=IX6zs zN#DIv`?Nn6s z6Ed&|k}RKa=4hSkjeAWawi_!S`GjSq`<1{sm)%EmQtlVZL$u=6&I*(_s#J`SK?{>@ z70NLq{mVQo63!5tg(gHWz55VN$-v&p{ej~cpxGZyu*C*>rXgyywce1sLx})-LhgY_ zWHbT7*QD!371cu-(~DNS>Pm%^b%uoqH!o=NfDpOabE@zBYjw%0i^+b~z=^+Xk}%vx z?SBud8#(|V4kb9EOrp--(L;>nU~w^dp0VJq6+i1|&61_sDd$s`c31;fbv$#bN|8kL zxETI(%ERqpQxuMtI^S6|s2b1Dgb4w9G5(ROu121Ho7hXCZHqyF{!G?1(4g$#a zKWdDqkaWVRKNAT_^>R!iM?H@`Y6+uvKF3HQ%F(+~N6gxmYFkTQ&y%cs3wR5DyhMm? z`o!&cX!svoOmSVf*OVAR&U9urzpc?1M*w%i5O9*yO<8{VV17dQf_IziEh&cf#@M5R zA(_gEd-L4^e9lpHlDRxGDgZM*8kXTcxDtdfV9W7lfQ6-%Ag+K5^ba-tjqd`-ZtoX6iQU{!$7&uX9Rs=a9S*Zlu1OV>D6Hc0|3 zBIH~cUXiPbF4aB4e04Ov286Xjz=S1AVIf?O0toh12Fh(R$p)%mIzk+axg3azIl7hY zs02Ie%qi;%3?lL`a~vVc>uDmXncy8n;SS=75LH0-7C}5b@Bc#)UUc zOmU0NTv61=f6s19RF3;gSE4Bu;OtrfXIHC?gmz{DEXd4Q`y3tO)g0bGaLb*njRT0^ zqlrexEUfJ;zKt?5n7h@>TeOsVC&tB1EYIT!PyjE*16MnIH8 z%Kbp(`}r-}gpmCnXOmejX%T=JR8xW&%mxty`8FoB5}1=4T}+)B7;W~9A`sh@cA~6| zsT<@9+Lg^GloE-MDIjMFa9lmEa8;oZ>z9s`PbM6ZzrJ|ZJSgqT%`zWu?#;;5`LlIi z^{6FlpqOYz3tAG#FLh?Z3m7)|L{=@FqRpCYex8)O0GurHsy511Y!gs~v(@$Lvu~5j z9qAJu3DlvS=O~dmE*Y3;od(3E_8DCqGBDivRIuPOQRL*eI9@{V7IG6;DQK7XKVSTj z%}{3us7E)^8ikH>`Kubd`aMLJDX}IMr}Fb(dm3@AQ~c0eiRtSu_q*S=y^(t^R=O^6 z^l`NgEyBCT-Net--)L!)S1K{>)UzUCkDopzfc3yb!Y$=m;7OAY?z#|@(v(-oi1Dpk zA+?^!2;9&Ts>X`)$T;`=jiTX)z=r>zR!?I4BiVu@92rd|Xt4m)Nt;h#zMi|JpI5?jeZxoXt+j*+tcyes5F?Gdmjo9U>4RM8iHs!cN@m?p>LqX>JwPr28kZQ3N2f#1 ze@)r+uI(W;(s3kC+njL77g?{9SDN=#WRbmhDHiA_Y(?@i9)K`;W}E-o@rTtI7*sN2 z;JF*gV1zbCO9Vu#CzL!p6EB!8hxS1&SU$46bll$}2EwaaY*2&s1DW;v^*RO{ONO7pZ!`dv#JkYeSXd9iwPytyTIB;iTv6_mX zA^p;PrGGxEusb#v)AjNt=8o+-p7IwgVk4)2F36($+C|?}?aKx1 zA_v5cG59U{SjiLlRPlpVo>tcc?Z#)RC_lg*dEvm1N>4^p~(`hx&YBy$4 zsfx$p8_Li&ZM^SeDS<;8DQ@*7-fL#kq?T@2`EaJSb+@K$Kc1~-^S)dYnz0|kf)CEa zoH=ol_zakSPc^|62&16;uVvlX8lL9J2oO8fFNJjPO$3}i3g9WFK6fXXk+r1dHt02@ zXMPZZ2@(D10s@he+8$R#=aF>q0wQ|{3? zw}rhKC~RG)YlQY)%0GvoJ|7I-1&u&8o#1wZ363L%d2-o^WQ6+3{`n}TmK15LxjfQH znDO8JnfGV%)Bd3Se5X~iHZLu2Bc-9%DJz>pP-R(I+!ow<_H?S)1&t||A zJSckimOc*|t~QLZF6sHvXzfdTjVz;A-u&Yd&h8~0jfKJj$U*yA=?5sEinN@+xt00% zU?+Mb%Jl3$61N;pfQk0G_`PPI<5)!uffE1{xTx82;W$0YzDhBhEK>bEQKiGL#wd=@ zWOqw>JPyQVdu%z3^i=C`l)`TDn&l1O;y)xpDA9ZdFzN$jt6_Y6`One~?X7z%;O*l_ zJlBBax+|2VSlQx4M;P?c;}9dxR||BQyrUhXG*t+lfy=Tiz>`d#5D#-_`d_a~e|^D8 zMD5uSpaQ7nsY!@C60|F3>Mb*hTa}{oR1ImC{S?!D05O8Ujh-LQr#k`u!|rRtk|8@g zJ0&KwJ)^CUf_Qd&NWzFYjjucnrye5_oK8o}5q%m9^(*5JO5y^K4Z?ejc$ur5(v<86 z6TqmsiNA4?6GXG8c(&JH(!MP2Y^{}7V+)A`n zQ)Oc$fc6aie_l3A+=l$+J-s_!0*DFow39ydrG1${kr6R|{MGorLT-_Kg!2;0(3Ivs zLnWA1IhOw6B`6~&2^9Rv>`PA!gUd}Sw&siZ+F_eKRXSwhmS*j&@M)Cb!+m-m;H-+} zYnNcps$72b|9e&^0a-1UI;_yvvvkF@QKm(aRRy`upqI<5Lq61kja*+PSy%CSw6s<@ zJ@*x_IvwQnr?`VA(SxM8)cxH4Y)yA*Zhucl6MQ3S-DEl#8Uy+v;V0&lk9&d2l}i}L zb1 zjrUP+7|qV+Zj>k?=WrwC8^DDBBsgS)%k|`!zpcylV=i*3D`uVms-o4aeVfkEBMD%=}NErDG}e@r6il;;z&SUlzz_x#mS=;sAK7n+Notqn7V; z_y1Qb(VTwfXlKleH~R7v5>y@cc|=mbJsFB;hmDa+=bf5pzj3ZWrH#Fa9gS-chxGqX zeiM_kbIDpp6C+k@ioPqp>h^?dhLPHqqOt1d&xhfNy2wuwTZYZqqE=fHcjLEhG}9i!3vGru~$qSR^7h)-m=O4Wa~- zhh?(0qtPi0hRwTQ{iUj%NpQvH}4Re*Z(c7&;8vrHB+D5G{R&^lWkSuaBpw#~-{Ezay;gDwW|bA+RDmV*gm)!G%iK9^2Ben@}qe-U0ME4Da>4=S?E8?4*zJgL|{F zj9WoQta#P|axE((OEqs0HE`;_E_dcZ$HA-S_j}#GDfx#))w|CnG|s@Q8DHOC7_HTI zG>VrBdxxBS_U{LDB((AqcW9T2Rpo6c8n5Mj*RMpJb+4}j`0?K3vA<{M=@g3ml6znD z$HS=mntZ$i)qci_iEpe_aP|5IZ{>UQNP7)F;nR%hA3W>y_uUSiHa(wdAZ|i#!}b=A zQK7hJt=6T}!04v;(4ec8>G(G$rAP|x!r1GdBbxlaVNE|+W2!1X0MyOybH?5SQV)V8 zAqUT4C6+C}E&+__0`$c!et1Sq6DJ!1P+>GN-@dp#EWK5%Vv_m2djvH-H^uHfPPB68 zP%*uV=1jR+z$hLX;Y?JrxkH*}hd0UygG@oNZS*xZDr}k zEJG~?gLW$bg8AfAbi%zw3r6AG%HOk?&N9W!Vr$IJ!scS3iY5}X$=p3&y3k|r16+u~QzdscoytHB=?#SswP&xSnxOG@xX-q$BW-w0{=WG zC4iInO9;Gi-A}E)VDcqeYp0J)gC2B{)ZBx%Zb$wW1`3 zWzybt-#L@;m|rPZ%&h;-R0*>t?8?CT`Ki=RJfr@G?fT)FNk|Qv?|hq4RbCIcr(>Y67N&N#Sd->|I^WbA@L*aZ%&!G{FAPT2kY3c#xR#8g@Sa60 zMOMo5qfa#E?;hHs4rQi2sB>Q@ud`0nU1-6I4~UxJBeL2Z(Z5V@oGZbG4^(?Q7YrC) z(aOl<%(x1u_a}Mt!_-R_ENAJ8z+M^M`M_X_p?!~1H4lnfYodf& zyrsL&PV6p2*NdjP2W8PT*D*zl5C@q2M^rbezk;+e@EMJ~e^mW`A~)bs(IOA-5I)%{ zG%0c2%&R>EYF)I|HiN}lZ1hP&^fd385yg9#WF+31kYn0I#!R;Bn)#m)TH{Q=>*vv@ zVLC+1km~-n0|{E0PY%3pY5^N!XafVBL0ifbX75iw?!-0D+(VJ3UERHA@@Z2{$`Ykc zbD6_)&*<}F2EDO4pR+Kzn&);?GsA%0rt4aXTgqUlEdFa%BI%)vH2!Tx^KobJujLdk z%96VjAH60VXB8#h-upVzN>#{R6ZfE@Ect<3SH5MGdNS>l`&|0?(+V&vnkG%6X7Bdh z)QO%8lc+V?T|(5O47EW`2UZ( zzx<1;`~QGZ5h+1JkfBpbUGln|u^QF^GMlpGpiK%}LWQW_)-x&E zUc+@=zjJ@jUvLf&eB#W0&E9M6Ppx-^svK04A`_le{U`;S!jVxc`@R(D2v~ zM*2nE!Bi85k#lUsmI#nUY!?3nO$F=`6-g=a2+U(Y}Si)IM&z7)Zu#s zZ+J=?Riapn0}Ag<@3ie6H>&D{zGUM4Rd}N`6Uw}9I5XV9dre>eUeM|~&8)+K)q-$8 zi_^&Jd5x>hS8Nb6>7gN+k%q?qX)}>mE$@c!u6k@=IM!7ue*>{-q2u}#O#scKU^;;Z zVU8;gX+O{P2Q`2krdRj3>ROx#y+BI{C71elk!iUNRc0@AF~&i$x#eP43_lKokxL`T z-)0MTrE}g>p>GYuB6Sv?;ifycu_)m(MzL#>hOm@JMtGNY=}h?5k$ThD8=OIDD&SpN%B=FC%4TwZFXR~Dg1N>-^+3?tlOkTH&H zTlYsZ?utY+nsqr8?R1NE_#2yK3%gTOaH2ik=?3D>ek?wIk?(BQ8s|rW`Xs4!p1O(0 zZ5OuL+1p>IGQFZg(;j@hGXcQnkeTUR66r4y6Fm0=9i z0{46l&}H=PQB*>w{_Sw?gKR2HcQ{uN1)_DlK7<-XxOPiE6{j^>6k+!yV23_AIvK9N zD>pVWX*y^$s;EyX1y0b72vXq#Nm0+PBJWb>%Ooiq?UM3O`@88y#*wNSzM1;ssU(An z_-X4|>2cGds|8P&kZ0TTf+6+exDHS|?#MyG=|v+@U)TBOq!0n(X|o|FUbV-9EzbhZn!Hu%C+9K2ksX0 zR-9`6xnD)#l};MJ2+f6)`R>KG@v5d#%##2gyova3I%_NRIHOd2XxLnMmXn8h4~IJ( zociY1yPCfG!N|4<@uR3D9gPqt%jq3FI2MU_UDGywr zBx!s>jvoXiofF#ju#2oh-%0a24?_u&jFY1DL3Suy_h?hsofdc%G0Hqj`ptCB@6-?o zb1rO(xJlyg#L}OeK9Gnb{cvFk{}|dHQ-e=Lb8UL_{AAO3TVnb;HOrPo%V!(z{@A-x zv{*wKOvKQ=tg3G&0TLVcIQr{k+w~s@J54mb1tM{~N_e7B~4IXIGkqNX3eUQ=dI zkUuVD(I4Y7Df0b8p=-BHlf#bJy%7U>Dnx3ph6I}B;Z{1VIL6F&LWZORva5MKrZzEV zT5Mw>ojq-TeKR6LI?o+7oKtzMjf5B33AREHL4h)BsfuCZA4>p1VQ!RYDrtzzrBFU$ z;D^n?lX!14?_fHz0yE{)j1+%BdQeJn<%F^&HJT?Jw+02k3~o=l^G%!)P<*x>{{oBV zWGf*SH==qOC3pBZGHD>9h%rjRkuT_X4nvevqmmvUz1!rx2e?W*5f`*XO`KLIlE|Q8 z+-z(^wg=v|U|3b(1&AEAZ|4+a4!B*S=BtRNG-@?)F9sMET9|En)7T+*=3M}2J(6DC z&^+lcL3~Xs;~fdr98++Csz-n6ow#D9b`;GM5Ov%`Ou(LsK`Dd2>Yjv={U9EMa1Z9e z%EsoD>^RFdk>fU2QTDTB%6E&RcEwvwVLsjQ->*2vTod~SQYRsCFoq-IAD}g428NaA z?3V$0hW+Xi3$fLCy?yrf#EbYStP1o%Fp#Y3K+Ixgp!W_9r{kNk#I1RcISg z5Ydjwd+TRh+58cro4>Nh2!LSwB`y)?hd0KXvC@%PId!pGpct9Z1n{Q~{L{BmJr_U5 zEk)gBK58VOwr~dHl)`|`n_9camq`2KD5UKH7B}t&lrReem_?MnFrEWk{3if7m;D4o zwB9NOsB|m0PL6~g`ycy%;yi{(IaejGLT0301lp90KiDc0xn0MH3s z?KjT>P__^_IM!^cGeVJVYet7Puac<&#ekhy>g1hH-K_56uZh1axoN3C0AN2kVH0TY zR8l>HnHxPGJpsR~6&1V~h;;7KZh4JU>rJ-~eED?ecW*d&G%I^B*NSY`0JqL1yR8?6 zuYYI$Ap0HY-zDpL$Mb0Asc+5AdS2Bp#3jBAfaMThS!Xf$u&~(xb^HgrUfcN&NE=Nq zquoy<-vc%&U9=0m7kCp^F<3K7#UlU>UCJ(U#ouc8JFHu}A6Alaw|}O#Ww=gwAi{N~ zC~!1uh}0LTzV&duE4KCPREp$XHyL2;K4~HrFbs8OI0DGX`(Eod#Rm29#*fE?|wTQ zJi#RV3gfy9giv`c@|PIWJ>b*LB_J}POXPq z77j!&H8Ka_ONAkkfQya%SkA9oJxYpxK)`3B7G(DMx}Y{5*G zVbN#u83qUM{cn!yV&Ep-4n-4e!If7oURS5K{~pLtN9PGwpxqVGG|j_xvwv9r;Bmf` z=zHj-vF@1k7xM9mxxGKh_$Ve}PDKj1cmf^)2J10-b4fgULNj5YgshCb=CJpG{ei`a zP#N!YQtF1mi=XzgEt=!hQt8e|rrTKc)rAw6ZSa~P4}hdAVg;iXuz^Lbs`NYF$*C21g9# zy{nw;Kc7B6BMMA0WlEmsppM$aI2mQ*w_B!^8v|t9B}nVQS%^{WL%We_nL)YbX|aiZ zp>5qL3C8zx9W%3H$Fh!vnq7af&~W7=(?)SlANt0HCMOiT?8A z)vFB8&u`UOK*oqNl5VXsK!@5N64@f6$HZn*uh;i&iMjUVZIz{gDl_lln#0us@+@A;9*Zb1??nH)s6p~K$I9U+zt)>zc5kM#X&$DTz ze1f^%q5%`nJLPrhhGq`%dv$_GGI#+)1$ZTq{QDeK%-YFMVn>7+o=Z(qtMZvmn2i`m zvX`ilAE}(pxjZCAiRlwgDGeTkp|5Tqoq$`z%40uc_6B6E!j@2J;LYxn{t$C_&~3&WG&4XqJc&fybf!R0gPt0Ka+0Nj>VV1cK`eQ`IBIT9%-7K%EMi( z{VZFGOomjAxWrdEcf-e>2^vN~ts<;w96AY0gj9ToOjxG1_Aa}Hg>g6^L5J})mg8ab zj|r!+LexvR_>yWvO%8O79a#C~F|6zPP1&ZHRO~_d27MU~fh3m5WmW&KEATN*ywKIh zPr|&Txy~OcIRauzAHfrbW;3NLVoPmHqiT)n(5`F7HXNI9sT(^;kb(PAej;z!pJHh$ z@0e>zJURMZzMdw*f4O`;ii4X3Z4P|u7jt7HCu=aRgETymoIFm6GPdgiHn4YP@jJv6 z72t1tuuiuqcSb+EsXF0NZ}6sA0V>JTv!$P(-`qNCDg?I>XElcSNs)y$J>C_*?XaNh zv;Nr3@3nF&3)wRRH?ul=89J=#H)h*$T)C6E?E?5M>w4xi;)!SH$EFm5&n;%j_{_YrIDSAup*XC8C z|766E&|&lc(t@g|R>C_e+<>uXPme4y66h?+MZAwBsT?LPERX~ELnVAGSA{-fnsx}39=nsMu{4!{fL zMs4fUTL#l$E`YnWR0BzD^VBDDX}t>9lZ7ze_b3_mf^(8=-H|+gS9~FuT;0{5ql?^jJVR?!o%AYcOLfo z(fyv6R(btc$;U;DHs@H{i)^Ea>T4yg4WV`xxd^J)Kmfa<#*jgkR*aNFkzmxtTZIWO zskfYCcT0yRQ2I~gJmXl^+YUrfNbS;0ODLtvO#U?EED|z2$Dn@Eb5vZx?j7BaP}%egSuf2bF-^ypsvV4o#`8lT*|hfZ zpwPOlCdFwR(bsuUl7$9E*c%}^F}JxE-*uBtGNcpHL~squN&7VMl*n7}6}h0kcb$4Z z)U&I?LEQ8kO^HO0Rl{)1>&)4j=ife}iQ>0P6g+V4l4kZTB_@#{QJWkT+;-qJz<5G~ z-Zg}F#LX$tuq-}lk&MIp%zJ@~? zLL)jH8WFfu^+INeSI*N#Ez@k`?^I|47cK>UJjtRHFxYr@pof0&w`ZFjhDv{sJLZZZ z-(p-**mZ_?c=pab;9~X_P#?`CRFK&z6++^#Z9l7|Ls|@GGMX)A(!Zr6#6kM!LUTqN zbk&jJ`|h6670ksq{O-t7KJ0lg+|j=%s#?wNy|6^=UHj?H#2vvCZ=t&$x69SieKBL`(-x6w&~4; zyU&(G*&slVHydg7psfETl~XGB8iN&ycbaZ6cY8f*Y;S5t2e?zQF}9@AJVNrhC1IS5 z9GTfBzG1ru=-<``MJHLOOX}>$>zS{g$R6N^C;5QRtDq&y5YX{>HwpPhi>@TkDJ|#j z%(8?~)#3js*=QYB3!Papn<@#G85CYB9#{ywZ0)*shaszKJ`F?AKdi)eC8RgZaNOA1 zwlZ*3RAn2y&fPP#srkoQKLjnu;~cq5@ZY>((%Ekp{C&P3+7kmRY1O`ds)>I4-}=n0 zyO@)mO1|V)QPtCA?LM0)T$`gdaeb0N%&p;cQ!ZcTgMGOC`BBAauFOm&I`tt~^>;`4Wc`2X0dZb5B{2OYUav2HJ1DRgB8R?IV!B-18z+)~QP zTpu1p{kR3r^gpQk$4v^0n+Q@wIpO&C)J=R#LW=PKJ?pO-Eln zii(V7uWkA1F%Pr(oaD>PTy2F1r4u7zmQpZF9#@d0CreL0Qk!O;>n&!VWka`m&`gQb z%!xlSypii~;9eB(UOMz}7s`=b(!;xLrD`rp_#MiV1OSt#UE85Cr>6sNvR~+xSqBe3 ziW%`XOmgUY5J;qHH!!S3e9~Uo>mx3)!Mvu&6zh)As7Q0?GmYgzeNlxTRbacP_|)9` zwx!x}LD#}zS2U8Earbl43rSC>RJ<1LeTjGQd7es}Nt_muB3Z-;{f3+}4N}qeaE~5M z-M+D~!^Fm9R~XuazQaEg0*iH^5Y#p4b(O9xF4!z9=zZiJM#;3wv}t&(dTv0uV6!>g zYC3+-GZ)yTOL4EHQ@r#*jbev9hp7EPsI3D*gByGNu-g2hvDz?aoUUWv&-X4=U_BV| z+Q`MceWYSY?~uN@IX=ZA+t*CYw`?x_C_QLRgCSQ?qzscPtw>us1JC*!)IEq!c8o{+f*;X zK{EFI*n6==NPU_pZB3D?rkD~jsfaA7ChJB;dW3wo(7JYJMj{~ScBdkwCiN-RqEHVN z!r6NIw{p~1iteKBdwm)(nl9h4n&@Aha_*o6IPB=(ln0XqI2YiRC~fDDE1^ec??_x# z8KJ1>GcS^)Zr=SHUpJq^5AS>_)X{}VWM~r?DH&H^6K9F~*4|j#_Jj*}8tVTsDkZ*C zgOy$!U!lB=rmn3D#v3M0PhbG&a(I*RZnO1vRy^dqEi&My0I_ZU4qen$IaG|Cq-3O= z+xlWRz9h5fI(;nY%jDOJ zbCI-yJW6V*FSUkz!tfkFMjWAc_}B&rjd3*qy)su{>&Br>KK*ieH?_E;<#X#h{OiW` z;ZD|E>JS2p6F-?7ewiv7A+;kVo9&Z9V`qCnH?HvWL(jGpO+ryk25W4nJ+C56XWZG?@_61LxIaaVFk--S6`hE6Xz{I`%yf;h>&rPKZ248_x%=>%fzj-5 zTdmu`Nu7(>QI>jchO#Q4HLwAFY!Pwfu!XCU#WlwwhW%&~hec znq$v?<}gv)9mEIRhPZWe)_BIb=2NC7c#0F;6 z2*zGeyRzm|wwqbA3;Dtdh7K~I9p}YBl0o;~`Dk{2GW!$Bcvdrg)et9f z!IxnTBfo*PNTEc&2M)u0r0{!W%R(5TneGUJDkMc<`xxI4(KxX0b8mLzUdK1bn0l2h z{RP()qC;|$0=PaVY5#_DkYq9IEa`2x%K0tA4~s_zh&QNvd0!|9O3T9#LAtr<+Lk#I z-26mKL&m5|eR*SAB?`Yt+2BLXZr%@(qokp~%IB=D8=t8(JTlfRdlih%yJPyj=&-!m z)%xXylkt$;a^FGCK+{1K&UU7B8UdpEhI?pzw7Ykk;#=)YZTLL?)w})&JBNl$G2G)8 z%%_7v2N*Y4!jTV*@+WJi?nf?pjFjE0(z!l$>iV717+q}w9v26FS^Wse9}3Of@Vo6k zzr=agZ`$whgJc1Hr~+yTT_0r% zhFA5TI;rxigIU6w!|NsVg3lqxJ7oN;aypV@YH+*lZ$-qee%qYHBuJOuehaZNl?*AJ zJt(4rT&ifYWA1N!pB;C;OdDzJ+yn8adBhB*?=bI75oQK!+;q9U;a?dr=DDDdAw^AxFwt=_EFGOwTWa!m3e!MjC@cHO<3Tnw8j!i;Wwp*)N~5EwbEe`3xIVof`_yWa!8P1kWjfQ6exOx{V+mUA~o z_B9N0G`094rd<>82;KPI)*TIlm(9$6&21yt9?}Ej1n*pEQc8EB1KYJ)ZkNN~QQC8X z#cZp?h{aI{I`>xqAAT#NeuJg}RcP@LrNhtWB=sW-+}d~^4Pp&>hs}g>9Bg5qFV;EsF*j$IBP8+3C$_R>au$gGAd7n zd-JS)h<2guE=D-DD#f#|p*aN|ow1HOH<2idViKx-BG6)*%Lx6_{dGIS?} zFVhkyQxO@&O*ah6rB>b!sV}qFMC8(b{zWn-F@&=9=;~0bzDd-W1_v;^oeES~deZb;k%@IptY3=q5L5VS^ z$!j?88 zN^!p1&J%VNQLn;H+aHhWfhYF-Gt_|F-6qwi^4>dCsN_sL%6khledl+o@IIl$$n zP>C14_6Sne>KZAuPc&85ik6qWD`N6elRAH#m8D}pWt!D?3Kqb>j;g;tMH2b3s5R_W z4RDoL`pID=I&vq)|7OkH6~@sgy?syIME^8(2?5{%VNavfQ|UMHtnJ!$ZqUY9>6*w-=y@bkH8x&Cn3QM zt+Q9qcloI5Sq6a$c8O_wxa;}9?|d-7i2R?ml>i}R@5E~36^nvXWEs**3CrbsV^sOTK5SGE-Cjkhx>FnQ1 z(ne#hofdXV%o;gm)!fN;^2>d-Q`O#3S^6=tjN0EG8F3+!Eu#+Oa?7b^HYVt!o0(VQ zk-e45xxd9$DQj?qvi^)HIzIe43Y9gmo^qfz(}&5qcO&2`v-W4F5dbE6ZE;x}zlgcI z?`qStaIrQ;{Rrs|Vb*}#L*eu(MhIm;@qe!!Yt3LMQa2)_ zW+1`WS`*?VnVi{~fF@08oVpwq8i7-;YYSug@a`5;%30DLSNux(a5bB+qZIDxH((@q zG~qX8!#u#sslvl&rUI%cbN>h_9bc=^_GFZrv9wa7qEB3g|6LiFWs&qb#J&=(Tm$aK zEP`($w&$SD(s>_+M;Xm*$C^R@J#LA#X0I6A{=M_beQj@QTt>v?OSW-VAt>;h=~P8& z`C5r+hbN!7fFQdLd`kq}6smrb86^)3`@KVm-l{3(4*{Z=+0GhrVix3FCTQqSORf44 zZFF>Z!~JWUtpOrWgGN4HQ>slvp2<-);Y_?CJLHyDY#5v%uW_dDv`G4&#glxoocii= z@wgLiLbgrlv2UI{;L#@an_aPc>;CuROKI86sVX!7ajzU-H#DPmp{kf;@C7MKIOqn^ z)B~BhP{C!%Tk%LQhuKID;Uu~x?62Va(XoX2FeWH z6mLx-c*v=tDf8-EG_x0vixsmZ@(~r*GgNUBt%LX{bAGzxrjVvVa^;xwEjhtChFh~& z@OQ|Empih1NlD~4*eLy_U%uNT0!^EwTN7g|;i~J%MnW@r4Xe-G_-DTNQQzCxwJu90 zL6QIWf}w-s-Fy2h(|HRA9ax4rUkZwttSHO=(g88jl=-tKIA#$@wJ=GZ!!DWyg~LeT zMwS12pZo*6#o~uTYWrXoTZyAd<4iAOfNvnkOHAmIGV_zFfw~ZAFG(GoOEn4!zuuI1bqG(4!_U zu2#(v%*HlWfY<9>cN+Pz9=v3kk3X&L(E$HxUo%;fdn32UTCcd}f6M>fVNtRnE%xhh zgZw1y&ulL!k6~wz0mNXVYQQh-EyJ{;VclC-*nl@cqZmsk31oN!yHRS>at8zW|7*F> zUm;}|;-r5sYHgbm9o$D}Em3vfvYGJ0UvyQ{O6Ai1-;yz+oosglyoqv2Gl#-qd~7^3bcI5}{;g zJRuiwXS;&cMIJpjdLu23A1mIa0vbN%1H?c@!~X?JNyTM*QyZ2@&*N3O?_O_AenhzF zBeTFcrWm_S_7 z()*{3>c3?bo?E2?=cwsZ!KZ6CokI;4A=VI#fpg~f&nfLt7)dYj$zrUa+Xjlu{@{1m zWR&x#k_s}mw>ovbWT5wo z^kTVN=nach0aY|*4F!i2z-Fd?wQKuhYknR7LNbYWm+B>QjA;$J?Z}*IolWPE@L%Su-?jVW0 zLGL?c4_OQ?rxQEy6PQ2ZTj&E~HJrmdEoW#ZLE>j%uG6^La`ZWEU1~GoYyh`bSWiKK zjTqA^YPxyUCLvSnxw~2E?H*E~wgbZ*{J{n%_mPrCwO=;Wge}De40qpi%E2-2_4I5N z1YMFjv?n-u$P;O%9^#5oIa~aNly#bx4*{Nhv@kV8VAjjq-*y9{C6K}Qf4eNLomI#- z&&d2xr=0N=e!OKDmK5?^lede@FK7{#zsDVNkYzJ-`|fi{&<-jSN|N2oARMGc?fKIR zvig?c{(<&#TgW^P9wP*o96#D62jO^y#N1hOjl@2fCg~4Van^&m$Va$|-;JF*Id(~* z?x)dQ?gLhd!Y*djsw;^+yWr%fN9v^N6@hnHvN|(D5NAGW%H#CW`E(#3XsKTC+CEoH9!6{lk~>LZvB)kme9=TXwjGhD;R_$=gJil z$qOa9;TB9|a3GlD9Kc$Pt9%^zOr7i8z{(@nx-xyyrZ6g_PI&O$J_qXgeGwB{Y8FSUpSP(I9ARC7G8y!F4pqJB zXc`7f=A3)J>G?wv+!^#qwB0_0hF7Ur?=qXV8|_5ob%)q&CuuB=xFY?KeEmunfnzst zr82ih9*^DC=$A1!H2}l%@@u1)>|d+&piLMpt1HeRYoqc0wSyKtQR}b>B-GegNcWx9zynie|VzU47X7+!B!iYfQNNJ7 z%nOMeGE_y?$Emdiz$ez>y?-ZuN%Ald^z9j^m3hSQq0Xev65dW&9l4FKO?*@PA@!*WQu%P|Xx1 zuOK0dr*$BEk%TffN&&t!!H2p!TOm)Bek1@QY{c2XXvu5%ODogiI1Y=wg`< z-_DDePy$Pe#Qv*h1?`QSZpa2Y!hF5qp0d~O>eTTb!==d=d@k&D3nIrfHqIt_%%dKYlIw0k~u!F{p&#h5y*V?=V@>YsWA z9Fsd=$RM0me>4`f2FebZ`~;r9E6tVs_HBZVOzmLlA!P$unfxYoam|2|Ni2_X(1f(* ze3+6{OsXJueHh6E1~rAX#4OFX<4JG3JEG-&ZtdL=oqcyca9OvscDg1Afo_bA5RXKm zlpe>#{VMOf^1fU_P61lUf^P*iUyqaKZ)FW}@I?eNW_wl=exTA;qGcF*5*v30C{a0! zaehinx34m~C#xd(pz4{|y>VCZFcv!M7^&JHbDMjY^BY%_xBVNj-t&o(Dehgh3~Xgt zN2pT=H+0)_ zWGnb`D&*ZRT;te@lamPjW4;^+5KooE-oV8lgM-@4PY+ZiAO>!;EupQb6ClQMy|m~9 zp6WH(p}ZSy203?cyHw`&Z$A_4%5!6&`WaP2hwRfjSfG)>C}|WBO}EI;kCkl{bC@%HMpkczJwh0&8N(=R zF$OMi@p!^*+Mblx)?@Ixpc7;v*7MbtyGM&Kc*W7ln3D74&s2eoaOb9i)(+^ubA-Fp zf!y|%I3Bh?JkBvo32o}J7DV*Fo?0O8*52T?y<jxloo+0j59Z^;*?R+?;S ztt6Fwp?{NJxEet%%@pL}m`T~?UIbWh2Vy!B{|>0XSM1L>CJMCItWZi5Z&C9{w=E(^ zi~IiClXxo)L8Yp41UU-l{U_ph3^?yd)IA9H59$4!y&q_mpW&a*SEH@q9te<={6#!` z=6{<^V3pUD0;$)dMcZTa@lDsteiSnVok{U|=y1M{<+97NDN5+P>WbzX`xuZeloJ7} zVV02gKAvw3Or1@}Y9jI^t?fLs4|ykOqaKY!#%ZNt)Z8#zsOAd!Yypd*m}Y&a#0uXo zj~VXbFZq7rV^Nf-p|o(dZ!aV#@cll|Qwm80TV+-aagc!1p_ZJY(wjo{mP<9G2URg{ zeYL`oIn140TyA*Ob49)!Y2lP&W2fX}^HaO6#d`C1SVY+zH5jgT$q&g!T$$-bls^NrH!y7BV8Croyno$&R~ z0}*k=Y>VHCKh&|)uDVVhgn z^9(@10ZW8t3k94mY?qtt)MXfZ3QT%FGyB9mnsoW4MttH3 z6)u+-Yx@BH4*u6O#O8lILkj=L72(JKc!vD{{uj-I0RZZ}Xh-ZH&l3uY z6|7r|If2K)n3WX}&0R$UyfFq1%oGfWApd?Q#-6H%-Wkg-3A`hINiE6Uscbm2i;)2; z^mlm?K~;bNVO8kS%4-QI5Z^3;j<~OOQ|%E@%C6g+@Wpf+YtJ%Ri1Lf+Er9dRloY@| zDLn+_j#979AMPBddAneldQmBEdssp9^Ga;Tb5N4-!?q8zl-95lerf6g{&C3~m`Zd& zt{D&)uih*4>{UK`PM)N4yj6=jvj@oDC}0&oJBHOe;HZnj%KxrZUhL({=C??ERpk-W z3sQWmQ@<0}UIG1ym49!o-Mu)CQ2eILiA6kjIsZ#FVtb~PQ7cpnbuk9*NthMZ(4ipU z5Rn|X!Lz{G{nuaePu84n4q$%JFK+fmZeWcR!WxV{W&*>6J%KEI?N0K4zjj!2*}ex# zJcYGHHq@OEacBqik-mKiFabJ5)V$e-06Fy8AN>I1pDj54oDVYY!TTR<@K1RtB%iOWdP4hV}p6ETxAVXSfrul&9To8~3)ZoLm zz!G-z{$uv<(sHMSI+eBHWua(ku$z^1QH<^(+kkGfy6$IyN%yAu=D<33vQ zYa7U%q0q!YJ>EOP{5*n=44lkN-fAQOK-aM+Tqz<_nE4M@ScE?s=$I#;U3zk$TCvb) zVA#-Y2@EbKmdp;kfRn`7EgeH4NXiIB4Kq*;sU8hXGn)Q*m}!Vr9;!B8W?%+G)Hx1! zWC5Ea&qLaoXKzm%*6kdUd~>n7{x(EY-XmCY$F3DmuGo(iwJivBfaO&6H_$c&ZoaHK z*{EIGgw^w0Twr-u+aw5&T;D#WEUF6?(A2^Hxzj9 zh;{iLD|>kWdXJQY7gnj?l1%34Z`W@AuME;?(k)xk+#bTL6DE3Wv;L)-HnE1A0uEbmc1YX&Gu0q6R$ODm8D z;?!*Df(rLtzOS*b-G8Zx<%59v&tHddFq;dzC^ZEE;v@`&-}i6mJZD3>7T?k}>5=l* zt-dH+z4eU-e?;CwetWl6C<5!>66OmW-Rj7iJbYxDO39?R8oNqC zTY)usP=e(gl@}uIIG8EC@3dn-M))36@{?p?4{JLhO+PaMF)boi*yA%q0qkliAaUK| zMG(j0xjH_6&ZK1@(#tW0jV{oDMHFwpmalFsYrjO@8|$eTP(!nj$4P0SEIkdt%>hgx zyoaQXlY?-AurTjbX=RUmOO|Lv)6KG763`?D( zdf*eZ8T2MO&Fg3;SjR_9IA=0*E2$IpUNMC)U}RNTDq?rj5O`7WZr7ydA{Un6GGh;! z=9avv3w|7o=VzBj4x}^~oQr7?ypk$)_WaeRTeMKI|aL4#$&DUpzF- z96-0&4*|`E4cd@!$?(M9y7|WxikdNu9`soL^gB^j)u0EMh%X_?%VoAhpYjEcT&u^* zL-CMaHK@~whBa3Sg(6=d5|pc0-gCBS{p@^%jp6t;om9BF?esS>r{!-cY$F?7heQ-9PmF&S~_l$BaT{JuHILSyL{oidC$ znKN3%(h{GgV(EtE zVW53=L zvaBZ!N+(G!TXI5gYgA^|QgkIA zs4{LiXW>@q@T|DNrN0J=J>gni0jvoy_MYvyd6Ww2)mu7<;On8iH$%-pM0!%QAMA&w`Ra}q{h8NNSrtQJ0IOVE${;N?F}wjHpxSfQ zVcL#nw7~{Ig5@I$*BN9KsF0(TO)4n9XlEE+1Q>C83C&l>i|H-{I=|s7@=^ zW1Idk^8BHf94;tet{3J}%=EBMK{!DP2O`L!-V1Sa%V?T?BGV~&ZNsZ;7a4~8(K_nY zA=!W1wc}#+Wroyod&GtmTjliYH8yqXn#{+6MW51oTU6M_1`W=c+=JLYFD|hGbZ&is z6CWaX6#&0`R1%V6x$~BGy1}m>4ECI+HDEWYAQ+VOI+c>@+bu;ZXbQ>Evbi0^>6ofk z-)bXlz*5f>cAB8G3Px05#24Uapy%gpV)cmaL+&>tU}>^=2}}r%X-4A=hjf*eBhR~Q zp;|5c%Ax*Vf!HJcnyhb8bzYTiz`m$DR(rcS1zGCAwl&i(X>3WGA^n9JQ{8mAE|Lrbqi4r-n+Iv|vfnolqwn5!!<|s+rf+%GM4SOH@xe7 zL3L)Z3FYxBro~J9;BB%qXTn>YAh9^I7wT6(mb?!ctpuH2J@6hr|YhUIzUv>1w?SHSyrS zd|ij2(JMX51?;Zb)02LrkT0aY%;fdaETIrh2gXDwD_hAo9<;yiKmyykaZDL?$Y6in z8Dh2p34H(Ac*tjojZy5L_sP9J6*8%3vQRlX#fTKs%2hrB4&Q%%VJ)S2u>;YFH?X0m z)B#S6*sKsS0bq^&p5*fKDTo5)_Urm0%3Z>H7Y9j(azw>_dt;CPYojo-k!1s*2yF18 z(5C#wrf2eFB`1m6^vDhBtHiSAq;&=Rql0^Ei`T?uWm|xE5A3^QK(}YdJmYZr-gTth zA(n-gUBv2l{FWH1+Y%wu!FoLe#NfQ8Jf168-duU2@bI~=r<>L}AZ`1eGE_N<&={8%Td@5ZW z+lM7M#)$;cu)Cl<<|4wjGP+24;yMbbRsdxoxBbYKz)%D+i>baofs~$&?I<(hh$8rDISF0$pv!?Ru@^o z(O2=T0>TFnE&_cDh&rJ68}kJMQ$D@0qKv?_9xhN!w3fovv;K=c4DMhZdL#Rm>jN%8 zrQfbI1S))bYQz-^XfEaM+p4%<58w1{aFh((7)-%+!K^DbdNtEe3vwNQVPbbtN^6l% z;AsL%0QIq!)YP6AK(@i1hg2cs|6%Vvqni5K?NK4pq!%et{UIXK1f+LVP%<0!<#jP|I!$kITB@En2YK6QJmFZ^*f$aSRv zT7VVIO^B;aXCJqs3NPcBn>OsqUewzhVO^($N#053F)s9~HUv|d8#5iT^8IIZQZhn> zVEYJPMf^k76iGQtQNQ{kw%uv!d1<`#Ow&$hrE1KP{9M6DUip(`w@9)6gutHdY792fs6(^EAD;t}*y-IwO~XlDk`SHu9NOY8!17&9U8G4O+zNP^^P6tSfj z-Tc+Zd+ZzEVsQ__IgvXC1KXcod{4@EhlKs-1j3{QZ5|=rJsQNdi>zyg^G>Fu7E z6H9n9;V0o$pcbiyz&A>=l&>f5I(g&<@KeH?ICw5e_SyYn@5L*P>!!C*vK;>m*o<={fL3e13cH9A(qZ60j8SNArcSb^XrJbq=V(+6OB`SJ^59{A z8LQ|#ILhG$YW+l6UD*^H!x^mZ0o~X{2k)!#=|n8|vu}oie}{VL-wMOEQbX|l6iQe) z(kFRg`J7NGZfJPo97ta3*SCKJ-0CAkHb0TS@CVM3#dkW_KdazW6~}SGY54<~xZSKp zc|HTxh-<*QjPFX9hrmO}RXgC1h)PPwf}*bs@liGBtchy4wZ7igvDMP!wEI~;s&k=_ z+;nIKcs7b_H5D0uuqeJ`I0t`umTZEp_2%>R`>Zy8{v4LX$4RK1>dv3_qx-hdl+co){-nj|?*FXF021ao&Sq?7Lyfpxiq;9XTt=)h4Hr3?nJJX25 zLE`q*_0zH7oB@|`N+Hmj$10^+1oY{*WB1jpAhRseePiq)liQnV$Nac23BbCAgy%PpTmHT=^br zX{tO;;Y^3FftfT>{nylW2f#%r&R9f+zolvHZ8cH}YHFl=`|5&<4hYt_}Uz=t*0+5-$x}J)3hfUC$Zj zZ}`tLSpw(y%S_&Axs^aoi@BQKw<^`-!#^w!t>8+9T?_I2ao|oc(KH-e` zzu7SVZ-P|+^A-O$!^Z#rcl`Gou>Aiv{Qv)Q9I;|^Sg3vhz}8$@0K_@|K<%%d(aU21 z_}^1L*ILCw%)1t>m(#o0rE?d(Q*KH`_st3`Ei@y!cnFqJ3Ea%UQsRfU>$>h zSJ~K$8(G4z--y@A>(8zgzt0Tr!!z+A3AQ_3CqOdGU(zM6{1@5wUNUrQaR*%FG32-R zr{C`b@_6xLVcW!b-YWosGW`O6U60M|k!Zj?+J(cH2LQg?-eV!yg#NMvAoKI& zXblV7Wd*=hr-a>0tZoWmdF)f2>Z4EaJa4p8n&kyRqrBmX9|o5B2CDohtXNgJb#f2< z<2Pe#>tILSHJ8+iCt_y8QhDHs&->U0cNOF%*8Q3T+UvZ$0N~KO*y@Kb%#JL)>kJpL zt6fuO+S&w^zLJr8dCfB%(VfItpj_FjN{FpT@^Lj)Bi6q--UWmfRhNgKhY~eSn_kYs zhIVjqA!KyluHM@(J>JRbZODj7^NIW*snkM-WqM{Lb^vK(Yy6XMv=I(bJ$C`m;Qd`7 zF-c(wKL^SxEiqGCbdAGeYZ1AqmWz#)x2s`H?$aDbv$vRC$fBA7^Jybnp{9pS`=H&& zd~j532F8-3xgGo^JPKPPf>zT56me|-Ny7H#9FRgcG%@2BiSP3re9`bV{|3Vfp8-XP z%C?g6x_&g1`?uo)!T0;ZwR=pb5}N8-ty^kN21L{!I+D&jQ?(EYK!+KCgwhy+wWF5C zQpuRyfkWtPY+b;YQ_9iMr5<>1fTEa5^+hWY-jgrwd|2*T6#=X7M-HQqjyf+cBtW35 z=L~fErLeAr;$KieTn~X;t6m1Z_yhoc<=oC5U$BP4;h4v6;Y_>-tWvd3@u%Y3|7>bm z4b0ow&xvolXWDxJf-nvOdD1M_G>!23Djfw;UjRlo_%hc6XhFBc-~$h3`1~6At8;AQ z@*&L_J}r^57dg>F4V(5_K<1r4bNO0(Qwc!`NB$A_bYE`I7NKQor9Y>(U?4y21*A z@QtW>9)Jh4`Q4BA z-$G5-uomH~$yn60s%l8W?htrSmw=0U8U#3nrDDr?$D0T29zeBXpcO!3z>Vq`zyuJJ zyuln>|8*yCglkT8wXgqK^DcC1n{pV?lvE6-RSu1@akWYxAV2Aa;Xd~ z-+I$|=EKY6ZyL|}$2Jj~(2NdiW@j$eMRKeb*dRf$&cZ#_t8_4+2!V0(CGS7_5v%^) z^rQS$(S`E{m5d+xk{M>PFh5;_ABNS{08fbDw2|!s%7VumRuK;DY1nG$HK_|m z?HqUpQKxZV(=mcs^0Mbin(OD^zVl`dI(y?g#}ngK5KUb1CGug<4N^QNm|p>0iFR}l zI;|K^Uw=TU9`1Vi$)R238|&?LKEpeuJJQ4E;T2m*uVJ4JI<9wf;`e62p2@FB5)tW-uP zdz{7>A8aKpxEut*t;K+VvSzdTAw;jfLs-MqFpsCVCsY=*a#7dC_intral6QNfj`c> zgRlQcberw$o0A#~BI9L#ykw?!zOu;$A7G`ewBcVIY5kS-VR;1O1*2D2_d)u4#o1Ni zvpB}RK$&l773q5PcCk+z1gB~67`uaPF5&p-+VA|`F<23XTRPcx*#=7n)bRSyKxF%8 zGYlE>g+w#ssX&iuqT1fEUS5RGpC%#yclHBKu}VkYe=B|EUs8X_oA#o(mVE4&-q;8~ zWcNQgj3DhL$hS^@*0p(_H*q;ORKPjVV(ZRc^}(my86dy&@6sXDffv9JVQLHCX<{n+C&1t{Jac)MDIY}_xcGNoBAMM4L&4c`1H)u5?`f%5r+6P|;9p-SlliX<& zv;)1#6xq-vo+0J^fsbTz7!U!(!`NN<)8EN-HpQc-h0CN~&N1s-o3uOqmJoR_#J3mI zXt-@c7Rm(?{*Xg_AiB#7S1|6H67*+^?OFS!PPpLKN)lmVfdOP3tB+LIu}X(uHS+I* zyC#G8t<$~U@Aq)YBz7E7^2;(3Ja}q$kBZp=(0BP<%urfCropoHsJ?(#*0h~|Ly&ZdaVmrKr=v$cV;4_s`iCv_{s_65 z)9*2He#$C>paiOYGq8M)Nz|9ECpH6H5mw6jT_SS%f7*rj$p)VwxK?kmk!*e%ZWlJI8#r!@a;a-G!=8Ll>D-=zE^coCzf>()SMEMWgv_#2;E5rDgCQl*P%r z)x>9|!O>btvx|1?mCvR6obNcdzGxa)`K*WUJ9mUCYk)m;;N0}FWloa7hU5CuPPT{= z(t_GYH)%|%dLPy#)+rhT6Yp$p~Z(;q2`;psC6i_Klo_GOj-+u0wC-)*UKI~2hmTq|a zj{&E?T~ZA`4L9}HIu3Zy^P30DM31tvMZZ`74ZcU|2BySf-u3&%(&yQII2Mmnai$L# zlY7;6HuSl&vakOGnFR_T6o~O%x?`LNNBv-j=HvWhMMnkdohQ2xao~Jijpv(_s;f>g&1I5qov1=)n)rQWu)W~yvcd80^l03;%^T#* zRot3<>6Mn~(J??mR5fr-Z+Zks`8SIGo|@RUAbr>YPj(<&Xd02R`ziV3N1v1B99>ph zq*oX*1J6m%I5l3Y){x{xw+ip`@QRd(Y>$9i{cku&fqzV1JJ(l?B~ zI%S3y%eUnn6o!#7TG(o^`0O%Y7Sl>r*Cy@~hH=7h+sQ9qdy}}HvgixF@s(l;&~#Q> zG592Kcx5+^efZ+C2gUT~^`%r-ob%(Rn&T?DwBF%vkEF{oRXStcYeFXbP1|CRd`$<}nye=Ag{;R5Vun?=;QcZIwZXH4vIaG#xV>~i{xB4d_U5tE z8C*DB6z) zlH=={FTDT#_s55(s%Oe#q))ENyfz3g0m?*8Sm(C_Ds}daX$>Ow(iEpwFGo*X1wGce z^YnJ;)8}ut{{et^GfuMVCo&h0Y!?TgzMqt>j6`Mmxsa3q1XTAYj2C4hQ#})v1vNNO zKj(UY?j!$e~XO)a-0T2J5b-Gd96m9kIY&mrX~~S-bhE7u`0}a(FHW2~_53;xd_jvz45T}> zV0!qtA%fl6THA5S_m9om%S3i3D|3~FVaeNJv0x!U3~5265XHpI^GlKt-A?m1qH364-Y%kF5+w$w9k;n}5W#^|@0e5^;O|MBaZsT@EyghW=%%k+ zj%_B?zPP*u%4ZdEj;Tz)(k(hmr#c@ZocAP+kP}6SjfM(gVp$5MV6xZrn{3OM6_q0AfuP4 z5&6pc@5+xI`x zjAc5y>9bCjK5Ewb^f%w4`*b)n&-agWv%+P>yE#Ph%4#@&`f!k5^p`b~8G)>nJ1;o+ z{mb3;++J4bSWs#HLId{J757=-L{CQ$tHDeb6rEMh)~9fQJXfAa4OSZy_#G0*&7~A; z5yb!G)|W%EJmyZAz<#jOlI6G7Nr~Vds%~&0T!>|B`GSd)Of#D?nzkB~KH`2`s;RGI z87?N*b9XKBFpJ^Cg$(`ptYwrs8yWh@@#lSmxEGF~bN4@|d1r>gtQi&K1z(!K)pM7; zH#{<{FLwasae9(GMLhI&+++m12IFaw`l5XYn<2ycbDx1<_OM@s{=-XBb7tGd zdncsB0z^EAt9@arsR7!G0ugaG4a2~@+c&PVpCftS5xi?M93Wm@vTGxqMxIM*MGRYw zWS4K$*>X~>`|rk$kT(2dnZG+zr+)GdAoG(`k{XNT&D2}VKBLqfvzUJ*^;=oO4RfC* zv46EsqMO+o18}H3>5uyZih_T?5#vkfAEwR5iIP;mUnVD{**EMM>)vWj7S$DQr58WA z@(rO=W2arqwbQKO@Y5(P=%a`D=79_lHufMlri+G`yHB#y9z~>Swga_)nMQhf&##9^ z0S~DhIyA5UDH%xE%tTVj;?oKsy~ZdV3nBo5;rT+4j3EeU>Sy%;!lFqqvwXgF;Ww`Zb*_#LFcs06Nj)p;50S!LjG#U+ei@ zhHqb*cfQ1=8QcigIzp0Y_J9J#`yO-a>l^>dH;UMu70?T zxow+F7hg?B>!E2`mF@i-3%Z(U2cRE)Ou)C`CaRH@lgeVc)&U&uCBK+#LVaq%v~4?J zy3=}Zig|}g$wM6x(yZ|M@g1ep%iC#%0Km`@7sX_?wkXPWpQjt%s|R!(B;Q3uTSz$L z&h*z?b6$>uwdeJxYN|d#rTk*0`hMr@s4kF33s2BlUmVgYVh0*#+?F8+}hrR@o6GTj(wEO^I>(8{L}>B zjUD)@98AwFM5kzPtsE}6coGBIwQ`8Z61?N}{G_YqDa$Gw2hs)TTf1c2W;vO;CuR?{ zgUng8dUX^eILBN%KT4++xBeBbdPG-}K6Sm2$9EL=*_yrn#CW)xOwS)eREaA`)cgZ^ z8HgRH`>Ps!kGm%@L&^1l-1#*Qa|`As(Hiy>>W1A%{cF)v5Mc+Of&nX~&yEs{RQOiz zoM`AO$QsmC26USS#+%-|!>su9xlV*+S2xAmhADx4uT|E!goX?#DZQwWK)jH1mYOvY zEvfbT*JQ&z--(}kM#!0*rv4IX<+O@EmPtT_yHVF3%1}V+C-Lo!s~=-Wk4DRun81RQ z<|lMyL6m;znyN>z+V1|Z(etDEB*VFek2zh#GDF?7xM7m=wx1k$a@0OMVpO_azWD9h zt_K=Oku?r_n_{#82c(g%R|7zSs*wf-^u9Vwwz%7q0=@o_={?u5dY{|ovWdpA>lST? z(rceXjJr@)2S(S6+SLg5jk-TqFbSHBQ!I_p7m!X!zE5mwv4gi)-&Gu$j1Id}eLJ^n zQ9{~^RijySXI>?%Cb8-sl7tdk$WmsRH@v{fev;>8rI2tekRY{hn&`fJOpy|yQ$-q) zuhKJ;jg&wL=({n_z_*ER#yEzOJZc?%kf650!x_X>R#@En7vq7^cy*reM~f4?8zb|? z-PO!CS_B5re1kKFIhsaTjddwHjOz+b5jukpW4I~RvA&>__+jNa`leX-4W2Ng5Uvx_mB8#ZtIvfkqth0#T+dEZ z!Eoh=1?eKwOy`%0hKV|-M70jZu{X{SK?|85E^pTuH=rl*5kzi6!f_$RX-F!S_@?*z zAEK?H(dgbLKEF0nI9cm8f0|T3%QTZll$sS41;zN$$NEj9e70#f$g1j=SDf(CG>CEM z{K~){?PJ#e&QYLiXJglLU!PkX09IaTxdomjj%`5dCa1v@s@8Njcl1!wPU7X z)%*7R^mxt9>*eL;bJVCyRL-#CKNE?IutT~2THFP8D<@-P5X-u_O5pxCt7^XKH;^Tu zc!)ly*9lw$TdI|Jl5IEH)%Me<=0+aR+~#X-3B+BMYqCTb9 zg4iw1e#i=sy^kPs;~%xovF~d1XbE+w>u|qn6Bi_AAiiLAbr>KNVL<2_>wm}D{pnTL z8eXQ=@^^rik2Kmipj%Xu2(A{#xmt+}R%?-wNX-IyEjMxM+`EWw`pXuD<$6xsyKTI0 z_R;%|g>y{zPla>bAjJ+`-~;1SmFg*?e<+Tykoa%5+i`USA_n$3G7B#!JZ6piMOq2+ zm^Ns0`pwlD#liy}7u4oq=`5ce1@ra4>mX)7vDoZQ;+0+oB#br&I;OUtGn?n1-P1w4 z#m&b`XR5sCs+J^m3nb94y$kqs`>42)ro!b=1%d`&!4yAhc-r!o!Z6#y>8Dz=Zx*$f z3wAz0NeomghAt&$xxjkkGm@(;=iBk&x)eFxMv&c;?Pbu+{7=gq@B5PF)n3$@853on z2tqP@YR9xDFFk)kXjD#J`CT!9c4m^`FAs+~PDV;g!`Vecn{MOVOzwHX+k_5@{p+DSs@E@&Y=mllL)3ICc-N(+d*|KwzlVVIUXph2 zj|0~%TErCo?UKVFt+)AdFt~p9ym;Q`HewMN1oy(H^=-UxC{C36?ctTQ3%X}787j(R z_6g@e@Mro>Yuew*p8giuiFJY=PiRJ2rYs4;pP-&(|7V)Gmq2n7v~1pIM3E$pfRCJZ zCh`0-#thsH6nF3&A(lXHy2Biv1U$7LYPpLtl+Kk5Z>5gQFv^u>~f*lMN zB>~*YkAn59OrMy%p#-ho@NCX7fzR7(4I8Ys(mBC~p`XgG& ztxEm`*yLr7ZTrY;%mq>kE(3b}e+LS$Q3-(^DC4F@b3=!Zg*T!~?~SJfX_R zNAPVoH9@O57uac#9BeC@{f7i;P)JTsZSK7L=#9H#A>hTNjW^tzmZ4)lcUow*%y<=P zHupb9#9K~w@{{jQcG_(cza0i!xf!=-QK#FuBLnqgCn~%-?w|#~4DFW3GQw|R?u_?Q zt{ZcCCdLKLHWlt#r+r@- z8#c+6W7!rE(A3JQ;pmPw7W z9+Z(aF{eJ&7n-uXzujQ}cx994-Q1FnYm#Baqj2%B-s+iib74Y{NA{QnGNc7@GgjTP zR=KIv=R>eEjW={%Pm8Ix*Pr#hg9$!nerp@(SSp%IHoW+Tem=r=LHyo*RAZSzsc*H# zW?-BHUSneaA|bH9Akw#ee*w*jZoVv)h#t@a;a#JL>N$`xfn!us=LG(9%Urb?KT?YJ z*Jk9t3orLxdW);N4b)aa^)*5_MMQ z4)d>OxfG}Qrt>svAM}b8wV>MZ7oA)1VHOK-U%(YlmnS5e{`>e%Ku-Z-fZv1=ky*uh zX+m3%mfs??%Y-+>Rw5SnEs`n)+N+XYEyGTJ_Q{EMnDf%%Huyp0Sml?ViR!%;$!#*O z2#}dmTcvhYl2;uJ2II1-GfbdCpNh5Medu2KgD8jfIq&~fSbUW=k z{qn?z{Gqg1E)lH^VFK!Bhk%#L>ABHjLv<@vj_(A2&$kz{GQVrv@;9E;(QDDV(ztVv zTmd!6qw{(RN8dI{{2bhc%<;^CQFB>>0>ge{+m3cBv_rGuR+=9B8|J045Vj)X_OyaA zh^MJ6L3K;^&MG*f@Q)Gi$eua@vv3;=WP6-v)W>^>umQHD!ccfSV`2tG{==SogjB`S zDYy)0i78B&V2wUdf3Moe|LT-;2zzsvRg*aWDvA@PkDK->d(`507CK#F&M!fOCxprl zPnMf%T!(M^PEL>KKb)C?P@`+TwTWE%C$sx1s1GYbNW{lD+y~R(Ry;^o+#3lew9!J+ zqh*;^uUK%H5B!(aQdHeXX=TYnS1g{-s%G3H``W(%#tO<<3@5|PEnU~TEMn_^>@BZm zc9uWQ4g@K@rwj}t1|+Mxgp^y~mOH#a*)eDG&!6F@$@;#K=+@b*=pwwDH#e4@B)~j+ zTX)>cEknKp`571)SGN_*OH>(YiDI%)Wro$TkMpdT&lEih!ANy_v5k}(CRy;vb(e_p#tUM*H z7aULbVyYfe`vVFG90+*XI`?>u?`2~tD3mWY-u1ArN6Q<8l6HFT{2?;OC zvqN+<4fDBiy5mG%F|IOCaNT1-{@a6oJ9f+5ZTkMXu+Lt%fTquge zMA9yX1fa0IacJI3<6;=sxBb!hc8@w$Ww4a~JFmez`?z>z75n_x1pL*c1(0>xIovcDXGpT5( zE{-96+-FCWSn7V_8ky_24IJ3KSG{NdahFr%-W%T2i<={yyKDc4(~!zC2-s{0h7a&E z&@7&L_u~>Ahz%h82nR`at9JJ*iR;%}GCQ**vr*~KAVRk&_T2k>-2N3>?z`TR4%Ho$ zKw$9zIa<6{1qJ_~Ss77|`M0dhh>dF*#Iq-Krhq7T3d;M({*_Dzkg|>W1+IbYm%m62 z)!Lu-$_$jb^5HH7+-mwLZvPcX`MAJNJY-P99li_6gg75krn8uwI#T#h0X=iQSO{+S zyJwUWt*lDHI}C?oqs3gF{{66}(ryI0L_7({j>_j@Ck>xJZ|#LNZ)ig(ht+6tLDpTw z!<2!H{AI$P26oUwfNxV^1}?i!f4`ml6pPh5$`vu8N?KCD_Yt)HvAOoa7l{#$6J~=z zN5Mm>Iq)5cj@;YvL9OUs^7Xk`iwnx{O`yfC6d zgm74`>(}H)>iftKO`2@0hTW^~{GLWykfEJGF+w@QmBxXX&*of1YFk%^nk?a85NCu$ z{=Ta3yeI-KumY*JxO@Z`VdlxSH0A-R_X*kp$6Gc3V5*&e9L>qLGE`2sj%KFo&Q;XV;u zQ@H)~aRk?ddS%`lN9Wk2hVRBsyH%8dglR{dD_a!L&<~M%X5kQT%94P9$0boNG))|2BCN`tie^ z>U-(mg-U`!ulwEPTl+lI@5rGPlrqRvw-_SMgzgy^JAqHmMaa{S_vlY&z1!uvY`&0; zyc#)vIs(y5a=EvxDL7gCI<(h|_t+XZUu~@py=ewPSx~?A$r%pS?ke4GbT_DYAEaJU zw#z#yjKgd-{66AX#Uw71!Odnt?YRMWO?$bST^*$7SsA46AH*;WF zP!EMK^u=WJs$bm0sSI~o@4zkN6ze-Z7hU-i_ldUUBkOwi)jye$iFqHWFx=u-mZeGy zOqjR+UC8T}7MCn}lEvXDlmdhbINjsLZDFmcj-V~qNu4N7G83>|&*#D>jPdj6Q3yTOtIE&FWKY+Q1GJoY605{J~oi8D?_aQJ__;GE=QF zH9lo4FQPZQ=rhW8+Xb0?-hYK!@?T9`ID1su`gUa8L*zb41yg7iHz+sddqy;peti%s zTaqgKTN^UPUiYL&k*8vZqjnNM5$(@FJmbjooPZgq;0{{&9LRxrQyQOZWJ;PPJnJ)E zX&Kc=NVes5<+*`>I<~dTlT}N1w=0sT)cz~X3h^2>i0|RtiQmG*7~08wpQFg$$=4z4k4DCC18DFfI%iGQaE)1IC*+KxHr_+1r&e($(@=3H%mJ~P>-QM> zJUSTlV@Tu>DxF%Zp=FhspP4oM8a-_Y%32%Qb#mlJ3b=Cafm3k<9JDz@_F+BR*U5JP^N(*zVi~F(CHWo4LS`9B4bx+Nz(;NOQ)#gX;h$ zYd<9Bfw;6F@KncULfo^&I|Aqmlce;b6z_}H`@l!NirFRGTqv{Vd0=tBZ^rsL>wD8) zIWXs@Rs%?K9sQ7+Lr>FxA}{+@Oa!o7yb{b9>;B@3?ctA_V`h-gnc`B%euU*^D!3`V zB6{*X6!>!MB|odltN1N50kRM)gKPF;*;V*A#ev`#X(pVX_E!=H@4)sj>F$7}!NSzlGESY}H8{U!E| z{OjM$2kaO9umAr2VfQHm;_pNLU%&VG4!qj`e%S*_HT=fd|LYp;XQl!8;{Uj;Pdzqp z|9@O&ncpV|{?9Y~`})f9|3!}{z4nY1J+gu&KC@$0X5-i9*0CJ56>gKmubo&LW+-4K z_*NInxtRzE5TNwbGcE?K%a}A`EK&8_Ma9s$Q^Uohg!r|ViTz{1Vf66eD|eZg?+UT0 zrzbWfjGD?*Ip)$Iqy*GL0AF6#*7M)|GDnn{^ACrBeePEM90)*Yd8n%DZxyf%~$E41sIdK-k z2Pm3Qd%yvvpkad_t2lS9^ed6ib$fuxuMhWTDn1F%Z%Jd|sD*vV+ZQ@s7=Z5F3_RT7 z*-9-EYnpo~5EFqxo7kR-0@LL!FvVha39+5LwC!)WlQ`Y)oJF6p*>>$!PelQfo}dW9jJJFeFve`?*+4KHyx1B+odj&S&oPbnwWi z+rw&_U>~X(+)UjX&Z==1TSbdF1D=HcZ#dszXL2RG?^#ubw1*Vna5`N2_r~>cqiP3p z!zx3Z*co$W@tUB)BO{!z5fN+*sHgbomMw934Aye?84>D*?qYiqjl@}g4y4uYRYi|R z@)slHh!{6Rfjc?QwEmr5m?-Q52K~5GTE`;E(lo~K9@3-&5WfxpHoCqCSqwFHhMYxd zF|W@;^z!3QmGtxD+>5VfjV!sRdkP5TCk>jIhVdG zso^~q3$;RFn|}?HWxb`f*bLo&hT*8- zau@f*Tr6Y*40QQb%vYwSvC8iFZtG;sZlN@$I6(`SPX4hEW=w1EA-ZS0))<#OyRgxp z!zJdYjwQ>V+Z4^&0S3sOSgj6t{ZTq#b$s3m$gmE-g~m!B0Ic^7oAD63=4Cu3=HSHE zlUyZ9>%TG>;{ME25d1&l&%H2!&9VeK(xnj~p_60PTyrj^HpKz44}b|s)^?K1UutCf zX-A(N32^p~S6l&I#T+&06VEuEJ>vlIvccjeK!IIc!P-{m2p>B(A9imydLIB{HAnR< zdah$p+}Qr#!v-1B1E7aWmM^w9b$M=!B<8L{a-4^>br56gHzzogNUOZxJ|KpZBYcMO z{k(={7=IhkT9gX)7dWUH%wk$k*s?V0InFpOv1W$+QIa|O)(ONVEB7X<{h^Fy9OB^v zth!88|AP@LdF8Zs`|>S<9C0WEr97FliYR8QbZ1_a=VY;o`#C_!M;%~Css92;koweU zwmnp0V;bnw^*H&)#o2CU=eTPWyA&THlA zQA-@V-CE0zF;W6ERo7bM(i$|t7H-s8gLTJ^YCXNaM4F0&pQ={nmX)=lw{u(`ghi-( z1B`a>bD$;M9*$w##+9aR)6&IKxue#_`j-KJXNjpdyjVB#POP?zQe!YGle7)!1dtjV z-?`nW@h7B&`^Hrd782a*3mCb8OEv)&30CHKa`X-MeUDyYTWOi&znGeue<97ncyhXt zx`28|c~o*?7?HfzfUie=%U zC+q(2%N1&8X^F_oNjKYYk}H`6*~~_2bc^JEeU8dmo*dK$j8LET z#z0%Oq`O4bc~b&!wo#djql`S%0VIv;t5O&ojQh|Rq&&>IRQB15j~5bXoWm5%e*j5k zY{r-Uc63SgC~DJ5ufCfeS=Me6R|d8rPYw4UuHp9{4TsLgT&{6o3)?v|INmX5?QNJV z>=MxB<;&jq{Yc9&ifsG-ey2p&=;GC-%CceC1-9X%-#I}^-m$RQ8u0B_@(A>PltzsB zT6jjhpstrW?Efv>(2?%0YIX`Wa=Z{cb4rE77^*rUQ@ur7 zU|#L?Sh2`(<8}aeS5;#2K4x(isj9y zi4D=S`;#+;i)ElXoR3{;BlUGE_cmsgrB2QgKMMYVroeJj3<4Cin4gkRsD!$|bNG6)bH)YZAv zTd*x3#FYhF5JdnWn?Mo{Q?R4zq~MUGld~Ve6f;B{!*a zGr5u(Dx34*wfGc6(tmL(XFMiDWH6G9TEoF9`@TCl;sH!p-_2fi3Z7%@TT3Tc4JJ4X zzgM4%`h1W_9*83Ini2W+W*J3Z4`_9X1bVW>Oq`J3Czw?)2M;?j;2BB^Cz2lX@Zkg+K?CI()QEI%W?bHN#EN0Z1<5$ ziZH|%nu_~sq=Kd^+qWe>bHcBN4|DH^@q8-ARXOiv;oisAM2!(fM2N#|bnekor#53Y zdaP~chK#V}5`qn}&=9r~Q&A58>QL>em4~t35;TR34}xkxQhOPj_4o1YUd8<1d9}hL{YCb_q|T z&eIz2pO4=0iz(b%diitglxV5%*!adXL{Q@TyIq;Sm-?6J25qmCU#QEdMt zsaZj%S6hh)2=M9?OdiT;3g7j7(9YCmQFUdEi?48cUBjbmRp@YpL%K~rx4xv3d{M(O z(&ns2IFMo5YNZgU2Bd*gN^$THl?>^4)UVL$Yv zqWE(jft;naBL#v)b(}O!^0E(^$w$wlww#A&_xi%N@RHwhl0XXGBl0L7@jP)fBq^bAQxjRVxn=K@Fq$fds+~zVsG)fk8INC$=&%mBn=R*EfHJMImOw0 z$p(AKJGaf)37@wow5PD#U=>|f#iebQpIb3pKKJ3Zs#UjAeRf;r!tqmbugyTa947*D zkf{Gwxi6uG8(S(8Ulb+?-NP5{FE3>v(2)+ICAasyfk=<83o(4Gm8_+ z?!o=!iG~)1>klbKRoH(rDL!3olso-K#?+9Zb@W2cN<-+EA+T^xo8Fl0RgI>9bFeJj z;OAy(J`;TXlsFwVVIeU`_A^T&7V53DKzt7Ij?xNTqh&$huj3fg!PWG=6YBUi1h*lE zwdDXUNQ&|tkN1)* z+2!@(>CCmC3G#cqnx>#%e)Fi^HIoB*QNC2p_jZR@Q3q)prY##tZecGS|Evc}neI9A zGNwa6evnu1683KiK>SJTSCI&a3VMkk8p2lHO*Qvi*Bc|_vW3H(^ox#bi`7!@56KM& zRG|F_a#x5Qw62mU^MxaN^}L|nnV8&7Cn2}xol&_rE%NVbXprd>cjX|^&&f1d9waWa zLc<3u%fY33exiRbW%krlC1&@YA-P)+bi=zA#Eh_sqX!8WEq)mpt(j(fpve(FzJ<)R z$qUdBEfQE|n01!#ICua0nA^R;cU?xr5YfRrJq5PG4@|tsqj7QynV{Kj_7V9!m8CIB zGX30qyXiIlH`w=;*FED(Wj=cOLd|8WUK@&o9c;@~o0PXFEnIOI;!F#VCpv+ckW>aV zSRs!kjHl96loA&UCf975g^BwFa7y3*Lrc!viQZX5jtc}nsw zxAx0q0d|9ApACK=Do6;2;k$XPHGdzNntn02sMEcu57boy_hE7gg{5`4@~N}1r(G09!tmGGo(LM_P&X;-v8=9kfY9m^pi1hd}4hveY)@Jfvs z15$r^ap}c>-bH#ZCF~Ug9Fv(P+8p0sT2~VEaBB2Gf_BqbZq@6hdZ_IMrimU%sj9jQ zZ#T|JOWeCls(BZxer)wM=bq}@a|yw`Ciplj+UZXp3)X>%;w4*=QI-T0n$4BnxO3_@+xOFrcMg47VgJ?axZzN80-PgzI#(M{`tOgGaLSq3u$KnZ;UjvLkB+pSJ`ofKnd#Ul zC8!6pj5ikGHBKg@&{JD&x$c_r9D)04bHMyJwTL6#A`%OLC=n*vZ*fU=J!_BuYtTcBtIx`{ci5sDHHxcbv(-F*x)iC|M0-3wm@x-n91R8^ zk)1eW-K9|iKEv}dx#_gR<>Xq6cv)1CJH-A4sI~M67Wj(P20?NQUz0GP219JB(NgR7 zZT9@&8=?5r-%IK(VD+*WC$J=4> zd8yFlAu_N}{B}%4>fqC@CP)tb4&D9i* zqlKhWsQouVNp@}Rl)*zd{>+W87FRp3zA=h;2kb^h2?c`u5=S4hg^cxMvf~Jau0Za) zQ|i4;jp23hSHj3S8O=3zdT;yLJO}|lPW!KuA4!zz)el()4!-#0*=kp;1hLPe-)xKB zP1ttwBXt-vJmf>+m%|b!FH*OIDRz-1A&*W*iF}NSLE5$w+n=!oOaQf0u|WEvfq^v7EP#&Do2{SK1}fzdPa z#s?Ng>UUETi@X@#*UK31CqIz1mu~*_g0}gt9dY-r(Ti=OfS2M&uq}OfeW+u#VRyUk zfxjPxhXxL=oZx-kFj0Ev(9x!o*j?ui$#4kYc=&l$$*p7ua} zWp;;iCY%=N*dV-Bs?z%CDk@h>);$mWA zt}!n3hp%k7u5SGaLSbplk;kHyW0qF0Lc-h-S2>n~%DY)h%^jQ!g9UtcvQ6wFPbzjAwRL}j zw0$;(K-0v2NfXL+8%<19?tEo;Cjnx`*zFG9Q=*C7t*pZJgZ_ro&Q(i%RY*No=3`Ai&!=2pOFWf4evSaP5N8co zs9)MKHL>;pD!qu}^dh^ecw{xG>j^e$oogKP+Gz5LMgk%{T#}e^XoEm_~=w`FfnI|)4QN&C)FJk!_Az?_At2|x%V@~lRWxB(t8%%dZ z?!TXf$`}8dvh!C}?oAcr`Bl)W6J~YYU1PPBroHtm8W-0h%eR$R%uvg-hCV9o?b~T> zZQaGVZ=cs2dp<@|xEsF;C$K8H&(Nh~zp|7zF*uPl8AQhRFVtt49*6;4_92a5Sr&oioTi+RFrYEJQSI&S$$)Oid_t-Wx(*T1+vXv;7LC zb}!Kf!N)bHg5QOM_0!I8INU=<4Ret_@D6gOY_Oj6?S9Jua~xR|K3~-C^Efx0-hXYI z6AEUs?a}x+Qm~p}d2(IGtoQu$%#Mea@Y`<;IPrQ#(k*dwt&G;DJg@He1UKs|6S9k7 z9SJ5Tav?}<<)1-V9;L146+LF2w_CN(rDo?|S^dy>K>YR9L)fO0Ut|8GQ<>R7TRovknrIyBf++TqeCRy& z2Eg9;kI1b4ZN~Ctu+MOlZ{pO&%1uN&IW}bz=Q5-BQu;5Po85~uwjjHY+6_LNqr`wa zO=`%%ujdJwI0RN+EExrQSHv)!_71g(0hkl>LQFrI0@UnD=Tp)8hja+~$%(IX0X zr$K!CMW1E=tOQX=a+ol7z4yAs0~m{!j+GBw6*OHH?V~_a|LHCZ!NPf$(9m40Wqy1x zxw3tih&!;Q$cKrTd>PEgpKtESILp8Tg6VvZ{y$U)kNTfDqD@apYc@*%CghqMXx#?G zFI*Hk$9pQtkD*lo1y;KwM8?S^QH{qgVJba<0LOfL)2`-1Ef{R1aEs!Ktw@ovdQO?i zOL=gKau2o=O>t~{eR6|ir_kxbGHvy^fo5j_>%@c7kej{yQBbTePFb({08>0ZRk@|h z-_*`Ixx^}+zHHR3<1`Oa9HTPo_~44Qld)=5s}g>?#kO@n0M+8696JJZT)?nxBsBtN zIz;eHzTAk2EpO%l>Ma}2qe<#D-?|{kpNuK)P2|I7OVr_F^;JWW+D3Nj%An~|E(QUm3jk7nx9N0n^45rG5lr13(B`%y?Z*gt)bZ>=0o*np=raWZ@9jG zABJ@Od!TX#V8To+8|2-EJ^zz(Lqzdng555rtSSz(!YD&Q9CLcndPo-GmPv>=vHw{r zHL>O*J!#aUSAxRe>S=N(VZCzy5WB_!Zp9K~TkXmX*OFWQc(l|Bs$$cY)oNyGb#ahD z$g-nxC4lS8>SMt_u_53koqiiZ3?DTlA26t-qyENAv3>+1_p^E+=t{eHAeNK zkxp=w$sO1D-2}C9^GMEDGv(XXb){;@zaw=)DsW9e zOv%4*Z4^BeTX!*xUK=j%h1|OF)Id;eL*Q?@G!MXhe(_`A%WfXWKpRh)_ zsayrj+gISRQn|SH_k`oNzrG1gJBZpD)VkI} zgg#n3HV%aGO3UgMOr1b&=}v*=TZ-nof`6*?VQ-A%J8x%a=d%Xh&KI9OWG>faiorha zH~S{Eh=}cX7lk(rMEk$1s`0qV$)sn~8{R1}(Y;!3rx6ilCe3Ueq-bFX2GbasrHTkH z8|==Yl>!z0FOzv*S1YF8ao(zD7>+4b6&7M+s7rpBNI#Q!)%H0hJ#kn*ffPS$_Ud~5 z)(keeyrEM15G(0C^%FEL%mCj*>+St#%k(S*Xqk#p9I2ple}8OC4|Hr9UsfOH(xZ>U z8RI-Bj|#(0yI+}Je^EBz!d;ZFm_QoC0=Rc5VE(zkGAKAns;tTWt%whs)HCuShF&w? ztC4nkirr~6QG9)FfQS^%Ckr9(%=M);gJk2OF;(q=&7qqRH&G*~ADz=og}ukxLT~7P zo%ZAb?a^EaRdE~_x{`YbGK&307oHzANk1Vz^62i82FN_iygL_gol{OZL~`A$xZR0P z0p!Ue%>a<&2F;6^UrbsM7syk(sk?F+NZs7g?h$($k<$0GHhdEUnZ-(2_?Ktr&QlVW z<^u{$H!IWF*z{w;gU>0Qt*a`orjWV&t}s&i+F#JZMGyQlZwD2WJ!cS*`&W7>zcp;| zMqbD+2E+B6YOkn#zLmBXaQRVh3~@SE_!tw#0tHX~#>86)oGnOBqm?ppVYhZne`*1L zz-xHts6HlbxX=S$=%*1*kmFoD_I*aq$!D0zfJG*DckKzK$J^(c%**{T_Ed-3lF~$xmdehztnOM2dDhQ*P4hXXw~Q221fy`bMc89T5A8N6=TV)@_?@RmSp>MT^gPb~Mi?RIPD^FHA-AvV%(q z2PV_Mm+NkQ5|F44ER7i?%_7{oqP|0G1IR`x+(S@3&lnc4>D-slM^!*^`X~CF{}@#d zG@F~>z07vnSp}utZl;379JQ6pvWt^q_>a2FEhRv+&p5)o%w$?caYR(^v88vFJrtvF zcv1^pC-DPgo`Pq$3^dkRV{7rdfFG)*5Awjwwn(lFK^Zz={fFUN1j=JsuTS7ygN^7I zv_`bCVv@8uLRwyy`M~gC0MG{XJ~)S*Gb70%dEY%0uZPU>Z!t4{NA1O&s+cr0>|`Ua zqAi*3!?alM_|Cijxke&DUG_Mcg7Vq}Tk(^N`(31{Ph1$05v#a0oTjm)=)sRu4SiDP zKUk-MRl?J@er@+iL3q>dg}HBo!#Bro6u!3|iyX4F4-LB;s?6o1fgp@lTlDHquzRbR zps@GHcv{GX7oq!jxSM?HB~?a*r}B<*NQ#VJ!s!Y#I#;C@eA=@tu=95@2y%^TjtLAg z+3?W3QW^8FEzxWIQ%RgUx?G^flQ8e%Ux7zt_tTEM+%+3u8l@Jam>GER;VFuxSeBqq;woX%b;l{js8mS0@dG!S z5=SY~Fg5l=O39ck%b|G!Z7SN!d`t_Ow{E&s=rAk#Wp}!*3xLTeno^Ez>3o)S?_G&q z)d=ge@N0hqOa8aF7XQTrOd~fGvim2GYrA$aCf*8^MuyQ)o9~%Iz8+n4Bb7%7ssFYM z+O#ure27$C$p>#SEve;-@{;5G)JO4`%n1`8js3^3thZ7#$Q|W^eU;z_cCz{`oGzT8 z(Ij1OBT;0pM>f~$mDwMy4}f?nzpL!7_#xYqy35!h{uWHjNG)$zmf0mk*D6pa1*!64 zJ&NGkR->*ubKd6bzsn;h2y%;VSeT3`?yPtw+n>m&#{Y_aU5%3;sdRs)8Z;}ldTv#9 zzW#Zuqxu?K_I+;jY4RTsmY1hN+c$8;?9@>hN07WlR;9Wgw5SbZ31j`z{Y<%^Gri2f zpg0rAI?ogB^JUMED^^PT07P~R1GCE+iL43_FSSm852UIrHsKV5X9Vyr>Rh+;NE zq$qtXA0nj}{0#)guK>~C+!VD(o_MekY@FfDix4I15j_>}D+V?}=6A#oWojIEk`BgxrsStOKVi4HRim0%Z+7Hrid!q2&3ctf4B}qFt*l)?(hdo8mYDXXu*a zFTZQBc0nxQH(Y%mSWBylPU|oxt>V^NMxwl_vRSXEX{0?6)z1m?;r>mcff9R~-D?k^ z`nM#bou!<~@<3j2F1BE3rED<6yk9)yy@Y#TPjypYQSFFJf~KQh{`T zw!1QFv}E)CNuQ@#<#SsYGKeSlo9^7{7C7M)R)my%I&L>be<5Yzn;H@VN>NZeBx?Lf-PT zV<|!RnC+jMz%z10Du@r{^9yYzuX!eP>-iJ;F)X!*^ffB?Ph3>GO?(B+VE^K#J(P*9 zlu!bu3q7@H4=FQP`J4S^vN?Fh!Lg31poY;XL*6gTOzCM+Vj@|o9V&XsAvzUy_vg1x zl^wr~zK(Ptnqcu**`uBvDvyS0H2chQHGd;Mx>@Ju8=*4KeQ!fs77-+1di0?O&|1i; zWzK-EPlGyngbFeUADQ2h?f{LV4Gso!W`V^daDcCD16TQfaxe~*q%7X-lNIdqR(Kwv zUS@{}nmkp5BAXmE-nsLS+ut39GxUn24}gYNoV&=+;vhCW&W3C7nkXalyh?EBi~Xm{9)R+ zbXO^!S3S`!yc>BZWyX0DqjFgxwQ5XSQUjzp<>NH#BB^z{34=7m0pxG8Lj0f&Lj>ot z5}ZX8jUVjgFR-oQNMq-ppUyob&buhfr>^)#1<8=jzVAajV1PB1n};IR#@KHzvY(}v zTM$`*>TM;IO!C4Y<&Jfh3vc11<_g{YC#5)r&2n2i04ut zWLvMvuth4KG{IO-+MgT4#kTI}IJxLsrjGt?Jl)4Ch|sa2dhZY-^|a6X@`kIL_d0>H z!&TBWew%D|Jk^4z4RRhAdLm6xt^j0sLYen6J>5Dwf^8R z2&s8quFgM}dpa%}rSf^{0Dv94Iu7LjR5^T|_Gd6pB&!gz^)Te)?+2_s0_KGxVPe2j zgzUt}^QWR)_ud-mCxq8OsLg6k4}o5*O@HAY{-l2*uYokFbJw5W)>2V`vfRZ(kN7Bd z$L;9WGzyjkUS)5|xZe_BaQCu^!sW|-aV7u)nQB1mf9PSlR$6X(+m5H4xuT@4<0K`W zG9^`g>=_vyw*xv3fTy!LbY1-XEUxdQ={3xibT(X8LZ_5wRchsHJ&rBZY_dbE5biAg zUULJ+7DH+KJul-4=@38LNuPvmrO*B_^ZO%!J?0JofzJRCq^tC!zXsPzgvT1$1Z_X7 zw$j^)3yVMZ{7`upcQr*3r(nb0wIVGh_R6kl$sFp=_G+xt(*qFHU~S><1% zPWzS)=mtz+4rrRg2s|*kh*8?1Pis;+!EFUJEi}_9x$;=i5BRA}#M4uy@QAb64YI#l z>23*o-#MUb#}{}(THP278-RAjs>N;KVb<|(eIR19Z`X=z7v9G&uEyh?)PUbC5Ww4W zcPj1x^jvi4HR^YJK;lVFJ$6i$mY!+bs+kS=c1Ff~D*n9O;V=5$HL_^et(roX#6LHJ z*~fZ0)gcp8M(i$x^#z>m0?#JvA#r=&z`qu_aFMc8m2k?mI&LYp)^I=N-sJd-&508p zX&)1tnR0&0emssB|cbG-#}lCbxL{4kb^K#8DMTcg!^wX)Bgvz<}2IxH1>Im1ig#Z_d7sySsmbZ!xh`( zo!3|b4IF$95MH-Y7QpI1r@P>q6yRrPEN+Ejz1~$*`Y3@#TR|*FWngH}cPM41(zQ?O zFHHQHLEY_lM2e#%AMhRW4pV zZZe*rMmJC8@VR36NJQ3Y)51gy3%s%}MB;KQs+sA~>53(Pwi?Ruez6nT_Sm|L+E54L z`gwq;A@KuLZXi-+IVln;Ga|yM7_5y~ex@|p3BJRK03@rYC#z=g8vKljBS2OdieLQg z`4+fWz@eDW4cX)x4I$2tZJhC?q*)>$gGHJf8M6o-xDn9Uo)^P}0BuM$1G@T?&qPE4 zKdPhN|NSQ7z&Aze?#Do*nPnIop`;B@n#!}uu7jRmc6xBYxb&j8>` z^k=?LM^I zAibg2uP+{;D+Z9WMaI0E%~CciFoPSN4}K#C|NfHc?9i#xK6AlMyTIi_oV->3mP7E& zSP#N^8#FyJH~60){Nr^o*QEdUBi_59>HPtbD)pE}o1gVaO|@}y2o!+o&u+OxOAVhj zUgB9l@rzbrKyhyR|NC*kyeq=`lYn292$uU;kRn-FT72dv`T`&Wxd=@!05k##*GJ^1 zr8eyriAEygO*dPgeiaVO@Zi=n(cvN&OObq>7THIO`9rS+xB%EuV(`3!e6;{6AcUL6 z*Sj7Yef9Ww9DR68546b+;C2W6-(tbcZ|B-QQul#db-n}mi-~n7<2T4uC4drg+h0h1 zKj$t$(>b$VwN6(~pwSq`7v%vg?nIkk^{)x-z}+`PxRI(>sT5SjjeFf~ zs{q+T(E|J9Wz+f&VCjs}q&qojrH;rXnU$TM0^B1M11m&04}Xf5+n@x~ccbt`4{W>e zz~+m?qCd0m<1Bt-{A@cN$d@eftpK64+10T{H0pSog40gx48BPx3epy6oH2*4#^XNL(8cc0$}Y5*Hu)}tA~6pDGI6~HP|Lw8yMj~;ZxJm4-M)GlK_kA;`Sxf9UsVzF1nzq(-nm#XfVOba%8Sx$z zn?IZoU;u-ss4>=0nEoMMQPkN4L1*OJ$>ha&0m$$hh&O|m!d=^We>uHYx8?&Lf)C$+ zkr&U*$nReTXiJK&a?`shD5jKQyaSiSr^pY8;XQYw+CGU)?N?68Zk%^!BC&0XJ6^8V z{at+JY6hz*#ekf8o9}j=)v|tfl2_a1@dOItc_v};6Pm~1&Q!kuB*3Zt! z&_oCKG0G>blVhS2(Izac>YB`D1K9#U72?k*rNKM<3*K7~@NQkY#eA|&n!0h&079QI5zobFQC-wB*xhpYYQT4vm&h+J#nt0=0rph9HE6|P zyDkEYcCW#74>O^@R`4|g6@OOks-v5dfR~=42*vsP40ZpGJ(@8gY3Y`T1?bw(=?J(~4mx3tk}FV# zFKb=ZWCDY**%=G|V&DcwECs{l-mE_198i5fGaFA_F8Xvs&Uhv$wrC{)B3z*F@)`Uv zEo-TcSm4fbY|O@qS~q9$NjryBnQN-Ab03B1l=Hzk8fks$XV<&RoGEXRsvAgR3t?X% z81|Y9IeLeAo)Uvl?uq3(k!ME$WrxuiFaWTNe_g89SUh|rmWWZbETx-@KoHe8FDH`v zQ8^G9>;hfe{#XS3e00I2vX>K7j9t7^7A^Mj9ERrj6WO$R6?mfPK%aC-U3ss_;KYSI zF9Mv{LmzX=%4>qxG9#Gv#jUP*=%W8*@}Du1aO4iJ4TXmcDG(?(t42~@3m=c=5^jss zC=f^@3L8mYh+5d+pc#!CZq6l|=A6~{*JdX6JcGPi;IBmb%sB<$xNv+l!?Nn6yka;W z05mkx0$l+CL7Vd}I4p@+D1tmmUL(7*HNKm=FTB|RdBxp~_&k}q@>6Yx#0U4cXMWi< z1O!nxLY@R5I^bB|`Cxgla@%Od8 zMw%6)jxA??VOWOE<64CnZ!{~+H{4>RXjUh0?x*SUG|W1Tb~7l5%|FdiIcyvhCl)^o zxFYbIcO1|ecza3KG2edN>9cty`2wg31g3p-A#oHp-n%dV2%(K;X2RD%me!~ zGij-x3Uv;AfWX%Lk5wDCb?kOXFBx!Yh_FVqru%lcAo&4QB>rm*pCQBE`BX$dURq-U z3^nzx_*cZROom8(=sVW&#&a>HAS_1E>_nK_#js^HaqXcuWoM4xvm$i_2G5%7KI{fd z?ZD!FkFjs$cbd;82%wpu&)vn9f1A3qhX==}V%fv4hLV36W znpoDEx=I^oA=6!=&8gTuR1zkRLs|bMyLfYkP{VgoRWdaX)t*X7#DMGR^mg6gOJswk z3lJi`0KfMdq)}7x^zLhVV)7SFGtM-aot+wqxOvIrs>fO-rq*PyPU{RY{X{gqI^lGE zbs7E897at};kN>n2aGc$%QE4q%{RxV1I~ep7?!Z1qrpF8lOpi)3*C+@D46fUKgb0e zM8-s-z&?F4Z_wyguq+q;B>#d-F|b(sa}V`IB&sh=+xF(%R`9i*L5cmM0IC3PlFdU& zKHp0QPE7us3kA{Mx;^^5kupRJK;SaxiA(Wj87E|~#+k=$5@2en-y&rBL-ELfiJg%F+9&Ap>@3ADt&(~;%UIbmyqV8Ix{sq}q4PI^$10f> zPx0=)GFos2aWf=6pizgTt4N{+;VW4l#=MIeXrYGf9y8Hdup$m5v*RKam~bAAYz~@% zxxGGVgOp0ZXHub$T~*g!@uAz_R`*?pX@N;3;f3Q{#AH+H8b@e1lu^2P{%mHNTocQ9 zNu=AO9!J!bH%e}?m86R^6*M&pET_x<(D(2%fp`Qot#Urp-AeYf z^OFh>Wc~D-$5_%}D8F6j9kw1P7-^3XD-6b3!3hZ#(@2LcYu7c-6A;Q1IWt^}n5MEkK>xvQr3$1!4R(Dlm07SObmzMA~#nx$W& zrLfjZa}P8$LF^ijVIP4-tU%7bI+zWC59rTy-7v1o#}4nTe0Fl;xbi5au8byj?G6Ax zwu;AaQu0%}$JtT|3_oO>_Kl>FPr*t(vbkglkPltltC~ka^4~g}j94#SqI~X7@~ww& zkdLAdvmf0^ym`^_E~0Rd`D^(1RTYbaVWjst4kE92ZiWZda<54#br`I|27oQ$|q7-7yxK^rpF=K3C4Zkz~j?jFQ zT>0!{-Ax!>hInYeXdyF?Z#QcINA1%j8;;QYbNzIBf|Px=u2{s)@((faq6HS#2%prx z=z!++*E7#S^C~ymkAg{)g~wuzDOtk$OuGvD+rL#5_b>Y%ilNqZj5gn$O2uh1E*eRi zeSocySq~Wx^qlp%TJ3I|f1gv#d-QlYepbmk1+_`Bq@S@>PXEz?X;s5(9<13xe>N}S zp$DD_J{6nLExmeb?{GO``H3ztqqZg>FyBr1y(S<-6i3z=N@+HyC^407dY&rd)i`UI zwhS@yr-iuEcfn(nd&0ItdV|<6nB)BJe3tsAy3e~kq@9EC`_d;uIKeba?L*Np9}+(d zqxv3AHu&ez%-6Z@X~(hDOoqTu5%g|QEAm)jU12g7T!+-QEwBbp^s|O&c#ze1&sOMU zblsh0#3*UVHAnc?|2e_>NMuXBKoF*3Fcnv~RQ#P-cS>A;i+(wIPB4_XoGb^~V5ZM8!++1kLMa6?-@ zSWV*;q`qGA@a%p|o_ZFQBYU|>yz@L~)GOxmDi@jiy5N)(x!;4v(d_s&SjwNElEM+FGK%a~oux8B)2{L>t@v1UV1A#5`lyIf+!I?u zJ%q4pNO(EUDa{H;hJAnOJ9IGOUglaL7al9ehhvmt$u8-<6i6VlygkFUCZk;A zn1lWXlklr`WqM-!hc{O%8UJvNdN87jF#3v-ngEqEnm0N8Fjm-6QY70jgd3e`fczY8W;Qb`6Vpv5Et0)T!6{e^-^w;;A>*}?$h}zj zYPo}(gO1CbI*6SI7=rC`M#UL_4a(G5@r&!nFuzK^i8g*|74Hsl=)q$1)(ZT~>3D1} z(ocD{Ta#oel##8!={;Qnc#q(Ru_Z4lk8hdRX<&RK}X4}gMe*UijQo?377jKd1 zJu1q8z8BxEpYT17dZkLx9veIRsaY#nsl{HiDc13R5^UQ7&%6uI8fATL12+iqld=V| zr3oiEz4M*7Uw`Z*rmdhn>!lR=dEh&Ckg`f-Moafc7KLUmwfF6jVVoQwojG*>>w*?r z-#+CMzAt^aq%YH)s40Nr7KFEQvSg2xFG}*cJ*`Mi^1gx9Xj{rk*x*+jKLV7CPkn8o zf6-U6HO(mg@MR(w_T%m3dG+&dvBkNMbn!6Jbk+gEFk^>u)gAZ?jt^ur5Ddqn5q}E&HU^)gMHpY0u&H}AQ#p^2UQ@dMWOT#- zN8UG&ZK-(3@J#06Bid;({fgF7s(GXvh3Bt|jh)!x@H~GmiXFRg@1WKn^E~{Pzyv#-ZYl21fS!1kUe$ce3StHNFO-c3A6B@tsfI1r1qRl0PrD zfOSavVhIQo`=39N)w$zA+VzZS;?3m0ieS`C1cFrxGx>R!xK!CyXtLwMUP(;$+UrFwRaEF$)|p@x1T6xMnGq#Bzz(g;xK7 z{vDSHyIYe02;!k3(PA!w2B;;nvA92vouPj;tDDlU8kH0H)yK(?&mlkRy>r}+BBc6y z&`s`oeYI*LCX0@o+1V3MF!CX=1)%42B%V7lX6{#-1l8xNydtCMQ=A#?@U7g5&nDr~ zV)djWw`I}6-1zV8wI5@=(1>wHK=5}UQbj1tG-p;mcgpuc@zB1S-c zJVh!)mU=?0r(FXfGs7?`?m4gij{CGXI-wF&jb=2>z9QJ+x%OuwOlaMt-M+Jbg_4&o zmg4BQrI_1UlkqHxWD;w@ONN2EFF^-qROcNi6#v+ zdwm#?_ETIV1ZG<{a~ia%wZVcfB_(AH>6Ep+Pt-NGk`&|WEwO5d5}av)+FfWhprqT2 z%b84SxtQ3s-E>(eLA>=?tR^n9;Gppf_>-OXIl5)Nj{a?STEW!AF5LooiK+x<>m%Vb zo`C)F`|KZIPq;tlvl%s1_w{i1-%K{d`6eX9By}I_PA}OFou1aQ)3#?Z#hdF%FxgA4 zcKQn<#-!yc>J0Wo-|sV{kMeiffn#r}zc4Pr5Fw^sofVHKr_&h*v%+Q+vF3FDP9T#& z`|b_}rE9mow0I8p{UMdP>I+I!oo6uLR+3m8zjn5c<2=|mSk{mOWjw}xSnZU!5f_ae z5Oy}xFtoZCZ>dplGWV}1FUYqGzg}<5qN=Pvx;(N7!^qyxGqw6*Q}66a^sSRUi|q|H zb_q^MP{59fckJwcojIVUy_2mrYB981FJr-%05Tt!2dtQ$3jAVEG<5YtJZLokCtcvk z7InZ7fF$|*%AS!rD6Yy2F-0CG-k0ntKodvOVM1|HPhkZVqG)e!4bpn!FZBGq?Zx8p z8du#}&QLP#7`N!;^7hx(19q&YDflA8zl=Waa(6K5rFXk#NaYsi;I#Vf7J4*4hLVt5 zG<>@h+x@)fQ(h)pePQB8XFQ%-{I?mAQvgBG`W@`fM_sIYcE01)i(~7YBz`wBBJqTV zLpRxnpJRoiK@>4W{SRm((;5Jot{5-7l1$Jy?bZ$WYMOfsdvKRF+Gim9n*9Xd#&*Ht zow=9RILq;yP-BBx6N$~;UMVPpL{Pe-$qgDyz56JR_X*LwAjQint|6`*PynM zAmP7j318$gE3)^jLvT^_puGS3j{ggN@&x$oce}{g;Y^Q4%QF-IhZ5|u@MmgWK&cTxZZz@jY>fr5PD|R@KWNpjY_u8Rbq1Y zlFLNtX)lwyKe!?F;%og>=Rc7km}kJ?A6(3q3qwyp0@ZksMWlJ=tiF1{f)_1(eKO%+ z8DKc*&-j^qlG&Wk*DQNqi95g=j`SCSnVJaP((_b{l9_lt{!0RzrhElcBXipS#DS86 zEJ`J-DGSFXeGz+2g+y_+)Sm}h7s<*kD_NZ0(Z?P|T}InAlDn*c-#8pIoPEX@6F%mt_2sz4APmw5F0}NMA(8BA@18-R5LA%#oDgML#R|Bd;LFf|A@2 zD`leTb?p-=F6b-+8asCfU1sEH71v3t21By%*1yh6#nuslmR_%hv{Ispt60U%ft+YiT2gC!%-_$nQZJd0?-R{?rSdK!V zts3Wnm|gLGWxM#F@4_pDkVWr5x!RDIi9AaCyv_zM8+aM151&Mt=Q5t1GUG>JABuJn z3rZgg(i}#nuNB+-H0*7aq2k@uHEx<$-3!h>mZ4?s#jXM_CR>vgYX5oG9&8#!`&Ag@ zpVdsAx{CSXiGXyrbZ#is1HrJqenO%Im%b@VOZd2OIyCnH@x?Rmqk%N@amN$l5P
    DrAw!;A0v2@O3RBH*wMC{%D^UC*;j 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 literal 0 HcmV?d00001 diff --git a/img/Mapping Between LinkML Schemas2.png b/img/Mapping Between LinkML Schemas2.png new file mode 100644 index 0000000000000000000000000000000000000000..11be3da42260b35a8848cfe60967038586c97387 GIT binary patch literal 54667 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 literal 0 HcmV?d00001 diff --git a/img/Mapping Between LinkML Schemas5.png b/img/Mapping Between LinkML Schemas5.png new file mode 100644 index 0000000000000000000000000000000000000000..11be3da42260b35a8848cfe60967038586c97387 GIT binary patch literal 54667 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

    ?$IG(-UeSiP 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 literal 0 HcmV?d00001 diff --git a/img/Mapping Between LinkML Schemas6.png b/img/Mapping Between LinkML Schemas6.png new file mode 100644 index 0000000000000000000000000000000000000000..4056e267374467a5cb93460ac00a50f2d508f3d6 GIT binary patch literal 82911 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

    Sh4Yfu9&aq{%P?vB`NA9j{3tuD`cPJO$ppy?i$Z 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%0DlSH;ovux{rny?snk#3Qblb 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

    1a{c^WB4L! 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 RA1}<(yJ392Qp+jk{{ZQm6bk?V literal 0 HcmV?d00001 diff --git a/img/Mapping Between LinkML Schemas9.png b/img/Mapping Between LinkML Schemas9.png new file mode 100644 index 0000000000000000000000000000000000000000..233a4e40c7edec758b0e4e9ed5f3996be2e7d6f5 GIT binary patch literal 144396 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%0A6yZ6|Jb|M*Y7P#b>6Eq1TC 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

    `O2Xoev>dqqFI+Mh~Gx<4lah=yB=Eet{#0zD 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 MTimI*bvNdJ065xtiU0rr literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..dac0125 --- /dev/null +++ b/index.html @@ -0,0 +1,592 @@ + + + + + + + + + + + + + + + + + + LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    +
    + + + + + + + + +

    LinkML Data Transformer Model

    +

    Datamodel for LinkML schema transformations

    +

    URI: https://w3id.org/linkml/transformer +Name: transformer

    +

    Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ClassDescription
    AliasedClassalias-class key value pairs for classes
    ClassDerivationNone
    InverseNone
    SlotDerivationNone
    TransformationSpecificationA collection of mappings between source and target classes
    +

    Slots

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SlotDescription
    aliasNone
    class_derivationsInstructions on how to derive a set of class in the target schema
    class_nameNone
    class_namedlocal alias for the class
    exprNone
    hideNone
    idNone
    inverse_ofNone
    joinsAdditional classes to be joined to derive instances of the target class
    nameName of the class in the target schema
    populated_fromName of the class in the source schema
    prefixesNone
    slot_derivationsNone
    slot_nameNone
    source_schemaNone
    target_schemaNone
    titleNone
    type_designatorNone
    +

    Enumerations

    + + + + + + + + + + + + + +
    EnumerationDescription
    +

    Subsets

    + + + + + + + + + + + + + +
    SubsetDescription
    + + + + + +
    + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/inverse_of/index.html b/inverse_of/index.html new file mode 100644 index 0000000..d9f0496 --- /dev/null +++ b/inverse_of/index.html @@ -0,0 +1,373 @@ + + + + + + + + + + + + + + + + + + Slot: inverse_of - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    + + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/joins/index.html b/joins/index.html new file mode 100644 index 0000000..c6ff589 --- /dev/null +++ b/joins/index.html @@ -0,0 +1,374 @@ + + + + + + + + + + + + + + + + + + Slot: joins - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    +
    + + + + + + + + +

    Slot: joins

    +

    Additional classes to be joined to derive instances of the target class

    +

    URI: https://w3id.org/linkml/transformer/joins

    + + +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    + + + + + +
    + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/name/index.html b/name/index.html new file mode 100644 index 0000000..6fffe35 --- /dev/null +++ b/name/index.html @@ -0,0 +1,374 @@ + + + + + + + + + + + + + + + + + + Slot: name - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    +
    + + + + + + + + +

    Slot: name

    +

    Name of the class in the target schema

    +

    URI: https://w3id.org/linkml/transformer/name

    + + +

    Properties

    +
      +
    • Range: NONE
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    + + + + + +
    + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/overview/index.html b/overview/index.html new file mode 100644 index 0000000..05e40d2 --- /dev/null +++ b/overview/index.html @@ -0,0 +1,986 @@ + + + + + + + + + + + + + + + + + + Overview - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    +
    + + + + + + + + +

    Mapping Between LinkML Schemas

    +

    Draft

    +

    2022-06-24

    +

    Problem: map data from one schema to another

    +
      +
    • Problem: Map d1 → d2
    • +
    • Assumption d1 and d2 conform to two separate schemas\, s1→ s2
    • +
    • Sub-problems:
    • +
    • Ingest/Import: my data warehouse conforms to s2 (e.g. Monarch ingest)
    • +
    • Export: make my data ingest friendly
    • +
    • Migrations: s1 and s2 are different versions of the same schema
    • +
    • Not in scope: in-schema syntactic or structural transforms
    • +
    • JSON to YAML\, JSON to TSV\, JSON to SQL\, JSON to RDF\, ORM\, …
    • +
    • In LinkML this is already largely solved
    • +
    • The actual problem space is highly varied
    • +
    • S1 and S2 may be trivially isomorphic
    • +
    • S1 and S2 may differ in complex or nuanced ways
    • +
    +

    There are many existing approaches

    +
      +
    • Generic frameworks\, driven by declarative specification in Domain Specific Language (DSL)
    • +
    • JSON-based
    • +
    • Google whistle
    • +
    • jsonpath-lift
    • +
    • XSLT
    • +
    • Semweb
    • +
    • YARRML\, R2RML
    • +
    • Many many more…
    • +
    • Bespoke transforms: non-declarative
    • +
    • Implement in python/awk/etc.
    • +
    • Hybrid: bespoke with some declarative mappings in ad-hoc format
    • +
    • E.g. NMDC ingest framework
    • +
    +

    Traps with declarative mapping

    +
      +
    • Declarative is great\, until it’s not
    • +
    • Anti-patterns:
    • +
    • Insufficient expressivity to carry out real world tasks
    • +
    • Bolting on features to mapping DSL until it’s a fully-featured Turing-complete language
    • +
    • Optimization/scalability at mercy of framework
    • +
    • Messy layering between DSL and host language
        +
      • It can be useful to leverage host language features (e.g arbitrary python function)
      • +
      • But this can get confusing:
      • +
      • NFNF: Neither fish nor fowl
      • +
      • Limits optimizations (forces iterative host language calls)
      • +
      +
    • +
    +

    YARRRML

    +

    +

    https://rml.io/yarrrml/

    +

    YARRRML notes

    +
      +
    • Has a playground\, which is great
    • +
    • Mixes two concerns:
    • +
    • 1. Isomorphic structural mapping between JSON/TSVs and RDF (already covered by JSON-LD)
    • +
    • 2. Mapping
    • +
    • This isn’t necessarily bad - it’s quite practical\, but a little unsatisfying IMO
    • +
    +

    jsonpath-lifter

    +

    +

    +

    +

    +

    +

    +

    +

    Was proposed for CCDH CRDC-node mappings

    +

    Doesn’t seem widely used

    +

    Is there a big advantage over simply writing javascript functions?

    +

    Koza (previously: bioweave)

    +

    +

    +

    ETL frameworks

    +
      +
    • There are many many ETL frameworks
    • +
    • E.g. WebKarma
    • +
    • Inherently mixing of concerns
    • +
    • Here we are concerned with the “T” part
    • +
    • Do existing frameworks separate out the T as a modular composable component?
    • +
    • I’m not sure
    • +
    +

    Do we need Yet Another Mapping Framework?

    +
      +
    • LinkML philosophy:
    • +
    • Embrace\, extend\, parasitize
    • +
    • Develop lightweight ways to map
    • +
    • Map mappings to existing mapping frameworks
        +
      • This actually makes sense even if it sounds kind of meta…
      • +
      +
    • +
    +

    Level 0 Mapping: Isomorphic, same URIs

    +

    classes:

    +

    Person:

    +

    class_uri: sdo:Person

    +

    attributes:

    +

    family_name:

    +

    slot_uri: sdo:familyName

    +

    address:

    +

    slot_uri: sdo:address

    +

    classes:

    +

    Agent:

    +

    class_uri: sdo:Person

    +

    attributes:

    +

    surname:

    +

    slot_uri: sdo:familyName

    +

    home_address:

    +

    slot_uri: sdo:address

    +

    family_name: Wu

    +

    address: 1 my street\, Oakville

    +

    surname: Wu

    +

    home_address: 1 my street\, Oakville

    +

    Level 0: handled by standard linkml convert to/from RDF

    +

    classes:

    +

    Person:

    +

    class_uri: sdo:Person

    +

    attributes:

    +

    family_name:

    +

    slot_uri: sdo:familyName

    +

    address:

    +

    slot_uri: sdo:address

    +

    classes:

    +

    Agent:

    +

    class_uri: sdo:Person

    +

    attributes:

    +

    surname:

    +

    slot_uri: sdo:familyName

    +

    home_address:

    +

    slot_uri: sdo:address

    +

    data2 (yaml/json)

    +

    d ata1 (yaml/json)

    +

    family_name: Wu

    +

    address: 1 my street\, Oakville

    +

    surname: Wu

    +

    home_address: 1 my street\, Oakville

    +

    d ata1.ttl == data2.ttl

    +

    [sdo:familyName “Wu” ;

    +

    sdo:address “1 my street\, Oakville”

    +

    ]

    +

    Level 0: Enums TODO: add example here. Basically this works the same way

    +

    Level 0: HOWTO

    +

    Compose two commands:

    +

    linkml-convert -s schema1.yaml data1.yaml -o data1.ttl

    +

    linkml-convert -s schema2.yaml data1.ttl -o data2.yaml

    +

    That’s it!

    +

    TODO:

    +

    Write a wrapper (linkml-map-data?) that does this in one command

    +

    Level 0: other considerations

    +
      +
    • Going via RDF in theory eliminates inlining differences
    • +
    • E.g. s1 inlines address objects\, s2 uses references (inlined: false) and includes a separate index slot for addresses
    • +
    • Current status:
    • +
    • Currently when going from s1 to s2\, no index slots are generated
    • +
    • This could be done as part of the general rdflib framework
    • +
    +

    Lessons learned so far: annotate your schema with URIs!

    +
      +
    • Annotating schemas with URIs is optional with LinkML
    • +
    • But your future self and data users will thank you for careful schema annotation!
    • +
    • Hints:
    • +
    • Schema-automator can provide suggestions for your element and enum URIs
    • +
    • Sometimes plain semweb URIs (e.g. schema.org) can be easier for interoperation than overly granular OBO ones
        +
      • E.g modeling Personhood as a role vs straightforward schema:Person
      • +
      +
    • +
    +

    Level 1 Mapping: Isomorphic, different URIs

    +

    name: example-semweb-schema

    +

    classes:

    +

    Person:

    +

    class_uri: sdo:Person

    +

    attributes:

    +

    family_name:

    +

    slot_uri: sdo:familyName

    +

    address:

    +

    slot_uri: sdo:address

    +

    name: example-OBO-schema

    +

    classes:

    +

    Person:

    +

    class_uri: NCBITaxon:9606 ## Homo sapiens

    +

    attributes:

    +

    surname:

    +

    slot_uri: IAO:0000590 ## written name

    +

    home_address:

    +

    slot_uri: IAO:0000422 ## postal address

    +

    family_name: Wu

    +

    address: 1 my street\, Oakville

    +

    surname: Wu

    +

    home_address: 1 my street\, Oakville

    +

    Level 1 Mapping: mediated by URI mapping

    +

    name: example-semweb-schema

    +

    classes:

    +

    Person:

    +

    class_uri: sdo:Person

    +

    attributes:

    +

    family_name:

    +

    slot_uri: sdo:familyName

    +

    address:

    +

    slot_uri: sdo:address

    +

    name: example-OBO-schema

    +

    classes:

    +

    Person:

    +

    class_uri: NCBITaxon:9606 ## Homo sapiens

    +

    attributes:

    +

    surname:

    +

    slot_uri: IAO:0000590 ## written name

    +

    home_address:

    +

    slot_uri: IAO:0000422 ## postal address

    + + + + + + + + + + + + + + + + + + + + + +
    subject_idobject_id
    sdo:PersonNCBITaxon:9606
    sdo:familyNameIAO:nnnn
    sdo:addressIAO:0000422
    +

    family_name: Wu

    +

    address: 1 my street\, Oakville

    +

    surname: Wu

    +

    home_address: 1 my street\, Oakville

    +

    [sdo:familyName “Wu”

    +

    sdo:address “1 my street\, Oakville”

    +

    ]

    +

    [sdo:familyName “Wu”

    +

    sdo:address “1 my street\, Oakville”

    +

    ]

    +

    Level 1: HOWTO

    +
      +
    • Compose three commands:
    • +
    • linkml-convert -s schema1.yaml data1.yaml -o data1.ttl
    • +
    • sssom-map-iris -i data1.ttl -m schema1-to-schema2.sssom.tsv -o data2.ttl
    • +
    • linkml-convert -s schema2.yaml data2.ttl -o data2.yaml
    • +
    • That’s it!
    • +
    • TODO:
    • +
    • sssom-map-iris does not yet exist (?)\, but should be trivial
    • +
    • Fold into wrapper CLI tool
    • +
    • Nuances:
    • +
    • Schemas have nuanced differences: not everything with be skos:exact
    • +
    • We can distinguish 3 flavors of level 1 mapping:
    • +
    • Precise\, bidirectional: follow exact only
    • +
    • Valid\, unidirectional: follow exact + broad
    • +
    • Loose: any mapping
    • +
    +

    Level 1 variant: mappings in schema

    +

    name: example-semweb-schema

    +

    classes:

    +

    Person:

    +

    class_uri: sdo:Person

    +

    exact_mappings: [“NCBITaxon:9606”]

    +

    attributes:

    +

    family_name:

    +

    slot_uri: sdo:familyName

    +

    exact_mappings: [“IAO:nnnn”]

    +

    address:

    +

    slot_uri: sdo:address

    +

    exact_mappings: [“IAO:0000422”]

    +

    name: example-OBO-schema

    +

    classes:

    +

    Person:

    +

    class_uri: NCBITaxon:9606 ## Homo sapiens

    +

    attributes:

    +

    surname:

    +

    slot_uri: IAO:0000590 ## written name

    +

    home_address:

    +

    slot_uri: IAO:0000422 ## postal address

    +

    family_name: Wu

    +

    address: 1 my street\, Oakville

    +

    surname: Wu

    +

    home_address: 1 my street\, Oakville

    +

    [sdo:familyName “Wu”

    +

    sdo:address “1 my street\, Oakville”

    +

    ]

    +

    [sdo:familyName “Wu”

    +

    sdo:address “1 my street\, Oakville”

    +

    ]

    +

    Advantages of RDF as an intermediate

    +
      +
    • Use of IRIs
    • +
    • Separation of concerns
    • +
    • Structural differences (e.g. inlining) are already handled by linkml convert
    • +
    • Allows us to focus on semantic mappings
    • +
    +

    Lessons learned so far: think about mappings

    +

    +

    +

    https://linkml.io/linkml/faq/modeling.html#when-is-it-important-to-have-mappings

    +

    https://github.com/alliance-genome/agr_curation_schema/blob/main/model/schema/agent.yaml

    +

    More complex mappings: level 2 and above

    +
      +
    • TODO: define levels 2 and above
    • +
    • Examples of kinds of features:
    • +
    • merging/splitting fields; e.g. full_name = first + “ “ + last
    • +
    • Unit conversion or baked-in units to explicit units
    • +
    • Normalization/denormalization (aka flattening)
    • +
    • Complex logic
        +
      • If conditions A\, B\, C and not D are met then copy field F from X to Y
      • +
      +
    • +
    +

    LinkML Rule and Inference Framework

    +
      +
    • Current use case is intra-schema inference
    • +
    • Easy to invoke on command line
    • +
    • Needs more docs!
    • +
    • Could form basis of inter-schema DSL
    • +
    • Examples
    • +
    • Schemas differ in units
    • +
    • Schemas differ in categorical vs quantitative
    • +
    +

    +

    Current use case is intra-schema inference

    +

    Could form basis of inter-schema DSL

    +

    +

    Datalog

    +

    Datalog could serve as the powerful basis of an expressive declarative transformation language

    +

    +

    https://linkml.io/linkml-datalog

    +

    Approach for level 2+

    +
      +
    • Do we even want a generic mapping framework in LinkML here?
    • +
    • This is a good “ parasitization hook”
    • +
    • Do complex stuff using an existing framework
    • +
    • TBD: derive or semi-derive mapping specification?
    • +
    • This is also a code bespoke procedural code hook
    • +
    • Do the generic stuff with linkml-convert and isomorphic IRI mapping
    • +
    • Do more complex stuff in code
    • +
    +

    General approach for level 2+; same to same

    +

    name: example-semweb-schema

    +

    classes:

    +

    Person:

    +

    class_uri: sdo:Person

    +

    attributes:

    +

    family_name:

    +

    slot_uri: sdo:familyName

    +

    address:

    +

    slot_uri: sdo:address

    +

    name: example-OBO-schema

    +

    classes:

    +

    Person:

    +

    class_uri: NCBITaxon:9606 ## Homo sapiens

    +

    attributes:

    +

    surname:

    +

    slot_uri: IAO:0000590 ## written name

    +

    home_address:

    +

    slot_uri: IAO:0000422 ## postal address

    +

    family_name: Wu

    +

    address: 1 my street\, Oakville

    +

    surname: Wu

    +

    home_address: 1 my street\, Oakville

    +

    JSON OR XML OR YAML OR RDF OR SQL

    +

    JSON OR XML OR YAML OR RDF OR SQL

    +

    (matches the one on the left)

    +

    Existing mapping framework (X to X)

    +

    Example of same-to-same: jsonpath-lifter

    +

    name: example-semweb-schema

    +

    classes:

    +

    Person:

    +

    class_uri: sdo:Person

    +

    attributes:

    +

    family_name:

    +

    slot_uri: sdo:familyName

    +

    address:

    +

    slot_uri: sdo:address

    +

    name: example-OBO-schema

    +

    classes:

    +

    Person:

    +

    class_uri: NCBITaxon:9606 ## Homo sapiens

    +

    attributes:

    +

    surname:

    +

    slot_uri: IAO:0000590 ## written name

    +

    home_address:

    +

    slot_uri: IAO:0000422 ## postal address

    +

    family_name: Wu

    +

    address: 1 my street\, Oakville

    +

    surname: Wu

    +

    home_address: 1 my street\, Oakville

    +

    Jsonpath-lifter (JSON to JSON)

    +

    Example of same-to-same: awk

    +

    Example of same-to-same: SQL

    +

    INSERT INTO Agent AS SELECT

    +

    Person.last_name AS Agent.surname\,

    +

    CONCAT(Person.full_name\, “ “\, Person.first) AS Agent.full_name\,

    +

    +

    CONSTRUCT {

    +

    [

    +

    a schema:Person ;

    +

    my:fullName STRCAT(...)

    +

    ]

    +

    }

    +

    WHERE {

    +

    ?person a schema:Person ;

    +

    schema:firstName ;

    +

    schema:lastName ;

    +

    +

    }

    +

    SPARQL CONSTRUCT

    +

    RDF Engine or Triplestore

    +

    Example of same-to-same: Python (LinkML objects)

    +

    def convert(p: Person) -> Agent:

    +

    return Agent(p.id\,

    +

    full_name=f”{..} {..}”\,

    +

    +

    Conversion script

    +

    General approach for level 2+; heteromorphic

    +

    name: example-semweb-schema

    +

    classes:

    +

    Person:

    +

    class_uri: sdo:Person

    +

    attributes:

    +

    family_name:

    +

    slot_uri: sdo:familyName

    +

    address:

    +

    slot_uri: sdo:address

    +

    name: example-OBO-schema

    +

    classes:

    +

    Person:

    +

    class_uri: NCBITaxon:9606 ## Homo sapiens

    +

    attributes:

    +

    surname:

    +

    slot_uri: IAO:0000590 ## written name

    +

    home_address:

    +

    slot_uri: IAO:0000422 ## postal address

    +

    family_name: Wu

    +

    address: 1 my street\, Oakville

    +

    surname: Wu

    +

    home_address: 1 my street\, Oakville

    +

    L inkml-convert

    +

    OPTIONAL

    +

    L inkml-convert

    +

    OPTIONAL

    +

    JSON OR XML OR YAML OR RDF OR SQL

    +

    JSON OR XML OR YAML OR RDF OR SQL

    +

    ( different from the one on the left)

    +

    Existing mapping framework (X to Y)

    +

    Example: YARRRML

    +

    name: example-semweb-schema

    +

    classes:

    +

    Person:

    +

    class_uri: sdo:Person

    +

    attributes:

    +

    family_name:

    +

    slot_uri: sdo:familyName

    +

    address:

    +

    slot_uri: sdo:address

    +

    name: example-OBO-schema

    +

    classes:

    +

    Person:

    +

    class_uri: NCBITaxon:9606 ## Homo sapiens

    +

    attributes:

    +

    surname:

    +

    slot_uri: IAO:0000590 ## written name

    +

    home_address:

    +

    slot_uri: IAO:0000422 ## postal address

    +

    +

    family_name: Wu

    +

    address: 1 my street\, Oakville

    +

    surname: Wu

    +

    home_address: 1 my street\, Oakville

    +

    YARRRML (JSON/YAML to RDF)

    +

    Example: YARRRML, native mappings

    +

    name: example-semweb-schema

    +

    classes:

    +

    Person:

    +

    class_uri: sdo:Person

    +

    attributes:

    +

    family_name:

    +

    slot_uri: sdo:familyName

    +

    address:

    +

    slot_uri: sdo:address

    +

    name: example-OBO-schema

    +

    classes:

    +

    Person:

    +

    class_uri: NCBITaxon:9606 ## Homo sapiens

    +

    attributes:

    +

    surname:

    +

    slot_uri: IAO:0000590 ## written name

    +

    home_address:

    +

    slot_uri: IAO:0000422 ## postal address

    +

    family_name: Wu

    +

    address: 1 my street\, Oakville

    +

    surname: Wu

    +

    home_address: 1 my street\, Oakville

    +

    mapping.yarrrml.yml

    +

    Example: YARRRML, compiled mappings

    +

    name: example-semweb-schema

    +

    classes:

    +

    Person:

    +

    class_uri: sdo:Person

    +

    attributes:

    +

    family_name:

    +

    slot_uri: sdo:familyName

    +

    address:

    +

    slot_uri: sdo:address

    +

    Mappings :

    +

    … \< TO BE DEFINED LINKML MAPPING SPEC >

    +

    name: example-OBO-schema

    +

    classes:

    +

    Person:

    +

    class_uri: NCBITaxon:9606 ## Homo sapiens

    +

    attributes:

    +

    surname:

    +

    slot_uri: IAO:0000590 ## written name

    +

    home_address:

    +

    slot_uri: IAO:0000422 ## postal address

    +

    family_name: Wu

    +

    address: 1 my street\, Oakville

    +

    surname: Wu

    +

    home_address: 1 my street\, Oakville

    +

    mapping.yarrrml.yml

    +

    Hyperparasitism is good

    +

    name: example-semweb-schema

    +

    classes:

    +

    Person:

    +

    class_uri: sdo:Person

    +

    attributes:

    +

    family_name:

    +

    slot_uri: sdo:familyName

    +

    address:

    +

    slot_uri: sdo:address

    +

    Mappings :

    +

    … \< TO BE DEFINED LINKML MAPPING SPEC >

    +

    name: example-OBO-schema

    +

    classes:

    +

    Person:

    +

    class_uri: NCBITaxon:9606 ## Homo sapiens

    +

    attributes:

    +

    surname:

    +

    slot_uri: IAO:0000590 ## written name

    +

    home_address:

    +

    slot_uri: IAO:0000422 ## postal address

    +

    mapping.yarrrml.yml

    +

    family_name: Wu

    +

    address: 1 my street\, Oakville

    +

    surname: Wu

    +

    home_address: 1 my street\, Oakville

    +

    Alternative: Direct translation language

    +
      +
    • Desiderata
    • +
    • Ability to compile to scalable frameworks
    • +
    • E.g. compile to SQL
    • +
    • Simple for simple tasks
    • +
    • Layer on existing expression language
    • +
    • Provides path to safe subset of host language (Python)
    • +
    • Can be easily implemented in other languages
    • +
    +

    +

    +

    Normalized to Denormalized (modeling SSSOM)

    +

    SQL INSERT (or CREATE VIEW)

    +

    +

    SQL FROM Clause

    +

    (implicit INNER JOIN/WHERE)

    +

    SQL SELECT … AS clause

    +

    Relationship to profiles TODO

    +

    Profiles/IGs can be seen as a sub-case of schema mapping

    +

    Current progress

    +

    https://github.com/linkml/linkml/issues/533 map to YARRRML

    +

    Vincent Vemonet has started on linkml->rml

    +

    https://github.com/vemonet/linkml/blob/add-gen-rml/linkml/generators/rmlgen.py

    +

    Relationship to Koza

    +

    Koza ingests often require multiple files

    +

    +

    +

    See Also

    +

    Revisiting BioWeave (Kent Shefchek\, 2020?)

    +

    https://docs.google.com/presentation/d/1DYiWXoz3iHM2PvMFD0hRpJ544tnHawg00PBwNuESo44/edit#slide=id.gb33d7ddd1b_0_93

    +

    Automating mapping

    +
      +
    • Should we pursue approaches to automate mapping?
    • +
    • Some of the functionality is already in schema-automator. E.g. auto-annotating schema elements using ontologies
    • +
    • Isomorphic schema mapping discovery analogous to ontology mapping
    • +
    • Can a boomer type approach help?
        +
      • E.g. given multiple loose mappings with alternative interpretations\, which ones give coherent results
      • +
      +
    • +
    • Other approaches
    • +
    • Inductive Logic Programming: transformations as logic programs
    • +
    • Genetic programming: transformations as lambda functions
    • +
    • Deep Learning: e.g. Language Models for translation
    • +
    • There is already a rich literature spanning decades here to be parasitized…
    • +
    +

    Summary: just tell me what to do today

    +
      +
    • For isomorphic mappings:
    • +
    • Stay within LinkML/SSSOM
    • +
    • No need for custom code\, it all works
    • +
    • For complex mappings:
    • +
    • It depends!
    • +
    • Do the structural mapping with linkml-convert
    • +
    • Implement the complex logic as you see fit\, depending on multiple factors. Any of the following may be valid
        +
      • Koza
      • +
      • Awk
      • +
      • SPARQL CONSTRUCTS or SELECTS
      • +
      • Custom python
      • +
      • YARRRML
      • +
      • SQL INSERTs
      • +
      • XSLT
      • +
      • Jsonpath-lifter
      • +
      • ….
      • +
      +
    • +
    +

    Roadmap

    +
      +
    • 2022: Continue to gather use cases\, experiment
    • +
    • 2023: If funding permits
    • +
    • Extend metamodel to include complex mapping
    • +
    • Implement EITHER
        +
      • Parasitizing converters
      • +
      • Direct mapping framework
      • +
      +
    • +
    • TBD: Is this Koza2?
    • +
    + + + + + +
    + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/populated_from/index.html b/populated_from/index.html new file mode 100644 index 0000000..004583c --- /dev/null +++ b/populated_from/index.html @@ -0,0 +1,374 @@ + + + + + + + + + + + + + + + + + + Slot: populated_from - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    + + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/prefixes/index.html b/prefixes/index.html new file mode 100644 index 0000000..0da0cb6 --- /dev/null +++ b/prefixes/index.html @@ -0,0 +1,373 @@ + + + + + + + + + + + + + + + + + + Slot: prefixes - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    + + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/same_as/index.html b/same_as/index.html new file mode 100644 index 0000000..b7268f8 --- /dev/null +++ b/same_as/index.html @@ -0,0 +1,374 @@ + + + + + + + + + + + + + + + + + + Slot: same_as - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    + + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json new file mode 100644 index 0000000..556c53b --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"LinkML Data Transformer Model Datamodel for LinkML schema transformations URI: https://w3id.org/linkml/transformer Name: transformer Classes Class Description AliasedClass alias-class key value pairs for classes ClassDerivation None Inverse None SlotDerivation None TransformationSpecification A collection of mappings between source and target classes Slots Slot Description alias None class_derivations Instructions on how to derive a set of class in the target schema class_name None class_named local alias for the class expr None hide None id None inverse_of None joins Additional classes to be joined to derive instances of the target class name Name of the class in the target schema populated_from Name of the class in the source schema prefixes None slot_derivations None slot_name None source_schema None target_schema None title None type_designator None Enumerations Enumeration Description Subsets Subset Description","title":"Index"},{"location":"#linkml-data-transformer-model","text":"Datamodel for LinkML schema transformations URI: https://w3id.org/linkml/transformer Name: transformer","title":"LinkML Data Transformer Model"},{"location":"#classes","text":"Class Description AliasedClass alias-class key value pairs for classes ClassDerivation None Inverse None SlotDerivation None TransformationSpecification A collection of mappings between source and target classes","title":"Classes"},{"location":"#slots","text":"Slot Description alias None class_derivations Instructions on how to derive a set of class in the target schema class_name None class_named local alias for the class expr None hide None id None inverse_of None joins Additional classes to be joined to derive instances of the target class name Name of the class in the target schema populated_from Name of the class in the source schema prefixes None slot_derivations None slot_name None source_schema None target_schema None title None type_designator None","title":"Slots"},{"location":"#enumerations","text":"Enumeration Description","title":"Enumerations"},{"location":"#subsets","text":"Subset Description","title":"Subsets"},{"location":"AliasedClass/","text":"Class: AliasedClass alias-class key value pairs for classes URI: tr:AliasedClass classDiagram class AliasedClass AliasedClass : alias AliasedClass : class_named Slots Name Range Cardinality Description Info alias NONE 0..1 None . class_named NONE 0..1 local alias for the class . Usages used by used in type used ClassDerivation joins range AliasedClass Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self ['tr:AliasedClass'] native ['tr:AliasedClass'] LinkML Specification Direct name: AliasedClass description: alias-class key value pairs for classes from_schema: https://w3id.org/linkml/transformer attributes: alias: name: alias from_schema: https://w3id.org/linkml/transformer key: true class_named: name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer Induced name: AliasedClass description: alias-class key value pairs for classes from_schema: https://w3id.org/linkml/transformer attributes: alias: name: alias from_schema: https://w3id.org/linkml/transformer key: true alias: alias owner: AliasedClass class_named: name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer alias: class_named owner: AliasedClass","title":"Class: AliasedClass"},{"location":"AliasedClass/#class-aliasedclass","text":"alias-class key value pairs for classes URI: tr:AliasedClass classDiagram class AliasedClass AliasedClass : alias AliasedClass : class_named","title":"Class: AliasedClass"},{"location":"AliasedClass/#slots","text":"Name Range Cardinality Description Info alias NONE 0..1 None . class_named NONE 0..1 local alias for the class .","title":"Slots"},{"location":"AliasedClass/#usages","text":"used by used in type used ClassDerivation joins range AliasedClass","title":"Usages"},{"location":"AliasedClass/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"AliasedClass/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"AliasedClass/#mappings","text":"Mapping Type Mapped Value self ['tr:AliasedClass'] native ['tr:AliasedClass']","title":"Mappings"},{"location":"AliasedClass/#linkml-specification","text":"","title":"LinkML Specification"},{"location":"AliasedClass/#direct","text":"name: AliasedClass description: alias-class key value pairs for classes from_schema: https://w3id.org/linkml/transformer attributes: alias: name: alias from_schema: https://w3id.org/linkml/transformer key: true class_named: name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer","title":"Direct"},{"location":"AliasedClass/#induced","text":"name: AliasedClass description: alias-class key value pairs for classes from_schema: https://w3id.org/linkml/transformer attributes: alias: name: alias from_schema: https://w3id.org/linkml/transformer key: true alias: alias owner: AliasedClass class_named: name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer alias: class_named owner: AliasedClass","title":"Induced"},{"location":"ClassDerivation/","text":"Class: ClassDerivation URI: tr:ClassDerivation classDiagram class ClassDerivation ClassDerivation : joins ClassDerivation : name ClassDerivation : populated_from ClassDerivation : slot_derivations Slots Name Range Cardinality Description Info name NONE 0..1 Name of the class in the target schema . populated_from xsd:string 0..1 Name of the class in the source schema . joins AliasedClass 0..* Additional classes to be joined to derive instances of the target class . slot_derivations SlotDerivation 0..* None . Usages used by used in type used TransformationSpecification class_derivations range ClassDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self ['tr:ClassDerivation'] native ['tr:ClassDerivation'] LinkML Specification Direct name: ClassDerivation from_schema: https://w3id.org/linkml/transformer attributes: name: name: name description: Name of the class in the target schema from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from description: Name of the class in the source schema from_schema: https://w3id.org/linkml/transformer range: string joins: name: joins description: Additional classes to be joined to derive instances of the target class from_schema: https://w3id.org/linkml/transformer multivalued: true range: AliasedClass inlined: true slot_derivations: name: slot_derivations from_schema: https://w3id.org/linkml/transformer multivalued: true range: SlotDerivation inlined: true Induced name: ClassDerivation from_schema: https://w3id.org/linkml/transformer attributes: name: name: name description: Name of the class in the target schema from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: ClassDerivation populated_from: name: populated_from description: Name of the class in the source schema from_schema: https://w3id.org/linkml/transformer alias: populated_from owner: ClassDerivation range: string joins: name: joins description: Additional classes to be joined to derive instances of the target class from_schema: https://w3id.org/linkml/transformer multivalued: true alias: joins owner: ClassDerivation range: AliasedClass inlined: true slot_derivations: name: slot_derivations from_schema: https://w3id.org/linkml/transformer multivalued: true alias: slot_derivations owner: ClassDerivation range: SlotDerivation inlined: true","title":"Class: ClassDerivation"},{"location":"ClassDerivation/#class-classderivation","text":"URI: tr:ClassDerivation classDiagram class ClassDerivation ClassDerivation : joins ClassDerivation : name ClassDerivation : populated_from ClassDerivation : slot_derivations","title":"Class: ClassDerivation"},{"location":"ClassDerivation/#slots","text":"Name Range Cardinality Description Info name NONE 0..1 Name of the class in the target schema . populated_from xsd:string 0..1 Name of the class in the source schema . joins AliasedClass 0..* Additional classes to be joined to derive instances of the target class . slot_derivations SlotDerivation 0..* None .","title":"Slots"},{"location":"ClassDerivation/#usages","text":"used by used in type used TransformationSpecification class_derivations range ClassDerivation","title":"Usages"},{"location":"ClassDerivation/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"ClassDerivation/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"ClassDerivation/#mappings","text":"Mapping Type Mapped Value self ['tr:ClassDerivation'] native ['tr:ClassDerivation']","title":"Mappings"},{"location":"ClassDerivation/#linkml-specification","text":"","title":"LinkML Specification"},{"location":"ClassDerivation/#direct","text":"name: ClassDerivation from_schema: https://w3id.org/linkml/transformer attributes: name: name: name description: Name of the class in the target schema from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from description: Name of the class in the source schema from_schema: https://w3id.org/linkml/transformer range: string joins: name: joins description: Additional classes to be joined to derive instances of the target class from_schema: https://w3id.org/linkml/transformer multivalued: true range: AliasedClass inlined: true slot_derivations: name: slot_derivations from_schema: https://w3id.org/linkml/transformer multivalued: true range: SlotDerivation inlined: true","title":"Direct"},{"location":"ClassDerivation/#induced","text":"name: ClassDerivation from_schema: https://w3id.org/linkml/transformer attributes: name: name: name description: Name of the class in the target schema from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: ClassDerivation populated_from: name: populated_from description: Name of the class in the source schema from_schema: https://w3id.org/linkml/transformer alias: populated_from owner: ClassDerivation range: string joins: name: joins description: Additional classes to be joined to derive instances of the target class from_schema: https://w3id.org/linkml/transformer multivalued: true alias: joins owner: ClassDerivation range: AliasedClass inlined: true slot_derivations: name: slot_derivations from_schema: https://w3id.org/linkml/transformer multivalued: true alias: slot_derivations owner: ClassDerivation range: SlotDerivation inlined: true","title":"Induced"},{"location":"Inverse/","text":"Class: Inverse URI: tr:Inverse classDiagram class Inverse Inverse : class_name Inverse : slot_name Slots Name Range Cardinality Description Info slot_name NONE 0..1 None . class_name NONE 0..1 None . Usages used by used in type used SlotDerivation inverse_of range Inverse Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self ['tr:Inverse'] native ['tr:Inverse'] LinkML Specification Direct name: Inverse from_schema: https://w3id.org/linkml/transformer aliases: - backref - back references attributes: slot_name: name: slot_name from_schema: https://w3id.org/linkml/transformer class_name: name: class_name from_schema: https://w3id.org/linkml/transformer Induced name: Inverse from_schema: https://w3id.org/linkml/transformer aliases: - backref - back references attributes: slot_name: name: slot_name from_schema: https://w3id.org/linkml/transformer alias: slot_name owner: Inverse class_name: name: class_name from_schema: https://w3id.org/linkml/transformer alias: class_name owner: Inverse","title":"Class: Inverse"},{"location":"Inverse/#class-inverse","text":"URI: tr:Inverse classDiagram class Inverse Inverse : class_name Inverse : slot_name","title":"Class: Inverse"},{"location":"Inverse/#slots","text":"Name Range Cardinality Description Info slot_name NONE 0..1 None . class_name NONE 0..1 None .","title":"Slots"},{"location":"Inverse/#usages","text":"used by used in type used SlotDerivation inverse_of range Inverse","title":"Usages"},{"location":"Inverse/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Inverse/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"Inverse/#mappings","text":"Mapping Type Mapped Value self ['tr:Inverse'] native ['tr:Inverse']","title":"Mappings"},{"location":"Inverse/#linkml-specification","text":"","title":"LinkML Specification"},{"location":"Inverse/#direct","text":"name: Inverse from_schema: https://w3id.org/linkml/transformer aliases: - backref - back references attributes: slot_name: name: slot_name from_schema: https://w3id.org/linkml/transformer class_name: name: class_name from_schema: https://w3id.org/linkml/transformer","title":"Direct"},{"location":"Inverse/#induced","text":"name: Inverse from_schema: https://w3id.org/linkml/transformer aliases: - backref - back references attributes: slot_name: name: slot_name from_schema: https://w3id.org/linkml/transformer alias: slot_name owner: Inverse class_name: name: class_name from_schema: https://w3id.org/linkml/transformer alias: class_name owner: Inverse","title":"Induced"},{"location":"SlotDerivation/","text":"Class: SlotDerivation URI: tr:SlotDerivation classDiagram class SlotDerivation SlotDerivation : expr SlotDerivation : hide SlotDerivation : inverse_of SlotDerivation : name SlotDerivation : populated_from SlotDerivation : type_designator Slots Name Range Cardinality Description Info name NONE 0..1 None . populated_from xsd:string 0..1 None . expr xsd:string 0..1 None . inverse_of Inverse 0..1 None . hide xsd:boolean 0..1 None . type_designator xsd:boolean 0..1 None . Usages used by used in type used ClassDerivation slot_derivations range SlotDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self ['tr:SlotDerivation'] native ['tr:SlotDerivation'] LinkML Specification Direct name: SlotDerivation from_schema: https://w3id.org/linkml/transformer attributes: name: name: name from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from from_schema: https://w3id.org/linkml/transformer range: string expr: name: expr from_schema: https://w3id.org/linkml/transformer range: string inverse_of: name: inverse_of from_schema: https://w3id.org/linkml/transformer range: Inverse hide: name: hide from_schema: https://w3id.org/linkml/transformer range: boolean type_designator: name: type_designator from_schema: https://w3id.org/linkml/transformer range: boolean Induced name: SlotDerivation from_schema: https://w3id.org/linkml/transformer attributes: name: name: name from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: SlotDerivation populated_from: name: populated_from from_schema: https://w3id.org/linkml/transformer alias: populated_from owner: SlotDerivation range: string expr: name: expr from_schema: https://w3id.org/linkml/transformer alias: expr owner: SlotDerivation range: string inverse_of: name: inverse_of from_schema: https://w3id.org/linkml/transformer alias: inverse_of owner: SlotDerivation range: Inverse hide: name: hide from_schema: https://w3id.org/linkml/transformer alias: hide owner: SlotDerivation range: boolean type_designator: name: type_designator from_schema: https://w3id.org/linkml/transformer alias: type_designator owner: SlotDerivation range: boolean","title":"Class: SlotDerivation"},{"location":"SlotDerivation/#class-slotderivation","text":"URI: tr:SlotDerivation classDiagram class SlotDerivation SlotDerivation : expr SlotDerivation : hide SlotDerivation : inverse_of SlotDerivation : name SlotDerivation : populated_from SlotDerivation : type_designator","title":"Class: SlotDerivation"},{"location":"SlotDerivation/#slots","text":"Name Range Cardinality Description Info name NONE 0..1 None . populated_from xsd:string 0..1 None . expr xsd:string 0..1 None . inverse_of Inverse 0..1 None . hide xsd:boolean 0..1 None . type_designator xsd:boolean 0..1 None .","title":"Slots"},{"location":"SlotDerivation/#usages","text":"used by used in type used ClassDerivation slot_derivations range SlotDerivation","title":"Usages"},{"location":"SlotDerivation/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"SlotDerivation/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"SlotDerivation/#mappings","text":"Mapping Type Mapped Value self ['tr:SlotDerivation'] native ['tr:SlotDerivation']","title":"Mappings"},{"location":"SlotDerivation/#linkml-specification","text":"","title":"LinkML Specification"},{"location":"SlotDerivation/#direct","text":"name: SlotDerivation from_schema: https://w3id.org/linkml/transformer attributes: name: name: name from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from from_schema: https://w3id.org/linkml/transformer range: string expr: name: expr from_schema: https://w3id.org/linkml/transformer range: string inverse_of: name: inverse_of from_schema: https://w3id.org/linkml/transformer range: Inverse hide: name: hide from_schema: https://w3id.org/linkml/transformer range: boolean type_designator: name: type_designator from_schema: https://w3id.org/linkml/transformer range: boolean","title":"Direct"},{"location":"SlotDerivation/#induced","text":"name: SlotDerivation from_schema: https://w3id.org/linkml/transformer attributes: name: name: name from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: SlotDerivation populated_from: name: populated_from from_schema: https://w3id.org/linkml/transformer alias: populated_from owner: SlotDerivation range: string expr: name: expr from_schema: https://w3id.org/linkml/transformer alias: expr owner: SlotDerivation range: string inverse_of: name: inverse_of from_schema: https://w3id.org/linkml/transformer alias: inverse_of owner: SlotDerivation range: Inverse hide: name: hide from_schema: https://w3id.org/linkml/transformer alias: hide owner: SlotDerivation range: boolean type_designator: name: type_designator from_schema: https://w3id.org/linkml/transformer alias: type_designator owner: SlotDerivation range: boolean","title":"Induced"},{"location":"TransformationSpecification/","text":"Class: TransformationSpecification A collection of mappings between source and target classes URI: tr:TransformationSpecification classDiagram class TransformationSpecification TransformationSpecification : class_derivations TransformationSpecification : id TransformationSpecification : prefixes TransformationSpecification : source_schema TransformationSpecification : target_schema TransformationSpecification : title Slots Name Range Cardinality Description Info id NONE 0..1 None . title NONE 0..1 None . prefixes NONE 0..1 None . source_schema NONE 0..1 None . target_schema NONE 0..1 None . class_derivations ClassDerivation 0..* Instructions on how to derive a set of class in the target schema . Usages Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self ['tr:TransformationSpecification'] native ['tr:TransformationSpecification'] LinkML Specification Direct name: TransformationSpecification description: A collection of mappings between source and target classes from_schema: https://w3id.org/linkml/transformer attributes: id: name: id from_schema: https://w3id.org/linkml/transformer title: name: title from_schema: https://w3id.org/linkml/transformer prefixes: name: prefixes from_schema: https://w3id.org/linkml/transformer source_schema: name: source_schema from_schema: https://w3id.org/linkml/transformer target_schema: name: target_schema from_schema: https://w3id.org/linkml/transformer class_derivations: name: class_derivations description: Instructions on how to derive a set of class in the target schema from_schema: https://w3id.org/linkml/transformer multivalued: true range: ClassDerivation inlined: true tree_root: true Induced name: TransformationSpecification description: A collection of mappings between source and target classes from_schema: https://w3id.org/linkml/transformer attributes: id: name: id from_schema: https://w3id.org/linkml/transformer alias: id owner: TransformationSpecification title: name: title from_schema: https://w3id.org/linkml/transformer alias: title owner: TransformationSpecification prefixes: name: prefixes from_schema: https://w3id.org/linkml/transformer alias: prefixes owner: TransformationSpecification source_schema: name: source_schema from_schema: https://w3id.org/linkml/transformer alias: source_schema owner: TransformationSpecification target_schema: name: target_schema from_schema: https://w3id.org/linkml/transformer alias: target_schema owner: TransformationSpecification class_derivations: name: class_derivations description: Instructions on how to derive a set of class in the target schema from_schema: https://w3id.org/linkml/transformer multivalued: true alias: class_derivations owner: TransformationSpecification range: ClassDerivation inlined: true tree_root: true","title":"Class: TransformationSpecification"},{"location":"TransformationSpecification/#class-transformationspecification","text":"A collection of mappings between source and target classes URI: tr:TransformationSpecification classDiagram class TransformationSpecification TransformationSpecification : class_derivations TransformationSpecification : id TransformationSpecification : prefixes TransformationSpecification : source_schema TransformationSpecification : target_schema TransformationSpecification : title","title":"Class: TransformationSpecification"},{"location":"TransformationSpecification/#slots","text":"Name Range Cardinality Description Info id NONE 0..1 None . title NONE 0..1 None . prefixes NONE 0..1 None . source_schema NONE 0..1 None . target_schema NONE 0..1 None . class_derivations ClassDerivation 0..* Instructions on how to derive a set of class in the target schema .","title":"Slots"},{"location":"TransformationSpecification/#usages","text":"","title":"Usages"},{"location":"TransformationSpecification/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"TransformationSpecification/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"TransformationSpecification/#mappings","text":"Mapping Type Mapped Value self ['tr:TransformationSpecification'] native ['tr:TransformationSpecification']","title":"Mappings"},{"location":"TransformationSpecification/#linkml-specification","text":"","title":"LinkML Specification"},{"location":"TransformationSpecification/#direct","text":"name: TransformationSpecification description: A collection of mappings between source and target classes from_schema: https://w3id.org/linkml/transformer attributes: id: name: id from_schema: https://w3id.org/linkml/transformer title: name: title from_schema: https://w3id.org/linkml/transformer prefixes: name: prefixes from_schema: https://w3id.org/linkml/transformer source_schema: name: source_schema from_schema: https://w3id.org/linkml/transformer target_schema: name: target_schema from_schema: https://w3id.org/linkml/transformer class_derivations: name: class_derivations description: Instructions on how to derive a set of class in the target schema from_schema: https://w3id.org/linkml/transformer multivalued: true range: ClassDerivation inlined: true tree_root: true","title":"Direct"},{"location":"TransformationSpecification/#induced","text":"name: TransformationSpecification description: A collection of mappings between source and target classes from_schema: https://w3id.org/linkml/transformer attributes: id: name: id from_schema: https://w3id.org/linkml/transformer alias: id owner: TransformationSpecification title: name: title from_schema: https://w3id.org/linkml/transformer alias: title owner: TransformationSpecification prefixes: name: prefixes from_schema: https://w3id.org/linkml/transformer alias: prefixes owner: TransformationSpecification source_schema: name: source_schema from_schema: https://w3id.org/linkml/transformer alias: source_schema owner: TransformationSpecification target_schema: name: target_schema from_schema: https://w3id.org/linkml/transformer alias: target_schema owner: TransformationSpecification class_derivations: name: class_derivations description: Instructions on how to derive a set of class in the target schema from_schema: https://w3id.org/linkml/transformer multivalued: true alias: class_derivations owner: TransformationSpecification range: ClassDerivation inlined: true tree_root: true","title":"Induced"},{"location":"alias/","text":"Slot: alias URI: https://w3id.org/linkml/transformer/alias Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: alias"},{"location":"alias/#slot-alias","text":"URI: https://w3id.org/linkml/transformer/alias","title":"Slot: alias"},{"location":"alias/#properties","text":"Range: NONE","title":"Properties"},{"location":"alias/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"alias/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"class_derivations/","text":"Slot: class_derivations Instructions on how to derive a set of class in the target schema URI: https://w3id.org/linkml/transformer/class_derivations Properties Range: ClassDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: class_derivations"},{"location":"class_derivations/#slot-class_derivations","text":"Instructions on how to derive a set of class in the target schema URI: https://w3id.org/linkml/transformer/class_derivations","title":"Slot: class_derivations"},{"location":"class_derivations/#properties","text":"Range: ClassDerivation","title":"Properties"},{"location":"class_derivations/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"class_derivations/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"class_name/","text":"Slot: class_name URI: https://w3id.org/linkml/transformer/class_name Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: class_name"},{"location":"class_name/#slot-class_name","text":"URI: https://w3id.org/linkml/transformer/class_name","title":"Slot: class_name"},{"location":"class_name/#properties","text":"Range: NONE","title":"Properties"},{"location":"class_name/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"class_name/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"class_named/","text":"Slot: class_named local alias for the class URI: https://w3id.org/linkml/transformer/class_named Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: class_named"},{"location":"class_named/#slot-class_named","text":"local alias for the class URI: https://w3id.org/linkml/transformer/class_named","title":"Slot: class_named"},{"location":"class_named/#properties","text":"Range: NONE","title":"Properties"},{"location":"class_named/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"class_named/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"expr/","text":"Slot: expr URI: https://w3id.org/linkml/transformer/expr Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: expr"},{"location":"expr/#slot-expr","text":"URI: https://w3id.org/linkml/transformer/expr","title":"Slot: expr"},{"location":"expr/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"expr/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"expr/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"hide/","text":"Slot: hide URI: https://w3id.org/linkml/transformer/hide Properties Range: xsd:boolean Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: hide"},{"location":"hide/#slot-hide","text":"URI: https://w3id.org/linkml/transformer/hide","title":"Slot: hide"},{"location":"hide/#properties","text":"Range: xsd:boolean","title":"Properties"},{"location":"hide/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"hide/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"id/","text":"Slot: id URI: https://w3id.org/linkml/transformer/id Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: id"},{"location":"id/#slot-id","text":"URI: https://w3id.org/linkml/transformer/id","title":"Slot: id"},{"location":"id/#properties","text":"Range: NONE","title":"Properties"},{"location":"id/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"id/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"inverse_of/","text":"Slot: inverse_of URI: https://w3id.org/linkml/transformer/inverse_of Properties Range: Inverse Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: inverse_of"},{"location":"inverse_of/#slot-inverse_of","text":"URI: https://w3id.org/linkml/transformer/inverse_of","title":"Slot: inverse_of"},{"location":"inverse_of/#properties","text":"Range: Inverse","title":"Properties"},{"location":"inverse_of/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"inverse_of/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"joins/","text":"Slot: joins Additional classes to be joined to derive instances of the target class URI: https://w3id.org/linkml/transformer/joins Properties Range: AliasedClass Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: joins"},{"location":"joins/#slot-joins","text":"Additional classes to be joined to derive instances of the target class URI: https://w3id.org/linkml/transformer/joins","title":"Slot: joins"},{"location":"joins/#properties","text":"Range: AliasedClass","title":"Properties"},{"location":"joins/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"joins/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"name/","text":"Slot: name Name of the class in the target schema URI: https://w3id.org/linkml/transformer/name Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: name"},{"location":"name/#slot-name","text":"Name of the class in the target schema URI: https://w3id.org/linkml/transformer/name","title":"Slot: name"},{"location":"name/#properties","text":"Range: NONE","title":"Properties"},{"location":"name/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"name/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"overview/","text":"Mapping Between LinkML Schemas Draft 2022-06-24 Problem: map data from one schema to another Problem: Map d1 \u2192 d2 Assumption d1 and d2 conform to two separate schemas\\, s1\u2192 s2 Sub-problems: Ingest/Import: my data warehouse conforms to s2 (e.g. Monarch ingest) Export: make my data ingest friendly Migrations: s1 and s2 are different versions of the same schema Not in scope: in-schema syntactic or structural transforms JSON to YAML\\, JSON to TSV\\, JSON to SQL\\, JSON to RDF\\, ORM\\, \u2026 In LinkML this is already largely solved The actual problem space is highly varied S1 and S2 may be trivially isomorphic S1 and S2 may differ in complex or nuanced ways There are many existing approaches Generic frameworks\\, driven by declarative specification in Domain Specific Language (DSL) JSON-based Google whistle jsonpath-lift XSLT Semweb YARRML\\, R2RML Many many more\u2026 Bespoke transforms: non-declarative Implement in python/awk/etc. Hybrid: bespoke with some declarative mappings in ad-hoc format E.g. NMDC ingest framework Traps with declarative mapping Declarative is great\\, until it\u2019s not Anti-patterns: Insufficient expressivity to carry out real world tasks Bolting on features to mapping DSL until it\u2019s a fully-featured Turing-complete language Optimization/scalability at mercy of framework Messy layering between DSL and host language It can be useful to leverage host language features (e.g arbitrary python function) But this can get confusing: NFNF: Neither fish nor fowl Limits optimizations (forces iterative host language calls) YARRRML https://rml.io/yarrrml/ YARRRML notes Has a playground\\, which is great Mixes two concerns: 1. Isomorphic structural mapping between JSON/TSVs and RDF (already covered by JSON-LD) 2. Mapping This isn\u2019t necessarily bad - it\u2019s quite practical\\, but a little unsatisfying IMO jsonpath-lifter Was proposed for CCDH CRDC-node mappings Doesn\u2019t seem widely used Is there a big advantage over simply writing javascript functions? Koza (previously: bioweave) ETL frameworks There are many many ETL frameworks E.g. WebKarma Inherently mixing of concerns Here we are concerned with the \u201cT\u201d part Do existing frameworks separate out the T as a modular composable component? I\u2019m not sure Do we need Yet Another Mapping Framework? LinkML philosophy: Embrace\\, extend\\, parasitize Develop lightweight ways to map Map mappings to existing mapping frameworks This actually makes sense even if it sounds kind of meta\u2026 Level 0 Mapping: Isomorphic, same URIs classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address classes: Agent: class_uri: sdo:Person attributes: surname: slot_uri: sdo:familyName home_address: slot_uri: sdo:address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Level 0: handled by standard linkml convert to/from RDF classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address classes: Agent: class_uri: sdo:Person attributes: surname: slot_uri: sdo:familyName home_address: slot_uri: sdo:address data2 (yaml/json) d ata1 (yaml/json) family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville d ata1.ttl == data2.ttl [sdo:familyName \u201cWu\u201d ; sdo:address \u201c1 my street\\, Oakville\u201d ] Level 0: Enums TODO: add example here. Basically this works the same way Level 0: HOWTO Compose two commands: linkml-convert -s schema1.yaml data1.yaml -o data1.ttl linkml-convert -s schema2.yaml data1.ttl -o data2.yaml That\u2019s it! TODO: Write a wrapper (linkml-map-data?) that does this in one command Level 0: other considerations Going via RDF in theory eliminates inlining differences E.g. s1 inlines address objects\\, s2 uses references (inlined: false) and includes a separate index slot for addresses Current status: Currently when going from s1 to s2\\, no index slots are generated This could be done as part of the general rdflib framework Lessons learned so far: annotate your schema with URIs! Annotating schemas with URIs is optional with LinkML But your future self and data users will thank you for careful schema annotation! Hints: Schema-automator can provide suggestions for your element and enum URIs Sometimes plain semweb URIs (e.g. schema.org) can be easier for interoperation than overly granular OBO ones E.g modeling Personhood as a role vs straightforward schema:Person Level 1 Mapping: Isomorphic, different URIs name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Level 1 Mapping: mediated by URI mapping name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address subject_id object_id sdo:Person NCBITaxon:9606 sdo:familyName IAO:nnnn sdo:address IAO:0000422 family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] Level 1: HOWTO Compose three commands: linkml-convert -s schema1.yaml data1.yaml -o data1.ttl sssom-map-iris -i data1.ttl -m schema1-to-schema2.sssom.tsv -o data2.ttl linkml-convert -s schema2.yaml data2.ttl -o data2.yaml That\u2019s it! TODO: sssom-map-iris does not yet exist (?)\\, but should be trivial Fold into wrapper CLI tool Nuances: Schemas have nuanced differences: not everything with be skos:exact We can distinguish 3 flavors of level 1 mapping: Precise\\, bidirectional: follow exact only Valid\\, unidirectional: follow exact + broad Loose: any mapping Level 1 variant: mappings in schema name: example-semweb-schema classes: Person: class_uri: sdo:Person exact_mappings: [\u201cNCBITaxon:9606\u201d] attributes: family_name: slot_uri: sdo:familyName exact_mappings: [\u201cIAO:nnnn\u201d] address: slot_uri: sdo:address exact_mappings: [\u201cIAO:0000422\u201d] name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] Advantages of RDF as an intermediate Use of IRIs Separation of concerns Structural differences (e.g. inlining) are already handled by linkml convert Allows us to focus on semantic mappings Lessons learned so far: think about mappings https://linkml.io/linkml/faq/modeling.html#when-is-it-important-to-have-mappings https://github.com/alliance-genome/agr_curation_schema/blob/main/model/schema/agent.yaml More complex mappings: level 2 and above TODO: define levels 2 and above Examples of kinds of features: merging/splitting fields; e.g. full_name = first + \u201c \u201c + last Unit conversion or baked-in units to explicit units Normalization/denormalization (aka flattening) Complex logic If conditions A\\, B\\, C and not D are met then copy field F from X to Y LinkML Rule and Inference Framework Current use case is intra-schema inference Easy to invoke on command line Needs more docs! Could form basis of inter-schema DSL Examples Schemas differ in units Schemas differ in categorical vs quantitative Current use case is intra-schema inference Could form basis of inter-schema DSL Datalog Datalog could serve as the powerful basis of an expressive declarative transformation language https://linkml.io/linkml-datalog Approach for level 2+ Do we even want a generic mapping framework in LinkML here? This is a good \u201c parasitization hook\u201d Do complex stuff using an existing framework TBD: derive or semi-derive mapping specification? This is also a code bespoke procedural code hook Do the generic stuff with linkml-convert and isomorphic IRI mapping Do more complex stuff in code General approach for level 2+; same to same name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville JSON OR XML OR YAML OR RDF OR SQL JSON OR XML OR YAML OR RDF OR SQL (matches the one on the left) Existing mapping framework (X to X) Example of same-to-same: jsonpath-lifter name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Jsonpath-lifter (JSON to JSON) Example of same-to-same: awk Example of same-to-same: SQL INSERT INTO Agent AS SELECT Person.last_name AS Agent.surname\\, CONCAT(Person.full_name\\, \u201c \u201c\\, Person.first) AS Agent.full_name\\, \u2026 CONSTRUCT { [ a schema:Person ; my:fullName STRCAT(...) ] } WHERE { ?person a schema:Person ; schema:firstName ; schema:lastName ; \u2026 } SPARQL CONSTRUCT RDF Engine or Triplestore Example of same-to-same: Python (LinkML objects) def convert(p: Person) -> Agent: return Agent(p.id\\, full_name=f\u201d{..} {..}\u201d\\, \u2026 Conversion script General approach for level 2+; heteromorphic name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville L inkml-convert OPTIONAL L inkml-convert OPTIONAL JSON OR XML OR YAML OR RDF OR SQL JSON OR XML OR YAML OR RDF OR SQL ( different from the one on the left) Existing mapping framework (X to Y) Example: YARRRML name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville YARRRML (JSON/YAML to RDF) Example: YARRRML, native mappings name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville mapping.yarrrml.yml Example: YARRRML, compiled mappings name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address Mappings : \u2026 \\< TO BE DEFINED LINKML MAPPING SPEC > name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville mapping.yarrrml.yml Hyperparasitism is good name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address Mappings : \u2026 \\< TO BE DEFINED LINKML MAPPING SPEC > name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address mapping.yarrrml.yml family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Alternative: Direct translation language Desiderata Ability to compile to scalable frameworks E.g. compile to SQL Simple for simple tasks Layer on existing expression language Provides path to safe subset of host language (Python) Can be easily implemented in other languages Normalized to Denormalized (modeling SSSOM) SQL INSERT (or CREATE VIEW) SQL FROM Clause (implicit INNER JOIN/WHERE) SQL SELECT \u2026 AS clause Relationship to profiles TODO Profiles/IGs can be seen as a sub-case of schema mapping Current progress https://github.com/linkml/linkml/issues/533 map to YARRRML Vincent Vemonet has started on linkml->rml https://github.com/vemonet/linkml/blob/add-gen-rml/linkml/generators/rmlgen.py Relationship to Koza Koza ingests often require multiple files See Also Revisiting BioWeave (Kent Shefchek\\, 2020?) https://docs.google.com/presentation/d/1DYiWXoz3iHM2PvMFD0hRpJ544tnHawg00PBwNuESo44/edit#slide=id.gb33d7ddd1b_0_93 Automating mapping Should we pursue approaches to automate mapping? Some of the functionality is already in schema-automator. E.g. auto-annotating schema elements using ontologies Isomorphic schema mapping discovery analogous to ontology mapping Can a boomer type approach help? E.g. given multiple loose mappings with alternative interpretations\\, which ones give coherent results Other approaches Inductive Logic Programming: transformations as logic programs Genetic programming: transformations as lambda functions Deep Learning: e.g. Language Models for translation There is already a rich literature spanning decades here to be parasitized\u2026 Summary: just tell me what to do today For isomorphic mappings: Stay within LinkML/SSSOM No need for custom code\\, it all works For complex mappings: It depends! Do the structural mapping with linkml-convert Implement the complex logic as you see fit\\, depending on multiple factors. Any of the following may be valid Koza Awk SPARQL CONSTRUCTS or SELECTS Custom python YARRRML SQL INSERTs XSLT Jsonpath-lifter \u2026. Roadmap 2022: Continue to gather use cases\\, experiment 2023: If funding permits Extend metamodel to include complex mapping Implement EITHER Parasitizing converters Direct mapping framework TBD: Is this Koza2?","title":"Overview"},{"location":"overview/#mapping-between-linkml-schemas","text":"","title":"Mapping Between LinkML Schemas"},{"location":"overview/#draft","text":"2022-06-24","title":"Draft"},{"location":"overview/#problem-map-data-from-one-schema-to-another","text":"Problem: Map d1 \u2192 d2 Assumption d1 and d2 conform to two separate schemas\\, s1\u2192 s2 Sub-problems: Ingest/Import: my data warehouse conforms to s2 (e.g. Monarch ingest) Export: make my data ingest friendly Migrations: s1 and s2 are different versions of the same schema Not in scope: in-schema syntactic or structural transforms JSON to YAML\\, JSON to TSV\\, JSON to SQL\\, JSON to RDF\\, ORM\\, \u2026 In LinkML this is already largely solved The actual problem space is highly varied S1 and S2 may be trivially isomorphic S1 and S2 may differ in complex or nuanced ways","title":"Problem: map data from one schema to another"},{"location":"overview/#there-are-many-existing-approaches","text":"Generic frameworks\\, driven by declarative specification in Domain Specific Language (DSL) JSON-based Google whistle jsonpath-lift XSLT Semweb YARRML\\, R2RML Many many more\u2026 Bespoke transforms: non-declarative Implement in python/awk/etc. Hybrid: bespoke with some declarative mappings in ad-hoc format E.g. NMDC ingest framework","title":"There are many existing approaches"},{"location":"overview/#traps-with-declarative-mapping","text":"Declarative is great\\, until it\u2019s not Anti-patterns: Insufficient expressivity to carry out real world tasks Bolting on features to mapping DSL until it\u2019s a fully-featured Turing-complete language Optimization/scalability at mercy of framework Messy layering between DSL and host language It can be useful to leverage host language features (e.g arbitrary python function) But this can get confusing: NFNF: Neither fish nor fowl Limits optimizations (forces iterative host language calls)","title":"Traps with declarative mapping"},{"location":"overview/#yarrrml","text":"https://rml.io/yarrrml/","title":"YARRRML"},{"location":"overview/#yarrrml-notes","text":"Has a playground\\, which is great Mixes two concerns: 1. Isomorphic structural mapping between JSON/TSVs and RDF (already covered by JSON-LD) 2. Mapping This isn\u2019t necessarily bad - it\u2019s quite practical\\, but a little unsatisfying IMO","title":"YARRRML notes"},{"location":"overview/#jsonpath-lifter","text":"Was proposed for CCDH CRDC-node mappings Doesn\u2019t seem widely used Is there a big advantage over simply writing javascript functions?","title":"jsonpath-lifter"},{"location":"overview/#koza-previously-bioweave","text":"","title":"Koza (previously: bioweave)"},{"location":"overview/#etl-frameworks","text":"There are many many ETL frameworks E.g. WebKarma Inherently mixing of concerns Here we are concerned with the \u201cT\u201d part Do existing frameworks separate out the T as a modular composable component? I\u2019m not sure","title":"ETL frameworks"},{"location":"overview/#do-we-need-yet-another-mapping-framework","text":"LinkML philosophy: Embrace\\, extend\\, parasitize Develop lightweight ways to map Map mappings to existing mapping frameworks This actually makes sense even if it sounds kind of meta\u2026","title":"Do we need Yet Another Mapping Framework?"},{"location":"overview/#level-0-mapping-isomorphic-same-uris","text":"classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address classes: Agent: class_uri: sdo:Person attributes: surname: slot_uri: sdo:familyName home_address: slot_uri: sdo:address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville","title":"Level 0 Mapping: Isomorphic, same URIs"},{"location":"overview/#level-0-handled-by-standard-linkml-convert-tofrom-rdf","text":"classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address classes: Agent: class_uri: sdo:Person attributes: surname: slot_uri: sdo:familyName home_address: slot_uri: sdo:address data2 (yaml/json) d ata1 (yaml/json) family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville d ata1.ttl == data2.ttl [sdo:familyName \u201cWu\u201d ; sdo:address \u201c1 my street\\, Oakville\u201d ]","title":"Level 0: handled by standard linkml convert to/from RDF"},{"location":"overview/#level-0-enums-todo-add-example-here-basically-this-works-the-same-way","text":"","title":"Level 0: Enums TODO: add example here. Basically this works the same way"},{"location":"overview/#level-0-howto","text":"Compose two commands: linkml-convert -s schema1.yaml data1.yaml -o data1.ttl linkml-convert -s schema2.yaml data1.ttl -o data2.yaml That\u2019s it! TODO: Write a wrapper (linkml-map-data?) that does this in one command","title":"Level 0: HOWTO"},{"location":"overview/#level-0-other-considerations","text":"Going via RDF in theory eliminates inlining differences E.g. s1 inlines address objects\\, s2 uses references (inlined: false) and includes a separate index slot for addresses Current status: Currently when going from s1 to s2\\, no index slots are generated This could be done as part of the general rdflib framework","title":"Level 0: other considerations"},{"location":"overview/#lessons-learned-so-far-annotate-your-schema-with-uris","text":"Annotating schemas with URIs is optional with LinkML But your future self and data users will thank you for careful schema annotation! Hints: Schema-automator can provide suggestions for your element and enum URIs Sometimes plain semweb URIs (e.g. schema.org) can be easier for interoperation than overly granular OBO ones E.g modeling Personhood as a role vs straightforward schema:Person","title":"Lessons learned so far: annotate your schema with URIs!"},{"location":"overview/#level-1-mapping-isomorphic-different-uris","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville","title":"Level 1 Mapping: Isomorphic, different URIs"},{"location":"overview/#level-1-mapping-mediated-by-uri-mapping","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address subject_id object_id sdo:Person NCBITaxon:9606 sdo:familyName IAO:nnnn sdo:address IAO:0000422 family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ]","title":"Level 1 Mapping: mediated by URI mapping"},{"location":"overview/#level-1-howto","text":"Compose three commands: linkml-convert -s schema1.yaml data1.yaml -o data1.ttl sssom-map-iris -i data1.ttl -m schema1-to-schema2.sssom.tsv -o data2.ttl linkml-convert -s schema2.yaml data2.ttl -o data2.yaml That\u2019s it! TODO: sssom-map-iris does not yet exist (?)\\, but should be trivial Fold into wrapper CLI tool Nuances: Schemas have nuanced differences: not everything with be skos:exact We can distinguish 3 flavors of level 1 mapping: Precise\\, bidirectional: follow exact only Valid\\, unidirectional: follow exact + broad Loose: any mapping","title":"Level 1: HOWTO"},{"location":"overview/#level-1-variant-mappings-in-schema","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person exact_mappings: [\u201cNCBITaxon:9606\u201d] attributes: family_name: slot_uri: sdo:familyName exact_mappings: [\u201cIAO:nnnn\u201d] address: slot_uri: sdo:address exact_mappings: [\u201cIAO:0000422\u201d] name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ]","title":"Level 1 variant: mappings in schema"},{"location":"overview/#advantages-of-rdf-as-an-intermediate","text":"Use of IRIs Separation of concerns Structural differences (e.g. inlining) are already handled by linkml convert Allows us to focus on semantic mappings","title":"Advantages of RDF as an intermediate"},{"location":"overview/#lessons-learned-so-far-think-about-mappings","text":"https://linkml.io/linkml/faq/modeling.html#when-is-it-important-to-have-mappings%20https://github.com/alliance-genome/agr_curation_schema/blob/main/model/schema/agent.yaml","title":"Lessons learned so far: think about mappings"},{"location":"overview/#more-complex-mappings-level-2-and-above","text":"TODO: define levels 2 and above Examples of kinds of features: merging/splitting fields; e.g. full_name = first + \u201c \u201c + last Unit conversion or baked-in units to explicit units Normalization/denormalization (aka flattening) Complex logic If conditions A\\, B\\, C and not D are met then copy field F from X to Y","title":"More complex mappings: level 2 and above"},{"location":"overview/#linkml-rule-and-inference-framework","text":"Current use case is intra-schema inference Easy to invoke on command line Needs more docs! Could form basis of inter-schema DSL Examples Schemas differ in units Schemas differ in categorical vs quantitative Current use case is intra-schema inference Could form basis of inter-schema DSL","title":"LinkML Rule and Inference Framework"},{"location":"overview/#datalog","text":"Datalog could serve as the powerful basis of an expressive declarative transformation language https://linkml.io/linkml-datalog","title":"Datalog"},{"location":"overview/#approach-for-level-2","text":"Do we even want a generic mapping framework in LinkML here? This is a good \u201c parasitization hook\u201d Do complex stuff using an existing framework TBD: derive or semi-derive mapping specification? This is also a code bespoke procedural code hook Do the generic stuff with linkml-convert and isomorphic IRI mapping Do more complex stuff in code","title":"Approach for level 2+"},{"location":"overview/#general-approach-for-level-2-same-to-same","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville JSON OR XML OR YAML OR RDF OR SQL JSON OR XML OR YAML OR RDF OR SQL (matches the one on the left) Existing mapping framework (X to X)","title":"General approach for level 2+; same to same"},{"location":"overview/#example-of-same-to-same-jsonpath-lifter","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Jsonpath-lifter (JSON to JSON)","title":"Example of same-to-same: jsonpath-lifter"},{"location":"overview/#example-of-same-to-same-awk","text":"","title":"Example of same-to-same: awk"},{"location":"overview/#example-of-same-to-same-sql","text":"INSERT INTO Agent AS SELECT Person.last_name AS Agent.surname\\, CONCAT(Person.full_name\\, \u201c \u201c\\, Person.first) AS Agent.full_name\\, \u2026 CONSTRUCT { [ a schema:Person ; my:fullName STRCAT(...) ] } WHERE { ?person a schema:Person ; schema:firstName ; schema:lastName ; \u2026 } SPARQL CONSTRUCT RDF Engine or Triplestore","title":"Example of same-to-same: SQL"},{"location":"overview/#example-of-same-to-same-python-linkml-objects","text":"def convert(p: Person) -> Agent: return Agent(p.id\\, full_name=f\u201d{..} {..}\u201d\\, \u2026 Conversion script","title":"Example of same-to-same: Python (LinkML objects)"},{"location":"overview/#general-approach-for-level-2-heteromorphic","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville L inkml-convert OPTIONAL L inkml-convert OPTIONAL JSON OR XML OR YAML OR RDF OR SQL JSON OR XML OR YAML OR RDF OR SQL ( different from the one on the left) Existing mapping framework (X to Y)","title":"General approach for level 2+; heteromorphic"},{"location":"overview/#example-yarrrml","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville YARRRML (JSON/YAML to RDF)","title":"Example: YARRRML"},{"location":"overview/#example-yarrrml-native-mappings","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville mapping.yarrrml.yml","title":"Example: YARRRML, native mappings"},{"location":"overview/#example-yarrrml-compiled-mappings","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address Mappings : \u2026 \\< TO BE DEFINED LINKML MAPPING SPEC > name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville mapping.yarrrml.yml","title":"Example: YARRRML, compiled mappings"},{"location":"overview/#hyperparasitism-is-good","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address Mappings : \u2026 \\< TO BE DEFINED LINKML MAPPING SPEC > name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address mapping.yarrrml.yml family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville","title":"Hyperparasitism is good"},{"location":"overview/#alternative-direct-translation-language","text":"Desiderata Ability to compile to scalable frameworks E.g. compile to SQL Simple for simple tasks Layer on existing expression language Provides path to safe subset of host language (Python) Can be easily implemented in other languages","title":"Alternative: Direct translation language"},{"location":"overview/#normalized-to-denormalized-modeling-sssom","text":"SQL INSERT (or CREATE VIEW) SQL FROM Clause (implicit INNER JOIN/WHERE) SQL SELECT \u2026 AS clause","title":"Normalized to Denormalized (modeling SSSOM)"},{"location":"overview/#relationship-to-profiles-todo","text":"Profiles/IGs can be seen as a sub-case of schema mapping","title":"Relationship to profiles TODO"},{"location":"overview/#current-progress","text":"https://github.com/linkml/linkml/issues/533%20map%20to%20YARRRML%20Vincent%20Vemonet%20has%20started%20on%20linkml-%3Erml%20https://github.com/vemonet/linkml/blob/add-gen-rml/linkml/generators/rmlgen.py","title":"Current progress"},{"location":"overview/#relationship-to-koza","text":"","title":"Relationship to Koza"},{"location":"overview/#koza-ingests-often-require-multiple-files","text":"","title":"Koza ingests often require multiple files"},{"location":"overview/#see-also","text":"Revisiting BioWeave (Kent Shefchek\\, 2020?) https://docs.google.com/presentation/d/1DYiWXoz3iHM2PvMFD0hRpJ544tnHawg00PBwNuESo44/edit#slide=id.gb33d7ddd1b_0_93","title":"See Also"},{"location":"overview/#automating-mapping","text":"Should we pursue approaches to automate mapping? Some of the functionality is already in schema-automator. E.g. auto-annotating schema elements using ontologies Isomorphic schema mapping discovery analogous to ontology mapping Can a boomer type approach help? E.g. given multiple loose mappings with alternative interpretations\\, which ones give coherent results Other approaches Inductive Logic Programming: transformations as logic programs Genetic programming: transformations as lambda functions Deep Learning: e.g. Language Models for translation There is already a rich literature spanning decades here to be parasitized\u2026","title":"Automating mapping"},{"location":"overview/#summary-just-tell-me-what-to-do-today","text":"For isomorphic mappings: Stay within LinkML/SSSOM No need for custom code\\, it all works For complex mappings: It depends! Do the structural mapping with linkml-convert Implement the complex logic as you see fit\\, depending on multiple factors. Any of the following may be valid Koza Awk SPARQL CONSTRUCTS or SELECTS Custom python YARRRML SQL INSERTs XSLT Jsonpath-lifter \u2026.","title":"Summary: just tell me what to do today"},{"location":"overview/#roadmap","text":"2022: Continue to gather use cases\\, experiment 2023: If funding permits Extend metamodel to include complex mapping Implement EITHER Parasitizing converters Direct mapping framework TBD: Is this Koza2?","title":"Roadmap"},{"location":"populated_from/","text":"Slot: populated_from Name of the class in the source schema URI: https://w3id.org/linkml/transformer/populated_from Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: populated_from"},{"location":"populated_from/#slot-populated_from","text":"Name of the class in the source schema URI: https://w3id.org/linkml/transformer/populated_from","title":"Slot: populated_from"},{"location":"populated_from/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"populated_from/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"populated_from/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"prefixes/","text":"Slot: prefixes URI: https://w3id.org/linkml/transformer/prefixes Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: prefixes"},{"location":"prefixes/#slot-prefixes","text":"URI: https://w3id.org/linkml/transformer/prefixes","title":"Slot: prefixes"},{"location":"prefixes/#properties","text":"Range: NONE","title":"Properties"},{"location":"prefixes/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"prefixes/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"same_as/","text":"Slot: same_as Name of the class in the source schema URI: https://w3id.org/linkml/transformer/same_as Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: same_as"},{"location":"same_as/#slot-same_as","text":"Name of the class in the source schema URI: https://w3id.org/linkml/transformer/same_as","title":"Slot: same_as"},{"location":"same_as/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"same_as/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"same_as/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"slot_derivations/","text":"Slot: slot_derivations URI: https://w3id.org/linkml/transformer/slot_derivations Properties Range: SlotDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: slot_derivations"},{"location":"slot_derivations/#slot-slot_derivations","text":"URI: https://w3id.org/linkml/transformer/slot_derivations","title":"Slot: slot_derivations"},{"location":"slot_derivations/#properties","text":"Range: SlotDerivation","title":"Properties"},{"location":"slot_derivations/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"slot_derivations/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"slot_name/","text":"Slot: slot_name URI: https://w3id.org/linkml/transformer/slot_name Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: slot_name"},{"location":"slot_name/#slot-slot_name","text":"URI: https://w3id.org/linkml/transformer/slot_name","title":"Slot: slot_name"},{"location":"slot_name/#properties","text":"Range: NONE","title":"Properties"},{"location":"slot_name/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"slot_name/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"source_schema/","text":"Slot: source_schema URI: https://w3id.org/linkml/transformer/source_schema Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: source_schema"},{"location":"source_schema/#slot-source_schema","text":"URI: https://w3id.org/linkml/transformer/source_schema","title":"Slot: source_schema"},{"location":"source_schema/#properties","text":"Range: NONE","title":"Properties"},{"location":"source_schema/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"source_schema/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"target_schema/","text":"Slot: target_schema URI: https://w3id.org/linkml/transformer/target_schema Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: target_schema"},{"location":"target_schema/#slot-target_schema","text":"URI: https://w3id.org/linkml/transformer/target_schema","title":"Slot: target_schema"},{"location":"target_schema/#properties","text":"Range: NONE","title":"Properties"},{"location":"target_schema/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"target_schema/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"title/","text":"Slot: title URI: https://w3id.org/linkml/transformer/title Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: title"},{"location":"title/#slot-title","text":"URI: https://w3id.org/linkml/transformer/title","title":"Slot: title"},{"location":"title/#properties","text":"Range: NONE","title":"Properties"},{"location":"title/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"title/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"transformer/","text":"transformer Datamodel for LinkML schema transformations URI: https://w3id.org/linkml/transformer","title":"transformer"},{"location":"transformer/#transformer","text":"Datamodel for LinkML schema transformations URI: https://w3id.org/linkml/transformer","title":"transformer"},{"location":"type_designator/","text":"Slot: type_designator URI: https://w3id.org/linkml/transformer/type_designator Properties Range: xsd:boolean Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: type_designator"},{"location":"type_designator/#slot-type_designator","text":"URI: https://w3id.org/linkml/transformer/type_designator","title":"Slot: type_designator"},{"location":"type_designator/#properties","text":"Range: xsd:boolean","title":"Properties"},{"location":"type_designator/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"type_designator/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"types/","text":"types Shared type definitions for the core LinkML mode and metamodel URI: https://w3id.org/linkml/types","title":"types"},{"location":"types/#types","text":"Shared type definitions for the core LinkML mode and metamodel URI: https://w3id.org/linkml/types","title":"types"}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..618596e --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,143 @@ + + + + https://cmungall.github.io/linkml-transformer/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/AliasedClass/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/ClassDerivation/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/Inverse/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/SlotDerivation/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/TransformationSpecification/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/alias/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/class_derivations/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/class_name/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/class_named/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/expr/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/hide/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/id/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/inverse_of/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/joins/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/name/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/overview/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/populated_from/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/prefixes/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/same_as/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/slot_derivations/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/slot_name/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/source_schema/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/target_schema/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/title/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/transformer/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/type_designator/ + 2022-08-19 + daily + + + https://cmungall.github.io/linkml-transformer/types/ + 2022-08-19 + daily + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..5ddac8c839e322796a0e6567314153ea65fd5ff4 GIT binary patch literal 409 zcmV;K0cQRmiwFpyvj1WN|8r?{Wo=<_E_iKh0M(emZi6rkhVOd{#2rF=Y9~rHZJM-m zyEDpy0dFB;aVYKEFF;rIK53G3Ay~%xK!5%?3zJC;A9LJQ z=l7A1zw?>;(1XGn6{}Z}(~{%@tERPBRyUn612?h*e#8|QWH|S1cET1bHc~(~3czL4 zD{ak%_|qaE7vtn#HYnkQFmmDTZ9iz~p(<- + + + + + + + + + + + + + + + + Slot: slot_derivations - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    + + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/slot_name/index.html b/slot_name/index.html new file mode 100644 index 0000000..4d21c7a --- /dev/null +++ b/slot_name/index.html @@ -0,0 +1,373 @@ + + + + + + + + + + + + + + + + + + Slot: slot_name - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    + + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/source_schema/index.html b/source_schema/index.html new file mode 100644 index 0000000..c40b233 --- /dev/null +++ b/source_schema/index.html @@ -0,0 +1,373 @@ + + + + + + + + + + + + + + + + + + Slot: source_schema - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    + + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/target_schema/index.html b/target_schema/index.html new file mode 100644 index 0000000..711c64b --- /dev/null +++ b/target_schema/index.html @@ -0,0 +1,373 @@ + + + + + + + + + + + + + + + + + + Slot: target_schema - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    + + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/title/index.html b/title/index.html new file mode 100644 index 0000000..8639a86 --- /dev/null +++ b/title/index.html @@ -0,0 +1,373 @@ + + + + + + + + + + + + + + + + + + Slot: title - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    + + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/transformer/index.html b/transformer/index.html new file mode 100644 index 0000000..9b16429 --- /dev/null +++ b/transformer/index.html @@ -0,0 +1,328 @@ + + + + + + + + + + + + + + + + + + transformer - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    +
    + + + + + + + + +

    transformer

    +

    Datamodel for LinkML schema transformations

    +

    URI: https://w3id.org/linkml/transformer

    + + + + + +
    + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/type_designator/index.html b/type_designator/index.html new file mode 100644 index 0000000..a787c8b --- /dev/null +++ b/type_designator/index.html @@ -0,0 +1,373 @@ + + + + + + + + + + + + + + + + + + Slot: type_designator - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    + + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/types/index.html b/types/index.html new file mode 100644 index 0000000..895cc57 --- /dev/null +++ b/types/index.html @@ -0,0 +1,328 @@ + + + + + + + + + + + + + + + + + + types - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + +
    +
    + + + + + + + + +

    types

    +

    Shared type definitions for the core LinkML mode and metamodel

    +

    URI: https://w3id.org/linkml/types

    + + + + + +
    + + + +
    +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file From db8c1fbf69b61a3c47d5715b464c937e881b9706 Mon Sep 17 00:00:00 2001 From: cmungall Date: Fri, 3 Mar 2023 18:51:21 -0800 Subject: [PATCH 2/6] Deployed 5efba97 with MkDocs version: 1.4.0 --- 404.html | 30 +- AliasedClass/index.html | 61 ++- Any/index.html | 340 ++++++++++++ Boolean/index.html | 378 +++++++++++++ ClassDerivation/index.html | 160 ++++-- CopyDirective/index.html | 472 ++++++++++++++++ Curie/index.html | 390 +++++++++++++ Date/index.html | 378 +++++++++++++ DateOrDatetime/index.html | 378 +++++++++++++ Datetime/index.html | 378 +++++++++++++ Decimal/index.html | 375 +++++++++++++ Double/index.html | 375 +++++++++++++ ElementDerivation/index.html | 509 +++++++++++++++++ EnumDerivation/index.html | 511 ++++++++++++++++++ Float/index.html | 375 +++++++++++++ Integer/index.html | 375 +++++++++++++ Inverse/index.html | 78 ++- KeyVal/index.html | 334 ++++++++++++ Ncname/index.html | 378 +++++++++++++ Nodeidentifier/index.html | 378 +++++++++++++ Objectidentifier/index.html | 389 +++++++++++++ PermissibleValueDerivation/index.html | 466 ++++++++++++++++ PrefixDerivation/index.html | 380 +++++++++++++ SlotDerivation/index.html | 211 ++++++-- String/index.html | 375 +++++++++++++ Time/index.html | 378 +++++++++++++ TransformationSpecification/index.html | 184 +++++-- Uri/index.html | 389 +++++++++++++ Uriorcurie/index.html | 378 +++++++++++++ add/index.html | 423 +++++++++++++++ alias/index.html | 87 ++- assets/javascripts/bundle.078830c0.min.js | 29 + assets/javascripts/bundle.078830c0.min.js.map | 8 + assets/javascripts/bundle.9c69f0bc.min.js | 29 - assets/javascripts/bundle.9c69f0bc.min.js.map | 8 - ...ecf98df9.min.js => search.5bf1dace.min.js} | 2 +- ....min.js.map => search.5bf1dace.min.js.map} | 2 +- assets/stylesheets/main.20d9efc8.min.css | 1 + assets/stylesheets/main.20d9efc8.min.css.map | 1 + assets/stylesheets/main.69437709.min.css | 1 - assets/stylesheets/main.69437709.min.css.map | 1 - class_derivations/index.html | 89 ++- class_name/index.html | 84 ++- class_named/index.html | 85 ++- copy_all/index.html | 423 +++++++++++++++ copy_directives/index.html | 446 +++++++++++++++ element_name/index.html | 424 +++++++++++++++ enum_derivations/index.html | 428 +++++++++++++++ exclude/index.html | 423 +++++++++++++++ exclude_all/index.html | 423 +++++++++++++++ expr/index.html | 102 ++-- hide/index.html | 104 ++-- id/index.html | 87 ++- include/index.html | 423 +++++++++++++++ index.html | 254 +++++++-- inverse_of/index.html | 87 ++- is_a/index.html | 443 +++++++++++++++ joins/index.html | 99 +++- key/index.html | 424 +++++++++++++++ mixins/index.html | 446 +++++++++++++++ name/index.html | 119 ++-- overview/index.html | 36 +- permissible_value_derivations/index.html | 428 +++++++++++++++ populated_from/index.html | 103 ++-- prefixes/index.html | 86 ++- same_as/index.html | 36 +- search/search_index.json | 2 +- sitemap.xml | 236 +++++++- sitemap.xml.gz | Bin 409 -> 629 bytes slot_derivations/index.html | 99 ++-- slot_name/index.html | 84 ++- source_schema/index.html | 86 ++- target_schema/index.html | 86 ++- title/index.html | 86 ++- transformer/index.html | 49 +- type_designator/index.html | 82 ++- types/index.html | 36 +- value/index.html | 423 +++++++++++++++ 78 files changed, 17026 insertions(+), 740 deletions(-) create mode 100644 Any/index.html create mode 100644 Boolean/index.html create mode 100644 CopyDirective/index.html create mode 100644 Curie/index.html create mode 100644 Date/index.html create mode 100644 DateOrDatetime/index.html create mode 100644 Datetime/index.html create mode 100644 Decimal/index.html create mode 100644 Double/index.html create mode 100644 ElementDerivation/index.html create mode 100644 EnumDerivation/index.html create mode 100644 Float/index.html create mode 100644 Integer/index.html create mode 100644 KeyVal/index.html create mode 100644 Ncname/index.html create mode 100644 Nodeidentifier/index.html create mode 100644 Objectidentifier/index.html create mode 100644 PermissibleValueDerivation/index.html create mode 100644 PrefixDerivation/index.html create mode 100644 String/index.html create mode 100644 Time/index.html create mode 100644 Uri/index.html create mode 100644 Uriorcurie/index.html create mode 100644 add/index.html create mode 100644 assets/javascripts/bundle.078830c0.min.js create mode 100644 assets/javascripts/bundle.078830c0.min.js.map delete mode 100644 assets/javascripts/bundle.9c69f0bc.min.js delete mode 100644 assets/javascripts/bundle.9c69f0bc.min.js.map rename assets/javascripts/workers/{search.ecf98df9.min.js => search.5bf1dace.min.js} (99%) rename assets/javascripts/workers/{search.ecf98df9.min.js.map => search.5bf1dace.min.js.map} (94%) create mode 100644 assets/stylesheets/main.20d9efc8.min.css create mode 100644 assets/stylesheets/main.20d9efc8.min.css.map delete mode 100644 assets/stylesheets/main.69437709.min.css delete mode 100644 assets/stylesheets/main.69437709.min.css.map create mode 100644 copy_all/index.html create mode 100644 copy_directives/index.html create mode 100644 element_name/index.html create mode 100644 enum_derivations/index.html create mode 100644 exclude/index.html create mode 100644 exclude_all/index.html create mode 100644 include/index.html create mode 100644 is_a/index.html create mode 100644 key/index.html create mode 100644 mixins/index.html create mode 100644 permissible_value_derivations/index.html create mode 100644 value/index.html diff --git a/404.html b/404.html index cbc05e8..d7dead8 100644 --- a/404.html +++ b/404.html @@ -9,7 +9,7 @@ - + @@ -17,13 +17,14 @@ - + + @@ -42,6 +43,7 @@ + @@ -111,7 +113,7 @@ @@ -135,7 +137,7 @@
    - +

    n+I%5oAU^sj80~9#M4k} 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%0D+Aegt#pb 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

    ?$IG(-UeSiP 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 literal 0 HcmV?d00001 diff --git a/img/Mapping Between LinkML Schemas20.png b/img/Mapping Between LinkML Schemas20.png new file mode 100644 index 0000000000000000000000000000000000000000..a79f5e404527d452a1fbc9572d73c4c8b9ff248d GIT binary patch literal 20516 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 D*qCd> literal 0 HcmV?d00001 diff --git a/img/Mapping Between LinkML Schemas4.png b/img/Mapping Between LinkML Schemas4.png new file mode 100644 index 0000000000000000000000000000000000000000..7a3248cdf1af77cd35f6bd2d2db9238f67293cbb GIT binary patch literal 79188 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 literal 0 HcmV?d00001 diff --git a/img/Mapping Between LinkML Schemas11.png b/img/Mapping Between LinkML Schemas11.png new file mode 100644 index 0000000000000000000000000000000000000000..408851f818298c1b0c1681f72c3b3720012601c0 GIT binary patch literal 36395 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 literal 0 HcmV?d00001 diff --git a/img/Mapping Between LinkML Schemas12.png b/img/Mapping Between LinkML Schemas12.png new file mode 100644 index 0000000000000000000000000000000000000000..a84ea88b10243073cec88d4e4b1a6d040a324f7a GIT binary patch literal 128490 zcmeFZ`#;nF|36+yDsrfh$dXDCla$j;lH@5#j$tG%Jhd^lSd60ZOb!upCLv+Yhvt+V zCTEEWa~d|rm|Jekw|*n-UFQcbSN zT)uq1rOD-y>QVKjhbu1k1p9bYT6=>+bp4_xo)A7z4ac9%BdaCc_b1LCNTB9Qp0r75 z_$0WvoFBHhN_MhX_<|2)3l&~>@J$`C=ayO(Z0T&T76yc$HH`lAV`H%+yQBN>@6n$u z9`z{x_YbZI$p3vg_R0T!d3RZC{=d2=1-T1@#ZD_5^g{1PHIRZ&)2l6#?&f%>B{l^A zC(J)plxYLzP|j3LuUZ{5eDs7)x8BcX?D7ve1(N&9N}q{U_PalC9O@GwT#b#?*{(YJ zqTF#4B4pT3WfDP!cJ(53eZQMF=E=SS#PmYozJoZG$Vr@RVnpktfU9T3r_PI>#+X&}i8 zQoTp9&ge}hQEjN)%?f_<&)q+1cc$A0t+zXD-#=7&-ea_^c>6DJ)l}EOBt@#s4i0#`Jmpt{cS2w{l>2mL$gMD( zisLR+MoRn67dPn8st%Ld6bfrpo-Z}<5xFmLozF`aFGem`v6e=C7sI8oQ}38pTRDaa z>>qMz<}ERQmLbn|HVC;dIZTP*vO)pvR2@wf^Ia$>xuoINBvO1CU(I;M_un*-LN)n7 zv7_sw>^e2UTW#xOoG$NMW1BN-3U@W8->;%l{g!{UEoqMJY_k>UtW8$8Rg2qCwVP+x zH5pZu7J6zW_)%*8<}{c{Powre`JA3KU9#zpqua(}j|)(IK)@1EdcG{yh=&WWPQ{oY z$<(p!wMqjW?(goF35Qgujje5-6!+S+ACB29uFyDCq;!WEz$((@1JcOH??#hsB&4JS z$4lw~7G8Y=NL+AT{0n3D$;2$k}#d^S}Q$z3M?ft(`@0m9fo(koA%lz zih<5XFRiFiP!i_HY|aESEk`Bonx4G^mr?Bw2dT~4&b**_0l631&8k6)Q2C~vNk+jA zI~%0f)!fEw@veg=$zW^(FMLUxJ!1AC?$4syC>otY_w6fDyzqq;1loM~(Q?qr4y6y5 zHaAOiXZ2)z|>Ssld89-2P8!Q4$mUbt<~8==}cWd~f^ge;@XU zktBNT*)SsZ^rNF?gB`36JYnuj8yYqg7zaO0n5}p*kc!=Og|IrV#B!WV_md0jw>O$H zJWhQlWT*R>9;9U-S-*bW;6xI&I$u}q{2@bKy1h*`6>-zdBjvL6Ui7xF?zaT0_M*z` zxUsU^-F?Py++H#qmNzdKy1}EJ2F+)VqaF0Z<{;#=K0hq2o|MJb|JI-;n{jO8og%d> zO78rNMJMA_X#TW}5c$1Lsx&^0?&{O|KPcUQCj=t*6+;+h2ODUKXTY+F*Jv|~WnG;V z6Sruj=!|2chobC!*OoWft4BM0Yi+o&WU)t$#<;Q5jj9W~VCEu{OiUZNO0qLc*nt$r zW&|SbS2|95if8#IxusG(H-@=D%x|A84AXyqafO*oOyRA+_M`m+ zwY+3!n`;%U<|^-XeQXK4`Cy6JroMxHKP*B1KDF=%p$*&JX9F3M?lr|nA&>c_Jie*F z9dCS$wSGp%kSyYu0KAyDv>y}=*k+|g>P!w)V%!7>%-_yw;kM3|tM6dq=pg0rZ(Lvp z7T!5__4VBqN)l1grS^xxS_P7<`F#8(UyBSTE$$;aBs$*gjwHHr!FH{)-^!u3&W=!B zMaNg$H1=pqpuO-@t3QStiIN)L-2GvGXRm^TD1X%tVn+f8#=k~7cV*$H5x+~amNRZ| zDEQA86K^@EU@YOA=ly;~DVNYGLF0thVZI1<)gH5m-2 z=S;!s??MD~OkcQJL8)A+y!?pNmrG-JrjIS0H)GeN*E6 z$?-L}KMAx`NRA0QTeBuaax@yo*Q^RU9s6e&_zv9XCHtK&P`Dry71p=(uBzf*xFc2r zmT~;$ea4rdo&@2`k&@Ht)#{5iEP0BUv95P-f4HF;?bq>{(i$nLm-S4U8i@bR^$$4; z*@p;+HkW-&k)0B!fXWoh>}6-Z)T3mkVPR+Nm8Kq|`m&8aUr!)@YJuG>Nh+dal-u_sjUotmt>@IgFX@hoi-n?JFwT^UQFG4xk>_j!V_!oVay_~ z5~pnOCs!16vJMkmn?LY`gnm;u;R*Z#K_2I7W%oNuOZS(DD!Mohiz#2@jcGrQKGr&o z3acFRuU7Fl-@xIo821=^q!PoH*Ku(M2-TqIP8#5?$77rt6t`gliITKX!^ z`lxYzO)D5AhAp^bHnVg?CQ@AF$>LCXp312Uc|&a$_U2QrJ)-Esf&z=|i-Yyp&CiUW zqCXGh`c=`Q2RDKuTI>r6JpD@foQYXkc@M>z0f*RJo|zCSsAbh;rfp8i#k#%$knPZ< zwbjP?h`U+~Wo=cawsg{N(TZh;Wh)na=9k5yqKIKg!fbY%s=irk|MAhzVefh_xs7lf zofJg`53T8vzM`gMtt_+uap@cqJH6~!PoP8t4~TAjmvhmjA&D4C`|FH}85(#cH#+AB zP_@wEw)UE;xz#hCJ>+Mp4_n>fi7M3DoHYDf@!rncspmf`#6XPS2RH_0FUYG0EUWT@ zudvp8S4j>I3IB35#Y!Mzvtw#}g8C$)@GRl9iP_T2G8KC(ep1Ciymc%9SqRWV<}^~e z{=<1%wy1}#Fu#q|vDW_b6Ejsumqa(Kku}&%cY4jJ2q?Ov?>L(Mju<)moL&;+!%1wZXO)|p3f=}CxgiUH34-;jg;&YgoU3%gjjJc^YG5aOe`P zF8xvnLuz^HBSY5f_m>0YSA%|1Q9^6Ig!lMsLxDA#08!+$Qa{o64y0|Tu=u3euMoo( z76a}VDo3BY!Lbs=iURukd?nSVSKNAPv8hU1lE1SN2Ef{Eiw6D_N-ec zQb@8NU%Nx)xN~z)0*gu%Pd`;L)FGE1AbXFX4B&~MT_v555X3FA(T*eK<>don?Gjr! zDo0gfWB2P$P?E7Vfza=)b`={HfZPHIqc-N}1+NLkboSlcl$S9%h8U}>RSExJ>3GX(y^%P&tQs>n z*Z$$#d6Q%11x{u?#^OBKk<{k*Oe>25-0xWdd-LAgl2*r3{oqM0v zJ_4{YxfDAJQ%o?~ttF}=;CqwnVFb(Ui(aWdlmE2&^u}7*KS(%##=5KTCZ=Hf|0F8_ zg;s;TRHt{mdo5vMZ9pOXsxlV(@Pdh%vd%_DXWwyvW{`;MF3iN7i!__Fk)Zz9chQbf zM1>)no}Ynb1)?-aAd+zJ2jv+?Mo(M;n@9t=Sizku?!XT8hHHQH>ejAQF^+Lg#bz&8 z=DP*_5o*kXxx<84~+8T#H(ZSeZ?L4fed3^HQh(jYG*uh`4^PxH<#P09>8emiPz$m zEnx@imsQJ_k#5+q>;*lmrJ>_!HD3CwJnYEFf~5U7$bf9lSLv+j4e_v#e=B}6IRI

    pv&!AxRg}SZw;8LJdVuaLP;UC&RtC$?9VX~{OJVxTU;i^M)!irh zZ-w|){*KB|5dJ|CgTVxP|I&=8->neok}LXY#BkaZxpW6bV_oK_4$vqyd1;WY$!F$iDHAfSvEpuMr7iYxqI>GrMx{}txw>DWNWn?2%S$;3|(`!bQb!GNxm5*=*?i)%)Ma8v^t;GNx zWPdVyr_g^juTA9}|3469Q(dlG7B@s^GeZUW>-hLblb&!KP+j~KQvZ)sdgjb+sb~QX*+JyL&XMq1$tfchBbaA4-^P2t72hqWC}$$*mWyE zjT9)iYLY+G|9a)rTLCFL@?Klq&ZEI64FkLKHm#9al8^UHW)oIm261#q9E?5%z`BKoHT!n`Tw`_ZiY0*T`(Tv}K$)s&BCgUg#Js$T* zzQ=pbBsf{9l37yU}uV1Vj`52;RG9a^k) z^u|1o5Tr=OzGZuh85v+VtC{8AqkVBhxSJa#4vw);nvXBAt+brkWu7u;yD9K|x%xz! zS0|vF_Qt}|r*K8d3+F4bYX3xR{O22T2d^4r&}8A|Ke-u=Tdqp((*fY z{T}UP5WHtjU5FlpS8aQ~hWI+lCxfsG=wq!Bb+(I3?EBupXhjIDPtxE|>`#_bs=)_? z9^*k<@BCfg20-JU!y4TRiQWnK*_Yc~uVUb;-ELWVVAgp~^HH!!wapi{1-teYeqhG< zFNIClH5py3z0kiz#}Clcw`|8sV$%B^8TtP* zH_T%|6%BGOKkn&7F{*KhgGF-$Giz0XCT*@It57yV{SmItp*%gwzmQeeSQCisD7}-R zvw*M5<~|36ojl!sAmFFdgB*s9ggos4nci{oSs%un5q;=CK6LJnp9jc;bvUkh!~TPr z>s1c000J+r{-=<8YQ-V4P8qJKSb=scP3Vr;{(d3I(zhywH<0|hf){4;lX)ZRj(Uf4dagYkmW%Kq<#u zQRz;XWL+}z`Jr1s7{gc$^r&2r{q%uUuJX7i+cfKJjA<70cz#O^6JN&7D4eH*cyIZ{q zqe^}`0;mVd_19uU*hIr6rp`VGnJ>tI~=pN-1N)vHR3>=RDh zH+%l65NIGXOO1L7BscBDihfP`>FvAr3aaZZ5$_fi;Dzw)Q1>spyF<&2lxM*X00!9y z9g-@@w`S=(KM~yFBI-YeV~5*6pUr9+n20$sXOkdT5wn`nF%c9y&)4=~jg=V*B}m`= zQ_apAy8+fRT={WN0mn8j-8a_w=)Yy|tf6n9F8h@L!75CbJ^x>0x(xVD?r~48jR3*f z`9I$EC%AJDnFoaaWCDXK6GJX~^;j*57;JE|z(YdN^>h`G;;5O4_Ekoqj|C6btFP?Y4RkMhy04G zV7IRlXzn&<6 z{!2k1^I*5`DnP3bM7IC2$vg^D#qE6@w>~_Bx$lRWM^o0-fj*@IMJdQ(YtD*J_xXNE z4tRi5OV{tO?FFkYdu$Ca`m?K7x6n-@2EZRu3WomY$rf>ozVusc`A18o$0i)Ns6vYWp99=P@69&)!lB%g7p9ZeQO zyd&1QCtL-$n~Mnojo#9eAEi!gY~%YcH*v1G1KDwaocEu_JE>*=+-D*1I*6Kn(;L!#HI9g&k5$BCPoN8fcUyg1A4G~~Cc;`wUbSzOy}kuRCK-_4 zbh-*XNLlD2-2MQ$(fV~rzrJk+-QOh)GJ|W+$3Dm|@wk0}oY*fs{Vj^^T@WYJm4=o4 z@>Ydrk2pX!>PolWc&@ygBKyhA!IQuT?Y2Pa#J5UUmY4LyCJ?qRWp^g-+QmNry`ty= zgh1JH!V%LOxA6ZS?I|GI@c)VSFhG3M{Fi^zX6tLO4L$oE5Q*QcUp$%OJHC+Vwln5? z%NxdQqJ>kRS+o?gx?!M*#t9(!Jd|0mI+{hRD6Nc4t>RAi)6tMJzwp|a=CNSS~4XB_R>|4b4aJWh2v&CeGv5tA2ihmaBrdkU! z%Xi%RXe~NqosB~90GzD_;7Y)9s?`8nl$cR4Ml*qKpv$Je69z%7OHf=^+9spnWZKtxWHEIiY^5f1b>GHtr%cN9^TF&?C zSf*^Ylf+Xq4fb#6B(M(}J!?ALLJVa2(Z%U?tp2&WdjSLMfkgfKIwg`w7EMOANKg)+%$No?pw>nsXj^%E-CVl<;oxGx4i|O(t1r90 z@+D?GGjO+UMa)FoL#RO-&6;N zB@7B{mfP;=su34~X7cZ)V@T*HBKBy%#W$K;8m_(g(ev-x5fi&54Ao2r?1cO~S1!gi zl;6yX#Su9upkW)Kv%zjUW@6sr9N;MhjG(NebV!@wk?Nk|9uX*i&&>$Pa%-=sm0hpz zDNa-`hnl8ie~rFWnzr@SuNH9B3sjIPo~d2}9GVu?@EAO zLrw##G%wke*>_h9v2~)tF*y%U_!|v0kHXte-w^AX0IXBg7z^v?VGP|~r%<-T+X=}) zFH3TO^O8^c^Bt=YC+=hzIHLQ93V1*U6lq=Yi7SH>=;z!rJ^#3x9kI zSoydXVpRG+zDCmZox8lCd$0d?N(gBp(Oupvr?#?OJKqx;KMh0o>c_gut{F+hi}hlC zRO#iTM8IIWX79}40sK7nM&0QqBtdSamhn}ZRfgC#$eCNSz_^9X9+1h3VdIlrjVzJ(K6wJBPF z94kRcIdwGyV(a3h!=Of;~eLE|{4;Xrhq`us>)co$MbvoaVNsi3B=RJP%LOVqY zsg<3q0Jp=ZL25qC_y}6u0tA^56Y|AT5#D2b@74!#o$Pp#6C_?gUdO529b$Ow?3+A) zZxT(%WNUb%9yGT0GkBJ}zr$xM!TVYVyVOJ{@2%d6&3g9Nj1ocK#>DTf_|?;Ph~c|4 z#-T&z!gs>rg<4)L=5fG z0Q$6v@j}=QXX#Cqn(ZYJC=##59Boq<$?zsGD=!oixL@P|v+UJ!H)3pkN&lfk@G(^? zMuNNPK$)KAz+bJ`_|h(k;335HBtD|d)LX!XRTeT0dIG~ zz0%%5D$}b=BS!_+RIYC5(6!5AgMr3>^wQFCVx&-B>B#Vqw55CXLdB}%d?o~O^PXwT zG%s8_LI%I8^vZigoaHCmb%Zg29WumoA&3|}VPB)qx30d`=Jr8IcPRbJnAdOwwm}0# zmo>fs@;vo8Q6(?ZwF2|GM7VT5=8Sy~V)ZC~R=pci57kx6_^U<-{{8`TTL)+x0p3t# zq^td1-Sn?c1}t`1C_$`!+K_C!YW7v8@3-6Yiw(V=BBV*#Gh0{_L__I{^n>@L| zESqI^=c?^M(CUvqB4_E$mF}EE*Dj*PXRRWWNr*ZFyAeq6mWb5EN<)7!o66wkW9hyF zRMSo(U^u>dsUekVaY51H(8}c4p*+?~`m{%?L4wJ)?d8aHZeOI1WTBJ2*vludan1~@ zf1ngWZ{U9k5wa=h`=ZgkQ}F8%PRtgJttru#0^OLdv9s|ey1K$oh4h_K?@k+NMJ3BE zZk0s6-Fvk?oXdyhr~_KSc{=NMvJl;vpAI?IR>bGG6IHPY_?=0szSpw}`T2Q!X zpKD~lQveRts9cdSFmgw7rwj7P<);KXV7m}?A&rzfJMvf(D-lIK7R1<8k=v;rWO~+% zp(P5gvch>rKC>Fny5DO@8;f2+T65eXty9x2AxSmK+4a5O6}xkc{6pJVojWbN%Bs!p zy3q@WlCG56vQ(z>8i%}zVjdG3Q-4bch+@N4W3>-st}Rygg;B& z62zAh;xC%}v#u3Cl|I8_I!j{;(p(Et;`t)X?Bk^duJV#G)SIXFfo(RL>dVVtOgPHK zY2fx_od}*__^;fitLRCiwJ~Jp56hn zo*f%(&f{u%o*q6IavNKR;i`=( zya51T?~+sKmZmuwn+gv|D!;h681|WTbaFs36Pb4J+SDvdBZX?={r1oomfyyQH9x!8 zgvNWi>>lD3P<=L*s`AC8N1M+2JmZ`jhzwM{@%?D1$jmfe*2PeYr>uUAJr_K&Kk@Qs zr;++GZX1o&y^TY$9BgK1gpty^YOueXEWe|#>RQRc*A+|{BSp0s#pK}uO0dp0X+t@% zRo%TJX5swtEPapE#j@qKpYo}3U2yf+E>B-}_(#xrZSD~#iusS(xDatStS+F2PTUip z&&=7T_ph$569F1~!;UaPOBA9-Jmw<0!+CrNlncZwbwv-iQgJR$YUems2c_uhenU>8 zY+hEV;}u6u@X@Nf%NxL?N3s#Bx=@|bh5FzS+^5*7=nScHl(Kn73$dv3VZS-Va=u@+A*%e58My*B*A)7sfTIt4VtlEg_D zJ<@;CriT>iOrrY4bn6t(tK5XAw3&~x?@Xw4WRW(-dC zAfEDm`oTfTd9KLhfn~l+5G96`b;nGc(bE>i9K6=#ANme-bh7*h!Ly)=uK;LkKWkjE zbA#Kg9h$z{9!7%dbcWMMR?Oz#(&Ly;@kgcDevrvRpJg6_otbH;i#$He?lfZqlfM5aD{QT`C42LY(?|sVSfP$=bZfcuVzeH~62)_9ytt&5v4qC9t`< zeH}3b_(f-RsuzD7L0muV0w~z}7Ri6Qj#Tat@>$DicPqLw7Q?=fTErho@y%srT~%2P z@(aH&NSvj2x#F)9)-KdPeLOZ3Kh{_CIeFU8&UX3FzJx?jRpI7VJt^&U*HnY6I!2=C zV^OinZ(l_AT#4kdS&w5LjHVRr5d5921ooF=p9|k_3T*?^|&= zpzUHCdEz5c>DtT;D*)kQXeXX7w!*e+sh(a5FBqW(pJi~>(*{ct#rlBpX~EB~rdth+ zIRoSc>l2nOnOC1-f19d-dY)@`^L1;lv;;HleF@viXKErS&HimU8kYOlQ2w9*>n+Z` zn2Piyx_q6$N3FOM%C}Zxq)8JgB(*x9HbnwfB$mot-3kT@joms+WpC#627Q9--LyS*m60!S>x|V;}`uoLgl(LD5ygNp~K$TC79crqomWy1Czdc{M&a%hmoK}0`PLGWNeH1`gWPV0PvH|jo?v)HsIGc} z+7Gp~H-5GJ4K@}^vNM4{x4$(#5lVG2;|z-nf#CKres81QDsp#VGiELA^-mqEDSnAI z6CQXX-_Ok(S%%w&C^P|zg(DJ&9B%)Sy^#9 z6;fGXU>ERx1+tjYJAKoRG`LS)c1n@bTVN>N#ivWDp%IfUe>2^udET1}e&)0~OXrM# zXhAvMPNI5k{pbYUo8*ZCrV1^n6CxngCCbsL_<9qs{PjI>JA(~i7D&~VpD-%~?NUqg z63OuKyVyW9qb!|3kD(YXmAN9YZ%y#J9s8Y-)RE&FzxhSe=J?A;$BxQ@ol7MGvdRP_P zTmOU>A@(S2!EWX!+(bewVA)nKm5v~JKO1xmDKN2OM}-WA zP*the;XknXIo&tZt=8yL_p(v>C7n%br1M%W!&%>`r%IY>?bB3>At+gH}~meL{~`3DVK z?r|}p1TTlaxGmgjZ9Vvl{jhq-dRNMxOagr_E0p+?AP&aV-|mReSVpXVOV>?0#hd z@hUMu;#(l{=0OkEW=J#_+D$yGK)G5ze$Fm}(sUg|&ywWnKg0J6RO^6iw^F_o!Tm1l zz!-+45w?57d<0x_Q!B50TzxJP?;!pjd&f85Q(WuSRM|=w1&+}5ehM=N0ovp(!>Mik zse#mh8ZEmYHxf~?l``$`6M|nqZ3+48((D)mc$3ay9I6TI{DZrra_2sExo@~$y(O+- z{K%-u&?a5T^g$s#;=H%Esoc(4O?NY3$VRbzcjR@ozHj3^Sk}h8CnYFyB=Ai8-s@)V z4Vs)xyUjcAEYBkxr9GRA7j$1ZqU`(=ZGxNmFg6-fPGZe*jakzI)Z58w6BhRV@xaJ@ zlh`swsDau1>l4Va@oa|am`8}X5h@h{_MMxeS29Lsxu-{nkU++|$FX+4r6rr--f4X( z@WH2IQNuPXk2yi*UjxSNQoUmjVTKrgcq}iu)SixO;#(g1l6P0Y-m~(r7&~_98*rAK zV&kNSpiLwRcU!?tYv!`5%SP<2;||JG4spi!pI{Q6{SV+c#q-Fe`aFVan_Xlin#IKVuL_N_YV0SFWI4ow|z?u zQY+K(*6}IndCkVJVaYg{a%V;Rc6E94sw$&qvtFTnE)UNO#{Er%eg{eV>+*GNb5 z6GYgEkpLXE@%hv$ojz~{WRuoiMttM{ouyhu3)sS}^eA>CX&`Oji*T~^B%bx{F#M|s z^fz(?L~0NoWj&Uj-}_EjUS~XGHuDqieVk2kmY)BKPBBq5_2G*& z!5P$vHFhJ&cJD(i9zUwOSz8!6boN48R|3N&ZD8z+ugnphH;X{I$Xtw z|9sM#u2nfVo_w+K;55a*6?b{YOBFDxMbxCa5DJua;lv^UrKv*|HEIT-<5* z;WWsy8-H6NB}UIdS7s=ppncpp?U+Au9vCSIsT$yh61D7ojfV&#iBp8M{UpALOE?QN z%f3aN-QxP0qDUX@n~-@{US+n!?ebGBAD#30?R`&*b-e7CiHgtf@{tugh5e^KGPSY_k zEA`xotoC}9(X-&n5KT~VJ|+ZvfXvcN{j8ALBlgFf;@BjnYq2ei6{ygIc}DHl&{lD( zDaqTb3^+d(H?y)M#nW;g*uLq$Z>vs8D27z8={Xdat1K70+)zKsB}Oo6*A`H*f*b1&B$%565%R`2p|BTHdCM-_U@OX z*5vYJkv@P9o!Gi}#(|QuIyxN=*SnUF;G*|DH`Vnvp#oZ$5PaL#lO9=-5tZ~u<*T6A4+&Q7@cVtglvjR z?*e8`tiCD%ZqBB@4dYqn-R%nqscVJ_{Y2Ga&6^L@r=SVmJt?;5p5Y$XC`K))7{Sv0 zj=PIYHww3(@Z5E4lx9r-Kt&zxxuT2Db!{zsIm|L^>MV7o4B$&tr`_mh1TplbOn$|h zy8I7F81qw4yt>MpiSW!@!YfGwW4-l2N9Nj!q;zkhhQG2%%mMQH3Z?tj4vuP+sSr_J zS|ZT1p;kyzeRKf_v>oId<@$epOp2;fTGAhTK?qeORE}+rOtCnd4w5ZNpVH)a~PNhRk+xQ)bjO(KlmN++HzW|Q2nWhu9}X%lG?kG8`+USx3GTM zV%o>7&B3r+ZN+dO4G{Tdhr{R{RwW!Q(A9qe(n#TGTAOBuf@s2^v(NE>TNPr^8&$hU zk7oJ}p7zFrZk7O-e7)*#rci!?VY{y%Qp4Y{N5^%l;Zj%L_(rIr$N2*FfdU6)aZLUD zQKBkWUJ?i?&N8#?O(ZCL?(ahbkE45BLOu9wfk_f&$fJO%kO(Q2jP4*02Vf?b!WY$U zl!#4t7^?!gDt3=?lPRU6yH4J}Tfcfr%o8Sa{1G;pyPCX0aR07dFzesa=$WtZ5E$L8 zc{@4O%2HU~%3kv^5Q1qe+4|%`S+Mr8rL_CYi()eJ|D(483jE|{Wa#4u4SaGiRjU8;#gmD+hq^F zro>~Yk^8qY6lwO7rIb`4jc*&<~URn#5e`6RTD(CE5{k+O){V3wx=PF z2DN}Hf?H{j%Ur0`wmL*g!xn8(Z{UEL%LE5ONKQk@DT-#xJ;E#{s+MOiz=BJg(Qj2{ z{j=3TEb_D54g9k@9R}kpd#rP_O?{UzB#f;#SPDOkXR`PsfQ?@{;@KXYWGg)yoP_ni zF!?g1a*(;;y;)>Xmtk`BI#{08RdDvN*7pifCeI7Kzw@RZBVt!IA&-F*yhwwmGDaR2 z+o=ktaLxXz)$+MvhY4Ork$AB+^P$Q07{5<>f-glH9Q=y-L^o8r&WaLi{LSmyi`HXW z4MC5ui|;{=YJ6I7qNOLfDOY^VxbqJFmRXN7k4Drt`yQRPNPQCOYip|^4V($^thh*P$tOJr;cN>) z&j=>15DFW?j*~p<;KM!-zF!q9j2ZMq4W(;+JvT{ zvI&q#*OlLZw*^4Iq1p8mV@b4Z#b5JZf+~1RVCQrBr=UF`U`lV*@xMf}d|{(KajuJ{ z1c(x^0Efr5*O13(AEUU|0?#?0A4x#}Q9qI69nsp}N^m}3 zZ`I^*Xlaj`_)k&bS`oGdi4)`SOrU>Ek~;}ZOxUNn=R%yK-^k(=T2SqUg35-VS>wq% zo1{rMJRDeyx_9 z6Z{GZ&p?RqF+6rxz&evjhUe>?0j14aqZNR~e=z;S%> z;{Hxu_NpAY68csdY~nDr9peDfwiQh>ey5YoSfOG;z(k`9*TP z()1#b7cyQW($K#XsJ4*Gt?(lhD3;wW84L!dI09;{O*epJ`}Pt!hhjTaV0e#POkM4< z9=Sv5A%_XW8_S&zeG!UC-Kf#B%^sP9S5yuVRl7DNPo?iv5-eH zxHv3gOo@d09r_Vt~8W3@34> z8J6naPz#AjayW74{*%rxuC~sK{FkSo8oL9tA;n1S#u>IjDt#{i!${uW$B%pBh~kO} z`0W%|`aUKJYkiZW+@umbRH*kWg$e_x1be$K^f_Wv)W%j@`HnC6n!5qjnW$U}s zBOzn!IpIQzebNeDlK!Sks7|A_O}Bk<4#DNTs^<1hpWlH`EQ&ZgvL2F{zKz ze>U^Kg9!QGxO*4t>K8FHdwx zng{+nhn;;hCP9@pLkX+#n|R*Y=&4Y@?zK|k6yZ}infSTd|H83JR5#lh*aW+38`uP4 z8Ec1DKUF0UZb;dcmhFqAoObXAa0ZjAu1G>Cx&3y&9D2ic+`@T?aD8+1@V}kVf5jCx z{$GRUqkYoiH0B8CkOHQkfGOiLyH$LPDf z+c-%sGcmEf!2P{PLP7x0?F#AGZQ zV{-YBjVBR)?B~xj2~L%qO#>qM!lVb(-#QyNUkFB?Seta}-?LrkrdAQ1!ym13iSO4# zon^NdisH~~g0|gMkt|zp_#{@BQA>eqI80EWYJLIV0=r# z*S{Xx2FHp8d@X#?lBv=bBoO;zv*E~;|Gor;8fN2Z z{q3m3vAS!$LqkJVXW|u1%Q_; zuyeu(z3^#3U%wpGI@Oqfl4eTn6TRJ~)Aou`SVr7}6sBu!AIY8Pj!o)bZHjlUK zQLu+5Lm^a0t#nK5bJ>h%*@P}q%8AX|3QKD+bj%k#ZGJIQ{V`Sb<~ae{kZ7Q$m*L9IKOz!ylxNt zFvT0L<3-v;+YmQccwTvo!w;SeT+6ZnU5bEymcY2mt6+241R0}@8{xwA zVK1q1UQtlFQs;c)HQ)8LRuyi>HFxPje@$amfI#wNR4Yj~(J?TU7gK6EgbopA{uB^+ zk#-gMsJ^}G-Uk-All@i^Z4KYDBzGQ}C|;xhX8veR4&d>ta%es`zDA2-0xufSw8k`I zR%dmGC1z2&;#Hos(;fBJ^KG7>SeWtZy5I7_sAyw;f?4`XFnmj#Vt*Xp+gvqQ#{e0> z&fpJHy0r?Z)k`VFYxqD@UKsUR-7F#om_i5zJ?Uxgh8fvBd zVyhR9hTUy!zCPa))6C*Z&>~&KCB0QYH@c|XddjC?0A;CJR-pghzmB-}Sgi5mtC~J=BSu80@jcFz;2Cs6= zgMTcXsk(|)$Kua~xEur9fjG8usfv1ITqcIghfA8hmxT`i18v);FMh8dnAwo~Vunt_ ztW&qze=nPuov2PT&v&p9!X;cUoY_hD&aRPOL*F$jeZgXjR_&Zng$2R#VQy@{!;rW^ zXaC-D+(9H&?A|3d+uJx9{OW`W`0PgTM0xFj+!Sfx|&u{MN zz?_Di*67-fMD?BBgDTXM1-Y#r*Bc;d9}vR@w$7+m!3z^!_>*n7;+i`8kTOw2ep#D` zGP!lhFJYlOMtRt&A{B&6%Ho#{$(S{@8QI8KSIfq70+VS;gd?#&;eCgAGdS}Gz}0M` zF_{bfnxwxbWqy5v19fhu2e?;PI6UtTM9H*WI<}klx@ma=1{WN*>C0S!L|0Ebf2j$M z9`K%k;iFquz>kU0X2>#cvveJ<9W}8Ip!Uy30buryb;#B$)T+7y8U6ZTl+575vIk}+ z5-EeLii=V9#L>(*nh?0 zZS)GDd3`^7AtqCkl@scjob~{G!NxG59_muHE3M6VshN}I8hG!X;`7K=B68PAP;cGu zJ~hLk`|tRxUWMnBEr8-ViqN^PAN9L(iW}`2}}n5 z!sQ#aE~y0&k&!sgL4g8&?S;MmvmyrEh0t^_8m)^IPdHs{W8%w4b<;UiKp#7@4)8%J50_W9bPxoY_X*WS zN@|za_g(3)Ij*udJH9z=zt(}$-JBT7Csul<>qJF#_RZo7(e%bI(5fyD(~X<#c?qDX!W*zs#obNg$~PlU1uj7srw8)7@-U%$c)$9D{)b0yTGqo zvA|K%ci`DZ)a(#0uEpV{_V!7 zEw1AalAH-f5{ae1^rv&)haOpG%{1DW6G#tU7u051v<|<6jmR!3*rvkJ_!o(?_a(#( z*XsFtn{qkJG7w}or0aNy^jhaJL{m1%G%;Y4Zt#)2D=1f5d_QSReQ;V5JAQJ5eI?$( zKlsTG(-mXxS)0$g;G`#7q+Ms3>B?}Z*=?HU@GNZ>BQ>%e4ludM^vVl9TAxez*^=EE z{&RC_mgTpYT_&Abl8wFkZ3zwp4u5}>m*0~9uLL?+e{urMw~ZL9v^D{le(HhS2U{7& zvYJl^Q2~s6-k`AXcHnG|;wXX-?Mr`ItWZYE@BxzoV-hgHt#b$j3dt*zKT_}YpZYaD zRX=ykdr7m9jm~O&Zfi?R&?glEOlq-AcYX`{gBn9~yDKJ2kQAU4T9^Su-FiA=_{~k{ z;TAbW?ifXdV7#AwchMtvG#4u@84#)9BXqtTdr=Dg`Vx418SE!|oEqb!N#_oSFxbj` zc5fWQXf$rUx7X(}^z{>|&Wmvrde*h$AHvi0@VQk@HM#5y{o_HNZ*#9`c-23)&j4~$ zaC54rgApmNZdUc!y#|v1CeYq}|h!wIL5Z~Mdh?k6j;*B}zA7QMfbHC$XcBqqO0Ish!s=+e}=sJi= zE=9Ab0?I5uFaV>gf;g@H89+8`8zW@T=C8sr^&A#SS+uY*F!P!^hph$UkbEM(fftY% z9wQh5>ezrA_z+-BdBTFM5DCB>7NCv_(*n|tarm>Y&}G^!-`~T_pE|Hat)0Q!(pQHQ zv?Ce}90%g#(tr1NO#so7$b->aN)~UT=)HeNdcp=%c~aclzhFfWj<&DAlLqS2Tzeg~ zEL^$3g8mlrk)l)q66#2#(>j2<{~X5xr~v(W2ooB$D}a(J1rXfS z7Or-D5FJl{bicE?2Oq`KsU#=5#7HL$1_6R}^Wt1L!0Fee(a9{sDnDX5YYBrn+q2&c zB1u=J06J8p=T)50$fvkE$MYSju$}lvG>`>gU5c<2vSrY}cw5zX0KU@nH#&gU4DiBC zD3;4wY6=4ZjX;CGmqB>wZLBuW(bd5}+HI|djrkW?jX__Tz{_PugUF5Yk}4IkMIQ#> zD_|K`SC=gS|A?zQ$^#%fxQL^~z%#FD?4}OUK6q$a9zo1CR+X{6B2o7IlOU9m8p8Lj zeKiQZlKJeyZA#u#^P>EFLH4XdHx`WLntxJ>D)h-GM*Hc$OWo4`>mgHL1qC5!L z5UN6W5O@)PLIZQyf7uFv z1quZN6&Qaw?*a)>f@HN5pWQD%;2+7(Iyz&ST178On3>JlO%LO*P!I&rc8XZlJ9&XZFRvS0@V=8G(a`+0;h1%Scb*v++zCIoIiC~W(qWL{L~OZ=-6y4hW7^3W6DvcI>8$vJn8Q z@*MLI15(dzqy`+PL1SFyG?KRe&Er~t@%Z*dBy1lL8wr9|nFBIE@hC`hZibFulbwb8 zHu6>C6$F6(yn!ob9-6j#MLh*fcM;9!ZV?nd3fQsAsV*!qa*1!$|^ z+N&ix_Wwq2ubX$b|E3NVJgFVzrOiVC+HR&r?lR(K>A7dg9zg(nzHKi1jl?d;G6&8v zknZ+iksS?3D%Z!eu8D&M0Q<_%G}7&U%Kpu2nnhKd#Uwh)!gn!ZuhH{n)mPJ)&3h5L zeyuLo$sOkT@%K*XJzk9T=+9A2jkD{CylV(Fuc%__e7W_pjI%ENOWG&v?kNL8;GCZ2Md~GJ?s|N#ZvowB< z2uh?TmsK#XzRj%~E?!*)Zu4HYBZQ6dg2mZR$!S`%{bx!t$)qp)E~J>>N~=oatT?c2 z+U{i!pJYgyp3v!)Vqv&k-OZ{Tj6YqDDG~7(zv9K_e;NY9dTR4d^4T-}h)9eyuT~!nk=}k%wE*3mvnz@ISj(BDl9A(*z6nnp()dy#_AIY6d3*m@c2@o5Lws5ST3HMI2|wY;V$U-XFV z#h-!G2c!*mIouzwsmRR&!ctMc=oEogS|r8Ns@H9Vz)lpK^r?sD{$Vr<0|>q$NDBbg zM(yX%(Cx6Jcs}r^a04CV`l1CZOGMSRvv=6#z=u3QWn(cy(WF3$9lv&LW&2kMq^7Wae%^16KEu{`3{S{zToL z4ZL~mlq9%N`n&$eEU7W+s*RY;;Uq5SpCWNE!+dxegI}|jEqe4Uq-4hcf3MXlaBop+ z#~^YwsvLeb&^~}tkk0cZ7(U=U;9DN`;Ja0zo-20oL6G-4=O~eH-~Iztl%DO&)V0o> zM~Uu!z!h@v^w(%$qZNZq+vYLzV7b%OqeP!v-W%GAATxsT2>jo0s>j@UZclI8k{83j zdok-ycuzO<#MxNOb{urXmI~Gk0#r<+3@UNCgIfC%sxq)Yp{`FJXm+d7Yx-htX2#gY zH^&z|{Ho9DW4=^%(6x`i_FmR1b%j>VZsty```qQXQvd#nldYz_tYam!Uxs!w`?Xvc zwud9DBI2mcW6D(khhH^Rp=YpWdpFny3N$pN2fW_z-+O5OZmQA;-Jpm1YxPp$q~a*j zA&(3Gcd!N?5QIMKT<{pY0K#MD;p(kNu&chSiNhP*QOjoHp{;Out;38Yw%mFPH0>ES zK{g+VyaPc)vj@I~B zM*1fM!$+XjZ;&JxG4Y5-HCPg*qVXk4**rA+g#`u zXMCQQ);0-#-d7Lns(&tpzk@K41inZ|3FIaHM&Y_=pXyrpjMO+Ar+AKpka3b!2Lun0 z%D&c@@ELGhqcCx<8TA~T1;WY9et1wen$#&9aakFCQNxQ_d%RwDR$@bn=3a^FppzZL zRi^3d7P@GV{wV~5T7AEM2Mei_GphDAcMI(EQZ*YyveoUZV}*#i8~X0Gif88~A4k z-J?0n()I<^EwlyFb~nj?i?b(^cLfOS%&aAp?k)H_r@NXT>)KdTnV~O<6x8yIsmhm{7E%zW4g&WJ ztWYVtX9L3Kb};daaM1gp81*($hN4mnH`O!qw5@@ct*QiP0}IRdZV%w@NR{-;+F0^- zA5`B41}CG&uIb0kg&M60K?`^|=jy%nOW=ytV%64+w{&=5SnV(n(t1PXezg`Lhq}Km zJZMdO>SdD4D4zHt1L2RTjk)ld)2W*b0cv+P>^$G{Ll$gebi~@{iL@@lYVJL#L}G+p z&TuvOUh~oirMxHKM2o8%#H9_MpZ>B9?8IGkq5HN|DVHwVuEiHZhViMsl(}xL)gWfE zFZmcH26R0S2JxOn`!O)l#m;K02#}1DCLgjGetvhhVYjrW6 z-%EdeWxozojF};-)KmC`XQ+*dWE9oQebVgfBAjB8-Vm4d6qCEYN4rU#zuQi`r z9nEp!p~N%I_07BbLPeW5YYFC``k#EZb84x@DoC1W-I>m{`kD?D5u8fX8j%oW0*KxZ zQPeDb;9`A1`Hq@w)#cSv?M$GgHdmjxIT}ar0T+|N-{tkm)!lk&hb*;+3!7p`Xp=JF z5Iz_tm8D^nd3W%xGIt56h&rXg4^PB+g7*J9^n&~4!s1BH?;6<9pSqH$Ea6igAX=6r z3}jV}qVQLnss|8v6fCKuR-?+I6PJ_sJP2BT95hw~4MO<)7MI*Zz4R!b80IBFCen;X z_BB#wC2)ji*gj|AO#fOd-;~O7{mK}%Ymb&>imaDl`ZDXcsz=7T-u$}q8a;X4!)M!GRq>^wbzRT3ozQU%)u1UC+F7^iJ+U?|0v-ry|Qx<9k+*SUZtfe*% z0fb=1ZwXq`6({{Ly0JI64rAS=Q4xWiF`i*>2+$&Z_m$Qu zMUbQi#T~gO-mNcYLbktju)=~ab?2XEJ5lS)lrA9RLgEDa(!H#~;XC4|-L=6b`C6YS z6-R10No?PI?NQ8kaCb|6H*)2c`tXqV-NSP3ZzbGH7=5m+_UWp8M&46Hicu6f+^JOP z$=7#XGi-Nu!k0vl>}C=uh)(6GdvnFBaz11&F?1+4YfQzXiaY(ZH}SK?Ot?!9RP|m1 zon%H?&a@|Ml36E_Kt$|O>pibFr6BTAl)RiRlgCE$W3V+1Wg4u-PtyagY#Qg3B>CX6^1I(B{ew2~Quq8200F_>gJ?mi!~L6jHM|ExMU89zZJ z((OSN2Q#Ka(vM+%@_p2xA;}t1#cw2d=O62w@8E$2xN#yd>{^^T`L{K8U;VWA(iLP1 z!SFRbY(Ro)sa3e-pIefTuM`QKb4>;aH6`NwRn9`vv$JrAB%rv6wMC?>2*#UbDPDMG zAnP?f2@FLYE+-|Q7#${|qMvT6hCp-{UqAeDUs_|34o53K_MN{L?U$5%eaOGp-?rb0 zh)SiOZc<<;F_tmaqP*!Gy&LGm4CN_k@s^x;)brI1uyo)F*E&=;KnfP?rs#de zl`HR_oRt^ZyO7OkUB+kMhM(7B{?tIeyv89FwXm0);Qe9&;&T>xEY)hX4uLRQk zJ*dTV17)E(g)!}=v^NVZfp0&Lv3VD)hLOteL1}yB%(9#&SWd5|eZRyekNe*?yE2V= zKB1f^T9t~FVf&xkC9TwxP-#ZPo&qkS^(%_moObM**X1E2B2_8E1u2e@j=Li$yS04u zfLQu#UvKAacjNfyjY^m*0T*h?YU(?W4yfC7)oSH8nM22+=$pg~CNn^_UO)Jgpn9>16@i<8(yXEvHb{9GQLcj&jvAzMuz)r);lHz$z1iH_V0Ch~idc^sGDQ}L^e9Afvd~1Otf|GLQ)Ejq(9FOi~(4$t&7OC{1~-5xFBwF8^LrT!5QrROBZq>lg% zTc%~+&K!?FiSetUR}?Ex9rqe@Y>#b6sai~GwQtRC;zEu*S)bgG120c2V5&0kbu+z1 z_MOUK1({`zz%aAeWu}(Ec)2Sf=w?uA3)3PIF1jIk$DmvgV6+$d(c97~YtvPI!9oe6eMpZ(1Bw&a>X{)x zI};Sq+h>O#Mz9|E%hCIeJ0Q?sC}4OD**aE53sWC&tGBAr{Y(r|#{*P8xbvOTJe0XF zvk)QiB=$h=75y^dIo2ge4m$@TT!bxIL_S>oq?AseQ(N)YSw*{<7l?7(nBC5CwK6%i zS@dPFVCiTKDzz59DvEd(;lc)Y4;^i>jxRkMk}5lRc{kKp(PtP^I;^L`2c}R^aVXJ& z_ni+#RYR)kWl=l#9?t1AzweE4pOw1p#bYe~Qd?Lv3t9Qd609FeID8`hfw!^<6z&r5 z3QgnvT0BwP8ztNGXk2$z&aA%;<)vv}oT;LY5_1R>@HJ@?Dy_CF+Qnz70NqGNUZ&e|1L9%uQJ(FTS8 zIU7(9;VB;l-V5|m*J)S8BkxN}@NW2Kb)vFJ2>!~o*p22k1B&3fV|Kp_^mY2j#a;pj zLsQGe&+h@@x0l=z^kM;c?HAVRbkSPRyg}cyM;Zvx`MbGUaa?0lG3V9g0tFSf!|Y+~ z=x8?WC$BLqS0li5;Mamy>W31WDy@gnt63$@d*|fSC3DZpAHp-fmM%CX8s^efM~FTk za3n;FOcnBks@LWT`EMtRGeB#Gj@r!&Z3S{C3oM=NnbDn+fzX&$D|RI1unVG ztS*P-0txW4I6+m+w4mqp**f2x)Po3@?O4YIS`Xkn4kkLA?9Yxy8(_5KV*Y#O`7|)v z_3{7CHI?BmlxFF{4TR6M_>p7rhSaZ16wK%3!{c?9jwJs+AEfd86n)Fx$hJTDuHoa- z69?L#B)D>)H?Eu5W7e~f)hDOp8XZ1_=x3UOKU`*;?m8tr6xEgmQVxY-T`i6AW!uA4 zHAm@*o1{?}6|*%A;!dhj-&bA9pI{1HYG>fA6E%1UuFz}NviEa5H@pSA`-`o>es?oprh=2N*>`}9-1u|lK z_-CZZcSH!}zLyI7Zy**SS)FSxd-H^p515H$OS~X)NP0BF{$e4**xkB~Y7_?++K%uh zKpzr5j*^A3fQTx^zyU!_hfZ`}Mb;QSKKQu=EKi(GebW9v$?2oFE=z~w5vpXvG_3Tv zRtu9rYx;z&?}BX!FWi0Nlmj9Lli%v5vC9@{u{flxRHY(pP<5erFm?3WqTs?a?_%x` z-5Kp}PW1JpSGJkc9J24dA1(+VP(LKGrjEX{`HZ};v{aH@k2CuwNaOt4<{lah%7?U% zM!5qC%hsqO1sQ*o=e_$tHSW zrszZWmgTi-!MlJS)_l!e5zTl)R!g&_{UWg7oa*J*+jBy8oD^c5xC4%+&vH2E|9HpT zad!~i$nqQubGp4BE(ish9K$&#HqAV%faO)Xj1vA%GAEd^kcoCMd;BS6Yu8nQ8_tqdygBhg#nHDU8R=9V6qD&Trx%X2% zo-oj5oU(H9;~<`X?fZGn)aAP*lY&w%!6-IJSSo0qr zH|sq+7)SnZR(#8^?}u#_KoSD_pnS~6B|W42syReEr{q8P8qA=DJCeDyX( zC(cutgGLHlo7soembed87JipB-g;s`&&y)|!a?dQ{n5ALT}CblDLsw=)wuT~l>DAC zHW*TXV7O1*==E0~ks#jxdlwL$GfsypJx)igzSZJNVU{kJ+#QZOO;;5ndDU+Ny$@~O-xc1Z^3SvZ&ITq~d%`baeUMN%B#pEq(f z(n+)RwhA;}FsfI6dZ^hZN`!U;23#W%R)3=-#P`;W-0L#3S6@^TmJq4&zZE;S4 zt3NSLRDghsl1aQZlta=NIMLtcpQ$A;H0fRGF6{G{&K=*rY4<1HWT9}()q*Cy(S7(f ziU9rcaFw28p;&~Xw@IB=`2oQvwa1Z(js!Uy=cZX>JwGASDKvBIzrTmw8$}M6Ki9iD zrJN8!M@i?K6%X}6tV&d&s(I(cpz}M!YMXL41nvoMD5E8eN7VBUhp>Yv-h>qiMI4Rv z<)~)y4_oAL&a#^O%xHC`s^K=Bs)V%ZF^++r12d-1o>OGIZe!#8GoQ_wJFhIhJn9Zk zkMsSm+GsX-h zm;t~SNw~VZ`d-@V`oW;*6CyO|pSv+DMu>)L@j604BH(UM;%dz6lT?~&We2HSdwzpe zz)cybIRh}%9Pmoo<(4^WP~7M5GlXd3Crck&*)WGml>GXJl8aWg6Dv}hu&GdZGBQMs z&RJD_p}xNIt$d;7Dh<1{7JrjYD$eC#F>_>pfm9QyU-5A-|ATp!^E|ExaP@D_fZNIoIM@6>9)&WC(8c|yeB{8Eey%x@JveOdnO8>|y9Hm{+c zRLAjywx(5?y3^@b!V@xNLIavz+ZRrqIRZ@hGNn+jZEKLzt!mKc6!7#a_kB8M znHr*ZqZqwBD|?Gu(XD2Cca>$p0c2i4iSY7I2yX#xI&$l79Ugkg zo@aq0V|&h&NRB{r1{l1C%wdHbCBsQ?U_56NPlRl5|3Yo`@d*9MG z!yW=PiYG{c_d8~HCr?f_|F!dTkU76Kq{D)n!tZ19Gr~o-J+$#>*BF9B;NJU^U*mB| z@hD!VTay3C|LQ=&uIrxfAWyDPu`n}}nMKD+{oB$A`PLy+&^|vFV8`4^oA}sg;>!Ft+4BzpK{CGNy>0iq&u^;A1pTJzO-% zpYeZ8ZB~D-h@l^enMRsEgRp$W zNK`Z~sl^{kSM)XUDZ0EUXS+$O$c%m@Bj4tKzEMWibul0vo<=KbT>WA28Z~Ek11@ByLK#54GF&;=E2020e zY^3C@4hB*kmiE}^&k8($jc}LFR~ac_cU;_EO%sI~g!fZL`q!}&cR~FHHc^l%(G*G! zfw<7wNBR$Y#c!Q`=u10|(srNN0$yi1_xK>x_sL;tb5vDs|LXlidNB^AHA+@X!t5;z zKmGI0mLvV_iQO7gZZ7kfkKXb|Z?1SYF5X~VobocmU8n`|3a^m+nHOK}fRpS-W4FPLK83CP{v-`hAQ=A_PA&Dk`+oarj%VD!?S zB>U_DMv4B3KLjTv$Rk`Rt@`ojwP20BNd>Umsg}i*^)Wvlh>a0?R>f|wS3so2&A zn}Wcv&h?IG!WZrqk~|Sb)q}0!+DO$`r8VuNFwAx+B?oNK2+X0;lNVTBnLFvYJRL9K z2V4&aty8YND3oRgUt##3TgUjD1O^H z{S1KG9eAAiXW=H(j;P<3c{g9v%T$AWWA8c5h8Nha=lw0E=1o z>*+#_NyhM4oWL+}z5{(LU`?_AY=uVb1V`*BC9ZfTlth_5BJ4}|M2IJZwOQ{`(H250$z)KIVrSziI4BvC2pfn@!P-N8F+iq+xO5RTh$$b z9)LZB<{1F#=y02-26>a?lQLvC#C$c&3c_Ap|MhL^t^UXR0zVp3{huH7zd!ij_4wcT z_^-|KzuV*gB|Fr4E1u-a1h4@G*XD4J&wR5RU!5mlRoyP+w=T5+I3DR~8;QGadiJxX z4UJz$vm_XbyAF9{&31+d*rWlOX3urBIgr1enQbo@3}O9M&H!koz%~xnbGILG6&7j+ zu$oj|8ArddBHSwgDlrFoK9QGe>ix^+-Z~4`VQ6JsgD=PYAf*~=vtPt`WnUX~a~blDy1xS0HJFLJPDcTbo7duE24!or40y0D zb@}P#-Q#VtOkHEV{EbgFLR)7h4R|MbUiAVkQ)!?1?Fa$evhgWdhA&KRLf_*LVgTbK z5OakQX#$|G-P{V_>!YRW>ckp}Qwo9RyIcWX?})!j^2(?S|GAcVCTYh&=I4Fb%>ep0(Q0T7Na%DQ4V#Q*9>Is<W`NI72w=f06m*!EY|DUH@OtU zo|{ewh$9MYVASrUl?GE${Q}W^*vzWV!rwE9B>`~ zMuvyQPDQk8oed5wQU?-XF`r#m7Jvvugqy95I6!7x+usDBvZspFpg!Fh*^Jd!f`}Sq zn~_asTkoj7i3!%uvq_=9aqd|Sod*Y~3|C_z(f6$4Xq411-ll47&><90Ml35Mc60*w zlkTm@b6T+z8UV+%OI;O&P(tc+TPL4cKNB*&#uO0ruB&a#DJ*p;D~DC|OC}RSg|{wt z=Gy|8g2|@RaZJ z1F~QgTZt##J+xGqk}<}%`Ekn^J!CT~O73#8-wtqv@5iE^8!*v}l%ikG&QTq*M~f+V zSAZ|l?-hWYlkHL*79{75+HN@{WDJIat;6o5>M#>nySrhllxyJs^M-e<=LVGSJ$G*g zOg^Z(IJoa=En+>b`LgAF|Ne#;F}4gWefxKv_R`6-28U_*qW#AqfBlc9=;@1y+N!&PIeCA_sVaP6WKSDCWuP`BC*8F21wLCAdh%Ho3V7J(Kv!58Ga9|>vj7ysgk+`FnaOOKX>+u0UW^93YWH{O zVKMQmM}9ZSI#>`oNY;x`0yYziH8Pm+P?5LkP#J=~0fr zceKw!8=0(NarKWWt8?`Mfo05l9CYyR4T;Hc7 zaOFGqsZuB4eSSM&9AoB5EA&#fKKp8sG{~@t*G#H-n9s)9WLWA3@K?xKqXIqHPkrl!t(iw z&`)wWC{`%1Jk-rz+7FJ4GxdgC#)2(*<0IR}xIwaGfL?KYWlH-&1|1BM(dx6QhABIw zJ7C#Qyi`BafcIUN?34uPK8jX?YOh>h?Boyk>jdN(A+EUU2aqeMs&FZ{?V~{v&kt$R1(5}R5dj>; zy!DF62Lig!*Ntpre5rTu3qSR*w&&^oy_&NNUGEa2$Sx8@T!fkG^w%KZ>m$%^V2K2uwg3>WqznS6dc**?MHFOP<00 zJxnZ-2A?LPDgEhjLLlvLh1l?>{5z_?D}^>@l8Oju6H%<1VmA!yHZBDvp7dS@k)Kjq z0?N_v?LPG=`w!YS#;`_eJPr+Gk{<`ustUKF-N8%1EXmXliYNwi)_ZAoEx{=7hR>~7 zYg#6T0SCNN~f5y)TEEzV;YX}Y|U-V`>QmI!zLkMN+FN{nzDjQ;OY*zMm5P@NbE6M@OA z)S9Xe?YFo*Ch52mwaNrwR?ZsmnK}VbHScqZcpZv3n@myK={?@%g(e5i_da`YI<0Lz z#X*W?;q&;@io4sM+(ji79wfwZH2mq&s9rmfw$Yz(lutspNX^`M-;)u<-`fd%Ipa^t zZjY-f;JXl$dnSRp*6~=I50L?4S90HrnM%EOBp_^i5}7-~@Aj_uTsvz;=F2pi3PY4J zQx{~2w^QVK6O-bk1*(CN?*@i#_-7$a^Z z)+R{6Or!n1oIw2P5^Xg~Tb6uTq3kjK?Phfzi{@p|Ot!zxTk3hfFsd3BeQU|TK7aoB zp-$V$Dn%LnF$K=Fh=880GcEQN&DV#}ELMUe?Flv_A}xOA1mL`k>G*K6ch1XPR^BGx z8NChh59BqUlxveMeK{hCpPp_nzG+R21O1D116$u=QtcBLRWSKBaGIbsOYWN+$d7kj zsueeC`zG03s<9d=srl1z)LI5_US@6Mr)2&f(++{ro@D2^vu40oz&*vyjAW;1k9Ky= zN1(Bi%|e9Oy^vAO*`A_$@dqO-%kY*uhL9;b;(~N?EXzz@`UGo*_vEXM7lvhI{ zzpZJTNWLZ}GIWFPNH?PQuwp#1WN(J8-s17Wd`#v+Ou@!0C+GX1HKCY-G zQFr~qDeLFUDy#NhGMVR%q!6JuB+h**lH>!(^Ac}SPo%VO0lb_`#dfaffIV{w$02pm z0@xoG2%^>TywZUri6x;tG9d*~I`Ompt4@HZEs!d=P3Xc(?bZi)9Fj~TN)LKVkJ~@f z#|k&-5b`JqB<#5|Ueqhg*mpZ697UhddxO+gDsJ zyw8{-EBd<`Quf_eUfyu07iNu5!$a5-&c!z1FB4QAAz?8%^(2!-&@Mza{PEcsUKkTh zEY-!~Y|RLI-)5hdy&i5N@ZKW2Yy;g)YLgg3WD~mTxG`fo4@lLG)wQw^KT0&l^BuJp zd5AwmVB+qV5-7vUFy_eYy`L0JjX#^q%pZY%J;ak3yw`#jVr%@jr@WRP7 z&OSg@dO5f*)>Lh%lbre80l~xMMC!`tjVjmr#keAWa=Z6AWyAU_B5%*+P?LP>;MCj!y&;ixL27@oA8fcxwN%vk`KHguc_uYKbv?PI zX(&rUaL<~I_M*53rcy;Rp{5t9*An@Yk=?m|_Hkm37ZVk!<-W&8Nt$*VTrgwp3ekvv z$db%XFZQ+7c<}L{^n{4W%q1_7XpQmu%c(oWRY4JEbn6@9@uEWT?05RLtf{5%rdfB2 z9F#MP8T4+9a`Lf(4nj;R4TK+awx$t1T)BVr-mXX3IqVc!U5-?O3X{B_$*bAT`4Jy) z`2%Wg4_{g0f9q@pk`=Pe{>AomjNw(}rv*-8P*ZwGecH>`gzZX28O=p|_Cr&~0$TeE zcd8E+1`YvBQIp~$lZnB_Z!}%Q+1eOFvd)bD3}${3VE+|ux##O&NZ0F# zmRnUuxI9zZZyT;KMX!rFPka?w&SI9@LCKpsHkoAy+$IN0*8_AXMj$=yKkZ zJUx_!*O2tQARy+To-3zJB&Tg_GF7Lw8y7dudeCt?C3?b29irIXbJ_#3lL*Kbz7<~_ z8LPho?s`*yX8dVNgiO$J7*icX{?cOAa{Ui$4J0V24J6u^8Nw zKz(B&Kpe;?O&z@VR1t=lnGZBshWs@4Y3>CY8){|rs>ZRW;_wd4qojt>> z2I7rVbdL|AY40bd&H4K$oc8)@@<@9$(!|PGLpEBcc^Y&zl*@xln?gyrFB&x@)d%jM zQT<{n?q?P7@i7mXU_aE z1_x4sW;QwA3-c^aUB*6n@#loBaOp^X_VeQTDXT%vv*vux0^o`$QWg18@Oue?2c_dbhP(#bmG+0sG|x%TaOPi1eS+*nF%360~99uw?0QJ(Rpr!*caG{ zp7ZUpKqgL9$H39}Dye^)XL>VD?Ps?Mp~mu8S(3 zNN*>zmTYLSQ$m=VA$LCY@+kW8Rx`mZH6j&bIEciI0@ILFvJNt3!!hMf6q|}glbNPQ zQ*`2~>!()23JWDCG20&8dZ1174Z1Sb3+d8-#nsNMS4F*P(5tq7D)5d`^bdbteM#=z zrK1vi&>ST@dH-}$_;ZcCb+~^id<^Rl$|bb z?9iRXSW8q(H_K8tyDI)DKIY4OR=o7m5iv$svwn>xwo%UAW1e-TzJW^8VI(H;1!Sxs zEBW)0x(i_z$;jjqo3=5C-oeo>i-Z1d)syyy@y2^Fk|kAW8k^%GWetf~%&k2JGWNG- z^;03#iN5W8;BAFM<;l2JmT9e$%He7SJ(EhX!9+{wyPL7JCf@rAU`^$#DX|h0k_PW* zXz6=1Gl^?S5fvB zRm;AA1Z(e6giT}OFAE-2pI4@h|CzJ2`!0Y&fiG+ryUPT-_QHOmK1=Kg-3LtBfCH$ z_1RSzs%EykZjjOz=4!5GPF3+ho%78q1>v{v=s`FRlT5uaV%nbN5!#RCG{ZqkwDxd) z7zOJ9!}jo*KBT`D`<=0;@FM0mc?@Eeyf@3m~&QLVU@5@Z3lg~B-4oMXw6U}o+ z-q#FCDin>6A{W1xl6Qx*w3E-r{J^sILdqQIeDF8cs{({P8?IK$SFSj^1h@B2kKqky zTy^mvSeIl7qPG-d%TRp&ub7+HYF`VJu(q&MSg?paq>${gV1u*lZNk zQ#{s3u;2gYq(d9N7E*RY^~p9S6+ z@$($E)l$haPr%b{Lwc}{);EAFl%9URM@4dz^seKj75?>Mm<-lC>x@a?Jfv-I6pj8n`PBrF zwH>R6cI(MqNfJqa^uZt`n zK1$Bj7XGSSdE!hTQ4MDgt1N5sVOgS1LWRMObNcIGuCt&){zN$EYU%e4RrIsACxcZ& zw;-|fDrIU3BEG`b6|j;H=B6-XA>A6$iPq{^@zaogOYd-%-H)k)do+xd?!bwuWVxD5 zt_uz6DhbswzNZ6w!z>dB*WIr_4+#bE5iF2-IA>*;Ngb}me^v$duzP5B%q3Fm#frm^ z7pYzp|ut`s?G3{J@%noW&Lr6q%UFh zFgV{N{^mj^fZnDdUevy%Sf>V69N1aA z|3f)$?FVokP1M@lhYSDC|5EW7wh-IHau6(E{=B=1;3adEWyxsvU{*gw`#)oMaAr=??;MY?CumF9P<^$n9y?|Y8IDe%&**7UQxldX=agqFhz2VXT1D00WMq!Kv*Q&x+;b& z%u!M{=ort#;>r&weC5!BU4E$3=}{6@c$6zC|5*_aHnK)B?}^C=UT9;sub9kMa2lx} zjzY=ovwPkhW< zkZ)XZc4jppN)j}PPP?n-*JM1E%7sHx3+Qnx48%!y`1aS-3rR!fF^jwzy;q}T)m5(= zTlw`d8y*_heX0yRl15**zk{G(6jgP{XErApZ*`RderFLGHCKzeciZ3a-j`r2P7=BZXQ%)8_h zDkkI?h$HU{XDpsE-BUM^P_G&O9+~fcUacg4{I$fP08BPXd?cGKIa8ue4C8a_ToXQY zqrB{h?ID(5wM>yKe>9E;6(}5h##U!RHgm+Ns_Rq)4pS|Id})A`YGV6G!3#$3(_u>- zNM!p|3P%@)K4WPW^U??Vyo3ib`#h2iaK-kH`SJ_qEi2%oNoj|St>g`0v`AEE2De`f z6$L6b6Pc$ANivbjhhC7}IX3&6YmpU$28&aay$n3)tj!9O+vmiQJ}VAVN^UaRfMWzl z`<_jy;`9HJVml_no=}k9R%72tHmbS!ckq|MNTOMu3U4|+e!eUnu6hY_t(4D1OaQ(V zG4)gKm^A>M0L(joE&orA2gp*7+NL3QWN zce|thH#rR^Lr@IjOsX{u4efu^YyW^fKYvKz5@+RjV=S_!)gJ0 zt4R5dsb5izQ#U^?(#$BrGdpbI4YeMY_1!iWIf3~S@hUB|L6&97JOV?k9oek8;of`4 zVRN+sK8%O!S>=Hq*5WvT|NMN^8QacC$MKvgM}+78`*;@>-q-RR6=C&KPv+16Pan$-gMZN(0j4HQfYpGADkpp{gRB-{x;b^@{@+VfM!vNImga8pL)leWp z#a}VNeY7Ti{CZXh)@J%cpt!U8zl>z@192YYIe5eexhAQea`4aY%Y)dY7yOl!1rm%m zx?B|>rh}zFl>=4IT)#8-6cKz<@h*!Vi3c`jx<8m}7@ok_ipW3AV~f$+o&I@Clsx}t z7g}K<21Mcr7)kG%e4Cd2Vz>Fz;U;DGM9gf7T|Tdt&GIa&pa zwUs*9!syYdk^6uQfPW9A?rAk+c#HI#y5Cezy6REtI)7cmpKeh|xcyCcIRP$a@PWti zX8$=qJE2oN9&s*`2IAy)lQtU@ES6`ZId|Ep6s=`@k3=Uw)0gC^CCo^NR%%IMOiWgK z^x&&6U?Y639tL=>o}TC_H&y}3&UTda?be#FMSdoF%(cR98X+NvyifV_ zjy(E2wO?0$cZr2$ntmCeL9y~n%k38^9q%RZzGfs9Y%`fAOVQ9Y*BHJNEGLB?-)EIx zOxJf!xPcRX{kGnVq9uy6ufos9VCPZe@Hejs196JCz>y~vo2TVK3I4kn4R^Tf_KPS^ zK8DQ%CTfS_j&N=~PB)SJcqJP?o)5wkm~;Vh9mjqtogn#ei|_cVjM-#G!cJKQ=|SD5 zo!#`Yf?#uS;l{(F6}5p*tM=GQ65QJiL5}u6$E7S}1f`MmB8SI`enfv#BwUtK-JnCSt;i3h5Gg*;PgABFR34uAu&}ffBu`yiMlO4 zmpS)0l{txZ>@%~o3o>g@a;^!>F27{-Gf`iLGnK7iyW&H&6slv9TZ1x}Mc=q<_B!_L z&))Ps8E@UUrlu&1ONM=y{W={Fns9Nc2(JJ(w-&t}Ws^T$mvJ5Xf_`W?OARYj5@>e@6dv+BBfZIRNV-uprF_I%&F~LBr>T!Pi(9)X9)fPLmzyUbWsbay$(A|v0 z5A|GlPcGknx~=F^VR@U0Wu7BGCjw-RO2wD0zp|nyWr{V7v)lMkShE~oV@0~yqS#j5 z4#c*ED;g9CW5G&1glnp1F#aFaDwsZ8d!FkBbscF7Oa9?cTiHy25!#NwfIXHo!3^)2C(F=JKowTE}_Azr@3muk34 zi&U>>B`g;zZ}QxAq`wE7xKE-{g{?&bU}qOFX}{d{%_HGvV2bkIR;(w!>ov`%X|=M} z#J->{VEtrQ;^kfYH5PI{gxxP}ENjI_6F1B6?(vgeH<5|haW(2>a|+90AOe$BiDp@W z-lF;o?n#dygWJm^i|>FW%)A206w8?}R;O2rSE4tRZiTrL$a4e{-f%!TW&qmE}2BsT$?m!`sZ zjoVNWnukQN5ieKT(YX#_@tqYv!{N27*3n(hYq>P3P)V)K)O#!vk~#h5ALJ)z`JO2gqNzQKaNu}O;CkOD_2h!$ZOHJzu8AJ{#KTgjAt^r` z`Rz!4?)%gw906aqz+tP~H|8dm4qPRMp4i>UGKYCWKnes?4KC9jo1Vyw?bn3kDx!3g zL)zQ0aU^~5{a`gAKJ($#XM;|F$x)Y)@=xEMxu0ZSZlEp2&`+(z{KDa@w8GWk%wJ8U zhBSo(2Qw&S0G5#F60|I)lQkMUUbzHcs#jTDCvcFPz{;m{By7Ow4_jg*xFoL{iRI0O z_68ZAeUj1(Df?#C9YZ-2Z$S=4s5Qn|&#DXR;ToR>Y53PpM~ZPeakUwK0MfGNmh!1; z?w{afMXJO4bK~5Np=8!vv>Izwof5ue^8@r-i}YX*JDXbR)rIH&{1b;^KLsT5^Yb9S zWH*5~g}vIf2QO7N_6J_5JO@jJ9&d4QTN*3ChRL*l!B0cj!KheF(`#r#O>~y+kcOP5 zA3PK<*C`=fD(VSZW>yW_wuGZb?C@obN^2J@W0vuc8c%=(#HRXPQw(Ustf&0)?UX}QEy5cD;`4SSISw!SZpLbY|1H#BdU2!D~ z_ogpF3`yX@=39PyvXC~if)~03T2*!&KoC9c-JF`Kg}r`pPbdV>Bu31*P`IgdL7T(c zai>qw`T=Mp{e+lwLcOJl^RW)beS15Fc>C)t7Yc23xyf&m1xM6phUk0WABaE1l9&V% zOywi6Kmz;VLdH*4jK(c&eoK@NMuZS-YbB<2(fUOS;}BO};>FuWR!SYzEDG$7_S=@A zXtsqlN!d7RA+~1$d32uy#ovC|N1yltJ5{loSax#&8Bxa z8JT}p=vfpuv{pGGPaJcJ@lvVryC;L!?;Z|4`I%4VAMN~MgO#<6fjcJe62 z3{L$R985MuES>`PE&-DF9qJQ7Q{y3f-I$4$Fm-mX=YPB%Q9qkKy5#M&#U#s~&qVo4 zB@^M7w|BGkYfhIFhzn%_r@Ruey&R0;+8m^hlZRypLB^9ANbhcw;8BfbpG`|gp)Rj5lh#^OqXW* z1lLqToBplh-4qtQi#I~1#l#GG63~mm`*vPeh(3p(i{CiY1Z|8w3C+5mZ&DJbxOxg` zI!_G7yl(R!9TA2|J%Tws6o(A~6qIarUHq@}gsA%tKvU`c8fK){S6?f&czC)VD9T-= zjvqGE5g%tHa%#TCzI{7zugQJ1u87@K2a&B{K-%H>ML3V!c)FGzGHCMKc)esl&WXg# zXf<{aLm~zk5sv-kRP<55%-atZgoE)U>jJUByJwk$rPU9C?jA$g%J)Jk_Hliu&d zJ*P!n((_%BRNEFkpg3TX5hADKn~$jzC^=J9&Q;D=&Q>l)c0A0D?Zm-_Ru%qhN8>k% zaZE6P_*DDQWk4~be}WU*NM07%be*hZ8t=@w1F_MNt+r z0))y{kNXmO({1bBW>DIs6V}juGEx47rMU9e6Rsg6w0Y^hZfH>EdxH*A8YB~J3<`lrt z8hL|=cG{Hyox#O5IR2oxZW{x48^$&ps0B* zF%XRaPYMI-Juqwopzy4D3qe~od5e0!^NliMNv@x?4*khOSaXV$a{FdP09Kzc@)wT4 z2Q8OvfFu`ya&rly5V9YM*J&Sjq2Tx8CrK>;0$+$ZC7&~J1=!R#(!jxH0-x{98K;Le zh#%h|ygS#id8PnVen|Qk_$2_~cXSR1-mS%4ohCEgq3KKm#L+N}cRnB&D-wm{r^(Ni zm%YlzWI9$A1R&%y%!xdCb5;N_Unj2mVy~M4;Oo8+uTHve@pUkxw<5;R1~u{T5_ho> z!X78%Iq604P}WIRB|ek2?#H0!-8xcbY$yt4orL%$ete|*#ujz3(M&d!Jp;UECSSI0 z=uB#1_tz%G3T_M0u?wpe!e^KW)6-!*m_5V*>R$GGX38TcV5PTjwtPsb3|`+` z2TZ|{b`zi@Zp1UqZf;BbUkACYF{7^)Iq_oJ8G9n~X9U5^^O>HmfjnhleC47;L#X>@ z4h?ugW>oyxbT^X~Vi99jog9c7fg|NK#Ba-b84yVlp#_R^*YBl3G*H3-0QGMcAWpOR z@qG&0E3YDDoU65X(rdSac4qK7iPOeYDEaN#b^YtJM@+95+7uzKzW=Y|g{d(0C? z;(G4*sDi4Qt{ZNuHe8y}_=NURmC$tnH!hYT0SeI1v;lyB>+Go7+QPBtf$xJ9ismMs zgbO!0}4erpYNhSZeE$C${_MS09x4!hqeivW#Vs zyti?(5T4S_kvf&>p6Iq5H^kerB3Ud+2dP<3bnMgQooW5f9?>l@ufPv-8dfR0U;w!_ zx6>GcQ^R$@?gE!w2lsk&^EIk4ppupm0hq0kTMX4k)Pm<|DBvA9UP4-4yyCe0XH4ypoHqo(dN`3*9ZkU)1sH@#W_$9<=b% zAMe7@?gX?Ig~LPb@U~;`+CR|?7Tw))X>_N__b%Q8WWuVW-Bq)aTx+L%?{oNG=2*@l zwfMv4P50^jWIroHkC&ovgZh=Izs+9r>&2!jJb|^ZKk|*QbiW09Km4sBcbb}_)ha;y+&@`2JD>5g-MUit!S$yFVsFzTf z5fBy;JKcCOOgr3q&WT@yC^PGSyAwPY1r!E7Ij3P9EqbOz|LvB>3(B_gU%J%a*W9^2 z!-MU9jQ!w(ke@h&_gi~&ioOaxejVTCxyjF2uC&j_^2G`TI!@Fh>?UZa#~(31K?6Np zT{li7%wt+9FIeRf{?U4VQyaSR6!p%5+R%0-VM|Pe!pjn+(ZDBOAo~`4N421zU#xbg z6@j!{drP>P^yg?Ryn=;AavGW{g@nM5N;wi}otHR3luz==6@tSwcfe17#rCk}_}={Q z_xRIaY|1gBD1F`bo=xjBpTA9=eIokEZGOhChpnAS5HyVL40}9xuZcNJl?_sVv7m)anG-}3 z)?Ca=IE3)zmnQDB@h49O#cx0W%JAxKc8KzG6Qbn$HB!bFFwz`apgu4 zx2r7y<6^&sR`l)bqIIQ2!Lx;HF1M{d5hX9Lv*l|cw>__GhrPXN^yTKpvy-db^REoH zC&#(+5w3M7@Z{CgY)?msAeWGy+eSp^g8KCbSj{4Y;kv&w**5W|+r~UdA^G%IZ)9hJ zZQJZ`;{f>Oh1WEf8+g4oQt0|)^I`+5m+9Ut&$Y?f6fvld^?re~!q8f*x)M)c-FAj? zcE8t|3yxRn*?F2GlkBf zN}r2)D%L3=Vz{l2vymXUyB(|8O<=OHo5zw|x9c#y=Vt!f{V?$EQ1Rl*Oau5pq-$1t zm%gEp#6XzXxnPJt*?kMF) zspFAT?W+;Y+X*p-Ei-YHz*=B&g0xf^FH|-H3h!a0uV|JkeazgSl40&+1P!o*f+g$G z@8HLTF&0##dp~sRIAjV{9;+N7XL@O$)Px@J=>CB6{=;It@Ods9k^{XUExP$inq=EF zwYZKYN+;?iN<-)EX(5Jk6{R#O&(ON{G-fYq%%BTJvW%72;r0?xLp!NQ+e2upVyCnz zhnm%|2H8dVWXHbZY87?d-Ba2QCaRm>9&5ZhoI2H^y8VIx#ipn1w+y(Cv1L14gN6zM zQ&M0)Z>Q2D;_9@Y?}EMrdS)?d4_p#%zEKq}|C|>E#$Dqv;Ts`rQC-W-lDe>q?oOd` z%8^dW@|s6DE#aMJtfnP6FZA;b_UUbC-a3)y0WV2@-QA+t65ME1yl&iPSn1LAp^k5^zuMq%T;V;sJh=FM>WUY8 z!n8EK5Y9w!{qX_9wt?^W{vj)qpuF2r*mZzHs)a8*>WR0j+6^*+?Wlq_?#M31SrTl6#q`IaldHn==V4?=A#qGQ19n0?B0zd z;IJJ_J}Tx3A|n5iiy=o##-QR1&_mh*h^ThGEYdV8pk~+O4!)q@lYWQQ&%7DU%DLAL zIq&F=rgse)h{rS9&6)TJxdXO48W(@bjb1 z1b3x_CaQh2SCrmbPGkq^wimBbC7}uHX@(30w3OSwwo%l-~_IvW) z>s|n3)0!qwcLV7}HL+-SW8KS>cf^W*Gf~p2R(nD1SKX}N<+agfE@LmuEgvL$%JhV7 z2NFT}uaUToJT6;M+spNhsj{kmto>adsgLx>q5+DHPYie{8E3BdQ$)D2y!zQvz6*Y; zI3yP4x;(!s^0e8ChnnCTYAl@nWYkZlsGe``YyhQj)ULe!-cNDX;~p+x^wBH76Ld9g z!NGPKs;(CntB9MQm%Vhsd@}xZYlt5FBtP5kC#EliI8lJ;(rnvq+$*8(>cVkP$#WtSTB*u`H1< z-{=@Ry?`p;Y_6~_A4vdi5bBiM=I7r2(lROVSqc+RZGanBmV)_o$pnpFUJkr9$oIfK zwC)8ISTLS2d}Fi-7Qgl9MT!7O^!b|eQe>ek99L20R^7p%JaOSW%Zy)e=V~l&&S94U zA|m{jH;~xs+ZOrg5`J3*2kD{;*JMu58sybAE%Jt5zD4#0PSv=VT4W?ohB+w3wTLIZ zd%T-?bJkEYPWRg~yLRnXcqxIARCdR6AvBjf5GC#WqJvODqqqr1{UgdAH zbQBPU7h`N$8=H+A47QC6x-LCQ3qMENv5pahUddXP+3R>U#9>v*=f~Q%@mG^hNdM%@ z3-#c`Y)|)JQ#C$gx?BSOp9*9i!48FFUkHOU9Ba}n2L_g`Rj=Eg6XGnel}e%9tSgi=9m%#|qJ=J|e`K9ugZq5>GLUG$Z zeu3>kk=G;tSVr)=|8Q9!ztxsbDF53srC;p6HoBqE7q=?&5^tzYzE}M=hYAFmXlyo| zo~3;{oxgkB+rrt>IiIX zYt=6(Aql-$%Pkym>v8*CE)8q`BRLmoWlm|LIGL~RyN432&{GU z!C6N2lH-cN9}mp>3LJ z8~}p(uomCEhMq>|rY^326@^)ciqvRttBME03(`FGhbO9(samVC75!;8?H<6;?^v4) zf(Alq@dFR1*!^s#LHOS})2Q-z&ry(6mJcZx7C$7o);R%c=r%t^%xuus{}6y(z=!IO zu8S95?g{%1Ty%jJADX}8I7NJxauh7aP+Ezl0hcw=jrN4=mUB6k?C$)|R+b%GYS9t` zyrDG~U$Egqn+esLRyw1y9irLIcVkNIEW1t-uTu8wJ1Du=;O^^Va%CNete}w4H+ZlA z=WoX5zZYKTIdcP@8wMEMh9Z)?8|z&3BX}w4fWx1FpW(vb6cofg%u|htIA^UDEj(#& z`r!vo#@0Ef0C-vrBA-?0h1nHuJIrc{^BjcE00&bxmt+^|uZ(j*=d6@zAMA+(D*N>O zjvu}@6=~hfD&ZT5T9>T`#fGi~cwOh`CHwNVjVG@q?J=8TXGXfHjD)#9pG50;K17VO z4ZO2W4F?)%c@RDjGC?0jK_o!!E9@mVk~r@;?CDT?*`apM=dlm;q|&pHzuyF zuD1;nG2miHe0wZvQD z<{{K5e>=EI1|-|ULT3i;-96a$6e7k^r&09BMATd?0+<=q33{l&*<2r`aTgUj%lkCe zlSer6EA+?DDYTpkHKG^x>-%Lw2%zN0jEo9>y${hrIB&kI9|;Mb>-yQODF`Mvx*uJ&`eZhm6ip^hRn-o2*tJx2~$_E3IP!veI{QOU{92l zXkrpFlQ|YY(%B~Gv3qg*g?4`WyC{`3yFr;$^Pm|NFK`t=a^W!tBRI=?myt1jfDaSX z<+4+5*{&W2iInZaxX&8QRO2O5>Z}M>E1xgwKF~c?m7iq>02k683WllSIYkGZPjcdL zAQN*0cIw{>rKUnxo~+5}K+YrpW_LwHrzagJp3nOLjk6W+M5e|FwpHijxe4;xmI2gf zsFRB?yQFqYA9q$m@b$VuWHZ?MfF>yn+z zc6bV6Mlp9?4|gwjzctB}^0u+_FE`z3tgagn*&nLfh!0*Vt4)w{+lp>>T4M0F+j`Z^ z5p$>u^q`Ez(TSOz6sWOR*}|wUndFdOL}z4H zUoz3)9C$%P?@)=2c$N1$t|TrI&8I-?hm(@lP;JJ*6c*-2RLWpW#hYbB9iO%xwa{Z; zbao@}y5}IjiVBMR2GYi2(n8RJNJRFyuc+=7yeX_dn$WW#V$9`%_}L69&%|Pn76&PN zdCe21XjEqf$D5=922_Fl8!JHI)uRGbp#j3$E>r3HoJ} zgbs%_PfqYNzraH~C`FLF3i-7o?Tv*$HNL=g0Y(4ZZ)@}U%FX*;w&qqtdM+%*nu=>i zM%xVSws6Jv74`xQW%Jxg`gkyxdS-AVa86t4v!8|0CXGq>X>%uspf}{2ZL4Y`mC%g@ z?mW3l8sX|lE`re9r}W5B6h=8TM5G$LMfq|7 z1PHueNRgfB(8a_=4sP3*Xj;=)_^dw)E({li${&n`9|2@H%Ud&JU8F`@txFfWQNsxU zTc`PNN#uO}(2OpNgF_3@3XJ}2Q8)6H`jc%rWLJvGgE|1dYxA0iMA!2=0U0S%ya6`1 z@~?fZKb)bcS{n<;{f>$luJn!I!HR%@Ud_oA&_EB%(BL;fmCTO~P!Aglbk(3dr4YA- zP$C%LH{Q6(jlxaW<;nyz+R3u2YZ*bIl~Nkabd8lPM?RH9R4l?-4|j{>T*$aJWWTCpxiFSCB_8ZZjEN!)lM-i$5bwo zN6F8@BA1}X&};@)Vb|-8i>CFWu)XXd7GqeS#u_Cq;5G~vtB znEHzypWOo>G(cfD5>eHuO2#?YTPu)(eF9LdpI2@WpW<^dN?V z@kh{vKxV=jfvsv|AZX0z2CIBu_VQkL1DIKSXCYif*oEqt-rlk785lPdgebKE?@}a222`o`0d7+*Q2bQmY50e)lFePT<3Iw?o%o&{q zbnoKZ;T0L{bTIf*bd3XmZZ4NFT&9n>`J@Y_p3}I*n2QSqRnz?E^?>L51p~1IP=vU$ z=mEKe3j-P*#)_^#a`qu}8gi@=Ha2x zsLIWi^hf+oPH>Ctq)HSMA8^oRC>anx&O-;K1e#Pser6X_RsVE7kTFx1f<2R_4al-` zDif?Y`tl5%ryW^)z1r9>**uow?%YR4eDFG!At0j@8=V|?{z|-Poj}{kM;5Kk?8)!FxkF(-vP<1I)CZ`nG>Siz1E{E=>>q2N8tAivwmmIsK+4J&rC99DRH2snK zLpJZ`WtCTwKsM-3a=r01roNwz>&041Z+`H|o$KlTD-p-BoAsi4bmX}bWkKqCRpjM4 ziFsDwh3^p=4e8TL!R3sqX)l7AYfTS+#v*izE4%&%>U?*a{uU{Gl4oT)wz=}41 z5C)q{ELM3YHEeduZxNh>-|8aibJ7FU!+@FZ3;~gR0cM#D-1(|3?MJQvW-5coh`~bn zgha$M-2T(|_6(6RTWf1YznBv!nhVEAq2{O<8c|L@fT=f|`~!UiUD8nKO#E6X`&*>i z^;{tRiz@=l=s@B5HwmxMjrR+K3omkMc4E96%^}27beW}M30ZeC&)zHdw-_A*S)4c& zFOTC39fGrxT)@VTgGnZFTs~`%PZ~;^P6$r;>3m$&aRYLF6^OeN=)!Beg1+O`_;gG_ z+k|)7pO3VE(S#X0^&VyjxrtT-t}qaEMv(~3=>=@E{XHZbru*51p^lY=J>NtFNJt=p zG9~yfkIBAZ-x`r|pv6Q`;3l0`)V!2^davG}>SUH)@1t&MOwyHpUvxmh0ITEtPon*+ zMlPE=);o@MSw--1ryK(T_r|JeuB$BZ;}_>MN8O5A)NSj#ZSt&rgU)M3+81JZ@T9G# z#$C7SV{?8WSxF($t>>`)twWbks^)`D&etY%||5y?88 zPmP4)U{Md!F6aTjTH{CKEH^6Q=64?RHKFHub>nM$F~2Rc-Cz2JT6Zcxe=g5D*ouhS{F?sR)j(@nEBw|_ffV^@(tN)K;aZd)+m zSq;r}6TqO-N%tjZNc6;b8FUn(?$Jwv4B%sH<(tes4js21a#^&z&4CZoSvKm|1QFJ- zs~u%?>X(!=zlKW@(`I8OWU^M7=PJ@~ovLwdzSEf4y7wv!U7Sv>l`ZU;Vm~mK>qy}P z^Y|>D{Em#*MdM>%rF_WYPojVz1g6E&l>QYbal`2DSy_LNrs0c>-n-deCQ7$PFWfD* zldEi>`fHWWxL-t+&AdZ;0+|Tn=~%%n0@d@3dMb%7Di&P_5XBoE+^fB=nw{034&-@j z&w?0U*)nxHqCeha^B~l)UvH9$uQ$8=#p>aE++AY^70iCA5#D~+>ImG>nWQkJ0u(_` z0U1?Qo+kr8aEeFC%i<^^5kNNb-oPV6EGxcz4Sc)E4t(9%pW`RH5Ay@lO<1WD?QFKE z>#@e@@IKCZ;c}{os{eDtz37!E6CyOXOj1f z=&Q14rLs@Agn$H(of-+HBj8!j#+BF z9>IpT7m3q&9(LBEncPaL_eczAXq2BN)4?~8;(z;)9P4ouW2l`we*c(JoQV;J@xBd0 zEI(66#S33z;glW^fKwpSd*kC`2gy@1B2ORh{gpP&4ZdW3LrB8;x8UJoqivy76t)uw&NU;!` zv+_KdxP|DWt#5`=BLTyqI2vo`is1;{!?^l209Vq-&je0zY7=+isIC*6Qd;%VUm>}9 zEYvU3Aiu3I#`Iu)I~zf#S0KRko*7p)1whTw%RQZm)Q6_Uat<&U8Stt z(70y8)AA-c35>b%feFk*p>e-)x9i1F=(Ps`Y7+Jbpl^M}zsFIGnoB^dW^LZa$ln0k zg2@_4GS&ZaTyDnq@v{N&QXhu@7wTZizc3wOs{cMI8@c{)@CY zBoLs}1dvvAE!-`C-wNt6bx^Fx+~3B({O7apN!=3||1}11-yXdGB2Pw*^V|IYOCR)H z_fOZ0ymLcbUSDhT4}th+`oIlws|wje7FKPe?)kDG+b!2+8Uwik6%~zyB-3R%Ejg2M zcRhm8hrheF+@+$XO~#i}x#MjlcncH5o7%ujTYpAfc)bfYIzg`KZfob$528}lXt&aL zkF41q(`#V8b@Ovzj)wSib?XyVXe#;NYj`?7`0n59kDT5%e=kMDrQz6ruaN^7u-kvH zg~-Hs{$8faJVD<7d;NcI{=fOPFk5?Xb*;Jo6~`ye_bWB4U;ZOx8i9UA9t&ddHGuoM z_xDQ~x4mtY|6LPb^)O&U|1Jg5k2J_5$$wYCs$c3P;lDG?ApSr9`2W(&S)~H=h}gX8 zE)`anFEed9$jKat`)79wk&0DigK=S2bd=-am7N<7kDx2Il(^)067BuTc$hQ z`g~*Z_`yGW{=gCqk(?|8zf3JrGojEg6rSNzt8eryCaYQvom~m3Bl>Zm6!CFyF_1$> zo)Z}pIVZ!isUnZt_d1>Dp~{d;h?;(iR^Ib1UB@;|(mdseaINF2j^zDg2nC;sXX(?) zI98jtu|J6X8(*h*UTzzN29jRCEjw0t8+WQbjDUd>ce4NrraawRXTPAJphUL6^Z3XB ztU&}Ncw0CYs+WAU|H|&ei)zoVxNJHCu>7o`dDC_xg!94prrqV?X`_8x>;85{k<4e<06VZ4xgCC6VaCb}&N-^>;8*&3{sQW__h_dI=IR=7+Kp0UdL zXj;soMj1yK7pnljJnZD^`>wHJ#r5xYVP!!*4Jnva_(bz5GMa$8wF+yb_k3y1b$2c` zF`zt~9htn>>mIRtm-s@hpffo;OKVf4@EvJiWbsGM(Us40-Pa84TMO1tehJ&pHdjRm zZK9iQby}rMBR1yD=D*i-F3@nGOhp^4BXGX20W+90`Z7e;J z8a;ezt%d&JvqE`$>P_Vua^8xrO${dzpv%fcz~o&yAorYOB~|s8gfTTRqcy< zEI9se6X}+<rK zt7Be-|B^N$Rr{6Dj;1|vxnn$>UE1}~%BpNdrY(u7)42^S?dhiXp3<%Nh@>DRLy}pi`ejtYq`fTh z-y7DW|C#WTVMtzBkIFGfO#rf2EX{$|pndGaA-%y{M#FB?($$!gSH;4+Ai2Mg)e&gT zk>NQ!NHUDZbN=4i9Xlefk&b=qSFi047_V5}c+`331cXJRqMTc1Vlt&XPkp)WQQ^=) z=iyy+oE%}unXhSo^5*}PoBMgLlVQjC(GT@u;#!fnfMUwQZ8(#8`YPsSbwPb^9BW2l z1)o}E{1}1d&`9W1L#f!Pa#<7O25H?wA$XuI+87PwS zO~QMKV?GW{fYyE5DhGV@uY>aMuAozhdGo{>nb*0BRIHIta;s!ePR=P{P|JnN>p3f# zc5j!o*$N(Ia;SA2z8yt4ERR!hj@~FCFZ~1eY>KWNC$Hd;Xw^mbzG->#@>!R)mSdSj zAq7oM&4^U@zC^x0l7D1G_(w(+?bhM%+(wR@e4d8uP2}~(Ed5v?$^21KFhZIjN8l>I z8ab7RK9U*aD3)a7uJD|TnjJ{-~Qu%1%&?}Mt*@`YOA&_9Iyg8a+L!bs z3kk5>?#wm;2BNgAEJQV#e!rzwZ0G&hxy^>w4Xf)vhpoilM&pu=6r~R|G5AVE;+FqGu&xAjP>B z{s*Z)b_JgY2`aSeKhb(Y8SE5;==7v3f04Zh6-Y$f3jYCaVkZy3=Fb(#af9Fgn?R0T zuLn@z=HH|DZsSQm?$dt|}d~tu76!NN8NXe0eF5#oMku`-!o!v7H!{ zQ>*xqF@KGqh|BVsiF%0E@bK_S$84pf?Ay=c(?^PQFIJAN(>bqWdh8m3VL8W;^ZtFB z4t_yF5%QYO+#a_<-6JD(=j7(z+0w^Yp&P{9Y)$Hm zbYc0~*|*J7J!wL(3DGU{yDX1>>rUVs7DRi}6Du;lGq1rP*8ib(9)e)`>ctiseD=Mc z=fGL%mdDqnA&}ag-Sxhd)z@u748Qv5-izJBm^Ra8Qv9a}vf6cgp zBH~eJJLI2>y!v*`%o_|-QDf|li;3~a{5*MJU+=Ad>gwZeBi@9j{1=>7PYXisB(sy2re?s6 zFUeCeiNkcNKjf#p$vggDpa;qYQ><6RyX*sO^nOv_=o}K)KQK9UnHw_&1-;0S$=k#t zPD2uLIm#&xgl7RCM(DaNy+{OV!lG4w(f7qSLN($}3;m_mOGA0R6VlXI1@6`5xTJ-v zb$g(*6ys!eW~D3Ki`K>ktVaLce)7b?RY^(djR9}k38hBYot?JdzgmW)In;(~R~oMF zirY+7cU~J)42$_~ATE_8XiIb4l4(T3W219S@h^9F<2e9FI7wJ^d3d;xX2LnX@Yvr2 z_(93lbV&_G8DQO_yH#5~g8dRjGe_Ir6eDy#vsB=&FO)SY!N9Rg{S?XJu-?p^G>D%jy zRFrvHbwOj?CUTk5pZ4^XEwHO}4oK{G`OS$5z4=!7-;glXb^wlHr%`=3*{z&EzJ)42 zE_*VNn^RzX`=^Z*aWCOI#yl#GHbjD-&f3igNvV zq@HwLAa z>Eq52ocby?97lI=y4nA%(f)9OR?43AcX^lkgI9>OxRBZ2O}LV7eC9Llw!<6BuC1@L zuG4QHT!l5_7yjerUQ379`UdkLLME>s{pokt7YIX0Kbs2X$`3h%*-C1_E39D`sq-xU z!Hs1>6~-_Y3Gug4uZ9fNChFYzlFd%F8v2l(N5v1q8#o6vS-hgq?NcaIFY}@TUz;x_ zD#~hID|8RA^!*j4Jr3=P-wI3G8p6urb8_g9R)hT;t|3&f!BfcdWtR2Y>~~2nC&(Wt zV_*dmjt8Wli`Fyx@eAdjBg4Z&vb;pVN_Qwlwgb(^AE{u-?UsJHPy0zSTHmM`)xFwvA+gWkEk1N-JklESGMwJBkD4 zhYtt{u(PI2boRpCkP3KY>@WIGHH@2!%Xw!;9^?2*L100EfsrwQ)CPH*cZY+65*vOt zkJ~2fh}k?|kpgEz@HEO{36}AotgcRU8Fr!L_D?Kyuspndc)MD{AK~J6E)XA#<~b)ahco`rh3$))}R=B??p^Z%o4~R zOW+lypSmkprsGpmm3-|Bb`8c8Y!q9Lf zWboF)@Jwc?E67iy?C+t;Zm}Mt^z6zZ-HI5;bg(O2@e?lqRXC?iNGg$6i0@pqs!toD zg3SYo;Ar=8-#$tolZ`$;x9&s-DlUCfU3l+6n0C8N zr)Le(G)d33F!9%4G4fmRr-KI%7Bx9{*yQFzO5rT&c08(9t>@OTr2+XVT?B7?=jV#bEc_)Z|MXXby&RpIr z@iS{fd1}gyN0_h$5GqY&Valk#e-{jIXes8EjR{IQ4-ezZyIvJ zB+M#aa0E2L@vmU9;B^qS&Pc+-f2%44%+AhAD}35|(4`XpPwCJ)v?Fo0wK#eqyuL)Q zhK?eg5Pxw@*S4NvLY8tWt1=kH5*8BUzzZ16IbR%@2G~ZOSEcSr<0+qTA@77YraNJ( zi()LT?+>C81~~2jn5tQ?PPZBLlNWxn=AZ*9zNlIXpBHbk%kRWim1OW`20-g$qosZl z?dN{PC`%lD_V>+0h{Vzqo1P-8S$eK=_;hf z6|kQ~vC4*?!<6XPjw~Xf)=3qAsQK@&M^}JO5pjJj{_MH0fzbCN6?b;UC4NN|M*5bn z0NZ(o0aQb1Z*Fex8BB>`qj+5$t4zolHjlC z&EJMGad9~y1Z6|5k(iAvKV6tj9*E$ln8iG1HzZVgdU`BI3bif3lRXcDcMKon(Q>AM zXamymmhHdYgvCKw@@9#T^Ui>zi;Ih$*Vp{~AB#Sz2l>(<$^3wTygd4l6U`w5c$Y46 z85CVDKs*)`R*S8{WubAUBEdO zS)7Qs{+{#itOsNS#jmh(A&<#S;DZGaB@+XQLwmkBizUI8Jf5q8`TnGw+-anLgu6A) z`flUy2OaOX**id496oJGmimm`2uO?*(zX_<(HZ6+7KVJ1y674JnbYf457W6a{8JI) zS1&%Xn>}u4CEst_H~6EVL8~CFS8b()rSL$3G?CDs`5wh?L97X}L(!vI>@k$?`am=E zwH#WX(<#x46E?Q?_xHCz6zhK}zTaiPzvl(go69DcHI)xOSHL9Vk_!Nn@=26Kq%bF^ zB9}qk%g@YW!fwYh^c;9UOQZ9*U$W8>q9Krd-p0=b`eV|eBS5H>B)^-8gC}M2E7k- zkp0wMu3qo*P-Z^6CR@Mjs8mi|Su_4XGAVlv#H-&+ z)LP3?Nmo&qersZfn!b-9Z{In%NI8eA`J2fDS(j&ZRFe3s83l+kBTyzMSbAv8YVR(@ zsv!=*I5C1AWjRv#0z`?BWfsnb*uiehr5X%C}i9Os;%%Qw2Q%g_47Ubmj%w;0Opbf#qzet2%y$h0SQx=3OGkO-&r+E8vmcS(0UdwTeusXm?R{xgyzwy7a$^d{O~|oy&Qc%VsIeK zHFzk&vSX+NDdTd987T=Xypbih*RVj0Aovt7up|gV`Y6mM$CtMyYv?QV<0V}cEh{Q= zl5fV*-5zw^?GQ@v2D+qUn6&FjfE2M}nT3HiaSlwX*;2$YN!SK0ARh}+4{9qP>V#%x zX5LEX{HLV8gkl>cy?b!3@9yxEKk7iZ=wY1HXVvWYs@t-A6B50#h5xZ9hs+zeHq4wc zBn$LJIX6+$nNqn%CSk0{co>pd7E{kVpVcWU5`Mqn9t}yx_7dG9pC2CRp-*>iRSP0w z*6y0_mlp!;P|LY6k`u$WRYl6QflZ=m;DDzy5#+^eAjRPx$N_H2YMLm1uOPi28KXB~ zv}x%i@Q%W>$o9`yFIIm4WQV%V{ynRRFQ=kPEl1g(WZ2+2wkY^l_qcT^h`Az4{cK1S zE}{;qI?Ts7axwz%y9=Eu%{m3uKMet5tqf*N(p7D}rBtPT$%PW?3~9+Y9U(+mbP(wl z@WTs1*q`obvZP!c+F^8{6XWx-%rsQ~h%Di+4hT4m@YW{c8RO`08;}?ept5!T@nMs!d*o5;uO)14MAgIfYXMC&O9@TRBGdGI-H4D5(T*BuNs1ROwip$Ey0IO|Mo2 zOzIOnXU@mVo9z8XMI0$f1R%1xCM6;*jiomx&AC>e78$1k*d)|u5MdiI4zz`{Uv$DwjHsP?E+`c; z+Zkb3eEA)FGy6g+uZhBFwu)`nCo2>qIPXylm=@u=FEIt0MXG4eb*10Wp9!IgNTDne z_+{(=n?<|G3Eq$SjGq?t4%xM@&H>$({~9Z8(2!T&8Tbmn`cp#G15~o>@8(ds#>-A& z=nGyivqXm+3^23R4LdgWZ*cfqb1$6aYQ4!GIffxu`0p;j{A@ThzRp7{D<7>3tLo`p z>qPK(73|0!xG7wKWH`XLlC{f0&-JiVS?( zP6eO)Ct7$4R8^cY&Y5LpJjo)Cm}fa?S*_D3+xkt-egeLBMHov}p}Ae*YvW$Tdw--w z=!l*43mxY6+5p>reGk|jUIPnf7$_l%b`LD8JniRdx4Oott;PJ#eVW8-q2KE(SNp*4 zAcwGesk+SBplBniSYXiH6f?n7>}_*5VocMrTeOvq>jUk2;ks5c0)xTG85$WGRW~v@ zp{wm#L8G^Oc}1~2vxhm1`ZDjWWESr9*vGrt@9n^q?ieKl0%TX51;&NHMUW&o52&~C zBWPx3>*DD{obs*WNTj<0F#d;Tmr~K!bB05)buktLv9Oc|^^+)2QA??s;qkNKaoDu% zy_AO{gNmLAf16_ovy(x^LUFn-b9yfE5})a_OD3s*K)e!t4NJn9*=ILg)YR1a z4Yaf_)(N24QyH8tGBEfX2huQInSkW!-}mflJVID?xkqW68lA3N*ps?K(XpC&cY#q? zrO;vIqV0W>6aX${zn#rjNox*h8CvVr^K*RgTMd$9dhq0`5 zGnl5>-pKi3!cx%#h-~6mpTpF*_pg+BC1LIk`g|oXmaMU9X$($h-Q%F4>h2oyv%>Ax9xVyP+$?32AOCQ;aN$C(<9u(PY#6f;nTgWC%p^xpXZd1bVyjVW`E*qeEoGkRu4xL- ztbzgy7;$y-mM9k^4T$Hqd$ADWcTez-0v4XLsVyP||vl{0V=TR?jxtC_k!o@Z4zHqQ97gy}hl zOP7WXCdpNZtb?ei_$^oqb)&fUg{3WWhXIq}@Dm$)>Rmi4@x~nQB zKjN{9i<%^e9$xdiRNuoYLU_ZiiQ5Yx zuwe+$G-%NwAcfHFq{!9aq28Cg$Pa-q#6w`=iO zTun~6Wktu3;IK@)UbVgO0D5Tmfg20J>G|T50;->Nh=Tm4GY|N^I(!ZYUlTJS@pc-B zWCrUx%5mNo7bWa|A%U-C(X2JKWG*i4xuF;AQFY^tK>e3kmc+|-eSi=4zC?n8*ARH| z>T%F!rCC%Y(cqIeG&FSK)YwV`$tF|fiEYJ)@0gyXlk{So^ zx@epHxqF}V6)j?18Mk5zCp*7Pbe z%qKhZr={1{*K?HzR8$S4^!*3l9~2MbCXu23d|s$dGw zcVSn&UNv}~Vp1~!3Kigg+n?UKmm%}n0dr*O*`PQ~&}v;YMrkHCn9R;y=_h7Jr%+5| z(X~SfNu8w4e#;d_77d-T`X7y>)Zr$TL{o5TQjPG!#?0Ek9u$#`f9N37&o?~BRp zP$DCW!Kq8nyrQJ%_KH?d%hrDVLTI`OCnu+#;S*a_gHcOBdXZtH_W{jo>I0m|{(oM` zxp(ZgUhHSwdeWc&u!uJ*{?LH&2j|#DUyy0!>qd3vK&W023H{nkbrc)A}KQ&G-VL0 z!Fbx_ae&vDU^)JKq?MWNPkl)+J`H=*ac=z_eaFSW^iz@ z9~4wT0TRUm zQ1Vr7Cq|ckFMxF>#>AMU*bt{pbUp3gi%Nt!i4 zrg3lUjgf-!XW(&weii%7_l6-js^D`(P%J#%7{(+baE*SY@+fdT7Cr=xDLSUd?&Y{9 zu?Rjr-W)rE$-!y0pxGW*BKn1|f(8Hh5UWND0xVFKW35wAdfI$7ef!ipsPi~Kc?;)pFAeU=_t?4-Le9% zh+iwhm7lXJzEnK$v+;s!M>(*;`~Gt?`QQnAEeLRw+^_~#v8&MUKvKmjf6yP1^7S$o zY(c-gQ5h}7Gw=LHA=%+N>b#RH=1YPAA-|05Ll(`p#uxr?>s$ zc2kedj*7~URUU)92m75ggg?k(BSOQ>as(s!+rIYl`)6vNHMF+{k*d z0pHhIZ;Yt-A7T~kK<0e&<6$ss-V1`5L^QZb60z$(^r1Xm*{!cnqcTRwT+5afJKgEJ zlM=Nm%(urQ21INUV)2o2aTiaa#t+I$-jsEl94is5YHAHfmbUcTLl~l5^yc_0T{9`O zpHaRx6__e!P8?2UoE017LS6G|$a}G)E!60T%8B z0kp^s;uv$rcm8GfQ&k6q7|4g}ii*2frRbr3 z0V#Y8rl=7LWy!p`Qar0ds%45D={b#B@CbfpfQ0`;WXh_oYJ$bF*M zP+~EJ5-9rIEiuWZHBV0v2%09L)KpJ&R zQT3}^YqHL1QI6RCoV%)C&{xZ9wgTh48k&xZ)jEB{f@L^26eJZ)`l z-L!}Ubv_L(;><hxBe6$M<{0Yz|FWz6 z6>ERjn<0E&C=$3 zJst@gxE#j9&(EJXGNPG7)=m|5|GEUA5usPkN#*c<-}N4bXli;%;yT-ZMfzjF_%oa- zA2syupA+i9V09c+qcjfWswZzDb>@KKH;sZkbZQ-BfE<}H<{}_g{|ZqWPCZ&h@x$e9 zk?tpZf_%|?!1BX|87b4SOH0Y_2lAUkdlG14!F9{K99_pT!^4MV1oy!D>ez1u_os{} z^v+1Zyt z3ud~oBPJxjuu#1tj3q32;64Y3{MetX`gC-!ncS2xN_Ym)+L~W!D+G*^0bQmgftQrB zdO0lV5aln^RjdHlgi+cDMBX_4;SF6se{>`*(c9Kd@)N9a1d5ytGu)LN@$DUbXXrh_ z1+=?M#+AlJrOh$eN}zQ%lpqje=>3FC;vwIq^(L+T=LhH;W1_5yR4&$ZRm|hJ zK()2jvn#jne>I1dT%$!Rv*QTJ#*WhPW=ya5%>;yd-PZGJZ_~Y4IrKJ`os|TGlDA45 z{~wuzABl~)gdsc3Cwe77sA>ct&&Y$smTRoU@nu^J@7z#ejr@P35z0(S2nYB^t=v91 z0RdiX31#z^Yuluy+O{TgOkb)eh$JAkG364nm_)4d z_?pX`Nxya$Kk^~1P%$W}$=(_aF{HRr;e`^PWlpsG;Z@!t_tH9aESh98%5Hcp-m9$B z*&zSXd|?4_R^xEi5mjhIiAMw6M0p~$-fvyA22ag{;+Ny+#5!+xmSy*BF!7E5oafU6 zed@M0FoT>y*qWQ$?;yv=oA*A^vj^ZDe05>m+U2bY?3%@TmqQ~4ZhimbRSduL2OI~M z_VEfjs=jGJv8XtcQJtcc{5^Zavh$~KX9+%6%;VHX2>k3O9g`=q9B3EKj0c9T_q(Y2mY>j&|h@;d$wqW;-8Ys7ZkLq`MP8J5y{-vbaDzcXDBTcR~Yj^ z$Q62@AKm<5Uj7(oj$hB?^3rLmH=%``Spv(Jv8s%qJA$^ZekrCixt9XfP{PL`NenPn zO#UC_V{qk&d}3HYhZh?sUHZkY?txd7eQc)ZW; z%^(`$g#Dz^Tcu3Kh?&_Ii2%41@-g~c8ENho6d!k5InfKQuMj=D{vjE>(kt_v;@v-5 zha9k`14rTz?}=BGi3fV~lV%cafgdmP>Ty|0DYnu|gthm?1#R6WQKYf5r_ZhOxSrw| zreKP4%zy3ymi$iK%}92O1hO_$h;Eb^w-xC%G4Oy#ai8k;%A%>kM{(ciZeR#Bdx}vI z+dRlsmQ?0~^9p2VNC*%>k<0WNwD=ER4kc_`0wfloj1evZw9F#mEvo0Ux4W&}xc#aV zc;ue$1f07}M;N31{E$V418R#-jTAddFLZ~gN2IFz*h}RVg~!&XK7eegf-DJWRDAcg zH*OC#&pQoV+!%lBK_6@@tQy zSMMiCsiOZ5CbO>$uTHl#NlE$dcKIGQ8$_IbH%kAHUc<{1u$Mjlj#f}tljQ#h(+I8+h zSAoLN%t)-<<2&p|T?GxaK8Pwqh&LD`QoZ|>@`BuU%4 zz$ZT_bw%o+D!!KG4dmyNLh=*iBTFHlvw&G^-PuK}pQ)fu@g`7MurSCQ3t`9RnCKQ7p;nE&ArThZ&R!Olzef}hn zKGT)<5UK2$_r8O-5wxW1C?o<4jKYB-%KGV3JSF+fpY8wq&&HvnewWqi&ve`Lnjte~ zZcjR|K|j~~g8I->7K6(wuE5))hqxaR0UQb819v=7K1JK;&dDcB5lJ&RwW+4~AU-3X zw)*meiV||yx8+_ET`-f=LAy|CNzW3WpN;$evN(tH-~sPBvn$FkAaH8#>Fj)Z_SQc2 z*BqrJObCA!40hUabLGHK>xW-jvM{UT`1xmV3;P{KAGRyU=Hup{w#$cGi$|+6TfHSB zAzdxEdw8H{1(ih{t-y&%;xE~JX>RK?z^tv6sn}otYc#Ucxo3i3z(Gv-_fUiABQf5+ zjF9sYd!TV8Vh`{%39XH=5Ns~RXFWe5O*Fkx96P8})a;w44bj680&N~I^Zyq`!riT@ zsWEz)l8~^t;VLarsJi5gTrro8{JSj~k79Pr+hg}=c^`JjyWP#P+k`vZL@tBE6y=8= zdi1o@qHAw5Xu6qCR00>RxL_Gd#%%1Q>x1E&&|tvqaP*_uiz0h7A?QdLFJSfe^GUPO z4PN5!2cnYG3TJ8XI0_n2&fa9$hJ6UcLJjkN*H@~(XnpH%qz?Q(-zXnYz z6z}u&VLGGWV7vWXHUtnWUH`|kcw7{$fj)sPQcD-9is0hyh0g~5E0vE0eD)W5nFyPqpmYA(D3Wce>3w}u)p@C;@1c}LD z2K(vvEt8xtK((NzASCr2fXhM6LdXi#DLnNQ_e0`F5` zIet7mG(?dDwVkLwKQuqGo{0xFpeR1>gg=`IfJxvaKcLf7Ks8M%l5P$>yDA)6UGPOLfy4#Rc`g;m;?!TL9_(4ZpGxVU{r@Lmqbexi>=eq8) zc-*f-#P0>kesl|<}E?_3k!617&UHy2rU?>*YIf&zK?%Vd8+dz zhv4heBMyz3x2rw>`HFnQ1z~w%M^>MR!ah+B>6!=aaL!u&ULZrIKl{ie&~@SlqGZ49 zg0kpLN0=+-(|J~zT%h}j%&3+9w}7}f|A(akf&An@CHkB-u<$_)-Il^D)WG=i29dGq zGtm#h!QaWr(n_nUwrC)gCH%rcUBAIy{7YZh-Z@jlUUkqh2H6p++v(oHqm+JxM#seD zfl@?1Ab8HeFJ$&il>X%i}cJUZnMbkfwf#naqlb2@@I-ha|!gWMF z(rXU|ei_@_wCKt%Tc_CMRw&|#j2?rZ_)8U~kTj(t1(+K?e+ou!M~o#yP{i(+Eyew7+40bbER$q{5Urix_FG!?bv3G)plw{+|KXhC8csGBVDaK zuxa*1Ela33{$fv0A$e&BpR$B`?-fB<+I5ty1zmaH63n8e?nAcrUm*9<`|Mxete-Ml z4qlq{KkkgfaxGz+7V2e)Zy_6U`uY{T{dN`2iz{~n_j&raYp2epKS~v)YML)!GU%&NE!q*1TizW-7LwCCfx#uG-OAPEW zV{by3eLM!XuFF|jTdAvzBa_Rx^P8Wp`;r`gSM4dY&<*OTWnAH0$?u@vR8GVFB$Ixb zsVi$B$@*FKRT@=8!+DUCC!4<8jQQ*v?k$I4@4Kp8(?Zv8%1r&j=_>n_&u(fiBQumk z+zsc*^J32Sd)LfD7A4I;!8hibrwrf68=mT1X)`Q(Vcip!EHpjTYR|KORfEujFoG;X z&zT)44DXI0KR~5|s=yK*0~A(e4(uw*T?Y!PW6Je~h|?6r4Q-=*Hv>tSysxeobstvo zI>(orq^|vOukYdX>vX)>2ZmAfIKs=GUEh1m+ABZnEzIs8dL6>A9B%xGj~Q`wXhX7Hh7pv1@D5|p6yVaG9k_^?yuUdeYmT$YVy3H6)*ML zL#JQA%+}V8+TjWczha?brV>a({}5l^V9#Ie#iieFG(ZlGrIU6G7nfu(`1IC3+)BAd zuSB4~SH~nXKAP{SWl;4nsS8FrgQi&u)Z>c_K|pW2I7)u3wO}quqz$AAKwL){6J7b; zA7n3c?dM;QVgG?uXrMLJ!Z%K;4$t=n@RLNS;8{)zKYy6y*FZ-Wqp%`7`(#!<*q3RU z%(O$7q#X5OF4oV%{1S^vXncB5Cz~{scu305-?ykZFQLJ)65Qf`OX3kpSMws^NK1Yt zdtX2Wp0(PhW)gmzxc|Khp>k`%yZ>bYZzwk{K6rvcc4C4 z0H83n*D0>n=+3=$?S~jp`KP;o+KB4wD!=yG*=!sJb|f`=zP&utm4r)r9fuvCEIxu4}`FkSTc1MB1b9H;LelLT{v`>8w?LC-R&#cEu z&FsKY^)2h#$K<_evAN2nBGy3P{+`qfehtl2n|^GUVi0$3Bz;IFnEzCdsG3WBrjdi% zXOzZV>v|zbz^n3W-7g??g!!$;#c|OT6My8-ElG~?nw|n*EsCLk*2n z5VGAP&Mnd8?Tw5na*O~ZwGfOf_6mBbyqkz?ZcuUQM~#Uo6)7p@d(Oj_rt8L<<_XKu z@=F7eC!55g6E_HM$n|q@%MwO^h#|VZWl<%-(`7*^D2nX>%X zQ(7wnI-CzYq`!trMs7U{VQ9DhK_0lwc`KUFC#}j-?~&|r^$HbVCC8ovPb1+_eCUhI zAy16;-6BKQX7(NTfO(11KCQ~OX;ZDY?v30X;lt+oN?O6j#Sc3(g7ud#vl`{&qxy#o zq?!#-=>1?rf1CrFZ3^1aC04C&-&><;6bgY1b4p&a?7IkAhsj{rcE&jCbuVlew%(M4 zim4oTqa47Mf%VursO8R7hFUnmB+Rw24vdc+D?z_*=;fD46PMY|QO7y42=2J$8XeGJ z2de)nprAT5GQgj8cVW-F1#Y(sOcna9k5ao7FBY&{1V|4FlXJ<)5W-7ct|9P7CwKXP@&YU4{4x)Is_q7 zxo0=g!b`E852VbteWjRt-}c3fcN1FZOt>I=qH9kT?h=MFGi3^iYEi0J3D=S?J4w_r zkh*G$zwT$xb-jnin&wChs{&HtQvs_8lioQrn7$i2Dol9*RaNAd_B}ei#Pwc15lqM@ zcF_A#?;?6I+M%Xda3S{buz?7pkcmy7QgreiC?d>cG|r2a{W~_vBIUQ%ahuD0Z&q1Y zaY&V-;AL}AIgWV6Kayt!F3hw)Wx-5E*}@g$F?XxZE5$HPZzd$TEtQ>)8h#O4qwb*w!nmi_eXaC|VEk;rMbwM#x{c+O7dk*c_R<;bofO zd)5(Es^cqz;zj@mm4V%lQJP-klPCn#nv%q}P`ferL<8>ZXy>5~Q!FJFS`yjV%jT*+ zO8FU_J#4RI+Mhx%EhWY*ZOl>{A;YrRRUN5N6Dt#D2U6#EF)VH;Fs# zgwQ|t*;9M^M(TZiJ5x;;3g=YP=<1Z2!m09*R=rVb;|?ld?%#(z)7tPppu}8QoBOQo zr}M;^a$t_ab8kNFB;tnU=(?4LnX@uDe%dB3LY52Dq+sWuqxgzi7eiMJizRY#~c^H;1?)ii2? z7^%Ukxz|QHtqS@;E>ZH#JuId8Ne5TdrghX8xi$=(fNiHGfudebkavjI> zWHJX#51^1NiDrlpU~*z#AFK6T_sm=|wA>RsvoZHRd~Ij$LN!H4nXk>Z!?$G4oc*~s zq^er2p>oC zveA`iX&(3d=RL)rBfEFb+cSa%cY5Ss}kkS=^-{ZH@xXaf2=t8Y%n{h8jQ~}W1&kGX3aIO>kch0l(3$@AASRo zzZ<&Zu3%DK7OVmW91_u<5+XahY&sc8*FMO}`4;hQhc*Mo%395SNlK3jF-CewEVl?`-hwM!93$Z1=nO04wd#X4QODB!A3v->8bOgC?aX ze6+!gZf$%W=XL8DOvO7+D~5tidv;!00#a7YuK9^>TU1@l&T=Qw@IvQ&oA^_%yZ9I( zYk|BT8w062V7sw)oM<;T4DbSkC#9SVGv5h(gWR^Wdx>6U1_cYf=^`&wpGaF=>5@0` z8qj$1(EUt`*hpYE;#cg@g%O-Xq8hA27{}#Y*y0U*x9|}-w`R?m^-BCFo)r;t-t<+c zE`IsXHWezxhK;dEAz5Jf=qDxQ7&<@Zs)9QwiGQ+<4G&knz2k9{y?&qDz2r3t!sisr zEx7EiDyvU)Rad?JGac!wlDAky$_#*uA!L89vHjAaJJq$aR&rKY?dF~H7<6c|6O2@= z04$E4tFQJred7%eM^J3-kJS#&-whQ-@B4H~cl&)x_!w#^>m=PF-SKSj=U{3&ju3)! z8%H#_nG4PkMlRWo8XNnSH5Cd3Yj>NvRK&L}lR{royrw_XdiTby_u>CWzDfmk%-t>r zO;e`Dp`Su8KN9`4D)YJv^VROgLnP)4Y#C2Vy2?45w<1Vj)^qzi+S3i9Dy z9`xjT{)w}WP}#*$t`1H1;;hefsI*V$L7jbEnp6@a#-ifO=AP%OpN;ju<{cYz{tzYq zwmpx1VI{5<+g8nmTK4hTfyPwt$?%K>cyRPhn+n> z15Swx{=pqNDm=37VWG=c*9<(B1s}R1W8V(S?|V|UFITfT)fyGv{mO7p2ioIL{fyy0 zY5sm}p(Jd_kz`EOfHQl+2A4261F5g*ifiw%$}RHlAjEsg*mO}NG154V-Sr?+n?GsY zNou~5K!=C-KIwhphc847rQza>^ArerR~<1@T+enJrSNf7ZJ7dMge$OORP8?OrK_(E z$@S?5+dGK^&trJ+FYNJ(oihH!{F2&e*t-E3(U4%>2$8>syZhox; z#j`&jo89lKa-j};W$&7z#_zMP?8t{Nu{7M&nA%f4i)nD4Om1{~Z3R(#_pu?-tYbGF zS=5?Vw-?nqn%C84F1D)n{BaQ@&C;UP2@e0(ZS}0Xl?17Vhg2tUS6t~8VAh|yG)=%G zp_W?L$agud?Ps&^_>v$#*gXDZ6uWpCX>9%lifh9KprLCbMI}|$|E$);bj{4zEO^?h zRcp^xu?EhpwyR0(%E%{z)q7IBXagj%glkCxLT>{HFOzS7&@bV>FtqkGsb)m$!an+h z#u(Bv4_zf;px}QBwFI$Q(cW*EC?Fgd9lrSmrHioo;-}XH?<@yVhY7OiCp;=v&>_}Y zy!aJ*k#nI}Bdai+Q1-L&TqaWe z8ZvIp?4j8N(}{jIFog!elc@WfLC~fl=>DGL1H3AU$~EeV^_?8?q5RvLx%o>rBH1pt zTu@^siqkVn7kf|7$LLAIYK?x4%_+i5E8jHfjHK%(S??IXPLulShp#G_F}Cl=eHira z$7%k=R&3A5#EvJrDbM-VtlA4YY3ly#qp$U)LgQ_}ekXs`cFs6-E6F)%lE*rKsbsar zTG}a<5F7hSnP+h&w%(w)Q7}tYt{(>tdqL}1Z@hO6EZ{LP^CRWFq^tdQ5_9Mlp(r=z z$$h8;Np5qmRoG`x!bhsL*VjgaFwWzjgO9)JR1gy&a+_*&IJ>3SzGVSi`EhgNH4DG# zKKTr6ZdQPJFiXCxOMPMGVkX33^EJVT=Dv04qLx$6raa6gb^MZ^+C;kUuR@7Q+wPL- z)yg1S;uUkTIxqhQNW;uU+NW0^?l8=27B5-(w=dC)yG@?WGkm>;bMpiN0be^ExLNMj z7t-qPlDb=Fw(57uDVSQ4VQbs?eieI}WGvDTnJ@C3F|1b7wWl~`)xJt}74eA)Jd>-{ z*53EMXx~AyU?)+p8}&wsO;b~K18!^5o{bj;_g+3lq58+*agwlttnAxVCMfEAZMN>y zj>wE$hcOoJ+t$}De8hL2d}raV0%5`<4QZCqSb#F8K9GE_`%s`RpLe>5_)yhCXOy55 zy5)FpbBBTK+Ow(n$(c$6RkLUM(Wbx1vD!HQN0l)Z7m7!4;eNq*#3i){SQ~}0(Sd(M zNNK+U*KbL=No4kEIinWSy=2DQ1GKlTjZCe{qVY2d$auB1?_z<9H>y%&8rxTX7Kx9# zJWH~M8&lPjH}P)blCED?49toJ1*PljQ0w`x$J654eHwSsw|~!Fb!rq|SNY_=Clj|< zEx=l3+;#?@l$6vnT4rqQIFA9iSY>fbOKm1xAxUIsW@O}|;YZBu(xRv7Pv0$3n|`nQ zrDvXcj=RoE^93{Z5(`kA#)X}jd@gx$599u#$EqCC4E2ucIF?-rux?A%5g!Jufq%gb%x-Ckrqze*ddU z2i5C4)V}zTGw@)=BxDU(N43z?zBr6jKzbArLg>|Z6VP9dPeZN~a!PfMZaZSZPP2=Qxz$li%aaHE_4y*2X zYrk0B{xa3iQN6TBIjM7B9DfD4*D6~F320uc*de#Bt}V^Ve5T5ZTTY32l>J$hyuK|7 zYp8pkRh=5l!raJ5+SK^~*nn8_+h;^Xh|TQ3$ay>36r9~gV9ecp<6Gk+S9 zosC}=ab1ySK)C1^6FYtgE~HjiKY5+%ZAuvTM$+wfCB3FVjejf$Eo5chMH)K=fVvYlP%rS1J}J{NiBsyONW%0>@NEqqvA6_!{iHmJJEJm^Cr&aU<8 zKC9LpU4#hXStt@#a-=0%I0?4M2KMYAtypN<<5gDI*uOR+jSwx`l?VCwD*{z^1G(spe6 zG%9vK%Rlqv%E1WyEm53 zpF|+bLHbZc*=(ELdpbG95g%w`0W}}lG1sRKqU4MBdFX0`rfDydN+VwivG{DQVpm(n zlfMQvo<4>8$NU-HjQyRDr?eLb_@Zg!<#62l_aEd}UQz z$ELgUL@_qsL8ouDm&>FdcWOzCh@);-lq7dxX_!OChzjp(A-kHWFvG_M`6%3&&t9zt z#$s$wy(f-TNH`sSVV+ph(YCGMXIA?rr<~;m)$N(sycch6d8QaK8;-G|^ zIITs0Q8-W9F_o*+WA3rk8f^i2;Q2AZbm_l*Rs5n;+;it?Qx=nJ36_P^w7-6Je~+WO zPp{HEL*G>bbSlpVmwoD+)|?BzyK1YixYzg(oL;#0LNpxVke4M_2Eak&9S_sJ`Jp)O zJs~gr#V2f7Niw-HZD&9R(K)P|ePM#}eu_OB8GLo*`h5ZVtj_T0pulG; zyvmKQI_lL|Z)aQY&Z}b2ohC)2|p>7H+(Iae*wG2m4o=I^tISAAR%%eohLDi#l! zTF%J`vhE@3zL!&)X=@cir|ieIR*T0mIi}S%yplU>Hr(85yKPjn?%@B+oXVY8$&)u; zGV3A0>p6z~^lEf~PeY?l0zDuyYjeh&;~{b0MP>z7Yv7}`n{WS<&!8IOVJEh#JM$1G z&}M9rGZR|V=s%TTP@qVGQW0I1evp%6FBl;Td#w!shjTWymi}pp%duygEs1--iLF_& z=NO_IKl;7Y@WXpJzN+j!6=q>PT|!^g+n@bu&l%@Vb8bI3*DDHjtdX;aU(44y{}{24 z!=-1@f8DR_$!MB?{ySWmGnx5wXpLBowVmN+&-B!_#Cc7O4wa8a(Mq3fQAyZ*rho6! zymiM_&i{+LFOP?^58v&rq*rM}DoM-RW=Sd}%cPP@k~H=$vNLEf_9~$KIflv&hK-4`bT5tdFFYZ@BO{+>%Ok* zhKo|N1*~AilCsiLW{oDP2olik$(w|TW*E&@E7Yfcck)5YBY0L@Y`psWWw{Zb2gyx_ z5ZF3P_kT2?H`}6bdThy+ z_rNxEI48=)7d=&r)e6CWD@XifAF@^)Cx=x9d;8glkoz~Aa7KvCZ4gGUindwZhG4lj zF#dOmN=b0v&gG%}v}Mr7-|d2`54-;uCeEEaXDU^`K1|yzEGvt-I1^*Y$>a4asmsN6^L4Y z{@ObvjAr0Lcf9fExgU!H7oVALdM0HaE|OajQcHvJv#-0KS>JoF^X}3-M(169pz#N< zkXD1f4mo7V+wT?izdZfK!yZkU!0N@og&PuF6ef2Z{vnXFEq^DX%QQ-)n)KzGF;uUDlcIgkF3$T;g>_k-sSd z)xr;I8Zyn5E)y4eTRa?mwsK>5pCb4B6@L8ApRmZMJVw@sL}kiow^M5Juvrb(5F0lP zo9bfe{!ds}jYmrcPhUHmqBDd#P~l}DDL+`(#i#D}E%YwCJ&HkM?wI(OAmtXPiBZE{ zJPQQFepY5{npdL5R(E0!GrGp@nDBA`a{m|Wp>#1+rUNSQ`bteKgWb1p`a!zBO zcS+&)EJ-qZD3g~U9SKk97i3L}a$YJgTMOU(P;|>mIm~&|&rFi|gZ~<>juo8mAiI9LW>x2Pa$-<}(UT7;hv09Mh^cDggm|aCaH^pC zhM|lFm-8~d*(A+-db98V4F1aQxoMr`t6718RvWL&}21;i^-`gVL?Oza{ROx7R+atTO!GvEt=(@3TF_PsdICwkPl@ z-r?s0{F#3~`R&-p5d)vN{Za>d@GDrZr$_2#90sjUf2f`9k!$fRM;!O-|7bcEx@H5?4%kEDWeSRMXkMO^PENd@POmVr24kgu| z8ToT&>Kmyo!p5YnuP~uufQ_mP*Ql4HR*ZN=EcPyXK%=WwW2FtDtm|hTTh7mnw?ba; zq}F?FOQ*;dDRkGLB@cTP5a-_de`?Fr;I~y$A@6|f>rLIe$~W6VRSxk$*5!tD6ZPPt z?cwtM6TUN@33(&8^iP{@OC!HpNF6V>F~uGUK5m;b_x5#(v$-EcfD_lRk0mkcd?T5i zg@XpEa8iL`G&Z~=EGPF+v4EwhTxLm(nYohl2oM=1yj2EjiQZ+h+ zTGF6sRiXGkbn!vg;9!u^noHyCesJOE<}-NwejPc2JkW|9 zpP^m}E2cOKETdX36ytmEn7>x|SE+Gcf*Ijqo;JrY-7(n?T^KJ;8s*V9d2Gr0(3{=` zs-o!zJi7>;alDsW9YP4j2HiYO{6;*cq&0up1?x9OLKQDY8;nN#$HxksPAezjZy}3L zkpBIuAVtgiu`JojA<~QCd@!@BTX@*ww7piWdu;J zu%SI&>eZ_8|jnBP6EB=9X|N^asE%Kc~~^3^>dTg(2_al`wN$`@YiXpT`OX1X^K!e~@kZeEMWIDg72 zbAhB4EV$?}fq%z$nLS_!J1@uII!j(BHuKwVGguiERKTZ<0;)`rCj#H84PcCLg=6?= z>3Sp0yblB0iSGp@hocfj;tJJDzCoA`eiQ_0PCHzKiW3n1@mL$CW z^DP^qnDfbMi`^<5fftblrb8MI5YgneXt+n05n_N9#(L7u^$ckBe)53(wREUH7a#`p zB&|@Gox{!9=QLP`BwsB8nPv?*{QzS$d<#^LdscNm7l{BXF$RuY{PFMYp(P8WfoU@3 z?j{$PYs2SCw9|VNv(LIye`M4MPYY`7Mc9@~N!Vl3FM!Ou}ostu8SE7jHX6o|PPWI5@1RK;t zyOlI>H89T}5MDW2rd30>+^(2QL;6<*TEhp-PP>tC1XUuWQU({J%{DzwKf)Sly6xIg zSM31R>IJgj5pe9Y+GnQ_4b}YmaoC=TC+#4FPno-9l@)>uk?4Vnp-di{NKra=XHk3mD!2= zs`Iy3AgN6qGLdY;)#WofiSr^2!`f$eacX9MJ`OC>%qsI&j)XBmKH>+UUf9i%=#L2vq||_ z_5$Hqmii`2ar=_VaQLiVR0s^Yw1hJrH}G*#l!wi>;n_^dU{f(qydmMFdgmXgxA!tpo$Rcu1v3&m)m&e~)cSf6~m6 z3!mg}0;!0DI&5GwZS~$~0*96Md|=TRep_KuY0nOkq43X2untOp?=H{teS0}LF?+u6 z99zJgCG29U-zQJ0HiWrALB5JJOG1Vr2R1c^2a;a_(V}kVI&$4{5pH4Fe#$Uf0MyTJ?rID88!P}-g6nLNhghK8V;2h0F?`Fyw-PH)5wB0&P% zW+Zd>z6-o>^#@C5^{%R5#x_yXg2oCV0sY+HlOEQNupK9p!i@Z2T>kn;7CdAZ;jRX= z7;lbjf6jwF4T3$eo0)ivRChE(+PB-FpZAje#hm#5V*g%8x#gh~>rnU4!@lQ?V@8V&X)al&pz|REQ@iF**TIH(!`Ir+3M6sAyg2 z5B6Atsvg7&0fT#(XsJ1U`rK$fnh;}Om#fqFiiF&UeLJNpN55{k8#L*MpuWQ++)<$+qrwc1awbLR!+YGKo6kr6;AJg*?v7?N)lL z9uVs?;o!|X{pfj_WbeH%^UBiO7jM5{XPmWTwj_zt6|kYacwYI=cgR(F;ktE)R^U2# z%W+0;UW5Qwl*mevNL3g9wFq57_4mw`Oc3fpqoZAj?a%;zepS1Q7tSqnExR05+plFT zW1U|AK+)XfX%2mRGRUoy(l1o`0?o`FcniYFFCk}`R6IyT36sVFAMxRO-~C<+`YV1GeW1M_v(ZOegxJ! zk!xS*^Y)co`NQ(n22ZfMTaily{P^6tg+c3;0)LHBxwryq z$Q)#_%#W^KVNZ;5a2r zvS*hvdEviZv(`|hq^qN&V!~wE{PK*di7-{xsrtOtV(Ir{p0^6shQLt>X%#XU(@HQ_5Luf zH^mO(C`7d{(2C1Y?nZA4Wb|K~Icwe1vE}0WX89Vx9o8dpGD9WX7 zxt2R#=*;NIat4IoPG4j=Sct0+E=7N(yW)0}eD3QK^9BAH`a(&^61fC|@5E}f^ftB4X1YB)}R zpXa$}Zxlyx!62)+=22F#F%KRy3Q&Do){_G_tc?V}oOKe);fdLuBO{X<#O%OYVO?{ ztXiR{=g|~!`pOO|Y2X1T$p|c}y;rrdju;xjre`1rYiGY1MDxPO3*HT1v{UmQOf~n8 zTyn_>Q$wkl%`GO`g}bGPPJaoEWjEn5@oT$PCT}HFoQkyu(o8$SU}(jIlD)W}sxzRl zxF(L1+b1wGX6}L-nAsMb4l(jp1-om9Ti}E!<-!xomrJB7LX`+;U zNbcCX9F?fPgoG~viomivh9o~US6p~;AWlJRULjjXMkdE)$jpp4YdsN!6T?ZFlO5wB zfM|S`QqN{o>3dD`|quWp|cX24UQ-=!1EL45N8?e zsZnvk*Ap@73_qURqYrZM!&(Q<^TrxMx=s%72c-xo(w;8`Ii$&5%P7#;8DFQy{L%>8 zead9@<0^SWgWARYg;gUGq&&0r)WS@%se;179HG0CY)jpa<4p8P#23g_;!V4~twzK? zdL?`I$v?pAPhDm!zTZeu#xFex^#rE&ohs13$&RSMNTs2uGBlW9Papx;aM#o9-_B>h z&-)Wdu*D{<@18`9AB4*CyXpAo^`3Jd=6UuI4FM_IKO9)u2cJFAWgTMOP@z5O#|(Ce zwX4SA>1CB%E_wLvXy}Ek61cpKj?RYcv5F6RcIPm7pO_0qilCD0ZWIgPATt3nq zyQMi7Ou;SCt?Wm9$BOx2!-ct^ievMYfr`WIWAQ*e9vffyo{V?iZ4m+Uy5tt$ciZY- zt+uljCf~aXxlLrQzxBb`w_N9MZ?AVYCrkr*U?a(FVX_$h8}aayTZ!_yKSU`h@tCc& z1u)!P^ija6aHk5;N6-8iqoP8LX4)P^Bs-~|>*!;YX1qm; zGr;)($~cpc`+*-z zOkDMkN=A6k<$>j!^}rW&BPrm2a#p-{&n>itrSSg5OB2F8{X7lh51b$!!xQ$jNcqWW zBMUD1uzdB3Fw3 zPfzbjAu!mo1}Rm9Pau2#dR|?Qc6v_iVV1c{1RIyv-#90kSHtYxZ~2e#imB87QZMYz zOUyB?Pw8q^8j+yaCv_iadR#74mNt*(CfUX`^E0i`HzxXpxjyp(e7G?>kcEO4MocN* zko7Cnj@Cw6Zf65mujY~8@jG`deuJ961r_iYO`$44J=fFIZF4haE@~rXoG_7YB3VWD z^*TKkSFOtt_JJLxq__Qr8T;nHWVlaBq^g3B1+x=G;4uxR3N?pH3{v#+L@50azip}o zmevip_H*j$1P`Hc=W`e1@k|~ODS-P;G)dcSZC8L5Ph%orVWw>cZkp+#sYH)}z82Z2$mn?i>#MLv zfmdRwY6hIPIQb^*^;}KoKA+w@nM~rzO)@{_LxB;1;d9{POCWI~*}zq-$x-N9?D{Fp`X6^hDFJ8O!Q6-QRY~*n^Ngyxa5G&H2+BsPK|B*{UMn0` z*8-6Th=Sj@CuS^9bDRg`l-q`als7syiQxb)zr8)}8K7f<3TYF(yM|ZXCATFw##^)g z*h1@rVzBBmU5izK+tm4qdcUzd)@@4R9ZJ9&`6&Sc&gVpOg`>O6doOZD{;qz?ug(j8 zjN7%Q_ol$EH>@J^S(pWE*PeY*4a`DIdZFW)E z&Tn{Nd>$QpNXi~;3c`?$7I*^wj#a`BcJ&hThDFbY0_Hso+fwVn zHmZTLo+nv^%uiew@AcQQvEtC$5eh{$??LkE8XJ}%V&d*8NRuH0J${PSPhJ?q+3_r?=C)FX&j{M|0uPL@x+)rwRfkUMz9C} zq)D1s>09~S+&%H;&1Q7Z@qrA-0tZ~)RCZrTu!kR2AH_*&5vNCn6SW`pKiIDo*fBxH zQwMPV3VSAR&T4qLw*vF6><^sTu`b_~_|S8zs;_~cjs7E{ocxR(zFYEkh6cRZv+w;; z9KO7MWHm=Sp}q2$PJtZYDGCc1L~iZf`{VNuQ@jnbV~_H&tADjFW~B=StK!$ejTz`0 zaO9dc>f!Ja;a!rk5uuDT>i`yIFT47Vhu;paya0Bg6a;;_NlS;8A;eyvoEYe(B`V(x zYJ6_NuXl5;-(9qNyVuY|j#-F`O%IZdO%l<{fA0OFo6C(wTJl0S} zB=&KKw>aD2_1h}(iwPPtZQ1q*eDDR7%HzQqB%S$^zWHzK;6Ge z*Q&vKsd%i4;(h@(%JGbu^WFjOz{8I#?S$A%T58;+=-c10+=I~U&%isZeAWzfLp3=I z7*y?EVd$M)iYzij;|_Ad^)$iV+bz2OL!V&WF6S$P7dlI|B>U7J zHg}X_QV$BBim25BF6toTYUxhDCoxiIPX2s9BlTi&1k`j&?D9&&BsY3*SHu+0W~AU% zXA*S&tYuQA*Pk>?P0{*Yt(?(d(Di+e)sVlg91d6!=fInGY& zzOcIzQ2itHG+o!E=*3uTw#d{{sMT&QSN8zcIbk!nKWV|S3ZL&4JvetcBW&Mu3b8w6 zV0%7VNcQsbXy-z-VYk}TcVdGJGy^~E&(JyQ8wcP55szp8+DfTwDA@wajm(C9}DHmIlYSWlm0Hc zh|#5DKt8o;@b%@TOomOe>}$=JHwhQSiLI+4c%>5kUo~y4NdOIM{af`@t4CS-IblEK z_^E^xtICuSG53?jg3{@6Fft*!R6F6z^7i5gSIvqs#@C@>S;U2#!cgf(@tOIdUYu;^ zBKRVVlQ?gRx1+)3l4c0R$GJq&Kq z1{a8vup`wvaAt7-d6~!SShB2Wx;*F_Nx*w$ZQtxMgT9xwg1cTHuBI*uG`u0DgQ2*k zHbz-{pIU=8ib%QY05F;6JB^t|R2zwz?>Y z>J#-zd*3gNGPJwT0ft8vbsfbcZupTHmbTx#j=esd1x-S(sNNDk3_YP9jhhc4$gf&qsP;5vt~ zeq>+k%yfpsn%?IhpH8c&a20e$kL2*Q)tvsR4yXB*cT(9ESJhG~AtCRGYyv+UZ9|jor#{Qy-g*62J=Z^@1XVGO$Ke zsPINulG7ddGD7lA=INF2oYV{&gss9ro{7Zf4xLtdo>InoW{)}XFMN3kG<~M_iR81B zBMdpI+r^jP1x^Ste(M=wo$sTa)QneZ;WL*&?kMJ4gJU<8rESy{xqYG^5F#U(=HB7_ zn>)twD)iTl`=bg1Ze|rAw?)+j)K0#GJd0;mD-6xknS1va49X1@R?XNZPhXR4<}#i1 zKtlv~iCPCbYte|Ku@RogwDo}^V*=|8{4IgU0Dj|4QG2l8?;c%Ab1-Q4z1`Fso+2A| z0ErGi#(nU`&ZDQd_YD}9*a*Cbq+3rWIz-((?h=-O08Rk~;Zpd8vv>y0L|4t#+k{{vGtq?d$S! zBs;Tw?a6wnG!ssL=bOQRt6A>>=V8=9!clC*YkBIN`;(XRGZXD02YHaC4A;TtW!}3+ z=loM5MbZA$Wvlm-kqr%6W|kr18T`E`PjCn~Ms0yvg@XvCqUV_)j_de82E|kLbE7Sh zzZ7F53=ovTE~`k5YRR*Vd16`%0NEq3|EMxdGsiPDV^OVqY}6gSQl#LV5ps%r<>+E; z;^Tu$&<|)0;YK*TkWH~Wx`Ig?m%K4eU=drI#Bp1~ICl%uhdgSU zM$t(*%?s`X9|v0biIQ^qHD=hvV>E7Zx-=(SoW1nnoDxH)&fZoF^K0g_v|~=d7It2U zm0$qh5<%=avl8h;!NxS|s^pC=@PaQ{*TTsc$y&2C)^44&| z0se$E2!6y?0L$oX9*&Xq^N7226S_g+sVM_faey7f_v!w+&oAC?=AMIq0iD#7DyJ7i z_0ZanLHqK8ZEGgExYe|&IKnNA23ldYT|81))reS?DnWamG!`#Hnx$?q9)(*vRmjit z=LGvZiDPNiM19@j{uoBGIId=fEencWm3eBH;H=mz_Rw1$JnDng{&yl2?t>3Dh2uzQ zMMnLD)*@xQ-Dw5{zJE3m9dINY<+HC~0`3#2u& zc*&!s4h)HaRbEZeA4gI~P+#NXJRHBA`bZ_miu)eSeeq3><94=L#-%V~1Q#a*TYQ8< zVf?KdlF1I2pr6GGSb*C3zdw6s2j4{Ym&$cK1=%cNAR_(61d4Hy;(rn()9@ zaY!KoYiMictW5o!u@5?0Ps(iy7tT|z@ z(dow0v<-IAwDFm8ilh}w=3wq(xP)xkW{KTZjJ-B3;!PE zmhi3V_VY|~n5mmrNX*n)wzYyQ+gP{Ew_X3+Nz9Al8}*P~wO&WoOs_b^I_tho*LLlg z9_LF9MVjDlSv_*F%qR8t{z!RS7-z#|=}l4hr++ zR)0dz@JCr>z&E@o{o0myN+KUfu*W~1fmZXO(&bjkX)cq`JaLnwfG>16(o?dSr2;;= z8|PJT_La%Ythts3U(U1jb-)M-dzX~44yx%1uWUrs}4W%pHEoM@c70Z~9pF;a}{H`*+PULlT9xy9*3eiG;C5it8 zrB_`t>wDX?d&&qA_xZCYHqQ~B0l@}3x4Tp5MHFqG@ZJ^Yqk}n|v>{__ zZ16u!b_3YXtFI(ZV`?*S- z8{Sv#;B#2fBw-8?Iu4@}Z7tLwDwz5X%XfzB!2_8WKrBSrAZn9!E9D>coVDt~i*-wN z$SclnxC}kR^Jv}a*iJ%(Xmj1^zCXio7gz%hF+d0W*KgQ zWBWRSk@X9@m1+(K2AnTB6d5O*TafLvUQvM|usm-s&S}Xnb7ud4wW8KPe8?T{`f@Yrw*wCgKbq7@y#mB z8{^_ZOxfq>9J<{a24py6^x+Crr?y(!cHRWtKwi;eoL8{PIFFciufpLCM zYj|dwf#n_rupaOc{qJJjwYMW}vhGeX?Q#^t1LfTbKZr6Q1q7%Edv1I5h02 z;OAV%U(L5{PQh9tL#{WxU2m-JdG}f>G0#^F&Ck?|B`fq%{{H4=HT)jh7vAA@c_Oqr z?B%nQK#qjm)-vdlC^i=Qz2X3BcLn;erMt&4v*2B|CLW~vfdOfK^Hk)mBITdjK79z{ zy;1```|pD!Y{DLfD42_r3&?mQQ;{tnbtw{7 zCsQ$Q4asQ!Di^M>QtuGg_K-yx$$+NE1OTYs+;4Ui9b${k_aQu!@}r~fm|o+3XV`5b zED?p*&-m$>_cWucIYxlHw2**XtO`ETci`f;^}*QAUvvvtN80?+N7N9Tdu5vJxLmBs zloXe3!3_<^dr{xDP`6?fY{Fh=%6nHH4}22}ls##2^@_g;e7phd;v~3s38CI%IGb@} z&rhczt+Un8^lULJY}@&o&;kuW!@b+%K^O?HcS%x;jxY538)^GR%8$%Ec~`q8^tyCn zVv(E=Q28jGTv90|W&!sgvU4_jsDbhQi-lbiLDCjC(_=@DJ9%PThSQxkj2!36iCJ(N zGp)jk_@(XE#aapZ(})78XH?wLwgw|e9EoAD2U)wPTa4B^92HIf`R!P)yZA`4Lf$1% z%)x5x?7L-8Y+0cWFf>-%AE%IApM)I@?48d|rZCWH&M>EYbLrkszgu*mzuIc%{pyy5 zN5Zh*dg$V$KLb$dy}%}*BF-QhBId9EFkl%SU8M=Z2$6%ZS8 z+f?{5>~fv4-gXn2NRJp9KZVpe0xxzEs+Dd!#j-tueo|T7fgmE5hO=BFui}RXzCzQ` z9p+&lMTsGY<_xytW#fS`jT~mSRARe(^7YH}#P(M*!=<7sjNMVOVptps1GN&9d6+wA zYkI<&KzV3#r~rW9(G@~npT~w9veYGO?tyij8%Eo4J%XliixMP**QpYsj5436d%U_B zqU>%p9FNHB;Cyh3WQVFr_dJ%Dm63Y(?9RWKF1cTMLt1(-R2jXRS$LPJH|VkDW+8Xw_tnJ+xhWsdVE0ea z&Bx~yxRY;~NxPVmC>)&Mwu6#sMfV}xP4FN{TH+jG9YPMEN}hc$<=^+Exrg>}AfL9= zuRs13el4ST9M`4GdtM$ZUN%ks*xJtxI!#EZPVwKwc(a8L~$+Eflvj$IC4#2XH^s58R-X&Jj_mSRuweZ8)_6JmDy zsROJ744iDHwYN<^OUw8Ms-)&0rY;TC6)jNyz8<+(XP@nEr2B4YXF^?uN8XGSn-n`~ zvPCIsJD^XkP!)eIGRAZ(?}lnj5$JdXVu=blpLmja zwMZyf{ReZ_ECax(qWkL59YJaL0k1T zBi_?Z;xfltP^NIj5gs<28l3o~JxYcqq!9I+`?ikDp^l>elT{1XBTW{6V62ByWSOEbH>_&fYO;Fm+f3(J%@ z-!=54t3v58*`E;7CF%w{fT8^K8majZrXfu{}+Z!2XwPd zK8Sz(&^f0kX@!XjtExe5K=Kueir)>jiML+izv?;j$-6VFS2iF`PSF4pdzhcetNs!e zsS&;ah)L*raAbiEyv&IJ}z?NKbAi&0e*)~)rt5u_kdORQEz*DjUs?}+H`HS))iY)Os zBk>YdyHd24#@r$bEoEx|nyf^rRr|j7dYv7_-HSSo>&Gvkjh1?kig8%Hm-Fd0lkqnJ zN4fmgBzoCX)l9~jOTWDw$aw<@pnI@?{~`d1P#D*7&pdx0_Cm)LIX2eVzgX5_%Xz8v zJ{7Oj{2L^Yz0+nRf`siz^ow3Ebar?r%%?E@mLWpy@LrLuy_UqY zy=3`0wOL%oquB12_);STtXd&E$D?ukN&fs!w?BMNf!f6alOGLhBcaE2;>DTfSb@dJ{-!ndH@NHq(|JmX~yM?ScwT_lm_(9Kl^x+ZnD` z_0bpmz-NOQUb-Ar3UXknfs9L6K*FJZ^Co$LnA^Ko?0(n!Yja|iGk5EXzWO5La(Sj9 zV#`aE+=r%0`b)~f z{pkUHRP0lieOegN|ByDC88w>QV=N-fUsTZ9c292jRG`}-8XNa0x6fw_hNk{?}r2U$%o zC6?=0&3KKwS82e>@W?SqqJ39|QWdu~8|d{+b1z+=EQOff6u_^Kcwa~vwK>iZy88$3 zUhNnf{6Kx|6cXtHg4z0VoKJi3X)#m2_nj)Ls?L1*a!C%P=1{7fpB3s2CCEKT0}!Dl z!+9gsC-!Um7HHuJXH}1%K`Z@>D(cyEImH47$VdI>rYCxCbPc|&dE!%=@6Gu!Uf1a_ z<>_(cCM6zHtO=?(!mRb&Hb$5$4%&b5?F)pFBkBgJtaD!!KOspWd-o}j7hH0L>MC@Q z;62j&aOsfZ?|$AmJAPQTG^s`otFC?=l>>cQxO<0L0BEVltoOhksD2NxaVyf=JL}W_ z1hcnNcR_$;VTq@hwenV^I|=VG=wG+J6ve8;y`ezpvZM$_v*Hm~59P^c_Yf@-2<~3P zL|>^9?GslF3=JjC^*M|D=T4qcc~-x0G(~q)!$){ z$-ta5<4iu2cZt-Xl#CMjIff^J#%GQY*X(7`4PRuZv6m~ZVdi(+bY6`Cq8YR&Llhjh zCH*q%ba!|oEcs-$5oSU*$A#JG<{{M7ObEOVaUK2ARYCd+At9sR{L+J zOqJQd3sWhA;PDgpnjgg{uQcd#6qGjs;GJBE+cCdi;5%n+TE(W-a5LXo@uEpLAyso>T|-7a=r4&}tCO@c(ptCtbKp)OYKd3g^x@gqAe(pFVn`KbB> zRvgpimVQr-MFF)ENR+y+CIWWi<+^f~#za|n88j-;BP`5krROJ{oelI>>gzI-yDwWQ z{ndS}Np7{7w?^C(-ZAjA_L#4A{W4uvn?kFv{hxi2p}Pe~2vcv=0?e70?{t=9$Evz^ zwvJr~d_6hpqzpX$&t|#%fUDF*yejM=wXU5KTOT}C+OE1BVN+%K!p}(uz!7RlP5=4w zB_w`wu9FzP^Eu?Ryt3I};fW)p&^@g$fvJd4Ka|@K2x_NSCzY&QSiO6O9btGNe?Cw@ zG1sU?deNjTx;EkFVaC3dEMg;tqwt%}IcvIhuW)roA#hIngK^bfeYZKfdz zqmO4Av@L}^*crWyhP29e4-6cZYA#b79aG{k&*RN{(r*ZPI})iisQLR2?M+;GLn=4L z-`S~8>#X}|4J~1>QF44zJq$Fp-P>)^TWMc~3}(9Lq^mkO|7;gj?-_~St!I z%q~4@v?NVEdlIo&5BLGWwp$QJ>X(z2+G>H8-+30rX|1Fp+09ymkHA>PGSJF42fU5b zs{(~}B_KT>XX$c)+(FmQ*~~>7XJzUA#^spcl=(=opoJ>R#5q!aVkp-4 zT3Nee%|JUM6|W?u-+^IB9?>%>1XdGc-ya9;2&|^~0Mb6%><;p}RFaU_uTlw41CVO| zq7_oBH8J5Vb``gpN8j;#QQg;Ff!~7xe&zQ}J{fO*wtGKjFs1B4<#!?R=?ocN-}^Wv z;HHds|A@Qqu&G(RwaR(lwgMT*vrBMeDjUeiB}Rn3soGwkhd=2}XvPQ*sssS}Od}u1 z*6W~v?iJu7JtOl|Gtf76M4?`}=-5>C-2x1KINikS(ts*#b9(&pK92H~C4^BQFypSJ7Q{auU22jP zzlq~P0pk;w_uCk6_g!97A6^s&4!~dEhLdvOg=L1J7L=U)Idz+HB)|_dM-JbqK3UlR z`aI3lrsdTLGHuUfjLs7qrYL1a{bD4BtLguIuI&l6c30}!TKc@|EHj{6>7P3l@w&|G zlH@^Nieik~F`zCrIHX&NLbH-D1tJuc7%-UEjn>ztPS)M(WPwFSHJTsb5NjoJ>PUT< z0?LQz1O#7G{TXK%FxUD-^BMLMek0r(ft+rLB{HSv)658nYH>sNCQ*OE330MAg(#HRnxRQxHwZ5Jq;L3{dED;%v^doH=y^cZ`;$OtMF zLC+VnriXdXD(AGxu%^HX>|VBT+wjG@u9x4YLIrK|^76r(tp#`smt$y|15hOW0^kyc zy8?o>gvl=!ac%DrMhBs6jnkE(_s84O$BDyn*DZSD0?}#3C5x}IDQ zu&y)*c@OmU1X2ysAvDtYXoRCamCRjseOJ-jT%T{x!M`_ z0@8>_97^xPOcvXe^9lno>^7vgAI0T3zb5G3*CU<0(Kx`g_)P-*9I+}#N8!(jS zKRg>7(cVns4&j>q@m{fA@bMmg(g3O{<3MIHAW{>{+5t06ysJy{2*WhPd$~5vn8Bu& zrPf*QZS`*hNRESmmZJc=k~`J{SmvG;T;o=Mkh^2;ywGQ;hkVNGmW5DioMa&=3p7nbMbSOuWkbvQc&FW<_W8iE>XZ!xm;@ z&{*`*oq6uBt|8-!F$KrOnEvr%c>dHKW4Ren{WuG?HD@o}se_0;;R|RSO_4saFVHLu z=SO4i131vX*$b_H!B2m@1Cp((^eOAjG@M8G87B}2X<&-enc{k`yI(Q4^#Yq%IeXUn{r&6Z zkMj6sm_nCA+Yxew*OuP3M|V}RmDF5rnA3{iwpjBWJoYOD!$y@c-WYKgGkm6#3Z(k` zmMc7MeYDdE?Lncf5Pe-7-jvYwkquII5%}mUr^sE%a1itw`n?FGx8bKezCM0w95`8A zCb^Hi!)zsQJGn`nAy}FrN|4GQ1EzA+H-V)E&JT2!f~T6K4ILdFORj?1iLEn4h+NT2 zs$jm-nbnVN*k{+9$s6w}bQX^0oKw`^f{fLgYLsZOUK5url-=Ef0m2XDKx?wf5%c50 zG{J?{Z}#)*O1|Q@0J1({d=^iCFxQ;WctIV^8cFq%*u})0v)xSl2~;S;oE-iQNC2<> z3M~T3Vd9em!JomX^RGfh7LZge>4%1X{r6-8khKR`|0qZOi)Ht@WW>fRv;r{WQonfo z@^lhD8Q56sKf<*;#uwrS?3iD7`4w8$fw_xQOG&oDC&e81?=aKrT-0e|he z9g>e-oNiHWdu61vx0tsu5+CWW#;6cdXKaizy0p{1MKo8x2?#w$82``YCgH#;{1DvV z-(M>Lto#$HSVu5peJWYT)MEm0v!hk88%ybP8$8qxnlYFa=QVtXuj~&{FrS|!B^+g# ze(_ctS2(k!3_N%PKVu2e? zh66#e3fKayeBp~1R&x9Q8`_h{2_L3SHc}j$pa0p62a2!2Pzug}3XH;vClCm+GSWpR zDLXWEz$~-IA;(CmahnTKClbTj8+Zzua=v**kcw|wQP|S z;_4m~Vcmk>bn2Ko1Dvq^X$-Gq#4c=x{(fs!^&{ID9qR$8JD*clo2Y$Zb$>=3@TwYBlnHjR*IC zrXdESNn`aCRnWQy{yWy^=DEybQODJ1^V*uWVL_Ke%Ndhdhx^~CQ(lGT6*6xLRUkY- zHrz8{;?jMoNt;s#S}ejK*4z|VlR$veTBG9?eCA1?Gj$`gedqWA@#NmWESKqPW+hKiRz^m4+H8J1qRWd@-)!xjSB6od< z`Unq%$=Bw@$Myp@cGo)4;jL^9y+<{&q)o4cu8&6Mnu;o>zCSJwzd2>2zciBFcHB$O ztw2~kNJfJ1K3M_5#5ikWzPg5lk}x(lk6QurO2_`g!$x0n3OD+A`sUuxU?UiTCnY6; z#RxVGtx2G!+}5mwy`Im-16)5MLWoddhFT-t6i+j4c8@;e?pR(7AE8 z4^V|TkHtwJVI)2(%ea+lCS%Xms%{Y4j|^8;fr-l!ObJK#ng_WmeLNhRUtxjs4!C;~ zV<=BiX`$>lmJ9`A$pSZ_V{)_fGJ%Bs`a%1TBKfU~3s|Ng4ZIFB-Ygy;8?dsE43 zF|(xpb>_e(_`vg;iP}dSL^nAmqP_tE=?~X*L1i7EK;87K02{+|smaRgU9`Kw(3-FP zt*ZU+F0xftiJT&2d33T36!&i$W^6Y%1B2I$s=EhLHKl=Q{tpv5aaultWA_fSdsdPP zFtlH!4J_T|$?@z9rsUzbpWj&p;G8?C(NMH{AFEXw(dgG?9W(t-RQM z$~HJjS+j%M_dfm|I03e%KQUt_x!AO2AQwz|Carw6t{DpE8h6c<%}AcEk?|g{SCE&_ zZd386vM+dj7}H5fOiW}{wNKhw{YEZstQl{8-sjgcYnT%`bUq1CF3%w8{|+rpw>DCb z3V<{c(D06OA0zSrS1!9vnm5l%IiDxyg+yO+B72iD@C`6yy(;`IVDOm#dI4L~MWY_vPOp-kL7M;FCAs7$AJfBPK>L$U*6- zuKqoD{;1HN|NI%KAjgRTtpJnQ%T8~>WB!G*&V5R%J79L-h;shxU4Y9C5QH8B{*^Fw z{S-qk$MfW7vtn;NI@;;-9R)MF3AQEH9U3Y=_vzM_R48krxD2E*yU-xyq4$7-Xu%@ZHlpV8q z?}BVig>V1s`nQFxew_Q6R?pT`o-@N1)1>bvzFPh0a@EyW=(fn=pEAe81E%e^aVuXf zmn`FxH&rfHjk?4w5nn}yPqlqHtE>&RxVrX%y(%k5T05?#@+Mr!nGU73UztrS=X-SZ zSGT%74EC3cYv1KBwDbmw_FhKf>ha&sIb_xx-#}UY*ni4xS5If{*WPE3*y&sS4Au@B zymnCLP(%vx%@XOdfYR!PT(EIEAkN{=5RJl-AAMgLKsc|z6hoF8zVs~%h{rhT0XLj< z+`6=USv_5|ONEf-4?o{8m-2ol%E_GzTAU&%%&c6Y|H9sTMm4p4eWOYd3j!9T2N4yN zUPB24M8pE3$D@E$MVjPh| zJnwzpaX-G}ez@a~k+0c%ul1YtH|Jcd=-+3b^rog5neZ@w?|oklVuhl)}o%WMkryqtNL6!7vSB2}G7;m2}XN^ww!Ncbg z$7HY$JrCxZgUieB+62wFbcrZ5s=}CM?U6|9_Fm{t%LXfZzlCmAX9a0K8F_~+a^=|x+HtiLLH4Ob6v*7??hO@lI-JvZ5$` zkewcb6j*?oJ!i(M4(a0vYa_H5w|SQ|-7Rw&_`-R=?ROB9tXKJRF1r}^X3LD4F2N88 z*XOtzJ^BOiq(&B^qKBfjI^RVD@<;2rH_Zfl^_8zW&3{=0ltOL-vNovrN1V$XcBvQ~ zAbys1rRN`T`{9UcrfC6}H@cYZ?n<}F&$ydqd~+bCnH%4vwKn$ zWRD18`^WF(*1pMbYCCanX}0r3Gqj%eHcP4;y){_MrRD)&8y#VJHt%kYSC>$7J=adh z%H!a^OZ6!$jf|nJ$d0*vaI{`7Fu7gDPRN92oHeEdZ5;r{&`<}^-rlVm#%a>w|;eq=p zDX_^PT0%YTO-Ei>kVmfVq#tJ7FZfcL3wbhVXB-y3ltT*zjEr$p$Pm7$1GQ4wdKm#B zK;qjh@HvW>dv6-#vvUzypt=AmE)K5Pcw^%ulsHN(c9B%jR$cM#A@8n!?206>s_8)8 z$d<+MCz(8&M&-@xj~y~*A_Ip^OqV@#S&XiIjU5HxCc8C!G9{;x><0yfZ1JWryw}~y z5Bt2=XK4ttx&GCV8D!UMGf~YEa!%MYU{c+T%UB*xwn{Fdp{FL^j7EEgB{33CcaL1v_|+w2`fw=( zA4*%QT3}?xr*IuuQ(?>>2T+S~2+W2uc$xcg-P^x8BU@2+<26{GvYr!BKI@cbZ5qKW z{#ZW7g+raFHA&Ce2h^}xbi-3-j74YeQBqb6jiJn)IXnZ9)MGR9qpK(BwHyIQ&P(r1 zzt}6S%$ae8GM`=gy#L!hFFPy7?s>+I0oC#scAgn~dz8Jrs!2@>M;(oo{lXH2Mpl-` z(!%CC_aP@Sb0qJ+O{qRPu<8n7ci7$6@llO__;eY z=4q1Hw4L9r+#b$cZ!SM+PJR-gk&Bkazl^y98<_#Z@^my=hmyenjtjBMaFPWqlHk|; zo@VKRu<3B-n%jg{EhwOKb_HCrz~wEw7OOW}zQP9 z99H!+&zm7RQj^X|wGM<5qhrm{3oe=(>X>IF)yY{!GRfuM&-n^w|2;L*FQ?{kzDPg%{5=319loh{>=g=^uFB=s&J; zb=}&FW|1;wA;y;GUGKVDU#)DKti(=$5lnJJ_bR$8=SAi(=V#)rV{GPNBOm7PXX9?1Vo9t+Gj zkw5137oA~UR1BiOhGs3j4(=-6e?HwrH#Bui9o5C(3T*w5-Wjd?45c%d?} zBKQLowxU+GIjF5+%GLN03-Ls6&x}_qk8{?Y3uLvvrC9Zcr?VVu5xwwYa;Ob?!0+CB zJ@C>Mdq>-~w0#F30(>&t#tf;la8cgCbG_07$)%G{(OG%FFudRpZW&Uuzu%2c(c3xq zbU6ex)RynP&ODP?-U9_NT3rFNJk%#Cdmhd8)r|2ldS8)}O`y&H^jSJc{6x_A(~2Jj z6kEZ|fjene8`H(%JCP%m9Qc`PUeI>A6tr>vM^|y;wrPsq_;94hoJ8y`Pdm1s07Wn) z35@d^#Wh8)8uaaNjkBN-Pl^lgXiP53Q>(fIUL5Yd!%UA{9aqT$HFFec&h4{y!+)dp zmyNRTMr6TeJoENrpyh5V#q0yLdZZI@a|ewI19{~%!T%{PinNL5pRPSUZ*zHturolJ zE83+O>Z+ccr|I8J%(I!|NL*qgKtyA)gUr0#6*?qG!U+n~730r;asdOk~={%}J5kSGNBA zHgmM9zlZHFjw`f{c!biRq}qO8z*8?7uD=)jdnp{48NM?c*Dl|*PQ^xg1V2x+6Fz)9 zx-J$6+;T&ha(a*-$o&cLo2LgpOw>q-aLd4~iNHoAj^0kqSK*bV`VH!7hI8LJU94nf z453tTZH-YrdPehI!P$mBgPRw9Sjd--T%DPYlTXj;gG0SmEqt3(cqM%x<;~mI9CG@{ zy~k!#R!kqk`;n8Lc|Xey&P2~hOyy1TOl7Vgn*C%X{zXE?CC0uS4c&KCzE^hu{b@iS42HtO!%q8wG@t)>4%Bj=EKGp-Q4clVwT^F+9CVfvHH zM|&^}_D4|1q=z^+ZNhd*^;7ecp#Al32%xu)qH7xaCcHKeGMtzvOpR^e-*qDf1rBf2 z=|p|-)-teaTWHvw-7hOGl-IE4I|N^Bf4+8!E5|-bBTpp?4P&6iq894O^e|HvTGjw#N&o|E6{0j17Hl|D}V;m98fwS|MKZ}vI_XZ7|aJjIB zFWukdl*9n#4h?E$B;Xbk`AfL{c-#3d#FOqEO3Z(B3=|-=_2DEo?T4U#2UVN6lRCK+ z%)mrg@%X8n^Uc_rY5iR>e(ZCK{pTfbt<)yKp1ppeKcl+UEQ&QJD!+&bwoo9Zcerru zW2=ij;B=A0(!7GhWR!%fplPG*9XoAP&%yUR1%mUJr?QIiA3DG^T$Z-!67dxjqPk?r z6Rf0iS<{ne78YX{?-m`~PtliQ#;$vL_!grR zSW4*>VKPyZYNA;54xY<8;q;-gI z8O~boD9#;;swhl*$QI4nYUa0aOqeYLjg^3AKkXq__6e#YT2lw&G|CaV zZ4SXaejOjw=1+xXD?vj#IQ_Hig!(jivc}&hncM#u{Px~zC@|9CweH?|1F^MTKlwU} z>v(n{^=;=vz-AZG;iAPkel2`54t1ab_Qo2n=7V%ftou(~(qYJ_b_9D)BBOIS7 z@?R9VO5;}=uoi&q&ra@l)ccbbydO7t_(vD%@C7-Ez;dH()}(CJpvDI4OIdxNd&I*W z#%zDX1(lbC=RNN9cODMgDmTVPt`48sUpukq;W0`PCyYw))|}P{vlS=}-%P5*8WE2^ zChNg+G#>e|jyj0eT)f&?>6_ocQPFV0ISsE94Or?>QNxjbU7e2&(yhUKNwNlpXjU7s zYDK9Cmc9SGI1icKpq{o%H|>{$UKG22X@%rnH})&6`kh~EYm!uX`M$HK7>K(~!g1Sc zX2nQMx7&QA9P&NPW8Y(YBCrT(E~q^YNJYG_&0NC**JKuR>LR`#!YASWJ5M0N&?gGoaM; z^(XDBW-<>oG;p|B380$Mo zCa#XP7sMRfpeEW!;Q^ErTNl>8oj2{L|HVB()(c#|)U3jZlEg^M>mx;bdIWF|hi_BHl@s)U=E%MfR(D|YYeiLHTL*f-3Bn#{ zkyrP2trYfSb8)cwRIPZZb?UT)ac)yQ*ai+0*63$qUc?$HG}b9+_dZ$#;tG4TDfHdr zGo4NJ_sLpiM*m|!jd+^_xAwDnJ`H@_7;hrAEX}22#dopd*WFI|;i`aj1PK?n>wyhi z+FZ{6=u;GP$Q6wDIPP~QDRIe8@IAy-tfn;h}RE0i| z6p?DIo1qIlta%MsJdLd4@a=qPmPz^2x>)UfaCD%$>WV`kB$T+po>1Qb`}s>dD_@ED zlCnwb|E1g3*}DD=5DBHSSv#G(jXUY}n^xZVS5+E$IM9n28^`5o zWt}4$$KIt*(lmY=X5_LHLL=Ty3f-1asJgubn!l`P0Xk<@I|(jsP6?A(%OsN}BOPo7 zYc864s{Gkh0*U>z|GYozmmJu{V`rL9j#@p)Gg4qGHC<>~Gq5^CFzA~XzQ*23e>Tc} z&=rLpJA++3JwGS;&H;qHm7C~9X>wKP?RZ~&Kp>5J|KU z_rqEBMsul>pM}Z2;s)`N9z&;!f64$m>?{QAFnyE08{i=vIkJ7f+sPJQq^u*}nm42( z{<2?x2MHR7n>uXAqj*KOQes|dt`3Tu&AndK?dei#_rK2ZMbiwH0l5Jt+NHUKx~bfi zoX<%^;2Jo9K(|r7zj33-PnJ?=6KqUoEY5DEOkVCp9YO8S4L4_JDTL1}o09E6I*bZN zt^x&A7oW8juKsMVYqeb3+Jgr<+qur?Cs@`y_5H@=dX}fIZASDkP34G2UIS%fgwm6o zW?xED*5N|k(R+V>_0h>YgY76Tl=s-F@cmUr^W4{weS6R4&!I`{Uv(zs6i|YhJOvKy zgr6b`O&TYtzQ(ZNN64RQAry-YbyOhre)Pj9mZa>n+}KvHEA_Rz<|q!7Pzk!ncSSek zVG(hpVKuuKNBYf-r~*=eGXy`5uuUuDIM1CROfnuJVA=5uAQle!uallLts zux4!+kH$Z2#)f;EnAS>rzmW-%;@P-6RNdikfxNPN7SMq)d2KfjU8KcG0I2376fGn< z&>JH?Nz0}8gl@O)Mmr9ldTLiGH_$u4*P|jJZ7AvL5(B$4lDz#xw$(c4^T~l3lvi9?F+AO5e`l>&47Xn) z$0QQ~0jg~}cDr1Mxx9fQdy_piH>SGL_VcIbZ`6Zt$!u)&;}+VjhiEaj_;4$WKViv} zf6%KJw*nBd??^w(3JKe=Wm@#yF!I0~2nj~S)7mE&6R4IS4 zP9&k1nb)K?+f_^G_F?UY%n|4IY+Xs=uK-kM1sQYY9oQ-H2gj3u>mR2!2=9wOjC4TA< z&-%mi9dhP=sgTU`Mk3N9y1ag6t+mMhW!j`*F!AjjxXKua7)T~no{qKk&)0r>G|z_z zfUC*|5>p7rl)WsW_wjrzaBdQpF1fG^socq=7!5^UP{{_na z^Gnou-yA`=(3yH8S9W-3Gg*($3C^>yIHGwoBL?yL#33+{6A{OkOiO#j+n=aX(??96 zB8U!+dviab{A2UwF6t71gs7?dUiGI00 zNlTJ~xvgo5GPeZgpcjnRbo%kphk`9qCnikDRoeh__%%DvT5X`0i-F>(+)jGN9W1eR zSMIRO>>;VcU0C|Il>?0Lnfs35rQF?J>#7Cs21YHw4LFFBEeKOFeq(zcKXHy@8E44d6|v?S_`z) z*z!9*FC0FtwkVm0xa=*oC6Q~Hl;|rwRaglN0e0+Nfb5^5!h|sQef=M*T$9J6-ZFFc z+Peo%b6oZ9w~X#Se@`?V$nTL8X=IzOMof#QF5_$XXE$D$b9S0d*c0`HX}_83?Q_?v z!f3I}(q%Yg4WJ53jS+&LbsWBhB6}YD^@pVGuag~w*j^~X?*P1mu=wp~ z^@G^dC&pBt{Io0fN69Oxo2*rBW(`mCPcx8B!AYGwn$O0e{-x^{bGgZ;rN$!cI#jGW z3jQNm=~o6=T%c~Kc6YV|=lzYSjQz;|{>g*wVdvbTm%f?om7L7UjSsk3Shq4gC*ZjQ zaH|6O(_Mm*lP&Byb2c!%*4Du$sVEBrO9Sw!w*NO!9J)|<+iN2;L_WtVbPSdZFmoQ% zc@^G=!R?N+28gkkyuAl@G0paT@?5AB!M!%?%(%<7x*H8HYe0r}&1<92$Rl@^2-xTm zSAb!1=v5R9?V%P}_GQ3TsQ_)Bi(Yr63I1dMWPCLXgmy$(vyFuwP2TOI$w_jd7zwo7 z!sm6+Yuydy2+vm%E(n*6+vM?Y+%0l(8Ci70CQuR{qr0 z=#KNk^Ai@QdPJWtPx*`cM|!vz!DdEFWOV!(N3C-`WxlOcngkywFN8HR7G-b|*0%1% zWY3gZoAAa;aqC}Us(g_ADafE}txK-;$;0dE$OZlhx7mj<*>~F3STazzaU3nAbuA%twzA85s$SmF-8I7@{=#_w$ZOgi8u@l9zMi#Z ziEWk}R7JO62)(IP?pk8qJgJ+qJO8!x#S?2m_{UJiGbRSb%Wt-CUS42iXnW)pEj-+W z9LUVaGRHq=FzbmKkmZNo;js(!{~>e)_37bj{l~$gWCTHJ`G$>SY)j;-j;@&n{*jFR zL*DyCZ^NC89ikdwmIrp>W6r-7M9*lc+z>zc2xeo|zLP_4&ToK`RMDA`5R}m>_k6e= zo+Oj|SMTr!;4vw>w!eR%z=1^==$O*=i4(gjriA@LJ66&PP>L zW3{^LXU7K(SOmO@4=1IV zT{g3Uk)$U=X}t?t^obBkSI8uD;tS9!jjA;HQVz8II#YW+;l9+(^6)SpS})kF$TKr% zB}lymx=(|e!uM!-rcE246ij%athFu?PxSo^sRmk~b}v(6U7R(=1$-tH z*uy5ETULq!>kqk60YqU7TFumy@*a5M+oaknoBAz!5lThhO*}3xyLD7uIrIxlau}UZ`>umOWVyn~Aw!Hb1~hiNH6QJqU07NcncT*V!x~vstPIV$PS*u~#>*B% zl=$|ZJThX@Jo=bJ$>mtqG-%`^w+~FDdOePeq-$iW^&Y^QS)C zSq*H~*7o!}+k^WK2W*bmK-|^h?h)uVGkw_ECIEL`4RwK5`lDRU0|s-+;O817H-$D4@si|-7? z6t$2bVMdyZp9|*(&Giq_c*D019QL%r*a)15DM0#DT#2mk)0x!1vom^}3lwBWLa8xW zWGEDI&VRBXGE z>uK%glOF=ujiYGTyaA``~GU)Sx1CJv=eJ5f=iUcjPk2)7~AGC z$H_$o=^HEVIqU?q*hX?5>)GOf0dG!I7q!b2?&AR(h;Y zS50ditH|8po3r(b>}H9epxX&F^0dL-_hAM09RvBk05vlAESGD8PbwWmCVV|&g{L)E zeJodci+Bg>hE1D%>;Q$7DvKKotN^Ntg9XKk6qhMe3g8ws_W73DBJ6|`r+lV0mID=7 zqs6!?G(Q0Wyr4@0Wb@a9D)fnd=zgd}u76cmq{kP;!y|D+zk#iN`Z>`@)IAda@QuCi z8NohW1Hg(N=>WYr8U)<1Aw!cZSz=6B4C2#+&YvppcdsQp%8)9U_`&DAUi)y)nq$8^ zfZNa2$^O5$tu|U^pb-X0^Pq73T&AldOhBiOy5SG>y*0e~uUEclc~kRa>1x=L+P=VYBa+h}8 z54tm7n5@#LVZZZOTs)ZgJwY;2qkz^CmX4@MI6523B8umQE-sghZagy(a*cSGyV~1QY;g-g^_?3ohqrk zP#<+&3G9J%% z;hzlJCMkq#HsXf`7N2*B`u5BMUs+NLUChd@Z1TTc)3Lt(q%BAc_Ct{N%aBQUsoJxi zl>3E}wEw<(QKbLn+m+ewH$tz%O8na{5ql> zstD_3An({>hbGg$BqvxO;nrt}^xIlC;Xay9w0rx=b*XgP-s~Vf4BYx8AAXpjK#b~m z^8Dt$rWlxn^T#01B$M;J{yB!zD&;ddgI>lEJd#hN%nW+mVR-fZqa|ez5_GfGigkoeo3YJr`8Wy zpCsG>4vm}xajcwPyvF^Zi)v*HTJ>pMqNeFau4+@zzL~ZUCNJ#iWfpo|x2(NGDDl+3 zU|G|z0DJ#&A1 z0+bGN_|*?vjGM&rE!TdY?_J3GAi;!UDMvoRxb6rxH=2VrJ4lhPa)`ki*2dFXOmq) z#T~BrfV<~hggZjwi68&E`AS2<%nQ+BHVBlm>`ku?`sRY(-o>InPC~+Nj=ni8SVZ>6 zRKAQkwf^F{|7iDVVKi(nJ}lPfQuWD`{M1x*Uo3hB*|7Rmc8t?S*JerUWBc%c%N<%Q z<5G(|8y_r(lm8ylI#lre+i2(6*)VY#-UVUVg25(fxzkB~Sbw#T+;Jz{YutSkW>7vB zDNAPl;$3mh&a>`zH-oQ64`m$Po@Fd1-Jq%qe3;IIQnT;pl7Da=eh0BlMjqYSU?y5TqDW0X@9zW6&QDd|2kD9Y)fyS);>uP;6 zXP%hkmUoE-j^7{gNUm6H8xO3Opedh<6s>ui)=T1|n~j%$w%W(aH0 z19eD!J^hL}Ey;+Jw-^h*caF5csh>M|uDA0=W}i}es`f(sTPG51vCW~b4>OSLG!?I=({w}wO!SsP(~u)qN@U0=AYjHE3k^6F=a^+v#@MeMWXv^`~|bo9)Lv&=nb}GV=aH@(J~< zHZ^2Sn1Xm)S2s?6OF}n=0}K(m(YG-S(69W^QI4$~+D%@}wl-5-U+ZORV7yPWIy>0=!U>e&`;n_3TuMyywaM)aN&!+Ojh7CK#{Ld| zIaZhDuSs4hXV>IC!W3p7+IZZ<9Di2AM$j~QYxFMQsS_u45N*|##phs?_|{KlHk9|4 ztv_tl+`qD-JHo+B7G}Au(CCuI_R1m+9T%ep)Bb#?BR28|D1UCj`S{u-RG zn>`!Fb=rjP-gBm-vx*AwUrYoerS_vyxw%-IC3(y+Mv#6!=!9Hxi!!j4N{Gj2=jZev z5wsQ;e+&mshRG}mjwb#PbVsu0?!Kjvon_bw3^b`Z?gNQ1P_tpaf*IbMYO(bYh_IKZ zfjLpW#Sentkawl)#O>>=J{zG@tL^}O4Hf$RLdUP&(~rX~T?MONBSKhWGASGqPxCW+ zN?kwsmbxEY2<8hunejaPE~Tb!kHvvTvUT+KJy<;b?8Bk1lhNZ|WtO}_J|ROEPA0Z7 z)6w#;Y)d=8?K3vdUX7^mno3F1&;h9k-F3^q7vTlEl1~kek;k7CJi_S-@yHG8xR!b2 zM$g6j;D9IcH@CCi*umJ0FQuA&n}ML^)9_U{$JV`Ux>b?-p*zN-1!)}oQo%=OH*17Y z6R2vniwRFh{ERL^%pB{ApH3yc3A|#3Epc=%u}hNr`QRxq(Ob1}c4OAUf2Lw+bKYi4 zL%+PDt{L(wF%mlTR>n^I>VS@_I}qpzgkeup(=~GRoO=qp0%rm~i_)I&Z>@~UFmW%@ zmq8u3q;gbCZdM`4*}i?_x&x9L<%K3aljhKJN6Z3;W{^YLRG8aT^(PqMKDzpEn+B|Y z3T=+O5mJwFlcZ}sY4p|xq%{tZ)|U%XpsXKeyE7G;k)W{qpi?S1NaK5`i!qYUY5-F(d};mqRW zh=qx|K*&t%koB!&epTU`diS<;jzlGi(C^Eh2nu;M8J$f*ZTtrJw;u@emXifT^xU}R z`^kE)XEoB4nQ1#?uJN?-j!zy2!o8kyil!_(b$_OHI6t!qJaMrNGxc{&t@(%YSUw3<uK0E34{f z7t6ydmcOq)jd%Yg<~bR{S6{1Q;M|7J1K)(j#kkb7_ZR2|y0J%S-Le9cR2S6xe1UjO z9a(6q&4#V1*N9Q7!)iK)kRGpj64)Ecxcvky?@!3#Qb8pIbNt>91bm~=#nd0ffmu=K zL}?Z)nLgDhL5sIvO0!bVLbzJce;5!)0E2t+V-dozEh?5VQ$3C?`af8uBN%DmM&6{2#a_#P_T2;=7KwtM?e>Z=Nv@hg0&p1@Re?Ph*`PY zwE6;zz!mC%;NQ|q!8RCBZ+)qV46nPm+f zn}ZhJ0y1ghqDHstZLQkSoV1^CerWTEc6}~WQ+}< zzsJ>i&W11&q_$)N;hnrWZ$w-k^B2HGS78*qv#}2xWm0I z(|k z1-mC$-tp)NsHnqsYgo!_$5B41u&b*Ok5*XW|N7PinJKpDHx9320Xx!C}`U_rsAulE>HkBbr zGUreIMm1KVCbUzNY%xeMAE+} zi+q8x&*g$lxj)96!){uBi#_gxtCl@t=qw6&$J8sWHNfJ}UYCAK%&@U1(LXG>lxjW5 z`{9}us^h~BA+}mO*euq-b{+wK$lZu2zELfyfb~>}P<_{L$TRfoWbxUM#oxbocd{u; z)N!SyXZFke=|}f|+RJ*#5F;%;oNGzeu@3VE!3KL1*OB6G5A#E0mfDoOl5t-0(9GcJ zc0F-kW18PAOHEf$L^50?vo_!->G3R=kw5RJQ$UjpK(pb-`0Nl^GBYF|Qepz()sz+` zap9B>X=A?IJS%ngt6z0);39ez{et>7K7CuG7idhY_q~>i#cW6Z^I;_xi0aneg(r%7 zv4-BzTIGSp6cR!CPf({h&}%S*4*hj*er_eQ4vChV_59$sD_s#iMq(#a2#C!*un7MC zesY8>n56bPGG0{GO=V7feuQ78JN!jF;VGoE9xOGuKPaH&M!5zk3#jhOp?tD?_lfx zQeAR`>&|nmZ%1izLIu<^GFr_A(sZBilwZO^g&d_jvNg*C^`){=8amab;~988KV(G9 zoBQ}X@pcz$EJASY!nd?y$w`Iv@r1X{Cwna$=6&RRywpq;p2B_wmU^{m=_BJ1Z=Jp` z_<-JQN1HD{f&K?%or#(d#oQPa_`*4t6Mh|B#tip(EhXL4ld2-4iRLxEDN9}MWI4 z)k7s!{0xe9IK;!CI_i5xU<7EHx>ljGnL=bF;&tcrw=I1Bn?2yNs zF5B-E=3{ob^FNyF!u!NSH~@GH6SbZL_XULow{pw1 z23*hA24C!^7~pW`{zchowVXC%is#@K9R;it41WgX+;-woKb(Hlletmq3yo+QS_h2i zC2Zm;1=xLSoS9{=wquT4{O-tew8ZHpKTd{zMlpac-svY@qHfO{juA`10pK=x=A=*Q z@&d8_Ex6zdD+54nY=$;!PUzGTQ2;F(&vJL37&T0DZK0=kL(rd6iv`x*^9=os2Ss>& zg>18{Z#0R}KOrUYm9R%y^5hS(3?tFM-2XN8^TB9$x}B8~?pu*NfT1_R#NdmeNvjdJ zi&6Z~xo({>+KW~MT6a)3LIf&qdq#Kb6uw>1mSJ8< zL_nKr*43ZY19n_AS-yGeu~fLA{9Td4Yd;Og)+5ZmE?&iQx_tAH&NhrL{a;uk__J}H z7XSq|S0B*9c+X8(Zwz*hA%-Ld5+qz)`6E4M&#N%6DO_HATdk2`BM#fOKGkD)6k+b6 zzK{h!cDyZjPYCD38FoLD^7yBfe}02JufF9s>8)S-P0gA2;MI-KEuC%()kv}tU`JnT zxZeyGF6nzO@))3F)xAsoSL-1BdxKtEp@5FqGrFwfBb(K?96AML4M z^js;xeixJ(FsW}1^mv$L>>9?|nYQ>apWXXj0fBaH)tzrRaBl^SoG}J)f7y?N)xOB!cUek6t zq~~BJ4Vxg$j;Z*dT~tx~b3?Uqh5t2@zwW}hpz*ped~!(CYl$SR-!Wj3T))8sG=Xq@K>@=Mk9 zV!DZ`{qKw&4x6z7Y)PpkodcQN@x4b}cl@hfU=t-ewmc?H>yrO_stEpSaY{iyV>PpB z^uL_z)pj4{xi9W8d=kp!0qC_qw;z5pNP%`b==^T#WWe9~A*HO7VYDH6lvSMQKo<@e zo&`tlXqc?JKR1K2R$IoGVE4%xS|*XJ5=)7U z2ZZhAu+dZY)%8Am4bIXi6J9?uapkXx>i{`-0F!*=>bBg)_h4t;tqNdj3d_i;NsL@g z6-gm=Q~ZUd1u^4C8WoASF>@CKWbC;=&N3Uk1zE1jHE(elEtd$|eHHD5{Plh14*rju zl$tC++&phX7v;04x%Ttn*!r(&tF;f&R*X`S=nn|_rIqBG(ZTu31^ICEBGZ;cLw;^q zk$FsI$7}Pq-9!;bz>NAvNVt}K`?c`y0I$oP_kx8g#gM1=-p%=GfiTC6I$0?HujIh-HahSsqHt$nAhCXq-K9_a` zW^n8gj-iv{Pf{zYLEJ`as*Y?v$QU1yt=n0ERZq))5o4cAFmJwS-+otP!;< zp!oIIhVE~)+&9zeJfgpMVI7rL|ztJ}tMP3@663Y}}`#*>{e9V$yHe{6ixAnHRaf#p>di?WL~M9PQpW{#WO+f$-oRUQx+aCjd<|}05F+n zCQJ}}o=>(HdzJzDo3Rh+!&?9_g z5);c5fc|AHrr2Lz2K1YfZjib>vxkNhMW2_t&)zT*I+VvN)-FZ#*ZJzhiCjs^7{1q+ zam~i`fg#`7zq}_LbQ1?Jp1Y|j>4~ehvb0P0JA;sdACiuXRGYmP5dSBJsXBUctx}eF zn7m-1R`zdt8}BC&^1{pWZOkkzQx>q0@dp+%BSeoB?WPYpCvqAnc4+dt9p~}sB{pW{ z^(YL!KhVHLhNAvUq&+dKo_)g;{;SmvB423$`bQ_UIY zT-tWz=2+4b%P(KJ$6U)B9h;MpG#^9IenXj2;Mgt*E4=|@7GKdJv7S2TT;a0GinK0qOzZHmcvrpx_fcW4_DD9M4O4Yr`Oqj6-JetouvMNB0Z(MZ%*Jl-|N_a8V zAmMGh{mt2?$;2{WJ3K$@E*Fe(AzY!jKZY;sk70d^a!QYbG#VyX-rv|#G zy4)fA=~Vv-XZ%k3`O2>6zNUKlk3K$v5*Yuy{#{%(A@BCwUChgx83-*p1_V%+^27C0<;I_s2{>RTeWGXX^>rV61N-aOXh+>-sQq)jW}3^h}COaDTGr8NT!9apzu^8Q7e|XF>dm1?*$xqs;O+MlG^QP-|)VBeq4qYHpOakW| z{e{a?>w6Ij#e}epJr5?%R?5TQa~a^yq?V~fhF(CvFdN6J3U`IACa_veqLaF?w6!a9 zhd=hCVq$>tmOk;lMbw@yIiwU4Sb88lt?X}ucA24v6u^sJQbJs+JRz+N$%u@Y&{$Yo z0b0g0hIJ*4G0Vx2&~R{`AP245e@ounJSO`DNPPAhUdY~ysgcAu`zrmi8?QYmW&effWFkyX`XNSA zL8Jeg`Xi{f;-B*=FAU}S_2^L|De-b#KGH8?n|5Q`V6l|f>Ge@J?oQmza;QC(r&yUw z&I@mcx;^dHFS=wK3BO+dy*)GP zTAm}Aq<=diH}Zx8vo+w@4r%uifxKx)U?+4kZV|%X zZ33Jdsowtg0p|u0Jx%wpX*zazK08-Gb7nkwi{^b{!gu~%AgQu$*7~D;_iwA(>G4_r z{0%*YPVr9H5vQ&13uT2`*rC^qEyHmEjGa{T#m*a)-C^CU0nhS7GFa{-|0RE5|IRu@ zakfwQ#$y6dBE=DV$VdDm=bUc>o@y0Nv`VhMhe^iFsLqv#e5>#IzWO}=56yz&iW^_& zL36gl70=$(_4H2v00fs*uXApB{%3mTP>RN;*>^#r;vDk0#2*LoMu6aFqi^EqgtTJ* zEMZ_|q(;@p;&&|}7P*2b0E$h#mM>8;{~Xvg?eWilEBi_o9pk5?CM@H)378Z!8%=Q8 zf@|xBRh*El5d4_W>~X6Hj*t1yekw?P@l7=+M5^K5*-Q^xqlxjPsC z#eWNf&E9LxHRoJ&KF>4F$e9u~K)L0*eOrmV%|#Q~X}32x$D9V!mBzZV*I}p=B&#hY z(K1$hxqh9MK_!8Kz6bmJ`G^>tNXqIutm3moQoRN9Qi)|xJxpxfnIi?%qafA~aZ6`# zm^Mw?R{?W#$jgKRa2TN63%*?64ZiT7loEUfJ=w3CvHn4-m9M8+$upR9=(hc8z7Rh7 zNhFw+_!BeuC1(B}5G5{|4+t=wMj8L>x)w|gA7N?6-#Uc*9Y0hl&3TE07}c%mIGhUISAa(H_rL;=NJunq?h=C$L8x(ZchpxPLnP z?5V|59(p&oYtXG&;Yzr&So9I1aNbZ}NjgR@gL4TlLA=V=Z3f{ZV=bf|b z1keuTDU^sh&alWUHwO?FK2bUN4QxSWl#JZ zNm`dR_b`zBG+Z|h5Uf{}_0h{2;Y~S5gywgl5C-^Cs|bdTg5+iQ+>3Vj6?7< za=#{;mlG|33kS;hu-;>Oq6l9X8Ah#_#flCvhF^V8{>nO4HNq~E%g#}-Z|b#*IdpZ+ z87;~>gJdLrL{hsCOhXV6;If({ZVFaEo73TTj@9&10kQ9JB zYLHRT@Z!ONr>iQTO?}^;!1w4-3{3g&oMbT%uc|VTby5=}@+&cvaxYu7RsFwQYlG3Z zGcY#aZQU1wjXmpI#p%iA=_-4M18>52#dsVc8!XRHNZa74?=U%ihT1 zsNQR6mbm;QEy_iEq&Sk(Y^dAS=kwzS_mpSZ%KSGPg`zjCS1n2h^Oun#+v0nu(QS$> zU_<>1_)aJdhifb}?{C9?MpnIi`O)7wOLO{1<9w=Z3GtH= zzx&xC<;fdbpOMSz6Tj4+GWWB_!Z?(4hW)agdu}ZVYkde*Wb6pmw?=eotU8Tv)EZ|; z(Y|88HOHqjERCwnp(|8*hLZOpZ;GvN+^PQ+1Viyto^pwk*FXvrdynm>#HU*3>>JN4 zq>1Plbn5in?+5L5ug}%McRxY<8V^rx?7(_4{^F8JEs~iHRD)C349QcV;1>HUl9?`k zcmBk?*BWEp)7?pFkmu&_; z6#|Njl`WZ5J~f*;9Wpc~J5V`x>{ab0VdFQt620!H@8Tn?vho z4chly%~ur-ClY#V1S)Ozw@!LJURbtaJV}y0mRIM(Fo>`K zW3eVM9J|ZIvBICdIz{t;c43$Ze?e6OzaizDn$ggwBSdA5TEt6-9OS6XfaJ+zHi0GP z5EYFV54L}1$1r`j3tH<)nXlubU3ODm(=m>LXOUUs&cebNv z9wGlWrj-wO$ollW0s)91O~SCeJpyT@O8$01y26hU*%AJ*Cy0aC#-ypHOsS|5Is&)P zy*ha*&7lT>ZK7pos$aefJUGhXxXGPBb*sm>4*XzY0aG$hhBOFJ3*FUuB{ zaR5grY^Fhf>bz?K2SDuq@cMJV%BvjGKtup@9aw?~TVg!%6M?H(m*t#lDYKc;-{9w$b8NI-x5)2Vp~^&Wj>X+nVz)M&=eyL^)kUb&-t zJVAe2dwdNi2FJt(f&p}^*)%{}HV)n>h|zT`#6G31LXN5D91z(Ifa0Ol|fe##b%4g@4Z#Az$N{#{q& zLsPap67+eLC#Ax4d5jm}6DxqeTFtx}pkm(RTesI^*(|FX3UMYQpIeGZzpTyrd*xK% z!6p$9Wei^F@;2G5$ULvs8?&6}C48Dk3o*ako(h!-SZYUn{PSEEz&GxLnB8}7;sFiy<>-7x$6 zFuf`YpbSy^wHhq=u16{X^)7MRtMex5i*Ep~!5jeZ{l3%FhbC{<_(OnRh;&vnRz;iX zb9GMJCDjU9?DuQb%}0ttApokFP`^25>-DI_>$Sc5K;Ow?|9xJ1m%bRyBZX^;p)GBW zp24<+1Rw@ek4}>gkrjhP@u>n_^E?D6PFpDy^mk=dkSfLir`UQZF( za=1IbDf}a&)ZM)u)%fw@!gBCE?O*rPC;zil{t8%+qc;H%+gU)(TH|mn9`DE-XzTP&#Nbcbj1NlH&SJA-rkWCVe{5jA@70fKU%>q z>a7lwdad97Jq_0#;8=R8T=G4a3gBA#k9a1q47l8-4N&u1Y|kHd3D~!D!p6F>nLUD*_vRv;{h3}fNbJ3n4tip91E2~4 z0CG9pU%s!O0Z(OoM2|6E%eb+)@e$yt_qIIG(hRr`wb!~=ZrlW@DVKtwKKA%c7cR|^ z=v|&p07$HzWs14Hv!k!@2q^-Ppf^x%N{`k%pzy2YheOGF1kILO!Wj3nPvFF5k*9G zb&8da0Te67V}e6|gq>M%klWuSwm4W@D%Ya}4~_s;fXhBTOv7Qf#|a@XIX0d&Vz4S3 zYQ@C%BL>j&T8+b21Z`+uMdF)y!>Lo&!jxx!L;k$sH3o!PU~zl$LS3Z>Fs{8)jm?ju zR7VHZ#ltSz8%n==YiB^uORZb{IW(XxQ&sJ;u{G&M7~)yX#K;nopnnsqQhakXAGZZ- z3+|`_bPV|!A%dW~$7Fq_jJo7`UmtFKh_~j#{DpqQ^msL(A^I$Hj=8sUQ-HMgBSLLI z-6iK^FE7erNIdLus-VdS7%yxJngqn~CfQKdBR+t~OlG*}#Cwbe16q`(#I$DfA`6~g z29&zur)8KH;SHphnW@WD`f5vdzWv>AltF8wHbY9C1oa2V)_T~GHSuOzswj+du~8b3 zPP@nt1yU2^D!IMUhYRxT8TAdbTrN$w;bHlcB7RmwPn0|D%#b9Y#3CaeIuVE1B>*s6 znS(JyWf*{(51Qu!b@LVo^d;{%dn5(#0pu51Z2b5ozbN#E@|L*_qlA?Hl7{0|omzzY-B^rrQ`Y6kQ2t-En z`$^9x$V5G#iFuWvRmY~Cys!4mJUZFEV_^Me2_cc8kvhi=P>2@gO&_kS2_&n z=lXX3xi+sR&-gP9%57w$zFd?9C~t%eaS(H5-zu6aI~IM!APXuz@9s+ObtxdrC$G<) zbap^Oa~w7*nJ$Uy6y`fSj&G%HqMM!Vrx7GijF1Uig}UaK z_$V1r9>CNALO~k?IzA~IF~(o0b-%vwoEJWE2X38w7YF2Zs(nSYjmTrdj#Y$7F_9uC zaLc8X59qtocEx6!^O{dS`+w)fal(M&gIL+mtuF1YKEd>3e!QwJIv9OnSraA9tNAp5(q>?3! zC{2O&J6|FnQ3^PPFbjz*XJ3mxqNc_3lIlrqx#?p&{gVpn%NjJBh z0R=H=3S~}K*j5M<509g)0NGFVWMrq&ivaUrAztaQ1T{0qWH>a}Nj;+$e_%}Flh%J+ zB2n{b+e+5~wu0)k7~>or#rimmTxBcbdcUZ#h3kbdt{YIJFbA(AER=Vw8*=VIu1h2} z@5KJ_%F*QG#WN*GNHvt%wN=mSnC8wI`7PJvnRK@0VRDe+MXJ;YrR=Zn4qn%*ph4tB zaVHv%KeM81k#YP&3huFj~J|2Y4=5|Y^C3Y9>(Ha zr>`$9TeE%;ZmZl=x8T|dMY7dgY%R2la?V|U;COxkb2vm(XWiNm>e_1-0~A`V&Up?4 zM&v*GiJE_!sFcezavBOAxLF#z4`Y6#wZRZMoWXG~?+VAT4FW9TUtr&$sjPkt_3gHE zz2~@!-=auCVg|zPJ~FVGSc48Oyr0s*_&OBsz;o-~6a2R01Lq2peJhu7kl3s;DY4n< z6{=F^_(JjRlx?hNWg>6;w6q_7Z28I;p%>Q?Zj>k5WI>1AA=kV!&+Q%Xs6|S*S0iW` z=(a)a0zQWpv2rNWrxtM{vB5)@SrIL8cY)G|VN=!0>fefx<6)J(6hMq_Mud~B;`VTK zv-w+r7KkZ{)~IbiaZH_^rgC|)uQTf}1N;eT)3JUEA~)9@<7{dH3mMq>@g%)A7S#_; z%En^Yz?^ITl(thiaT3j zP#4pgb#Fg7>+vc~jucRTKAPv_(&Cd%LlI0NK&g0VG64GfD&ifdt2*ehHL|BmpdS!0WuZd(-Sr zcWs&P`mRyG5=}h7k8-@~3G+by2lP@wbO{Z2(c{j|>n2!3W-5uf#+jbzeR z8v7E94mW9~RIH^nU9ULBNe=#6ed@cBa{^7vS(JK)*3Ki*+or=I7VXR<=10d!bCfa` zJy?iM3FT0Qs>|GZ0E?GR6=6Dk_w>7*Td4crP;=AwYr7Eauo;PW``6oxGPdhek zQPe4?TUJo%Yjfueysy52t#wXe+5@_b4n@8@o7ynL^?O7jCYhWnwLF zkaq!(72NX<^ZU-ki4(TzMB-_5D`jcTPT@2IkUx@}-!QltBc^H^w}*h-&DPq?lWPqW zTj?!j5IskS<~%S}F0RgT#*-9vsCZ|5mecq@yUfgPJhDqXk2LMi=V%&RLtFX88kY+S z5~#!lsgpBy`)JAd`Xp+>6-@q*^>cOp9yg_t-fsUa0#HZ#|Tbl@>@<) zIjIwv%=5)e^T1b73tPsopPePOTckSi89Htk8p)QC->Xl;P+`ATi%{N@O1PaD;l3Xx zul=8^zY7N7ut;5mm7!fTSkem@A^FXhF+JwAs0{Um`;@`<8)-V2LV2fPjODv zinf6iQ9C!Hu=%{G_42l0%LF3O7Zj_?=GYBxR*EH>krlmf^GigJ^=}y7#H{x`j`Q}eeM4Eac@AD3Kt&Za5ly5s)VSz$sUf<}^lLYLC z$yx=W?}YCxVLd*iHU5@eL$h?H>~Nc`>G@XOY$dL9$CFDAqGHRkp0PK-Q~UgJ$Rx)h zwOE_0w32V2Po_f;MrFR*v37oZbzKzCpXz|G)i}h_}~lx>@pXut|o;Q3;|b= z?_hGGHT1gQ{FU`WXu*al3-FfuSsuJs@jOq)=|xEf>APRQbj`buTMh;9W09;b&8C~l_gaa7$??-j42Le%aJ5Bu>6llYIz1G1*B*6E36jI zKMx8{Ij4d_hr6^55ex6KyiPY6 ztKPOx7>}!ghQ5qe!({cGrYU?OfTHBv?(cQGRdAD&a2(4wyMc@iyW<_u3y$Mw${l?8 z)8qE^sIMu|x)JgpsE>_2@0lKd-j}XEExl3w>4L|_QDARBVR(S6+<-wWHsS;4Ibd`B zo0Y=%e-4Q#VqO5H4S=q=t^ME@8>-VDX%u5leL1+;%vIRS&JO{{_)LxVTR1$9fyDS> z;JXF#Q^Et;ly8G#RGAY5=f?UoHIdpAS^XlsPCpWAd+Q=+Y@Ud`!YCKspvB&QR(Guwq{P@jK_ zx~nmr68rdP9meRd$U8)6g0*BpJG^KF(cJZcmS83tG87J{6A9g;MPz%LO zyz?}+$GW^fD{lKbZfn7~K++6@-j9=cUx}RkiP{n zNidoyvR$z>!M4QL;*ee{C-ETnpx+=6>Ieq&ITEI<0I|Mo$9H{h0^+m;h8~smh!dhL zOOmpBZDo=-K0ku11L5w+akDAKWn~8I$rB`0YxYd!Cl=0tEQ(U4`*V&mC?+TzR|$G zv4sdtBmBHBw8!(kRF<~BxH4bwW=rx-38Q9}cyoXH-{(%0g7XB<-Ss5~x(Rjea)cM; zf^WQ^BREE-TdYUGkm3RcIK}r_U!PU+RBzphF_Qj!%_0U^fs=fezfR%AcZI7tT(PBoeaV^q1<8sC}B+17|S4wl3@ zlQrg0-zMgIc&kJg;CykK{RHL6VWRo~H?L5~UHyvBTaSpe%5$x6Flt>F`jyBrxEvEm z>^YpRr z@hZQ{8r_1EeOiG&+xqKcr{T1J{LfP4QDjabg3a?dQRWwT`co(X#39a2Xd%pGBHZWK z#E&T6p%}&-R1ZmNcM1VcRt6VABm(31zK{1rqv~aFYu9bBEqR_7K>p&v>xlV{K7={% zud7K{rEywG>~={$@u3r{TwW9L#7@ITR#FW2?rh?d8(S-F=p(06{R;s41cn` z5%qHdCdwfkGBQ&G85;5<4D3>k(@)f0(3oW=-XRwwUrC*HsIG$ZPQ1{tMjG;HJV^l7 zaC{n=YBgge6JIYj!1!9*Ie?4!feDl{!|o$t`DdcNbZlw;E;vZ61z`U-x&e*%esJaD zUeUSjyS84nD#~35Za`cm#r^wOS|s)lddi62rVh11a)A^W&_9}ga;5kU?nn>Mx_{{% z9w{sS`PG}wFXv~$y%eXe@L^bw1!)-lf3b&vWqe(I1sx(*go{2 z6hOq`yY}xs&&C4fD#cJ9*~jAygtU1oUoaIf)02f7+Nxgs5}#d(VRPpMb9teDX>EU^ zqIUXD%=sy}eInnBf4_J>c@k1J1>B6mwbr=1j&`d3I(C-r`+nPp1M?X@bu#z}o9Mq)*gYaDEBwT* z!!K7yJld`gw7oy0h2|!WxeDsO5wV;-EpqvGL6|4SSyLdsKMTsG3Y7&FR_&a7Nj332 zRMOarBIgN@^-(7)mkoXS$INb+zCfm4A<0#_uRxNrt|bYOa`8fF_H0gZq_cVw)#9PiQPd#Bt!9a*Ce19IoLJj|V~^j?A9Z-1YWBR87A)z1@vI;dcQ*td ztX+8Hu#sAu~R;%G5wjo zL|FMUDeGvP#uj zLV^e;s{zkas$SR2677-0(ZvX!c&Ub~#AmpO>Gde}C~Eq=lu)RlC#^xP^4ze?-29Fy zmo7`nDbM{$A3^kX?U_MN9j_!O-Z)oc{(mjMi7)v`d7>7w!SdfXfR;^QyP-eE!pqxM zZds+#9Joz2e-$NtsrvzQ;AC#?r;C- zn~HhX$N1A<$~HSn=|r)DQ)wPo>gr;6ke5rIB@bMWtlILndW;^$->lskq3`+^m?Rsq z`e&$bC%ZC=I%f36CW@+L_FO|aaNu)kNG#~2R)k7ugR|((&rdDvXEK-cq`XENpjRK} zpasT4jX6_@h>kC5j_AgQwj`pa9Q7GpsSb%}mvONe&w<7SVr%_nD4=I6UeK2XoGx}? z8KH&tt}?YgI}aTvx2ua?@b^UFS=YYl&0aA_g%QEpzq7mK2a!ersqP(h)@x6Sf~bbR z1PPci%zCWD@9qiJEl?CinU068KfX{OWnQzUuH|7%-&eju3Y>hi6q{e;=cvfrJA8D9KB{;K?WX!MXbH`N(pGhgER|22RhFK>o zx*L2#IMXgHJj*lZV!6=^PHpi?t+_&4!<}Ayz8tq>9p!l|-e=z-$nc_cQSZzu^U2Uk zAI|yA+fWS)JB7j6?>D)**)?@S_LGZV&?|s5;Paz~$%t`>PjSef{r-MMgWRpx{f^eW z^KX2t53vsk9lG-KDlnUYU*9VP(O_lQ*lK(fHSOLGFpQWt7)QtBS6dI;6Qp}p(^`gy z?w+k(sif#%AwAX&R*N$?_3i8*u(^M;b50Gk9&?E>2yI|%lyYg$vUU!{$xt`1kUL^# z(&}3L<8-&#iB?=D20;*eN6GexowwYbNl%?B%;>fdj<5vURmWFplMVcobn|8#e;Frh z&F6de!#2ok#Ah853G0o*gX-l|H(R#fYTOHonyHk%cKRf$XEFJ-=g{2hWA_5p&a|Uh zm)+>-w54ah0s9_aftRr|z7{LC)eZI$(^jCGfBO)-zdj%$jCQdnrVR=y^9vcGHDQ@c zo_)4iEPQn8bFV^~X=s1Wt~c;rl9?AIxFD|DkApCX$wat-}SK^{KtKE=R+q^oxA zsV6SQ4TE3AF8Hz1nK%3)1N1l_JKBzyLx}V=BjiMmS?-@Dh$wi(c; zl9qBFQQw2SrqwFM31E98I~=_U?<=eT{rt_KfOG9x4-=rTHs>>dd=C|mTgn;a(e=8R zeQnQXtCljrNqM&Qdn`r>&76BX(z_sV%rBN5l4vaxRgHUa4huRas9x1%;`=6{ihfDz zxSR#GD>iIe4~)FJth=z<-n7^i<(V2)_{K0`lq!^DTzu2GEw8s+|6V-5;n|To{rE2w zg2tM%VfPL@H!H{8HR$Kp;SLuMmGc8jfc--a!^&gAcYs)<5wbPz5??RKi(og5kT~P* z;U;md5oN;94_Z-PfIsI+EP>n0v5=}9TSBZXG4S^K4xG`d!g~w-oJKmBKawH`O4Q=k zCMPne@q4c?N>23_$hC=7?OXGxbMbQ9Q;gfe9U3DXFN}RyCP#FtF)s;|S*qvh%-+ZZCSDD- zaR9OoN{r{Dg>MKvwd8}!JP_L|0~t|*^nMcxb;!QLMg?bT8B!A zlzT8aRZDcP?nfRFf$7#uw5j@;374D9UutveXxN6JwGF1u*mnC$$mLwc=-;uG`27EU zTw}5GQayzk7d%%MSNS{xe=n;{Xg9XVWGp>v_uf}SSeAggr6DmL2u=MRGn4LT57x_ks%Px9XA~L};OBN%+;E$WWFZxM7u{Zbmmu(S zHv8EK&+%Un`9r{4#gEZ`%CS!O&f z;5kz%%`U@yYr_bUxR;{!^2P-K0EIfZd$!k(e?{2&X3LVZ+trm`T~Ic8C)3xTEvy|{ z%7sYa#u7!wRMzPq&xb@%;@d^eVf;0sZHCZ74wLdPzH9b#5^r>``a>4L4P)s)tmfP^ zRU%YkDJ}J+I$6DwQXvt3LqDaY#XpTEsF#JVuQrslM{Y6_r8l`4wHM+l6k=o&mr8t6 z;#r*$KHtE_b?%(NC-3u>djFo%7#;T&@DYwv=CF?Q>!7^HsXM<_*#=r|0oBtsZOuR& zec@~0A~?ucFP@u}wS)s^E3Yr9&T|w$(4oh0yT8DWAP3pGc~+vDuzE;*x{NTQb-LQV zR|Ti;V1r59FsmaYSnkm$p!s8>FTj=E8Ux-bpi6>(@(a2Z70seluR zylheV-#PZ;Jc;?Bu_qQYo_%Awpza@O@_MGe{D?wHAoA83ZsCfQ4z4PN(m?_w1mIm* z;*n_p>vmu1}%4 zQfF;yK^ig11Rz27kc25T{vP?oJCI}Te&I!5M{}!d0cTyNAaihSnlAxZD>H@4t;az2 zic;9(CLwjaD%vW5GY`D@ixnr^{M04fG=)QMQXtUjeuz`DY!Xp=8Gw8gs5WmT+~^ju zdJU-%_=x#(A#L%ay$!*pFhMm5mBhOy8=vU$6UiG&_I&A}ul+h~byUpn^)XlkP4;wr zUBcro*mLc~Xabu$0#W!xi?4a?&rd7nQ?wB&LcZ`IcWKm3Xqx6~2iTi#K3Hwq!_XO{ zpV~7+!&}T6+36)-a);5u5y=hli-ZQgacz1}{PFvjM5_Rt1|`Y4K#8MN0cIzy=P^?M z&eWfsQNcTQiw6{^xq0XC_d2IM7lMZu^5h{AG!sO7`u39RtwCtH;DbOFmdDohl2jM% zbm!!I<--gdXu6F1i$h|Mvr!QAIiZYM&wG?3VPss;JhX|#bEuKA#K1TjB(-D0kv-pG zyw)8z(J1OFUjsqiw7)eGk?B>}xFbR~!prQs7*(@ZzWtiucaWnCnsqHM)&;Sp{2jG) zRFCrU(A?{64e7dPT}W?8k7;ou$m)-;kw{9%ys$M8j0>{M3M1o*i@i-2xS1G^$kH zY6Cam>b|1-$)1&%TQ$l>DZmCdDFj|2{a~4j>F!90rZC4eU$>f7R3@yz;5j-R?2~^3fzsmZJ&C z+ugbizMqLzj+(yVHncS07t4p~N0XA#W;eI|NlS!Z);Nf b_t@El0_&o}2W>|q#|`h8>LPDHe*HfH%Apal literal 0 HcmV?d00001 diff --git a/img/Mapping Between LinkML Schemas13.png b/img/Mapping Between LinkML Schemas13.png new file mode 100644 index 0000000000000000000000000000000000000000..ef1b3661c3d7a5c959d81ffba9d16cdaa6419cc2 GIT binary patch literal 85125 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�Vq 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 KPLb>`-To(MGib#C literal 0 HcmV?d00001 diff --git a/img/Mapping Between LinkML Schemas14.png b/img/Mapping Between LinkML Schemas14.png new file mode 100644 index 0000000000000000000000000000000000000000..555c1589ecbc87f3b93d3515d421b566afc8642e GIT binary patch literal 404705 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�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�JZW?i{Px-!X1O@EeW(yc&kr(Aid6C2(FyaEJ@0C}J zHGE0R_0%OWv`5f}!~P+~=U{^Ozu1@Y!^>Xd`xVTqie8L$>Ws|Lvb6ALY`dIo z3w5=!%3TyaR2bj~|K;O1H~iQ@RG-rw7>s>*w6e0c6J6;Ad;1mt2>m541d=q59?L-) z9yFTx9#wBhrVbm_rK3p&ytmB> z?eDuU8i3z=X*fLL>Tz5w6MNjeHlLc6_0`G}((Z90z9jG;<=p=UhA9(FRY3d8b>NfO zt#0k>02%PftulW;P~4TMqnkY`pd;4Ble7_~QvC=Ma0^hU#+uV5`=Lf-Q3^lxCHndp zDm5-!^N|$@7u+hq!7XHlk>CW1;6iHHI=*9~Z(^HqhT5~gJdz~O;9;k-i?Aa+m~l|F zXs7^qZ~@~$*3me8M^Zg3-z&J>VMJ4GH0B4hL~$M`lDZ^M#gc2LJl+i28EO0LOW zK(=FV+k0VuXKowCsLMqWlOquhDyh!A0v7vUvWaA%|Nw zzj^%}&#w4dYIZi(lA4)1vH@xbrZoOSKmojow&mBAohz*j$IhrtB^muqjb`4FSeF+bv@M+6cCv^)VlR@?tL1>) zX=)4aoAVFfT509;!ySK+cv6Wz3x)QQ-fGydG7@%1rfl_e z%0D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 literal 0 HcmV?d00001 diff --git a/img/Mapping Between LinkML Schemas16.png b/img/Mapping Between LinkML Schemas16.png new file mode 100644 index 0000000000000000000000000000000000000000..eb0a17a393e5b89f69ec0019f3625db228783ac9 GIT binary patch literal 93285 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 DM|_#k literal 0 HcmV?d00001 diff --git a/img/Mapping Between LinkML Schemas17.png b/img/Mapping Between LinkML Schemas17.png new file mode 100644 index 0000000000000000000000000000000000000000..70f253e70bf43f876cdcf2b68534a005dac54e66 GIT binary patch literal 24093 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⪙WX_hHu7v=#ar6cxhOQ`A124xB%`>&NLX3&)qJfJ*TUk-ZA=F3mYOY9B7Iod7TIovVzQ7Gto3$MgmgCum4 zF9pv+WkN(CI-t}Yv(D1{?lL<4tSs9bG_&5JZP;_P zhJ83e%3N=4WQ0kk-=XhjMJpMf2}i3`^Z(|Ks>fF^kb43x!wmU0+xOCOo*muz4pwn< zgd_I!sh>3$z`IOt^GF-{xq3$0s+&T8Wj{~K|EU~{Ch~WdFtVsKptAjCZ72@ASy;(X!%;if$p(e@#TsuJ5qN*%d{o9Zqo z@N$hH$*PE=J>-|@E@VC_K9qYXSK4NhVK>3Bm{cLsdT>C9^=vFN-n4Hx$hrhcg3MI_ zik|nw5rdU^Io$8!idGe>Yu6Mpq3zmd*`Flj?2(ud_xJc@x%6d|*9#)tJ~KSt@kmso z3bZ8jC~p>!Qu$19plz=@TyULEE{o1~wj>qW$4Xe-Dyuy`7b(oNV}08A+fC5ux_~xg zoTZcqNt1E@R%`oVt-0vDzeGu5Y0+}4=xS-H!MW0&nI7->6&-)!NwR$+Ze}5Ohb2h> zYN{TxlFI}QP)-1_TAFp7}R9gFGDPO9Dq7K8qcZy|BEs-b^`GF#EFZdcu{gLMx1njI2dHY`8Q z$;f1YV(53pi?X`@;e@{&(P(i)jTHIX^2t(0@?SwAf_O}waP9a5Ka@Z@#eo)gxpOqU-B#!@sKdf{IivizpBzyQmSneYUtYtbEcgdg&CJdDkqrSW z;mD)2#f}D8N`ep}<0m&jCBGGgpIEJkOs=Jl|H&$93RQLM+t>NQ0Wu~H`pQvs{AV~5 zf2_?#J*hYW{W5OJllt3Uy{F`j3f&1Yorc-*ipq}Vk9E%kbMLWn;qddmTQGC^ov+kQ z`zI;P2-MbvjyFI?n4vd8F?{QXHUaRjJ%Hp%gIZB=UlBFd?~(zp@doQWBH?8Uz>)QI zK|5qV4@0S~f!_0)+_3FRnHK1;^rn~}@$*kHI+@=wB4lbhQarA%{|VB6k5EwzNxtVX zY~ry2ih)v+mjZCLgSZE*_%M7ThAxX2*aw^;am;`LQ zjvRVnEM)e3JCp)8riR#PLLu)38Bb%);gvZ{8Y+$(%}MuH=bXO!HK>n_iLIfS8TowP z8xNcayZ@qP?HP(8ro*0dGm#;1JW5BAm%sU9iIvB16H;3AS^q8y6Du_gLS1d?dLqX6 z5f-!&7sa-F4?yv~N%tq#ph=Li9f^az0OH1X=%*=M<($j5;{<(a}{g5htd}WTs^Y46i{;mF0>8rc; zXbOrY_Q}LbUQ(7d4ZV)G3p43ijMXojBq4R!ju9XId4lh$y|

    @@ -296,10 +300,10 @@

    404 - Not found

    - + - + diff --git a/AliasedClass/index.html b/AliasedClass/index.html index aae0ec2..2e66a3c 100644 --- a/AliasedClass/index.html +++ b/AliasedClass/index.html @@ -7,9 +7,9 @@ - + Class: AliasedClass - LinkML-Transformer - + @@ -64,7 +64,7 @@ @@ -84,7 +84,7 @@
    - +
    GitHub @@ -109,7 +109,7 @@
    - +
    GitHub @@ -176,10 +176,10 @@
  • - - LinkML Specification + + LinkML Source -
  • - +
    @@ -348,7 +357,7 @@

    Induced

    - - + + \ No newline at end of file diff --git a/Any/index.html b/Any/index.html new file mode 100644 index 0000000..345a9f1 --- /dev/null +++ b/Any/index.html @@ -0,0 +1,340 @@ + + + + + + + + + + +Class: Any - LinkML-Transformer + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + +

    Class: Any

    +

    URI: linkml:Any

    +
    classDiagram + class Any + +
    + +

    Slots

    + + + + + + + + + + + + + + + + + +
    NameCardinality and RangeDescriptionInheritance
    +

    Usages

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    used byused intypeused
    KeyValvaluerangeAny
    CopyDirectiveexcluderangeAny
    CopyDirectiveincluderangeAny
    CopyDirectiveaddrangeAny
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    Mappings

    + + + + + + + + + + + + + + + + + +
    Mapping TypeMapped Value
    selflinkml:Any
    nativelinkmltr:Any
    +

    LinkML Source

    + +

    Direct

    +
    +
    name: Any
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +class_uri: linkml:Any
    +
    +
    +
    +

    Induced

    +
    +
    name: Any
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +class_uri: linkml:Any
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/Boolean/index.html b/Boolean/index.html new file mode 100644 index 0000000..b1fb2a6 --- /dev/null +++ b/Boolean/index.html @@ -0,0 +1,378 @@ + + + + + + + + + + + + + + + + + + Type: Boolean - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Type: Boolean

    +

    A binary (true or false) value

    +

    URI: xsd:boolean

    +
      +
    • +

      base: Bool

      +
    • +
    • +

      uri: xsd:boolean

      +
    • +
    • +

      repr: bool

      +
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/types
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/ClassDerivation/index.html b/ClassDerivation/index.html index e859e8b..35b0074 100644 --- a/ClassDerivation/index.html +++ b/ClassDerivation/index.html @@ -7,9 +7,9 @@ - + Class: ClassDerivation - LinkML-Transformer - + @@ -64,7 +64,7 @@ @@ -84,7 +84,7 @@
    - +
    GitHub @@ -109,7 +109,7 @@
    - +
    GitHub @@ -147,6 +147,11 @@
    • + + Inheritance + +
    • +
    • Slots @@ -176,10 +181,10 @@
    • - - LinkML Specification + + LinkML Source -
    +
    @@ -397,7 +487,7 @@

    Induced

    - - + + \ No newline at end of file diff --git a/CopyDirective/index.html b/CopyDirective/index.html new file mode 100644 index 0000000..f00c05f --- /dev/null +++ b/CopyDirective/index.html @@ -0,0 +1,472 @@ + + + + + + + + + + +Class: CopyDirective - LinkML-Transformer + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + +

    Class: CopyDirective

    +

    URI: linkmltr:CopyDirective

    +
    classDiagram + class CopyDirective + CopyDirective : add + CopyDirective : copy_all + CopyDirective : element_name + CopyDirective : exclude + CopyDirective : exclude_all + CopyDirective : include + +
    + +

    Slots

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameCardinality and RangeDescriptionInheritance
    element_name0..1
    xsd:string
    direct
    copy_all0..1
    xsd:boolean
    direct
    exclude_all0..1
    xsd:boolean
    direct
    exclude0..1
    Any
    direct
    include0..1
    Any
    direct
    add0..1
    Any
    direct
    +

    Usages

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    used byused intypeused
    ElementDerivationcopy_directivesrangeCopyDirective
    ClassDerivationcopy_directivesrangeCopyDirective
    SlotDerivationcopy_directivesrangeCopyDirective
    EnumDerivationcopy_directivesrangeCopyDirective
    PermissibleValueDerivationcopy_directivesrangeCopyDirective
    PrefixDerivationcopy_directivesrangeCopyDirective
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    Mappings

    + + + + + + + + + + + + + + + + + +
    Mapping TypeMapped Value
    selflinkmltr:CopyDirective
    nativelinkmltr:CopyDirective
    +

    LinkML Source

    + +

    Direct

    +
    +
    name: CopyDirective
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +attributes:
    +  element_name:
    +    name: element_name
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    key: true
    +  copy_all:
    +    name: copy_all
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    range: boolean
    +  exclude_all:
    +    name: exclude_all
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    range: boolean
    +  exclude:
    +    name: exclude
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    range: Any
    +  include:
    +    name: include
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    range: Any
    +  add:
    +    name: add
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    range: Any
    +
    +
    +
    +

    Induced

    +
    +
    name: CopyDirective
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +attributes:
    +  element_name:
    +    name: element_name
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    key: true
    +    alias: element_name
    +    owner: CopyDirective
    +    domain_of:
    +    - CopyDirective
    +  copy_all:
    +    name: copy_all
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    alias: copy_all
    +    owner: CopyDirective
    +    domain_of:
    +    - CopyDirective
    +    range: boolean
    +  exclude_all:
    +    name: exclude_all
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    alias: exclude_all
    +    owner: CopyDirective
    +    domain_of:
    +    - CopyDirective
    +    range: boolean
    +  exclude:
    +    name: exclude
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    alias: exclude
    +    owner: CopyDirective
    +    domain_of:
    +    - CopyDirective
    +    range: Any
    +  include:
    +    name: include
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    alias: include
    +    owner: CopyDirective
    +    domain_of:
    +    - CopyDirective
    +    range: Any
    +  add:
    +    name: add
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    alias: add
    +    owner: CopyDirective
    +    domain_of:
    +    - CopyDirective
    +    range: Any
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/Curie/index.html b/Curie/index.html new file mode 100644 index 0000000..6bd822b --- /dev/null +++ b/Curie/index.html @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + + + Type: Curie - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Type: Curie

    +

    a compact URI

    +

    URI: xsd:string

    +
      +
    • +

      base: Curie

      +
    • +
    • +

      uri: xsd:string

      +
    • +
    • +

      repr: str

      +
    • +
    +

    Comments

    +
      +
    • in RDF serializations this MUST be expanded to a URI
    • +
    • in non-RDF serializations MAY be serialized as the compact representation
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/types
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/Date/index.html b/Date/index.html new file mode 100644 index 0000000..27a164f --- /dev/null +++ b/Date/index.html @@ -0,0 +1,378 @@ + + + + + + + + + + + + + + + + + + Type: Date - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Type: Date

    +

    a date (year, month and day) in an idealized calendar

    +

    URI: xsd:date

    +
      +
    • +

      base: XSDDate

      +
    • +
    • +

      uri: xsd:date

      +
    • +
    • +

      repr: str

      +
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/types
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/DateOrDatetime/index.html b/DateOrDatetime/index.html new file mode 100644 index 0000000..7e92f17 --- /dev/null +++ b/DateOrDatetime/index.html @@ -0,0 +1,378 @@ + + + + + + + + + + + + + + + + + + Type: DateOrDatetime - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Type: DateOrDatetime

    +

    Either a date or a datetime

    +

    URI: linkml:DateOrDatetime

    +
      +
    • +

      base: str

      +
    • +
    • +

      uri: linkml:DateOrDatetime

      +
    • +
    • +

      repr: str

      +
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/types
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/Datetime/index.html b/Datetime/index.html new file mode 100644 index 0000000..3591e0b --- /dev/null +++ b/Datetime/index.html @@ -0,0 +1,378 @@ + + + + + + + + + + + + + + + + + + Type: Datetime - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Type: Datetime

    +

    The combination of a date and time

    +

    URI: xsd:dateTime

    +
      +
    • +

      base: XSDDateTime

      +
    • +
    • +

      uri: xsd:dateTime

      +
    • +
    • +

      repr: str

      +
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/types
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/Decimal/index.html b/Decimal/index.html new file mode 100644 index 0000000..28111de --- /dev/null +++ b/Decimal/index.html @@ -0,0 +1,375 @@ + + + + + + + + + + + + + + + + + + Type: Decimal - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Type: Decimal

    +

    A real number with arbitrary precision that conforms to the xsd:decimal specification

    +

    URI: xsd:decimal

    +
      +
    • +

      base: Decimal

      +
    • +
    • +

      uri: xsd:decimal

      +
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/types
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/Double/index.html b/Double/index.html new file mode 100644 index 0000000..64fc460 --- /dev/null +++ b/Double/index.html @@ -0,0 +1,375 @@ + + + + + + + + + + + + + + + + + + Type: Double - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Type: Double

    +

    A real number that conforms to the xsd:double specification

    +

    URI: xsd:double

    +
      +
    • +

      base: float

      +
    • +
    • +

      uri: xsd:double

      +
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/types
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/ElementDerivation/index.html b/ElementDerivation/index.html new file mode 100644 index 0000000..5c58aac --- /dev/null +++ b/ElementDerivation/index.html @@ -0,0 +1,509 @@ + + + + + + + + + + +Class: ElementDerivation - LinkML-Transformer + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + + +

    Class: ElementDerivation

    +

    A specification of how to derive a target element from a source element.

    +
      +
    • NOTE: this is an abstract class and should not be instantiated directly
    • +
    +

    URI: linkmltr:ElementDerivation

    +
    classDiagram + class ElementDerivation + ElementDerivation <|-- ClassDerivation + ElementDerivation <|-- SlotDerivation + ElementDerivation <|-- EnumDerivation + ElementDerivation <|-- PermissibleValueDerivation + ElementDerivation <|-- PrefixDerivation + + ElementDerivation : copy_directives + ElementDerivation : is_a + ElementDerivation : mixins + ElementDerivation : name + +
    +

    Inheritance

    + +

    Slots

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameCardinality and RangeDescriptionInheritance
    name0..1
    xsd:string
    direct
    copy_directives0..*
    CopyDirective
    direct
    is_a0..1
    ElementDerivation
    direct
    mixins0..*
    ElementDerivation
    direct
    +

    Usages

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    used byused intypeused
    ElementDerivationis_arangeElementDerivation
    ElementDerivationmixinsrangeElementDerivation
    ClassDerivationis_arangeElementDerivation
    ClassDerivationmixinsrangeElementDerivation
    SlotDerivationis_arangeElementDerivation
    SlotDerivationmixinsrangeElementDerivation
    EnumDerivationis_arangeElementDerivation
    EnumDerivationmixinsrangeElementDerivation
    PermissibleValueDerivationis_arangeElementDerivation
    PermissibleValueDerivationmixinsrangeElementDerivation
    PrefixDerivationis_arangeElementDerivation
    PrefixDerivationmixinsrangeElementDerivation
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    Mappings

    + + + + + + + + + + + + + + + + + +
    Mapping TypeMapped Value
    selflinkmltr:ElementDerivation
    nativelinkmltr:ElementDerivation
    +

    LinkML Source

    + +

    Direct

    +
    +
    name: ElementDerivation
    +description: A specification of how to derive a target element from a source element.
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +abstract: true
    +attributes:
    +  name:
    +    name: name
    +    description: Name of the element in the target schema
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    key: true
    +  copy_directives:
    +    name: copy_directives
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    multivalued: true
    +    range: CopyDirective
    +    inlined: true
    +  is_a:
    +    name: is_a
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    range: ElementDerivation
    +  mixins:
    +    name: mixins
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    multivalued: true
    +    range: ElementDerivation
    +    inlined: true
    +
    +
    +
    +

    Induced

    +
    +
    name: ElementDerivation
    +description: A specification of how to derive a target element from a source element.
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +abstract: true
    +attributes:
    +  name:
    +    name: name
    +    description: Name of the element in the target schema
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    key: true
    +    alias: name
    +    owner: ElementDerivation
    +    domain_of:
    +    - ElementDerivation
    +    - ClassDerivation
    +    - SlotDerivation
    +    - EnumDerivation
    +    - PermissibleValueDerivation
    +  copy_directives:
    +    name: copy_directives
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    multivalued: true
    +    alias: copy_directives
    +    owner: ElementDerivation
    +    domain_of:
    +    - ElementDerivation
    +    range: CopyDirective
    +    inlined: true
    +  is_a:
    +    name: is_a
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    alias: is_a
    +    owner: ElementDerivation
    +    domain_of:
    +    - ElementDerivation
    +    range: ElementDerivation
    +  mixins:
    +    name: mixins
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    multivalued: true
    +    alias: mixins
    +    owner: ElementDerivation
    +    domain_of:
    +    - ElementDerivation
    +    range: ElementDerivation
    +    inlined: true
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/EnumDerivation/index.html b/EnumDerivation/index.html new file mode 100644 index 0000000..0f20bd5 --- /dev/null +++ b/EnumDerivation/index.html @@ -0,0 +1,511 @@ + + + + + + + + + + +Class: EnumDerivation - LinkML-Transformer + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + + +

    Class: EnumDerivation

    +

    A specification of how to derive the value of a target enum from a source enum

    +

    URI: linkmltr:EnumDerivation

    +
    classDiagram + class EnumDerivation + ElementDerivation <|-- EnumDerivation + + EnumDerivation : copy_directives + EnumDerivation : expr + EnumDerivation : hide + EnumDerivation : is_a + EnumDerivation : mixins + EnumDerivation : name + EnumDerivation : permissible_value_derivations + EnumDerivation : populated_from + +
    +

    Inheritance

    + +

    Slots

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameCardinality and RangeDescriptionInheritance
    name0..1
    xsd:string
    direct
    populated_from0..1
    xsd:string
    direct
    expr0..1
    xsd:string
    direct
    hide0..1
    xsd:string
    direct
    permissible_value_derivations0..*
    PermissibleValueDerivation
    Instructions on how to derive a set of PVs in the target schemadirect
    copy_directives0..*
    CopyDirective
    ElementDerivation
    is_a0..1
    ElementDerivation
    ElementDerivation
    mixins0..*
    ElementDerivation
    ElementDerivation
    +

    Usages

    + + + + + + + + + + + + + + + + + +
    used byused intypeused
    TransformationSpecificationenum_derivationsrangeEnumDerivation
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    Mappings

    + + + + + + + + + + + + + + + + + +
    Mapping TypeMapped Value
    selflinkmltr:EnumDerivation
    nativelinkmltr:EnumDerivation
    +

    LinkML Source

    + +

    Direct

    +
    +
    name: EnumDerivation
    +description: A specification of how to derive the value of a target enum from a source
    +  enum
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +is_a: ElementDerivation
    +attributes:
    +  name:
    +    name: name
    +    description: Target enum name
    +    from_schema: https://w3id.org/linkml/transformer
    +    key: true
    +  populated_from:
    +    name: populated_from
    +    description: Source enum name
    +    from_schema: https://w3id.org/linkml/transformer
    +    range: string
    +  expr:
    +    name: expr
    +    description: An expression to be evaluated on the source object to derive the
    +      target slot. Should be specified using the LinkML expression language.
    +    from_schema: https://w3id.org/linkml/transformer
    +    range: string
    +  hide:
    +    name: hide
    +    description: True if this is suppressed
    +    from_schema: https://w3id.org/linkml/transformer
    +    range: boolean
    +  permissible_value_derivations:
    +    name: permissible_value_derivations
    +    description: Instructions on how to derive a set of PVs in the target schema
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    multivalued: true
    +    range: PermissibleValueDerivation
    +    inlined: true
    +
    +
    +
    +

    Induced

    +
    +
    name: EnumDerivation
    +description: A specification of how to derive the value of a target enum from a source
    +  enum
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +is_a: ElementDerivation
    +attributes:
    +  name:
    +    name: name
    +    description: Target enum name
    +    from_schema: https://w3id.org/linkml/transformer
    +    key: true
    +    alias: name
    +    owner: EnumDerivation
    +    domain_of:
    +    - ElementDerivation
    +    - ClassDerivation
    +    - SlotDerivation
    +    - EnumDerivation
    +    - PermissibleValueDerivation
    +  populated_from:
    +    name: populated_from
    +    description: Source enum name
    +    from_schema: https://w3id.org/linkml/transformer
    +    alias: populated_from
    +    owner: EnumDerivation
    +    domain_of:
    +    - ClassDerivation
    +    - SlotDerivation
    +    - EnumDerivation
    +    range: string
    +  expr:
    +    name: expr
    +    description: An expression to be evaluated on the source object to derive the
    +      target slot. Should be specified using the LinkML expression language.
    +    from_schema: https://w3id.org/linkml/transformer
    +    alias: expr
    +    owner: EnumDerivation
    +    domain_of:
    +    - SlotDerivation
    +    - EnumDerivation
    +    - PermissibleValueDerivation
    +    range: string
    +  hide:
    +    name: hide
    +    description: True if this is suppressed
    +    from_schema: https://w3id.org/linkml/transformer
    +    alias: hide
    +    owner: EnumDerivation
    +    domain_of:
    +    - SlotDerivation
    +    - EnumDerivation
    +    - PermissibleValueDerivation
    +    range: boolean
    +  permissible_value_derivations:
    +    name: permissible_value_derivations
    +    description: Instructions on how to derive a set of PVs in the target schema
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    multivalued: true
    +    alias: permissible_value_derivations
    +    owner: EnumDerivation
    +    domain_of:
    +    - EnumDerivation
    +    range: PermissibleValueDerivation
    +    inlined: true
    +  copy_directives:
    +    name: copy_directives
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    multivalued: true
    +    alias: copy_directives
    +    owner: EnumDerivation
    +    domain_of:
    +    - ElementDerivation
    +    range: CopyDirective
    +    inlined: true
    +  is_a:
    +    name: is_a
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    alias: is_a
    +    owner: EnumDerivation
    +    domain_of:
    +    - ElementDerivation
    +    range: ElementDerivation
    +  mixins:
    +    name: mixins
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    multivalued: true
    +    alias: mixins
    +    owner: EnumDerivation
    +    domain_of:
    +    - ElementDerivation
    +    range: ElementDerivation
    +    inlined: true
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/Float/index.html b/Float/index.html new file mode 100644 index 0000000..c451f45 --- /dev/null +++ b/Float/index.html @@ -0,0 +1,375 @@ + + + + + + + + + + + + + + + + + + Type: Float - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Type: Float

    +

    A real number that conforms to the xsd:float specification

    +

    URI: xsd:float

    +
      +
    • +

      base: float

      +
    • +
    • +

      uri: xsd:float

      +
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/types
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/Integer/index.html b/Integer/index.html new file mode 100644 index 0000000..0e72e5a --- /dev/null +++ b/Integer/index.html @@ -0,0 +1,375 @@ + + + + + + + + + + + + + + + + + + Type: Integer - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Type: Integer

    +

    An integer

    +

    URI: xsd:integer

    +
      +
    • +

      base: int

      +
    • +
    • +

      uri: xsd:integer

      +
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/types
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/Inverse/index.html b/Inverse/index.html index d29045b..4d5844a 100644 --- a/Inverse/index.html +++ b/Inverse/index.html @@ -7,9 +7,9 @@ - + Class: Inverse - LinkML-Transformer - + @@ -64,7 +64,7 @@ @@ -84,7 +84,7 @@
    - +
    GitHub @@ -109,7 +109,7 @@
    - +
    GitHub @@ -157,6 +157,11 @@
  • + + Aliases + +
  • +
  • Identifier and Mapping Information @@ -176,10 +181,10 @@
  • - - LinkML Specification + + LinkML Source -
  • @@ -347,7 +367,7 @@

    Induced

    - - + + \ No newline at end of file diff --git a/KeyVal/index.html b/KeyVal/index.html new file mode 100644 index 0000000..241ec15 --- /dev/null +++ b/KeyVal/index.html @@ -0,0 +1,334 @@ + + + + + + + + + + +Class: KeyVal - LinkML-Transformer + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + + +

    Class: KeyVal

    +

    URI: linkmltr:KeyVal

    +
    classDiagram + class KeyVal + KeyVal : key + KeyVal : value + +
    + +

    Slots

    + + + + + + + + + + + + + + + + + + + + + + + +
    NameCardinality and RangeDescriptionInheritance
    key0..1
    xsd:string
    direct
    value0..1
    Any
    direct
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    Mappings

    + + + + + + + + + + + + + + + + + +
    Mapping TypeMapped Value
    selflinkmltr:KeyVal
    nativelinkmltr:KeyVal
    +

    LinkML Source

    + +

    Direct

    +
    +
    name: KeyVal
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +attributes:
    +  key:
    +    name: key
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    key: true
    +  value:
    +    name: value
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    range: Any
    +
    +
    +
    +

    Induced

    +
    +
    name: KeyVal
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +attributes:
    +  key:
    +    name: key
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    key: true
    +    alias: key
    +    owner: KeyVal
    +    domain_of:
    +    - KeyVal
    +  value:
    +    name: value
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    alias: value
    +    owner: KeyVal
    +    domain_of:
    +    - KeyVal
    +    range: Any
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/Ncname/index.html b/Ncname/index.html new file mode 100644 index 0000000..f4d2c59 --- /dev/null +++ b/Ncname/index.html @@ -0,0 +1,378 @@ + + + + + + + + + + + + + + + + + + Type: Ncname - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Type: Ncname

    +

    Prefix part of CURIE

    +

    URI: xsd:string

    +
      +
    • +

      base: NCName

      +
    • +
    • +

      uri: xsd:string

      +
    • +
    • +

      repr: str

      +
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/types
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/Nodeidentifier/index.html b/Nodeidentifier/index.html new file mode 100644 index 0000000..0e10a10 --- /dev/null +++ b/Nodeidentifier/index.html @@ -0,0 +1,378 @@ + + + + + + + + + + + + + + + + + + Type: Nodeidentifier - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Type: Nodeidentifier

    +

    A URI, CURIE or BNODE that represents a node in a model.

    +

    URI: shex:nonLiteral

    +
      +
    • +

      base: NodeIdentifier

      +
    • +
    • +

      uri: shex:nonLiteral

      +
    • +
    • +

      repr: str

      +
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/types
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/Objectidentifier/index.html b/Objectidentifier/index.html new file mode 100644 index 0000000..1df7ada --- /dev/null +++ b/Objectidentifier/index.html @@ -0,0 +1,389 @@ + + + + + + + + + + + + + + + + + + Type: Objectidentifier - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Type: Objectidentifier

    +

    A URI or CURIE that represents an object in the model.

    +

    URI: shex:iri

    +
      +
    • +

      base: ElementIdentifier

      +
    • +
    • +

      uri: shex:iri

      +
    • +
    • +

      repr: str

      +
    • +
    +

    Comments

    +
      +
    • Used for inheritence and type checking
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/types
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/PermissibleValueDerivation/index.html b/PermissibleValueDerivation/index.html new file mode 100644 index 0000000..ba6f186 --- /dev/null +++ b/PermissibleValueDerivation/index.html @@ -0,0 +1,466 @@ + + + + + + + + + + +Class: PermissibleValueDerivation - LinkML-Transformer + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    + +
    +
    + + + +

    Class: PermissibleValueDerivation

    +

    A specification of how to derive the value of a PV from a source enum

    +

    URI: linkmltr:PermissibleValueDerivation

    +
    classDiagram + class PermissibleValueDerivation + ElementDerivation <|-- PermissibleValueDerivation + + PermissibleValueDerivation : copy_directives + PermissibleValueDerivation : expr + PermissibleValueDerivation : hide + PermissibleValueDerivation : is_a + PermissibleValueDerivation : mixins + PermissibleValueDerivation : name + +
    +

    Inheritance

    + +

    Slots

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameCardinality and RangeDescriptionInheritance
    name0..1
    xsd:string
    direct
    expr0..1
    xsd:string
    direct
    hide0..1
    xsd:string
    direct
    copy_directives0..*
    CopyDirective
    ElementDerivation
    is_a0..1
    ElementDerivation
    ElementDerivation
    mixins0..*
    ElementDerivation
    ElementDerivation
    +

    Usages

    + + + + + + + + + + + + + + + + + +
    used byused intypeused
    EnumDerivationpermissible_value_derivationsrangePermissibleValueDerivation
    +

    TODOs

    +
      +
    • this is currently under-specified. We will need boolean combinators to express if-then-else
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    Mappings

    + + + + + + + + + + + + + + + + + +
    Mapping TypeMapped Value
    selflinkmltr:PermissibleValueDerivation
    nativelinkmltr:PermissibleValueDerivation
    +

    LinkML Source

    + +

    Direct

    +
    +
    name: PermissibleValueDerivation
    +description: A specification of how to derive the value of a PV from a source enum
    +todos:
    +- this is currently under-specified. We will need boolean combinators to express if-then-else
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +is_a: ElementDerivation
    +attributes:
    +  name:
    +    name: name
    +    description: Target permissible value text
    +    from_schema: https://w3id.org/linkml/transformer
    +    key: true
    +  expr:
    +    name: expr
    +    from_schema: https://w3id.org/linkml/transformer
    +    range: string
    +  hide:
    +    name: hide
    +    from_schema: https://w3id.org/linkml/transformer
    +    range: boolean
    +
    +
    +
    +

    Induced

    +
    +
    name: PermissibleValueDerivation
    +description: A specification of how to derive the value of a PV from a source enum
    +todos:
    +- this is currently under-specified. We will need boolean combinators to express if-then-else
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +is_a: ElementDerivation
    +attributes:
    +  name:
    +    name: name
    +    description: Target permissible value text
    +    from_schema: https://w3id.org/linkml/transformer
    +    key: true
    +    alias: name
    +    owner: PermissibleValueDerivation
    +    domain_of:
    +    - ElementDerivation
    +    - ClassDerivation
    +    - SlotDerivation
    +    - EnumDerivation
    +    - PermissibleValueDerivation
    +  expr:
    +    name: expr
    +    from_schema: https://w3id.org/linkml/transformer
    +    alias: expr
    +    owner: PermissibleValueDerivation
    +    domain_of:
    +    - SlotDerivation
    +    - EnumDerivation
    +    - PermissibleValueDerivation
    +    range: string
    +  hide:
    +    name: hide
    +    from_schema: https://w3id.org/linkml/transformer
    +    alias: hide
    +    owner: PermissibleValueDerivation
    +    domain_of:
    +    - SlotDerivation
    +    - EnumDerivation
    +    - PermissibleValueDerivation
    +    range: boolean
    +  copy_directives:
    +    name: copy_directives
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    multivalued: true
    +    alias: copy_directives
    +    owner: PermissibleValueDerivation
    +    domain_of:
    +    - ElementDerivation
    +    range: CopyDirective
    +    inlined: true
    +  is_a:
    +    name: is_a
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    alias: is_a
    +    owner: PermissibleValueDerivation
    +    domain_of:
    +    - ElementDerivation
    +    range: ElementDerivation
    +  mixins:
    +    name: mixins
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    multivalued: true
    +    alias: mixins
    +    owner: PermissibleValueDerivation
    +    domain_of:
    +    - ElementDerivation
    +    range: ElementDerivation
    +    inlined: true
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/PrefixDerivation/index.html b/PrefixDerivation/index.html new file mode 100644 index 0000000..d7565ed --- /dev/null +++ b/PrefixDerivation/index.html @@ -0,0 +1,380 @@ + + + + + + + + + + +Class: PrefixDerivation - LinkML-Transformer + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + + +

    Class: PrefixDerivation

    +

    URI: linkmltr:PrefixDerivation

    +
    classDiagram + class PrefixDerivation + ElementDerivation <|-- PrefixDerivation + + PrefixDerivation : copy_directives + PrefixDerivation : is_a + PrefixDerivation : mixins + PrefixDerivation : name + +
    +

    Inheritance

    + +

    Slots

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameCardinality and RangeDescriptionInheritance
    name0..1
    xsd:string
    Name of the element in the target schemaElementDerivation
    copy_directives0..*
    CopyDirective
    ElementDerivation
    is_a0..1
    ElementDerivation
    ElementDerivation
    mixins0..*
    ElementDerivation
    ElementDerivation
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    Mappings

    + + + + + + + + + + + + + + + + + +
    Mapping TypeMapped Value
    selflinkmltr:PrefixDerivation
    nativelinkmltr:PrefixDerivation
    +

    LinkML Source

    + +

    Direct

    +
    +
    name: PrefixDerivation
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +is_a: ElementDerivation
    +
    +
    +
    +

    Induced

    +
    +
    name: PrefixDerivation
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +is_a: ElementDerivation
    +attributes:
    +  name:
    +    name: name
    +    description: Name of the element in the target schema
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    key: true
    +    alias: name
    +    owner: PrefixDerivation
    +    domain_of:
    +    - ElementDerivation
    +    - ClassDerivation
    +    - SlotDerivation
    +    - EnumDerivation
    +    - PermissibleValueDerivation
    +    range: string
    +  copy_directives:
    +    name: copy_directives
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    multivalued: true
    +    alias: copy_directives
    +    owner: PrefixDerivation
    +    domain_of:
    +    - ElementDerivation
    +    range: CopyDirective
    +    inlined: true
    +  is_a:
    +    name: is_a
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    alias: is_a
    +    owner: PrefixDerivation
    +    domain_of:
    +    - ElementDerivation
    +    range: ElementDerivation
    +  mixins:
    +    name: mixins
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    multivalued: true
    +    alias: mixins
    +    owner: PrefixDerivation
    +    domain_of:
    +    - ElementDerivation
    +    range: ElementDerivation
    +    inlined: true
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/SlotDerivation/index.html b/SlotDerivation/index.html index 98dbd37..21808af 100644 --- a/SlotDerivation/index.html +++ b/SlotDerivation/index.html @@ -7,9 +7,9 @@ - + Class: SlotDerivation - LinkML-Transformer - + @@ -64,7 +64,7 @@ @@ -84,7 +84,7 @@
    - +
    GitHub @@ -109,7 +109,7 @@
    - +
    GitHub @@ -147,6 +147,11 @@
    • + + Inheritance + +
    • +
    • Slots @@ -176,10 +181,10 @@
    • - - LinkML Specification + + LinkML Source -
    +
    @@ -417,7 +540,7 @@

    Induced

    - - + + \ No newline at end of file diff --git a/String/index.html b/String/index.html new file mode 100644 index 0000000..b188d0b --- /dev/null +++ b/String/index.html @@ -0,0 +1,375 @@ + + + + + + + + + + + + + + + + + + Type: String - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Type: String

    +

    A character string

    +

    URI: xsd:string

    +
      +
    • +

      base: str

      +
    • +
    • +

      uri: xsd:string

      +
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/types
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/Time/index.html b/Time/index.html new file mode 100644 index 0000000..0eadaf5 --- /dev/null +++ b/Time/index.html @@ -0,0 +1,378 @@ + + + + + + + + + + + + + + + + + + Type: Time - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Type: Time

    +

    A time object represents a (local) time of day, independent of any particular day

    +

    URI: xsd:dateTime

    +
      +
    • +

      base: XSDTime

      +
    • +
    • +

      uri: xsd:dateTime

      +
    • +
    • +

      repr: str

      +
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/types
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/TransformationSpecification/index.html b/TransformationSpecification/index.html index 58669f4..316df2c 100644 --- a/TransformationSpecification/index.html +++ b/TransformationSpecification/index.html @@ -7,9 +7,9 @@ - + Class: TransformationSpecification - LinkML-Transformer - + @@ -64,7 +64,7 @@ @@ -84,7 +84,7 @@
    - +
    GitHub @@ -109,7 +109,7 @@
    - +
    GitHub @@ -152,11 +152,6 @@
  • - - Usages - -
  • -
  • Identifier and Mapping Information @@ -176,10 +171,10 @@
  • - - LinkML Specification + + LinkML Source -
  • @@ -400,7 +484,7 @@

    Induced

    - - + + \ No newline at end of file diff --git a/Uri/index.html b/Uri/index.html new file mode 100644 index 0000000..00e2493 --- /dev/null +++ b/Uri/index.html @@ -0,0 +1,389 @@ + + + + + + + + + + + + + + + + + + Type: Uri - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Type: Uri

    +

    a complete URI

    +

    URI: xsd:anyURI

    + +

    Comments

    +
      +
    • in RDF serializations a slot with range of uri is treated as a literal or type xsd:anyURI unless it is an identifier or a reference to an identifier, in which case it is translated directly to a node
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/types
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/Uriorcurie/index.html b/Uriorcurie/index.html new file mode 100644 index 0000000..1c34ad1 --- /dev/null +++ b/Uriorcurie/index.html @@ -0,0 +1,378 @@ + + + + + + + + + + + + + + + + + + Type: Uriorcurie - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Type: Uriorcurie

    +

    a URI or a CURIE

    +

    URI: xsd:anyURI

    +
      +
    • +

      base: URIorCURIE

      +
    • +
    • +

      uri: xsd:anyURI

      +
    • +
    • +

      repr: str

      +
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/types
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/add/index.html b/add/index.html new file mode 100644 index 0000000..cab7901 --- /dev/null +++ b/add/index.html @@ -0,0 +1,423 @@ + + + + + + + + + + + + + + + + + + Slot: add - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Slot: add

    +

    URI: linkmltr:add

    + + +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    CopyDirective
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: add
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: add
    +owner: CopyDirective
    +domain_of:
    +- CopyDirective
    +range: Any
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/alias/index.html b/alias/index.html index 89e75b0..49b012b 100644 --- a/alias/index.html +++ b/alias/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: alias

    -

    URI: https://w3id.org/linkml/transformer/alias

    +

    name of the class to be aliased

    +

    URI: linkmltr:alias

    +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    AliasedClassalias-class key value pairs for classes

    Properties

    Identifier and Mapping Information

    Schema Source

    • from schema: https://w3id.org/linkml/transformer
    +

    LinkML Source

    +
    +
    name: alias
    +description: name of the class to be aliased
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +key: true
    +alias: alias
    +owner: AliasedClass
    +domain_of:
    +- AliasedClass
    +range: string
     
    +
    +
    - -
    - + + + + + +
    +
    + + -
    @@ -363,10 +416,10 @@

    Schema Source

    - + - + diff --git a/assets/javascripts/bundle.078830c0.min.js b/assets/javascripts/bundle.078830c0.min.js new file mode 100644 index 0000000..af96b24 --- /dev/null +++ b/assets/javascripts/bundle.078830c0.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var aa=Object.create;var wr=Object.defineProperty;var sa=Object.getOwnPropertyDescriptor;var ca=Object.getOwnPropertyNames,kt=Object.getOwnPropertySymbols,fa=Object.getPrototypeOf,Er=Object.prototype.hasOwnProperty,fn=Object.prototype.propertyIsEnumerable;var cn=(e,t,r)=>t in e?wr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,H=(e,t)=>{for(var r in t||(t={}))Er.call(t,r)&&cn(e,r,t[r]);if(kt)for(var r of kt(t))fn.call(t,r)&&cn(e,r,t[r]);return e};var un=(e,t)=>{var r={};for(var n in e)Er.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&kt)for(var n of kt(e))t.indexOf(n)<0&&fn.call(e,n)&&(r[n]=e[n]);return r};var yt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ua=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ca(t))!Er.call(e,o)&&o!==r&&wr(e,o,{get:()=>t[o],enumerable:!(n=sa(t,o))||n.enumerable});return e};var Ye=(e,t,r)=>(r=e!=null?aa(fa(e)):{},ua(t||!e||!e.__esModule?wr(r,"default",{value:e,enumerable:!0}):r,e));var ln=yt((Sr,pn)=>{(function(e,t){typeof Sr=="object"&&typeof pn!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(Sr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(_){return!!(_&&_!==document&&_.nodeName!=="HTML"&&_.nodeName!=="BODY"&&"classList"in _&&"contains"in _.classList)}function c(_){var We=_.type,Fe=_.tagName;return!!(Fe==="INPUT"&&s[We]&&!_.readOnly||Fe==="TEXTAREA"&&!_.readOnly||_.isContentEditable)}function f(_){_.classList.contains("focus-visible")||(_.classList.add("focus-visible"),_.setAttribute("data-focus-visible-added",""))}function u(_){!_.hasAttribute("data-focus-visible-added")||(_.classList.remove("focus-visible"),_.removeAttribute("data-focus-visible-added"))}function p(_){_.metaKey||_.altKey||_.ctrlKey||(a(r.activeElement)&&f(r.activeElement),n=!0)}function l(_){n=!1}function d(_){!a(_.target)||(n||c(_.target))&&f(_.target)}function h(_){!a(_.target)||(_.target.classList.contains("focus-visible")||_.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(_.target))}function b(_){document.visibilityState==="hidden"&&(o&&(n=!0),U())}function U(){document.addEventListener("mousemove",W),document.addEventListener("mousedown",W),document.addEventListener("mouseup",W),document.addEventListener("pointermove",W),document.addEventListener("pointerdown",W),document.addEventListener("pointerup",W),document.addEventListener("touchmove",W),document.addEventListener("touchstart",W),document.addEventListener("touchend",W)}function G(){document.removeEventListener("mousemove",W),document.removeEventListener("mousedown",W),document.removeEventListener("mouseup",W),document.removeEventListener("pointermove",W),document.removeEventListener("pointerdown",W),document.removeEventListener("pointerup",W),document.removeEventListener("touchmove",W),document.removeEventListener("touchstart",W),document.removeEventListener("touchend",W)}function W(_){_.target.nodeName&&_.target.nodeName.toLowerCase()==="html"||(n=!1,G())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",l,!0),document.addEventListener("pointerdown",l,!0),document.addEventListener("touchstart",l,!0),document.addEventListener("visibilitychange",b,!0),U(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var mn=yt(Or=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(f){return!1}},r=t(),n=function(f){var u={next:function(){var p=f.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(f){return encodeURIComponent(f).replace(/%20/g,"+")},i=function(f){return decodeURIComponent(String(f).replace(/\+/g," "))},s=function(){var f=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var l=typeof p;if(l!=="undefined")if(l==="string")p!==""&&this._fromString(p);else if(p instanceof f){var d=this;p.forEach(function(G,W){d.append(W,G)})}else if(p!==null&&l==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),f._entries&&(f._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Or);(function(e){var t=function(){try{var o=new e.URL("b","http://a/");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(c,f){typeof c!="string"&&(c=String(c)),f&&typeof f!="string"&&(f=String(f));var u=document,p;if(f&&(e.location===void 0||f!==e.location.href)){f=f.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=f,u.head.appendChild(p);try{if(p.href.indexOf(f)!==0)throw new Error(p.href)}catch(_){throw new Error("URL unable to set base "+f+" due to "+_)}}var l=u.createElement("a");l.href=c,p&&(u.body.appendChild(l),l.href=l.href);var d=u.createElement("input");if(d.type="url",d.value=c,l.protocol===":"||!/:/.test(l.href)||!d.checkValidity()&&!f)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:l});var h=new e.URLSearchParams(this.search),b=!0,U=!0,G=this;["append","delete","set"].forEach(function(_){var We=h[_];h[_]=function(){We.apply(h,arguments),b&&(U=!1,G.search=h.toString(),U=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var W=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==W&&(W=this.search,U&&(b=!1,this.searchParams._fromString(this.search),b=!0))}})},s=i.prototype,a=function(c){Object.defineProperty(s,c,{get:function(){return this._anchorElement[c]},set:function(f){this._anchorElement[c]=f},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(c){a(c)}),Object.defineProperty(s,"search",{get:function(){return this._anchorElement.search},set:function(c){this._anchorElement.search=c,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(s,{toString:{get:function(){var c=this;return function(){return c.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(c){this._anchorElement.href=c,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(c){this._anchorElement.pathname=c},enumerable:!0},origin:{get:function(){var c={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],f=this._anchorElement.port!=c&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(f?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(c){},enumerable:!0},username:{get:function(){return""},set:function(c){},enumerable:!0}}),i.createObjectURL=function(c){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(c){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Or)});var Pn=yt((Ks,$t)=>{/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */var dn,hn,bn,vn,gn,yn,xn,wn,En,Ht,_r,Sn,On,_n,rt,Tn,Mn,Ln,An,Cn,Rn,kn,Hn,Pt;(function(e){var t=typeof global=="object"?global:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(n){e(r(t,r(n)))}):typeof $t=="object"&&typeof $t.exports=="object"?e(r(t,r($t.exports))):e(r(t));function r(n,o){return n!==t&&(typeof Object.create=="function"?Object.defineProperty(n,"__esModule",{value:!0}):n.__esModule=!0),function(i,s){return n[i]=o?o(i,s):s}}})(function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,o){n.__proto__=o}||function(n,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(n[i]=o[i])};dn=function(n,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");t(n,o);function i(){this.constructor=n}n.prototype=o===null?Object.create(o):(i.prototype=o.prototype,new i)},hn=Object.assign||function(n){for(var o,i=1,s=arguments.length;i=0;u--)(f=n[u])&&(c=(a<3?f(c):a>3?f(o,i,c):f(o,i))||c);return a>3&&c&&Object.defineProperty(o,i,c),c},gn=function(n,o){return function(i,s){o(i,s,n)}},yn=function(n,o){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,o)},xn=function(n,o,i,s){function a(c){return c instanceof i?c:new i(function(f){f(c)})}return new(i||(i=Promise))(function(c,f){function u(d){try{l(s.next(d))}catch(h){f(h)}}function p(d){try{l(s.throw(d))}catch(h){f(h)}}function l(d){d.done?c(d.value):a(d.value).then(u,p)}l((s=s.apply(n,o||[])).next())})},wn=function(n,o){var i={label:0,sent:function(){if(c[0]&1)throw c[1];return c[1]},trys:[],ops:[]},s,a,c,f;return f={next:u(0),throw:u(1),return:u(2)},typeof Symbol=="function"&&(f[Symbol.iterator]=function(){return this}),f;function u(l){return function(d){return p([l,d])}}function p(l){if(s)throw new TypeError("Generator is already executing.");for(;i;)try{if(s=1,a&&(c=l[0]&2?a.return:l[0]?a.throw||((c=a.return)&&c.call(a),0):a.next)&&!(c=c.call(a,l[1])).done)return c;switch(a=0,c&&(l=[l[0]&2,c.value]),l[0]){case 0:case 1:c=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,a=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(c=i.trys,!(c=c.length>0&&c[c.length-1])&&(l[0]===6||l[0]===2)){i=0;continue}if(l[0]===3&&(!c||l[1]>c[0]&&l[1]=n.length&&(n=void 0),{value:n&&n[s++],done:!n}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")},_r=function(n,o){var i=typeof Symbol=="function"&&n[Symbol.iterator];if(!i)return n;var s=i.call(n),a,c=[],f;try{for(;(o===void 0||o-- >0)&&!(a=s.next()).done;)c.push(a.value)}catch(u){f={error:u}}finally{try{a&&!a.done&&(i=s.return)&&i.call(s)}finally{if(f)throw f.error}}return c},Sn=function(){for(var n=[],o=0;o1||u(b,U)})})}function u(b,U){try{p(s[b](U))}catch(G){h(c[0][3],G)}}function p(b){b.value instanceof rt?Promise.resolve(b.value.v).then(l,d):h(c[0][2],b)}function l(b){u("next",b)}function d(b){u("throw",b)}function h(b,U){b(U),c.shift(),c.length&&u(c[0][0],c[0][1])}},Mn=function(n){var o,i;return o={},s("next"),s("throw",function(a){throw a}),s("return"),o[Symbol.iterator]=function(){return this},o;function s(a,c){o[a]=n[a]?function(f){return(i=!i)?{value:rt(n[a](f)),done:a==="return"}:c?c(f):f}:c}},Ln=function(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n[Symbol.asyncIterator],i;return o?o.call(n):(n=typeof Ht=="function"?Ht(n):n[Symbol.iterator](),i={},s("next"),s("throw"),s("return"),i[Symbol.asyncIterator]=function(){return this},i);function s(c){i[c]=n[c]&&function(f){return new Promise(function(u,p){f=n[c](f),a(u,p,f.done,f.value)})}}function a(c,f,u,p){Promise.resolve(p).then(function(l){c({value:l,done:u})},f)}},An=function(n,o){return Object.defineProperty?Object.defineProperty(n,"raw",{value:o}):n.raw=o,n};var r=Object.create?function(n,o){Object.defineProperty(n,"default",{enumerable:!0,value:o})}:function(n,o){n.default=o};Cn=function(n){if(n&&n.__esModule)return n;var o={};if(n!=null)for(var i in n)i!=="default"&&Object.prototype.hasOwnProperty.call(n,i)&&Pt(o,n,i);return r(o,n),o},Rn=function(n){return n&&n.__esModule?n:{default:n}},kn=function(n,o,i,s){if(i==="a"&&!s)throw new TypeError("Private accessor was defined without a getter");if(typeof o=="function"?n!==o||!s:!o.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return i==="m"?s:i==="a"?s.call(n):s?s.value:o.get(n)},Hn=function(n,o,i,s,a){if(s==="m")throw new TypeError("Private method is not writable");if(s==="a"&&!a)throw new TypeError("Private accessor was defined without a setter");if(typeof o=="function"?n!==o||!a:!o.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return s==="a"?a.call(n,i):a?a.value=i:o.set(n,i),i},e("__extends",dn),e("__assign",hn),e("__rest",bn),e("__decorate",vn),e("__param",gn),e("__metadata",yn),e("__awaiter",xn),e("__generator",wn),e("__exportStar",En),e("__createBinding",Pt),e("__values",Ht),e("__read",_r),e("__spread",Sn),e("__spreadArrays",On),e("__spreadArray",_n),e("__await",rt),e("__asyncGenerator",Tn),e("__asyncDelegator",Mn),e("__asyncValues",Ln),e("__makeTemplateObject",An),e("__importStar",Cn),e("__importDefault",Rn),e("__classPrivateFieldGet",kn),e("__classPrivateFieldSet",Hn)})});var Br=yt((At,Yr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof At=="object"&&typeof Yr=="object"?Yr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof At=="object"?At.ClipboardJS=r():t.ClipboardJS=r()})(At,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return ia}});var s=i(279),a=i.n(s),c=i(370),f=i.n(c),u=i(817),p=i.n(u);function l(j){try{return document.execCommand(j)}catch(T){return!1}}var d=function(T){var O=p()(T);return l("cut"),O},h=d;function b(j){var T=document.documentElement.getAttribute("dir")==="rtl",O=document.createElement("textarea");O.style.fontSize="12pt",O.style.border="0",O.style.padding="0",O.style.margin="0",O.style.position="absolute",O.style[T?"right":"left"]="-9999px";var k=window.pageYOffset||document.documentElement.scrollTop;return O.style.top="".concat(k,"px"),O.setAttribute("readonly",""),O.value=j,O}var U=function(T,O){var k=b(T);O.container.appendChild(k);var $=p()(k);return l("copy"),k.remove(),$},G=function(T){var O=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},k="";return typeof T=="string"?k=U(T,O):T instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(T==null?void 0:T.type)?k=U(T.value,O):(k=p()(T),l("copy")),k},W=G;function _(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?_=function(O){return typeof O}:_=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},_(j)}var We=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},O=T.action,k=O===void 0?"copy":O,$=T.container,q=T.target,Te=T.text;if(k!=="copy"&&k!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&_(q)==="object"&&q.nodeType===1){if(k==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(k==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Te)return W(Te,{container:$});if(q)return k==="cut"?h(q):W(q,{container:$})},Fe=We;function Pe(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Pe=function(O){return typeof O}:Pe=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},Pe(j)}function Ji(j,T){if(!(j instanceof T))throw new TypeError("Cannot call a class as a function")}function sn(j,T){for(var O=0;O0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof $.action=="function"?$.action:this.defaultAction,this.target=typeof $.target=="function"?$.target:this.defaultTarget,this.text=typeof $.text=="function"?$.text:this.defaultText,this.container=Pe($.container)==="object"?$.container:document.body}},{key:"listenClick",value:function($){var q=this;this.listener=f()($,"click",function(Te){return q.onClick(Te)})}},{key:"onClick",value:function($){var q=$.delegateTarget||$.currentTarget,Te=this.action(q)||"copy",Rt=Fe({action:Te,container:this.container,target:this.target(q),text:this.text(q)});this.emit(Rt?"success":"error",{action:Te,text:Rt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function($){return xr("action",$)}},{key:"defaultTarget",value:function($){var q=xr("target",$);if(q)return document.querySelector(q)}},{key:"defaultText",value:function($){return xr("text",$)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function($){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return W($,q)}},{key:"cut",value:function($){return h($)}},{key:"isSupported",value:function(){var $=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof $=="string"?[$]:$,Te=!!document.queryCommandSupported;return q.forEach(function(Rt){Te=Te&&!!document.queryCommandSupported(Rt)}),Te}}]),O}(a()),ia=oa},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,c){for(;a&&a.nodeType!==o;){if(typeof a.matches=="function"&&a.matches(c))return a;a=a.parentNode}}n.exports=s},438:function(n,o,i){var s=i(828);function a(u,p,l,d,h){var b=f.apply(this,arguments);return u.addEventListener(l,b,h),{destroy:function(){u.removeEventListener(l,b,h)}}}function c(u,p,l,d,h){return typeof u.addEventListener=="function"?a.apply(null,arguments):typeof l=="function"?a.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(b){return a(b,p,l,d,h)}))}function f(u,p,l,d){return function(h){h.delegateTarget=s(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=c},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(n,o,i){var s=i(879),a=i(438);function c(l,d,h){if(!l&&!d&&!h)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(h))throw new TypeError("Third argument must be a Function");if(s.node(l))return f(l,d,h);if(s.nodeList(l))return u(l,d,h);if(s.string(l))return p(l,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function f(l,d,h){return l.addEventListener(d,h),{destroy:function(){l.removeEventListener(d,h)}}}function u(l,d,h){return Array.prototype.forEach.call(l,function(b){b.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(l,function(b){b.removeEventListener(d,h)})}}}function p(l,d,h){return a(document.body,l,d,h)}n.exports=c},817:function(n){function o(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var c=window.getSelection(),f=document.createRange();f.selectNodeContents(i),c.removeAllRanges(),c.addRange(f),s=c.toString()}return s}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,s,a){var c=this.e||(this.e={});return(c[i]||(c[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var c=this;function f(){c.off(i,f),s.apply(a,arguments)}return f._=s,this.on(i,f,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),c=0,f=a.length;for(c;c{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var Ms=/["'&<>]/;Si.exports=Ls;function Ls(e){var t=""+e,r=Ms.exec(t);if(!r)return t;var n,o="",i=0,s=0;for(i=r.index;i0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,s=o.isStopped,a=o.observers;return i||s?Tr:(this.currentObservers=null,a.push(r),new $e(function(){n.currentObservers=null,Ue(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,n){return new Qn(r,n)},t}(F);var Qn=function(e){ne(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Tr},t}(E);var wt={now:function(){return(wt.delegate||Date).now()},delegate:void 0};var Et=function(e){ne(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=wt);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,a=n._timestampProvider,c=n._windowTime;o||(i.push(r),!s&&i.push(a.now()+c)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,s=o._buffer,a=s.slice(),c=0;c0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=at.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var s=r.actions;n!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==n&&(at.cancelAnimationFrame(n),r._scheduled=void 0)},t}(zt);var Gn=function(e){ne(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Nt);var xe=new Gn(Bn);var R=new F(function(e){return e.complete()});function qt(e){return e&&L(e.schedule)}function Hr(e){return e[e.length-1]}function Ve(e){return L(Hr(e))?e.pop():void 0}function Ee(e){return qt(Hr(e))?e.pop():void 0}function Kt(e,t){return typeof Hr(e)=="number"?e.pop():t}var st=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Qt(e){return L(e==null?void 0:e.then)}function Yt(e){return L(e[it])}function Bt(e){return Symbol.asyncIterator&&L(e==null?void 0:e[Symbol.asyncIterator])}function Gt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function ya(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Jt=ya();function Xt(e){return L(e==null?void 0:e[Jt])}function Zt(e){return jn(this,arguments,function(){var r,n,o,i;return It(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,jt(r.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,jt(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,jt(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function er(e){return L(e==null?void 0:e.getReader)}function z(e){if(e instanceof F)return e;if(e!=null){if(Yt(e))return xa(e);if(st(e))return wa(e);if(Qt(e))return Ea(e);if(Bt(e))return Jn(e);if(Xt(e))return Sa(e);if(er(e))return Oa(e)}throw Gt(e)}function xa(e){return new F(function(t){var r=e[it]();if(L(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function wa(e){return new F(function(t){for(var r=0;r=2,!0))}function ie(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new E}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,c=a===void 0?!0:a;return function(f){var u,p,l,d=0,h=!1,b=!1,U=function(){p==null||p.unsubscribe(),p=void 0},G=function(){U(),u=l=void 0,h=b=!1},W=function(){var _=u;G(),_==null||_.unsubscribe()};return g(function(_,We){d++,!b&&!h&&U();var Fe=l=l!=null?l:r();We.add(function(){d--,d===0&&!b&&!h&&(p=Dr(W,c))}),Fe.subscribe(We),!u&&d>0&&(u=new Ge({next:function(Pe){return Fe.next(Pe)},error:function(Pe){b=!0,U(),p=Dr(G,o,Pe),Fe.error(Pe)},complete:function(){h=!0,U(),p=Dr(G,s),Fe.complete()}}),z(_).subscribe(u))})(f)}}function Dr(e,t){for(var r=[],n=2;ne.next(document)),e}function Q(e,t=document){return Array.from(t.querySelectorAll(e))}function K(e,t=document){let r=pe(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function pe(e,t=document){return t.querySelector(e)||void 0}function Ie(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function nr(e){return A(v(document.body,"focusin"),v(document.body,"focusout")).pipe(Re(1),m(()=>{let t=Ie();return typeof t!="undefined"?e.contains(t):!1}),N(e===Ie()),B())}function qe(e){return{x:e.offsetLeft,y:e.offsetTop}}function yo(e){return A(v(window,"load"),v(window,"resize")).pipe(Ae(0,xe),m(()=>qe(e)),N(qe(e)))}function or(e){return{x:e.scrollLeft,y:e.scrollTop}}function pt(e){return A(v(e,"scroll"),v(window,"resize")).pipe(Ae(0,xe),m(()=>or(e)),N(or(e)))}var wo=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!qr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),Ka?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!qr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=qa.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Eo=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Oo=typeof WeakMap!="undefined"?new WeakMap:new wo,_o=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=Qa.getInstance(),n=new ns(t,r,this);Oo.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){_o.prototype[e]=function(){var t;return(t=Oo.get(this))[e].apply(t,arguments)}});var os=function(){return typeof ir.ResizeObserver!="undefined"?ir.ResizeObserver:_o}(),To=os;var Mo=new E,is=P(()=>I(new To(e=>{for(let t of e)Mo.next(t)}))).pipe(S(e=>A(Se,I(e)).pipe(C(()=>e.disconnect()))),X(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ve(e){return is.pipe(w(t=>t.observe(e)),S(t=>Mo.pipe(x(({target:r})=>r===e),C(()=>t.unobserve(e)),m(()=>he(e)))),N(he(e)))}function mt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function cr(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var Lo=new E,as=P(()=>I(new IntersectionObserver(e=>{for(let t of e)Lo.next(t)},{threshold:0}))).pipe(S(e=>A(Se,I(e)).pipe(C(()=>e.disconnect()))),X(1));function fr(e){return as.pipe(w(t=>t.observe(e)),S(t=>Lo.pipe(x(({target:r})=>r===e),C(()=>t.unobserve(e)),m(({isIntersecting:r})=>r))))}function Ao(e,t=16){return pt(e).pipe(m(({y:r})=>{let n=he(e),o=mt(e);return r>=o.height-n.height-t}),B())}var ur={drawer:K("[data-md-toggle=drawer]"),search:K("[data-md-toggle=search]")};function Co(e){return ur[e].checked}function Ke(e,t){ur[e].checked!==t&&ur[e].click()}function dt(e){let t=ur[e];return v(t,"change").pipe(m(()=>t.checked),N(t.checked))}function ss(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ro(){return v(window,"keydown").pipe(x(e=>!(e.metaKey||e.ctrlKey)),m(e=>({mode:Co("search")?"search":"global",type:e.key,claim(){e.preventDefault(),e.stopPropagation()}})),x(({mode:e,type:t})=>{if(e==="global"){let r=Ie();if(typeof r!="undefined")return!ss(r,t)}return!0}),ie())}function Oe(){return new URL(location.href)}function pr(e){location.href=e.href}function ko(){return new E}function Ho(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)Ho(e,r)}function M(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)Ho(n,o);return n}function Po(e,t){let r=t;if(e.length>r){for(;e[r]!==" "&&--r>0;);return`${e.substring(0,r)}...`}return e}function lr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function $o(){return location.hash.substring(1)}function Io(e){let t=M("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function cs(){return v(window,"hashchange").pipe(m($o),N($o()),x(e=>e.length>0),X(1))}function jo(){return cs().pipe(m(e=>pe(`[id="${e}"]`)),x(e=>typeof e!="undefined"))}function Kr(e){let t=matchMedia(e);return rr(r=>t.addListener(()=>r(t.matches))).pipe(N(t.matches))}function Fo(){let e=matchMedia("print");return A(v(window,"beforeprint").pipe(m(()=>!0)),v(window,"afterprint").pipe(m(()=>!1))).pipe(N(e.matches))}function Qr(e,t){return e.pipe(S(r=>r?t():R))}function mr(e,t={credentials:"same-origin"}){return ue(fetch(`${e}`,t)).pipe(ce(()=>R),S(r=>r.status!==200?Ot(()=>new Error(r.statusText)):I(r)))}function je(e,t){return mr(e,t).pipe(S(r=>r.json()),X(1))}function Uo(e,t){let r=new DOMParser;return mr(e,t).pipe(S(n=>n.text()),m(n=>r.parseFromString(n,"text/xml")),X(1))}function Do(e){let t=M("script",{src:e});return P(()=>(document.head.appendChild(t),A(v(t,"load"),v(t,"error").pipe(S(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(m(()=>{}),C(()=>document.head.removeChild(t)),oe(1))))}function Wo(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function Vo(){return A(v(window,"scroll",{passive:!0}),v(window,"resize",{passive:!0})).pipe(m(Wo),N(Wo()))}function zo(){return{width:innerWidth,height:innerHeight}}function No(){return v(window,"resize",{passive:!0}).pipe(m(zo),N(zo()))}function qo(){return Y([Vo(),No()]).pipe(m(([e,t])=>({offset:e,size:t})),X(1))}function dr(e,{viewport$:t,header$:r}){let n=t.pipe(J("size")),o=Y([n,r]).pipe(m(()=>qe(e)));return Y([r,t,o]).pipe(m(([{height:i},{offset:s,size:a},{x:c,y:f}])=>({offset:{x:s.x-c,y:s.y-f+i},size:a})))}function Ko(e,{tx$:t}){let r=v(e,"message").pipe(m(({data:n})=>n));return t.pipe(Lt(()=>r,{leading:!0,trailing:!0}),w(n=>e.postMessage(n)),S(()=>r),ie())}var fs=K("#__config"),ht=JSON.parse(fs.textContent);ht.base=`${new URL(ht.base,Oe())}`;function le(){return ht}function Z(e){return ht.features.includes(e)}function re(e,t){return typeof t!="undefined"?ht.translations[e].replace("#",t.toString()):ht.translations[e]}function _e(e,t=document){return K(`[data-md-component=${e}]`,t)}function te(e,t=document){return Q(`[data-md-component=${e}]`,t)}function us(e){let t=K(".md-typeset > :first-child",e);return v(t,"click",{once:!0}).pipe(m(()=>K(".md-typeset",e)),m(r=>({hash:__md_hash(r.innerHTML)})))}function Qo(e){return!Z("announce.dismiss")||!e.childElementCount?R:P(()=>{let t=new E;return t.pipe(N({hash:__md_get("__announce")})).subscribe(({hash:r})=>{var n;r&&r===((n=__md_get("__announce"))!=null?n:r)&&(e.hidden=!0,__md_set("__announce",r))}),us(e).pipe(w(r=>t.next(r)),C(()=>t.complete()),m(r=>H({ref:e},r)))})}function ps(e,{target$:t}){return t.pipe(m(r=>({hidden:r!==e})))}function Yo(e,t){let r=new E;return r.subscribe(({hidden:n})=>{e.hidden=n}),ps(e,t).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))}var ii=Ye(Br());function Gr(e){return M("div",{class:"md-tooltip",id:e},M("div",{class:"md-tooltip__inner md-typeset"}))}function Bo(e,t){if(t=t?`${t}_annotation_${e}`:void 0,t){let r=t?`#${t}`:void 0;return M("aside",{class:"md-annotation",tabIndex:0},Gr(t),M("a",{href:r,class:"md-annotation__index",tabIndex:-1},M("span",{"data-md-annotation-id":e})))}else return M("aside",{class:"md-annotation",tabIndex:0},Gr(t),M("span",{class:"md-annotation__index",tabIndex:-1},M("span",{"data-md-annotation-id":e})))}function Go(e){return M("button",{class:"md-clipboard md-icon",title:re("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}function Jr(e,t){let r=t&2,n=t&1,o=Object.keys(e.terms).filter(a=>!e.terms[a]).reduce((a,c)=>[...a,M("del",null,c)," "],[]).slice(0,-1),i=new URL(e.location);Z("search.highlight")&&i.searchParams.set("h",Object.entries(e.terms).filter(([,a])=>a).reduce((a,[c])=>`${a} ${c}`.trim(),""));let{tags:s}=le();return M("a",{href:`${i}`,class:"md-search-result__link",tabIndex:-1},M("article",{class:["md-search-result__article",...r?["md-search-result__article--document"]:[]].join(" "),"data-md-score":e.score.toFixed(2)},r>0&&M("div",{class:"md-search-result__icon md-icon"}),M("h1",{class:"md-search-result__title"},e.title),n>0&&e.text.length>0&&M("p",{class:"md-search-result__teaser"},Po(e.text,320)),e.tags&&M("div",{class:"md-typeset"},e.tags.map(a=>{let c=a.replace(/<[^>]+>/g,""),f=s?c in s?`md-tag-icon md-tag-icon--${s[c]}`:"md-tag-icon":"";return M("span",{class:`md-tag ${f}`},a)})),n>0&&o.length>0&&M("p",{class:"md-search-result__terms"},re("search.result.term.missing"),": ",...o)))}function Jo(e){let t=e[0].score,r=[...e],n=r.findIndex(f=>!f.location.includes("#")),[o]=r.splice(n,1),i=r.findIndex(f=>f.scoreJr(f,1)),...a.length?[M("details",{class:"md-search-result__more"},M("summary",{tabIndex:-1},a.length>0&&a.length===1?re("search.result.more.one"):re("search.result.more.other",a.length)),...a.map(f=>Jr(f,1)))]:[]];return M("li",{class:"md-search-result__item"},c)}function Xo(e){return M("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>M("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?lr(r):r)))}function Xr(e){let t=`tabbed-control tabbed-control--${e}`;return M("div",{class:t,hidden:!0},M("button",{class:"tabbed-button",tabIndex:-1}))}function Zo(e){return M("div",{class:"md-typeset__scrollwrap"},M("div",{class:"md-typeset__table"},e))}function ls(e){let t=le(),r=new URL(`../${e.version}/`,t.base);return M("li",{class:"md-version__item"},M("a",{href:`${r}`,class:"md-version__link"},e.title))}function ei(e,t){return M("div",{class:"md-version"},M("button",{class:"md-version__current","aria-label":re("select.version.title")},t.title),M("ul",{class:"md-version__list"},e.map(ls)))}function ms(e,t){let r=P(()=>Y([yo(e),pt(t)])).pipe(m(([{x:n,y:o},i])=>{let{width:s,height:a}=he(e);return{x:n-i.x+s/2,y:o-i.y+a/2}}));return nr(e).pipe(S(n=>r.pipe(m(o=>({active:n,offset:o})),oe(+!n||1/0))))}function ti(e,t,{target$:r}){let[n,o]=Array.from(e.children);return P(()=>{let i=new E,s=i.pipe(de(1));return i.subscribe({next({offset:a}){e.style.setProperty("--md-tooltip-x",`${a.x}px`),e.style.setProperty("--md-tooltip-y",`${a.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}}),fr(e).pipe(ee(s)).subscribe(a=>{e.toggleAttribute("data-md-visible",a)}),A(i.pipe(x(({active:a})=>a)),i.pipe(Re(250),x(({active:a})=>!a))).subscribe({next({active:a}){a?e.prepend(n):n.remove()},complete(){e.prepend(n)}}),i.pipe(Ae(16,xe)).subscribe(({active:a})=>{n.classList.toggle("md-tooltip--active",a)}),i.pipe(zr(125,xe),x(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:a})=>a)).subscribe({next(a){a?e.style.setProperty("--md-tooltip-0",`${-a}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}}),v(o,"click").pipe(ee(s),x(a=>!(a.metaKey||a.ctrlKey))).subscribe(a=>a.preventDefault()),v(o,"mousedown").pipe(ee(s),ae(i)).subscribe(([a,{active:c}])=>{var f;if(a.button!==0||a.metaKey||a.ctrlKey)a.preventDefault();else if(c){a.preventDefault();let u=e.parentElement.closest(".md-annotation");u instanceof HTMLElement?u.focus():(f=Ie())==null||f.blur()}}),r.pipe(ee(s),x(a=>a===n),ke(125)).subscribe(()=>e.focus()),ms(e,t).pipe(w(a=>i.next(a)),C(()=>i.complete()),m(a=>H({ref:e},a)))})}function ds(e){let t=[];for(let r of Q(".c, .c1, .cm",e)){let n=[],o=document.createNodeIterator(r,NodeFilter.SHOW_TEXT);for(let i=o.nextNode();i;i=o.nextNode())n.push(i);for(let i of n){let s;for(;s=/(\(\d+\))(!)?/.exec(i.textContent);){let[,a,c]=s;if(typeof c=="undefined"){let f=i.splitText(s.index);i=f.splitText(a.length),t.push(f)}else{i.textContent=a,t.push(i);break}}}}return t}function ri(e,t){t.append(...Array.from(e.childNodes))}function ni(e,t,{target$:r,print$:n}){let o=t.closest("[id]"),i=o==null?void 0:o.id,s=new Map;for(let a of ds(t)){let[,c]=a.textContent.match(/\((\d+)\)/);pe(`li:nth-child(${c})`,e)&&(s.set(c,Bo(c,i)),a.replaceWith(s.get(c)))}return s.size===0?R:P(()=>{let a=new E,c=[];for(let[f,u]of s)c.push([K(".md-typeset",u),K(`li:nth-child(${f})`,e)]);return n.pipe(ee(a.pipe(de(1)))).subscribe(f=>{e.hidden=!f;for(let[u,p]of c)f?ri(u,p):ri(p,u)}),A(...[...s].map(([,f])=>ti(f,t,{target$:r}))).pipe(C(()=>a.complete()),ie())})}var hs=0;function ai(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return ai(t)}}function oi(e){return ve(e).pipe(m(({width:t})=>({scrollable:mt(e).width>t})),J("scrollable"))}function si(e,t){let{matches:r}=matchMedia("(hover)"),n=P(()=>{let o=new E;if(o.subscribe(({scrollable:s})=>{s&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}),ii.default.isSupported()){let s=e.closest("pre");s.id=`__code_${++hs}`,s.insertBefore(Go(s.id),e)}let i=e.closest(".highlight");if(i instanceof HTMLElement){let s=ai(i);if(typeof s!="undefined"&&(i.classList.contains("annotate")||Z("content.code.annotate"))){let a=ni(s,e,t);return oi(e).pipe(w(c=>o.next(c)),C(()=>o.complete()),m(c=>H({ref:e},c)),et(ve(i).pipe(m(({width:c,height:f})=>c&&f),B(),S(c=>c?a:R))))}}return oi(e).pipe(w(s=>o.next(s)),C(()=>o.complete()),m(s=>H({ref:e},s)))});return Z("content.lazy")?fr(e).pipe(x(o=>o),oe(1),S(()=>n)):n}var ci=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:transparent}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel rect,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel rect{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color)}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}defs #flowchart-circleEnd,defs #flowchart-circleStart,defs #flowchart-crossEnd,defs #flowchart-crossStart,defs #flowchart-pointEnd,defs #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}.actor,defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{stroke:var(--md-mermaid-node-fg-color)}text.actor>tspan{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-default-fg-color--lighter)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-edge-color)}.loopText>tspan,.messageText,.noteText>tspan{font-family:var(--md-mermaid-font-family)!important}#arrowhead path,.loopText>tspan,.messageText,.noteText>tspan{fill:var(--md-mermaid-edge-color);stroke:none}.loopLine{stroke:var(--md-mermaid-node-fg-color)}.labelBox,.loopLine{fill:var(--md-mermaid-node-bg-color)}.labelBox{stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-node-fg-color);font-family:var(--md-mermaid-font-family)}";var Zr,vs=0;function gs(){return typeof mermaid=="undefined"||mermaid instanceof Element?Do("https://unpkg.com/mermaid@9.1.7/dist/mermaid.min.js"):I(void 0)}function fi(e){return e.classList.remove("mermaid"),Zr||(Zr=gs().pipe(w(()=>mermaid.initialize({startOnLoad:!1,themeCSS:ci,sequence:{actorFontSize:"16px",messageFontSize:"16px",noteFontSize:"16px"}})),m(()=>{}),X(1))),Zr.subscribe(()=>{e.classList.add("mermaid");let t=`__mermaid_${vs++}`,r=M("div",{class:"mermaid"});mermaid.mermaidAPI.render(t,e.textContent,n=>{let o=r.attachShadow({mode:"closed"});o.innerHTML=n,e.replaceWith(r)})}),Zr.pipe(m(()=>({ref:e})))}function ys(e,{target$:t,print$:r}){let n=!0;return A(t.pipe(m(o=>o.closest("details:not([open])")),x(o=>e===o),m(()=>({action:"open",reveal:!0}))),r.pipe(x(o=>o||!n),w(()=>n=e.open),m(o=>({action:o?"open":"close"}))))}function ui(e,t){return P(()=>{let r=new E;return r.subscribe(({action:n,reveal:o})=>{e.toggleAttribute("open",n==="open"),o&&e.scrollIntoView()}),ys(e,t).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))})}var pi=M("table");function li(e){return e.replaceWith(pi),pi.replaceWith(Zo(e)),I({ref:e})}function xs(e){let t=Q(":scope > input",e),r=t.find(n=>n.checked)||t[0];return A(...t.map(n=>v(n,"change").pipe(m(()=>K(`label[for="${n.id}"]`))))).pipe(N(K(`label[for="${r.id}"]`)),m(n=>({active:n})))}function mi(e,{viewport$:t}){let r=Xr("prev");e.append(r);let n=Xr("next");e.append(n);let o=K(".tabbed-labels",e);return P(()=>{let i=new E,s=i.pipe(de(1));return Y([i,ve(e)]).pipe(Ae(1,xe),ee(s)).subscribe({next([{active:a},c]){let f=qe(a),{width:u}=he(a);e.style.setProperty("--md-indicator-x",`${f.x}px`),e.style.setProperty("--md-indicator-width",`${u}px`);let p=or(o);(f.xp.x+c.width)&&o.scrollTo({left:Math.max(0,f.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),Y([pt(o),ve(o)]).pipe(ee(s)).subscribe(([a,c])=>{let f=mt(o);r.hidden=a.x<16,n.hidden=a.x>f.width-c.width-16}),A(v(r,"click").pipe(m(()=>-1)),v(n,"click").pipe(m(()=>1))).pipe(ee(s)).subscribe(a=>{let{width:c}=he(o);o.scrollBy({left:c*a,behavior:"smooth"})}),Z("content.tabs.link")&&i.pipe(He(1),ae(t)).subscribe(([{active:a},{offset:c}])=>{let f=a.innerText.trim();if(a.hasAttribute("data-md-switching"))a.removeAttribute("data-md-switching");else{let u=e.offsetTop-c.y;for(let l of Q("[data-tabs]"))for(let d of Q(":scope > input",l)){let h=K(`label[for="${d.id}"]`);if(h!==a&&h.innerText.trim()===f){h.setAttribute("data-md-switching",""),d.click();break}}window.scrollTo({top:e.offsetTop-u});let p=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([f,...p])])}}),xs(e).pipe(w(a=>i.next(a)),C(()=>i.complete()),m(a=>H({ref:e},a)))}).pipe(Je(fe))}function di(e,{viewport$:t,target$:r,print$:n}){return A(...Q("pre:not(.mermaid) > code",e).map(o=>si(o,{target$:r,print$:n})),...Q("pre.mermaid",e).map(o=>fi(o)),...Q("table:not([class])",e).map(o=>li(o)),...Q("details",e).map(o=>ui(o,{target$:r,print$:n})),...Q("[data-tabs]",e).map(o=>mi(o,{viewport$:t})))}function ws(e,{alert$:t}){return t.pipe(S(r=>A(I(!0),I(!1).pipe(ke(2e3))).pipe(m(n=>({message:r,active:n})))))}function hi(e,t){let r=K(".md-typeset",e);return P(()=>{let n=new E;return n.subscribe(({message:o,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=o}),ws(e,t).pipe(w(o=>n.next(o)),C(()=>n.complete()),m(o=>H({ref:e},o)))})}function Es({viewport$:e}){if(!Z("header.autohide"))return I(!1);let t=e.pipe(m(({offset:{y:o}})=>o),Ce(2,1),m(([o,i])=>[oMath.abs(i-o.y)>100),m(([,[o]])=>o),B()),n=dt("search");return Y([e,n]).pipe(m(([{offset:o},i])=>o.y>400&&!i),B(),S(o=>o?r:I(!1)),N(!1))}function bi(e,t){return P(()=>Y([ve(e),Es(t)])).pipe(m(([{height:r},n])=>({height:r,hidden:n})),B((r,n)=>r.height===n.height&&r.hidden===n.hidden),X(1))}function vi(e,{header$:t,main$:r}){return P(()=>{let n=new E,o=n.pipe(de(1));return n.pipe(J("active"),Ze(t)).subscribe(([{active:i},{hidden:s}])=>{e.classList.toggle("md-header--shadow",i&&!s),e.hidden=s}),r.subscribe(n),t.pipe(ee(o),m(i=>H({ref:e},i)))})}function Ss(e,{viewport$:t,header$:r}){return dr(e,{viewport$:t,header$:r}).pipe(m(({offset:{y:n}})=>{let{height:o}=he(e);return{active:n>=o}}),J("active"))}function gi(e,t){return P(()=>{let r=new E;r.subscribe(({active:o})=>{e.classList.toggle("md-header__title--active",o)});let n=pe("article h1");return typeof n=="undefined"?R:Ss(n,t).pipe(w(o=>r.next(o)),C(()=>r.complete()),m(o=>H({ref:e},o)))})}function yi(e,{viewport$:t,header$:r}){let n=r.pipe(m(({height:i})=>i),B()),o=n.pipe(S(()=>ve(e).pipe(m(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),J("bottom"))));return Y([n,o,t]).pipe(m(([i,{top:s,bottom:a},{offset:{y:c},size:{height:f}}])=>(f=Math.max(0,f-Math.max(0,s-c,i)-Math.max(0,f+c-a)),{offset:s-i,height:f,active:s-i<=c})),B((i,s)=>i.offset===s.offset&&i.height===s.height&&i.active===s.active))}function Os(e){let t=__md_get("__palette")||{index:e.findIndex(r=>matchMedia(r.getAttribute("data-md-color-media")).matches)};return I(...e).pipe(se(r=>v(r,"change").pipe(m(()=>r))),N(e[Math.max(0,t.index)]),m(r=>({index:e.indexOf(r),color:{scheme:r.getAttribute("data-md-color-scheme"),primary:r.getAttribute("data-md-color-primary"),accent:r.getAttribute("data-md-color-accent")}})),X(1))}function xi(e){return P(()=>{let t=new E;t.subscribe(n=>{document.body.setAttribute("data-md-color-switching","");for(let[o,i]of Object.entries(n.color))document.body.setAttribute(`data-md-color-${o}`,i);for(let o=0;o{document.body.removeAttribute("data-md-color-switching")});let r=Q("input",e);return Os(r).pipe(w(n=>t.next(n)),C(()=>t.complete()),m(n=>H({ref:e},n)))})}var en=Ye(Br());function _s(e){e.setAttribute("data-md-copying","");let t=e.innerText;return e.removeAttribute("data-md-copying"),t}function wi({alert$:e}){en.default.isSupported()&&new F(t=>{new en.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||_s(K(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(w(t=>{t.trigger.focus()}),m(()=>re("clipboard.copied"))).subscribe(e)}function Ts(e){if(e.length<2)return[""];let[t,r]=[...e].sort((o,i)=>o.length-i.length).map(o=>o.replace(/[^/]+$/,"")),n=0;if(t===r)n=t.length;else for(;t.charCodeAt(n)===r.charCodeAt(n);)n++;return e.map(o=>o.replace(t.slice(0,n),""))}function hr(e){let t=__md_get("__sitemap",sessionStorage,e);if(t)return I(t);{let r=le();return Uo(new URL("sitemap.xml",e||r.base)).pipe(m(n=>Ts(Q("loc",n).map(o=>o.textContent))),ce(()=>R),De([]),w(n=>__md_set("__sitemap",n,sessionStorage,e)))}}function Ei({document$:e,location$:t,viewport$:r}){let n=le();if(location.protocol==="file:")return;"scrollRestoration"in history&&(history.scrollRestoration="manual",v(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}));let o=pe("link[rel=icon]");typeof o!="undefined"&&(o.href=o.href);let i=hr().pipe(m(f=>f.map(u=>`${new URL(u,n.base)}`)),S(f=>v(document.body,"click").pipe(x(u=>!u.metaKey&&!u.ctrlKey),S(u=>{if(u.target instanceof Element){let p=u.target.closest("a");if(p&&!p.target){let l=new URL(p.href);if(l.search="",l.hash="",l.pathname!==location.pathname&&f.includes(l.toString()))return u.preventDefault(),I({url:new URL(p.href)})}}return Se}))),ie()),s=v(window,"popstate").pipe(x(f=>f.state!==null),m(f=>({url:new URL(location.href),offset:f.state})),ie());A(i,s).pipe(B((f,u)=>f.url.href===u.url.href),m(({url:f})=>f)).subscribe(t);let a=t.pipe(J("pathname"),S(f=>mr(f.href).pipe(ce(()=>(pr(f),Se)))),ie());i.pipe(ut(a)).subscribe(({url:f})=>{history.pushState({},"",`${f}`)});let c=new DOMParser;a.pipe(S(f=>f.text()),m(f=>c.parseFromString(f,"text/html"))).subscribe(e),e.pipe(He(1)).subscribe(f=>{for(let u of["title","link[rel=canonical]","meta[name=author]","meta[name=description]","[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...Z("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let p=pe(u),l=pe(u,f);typeof p!="undefined"&&typeof l!="undefined"&&p.replaceWith(l)}}),e.pipe(He(1),m(()=>_e("container")),S(f=>Q("script",f)),Ir(f=>{let u=M("script");if(f.src){for(let p of f.getAttributeNames())u.setAttribute(p,f.getAttribute(p));return f.replaceWith(u),new F(p=>{u.onload=()=>p.complete()})}else return u.textContent=f.textContent,f.replaceWith(u),R})).subscribe(),A(i,s).pipe(ut(e)).subscribe(({url:f,offset:u})=>{f.hash&&!u?Io(f.hash):window.scrollTo(0,(u==null?void 0:u.y)||0)}),r.pipe(Mt(i),Re(250),J("offset")).subscribe(({offset:f})=>{history.replaceState(f,"")}),A(i,s).pipe(Ce(2,1),x(([f,u])=>f.url.pathname===u.url.pathname),m(([,f])=>f)).subscribe(({offset:f})=>{window.scrollTo(0,(f==null?void 0:f.y)||0)})}var As=Ye(tn());var Oi=Ye(tn());function rn(e,t){let r=new RegExp(e.separator,"img"),n=(o,i,s)=>`${i}${s}`;return o=>{o=o.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator})(${o.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return s=>(t?(0,Oi.default)(s):s).replace(i,n).replace(/<\/mark>(\s+)]*>/img,"$1")}}function _i(e){return e.split(/"([^"]+)"/g).map((t,r)=>r&1?t.replace(/^\b|^(?![^\x00-\x7F]|$)|\s+/g," +"):t).join("").replace(/"|(?:^|\s+)[*+\-:^~]+(?=\s+|$)/g,"").trim()}function bt(e){return e.type===1}function Ti(e){return e.type===2}function vt(e){return e.type===3}function Rs({config:e,docs:t}){e.lang.length===1&&e.lang[0]==="en"&&(e.lang=[re("search.config.lang")]),e.separator==="[\\s\\-]+"&&(e.separator=re("search.config.separator"));let n={pipeline:re("search.config.pipeline").split(/\s*,\s*/).filter(Boolean),suggestions:Z("search.suggest")};return{config:e,docs:t,options:n}}function Mi(e,t){let r=le(),n=new Worker(e),o=new E,i=Ko(n,{tx$:o}).pipe(m(s=>{if(vt(s))for(let a of s.data.items)for(let c of a)c.location=`${new URL(c.location,r.base)}`;return s}),ie());return ue(t).pipe(m(s=>({type:0,data:Rs(s)}))).subscribe(o.next.bind(o)),{tx$:o,rx$:i}}function Li({document$:e}){let t=le(),r=je(new URL("../versions.json",t.base)).pipe(ce(()=>R)),n=r.pipe(m(o=>{let[,i]=t.base.match(/([^/]+)\/?$/);return o.find(({version:s,aliases:a})=>s===i||a.includes(i))||o[0]}));r.pipe(m(o=>new Map(o.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),S(o=>v(document.body,"click").pipe(x(i=>!i.metaKey&&!i.ctrlKey),ae(n),S(([i,s])=>{if(i.target instanceof Element){let a=i.target.closest("a");if(a&&!a.target&&o.has(a.href)){let c=a.href;return!i.target.closest(".md-version")&&o.get(c)===s?R:(i.preventDefault(),I(c))}}return R}),S(i=>{let{version:s}=o.get(i);return hr(new URL(i)).pipe(m(a=>{let f=Oe().href.replace(t.base,"");return a.includes(f.split("#")[0])?new URL(`../${s}/${f}`,t.base):new URL(i)}))})))).subscribe(o=>pr(o)),Y([r,n]).subscribe(([o,i])=>{K(".md-header__topic").appendChild(ei(o,i))}),e.pipe(S(()=>n)).subscribe(o=>{var s;let i=__md_get("__outdated",sessionStorage);if(i===null){let a=((s=t.version)==null?void 0:s.default)||"latest";i=!o.aliases.includes(a),__md_set("__outdated",i,sessionStorage)}if(i)for(let a of te("outdated"))a.hidden=!1})}function ks(e,{rx$:t}){let r=(__search==null?void 0:__search.transform)||_i,{searchParams:n}=Oe();n.has("q")&&Ke("search",!0);let o=t.pipe(x(bt),oe(1),m(()=>n.get("q")||""));dt("search").pipe(x(a=>!a),oe(1)).subscribe(()=>{let a=new URL(location.href);a.searchParams.delete("q"),history.replaceState({},"",`${a}`)}),o.subscribe(a=>{a&&(e.value=a,e.focus())});let i=nr(e),s=A(v(e,"keyup"),v(e,"focus").pipe(ke(1)),o).pipe(m(()=>r(e.value)),N(""),B());return Y([s,i]).pipe(m(([a,c])=>({value:a,focus:c})),X(1))}function Ai(e,{tx$:t,rx$:r}){let n=new E,o=n.pipe(de(1));return n.pipe(J("value"),m(({value:i})=>({type:2,data:i}))).subscribe(t.next.bind(t)),n.pipe(J("focus")).subscribe(({focus:i})=>{i?(Ke("search",i),e.placeholder=""):e.placeholder=re("search.placeholder")}),v(e.form,"reset").pipe(ee(o)).subscribe(()=>e.focus()),ks(e,{tx$:t,rx$:r}).pipe(w(i=>n.next(i)),C(()=>n.complete()),m(i=>H({ref:e},i)),ie())}function Ci(e,{rx$:t},{query$:r}){let n=new E,o=Ao(e.parentElement).pipe(x(Boolean)),i=K(":scope > :first-child",e),s=K(":scope > :last-child",e),a=t.pipe(x(bt),oe(1));return n.pipe(ae(r),Mt(a)).subscribe(([{items:f},{value:u}])=>{if(u)switch(f.length){case 0:i.textContent=re("search.result.none");break;case 1:i.textContent=re("search.result.one");break;default:i.textContent=re("search.result.other",lr(f.length))}else i.textContent=re("search.result.placeholder")}),n.pipe(w(()=>s.innerHTML=""),S(({items:f})=>A(I(...f.slice(0,10)),I(...f.slice(10)).pipe(Ce(4),Nr(o),S(([u])=>u))))).subscribe(f=>s.appendChild(Jo(f))),t.pipe(x(vt),m(({data:f})=>f)).pipe(w(f=>n.next(f)),C(()=>n.complete()),m(f=>H({ref:e},f)))}function Hs(e,{query$:t}){return t.pipe(m(({value:r})=>{let n=Oe();return n.hash="",n.searchParams.delete("h"),n.searchParams.set("q",r),{url:n}}))}function Ri(e,t){let r=new E;return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),v(e,"click").subscribe(n=>n.preventDefault()),Hs(e,t).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))}function ki(e,{rx$:t},{keyboard$:r}){let n=new E,o=_e("search-query"),i=A(v(o,"keydown"),v(o,"focus")).pipe(Le(fe),m(()=>o.value),B());return n.pipe(Ze(i),m(([{suggestions:a},c])=>{let f=c.split(/([\s-]+)/);if((a==null?void 0:a.length)&&f[f.length-1]){let u=a[a.length-1];u.startsWith(f[f.length-1])&&(f[f.length-1]=u)}else f.length=0;return f})).subscribe(a=>e.innerHTML=a.join("").replace(/\s/g," ")),r.pipe(x(({mode:a})=>a==="search")).subscribe(a=>{switch(a.type){case"ArrowRight":e.innerText.length&&o.selectionStart===o.value.length&&(o.value=e.innerText);break}}),t.pipe(x(vt),m(({data:a})=>a)).pipe(w(a=>n.next(a)),C(()=>n.complete()),m(()=>({ref:e})))}function Hi(e,{index$:t,keyboard$:r}){let n=le();try{let o=(__search==null?void 0:__search.worker)||n.search,i=Mi(o,t),s=_e("search-query",e),a=_e("search-result",e),{tx$:c,rx$:f}=i;c.pipe(x(Ti),ut(f.pipe(x(bt))),oe(1)).subscribe(c.next.bind(c)),r.pipe(x(({mode:l})=>l==="search")).subscribe(l=>{let d=Ie();switch(l.type){case"Enter":if(d===s){let h=new Map;for(let b of Q(":first-child [href]",a)){let U=b.firstElementChild;h.set(b,parseFloat(U.getAttribute("data-md-score")))}if(h.size){let[[b]]=[...h].sort(([,U],[,G])=>G-U);b.click()}l.claim()}break;case"Escape":case"Tab":Ke("search",!1),s.blur();break;case"ArrowUp":case"ArrowDown":if(typeof d=="undefined")s.focus();else{let h=[s,...Q(":not(details) > [href], summary, details[open] [href]",a)],b=Math.max(0,(Math.max(0,h.indexOf(d))+h.length+(l.type==="ArrowUp"?-1:1))%h.length);h[b].focus()}l.claim();break;default:s!==Ie()&&s.focus()}}),r.pipe(x(({mode:l})=>l==="global")).subscribe(l=>{switch(l.type){case"f":case"s":case"/":s.focus(),s.select(),l.claim();break}});let u=Ai(s,i),p=Ci(a,i,{query$:u});return A(u,p).pipe(et(...te("search-share",e).map(l=>Ri(l,{query$:u})),...te("search-suggest",e).map(l=>ki(l,i,{keyboard$:r}))))}catch(o){return e.hidden=!0,Se}}function Pi(e,{index$:t,location$:r}){return Y([t,r.pipe(N(Oe()),x(n=>!!n.searchParams.get("h")))]).pipe(m(([n,o])=>rn(n.config,!0)(o.searchParams.get("h"))),m(n=>{var s;let o=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let a=i.nextNode();a;a=i.nextNode())if((s=a.parentElement)!=null&&s.offsetHeight){let c=a.textContent,f=n(c);f.length>c.length&&o.set(a,f)}for(let[a,c]of o){let{childNodes:f}=M("span",null,c);a.replaceWith(...Array.from(f))}return{ref:e,nodes:o}}))}function Ps(e,{viewport$:t,main$:r}){let n=e.parentElement,o=n.offsetTop-n.parentElement.offsetTop;return Y([r,t]).pipe(m(([{offset:i,height:s},{offset:{y:a}}])=>(s=s+Math.min(o,Math.max(0,a-i))-o,{height:s,locked:a>=i+o})),B((i,s)=>i.height===s.height&&i.locked===s.locked))}function nn(e,n){var o=n,{header$:t}=o,r=un(o,["header$"]);let i=K(".md-sidebar__scrollwrap",e),{y:s}=qe(i);return P(()=>{let a=new E;return a.pipe(Ae(0,xe),ae(t)).subscribe({next([{height:c},{height:f}]){i.style.height=`${c-2*s}px`,e.style.top=`${f}px`},complete(){i.style.height="",e.style.top=""}}),a.pipe(Le(xe),oe(1)).subscribe(()=>{for(let c of Q(".md-nav__link--active[href]",e)){let f=cr(c);if(typeof f!="undefined"){let u=c.offsetTop-f.offsetTop,{height:p}=he(f);f.scrollTo({top:u-p/2})}}}),Ps(e,r).pipe(w(c=>a.next(c)),C(()=>a.complete()),m(c=>H({ref:e},c)))})}function $i(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return _t(je(`${r}/releases/latest`).pipe(ce(()=>R),m(n=>({version:n.tag_name})),De({})),je(r).pipe(ce(()=>R),m(n=>({stars:n.stargazers_count,forks:n.forks_count})),De({}))).pipe(m(([n,o])=>H(H({},n),o)))}else{let r=`https://api.github.com/users/${e}`;return je(r).pipe(m(n=>({repositories:n.public_repos})),De({}))}}function Ii(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return je(r).pipe(ce(()=>R),m(({star_count:n,forks_count:o})=>({stars:n,forks:o})),De({}))}function ji(e){let[t]=e.match(/(git(?:hub|lab))/i)||[];switch(t.toLowerCase()){case"github":let[,r,n]=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);return $i(r,n);case"gitlab":let[,o,i]=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i);return Ii(o,i);default:return R}}var $s;function Is(e){return $s||($s=P(()=>{let t=__md_get("__source",sessionStorage);if(t)return I(t);if(te("consent").length){let n=__md_get("__consent");if(!(n&&n.github))return R}return ji(e.href).pipe(w(n=>__md_set("__source",n,sessionStorage)))}).pipe(ce(()=>R),x(t=>Object.keys(t).length>0),m(t=>({facts:t})),X(1)))}function Fi(e){let t=K(":scope > :last-child",e);return P(()=>{let r=new E;return r.subscribe(({facts:n})=>{t.appendChild(Xo(n)),t.classList.add("md-source__repository--active")}),Is(e).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))})}function js(e,{viewport$:t,header$:r}){return ve(document.body).pipe(S(()=>dr(e,{header$:r,viewport$:t})),m(({offset:{y:n}})=>({hidden:n>=10})),J("hidden"))}function Ui(e,t){return P(()=>{let r=new E;return r.subscribe({next({hidden:n}){e.hidden=n},complete(){e.hidden=!1}}),(Z("navigation.tabs.sticky")?I({hidden:!1}):js(e,t)).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))})}function Fs(e,{viewport$:t,header$:r}){let n=new Map,o=Q("[href^=\\#]",e);for(let a of o){let c=decodeURIComponent(a.hash.substring(1)),f=pe(`[id="${c}"]`);typeof f!="undefined"&&n.set(a,f)}let i=r.pipe(J("height"),m(({height:a})=>{let c=_e("main"),f=K(":scope > :first-child",c);return a+.8*(f.offsetTop-c.offsetTop)}),ie());return ve(document.body).pipe(J("height"),S(a=>P(()=>{let c=[];return I([...n].reduce((f,[u,p])=>{for(;c.length&&n.get(c[c.length-1]).tagName>=p.tagName;)c.pop();let l=p.offsetTop;for(;!l&&p.parentElement;)p=p.parentElement,l=p.offsetTop;return f.set([...c=[...c,u]].reverse(),l)},new Map))}).pipe(m(c=>new Map([...c].sort(([,f],[,u])=>f-u))),Ze(i),S(([c,f])=>t.pipe(Ur(([u,p],{offset:{y:l},size:d})=>{let h=l+d.height>=Math.floor(a.height);for(;p.length;){let[,b]=p[0];if(b-f=l&&!h)p=[u.pop(),...p];else break}return[u,p]},[[],[...c]]),B((u,p)=>u[0]===p[0]&&u[1]===p[1])))))).pipe(m(([a,c])=>({prev:a.map(([f])=>f),next:c.map(([f])=>f)})),N({prev:[],next:[]}),Ce(2,1),m(([a,c])=>a.prev.length{let o=new E,i=o.pipe(de(1));if(o.subscribe(({prev:s,next:a})=>{for(let[c]of a)c.classList.remove("md-nav__link--passed"),c.classList.remove("md-nav__link--active");for(let[c,[f]]of s.entries())f.classList.add("md-nav__link--passed"),f.classList.toggle("md-nav__link--active",c===s.length-1)}),Z("toc.follow")){let s=A(t.pipe(Re(1),m(()=>{})),t.pipe(Re(250),m(()=>"smooth")));o.pipe(x(({prev:a})=>a.length>0),ae(s)).subscribe(([{prev:a},c])=>{let[f]=a[a.length-1];if(f.offsetHeight){let u=cr(f);if(typeof u!="undefined"){let p=f.offsetTop-u.offsetTop,{height:l}=he(u);u.scrollTo({top:p-l/2,behavior:c})}}})}return Z("navigation.tracking")&&t.pipe(ee(i),J("offset"),Re(250),He(1),ee(n.pipe(He(1))),Tt({delay:250}),ae(o)).subscribe(([,{prev:s}])=>{let a=Oe(),c=s[s.length-1];if(c&&c.length){let[f]=c,{hash:u}=new URL(f.href);a.hash!==u&&(a.hash=u,history.replaceState({},"",`${a}`))}else a.hash="",history.replaceState({},"",`${a}`)}),Fs(e,{viewport$:t,header$:r}).pipe(w(s=>o.next(s)),C(()=>o.complete()),m(s=>H({ref:e},s)))})}function Us(e,{viewport$:t,main$:r,target$:n}){let o=t.pipe(m(({offset:{y:s}})=>s),Ce(2,1),m(([s,a])=>s>a&&a>0),B()),i=r.pipe(m(({active:s})=>s));return Y([i,o]).pipe(m(([s,a])=>!(s&&a)),B(),ee(n.pipe(He(1))),Fr(!0),Tt({delay:250}),m(s=>({hidden:s})))}function Wi(e,{viewport$:t,header$:r,main$:n,target$:o}){let i=new E,s=i.pipe(de(1));return i.subscribe({next({hidden:a}){e.hidden=a,a?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(ee(s),J("height")).subscribe(({height:a})=>{e.style.top=`${a+16}px`}),Us(e,{viewport$:t,main$:n,target$:o}).pipe(w(a=>i.next(a)),C(()=>i.complete()),m(a=>H({ref:e},a)))}function Vi({document$:e,tablet$:t}){e.pipe(S(()=>Q(".md-toggle--indeterminate, [data-md-state=indeterminate]")),w(r=>{r.indeterminate=!0,r.checked=!1}),se(r=>v(r,"change").pipe(Wr(()=>r.classList.contains("md-toggle--indeterminate")),m(()=>r))),ae(t)).subscribe(([r,n])=>{r.classList.remove("md-toggle--indeterminate"),n&&(r.checked=!1)})}function Ds(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function zi({document$:e}){e.pipe(S(()=>Q("[data-md-scrollfix]")),w(t=>t.removeAttribute("data-md-scrollfix")),x(Ds),se(t=>v(t,"touchstart").pipe(m(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function Ni({viewport$:e,tablet$:t}){Y([dt("search"),t]).pipe(m(([r,n])=>r&&!n),S(r=>I(r).pipe(ke(r?400:100))),ae(e)).subscribe(([r,{offset:{y:n}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${n}px`;else{let o=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",o&&window.scrollTo(0,o)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let n=e[r];typeof n!="object"?n=document.createTextNode(n):n.parentNode&&n.parentNode.removeChild(n),r?t.insertBefore(this.previousSibling,n):t.replaceChild(n,this)}}}));document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var tt=go(),vr=ko(),gt=jo(),on=Ro(),we=qo(),gr=Kr("(min-width: 960px)"),Ki=Kr("(min-width: 1220px)"),Qi=Fo(),Yi=le(),Bi=document.forms.namedItem("search")?(__search==null?void 0:__search.index)||je(new URL("search/search_index.json",Yi.base)):Se,an=new E;wi({alert$:an});Z("navigation.instant")&&Ei({document$:tt,location$:vr,viewport$:we});var qi;((qi=Yi.version)==null?void 0:qi.provider)==="mike"&&Li({document$:tt});A(vr,gt).pipe(ke(125)).subscribe(()=>{Ke("drawer",!1),Ke("search",!1)});on.pipe(x(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=pe("[href][rel=prev]");typeof t!="undefined"&&t.click();break;case"n":case".":let r=pe("[href][rel=next]");typeof r!="undefined"&&r.click();break}});Vi({document$:tt,tablet$:gr});zi({document$:tt});Ni({viewport$:we,tablet$:gr});var Qe=bi(_e("header"),{viewport$:we}),br=tt.pipe(m(()=>_e("main")),S(e=>yi(e,{viewport$:we,header$:Qe})),X(1)),Ws=A(...te("consent").map(e=>Yo(e,{target$:gt})),...te("dialog").map(e=>hi(e,{alert$:an})),...te("header").map(e=>vi(e,{viewport$:we,header$:Qe,main$:br})),...te("palette").map(e=>xi(e)),...te("search").map(e=>Hi(e,{index$:Bi,keyboard$:on})),...te("source").map(e=>Fi(e))),Vs=P(()=>A(...te("announce").map(e=>Qo(e)),...te("content").map(e=>di(e,{viewport$:we,target$:gt,print$:Qi})),...te("content").map(e=>Z("search.highlight")?Pi(e,{index$:Bi,location$:vr}):R),...te("header-title").map(e=>gi(e,{viewport$:we,header$:Qe})),...te("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?Qr(Ki,()=>nn(e,{viewport$:we,header$:Qe,main$:br})):Qr(gr,()=>nn(e,{viewport$:we,header$:Qe,main$:br}))),...te("tabs").map(e=>Ui(e,{viewport$:we,header$:Qe})),...te("toc").map(e=>Di(e,{viewport$:we,header$:Qe,target$:gt})),...te("top").map(e=>Wi(e,{viewport$:we,header$:Qe,main$:br,target$:gt})))),Gi=tt.pipe(S(()=>Vs),et(Ws),X(1));Gi.subscribe();window.document$=tt;window.location$=vr;window.target$=gt;window.keyboard$=on;window.viewport$=we;window.tablet$=gr;window.screen$=Ki;window.print$=Qi;window.alert$=an;window.component$=Gi;})(); +//# sourceMappingURL=bundle.078830c0.min.js.map + diff --git a/assets/javascripts/bundle.078830c0.min.js.map b/assets/javascripts/bundle.078830c0.min.js.map new file mode 100644 index 0000000..3636669 --- /dev/null +++ b/assets/javascripts/bundle.078830c0.min.js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["node_modules/focus-visible/dist/focus-visible.js", "node_modules/url-polyfill/url-polyfill.js", "node_modules/rxjs/node_modules/tslib/tslib.js", "node_modules/clipboard/dist/clipboard.js", "node_modules/escape-html/index.js", "node_modules/array-flat-polyfill/index.mjs", "src/assets/javascripts/bundle.ts", "node_modules/unfetch/polyfill/index.js", "node_modules/rxjs/node_modules/tslib/modules/index.js", "node_modules/rxjs/src/internal/util/isFunction.ts", "node_modules/rxjs/src/internal/util/createErrorClass.ts", "node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "node_modules/rxjs/src/internal/util/arrRemove.ts", "node_modules/rxjs/src/internal/Subscription.ts", "node_modules/rxjs/src/internal/config.ts", "node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "node_modules/rxjs/src/internal/util/noop.ts", "node_modules/rxjs/src/internal/NotificationFactories.ts", "node_modules/rxjs/src/internal/util/errorContext.ts", "node_modules/rxjs/src/internal/Subscriber.ts", "node_modules/rxjs/src/internal/symbol/observable.ts", "node_modules/rxjs/src/internal/util/identity.ts", "node_modules/rxjs/src/internal/util/pipe.ts", "node_modules/rxjs/src/internal/Observable.ts", "node_modules/rxjs/src/internal/util/lift.ts", "node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts", "node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "node_modules/rxjs/src/internal/Subject.ts", "node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "node_modules/rxjs/src/internal/ReplaySubject.ts", "node_modules/rxjs/src/internal/scheduler/Action.ts", "node_modules/rxjs/src/internal/scheduler/intervalProvider.ts", "node_modules/rxjs/src/internal/scheduler/AsyncAction.ts", "node_modules/rxjs/src/internal/Scheduler.ts", "node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts", "node_modules/rxjs/src/internal/scheduler/async.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts", "node_modules/rxjs/src/internal/scheduler/animationFrame.ts", "node_modules/rxjs/src/internal/observable/empty.ts", "node_modules/rxjs/src/internal/util/isScheduler.ts", "node_modules/rxjs/src/internal/util/args.ts", "node_modules/rxjs/src/internal/util/isArrayLike.ts", "node_modules/rxjs/src/internal/util/isPromise.ts", "node_modules/rxjs/src/internal/util/isInteropObservable.ts", "node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "node_modules/rxjs/src/internal/symbol/iterator.ts", "node_modules/rxjs/src/internal/util/isIterable.ts", "node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "node_modules/rxjs/src/internal/observable/innerFrom.ts", "node_modules/rxjs/src/internal/util/executeSchedule.ts", "node_modules/rxjs/src/internal/operators/observeOn.ts", "node_modules/rxjs/src/internal/operators/subscribeOn.ts", "node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "node_modules/rxjs/src/internal/scheduled/scheduled.ts", "node_modules/rxjs/src/internal/observable/from.ts", "node_modules/rxjs/src/internal/observable/of.ts", "node_modules/rxjs/src/internal/observable/throwError.ts", "node_modules/rxjs/src/internal/util/isDate.ts", "node_modules/rxjs/src/internal/operators/map.ts", "node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts", "node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts", "node_modules/rxjs/src/internal/util/createObject.ts", "node_modules/rxjs/src/internal/observable/combineLatest.ts", "node_modules/rxjs/src/internal/operators/mergeInternals.ts", "node_modules/rxjs/src/internal/operators/mergeMap.ts", "node_modules/rxjs/src/internal/operators/mergeAll.ts", "node_modules/rxjs/src/internal/operators/concatAll.ts", "node_modules/rxjs/src/internal/observable/concat.ts", "node_modules/rxjs/src/internal/observable/defer.ts", "node_modules/rxjs/src/internal/observable/fromEvent.ts", "node_modules/rxjs/src/internal/observable/fromEventPattern.ts", "node_modules/rxjs/src/internal/observable/timer.ts", "node_modules/rxjs/src/internal/observable/merge.ts", "node_modules/rxjs/src/internal/observable/never.ts", "node_modules/rxjs/src/internal/util/argsOrArgArray.ts", "node_modules/rxjs/src/internal/operators/filter.ts", "node_modules/rxjs/src/internal/observable/zip.ts", "node_modules/rxjs/src/internal/operators/audit.ts", "node_modules/rxjs/src/internal/operators/auditTime.ts", "node_modules/rxjs/src/internal/operators/bufferCount.ts", "node_modules/rxjs/src/internal/operators/catchError.ts", "node_modules/rxjs/src/internal/operators/scanInternals.ts", "node_modules/rxjs/src/internal/operators/combineLatest.ts", "node_modules/rxjs/src/internal/operators/combineLatestWith.ts", "node_modules/rxjs/src/internal/operators/concatMap.ts", "node_modules/rxjs/src/internal/operators/debounceTime.ts", "node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts", "node_modules/rxjs/src/internal/operators/take.ts", "node_modules/rxjs/src/internal/operators/ignoreElements.ts", "node_modules/rxjs/src/internal/operators/mapTo.ts", "node_modules/rxjs/src/internal/operators/delayWhen.ts", "node_modules/rxjs/src/internal/operators/delay.ts", "node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts", "node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts", "node_modules/rxjs/src/internal/operators/endWith.ts", "node_modules/rxjs/src/internal/operators/finalize.ts", "node_modules/rxjs/src/internal/operators/takeLast.ts", "node_modules/rxjs/src/internal/operators/merge.ts", "node_modules/rxjs/src/internal/operators/mergeWith.ts", "node_modules/rxjs/src/internal/operators/repeat.ts", "node_modules/rxjs/src/internal/operators/sample.ts", "node_modules/rxjs/src/internal/operators/scan.ts", "node_modules/rxjs/src/internal/operators/share.ts", "node_modules/rxjs/src/internal/operators/shareReplay.ts", "node_modules/rxjs/src/internal/operators/skip.ts", "node_modules/rxjs/src/internal/operators/skipUntil.ts", "node_modules/rxjs/src/internal/operators/startWith.ts", "node_modules/rxjs/src/internal/operators/switchMap.ts", "node_modules/rxjs/src/internal/operators/takeUntil.ts", "node_modules/rxjs/src/internal/operators/takeWhile.ts", "node_modules/rxjs/src/internal/operators/tap.ts", "node_modules/rxjs/src/internal/operators/throttle.ts", "node_modules/rxjs/src/internal/operators/throttleTime.ts", "node_modules/rxjs/src/internal/operators/withLatestFrom.ts", "node_modules/rxjs/src/internal/operators/zip.ts", "node_modules/rxjs/src/internal/operators/zipWith.ts", "src/assets/javascripts/browser/document/index.ts", "src/assets/javascripts/browser/element/_/index.ts", "src/assets/javascripts/browser/element/focus/index.ts", "src/assets/javascripts/browser/element/offset/_/index.ts", "src/assets/javascripts/browser/element/offset/content/index.ts", "node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js", "src/assets/javascripts/browser/element/size/_/index.ts", "src/assets/javascripts/browser/element/size/content/index.ts", "src/assets/javascripts/browser/element/visibility/index.ts", "src/assets/javascripts/browser/toggle/index.ts", "src/assets/javascripts/browser/keyboard/index.ts", "src/assets/javascripts/browser/location/_/index.ts", "src/assets/javascripts/utilities/h/index.ts", "src/assets/javascripts/utilities/string/index.ts", "src/assets/javascripts/browser/location/hash/index.ts", "src/assets/javascripts/browser/media/index.ts", "src/assets/javascripts/browser/request/index.ts", "src/assets/javascripts/browser/script/index.ts", "src/assets/javascripts/browser/viewport/offset/index.ts", "src/assets/javascripts/browser/viewport/size/index.ts", "src/assets/javascripts/browser/viewport/_/index.ts", "src/assets/javascripts/browser/viewport/at/index.ts", "src/assets/javascripts/browser/worker/index.ts", "src/assets/javascripts/_/index.ts", "src/assets/javascripts/components/_/index.ts", "src/assets/javascripts/components/announce/index.ts", "src/assets/javascripts/components/consent/index.ts", "src/assets/javascripts/components/content/code/_/index.ts", "src/assets/javascripts/templates/tooltip/index.tsx", "src/assets/javascripts/templates/annotation/index.tsx", "src/assets/javascripts/templates/clipboard/index.tsx", "src/assets/javascripts/templates/search/index.tsx", "src/assets/javascripts/templates/source/index.tsx", "src/assets/javascripts/templates/tabbed/index.tsx", "src/assets/javascripts/templates/table/index.tsx", "src/assets/javascripts/templates/version/index.tsx", "src/assets/javascripts/components/content/annotation/_/index.ts", "src/assets/javascripts/components/content/annotation/list/index.ts", "src/assets/javascripts/components/content/code/mermaid/index.ts", "src/assets/javascripts/components/content/details/index.ts", "src/assets/javascripts/components/content/table/index.ts", "src/assets/javascripts/components/content/tabs/index.ts", "src/assets/javascripts/components/content/_/index.ts", "src/assets/javascripts/components/dialog/index.ts", "src/assets/javascripts/components/header/_/index.ts", "src/assets/javascripts/components/header/title/index.ts", "src/assets/javascripts/components/main/index.ts", "src/assets/javascripts/components/palette/index.ts", "src/assets/javascripts/integrations/clipboard/index.ts", "src/assets/javascripts/integrations/sitemap/index.ts", "src/assets/javascripts/integrations/instant/index.ts", "src/assets/javascripts/integrations/search/document/index.ts", "src/assets/javascripts/integrations/search/highlighter/index.ts", "src/assets/javascripts/integrations/search/query/transform/index.ts", "src/assets/javascripts/integrations/search/worker/message/index.ts", "src/assets/javascripts/integrations/search/worker/_/index.ts", "src/assets/javascripts/integrations/version/index.ts", "src/assets/javascripts/components/search/query/index.ts", "src/assets/javascripts/components/search/result/index.ts", "src/assets/javascripts/components/search/share/index.ts", "src/assets/javascripts/components/search/suggest/index.ts", "src/assets/javascripts/components/search/_/index.ts", "src/assets/javascripts/components/search/highlight/index.ts", "src/assets/javascripts/components/sidebar/index.ts", "src/assets/javascripts/components/source/facts/github/index.ts", "src/assets/javascripts/components/source/facts/gitlab/index.ts", "src/assets/javascripts/components/source/facts/_/index.ts", "src/assets/javascripts/components/source/_/index.ts", "src/assets/javascripts/components/tabs/index.ts", "src/assets/javascripts/components/toc/index.ts", "src/assets/javascripts/components/top/index.ts", "src/assets/javascripts/patches/indeterminate/index.ts", "src/assets/javascripts/patches/scrollfix/index.ts", "src/assets/javascripts/patches/scrolllock/index.ts", "src/assets/javascripts/polyfills/index.ts"], + "sourceRoot": "../../../..", + "sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-visible\n */\n function applyFocusVisiblePolyfill(scope) {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesAllowlist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {KeyboardEvent} e\n */\n function onKeyDown(e) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (isValidFocusTarget(scope.activeElement)) {\n addFocusVisibleClass(scope.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on whenever the\n // window blurs, even if you're tabbing out of the page. \u00AF\\_(\u30C4)_/\u00AF\n if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n // For some kinds of state, we are interested in changes at the global scope\n // only. For example, global pointer input, global key presses and global\n // visibility change should affect the state at every scope:\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n addInitialPointerMoveListeners();\n\n // For focus and blur, we specifically care about state changes in the local\n // scope. This is because focus / blur events that originate from within a\n // shadow root are not re-dispatched from the host element if it was already\n // the active element in its own scope:\n scope.addEventListener('focus', onFocus, true);\n scope.addEventListener('blur', onBlur, true);\n\n // We detect that a node is a ShadowRoot by ensuring that it is a\n // DocumentFragment and also has a host property. This check covers native\n // implementation and polyfill implementation transparently. If we only cared\n // about the native implementation, we could just check if the scope was\n // an instance of a ShadowRoot.\n if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n // have a root element to add a class to. So, we add this attribute to the\n // host element instead:\n scope.host.setAttribute('data-js-focus-visible', '');\n } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n document.documentElement.classList.add('js-focus-visible');\n document.documentElement.setAttribute('data-js-focus-visible', '');\n }\n }\n\n // It is important to wrap all references to global window and document in\n // these checks to support server-side rendering use cases\n // @see https://github.com/WICG/focus-visible/issues/199\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Make the polyfill helper globally available. This can be used as a signal\n // to interested libraries that wish to coordinate with the polyfill for e.g.,\n // applying the polyfill to a shadow root:\n window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n // Notify interested libraries of the polyfill's presence, in case the\n // polyfill was loaded lazily:\n var event;\n\n try {\n event = new CustomEvent('focus-visible-polyfill-ready');\n } catch (error) {\n // IE11 does not support using CustomEvent as a constructor directly:\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n }\n\n window.dispatchEvent(event);\n }\n\n if (typeof document !== 'undefined') {\n // Apply the polyfill to the global document, so that no JavaScript\n // coordination is required to use the polyfill in the top-level document:\n applyFocusVisiblePolyfill(document);\n }\n\n})));\n", "(function(global) {\r\n /**\r\n * Polyfill URLSearchParams\r\n *\r\n * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n */\r\n\r\n var checkIfIteratorIsSupported = function() {\r\n try {\r\n return !!Symbol.iterator;\r\n } catch (error) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n var createIterator = function(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift();\r\n return { done: value === void 0, value: value };\r\n }\r\n };\r\n\r\n if (iteratorSupported) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n };\r\n\r\n /**\r\n * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n */\r\n var serializeParam = function(value) {\r\n return encodeURIComponent(value).replace(/%20/g, '+');\r\n };\r\n\r\n var deserializeParam = function(value) {\r\n return decodeURIComponent(String(value).replace(/\\+/g, ' '));\r\n };\r\n\r\n var polyfillURLSearchParams = function() {\r\n\r\n var URLSearchParams = function(searchString) {\r\n Object.defineProperty(this, '_entries', { writable: true, value: {} });\r\n var typeofSearchString = typeof searchString;\r\n\r\n if (typeofSearchString === 'undefined') {\r\n // do nothing\r\n } else if (typeofSearchString === 'string') {\r\n if (searchString !== '') {\r\n this._fromString(searchString);\r\n }\r\n } else if (searchString instanceof URLSearchParams) {\r\n var _this = this;\r\n searchString.forEach(function(value, name) {\r\n _this.append(name, value);\r\n });\r\n } else if ((searchString !== null) && (typeofSearchString === 'object')) {\r\n if (Object.prototype.toString.call(searchString) === '[object Array]') {\r\n for (var i = 0; i < searchString.length; i++) {\r\n var entry = searchString[i];\r\n if ((Object.prototype.toString.call(entry) === '[object Array]') || (entry.length !== 2)) {\r\n this.append(entry[0], entry[1]);\r\n } else {\r\n throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\\'s input');\r\n }\r\n }\r\n } else {\r\n for (var key in searchString) {\r\n if (searchString.hasOwnProperty(key)) {\r\n this.append(key, searchString[key]);\r\n }\r\n }\r\n }\r\n } else {\r\n throw new TypeError('Unsupported input\\'s type for URLSearchParams');\r\n }\r\n };\r\n\r\n var proto = URLSearchParams.prototype;\r\n\r\n proto.append = function(name, value) {\r\n if (name in this._entries) {\r\n this._entries[name].push(String(value));\r\n } else {\r\n this._entries[name] = [String(value)];\r\n }\r\n };\r\n\r\n proto.delete = function(name) {\r\n delete this._entries[name];\r\n };\r\n\r\n proto.get = function(name) {\r\n return (name in this._entries) ? this._entries[name][0] : null;\r\n };\r\n\r\n proto.getAll = function(name) {\r\n return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n };\r\n\r\n proto.has = function(name) {\r\n return (name in this._entries);\r\n };\r\n\r\n proto.set = function(name, value) {\r\n this._entries[name] = [String(value)];\r\n };\r\n\r\n proto.forEach = function(callback, thisArg) {\r\n var entries;\r\n for (var name in this._entries) {\r\n if (this._entries.hasOwnProperty(name)) {\r\n entries = this._entries[name];\r\n for (var i = 0; i < entries.length; i++) {\r\n callback.call(thisArg, entries[i], name, this);\r\n }\r\n }\r\n }\r\n };\r\n\r\n proto.keys = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push(name);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.values = function() {\r\n var items = [];\r\n this.forEach(function(value) {\r\n items.push(value);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.entries = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n if (iteratorSupported) {\r\n proto[Symbol.iterator] = proto.entries;\r\n }\r\n\r\n proto.toString = function() {\r\n var searchArray = [];\r\n this.forEach(function(value, name) {\r\n searchArray.push(serializeParam(name) + '=' + serializeParam(value));\r\n });\r\n return searchArray.join('&');\r\n };\r\n\r\n\r\n global.URLSearchParams = URLSearchParams;\r\n };\r\n\r\n var checkIfURLSearchParamsSupported = function() {\r\n try {\r\n var URLSearchParams = global.URLSearchParams;\r\n\r\n return (\r\n (new URLSearchParams('?a=1').toString() === 'a=1') &&\r\n (typeof URLSearchParams.prototype.set === 'function') &&\r\n (typeof URLSearchParams.prototype.entries === 'function')\r\n );\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n if (!checkIfURLSearchParamsSupported()) {\r\n polyfillURLSearchParams();\r\n }\r\n\r\n var proto = global.URLSearchParams.prototype;\r\n\r\n if (typeof proto.sort !== 'function') {\r\n proto.sort = function() {\r\n var _this = this;\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n if (!_this._entries) {\r\n _this.delete(name);\r\n }\r\n });\r\n items.sort(function(a, b) {\r\n if (a[0] < b[0]) {\r\n return -1;\r\n } else if (a[0] > b[0]) {\r\n return +1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n if (_this._entries) { // force reset because IE keeps keys index\r\n _this._entries = {};\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n this.append(items[i][0], items[i][1]);\r\n }\r\n };\r\n }\r\n\r\n if (typeof proto._fromString !== 'function') {\r\n Object.defineProperty(proto, '_fromString', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function(searchString) {\r\n if (this._entries) {\r\n this._entries = {};\r\n } else {\r\n var keys = [];\r\n this.forEach(function(value, name) {\r\n keys.push(name);\r\n });\r\n for (var i = 0; i < keys.length; i++) {\r\n this.delete(keys[i]);\r\n }\r\n }\r\n\r\n searchString = searchString.replace(/^\\?/, '');\r\n var attributes = searchString.split('&');\r\n var attribute;\r\n for (var i = 0; i < attributes.length; i++) {\r\n attribute = attributes[i].split('=');\r\n this.append(\r\n deserializeParam(attribute[0]),\r\n (attribute.length > 1) ? deserializeParam(attribute[1]) : ''\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n // HTMLAnchorElement\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n /**\r\n * Polyfill URL\r\n *\r\n * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n */\r\n\r\n var checkIfURLIsSupported = function() {\r\n try {\r\n var u = new global.URL('b', 'http://a/');\r\n u.pathname = 'c d';\r\n return (u.href === 'http://a/c%20d') && u.searchParams;\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var polyfillURL = function() {\r\n var _URL = global.URL;\r\n\r\n var URL = function(url, base) {\r\n if (typeof url !== 'string') url = String(url);\r\n if (base && typeof base !== 'string') base = String(base);\r\n\r\n // Only create another document if the base is different from current location.\r\n var doc = document, baseElement;\r\n if (base && (global.location === void 0 || base !== global.location.href)) {\r\n base = base.toLowerCase();\r\n doc = document.implementation.createHTMLDocument('');\r\n baseElement = doc.createElement('base');\r\n baseElement.href = base;\r\n doc.head.appendChild(baseElement);\r\n try {\r\n if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);\r\n } catch (err) {\r\n throw new Error('URL unable to set base ' + base + ' due to ' + err);\r\n }\r\n }\r\n\r\n var anchorElement = doc.createElement('a');\r\n anchorElement.href = url;\r\n if (baseElement) {\r\n doc.body.appendChild(anchorElement);\r\n anchorElement.href = anchorElement.href; // force href to refresh\r\n }\r\n\r\n var inputElement = doc.createElement('input');\r\n inputElement.type = 'url';\r\n inputElement.value = url;\r\n\r\n if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href) || (!inputElement.checkValidity() && !base)) {\r\n throw new TypeError('Invalid URL');\r\n }\r\n\r\n Object.defineProperty(this, '_anchorElement', {\r\n value: anchorElement\r\n });\r\n\r\n\r\n // create a linked searchParams which reflect its changes on URL\r\n var searchParams = new global.URLSearchParams(this.search);\r\n var enableSearchUpdate = true;\r\n var enableSearchParamsUpdate = true;\r\n var _this = this;\r\n ['append', 'delete', 'set'].forEach(function(methodName) {\r\n var method = searchParams[methodName];\r\n searchParams[methodName] = function() {\r\n method.apply(searchParams, arguments);\r\n if (enableSearchUpdate) {\r\n enableSearchParamsUpdate = false;\r\n _this.search = searchParams.toString();\r\n enableSearchParamsUpdate = true;\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperty(this, 'searchParams', {\r\n value: searchParams,\r\n enumerable: true\r\n });\r\n\r\n var search = void 0;\r\n Object.defineProperty(this, '_updateSearchParams', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function() {\r\n if (this.search !== search) {\r\n search = this.search;\r\n if (enableSearchParamsUpdate) {\r\n enableSearchUpdate = false;\r\n this.searchParams._fromString(this.search);\r\n enableSearchUpdate = true;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n var proto = URL.prototype;\r\n\r\n var linkURLWithAnchorAttribute = function(attributeName) {\r\n Object.defineProperty(proto, attributeName, {\r\n get: function() {\r\n return this._anchorElement[attributeName];\r\n },\r\n set: function(value) {\r\n this._anchorElement[attributeName] = value;\r\n },\r\n enumerable: true\r\n });\r\n };\r\n\r\n ['hash', 'host', 'hostname', 'port', 'protocol']\r\n .forEach(function(attributeName) {\r\n linkURLWithAnchorAttribute(attributeName);\r\n });\r\n\r\n Object.defineProperty(proto, 'search', {\r\n get: function() {\r\n return this._anchorElement['search'];\r\n },\r\n set: function(value) {\r\n this._anchorElement['search'] = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n });\r\n\r\n Object.defineProperties(proto, {\r\n\r\n 'toString': {\r\n get: function() {\r\n var _this = this;\r\n return function() {\r\n return _this.href;\r\n };\r\n }\r\n },\r\n\r\n 'href': {\r\n get: function() {\r\n return this._anchorElement.href.replace(/\\?$/, '');\r\n },\r\n set: function(value) {\r\n this._anchorElement.href = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'pathname': {\r\n get: function() {\r\n return this._anchorElement.pathname.replace(/(^\\/?)/, '/');\r\n },\r\n set: function(value) {\r\n this._anchorElement.pathname = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'origin': {\r\n get: function() {\r\n // get expected port from protocol\r\n var expectedPort = { 'http:': 80, 'https:': 443, 'ftp:': 21 }[this._anchorElement.protocol];\r\n // add port to origin if, expected port is different than actual port\r\n // and it is not empty f.e http://foo:8080\r\n // 8080 != 80 && 8080 != ''\r\n var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n this._anchorElement.port !== '';\r\n\r\n return this._anchorElement.protocol +\r\n '//' +\r\n this._anchorElement.hostname +\r\n (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'password': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'username': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n });\r\n\r\n URL.createObjectURL = function(blob) {\r\n return _URL.createObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n URL.revokeObjectURL = function(url) {\r\n return _URL.revokeObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n global.URL = URL;\r\n\r\n };\r\n\r\n if (!checkIfURLIsSupported()) {\r\n polyfillURL();\r\n }\r\n\r\n if ((global.location !== void 0) && !('origin' in global.location)) {\r\n var getOrigin = function() {\r\n return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n };\r\n\r\n try {\r\n Object.defineProperty(global.location, 'origin', {\r\n get: getOrigin,\r\n enumerable: true\r\n });\r\n } catch (e) {\r\n setInterval(function() {\r\n global.location.origin = getOrigin();\r\n }, 100);\r\n }\r\n }\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global global, define, System, Reflect, Promise */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __createBinding;\r\n(function (factory) {\r\n var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n if (typeof define === \"function\" && define.amd) {\r\n define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n }\r\n else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n factory(createExporter(root, createExporter(module.exports)));\r\n }\r\n else {\r\n factory(createExporter(root));\r\n }\r\n function createExporter(exports, previous) {\r\n if (exports !== root) {\r\n if (typeof Object.create === \"function\") {\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n }\r\n else {\r\n exports.__esModule = true;\r\n }\r\n }\r\n return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n }\r\n})\r\n(function (exporter) {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n __extends = function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n\r\n __rest = function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n };\r\n\r\n __decorate = function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n };\r\n\r\n __param = function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n };\r\n\r\n __metadata = function (metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n };\r\n\r\n __awaiter = function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n };\r\n\r\n __generator = function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n };\r\n\r\n __exportStar = function(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n };\r\n\r\n __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n }) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n });\r\n\r\n __values = function (o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n };\r\n\r\n __read = function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spread = function () {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spreadArrays = function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n };\r\n\r\n __spreadArray = function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n };\r\n\r\n __await = function (v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n };\r\n\r\n __asyncGenerator = function (thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n };\r\n\r\n __asyncDelegator = function (o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n };\r\n\r\n __asyncValues = function (o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n };\r\n\r\n __makeTemplateObject = function (cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n };\r\n\r\n var __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n }) : function(o, v) {\r\n o[\"default\"] = v;\r\n };\r\n\r\n __importStar = function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n };\r\n\r\n __importDefault = function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n };\r\n\r\n __classPrivateFieldGet = function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n };\r\n\r\n __classPrivateFieldSet = function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n };\r\n\r\n exporter(\"__extends\", __extends);\r\n exporter(\"__assign\", __assign);\r\n exporter(\"__rest\", __rest);\r\n exporter(\"__decorate\", __decorate);\r\n exporter(\"__param\", __param);\r\n exporter(\"__metadata\", __metadata);\r\n exporter(\"__awaiter\", __awaiter);\r\n exporter(\"__generator\", __generator);\r\n exporter(\"__exportStar\", __exportStar);\r\n exporter(\"__createBinding\", __createBinding);\r\n exporter(\"__values\", __values);\r\n exporter(\"__read\", __read);\r\n exporter(\"__spread\", __spread);\r\n exporter(\"__spreadArrays\", __spreadArrays);\r\n exporter(\"__spreadArray\", __spreadArray);\r\n exporter(\"__await\", __await);\r\n exporter(\"__asyncGenerator\", __asyncGenerator);\r\n exporter(\"__asyncDelegator\", __asyncDelegator);\r\n exporter(\"__asyncValues\", __asyncValues);\r\n exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n exporter(\"__importStar\", __importStar);\r\n exporter(\"__importDefault\", __importDefault);\r\n exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n});\r\n", "/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT \u00A9 Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n try {\n return document.execCommand(type);\n } catch (err) {\n return false;\n }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n var selectedText = select_default()(target);\n command('cut');\n return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n fakeElement.style.fontSize = '12pt'; // Reset box model\n\n fakeElement.style.border = '0';\n fakeElement.style.padding = '0';\n fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n fakeElement.style.position = 'absolute';\n fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n fakeElement.style.top = \"\".concat(yPosition, \"px\");\n fakeElement.setAttribute('readonly', '');\n fakeElement.value = value;\n return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n var fakeElement = createFakeElement(value);\n options.container.appendChild(fakeElement);\n var selectedText = select_default()(fakeElement);\n command('copy');\n fakeElement.remove();\n return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n var selectedText = '';\n\n if (typeof target === 'string') {\n selectedText = fakeCopyAction(target, options);\n } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n selectedText = fakeCopyAction(target.value, options);\n } else {\n selectedText = select_default()(target);\n command('copy');\n }\n\n return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Defines base properties passed from constructor.\n var _options$action = options.action,\n action = _options$action === void 0 ? 'copy' : _options$action,\n container = options.container,\n target = options.target,\n text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n if (action !== 'copy' && action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n } // Sets the `target` property using an element that will be have its content copied.\n\n\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n } // Define selection strategy based on `text` property.\n\n\n if (text) {\n return actions_copy(text, {\n container: container\n });\n } // Defines which selection strategy based on `target` property.\n\n\n if (target) {\n return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n container: container\n });\n }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n var _this;\n\n _classCallCheck(this, Clipboard);\n\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n var action = this.action(trigger) || 'copy';\n var text = actions_default({\n action: action,\n container: this.container,\n target: this.target(trigger),\n text: this.text(trigger)\n }); // Fires an event based on the copy operation result.\n\n this.emit(text ? 'success' : 'error', {\n action: action,\n text: text,\n trigger: trigger,\n clearSelection: function clearSelection() {\n if (trigger) {\n trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Allow fire programmatically a copy action\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @returns Text copied.\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n }\n }], [{\n key: \"copy\",\n value: function copy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n return actions_copy(target, options);\n }\n /**\n * Allow fire programmatically a cut action\n * @param {String|HTMLElement} target\n * @returns Text cutted.\n */\n\n }, {\n key: \"cut\",\n value: function cut(target) {\n return actions_cut(target);\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n\n return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "Array.prototype.flat||Object.defineProperty(Array.prototype,\"flat\",{configurable:!0,value:function r(){var t=isNaN(arguments[0])?1:Number(arguments[0]);return t?Array.prototype.reduce.call(this,function(a,e){return Array.isArray(e)?a.push.apply(a,r.call(e,t-1)):a.push(e),a},[]):Array.prototype.slice.call(this)},writable:!0}),Array.prototype.flatMap||Object.defineProperty(Array.prototype,\"flatMap\",{configurable:!0,value:function(r){return Array.prototype.map.apply(this,arguments).flat()},writable:!0})\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport \"array-flat-polyfill\"\nimport \"focus-visible\"\nimport \"unfetch/polyfill\"\nimport \"url-polyfill\"\n\nimport {\n EMPTY,\n NEVER,\n Subject,\n defer,\n delay,\n filter,\n map,\n merge,\n mergeWith,\n shareReplay,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"./_\"\nimport {\n at,\n getOptionalElement,\n requestJSON,\n setToggle,\n watchDocument,\n watchKeyboard,\n watchLocation,\n watchLocationTarget,\n watchMedia,\n watchPrint,\n watchViewport\n} from \"./browser\"\nimport {\n getComponentElement,\n getComponentElements,\n mountAnnounce,\n mountBackToTop,\n mountConsent,\n mountContent,\n mountDialog,\n mountHeader,\n mountHeaderTitle,\n mountPalette,\n mountSearch,\n mountSearchHiglight,\n mountSidebar,\n mountSource,\n mountTableOfContents,\n mountTabs,\n watchHeader,\n watchMain\n} from \"./components\"\nimport {\n SearchIndex,\n setupClipboardJS,\n setupInstantLoading,\n setupVersionSelector\n} from \"./integrations\"\nimport {\n patchIndeterminate,\n patchScrollfix,\n patchScrolllock\n} from \"./patches\"\nimport \"./polyfills\"\n\n/* ----------------------------------------------------------------------------\n * Application\n * ------------------------------------------------------------------------- */\n\n/* Yay, JavaScript is available */\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Set up navigation observables and subjects */\nconst document$ = watchDocument()\nconst location$ = watchLocation()\nconst target$ = watchLocationTarget()\nconst keyboard$ = watchKeyboard()\n\n/* Set up media observables */\nconst viewport$ = watchViewport()\nconst tablet$ = watchMedia(\"(min-width: 960px)\")\nconst screen$ = watchMedia(\"(min-width: 1220px)\")\nconst print$ = watchPrint()\n\n/* Retrieve search index, if search is enabled */\nconst config = configuration()\nconst index$ = document.forms.namedItem(\"search\")\n ? __search?.index || requestJSON(\n new URL(\"search/search_index.json\", config.base)\n )\n : NEVER\n\n/* Set up Clipboard.js integration */\nconst alert$ = new Subject()\nsetupClipboardJS({ alert$ })\n\n/* Set up instant loading, if enabled */\nif (feature(\"navigation.instant\"))\n setupInstantLoading({ document$, location$, viewport$ })\n\n/* Set up version selector */\nif (config.version?.provider === \"mike\")\n setupVersionSelector({ document$ })\n\n/* Always close drawer and search on navigation */\nmerge(location$, target$)\n .pipe(\n delay(125)\n )\n .subscribe(() => {\n setToggle(\"drawer\", false)\n setToggle(\"search\", false)\n })\n\n/* Set up global keyboard handlers */\nkeyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Go to previous page */\n case \"p\":\n case \",\":\n const prev = getOptionalElement(\"[href][rel=prev]\")\n if (typeof prev !== \"undefined\")\n prev.click()\n break\n\n /* Go to next page */\n case \"n\":\n case \".\":\n const next = getOptionalElement(\"[href][rel=next]\")\n if (typeof next !== \"undefined\")\n next.click()\n break\n }\n })\n\n/* Set up patches */\npatchIndeterminate({ document$, tablet$ })\npatchScrollfix({ document$ })\npatchScrolllock({ viewport$, tablet$ })\n\n/* Set up header and main area observable */\nconst header$ = watchHeader(getComponentElement(\"header\"), { viewport$ })\nconst main$ = document$\n .pipe(\n map(() => getComponentElement(\"main\")),\n switchMap(el => watchMain(el, { viewport$, header$ })),\n shareReplay(1)\n )\n\n/* Set up control component observables */\nconst control$ = merge(\n\n /* Consent */\n ...getComponentElements(\"consent\")\n .map(el => mountConsent(el, { target$ })),\n\n /* Dialog */\n ...getComponentElements(\"dialog\")\n .map(el => mountDialog(el, { alert$ })),\n\n /* Header */\n ...getComponentElements(\"header\")\n .map(el => mountHeader(el, { viewport$, header$, main$ })),\n\n /* Color palette */\n ...getComponentElements(\"palette\")\n .map(el => mountPalette(el)),\n\n /* Search */\n ...getComponentElements(\"search\")\n .map(el => mountSearch(el, { index$, keyboard$ })),\n\n /* Repository information */\n ...getComponentElements(\"source\")\n .map(el => mountSource(el))\n)\n\n/* Set up content component observables */\nconst content$ = defer(() => merge(\n\n /* Announcement bar */\n ...getComponentElements(\"announce\")\n .map(el => mountAnnounce(el)),\n\n /* Content */\n ...getComponentElements(\"content\")\n .map(el => mountContent(el, { viewport$, target$, print$ })),\n\n /* Search highlighting */\n ...getComponentElements(\"content\")\n .map(el => feature(\"search.highlight\")\n ? mountSearchHiglight(el, { index$, location$ })\n : EMPTY\n ),\n\n /* Header title */\n ...getComponentElements(\"header-title\")\n .map(el => mountHeaderTitle(el, { viewport$, header$ })),\n\n /* Sidebar */\n ...getComponentElements(\"sidebar\")\n .map(el => el.getAttribute(\"data-md-type\") === \"navigation\"\n ? at(screen$, () => mountSidebar(el, { viewport$, header$, main$ }))\n : at(tablet$, () => mountSidebar(el, { viewport$, header$, main$ }))\n ),\n\n /* Navigation tabs */\n ...getComponentElements(\"tabs\")\n .map(el => mountTabs(el, { viewport$, header$ })),\n\n /* Table of contents */\n ...getComponentElements(\"toc\")\n .map(el => mountTableOfContents(el, { viewport$, header$, target$ })),\n\n /* Back-to-top button */\n ...getComponentElements(\"top\")\n .map(el => mountBackToTop(el, { viewport$, header$, main$, target$ }))\n))\n\n/* Set up component observables */\nconst component$ = document$\n .pipe(\n switchMap(() => content$),\n mergeWith(control$),\n shareReplay(1)\n )\n\n/* Subscribe to all components */\ncomponent$.subscribe()\n\n/* ----------------------------------------------------------------------------\n * Exports\n * ------------------------------------------------------------------------- */\n\nwindow.document$ = document$ /* Document observable */\nwindow.location$ = location$ /* Location subject */\nwindow.target$ = target$ /* Location target observable */\nwindow.keyboard$ = keyboard$ /* Keyboard observable */\nwindow.viewport$ = viewport$ /* Viewport observable */\nwindow.tablet$ = tablet$ /* Media tablet observable */\nwindow.screen$ = screen$ /* Media screen observable */\nwindow.print$ = print$ /* Media print observable */\nwindow.alert$ = alert$ /* Alert subject */\nwindow.component$ = component$ /* Component observable */\n", "self.fetch||(self.fetch=function(e,n){return n=n||{},new Promise(function(t,s){var r=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(r.status/100|0),statusText:r.statusText,status:r.status,url:r.responseURL,text:function(){return Promise.resolve(r.responseText)},json:function(){return Promise.resolve(r.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([r.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var c in r.open(n.method||\"get\",e,!0),r.onload=function(){r.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},r.onerror=s,r.withCredentials=\"include\"==n.credentials,n.headers)r.setRequestHeader(c,n.headers[c]);r.send(n.body||null)})});\n", "import tslib from '../tslib.js';\r\nconst {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n} = tslib;\r\nexport {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n};\r\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n ReplaySubject,\n Subject,\n fromEvent\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch document\n *\n * Documents are implemented as subjects, so all downstream observables are\n * automatically updated when a new document is emitted.\n *\n * @returns Document subject\n */\nexport function watchDocument(): Subject {\n const document$ = new ReplaySubject(1)\n fromEvent(document, \"DOMContentLoaded\", { once: true })\n .subscribe(() => document$.next(document))\n\n /* Return document */\n return document$\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve all elements matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getElements(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T][]\n\nexport function getElements(\n selector: string, node?: ParentNode\n): T[]\n\nexport function getElements(\n selector: string, node: ParentNode = document\n): T[] {\n return Array.from(node.querySelectorAll(selector))\n}\n\n/**\n * Retrieve an element matching a query selector or throw a reference error\n *\n * Note that this function assumes that the element is present. If unsure if an\n * element is existent, use the `getOptionalElement` function instead.\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getElement(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T]\n\nexport function getElement(\n selector: string, node?: ParentNode\n): T\n\nexport function getElement(\n selector: string, node: ParentNode = document\n): T {\n const el = getOptionalElement(selector, node)\n if (typeof el === \"undefined\")\n throw new ReferenceError(\n `Missing element: expected \"${selector}\" to be present`\n )\n\n /* Return element */\n return el\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Retrieve an optional element matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element or nothing\n */\nexport function getOptionalElement(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T] | undefined\n\nexport function getOptionalElement(\n selector: string, node?: ParentNode\n): T | undefined\n\nexport function getOptionalElement(\n selector: string, node: ParentNode = document\n): T | undefined {\n return node.querySelector(selector) || undefined\n}\n\n/**\n * Retrieve the currently active element\n *\n * @returns Element or nothing\n */\nexport function getActiveElement(): HTMLElement | undefined {\n return document.activeElement instanceof HTMLElement\n ? document.activeElement || undefined\n : undefined\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n debounceTime,\n distinctUntilChanged,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\nimport { getActiveElement } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch element focus\n *\n * Previously, this function used `focus` and `blur` events to determine whether\n * an element is focused, but this doesn't work if there are focusable elements\n * within the elements itself. A better solutions are `focusin` and `focusout`\n * events, which bubble up the tree and allow for more fine-grained control.\n *\n * `debounceTime` is necessary, because when a focus change happens inside an\n * element, the observable would first emit `false` and then `true` again.\n *\n * @param el - Element\n *\n * @returns Element focus observable\n */\nexport function watchElementFocus(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(document.body, \"focusin\"),\n fromEvent(document.body, \"focusout\")\n )\n .pipe(\n debounceTime(1),\n map(() => {\n const active = getActiveElement()\n return typeof active !== \"undefined\"\n ? el.contains(active)\n : false\n }),\n startWith(el === getActiveElement()),\n distinctUntilChanged()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n animationFrameScheduler,\n auditTime,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element offset\n *\n * @param el - Element\n *\n * @returns Element offset\n */\nexport function getElementOffset(\n el: HTMLElement\n): ElementOffset {\n return {\n x: el.offsetLeft,\n y: el.offsetTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element offset\n *\n * @param el - Element\n *\n * @returns Element offset observable\n */\nexport function watchElementOffset(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(window, \"load\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n auditTime(0, animationFrameScheduler),\n map(() => getElementOffset(el)),\n startWith(getElementOffset(el))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n animationFrameScheduler,\n auditTime,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\nimport { ElementOffset } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element content offset (= scroll offset)\n *\n * @param el - Element\n *\n * @returns Element content offset\n */\nexport function getElementContentOffset(\n el: HTMLElement\n): ElementOffset {\n return {\n x: el.scrollLeft,\n y: el.scrollTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element content offset\n *\n * @param el - Element\n *\n * @returns Element content offset observable\n */\nexport function watchElementContentOffset(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(el, \"scroll\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n auditTime(0, animationFrameScheduler),\n map(() => getElementContentOffset(el)),\n startWith(getElementContentOffset(el))\n )\n}\n", "/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ResizeObserver from \"resize-observer-polyfill\"\nimport {\n NEVER,\n Observable,\n Subject,\n defer,\n filter,\n finalize,\n map,\n merge,\n of,\n shareReplay,\n startWith,\n switchMap,\n tap\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementSize {\n width: number /* Element width */\n height: number /* Element height */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Resize observer entry subject\n */\nconst entry$ = new Subject()\n\n/**\n * Resize observer observable\n *\n * This observable will create a `ResizeObserver` on the first subscription\n * and will automatically terminate it when there are no more subscribers.\n * It's quite important to centralize observation in a single `ResizeObserver`,\n * as the performance difference can be quite dramatic, as the link shows.\n *\n * @see https://bit.ly/3iIYfEm - Google Groups on performance\n */\nconst observer$ = defer(() => of(\n new ResizeObserver(entries => {\n for (const entry of entries)\n entry$.next(entry)\n })\n))\n .pipe(\n switchMap(observer => merge(NEVER, of(observer))\n .pipe(\n finalize(() => observer.disconnect())\n )\n ),\n shareReplay(1)\n )\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element size\n *\n * @param el - Element\n *\n * @returns Element size\n */\nexport function getElementSize(\n el: HTMLElement\n): ElementSize {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element size\n *\n * This function returns an observable that subscribes to a single internal\n * instance of `ResizeObserver` upon subscription, and emit resize events until\n * termination. Note that this function should not be called with the same\n * element twice, as the first unsubscription will terminate observation.\n *\n * Sadly, we can't use the `DOMRect` objects returned by the observer, because\n * we need the emitted values to be consistent with `getElementSize`, which will\n * return the used values (rounded) and not actual values (unrounded). Thus, we\n * use the `offset*` properties. See the linked GitHub issue.\n *\n * @see https://bit.ly/3m0k3he - GitHub issue\n *\n * @param el - Element\n *\n * @returns Element size observable\n */\nexport function watchElementSize(\n el: HTMLElement\n): Observable {\n return observer$\n .pipe(\n tap(observer => observer.observe(el)),\n switchMap(observer => entry$\n .pipe(\n filter(({ target }) => target === el),\n finalize(() => observer.unobserve(el)),\n map(() => getElementSize(el))\n )\n ),\n startWith(getElementSize(el))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ElementSize } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element content size (= scroll width and height)\n *\n * @param el - Element\n *\n * @returns Element content size\n */\nexport function getElementContentSize(\n el: HTMLElement\n): ElementSize {\n return {\n width: el.scrollWidth,\n height: el.scrollHeight\n }\n}\n\n/**\n * Retrieve the overflowing container of an element, if any\n *\n * @param el - Element\n *\n * @returns Overflowing container or nothing\n */\nexport function getElementContainer(\n el: HTMLElement\n): HTMLElement | undefined {\n let parent = el.parentElement\n while (parent)\n if (\n el.scrollWidth <= parent.scrollWidth &&\n el.scrollHeight <= parent.scrollHeight\n )\n parent = (el = parent).parentElement\n else\n break\n\n /* Return overflowing container */\n return parent ? el : undefined\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n NEVER,\n Observable,\n Subject,\n defer,\n distinctUntilChanged,\n filter,\n finalize,\n map,\n merge,\n of,\n shareReplay,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport {\n getElementContentSize,\n getElementSize,\n watchElementContentOffset\n} from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Intersection observer entry subject\n */\nconst entry$ = new Subject()\n\n/**\n * Intersection observer observable\n *\n * This observable will create an `IntersectionObserver` on first subscription\n * and will automatically terminate it when there are no more subscribers.\n *\n * @see https://bit.ly/3iIYfEm - Google Groups on performance\n */\nconst observer$ = defer(() => of(\n new IntersectionObserver(entries => {\n for (const entry of entries)\n entry$.next(entry)\n }, {\n threshold: 0\n })\n))\n .pipe(\n switchMap(observer => merge(NEVER, of(observer))\n .pipe(\n finalize(() => observer.disconnect())\n )\n ),\n shareReplay(1)\n )\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch element visibility\n *\n * @param el - Element\n *\n * @returns Element visibility observable\n */\nexport function watchElementVisibility(\n el: HTMLElement\n): Observable {\n return observer$\n .pipe(\n tap(observer => observer.observe(el)),\n switchMap(observer => entry$\n .pipe(\n filter(({ target }) => target === el),\n finalize(() => observer.unobserve(el)),\n map(({ isIntersecting }) => isIntersecting)\n )\n )\n )\n}\n\n/**\n * Watch element boundary\n *\n * This function returns an observable which emits whether the bottom content\n * boundary (= scroll offset) of an element is within a certain threshold.\n *\n * @param el - Element\n * @param threshold - Threshold\n *\n * @returns Element boundary observable\n */\nexport function watchElementBoundary(\n el: HTMLElement, threshold = 16\n): Observable {\n return watchElementContentOffset(el)\n .pipe(\n map(({ y }) => {\n const visible = getElementSize(el)\n const content = getElementContentSize(el)\n return y >= (\n content.height - visible.height - threshold\n )\n }),\n distinctUntilChanged()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n startWith\n} from \"rxjs\"\n\nimport { getElement } from \"../element\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle\n */\nexport type Toggle =\n | \"drawer\" /* Toggle for drawer */\n | \"search\" /* Toggle for search */\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle map\n */\nconst toggles: Record = {\n drawer: getElement(\"[data-md-toggle=drawer]\"),\n search: getElement(\"[data-md-toggle=search]\")\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the value of a toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value\n */\nexport function getToggle(name: Toggle): boolean {\n return toggles[name].checked\n}\n\n/**\n * Set toggle\n *\n * Simulating a click event seems to be the most cross-browser compatible way\n * of changing the value while also emitting a `change` event. Before, Material\n * used `CustomEvent` to programmatically change the value of a toggle, but this\n * is a much simpler and cleaner solution which doesn't require a polyfill.\n *\n * @param name - Toggle\n * @param value - Toggle value\n */\nexport function setToggle(name: Toggle, value: boolean): void {\n if (toggles[name].checked !== value)\n toggles[name].click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value observable\n */\nexport function watchToggle(name: Toggle): Observable {\n const el = toggles[name]\n return fromEvent(el, \"change\")\n .pipe(\n map(() => el.checked),\n startWith(el.checked)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n share\n} from \"rxjs\"\n\nimport { getActiveElement } from \"../element\"\nimport { getToggle } from \"../toggle\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Keyboard mode\n */\nexport type KeyboardMode =\n | \"global\" /* Global */\n | \"search\" /* Search is open */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Keyboard\n */\nexport interface Keyboard {\n mode: KeyboardMode /* Keyboard mode */\n type: string /* Key type */\n claim(): void /* Key claim */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether an element may receive keyboard input\n *\n * @param el - Element\n * @param type - Key type\n *\n * @returns Test result\n */\nfunction isSusceptibleToKeyboard(\n el: HTMLElement, type: string\n): boolean {\n switch (el.constructor) {\n\n /* Input elements */\n case HTMLInputElement:\n /* @ts-expect-error - omit unnecessary type cast */\n if (el.type === \"radio\")\n return /^Arrow/.test(type)\n else\n return true\n\n /* Select element and textarea */\n case HTMLSelectElement:\n case HTMLTextAreaElement:\n return true\n\n /* Everything else */\n default:\n return el.isContentEditable\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch keyboard\n *\n * @returns Keyboard observable\n */\nexport function watchKeyboard(): Observable {\n return fromEvent(window, \"keydown\")\n .pipe(\n filter(ev => !(ev.metaKey || ev.ctrlKey)),\n map(ev => ({\n mode: getToggle(\"search\") ? \"search\" : \"global\",\n type: ev.key,\n claim() {\n ev.preventDefault()\n ev.stopPropagation()\n }\n } as Keyboard)),\n filter(({ mode, type }) => {\n if (mode === \"global\") {\n const active = getActiveElement()\n if (typeof active !== \"undefined\")\n return !isSusceptibleToKeyboard(active, type)\n }\n return true\n }),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Subject } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location\n *\n * This function returns a `URL` object (and not `Location`) to normalize the\n * typings across the application. Furthermore, locations need to be tracked\n * without setting them and `Location` is a singleton which represents the\n * current location.\n *\n * @returns URL\n */\nexport function getLocation(): URL {\n return new URL(location.href)\n}\n\n/**\n * Set location\n *\n * @param url - URL to change to\n */\nexport function setLocation(url: URL): void {\n location.href = url.href\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location\n *\n * @returns Location subject\n */\nexport function watchLocation(): Subject {\n return new Subject()\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { JSX as JSXInternal } from \"preact\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * HTML attributes\n */\ntype Attributes =\n & JSXInternal.HTMLAttributes\n & JSXInternal.SVGAttributes\n & Record\n\n/**\n * Child element\n */\ntype Child =\n | HTMLElement\n | Text\n | string\n | number\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Append a child node to an element\n *\n * @param el - Element\n * @param child - Child node(s)\n */\nfunction appendChild(el: HTMLElement, child: Child | Child[]): void {\n\n /* Handle primitive types (including raw HTML) */\n if (typeof child === \"string\" || typeof child === \"number\") {\n el.innerHTML += child.toString()\n\n /* Handle nodes */\n } else if (child instanceof Node) {\n el.appendChild(child)\n\n /* Handle nested children */\n } else if (Array.isArray(child)) {\n for (const node of child)\n appendChild(el, node)\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * JSX factory\n *\n * @template T - Element type\n *\n * @param tag - HTML tag\n * @param attributes - HTML attributes\n * @param children - Child elements\n *\n * @returns Element\n */\nexport function h(\n tag: T, attributes?: Attributes | null, ...children: Child[]\n): HTMLElementTagNameMap[T]\n\nexport function h(\n tag: string, attributes?: Attributes | null, ...children: Child[]\n): T\n\nexport function h(\n tag: string, attributes?: Attributes | null, ...children: Child[]\n): T {\n const el = document.createElement(tag)\n\n /* Set attributes, if any */\n if (attributes)\n for (const attr of Object.keys(attributes)) {\n if (typeof attributes[attr] === \"undefined\")\n continue\n\n /* Set default attribute or boolean */\n if (typeof attributes[attr] !== \"boolean\")\n el.setAttribute(attr, attributes[attr])\n else\n el.setAttribute(attr, \"\")\n }\n\n /* Append child nodes */\n for (const child of children)\n appendChild(el, child)\n\n /* Return element */\n return el as T\n}\n\n/* ----------------------------------------------------------------------------\n * Namespace\n * ------------------------------------------------------------------------- */\n\nexport declare namespace h {\n namespace JSX {\n type Element = HTMLElement\n type IntrinsicElements = JSXInternal.IntrinsicElements\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Truncate a string after the given number of characters\n *\n * This is not a very reasonable approach, since the summaries kind of suck.\n * It would be better to create something more intelligent, highlighting the\n * search occurrences and making a better summary out of it, but this note was\n * written three years ago, so who knows if we'll ever fix it.\n *\n * @param value - Value to be truncated\n * @param n - Number of characters\n *\n * @returns Truncated value\n */\nexport function truncate(value: string, n: number): string {\n let i = n\n if (value.length > i) {\n while (value[i] !== \" \" && --i > 0) { /* keep eating */ }\n return `${value.substring(0, i)}...`\n }\n return value\n}\n\n/**\n * Round a number for display with repository facts\n *\n * This is a reverse-engineered version of GitHub's weird rounding algorithm\n * for stars, forks and all other numbers. While all numbers below `1,000` are\n * returned as-is, bigger numbers are converted to fixed numbers:\n *\n * - `1,049` => `1k`\n * - `1,050` => `1.1k`\n * - `1,949` => `1.9k`\n * - `1,950` => `2k`\n *\n * @param value - Original value\n *\n * @returns Rounded value\n */\nexport function round(value: number): string {\n if (value > 999) {\n const digits = +((value - 950) % 1000 > 99)\n return `${((value + 0.000001) / 1000).toFixed(digits)}k`\n } else {\n return value.toString()\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n shareReplay,\n startWith\n} from \"rxjs\"\n\nimport { getOptionalElement } from \"~/browser\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location hash\n *\n * @returns Location hash\n */\nexport function getLocationHash(): string {\n return location.hash.substring(1)\n}\n\n/**\n * Set location hash\n *\n * Setting a new fragment identifier via `location.hash` will have no effect\n * if the value doesn't change. When a new fragment identifier is set, we want\n * the browser to target the respective element at all times, which is why we\n * use this dirty little trick.\n *\n * @param hash - Location hash\n */\nexport function setLocationHash(hash: string): void {\n const el = h(\"a\", { href: hash })\n el.addEventListener(\"click\", ev => ev.stopPropagation())\n el.click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location hash\n *\n * @returns Location hash observable\n */\nexport function watchLocationHash(): Observable {\n return fromEvent(window, \"hashchange\")\n .pipe(\n map(getLocationHash),\n startWith(getLocationHash()),\n filter(hash => hash.length > 0),\n shareReplay(1)\n )\n}\n\n/**\n * Watch location target\n *\n * @returns Location target observable\n */\nexport function watchLocationTarget(): Observable {\n return watchLocationHash()\n .pipe(\n map(id => getOptionalElement(`[id=\"${id}\"]`)!),\n filter(el => typeof el !== \"undefined\")\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n fromEvent,\n fromEventPattern,\n map,\n merge,\n startWith,\n switchMap\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch media query\n *\n * Note that although `MediaQueryList.addListener` is deprecated we have to\n * use it, because it's the only way to ensure proper downward compatibility.\n *\n * @see https://bit.ly/3dUBH2m - GitHub issue\n *\n * @param query - Media query\n *\n * @returns Media observable\n */\nexport function watchMedia(query: string): Observable {\n const media = matchMedia(query)\n return fromEventPattern(next => (\n media.addListener(() => next(media.matches))\n ))\n .pipe(\n startWith(media.matches)\n )\n}\n\n/**\n * Watch print mode\n *\n * @returns Print observable\n */\nexport function watchPrint(): Observable {\n const media = matchMedia(\"print\")\n return merge(\n fromEvent(window, \"beforeprint\").pipe(map(() => true)),\n fromEvent(window, \"afterprint\").pipe(map(() => false))\n )\n .pipe(\n startWith(media.matches)\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Toggle an observable with a media observable\n *\n * @template T - Data type\n *\n * @param query$ - Media observable\n * @param factory - Observable factory\n *\n * @returns Toggled observable\n */\nexport function at(\n query$: Observable, factory: () => Observable\n): Observable {\n return query$\n .pipe(\n switchMap(active => active ? factory() : EMPTY)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n catchError,\n from,\n map,\n of,\n shareReplay,\n switchMap,\n throwError\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch the given URL\n *\n * If the request fails (e.g. when dispatched from `file://` locations), the\n * observable will complete without emitting a value.\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Response observable\n */\nexport function request(\n url: URL | string, options: RequestInit = { credentials: \"same-origin\" }\n): Observable {\n return from(fetch(`${url}`, options))\n .pipe(\n catchError(() => EMPTY),\n switchMap(res => res.status !== 200\n ? throwError(() => new Error(res.statusText))\n : of(res)\n )\n )\n}\n\n/**\n * Fetch JSON from the given URL\n *\n * @template T - Data type\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestJSON(\n url: URL | string, options?: RequestInit\n): Observable {\n return request(url, options)\n .pipe(\n switchMap(res => res.json()),\n shareReplay(1)\n )\n}\n\n/**\n * Fetch XML from the given URL\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestXML(\n url: URL | string, options?: RequestInit\n): Observable {\n const dom = new DOMParser()\n return request(url, options)\n .pipe(\n switchMap(res => res.text()),\n map(res => dom.parseFromString(res, \"text/xml\")),\n shareReplay(1)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n defer,\n finalize,\n fromEvent,\n map,\n merge,\n switchMap,\n take,\n throwError\n} from \"rxjs\"\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create and load a `script` element\n *\n * This function returns an observable that will emit when the script was\n * successfully loaded, or throw an error if it didn't.\n *\n * @param src - Script URL\n *\n * @returns Script observable\n */\nexport function watchScript(src: string): Observable {\n const script = h(\"script\", { src })\n return defer(() => {\n document.head.appendChild(script)\n return merge(\n fromEvent(script, \"load\"),\n fromEvent(script, \"error\")\n .pipe(\n switchMap(() => (\n throwError(() => new ReferenceError(`Invalid script: ${src}`))\n ))\n )\n )\n .pipe(\n map(() => undefined),\n finalize(() => document.head.removeChild(script)),\n take(1)\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport offset\n */\nexport interface ViewportOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport offset\n *\n * On iOS Safari, viewport offset can be negative due to overflow scrolling.\n * As this may induce strange behaviors downstream, we'll just limit it to 0.\n *\n * @returns Viewport offset\n */\nexport function getViewportOffset(): ViewportOffset {\n return {\n x: Math.max(0, scrollX),\n y: Math.max(0, scrollY)\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport offset\n *\n * @returns Viewport offset observable\n */\nexport function watchViewportOffset(): Observable {\n return merge(\n fromEvent(window, \"scroll\", { passive: true }),\n fromEvent(window, \"resize\", { passive: true })\n )\n .pipe(\n map(getViewportOffset),\n startWith(getViewportOffset())\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport size\n */\nexport interface ViewportSize {\n width: number /* Viewport width */\n height: number /* Viewport height */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport size\n *\n * @returns Viewport size\n */\nexport function getViewportSize(): ViewportSize {\n return {\n width: innerWidth,\n height: innerHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport size\n *\n * @returns Viewport size observable\n */\nexport function watchViewportSize(): Observable {\n return fromEvent(window, \"resize\", { passive: true })\n .pipe(\n map(getViewportSize),\n startWith(getViewportSize())\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n map,\n shareReplay\n} from \"rxjs\"\n\nimport {\n ViewportOffset,\n watchViewportOffset\n} from \"../offset\"\nimport {\n ViewportSize,\n watchViewportSize\n} from \"../size\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport\n */\nexport interface Viewport {\n offset: ViewportOffset /* Viewport offset */\n size: ViewportSize /* Viewport size */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport\n *\n * @returns Viewport observable\n */\nexport function watchViewport(): Observable {\n return combineLatest([\n watchViewportOffset(),\n watchViewportSize()\n ])\n .pipe(\n map(([offset, size]) => ({ offset, size })),\n shareReplay(1)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n distinctUntilKeyChanged,\n map\n} from \"rxjs\"\n\nimport { Header } from \"~/components\"\n\nimport { getElementOffset } from \"../../element\"\nimport { Viewport } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport relative to element\n *\n * @param el - Element\n * @param options - Options\n *\n * @returns Viewport observable\n */\nexport function watchViewportAt(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n const size$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\")\n )\n\n /* Compute element offset */\n const offset$ = combineLatest([size$, header$])\n .pipe(\n map(() => getElementOffset(el))\n )\n\n /* Compute relative viewport, return hot observable */\n return combineLatest([header$, viewport$, offset$])\n .pipe(\n map(([{ height }, { offset, size }, { x, y }]) => ({\n offset: {\n x: offset.x - x,\n y: offset.y - y + height\n },\n size\n }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n fromEvent,\n map,\n share,\n switchMap,\n tap,\n throttle\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Worker message\n */\nexport interface WorkerMessage {\n type: unknown /* Message type */\n data?: unknown /* Message data */\n}\n\n/**\n * Worker handler\n *\n * @template T - Message type\n */\nexport interface WorkerHandler<\n T extends WorkerMessage\n> {\n tx$: Subject /* Message transmission subject */\n rx$: Observable /* Message receive observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n *\n * @template T - Worker message type\n */\ninterface WatchOptions {\n tx$: Observable /* Message transmission observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch a web worker\n *\n * This function returns an observable that sends all values emitted by the\n * message observable to the web worker. Web worker communication is expected\n * to be bidirectional (request-response) and synchronous. Messages that are\n * emitted during a pending request are throttled, the last one is emitted.\n *\n * @param worker - Web worker\n * @param options - Options\n *\n * @returns Worker message observable\n */\nexport function watchWorker(\n worker: Worker, { tx$ }: WatchOptions\n): Observable {\n\n /* Intercept messages from worker-like objects */\n const rx$ = fromEvent(worker, \"message\")\n .pipe(\n map(({ data }) => data as T)\n )\n\n /* Send and receive messages, return hot observable */\n return tx$\n .pipe(\n throttle(() => rx$, { leading: true, trailing: true }),\n tap(message => worker.postMessage(message)),\n switchMap(() => rx$),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElement, getLocation } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Feature flag\n */\nexport type Flag =\n | \"announce.dismiss\" /* Dismissable announcement bar */\n | \"content.code.annotate\" /* Code annotations */\n | \"content.lazy\" /* Lazy content elements */\n | \"content.tabs.link\" /* Link content tabs */\n | \"header.autohide\" /* Hide header */\n | \"navigation.expand\" /* Automatic expansion */\n | \"navigation.indexes\" /* Section pages */\n | \"navigation.instant\" /* Instant loading */\n | \"navigation.sections\" /* Section navigation */\n | \"navigation.tabs\" /* Tabs navigation */\n | \"navigation.tabs.sticky\" /* Tabs navigation (sticky) */\n | \"navigation.top\" /* Back-to-top button */\n | \"navigation.tracking\" /* Anchor tracking */\n | \"search.highlight\" /* Search highlighting */\n | \"search.share\" /* Search sharing */\n | \"search.suggest\" /* Search suggestions */\n | \"toc.follow\" /* Following table of contents */\n | \"toc.integrate\" /* Integrated table of contents */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Translation\n */\nexport type Translation =\n | \"clipboard.copy\" /* Copy to clipboard */\n | \"clipboard.copied\" /* Copied to clipboard */\n | \"search.config.lang\" /* Search language */\n | \"search.config.pipeline\" /* Search pipeline */\n | \"search.config.separator\" /* Search separator */\n | \"search.placeholder\" /* Search */\n | \"search.result.placeholder\" /* Type to start searching */\n | \"search.result.none\" /* No matching documents */\n | \"search.result.one\" /* 1 matching document */\n | \"search.result.other\" /* # matching documents */\n | \"search.result.more.one\" /* 1 more on this page */\n | \"search.result.more.other\" /* # more on this page */\n | \"search.result.term.missing\" /* Missing */\n | \"select.version.title\" /* Version selector */\n\n/**\n * Translations\n */\nexport type Translations = Record\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Versioning\n */\nexport interface Versioning {\n provider: \"mike\" /* Version provider */\n default?: string /* Default version */\n}\n\n/**\n * Configuration\n */\nexport interface Config {\n base: string /* Base URL */\n features: Flag[] /* Feature flags */\n translations: Translations /* Translations */\n search: string /* Search worker URL */\n tags?: Record /* Tags mapping */\n version?: Versioning /* Versioning */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration and make base URL absolute\n */\nconst script = getElement(\"#__config\")\nconst config: Config = JSON.parse(script.textContent!)\nconfig.base = `${new URL(config.base, getLocation())}`\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration\n *\n * @returns Global configuration\n */\nexport function configuration(): Config {\n return config\n}\n\n/**\n * Check whether a feature flag is enabled\n *\n * @param flag - Feature flag\n *\n * @returns Test result\n */\nexport function feature(flag: Flag): boolean {\n return config.features.includes(flag)\n}\n\n/**\n * Retrieve the translation for the given key\n *\n * @param key - Key to be translated\n * @param value - Positional value, if any\n *\n * @returns Translation\n */\nexport function translation(\n key: Translation, value?: string | number\n): string {\n return typeof value !== \"undefined\"\n ? config.translations[key].replace(\"#\", value.toString())\n : config.translations[key]\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElement, getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component type\n */\nexport type ComponentType =\n | \"announce\" /* Announcement bar */\n | \"container\" /* Container */\n | \"consent\" /* Consent */\n | \"content\" /* Content */\n | \"dialog\" /* Dialog */\n | \"header\" /* Header */\n | \"header-title\" /* Header title */\n | \"header-topic\" /* Header topic */\n | \"main\" /* Main area */\n | \"outdated\" /* Version warning */\n | \"palette\" /* Color palette */\n | \"search\" /* Search */\n | \"search-query\" /* Search input */\n | \"search-result\" /* Search results */\n | \"search-share\" /* Search sharing */\n | \"search-suggest\" /* Search suggestions */\n | \"sidebar\" /* Sidebar */\n | \"skip\" /* Skip link */\n | \"source\" /* Repository information */\n | \"tabs\" /* Navigation tabs */\n | \"toc\" /* Table of contents */\n | \"top\" /* Back-to-top button */\n\n/**\n * Component\n *\n * @template T - Component type\n * @template U - Reference type\n */\nexport type Component<\n T extends {} = {},\n U extends HTMLElement = HTMLElement\n> =\n T & {\n ref: U /* Component reference */\n }\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component type map\n */\ninterface ComponentTypeMap {\n \"announce\": HTMLElement /* Announcement bar */\n \"container\": HTMLElement /* Container */\n \"consent\": HTMLElement /* Consent */\n \"content\": HTMLElement /* Content */\n \"dialog\": HTMLElement /* Dialog */\n \"header\": HTMLElement /* Header */\n \"header-title\": HTMLElement /* Header title */\n \"header-topic\": HTMLElement /* Header topic */\n \"main\": HTMLElement /* Main area */\n \"outdated\": HTMLElement /* Version warning */\n \"palette\": HTMLElement /* Color palette */\n \"search\": HTMLElement /* Search */\n \"search-query\": HTMLInputElement /* Search input */\n \"search-result\": HTMLElement /* Search results */\n \"search-share\": HTMLAnchorElement /* Search sharing */\n \"search-suggest\": HTMLElement /* Search suggestions */\n \"sidebar\": HTMLElement /* Sidebar */\n \"skip\": HTMLAnchorElement /* Skip link */\n \"source\": HTMLAnchorElement /* Repository information */\n \"tabs\": HTMLElement /* Navigation tabs */\n \"toc\": HTMLElement /* Table of contents */\n \"top\": HTMLAnchorElement /* Back-to-top button */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the element for a given component or throw a reference error\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getComponentElement(\n type: T, node: ParentNode = document\n): ComponentTypeMap[T] {\n return getElement(`[data-md-component=${type}]`, node)\n}\n\n/**\n * Retrieve all elements for a given component\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getComponentElements(\n type: T, node: ParentNode = document\n): ComponentTypeMap[T][] {\n return getElements(`[data-md-component=${type}]`, node)\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n finalize,\n fromEvent,\n map,\n startWith,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport { getElement } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Announcement bar\n */\nexport interface Announce {\n hash: number /* Content hash */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch announcement bar\n *\n * @param el - Announcement bar element\n *\n * @returns Announcement bar observable\n */\nexport function watchAnnounce(\n el: HTMLElement\n): Observable {\n const button = getElement(\".md-typeset > :first-child\", el)\n return fromEvent(button, \"click\", { once: true })\n .pipe(\n map(() => getElement(\".md-typeset\", el)),\n map(content => ({ hash: __md_hash(content.innerHTML) }))\n )\n}\n\n/**\n * Mount announcement bar\n *\n * @param el - Announcement bar element\n *\n * @returns Announcement bar component observable\n */\nexport function mountAnnounce(\n el: HTMLElement\n): Observable> {\n if (!feature(\"announce.dismiss\") || !el.childElementCount)\n return EMPTY\n\n /* Mount component on subscription */\n return defer(() => {\n const push$ = new Subject()\n push$\n .pipe(\n startWith({ hash: __md_get(\"__announce\") })\n )\n .subscribe(({ hash }) => {\n if (hash && hash === (__md_get(\"__announce\") ?? hash)) {\n el.hidden = true\n\n /* Persist preference in local storage */\n __md_set(\"__announce\", hash)\n }\n })\n\n /* Create and return component */\n return watchAnnounce(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n finalize,\n map,\n tap\n} from \"rxjs\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Consent\n */\nexport interface Consent {\n hidden: boolean /* Consent is hidden */\n}\n\n/**\n * Consent defaults\n */\nexport interface ConsentDefaults {\n analytics?: boolean /* Consent for Analytics */\n github?: boolean /* Consent for GitHub */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n target$: Observable /* Target observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch consent\n *\n * @param el - Consent element\n * @param options - Options\n *\n * @returns Consent observable\n */\nexport function watchConsent(\n el: HTMLElement, { target$ }: WatchOptions\n): Observable {\n return target$\n .pipe(\n map(target => ({ hidden: target !== el }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount consent\n *\n * @param el - Consent element\n * @param options - Options\n *\n * @returns Consent component observable\n */\nexport function mountConsent(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const internal$ = new Subject()\n internal$.subscribe(({ hidden }) => {\n el.hidden = hidden\n })\n\n /* Create and return component */\n return watchConsent(el, options)\n .pipe(\n tap(state => internal$.next(state)),\n finalize(() => internal$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ClipboardJS from \"clipboard\"\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n finalize,\n map,\n mergeWith,\n switchMap,\n take,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n getElementContentSize,\n watchElementSize,\n watchElementVisibility\n} from \"~/browser\"\nimport { renderClipboardButton } from \"~/templates\"\n\nimport { Component } from \"../../../_\"\nimport {\n Annotation,\n mountAnnotationList\n} from \"../../annotation\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Code block\n */\nexport interface CodeBlock {\n scrollable: boolean /* Code block overflows */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Global sequence number for code blocks\n */\nlet sequence = 0\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Find candidate list element directly following a code block\n *\n * @param el - Code block element\n *\n * @returns List element or nothing\n */\nfunction findCandidateList(el: HTMLElement): HTMLElement | undefined {\n if (el.nextElementSibling) {\n const sibling = el.nextElementSibling as HTMLElement\n if (sibling.tagName === \"OL\")\n return sibling\n\n /* Skip empty paragraphs - see https://bit.ly/3r4ZJ2O */\n else if (sibling.tagName === \"P\" && !sibling.children.length)\n return findCandidateList(sibling)\n }\n\n /* Everything else */\n return undefined\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch code block\n *\n * This function monitors size changes of the viewport, as well as switches of\n * content tabs with embedded code blocks, as both may trigger overflow.\n *\n * @param el - Code block element\n *\n * @returns Code block observable\n */\nexport function watchCodeBlock(\n el: HTMLElement\n): Observable {\n return watchElementSize(el)\n .pipe(\n map(({ width }) => {\n const content = getElementContentSize(el)\n return {\n scrollable: content.width > width\n }\n }),\n distinctUntilKeyChanged(\"scrollable\")\n )\n}\n\n/**\n * Mount code block\n *\n * This function ensures that an overflowing code block is focusable through\n * keyboard, so it can be scrolled without a mouse to improve on accessibility.\n * Furthermore, if code annotations are enabled, they are mounted if and only\n * if the code block is currently visible, e.g., not in a hidden content tab.\n *\n * Note that code blocks may be mounted eagerly or lazily. If they're mounted\n * lazily (on first visibility), code annotation anchor links will not work,\n * as they are evaluated on initial page load, and code annotations in general\n * might feel a little bumpier.\n *\n * @param el - Code block element\n * @param options - Options\n *\n * @returns Code block and annotation component observable\n */\nexport function mountCodeBlock(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const { matches: hover } = matchMedia(\"(hover)\")\n\n /* Defer mounting of code block - see https://bit.ly/3vHVoVD */\n const factory$ = defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ scrollable }) => {\n if (scrollable && hover)\n el.setAttribute(\"tabindex\", \"0\")\n else\n el.removeAttribute(\"tabindex\")\n })\n\n /* Render button for Clipboard.js integration */\n if (ClipboardJS.isSupported()) {\n const parent = el.closest(\"pre\")!\n parent.id = `__code_${++sequence}`\n parent.insertBefore(\n renderClipboardButton(parent.id),\n el\n )\n }\n\n /* Handle code annotations */\n const container = el.closest(\".highlight\")\n if (container instanceof HTMLElement) {\n const list = findCandidateList(container)\n\n /* Mount code annotations, if enabled */\n if (typeof list !== \"undefined\" && (\n container.classList.contains(\"annotate\") ||\n feature(\"content.code.annotate\")\n )) {\n const annotations$ = mountAnnotationList(list, el, options)\n\n /* Create and return component */\n return watchCodeBlock(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state })),\n mergeWith(\n watchElementSize(container)\n .pipe(\n map(({ width, height }) => width && height),\n distinctUntilChanged(),\n switchMap(active => active ? annotations$ : EMPTY)\n )\n )\n )\n }\n }\n\n /* Create and return component */\n return watchCodeBlock(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n\n /* Mount code block lazily */\n if (feature(\"content.lazy\"))\n return watchElementVisibility(el)\n .pipe(\n filter(visible => visible),\n take(1),\n switchMap(() => factory$)\n )\n\n /* Mount code block */\n return factory$\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a tooltip\n *\n * @param id - Tooltip identifier\n *\n * @returns Element\n */\nexport function renderTooltip(id?: string): HTMLElement {\n return (\n
    \n
    \n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\nimport { renderTooltip } from \"../tooltip\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render an annotation\n *\n * @param id - Annotation identifier\n * @param prefix - Tooltip identifier prefix\n *\n * @returns Element\n */\nexport function renderAnnotation(\n id: string | number, prefix?: string\n): HTMLElement {\n prefix = prefix ? `${prefix}_annotation_${id}` : undefined\n\n /* Render tooltip with anchor, if given */\n if (prefix) {\n const anchor = prefix ? `#${prefix}` : undefined\n return (\n \n )\n } else {\n return (\n \n )\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { translation } from \"~/_\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a 'copy-to-clipboard' button\n *\n * @param id - Unique identifier\n *\n * @returns Element\n */\nexport function renderClipboardButton(id: string): HTMLElement {\n return (\n code`}\n >\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ComponentChild } from \"preact\"\n\nimport { configuration, feature, translation } from \"~/_\"\nimport {\n SearchDocument,\n SearchMetadata,\n SearchResultItem\n} from \"~/integrations/search\"\nimport { h, truncate } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Render flag\n */\nconst enum Flag {\n TEASER = 1, /* Render teaser */\n PARENT = 2 /* Render as parent */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper function\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search document\n *\n * @param document - Search document\n * @param flag - Render flags\n *\n * @returns Element\n */\nfunction renderSearchDocument(\n document: SearchDocument & SearchMetadata, flag: Flag\n): HTMLElement {\n const parent = flag & Flag.PARENT\n const teaser = flag & Flag.TEASER\n\n /* Render missing query terms */\n const missing = Object.keys(document.terms)\n .filter(key => !document.terms[key])\n .reduce((list, key) => [\n ...list, {key}, \" \"\n ], [])\n .slice(0, -1)\n\n /* Assemble query string for highlighting */\n const url = new URL(document.location)\n if (feature(\"search.highlight\"))\n url.searchParams.set(\"h\", Object.entries(document.terms)\n .filter(([, match]) => match)\n .reduce((highlight, [value]) => `${highlight} ${value}`.trim(), \"\")\n )\n\n /* Render article or section, depending on flags */\n const { tags } = configuration()\n return (\n \n \n {parent > 0 &&
    }\n

    {document.title}

    \n {teaser > 0 && document.text.length > 0 &&\n

    \n {truncate(document.text, 320)}\n

    \n }\n {document.tags && (\n
    \n {document.tags.map(tag => {\n const id = tag.replace(/<[^>]+>/g, \"\")\n const type = tags\n ? id in tags\n ? `md-tag-icon md-tag-icon--${tags[id]}`\n : \"md-tag-icon\"\n : \"\"\n return (\n {tag}\n )\n })}\n
    \n )}\n {teaser > 0 && missing.length > 0 &&\n

    \n {translation(\"search.result.term.missing\")}: {...missing}\n

    \n }\n \n
    \n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search result\n *\n * @param result - Search result\n *\n * @returns Element\n */\nexport function renderSearchResultItem(\n result: SearchResultItem\n): HTMLElement {\n const threshold = result[0].score\n const docs = [...result]\n\n /* Find and extract parent article */\n const parent = docs.findIndex(doc => !doc.location.includes(\"#\"))\n const [article] = docs.splice(parent, 1)\n\n /* Determine last index above threshold */\n let index = docs.findIndex(doc => doc.score < threshold)\n if (index === -1)\n index = docs.length\n\n /* Partition sections */\n const best = docs.slice(0, index)\n const more = docs.slice(index)\n\n /* Render children */\n const children = [\n renderSearchDocument(article, Flag.PARENT | +(!parent && index === 0)),\n ...best.map(section => renderSearchDocument(section, Flag.TEASER)),\n ...more.length ? [\n
    \n \n {more.length > 0 && more.length === 1\n ? translation(\"search.result.more.one\")\n : translation(\"search.result.more.other\", more.length)\n }\n \n {...more.map(section => renderSearchDocument(section, Flag.TEASER))}\n
    \n ] : []\n ]\n\n /* Render search result */\n return (\n
  • \n {children}\n
  • \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SourceFacts } from \"~/components\"\nimport { h, round } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render repository facts\n *\n * @param facts - Repository facts\n *\n * @returns Element\n */\nexport function renderSourceFacts(facts: SourceFacts): HTMLElement {\n return (\n
      \n {Object.entries(facts).map(([key, value]) => (\n
    • \n {typeof value === \"number\" ? round(value) : value}\n
    • \n ))}\n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Tabbed control type\n */\ntype TabbedControlType =\n | \"prev\"\n | \"next\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render control for content tabs\n *\n * @param type - Control type\n *\n * @returns Element\n */\nexport function renderTabbedControl(\n type: TabbedControlType\n): HTMLElement {\n const classes = `tabbed-control tabbed-control--${type}`\n return (\n \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a table inside a wrapper to improve scrolling on mobile\n *\n * @param table - Table element\n *\n * @returns Element\n */\nexport function renderTable(table: HTMLElement): HTMLElement {\n return (\n
    \n
    \n {table}\n
    \n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { configuration, translation } from \"~/_\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Version\n */\nexport interface Version {\n version: string /* Version identifier */\n title: string /* Version title */\n aliases: string[] /* Version aliases */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a version\n *\n * @param version - Version\n *\n * @returns Element\n */\nfunction renderVersion(version: Version): HTMLElement {\n const config = configuration()\n\n /* Ensure trailing slash - see https://bit.ly/3rL5u3f */\n const url = new URL(`../${version.version}/`, config.base)\n return (\n
  • \n \n {version.title}\n \n
  • \n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a version selector\n *\n * @param versions - Versions\n * @param active - Active version\n *\n * @returns Element\n */\nexport function renderVersionSelector(\n versions: Version[], active: Version\n): HTMLElement {\n return (\n
    \n \n {active.title}\n \n
      \n {versions.map(renderVersion)}\n
    \n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n auditTime,\n combineLatest,\n debounceTime,\n defer,\n delay,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n switchMap,\n take,\n takeLast,\n takeUntil,\n tap,\n throttleTime,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n ElementOffset,\n getActiveElement,\n getElementSize,\n watchElementContentOffset,\n watchElementFocus,\n watchElementOffset,\n watchElementVisibility\n} from \"~/browser\"\n\nimport { Component } from \"../../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Annotation\n */\nexport interface Annotation {\n active: boolean /* Annotation is active */\n offset: ElementOffset /* Annotation offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch annotation\n *\n * @param el - Annotation element\n * @param container - Containing element\n *\n * @returns Annotation observable\n */\nexport function watchAnnotation(\n el: HTMLElement, container: HTMLElement\n): Observable {\n const offset$ = defer(() => combineLatest([\n watchElementOffset(el),\n watchElementContentOffset(container)\n ]))\n .pipe(\n map(([{ x, y }, scroll]): ElementOffset => {\n const { width, height } = getElementSize(el)\n return ({\n x: x - scroll.x + width / 2,\n y: y - scroll.y + height / 2\n })\n })\n )\n\n /* Actively watch annotation on focus */\n return watchElementFocus(el)\n .pipe(\n switchMap(active => offset$\n .pipe(\n map(offset => ({ active, offset })),\n take(+!active || Infinity)\n )\n )\n )\n}\n\n/**\n * Mount annotation\n *\n * @param el - Annotation element\n * @param container - Containing element\n * @param options - Options\n *\n * @returns Annotation component observable\n */\nexport function mountAnnotation(\n el: HTMLElement, container: HTMLElement, { target$ }: MountOptions\n): Observable> {\n const [tooltip, index] = Array.from(el.children)\n\n /* Mount component on subscription */\n return defer(() => {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n push$.subscribe({\n\n /* Handle emission */\n next({ offset }) {\n el.style.setProperty(\"--md-tooltip-x\", `${offset.x}px`)\n el.style.setProperty(\"--md-tooltip-y\", `${offset.y}px`)\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-tooltip-x\")\n el.style.removeProperty(\"--md-tooltip-y\")\n }\n })\n\n /* Start animation only when annotation is visible */\n watchElementVisibility(el)\n .pipe(\n takeUntil(done$)\n )\n .subscribe(visible => {\n el.toggleAttribute(\"data-md-visible\", visible)\n })\n\n /* Toggle tooltip presence to mitigate empty lines when copying */\n merge(\n push$.pipe(filter(({ active }) => active)),\n push$.pipe(debounceTime(250), filter(({ active }) => !active))\n )\n .subscribe({\n\n /* Handle emission */\n next({ active }) {\n if (active)\n el.prepend(tooltip)\n else\n tooltip.remove()\n },\n\n /* Handle complete */\n complete() {\n el.prepend(tooltip)\n }\n })\n\n /* Toggle tooltip visibility */\n push$\n .pipe(\n auditTime(16, animationFrameScheduler)\n )\n .subscribe(({ active }) => {\n tooltip.classList.toggle(\"md-tooltip--active\", active)\n })\n\n /* Track relative origin of tooltip */\n push$\n .pipe(\n throttleTime(125, animationFrameScheduler),\n filter(() => !!el.offsetParent),\n map(() => el.offsetParent!.getBoundingClientRect()),\n map(({ x }) => x)\n )\n .subscribe({\n\n /* Handle emission */\n next(origin) {\n if (origin)\n el.style.setProperty(\"--md-tooltip-0\", `${-origin}px`)\n else\n el.style.removeProperty(\"--md-tooltip-0\")\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-tooltip-0\")\n }\n })\n\n /* Allow to copy link without scrolling to anchor */\n fromEvent(index, \"click\")\n .pipe(\n takeUntil(done$),\n filter(ev => !(ev.metaKey || ev.ctrlKey))\n )\n .subscribe(ev => ev.preventDefault())\n\n /* Allow to open link in new tab or blur on close */\n fromEvent(index, \"mousedown\")\n .pipe(\n takeUntil(done$),\n withLatestFrom(push$)\n )\n .subscribe(([ev, { active }]) => {\n\n /* Open in new tab */\n if (ev.button !== 0 || ev.metaKey || ev.ctrlKey) {\n ev.preventDefault()\n\n /* Close annotation */\n } else if (active) {\n ev.preventDefault()\n\n /* Focus parent annotation, if any */\n const parent = el.parentElement!.closest(\".md-annotation\")\n if (parent instanceof HTMLElement)\n parent.focus()\n else\n getActiveElement()?.blur()\n }\n })\n\n /* Open and focus annotation on location target */\n target$\n .pipe(\n takeUntil(done$),\n filter(target => target === tooltip),\n delay(125)\n )\n .subscribe(() => el.focus())\n\n /* Create and return component */\n return watchAnnotation(el, container)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n finalize,\n merge,\n share,\n takeLast,\n takeUntil\n} from \"rxjs\"\n\nimport {\n getElement,\n getElements,\n getOptionalElement\n} from \"~/browser\"\nimport { renderAnnotation } from \"~/templates\"\n\nimport { Component } from \"../../../_\"\nimport {\n Annotation,\n mountAnnotation\n} from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Find all annotation markers in the given code block\n *\n * @param container - Containing element\n *\n * @returns Annotation markers\n */\nfunction findAnnotationMarkers(container: HTMLElement): Text[] {\n const markers: Text[] = []\n for (const el of getElements(\".c, .c1, .cm\", container)) {\n const nodes: Text[] = []\n\n /* Find all text nodes in current element */\n const it = document.createNodeIterator(el, NodeFilter.SHOW_TEXT)\n for (let node = it.nextNode(); node; node = it.nextNode())\n nodes.push(node as Text)\n\n /* Find all markers in each text node */\n for (let text of nodes) {\n let match: RegExpExecArray | null\n\n /* Split text at marker and add to list */\n while ((match = /(\\(\\d+\\))(!)?/.exec(text.textContent!))) {\n const [, id, force] = match\n if (typeof force === \"undefined\") {\n const marker = text.splitText(match.index)\n text = marker.splitText(id.length)\n markers.push(marker)\n\n /* Replace entire text with marker */\n } else {\n text.textContent = id\n markers.push(text)\n break\n }\n }\n }\n }\n return markers\n}\n\n/**\n * Swap the child nodes of two elements\n *\n * @param source - Source element\n * @param target - Target element\n */\nfunction swap(source: HTMLElement, target: HTMLElement): void {\n target.append(...Array.from(source.childNodes))\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount annotation list\n *\n * This function analyzes the containing code block and checks for markers\n * referring to elements in the given annotation list. If no markers are found,\n * the list is left untouched. Otherwise, list elements are rendered as\n * annotations inside the code block.\n *\n * @param el - Annotation list element\n * @param container - Containing element\n * @param options - Options\n *\n * @returns Annotation component observable\n */\nexport function mountAnnotationList(\n el: HTMLElement, container: HTMLElement, { target$, print$ }: MountOptions\n): Observable> {\n\n /* Compute prefix for tooltip anchors */\n const parent = container.closest(\"[id]\")\n const prefix = parent?.id\n\n /* Find and replace all markers with empty annotations */\n const annotations = new Map()\n for (const marker of findAnnotationMarkers(container)) {\n const [, id] = marker.textContent!.match(/\\((\\d+)\\)/)!\n if (getOptionalElement(`li:nth-child(${id})`, el)) {\n annotations.set(id, renderAnnotation(id, prefix))\n marker.replaceWith(annotations.get(id)!)\n }\n }\n\n /* Keep list if there are no annotations to render */\n if (annotations.size === 0)\n return EMPTY\n\n /* Mount component on subscription */\n return defer(() => {\n const done$ = new Subject()\n\n /* Retrieve container pairs for swapping */\n const pairs: [HTMLElement, HTMLElement][] = []\n for (const [id, annotation] of annotations)\n pairs.push([\n getElement(\".md-typeset\", annotation),\n getElement(`li:nth-child(${id})`, el)\n ])\n\n /* Handle print mode - see https://bit.ly/3rgPdpt */\n print$\n .pipe(\n takeUntil(done$.pipe(takeLast(1)))\n )\n .subscribe(active => {\n el.hidden = !active\n\n /* Show annotations in code block or list (print) */\n for (const [inner, child] of pairs)\n if (!active)\n swap(child, inner)\n else\n swap(inner, child)\n })\n\n /* Create and return component */\n return merge(...[...annotations]\n .map(([, annotation]) => (\n mountAnnotation(annotation, container, { target$ })\n ))\n )\n .pipe(\n finalize(() => done$.complete()),\n share()\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n map,\n of,\n shareReplay,\n tap\n} from \"rxjs\"\n\nimport { watchScript } from \"~/browser\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../../_\"\n\nimport themeCSS from \"./index.css\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mermaid diagram\n */\nexport interface Mermaid {}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Mermaid instance observable\n */\nlet mermaid$: Observable\n\n/**\n * Global sequence number for diagrams\n */\nlet sequence = 0\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch Mermaid script\n *\n * @returns Mermaid scripts observable\n */\nfunction fetchScripts(): Observable {\n return typeof mermaid === \"undefined\" || mermaid instanceof Element\n ? watchScript(\"https://unpkg.com/mermaid@9.1.7/dist/mermaid.min.js/")\n : of(undefined)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount Mermaid diagram\n *\n * @param el - Code block element\n *\n * @returns Mermaid diagram component observable\n */\nexport function mountMermaid(\n el: HTMLElement\n): Observable> {\n el.classList.remove(\"mermaid\") // Hack: mitigate https://bit.ly/3CiN6Du\n mermaid$ ||= fetchScripts()\n .pipe(\n tap(() => mermaid.initialize({\n startOnLoad: false,\n themeCSS,\n sequence: {\n actorFontSize: \"16px\", // Hack: mitigate https://bit.ly/3y0NEi3\n messageFontSize: \"16px\",\n noteFontSize: \"16px\"\n }\n })),\n map(() => undefined),\n shareReplay(1)\n )\n\n /* Render diagram */\n mermaid$.subscribe(() => {\n el.classList.add(\"mermaid\") // Hack: mitigate https://bit.ly/3CiN6Du\n const id = `__mermaid_${sequence++}`\n const host = h(\"div\", { class: \"mermaid\" })\n mermaid.mermaidAPI.render(id, el.textContent, (svg: string) => {\n\n /* Create a shadow root and inject diagram */\n const shadow = host.attachShadow({ mode: \"closed\" })\n shadow.innerHTML = svg\n\n /* Replace code block with diagram */\n el.replaceWith(host)\n })\n })\n\n /* Create and return component */\n return mermaid$\n .pipe(\n map(() => ({ ref: el }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n filter,\n finalize,\n map,\n merge,\n tap\n} from \"rxjs\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Details\n */\nexport interface Details {\n action: \"open\" | \"close\" /* Details state */\n reveal?: boolean /* Details is revealed */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch details\n *\n * @param el - Details element\n * @param options - Options\n *\n * @returns Details observable\n */\nexport function watchDetails(\n el: HTMLDetailsElement, { target$, print$ }: WatchOptions\n): Observable
    {\n let open = true\n return merge(\n\n /* Open and focus details on location target */\n target$\n .pipe(\n map(target => target.closest(\"details:not([open])\")!),\n filter(details => el === details),\n map(() => ({\n action: \"open\", reveal: true\n }) as Details)\n ),\n\n /* Open details on print and close afterwards */\n print$\n .pipe(\n filter(active => active || !open),\n tap(() => open = el.open),\n map(active => ({\n action: active ? \"open\" : \"close\"\n }) as Details)\n )\n )\n}\n\n/**\n * Mount details\n *\n * This function ensures that `details` tags are opened on anchor jumps and\n * prior to printing, so the whole content of the page is visible.\n *\n * @param el - Details element\n * @param options - Options\n *\n * @returns Details component observable\n */\nexport function mountDetails(\n el: HTMLDetailsElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject
    ()\n push$.subscribe(({ action, reveal }) => {\n el.toggleAttribute(\"open\", action === \"open\")\n if (reveal)\n el.scrollIntoView()\n })\n\n /* Create and return component */\n return watchDetails(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, of } from \"rxjs\"\n\nimport { renderTable } from \"~/templates\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Data table\n */\nexport interface DataTable {}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Sentinel for replacement\n */\nconst sentinel = h(\"table\")\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount data table\n *\n * This function wraps a data table in another scrollable container, so it can\n * be smoothly scrolled on smaller screen sizes and won't break the layout.\n *\n * @param el - Data table element\n *\n * @returns Data table component observable\n */\nexport function mountDataTable(\n el: HTMLElement\n): Observable> {\n el.replaceWith(sentinel)\n sentinel.replaceWith(renderTable(el))\n\n /* Create and return component */\n return of({ ref: el })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n asyncScheduler,\n auditTime,\n combineLatest,\n defer,\n finalize,\n fromEvent,\n map,\n merge,\n skip,\n startWith,\n subscribeOn,\n takeLast,\n takeUntil,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n getElement,\n getElementContentOffset,\n getElementContentSize,\n getElementOffset,\n getElementSize,\n getElements,\n watchElementContentOffset,\n watchElementSize\n} from \"~/browser\"\nimport { renderTabbedControl } from \"~/templates\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Content tabs\n */\nexport interface ContentTabs {\n active: HTMLLabelElement /* Active tab label */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch content tabs\n *\n * @param el - Content tabs element\n *\n * @returns Content tabs observable\n */\nexport function watchContentTabs(\n el: HTMLElement\n): Observable {\n const inputs = getElements(\":scope > input\", el)\n const initial = inputs.find(input => input.checked) || inputs[0]\n return merge(...inputs.map(input => fromEvent(input, \"change\")\n .pipe(\n map(() => getElement(`label[for=\"${input.id}\"]`))\n )\n ))\n .pipe(\n startWith(getElement(`label[for=\"${initial.id}\"]`)),\n map(active => ({ active }))\n )\n}\n\n/**\n * Mount content tabs\n *\n * This function scrolls the active tab into view. While this functionality is\n * provided by browsers as part of `scrollInfoView`, browsers will always also\n * scroll the vertical axis, which we do not want. Thus, we decided to provide\n * this functionality ourselves.\n *\n * @param el - Content tabs element\n * @param options - Options\n *\n * @returns Content tabs component observable\n */\nexport function mountContentTabs(\n el: HTMLElement, { viewport$ }: MountOptions\n): Observable> {\n\n /* Render content tab previous button for pagination */\n const prev = renderTabbedControl(\"prev\")\n el.append(prev)\n\n /* Render content tab next button for pagination */\n const next = renderTabbedControl(\"next\")\n el.append(next)\n\n /* Mount component on subscription */\n const container = getElement(\".tabbed-labels\", el)\n return defer(() => {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n combineLatest([push$, watchElementSize(el)])\n .pipe(\n auditTime(1, animationFrameScheduler),\n takeUntil(done$)\n )\n .subscribe({\n\n /* Handle emission */\n next([{ active }, size]) {\n const offset = getElementOffset(active)\n const { width } = getElementSize(active)\n\n /* Set tab indicator offset and width */\n el.style.setProperty(\"--md-indicator-x\", `${offset.x}px`)\n el.style.setProperty(\"--md-indicator-width\", `${width}px`)\n\n /* Scroll container to active content tab */\n const content = getElementContentOffset(container)\n if (\n offset.x < content.x ||\n offset.x + width > content.x + size.width\n )\n container.scrollTo({\n left: Math.max(0, offset.x - 16),\n behavior: \"smooth\"\n })\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-indicator-x\")\n el.style.removeProperty(\"--md-indicator-width\")\n }\n })\n\n /* Hide content tab buttons on borders */\n combineLatest([\n watchElementContentOffset(container),\n watchElementSize(container)\n ])\n .pipe(\n takeUntil(done$)\n )\n .subscribe(([offset, size]) => {\n const content = getElementContentSize(container)\n prev.hidden = offset.x < 16\n next.hidden = offset.x > content.width - size.width - 16\n })\n\n /* Paginate content tab container on click */\n merge(\n fromEvent(prev, \"click\").pipe(map(() => -1)),\n fromEvent(next, \"click\").pipe(map(() => +1))\n )\n .pipe(\n takeUntil(done$)\n )\n .subscribe(direction => {\n const { width } = getElementSize(container)\n container.scrollBy({\n left: width * direction,\n behavior: \"smooth\"\n })\n })\n\n /* Set up linking of content tabs, if enabled */\n if (feature(\"content.tabs.link\"))\n push$.pipe(\n skip(1),\n withLatestFrom(viewport$)\n )\n .subscribe(([{ active }, { offset }]) => {\n const tab = active.innerText.trim()\n if (active.hasAttribute(\"data-md-switching\")) {\n active.removeAttribute(\"data-md-switching\")\n\n /* Determine viewport offset of active tab */\n } else {\n const y = el.offsetTop - offset.y\n\n /* Passively activate other tabs */\n for (const set of getElements(\"[data-tabs]\"))\n for (const input of getElements(\n \":scope > input\", set\n )) {\n const label = getElement(`label[for=\"${input.id}\"]`)\n if (\n label !== active &&\n label.innerText.trim() === tab\n ) {\n label.setAttribute(\"data-md-switching\", \"\")\n input.click()\n break\n }\n }\n\n /* Bring active tab into view */\n window.scrollTo({\n top: el.offsetTop - y\n })\n\n /* Persist active tabs in local storage */\n const tabs = __md_get(\"__tabs\") || []\n __md_set(\"__tabs\", [...new Set([tab, ...tabs])])\n }\n })\n\n /* Create and return component */\n return watchContentTabs(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n .pipe(\n subscribeOn(asyncScheduler)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, merge } from \"rxjs\"\n\nimport { Viewport, getElements } from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Annotation } from \"../annotation\"\nimport {\n CodeBlock,\n Mermaid,\n mountCodeBlock,\n mountMermaid\n} from \"../code\"\nimport {\n Details,\n mountDetails\n} from \"../details\"\nimport {\n DataTable,\n mountDataTable\n} from \"../table\"\nimport {\n ContentTabs,\n mountContentTabs\n} from \"../tabs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Content\n */\nexport type Content =\n | Annotation\n | ContentTabs\n | CodeBlock\n | Mermaid\n | DataTable\n | Details\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount content\n *\n * This function mounts all components that are found in the content of the\n * actual article, including code blocks, data tables and details.\n *\n * @param el - Content element\n * @param options - Options\n *\n * @returns Content component observable\n */\nexport function mountContent(\n el: HTMLElement, { viewport$, target$, print$ }: MountOptions\n): Observable> {\n return merge(\n\n /* Code blocks */\n ...getElements(\"pre:not(.mermaid) > code\", el)\n .map(child => mountCodeBlock(child, { target$, print$ })),\n\n /* Mermaid diagrams */\n ...getElements(\"pre.mermaid\", el)\n .map(child => mountMermaid(child)),\n\n /* Data tables */\n ...getElements(\"table:not([class])\", el)\n .map(child => mountDataTable(child)),\n\n /* Details */\n ...getElements(\"details\", el)\n .map(child => mountDetails(child, { target$, print$ })),\n\n /* Content tabs */\n ...getElements(\"[data-tabs]\", el)\n .map(child => mountContentTabs(child, { viewport$ }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n delay,\n finalize,\n map,\n merge,\n of,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { getElement } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Dialog\n */\nexport interface Dialog {\n message: string /* Dialog message */\n active: boolean /* Dialog is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n alert$: Subject /* Alert subject */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n alert$: Subject /* Alert subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch dialog\n *\n * @param _el - Dialog element\n * @param options - Options\n *\n * @returns Dialog observable\n */\nexport function watchDialog(\n _el: HTMLElement, { alert$ }: WatchOptions\n): Observable {\n return alert$\n .pipe(\n switchMap(message => merge(\n of(true),\n of(false).pipe(delay(2000))\n )\n .pipe(\n map(active => ({ message, active }))\n )\n )\n )\n}\n\n/**\n * Mount dialog\n *\n * This function reveals the dialog in the right corner when a new alert is\n * emitted through the subject that is passed as part of the options.\n *\n * @param el - Dialog element\n * @param options - Options\n *\n * @returns Dialog component observable\n */\nexport function mountDialog(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const inner = getElement(\".md-typeset\", el)\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ message, active }) => {\n el.classList.toggle(\"md-dialog--active\", active)\n inner.textContent = message\n })\n\n /* Create and return component */\n return watchDialog(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatest,\n combineLatestWith,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n map,\n of,\n shareReplay,\n startWith,\n switchMap,\n takeLast,\n takeUntil\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n watchElementSize,\n watchToggle\n} from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Main } from \"../../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface Header {\n height: number /* Header visible height */\n hidden: boolean /* Header is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Compute whether the header is hidden\n *\n * If the user scrolls past a certain threshold, the header can be hidden when\n * scrolling down, and shown when scrolling up.\n *\n * @param options - Options\n *\n * @returns Toggle observable\n */\nfunction isHidden({ viewport$ }: WatchOptions): Observable {\n if (!feature(\"header.autohide\"))\n return of(false)\n\n /* Compute direction and turning point */\n const direction$ = viewport$\n .pipe(\n map(({ offset: { y } }) => y),\n bufferCount(2, 1),\n map(([a, b]) => [a < b, b] as const),\n distinctUntilKeyChanged(0)\n )\n\n /* Compute whether header should be hidden */\n const hidden$ = combineLatest([viewport$, direction$])\n .pipe(\n filter(([{ offset }, [, y]]) => Math.abs(y - offset.y) > 100),\n map(([, [direction]]) => direction),\n distinctUntilChanged()\n )\n\n /* Compute threshold for hiding */\n const search$ = watchToggle(\"search\")\n return combineLatest([viewport$, search$])\n .pipe(\n map(([{ offset }, search]) => offset.y > 400 && !search),\n distinctUntilChanged(),\n switchMap(active => active ? hidden$ : of(false)),\n startWith(false)\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header\n *\n * @param el - Header element\n * @param options - Options\n *\n * @returns Header observable\n */\nexport function watchHeader(\n el: HTMLElement, options: WatchOptions\n): Observable
    {\n return defer(() => combineLatest([\n watchElementSize(el),\n isHidden(options)\n ]))\n .pipe(\n map(([{ height }, hidden]) => ({\n height,\n hidden\n })),\n distinctUntilChanged((a, b) => (\n a.height === b.height &&\n a.hidden === b.hidden\n )),\n shareReplay(1)\n )\n}\n\n/**\n * Mount header\n *\n * This function manages the different states of the header, i.e. whether it's\n * hidden or rendered with a shadow. This depends heavily on the main area.\n *\n * @param el - Header element\n * @param options - Options\n *\n * @returns Header component observable\n */\nexport function mountHeader(\n el: HTMLElement, { header$, main$ }: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject
    ()\n const done$ = push$.pipe(takeLast(1))\n push$\n .pipe(\n distinctUntilKeyChanged(\"active\"),\n combineLatestWith(header$)\n )\n .subscribe(([{ active }, { hidden }]) => {\n el.classList.toggle(\"md-header--shadow\", active && !hidden)\n el.hidden = hidden\n })\n\n /* Link to main area */\n main$.subscribe(push$)\n\n /* Create and return component */\n return header$\n .pipe(\n takeUntil(done$),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n distinctUntilKeyChanged,\n finalize,\n map,\n tap\n} from \"rxjs\"\n\nimport {\n Viewport,\n getElementSize,\n getOptionalElement,\n watchViewportAt\n} from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Header } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface HeaderTitle {\n active: boolean /* Header title is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header title\n *\n * @param el - Heading element\n * @param options - Options\n *\n * @returns Header title observable\n */\nexport function watchHeaderTitle(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n return watchViewportAt(el, { viewport$, header$ })\n .pipe(\n map(({ offset: { y } }) => {\n const { height } = getElementSize(el)\n return {\n active: y >= height\n }\n }),\n distinctUntilKeyChanged(\"active\")\n )\n}\n\n/**\n * Mount header title\n *\n * This function swaps the header title from the site title to the title of the\n * current page when the user scrolls past the first headline.\n *\n * @param el - Header title element\n * @param options - Options\n *\n * @returns Header title component observable\n */\nexport function mountHeaderTitle(\n el: HTMLElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ active }) => {\n el.classList.toggle(\"md-header__title--active\", active)\n })\n\n /* Obtain headline, if any */\n const heading = getOptionalElement(\"article h1\")\n if (typeof heading === \"undefined\")\n return EMPTY\n\n /* Create and return component */\n return watchHeaderTitle(heading, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n map,\n switchMap\n} from \"rxjs\"\n\nimport {\n Viewport,\n watchElementSize\n} from \"~/browser\"\n\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Main area\n */\nexport interface Main {\n offset: number /* Main area top offset */\n height: number /* Main area visible height */\n active: boolean /* Main area is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch main area\n *\n * This function returns an observable that computes the visual parameters of\n * the main area which depends on the viewport vertical offset and height, as\n * well as the height of the header element, if the header is fixed.\n *\n * @param el - Main area element\n * @param options - Options\n *\n * @returns Main area observable\n */\nexport function watchMain(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable
    {\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n map(({ height }) => height),\n distinctUntilChanged()\n )\n\n /* Compute the main area's top and bottom borders */\n const border$ = adjust$\n .pipe(\n switchMap(() => watchElementSize(el)\n .pipe(\n map(({ height }) => ({\n top: el.offsetTop,\n bottom: el.offsetTop + height\n })),\n distinctUntilKeyChanged(\"bottom\")\n )\n )\n )\n\n /* Compute the main area's offset, visible height and if we scrolled past */\n return combineLatest([adjust$, border$, viewport$])\n .pipe(\n map(([header, { top, bottom }, { offset: { y }, size: { height } }]) => {\n height = Math.max(0, height\n - Math.max(0, top - y, header)\n - Math.max(0, height + y - bottom)\n )\n return {\n offset: top - header,\n height,\n active: top - header <= y\n }\n }),\n distinctUntilChanged((a, b) => (\n a.offset === b.offset &&\n a.height === b.height &&\n a.active === b.active\n ))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n asyncScheduler,\n defer,\n finalize,\n fromEvent,\n map,\n mergeMap,\n observeOn,\n of,\n shareReplay,\n startWith,\n tap\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Palette colors\n */\nexport interface PaletteColor {\n scheme?: string /* Color scheme */\n primary?: string /* Primary color */\n accent?: string /* Accent color */\n}\n\n/**\n * Palette\n */\nexport interface Palette {\n index: number /* Palette index */\n color: PaletteColor /* Palette colors */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch color palette\n *\n * @param inputs - Color palette element\n *\n * @returns Color palette observable\n */\nexport function watchPalette(\n inputs: HTMLInputElement[]\n): Observable {\n const current = __md_get(\"__palette\") || {\n index: inputs.findIndex(input => matchMedia(\n input.getAttribute(\"data-md-color-media\")!\n ).matches)\n }\n\n /* Emit changes in color palette */\n return of(...inputs)\n .pipe(\n mergeMap(input => fromEvent(input, \"change\")\n .pipe(\n map(() => input)\n )\n ),\n startWith(inputs[Math.max(0, current.index)]),\n map(input => ({\n index: inputs.indexOf(input),\n color: {\n scheme: input.getAttribute(\"data-md-color-scheme\"),\n primary: input.getAttribute(\"data-md-color-primary\"),\n accent: input.getAttribute(\"data-md-color-accent\")\n }\n } as Palette)),\n shareReplay(1)\n )\n}\n\n/**\n * Mount color palette\n *\n * @param el - Color palette element\n *\n * @returns Color palette component observable\n */\nexport function mountPalette(\n el: HTMLElement\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(palette => {\n document.body.setAttribute(\"data-md-color-switching\", \"\")\n\n /* Set color palette */\n for (const [key, value] of Object.entries(palette.color))\n document.body.setAttribute(`data-md-color-${key}`, value)\n\n /* Toggle visibility */\n for (let index = 0; index < inputs.length; index++) {\n const label = inputs[index].nextElementSibling\n if (label instanceof HTMLElement)\n label.hidden = palette.index !== index\n }\n\n /* Persist preference in local storage */\n __md_set(\"__palette\", palette)\n })\n\n /* Revert transition durations after color switch */\n push$.pipe(observeOn(asyncScheduler))\n .subscribe(() => {\n document.body.removeAttribute(\"data-md-color-switching\")\n })\n\n /* Create and return component */\n const inputs = getElements(\"input\", el)\n return watchPalette(inputs)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ClipboardJS from \"clipboard\"\nimport {\n Observable,\n Subject,\n map,\n tap\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport { getElement } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n alert$: Subject /* Alert subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Extract text to copy\n *\n * @param el - HTML element\n *\n * @returns Extracted text\n */\nfunction extract(el: HTMLElement): string {\n el.setAttribute(\"data-md-copying\", \"\")\n const text = el.innerText\n el.removeAttribute(\"data-md-copying\")\n return text\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up Clipboard.js integration\n *\n * @param options - Options\n */\nexport function setupClipboardJS(\n { alert$ }: SetupOptions\n): void {\n if (ClipboardJS.isSupported()) {\n new Observable(subscriber => {\n new ClipboardJS(\"[data-clipboard-target], [data-clipboard-text]\", {\n text: el => (\n el.getAttribute(\"data-clipboard-text\")! ||\n extract(getElement(\n el.getAttribute(\"data-clipboard-target\")!\n ))\n )\n })\n .on(\"success\", ev => subscriber.next(ev))\n })\n .pipe(\n tap(ev => {\n const trigger = ev.trigger as HTMLElement\n trigger.focus()\n }),\n map(() => translation(\"clipboard.copied\"))\n )\n .subscribe(alert$)\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map,\n of,\n tap\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport { getElements, requestXML } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sitemap, i.e. a list of URLs\n */\nexport type Sitemap = string[]\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Preprocess a list of URLs\n *\n * This function replaces the `site_url` in the sitemap with the actual base\n * URL, to allow instant loading to work in occasions like Netlify previews.\n *\n * @param urls - URLs\n *\n * @returns URL path parts\n */\nfunction preprocess(urls: Sitemap): Sitemap {\n if (urls.length < 2)\n return [\"\"]\n\n /* Take the first two URLs and remove everything after the last slash */\n const [root, next] = [...urls]\n .sort((a, b) => a.length - b.length)\n .map(url => url.replace(/[^/]+$/, \"\"))\n\n /* Compute common prefix */\n let index = 0\n if (root === next)\n index = root.length\n else\n while (root.charCodeAt(index) === next.charCodeAt(index))\n index++\n\n /* Remove common prefix and return in original order */\n return urls.map(url => url.replace(root.slice(0, index), \"\"))\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch the sitemap for the given base URL\n *\n * @param base - Base URL\n *\n * @returns Sitemap observable\n */\nexport function fetchSitemap(base?: URL): Observable {\n const cached = __md_get(\"__sitemap\", sessionStorage, base)\n if (cached) {\n return of(cached)\n } else {\n const config = configuration()\n return requestXML(new URL(\"sitemap.xml\", base || config.base))\n .pipe(\n map(sitemap => preprocess(getElements(\"loc\", sitemap)\n .map(node => node.textContent!)\n )),\n catchError(() => EMPTY), // @todo refactor instant loading\n defaultIfEmpty([]),\n tap(sitemap => __md_set(\"__sitemap\", sitemap, sessionStorage, base))\n )\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n NEVER,\n Observable,\n Subject,\n bufferCount,\n catchError,\n concatMap,\n debounceTime,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n fromEvent,\n map,\n merge,\n of,\n sample,\n share,\n skip,\n skipUntil,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"~/_\"\nimport {\n Viewport,\n ViewportOffset,\n getElements,\n getOptionalElement,\n request,\n setLocation,\n setLocationHash\n} from \"~/browser\"\nimport { getComponentElement } from \"~/components\"\nimport { h } from \"~/utilities\"\n\nimport { fetchSitemap } from \"../sitemap\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * History state\n */\nexport interface HistoryState {\n url: URL /* State URL */\n offset?: ViewportOffset /* State viewport offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Subject /* Document subject */\n location$: Subject /* Location subject */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up instant loading\n *\n * When fetching, theoretically, we could use `responseType: \"document\"`, but\n * since all MkDocs links are relative, we need to make sure that the current\n * location matches the document we just loaded. Otherwise any relative links\n * in the document could use the old location.\n *\n * This is the reason why we need to synchronize history events and the process\n * of fetching the document for navigation changes (except `popstate` events):\n *\n * 1. Fetch document via `XMLHTTPRequest`\n * 2. Set new location via `history.pushState`\n * 3. Parse and emit fetched document\n *\n * For `popstate` events, we must not use `history.pushState`, or the forward\n * history will be irreversibly overwritten. In case the request fails, the\n * location change is dispatched regularly.\n *\n * @param options - Options\n */\nexport function setupInstantLoading(\n { document$, location$, viewport$ }: SetupOptions\n): void {\n const config = configuration()\n if (location.protocol === \"file:\")\n return\n\n /* Disable automatic scroll restoration */\n if (\"scrollRestoration\" in history) {\n history.scrollRestoration = \"manual\"\n\n /* Hack: ensure that reloads restore viewport offset */\n fromEvent(window, \"beforeunload\")\n .subscribe(() => {\n history.scrollRestoration = \"auto\"\n })\n }\n\n /* Hack: ensure absolute favicon link to omit 404s when switching */\n const favicon = getOptionalElement(\"link[rel=icon]\")\n if (typeof favicon !== \"undefined\")\n favicon.href = favicon.href\n\n /* Intercept internal navigation */\n const push$ = fetchSitemap()\n .pipe(\n map(paths => paths.map(path => `${new URL(path, config.base)}`)),\n switchMap(urls => fromEvent(document.body, \"click\")\n .pipe(\n filter(ev => !ev.metaKey && !ev.ctrlKey),\n switchMap(ev => {\n if (ev.target instanceof Element) {\n const el = ev.target.closest(\"a\")\n if (el && !el.target) {\n const url = new URL(el.href)\n\n /* Canonicalize URL */\n url.search = \"\"\n url.hash = \"\"\n\n /* Check if URL should be intercepted */\n if (\n url.pathname !== location.pathname &&\n urls.includes(url.toString())\n ) {\n ev.preventDefault()\n return of({\n url: new URL(el.href)\n })\n }\n }\n }\n return NEVER\n })\n )\n ),\n share()\n )\n\n /* Intercept history back and forward */\n const pop$ = fromEvent(window, \"popstate\")\n .pipe(\n filter(ev => ev.state !== null),\n map(ev => ({\n url: new URL(location.href),\n offset: ev.state\n })),\n share()\n )\n\n /* Emit location change */\n merge(push$, pop$)\n .pipe(\n distinctUntilChanged((a, b) => a.url.href === b.url.href),\n map(({ url }) => url)\n )\n .subscribe(location$)\n\n /* Fetch document via `XMLHTTPRequest` */\n const response$ = location$\n .pipe(\n distinctUntilKeyChanged(\"pathname\"),\n switchMap(url => request(url.href)\n .pipe(\n catchError(() => {\n setLocation(url)\n return NEVER\n })\n )\n ),\n share()\n )\n\n /* Set new location via `history.pushState` */\n push$\n .pipe(\n sample(response$)\n )\n .subscribe(({ url }) => {\n history.pushState({}, \"\", `${url}`)\n })\n\n /* Parse and emit fetched document */\n const dom = new DOMParser()\n response$\n .pipe(\n switchMap(res => res.text()),\n map(res => dom.parseFromString(res, \"text/html\"))\n )\n .subscribe(document$)\n\n /* Replace meta tags and components */\n document$\n .pipe(\n skip(1)\n )\n .subscribe(replacement => {\n for (const selector of [\n\n /* Meta tags */\n \"title\",\n \"link[rel=canonical]\",\n \"meta[name=author]\",\n \"meta[name=description]\",\n\n /* Components */\n \"[data-md-component=announce]\",\n \"[data-md-component=container]\",\n \"[data-md-component=header-topic]\",\n \"[data-md-component=outdated]\",\n \"[data-md-component=logo]\",\n \"[data-md-component=skip]\",\n ...feature(\"navigation.tabs.sticky\")\n ? [\"[data-md-component=tabs]\"]\n : []\n ]) {\n const source = getOptionalElement(selector)\n const target = getOptionalElement(selector, replacement)\n if (\n typeof source !== \"undefined\" &&\n typeof target !== \"undefined\"\n ) {\n source.replaceWith(target)\n }\n }\n })\n\n /* Re-evaluate scripts */\n document$\n .pipe(\n skip(1),\n map(() => getComponentElement(\"container\")),\n switchMap(el => getElements(\"script\", el)),\n concatMap(el => {\n const script = h(\"script\")\n if (el.src) {\n for (const name of el.getAttributeNames())\n script.setAttribute(name, el.getAttribute(name)!)\n el.replaceWith(script)\n\n /* Complete when script is loaded */\n return new Observable(observer => {\n script.onload = () => observer.complete()\n })\n\n /* Complete immediately */\n } else {\n script.textContent = el.textContent\n el.replaceWith(script)\n return EMPTY\n }\n })\n )\n .subscribe()\n\n /* Emit history state change */\n merge(push$, pop$)\n .pipe(\n sample(document$)\n )\n .subscribe(({ url, offset }) => {\n if (url.hash && !offset) {\n setLocationHash(url.hash)\n } else {\n window.scrollTo(0, offset?.y || 0)\n }\n })\n\n /* Debounce update of viewport offset */\n viewport$\n .pipe(\n skipUntil(push$),\n debounceTime(250),\n distinctUntilKeyChanged(\"offset\")\n )\n .subscribe(({ offset }) => {\n history.replaceState(offset, \"\")\n })\n\n /* Set viewport offset from history */\n merge(push$, pop$)\n .pipe(\n bufferCount(2, 1),\n filter(([a, b]) => a.url.pathname === b.url.pathname),\n map(([, state]) => state)\n )\n .subscribe(({ offset }) => {\n window.scrollTo(0, offset?.y || 0)\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexDocument } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search document\n */\nexport interface SearchDocument extends SearchIndexDocument {\n parent?: SearchIndexDocument /* Parent article */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search document mapping\n */\nexport type SearchDocumentMap = Map\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search document mapping\n *\n * @param docs - Search index documents\n *\n * @returns Search document map\n */\nexport function setupSearchDocumentMap(\n docs: SearchIndexDocument[]\n): SearchDocumentMap {\n const documents = new Map()\n const parents = new Set()\n for (const doc of docs) {\n const [path, hash] = doc.location.split(\"#\")\n\n /* Extract location, title and tags */\n const location = doc.location\n const title = doc.title\n const tags = doc.tags\n\n /* Escape and cleanup text */\n const text = escapeHTML(doc.text)\n .replace(/\\s+(?=[,.:;!?])/g, \"\")\n .replace(/\\s+/g, \" \")\n\n /* Handle section */\n if (hash) {\n const parent = documents.get(path)!\n\n /* Ignore first section, override article */\n if (!parents.has(parent)) {\n parent.title = doc.title\n parent.text = text\n\n /* Remember that we processed the article */\n parents.add(parent)\n\n /* Add subsequent section */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n parent\n })\n }\n\n /* Add article */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n ...tags && { tags }\n })\n }\n }\n return documents\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexConfig } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlight function\n *\n * @param value - Value\n *\n * @returns Highlighted value\n */\nexport type SearchHighlightFn = (value: string) => string\n\n/**\n * Search highlight factory function\n *\n * @param query - Query value\n *\n * @returns Search highlight function\n */\nexport type SearchHighlightFactoryFn = (query: string) => SearchHighlightFn\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search highlighter\n *\n * @param config - Search index configuration\n * @param escape - Whether to escape HTML\n *\n * @returns Search highlight factory function\n */\nexport function setupSearchHighlighter(\n config: SearchIndexConfig, escape: boolean\n): SearchHighlightFactoryFn {\n const separator = new RegExp(config.separator, \"img\")\n const highlight = (_: unknown, data: string, term: string) => {\n return `${data}${term}`\n }\n\n /* Return factory function */\n return (query: string) => {\n query = query\n .replace(/[\\s*+\\-:~^]+/g, \" \")\n .trim()\n\n /* Create search term match expression */\n const match = new RegExp(`(^|${config.separator})(${\n query\n .replace(/[|\\\\{}()[\\]^$+*?.-]/g, \"\\\\$&\")\n .replace(separator, \"|\")\n })`, \"img\")\n\n /* Highlight string value */\n return value => (\n escape\n ? escapeHTML(value)\n : value\n )\n .replace(match, highlight)\n .replace(/<\\/mark>(\\s+)]*>/img, \"$1\")\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search transformation function\n *\n * @param value - Query value\n *\n * @returns Transformed query value\n */\nexport type SearchTransformFn = (value: string) => string\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Default transformation function\n *\n * 1. Search for terms in quotation marks and prepend a `+` modifier to denote\n * that the resulting document must contain all terms, converting the query\n * to an `AND` query (as opposed to the default `OR` behavior). While users\n * may expect terms enclosed in quotation marks to map to span queries, i.e.\n * for which order is important, Lunr.js doesn't support them, so the best\n * we can do is to convert the terms to an `AND` query.\n *\n * 2. Replace control characters which are not located at the beginning of the\n * query or preceded by white space, or are not followed by a non-whitespace\n * character or are at the end of the query string. Furthermore, filter\n * unmatched quotation marks.\n *\n * 3. Trim excess whitespace from left and right.\n *\n * @param query - Query value\n *\n * @returns Transformed query value\n */\nexport function defaultTransform(query: string): string {\n return query\n .split(/\"([^\"]+)\"/g) /* => 1 */\n .map((terms, index) => index & 1\n ? terms.replace(/^\\b|^(?![^\\x00-\\x7F]|$)|\\s+/g, \" +\")\n : terms\n )\n .join(\"\")\n .replace(/\"|(?:^|\\s+)[*+\\-:^~]+(?=\\s+|$)/g, \"\") /* => 2 */\n .trim() /* => 3 */\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchIndex, SearchResult } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search message type\n */\nexport const enum SearchMessageType {\n SETUP, /* Search index setup */\n READY, /* Search index ready */\n QUERY, /* Search query */\n RESULT /* Search results */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Message containing the data necessary to setup the search index\n */\nexport interface SearchSetupMessage {\n type: SearchMessageType.SETUP /* Message type */\n data: SearchIndex /* Message data */\n}\n\n/**\n * Message indicating the search index is ready\n */\nexport interface SearchReadyMessage {\n type: SearchMessageType.READY /* Message type */\n}\n\n/**\n * Message containing a search query\n */\nexport interface SearchQueryMessage {\n type: SearchMessageType.QUERY /* Message type */\n data: string /* Message data */\n}\n\n/**\n * Message containing results for a search query\n */\nexport interface SearchResultMessage {\n type: SearchMessageType.RESULT /* Message type */\n data: SearchResult /* Message data */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Message exchanged with the search worker\n */\nexport type SearchMessage =\n | SearchSetupMessage\n | SearchReadyMessage\n | SearchQueryMessage\n | SearchResultMessage\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Type guard for search setup messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchSetupMessage(\n message: SearchMessage\n): message is SearchSetupMessage {\n return message.type === SearchMessageType.SETUP\n}\n\n/**\n * Type guard for search ready messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchReadyMessage(\n message: SearchMessage\n): message is SearchReadyMessage {\n return message.type === SearchMessageType.READY\n}\n\n/**\n * Type guard for search query messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchQueryMessage(\n message: SearchMessage\n): message is SearchQueryMessage {\n return message.type === SearchMessageType.QUERY\n}\n\n/**\n * Type guard for search result messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchResultMessage(\n message: SearchMessage\n): message is SearchResultMessage {\n return message.type === SearchMessageType.RESULT\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n ObservableInput,\n Subject,\n from,\n map,\n share\n} from \"rxjs\"\n\nimport { configuration, feature, translation } from \"~/_\"\nimport { WorkerHandler, watchWorker } from \"~/browser\"\n\nimport { SearchIndex } from \"../../_\"\nimport {\n SearchOptions,\n SearchPipeline\n} from \"../../options\"\nimport {\n SearchMessage,\n SearchMessageType,\n SearchSetupMessage,\n isSearchResultMessage\n} from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search worker\n */\nexport type SearchWorker = WorkerHandler\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up search index\n *\n * @param data - Search index\n *\n * @returns Search index\n */\nfunction setupSearchIndex({ config, docs }: SearchIndex): SearchIndex {\n\n /* Override default language with value from translation */\n if (config.lang.length === 1 && config.lang[0] === \"en\")\n config.lang = [\n translation(\"search.config.lang\")\n ]\n\n /* Override default separator with value from translation */\n if (config.separator === \"[\\\\s\\\\-]+\")\n config.separator = translation(\"search.config.separator\")\n\n /* Set pipeline from translation */\n const pipeline = translation(\"search.config.pipeline\")\n .split(/\\s*,\\s*/)\n .filter(Boolean) as SearchPipeline\n\n /* Determine search options */\n const options: SearchOptions = {\n pipeline,\n suggestions: feature(\"search.suggest\")\n }\n\n /* Return search index after defaulting */\n return { config, docs, options }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up search worker\n *\n * This function creates a web worker to set up and query the search index,\n * which is done using Lunr.js. The index must be passed as an observable to\n * enable hacks like _localsearch_ via search index embedding as JSON.\n *\n * @param url - Worker URL\n * @param index - Search index observable input\n *\n * @returns Search worker\n */\nexport function setupSearchWorker(\n url: string, index: ObservableInput\n): SearchWorker {\n const config = configuration()\n const worker = new Worker(url)\n\n /* Create communication channels and resolve relative links */\n const tx$ = new Subject()\n const rx$ = watchWorker(worker, { tx$ })\n .pipe(\n map(message => {\n if (isSearchResultMessage(message)) {\n for (const result of message.data.items)\n for (const document of result)\n document.location = `${new URL(document.location, config.base)}`\n }\n return message\n }),\n share()\n )\n\n /* Set up search index */\n from(index)\n .pipe(\n map(data => ({\n type: SearchMessageType.SETUP,\n data: setupSearchIndex(data)\n } as SearchSetupMessage))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Return search worker */\n return { tx$, rx$ }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Subject,\n catchError,\n combineLatest,\n filter,\n fromEvent,\n map,\n of,\n switchMap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport {\n getElement,\n getLocation,\n requestJSON,\n setLocation\n} from \"~/browser\"\nimport { getComponentElements } from \"~/components\"\nimport {\n Version,\n renderVersionSelector\n} from \"~/templates\"\n\nimport { fetchSitemap } from \"../sitemap\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Subject /* Document subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up version selector\n *\n * @param options - Options\n */\nexport function setupVersionSelector(\n { document$ }: SetupOptions\n): void {\n const config = configuration()\n const versions$ = requestJSON(\n new URL(\"../versions.json\", config.base)\n )\n .pipe(\n catchError(() => EMPTY) // @todo refactor instant loading\n )\n\n /* Determine current version */\n const current$ = versions$\n .pipe(\n map(versions => {\n const [, current] = config.base.match(/([^/]+)\\/?$/)!\n return versions.find(({ version, aliases }) => (\n version === current || aliases.includes(current)\n )) || versions[0]\n })\n )\n\n /* Intercept inter-version navigation */\n versions$\n .pipe(\n map(versions => new Map(versions.map(version => [\n `${new URL(`../${version.version}/`, config.base)}`,\n version\n ]))),\n switchMap(urls => fromEvent(document.body, \"click\")\n .pipe(\n filter(ev => !ev.metaKey && !ev.ctrlKey),\n withLatestFrom(current$),\n switchMap(([ev, current]) => {\n if (ev.target instanceof Element) {\n const el = ev.target.closest(\"a\")\n if (el && !el.target && urls.has(el.href)) {\n const url = el.href\n // This is a temporary hack to detect if a version inside the\n // version selector or on another part of the site was clicked.\n // If we're inside the version selector, we definitely want to\n // find the same page, as we might have different deployments\n // due to aliases. However, if we're outside the version\n // selector, we must abort here, because we might otherwise\n // interfere with instant loading. We need to refactor this\n // at some point together with instant loading.\n //\n // See https://github.com/squidfunk/mkdocs-material/issues/4012\n if (!ev.target.closest(\".md-version\")) {\n const version = urls.get(url)!\n if (version === current)\n return EMPTY\n }\n ev.preventDefault()\n return of(url)\n }\n }\n return EMPTY\n }),\n switchMap(url => {\n const { version } = urls.get(url)!\n return fetchSitemap(new URL(url))\n .pipe(\n map(sitemap => {\n const location = getLocation()\n const path = location.href.replace(config.base, \"\")\n return sitemap.includes(path.split(\"#\")[0])\n ? new URL(`../${version}/${path}`, config.base)\n : new URL(url)\n })\n )\n })\n )\n )\n )\n .subscribe(url => setLocation(url))\n\n /* Render version selector and warning */\n combineLatest([versions$, current$])\n .subscribe(([versions, current]) => {\n const topic = getElement(\".md-header__topic\")\n topic.appendChild(renderVersionSelector(versions, current))\n })\n\n /* Integrate outdated version banner with instant loading */\n document$.pipe(switchMap(() => current$))\n .subscribe(current => {\n\n /* Check if version state was already determined */\n let outdated = __md_get(\"__outdated\", sessionStorage)\n if (outdated === null) {\n const latest = config.version?.default || \"latest\"\n outdated = !current.aliases.includes(latest)\n\n /* Persist version state in session storage */\n __md_set(\"__outdated\", outdated, sessionStorage)\n }\n\n /* Unhide outdated version banner */\n if (outdated)\n for (const warning of getComponentElements(\"outdated\"))\n warning.hidden = false\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n combineLatest,\n delay,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n share,\n shareReplay,\n startWith,\n take,\n takeLast,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport {\n getLocation,\n setToggle,\n watchElementFocus,\n watchToggle\n} from \"~/browser\"\nimport {\n SearchMessageType,\n SearchQueryMessage,\n SearchWorker,\n defaultTransform,\n isSearchReadyMessage\n} from \"~/integrations\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search query\n */\nexport interface SearchQuery {\n value: string /* Query value */\n focus: boolean /* Query focus */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch search query\n *\n * Note that the focus event which triggers re-reading the current query value\n * is delayed by `1ms` so the input's empty state is allowed to propagate.\n *\n * @param el - Search query element\n * @param worker - Search worker\n *\n * @returns Search query observable\n */\nexport function watchSearchQuery(\n el: HTMLInputElement, { rx$ }: SearchWorker\n): Observable {\n const fn = __search?.transform || defaultTransform\n\n /* Immediately show search dialog */\n const { searchParams } = getLocation()\n if (searchParams.has(\"q\"))\n setToggle(\"search\", true)\n\n /* Intercept query parameter (deep link) */\n const param$ = rx$\n .pipe(\n filter(isSearchReadyMessage),\n take(1),\n map(() => searchParams.get(\"q\") || \"\")\n )\n\n /* Remove query parameter when search is closed */\n watchToggle(\"search\")\n .pipe(\n filter(active => !active),\n take(1)\n )\n .subscribe(() => {\n const url = new URL(location.href)\n url.searchParams.delete(\"q\")\n history.replaceState({}, \"\", `${url}`)\n })\n\n /* Set query from parameter */\n param$.subscribe(value => { // TODO: not ideal - find a better way\n if (value) {\n el.value = value\n el.focus()\n }\n })\n\n /* Intercept focus and input events */\n const focus$ = watchElementFocus(el)\n const value$ = merge(\n fromEvent(el, \"keyup\"),\n fromEvent(el, \"focus\").pipe(delay(1)),\n param$\n )\n .pipe(\n map(() => fn(el.value)),\n startWith(\"\"),\n distinctUntilChanged(),\n )\n\n /* Combine into single observable */\n return combineLatest([value$, focus$])\n .pipe(\n map(([value, focus]) => ({ value, focus })),\n shareReplay(1)\n )\n}\n\n/**\n * Mount search query\n *\n * @param el - Search query element\n * @param worker - Search worker\n *\n * @returns Search query component observable\n */\nexport function mountSearchQuery(\n el: HTMLInputElement, { tx$, rx$ }: SearchWorker\n): Observable> {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n\n /* Handle value changes */\n push$\n .pipe(\n distinctUntilKeyChanged(\"value\"),\n map(({ value }): SearchQueryMessage => ({\n type: SearchMessageType.QUERY,\n data: value\n }))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Handle focus changes */\n push$\n .pipe(\n distinctUntilKeyChanged(\"focus\")\n )\n .subscribe(({ focus }) => {\n if (focus) {\n setToggle(\"search\", focus)\n el.placeholder = \"\"\n } else {\n el.placeholder = translation(\"search.placeholder\")\n }\n })\n\n /* Handle reset */\n fromEvent(el.form!, \"reset\")\n .pipe(\n takeUntil(done$)\n )\n .subscribe(() => el.focus())\n\n /* Create and return component */\n return watchSearchQuery(el, { tx$, rx$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state })),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n filter,\n finalize,\n map,\n merge,\n of,\n skipUntil,\n switchMap,\n take,\n tap,\n withLatestFrom,\n zipWith\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport {\n getElement,\n watchElementBoundary\n} from \"~/browser\"\nimport {\n SearchResult,\n SearchWorker,\n isSearchReadyMessage,\n isSearchResultMessage\n} from \"~/integrations\"\nimport { renderSearchResultItem } from \"~/templates\"\nimport { round } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search result list\n *\n * This function performs a lazy rendering of the search results, depending on\n * the vertical offset of the search result container.\n *\n * @param el - Search result list element\n * @param worker - Search worker\n * @param options - Options\n *\n * @returns Search result list component observable\n */\nexport function mountSearchResult(\n el: HTMLElement, { rx$ }: SearchWorker, { query$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n const boundary$ = watchElementBoundary(el.parentElement!)\n .pipe(\n filter(Boolean)\n )\n\n /* Retrieve nested components */\n const meta = getElement(\":scope > :first-child\", el)\n const list = getElement(\":scope > :last-child\", el)\n\n /* Wait until search is ready */\n const ready$ = rx$\n .pipe(\n filter(isSearchReadyMessage),\n take(1)\n )\n\n /* Update search result metadata */\n push$\n .pipe(\n withLatestFrom(query$),\n skipUntil(ready$)\n )\n .subscribe(([{ items }, { value }]) => {\n if (value) {\n switch (items.length) {\n\n /* No results */\n case 0:\n meta.textContent = translation(\"search.result.none\")\n break\n\n /* One result */\n case 1:\n meta.textContent = translation(\"search.result.one\")\n break\n\n /* Multiple result */\n default:\n meta.textContent = translation(\n \"search.result.other\",\n round(items.length)\n )\n }\n } else {\n meta.textContent = translation(\"search.result.placeholder\")\n }\n })\n\n /* Update search result list */\n push$\n .pipe(\n tap(() => list.innerHTML = \"\"),\n switchMap(({ items }) => merge(\n of(...items.slice(0, 10)),\n of(...items.slice(10))\n .pipe(\n bufferCount(4),\n zipWith(boundary$),\n switchMap(([chunk]) => chunk)\n )\n ))\n )\n .subscribe(result => list.appendChild(\n renderSearchResultItem(result)\n ))\n\n /* Filter search result message */\n const result$ = rx$\n .pipe(\n filter(isSearchResultMessage),\n map(({ data }) => data)\n )\n\n /* Create and return component */\n return result$\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n finalize,\n fromEvent,\n map,\n tap\n} from \"rxjs\"\n\nimport { getLocation } from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search sharing\n */\nexport interface SearchShare {\n url: URL /* Deep link for sharing */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n query$: Observable /* Search query observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search sharing\n *\n * @param _el - Search sharing element\n * @param options - Options\n *\n * @returns Search sharing observable\n */\nexport function watchSearchShare(\n _el: HTMLElement, { query$ }: WatchOptions\n): Observable {\n return query$\n .pipe(\n map(({ value }) => {\n const url = getLocation()\n url.hash = \"\"\n url.searchParams.delete(\"h\")\n url.searchParams.set(\"q\", value)\n return { url }\n })\n )\n}\n\n/**\n * Mount search sharing\n *\n * @param el - Search sharing element\n * @param options - Options\n *\n * @returns Search sharing component observable\n */\nexport function mountSearchShare(\n el: HTMLAnchorElement, options: MountOptions\n): Observable> {\n const push$ = new Subject()\n push$.subscribe(({ url }) => {\n el.setAttribute(\"data-clipboard-text\", el.href)\n el.href = `${url}`\n })\n\n /* Prevent following of link */\n fromEvent(el, \"click\")\n .subscribe(ev => ev.preventDefault())\n\n /* Create and return component */\n return watchSearchShare(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n asyncScheduler,\n combineLatestWith,\n distinctUntilChanged,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n observeOn,\n tap\n} from \"rxjs\"\n\nimport { Keyboard } from \"~/browser\"\nimport {\n SearchResult,\n SearchWorker,\n isSearchResultMessage\n} from \"~/integrations\"\n\nimport { Component, getComponentElement } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search suggestions\n */\nexport interface SearchSuggest {}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n keyboard$: Observable /* Keyboard observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search suggestions\n *\n * This function will perform a lazy rendering of the search results, depending\n * on the vertical offset of the search result container.\n *\n * @param el - Search result list element\n * @param worker - Search worker\n * @param options - Options\n *\n * @returns Search result list component observable\n */\nexport function mountSearchSuggest(\n el: HTMLElement, { rx$ }: SearchWorker, { keyboard$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n\n /* Retrieve query component and track all changes */\n const query = getComponentElement(\"search-query\")\n const query$ = merge(\n fromEvent(query, \"keydown\"),\n fromEvent(query, \"focus\")\n )\n .pipe(\n observeOn(asyncScheduler),\n map(() => query.value),\n distinctUntilChanged(),\n )\n\n /* Update search suggestions */\n push$\n .pipe(\n combineLatestWith(query$),\n map(([{ suggestions }, value]) => {\n const words = value.split(/([\\s-]+)/)\n if (suggestions?.length && words[words.length - 1]) {\n const last = suggestions[suggestions.length - 1]\n if (last.startsWith(words[words.length - 1]))\n words[words.length - 1] = last\n } else {\n words.length = 0\n }\n return words\n })\n )\n .subscribe(words => el.innerHTML = words\n .join(\"\")\n .replace(/\\s/g, \" \")\n )\n\n /* Set up search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Right arrow: accept current suggestion */\n case \"ArrowRight\":\n if (\n el.innerText.length &&\n query.selectionStart === query.value.length\n )\n query.value = el.innerText\n break\n }\n })\n\n /* Filter search result message */\n const result$ = rx$\n .pipe(\n filter(isSearchResultMessage),\n map(({ data }) => data)\n )\n\n /* Create and return component */\n return result$\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(() => ({ ref: el }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n NEVER,\n Observable,\n ObservableInput,\n filter,\n merge,\n mergeWith,\n sample,\n take\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport {\n Keyboard,\n getActiveElement,\n getElements,\n setToggle\n} from \"~/browser\"\nimport {\n SearchIndex,\n SearchResult,\n isSearchQueryMessage,\n isSearchReadyMessage,\n setupSearchWorker\n} from \"~/integrations\"\n\nimport {\n Component,\n getComponentElement,\n getComponentElements\n} from \"../../_\"\nimport {\n SearchQuery,\n mountSearchQuery\n} from \"../query\"\nimport { mountSearchResult } from \"../result\"\nimport {\n SearchShare,\n mountSearchShare\n} from \"../share\"\nimport {\n SearchSuggest,\n mountSearchSuggest\n} from \"../suggest\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search\n */\nexport type Search =\n | SearchQuery\n | SearchResult\n | SearchShare\n | SearchSuggest\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n index$: ObservableInput /* Search index observable */\n keyboard$: Observable /* Keyboard observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search\n *\n * This function sets up the search functionality, including the underlying\n * web worker and all keyboard bindings.\n *\n * @param el - Search element\n * @param options - Options\n *\n * @returns Search component observable\n */\nexport function mountSearch(\n el: HTMLElement, { index$, keyboard$ }: MountOptions\n): Observable> {\n const config = configuration()\n try {\n const url = __search?.worker || config.search\n const worker = setupSearchWorker(url, index$)\n\n /* Retrieve query and result components */\n const query = getComponentElement(\"search-query\", el)\n const result = getComponentElement(\"search-result\", el)\n\n /* Re-emit query when search is ready */\n const { tx$, rx$ } = worker\n tx$\n .pipe(\n filter(isSearchQueryMessage),\n sample(rx$.pipe(filter(isSearchReadyMessage))),\n take(1)\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Set up search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\")\n )\n .subscribe(key => {\n const active = getActiveElement()\n switch (key.type) {\n\n /* Enter: go to first (best) result */\n case \"Enter\":\n if (active === query) {\n const anchors = new Map()\n for (const anchor of getElements(\n \":first-child [href]\", result\n )) {\n const article = anchor.firstElementChild!\n anchors.set(anchor, parseFloat(\n article.getAttribute(\"data-md-score\")!\n ))\n }\n\n /* Go to result with highest score, if any */\n if (anchors.size) {\n const [[best]] = [...anchors].sort(([, a], [, b]) => b - a)\n best.click()\n }\n\n /* Otherwise omit form submission */\n key.claim()\n }\n break\n\n /* Escape or Tab: close search */\n case \"Escape\":\n case \"Tab\":\n setToggle(\"search\", false)\n query.blur()\n break\n\n /* Vertical arrows: select previous or next search result */\n case \"ArrowUp\":\n case \"ArrowDown\":\n if (typeof active === \"undefined\") {\n query.focus()\n } else {\n const els = [query, ...getElements(\n \":not(details) > [href], summary, details[open] [href]\",\n result\n )]\n const i = Math.max(0, (\n Math.max(0, els.indexOf(active)) + els.length + (\n key.type === \"ArrowUp\" ? -1 : +1\n )\n ) % els.length)\n els[i].focus()\n }\n\n /* Prevent scrolling of page */\n key.claim()\n break\n\n /* All other keys: hand to search query */\n default:\n if (query !== getActiveElement())\n query.focus()\n }\n })\n\n /* Set up global keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\"),\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Open search and select query */\n case \"f\":\n case \"s\":\n case \"/\":\n query.focus()\n query.select()\n\n /* Prevent scrolling of page */\n key.claim()\n break\n }\n })\n\n /* Create and return component */\n const query$ = mountSearchQuery(query, worker)\n const result$ = mountSearchResult(result, worker, { query$ })\n return merge(query$, result$)\n .pipe(\n mergeWith(\n\n /* Search sharing */\n ...getComponentElements(\"search-share\", el)\n .map(child => mountSearchShare(child, { query$ })),\n\n /* Search suggestions */\n ...getComponentElements(\"search-suggest\", el)\n .map(child => mountSearchSuggest(child, worker, { keyboard$ }))\n )\n )\n\n /* Gracefully handle broken search */\n } catch (err) {\n el.hidden = true\n return NEVER\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n ObservableInput,\n combineLatest,\n filter,\n map,\n startWith\n} from \"rxjs\"\n\nimport { getLocation } from \"~/browser\"\nimport {\n SearchIndex,\n setupSearchHighlighter\n} from \"~/integrations\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlighting\n */\nexport interface SearchHighlight {\n nodes: Map /* Map of replacements */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n index$: ObservableInput /* Search index observable */\n location$: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search highlighting\n *\n * @param el - Content element\n * @param options - Options\n *\n * @returns Search highlighting component observable\n */\nexport function mountSearchHiglight(\n el: HTMLElement, { index$, location$ }: MountOptions\n): Observable> {\n return combineLatest([\n index$,\n location$\n .pipe(\n startWith(getLocation()),\n filter(url => !!url.searchParams.get(\"h\"))\n )\n ])\n .pipe(\n map(([index, url]) => setupSearchHighlighter(index.config, true)(\n url.searchParams.get(\"h\")!\n )),\n map(fn => {\n const nodes = new Map()\n\n /* Traverse text nodes and collect matches */\n const it = document.createNodeIterator(el, NodeFilter.SHOW_TEXT)\n for (let node = it.nextNode(); node; node = it.nextNode()) {\n if (node.parentElement?.offsetHeight) {\n const original = node.textContent!\n const replaced = fn(original)\n if (replaced.length > original.length)\n nodes.set(node as ChildNode, replaced)\n }\n }\n\n /* Replace original nodes with matches */\n for (const [node, text] of nodes) {\n const { childNodes } = h(\"span\", null, text)\n node.replaceWith(...Array.from(childNodes))\n }\n\n /* Return component */\n return { ref: el, nodes }\n })\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n auditTime,\n combineLatest,\n defer,\n distinctUntilChanged,\n finalize,\n map,\n observeOn,\n take,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n Viewport,\n getElement,\n getElementContainer,\n getElementOffset,\n getElementSize,\n getElements\n} from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\nimport { Main } from \"../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sidebar\n */\nexport interface Sidebar {\n height: number /* Sidebar height */\n locked: boolean /* Sidebar is locked */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n main$: Observable
    /* Main area observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch sidebar\n *\n * This function returns an observable that computes the visual parameters of\n * the sidebar which depends on the vertical viewport offset, as well as the\n * height of the main area. When the page is scrolled beyond the header, the\n * sidebar is locked and fills the remaining space.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @returns Sidebar observable\n */\nexport function watchSidebar(\n el: HTMLElement, { viewport$, main$ }: WatchOptions\n): Observable {\n const parent = el.parentElement!\n const adjust =\n parent.offsetTop -\n parent.parentElement!.offsetTop\n\n /* Compute the sidebar's available height and if it should be locked */\n return combineLatest([main$, viewport$])\n .pipe(\n map(([{ offset, height }, { offset: { y } }]) => {\n height = height\n + Math.min(adjust, Math.max(0, y - offset))\n - adjust\n return {\n height,\n locked: y >= offset + adjust\n }\n }),\n distinctUntilChanged((a, b) => (\n a.height === b.height &&\n a.locked === b.locked\n ))\n )\n}\n\n/**\n * Mount sidebar\n *\n * This function doesn't set the height of the actual sidebar, but of its first\n * child \u2013 the `.md-sidebar__scrollwrap` element in order to mitigiate jittery\n * sidebars when the footer is scrolled into view. At some point we switched\n * from `absolute` / `fixed` positioning to `sticky` positioning, significantly\n * reducing jitter in some browsers (respectively Firefox and Safari) when\n * scrolling from the top. However, top-aligned sticky positioning means that\n * the sidebar snaps to the bottom when the end of the container is reached.\n * This is what leads to the mentioned jitter, as the sidebar's height may be\n * updated too slowly.\n *\n * This behaviour can be mitigiated by setting the height of the sidebar to `0`\n * while preserving the padding, and the height on its first element.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @returns Sidebar component observable\n */\nexport function mountSidebar(\n el: HTMLElement, { header$, ...options }: MountOptions\n): Observable> {\n const inner = getElement(\".md-sidebar__scrollwrap\", el)\n const { y } = getElementOffset(inner)\n return defer(() => {\n const push$ = new Subject()\n push$\n .pipe(\n auditTime(0, animationFrameScheduler),\n withLatestFrom(header$)\n )\n .subscribe({\n\n /* Handle emission */\n next([{ height }, { height: offset }]) {\n inner.style.height = `${height - 2 * y}px`\n el.style.top = `${offset}px`\n },\n\n /* Handle complete */\n complete() {\n inner.style.height = \"\"\n el.style.top = \"\"\n }\n })\n\n /* Bring active item into view on initial load */\n push$\n .pipe(\n observeOn(animationFrameScheduler),\n take(1)\n )\n .subscribe(() => {\n for (const item of getElements(\".md-nav__link--active[href]\", el)) {\n const container = getElementContainer(item)\n if (typeof container !== \"undefined\") {\n const offset = item.offsetTop - container.offsetTop\n const { height } = getElementSize(container)\n container.scrollTo({\n top: offset - height / 2\n })\n }\n }\n })\n\n /* Create and return component */\n return watchSidebar(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Repo, User } from \"github-types\"\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map,\n zip\n} from \"rxjs\"\n\nimport { requestJSON } from \"~/browser\"\n\nimport { SourceFacts } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * GitHub release (partial)\n */\ninterface Release {\n tag_name: string /* Tag name */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitHub repository facts\n *\n * @param user - GitHub user or organization\n * @param repo - GitHub repository\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFactsFromGitHub(\n user: string, repo?: string\n): Observable {\n if (typeof repo !== \"undefined\") {\n const url = `https://api.github.com/repos/${user}/${repo}`\n return zip(\n\n /* Fetch version */\n requestJSON(`${url}/releases/latest`)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(release => ({\n version: release.tag_name\n })),\n defaultIfEmpty({})\n ),\n\n /* Fetch stars and forks */\n requestJSON(url)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(info => ({\n stars: info.stargazers_count,\n forks: info.forks_count\n })),\n defaultIfEmpty({})\n )\n )\n .pipe(\n map(([release, info]) => ({ ...release, ...info }))\n )\n\n /* User or organization */\n } else {\n const url = `https://api.github.com/users/${user}`\n return requestJSON(url)\n .pipe(\n map(info => ({\n repositories: info.public_repos\n })),\n defaultIfEmpty({})\n )\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ProjectSchema } from \"gitlab\"\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map\n} from \"rxjs\"\n\nimport { requestJSON } from \"~/browser\"\n\nimport { SourceFacts } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitLab repository facts\n *\n * @param base - GitLab base\n * @param project - GitLab project\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFactsFromGitLab(\n base: string, project: string\n): Observable {\n const url = `https://${base}/api/v4/projects/${encodeURIComponent(project)}`\n return requestJSON(url)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(({ star_count, forks_count }) => ({\n stars: star_count,\n forks: forks_count\n })),\n defaultIfEmpty({})\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { EMPTY, Observable } from \"rxjs\"\n\nimport { fetchSourceFactsFromGitHub } from \"../github\"\nimport { fetchSourceFactsFromGitLab } from \"../gitlab\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository facts for repositories\n */\nexport interface RepositoryFacts {\n stars?: number /* Number of stars */\n forks?: number /* Number of forks */\n version?: string /* Latest version */\n}\n\n/**\n * Repository facts for organizations\n */\nexport interface OrganizationFacts {\n repositories?: number /* Number of repositories */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Repository facts\n */\nexport type SourceFacts =\n | RepositoryFacts\n | OrganizationFacts\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch repository facts\n *\n * @param url - Repository URL\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFacts(\n url: string\n): Observable {\n const [type] = url.match(/(git(?:hub|lab))/i) || []\n switch (type.toLowerCase()) {\n\n /* GitHub repository */\n case \"github\":\n const [, user, repo] = url.match(/^.+github\\.com\\/([^/]+)\\/?([^/]+)?/i)!\n return fetchSourceFactsFromGitHub(user, repo)\n\n /* GitLab repository */\n case \"gitlab\":\n const [, base, slug] = url.match(/^.+?([^/]*gitlab[^/]+)\\/(.+?)\\/?$/i)!\n return fetchSourceFactsFromGitLab(base, slug)\n\n /* Everything else */\n default:\n return EMPTY\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n catchError,\n defer,\n filter,\n finalize,\n map,\n of,\n shareReplay,\n tap\n} from \"rxjs\"\n\nimport { getElement } from \"~/browser\"\nimport { ConsentDefaults } from \"~/components/consent\"\nimport { renderSourceFacts } from \"~/templates\"\n\nimport {\n Component,\n getComponentElements\n} from \"../../_\"\nimport {\n SourceFacts,\n fetchSourceFacts\n} from \"../facts\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository information\n */\nexport interface Source {\n facts: SourceFacts /* Repository facts */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository information observable\n */\nlet fetch$: Observable\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch repository information\n *\n * This function tries to read the repository facts from session storage, and\n * if unsuccessful, fetches them from the underlying provider.\n *\n * @param el - Repository information element\n *\n * @returns Repository information observable\n */\nexport function watchSource(\n el: HTMLAnchorElement\n): Observable {\n return fetch$ ||= defer(() => {\n const cached = __md_get(\"__source\", sessionStorage)\n if (cached) {\n return of(cached)\n } else {\n\n /* Check if consent is configured and was given */\n const els = getComponentElements(\"consent\")\n if (els.length) {\n const consent = __md_get(\"__consent\")\n if (!(consent && consent.github))\n return EMPTY\n }\n\n /* Fetch repository facts */\n return fetchSourceFacts(el.href)\n .pipe(\n tap(facts => __md_set(\"__source\", facts, sessionStorage))\n )\n }\n })\n .pipe(\n catchError(() => EMPTY),\n filter(facts => Object.keys(facts).length > 0),\n map(facts => ({ facts })),\n shareReplay(1)\n )\n}\n\n/**\n * Mount repository information\n *\n * @param el - Repository information element\n *\n * @returns Repository information component observable\n */\nexport function mountSource(\n el: HTMLAnchorElement\n): Observable> {\n const inner = getElement(\":scope > :last-child\", el)\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ facts }) => {\n inner.appendChild(renderSourceFacts(facts))\n inner.classList.add(\"md-source__repository--active\")\n })\n\n /* Create and return component */\n return watchSource(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n distinctUntilKeyChanged,\n finalize,\n map,\n of,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n watchElementSize,\n watchViewportAt\n} from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Navigation tabs\n */\nexport interface Tabs {\n hidden: boolean /* Navigation tabs are hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch navigation tabs\n *\n * @param el - Navigation tabs element\n * @param options - Options\n *\n * @returns Navigation tabs observable\n */\nexport function watchTabs(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n return watchElementSize(document.body)\n .pipe(\n switchMap(() => watchViewportAt(el, { header$, viewport$ })),\n map(({ offset: { y } }) => {\n return {\n hidden: y >= 10\n }\n }),\n distinctUntilKeyChanged(\"hidden\")\n )\n}\n\n/**\n * Mount navigation tabs\n *\n * This function hides the navigation tabs when scrolling past the threshold\n * and makes them reappear in a nice CSS animation when scrolling back up.\n *\n * @param el - Navigation tabs element\n * @param options - Options\n *\n * @returns Navigation tabs component observable\n */\nexport function mountTabs(\n el: HTMLElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe({\n\n /* Handle emission */\n next({ hidden }) {\n el.hidden = hidden\n },\n\n /* Handle complete */\n complete() {\n el.hidden = false\n }\n })\n\n /* Create and return component */\n return (\n feature(\"navigation.tabs.sticky\")\n ? of({ hidden: false })\n : watchTabs(el, options)\n )\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatestWith,\n debounceTime,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n finalize,\n map,\n merge,\n of,\n repeat,\n scan,\n share,\n skip,\n startWith,\n switchMap,\n takeLast,\n takeUntil,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n getElement,\n getElementContainer,\n getElementSize,\n getElements,\n getLocation,\n getOptionalElement,\n watchElementSize\n} from \"~/browser\"\n\nimport {\n Component,\n getComponentElement\n} from \"../_\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Table of contents\n */\nexport interface TableOfContents {\n prev: HTMLAnchorElement[][] /* Anchors (previous) */\n next: HTMLAnchorElement[][] /* Anchors (next) */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n target$: Observable /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch table of contents\n *\n * This is effectively a scroll spy implementation which will account for the\n * fixed header and automatically re-calculate anchor offsets when the viewport\n * is resized. The returned observable will only emit if the table of contents\n * needs to be repainted.\n *\n * This implementation tracks an anchor element's entire path starting from its\n * level up to the top-most anchor element, e.g. `[h3, h2, h1]`. Although the\n * Material theme currently doesn't make use of this information, it enables\n * the styling of the entire hierarchy through customization.\n *\n * Note that the current anchor is the last item of the `prev` anchor list.\n *\n * @param el - Table of contents element\n * @param options - Options\n *\n * @returns Table of contents observable\n */\nexport function watchTableOfContents(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n const table = new Map()\n\n /* Compute anchor-to-target mapping */\n const anchors = getElements(\"[href^=\\\\#]\", el)\n for (const anchor of anchors) {\n const id = decodeURIComponent(anchor.hash.substring(1))\n const target = getOptionalElement(`[id=\"${id}\"]`)\n if (typeof target !== \"undefined\")\n table.set(anchor, target)\n }\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n distinctUntilKeyChanged(\"height\"),\n map(({ height }) => {\n const main = getComponentElement(\"main\")\n const grid = getElement(\":scope > :first-child\", main)\n return height + 0.8 * (\n grid.offsetTop -\n main.offsetTop\n )\n }),\n share()\n )\n\n /* Compute partition of previous and next anchors */\n const partition$ = watchElementSize(document.body)\n .pipe(\n distinctUntilKeyChanged(\"height\"),\n\n /* Build index to map anchor paths to vertical offsets */\n switchMap(body => defer(() => {\n let path: HTMLAnchorElement[] = []\n return of([...table].reduce((index, [anchor, target]) => {\n while (path.length) {\n const last = table.get(path[path.length - 1])!\n if (last.tagName >= target.tagName) {\n path.pop()\n } else {\n break\n }\n }\n\n /* If the current anchor is hidden, continue with its parent */\n let offset = target.offsetTop\n while (!offset && target.parentElement) {\n target = target.parentElement\n offset = target.offsetTop\n }\n\n /* Map reversed anchor path to vertical offset */\n return index.set(\n [...path = [...path, anchor]].reverse(),\n offset\n )\n }, new Map()))\n })\n .pipe(\n\n /* Sort index by vertical offset (see https://bit.ly/30z6QSO) */\n map(index => new Map([...index].sort(([, a], [, b]) => a - b))),\n combineLatestWith(adjust$),\n\n /* Re-compute partition when viewport offset changes */\n switchMap(([index, adjust]) => viewport$\n .pipe(\n scan(([prev, next], { offset: { y }, size }) => {\n const last = y + size.height >= Math.floor(body.height)\n\n /* Look forward */\n while (next.length) {\n const [, offset] = next[0]\n if (offset - adjust < y || last) {\n prev = [...prev, next.shift()!]\n } else {\n break\n }\n }\n\n /* Look backward */\n while (prev.length) {\n const [, offset] = prev[prev.length - 1]\n if (offset - adjust >= y && !last) {\n next = [prev.pop()!, ...next]\n } else {\n break\n }\n }\n\n /* Return partition */\n return [prev, next]\n }, [[], [...index]]),\n distinctUntilChanged((a, b) => (\n a[0] === b[0] &&\n a[1] === b[1]\n ))\n )\n )\n )\n )\n )\n\n /* Compute and return anchor list migrations */\n return partition$\n .pipe(\n map(([prev, next]) => ({\n prev: prev.map(([path]) => path),\n next: next.map(([path]) => path)\n })),\n\n /* Extract anchor list migrations */\n startWith({ prev: [], next: [] }),\n bufferCount(2, 1),\n map(([a, b]) => {\n\n /* Moving down */\n if (a.prev.length < b.prev.length) {\n return {\n prev: b.prev.slice(Math.max(0, a.prev.length - 1), b.prev.length),\n next: []\n }\n\n /* Moving up */\n } else {\n return {\n prev: b.prev.slice(-1),\n next: b.next.slice(0, b.next.length - a.next.length)\n }\n }\n })\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount table of contents\n *\n * @param el - Table of contents element\n * @param options - Options\n *\n * @returns Table of contents component observable\n */\nexport function mountTableOfContents(\n el: HTMLElement, { viewport$, header$, target$ }: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n push$.subscribe(({ prev, next }) => {\n\n /* Look forward */\n for (const [anchor] of next) {\n anchor.classList.remove(\"md-nav__link--passed\")\n anchor.classList.remove(\"md-nav__link--active\")\n }\n\n /* Look backward */\n for (const [index, [anchor]] of prev.entries()) {\n anchor.classList.add(\"md-nav__link--passed\")\n anchor.classList.toggle(\n \"md-nav__link--active\",\n index === prev.length - 1\n )\n }\n })\n\n /* Set up following, if enabled */\n if (feature(\"toc.follow\")) {\n\n /* Toggle smooth scrolling only for anchor clicks */\n const smooth$ = merge(\n viewport$.pipe(debounceTime(1), map(() => undefined)),\n viewport$.pipe(debounceTime(250), map(() => \"smooth\" as const))\n )\n\n /* Bring active anchor into view */\n push$\n .pipe(\n filter(({ prev }) => prev.length > 0),\n withLatestFrom(smooth$)\n )\n .subscribe(([{ prev }, behavior]) => {\n const [anchor] = prev[prev.length - 1]\n if (anchor.offsetHeight) {\n\n /* Retrieve overflowing container and scroll */\n const container = getElementContainer(anchor)\n if (typeof container !== \"undefined\") {\n const offset = anchor.offsetTop - container.offsetTop\n const { height } = getElementSize(container)\n container.scrollTo({\n top: offset - height / 2,\n behavior\n })\n }\n }\n })\n }\n\n /* Set up anchor tracking, if enabled */\n if (feature(\"navigation.tracking\"))\n viewport$\n .pipe(\n takeUntil(done$),\n distinctUntilKeyChanged(\"offset\"),\n debounceTime(250),\n skip(1),\n takeUntil(target$.pipe(skip(1))),\n repeat({ delay: 250 }),\n withLatestFrom(push$)\n )\n .subscribe(([, { prev }]) => {\n const url = getLocation()\n\n /* Set hash fragment to active anchor */\n const anchor = prev[prev.length - 1]\n if (anchor && anchor.length) {\n const [active] = anchor\n const { hash } = new URL(active.href)\n if (url.hash !== hash) {\n url.hash = hash\n history.replaceState({}, \"\", `${url}`)\n }\n\n /* Reset anchor when at the top */\n } else {\n url.hash = \"\"\n history.replaceState({}, \"\", `${url}`)\n }\n })\n\n /* Create and return component */\n return watchTableOfContents(el, { viewport$, header$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatest,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n endWith,\n finalize,\n map,\n repeat,\n skip,\n takeLast,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { Viewport } from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\nimport { Main } from \"../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Back-to-top button\n */\nexport interface BackToTop {\n hidden: boolean /* Back-to-top button is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n main$: Observable
    /* Main area observable */\n target$: Observable /* Location target observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n target$: Observable /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch back-to-top\n *\n * @param _el - Back-to-top element\n * @param options - Options\n *\n * @returns Back-to-top observable\n */\nexport function watchBackToTop(\n _el: HTMLElement, { viewport$, main$, target$ }: WatchOptions\n): Observable {\n\n /* Compute direction */\n const direction$ = viewport$\n .pipe(\n map(({ offset: { y } }) => y),\n bufferCount(2, 1),\n map(([a, b]) => a > b && b > 0),\n distinctUntilChanged()\n )\n\n /* Compute whether main area is active */\n const active$ = main$\n .pipe(\n map(({ active }) => active)\n )\n\n /* Compute threshold for hiding */\n return combineLatest([active$, direction$])\n .pipe(\n map(([active, direction]) => !(active && direction)),\n distinctUntilChanged(),\n takeUntil(target$.pipe(skip(1))),\n endWith(true),\n repeat({ delay: 250 }),\n map(hidden => ({ hidden }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount back-to-top\n *\n * @param el - Back-to-top element\n * @param options - Options\n *\n * @returns Back-to-top component observable\n */\nexport function mountBackToTop(\n el: HTMLElement, { viewport$, header$, main$, target$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n push$.subscribe({\n\n /* Handle emission */\n next({ hidden }) {\n el.hidden = hidden\n if (hidden) {\n el.setAttribute(\"tabindex\", \"-1\")\n el.blur()\n } else {\n el.removeAttribute(\"tabindex\")\n }\n },\n\n /* Handle complete */\n complete() {\n el.style.top = \"\"\n el.hidden = true\n el.removeAttribute(\"tabindex\")\n }\n })\n\n /* Watch header height */\n header$\n .pipe(\n takeUntil(done$),\n distinctUntilKeyChanged(\"height\")\n )\n .subscribe(({ height }) => {\n el.style.top = `${height + 16}px`\n })\n\n /* Create and return component */\n return watchBackToTop(el, { viewport$, main$, target$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n mergeMap,\n switchMap,\n takeWhile,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n tablet$: Observable /* Media tablet observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch indeterminate checkboxes\n *\n * This function replaces the indeterminate \"pseudo state\" with the actual\n * indeterminate state, which is used to keep navigation always expanded.\n *\n * @param options - Options\n */\nexport function patchIndeterminate(\n { document$, tablet$ }: PatchOptions\n): void {\n document$\n .pipe(\n switchMap(() => getElements(\n // @todo `data-md-state` is deprecated and removed in v9\n \".md-toggle--indeterminate, [data-md-state=indeterminate]\"\n )),\n tap(el => {\n el.indeterminate = true\n el.checked = false\n }),\n mergeMap(el => fromEvent(el, \"change\")\n .pipe(\n takeWhile(() => el.classList.contains(\"md-toggle--indeterminate\")),\n map(() => el)\n )\n ),\n withLatestFrom(tablet$)\n )\n .subscribe(([el, tablet]) => {\n el.classList.remove(\"md-toggle--indeterminate\")\n if (tablet)\n el.checked = false\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n mergeMap,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether the given device is an Apple device\n *\n * @returns Test result\n */\nfunction isAppleDevice(): boolean {\n return /(iPad|iPhone|iPod)/.test(navigator.userAgent)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all elements with `data-md-scrollfix` attributes\n *\n * This is a year-old patch which ensures that overflow scrolling works at the\n * top and bottom of containers on iOS by ensuring a `1px` scroll offset upon\n * the start of a touch event.\n *\n * @see https://bit.ly/2SCtAOO - Original source\n *\n * @param options - Options\n */\nexport function patchScrollfix(\n { document$ }: PatchOptions\n): void {\n document$\n .pipe(\n switchMap(() => getElements(\"[data-md-scrollfix]\")),\n tap(el => el.removeAttribute(\"data-md-scrollfix\")),\n filter(isAppleDevice),\n mergeMap(el => fromEvent(el, \"touchstart\")\n .pipe(\n map(() => el)\n )\n )\n )\n .subscribe(el => {\n const top = el.scrollTop\n\n /* We're at the top of the container */\n if (top === 0) {\n el.scrollTop = 1\n\n /* We're at the bottom of the container */\n } else if (top + el.offsetHeight === el.scrollHeight) {\n el.scrollTop = top - 1\n }\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n delay,\n map,\n of,\n switchMap,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n Viewport,\n watchToggle\n} from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n viewport$: Observable /* Viewport observable */\n tablet$: Observable /* Media tablet observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch the document body to lock when search is open\n *\n * For mobile and tablet viewports, the search is rendered full screen, which\n * leads to scroll leaking when at the top or bottom of the search result. This\n * function locks the body when the search is in full screen mode, and restores\n * the scroll position when leaving.\n *\n * @param options - Options\n */\nexport function patchScrolllock(\n { viewport$, tablet$ }: PatchOptions\n): void {\n combineLatest([watchToggle(\"search\"), tablet$])\n .pipe(\n map(([active, tablet]) => active && !tablet),\n switchMap(active => of(active)\n .pipe(\n delay(active ? 400 : 100)\n )\n ),\n withLatestFrom(viewport$)\n )\n .subscribe(([active, { offset: { y }}]) => {\n if (active) {\n document.body.setAttribute(\"data-md-scrolllock\", \"\")\n document.body.style.top = `-${y}px`\n } else {\n const value = -1 * parseInt(document.body.style.top, 10)\n document.body.removeAttribute(\"data-md-scrolllock\")\n document.body.style.top = \"\"\n if (value)\n window.scrollTo(0, value)\n }\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Polyfills\n * ------------------------------------------------------------------------- */\n\n/* Polyfill `Object.entries` */\nif (!Object.entries)\n Object.entries = function (obj: object) {\n const data: [string, string][] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push([key, obj[key]])\n\n /* Return entries */\n return data\n }\n\n/* Polyfill `Object.values` */\nif (!Object.values)\n Object.values = function (obj: object) {\n const data: string[] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push(obj[key])\n\n /* Return values */\n return data\n }\n\n/* ------------------------------------------------------------------------- */\n\n/* Polyfills for `Element` */\nif (typeof Element !== \"undefined\") {\n\n /* Polyfill `Element.scrollTo` */\n if (!Element.prototype.scrollTo)\n Element.prototype.scrollTo = function (\n x?: ScrollToOptions | number, y?: number\n ): void {\n if (typeof x === \"object\") {\n this.scrollLeft = x.left!\n this.scrollTop = x.top!\n } else {\n this.scrollLeft = x!\n this.scrollTop = y!\n }\n }\n\n /* Polyfill `Element.replaceWith` */\n if (!Element.prototype.replaceWith)\n Element.prototype.replaceWith = function (\n ...nodes: Array\n ): void {\n const parent = this.parentNode\n if (parent) {\n if (nodes.length === 0)\n parent.removeChild(this)\n\n /* Replace children and create text nodes */\n for (let i = nodes.length - 1; i >= 0; i--) {\n let node = nodes[i]\n if (typeof node !== \"object\")\n node = document.createTextNode(node)\n else if (node.parentNode)\n node.parentNode.removeChild(node)\n\n /* Replace child or insert before previous sibling */\n if (!i)\n parent.replaceChild(node, this)\n else\n parent.insertBefore(this.previousSibling!, node)\n }\n }\n }\n}\n"], + "mappings": "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", + "names": ["require_focus_visible", "__commonJSMin", "exports", "module", "global", "factory", "applyFocusVisiblePolyfill", "scope", "hadKeyboardEvent", "hadFocusVisibleRecently", "hadFocusVisibleRecentlyTimeout", "inputTypesAllowlist", "isValidFocusTarget", "el", "focusTriggersKeyboardModality", "type", "tagName", "addFocusVisibleClass", "removeFocusVisibleClass", "onKeyDown", "e", "onPointerDown", "onFocus", "onBlur", "onVisibilityChange", "addInitialPointerMoveListeners", "onInitialPointerMove", "removeInitialPointerMoveListeners", "event", "error", "require_url_polyfill", "__commonJSMin", "exports", "global", "checkIfIteratorIsSupported", "error", "iteratorSupported", "createIterator", "items", "iterator", "value", "serializeParam", "deserializeParam", "polyfillURLSearchParams", "URLSearchParams", "searchString", "typeofSearchString", "_this", "name", "i", "entry", "key", "proto", "callback", "thisArg", "entries", "searchArray", "checkIfURLSearchParamsSupported", "e", "a", "b", "keys", "attributes", "attribute", "checkIfURLIsSupported", "u", "polyfillURL", "_URL", "URL", "url", "base", "doc", "baseElement", "err", "anchorElement", "inputElement", "searchParams", "enableSearchUpdate", "enableSearchParamsUpdate", "methodName", "method", "search", "linkURLWithAnchorAttribute", "attributeName", "expectedPort", "addPortToOrigin", "blob", "getOrigin", "require_tslib", "__commonJSMin", "exports", "module", "__extends", "__assign", "__rest", "__decorate", "__param", "__metadata", "__awaiter", "__generator", "__exportStar", "__values", "__read", "__spread", "__spreadArrays", "__spreadArray", "__await", "__asyncGenerator", "__asyncDelegator", "__asyncValues", "__makeTemplateObject", "__importStar", "__importDefault", "__classPrivateFieldGet", "__classPrivateFieldSet", "__createBinding", "factory", "root", "createExporter", "previous", "id", "v", "exporter", "extendStatics", "d", "b", "p", "__", "t", "s", "n", "e", "i", "decorators", "target", "key", "desc", "c", "r", "paramIndex", "decorator", "metadataKey", "metadataValue", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "reject", "fulfilled", "step", "rejected", "result", "body", "_", "f", "y", "g", "verb", "op", "m", "o", "k", "k2", "ar", "error", "il", "a", "j", "jl", "to", "from", "pack", "l", "q", "resume", "settle", "fulfill", "cooked", "raw", "__setModuleDefault", "mod", "receiver", "state", "kind", "require_clipboard", "__commonJSMin", "exports", "module", "root", "factory", "__webpack_modules__", "__unused_webpack_module", "__webpack_exports__", "__webpack_require__", "clipboard", "tiny_emitter", "tiny_emitter_default", "listen", "listen_default", "src_select", "select_default", "command", "type", "err", "ClipboardActionCut", "target", "selectedText", "actions_cut", "createFakeElement", "value", "isRTL", "fakeElement", "yPosition", "fakeCopyAction", "options", "ClipboardActionCopy", "actions_copy", "_typeof", "obj", "ClipboardActionDefault", "_options$action", "action", "container", "text", "actions_default", "clipboard_typeof", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "i", "descriptor", "_createClass", "protoProps", "staticProps", "_inherits", "subClass", "superClass", "_setPrototypeOf", "o", "p", "_createSuper", "Derived", "hasNativeReflectConstruct", "_isNativeReflectConstruct", "Super", "_getPrototypeOf", "result", "NewTarget", "_possibleConstructorReturn", "self", "call", "_assertThisInitialized", "e", "getAttributeValue", "suffix", "element", "attribute", "Clipboard", "_Emitter", "_super", "trigger", "_this", "_this2", "selector", "actions", "support", "DOCUMENT_NODE_TYPE", "proto", "closest", "__unused_webpack_exports", "_delegate", "callback", "useCapture", "listenerFn", "listener", "delegate", "elements", "is", "listenNode", "listenNodeList", "listenSelector", "node", "nodeList", "select", "isReadOnly", "selection", "range", "E", "name", "ctx", "data", "evtArr", "len", "evts", "liveEvents", "__webpack_module_cache__", "moduleId", "getter", "definition", "key", "prop", "require_escape_html", "__commonJSMin", "exports", "module", "matchHtmlRegExp", "escapeHtml", "string", "str", "match", "escape", "html", "index", "lastIndex", "r", "a", "e", "import_focus_visible", "n", "t", "s", "r", "o", "u", "i", "a", "e", "c", "import_url_polyfill", "import_tslib", "__extends", "__assign", "__rest", "__decorate", "__param", "__metadata", "__awaiter", "__generator", "__exportStar", "__createBinding", "__values", "__read", "__spread", "__spreadArrays", "__spreadArray", "__await", "__asyncGenerator", "__asyncDelegator", "__asyncValues", "__makeTemplateObject", "__importStar", "__importDefault", "__classPrivateFieldGet", "__classPrivateFieldSet", "tslib", "isFunction", "value", "createErrorClass", "createImpl", "_super", "instance", "ctorFunc", "UnsubscriptionError", "createErrorClass", "_super", "errors", "err", "i", "arrRemove", "arr", "item", "index", "Subscription", "initialTeardown", "errors", "_parentage", "_parentage_1", "__values", "_parentage_1_1", "parent_1", "initialFinalizer", "isFunction", "e", "UnsubscriptionError", "_finalizers", "_finalizers_1", "_finalizers_1_1", "finalizer", "execFinalizer", "err", "__spreadArray", "__read", "teardown", "_a", "parent", "arrRemove", "empty", "EMPTY_SUBSCRIPTION", "Subscription", "isSubscription", "value", "isFunction", "execFinalizer", "finalizer", "config", "timeoutProvider", "handler", "timeout", "args", "_i", "delegate", "__spreadArray", "__read", "handle", "reportUnhandledError", "err", "timeoutProvider", "onUnhandledError", "config", "noop", "COMPLETE_NOTIFICATION", "createNotification", "errorNotification", "error", "nextNotification", "value", "kind", "context", "errorContext", "cb", "config", "isRoot", "_a", "errorThrown", "error", "captureError", "err", "Subscriber", "_super", "__extends", "destination", "_this", "isSubscription", "EMPTY_OBSERVER", "next", "error", "complete", "SafeSubscriber", "value", "handleStoppedNotification", "nextNotification", "err", "errorNotification", "COMPLETE_NOTIFICATION", "Subscription", "_bind", "bind", "fn", "thisArg", "ConsumerObserver", "partialObserver", "value", "error", "handleUnhandledError", "err", "SafeSubscriber", "_super", "__extends", "observerOrNext", "complete", "_this", "isFunction", "context_1", "config", "Subscriber", "handleUnhandledError", "error", "config", "captureError", "reportUnhandledError", "defaultErrorHandler", "err", "handleStoppedNotification", "notification", "subscriber", "onStoppedNotification", "timeoutProvider", "EMPTY_OBSERVER", "noop", "observable", "identity", "x", "pipe", "fns", "_i", "pipeFromArray", "identity", "input", "prev", "fn", "Observable", "subscribe", "operator", "observable", "observerOrNext", "error", "complete", "_this", "subscriber", "isSubscriber", "SafeSubscriber", "errorContext", "_a", "source", "sink", "err", "next", "promiseCtor", "getPromiseCtor", "resolve", "reject", "value", "operations", "_i", "pipeFromArray", "x", "getPromiseCtor", "promiseCtor", "_a", "config", "isObserver", "value", "isFunction", "isSubscriber", "Subscriber", "isSubscription", "hasLift", "source", "isFunction", "operate", "init", "liftedSource", "err", "createOperatorSubscriber", "destination", "onNext", "onComplete", "onError", "onFinalize", "OperatorSubscriber", "_super", "__extends", "shouldUnsubscribe", "_this", "value", "err", "closed_1", "_a", "Subscriber", "animationFrameProvider", "callback", "request", "cancel", "delegate", "handle", "timestamp", "Subscription", "args", "_i", "__spreadArray", "__read", "ObjectUnsubscribedError", "createErrorClass", "_super", "Subject", "_super", "__extends", "_this", "operator", "subject", "AnonymousSubject", "ObjectUnsubscribedError", "value", "errorContext", "_b", "__values", "_c", "observer", "err", "observers", "_a", "subscriber", "hasError", "isStopped", "EMPTY_SUBSCRIPTION", "Subscription", "arrRemove", "thrownError", "observable", "Observable", "destination", "source", "AnonymousSubject", "_super", "__extends", "destination", "source", "_this", "value", "_b", "_a", "err", "subscriber", "EMPTY_SUBSCRIPTION", "Subject", "dateTimestampProvider", "ReplaySubject", "_super", "__extends", "_bufferSize", "_windowTime", "_timestampProvider", "dateTimestampProvider", "_this", "value", "_a", "isStopped", "_buffer", "_infiniteTimeWindow", "subscriber", "subscription", "copy", "i", "adjustedBufferSize", "now", "last", "Subject", "Action", "_super", "__extends", "scheduler", "work", "state", "delay", "Subscription", "intervalProvider", "handler", "timeout", "args", "_i", "delegate", "__spreadArray", "__read", "handle", "AsyncAction", "_super", "__extends", "scheduler", "work", "_this", "state", "delay", "id", "_a", "_id", "intervalProvider", "_scheduler", "error", "_delay", "errored", "errorValue", "e", "actions", "arrRemove", "Action", "Scheduler", "schedulerActionCtor", "now", "work", "delay", "state", "dateTimestampProvider", "AsyncScheduler", "_super", "__extends", "SchedulerAction", "now", "Scheduler", "_this", "action", "actions", "error", "asyncScheduler", "AsyncScheduler", "AsyncAction", "async", "AnimationFrameAction", "_super", "__extends", "scheduler", "work", "_this", "id", "delay", "animationFrameProvider", "actions", "_a", "AsyncAction", "AnimationFrameScheduler", "_super", "__extends", "action", "flushId", "actions", "error", "AsyncScheduler", "animationFrameScheduler", "AnimationFrameScheduler", "AnimationFrameAction", "EMPTY", "Observable", "subscriber", "isScheduler", "value", "isFunction", "last", "arr", "popResultSelector", "args", "isFunction", "popScheduler", "isScheduler", "popNumber", "defaultValue", "isArrayLike", "x", "isPromise", "value", "isFunction", "isInteropObservable", "input", "isFunction", "observable", "isAsyncIterable", "obj", "isFunction", "createInvalidObservableTypeError", "input", "getSymbolIterator", "iterator", "isIterable", "input", "isFunction", "iterator", "readableStreamLikeToAsyncGenerator", "readableStream", "reader", "__await", "_a", "_b", "value", "done", "isReadableStreamLike", "obj", "isFunction", "innerFrom", "input", "Observable", "isInteropObservable", "fromInteropObservable", "isArrayLike", "fromArrayLike", "isPromise", "fromPromise", "isAsyncIterable", "fromAsyncIterable", "isIterable", "fromIterable", "isReadableStreamLike", "fromReadableStreamLike", "createInvalidObservableTypeError", "obj", "subscriber", "obs", "observable", "isFunction", "array", "i", "promise", "value", "err", "reportUnhandledError", "iterable", "iterable_1", "__values", "iterable_1_1", "asyncIterable", "process", "readableStream", "readableStreamLikeToAsyncGenerator", "asyncIterable_1", "__asyncValues", "asyncIterable_1_1", "executeSchedule", "parentSubscription", "scheduler", "work", "delay", "repeat", "scheduleSubscription", "observeOn", "scheduler", "delay", "operate", "source", "subscriber", "createOperatorSubscriber", "value", "executeSchedule", "err", "subscribeOn", "scheduler", "delay", "operate", "source", "subscriber", "scheduleObservable", "input", "scheduler", "innerFrom", "subscribeOn", "observeOn", "schedulePromise", "input", "scheduler", "innerFrom", "subscribeOn", "observeOn", "scheduleArray", "input", "scheduler", "Observable", "subscriber", "i", "scheduleIterable", "input", "scheduler", "Observable", "subscriber", "iterator", "executeSchedule", "value", "done", "_a", "err", "isFunction", "scheduleAsyncIterable", "input", "scheduler", "Observable", "subscriber", "executeSchedule", "iterator", "result", "scheduleReadableStreamLike", "input", "scheduler", "scheduleAsyncIterable", "readableStreamLikeToAsyncGenerator", "scheduled", "input", "scheduler", "isInteropObservable", "scheduleObservable", "isArrayLike", "scheduleArray", "isPromise", "schedulePromise", "isAsyncIterable", "scheduleAsyncIterable", "isIterable", "scheduleIterable", "isReadableStreamLike", "scheduleReadableStreamLike", "createInvalidObservableTypeError", "from", "input", "scheduler", "scheduled", "innerFrom", "of", "args", "_i", "scheduler", "popScheduler", "from", "throwError", "errorOrErrorFactory", "scheduler", "errorFactory", "isFunction", "init", "subscriber", "Observable", "isValidDate", "value", "map", "project", "thisArg", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "isArray", "callOrApply", "fn", "args", "__spreadArray", "__read", "mapOneOrManyArgs", "map", "isArray", "getPrototypeOf", "objectProto", "getKeys", "argsArgArrayOrObject", "args", "first_1", "isPOJO", "keys", "key", "obj", "createObject", "keys", "values", "result", "key", "i", "combineLatest", "args", "_i", "scheduler", "popScheduler", "resultSelector", "popResultSelector", "_a", "argsArgArrayOrObject", "observables", "keys", "from", "result", "Observable", "combineLatestInit", "values", "createObject", "identity", "mapOneOrManyArgs", "valueTransform", "subscriber", "maybeSchedule", "length", "active", "remainingFirstValues", "i", "source", "hasFirstValue", "createOperatorSubscriber", "value", "execute", "subscription", "executeSchedule", "mergeInternals", "source", "subscriber", "project", "concurrent", "onBeforeNext", "expand", "innerSubScheduler", "additionalFinalizer", "buffer", "active", "index", "isComplete", "checkComplete", "outerNext", "value", "doInnerSub", "innerComplete", "innerFrom", "createOperatorSubscriber", "innerValue", "bufferedValue", "executeSchedule", "err", "mergeMap", "project", "resultSelector", "concurrent", "isFunction", "a", "i", "map", "b", "ii", "innerFrom", "operate", "source", "subscriber", "mergeInternals", "mergeAll", "concurrent", "mergeMap", "identity", "concatAll", "mergeAll", "concat", "args", "_i", "concatAll", "from", "popScheduler", "defer", "observableFactory", "Observable", "subscriber", "innerFrom", "nodeEventEmitterMethods", "eventTargetMethods", "jqueryMethods", "fromEvent", "target", "eventName", "options", "resultSelector", "isFunction", "mapOneOrManyArgs", "_a", "__read", "isEventTarget", "methodName", "handler", "isNodeStyleEventEmitter", "toCommonHandlerRegistry", "isJQueryStyleEventEmitter", "add", "remove", "isArrayLike", "mergeMap", "subTarget", "innerFrom", "Observable", "subscriber", "args", "_i", "fromEventPattern", "addHandler", "removeHandler", "resultSelector", "mapOneOrManyArgs", "Observable", "subscriber", "handler", "e", "_i", "retValue", "isFunction", "timer", "dueTime", "intervalOrScheduler", "scheduler", "async", "intervalDuration", "isScheduler", "Observable", "subscriber", "due", "isValidDate", "n", "merge", "args", "_i", "scheduler", "popScheduler", "concurrent", "popNumber", "sources", "innerFrom", "mergeAll", "from", "EMPTY", "NEVER", "Observable", "noop", "isArray", "argsOrArgArray", "args", "filter", "predicate", "thisArg", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "zip", "args", "_i", "resultSelector", "popResultSelector", "sources", "argsOrArgArray", "Observable", "subscriber", "buffers", "completed", "sourceIndex", "innerFrom", "createOperatorSubscriber", "value", "buffer", "result", "__spreadArray", "__read", "i", "EMPTY", "audit", "durationSelector", "operate", "source", "subscriber", "hasValue", "lastValue", "durationSubscriber", "isComplete", "endDuration", "value", "cleanupDuration", "createOperatorSubscriber", "innerFrom", "auditTime", "duration", "scheduler", "asyncScheduler", "audit", "timer", "bufferCount", "bufferSize", "startBufferEvery", "operate", "source", "subscriber", "buffers", "count", "createOperatorSubscriber", "value", "toEmit", "buffers_1", "__values", "buffers_1_1", "buffer", "toEmit_1", "toEmit_1_1", "arrRemove", "buffers_2", "buffers_2_1", "catchError", "selector", "operate", "source", "subscriber", "innerSub", "syncUnsub", "handledResult", "createOperatorSubscriber", "err", "innerFrom", "scanInternals", "accumulator", "seed", "hasSeed", "emitOnNext", "emitBeforeComplete", "source", "subscriber", "hasState", "state", "index", "createOperatorSubscriber", "value", "i", "combineLatest", "args", "_i", "resultSelector", "popResultSelector", "pipe", "__spreadArray", "__read", "mapOneOrManyArgs", "operate", "source", "subscriber", "combineLatestInit", "argsOrArgArray", "combineLatestWith", "otherSources", "_i", "combineLatest", "__spreadArray", "__read", "concatMap", "project", "resultSelector", "isFunction", "mergeMap", "debounceTime", "dueTime", "scheduler", "asyncScheduler", "operate", "source", "subscriber", "activeTask", "lastValue", "lastTime", "emit", "value", "emitWhenIdle", "targetTime", "now", "createOperatorSubscriber", "defaultIfEmpty", "defaultValue", "operate", "source", "subscriber", "hasValue", "createOperatorSubscriber", "value", "take", "count", "EMPTY", "operate", "source", "subscriber", "seen", "createOperatorSubscriber", "value", "ignoreElements", "operate", "source", "subscriber", "createOperatorSubscriber", "noop", "mapTo", "value", "map", "delayWhen", "delayDurationSelector", "subscriptionDelay", "source", "concat", "take", "ignoreElements", "mergeMap", "value", "index", "mapTo", "delay", "due", "scheduler", "asyncScheduler", "duration", "timer", "delayWhen", "distinctUntilChanged", "comparator", "keySelector", "identity", "defaultCompare", "operate", "source", "subscriber", "previousKey", "first", "createOperatorSubscriber", "value", "currentKey", "a", "b", "distinctUntilKeyChanged", "key", "compare", "distinctUntilChanged", "x", "y", "endWith", "values", "_i", "source", "concat", "of", "__spreadArray", "__read", "finalize", "callback", "operate", "source", "subscriber", "takeLast", "count", "EMPTY", "operate", "source", "subscriber", "buffer", "createOperatorSubscriber", "value", "buffer_1", "__values", "buffer_1_1", "merge", "args", "_i", "scheduler", "popScheduler", "concurrent", "popNumber", "argsOrArgArray", "operate", "source", "subscriber", "mergeAll", "from", "__spreadArray", "__read", "mergeWith", "otherSources", "_i", "merge", "__spreadArray", "__read", "repeat", "countOrConfig", "count", "delay", "_a", "EMPTY", "operate", "source", "subscriber", "soFar", "sourceSub", "resubscribe", "notifier", "timer", "innerFrom", "notifierSubscriber_1", "createOperatorSubscriber", "subscribeToSource", "syncUnsub", "sample", "notifier", "operate", "source", "subscriber", "hasValue", "lastValue", "createOperatorSubscriber", "value", "noop", "scan", "accumulator", "seed", "operate", "scanInternals", "share", "options", "_a", "connector", "Subject", "_b", "resetOnError", "_c", "resetOnComplete", "_d", "resetOnRefCountZero", "wrapperSource", "connection", "resetConnection", "subject", "refCount", "hasCompleted", "hasErrored", "cancelReset", "reset", "resetAndUnsubscribe", "conn", "operate", "source", "subscriber", "dest", "handleReset", "SafeSubscriber", "value", "err", "innerFrom", "on", "args", "_i", "onSubscriber", "__spreadArray", "__read", "shareReplay", "configOrBufferSize", "windowTime", "scheduler", "bufferSize", "refCount", "_a", "_b", "_c", "share", "ReplaySubject", "skip", "count", "filter", "_", "index", "skipUntil", "notifier", "operate", "source", "subscriber", "taking", "skipSubscriber", "createOperatorSubscriber", "noop", "innerFrom", "value", "startWith", "values", "_i", "scheduler", "popScheduler", "operate", "source", "subscriber", "concat", "switchMap", "project", "resultSelector", "operate", "source", "subscriber", "innerSubscriber", "index", "isComplete", "checkComplete", "createOperatorSubscriber", "value", "innerIndex", "outerIndex", "innerFrom", "innerValue", "takeUntil", "notifier", "operate", "source", "subscriber", "innerFrom", "createOperatorSubscriber", "noop", "takeWhile", "predicate", "inclusive", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "result", "tap", "observerOrNext", "error", "complete", "tapObserver", "isFunction", "operate", "source", "subscriber", "_a", "isUnsub", "createOperatorSubscriber", "value", "err", "_b", "identity", "defaultThrottleConfig", "throttle", "durationSelector", "config", "operate", "source", "subscriber", "leading", "trailing", "hasValue", "sendValue", "throttled", "isComplete", "endThrottling", "send", "cleanupThrottling", "startThrottle", "value", "innerFrom", "createOperatorSubscriber", "throttleTime", "duration", "scheduler", "config", "asyncScheduler", "defaultThrottleConfig", "duration$", "timer", "throttle", "withLatestFrom", "inputs", "_i", "project", "popResultSelector", "operate", "source", "subscriber", "len", "otherValues", "hasValue", "ready", "i", "innerFrom", "createOperatorSubscriber", "value", "identity", "noop", "values", "__spreadArray", "__read", "zip", "sources", "_i", "operate", "source", "subscriber", "__spreadArray", "__read", "zipWith", "otherInputs", "_i", "zip", "__spreadArray", "__read", "watchDocument", "document$", "ReplaySubject", "fromEvent", "getElements", "selector", "node", "getElement", "el", "getOptionalElement", "getActiveElement", "watchElementFocus", "el", "merge", "fromEvent", "debounceTime", "map", "active", "getActiveElement", "startWith", "distinctUntilChanged", "getElementOffset", "el", "watchElementOffset", "merge", "fromEvent", "auditTime", "animationFrameScheduler", "map", "startWith", "getElementContentOffset", "el", "watchElementContentOffset", "merge", "fromEvent", "auditTime", "animationFrameScheduler", "map", "startWith", "MapShim", "getIndex", "arr", "key", "result", "entry", "index", "class_1", "value", "entries", "callback", "ctx", "_i", "_a", "isBrowser", "global$1", "requestAnimationFrame$1", "trailingTimeout", "throttle", "delay", "leadingCall", "trailingCall", "lastCallTime", "resolvePending", "proxy", "timeoutCallback", "timeStamp", "REFRESH_DELAY", "transitionKeys", "mutationObserverSupported", "ResizeObserverController", "observer", "observers", "changesDetected", "activeObservers", "_b", "propertyName", "isReflowProperty", "defineConfigurable", "target", "props", "getWindowOf", "ownerGlobal", "emptyRect", "createRectInit", "toFloat", "getBordersSize", "styles", "positions", "size", "position", "getPaddings", "paddings", "positions_1", "getSVGContentRect", "bbox", "getHTMLElementContentRect", "clientWidth", "clientHeight", "horizPad", "vertPad", "width", "height", "isDocumentElement", "vertScrollbar", "horizScrollbar", "isSVGGraphicsElement", "getContentRect", "createReadOnlyRect", "x", "y", "Constr", "rect", "ResizeObservation", "ResizeObserverEntry", "rectInit", "contentRect", "ResizeObserverSPI", "controller", "callbackCtx", "observations", "_this", "observation", "ResizeObserver", "method", "ResizeObserver_es_default", "entry$", "Subject", "observer$", "defer", "of", "ResizeObserver_es_default", "entries", "entry", "switchMap", "observer", "merge", "NEVER", "finalize", "shareReplay", "getElementSize", "el", "watchElementSize", "tap", "filter", "target", "map", "startWith", "getElementContentSize", "el", "getElementContainer", "parent", "entry$", "Subject", "observer$", "defer", "of", "entries", "entry", "switchMap", "observer", "merge", "NEVER", "finalize", "shareReplay", "watchElementVisibility", "el", "tap", "filter", "target", "map", "isIntersecting", "watchElementBoundary", "threshold", "watchElementContentOffset", "y", "visible", "getElementSize", "content", "getElementContentSize", "distinctUntilChanged", "toggles", "getElement", "getToggle", "name", "setToggle", "value", "watchToggle", "el", "fromEvent", "map", "startWith", "isSusceptibleToKeyboard", "el", "type", "watchKeyboard", "fromEvent", "filter", "ev", "map", "getToggle", "mode", "active", "getActiveElement", "share", "getLocation", "setLocation", "url", "watchLocation", "Subject", "appendChild", "el", "child", "node", "h", "tag", "attributes", "children", "attr", "truncate", "value", "n", "i", "round", "digits", "getLocationHash", "setLocationHash", "hash", "el", "h", "ev", "watchLocationHash", "fromEvent", "map", "startWith", "filter", "shareReplay", "watchLocationTarget", "id", "getOptionalElement", "watchMedia", "query", "media", "fromEventPattern", "next", "startWith", "watchPrint", "merge", "fromEvent", "map", "at", "query$", "factory", "switchMap", "active", "EMPTY", "request", "url", "options", "from", "catchError", "EMPTY", "switchMap", "res", "throwError", "of", "requestJSON", "shareReplay", "requestXML", "dom", "map", "watchScript", "src", "script", "h", "defer", "merge", "fromEvent", "switchMap", "throwError", "map", "finalize", "take", "getViewportOffset", "watchViewportOffset", "merge", "fromEvent", "map", "startWith", "getViewportSize", "watchViewportSize", "fromEvent", "map", "startWith", "watchViewport", "combineLatest", "watchViewportOffset", "watchViewportSize", "map", "offset", "size", "shareReplay", "watchViewportAt", "el", "viewport$", "header$", "size$", "distinctUntilKeyChanged", "offset$", "combineLatest", "map", "getElementOffset", "height", "offset", "size", "x", "y", "watchWorker", "worker", "tx$", "rx$", "fromEvent", "map", "data", "throttle", "tap", "message", "switchMap", "share", "script", "getElement", "config", "getLocation", "configuration", "feature", "flag", "translation", "key", "value", "getComponentElement", "type", "node", "getElement", "getComponentElements", "getElements", "watchAnnounce", "el", "button", "getElement", "fromEvent", "map", "content", "mountAnnounce", "feature", "EMPTY", "defer", "push$", "Subject", "startWith", "hash", "_a", "tap", "state", "finalize", "__spreadValues", "watchConsent", "el", "target$", "map", "target", "mountConsent", "options", "internal$", "Subject", "hidden", "tap", "state", "finalize", "__spreadValues", "import_clipboard", "renderTooltip", "id", "h", "renderAnnotation", "id", "prefix", "anchor", "h", "renderTooltip", "renderClipboardButton", "id", "h", "translation", "renderSearchDocument", "document", "flag", "parent", "teaser", "missing", "key", "list", "h", "url", "feature", "match", "highlight", "value", "tags", "configuration", "truncate", "tag", "id", "type", "translation", "renderSearchResultItem", "result", "threshold", "docs", "doc", "article", "index", "best", "more", "children", "section", "renderSourceFacts", "facts", "h", "key", "value", "round", "renderTabbedControl", "type", "classes", "h", "renderTable", "table", "h", "renderVersion", "version", "config", "configuration", "url", "h", "renderVersionSelector", "versions", "active", "translation", "watchAnnotation", "el", "container", "offset$", "defer", "combineLatest", "watchElementOffset", "watchElementContentOffset", "map", "x", "y", "scroll", "width", "height", "getElementSize", "watchElementFocus", "switchMap", "active", "offset", "take", "mountAnnotation", "target$", "tooltip", "index", "push$", "Subject", "done$", "takeLast", "watchElementVisibility", "takeUntil", "visible", "merge", "filter", "debounceTime", "auditTime", "animationFrameScheduler", "throttleTime", "origin", "fromEvent", "ev", "withLatestFrom", "_a", "parent", "getActiveElement", "target", "delay", "tap", "state", "finalize", "__spreadValues", "findAnnotationMarkers", "container", "markers", "el", "getElements", "nodes", "it", "node", "text", "match", "id", "force", "marker", "swap", "source", "target", "mountAnnotationList", "target$", "print$", "parent", "prefix", "annotations", "getOptionalElement", "renderAnnotation", "EMPTY", "defer", "done$", "Subject", "pairs", "annotation", "getElement", "takeUntil", "takeLast", "active", "inner", "child", "merge", "mountAnnotation", "finalize", "share", "sequence", "findCandidateList", "el", "sibling", "watchCodeBlock", "watchElementSize", "map", "width", "getElementContentSize", "distinctUntilKeyChanged", "mountCodeBlock", "options", "hover", "factory$", "defer", "push$", "Subject", "scrollable", "ClipboardJS", "parent", "renderClipboardButton", "container", "list", "feature", "annotations$", "mountAnnotationList", "tap", "state", "finalize", "__spreadValues", "mergeWith", "height", "distinctUntilChanged", "switchMap", "active", "EMPTY", "watchElementVisibility", "filter", "visible", "take", "mermaid$", "sequence", "fetchScripts", "watchScript", "of", "mountMermaid", "el", "tap", "mermaid_default", "map", "shareReplay", "id", "host", "h", "svg", "shadow", "watchDetails", "el", "target$", "print$", "open", "merge", "map", "target", "filter", "details", "active", "tap", "mountDetails", "options", "defer", "push$", "Subject", "action", "reveal", "state", "finalize", "__spreadValues", "sentinel", "h", "mountDataTable", "el", "renderTable", "of", "watchContentTabs", "el", "inputs", "getElements", "initial", "input", "merge", "fromEvent", "map", "getElement", "startWith", "active", "mountContentTabs", "viewport$", "prev", "renderTabbedControl", "next", "container", "defer", "push$", "Subject", "done$", "takeLast", "combineLatest", "watchElementSize", "auditTime", "animationFrameScheduler", "takeUntil", "size", "offset", "getElementOffset", "width", "getElementSize", "content", "getElementContentOffset", "watchElementContentOffset", "getElementContentSize", "direction", "feature", "skip", "withLatestFrom", "tab", "y", "set", "label", "tabs", "tap", "state", "finalize", "__spreadValues", "subscribeOn", "asyncScheduler", "mountContent", "el", "viewport$", "target$", "print$", "merge", "getElements", "child", "mountCodeBlock", "mountMermaid", "mountDataTable", "mountDetails", "mountContentTabs", "watchDialog", "_el", "alert$", "switchMap", "message", "merge", "of", "delay", "map", "active", "mountDialog", "el", "options", "inner", "getElement", "defer", "push$", "Subject", "tap", "state", "finalize", "__spreadValues", "isHidden", "viewport$", "feature", "of", "direction$", "map", "y", "bufferCount", "a", "b", "distinctUntilKeyChanged", "hidden$", "combineLatest", "filter", "offset", "direction", "distinctUntilChanged", "search$", "watchToggle", "search", "switchMap", "active", "startWith", "watchHeader", "el", "options", "defer", "watchElementSize", "height", "hidden", "shareReplay", "mountHeader", "header$", "main$", "push$", "Subject", "done$", "takeLast", "combineLatestWith", "takeUntil", "state", "__spreadValues", "watchHeaderTitle", "el", "viewport$", "header$", "watchViewportAt", "map", "y", "height", "getElementSize", "distinctUntilKeyChanged", "mountHeaderTitle", "options", "defer", "push$", "Subject", "active", "heading", "getOptionalElement", "EMPTY", "tap", "state", "finalize", "__spreadValues", "watchMain", "el", "viewport$", "header$", "adjust$", "map", "height", "distinctUntilChanged", "border$", "switchMap", "watchElementSize", "distinctUntilKeyChanged", "combineLatest", "header", "top", "bottom", "y", "a", "b", "watchPalette", "inputs", "current", "input", "of", "mergeMap", "fromEvent", "map", "startWith", "shareReplay", "mountPalette", "el", "defer", "push$", "Subject", "palette", "key", "value", "index", "label", "observeOn", "asyncScheduler", "getElements", "tap", "state", "finalize", "__spreadValues", "import_clipboard", "extract", "el", "text", "setupClipboardJS", "alert$", "ClipboardJS", "Observable", "subscriber", "getElement", "ev", "tap", "map", "translation", "preprocess", "urls", "root", "next", "a", "b", "url", "index", "fetchSitemap", "base", "cached", "of", "config", "configuration", "requestXML", "map", "sitemap", "getElements", "node", "catchError", "EMPTY", "defaultIfEmpty", "tap", "setupInstantLoading", "document$", "location$", "viewport$", "config", "configuration", "fromEvent", "favicon", "getOptionalElement", "push$", "fetchSitemap", "map", "paths", "path", "switchMap", "urls", "filter", "ev", "el", "url", "of", "NEVER", "share", "pop$", "merge", "distinctUntilChanged", "a", "b", "response$", "distinctUntilKeyChanged", "request", "catchError", "setLocation", "sample", "dom", "res", "skip", "replacement", "selector", "feature", "source", "target", "getComponentElement", "getElements", "concatMap", "script", "h", "name", "Observable", "observer", "EMPTY", "offset", "setLocationHash", "skipUntil", "debounceTime", "bufferCount", "state", "import_escape_html", "import_escape_html", "setupSearchHighlighter", "config", "escape", "separator", "highlight", "_", "data", "term", "query", "match", "value", "escapeHTML", "defaultTransform", "query", "terms", "index", "isSearchReadyMessage", "message", "isSearchQueryMessage", "isSearchResultMessage", "setupSearchIndex", "config", "docs", "translation", "options", "feature", "setupSearchWorker", "url", "index", "configuration", "worker", "tx$", "Subject", "rx$", "watchWorker", "map", "message", "isSearchResultMessage", "result", "document", "share", "from", "data", "setupVersionSelector", "document$", "config", "configuration", "versions$", "requestJSON", "catchError", "EMPTY", "current$", "map", "versions", "current", "version", "aliases", "switchMap", "urls", "fromEvent", "filter", "ev", "withLatestFrom", "el", "url", "of", "fetchSitemap", "sitemap", "path", "getLocation", "setLocation", "combineLatest", "getElement", "renderVersionSelector", "_a", "outdated", "latest", "warning", "getComponentElements", "watchSearchQuery", "el", "rx$", "fn", "defaultTransform", "searchParams", "getLocation", "setToggle", "param$", "filter", "isSearchReadyMessage", "take", "map", "watchToggle", "active", "url", "value", "focus$", "watchElementFocus", "value$", "merge", "fromEvent", "delay", "startWith", "distinctUntilChanged", "combineLatest", "focus", "shareReplay", "mountSearchQuery", "tx$", "push$", "Subject", "done$", "takeLast", "distinctUntilKeyChanged", "translation", "takeUntil", "tap", "state", "finalize", "__spreadValues", "share", "mountSearchResult", "el", "rx$", "query$", "push$", "Subject", "boundary$", "watchElementBoundary", "filter", "meta", "getElement", "list", "ready$", "isSearchReadyMessage", "take", "withLatestFrom", "skipUntil", "items", "value", "translation", "round", "tap", "switchMap", "merge", "of", "bufferCount", "zipWith", "chunk", "result", "renderSearchResultItem", "isSearchResultMessage", "map", "data", "state", "finalize", "__spreadValues", "watchSearchShare", "_el", "query$", "map", "value", "url", "getLocation", "mountSearchShare", "el", "options", "push$", "Subject", "fromEvent", "ev", "tap", "state", "finalize", "__spreadValues", "mountSearchSuggest", "el", "rx$", "keyboard$", "push$", "Subject", "query", "getComponentElement", "query$", "merge", "fromEvent", "observeOn", "asyncScheduler", "map", "distinctUntilChanged", "combineLatestWith", "suggestions", "value", "words", "last", "filter", "mode", "key", "isSearchResultMessage", "data", "tap", "state", "finalize", "mountSearch", "el", "index$", "keyboard$", "config", "configuration", "url", "worker", "setupSearchWorker", "query", "getComponentElement", "result", "tx$", "rx$", "filter", "isSearchQueryMessage", "sample", "isSearchReadyMessage", "take", "mode", "key", "active", "getActiveElement", "anchors", "anchor", "getElements", "article", "best", "a", "b", "setToggle", "els", "i", "query$", "mountSearchQuery", "result$", "mountSearchResult", "merge", "mergeWith", "getComponentElements", "child", "mountSearchShare", "mountSearchSuggest", "err", "NEVER", "mountSearchHiglight", "el", "index$", "location$", "combineLatest", "startWith", "getLocation", "filter", "url", "map", "index", "setupSearchHighlighter", "fn", "_a", "nodes", "it", "node", "original", "replaced", "text", "childNodes", "h", "watchSidebar", "el", "viewport$", "main$", "parent", "adjust", "combineLatest", "map", "offset", "height", "y", "distinctUntilChanged", "a", "b", "mountSidebar", "_a", "_b", "header$", "options", "__objRest", "inner", "getElement", "getElementOffset", "defer", "push$", "Subject", "auditTime", "animationFrameScheduler", "withLatestFrom", "observeOn", "take", "item", "getElements", "container", "getElementContainer", "getElementSize", "tap", "state", "finalize", "__spreadValues", "fetchSourceFactsFromGitHub", "user", "repo", "url", "zip", "requestJSON", "catchError", "EMPTY", "map", "release", "defaultIfEmpty", "info", "__spreadValues", "fetchSourceFactsFromGitLab", "base", "project", "url", "requestJSON", "catchError", "EMPTY", "map", "star_count", "forks_count", "defaultIfEmpty", "fetchSourceFacts", "url", "type", "user", "repo", "fetchSourceFactsFromGitHub", "base", "slug", "fetchSourceFactsFromGitLab", "EMPTY", "fetch$", "watchSource", "el", "defer", "cached", "of", "getComponentElements", "consent", "EMPTY", "fetchSourceFacts", "tap", "facts", "catchError", "filter", "map", "shareReplay", "mountSource", "inner", "getElement", "push$", "Subject", "renderSourceFacts", "state", "finalize", "__spreadValues", "watchTabs", "el", "viewport$", "header$", "watchElementSize", "switchMap", "watchViewportAt", "map", "y", "distinctUntilKeyChanged", "mountTabs", "options", "defer", "push$", "Subject", "hidden", "feature", "of", "tap", "state", "finalize", "__spreadValues", "watchTableOfContents", "el", "viewport$", "header$", "table", "anchors", "getElements", "anchor", "id", "target", "getOptionalElement", "adjust$", "distinctUntilKeyChanged", "map", "height", "main", "getComponentElement", "grid", "getElement", "share", "watchElementSize", "switchMap", "body", "defer", "path", "of", "index", "offset", "a", "b", "combineLatestWith", "adjust", "scan", "prev", "next", "y", "size", "last", "distinctUntilChanged", "startWith", "bufferCount", "mountTableOfContents", "target$", "push$", "Subject", "done$", "takeLast", "feature", "smooth$", "merge", "debounceTime", "filter", "withLatestFrom", "behavior", "container", "getElementContainer", "getElementSize", "takeUntil", "skip", "repeat", "url", "getLocation", "active", "hash", "tap", "state", "finalize", "__spreadValues", "watchBackToTop", "_el", "viewport$", "main$", "target$", "direction$", "map", "y", "bufferCount", "a", "b", "distinctUntilChanged", "active$", "active", "combineLatest", "direction", "takeUntil", "skip", "endWith", "repeat", "hidden", "mountBackToTop", "el", "header$", "push$", "Subject", "done$", "takeLast", "distinctUntilKeyChanged", "height", "tap", "state", "finalize", "__spreadValues", "patchIndeterminate", "document$", "tablet$", "switchMap", "getElements", "tap", "el", "mergeMap", "fromEvent", "takeWhile", "map", "withLatestFrom", "tablet", "isAppleDevice", "patchScrollfix", "document$", "switchMap", "getElements", "tap", "el", "filter", "mergeMap", "fromEvent", "map", "top", "patchScrolllock", "viewport$", "tablet$", "combineLatest", "watchToggle", "map", "active", "tablet", "switchMap", "of", "delay", "withLatestFrom", "y", "value", "obj", "data", "key", "x", "y", "nodes", "parent", "i", "node", "document$", "watchDocument", "location$", "watchLocation", "target$", "watchLocationTarget", "keyboard$", "watchKeyboard", "viewport$", "watchViewport", "tablet$", "watchMedia", "screen$", "print$", "watchPrint", "config", "configuration", "index$", "requestJSON", "NEVER", "alert$", "Subject", "setupClipboardJS", "feature", "setupInstantLoading", "_a", "setupVersionSelector", "merge", "delay", "setToggle", "filter", "mode", "key", "prev", "getOptionalElement", "next", "patchIndeterminate", "patchScrollfix", "patchScrolllock", "header$", "watchHeader", "getComponentElement", "main$", "map", "switchMap", "el", "watchMain", "shareReplay", "control$", "getComponentElements", "mountConsent", "mountDialog", "mountHeader", "mountPalette", "mountSearch", "mountSource", "content$", "defer", "mountAnnounce", "mountContent", "mountSearchHiglight", "EMPTY", "mountHeaderTitle", "at", "mountSidebar", "mountTabs", "mountTableOfContents", "mountBackToTop", "component$", "mergeWith"] +} diff --git a/assets/javascripts/bundle.9c69f0bc.min.js b/assets/javascripts/bundle.9c69f0bc.min.js deleted file mode 100644 index 91fc7b5..0000000 --- a/assets/javascripts/bundle.9c69f0bc.min.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict";(()=>{var oa=Object.create;var xr=Object.defineProperty;var ia=Object.getOwnPropertyDescriptor;var aa=Object.getOwnPropertyNames,kt=Object.getOwnPropertySymbols,sa=Object.getPrototypeOf,Sr=Object.prototype.hasOwnProperty,sn=Object.prototype.propertyIsEnumerable;var an=(e,t,r)=>t in e?xr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,H=(e,t)=>{for(var r in t||(t={}))Sr.call(t,r)&&an(e,r,t[r]);if(kt)for(var r of kt(t))sn.call(t,r)&&an(e,r,t[r]);return e};var cn=(e,t)=>{var r={};for(var n in e)Sr.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&kt)for(var n of kt(e))t.indexOf(n)<0&&sn.call(e,n)&&(r[n]=e[n]);return r};var yt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ca=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of aa(t))!Sr.call(e,o)&&o!==r&&xr(e,o,{get:()=>t[o],enumerable:!(n=ia(t,o))||n.enumerable});return e};var Ye=(e,t,r)=>(r=e!=null?oa(sa(e)):{},ca(t||!e||!e.__esModule?xr(r,"default",{value:e,enumerable:!0}):r,e));var fn=yt((wr,un)=>{(function(e,t){typeof wr=="object"&&typeof un!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(wr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(O){return!!(O&&O!==document&&O.nodeName!=="HTML"&&O.nodeName!=="BODY"&&"classList"in O&&"contains"in O.classList)}function c(O){var Ue=O.type,He=O.tagName;return!!(He==="INPUT"&&a[Ue]&&!O.readOnly||He==="TEXTAREA"&&!O.readOnly||O.isContentEditable)}function u(O){O.classList.contains("focus-visible")||(O.classList.add("focus-visible"),O.setAttribute("data-focus-visible-added",""))}function f(O){!O.hasAttribute("data-focus-visible-added")||(O.classList.remove("focus-visible"),O.removeAttribute("data-focus-visible-added"))}function p(O){O.metaKey||O.altKey||O.ctrlKey||(s(r.activeElement)&&u(r.activeElement),n=!0)}function l(O){n=!1}function d(O){!s(O.target)||(n||c(O.target))&&u(O.target)}function h(O){!s(O.target)||(O.target.classList.contains("focus-visible")||O.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),f(O.target))}function b(O){document.visibilityState==="hidden"&&(o&&(n=!0),U())}function U(){document.addEventListener("mousemove",W),document.addEventListener("mousedown",W),document.addEventListener("mouseup",W),document.addEventListener("pointermove",W),document.addEventListener("pointerdown",W),document.addEventListener("pointerup",W),document.addEventListener("touchmove",W),document.addEventListener("touchstart",W),document.addEventListener("touchend",W)}function G(){document.removeEventListener("mousemove",W),document.removeEventListener("mousedown",W),document.removeEventListener("mouseup",W),document.removeEventListener("pointermove",W),document.removeEventListener("pointerdown",W),document.removeEventListener("pointerup",W),document.removeEventListener("touchmove",W),document.removeEventListener("touchstart",W),document.removeEventListener("touchend",W)}function W(O){O.target.nodeName&&O.target.nodeName.toLowerCase()==="html"||(n=!1,G())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",l,!0),document.addEventListener("pointerdown",l,!0),document.addEventListener("touchstart",l,!0),document.addEventListener("visibilitychange",b,!0),U(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var pn=yt(Er=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(u){return!1}},r=t(),n=function(u){var f={next:function(){var p=u.shift();return{done:p===void 0,value:p}}};return r&&(f[Symbol.iterator]=function(){return f}),f},o=function(u){return encodeURIComponent(u).replace(/%20/g,"+")},i=function(u){return decodeURIComponent(String(u).replace(/\+/g," "))},a=function(){var u=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var l=typeof p;if(l!=="undefined")if(l==="string")p!==""&&this._fromString(p);else if(p instanceof u){var d=this;p.forEach(function(G,W){d.append(W,G)})}else if(p!==null&&l==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),u._entries&&(u._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er);(function(e){var t=function(){try{var o=new e.URL("b","http://a/");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(c,u){typeof c!="string"&&(c=String(c)),u&&typeof u!="string"&&(u=String(u));var f=document,p;if(u&&(e.location===void 0||u!==e.location.href)){u=u.toLowerCase(),f=document.implementation.createHTMLDocument(""),p=f.createElement("base"),p.href=u,f.head.appendChild(p);try{if(p.href.indexOf(u)!==0)throw new Error(p.href)}catch(O){throw new Error("URL unable to set base "+u+" due to "+O)}}var l=f.createElement("a");l.href=c,p&&(f.body.appendChild(l),l.href=l.href);var d=f.createElement("input");if(d.type="url",d.value=c,l.protocol===":"||!/:/.test(l.href)||!d.checkValidity()&&!u)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:l});var h=new e.URLSearchParams(this.search),b=!0,U=!0,G=this;["append","delete","set"].forEach(function(O){var Ue=h[O];h[O]=function(){Ue.apply(h,arguments),b&&(U=!1,G.search=h.toString(),U=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var W=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==W&&(W=this.search,U&&(b=!1,this.searchParams._fromString(this.search),b=!0))}})},a=i.prototype,s=function(c){Object.defineProperty(a,c,{get:function(){return this._anchorElement[c]},set:function(u){this._anchorElement[c]=u},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(c){s(c)}),Object.defineProperty(a,"search",{get:function(){return this._anchorElement.search},set:function(c){this._anchorElement.search=c,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(a,{toString:{get:function(){var c=this;return function(){return c.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(c){this._anchorElement.href=c,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(c){this._anchorElement.pathname=c},enumerable:!0},origin:{get:function(){var c={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],u=this._anchorElement.port!=c&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(u?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(c){},enumerable:!0},username:{get:function(){return""},set:function(c){},enumerable:!0}}),i.createObjectURL=function(c){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(c){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er)});var kn=yt((zs,It)=>{/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */var ln,mn,dn,hn,bn,vn,gn,yn,xn,Ht,Or,Sn,wn,En,rt,On,_n,Tn,Mn,Ln,An,Cn,Rn,Pt;(function(e){var t=typeof global=="object"?global:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(n){e(r(t,r(n)))}):typeof It=="object"&&typeof It.exports=="object"?e(r(t,r(It.exports))):e(r(t));function r(n,o){return n!==t&&(typeof Object.create=="function"?Object.defineProperty(n,"__esModule",{value:!0}):n.__esModule=!0),function(i,a){return n[i]=o?o(i,a):a}}})(function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,o){n.__proto__=o}||function(n,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(n[i]=o[i])};ln=function(n,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");t(n,o);function i(){this.constructor=n}n.prototype=o===null?Object.create(o):(i.prototype=o.prototype,new i)},mn=Object.assign||function(n){for(var o,i=1,a=arguments.length;i=0;f--)(u=n[f])&&(c=(s<3?u(c):s>3?u(o,i,c):u(o,i))||c);return s>3&&c&&Object.defineProperty(o,i,c),c},bn=function(n,o){return function(i,a){o(i,a,n)}},vn=function(n,o){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,o)},gn=function(n,o,i,a){function s(c){return c instanceof i?c:new i(function(u){u(c)})}return new(i||(i=Promise))(function(c,u){function f(d){try{l(a.next(d))}catch(h){u(h)}}function p(d){try{l(a.throw(d))}catch(h){u(h)}}function l(d){d.done?c(d.value):s(d.value).then(f,p)}l((a=a.apply(n,o||[])).next())})},yn=function(n,o){var i={label:0,sent:function(){if(c[0]&1)throw c[1];return c[1]},trys:[],ops:[]},a,s,c,u;return u={next:f(0),throw:f(1),return:f(2)},typeof Symbol=="function"&&(u[Symbol.iterator]=function(){return this}),u;function f(l){return function(d){return p([l,d])}}function p(l){if(a)throw new TypeError("Generator is already executing.");for(;i;)try{if(a=1,s&&(c=l[0]&2?s.return:l[0]?s.throw||((c=s.return)&&c.call(s),0):s.next)&&!(c=c.call(s,l[1])).done)return c;switch(s=0,c&&(l=[l[0]&2,c.value]),l[0]){case 0:case 1:c=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,s=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(c=i.trys,!(c=c.length>0&&c[c.length-1])&&(l[0]===6||l[0]===2)){i=0;continue}if(l[0]===3&&(!c||l[1]>c[0]&&l[1]=n.length&&(n=void 0),{value:n&&n[a++],done:!n}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")},Or=function(n,o){var i=typeof Symbol=="function"&&n[Symbol.iterator];if(!i)return n;var a=i.call(n),s,c=[],u;try{for(;(o===void 0||o-- >0)&&!(s=a.next()).done;)c.push(s.value)}catch(f){u={error:f}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(u)throw u.error}}return c},Sn=function(){for(var n=[],o=0;o1||f(b,U)})})}function f(b,U){try{p(a[b](U))}catch(G){h(c[0][3],G)}}function p(b){b.value instanceof rt?Promise.resolve(b.value.v).then(l,d):h(c[0][2],b)}function l(b){f("next",b)}function d(b){f("throw",b)}function h(b,U){b(U),c.shift(),c.length&&f(c[0][0],c[0][1])}},_n=function(n){var o,i;return o={},a("next"),a("throw",function(s){throw s}),a("return"),o[Symbol.iterator]=function(){return this},o;function a(s,c){o[s]=n[s]?function(u){return(i=!i)?{value:rt(n[s](u)),done:s==="return"}:c?c(u):u}:c}},Tn=function(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n[Symbol.asyncIterator],i;return o?o.call(n):(n=typeof Ht=="function"?Ht(n):n[Symbol.iterator](),i={},a("next"),a("throw"),a("return"),i[Symbol.asyncIterator]=function(){return this},i);function a(c){i[c]=n[c]&&function(u){return new Promise(function(f,p){u=n[c](u),s(f,p,u.done,u.value)})}}function s(c,u,f,p){Promise.resolve(p).then(function(l){c({value:l,done:f})},u)}},Mn=function(n,o){return Object.defineProperty?Object.defineProperty(n,"raw",{value:o}):n.raw=o,n};var r=Object.create?function(n,o){Object.defineProperty(n,"default",{enumerable:!0,value:o})}:function(n,o){n.default=o};Ln=function(n){if(n&&n.__esModule)return n;var o={};if(n!=null)for(var i in n)i!=="default"&&Object.prototype.hasOwnProperty.call(n,i)&&Pt(o,n,i);return r(o,n),o},An=function(n){return n&&n.__esModule?n:{default:n}},Cn=function(n,o,i,a){if(i==="a"&&!a)throw new TypeError("Private accessor was defined without a getter");if(typeof o=="function"?n!==o||!a:!o.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return i==="m"?a:i==="a"?a.call(n):a?a.value:o.get(n)},Rn=function(n,o,i,a,s){if(a==="m")throw new TypeError("Private method is not writable");if(a==="a"&&!s)throw new TypeError("Private accessor was defined without a setter");if(typeof o=="function"?n!==o||!s:!o.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return a==="a"?s.call(n,i):s?s.value=i:o.set(n,i),i},e("__extends",ln),e("__assign",mn),e("__rest",dn),e("__decorate",hn),e("__param",bn),e("__metadata",vn),e("__awaiter",gn),e("__generator",yn),e("__exportStar",xn),e("__createBinding",Pt),e("__values",Ht),e("__read",Or),e("__spread",Sn),e("__spreadArrays",wn),e("__spreadArray",En),e("__await",rt),e("__asyncGenerator",On),e("__asyncDelegator",_n),e("__asyncValues",Tn),e("__makeTemplateObject",Mn),e("__importStar",Ln),e("__importDefault",An),e("__classPrivateFieldGet",Cn),e("__classPrivateFieldSet",Rn)})});var Kr=yt((At,Yr)=>{/*! - * clipboard.js v2.0.11 - * https://clipboardjs.com/ - * - * Licensed MIT © Zeno Rocha - */(function(t,r){typeof At=="object"&&typeof Yr=="object"?Yr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof At=="object"?At.ClipboardJS=r():t.ClipboardJS=r()})(At,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return na}});var a=i(279),s=i.n(a),c=i(370),u=i.n(c),f=i(817),p=i.n(f);function l(j){try{return document.execCommand(j)}catch(_){return!1}}var d=function(_){var E=p()(_);return l("cut"),E},h=d;function b(j){var _=document.documentElement.getAttribute("dir")==="rtl",E=document.createElement("textarea");E.style.fontSize="12pt",E.style.border="0",E.style.padding="0",E.style.margin="0",E.style.position="absolute",E.style[_?"right":"left"]="-9999px";var k=window.pageYOffset||document.documentElement.scrollTop;return E.style.top="".concat(k,"px"),E.setAttribute("readonly",""),E.value=j,E}var U=function(_,E){var k=b(_);E.container.appendChild(k);var I=p()(k);return l("copy"),k.remove(),I},G=function(_){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},k="";return typeof _=="string"?k=U(_,E):_ instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(_==null?void 0:_.type)?k=U(_.value,E):(k=p()(_),l("copy")),k},W=G;function O(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?O=function(E){return typeof E}:O=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},O(j)}var Ue=function(){var _=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},E=_.action,k=E===void 0?"copy":E,I=_.container,Q=_.target,Oe=_.text;if(k!=="copy"&&k!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(Q!==void 0)if(Q&&O(Q)==="object"&&Q.nodeType===1){if(k==="copy"&&Q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(k==="cut"&&(Q.hasAttribute("readonly")||Q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Oe)return W(Oe,{container:I});if(Q)return k==="cut"?h(Q):W(Q,{container:I})},He=Ue;function Ce(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ce=function(E){return typeof E}:Ce=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},Ce(j)}function Bi(j,_){if(!(j instanceof _))throw new TypeError("Cannot call a class as a function")}function on(j,_){for(var E=0;E<_.length;E++){var k=_[E];k.enumerable=k.enumerable||!1,k.configurable=!0,"value"in k&&(k.writable=!0),Object.defineProperty(j,k.key,k)}}function Gi(j,_,E){return _&&on(j.prototype,_),E&&on(j,E),j}function Ji(j,_){if(typeof _!="function"&&_!==null)throw new TypeError("Super expression must either be null or a function");j.prototype=Object.create(_&&_.prototype,{constructor:{value:j,writable:!0,configurable:!0}}),_&&gr(j,_)}function gr(j,_){return gr=Object.setPrototypeOf||function(k,I){return k.__proto__=I,k},gr(j,_)}function Xi(j){var _=ta();return function(){var k=Ct(j),I;if(_){var Q=Ct(this).constructor;I=Reflect.construct(k,arguments,Q)}else I=k.apply(this,arguments);return Zi(this,I)}}function Zi(j,_){return _&&(Ce(_)==="object"||typeof _=="function")?_:ea(j)}function ea(j){if(j===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return j}function ta(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(j){return!1}}function Ct(j){return Ct=Object.setPrototypeOf?Object.getPrototypeOf:function(E){return E.__proto__||Object.getPrototypeOf(E)},Ct(j)}function yr(j,_){var E="data-clipboard-".concat(j);if(!!_.hasAttribute(E))return _.getAttribute(E)}var ra=function(j){Ji(E,j);var _=Xi(E);function E(k,I){var Q;return Bi(this,E),Q=_.call(this),Q.resolveOptions(I),Q.listenClick(k),Q}return Gi(E,[{key:"resolveOptions",value:function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof I.action=="function"?I.action:this.defaultAction,this.target=typeof I.target=="function"?I.target:this.defaultTarget,this.text=typeof I.text=="function"?I.text:this.defaultText,this.container=Ce(I.container)==="object"?I.container:document.body}},{key:"listenClick",value:function(I){var Q=this;this.listener=u()(I,"click",function(Oe){return Q.onClick(Oe)})}},{key:"onClick",value:function(I){var Q=I.delegateTarget||I.currentTarget,Oe=this.action(Q)||"copy",Rt=He({action:Oe,container:this.container,target:this.target(Q),text:this.text(Q)});this.emit(Rt?"success":"error",{action:Oe,text:Rt,trigger:Q,clearSelection:function(){Q&&Q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(I){return yr("action",I)}},{key:"defaultTarget",value:function(I){var Q=yr("target",I);if(Q)return document.querySelector(Q)}},{key:"defaultText",value:function(I){return yr("text",I)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(I){var Q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return W(I,Q)}},{key:"cut",value:function(I){return h(I)}},{key:"isSupported",value:function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],Q=typeof I=="string"?[I]:I,Oe=!!document.queryCommandSupported;return Q.forEach(function(Rt){Oe=Oe&&!!document.queryCommandSupported(Rt)}),Oe}}]),E}(s()),na=ra},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function a(s,c){for(;s&&s.nodeType!==o;){if(typeof s.matches=="function"&&s.matches(c))return s;s=s.parentNode}}n.exports=a},438:function(n,o,i){var a=i(828);function s(f,p,l,d,h){var b=u.apply(this,arguments);return f.addEventListener(l,b,h),{destroy:function(){f.removeEventListener(l,b,h)}}}function c(f,p,l,d,h){return typeof f.addEventListener=="function"?s.apply(null,arguments):typeof l=="function"?s.bind(null,document).apply(null,arguments):(typeof f=="string"&&(f=document.querySelectorAll(f)),Array.prototype.map.call(f,function(b){return s(b,p,l,d,h)}))}function u(f,p,l,d){return function(h){h.delegateTarget=a(h.target,p),h.delegateTarget&&d.call(f,h)}}n.exports=c},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var a=Object.prototype.toString.call(i);return i!==void 0&&(a==="[object NodeList]"||a==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var a=Object.prototype.toString.call(i);return a==="[object Function]"}},370:function(n,o,i){var a=i(879),s=i(438);function c(l,d,h){if(!l&&!d&&!h)throw new Error("Missing required arguments");if(!a.string(d))throw new TypeError("Second argument must be a String");if(!a.fn(h))throw new TypeError("Third argument must be a Function");if(a.node(l))return u(l,d,h);if(a.nodeList(l))return f(l,d,h);if(a.string(l))return p(l,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function u(l,d,h){return l.addEventListener(d,h),{destroy:function(){l.removeEventListener(d,h)}}}function f(l,d,h){return Array.prototype.forEach.call(l,function(b){b.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(l,function(b){b.removeEventListener(d,h)})}}}function p(l,d,h){return s(document.body,l,d,h)}n.exports=c},817:function(n){function o(i){var a;if(i.nodeName==="SELECT")i.focus(),a=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var s=i.hasAttribute("readonly");s||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),s||i.removeAttribute("readonly"),a=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var c=window.getSelection(),u=document.createRange();u.selectNodeContents(i),c.removeAllRanges(),c.addRange(u),a=c.toString()}return a}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,a,s){var c=this.e||(this.e={});return(c[i]||(c[i]=[])).push({fn:a,ctx:s}),this},once:function(i,a,s){var c=this;function u(){c.off(i,u),a.apply(s,arguments)}return u._=a,this.on(i,u,s)},emit:function(i){var a=[].slice.call(arguments,1),s=((this.e||(this.e={}))[i]||[]).slice(),c=0,u=s.length;for(c;c{"use strict";/*! - * escape-html - * Copyright(c) 2012-2013 TJ Holowaychuk - * Copyright(c) 2015 Andreas Lubbe - * Copyright(c) 2015 Tiancheng "Timothy" Gu - * MIT Licensed - */var _s=/["'&<>]/;Si.exports=Ts;function Ts(e){var t=""+e,r=_s.exec(t);if(!r)return t;var n,o="",i=0,a=0;for(i=r.index;i0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,a=o.isStopped,s=o.observers;return i||a?_r:(this.currentObservers=null,s.push(r),new Re(function(){n.currentObservers=null,Pe(s,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,a=n.isStopped;o?r.error(i):a&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,n){return new qn(r,n)},t}(F);var qn=function(e){re(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:_r},t}(w);var St={now:function(){return(St.delegate||Date).now()},delegate:void 0};var wt=function(e){re(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=St);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,a=n._infiniteTimeWindow,s=n._timestampProvider,c=n._windowTime;o||(i.push(r),!a&&i.push(s.now()+c)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,a=o._buffer,s=a.slice(),c=0;c0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=at.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){if(o===void 0&&(o=0),o!=null&&o>0||o==null&&this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);r.actions.some(function(i){return i.id===n})||(at.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Nt);var Kn=function(e){re(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(zt);var Te=new Kn(Yn);var C=new F(function(e){return e.complete()});function qt(e){return e&&T(e.schedule)}function kr(e){return e[e.length-1]}function De(e){return T(kr(e))?e.pop():void 0}function ye(e){return qt(kr(e))?e.pop():void 0}function Qt(e,t){return typeof kr(e)=="number"?e.pop():t}var st=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Yt(e){return T(e==null?void 0:e.then)}function Kt(e){return T(e[it])}function Bt(e){return Symbol.asyncIterator&&T(e==null?void 0:e[Symbol.asyncIterator])}function Gt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function va(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Jt=va();function Xt(e){return T(e==null?void 0:e[Jt])}function Zt(e){return In(this,arguments,function(){var r,n,o,i;return $t(this,function(a){switch(a.label){case 0:r=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,jt(r.read())];case 3:return n=a.sent(),o=n.value,i=n.done,i?[4,jt(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,jt(o)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function er(e){return T(e==null?void 0:e.getReader)}function N(e){if(e instanceof F)return e;if(e!=null){if(Kt(e))return ga(e);if(st(e))return ya(e);if(Yt(e))return xa(e);if(Bt(e))return Bn(e);if(Xt(e))return Sa(e);if(er(e))return wa(e)}throw Gt(e)}function ga(e){return new F(function(t){var r=e[it]();if(T(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function ya(e){return new F(function(t){for(var r=0;r=2,!0))}function oe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new w}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,a=i===void 0?!0:i,s=e.resetOnRefCountZero,c=s===void 0?!0:s;return function(u){var f,p,l,d=0,h=!1,b=!1,U=function(){p==null||p.unsubscribe(),p=void 0},G=function(){U(),f=l=void 0,h=b=!1},W=function(){var O=f;G(),O==null||O.unsubscribe()};return g(function(O,Ue){d++,!b&&!h&&U();var He=l=l!=null?l:r();Ue.add(function(){d--,d===0&&!b&&!h&&(p=Ur(W,c))}),He.subscribe(Ue),!f&&d>0&&(f=new Be({next:function(Ce){return He.next(Ce)},error:function(Ce){b=!0,U(),p=Ur(G,o,Ce),He.error(Ce)},complete:function(){h=!0,U(),p=Ur(G,a),He.complete()}}),N(O).subscribe(f))})(u)}}function Ur(e,t){for(var r=[],n=2;ne.next(document)),e}function B(e,t=document){return Array.from(t.querySelectorAll(e))}function z(e,t=document){let r=pe(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function pe(e,t=document){return t.querySelector(e)||void 0}function Ne(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function nr(e){return R(v(document.body,"focusin"),v(document.body,"focusout")).pipe(Ze(1),m(()=>{let t=Ne();return typeof t!="undefined"?e.contains(t):!1}),q(e===Ne()),K())}function ze(e){return{x:e.offsetLeft,y:e.offsetTop}}function vo(e){return R(v(window,"load"),v(window,"resize")).pipe($e(0,Te),m(()=>ze(e)),q(ze(e)))}function or(e){return{x:e.scrollLeft,y:e.scrollTop}}function pt(e){return R(v(e,"scroll"),v(window,"resize")).pipe($e(0,Te),m(()=>or(e)),q(or(e)))}var yo=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!zr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),za?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!zr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=Na.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),xo=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),wo=typeof WeakMap!="undefined"?new WeakMap:new yo,Eo=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=qa.getInstance(),n=new ts(t,r,this);wo.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Eo.prototype[e]=function(){var t;return(t=wo.get(this))[e].apply(t,arguments)}});var rs=function(){return typeof ir.ResizeObserver!="undefined"?ir.ResizeObserver:Eo}(),Oo=rs;var _o=new w,ns=P(()=>$(new Oo(e=>{for(let t of e)_o.next(t)}))).pipe(S(e=>R(xe,$(e)).pipe(L(()=>e.disconnect()))),X(1));function Ae(e){return{width:e.offsetWidth,height:e.offsetHeight}}function de(e){return ns.pipe(x(t=>t.observe(e)),S(t=>_o.pipe(M(({target:r})=>r===e),L(()=>t.unobserve(e)),m(()=>Ae(e)))),q(Ae(e)))}function mt(e){return{width:e.scrollWidth,height:e.scrollHeight}}var To=new w,os=P(()=>$(new IntersectionObserver(e=>{for(let t of e)To.next(t)},{threshold:0}))).pipe(S(e=>R(xe,$(e)).pipe(L(()=>e.disconnect()))),X(1));function cr(e){return os.pipe(x(t=>t.observe(e)),S(t=>To.pipe(M(({target:r})=>r===e),L(()=>t.unobserve(e)),m(({isIntersecting:r})=>r))))}function Mo(e,t=16){return pt(e).pipe(m(({y:r})=>{let n=Ae(e),o=mt(e);return r>=o.height-n.height-t}),K())}var ur={drawer:z("[data-md-toggle=drawer]"),search:z("[data-md-toggle=search]")};function Lo(e){return ur[e].checked}function qe(e,t){ur[e].checked!==t&&ur[e].click()}function dt(e){let t=ur[e];return v(t,"change").pipe(m(()=>t.checked),q(t.checked))}function is(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ao(){return v(window,"keydown").pipe(M(e=>!(e.metaKey||e.ctrlKey)),m(e=>({mode:Lo("search")?"search":"global",type:e.key,claim(){e.preventDefault(),e.stopPropagation()}})),M(({mode:e,type:t})=>{if(e==="global"){let r=Ne();if(typeof r!="undefined")return!is(r,t)}return!0}),oe())}function Se(){return new URL(location.href)}function fr(e){location.href=e.href}function Co(){return new w}function Ro(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)Ro(e,r)}function A(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)Ro(n,o);return n}function ko(e,t){let r=t;if(e.length>r){for(;e[r]!==" "&&--r>0;);return`${e.substring(0,r)}...`}return e}function pr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function Ho(){return location.hash.substring(1)}function Po(e){let t=A("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function as(){return v(window,"hashchange").pipe(m(Ho),q(Ho()),M(e=>e.length>0),X(1))}function Io(){return as().pipe(m(e=>pe(`[id="${e}"]`)),M(e=>typeof e!="undefined"))}function qr(e){let t=matchMedia(e);return rr(r=>t.addListener(()=>r(t.matches))).pipe(q(t.matches))}function $o(){let e=matchMedia("print");return R(v(window,"beforeprint").pipe(m(()=>!0)),v(window,"afterprint").pipe(m(()=>!1))).pipe(q(e.matches))}function Qr(e,t){return e.pipe(S(r=>r?t():C))}function lr(e,t={credentials:"same-origin"}){return fe(fetch(`${e}`,t)).pipe(ae(()=>C),S(r=>r.status!==200?Ot(()=>new Error(r.statusText)):$(r)))}function ke(e,t){return lr(e,t).pipe(S(r=>r.json()),X(1))}function jo(e,t){let r=new DOMParser;return lr(e,t).pipe(S(n=>n.text()),m(n=>r.parseFromString(n,"text/xml")),X(1))}function Fo(e){let t=A("script",{src:e});return P(()=>(document.head.appendChild(t),R(v(t,"load"),v(t,"error").pipe(S(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(m(()=>{}),L(()=>document.head.removeChild(t)),se(1))))}function Uo(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function Do(){return R(v(window,"scroll",{passive:!0}),v(window,"resize",{passive:!0})).pipe(m(Uo),q(Uo()))}function Wo(){return{width:innerWidth,height:innerHeight}}function Vo(){return v(window,"resize",{passive:!0}).pipe(m(Wo),q(Wo()))}function No(){return Y([Do(),Vo()]).pipe(m(([e,t])=>({offset:e,size:t})),X(1))}function mr(e,{viewport$:t,header$:r}){let n=t.pipe(J("size")),o=Y([n,r]).pipe(m(()=>ze(e)));return Y([r,t,o]).pipe(m(([{height:i},{offset:a,size:s},{x:c,y:u}])=>({offset:{x:a.x-c,y:a.y-u+i},size:s})))}function zo(e,{tx$:t}){let r=v(e,"message").pipe(m(({data:n})=>n));return t.pipe(Lt(()=>r,{leading:!0,trailing:!0}),x(n=>e.postMessage(n)),S(()=>r),oe())}var ss=z("#__config"),ht=JSON.parse(ss.textContent);ht.base=`${new URL(ht.base,Se())}`;function he(){return ht}function ee(e){return ht.features.includes(e)}function te(e,t){return typeof t!="undefined"?ht.translations[e].replace("#",t.toString()):ht.translations[e]}function we(e,t=document){return z(`[data-md-component=${e}]`,t)}function ne(e,t=document){return B(`[data-md-component=${e}]`,t)}function cs(e){let t=z(".md-typeset > :first-child",e);return v(t,"click",{once:!0}).pipe(m(()=>z(".md-typeset",e)),m(r=>({hash:__md_hash(r.innerHTML)})))}function qo(e){return!ee("announce.dismiss")||!e.childElementCount?C:P(()=>{let t=new w;return t.pipe(q({hash:__md_get("__announce")})).subscribe(({hash:r})=>{var n;r&&r===((n=__md_get("__announce"))!=null?n:r)&&(e.hidden=!0,__md_set("__announce",r))}),cs(e).pipe(x(r=>t.next(r)),L(()=>t.complete()),m(r=>H({ref:e},r)))})}function us(e,{target$:t}){return t.pipe(m(r=>({hidden:r!==e})))}function Qo(e,t){let r=new w;return r.subscribe(({hidden:n})=>{e.hidden=n}),us(e,t).pipe(x(n=>r.next(n)),L(()=>r.complete()),m(n=>H({ref:e},n)))}var ni=Ye(Kr());function Yo(e){return A("aside",{class:"md-annotation",tabIndex:0},A("div",{class:"md-annotation__inner md-tooltip"},A("div",{class:"md-tooltip__inner md-typeset"})),A("span",{class:"md-annotation__index"},A("span",{"data-md-annotation-id":e})))}function Ko(e){return A("button",{class:"md-clipboard md-icon",title:te("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}function Br(e,t){let r=t&2,n=t&1,o=Object.keys(e.terms).filter(a=>!e.terms[a]).reduce((a,s)=>[...a,A("del",null,s)," "],[]).slice(0,-1),i=new URL(e.location);return ee("search.highlight")&&i.searchParams.set("h",Object.entries(e.terms).filter(([,a])=>a).reduce((a,[s])=>`${a} ${s}`.trim(),"")),A("a",{href:`${i}`,class:"md-search-result__link",tabIndex:-1},A("article",{class:["md-search-result__article",...r?["md-search-result__article--document"]:[]].join(" "),"data-md-score":e.score.toFixed(2)},r>0&&A("div",{class:"md-search-result__icon md-icon"}),A("h1",{class:"md-search-result__title"},e.title),n>0&&e.text.length>0&&A("p",{class:"md-search-result__teaser"},ko(e.text,320)),e.tags&&e.tags.map(a=>A("span",{class:"md-tag"},a)),n>0&&o.length>0&&A("p",{class:"md-search-result__terms"},te("search.result.term.missing"),": ",...o)))}function Bo(e){let t=e[0].score,r=[...e],n=r.findIndex(u=>!u.location.includes("#")),[o]=r.splice(n,1),i=r.findIndex(u=>u.scoreBr(u,1)),...s.length?[A("details",{class:"md-search-result__more"},A("summary",{tabIndex:-1},s.length>0&&s.length===1?te("search.result.more.one"):te("search.result.more.other",s.length)),...s.map(u=>Br(u,1)))]:[]];return A("li",{class:"md-search-result__item"},c)}function Go(e){return A("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>A("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?pr(r):r)))}function Gr(e){let t=`tabbed-control tabbed-control--${e}`;return A("div",{class:t,hidden:!0},A("button",{class:"tabbed-button",tabIndex:-1}))}function Jo(e){return A("div",{class:"md-typeset__scrollwrap"},A("div",{class:"md-typeset__table"},e))}function fs(e){let t=he(),r=new URL(`../${e.version}/`,t.base);return A("li",{class:"md-version__item"},A("a",{href:`${r}`,class:"md-version__link"},e.title))}function Xo(e,t){return A("div",{class:"md-version"},A("button",{class:"md-version__current","aria-label":te("select.version.title")},t.title),A("ul",{class:"md-version__list"},e.map(fs)))}function ps(e,t){let r=P(()=>Y([vo(e),pt(t)])).pipe(m(([{x:n,y:o},i])=>{let{width:a}=Ae(e);return{x:n-i.x+a/2,y:o-i.y}}));return nr(e).pipe(S(n=>r.pipe(m(o=>({active:n,offset:o})),se(+!n||1/0))))}function Zo(e,t){return P(()=>{let r=new w;r.subscribe({next({offset:a}){e.style.setProperty("--md-tooltip-x",`${a.x}px`),e.style.setProperty("--md-tooltip-y",`${a.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}});let n=r.pipe(ce(1));cr(e).pipe(Z(n)).subscribe(a=>{e.toggleAttribute("data-md-visible",a)}),r.pipe(Vr(500,Te),m(()=>t.getBoundingClientRect()),m(({x:a})=>a)).subscribe({next(a){a?e.style.setProperty("--md-tooltip-0",`${-a}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}});let o=z(":scope > :last-child",e),i=v(o,"mousedown",{once:!0});return r.pipe(S(({active:a})=>a?i:C),x(a=>a.preventDefault())).subscribe(()=>e.blur()),ps(e,t).pipe(x(a=>r.next(a)),L(()=>r.complete()),m(a=>H({ref:e},a)))})}function ls(e){let t=[];for(let r of B(".c, .c1, .cm",e)){let n,o=r.firstChild;if(o instanceof Text)for(;n=/\((\d+)\)/.exec(o.textContent);){let i=o.splitText(n.index);o=i.splitText(n[0].length),t.push(i)}}return t}function ei(e,t){t.append(...Array.from(e.childNodes))}function ti(e,t,{print$:r}){let n=new Map;for(let o of ls(t)){let[,i]=o.textContent.match(/\((\d+)\)/);pe(`li:nth-child(${i})`,e)&&(n.set(+i,Yo(+i)),o.replaceWith(n.get(+i)))}return n.size===0?C:P(()=>{let o=new w;return r.pipe(Z(o.pipe(ce(1)))).subscribe(i=>{e.hidden=!i;for(let[a,s]of n){let c=z(".md-typeset",s),u=z(`li:nth-child(${a})`,e);i?ei(c,u):ei(u,c)}}),R(...[...n].map(([,i])=>Zo(i,t))).pipe(L(()=>o.complete()),oe())})}var ms=0;function oi(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return oi(t)}}function ri(e){return de(e).pipe(m(({width:t})=>({scrollable:mt(e).width>t})),J("scrollable"))}function ii(e,t){let{matches:r}=matchMedia("(hover)"),n=P(()=>{let o=new w;if(o.subscribe(({scrollable:a})=>{a&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}),ni.default.isSupported()){let a=e.closest("pre");a.id=`__code_${++ms}`,a.insertBefore(Ko(a.id),e)}let i=e.closest(".highlight");if(i instanceof HTMLElement){let a=oi(i);if(typeof a!="undefined"&&(i.classList.contains("annotate")||ee("content.code.annotate"))){let s=ti(a,e,t);return ri(e).pipe(x(c=>o.next(c)),L(()=>o.complete()),m(c=>H({ref:e},c)),et(de(i).pipe(Z(o.pipe(ce(1))),m(({width:c,height:u})=>c&&u),K(),S(c=>c?s:C))))}}return ri(e).pipe(x(a=>o.next(a)),L(()=>o.complete()),m(a=>H({ref:e},a)))});return cr(e).pipe(M(o=>o),se(1),S(()=>n))}var ai=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:transparent}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel rect,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel rect{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color)}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}defs #flowchart-circleEnd,defs #flowchart-circleStart,defs #flowchart-crossEnd,defs #flowchart-crossStart,defs #flowchart-pointEnd,defs #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}.actor,defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{stroke:var(--md-mermaid-node-fg-color)}text.actor>tspan{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-default-fg-color--lighter)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-edge-color)}.loopText>tspan,.messageText{font-family:var(--md-mermaid-font-family)!important}#arrowhead path,.loopText>tspan,.messageText{fill:var(--md-mermaid-edge-color);stroke:none}.loopLine{stroke:var(--md-mermaid-node-fg-color)}.labelBox,.loopLine{fill:var(--md-mermaid-node-bg-color)}.labelBox{stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-node-fg-color);font-family:var(--md-mermaid-font-family)}";var Jr,hs=0;function bs(){return typeof mermaid=="undefined"||mermaid instanceof Element?Fo("https://unpkg.com/mermaid@9.0.1/dist/mermaid.min.js"):$(void 0)}function si(e){return e.classList.remove("mermaid"),Jr||(Jr=bs().pipe(x(()=>mermaid.initialize({startOnLoad:!1,themeCSS:ai})),m(()=>{}),X(1))),Jr.subscribe(()=>{e.classList.add("mermaid");let t=`__mermaid_${hs++}`,r=A("div",{class:"mermaid"});mermaid.mermaidAPI.render(t,e.textContent,n=>{let o=r.attachShadow({mode:"closed"});o.innerHTML=n,e.replaceWith(r)})}),Jr.pipe(m(()=>({ref:e})))}function vs(e,{target$:t,print$:r}){let n=!0;return R(t.pipe(m(o=>o.closest("details:not([open])")),M(o=>e===o),m(()=>({action:"open",reveal:!0}))),r.pipe(M(o=>o||!n),x(()=>n=e.open),m(o=>({action:o?"open":"close"}))))}function ci(e,t){return P(()=>{let r=new w;return r.subscribe(({action:n,reveal:o})=>{n==="open"?e.setAttribute("open",""):e.removeAttribute("open"),o&&e.scrollIntoView()}),vs(e,t).pipe(x(n=>r.next(n)),L(()=>r.complete()),m(n=>H({ref:e},n)))})}var ui=A("table");function fi(e){return e.replaceWith(ui),ui.replaceWith(Jo(e)),$({ref:e})}function gs(e){let t=B(":scope > input",e),r=t.find(n=>n.checked)||t[0];return R(...t.map(n=>v(n,"change").pipe(m(()=>z(`label[for="${n.id}"]`))))).pipe(q(z(`label[for="${r.id}"]`)),m(n=>({active:n})))}function pi(e){let t=Gr("prev");e.append(t);let r=Gr("next");e.append(r);let n=z(".tabbed-labels",e);return P(()=>{let o=new w,i=o.pipe(ce(1));return Y([o,de(e)]).pipe($e(1,Te),Z(i)).subscribe({next([{active:a},s]){let c=ze(a),{width:u}=Ae(a);e.style.setProperty("--md-indicator-x",`${c.x}px`),e.style.setProperty("--md-indicator-width",`${u}px`);let f=or(n);(c.xf.x+s.width)&&n.scrollTo({left:Math.max(0,c.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),Y([pt(n),de(n)]).pipe(Z(i)).subscribe(([a,s])=>{let c=mt(n);t.hidden=a.x<16,r.hidden=a.x>c.width-s.width-16}),R(v(t,"click").pipe(m(()=>-1)),v(r,"click").pipe(m(()=>1))).pipe(Z(i)).subscribe(a=>{let{width:s}=Ae(n);n.scrollBy({left:s*a,behavior:"smooth"})}),ee("content.tabs.link")&&o.pipe(Le(1)).subscribe(({active:a})=>{let s=a.innerText.trim();for(let u of B("[data-tabs]"))for(let f of B(":scope > input",u))if(z(`label[for="${f.id}"]`).innerText.trim()===s){f.click();break}let c=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([s,...c])])}),gs(e).pipe(x(a=>o.next(a)),L(()=>o.complete()),m(a=>H({ref:e},a)))}).pipe(Ge(ue))}function li(e,{target$:t,print$:r}){return R(...B("pre:not(.mermaid) > code",e).map(n=>ii(n,{print$:r})),...B("pre.mermaid",e).map(n=>si(n)),...B("table:not([class])",e).map(n=>fi(n)),...B("details",e).map(n=>ci(n,{target$:t,print$:r})),...B("[data-tabs]",e).map(n=>pi(n)))}function ys(e,{alert$:t}){return t.pipe(S(r=>R($(!0),$(!1).pipe(Fe(2e3))).pipe(m(n=>({message:r,active:n})))))}function mi(e,t){let r=z(".md-typeset",e);return P(()=>{let n=new w;return n.subscribe(({message:o,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=o}),ys(e,t).pipe(x(o=>n.next(o)),L(()=>n.complete()),m(o=>H({ref:e},o)))})}function xs({viewport$:e}){if(!ee("header.autohide"))return $(!1);let t=e.pipe(m(({offset:{y:o}})=>o),Me(2,1),m(([o,i])=>[oMath.abs(i-o.y)>100),m(([,[o]])=>o),K()),n=dt("search");return Y([e,n]).pipe(m(([{offset:o},i])=>o.y>400&&!i),K(),S(o=>o?r:$(!1)),q(!1))}function di(e,t){return P(()=>Y([de(e),xs(t)])).pipe(m(([{height:r},n])=>({height:r,hidden:n})),K((r,n)=>r.height===n.height&&r.hidden===n.hidden),X(1))}function hi(e,{header$:t,main$:r}){return P(()=>{let n=new w,o=n.pipe(ce(1));return n.pipe(J("active"),Xe(t)).subscribe(([{active:i},{hidden:a}])=>{e.classList.toggle("md-header--shadow",i&&!a),e.hidden=a}),r.subscribe(n),t.pipe(Z(o),m(i=>H({ref:e},i)))})}function Ss(e,{viewport$:t,header$:r}){return mr(e,{viewport$:t,header$:r}).pipe(m(({offset:{y:n}})=>{let{height:o}=Ae(e);return{active:n>=o}}),J("active"))}function bi(e,t){return P(()=>{let r=new w;r.subscribe(({active:o})=>{e.classList.toggle("md-header__title--active",o)});let n=pe("article h1");return typeof n=="undefined"?C:Ss(n,t).pipe(x(o=>r.next(o)),L(()=>r.complete()),m(o=>H({ref:e},o)))})}function vi(e,{viewport$:t,header$:r}){let n=r.pipe(m(({height:i})=>i),K()),o=n.pipe(S(()=>de(e).pipe(m(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),J("bottom"))));return Y([n,o,t]).pipe(m(([i,{top:a,bottom:s},{offset:{y:c},size:{height:u}}])=>(u=Math.max(0,u-Math.max(0,a-c,i)-Math.max(0,u+c-s)),{offset:a-i,height:u,active:a-i<=c})),K((i,a)=>i.offset===a.offset&&i.height===a.height&&i.active===a.active))}function ws(e){let t=__md_get("__palette")||{index:e.findIndex(r=>matchMedia(r.getAttribute("data-md-color-media")).matches)};return $(...e).pipe(ie(r=>v(r,"change").pipe(m(()=>r))),q(e[Math.max(0,t.index)]),m(r=>({index:e.indexOf(r),color:{scheme:r.getAttribute("data-md-color-scheme"),primary:r.getAttribute("data-md-color-primary"),accent:r.getAttribute("data-md-color-accent")}})),X(1))}function gi(e){return P(()=>{let t=new w;t.subscribe(n=>{document.body.setAttribute("data-md-color-switching","");for(let[o,i]of Object.entries(n.color))document.body.setAttribute(`data-md-color-${o}`,i);for(let o=0;o{document.body.removeAttribute("data-md-color-switching")});let r=B("input",e);return ws(r).pipe(x(n=>t.next(n)),L(()=>t.complete()),m(n=>H({ref:e},n)))})}var Xr=Ye(Kr());function Es(e){e.setAttribute("data-md-copying","");let t=e.innerText;return e.removeAttribute("data-md-copying"),t}function yi({alert$:e}){Xr.default.isSupported()&&new F(t=>{new Xr.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||Es(z(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(x(t=>{t.trigger.focus()}),m(()=>te("clipboard.copied"))).subscribe(e)}function Os(e){if(e.length<2)return[""];let[t,r]=[...e].sort((o,i)=>o.length-i.length).map(o=>o.replace(/[^/]+$/,"")),n=0;if(t===r)n=t.length;else for(;t.charCodeAt(n)===r.charCodeAt(n);)n++;return e.map(o=>o.replace(t.slice(0,n),""))}function dr(e){let t=__md_get("__sitemap",sessionStorage,e);if(t)return $(t);{let r=he();return jo(new URL("sitemap.xml",e||r.base)).pipe(m(n=>Os(B("loc",n).map(o=>o.textContent))),ae(()=>C),je([]),x(n=>__md_set("__sitemap",n,sessionStorage,e)))}}function xi({document$:e,location$:t,viewport$:r}){let n=he();if(location.protocol==="file:")return;"scrollRestoration"in history&&(history.scrollRestoration="manual",v(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}));let o=pe("link[rel=icon]");typeof o!="undefined"&&(o.href=o.href);let i=dr().pipe(m(u=>u.map(f=>`${new URL(f,n.base)}`)),S(u=>v(document.body,"click").pipe(M(f=>!f.metaKey&&!f.ctrlKey),S(f=>{if(f.target instanceof Element){let p=f.target.closest("a");if(p&&!p.target){let l=new URL(p.href);if(l.search="",l.hash="",l.pathname!==location.pathname&&u.includes(l.toString()))return f.preventDefault(),$({url:new URL(p.href)})}}return xe}))),oe()),a=v(window,"popstate").pipe(M(u=>u.state!==null),m(u=>({url:new URL(location.href),offset:u.state})),oe());R(i,a).pipe(K((u,f)=>u.url.href===f.url.href),m(({url:u})=>u)).subscribe(t);let s=t.pipe(J("pathname"),S(u=>lr(u.href).pipe(ae(()=>(fr(u),xe)))),oe());i.pipe(ft(s)).subscribe(({url:u})=>{history.pushState({},"",`${u}`)});let c=new DOMParser;s.pipe(S(u=>u.text()),m(u=>c.parseFromString(u,"text/html"))).subscribe(e),e.pipe(Le(1)).subscribe(u=>{for(let f of["title","link[rel=canonical]","meta[name=author]","meta[name=description]","[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...ee("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let p=pe(f),l=pe(f,u);typeof p!="undefined"&&typeof l!="undefined"&&p.replaceWith(l)}}),e.pipe(Le(1),m(()=>we("container")),S(u=>B("script",u)),Ir(u=>{let f=A("script");if(u.src){for(let p of u.getAttributeNames())f.setAttribute(p,u.getAttribute(p));return u.replaceWith(f),new F(p=>{f.onload=()=>p.complete()})}else return f.textContent=u.textContent,u.replaceWith(f),C})).subscribe(),R(i,a).pipe(ft(e)).subscribe(({url:u,offset:f})=>{u.hash&&!f?Po(u.hash):window.scrollTo(0,(f==null?void 0:f.y)||0)}),r.pipe(Mt(i),Ze(250),J("offset")).subscribe(({offset:u})=>{history.replaceState(u,"")}),R(i,a).pipe(Me(2,1),M(([u,f])=>u.url.pathname===f.url.pathname),m(([,u])=>u)).subscribe(({offset:u})=>{window.scrollTo(0,(u==null?void 0:u.y)||0)})}var Ms=Ye(Zr());var wi=Ye(Zr());function en(e,t){let r=new RegExp(e.separator,"img"),n=(o,i,a)=>`${i}${a}`;return o=>{o=o.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator})(${o.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return a=>(t?(0,wi.default)(a):a).replace(i,n).replace(/<\/mark>(\s+)]*>/img,"$1")}}function Ei(e){return e.split(/"([^"]+)"/g).map((t,r)=>r&1?t.replace(/^\b|^(?![^\x00-\x7F]|$)|\s+/g," +"):t).join("").replace(/"|(?:^|\s+)[*+\-:^~]+(?=\s+|$)/g,"").trim()}function bt(e){return e.type===1}function Oi(e){return e.type===2}function vt(e){return e.type===3}function As({config:e,docs:t}){e.lang.length===1&&e.lang[0]==="en"&&(e.lang=[te("search.config.lang")]),e.separator==="[\\s\\-]+"&&(e.separator=te("search.config.separator"));let n={pipeline:te("search.config.pipeline").split(/\s*,\s*/).filter(Boolean),suggestions:ee("search.suggest")};return{config:e,docs:t,options:n}}function _i(e,t){let r=he(),n=new Worker(e),o=new w,i=zo(n,{tx$:o}).pipe(m(a=>{if(vt(a))for(let s of a.data.items)for(let c of s)c.location=`${new URL(c.location,r.base)}`;return a}),oe());return fe(t).pipe(m(a=>({type:0,data:As(a)}))).subscribe(o.next.bind(o)),{tx$:o,rx$:i}}function Ti({document$:e}){let t=he(),r=ke(new URL("../versions.json",t.base)).pipe(ae(()=>C)),n=r.pipe(m(o=>{let[,i]=t.base.match(/([^/]+)\/?$/);return o.find(({version:a,aliases:s})=>a===i||s.includes(i))||o[0]}));r.pipe(m(o=>new Map(o.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),S(o=>v(document.body,"click").pipe(M(i=>!i.metaKey&&!i.ctrlKey),ge(n),S(([i,a])=>{if(i.target instanceof Element){let s=i.target.closest("a");if(s&&!s.target&&o.has(s.href)){let c=s.href;return!i.target.closest(".md-version")&&o.get(c)===a?C:(i.preventDefault(),$(c))}}return C}),S(i=>{let{version:a}=o.get(i);return dr(new URL(i)).pipe(m(s=>{let u=Se().href.replace(t.base,"");return s.includes(u)?new URL(`../${a}/${u}`,t.base):new URL(i)}))})))).subscribe(o=>fr(o)),Y([r,n]).subscribe(([o,i])=>{z(".md-header__topic").appendChild(Xo(o,i))}),e.pipe(S(()=>n)).subscribe(o=>{var a;let i=__md_get("__outdated",sessionStorage);if(i===null){let s=((a=t.version)==null?void 0:a.default)||"latest";i=!o.aliases.includes(s),__md_set("__outdated",i,sessionStorage)}if(i)for(let s of ne("outdated"))s.hidden=!1})}function Cs(e,{rx$:t}){let r=(__search==null?void 0:__search.transform)||Ei,{searchParams:n}=Se();n.has("q")&&qe("search",!0);let o=t.pipe(M(bt),se(1),m(()=>n.get("q")||""));dt("search").pipe(M(s=>!s),se(1)).subscribe(()=>{let s=new URL(location.href);s.searchParams.delete("q"),history.replaceState({},"",`${s}`)}),o.subscribe(s=>{s&&(e.value=s,e.focus())});let i=nr(e),a=R(v(e,"keyup"),v(e,"focus").pipe(Fe(1)),o).pipe(m(()=>r(e.value)),q(""),K());return Y([a,i]).pipe(m(([s,c])=>({value:s,focus:c})),X(1))}function Mi(e,{tx$:t,rx$:r}){let n=new w,o=n.pipe(ce(1));return n.pipe(J("value"),m(({value:i})=>({type:2,data:i}))).subscribe(t.next.bind(t)),n.pipe(J("focus")).subscribe(({focus:i})=>{i?(qe("search",i),e.placeholder=""):e.placeholder=te("search.placeholder")}),v(e.form,"reset").pipe(Z(o)).subscribe(()=>e.focus()),Cs(e,{tx$:t,rx$:r}).pipe(x(i=>n.next(i)),L(()=>n.complete()),m(i=>H({ref:e},i)),oe())}function Li(e,{rx$:t},{query$:r}){let n=new w,o=Mo(e.parentElement).pipe(M(Boolean)),i=z(":scope > :first-child",e),a=z(":scope > :last-child",e),s=t.pipe(M(bt),se(1));return n.pipe(ge(r),Mt(s)).subscribe(([{items:u},{value:f}])=>{if(f)switch(u.length){case 0:i.textContent=te("search.result.none");break;case 1:i.textContent=te("search.result.one");break;default:i.textContent=te("search.result.other",pr(u.length))}else i.textContent=te("search.result.placeholder")}),n.pipe(x(()=>a.innerHTML=""),S(({items:u})=>R($(...u.slice(0,10)),$(...u.slice(10)).pipe(Me(4),Nr(o),S(([f])=>f))))).subscribe(u=>a.appendChild(Bo(u))),t.pipe(M(vt),m(({data:u})=>u)).pipe(x(u=>n.next(u)),L(()=>n.complete()),m(u=>H({ref:e},u)))}function Rs(e,{query$:t}){return t.pipe(m(({value:r})=>{let n=Se();return n.hash="",n.searchParams.delete("h"),n.searchParams.set("q",r),{url:n}}))}function Ai(e,t){let r=new w;return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),v(e,"click").subscribe(n=>n.preventDefault()),Rs(e,t).pipe(x(n=>r.next(n)),L(()=>r.complete()),m(n=>H({ref:e},n)))}function Ci(e,{rx$:t},{keyboard$:r}){let n=new w,o=we("search-query"),i=R(v(o,"keydown"),v(o,"focus")).pipe(Ie(ue),m(()=>o.value),K());return n.pipe(Xe(i),m(([{suggestions:s},c])=>{let u=c.split(/([\s-]+)/);if((s==null?void 0:s.length)&&u[u.length-1]){let f=s[s.length-1];f.startsWith(u[u.length-1])&&(u[u.length-1]=f)}else u.length=0;return u})).subscribe(s=>e.innerHTML=s.join("").replace(/\s/g," ")),r.pipe(M(({mode:s})=>s==="search")).subscribe(s=>{switch(s.type){case"ArrowRight":e.innerText.length&&o.selectionStart===o.value.length&&(o.value=e.innerText);break}}),t.pipe(M(vt),m(({data:s})=>s)).pipe(x(s=>n.next(s)),L(()=>n.complete()),m(()=>({ref:e})))}function Ri(e,{index$:t,keyboard$:r}){let n=he();try{let o=(__search==null?void 0:__search.worker)||n.search,i=_i(o,t),a=we("search-query",e),s=we("search-result",e),{tx$:c,rx$:u}=i;c.pipe(M(Oi),ft(u.pipe(M(bt))),se(1)).subscribe(c.next.bind(c)),r.pipe(M(({mode:l})=>l==="search")).subscribe(l=>{let d=Ne();switch(l.type){case"Enter":if(d===a){let h=new Map;for(let b of B(":first-child [href]",s)){let U=b.firstElementChild;h.set(b,parseFloat(U.getAttribute("data-md-score")))}if(h.size){let[[b]]=[...h].sort(([,U],[,G])=>G-U);b.click()}l.claim()}break;case"Escape":case"Tab":qe("search",!1),a.blur();break;case"ArrowUp":case"ArrowDown":if(typeof d=="undefined")a.focus();else{let h=[a,...B(":not(details) > [href], summary, details[open] [href]",s)],b=Math.max(0,(Math.max(0,h.indexOf(d))+h.length+(l.type==="ArrowUp"?-1:1))%h.length);h[b].focus()}l.claim();break;default:a!==Ne()&&a.focus()}}),r.pipe(M(({mode:l})=>l==="global")).subscribe(l=>{switch(l.type){case"f":case"s":case"/":a.focus(),a.select(),l.claim();break}});let f=Mi(a,i),p=Li(s,i,{query$:f});return R(f,p).pipe(et(...ne("search-share",e).map(l=>Ai(l,{query$:f})),...ne("search-suggest",e).map(l=>Ci(l,i,{keyboard$:r}))))}catch(o){return e.hidden=!0,xe}}function ki(e,{index$:t,location$:r}){return Y([t,r.pipe(q(Se()),M(n=>!!n.searchParams.get("h")))]).pipe(m(([n,o])=>en(n.config,!0)(o.searchParams.get("h"))),m(n=>{var a;let o=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let s=i.nextNode();s;s=i.nextNode())if((a=s.parentElement)!=null&&a.offsetHeight){let c=s.textContent,u=n(c);u.length>c.length&&o.set(s,u)}for(let[s,c]of o){let{childNodes:u}=A("span",null,c);s.replaceWith(...Array.from(u))}return{ref:e,nodes:o}}))}function ks(e,{viewport$:t,main$:r}){let n=e.parentElement,o=n.offsetTop-n.parentElement.offsetTop;return Y([r,t]).pipe(m(([{offset:i,height:a},{offset:{y:s}}])=>(a=a+Math.min(o,Math.max(0,s-i))-o,{height:a,locked:s>=i+o})),K((i,a)=>i.height===a.height&&i.locked===a.locked))}function tn(e,n){var o=n,{header$:t}=o,r=cn(o,["header$"]);let i=z(".md-sidebar__scrollwrap",e),{y:a}=ze(i);return P(()=>{let s=new w;return s.pipe($e(0,Te),ge(t)).subscribe({next([{height:c},{height:u}]){i.style.height=`${c-2*a}px`,e.style.top=`${u}px`},complete(){i.style.height="",e.style.top=""}}),ks(e,r).pipe(x(c=>s.next(c)),L(()=>s.complete()),m(c=>H({ref:e},c)))})}function Hi(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return _t(ke(`${r}/releases/latest`).pipe(ae(()=>C),m(n=>({version:n.tag_name})),je({})),ke(r).pipe(ae(()=>C),m(n=>({stars:n.stargazers_count,forks:n.forks_count})),je({}))).pipe(m(([n,o])=>H(H({},n),o)))}else{let r=`https://api.github.com/users/${e}`;return ke(r).pipe(m(n=>({repositories:n.public_repos})),je({}))}}function Pi(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return ke(r).pipe(ae(()=>C),m(({star_count:n,forks_count:o})=>({stars:n,forks:o})),je({}))}function Ii(e){let[t]=e.match(/(git(?:hub|lab))/i)||[];switch(t.toLowerCase()){case"github":let[,r,n]=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);return Hi(r,n);case"gitlab":let[,o,i]=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i);return Pi(o,i);default:return C}}var Hs;function Ps(e){return Hs||(Hs=P(()=>{let t=__md_get("__source",sessionStorage);return t?$(t):Ii(e.href).pipe(x(r=>__md_set("__source",r,sessionStorage)))}).pipe(ae(()=>C),M(t=>Object.keys(t).length>0),m(t=>({facts:t})),X(1)))}function $i(e){let t=z(":scope > :last-child",e);return P(()=>{let r=new w;return r.subscribe(({facts:n})=>{t.appendChild(Go(n)),t.classList.add("md-source__repository--active")}),Ps(e).pipe(x(n=>r.next(n)),L(()=>r.complete()),m(n=>H({ref:e},n)))})}function Is(e,{viewport$:t,header$:r}){return de(document.body).pipe(S(()=>mr(e,{header$:r,viewport$:t})),m(({offset:{y:n}})=>({hidden:n>=10})),J("hidden"))}function ji(e,t){return P(()=>{let r=new w;return r.subscribe({next({hidden:n}){e.hidden=n},complete(){e.hidden=!1}}),(ee("navigation.tabs.sticky")?$({hidden:!1}):Is(e,t)).pipe(x(n=>r.next(n)),L(()=>r.complete()),m(n=>H({ref:e},n)))})}function $s(e,{viewport$:t,header$:r}){let n=new Map,o=B("[href^=\\#]",e);for(let s of o){let c=decodeURIComponent(s.hash.substring(1)),u=pe(`[id="${c}"]`);typeof u!="undefined"&&n.set(s,u)}let i=r.pipe(J("height"),m(({height:s})=>{let c=we("main"),u=z(":scope > :first-child",c);return s+.8*(u.offsetTop-c.offsetTop)}),oe());return de(document.body).pipe(J("height"),S(s=>P(()=>{let c=[];return $([...n].reduce((u,[f,p])=>{for(;c.length&&n.get(c[c.length-1]).tagName>=p.tagName;)c.pop();let l=p.offsetTop;for(;!l&&p.parentElement;)p=p.parentElement,l=p.offsetTop;return u.set([...c=[...c,f]].reverse(),l)},new Map))}).pipe(m(c=>new Map([...c].sort(([,u],[,f])=>u-f))),Xe(i),S(([c,u])=>t.pipe(Fr(([f,p],{offset:{y:l},size:d})=>{let h=l+d.height>=Math.floor(s.height);for(;p.length;){let[,b]=p[0];if(b-u=l&&!h)p=[f.pop(),...p];else break}return[f,p]},[[],[...c]]),K((f,p)=>f[0]===p[0]&&f[1]===p[1])))))).pipe(m(([s,c])=>({prev:s.map(([u])=>u),next:c.map(([u])=>u)})),q({prev:[],next:[]}),Me(2,1),m(([s,c])=>s.prev.length{let o=new w,i=o.pipe(ce(1));return o.subscribe(({prev:a,next:s})=>{for(let[c]of s)c.classList.remove("md-nav__link--passed"),c.classList.remove("md-nav__link--active");for(let[c,[u]]of a.entries())u.classList.add("md-nav__link--passed"),u.classList.toggle("md-nav__link--active",c===a.length-1)}),ee("navigation.tracking")&&t.pipe(Z(i),J("offset"),Ze(250),Le(1),Z(n.pipe(Le(1))),Tt({delay:250}),ge(o)).subscribe(([,{prev:a}])=>{let s=Se(),c=a[a.length-1];if(c&&c.length){let[u]=c,{hash:f}=new URL(u.href);s.hash!==f&&(s.hash=f,history.replaceState({},"",`${s}`))}else s.hash="",history.replaceState({},"",`${s}`)}),$s(e,{viewport$:t,header$:r}).pipe(x(a=>o.next(a)),L(()=>o.complete()),m(a=>H({ref:e},a)))})}function js(e,{viewport$:t,main$:r,target$:n}){let o=t.pipe(m(({offset:{y:a}})=>a),Me(2,1),m(([a,s])=>a>s&&s>0),K()),i=r.pipe(m(({active:a})=>a));return Y([i,o]).pipe(m(([a,s])=>!(a&&s)),K(),Z(n.pipe(Le(1))),jr(!0),Tt({delay:250}),m(a=>({hidden:a})))}function Ui(e,{viewport$:t,header$:r,main$:n,target$:o}){let i=new w,a=i.pipe(ce(1));return i.subscribe({next({hidden:s}){e.hidden=s,s?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(Z(a),J("height")).subscribe(({height:s})=>{e.style.top=`${s+16}px`}),js(e,{viewport$:t,main$:n,target$:o}).pipe(x(s=>i.next(s)),L(()=>i.complete()),m(s=>H({ref:e},s)))}function Di({document$:e,tablet$:t}){e.pipe(S(()=>B(".md-toggle--indeterminate, [data-md-state=indeterminate]")),x(r=>{r.indeterminate=!0,r.checked=!1}),ie(r=>v(r,"change").pipe(Dr(()=>r.classList.contains("md-toggle--indeterminate")),m(()=>r))),ge(t)).subscribe(([r,n])=>{r.classList.remove("md-toggle--indeterminate"),n&&(r.checked=!1)})}function Fs(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function Wi({document$:e}){e.pipe(S(()=>B("[data-md-scrollfix]")),x(t=>t.removeAttribute("data-md-scrollfix")),M(Fs),ie(t=>v(t,"touchstart").pipe(m(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function Vi({viewport$:e,tablet$:t}){Y([dt("search"),t]).pipe(m(([r,n])=>r&&!n),S(r=>$(r).pipe(Fe(r?400:100))),ge(e)).subscribe(([r,{offset:{y:n}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${n}px`;else{let o=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",o&&window.scrollTo(0,o)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let n=e[r];typeof n!="object"?n=document.createTextNode(n):n.parentNode&&n.parentNode.removeChild(n),r?t.insertBefore(this.previousSibling,n):t.replaceChild(n,this)}}}));document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var tt=bo(),br=Co(),gt=Io(),rn=Ao(),Ee=No(),vr=qr("(min-width: 960px)"),zi=qr("(min-width: 1220px)"),qi=$o(),Qi=he(),Yi=document.forms.namedItem("search")?(__search==null?void 0:__search.index)||ke(new URL("search/search_index.json",Qi.base)):xe,nn=new w;yi({alert$:nn});ee("navigation.instant")&&xi({document$:tt,location$:br,viewport$:Ee});var Ni;((Ni=Qi.version)==null?void 0:Ni.provider)==="mike"&&Ti({document$:tt});R(br,gt).pipe(Fe(125)).subscribe(()=>{qe("drawer",!1),qe("search",!1)});rn.pipe(M(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=pe("[href][rel=prev]");typeof t!="undefined"&&t.click();break;case"n":case".":let r=pe("[href][rel=next]");typeof r!="undefined"&&r.click();break}});Di({document$:tt,tablet$:vr});Wi({document$:tt});Vi({viewport$:Ee,tablet$:vr});var Qe=di(we("header"),{viewport$:Ee}),hr=tt.pipe(m(()=>we("main")),S(e=>vi(e,{viewport$:Ee,header$:Qe})),X(1)),Us=R(...ne("consent").map(e=>Qo(e,{target$:gt})),...ne("dialog").map(e=>mi(e,{alert$:nn})),...ne("header").map(e=>hi(e,{viewport$:Ee,header$:Qe,main$:hr})),...ne("palette").map(e=>gi(e)),...ne("search").map(e=>Ri(e,{index$:Yi,keyboard$:rn})),...ne("source").map(e=>$i(e))),Ds=P(()=>R(...ne("announce").map(e=>qo(e)),...ne("content").map(e=>li(e,{target$:gt,print$:qi})),...ne("content").map(e=>ee("search.highlight")?ki(e,{index$:Yi,location$:br}):C),...ne("header-title").map(e=>bi(e,{viewport$:Ee,header$:Qe})),...ne("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?Qr(zi,()=>tn(e,{viewport$:Ee,header$:Qe,main$:hr})):Qr(vr,()=>tn(e,{viewport$:Ee,header$:Qe,main$:hr}))),...ne("tabs").map(e=>ji(e,{viewport$:Ee,header$:Qe})),...ne("toc").map(e=>Fi(e,{viewport$:Ee,header$:Qe,target$:gt})),...ne("top").map(e=>Ui(e,{viewport$:Ee,header$:Qe,main$:hr,target$:gt})))),Ki=tt.pipe(S(()=>Ds),et(Us),X(1));Ki.subscribe();window.document$=tt;window.location$=br;window.target$=gt;window.keyboard$=rn;window.viewport$=Ee;window.tablet$=vr;window.screen$=zi;window.print$=qi;window.alert$=nn;window.component$=Ki;})(); -//# sourceMappingURL=bundle.9c69f0bc.min.js.map - diff --git a/assets/javascripts/bundle.9c69f0bc.min.js.map b/assets/javascripts/bundle.9c69f0bc.min.js.map deleted file mode 100644 index 27a0842..0000000 --- a/assets/javascripts/bundle.9c69f0bc.min.js.map +++ /dev/null @@ -1,8 +0,0 @@ -{ - "version": 3, - "sources": ["node_modules/focus-visible/dist/focus-visible.js", "node_modules/url-polyfill/url-polyfill.js", "node_modules/rxjs/node_modules/tslib/tslib.js", "node_modules/clipboard/dist/clipboard.js", "node_modules/escape-html/index.js", "node_modules/array-flat-polyfill/index.mjs", "src/assets/javascripts/bundle.ts", "node_modules/unfetch/polyfill/index.js", "node_modules/rxjs/node_modules/tslib/modules/index.js", "node_modules/rxjs/src/internal/util/isFunction.ts", "node_modules/rxjs/src/internal/util/createErrorClass.ts", "node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "node_modules/rxjs/src/internal/util/arrRemove.ts", "node_modules/rxjs/src/internal/Subscription.ts", "node_modules/rxjs/src/internal/config.ts", "node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "node_modules/rxjs/src/internal/util/noop.ts", "node_modules/rxjs/src/internal/NotificationFactories.ts", "node_modules/rxjs/src/internal/util/errorContext.ts", "node_modules/rxjs/src/internal/Subscriber.ts", "node_modules/rxjs/src/internal/symbol/observable.ts", "node_modules/rxjs/src/internal/util/identity.ts", "node_modules/rxjs/src/internal/util/pipe.ts", "node_modules/rxjs/src/internal/Observable.ts", "node_modules/rxjs/src/internal/util/lift.ts", "node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts", "node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "node_modules/rxjs/src/internal/Subject.ts", "node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "node_modules/rxjs/src/internal/ReplaySubject.ts", "node_modules/rxjs/src/internal/scheduler/Action.ts", "node_modules/rxjs/src/internal/scheduler/intervalProvider.ts", "node_modules/rxjs/src/internal/scheduler/AsyncAction.ts", "node_modules/rxjs/src/internal/Scheduler.ts", "node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts", "node_modules/rxjs/src/internal/scheduler/async.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts", "node_modules/rxjs/src/internal/scheduler/animationFrame.ts", "node_modules/rxjs/src/internal/observable/empty.ts", "node_modules/rxjs/src/internal/util/isScheduler.ts", "node_modules/rxjs/src/internal/util/args.ts", "node_modules/rxjs/src/internal/util/isArrayLike.ts", "node_modules/rxjs/src/internal/util/isPromise.ts", "node_modules/rxjs/src/internal/util/isInteropObservable.ts", "node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "node_modules/rxjs/src/internal/symbol/iterator.ts", "node_modules/rxjs/src/internal/util/isIterable.ts", "node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "node_modules/rxjs/src/internal/observable/innerFrom.ts", "node_modules/rxjs/src/internal/util/executeSchedule.ts", "node_modules/rxjs/src/internal/operators/observeOn.ts", "node_modules/rxjs/src/internal/operators/subscribeOn.ts", "node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "node_modules/rxjs/src/internal/scheduled/scheduled.ts", "node_modules/rxjs/src/internal/observable/from.ts", "node_modules/rxjs/src/internal/observable/of.ts", "node_modules/rxjs/src/internal/observable/throwError.ts", "node_modules/rxjs/src/internal/util/isDate.ts", "node_modules/rxjs/src/internal/operators/map.ts", "node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts", "node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts", "node_modules/rxjs/src/internal/util/createObject.ts", "node_modules/rxjs/src/internal/observable/combineLatest.ts", "node_modules/rxjs/src/internal/operators/mergeInternals.ts", "node_modules/rxjs/src/internal/operators/mergeMap.ts", "node_modules/rxjs/src/internal/operators/mergeAll.ts", "node_modules/rxjs/src/internal/operators/concatAll.ts", "node_modules/rxjs/src/internal/observable/concat.ts", "node_modules/rxjs/src/internal/observable/defer.ts", "node_modules/rxjs/src/internal/observable/fromEvent.ts", "node_modules/rxjs/src/internal/observable/fromEventPattern.ts", "node_modules/rxjs/src/internal/observable/timer.ts", "node_modules/rxjs/src/internal/observable/merge.ts", "node_modules/rxjs/src/internal/observable/never.ts", "node_modules/rxjs/src/internal/util/argsOrArgArray.ts", "node_modules/rxjs/src/internal/operators/filter.ts", "node_modules/rxjs/src/internal/observable/zip.ts", "node_modules/rxjs/src/internal/operators/audit.ts", "node_modules/rxjs/src/internal/operators/auditTime.ts", "node_modules/rxjs/src/internal/operators/bufferCount.ts", "node_modules/rxjs/src/internal/operators/catchError.ts", "node_modules/rxjs/src/internal/operators/scanInternals.ts", "node_modules/rxjs/src/internal/operators/combineLatest.ts", "node_modules/rxjs/src/internal/operators/combineLatestWith.ts", "node_modules/rxjs/src/internal/operators/concatMap.ts", "node_modules/rxjs/src/internal/operators/debounceTime.ts", "node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts", "node_modules/rxjs/src/internal/operators/take.ts", "node_modules/rxjs/src/internal/operators/ignoreElements.ts", "node_modules/rxjs/src/internal/operators/mapTo.ts", "node_modules/rxjs/src/internal/operators/delayWhen.ts", "node_modules/rxjs/src/internal/operators/delay.ts", "node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts", "node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts", "node_modules/rxjs/src/internal/operators/endWith.ts", "node_modules/rxjs/src/internal/operators/finalize.ts", "node_modules/rxjs/src/internal/operators/takeLast.ts", "node_modules/rxjs/src/internal/operators/merge.ts", "node_modules/rxjs/src/internal/operators/mergeWith.ts", "node_modules/rxjs/src/internal/operators/repeat.ts", "node_modules/rxjs/src/internal/operators/sample.ts", "node_modules/rxjs/src/internal/operators/scan.ts", "node_modules/rxjs/src/internal/operators/share.ts", "node_modules/rxjs/src/internal/operators/shareReplay.ts", "node_modules/rxjs/src/internal/operators/skip.ts", "node_modules/rxjs/src/internal/operators/skipUntil.ts", "node_modules/rxjs/src/internal/operators/startWith.ts", "node_modules/rxjs/src/internal/operators/switchMap.ts", "node_modules/rxjs/src/internal/operators/takeUntil.ts", "node_modules/rxjs/src/internal/operators/takeWhile.ts", "node_modules/rxjs/src/internal/operators/tap.ts", "node_modules/rxjs/src/internal/operators/throttle.ts", "node_modules/rxjs/src/internal/operators/throttleTime.ts", "node_modules/rxjs/src/internal/operators/withLatestFrom.ts", "node_modules/rxjs/src/internal/operators/zip.ts", "node_modules/rxjs/src/internal/operators/zipWith.ts", "src/assets/javascripts/browser/document/index.ts", "src/assets/javascripts/browser/element/_/index.ts", "src/assets/javascripts/browser/element/focus/index.ts", "src/assets/javascripts/browser/element/offset/_/index.ts", "src/assets/javascripts/browser/element/offset/content/index.ts", "node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js", "src/assets/javascripts/browser/element/size/_/index.ts", "src/assets/javascripts/browser/element/size/content/index.ts", "src/assets/javascripts/browser/element/visibility/index.ts", "src/assets/javascripts/browser/toggle/index.ts", "src/assets/javascripts/browser/keyboard/index.ts", "src/assets/javascripts/browser/location/_/index.ts", "src/assets/javascripts/utilities/h/index.ts", "src/assets/javascripts/utilities/string/index.ts", "src/assets/javascripts/browser/location/hash/index.ts", "src/assets/javascripts/browser/media/index.ts", "src/assets/javascripts/browser/request/index.ts", "src/assets/javascripts/browser/script/index.ts", "src/assets/javascripts/browser/viewport/offset/index.ts", "src/assets/javascripts/browser/viewport/size/index.ts", "src/assets/javascripts/browser/viewport/_/index.ts", "src/assets/javascripts/browser/viewport/at/index.ts", "src/assets/javascripts/browser/worker/index.ts", "src/assets/javascripts/_/index.ts", "src/assets/javascripts/components/_/index.ts", "src/assets/javascripts/components/announce/index.ts", "src/assets/javascripts/components/consent/index.ts", "src/assets/javascripts/components/content/code/_/index.ts", "src/assets/javascripts/templates/annotation/index.tsx", "src/assets/javascripts/templates/clipboard/index.tsx", "src/assets/javascripts/templates/search/index.tsx", "src/assets/javascripts/templates/source/index.tsx", "src/assets/javascripts/templates/tabbed/index.tsx", "src/assets/javascripts/templates/table/index.tsx", "src/assets/javascripts/templates/version/index.tsx", "src/assets/javascripts/components/content/annotation/_/index.ts", "src/assets/javascripts/components/content/annotation/list/index.ts", "src/assets/javascripts/components/content/code/mermaid/index.ts", "src/assets/javascripts/components/content/details/index.ts", "src/assets/javascripts/components/content/table/index.ts", "src/assets/javascripts/components/content/tabs/index.ts", "src/assets/javascripts/components/content/_/index.ts", "src/assets/javascripts/components/dialog/index.ts", "src/assets/javascripts/components/header/_/index.ts", "src/assets/javascripts/components/header/title/index.ts", "src/assets/javascripts/components/main/index.ts", "src/assets/javascripts/components/palette/index.ts", "src/assets/javascripts/integrations/clipboard/index.ts", "src/assets/javascripts/integrations/sitemap/index.ts", "src/assets/javascripts/integrations/instant/index.ts", "src/assets/javascripts/integrations/search/document/index.ts", "src/assets/javascripts/integrations/search/highlighter/index.ts", "src/assets/javascripts/integrations/search/query/transform/index.ts", "src/assets/javascripts/integrations/search/worker/message/index.ts", "src/assets/javascripts/integrations/search/worker/_/index.ts", "src/assets/javascripts/integrations/version/index.ts", "src/assets/javascripts/components/search/query/index.ts", "src/assets/javascripts/components/search/result/index.ts", "src/assets/javascripts/components/search/share/index.ts", "src/assets/javascripts/components/search/suggest/index.ts", "src/assets/javascripts/components/search/_/index.ts", "src/assets/javascripts/components/search/highlight/index.ts", "src/assets/javascripts/components/sidebar/index.ts", "src/assets/javascripts/components/source/facts/github/index.ts", "src/assets/javascripts/components/source/facts/gitlab/index.ts", "src/assets/javascripts/components/source/facts/_/index.ts", "src/assets/javascripts/components/source/_/index.ts", "src/assets/javascripts/components/tabs/index.ts", "src/assets/javascripts/components/toc/index.ts", "src/assets/javascripts/components/top/index.ts", "src/assets/javascripts/patches/indeterminate/index.ts", "src/assets/javascripts/patches/scrollfix/index.ts", "src/assets/javascripts/patches/scrolllock/index.ts", "src/assets/javascripts/polyfills/index.ts"], - "sourceRoot": "../../../..", - "sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-visible\n */\n function applyFocusVisiblePolyfill(scope) {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesAllowlist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {KeyboardEvent} e\n */\n function onKeyDown(e) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (isValidFocusTarget(scope.activeElement)) {\n addFocusVisibleClass(scope.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on whenever the\n // window blurs, even if you're tabbing out of the page. \u00AF\\_(\u30C4)_/\u00AF\n if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n // For some kinds of state, we are interested in changes at the global scope\n // only. For example, global pointer input, global key presses and global\n // visibility change should affect the state at every scope:\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n addInitialPointerMoveListeners();\n\n // For focus and blur, we specifically care about state changes in the local\n // scope. This is because focus / blur events that originate from within a\n // shadow root are not re-dispatched from the host element if it was already\n // the active element in its own scope:\n scope.addEventListener('focus', onFocus, true);\n scope.addEventListener('blur', onBlur, true);\n\n // We detect that a node is a ShadowRoot by ensuring that it is a\n // DocumentFragment and also has a host property. This check covers native\n // implementation and polyfill implementation transparently. If we only cared\n // about the native implementation, we could just check if the scope was\n // an instance of a ShadowRoot.\n if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n // have a root element to add a class to. So, we add this attribute to the\n // host element instead:\n scope.host.setAttribute('data-js-focus-visible', '');\n } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n document.documentElement.classList.add('js-focus-visible');\n document.documentElement.setAttribute('data-js-focus-visible', '');\n }\n }\n\n // It is important to wrap all references to global window and document in\n // these checks to support server-side rendering use cases\n // @see https://github.com/WICG/focus-visible/issues/199\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Make the polyfill helper globally available. This can be used as a signal\n // to interested libraries that wish to coordinate with the polyfill for e.g.,\n // applying the polyfill to a shadow root:\n window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n // Notify interested libraries of the polyfill's presence, in case the\n // polyfill was loaded lazily:\n var event;\n\n try {\n event = new CustomEvent('focus-visible-polyfill-ready');\n } catch (error) {\n // IE11 does not support using CustomEvent as a constructor directly:\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n }\n\n window.dispatchEvent(event);\n }\n\n if (typeof document !== 'undefined') {\n // Apply the polyfill to the global document, so that no JavaScript\n // coordination is required to use the polyfill in the top-level document:\n applyFocusVisiblePolyfill(document);\n }\n\n})));\n", "(function(global) {\r\n /**\r\n * Polyfill URLSearchParams\r\n *\r\n * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n */\r\n\r\n var checkIfIteratorIsSupported = function() {\r\n try {\r\n return !!Symbol.iterator;\r\n } catch (error) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n var createIterator = function(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift();\r\n return { done: value === void 0, value: value };\r\n }\r\n };\r\n\r\n if (iteratorSupported) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n };\r\n\r\n /**\r\n * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n */\r\n var serializeParam = function(value) {\r\n return encodeURIComponent(value).replace(/%20/g, '+');\r\n };\r\n\r\n var deserializeParam = function(value) {\r\n return decodeURIComponent(String(value).replace(/\\+/g, ' '));\r\n };\r\n\r\n var polyfillURLSearchParams = function() {\r\n\r\n var URLSearchParams = function(searchString) {\r\n Object.defineProperty(this, '_entries', { writable: true, value: {} });\r\n var typeofSearchString = typeof searchString;\r\n\r\n if (typeofSearchString === 'undefined') {\r\n // do nothing\r\n } else if (typeofSearchString === 'string') {\r\n if (searchString !== '') {\r\n this._fromString(searchString);\r\n }\r\n } else if (searchString instanceof URLSearchParams) {\r\n var _this = this;\r\n searchString.forEach(function(value, name) {\r\n _this.append(name, value);\r\n });\r\n } else if ((searchString !== null) && (typeofSearchString === 'object')) {\r\n if (Object.prototype.toString.call(searchString) === '[object Array]') {\r\n for (var i = 0; i < searchString.length; i++) {\r\n var entry = searchString[i];\r\n if ((Object.prototype.toString.call(entry) === '[object Array]') || (entry.length !== 2)) {\r\n this.append(entry[0], entry[1]);\r\n } else {\r\n throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\\'s input');\r\n }\r\n }\r\n } else {\r\n for (var key in searchString) {\r\n if (searchString.hasOwnProperty(key)) {\r\n this.append(key, searchString[key]);\r\n }\r\n }\r\n }\r\n } else {\r\n throw new TypeError('Unsupported input\\'s type for URLSearchParams');\r\n }\r\n };\r\n\r\n var proto = URLSearchParams.prototype;\r\n\r\n proto.append = function(name, value) {\r\n if (name in this._entries) {\r\n this._entries[name].push(String(value));\r\n } else {\r\n this._entries[name] = [String(value)];\r\n }\r\n };\r\n\r\n proto.delete = function(name) {\r\n delete this._entries[name];\r\n };\r\n\r\n proto.get = function(name) {\r\n return (name in this._entries) ? this._entries[name][0] : null;\r\n };\r\n\r\n proto.getAll = function(name) {\r\n return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n };\r\n\r\n proto.has = function(name) {\r\n return (name in this._entries);\r\n };\r\n\r\n proto.set = function(name, value) {\r\n this._entries[name] = [String(value)];\r\n };\r\n\r\n proto.forEach = function(callback, thisArg) {\r\n var entries;\r\n for (var name in this._entries) {\r\n if (this._entries.hasOwnProperty(name)) {\r\n entries = this._entries[name];\r\n for (var i = 0; i < entries.length; i++) {\r\n callback.call(thisArg, entries[i], name, this);\r\n }\r\n }\r\n }\r\n };\r\n\r\n proto.keys = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push(name);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.values = function() {\r\n var items = [];\r\n this.forEach(function(value) {\r\n items.push(value);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.entries = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n if (iteratorSupported) {\r\n proto[Symbol.iterator] = proto.entries;\r\n }\r\n\r\n proto.toString = function() {\r\n var searchArray = [];\r\n this.forEach(function(value, name) {\r\n searchArray.push(serializeParam(name) + '=' + serializeParam(value));\r\n });\r\n return searchArray.join('&');\r\n };\r\n\r\n\r\n global.URLSearchParams = URLSearchParams;\r\n };\r\n\r\n var checkIfURLSearchParamsSupported = function() {\r\n try {\r\n var URLSearchParams = global.URLSearchParams;\r\n\r\n return (\r\n (new URLSearchParams('?a=1').toString() === 'a=1') &&\r\n (typeof URLSearchParams.prototype.set === 'function') &&\r\n (typeof URLSearchParams.prototype.entries === 'function')\r\n );\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n if (!checkIfURLSearchParamsSupported()) {\r\n polyfillURLSearchParams();\r\n }\r\n\r\n var proto = global.URLSearchParams.prototype;\r\n\r\n if (typeof proto.sort !== 'function') {\r\n proto.sort = function() {\r\n var _this = this;\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n if (!_this._entries) {\r\n _this.delete(name);\r\n }\r\n });\r\n items.sort(function(a, b) {\r\n if (a[0] < b[0]) {\r\n return -1;\r\n } else if (a[0] > b[0]) {\r\n return +1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n if (_this._entries) { // force reset because IE keeps keys index\r\n _this._entries = {};\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n this.append(items[i][0], items[i][1]);\r\n }\r\n };\r\n }\r\n\r\n if (typeof proto._fromString !== 'function') {\r\n Object.defineProperty(proto, '_fromString', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function(searchString) {\r\n if (this._entries) {\r\n this._entries = {};\r\n } else {\r\n var keys = [];\r\n this.forEach(function(value, name) {\r\n keys.push(name);\r\n });\r\n for (var i = 0; i < keys.length; i++) {\r\n this.delete(keys[i]);\r\n }\r\n }\r\n\r\n searchString = searchString.replace(/^\\?/, '');\r\n var attributes = searchString.split('&');\r\n var attribute;\r\n for (var i = 0; i < attributes.length; i++) {\r\n attribute = attributes[i].split('=');\r\n this.append(\r\n deserializeParam(attribute[0]),\r\n (attribute.length > 1) ? deserializeParam(attribute[1]) : ''\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n // HTMLAnchorElement\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n /**\r\n * Polyfill URL\r\n *\r\n * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n */\r\n\r\n var checkIfURLIsSupported = function() {\r\n try {\r\n var u = new global.URL('b', 'http://a/');\r\n u.pathname = 'c d';\r\n return (u.href === 'http://a/c%20d') && u.searchParams;\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var polyfillURL = function() {\r\n var _URL = global.URL;\r\n\r\n var URL = function(url, base) {\r\n if (typeof url !== 'string') url = String(url);\r\n if (base && typeof base !== 'string') base = String(base);\r\n\r\n // Only create another document if the base is different from current location.\r\n var doc = document, baseElement;\r\n if (base && (global.location === void 0 || base !== global.location.href)) {\r\n base = base.toLowerCase();\r\n doc = document.implementation.createHTMLDocument('');\r\n baseElement = doc.createElement('base');\r\n baseElement.href = base;\r\n doc.head.appendChild(baseElement);\r\n try {\r\n if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);\r\n } catch (err) {\r\n throw new Error('URL unable to set base ' + base + ' due to ' + err);\r\n }\r\n }\r\n\r\n var anchorElement = doc.createElement('a');\r\n anchorElement.href = url;\r\n if (baseElement) {\r\n doc.body.appendChild(anchorElement);\r\n anchorElement.href = anchorElement.href; // force href to refresh\r\n }\r\n\r\n var inputElement = doc.createElement('input');\r\n inputElement.type = 'url';\r\n inputElement.value = url;\r\n\r\n if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href) || (!inputElement.checkValidity() && !base)) {\r\n throw new TypeError('Invalid URL');\r\n }\r\n\r\n Object.defineProperty(this, '_anchorElement', {\r\n value: anchorElement\r\n });\r\n\r\n\r\n // create a linked searchParams which reflect its changes on URL\r\n var searchParams = new global.URLSearchParams(this.search);\r\n var enableSearchUpdate = true;\r\n var enableSearchParamsUpdate = true;\r\n var _this = this;\r\n ['append', 'delete', 'set'].forEach(function(methodName) {\r\n var method = searchParams[methodName];\r\n searchParams[methodName] = function() {\r\n method.apply(searchParams, arguments);\r\n if (enableSearchUpdate) {\r\n enableSearchParamsUpdate = false;\r\n _this.search = searchParams.toString();\r\n enableSearchParamsUpdate = true;\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperty(this, 'searchParams', {\r\n value: searchParams,\r\n enumerable: true\r\n });\r\n\r\n var search = void 0;\r\n Object.defineProperty(this, '_updateSearchParams', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function() {\r\n if (this.search !== search) {\r\n search = this.search;\r\n if (enableSearchParamsUpdate) {\r\n enableSearchUpdate = false;\r\n this.searchParams._fromString(this.search);\r\n enableSearchUpdate = true;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n var proto = URL.prototype;\r\n\r\n var linkURLWithAnchorAttribute = function(attributeName) {\r\n Object.defineProperty(proto, attributeName, {\r\n get: function() {\r\n return this._anchorElement[attributeName];\r\n },\r\n set: function(value) {\r\n this._anchorElement[attributeName] = value;\r\n },\r\n enumerable: true\r\n });\r\n };\r\n\r\n ['hash', 'host', 'hostname', 'port', 'protocol']\r\n .forEach(function(attributeName) {\r\n linkURLWithAnchorAttribute(attributeName);\r\n });\r\n\r\n Object.defineProperty(proto, 'search', {\r\n get: function() {\r\n return this._anchorElement['search'];\r\n },\r\n set: function(value) {\r\n this._anchorElement['search'] = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n });\r\n\r\n Object.defineProperties(proto, {\r\n\r\n 'toString': {\r\n get: function() {\r\n var _this = this;\r\n return function() {\r\n return _this.href;\r\n };\r\n }\r\n },\r\n\r\n 'href': {\r\n get: function() {\r\n return this._anchorElement.href.replace(/\\?$/, '');\r\n },\r\n set: function(value) {\r\n this._anchorElement.href = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'pathname': {\r\n get: function() {\r\n return this._anchorElement.pathname.replace(/(^\\/?)/, '/');\r\n },\r\n set: function(value) {\r\n this._anchorElement.pathname = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'origin': {\r\n get: function() {\r\n // get expected port from protocol\r\n var expectedPort = { 'http:': 80, 'https:': 443, 'ftp:': 21 }[this._anchorElement.protocol];\r\n // add port to origin if, expected port is different than actual port\r\n // and it is not empty f.e http://foo:8080\r\n // 8080 != 80 && 8080 != ''\r\n var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n this._anchorElement.port !== '';\r\n\r\n return this._anchorElement.protocol +\r\n '//' +\r\n this._anchorElement.hostname +\r\n (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'password': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'username': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n });\r\n\r\n URL.createObjectURL = function(blob) {\r\n return _URL.createObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n URL.revokeObjectURL = function(url) {\r\n return _URL.revokeObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n global.URL = URL;\r\n\r\n };\r\n\r\n if (!checkIfURLIsSupported()) {\r\n polyfillURL();\r\n }\r\n\r\n if ((global.location !== void 0) && !('origin' in global.location)) {\r\n var getOrigin = function() {\r\n return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n };\r\n\r\n try {\r\n Object.defineProperty(global.location, 'origin', {\r\n get: getOrigin,\r\n enumerable: true\r\n });\r\n } catch (e) {\r\n setInterval(function() {\r\n global.location.origin = getOrigin();\r\n }, 100);\r\n }\r\n }\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global global, define, System, Reflect, Promise */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __createBinding;\r\n(function (factory) {\r\n var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n if (typeof define === \"function\" && define.amd) {\r\n define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n }\r\n else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n factory(createExporter(root, createExporter(module.exports)));\r\n }\r\n else {\r\n factory(createExporter(root));\r\n }\r\n function createExporter(exports, previous) {\r\n if (exports !== root) {\r\n if (typeof Object.create === \"function\") {\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n }\r\n else {\r\n exports.__esModule = true;\r\n }\r\n }\r\n return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n }\r\n})\r\n(function (exporter) {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n __extends = function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n\r\n __rest = function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n };\r\n\r\n __decorate = function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n };\r\n\r\n __param = function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n };\r\n\r\n __metadata = function (metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n };\r\n\r\n __awaiter = function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n };\r\n\r\n __generator = function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n };\r\n\r\n __exportStar = function(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n };\r\n\r\n __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n }) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n });\r\n\r\n __values = function (o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n };\r\n\r\n __read = function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spread = function () {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spreadArrays = function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n };\r\n\r\n __spreadArray = function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n };\r\n\r\n __await = function (v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n };\r\n\r\n __asyncGenerator = function (thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n };\r\n\r\n __asyncDelegator = function (o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n };\r\n\r\n __asyncValues = function (o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n };\r\n\r\n __makeTemplateObject = function (cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n };\r\n\r\n var __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n }) : function(o, v) {\r\n o[\"default\"] = v;\r\n };\r\n\r\n __importStar = function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n };\r\n\r\n __importDefault = function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n };\r\n\r\n __classPrivateFieldGet = function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n };\r\n\r\n __classPrivateFieldSet = function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n };\r\n\r\n exporter(\"__extends\", __extends);\r\n exporter(\"__assign\", __assign);\r\n exporter(\"__rest\", __rest);\r\n exporter(\"__decorate\", __decorate);\r\n exporter(\"__param\", __param);\r\n exporter(\"__metadata\", __metadata);\r\n exporter(\"__awaiter\", __awaiter);\r\n exporter(\"__generator\", __generator);\r\n exporter(\"__exportStar\", __exportStar);\r\n exporter(\"__createBinding\", __createBinding);\r\n exporter(\"__values\", __values);\r\n exporter(\"__read\", __read);\r\n exporter(\"__spread\", __spread);\r\n exporter(\"__spreadArrays\", __spreadArrays);\r\n exporter(\"__spreadArray\", __spreadArray);\r\n exporter(\"__await\", __await);\r\n exporter(\"__asyncGenerator\", __asyncGenerator);\r\n exporter(\"__asyncDelegator\", __asyncDelegator);\r\n exporter(\"__asyncValues\", __asyncValues);\r\n exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n exporter(\"__importStar\", __importStar);\r\n exporter(\"__importDefault\", __importDefault);\r\n exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n});\r\n", "/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT \u00A9 Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n try {\n return document.execCommand(type);\n } catch (err) {\n return false;\n }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n var selectedText = select_default()(target);\n command('cut');\n return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n fakeElement.style.fontSize = '12pt'; // Reset box model\n\n fakeElement.style.border = '0';\n fakeElement.style.padding = '0';\n fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n fakeElement.style.position = 'absolute';\n fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n fakeElement.style.top = \"\".concat(yPosition, \"px\");\n fakeElement.setAttribute('readonly', '');\n fakeElement.value = value;\n return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n var fakeElement = createFakeElement(value);\n options.container.appendChild(fakeElement);\n var selectedText = select_default()(fakeElement);\n command('copy');\n fakeElement.remove();\n return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n var selectedText = '';\n\n if (typeof target === 'string') {\n selectedText = fakeCopyAction(target, options);\n } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n selectedText = fakeCopyAction(target.value, options);\n } else {\n selectedText = select_default()(target);\n command('copy');\n }\n\n return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Defines base properties passed from constructor.\n var _options$action = options.action,\n action = _options$action === void 0 ? 'copy' : _options$action,\n container = options.container,\n target = options.target,\n text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n if (action !== 'copy' && action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n } // Sets the `target` property using an element that will be have its content copied.\n\n\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n } // Define selection strategy based on `text` property.\n\n\n if (text) {\n return actions_copy(text, {\n container: container\n });\n } // Defines which selection strategy based on `target` property.\n\n\n if (target) {\n return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n container: container\n });\n }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n var _this;\n\n _classCallCheck(this, Clipboard);\n\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n var action = this.action(trigger) || 'copy';\n var text = actions_default({\n action: action,\n container: this.container,\n target: this.target(trigger),\n text: this.text(trigger)\n }); // Fires an event based on the copy operation result.\n\n this.emit(text ? 'success' : 'error', {\n action: action,\n text: text,\n trigger: trigger,\n clearSelection: function clearSelection() {\n if (trigger) {\n trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Allow fire programmatically a copy action\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @returns Text copied.\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n }\n }], [{\n key: \"copy\",\n value: function copy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n return actions_copy(target, options);\n }\n /**\n * Allow fire programmatically a cut action\n * @param {String|HTMLElement} target\n * @returns Text cutted.\n */\n\n }, {\n key: \"cut\",\n value: function cut(target) {\n return actions_cut(target);\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n\n return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "Array.prototype.flat||Object.defineProperty(Array.prototype,\"flat\",{configurable:!0,value:function r(){var t=isNaN(arguments[0])?1:Number(arguments[0]);return t?Array.prototype.reduce.call(this,function(a,e){return Array.isArray(e)?a.push.apply(a,r.call(e,t-1)):a.push(e),a},[]):Array.prototype.slice.call(this)},writable:!0}),Array.prototype.flatMap||Object.defineProperty(Array.prototype,\"flatMap\",{configurable:!0,value:function(r){return Array.prototype.map.apply(this,arguments).flat()},writable:!0})\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport \"array-flat-polyfill\"\nimport \"focus-visible\"\nimport \"unfetch/polyfill\"\nimport \"url-polyfill\"\n\nimport {\n EMPTY,\n NEVER,\n Subject,\n defer,\n delay,\n filter,\n map,\n merge,\n mergeWith,\n shareReplay,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"./_\"\nimport {\n at,\n getOptionalElement,\n requestJSON,\n setToggle,\n watchDocument,\n watchKeyboard,\n watchLocation,\n watchLocationTarget,\n watchMedia,\n watchPrint,\n watchViewport\n} from \"./browser\"\nimport {\n getComponentElement,\n getComponentElements,\n mountAnnounce,\n mountBackToTop,\n mountConsent,\n mountContent,\n mountDialog,\n mountHeader,\n mountHeaderTitle,\n mountPalette,\n mountSearch,\n mountSearchHiglight,\n mountSidebar,\n mountSource,\n mountTableOfContents,\n mountTabs,\n watchHeader,\n watchMain\n} from \"./components\"\nimport {\n SearchIndex,\n setupClipboardJS,\n setupInstantLoading,\n setupVersionSelector\n} from \"./integrations\"\nimport {\n patchIndeterminate,\n patchScrollfix,\n patchScrolllock\n} from \"./patches\"\nimport \"./polyfills\"\n\n/* ----------------------------------------------------------------------------\n * Application\n * ------------------------------------------------------------------------- */\n\n/* Yay, JavaScript is available */\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Set up navigation observables and subjects */\nconst document$ = watchDocument()\nconst location$ = watchLocation()\nconst target$ = watchLocationTarget()\nconst keyboard$ = watchKeyboard()\n\n/* Set up media observables */\nconst viewport$ = watchViewport()\nconst tablet$ = watchMedia(\"(min-width: 960px)\")\nconst screen$ = watchMedia(\"(min-width: 1220px)\")\nconst print$ = watchPrint()\n\n/* Retrieve search index, if search is enabled */\nconst config = configuration()\nconst index$ = document.forms.namedItem(\"search\")\n ? __search?.index || requestJSON(\n new URL(\"search/search_index.json\", config.base)\n )\n : NEVER\n\n/* Set up Clipboard.js integration */\nconst alert$ = new Subject()\nsetupClipboardJS({ alert$ })\n\n/* Set up instant loading, if enabled */\nif (feature(\"navigation.instant\"))\n setupInstantLoading({ document$, location$, viewport$ })\n\n/* Set up version selector */\nif (config.version?.provider === \"mike\")\n setupVersionSelector({ document$ })\n\n/* Always close drawer and search on navigation */\nmerge(location$, target$)\n .pipe(\n delay(125)\n )\n .subscribe(() => {\n setToggle(\"drawer\", false)\n setToggle(\"search\", false)\n })\n\n/* Set up global keyboard handlers */\nkeyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Go to previous page */\n case \"p\":\n case \",\":\n const prev = getOptionalElement(\"[href][rel=prev]\")\n if (typeof prev !== \"undefined\")\n prev.click()\n break\n\n /* Go to next page */\n case \"n\":\n case \".\":\n const next = getOptionalElement(\"[href][rel=next]\")\n if (typeof next !== \"undefined\")\n next.click()\n break\n }\n })\n\n/* Set up patches */\npatchIndeterminate({ document$, tablet$ })\npatchScrollfix({ document$ })\npatchScrolllock({ viewport$, tablet$ })\n\n/* Set up header and main area observable */\nconst header$ = watchHeader(getComponentElement(\"header\"), { viewport$ })\nconst main$ = document$\n .pipe(\n map(() => getComponentElement(\"main\")),\n switchMap(el => watchMain(el, { viewport$, header$ })),\n shareReplay(1)\n )\n\n/* Set up control component observables */\nconst control$ = merge(\n\n /* Consent */\n ...getComponentElements(\"consent\")\n .map(el => mountConsent(el, { target$ })),\n\n /* Dialog */\n ...getComponentElements(\"dialog\")\n .map(el => mountDialog(el, { alert$ })),\n\n /* Header */\n ...getComponentElements(\"header\")\n .map(el => mountHeader(el, { viewport$, header$, main$ })),\n\n /* Color palette */\n ...getComponentElements(\"palette\")\n .map(el => mountPalette(el)),\n\n /* Search */\n ...getComponentElements(\"search\")\n .map(el => mountSearch(el, { index$, keyboard$ })),\n\n /* Repository information */\n ...getComponentElements(\"source\")\n .map(el => mountSource(el))\n)\n\n/* Set up content component observables */\nconst content$ = defer(() => merge(\n\n /* Announcement bar */\n ...getComponentElements(\"announce\")\n .map(el => mountAnnounce(el)),\n\n /* Content */\n ...getComponentElements(\"content\")\n .map(el => mountContent(el, { target$, print$ })),\n\n /* Search highlighting */\n ...getComponentElements(\"content\")\n .map(el => feature(\"search.highlight\")\n ? mountSearchHiglight(el, { index$, location$ })\n : EMPTY\n ),\n\n /* Header title */\n ...getComponentElements(\"header-title\")\n .map(el => mountHeaderTitle(el, { viewport$, header$ })),\n\n /* Sidebar */\n ...getComponentElements(\"sidebar\")\n .map(el => el.getAttribute(\"data-md-type\") === \"navigation\"\n ? at(screen$, () => mountSidebar(el, { viewport$, header$, main$ }))\n : at(tablet$, () => mountSidebar(el, { viewport$, header$, main$ }))\n ),\n\n /* Navigation tabs */\n ...getComponentElements(\"tabs\")\n .map(el => mountTabs(el, { viewport$, header$ })),\n\n /* Table of contents */\n ...getComponentElements(\"toc\")\n .map(el => mountTableOfContents(el, { viewport$, header$, target$ })),\n\n /* Back-to-top button */\n ...getComponentElements(\"top\")\n .map(el => mountBackToTop(el, { viewport$, header$, main$, target$ }))\n))\n\n/* Set up component observables */\nconst component$ = document$\n .pipe(\n switchMap(() => content$),\n mergeWith(control$),\n shareReplay(1)\n )\n\n/* Subscribe to all components */\ncomponent$.subscribe()\n\n/* ----------------------------------------------------------------------------\n * Exports\n * ------------------------------------------------------------------------- */\n\nwindow.document$ = document$ /* Document observable */\nwindow.location$ = location$ /* Location subject */\nwindow.target$ = target$ /* Location target observable */\nwindow.keyboard$ = keyboard$ /* Keyboard observable */\nwindow.viewport$ = viewport$ /* Viewport observable */\nwindow.tablet$ = tablet$ /* Media tablet observable */\nwindow.screen$ = screen$ /* Media screen observable */\nwindow.print$ = print$ /* Media print observable */\nwindow.alert$ = alert$ /* Alert subject */\nwindow.component$ = component$ /* Component observable */\n", "self.fetch||(self.fetch=function(e,n){return n=n||{},new Promise(function(t,s){var r=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(r.status/100|0),statusText:r.statusText,status:r.status,url:r.responseURL,text:function(){return Promise.resolve(r.responseText)},json:function(){return Promise.resolve(r.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([r.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var c in r.open(n.method||\"get\",e,!0),r.onload=function(){r.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},r.onerror=s,r.withCredentials=\"include\"==n.credentials,n.headers)r.setRequestHeader(c,n.headers[c]);r.send(n.body||null)})});\n", "import tslib from '../tslib.js';\r\nconst {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n} = tslib;\r\nexport {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n};\r\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n ReplaySubject,\n Subject,\n fromEvent\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch document\n *\n * Documents are implemented as subjects, so all downstream observables are\n * automatically updated when a new document is emitted.\n *\n * @returns Document subject\n */\nexport function watchDocument(): Subject {\n const document$ = new ReplaySubject(1)\n fromEvent(document, \"DOMContentLoaded\", { once: true })\n .subscribe(() => document$.next(document))\n\n /* Return document */\n return document$\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve all elements matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getElements(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T][]\n\nexport function getElements(\n selector: string, node?: ParentNode\n): T[]\n\nexport function getElements(\n selector: string, node: ParentNode = document\n): T[] {\n return Array.from(node.querySelectorAll(selector))\n}\n\n/**\n * Retrieve an element matching a query selector or throw a reference error\n *\n * Note that this function assumes that the element is present. If unsure if an\n * element is existent, use the `getOptionalElement` function instead.\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getElement(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T]\n\nexport function getElement(\n selector: string, node?: ParentNode\n): T\n\nexport function getElement(\n selector: string, node: ParentNode = document\n): T {\n const el = getOptionalElement(selector, node)\n if (typeof el === \"undefined\")\n throw new ReferenceError(\n `Missing element: expected \"${selector}\" to be present`\n )\n\n /* Return element */\n return el\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Retrieve an optional element matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element or nothing\n */\nexport function getOptionalElement(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T] | undefined\n\nexport function getOptionalElement(\n selector: string, node?: ParentNode\n): T | undefined\n\nexport function getOptionalElement(\n selector: string, node: ParentNode = document\n): T | undefined {\n return node.querySelector(selector) || undefined\n}\n\n/**\n * Retrieve the currently active element\n *\n * @returns Element or nothing\n */\nexport function getActiveElement(): HTMLElement | undefined {\n return document.activeElement instanceof HTMLElement\n ? document.activeElement || undefined\n : undefined\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n debounceTime,\n distinctUntilChanged,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\nimport { getActiveElement } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch element focus\n *\n * Previously, this function used `focus` and `blur` events to determine whether\n * an element is focused, but this doesn't work if there are focusable elements\n * within the elements itself. A better solutions are `focusin` and `focusout`\n * events, which bubble up the tree and allow for more fine-grained control.\n *\n * `debounceTime` is necessary, because when a focus change happens inside an\n * element, the observable would first emit `false` and then `true` again.\n *\n * @param el - Element\n *\n * @returns Element focus observable\n */\nexport function watchElementFocus(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(document.body, \"focusin\"),\n fromEvent(document.body, \"focusout\")\n )\n .pipe(\n debounceTime(1),\n map(() => {\n const active = getActiveElement()\n return typeof active !== \"undefined\"\n ? el.contains(active)\n : false\n }),\n startWith(el === getActiveElement()),\n distinctUntilChanged()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n animationFrameScheduler,\n auditTime,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element offset\n *\n * @param el - Element\n *\n * @returns Element offset\n */\nexport function getElementOffset(\n el: HTMLElement\n): ElementOffset {\n return {\n x: el.offsetLeft,\n y: el.offsetTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element offset\n *\n * @param el - Element\n *\n * @returns Element offset observable\n */\nexport function watchElementOffset(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(window, \"load\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n auditTime(0, animationFrameScheduler),\n map(() => getElementOffset(el)),\n startWith(getElementOffset(el))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n animationFrameScheduler,\n auditTime,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\nimport { ElementOffset } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element content offset (= scroll offset)\n *\n * @param el - Element\n *\n * @returns Element content offset\n */\nexport function getElementContentOffset(\n el: HTMLElement\n): ElementOffset {\n return {\n x: el.scrollLeft,\n y: el.scrollTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element content offset\n *\n * @param el - Element\n *\n * @returns Element content offset observable\n */\nexport function watchElementContentOffset(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(el, \"scroll\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n auditTime(0, animationFrameScheduler),\n map(() => getElementContentOffset(el)),\n startWith(getElementContentOffset(el))\n )\n}\n", "/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ResizeObserver from \"resize-observer-polyfill\"\nimport {\n NEVER,\n Observable,\n Subject,\n defer,\n filter,\n finalize,\n map,\n merge,\n of,\n shareReplay,\n startWith,\n switchMap,\n tap\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementSize {\n width: number /* Element width */\n height: number /* Element height */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Resize observer entry subject\n */\nconst entry$ = new Subject()\n\n/**\n * Resize observer observable\n *\n * This observable will create a `ResizeObserver` on the first subscription\n * and will automatically terminate it when there are no more subscribers.\n * It's quite important to centralize observation in a single `ResizeObserver`,\n * as the performance difference can be quite dramatic, as the link shows.\n *\n * @see https://bit.ly/3iIYfEm - Google Groups on performance\n */\nconst observer$ = defer(() => of(\n new ResizeObserver(entries => {\n for (const entry of entries)\n entry$.next(entry)\n })\n))\n .pipe(\n switchMap(observer => merge(NEVER, of(observer))\n .pipe(\n finalize(() => observer.disconnect())\n )\n ),\n shareReplay(1)\n )\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element size\n *\n * @param el - Element\n *\n * @returns Element size\n */\nexport function getElementSize(\n el: HTMLElement\n): ElementSize {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element size\n *\n * This function returns an observable that subscribes to a single internal\n * instance of `ResizeObserver` upon subscription, and emit resize events until\n * termination. Note that this function should not be called with the same\n * element twice, as the first unsubscription will terminate observation.\n *\n * Sadly, we can't use the `DOMRect` objects returned by the observer, because\n * we need the emitted values to be consistent with `getElementSize`, which will\n * return the used values (rounded) and not actual values (unrounded). Thus, we\n * use the `offset*` properties. See the linked GitHub issue.\n *\n * @see https://bit.ly/3m0k3he - GitHub issue\n *\n * @param el - Element\n *\n * @returns Element size observable\n */\nexport function watchElementSize(\n el: HTMLElement\n): Observable {\n return observer$\n .pipe(\n tap(observer => observer.observe(el)),\n switchMap(observer => entry$\n .pipe(\n filter(({ target }) => target === el),\n finalize(() => observer.unobserve(el)),\n map(() => getElementSize(el))\n )\n ),\n startWith(getElementSize(el))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ElementSize } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element content size (= scroll width and height)\n *\n * @param el - Element\n *\n * @returns Element content size\n */\nexport function getElementContentSize(\n el: HTMLElement\n): ElementSize {\n return {\n width: el.scrollWidth,\n height: el.scrollHeight\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n NEVER,\n Observable,\n Subject,\n defer,\n distinctUntilChanged,\n filter,\n finalize,\n map,\n merge,\n of,\n shareReplay,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport {\n getElementContentSize,\n getElementSize,\n watchElementContentOffset\n} from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Intersection observer entry subject\n */\nconst entry$ = new Subject()\n\n/**\n * Intersection observer observable\n *\n * This observable will create an `IntersectionObserver` on first subscription\n * and will automatically terminate it when there are no more subscribers.\n *\n * @see https://bit.ly/3iIYfEm - Google Groups on performance\n */\nconst observer$ = defer(() => of(\n new IntersectionObserver(entries => {\n for (const entry of entries)\n entry$.next(entry)\n }, {\n threshold: 0\n })\n))\n .pipe(\n switchMap(observer => merge(NEVER, of(observer))\n .pipe(\n finalize(() => observer.disconnect())\n )\n ),\n shareReplay(1)\n )\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch element visibility\n *\n * @param el - Element\n *\n * @returns Element visibility observable\n */\nexport function watchElementVisibility(\n el: HTMLElement\n): Observable {\n return observer$\n .pipe(\n tap(observer => observer.observe(el)),\n switchMap(observer => entry$\n .pipe(\n filter(({ target }) => target === el),\n finalize(() => observer.unobserve(el)),\n map(({ isIntersecting }) => isIntersecting)\n )\n )\n )\n}\n\n/**\n * Watch element boundary\n *\n * This function returns an observable which emits whether the bottom content\n * boundary (= scroll offset) of an element is within a certain threshold.\n *\n * @param el - Element\n * @param threshold - Threshold\n *\n * @returns Element boundary observable\n */\nexport function watchElementBoundary(\n el: HTMLElement, threshold = 16\n): Observable {\n return watchElementContentOffset(el)\n .pipe(\n map(({ y }) => {\n const visible = getElementSize(el)\n const content = getElementContentSize(el)\n return y >= (\n content.height - visible.height - threshold\n )\n }),\n distinctUntilChanged()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n startWith\n} from \"rxjs\"\n\nimport { getElement } from \"../element\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle\n */\nexport type Toggle =\n | \"drawer\" /* Toggle for drawer */\n | \"search\" /* Toggle for search */\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle map\n */\nconst toggles: Record = {\n drawer: getElement(\"[data-md-toggle=drawer]\"),\n search: getElement(\"[data-md-toggle=search]\")\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the value of a toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value\n */\nexport function getToggle(name: Toggle): boolean {\n return toggles[name].checked\n}\n\n/**\n * Set toggle\n *\n * Simulating a click event seems to be the most cross-browser compatible way\n * of changing the value while also emitting a `change` event. Before, Material\n * used `CustomEvent` to programmatically change the value of a toggle, but this\n * is a much simpler and cleaner solution which doesn't require a polyfill.\n *\n * @param name - Toggle\n * @param value - Toggle value\n */\nexport function setToggle(name: Toggle, value: boolean): void {\n if (toggles[name].checked !== value)\n toggles[name].click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value observable\n */\nexport function watchToggle(name: Toggle): Observable {\n const el = toggles[name]\n return fromEvent(el, \"change\")\n .pipe(\n map(() => el.checked),\n startWith(el.checked)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n share\n} from \"rxjs\"\n\nimport { getActiveElement } from \"../element\"\nimport { getToggle } from \"../toggle\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Keyboard mode\n */\nexport type KeyboardMode =\n | \"global\" /* Global */\n | \"search\" /* Search is open */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Keyboard\n */\nexport interface Keyboard {\n mode: KeyboardMode /* Keyboard mode */\n type: string /* Key type */\n claim(): void /* Key claim */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether an element may receive keyboard input\n *\n * @param el - Element\n * @param type - Key type\n *\n * @returns Test result\n */\nfunction isSusceptibleToKeyboard(\n el: HTMLElement, type: string\n): boolean {\n switch (el.constructor) {\n\n /* Input elements */\n case HTMLInputElement:\n /* @ts-expect-error - omit unnecessary type cast */\n if (el.type === \"radio\")\n return /^Arrow/.test(type)\n else\n return true\n\n /* Select element and textarea */\n case HTMLSelectElement:\n case HTMLTextAreaElement:\n return true\n\n /* Everything else */\n default:\n return el.isContentEditable\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch keyboard\n *\n * @returns Keyboard observable\n */\nexport function watchKeyboard(): Observable {\n return fromEvent(window, \"keydown\")\n .pipe(\n filter(ev => !(ev.metaKey || ev.ctrlKey)),\n map(ev => ({\n mode: getToggle(\"search\") ? \"search\" : \"global\",\n type: ev.key,\n claim() {\n ev.preventDefault()\n ev.stopPropagation()\n }\n } as Keyboard)),\n filter(({ mode, type }) => {\n if (mode === \"global\") {\n const active = getActiveElement()\n if (typeof active !== \"undefined\")\n return !isSusceptibleToKeyboard(active, type)\n }\n return true\n }),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Subject } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location\n *\n * This function returns a `URL` object (and not `Location`) to normalize the\n * typings across the application. Furthermore, locations need to be tracked\n * without setting them and `Location` is a singleton which represents the\n * current location.\n *\n * @returns URL\n */\nexport function getLocation(): URL {\n return new URL(location.href)\n}\n\n/**\n * Set location\n *\n * @param url - URL to change to\n */\nexport function setLocation(url: URL): void {\n location.href = url.href\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location\n *\n * @returns Location subject\n */\nexport function watchLocation(): Subject {\n return new Subject()\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { JSX as JSXInternal } from \"preact\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * HTML attributes\n */\ntype Attributes =\n & JSXInternal.HTMLAttributes\n & JSXInternal.SVGAttributes\n & Record\n\n/**\n * Child element\n */\ntype Child =\n | HTMLElement\n | Text\n | string\n | number\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Append a child node to an element\n *\n * @param el - Element\n * @param child - Child node(s)\n */\nfunction appendChild(el: HTMLElement, child: Child | Child[]): void {\n\n /* Handle primitive types (including raw HTML) */\n if (typeof child === \"string\" || typeof child === \"number\") {\n el.innerHTML += child.toString()\n\n /* Handle nodes */\n } else if (child instanceof Node) {\n el.appendChild(child)\n\n /* Handle nested children */\n } else if (Array.isArray(child)) {\n for (const node of child)\n appendChild(el, node)\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * JSX factory\n *\n * @template T - Element type\n *\n * @param tag - HTML tag\n * @param attributes - HTML attributes\n * @param children - Child elements\n *\n * @returns Element\n */\nexport function h(\n tag: T, attributes?: Attributes | null, ...children: Child[]\n): HTMLElementTagNameMap[T]\n\nexport function h(\n tag: string, attributes?: Attributes | null, ...children: Child[]\n): T\n\nexport function h(\n tag: string, attributes?: Attributes | null, ...children: Child[]\n): T {\n const el = document.createElement(tag)\n\n /* Set attributes, if any */\n if (attributes)\n for (const attr of Object.keys(attributes)) {\n if (typeof attributes[attr] === \"undefined\")\n continue\n\n /* Set default attribute or boolean */\n if (typeof attributes[attr] !== \"boolean\")\n el.setAttribute(attr, attributes[attr])\n else\n el.setAttribute(attr, \"\")\n }\n\n /* Append child nodes */\n for (const child of children)\n appendChild(el, child)\n\n /* Return element */\n return el as T\n}\n\n/* ----------------------------------------------------------------------------\n * Namespace\n * ------------------------------------------------------------------------- */\n\nexport declare namespace h {\n namespace JSX {\n type Element = HTMLElement\n type IntrinsicElements = JSXInternal.IntrinsicElements\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Truncate a string after the given number of characters\n *\n * This is not a very reasonable approach, since the summaries kind of suck.\n * It would be better to create something more intelligent, highlighting the\n * search occurrences and making a better summary out of it, but this note was\n * written three years ago, so who knows if we'll ever fix it.\n *\n * @param value - Value to be truncated\n * @param n - Number of characters\n *\n * @returns Truncated value\n */\nexport function truncate(value: string, n: number): string {\n let i = n\n if (value.length > i) {\n while (value[i] !== \" \" && --i > 0) { /* keep eating */ }\n return `${value.substring(0, i)}...`\n }\n return value\n}\n\n/**\n * Round a number for display with repository facts\n *\n * This is a reverse-engineered version of GitHub's weird rounding algorithm\n * for stars, forks and all other numbers. While all numbers below `1,000` are\n * returned as-is, bigger numbers are converted to fixed numbers:\n *\n * - `1,049` => `1k`\n * - `1,050` => `1.1k`\n * - `1,949` => `1.9k`\n * - `1,950` => `2k`\n *\n * @param value - Original value\n *\n * @returns Rounded value\n */\nexport function round(value: number): string {\n if (value > 999) {\n const digits = +((value - 950) % 1000 > 99)\n return `${((value + 0.000001) / 1000).toFixed(digits)}k`\n } else {\n return value.toString()\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n shareReplay,\n startWith\n} from \"rxjs\"\n\nimport { getOptionalElement } from \"~/browser\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location hash\n *\n * @returns Location hash\n */\nexport function getLocationHash(): string {\n return location.hash.substring(1)\n}\n\n/**\n * Set location hash\n *\n * Setting a new fragment identifier via `location.hash` will have no effect\n * if the value doesn't change. When a new fragment identifier is set, we want\n * the browser to target the respective element at all times, which is why we\n * use this dirty little trick.\n *\n * @param hash - Location hash\n */\nexport function setLocationHash(hash: string): void {\n const el = h(\"a\", { href: hash })\n el.addEventListener(\"click\", ev => ev.stopPropagation())\n el.click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location hash\n *\n * @returns Location hash observable\n */\nexport function watchLocationHash(): Observable {\n return fromEvent(window, \"hashchange\")\n .pipe(\n map(getLocationHash),\n startWith(getLocationHash()),\n filter(hash => hash.length > 0),\n shareReplay(1)\n )\n}\n\n/**\n * Watch location target\n *\n * @returns Location target observable\n */\nexport function watchLocationTarget(): Observable {\n return watchLocationHash()\n .pipe(\n map(id => getOptionalElement(`[id=\"${id}\"]`)!),\n filter(el => typeof el !== \"undefined\")\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n fromEvent,\n fromEventPattern,\n map,\n merge,\n startWith,\n switchMap\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch media query\n *\n * Note that although `MediaQueryList.addListener` is deprecated we have to\n * use it, because it's the only way to ensure proper downward compatibility.\n *\n * @see https://bit.ly/3dUBH2m - GitHub issue\n *\n * @param query - Media query\n *\n * @returns Media observable\n */\nexport function watchMedia(query: string): Observable {\n const media = matchMedia(query)\n return fromEventPattern(next => (\n media.addListener(() => next(media.matches))\n ))\n .pipe(\n startWith(media.matches)\n )\n}\n\n/**\n * Watch print mode\n *\n * @returns Print observable\n */\nexport function watchPrint(): Observable {\n const media = matchMedia(\"print\")\n return merge(\n fromEvent(window, \"beforeprint\").pipe(map(() => true)),\n fromEvent(window, \"afterprint\").pipe(map(() => false))\n )\n .pipe(\n startWith(media.matches)\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Toggle an observable with a media observable\n *\n * @template T - Data type\n *\n * @param query$ - Media observable\n * @param factory - Observable factory\n *\n * @returns Toggled observable\n */\nexport function at(\n query$: Observable, factory: () => Observable\n): Observable {\n return query$\n .pipe(\n switchMap(active => active ? factory() : EMPTY)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n catchError,\n from,\n map,\n of,\n shareReplay,\n switchMap,\n throwError\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch the given URL\n *\n * If the request fails (e.g. when dispatched from `file://` locations), the\n * observable will complete without emitting a value.\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Response observable\n */\nexport function request(\n url: URL | string, options: RequestInit = { credentials: \"same-origin\" }\n): Observable {\n return from(fetch(`${url}`, options))\n .pipe(\n catchError(() => EMPTY),\n switchMap(res => res.status !== 200\n ? throwError(() => new Error(res.statusText))\n : of(res)\n )\n )\n}\n\n/**\n * Fetch JSON from the given URL\n *\n * @template T - Data type\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestJSON(\n url: URL | string, options?: RequestInit\n): Observable {\n return request(url, options)\n .pipe(\n switchMap(res => res.json()),\n shareReplay(1)\n )\n}\n\n/**\n * Fetch XML from the given URL\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestXML(\n url: URL | string, options?: RequestInit\n): Observable {\n const dom = new DOMParser()\n return request(url, options)\n .pipe(\n switchMap(res => res.text()),\n map(res => dom.parseFromString(res, \"text/xml\")),\n shareReplay(1)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n defer,\n finalize,\n fromEvent,\n map,\n merge,\n switchMap,\n take,\n throwError\n} from \"rxjs\"\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create and load a `script` element\n *\n * This function returns an observable that will emit when the script was\n * successfully loaded, or throw an error if it didn't.\n *\n * @param src - Script URL\n *\n * @returns Script observable\n */\nexport function watchScript(src: string): Observable {\n const script = h(\"script\", { src })\n return defer(() => {\n document.head.appendChild(script)\n return merge(\n fromEvent(script, \"load\"),\n fromEvent(script, \"error\")\n .pipe(\n switchMap(() => (\n throwError(() => new ReferenceError(`Invalid script: ${src}`))\n ))\n )\n )\n .pipe(\n map(() => undefined),\n finalize(() => document.head.removeChild(script)),\n take(1)\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport offset\n */\nexport interface ViewportOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport offset\n *\n * On iOS Safari, viewport offset can be negative due to overflow scrolling.\n * As this may induce strange behaviors downstream, we'll just limit it to 0.\n *\n * @returns Viewport offset\n */\nexport function getViewportOffset(): ViewportOffset {\n return {\n x: Math.max(0, scrollX),\n y: Math.max(0, scrollY)\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport offset\n *\n * @returns Viewport offset observable\n */\nexport function watchViewportOffset(): Observable {\n return merge(\n fromEvent(window, \"scroll\", { passive: true }),\n fromEvent(window, \"resize\", { passive: true })\n )\n .pipe(\n map(getViewportOffset),\n startWith(getViewportOffset())\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport size\n */\nexport interface ViewportSize {\n width: number /* Viewport width */\n height: number /* Viewport height */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport size\n *\n * @returns Viewport size\n */\nexport function getViewportSize(): ViewportSize {\n return {\n width: innerWidth,\n height: innerHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport size\n *\n * @returns Viewport size observable\n */\nexport function watchViewportSize(): Observable {\n return fromEvent(window, \"resize\", { passive: true })\n .pipe(\n map(getViewportSize),\n startWith(getViewportSize())\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n map,\n shareReplay\n} from \"rxjs\"\n\nimport {\n ViewportOffset,\n watchViewportOffset\n} from \"../offset\"\nimport {\n ViewportSize,\n watchViewportSize\n} from \"../size\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport\n */\nexport interface Viewport {\n offset: ViewportOffset /* Viewport offset */\n size: ViewportSize /* Viewport size */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport\n *\n * @returns Viewport observable\n */\nexport function watchViewport(): Observable {\n return combineLatest([\n watchViewportOffset(),\n watchViewportSize()\n ])\n .pipe(\n map(([offset, size]) => ({ offset, size })),\n shareReplay(1)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n distinctUntilKeyChanged,\n map\n} from \"rxjs\"\n\nimport { Header } from \"~/components\"\n\nimport { getElementOffset } from \"../../element\"\nimport { Viewport } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport relative to element\n *\n * @param el - Element\n * @param options - Options\n *\n * @returns Viewport observable\n */\nexport function watchViewportAt(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n const size$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\")\n )\n\n /* Compute element offset */\n const offset$ = combineLatest([size$, header$])\n .pipe(\n map(() => getElementOffset(el))\n )\n\n /* Compute relative viewport, return hot observable */\n return combineLatest([header$, viewport$, offset$])\n .pipe(\n map(([{ height }, { offset, size }, { x, y }]) => ({\n offset: {\n x: offset.x - x,\n y: offset.y - y + height\n },\n size\n }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n fromEvent,\n map,\n share,\n switchMap,\n tap,\n throttle\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Worker message\n */\nexport interface WorkerMessage {\n type: unknown /* Message type */\n data?: unknown /* Message data */\n}\n\n/**\n * Worker handler\n *\n * @template T - Message type\n */\nexport interface WorkerHandler<\n T extends WorkerMessage\n> {\n tx$: Subject /* Message transmission subject */\n rx$: Observable /* Message receive observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n *\n * @template T - Worker message type\n */\ninterface WatchOptions {\n tx$: Observable /* Message transmission observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch a web worker\n *\n * This function returns an observable that sends all values emitted by the\n * message observable to the web worker. Web worker communication is expected\n * to be bidirectional (request-response) and synchronous. Messages that are\n * emitted during a pending request are throttled, the last one is emitted.\n *\n * @param worker - Web worker\n * @param options - Options\n *\n * @returns Worker message observable\n */\nexport function watchWorker(\n worker: Worker, { tx$ }: WatchOptions\n): Observable {\n\n /* Intercept messages from worker-like objects */\n const rx$ = fromEvent(worker, \"message\")\n .pipe(\n map(({ data }) => data as T)\n )\n\n /* Send and receive messages, return hot observable */\n return tx$\n .pipe(\n throttle(() => rx$, { leading: true, trailing: true }),\n tap(message => worker.postMessage(message)),\n switchMap(() => rx$),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElement, getLocation } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Feature flag\n */\nexport type Flag =\n | \"announce.dismiss\" /* Dismissable announcement bar */\n | \"content.code.annotate\" /* Code annotations */\n | \"content.tabs.link\" /* Link content tabs */\n | \"header.autohide\" /* Hide header */\n | \"navigation.expand\" /* Automatic expansion */\n | \"navigation.indexes\" /* Section pages */\n | \"navigation.instant\" /* Instant loading */\n | \"navigation.sections\" /* Section navigation */\n | \"navigation.tabs\" /* Tabs navigation */\n | \"navigation.tabs.sticky\" /* Tabs navigation (sticky) */\n | \"navigation.top\" /* Back-to-top button */\n | \"navigation.tracking\" /* Anchor tracking */\n | \"search.highlight\" /* Search highlighting */\n | \"search.share\" /* Search sharing */\n | \"search.suggest\" /* Search suggestions */\n | \"toc.integrate\" /* Integrated table of contents */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Translation\n */\nexport type Translation =\n | \"clipboard.copy\" /* Copy to clipboard */\n | \"clipboard.copied\" /* Copied to clipboard */\n | \"search.config.lang\" /* Search language */\n | \"search.config.pipeline\" /* Search pipeline */\n | \"search.config.separator\" /* Search separator */\n | \"search.placeholder\" /* Search */\n | \"search.result.placeholder\" /* Type to start searching */\n | \"search.result.none\" /* No matching documents */\n | \"search.result.one\" /* 1 matching document */\n | \"search.result.other\" /* # matching documents */\n | \"search.result.more.one\" /* 1 more on this page */\n | \"search.result.more.other\" /* # more on this page */\n | \"search.result.term.missing\" /* Missing */\n | \"select.version.title\" /* Version selector */\n\n/**\n * Translations\n */\nexport type Translations = Record\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Versioning\n */\nexport interface Versioning {\n provider: \"mike\" /* Version provider */\n default?: string /* Default version */\n}\n\n/**\n * Configuration\n */\nexport interface Config {\n base: string /* Base URL */\n features: Flag[] /* Feature flags */\n translations: Translations /* Translations */\n search: string /* Search worker URL */\n version?: Versioning /* Versioning */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration and make base URL absolute\n */\nconst script = getElement(\"#__config\")\nconst config: Config = JSON.parse(script.textContent!)\nconfig.base = `${new URL(config.base, getLocation())}`\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration\n *\n * @returns Global configuration\n */\nexport function configuration(): Config {\n return config\n}\n\n/**\n * Check whether a feature flag is enabled\n *\n * @param flag - Feature flag\n *\n * @returns Test result\n */\nexport function feature(flag: Flag): boolean {\n return config.features.includes(flag)\n}\n\n/**\n * Retrieve the translation for the given key\n *\n * @param key - Key to be translated\n * @param value - Positional value, if any\n *\n * @returns Translation\n */\nexport function translation(\n key: Translation, value?: string | number\n): string {\n return typeof value !== \"undefined\"\n ? config.translations[key].replace(\"#\", value.toString())\n : config.translations[key]\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElement, getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component type\n */\nexport type ComponentType =\n | \"announce\" /* Announcement bar */\n | \"container\" /* Container */\n | \"consent\" /* Consent */\n | \"content\" /* Content */\n | \"dialog\" /* Dialog */\n | \"header\" /* Header */\n | \"header-title\" /* Header title */\n | \"header-topic\" /* Header topic */\n | \"main\" /* Main area */\n | \"outdated\" /* Version warning */\n | \"palette\" /* Color palette */\n | \"search\" /* Search */\n | \"search-query\" /* Search input */\n | \"search-result\" /* Search results */\n | \"search-share\" /* Search sharing */\n | \"search-suggest\" /* Search suggestions */\n | \"sidebar\" /* Sidebar */\n | \"skip\" /* Skip link */\n | \"source\" /* Repository information */\n | \"tabs\" /* Navigation tabs */\n | \"toc\" /* Table of contents */\n | \"top\" /* Back-to-top button */\n\n/**\n * Component\n *\n * @template T - Component type\n * @template U - Reference type\n */\nexport type Component<\n T extends {} = {},\n U extends HTMLElement = HTMLElement\n> =\n T & {\n ref: U /* Component reference */\n }\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component type map\n */\ninterface ComponentTypeMap {\n \"announce\": HTMLElement /* Announcement bar */\n \"container\": HTMLElement /* Container */\n \"consent\": HTMLElement /* Consent */\n \"content\": HTMLElement /* Content */\n \"dialog\": HTMLElement /* Dialog */\n \"header\": HTMLElement /* Header */\n \"header-title\": HTMLElement /* Header title */\n \"header-topic\": HTMLElement /* Header topic */\n \"main\": HTMLElement /* Main area */\n \"outdated\": HTMLElement /* Version warning */\n \"palette\": HTMLElement /* Color palette */\n \"search\": HTMLElement /* Search */\n \"search-query\": HTMLInputElement /* Search input */\n \"search-result\": HTMLElement /* Search results */\n \"search-share\": HTMLAnchorElement /* Search sharing */\n \"search-suggest\": HTMLElement /* Search suggestions */\n \"sidebar\": HTMLElement /* Sidebar */\n \"skip\": HTMLAnchorElement /* Skip link */\n \"source\": HTMLAnchorElement /* Repository information */\n \"tabs\": HTMLElement /* Navigation tabs */\n \"toc\": HTMLElement /* Table of contents */\n \"top\": HTMLAnchorElement /* Back-to-top button */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the element for a given component or throw a reference error\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getComponentElement(\n type: T, node: ParentNode = document\n): ComponentTypeMap[T] {\n return getElement(`[data-md-component=${type}]`, node)\n}\n\n/**\n * Retrieve all elements for a given component\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getComponentElements(\n type: T, node: ParentNode = document\n): ComponentTypeMap[T][] {\n return getElements(`[data-md-component=${type}]`, node)\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n finalize,\n fromEvent,\n map,\n startWith,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport { getElement } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Announcement bar\n */\nexport interface Announce {\n hash: number /* Content hash */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch announcement bar\n *\n * @param el - Announcement bar element\n *\n * @returns Announcement bar observable\n */\nexport function watchAnnounce(\n el: HTMLElement\n): Observable {\n const button = getElement(\".md-typeset > :first-child\", el)\n return fromEvent(button, \"click\", { once: true })\n .pipe(\n map(() => getElement(\".md-typeset\", el)),\n map(content => ({ hash: __md_hash(content.innerHTML) }))\n )\n}\n\n/**\n * Mount announcement bar\n *\n * @param el - Announcement bar element\n *\n * @returns Announcement bar component observable\n */\nexport function mountAnnounce(\n el: HTMLElement\n): Observable> {\n if (!feature(\"announce.dismiss\") || !el.childElementCount)\n return EMPTY\n\n /* Mount component on subscription */\n return defer(() => {\n const push$ = new Subject()\n push$\n .pipe(\n startWith({ hash: __md_get(\"__announce\") })\n )\n .subscribe(({ hash }) => {\n if (hash && hash === (__md_get(\"__announce\") ?? hash)) {\n el.hidden = true\n\n /* Persist preference in local storage */\n __md_set(\"__announce\", hash)\n }\n })\n\n /* Create and return component */\n return watchAnnounce(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n finalize,\n map,\n tap\n} from \"rxjs\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Consent\n */\nexport interface Consent {\n hidden: boolean /* Consent is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n target$: Observable /* Target observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch consent\n *\n * @param el - Consent element\n * @param options - Options\n *\n * @returns Consent observable\n */\nexport function watchConsent(\n el: HTMLElement, { target$ }: WatchOptions\n): Observable {\n return target$\n .pipe(\n map(target => ({ hidden: target !== el }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount consent\n *\n * @param el - Consent element\n * @param options - Options\n *\n * @returns Consent component observable\n */\nexport function mountConsent(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const internal$ = new Subject()\n internal$.subscribe(({ hidden }) => {\n el.hidden = hidden\n })\n\n /* Create and return component */\n return watchConsent(el, options)\n .pipe(\n tap(state => internal$.next(state)),\n finalize(() => internal$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ClipboardJS from \"clipboard\"\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n finalize,\n map,\n mergeWith,\n switchMap,\n take,\n takeLast,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n getElementContentSize,\n watchElementSize,\n watchElementVisibility\n} from \"~/browser\"\nimport { renderClipboardButton } from \"~/templates\"\n\nimport { Component } from \"../../../_\"\nimport {\n Annotation,\n mountAnnotationList\n} from \"../../annotation\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Code block\n */\nexport interface CodeBlock {\n scrollable: boolean /* Code block overflows */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Global sequence number for Clipboard.js integration\n */\nlet sequence = 0\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Find candidate list element directly following a code block\n *\n * @param el - Code block element\n *\n * @returns List element or nothing\n */\nfunction findCandidateList(el: HTMLElement): HTMLElement | undefined {\n if (el.nextElementSibling) {\n const sibling = el.nextElementSibling as HTMLElement\n if (sibling.tagName === \"OL\")\n return sibling\n\n /* Skip empty paragraphs - see https://bit.ly/3r4ZJ2O */\n else if (sibling.tagName === \"P\" && !sibling.children.length)\n return findCandidateList(sibling)\n }\n\n /* Everything else */\n return undefined\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch code block\n *\n * This function monitors size changes of the viewport, as well as switches of\n * content tabs with embedded code blocks, as both may trigger overflow.\n *\n * @param el - Code block element\n *\n * @returns Code block observable\n */\nexport function watchCodeBlock(\n el: HTMLElement\n): Observable {\n return watchElementSize(el)\n .pipe(\n map(({ width }) => {\n const content = getElementContentSize(el)\n return {\n scrollable: content.width > width\n }\n }),\n distinctUntilKeyChanged(\"scrollable\")\n )\n}\n\n/**\n * Mount code block\n *\n * This function ensures that an overflowing code block is focusable through\n * keyboard, so it can be scrolled without a mouse to improve on accessibility.\n * Furthermore, if code annotations are enabled, they are mounted if and only\n * if the code block is currently visible, e.g., not in a hidden content tab.\n *\n * @param el - Code block element\n * @param options - Options\n *\n * @returns Code block and annotation component observable\n */\nexport function mountCodeBlock(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const { matches: hover } = matchMedia(\"(hover)\")\n\n /* Defer mounting of code block - see https://bit.ly/3vHVoVD */\n const factory$ = defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ scrollable }) => {\n if (scrollable && hover)\n el.setAttribute(\"tabindex\", \"0\")\n else\n el.removeAttribute(\"tabindex\")\n })\n\n /* Render button for Clipboard.js integration */\n if (ClipboardJS.isSupported()) {\n const parent = el.closest(\"pre\")!\n parent.id = `__code_${++sequence}`\n parent.insertBefore(\n renderClipboardButton(parent.id),\n el\n )\n }\n\n /* Handle code annotations */\n const container = el.closest(\".highlight\")\n if (container instanceof HTMLElement) {\n const list = findCandidateList(container)\n\n /* Mount code annotations, if enabled */\n if (typeof list !== \"undefined\" && (\n container.classList.contains(\"annotate\") ||\n feature(\"content.code.annotate\")\n )) {\n const annotations$ = mountAnnotationList(list, el, options)\n\n /* Create and return component */\n return watchCodeBlock(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state })),\n mergeWith(\n watchElementSize(container)\n .pipe(\n takeUntil(push$.pipe(takeLast(1))),\n map(({ width, height }) => width && height),\n distinctUntilChanged(),\n switchMap(active => active ? annotations$ : EMPTY)\n )\n )\n )\n }\n }\n\n /* Create and return component */\n return watchCodeBlock(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n\n /* Mount code block on first sight */\n return watchElementVisibility(el)\n .pipe(\n filter(visible => visible),\n take(1),\n switchMap(() => factory$)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render an empty annotation\n *\n * @param id - Annotation identifier\n *\n * @returns Element\n */\nexport function renderAnnotation(id: number): HTMLElement {\n return (\n \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { translation } from \"~/_\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a 'copy-to-clipboard' button\n *\n * @param id - Unique identifier\n *\n * @returns Element\n */\nexport function renderClipboardButton(id: string): HTMLElement {\n return (\n code`}\n >\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ComponentChild } from \"preact\"\n\nimport { feature, translation } from \"~/_\"\nimport {\n SearchDocument,\n SearchMetadata,\n SearchResultItem\n} from \"~/integrations/search\"\nimport { h, truncate } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Render flag\n */\nconst enum Flag {\n TEASER = 1, /* Render teaser */\n PARENT = 2 /* Render as parent */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper function\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search document\n *\n * @param document - Search document\n * @param flag - Render flags\n *\n * @returns Element\n */\nfunction renderSearchDocument(\n document: SearchDocument & SearchMetadata, flag: Flag\n): HTMLElement {\n const parent = flag & Flag.PARENT\n const teaser = flag & Flag.TEASER\n\n /* Render missing query terms */\n const missing = Object.keys(document.terms)\n .filter(key => !document.terms[key])\n .reduce((list, key) => [\n ...list, {key}, \" \"\n ], [])\n .slice(0, -1)\n\n /* Assemble query string for highlighting */\n const url = new URL(document.location)\n if (feature(\"search.highlight\"))\n url.searchParams.set(\"h\", Object.entries(document.terms)\n .filter(([, match]) => match)\n .reduce((highlight, [value]) => `${highlight} ${value}`.trim(), \"\")\n )\n\n /* Render article or section, depending on flags */\n return (\n \n \n {parent > 0 &&
    }\n

    {document.title}

    \n {teaser > 0 && document.text.length > 0 &&\n

    \n {truncate(document.text, 320)}\n

    \n }\n {document.tags && document.tags.map(tag => (\n {tag}\n ))}\n {teaser > 0 && missing.length > 0 &&\n

    \n {translation(\"search.result.term.missing\")}: {...missing}\n

    \n }\n \n
    \n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search result\n *\n * @param result - Search result\n *\n * @returns Element\n */\nexport function renderSearchResultItem(\n result: SearchResultItem\n): HTMLElement {\n const threshold = result[0].score\n const docs = [...result]\n\n /* Find and extract parent article */\n const parent = docs.findIndex(doc => !doc.location.includes(\"#\"))\n const [article] = docs.splice(parent, 1)\n\n /* Determine last index above threshold */\n let index = docs.findIndex(doc => doc.score < threshold)\n if (index === -1)\n index = docs.length\n\n /* Partition sections */\n const best = docs.slice(0, index)\n const more = docs.slice(index)\n\n /* Render children */\n const children = [\n renderSearchDocument(article, Flag.PARENT | +(!parent && index === 0)),\n ...best.map(section => renderSearchDocument(section, Flag.TEASER)),\n ...more.length ? [\n
    \n \n {more.length > 0 && more.length === 1\n ? translation(\"search.result.more.one\")\n : translation(\"search.result.more.other\", more.length)\n }\n \n {...more.map(section => renderSearchDocument(section, Flag.TEASER))}\n
    \n ] : []\n ]\n\n /* Render search result */\n return (\n
  • \n {children}\n
  • \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SourceFacts } from \"~/components\"\nimport { h, round } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render repository facts\n *\n * @param facts - Repository facts\n *\n * @returns Element\n */\nexport function renderSourceFacts(facts: SourceFacts): HTMLElement {\n return (\n
      \n {Object.entries(facts).map(([key, value]) => (\n
    • \n {typeof value === \"number\" ? round(value) : value}\n
    • \n ))}\n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Tabbed control type\n */\ntype TabbedControlType =\n | \"prev\"\n | \"next\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render control for content tabs\n *\n * @param type - Control type\n *\n * @returns Element\n */\nexport function renderTabbedControl(\n type: TabbedControlType\n): HTMLElement {\n const classes = `tabbed-control tabbed-control--${type}`\n return (\n \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a table inside a wrapper to improve scrolling on mobile\n *\n * @param table - Table element\n *\n * @returns Element\n */\nexport function renderTable(table: HTMLElement): HTMLElement {\n return (\n
    \n
    \n {table}\n
    \n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { configuration, translation } from \"~/_\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Version\n */\nexport interface Version {\n version: string /* Version identifier */\n title: string /* Version title */\n aliases: string[] /* Version aliases */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a version\n *\n * @param version - Version\n *\n * @returns Element\n */\nfunction renderVersion(version: Version): HTMLElement {\n const config = configuration()\n\n /* Ensure trailing slash, see https://bit.ly/3rL5u3f */\n const url = new URL(`../${version.version}/`, config.base)\n return (\n
  • \n \n {version.title}\n \n
  • \n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a version selector\n *\n * @param versions - Versions\n * @param active - Active version\n *\n * @returns Element\n */\nexport function renderVersionSelector(\n versions: Version[], active: Version\n): HTMLElement {\n return (\n
    \n \n {active.title}\n \n
      \n {versions.map(renderVersion)}\n
    \n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n animationFrameScheduler,\n combineLatest,\n defer,\n finalize,\n fromEvent,\n map,\n switchMap,\n take,\n takeLast,\n takeUntil,\n tap,\n throttleTime\n} from \"rxjs\"\n\nimport {\n ElementOffset,\n getElement,\n getElementSize,\n watchElementContentOffset,\n watchElementFocus,\n watchElementOffset,\n watchElementVisibility\n} from \"~/browser\"\n\nimport { Component } from \"../../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Annotation\n */\nexport interface Annotation {\n active: boolean /* Annotation is active */\n offset: ElementOffset /* Annotation offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch annotation\n *\n * @param el - Annotation element\n * @param container - Containing element\n *\n * @returns Annotation observable\n */\nexport function watchAnnotation(\n el: HTMLElement, container: HTMLElement\n): Observable {\n const offset$ = defer(() => combineLatest([\n watchElementOffset(el),\n watchElementContentOffset(container)\n ]))\n .pipe(\n map(([{ x, y }, scroll]) => {\n const { width } = getElementSize(el)\n return ({\n x: x - scroll.x + width / 2,\n y: y - scroll.y\n })\n })\n )\n\n /* Actively watch annotation on focus */\n return watchElementFocus(el)\n .pipe(\n switchMap(active => offset$\n .pipe(\n map(offset => ({ active, offset })),\n take(+!active || Infinity)\n )\n )\n )\n}\n\n/**\n * Mount annotation\n *\n * @param el - Annotation element\n * @param container - Containing element\n *\n * @returns Annotation component observable\n */\nexport function mountAnnotation(\n el: HTMLElement, container: HTMLElement\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe({\n\n /* Handle emission */\n next({ offset }) {\n el.style.setProperty(\"--md-tooltip-x\", `${offset.x}px`)\n el.style.setProperty(\"--md-tooltip-y\", `${offset.y}px`)\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-tooltip-x\")\n el.style.removeProperty(\"--md-tooltip-y\")\n }\n })\n\n /* Start animation only when annotation is visible */\n const done$ = push$.pipe(takeLast(1))\n watchElementVisibility(el)\n .pipe(\n takeUntil(done$)\n )\n .subscribe(visible => {\n el.toggleAttribute(\"data-md-visible\", visible)\n })\n\n /* Track relative origin of tooltip */\n push$\n .pipe(\n throttleTime(500, animationFrameScheduler),\n map(() => container.getBoundingClientRect()),\n map(({ x }) => x)\n )\n .subscribe({\n\n /* Handle emission */\n next(origin) {\n if (origin)\n el.style.setProperty(\"--md-tooltip-0\", `${-origin}px`)\n else\n el.style.removeProperty(\"--md-tooltip-0\")\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-tooltip-0\")\n }\n })\n\n /* Close open annotation on click */\n const index = getElement(\":scope > :last-child\", el)\n const blur$ = fromEvent(index, \"mousedown\", { once: true })\n push$\n .pipe(\n switchMap(({ active }) => active ? blur$ : EMPTY),\n tap(ev => ev.preventDefault())\n )\n .subscribe(() => el.blur())\n\n /* Create and return component */\n return watchAnnotation(el, container)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n finalize,\n merge,\n share,\n takeLast,\n takeUntil\n} from \"rxjs\"\n\nimport {\n getElement,\n getElements,\n getOptionalElement\n} from \"~/browser\"\nimport { renderAnnotation } from \"~/templates\"\n\nimport { Component } from \"../../../_\"\nimport {\n Annotation,\n mountAnnotation\n} from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Find all annotation markers in the given code block\n *\n * @param container - Containing element\n *\n * @returns Annotation markers\n */\nfunction findAnnotationMarkers(container: HTMLElement): Text[] {\n const markers: Text[] = []\n for (const comment of getElements(\".c, .c1, .cm\", container)) {\n let match: RegExpExecArray | null\n\n /* Split text at marker and add to list */\n let text = comment.firstChild as Text\n if (text instanceof Text)\n while ((match = /\\((\\d+)\\)/.exec(text.textContent!))) {\n const marker = text.splitText(match.index)\n text = marker.splitText(match[0].length)\n markers.push(marker)\n }\n }\n return markers\n}\n\n/**\n * Swap the child nodes of two elements\n *\n * @param source - Source element\n * @param target - Target element\n */\nfunction swap(source: HTMLElement, target: HTMLElement): void {\n target.append(...Array.from(source.childNodes))\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount annotation list\n *\n * This function analyzes the containing code block and checks for markers\n * referring to elements in the given annotation list. If no markers are found,\n * the list is left untouched. Otherwise, list elements are rendered as\n * annotations inside the code block.\n *\n * @param el - Annotation list element\n * @param container - Containing element\n * @param options - Options\n *\n * @returns Annotation component observable\n */\nexport function mountAnnotationList(\n el: HTMLElement, container: HTMLElement, { print$ }: MountOptions\n): Observable> {\n\n /* Find and replace all markers with empty annotations */\n const annotations = new Map()\n for (const marker of findAnnotationMarkers(container)) {\n const [, id] = marker.textContent!.match(/\\((\\d+)\\)/)!\n if (getOptionalElement(`li:nth-child(${id})`, el)) {\n annotations.set(+id, renderAnnotation(+id))\n marker.replaceWith(annotations.get(+id)!)\n }\n }\n\n /* Keep list if there are no annotations to render */\n if (annotations.size === 0)\n return EMPTY\n\n /* Create and return component */\n return defer(() => {\n const done$ = new Subject()\n\n /* Handle print mode - see https://bit.ly/3rgPdpt */\n print$\n .pipe(\n takeUntil(done$.pipe(takeLast(1)))\n )\n .subscribe(active => {\n el.hidden = !active\n\n /* Show annotations in code block or list (print) */\n for (const [id, annotation] of annotations) {\n const inner = getElement(\".md-typeset\", annotation)\n const child = getElement(`li:nth-child(${id})`, el)\n if (!active)\n swap(child, inner)\n else\n swap(inner, child)\n }\n })\n\n /* Create and return component */\n return merge(...[...annotations]\n .map(([, annotation]) => (\n mountAnnotation(annotation, container)\n ))\n )\n .pipe(\n finalize(() => done$.complete()),\n share()\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n map,\n of,\n shareReplay,\n tap\n} from \"rxjs\"\n\nimport { watchScript } from \"~/browser\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../../_\"\n\nimport themeCSS from \"./index.css\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mermaid diagram\n */\nexport interface Mermaid {}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Mermaid instance observable\n */\nlet mermaid$: Observable\n\n/**\n * Global sequence number for diagrams\n */\nlet sequence = 0\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch Mermaid script\n *\n * @returns Mermaid scripts observable\n */\nfunction fetchScripts(): Observable {\n return typeof mermaid === \"undefined\" || mermaid instanceof Element\n ? watchScript(\"https://unpkg.com/mermaid@9.0.1/dist/mermaid.min.js/")\n : of(undefined)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount Mermaid diagram\n *\n * @param el - Code block element\n *\n * @returns Mermaid diagram component observable\n */\nexport function mountMermaid(\n el: HTMLElement\n): Observable> {\n el.classList.remove(\"mermaid\") // Hack: mitigate https://bit.ly/3CiN6Du\n mermaid$ ||= fetchScripts()\n .pipe(\n tap(() => mermaid.initialize({\n startOnLoad: false,\n themeCSS\n })),\n map(() => undefined),\n shareReplay(1)\n )\n\n /* Render diagram */\n mermaid$.subscribe(() => {\n el.classList.add(\"mermaid\") // Hack: mitigate https://bit.ly/3CiN6Du\n const id = `__mermaid_${sequence++}`\n const host = h(\"div\", { class: \"mermaid\" })\n mermaid.mermaidAPI.render(id, el.textContent, (svg: string) => {\n\n /* Create a shadow root and inject diagram */\n const shadow = host.attachShadow({ mode: \"closed\" })\n shadow.innerHTML = svg\n\n /* Replace code block with diagram */\n el.replaceWith(host)\n })\n })\n\n /* Create and return component */\n return mermaid$\n .pipe(\n map(() => ({ ref: el }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n filter,\n finalize,\n map,\n merge,\n tap\n} from \"rxjs\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Details\n */\nexport interface Details {\n action: \"open\" | \"close\" /* Details state */\n reveal?: boolean /* Details is revealed */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch details\n *\n * @param el - Details element\n * @param options - Options\n *\n * @returns Details observable\n */\nexport function watchDetails(\n el: HTMLDetailsElement, { target$, print$ }: WatchOptions\n): Observable
    {\n let open = true\n return merge(\n\n /* Open and focus details on location target */\n target$\n .pipe(\n map(target => target.closest(\"details:not([open])\")!),\n filter(details => el === details),\n map(() => ({\n action: \"open\", reveal: true\n }) as Details)\n ),\n\n /* Open details on print and close afterwards */\n print$\n .pipe(\n filter(active => active || !open),\n tap(() => open = el.open),\n map(active => ({\n action: active ? \"open\" : \"close\"\n }) as Details)\n )\n )\n}\n\n/**\n * Mount details\n *\n * This function ensures that `details` tags are opened on anchor jumps and\n * prior to printing, so the whole content of the page is visible.\n *\n * @param el - Details element\n * @param options - Options\n *\n * @returns Details component observable\n */\nexport function mountDetails(\n el: HTMLDetailsElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject
    ()\n push$.subscribe(({ action, reveal }) => {\n if (action === \"open\")\n el.setAttribute(\"open\", \"\")\n else\n el.removeAttribute(\"open\")\n if (reveal)\n el.scrollIntoView()\n })\n\n /* Create and return component */\n return watchDetails(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, of } from \"rxjs\"\n\nimport { renderTable } from \"~/templates\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Data table\n */\nexport interface DataTable {}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Sentinel for replacement\n */\nconst sentinel = h(\"table\")\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount data table\n *\n * This function wraps a data table in another scrollable container, so it can\n * be smoothly scrolled on smaller screen sizes and won't break the layout.\n *\n * @param el - Data table element\n *\n * @returns Data table component observable\n */\nexport function mountDataTable(\n el: HTMLElement\n): Observable> {\n el.replaceWith(sentinel)\n sentinel.replaceWith(renderTable(el))\n\n /* Create and return component */\n return of({ ref: el })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n asyncScheduler,\n auditTime,\n combineLatest,\n defer,\n finalize,\n fromEvent,\n map,\n merge,\n skip,\n startWith,\n subscribeOn,\n takeLast,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n getElement,\n getElementContentOffset,\n getElementContentSize,\n getElementOffset,\n getElementSize,\n getElements,\n watchElementContentOffset,\n watchElementSize\n} from \"~/browser\"\nimport { renderTabbedControl } from \"~/templates\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Content tabs\n */\nexport interface ContentTabs {\n active: HTMLLabelElement /* Active tab label */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch content tabs\n *\n * @param el - Content tabs element\n *\n * @returns Content tabs observable\n */\nexport function watchContentTabs(\n el: HTMLElement\n): Observable {\n const inputs = getElements(\":scope > input\", el)\n const initial = inputs.find(input => input.checked) || inputs[0]\n return merge(...inputs.map(input => fromEvent(input, \"change\")\n .pipe(\n map(() => getElement(`label[for=\"${input.id}\"]`))\n )\n ))\n .pipe(\n startWith(getElement(`label[for=\"${initial.id}\"]`)),\n map(active => ({ active }))\n )\n}\n\n/**\n * Mount content tabs\n *\n * This function scrolls the active tab into view. While this functionality is\n * provided by browsers as part of `scrollInfoView`, browsers will always also\n * scroll the vertical axis, which we do not want. Thus, we decided to provide\n * this functionality ourselves.\n *\n * @param el - Content tabs element\n *\n * @returns Content tabs component observable\n */\nexport function mountContentTabs(\n el: HTMLElement\n): Observable> {\n\n /* Render content tab previous button for pagination */\n const prev = renderTabbedControl(\"prev\")\n el.append(prev)\n\n /* Render content tab next button for pagination */\n const next = renderTabbedControl(\"next\")\n el.append(next)\n\n /* Mount component on subscription */\n const container = getElement(\".tabbed-labels\", el)\n return defer(() => {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n combineLatest([push$, watchElementSize(el)])\n .pipe(\n auditTime(1, animationFrameScheduler),\n takeUntil(done$)\n )\n .subscribe({\n\n /* Handle emission */\n next([{ active }, size]) {\n const offset = getElementOffset(active)\n const { width } = getElementSize(active)\n\n /* Set tab indicator offset and width */\n el.style.setProperty(\"--md-indicator-x\", `${offset.x}px`)\n el.style.setProperty(\"--md-indicator-width\", `${width}px`)\n\n /* Scroll container to active content tab */\n const content = getElementContentOffset(container)\n if (\n offset.x < content.x ||\n offset.x + width > content.x + size.width\n )\n container.scrollTo({\n left: Math.max(0, offset.x - 16),\n behavior: \"smooth\"\n })\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-indicator-x\")\n el.style.removeProperty(\"--md-indicator-width\")\n }\n })\n\n /* Hide content tab buttons on borders */\n combineLatest([\n watchElementContentOffset(container),\n watchElementSize(container)\n ])\n .pipe(\n takeUntil(done$)\n )\n .subscribe(([offset, size]) => {\n const content = getElementContentSize(container)\n prev.hidden = offset.x < 16\n next.hidden = offset.x > content.width - size.width - 16\n })\n\n /* Paginate content tab container on click */\n merge(\n fromEvent(prev, \"click\").pipe(map(() => -1)),\n fromEvent(next, \"click\").pipe(map(() => +1))\n )\n .pipe(\n takeUntil(done$)\n )\n .subscribe(direction => {\n const { width } = getElementSize(container)\n container.scrollBy({\n left: width * direction,\n behavior: \"smooth\"\n })\n })\n\n /* Set up linking of content tabs, if enabled */\n if (feature(\"content.tabs.link\"))\n push$.pipe(skip(1))\n .subscribe(({ active }) => {\n const tab = active.innerText.trim()\n for (const set of getElements(\"[data-tabs]\"))\n for (const input of getElements(\n \":scope > input\", set\n )) {\n const label = getElement(`label[for=\"${input.id}\"]`)\n if (label.innerText.trim() === tab) {\n input.click()\n break\n }\n }\n\n /* Persist active tabs in local storage */\n const tabs = __md_get(\"__tabs\") || []\n __md_set(\"__tabs\", [...new Set([tab, ...tabs])])\n })\n\n /* Create and return component */\n return watchContentTabs(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n .pipe(\n subscribeOn(asyncScheduler)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, merge } from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Annotation } from \"../annotation\"\nimport {\n CodeBlock,\n Mermaid,\n mountCodeBlock,\n mountMermaid\n} from \"../code\"\nimport {\n Details,\n mountDetails\n} from \"../details\"\nimport {\n DataTable,\n mountDataTable\n} from \"../table\"\nimport {\n ContentTabs,\n mountContentTabs\n} from \"../tabs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Content\n */\nexport type Content =\n | Annotation\n | ContentTabs\n | CodeBlock\n | Mermaid\n | DataTable\n | Details\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount content\n *\n * This function mounts all components that are found in the content of the\n * actual article, including code blocks, data tables and details.\n *\n * @param el - Content element\n * @param options - Options\n *\n * @returns Content component observable\n */\nexport function mountContent(\n el: HTMLElement, { target$, print$ }: MountOptions\n): Observable> {\n return merge(\n\n /* Code blocks */\n ...getElements(\"pre:not(.mermaid) > code\", el)\n .map(child => mountCodeBlock(child, { print$ })),\n\n /* Mermaid diagrams */\n ...getElements(\"pre.mermaid\", el)\n .map(child => mountMermaid(child)),\n\n /* Data tables */\n ...getElements(\"table:not([class])\", el)\n .map(child => mountDataTable(child)),\n\n /* Details */\n ...getElements(\"details\", el)\n .map(child => mountDetails(child, { target$, print$ })),\n\n /* Content tabs */\n ...getElements(\"[data-tabs]\", el)\n .map(child => mountContentTabs(child))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n delay,\n finalize,\n map,\n merge,\n of,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { getElement } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Dialog\n */\nexport interface Dialog {\n message: string /* Dialog message */\n active: boolean /* Dialog is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n alert$: Subject /* Alert subject */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n alert$: Subject /* Alert subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch dialog\n *\n * @param _el - Dialog element\n * @param options - Options\n *\n * @returns Dialog observable\n */\nexport function watchDialog(\n _el: HTMLElement, { alert$ }: WatchOptions\n): Observable {\n return alert$\n .pipe(\n switchMap(message => merge(\n of(true),\n of(false).pipe(delay(2000))\n )\n .pipe(\n map(active => ({ message, active }))\n )\n )\n )\n}\n\n/**\n * Mount dialog\n *\n * This function reveals the dialog in the right corner when a new alert is\n * emitted through the subject that is passed as part of the options.\n *\n * @param el - Dialog element\n * @param options - Options\n *\n * @returns Dialog component observable\n */\nexport function mountDialog(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const inner = getElement(\".md-typeset\", el)\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ message, active }) => {\n el.classList.toggle(\"md-dialog--active\", active)\n inner.textContent = message\n })\n\n /* Create and return component */\n return watchDialog(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatest,\n combineLatestWith,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n map,\n of,\n shareReplay,\n startWith,\n switchMap,\n takeLast,\n takeUntil\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n watchElementSize,\n watchToggle\n} from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Main } from \"../../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface Header {\n height: number /* Header visible height */\n hidden: boolean /* Header is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Compute whether the header is hidden\n *\n * If the user scrolls past a certain threshold, the header can be hidden when\n * scrolling down, and shown when scrolling up.\n *\n * @param options - Options\n *\n * @returns Toggle observable\n */\nfunction isHidden({ viewport$ }: WatchOptions): Observable {\n if (!feature(\"header.autohide\"))\n return of(false)\n\n /* Compute direction and turning point */\n const direction$ = viewport$\n .pipe(\n map(({ offset: { y } }) => y),\n bufferCount(2, 1),\n map(([a, b]) => [a < b, b] as const),\n distinctUntilKeyChanged(0)\n )\n\n /* Compute whether header should be hidden */\n const hidden$ = combineLatest([viewport$, direction$])\n .pipe(\n filter(([{ offset }, [, y]]) => Math.abs(y - offset.y) > 100),\n map(([, [direction]]) => direction),\n distinctUntilChanged()\n )\n\n /* Compute threshold for hiding */\n const search$ = watchToggle(\"search\")\n return combineLatest([viewport$, search$])\n .pipe(\n map(([{ offset }, search]) => offset.y > 400 && !search),\n distinctUntilChanged(),\n switchMap(active => active ? hidden$ : of(false)),\n startWith(false)\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header\n *\n * @param el - Header element\n * @param options - Options\n *\n * @returns Header observable\n */\nexport function watchHeader(\n el: HTMLElement, options: WatchOptions\n): Observable
    {\n return defer(() => combineLatest([\n watchElementSize(el),\n isHidden(options)\n ]))\n .pipe(\n map(([{ height }, hidden]) => ({\n height,\n hidden\n })),\n distinctUntilChanged((a, b) => (\n a.height === b.height &&\n a.hidden === b.hidden\n )),\n shareReplay(1)\n )\n}\n\n/**\n * Mount header\n *\n * This function manages the different states of the header, i.e. whether it's\n * hidden or rendered with a shadow. This depends heavily on the main area.\n *\n * @param el - Header element\n * @param options - Options\n *\n * @returns Header component observable\n */\nexport function mountHeader(\n el: HTMLElement, { header$, main$ }: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject
    ()\n const done$ = push$.pipe(takeLast(1))\n push$\n .pipe(\n distinctUntilKeyChanged(\"active\"),\n combineLatestWith(header$)\n )\n .subscribe(([{ active }, { hidden }]) => {\n el.classList.toggle(\"md-header--shadow\", active && !hidden)\n el.hidden = hidden\n })\n\n /* Link to main area */\n main$.subscribe(push$)\n\n /* Create and return component */\n return header$\n .pipe(\n takeUntil(done$),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n distinctUntilKeyChanged,\n finalize,\n map,\n tap\n} from \"rxjs\"\n\nimport {\n Viewport,\n getElementSize,\n getOptionalElement,\n watchViewportAt\n} from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Header } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface HeaderTitle {\n active: boolean /* Header title is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header title\n *\n * @param el - Heading element\n * @param options - Options\n *\n * @returns Header title observable\n */\nexport function watchHeaderTitle(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n return watchViewportAt(el, { viewport$, header$ })\n .pipe(\n map(({ offset: { y } }) => {\n const { height } = getElementSize(el)\n return {\n active: y >= height\n }\n }),\n distinctUntilKeyChanged(\"active\")\n )\n}\n\n/**\n * Mount header title\n *\n * This function swaps the header title from the site title to the title of the\n * current page when the user scrolls past the first headline.\n *\n * @param el - Header title element\n * @param options - Options\n *\n * @returns Header title component observable\n */\nexport function mountHeaderTitle(\n el: HTMLElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ active }) => {\n el.classList.toggle(\"md-header__title--active\", active)\n })\n\n /* Obtain headline, if any */\n const heading = getOptionalElement(\"article h1\")\n if (typeof heading === \"undefined\")\n return EMPTY\n\n /* Create and return component */\n return watchHeaderTitle(heading, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n map,\n switchMap\n} from \"rxjs\"\n\nimport {\n Viewport,\n watchElementSize\n} from \"~/browser\"\n\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Main area\n */\nexport interface Main {\n offset: number /* Main area top offset */\n height: number /* Main area visible height */\n active: boolean /* Main area is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch main area\n *\n * This function returns an observable that computes the visual parameters of\n * the main area which depends on the viewport vertical offset and height, as\n * well as the height of the header element, if the header is fixed.\n *\n * @param el - Main area element\n * @param options - Options\n *\n * @returns Main area observable\n */\nexport function watchMain(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable
    {\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n map(({ height }) => height),\n distinctUntilChanged()\n )\n\n /* Compute the main area's top and bottom borders */\n const border$ = adjust$\n .pipe(\n switchMap(() => watchElementSize(el)\n .pipe(\n map(({ height }) => ({\n top: el.offsetTop,\n bottom: el.offsetTop + height\n })),\n distinctUntilKeyChanged(\"bottom\")\n )\n )\n )\n\n /* Compute the main area's offset, visible height and if we scrolled past */\n return combineLatest([adjust$, border$, viewport$])\n .pipe(\n map(([header, { top, bottom }, { offset: { y }, size: { height } }]) => {\n height = Math.max(0, height\n - Math.max(0, top - y, header)\n - Math.max(0, height + y - bottom)\n )\n return {\n offset: top - header,\n height,\n active: top - header <= y\n }\n }),\n distinctUntilChanged((a, b) => (\n a.offset === b.offset &&\n a.height === b.height &&\n a.active === b.active\n ))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n asyncScheduler,\n defer,\n finalize,\n fromEvent,\n map,\n mergeMap,\n observeOn,\n of,\n shareReplay,\n startWith,\n tap\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Palette colors\n */\nexport interface PaletteColor {\n scheme?: string /* Color scheme */\n primary?: string /* Primary color */\n accent?: string /* Accent color */\n}\n\n/**\n * Palette\n */\nexport interface Palette {\n index: number /* Palette index */\n color: PaletteColor /* Palette colors */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch color palette\n *\n * @param inputs - Color palette element\n *\n * @returns Color palette observable\n */\nexport function watchPalette(\n inputs: HTMLInputElement[]\n): Observable {\n const current = __md_get(\"__palette\") || {\n index: inputs.findIndex(input => matchMedia(\n input.getAttribute(\"data-md-color-media\")!\n ).matches)\n }\n\n /* Emit changes in color palette */\n return of(...inputs)\n .pipe(\n mergeMap(input => fromEvent(input, \"change\")\n .pipe(\n map(() => input)\n )\n ),\n startWith(inputs[Math.max(0, current.index)]),\n map(input => ({\n index: inputs.indexOf(input),\n color: {\n scheme: input.getAttribute(\"data-md-color-scheme\"),\n primary: input.getAttribute(\"data-md-color-primary\"),\n accent: input.getAttribute(\"data-md-color-accent\")\n }\n } as Palette)),\n shareReplay(1)\n )\n}\n\n/**\n * Mount color palette\n *\n * @param el - Color palette element\n *\n * @returns Color palette component observable\n */\nexport function mountPalette(\n el: HTMLElement\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(palette => {\n document.body.setAttribute(\"data-md-color-switching\", \"\")\n\n /* Set color palette */\n for (const [key, value] of Object.entries(palette.color))\n document.body.setAttribute(`data-md-color-${key}`, value)\n\n /* Toggle visibility */\n for (let index = 0; index < inputs.length; index++) {\n const label = inputs[index].nextElementSibling\n if (label instanceof HTMLElement)\n label.hidden = palette.index !== index\n }\n\n /* Persist preference in local storage */\n __md_set(\"__palette\", palette)\n })\n\n /* Revert transition durations after color switch */\n push$.pipe(observeOn(asyncScheduler))\n .subscribe(() => {\n document.body.removeAttribute(\"data-md-color-switching\")\n })\n\n /* Create and return component */\n const inputs = getElements(\"input\", el)\n return watchPalette(inputs)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ClipboardJS from \"clipboard\"\nimport {\n Observable,\n Subject,\n map,\n tap\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport { getElement } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n alert$: Subject /* Alert subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Extract text to copy\n *\n * @param el - HTML element\n *\n * @returns Extracted text\n */\nfunction extract(el: HTMLElement): string {\n el.setAttribute(\"data-md-copying\", \"\")\n const text = el.innerText\n el.removeAttribute(\"data-md-copying\")\n return text\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up Clipboard.js integration\n *\n * @param options - Options\n */\nexport function setupClipboardJS(\n { alert$ }: SetupOptions\n): void {\n if (ClipboardJS.isSupported()) {\n new Observable(subscriber => {\n new ClipboardJS(\"[data-clipboard-target], [data-clipboard-text]\", {\n text: el => (\n el.getAttribute(\"data-clipboard-text\")! ||\n extract(getElement(\n el.getAttribute(\"data-clipboard-target\")!\n ))\n )\n })\n .on(\"success\", ev => subscriber.next(ev))\n })\n .pipe(\n tap(ev => {\n const trigger = ev.trigger as HTMLElement\n trigger.focus()\n }),\n map(() => translation(\"clipboard.copied\"))\n )\n .subscribe(alert$)\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map,\n of,\n tap\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport { getElements, requestXML } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sitemap, i.e. a list of URLs\n */\nexport type Sitemap = string[]\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Preprocess a list of URLs\n *\n * This function replaces the `site_url` in the sitemap with the actual base\n * URL, to allow instant loading to work in occasions like Netlify previews.\n *\n * @param urls - URLs\n *\n * @returns URL path parts\n */\nfunction preprocess(urls: Sitemap): Sitemap {\n if (urls.length < 2)\n return [\"\"]\n\n /* Take the first two URLs and remove everything after the last slash */\n const [root, next] = [...urls]\n .sort((a, b) => a.length - b.length)\n .map(url => url.replace(/[^/]+$/, \"\"))\n\n /* Compute common prefix */\n let index = 0\n if (root === next)\n index = root.length\n else\n while (root.charCodeAt(index) === next.charCodeAt(index))\n index++\n\n /* Remove common prefix and return in original order */\n return urls.map(url => url.replace(root.slice(0, index), \"\"))\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch the sitemap for the given base URL\n *\n * @param base - Base URL\n *\n * @returns Sitemap observable\n */\nexport function fetchSitemap(base?: URL): Observable {\n const cached = __md_get(\"__sitemap\", sessionStorage, base)\n if (cached) {\n return of(cached)\n } else {\n const config = configuration()\n return requestXML(new URL(\"sitemap.xml\", base || config.base))\n .pipe(\n map(sitemap => preprocess(getElements(\"loc\", sitemap)\n .map(node => node.textContent!)\n )),\n catchError(() => EMPTY), // @todo refactor instant loading\n defaultIfEmpty([]),\n tap(sitemap => __md_set(\"__sitemap\", sitemap, sessionStorage, base))\n )\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n NEVER,\n Observable,\n Subject,\n bufferCount,\n catchError,\n concatMap,\n debounceTime,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n fromEvent,\n map,\n merge,\n of,\n sample,\n share,\n skip,\n skipUntil,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"~/_\"\nimport {\n Viewport,\n ViewportOffset,\n getElements,\n getOptionalElement,\n request,\n setLocation,\n setLocationHash\n} from \"~/browser\"\nimport { getComponentElement } from \"~/components\"\nimport { h } from \"~/utilities\"\n\nimport { fetchSitemap } from \"../sitemap\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * History state\n */\nexport interface HistoryState {\n url: URL /* State URL */\n offset?: ViewportOffset /* State viewport offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Subject /* Document subject */\n location$: Subject /* Location subject */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up instant loading\n *\n * When fetching, theoretically, we could use `responseType: \"document\"`, but\n * since all MkDocs links are relative, we need to make sure that the current\n * location matches the document we just loaded. Otherwise any relative links\n * in the document could use the old location.\n *\n * This is the reason why we need to synchronize history events and the process\n * of fetching the document for navigation changes (except `popstate` events):\n *\n * 1. Fetch document via `XMLHTTPRequest`\n * 2. Set new location via `history.pushState`\n * 3. Parse and emit fetched document\n *\n * For `popstate` events, we must not use `history.pushState`, or the forward\n * history will be irreversibly overwritten. In case the request fails, the\n * location change is dispatched regularly.\n *\n * @param options - Options\n */\nexport function setupInstantLoading(\n { document$, location$, viewport$ }: SetupOptions\n): void {\n const config = configuration()\n if (location.protocol === \"file:\")\n return\n\n /* Disable automatic scroll restoration */\n if (\"scrollRestoration\" in history) {\n history.scrollRestoration = \"manual\"\n\n /* Hack: ensure that reloads restore viewport offset */\n fromEvent(window, \"beforeunload\")\n .subscribe(() => {\n history.scrollRestoration = \"auto\"\n })\n }\n\n /* Hack: ensure absolute favicon link to omit 404s when switching */\n const favicon = getOptionalElement(\"link[rel=icon]\")\n if (typeof favicon !== \"undefined\")\n favicon.href = favicon.href\n\n /* Intercept internal navigation */\n const push$ = fetchSitemap()\n .pipe(\n map(paths => paths.map(path => `${new URL(path, config.base)}`)),\n switchMap(urls => fromEvent(document.body, \"click\")\n .pipe(\n filter(ev => !ev.metaKey && !ev.ctrlKey),\n switchMap(ev => {\n if (ev.target instanceof Element) {\n const el = ev.target.closest(\"a\")\n if (el && !el.target) {\n const url = new URL(el.href)\n\n /* Canonicalize URL */\n url.search = \"\"\n url.hash = \"\"\n\n /* Check if URL should be intercepted */\n if (\n url.pathname !== location.pathname &&\n urls.includes(url.toString())\n ) {\n ev.preventDefault()\n return of({\n url: new URL(el.href)\n })\n }\n }\n }\n return NEVER\n })\n )\n ),\n share()\n )\n\n /* Intercept history back and forward */\n const pop$ = fromEvent(window, \"popstate\")\n .pipe(\n filter(ev => ev.state !== null),\n map(ev => ({\n url: new URL(location.href),\n offset: ev.state\n })),\n share()\n )\n\n /* Emit location change */\n merge(push$, pop$)\n .pipe(\n distinctUntilChanged((a, b) => a.url.href === b.url.href),\n map(({ url }) => url)\n )\n .subscribe(location$)\n\n /* Fetch document via `XMLHTTPRequest` */\n const response$ = location$\n .pipe(\n distinctUntilKeyChanged(\"pathname\"),\n switchMap(url => request(url.href)\n .pipe(\n catchError(() => {\n setLocation(url)\n return NEVER\n })\n )\n ),\n share()\n )\n\n /* Set new location via `history.pushState` */\n push$\n .pipe(\n sample(response$)\n )\n .subscribe(({ url }) => {\n history.pushState({}, \"\", `${url}`)\n })\n\n /* Parse and emit fetched document */\n const dom = new DOMParser()\n response$\n .pipe(\n switchMap(res => res.text()),\n map(res => dom.parseFromString(res, \"text/html\"))\n )\n .subscribe(document$)\n\n /* Replace meta tags and components */\n document$\n .pipe(\n skip(1)\n )\n .subscribe(replacement => {\n for (const selector of [\n\n /* Meta tags */\n \"title\",\n \"link[rel=canonical]\",\n \"meta[name=author]\",\n \"meta[name=description]\",\n\n /* Components */\n \"[data-md-component=announce]\",\n \"[data-md-component=container]\",\n \"[data-md-component=header-topic]\",\n \"[data-md-component=outdated]\",\n \"[data-md-component=logo]\",\n \"[data-md-component=skip]\",\n ...feature(\"navigation.tabs.sticky\")\n ? [\"[data-md-component=tabs]\"]\n : []\n ]) {\n const source = getOptionalElement(selector)\n const target = getOptionalElement(selector, replacement)\n if (\n typeof source !== \"undefined\" &&\n typeof target !== \"undefined\"\n ) {\n source.replaceWith(target)\n }\n }\n })\n\n /* Re-evaluate scripts */\n document$\n .pipe(\n skip(1),\n map(() => getComponentElement(\"container\")),\n switchMap(el => getElements(\"script\", el)),\n concatMap(el => {\n const script = h(\"script\")\n if (el.src) {\n for (const name of el.getAttributeNames())\n script.setAttribute(name, el.getAttribute(name)!)\n el.replaceWith(script)\n\n /* Complete when script is loaded */\n return new Observable(observer => {\n script.onload = () => observer.complete()\n })\n\n /* Complete immediately */\n } else {\n script.textContent = el.textContent\n el.replaceWith(script)\n return EMPTY\n }\n })\n )\n .subscribe()\n\n /* Emit history state change */\n merge(push$, pop$)\n .pipe(\n sample(document$)\n )\n .subscribe(({ url, offset }) => {\n if (url.hash && !offset) {\n setLocationHash(url.hash)\n } else {\n window.scrollTo(0, offset?.y || 0)\n }\n })\n\n /* Debounce update of viewport offset */\n viewport$\n .pipe(\n skipUntil(push$),\n debounceTime(250),\n distinctUntilKeyChanged(\"offset\")\n )\n .subscribe(({ offset }) => {\n history.replaceState(offset, \"\")\n })\n\n /* Set viewport offset from history */\n merge(push$, pop$)\n .pipe(\n bufferCount(2, 1),\n filter(([a, b]) => a.url.pathname === b.url.pathname),\n map(([, state]) => state)\n )\n .subscribe(({ offset }) => {\n window.scrollTo(0, offset?.y || 0)\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexDocument } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search document\n */\nexport interface SearchDocument extends SearchIndexDocument {\n parent?: SearchIndexDocument /* Parent article */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search document mapping\n */\nexport type SearchDocumentMap = Map\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search document mapping\n *\n * @param docs - Search index documents\n *\n * @returns Search document map\n */\nexport function setupSearchDocumentMap(\n docs: SearchIndexDocument[]\n): SearchDocumentMap {\n const documents = new Map()\n const parents = new Set()\n for (const doc of docs) {\n const [path, hash] = doc.location.split(\"#\")\n\n /* Extract location, title and tags */\n const location = doc.location\n const title = doc.title\n const tags = doc.tags\n\n /* Escape and cleanup text */\n const text = escapeHTML(doc.text)\n .replace(/\\s+(?=[,.:;!?])/g, \"\")\n .replace(/\\s+/g, \" \")\n\n /* Handle section */\n if (hash) {\n const parent = documents.get(path)!\n\n /* Ignore first section, override article */\n if (!parents.has(parent)) {\n parent.title = doc.title\n parent.text = text\n\n /* Remember that we processed the article */\n parents.add(parent)\n\n /* Add subsequent section */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n parent\n })\n }\n\n /* Add article */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n ...tags && { tags }\n })\n }\n }\n return documents\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexConfig } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlight function\n *\n * @param value - Value\n *\n * @returns Highlighted value\n */\nexport type SearchHighlightFn = (value: string) => string\n\n/**\n * Search highlight factory function\n *\n * @param query - Query value\n *\n * @returns Search highlight function\n */\nexport type SearchHighlightFactoryFn = (query: string) => SearchHighlightFn\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search highlighter\n *\n * @param config - Search index configuration\n * @param escape - Whether to escape HTML\n *\n * @returns Search highlight factory function\n */\nexport function setupSearchHighlighter(\n config: SearchIndexConfig, escape: boolean\n): SearchHighlightFactoryFn {\n const separator = new RegExp(config.separator, \"img\")\n const highlight = (_: unknown, data: string, term: string) => {\n return `${data}${term}`\n }\n\n /* Return factory function */\n return (query: string) => {\n query = query\n .replace(/[\\s*+\\-:~^]+/g, \" \")\n .trim()\n\n /* Create search term match expression */\n const match = new RegExp(`(^|${config.separator})(${\n query\n .replace(/[|\\\\{}()[\\]^$+*?.-]/g, \"\\\\$&\")\n .replace(separator, \"|\")\n })`, \"img\")\n\n /* Highlight string value */\n return value => (\n escape\n ? escapeHTML(value)\n : value\n )\n .replace(match, highlight)\n .replace(/<\\/mark>(\\s+)]*>/img, \"$1\")\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search transformation function\n *\n * @param value - Query value\n *\n * @returns Transformed query value\n */\nexport type SearchTransformFn = (value: string) => string\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Default transformation function\n *\n * 1. Search for terms in quotation marks and prepend a `+` modifier to denote\n * that the resulting document must contain all terms, converting the query\n * to an `AND` query (as opposed to the default `OR` behavior). While users\n * may expect terms enclosed in quotation marks to map to span queries, i.e.\n * for which order is important, Lunr.js doesn't support them, so the best\n * we can do is to convert the terms to an `AND` query.\n *\n * 2. Replace control characters which are not located at the beginning of the\n * query or preceded by white space, or are not followed by a non-whitespace\n * character or are at the end of the query string. Furthermore, filter\n * unmatched quotation marks.\n *\n * 3. Trim excess whitespace from left and right.\n *\n * @param query - Query value\n *\n * @returns Transformed query value\n */\nexport function defaultTransform(query: string): string {\n return query\n .split(/\"([^\"]+)\"/g) /* => 1 */\n .map((terms, index) => index & 1\n ? terms.replace(/^\\b|^(?![^\\x00-\\x7F]|$)|\\s+/g, \" +\")\n : terms\n )\n .join(\"\")\n .replace(/\"|(?:^|\\s+)[*+\\-:^~]+(?=\\s+|$)/g, \"\") /* => 2 */\n .trim() /* => 3 */\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchIndex, SearchResult } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search message type\n */\nexport const enum SearchMessageType {\n SETUP, /* Search index setup */\n READY, /* Search index ready */\n QUERY, /* Search query */\n RESULT /* Search results */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Message containing the data necessary to setup the search index\n */\nexport interface SearchSetupMessage {\n type: SearchMessageType.SETUP /* Message type */\n data: SearchIndex /* Message data */\n}\n\n/**\n * Message indicating the search index is ready\n */\nexport interface SearchReadyMessage {\n type: SearchMessageType.READY /* Message type */\n}\n\n/**\n * Message containing a search query\n */\nexport interface SearchQueryMessage {\n type: SearchMessageType.QUERY /* Message type */\n data: string /* Message data */\n}\n\n/**\n * Message containing results for a search query\n */\nexport interface SearchResultMessage {\n type: SearchMessageType.RESULT /* Message type */\n data: SearchResult /* Message data */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Message exchanged with the search worker\n */\nexport type SearchMessage =\n | SearchSetupMessage\n | SearchReadyMessage\n | SearchQueryMessage\n | SearchResultMessage\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Type guard for search setup messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchSetupMessage(\n message: SearchMessage\n): message is SearchSetupMessage {\n return message.type === SearchMessageType.SETUP\n}\n\n/**\n * Type guard for search ready messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchReadyMessage(\n message: SearchMessage\n): message is SearchReadyMessage {\n return message.type === SearchMessageType.READY\n}\n\n/**\n * Type guard for search query messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchQueryMessage(\n message: SearchMessage\n): message is SearchQueryMessage {\n return message.type === SearchMessageType.QUERY\n}\n\n/**\n * Type guard for search result messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchResultMessage(\n message: SearchMessage\n): message is SearchResultMessage {\n return message.type === SearchMessageType.RESULT\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n ObservableInput,\n Subject,\n from,\n map,\n share\n} from \"rxjs\"\n\nimport { configuration, feature, translation } from \"~/_\"\nimport { WorkerHandler, watchWorker } from \"~/browser\"\n\nimport { SearchIndex } from \"../../_\"\nimport {\n SearchOptions,\n SearchPipeline\n} from \"../../options\"\nimport {\n SearchMessage,\n SearchMessageType,\n SearchSetupMessage,\n isSearchResultMessage\n} from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search worker\n */\nexport type SearchWorker = WorkerHandler\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up search index\n *\n * @param data - Search index\n *\n * @returns Search index\n */\nfunction setupSearchIndex({ config, docs }: SearchIndex): SearchIndex {\n\n /* Override default language with value from translation */\n if (config.lang.length === 1 && config.lang[0] === \"en\")\n config.lang = [\n translation(\"search.config.lang\")\n ]\n\n /* Override default separator with value from translation */\n if (config.separator === \"[\\\\s\\\\-]+\")\n config.separator = translation(\"search.config.separator\")\n\n /* Set pipeline from translation */\n const pipeline = translation(\"search.config.pipeline\")\n .split(/\\s*,\\s*/)\n .filter(Boolean) as SearchPipeline\n\n /* Determine search options */\n const options: SearchOptions = {\n pipeline,\n suggestions: feature(\"search.suggest\")\n }\n\n /* Return search index after defaulting */\n return { config, docs, options }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up search worker\n *\n * This function creates a web worker to set up and query the search index,\n * which is done using Lunr.js. The index must be passed as an observable to\n * enable hacks like _localsearch_ via search index embedding as JSON.\n *\n * @param url - Worker URL\n * @param index - Search index observable input\n *\n * @returns Search worker\n */\nexport function setupSearchWorker(\n url: string, index: ObservableInput\n): SearchWorker {\n const config = configuration()\n const worker = new Worker(url)\n\n /* Create communication channels and resolve relative links */\n const tx$ = new Subject()\n const rx$ = watchWorker(worker, { tx$ })\n .pipe(\n map(message => {\n if (isSearchResultMessage(message)) {\n for (const result of message.data.items)\n for (const document of result)\n document.location = `${new URL(document.location, config.base)}`\n }\n return message\n }),\n share()\n )\n\n /* Set up search index */\n from(index)\n .pipe(\n map(data => ({\n type: SearchMessageType.SETUP,\n data: setupSearchIndex(data)\n } as SearchSetupMessage))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Return search worker */\n return { tx$, rx$ }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Subject,\n catchError,\n combineLatest,\n filter,\n fromEvent,\n map,\n of,\n switchMap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport {\n getElement,\n getLocation,\n requestJSON,\n setLocation\n} from \"~/browser\"\nimport { getComponentElements } from \"~/components\"\nimport {\n Version,\n renderVersionSelector\n} from \"~/templates\"\n\nimport { fetchSitemap } from \"../sitemap\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Subject /* Document subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up version selector\n *\n * @param options - Options\n */\nexport function setupVersionSelector(\n { document$ }: SetupOptions\n): void {\n const config = configuration()\n const versions$ = requestJSON(\n new URL(\"../versions.json\", config.base)\n )\n .pipe(\n catchError(() => EMPTY) // @todo refactor instant loading\n )\n\n /* Determine current version */\n const current$ = versions$\n .pipe(\n map(versions => {\n const [, current] = config.base.match(/([^/]+)\\/?$/)!\n return versions.find(({ version, aliases }) => (\n version === current || aliases.includes(current)\n )) || versions[0]\n })\n )\n\n /* Intercept inter-version navigation */\n versions$\n .pipe(\n map(versions => new Map(versions.map(version => [\n `${new URL(`../${version.version}/`, config.base)}`,\n version\n ]))),\n switchMap(urls => fromEvent(document.body, \"click\")\n .pipe(\n filter(ev => !ev.metaKey && !ev.ctrlKey),\n withLatestFrom(current$),\n switchMap(([ev, current]) => {\n if (ev.target instanceof Element) {\n const el = ev.target.closest(\"a\")\n if (el && !el.target && urls.has(el.href)) {\n const url = el.href\n // This is a temporary hack to detect if a version inside the\n // version selector or on another part of the site was clicked.\n // If we're inside the version selector, we definitely want to\n // find the same page, as we might have different deployments\n // due to aliases. However, if we're outside the version\n // selector, we must abort here, because we might otherwise\n // interfere with instant loading. We need to refactor this\n // at some point together with instant loading.\n //\n // See https://github.com/squidfunk/mkdocs-material/issues/4012\n if (!ev.target.closest(\".md-version\")) {\n const version = urls.get(url)!\n if (version === current)\n return EMPTY\n }\n ev.preventDefault()\n return of(url)\n }\n }\n return EMPTY\n }),\n switchMap(url => {\n const { version } = urls.get(url)!\n return fetchSitemap(new URL(url))\n .pipe(\n map(sitemap => {\n const location = getLocation()\n const path = location.href.replace(config.base, \"\")\n return sitemap.includes(path)\n ? new URL(`../${version}/${path}`, config.base)\n : new URL(url)\n })\n )\n })\n )\n )\n )\n .subscribe(url => setLocation(url))\n\n /* Render version selector and warning */\n combineLatest([versions$, current$])\n .subscribe(([versions, current]) => {\n const topic = getElement(\".md-header__topic\")\n topic.appendChild(renderVersionSelector(versions, current))\n })\n\n /* Integrate outdated version banner with instant loading */\n document$.pipe(switchMap(() => current$))\n .subscribe(current => {\n\n /* Check if version state was already determined */\n let outdated = __md_get(\"__outdated\", sessionStorage)\n if (outdated === null) {\n const latest = config.version?.default || \"latest\"\n outdated = !current.aliases.includes(latest)\n\n /* Persist version state in session storage */\n __md_set(\"__outdated\", outdated, sessionStorage)\n }\n\n /* Unhide outdated version banner */\n if (outdated)\n for (const warning of getComponentElements(\"outdated\"))\n warning.hidden = false\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n combineLatest,\n delay,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n share,\n shareReplay,\n startWith,\n take,\n takeLast,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport {\n getLocation,\n setToggle,\n watchElementFocus,\n watchToggle\n} from \"~/browser\"\nimport {\n SearchMessageType,\n SearchQueryMessage,\n SearchWorker,\n defaultTransform,\n isSearchReadyMessage\n} from \"~/integrations\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search query\n */\nexport interface SearchQuery {\n value: string /* Query value */\n focus: boolean /* Query focus */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch search query\n *\n * Note that the focus event which triggers re-reading the current query value\n * is delayed by `1ms` so the input's empty state is allowed to propagate.\n *\n * @param el - Search query element\n * @param worker - Search worker\n *\n * @returns Search query observable\n */\nexport function watchSearchQuery(\n el: HTMLInputElement, { rx$ }: SearchWorker\n): Observable {\n const fn = __search?.transform || defaultTransform\n\n /* Immediately show search dialog */\n const { searchParams } = getLocation()\n if (searchParams.has(\"q\"))\n setToggle(\"search\", true)\n\n /* Intercept query parameter (deep link) */\n const param$ = rx$\n .pipe(\n filter(isSearchReadyMessage),\n take(1),\n map(() => searchParams.get(\"q\") || \"\")\n )\n\n /* Remove query parameter when search is closed */\n watchToggle(\"search\")\n .pipe(\n filter(active => !active),\n take(1)\n )\n .subscribe(() => {\n const url = new URL(location.href)\n url.searchParams.delete(\"q\")\n history.replaceState({}, \"\", `${url}`)\n })\n\n /* Set query from parameter */\n param$.subscribe(value => { // TODO: not ideal - find a better way\n if (value) {\n el.value = value\n el.focus()\n }\n })\n\n /* Intercept focus and input events */\n const focus$ = watchElementFocus(el)\n const value$ = merge(\n fromEvent(el, \"keyup\"),\n fromEvent(el, \"focus\").pipe(delay(1)),\n param$\n )\n .pipe(\n map(() => fn(el.value)),\n startWith(\"\"),\n distinctUntilChanged(),\n )\n\n /* Combine into single observable */\n return combineLatest([value$, focus$])\n .pipe(\n map(([value, focus]) => ({ value, focus })),\n shareReplay(1)\n )\n}\n\n/**\n * Mount search query\n *\n * @param el - Search query element\n * @param worker - Search worker\n *\n * @returns Search query component observable\n */\nexport function mountSearchQuery(\n el: HTMLInputElement, { tx$, rx$ }: SearchWorker\n): Observable> {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n\n /* Handle value changes */\n push$\n .pipe(\n distinctUntilKeyChanged(\"value\"),\n map(({ value }): SearchQueryMessage => ({\n type: SearchMessageType.QUERY,\n data: value\n }))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Handle focus changes */\n push$\n .pipe(\n distinctUntilKeyChanged(\"focus\")\n )\n .subscribe(({ focus }) => {\n if (focus) {\n setToggle(\"search\", focus)\n el.placeholder = \"\"\n } else {\n el.placeholder = translation(\"search.placeholder\")\n }\n })\n\n /* Handle reset */\n fromEvent(el.form!, \"reset\")\n .pipe(\n takeUntil(done$)\n )\n .subscribe(() => el.focus())\n\n /* Create and return component */\n return watchSearchQuery(el, { tx$, rx$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state })),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n filter,\n finalize,\n map,\n merge,\n of,\n skipUntil,\n switchMap,\n take,\n tap,\n withLatestFrom,\n zipWith\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport {\n getElement,\n watchElementBoundary\n} from \"~/browser\"\nimport {\n SearchResult,\n SearchWorker,\n isSearchReadyMessage,\n isSearchResultMessage\n} from \"~/integrations\"\nimport { renderSearchResultItem } from \"~/templates\"\nimport { round } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search result list\n *\n * This function performs a lazy rendering of the search results, depending on\n * the vertical offset of the search result container.\n *\n * @param el - Search result list element\n * @param worker - Search worker\n * @param options - Options\n *\n * @returns Search result list component observable\n */\nexport function mountSearchResult(\n el: HTMLElement, { rx$ }: SearchWorker, { query$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n const boundary$ = watchElementBoundary(el.parentElement!)\n .pipe(\n filter(Boolean)\n )\n\n /* Retrieve nested components */\n const meta = getElement(\":scope > :first-child\", el)\n const list = getElement(\":scope > :last-child\", el)\n\n /* Wait until search is ready */\n const ready$ = rx$\n .pipe(\n filter(isSearchReadyMessage),\n take(1)\n )\n\n /* Update search result metadata */\n push$\n .pipe(\n withLatestFrom(query$),\n skipUntil(ready$)\n )\n .subscribe(([{ items }, { value }]) => {\n if (value) {\n switch (items.length) {\n\n /* No results */\n case 0:\n meta.textContent = translation(\"search.result.none\")\n break\n\n /* One result */\n case 1:\n meta.textContent = translation(\"search.result.one\")\n break\n\n /* Multiple result */\n default:\n meta.textContent = translation(\n \"search.result.other\",\n round(items.length)\n )\n }\n } else {\n meta.textContent = translation(\"search.result.placeholder\")\n }\n })\n\n /* Update search result list */\n push$\n .pipe(\n tap(() => list.innerHTML = \"\"),\n switchMap(({ items }) => merge(\n of(...items.slice(0, 10)),\n of(...items.slice(10))\n .pipe(\n bufferCount(4),\n zipWith(boundary$),\n switchMap(([chunk]) => chunk)\n )\n ))\n )\n .subscribe(result => list.appendChild(\n renderSearchResultItem(result)\n ))\n\n /* Filter search result message */\n const result$ = rx$\n .pipe(\n filter(isSearchResultMessage),\n map(({ data }) => data)\n )\n\n /* Create and return component */\n return result$\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n finalize,\n fromEvent,\n map,\n tap\n} from \"rxjs\"\n\nimport { getLocation } from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search sharing\n */\nexport interface SearchShare {\n url: URL /* Deep link for sharing */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n query$: Observable /* Search query observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search sharing\n *\n * @param _el - Search sharing element\n * @param options - Options\n *\n * @returns Search sharing observable\n */\nexport function watchSearchShare(\n _el: HTMLElement, { query$ }: WatchOptions\n): Observable {\n return query$\n .pipe(\n map(({ value }) => {\n const url = getLocation()\n url.hash = \"\"\n url.searchParams.delete(\"h\")\n url.searchParams.set(\"q\", value)\n return { url }\n })\n )\n}\n\n/**\n * Mount search sharing\n *\n * @param el - Search sharing element\n * @param options - Options\n *\n * @returns Search sharing component observable\n */\nexport function mountSearchShare(\n el: HTMLAnchorElement, options: MountOptions\n): Observable> {\n const push$ = new Subject()\n push$.subscribe(({ url }) => {\n el.setAttribute(\"data-clipboard-text\", el.href)\n el.href = `${url}`\n })\n\n /* Prevent following of link */\n fromEvent(el, \"click\")\n .subscribe(ev => ev.preventDefault())\n\n /* Create and return component */\n return watchSearchShare(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n asyncScheduler,\n combineLatestWith,\n distinctUntilChanged,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n observeOn,\n tap\n} from \"rxjs\"\n\nimport { Keyboard } from \"~/browser\"\nimport {\n SearchResult,\n SearchWorker,\n isSearchResultMessage\n} from \"~/integrations\"\n\nimport { Component, getComponentElement } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search suggestions\n */\nexport interface SearchSuggest {}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n keyboard$: Observable /* Keyboard observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search suggestions\n *\n * This function will perform a lazy rendering of the search results, depending\n * on the vertical offset of the search result container.\n *\n * @param el - Search result list element\n * @param worker - Search worker\n * @param options - Options\n *\n * @returns Search result list component observable\n */\nexport function mountSearchSuggest(\n el: HTMLElement, { rx$ }: SearchWorker, { keyboard$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n\n /* Retrieve query component and track all changes */\n const query = getComponentElement(\"search-query\")\n const query$ = merge(\n fromEvent(query, \"keydown\"),\n fromEvent(query, \"focus\")\n )\n .pipe(\n observeOn(asyncScheduler),\n map(() => query.value),\n distinctUntilChanged(),\n )\n\n /* Update search suggestions */\n push$\n .pipe(\n combineLatestWith(query$),\n map(([{ suggestions }, value]) => {\n const words = value.split(/([\\s-]+)/)\n if (suggestions?.length && words[words.length - 1]) {\n const last = suggestions[suggestions.length - 1]\n if (last.startsWith(words[words.length - 1]))\n words[words.length - 1] = last\n } else {\n words.length = 0\n }\n return words\n })\n )\n .subscribe(words => el.innerHTML = words\n .join(\"\")\n .replace(/\\s/g, \" \")\n )\n\n /* Set up search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Right arrow: accept current suggestion */\n case \"ArrowRight\":\n if (\n el.innerText.length &&\n query.selectionStart === query.value.length\n )\n query.value = el.innerText\n break\n }\n })\n\n /* Filter search result message */\n const result$ = rx$\n .pipe(\n filter(isSearchResultMessage),\n map(({ data }) => data)\n )\n\n /* Create and return component */\n return result$\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(() => ({ ref: el }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n NEVER,\n Observable,\n ObservableInput,\n filter,\n merge,\n mergeWith,\n sample,\n take\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport {\n Keyboard,\n getActiveElement,\n getElements,\n setToggle\n} from \"~/browser\"\nimport {\n SearchIndex,\n SearchResult,\n isSearchQueryMessage,\n isSearchReadyMessage,\n setupSearchWorker\n} from \"~/integrations\"\n\nimport {\n Component,\n getComponentElement,\n getComponentElements\n} from \"../../_\"\nimport {\n SearchQuery,\n mountSearchQuery\n} from \"../query\"\nimport { mountSearchResult } from \"../result\"\nimport {\n SearchShare,\n mountSearchShare\n} from \"../share\"\nimport {\n SearchSuggest,\n mountSearchSuggest\n} from \"../suggest\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search\n */\nexport type Search =\n | SearchQuery\n | SearchResult\n | SearchShare\n | SearchSuggest\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n index$: ObservableInput /* Search index observable */\n keyboard$: Observable /* Keyboard observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search\n *\n * This function sets up the search functionality, including the underlying\n * web worker and all keyboard bindings.\n *\n * @param el - Search element\n * @param options - Options\n *\n * @returns Search component observable\n */\nexport function mountSearch(\n el: HTMLElement, { index$, keyboard$ }: MountOptions\n): Observable> {\n const config = configuration()\n try {\n const url = __search?.worker || config.search\n const worker = setupSearchWorker(url, index$)\n\n /* Retrieve query and result components */\n const query = getComponentElement(\"search-query\", el)\n const result = getComponentElement(\"search-result\", el)\n\n /* Re-emit query when search is ready */\n const { tx$, rx$ } = worker\n tx$\n .pipe(\n filter(isSearchQueryMessage),\n sample(rx$.pipe(filter(isSearchReadyMessage))),\n take(1)\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Set up search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\")\n )\n .subscribe(key => {\n const active = getActiveElement()\n switch (key.type) {\n\n /* Enter: go to first (best) result */\n case \"Enter\":\n if (active === query) {\n const anchors = new Map()\n for (const anchor of getElements(\n \":first-child [href]\", result\n )) {\n const article = anchor.firstElementChild!\n anchors.set(anchor, parseFloat(\n article.getAttribute(\"data-md-score\")!\n ))\n }\n\n /* Go to result with highest score, if any */\n if (anchors.size) {\n const [[best]] = [...anchors].sort(([, a], [, b]) => b - a)\n best.click()\n }\n\n /* Otherwise omit form submission */\n key.claim()\n }\n break\n\n /* Escape or Tab: close search */\n case \"Escape\":\n case \"Tab\":\n setToggle(\"search\", false)\n query.blur()\n break\n\n /* Vertical arrows: select previous or next search result */\n case \"ArrowUp\":\n case \"ArrowDown\":\n if (typeof active === \"undefined\") {\n query.focus()\n } else {\n const els = [query, ...getElements(\n \":not(details) > [href], summary, details[open] [href]\",\n result\n )]\n const i = Math.max(0, (\n Math.max(0, els.indexOf(active)) + els.length + (\n key.type === \"ArrowUp\" ? -1 : +1\n )\n ) % els.length)\n els[i].focus()\n }\n\n /* Prevent scrolling of page */\n key.claim()\n break\n\n /* All other keys: hand to search query */\n default:\n if (query !== getActiveElement())\n query.focus()\n }\n })\n\n /* Set up global keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\"),\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Open search and select query */\n case \"f\":\n case \"s\":\n case \"/\":\n query.focus()\n query.select()\n\n /* Prevent scrolling of page */\n key.claim()\n break\n }\n })\n\n /* Create and return component */\n const query$ = mountSearchQuery(query, worker)\n const result$ = mountSearchResult(result, worker, { query$ })\n return merge(query$, result$)\n .pipe(\n mergeWith(\n\n /* Search sharing */\n ...getComponentElements(\"search-share\", el)\n .map(child => mountSearchShare(child, { query$ })),\n\n /* Search suggestions */\n ...getComponentElements(\"search-suggest\", el)\n .map(child => mountSearchSuggest(child, worker, { keyboard$ }))\n )\n )\n\n /* Gracefully handle broken search */\n } catch (err) {\n el.hidden = true\n return NEVER\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n ObservableInput,\n combineLatest,\n filter,\n map,\n startWith\n} from \"rxjs\"\n\nimport { getLocation } from \"~/browser\"\nimport {\n SearchIndex,\n setupSearchHighlighter\n} from \"~/integrations\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlighting\n */\nexport interface SearchHighlight {\n nodes: Map /* Map of replacements */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n index$: ObservableInput /* Search index observable */\n location$: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search highlighting\n *\n * @param el - Content element\n * @param options - Options\n *\n * @returns Search highlighting component observable\n */\nexport function mountSearchHiglight(\n el: HTMLElement, { index$, location$ }: MountOptions\n): Observable> {\n return combineLatest([\n index$,\n location$\n .pipe(\n startWith(getLocation()),\n filter(url => !!url.searchParams.get(\"h\"))\n )\n ])\n .pipe(\n map(([index, url]) => setupSearchHighlighter(index.config, true)(\n url.searchParams.get(\"h\")!\n )),\n map(fn => {\n const nodes = new Map()\n\n /* Traverse text nodes and collect matches */\n const it = document.createNodeIterator(el, NodeFilter.SHOW_TEXT)\n for (let node = it.nextNode(); node; node = it.nextNode()) {\n if (node.parentElement?.offsetHeight) {\n const original = node.textContent!\n const replaced = fn(original)\n if (replaced.length > original.length)\n nodes.set(node as ChildNode, replaced)\n }\n }\n\n /* Replace original nodes with matches */\n for (const [node, text] of nodes) {\n const { childNodes } = h(\"span\", null, text)\n node.replaceWith(...Array.from(childNodes))\n }\n\n /* Return component */\n return { ref: el, nodes }\n })\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n auditTime,\n combineLatest,\n defer,\n distinctUntilChanged,\n finalize,\n map,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n Viewport,\n getElement,\n getElementOffset\n} from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\nimport { Main } from \"../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sidebar\n */\nexport interface Sidebar {\n height: number /* Sidebar height */\n locked: boolean /* Sidebar is locked */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n main$: Observable
    /* Main area observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch sidebar\n *\n * This function returns an observable that computes the visual parameters of\n * the sidebar which depends on the vertical viewport offset, as well as the\n * height of the main area. When the page is scrolled beyond the header, the\n * sidebar is locked and fills the remaining space.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @returns Sidebar observable\n */\nexport function watchSidebar(\n el: HTMLElement, { viewport$, main$ }: WatchOptions\n): Observable {\n const parent = el.parentElement!\n const adjust =\n parent.offsetTop -\n parent.parentElement!.offsetTop\n\n /* Compute the sidebar's available height and if it should be locked */\n return combineLatest([main$, viewport$])\n .pipe(\n map(([{ offset, height }, { offset: { y } }]) => {\n height = height\n + Math.min(adjust, Math.max(0, y - offset))\n - adjust\n return {\n height,\n locked: y >= offset + adjust\n }\n }),\n distinctUntilChanged((a, b) => (\n a.height === b.height &&\n a.locked === b.locked\n ))\n )\n}\n\n/**\n * Mount sidebar\n *\n * This function doesn't set the height of the actual sidebar, but of its first\n * child \u2013 the `.md-sidebar__scrollwrap` element in order to mitigiate jittery\n * sidebars when the footer is scrolled into view. At some point we switched\n * from `absolute` / `fixed` positioning to `sticky` positioning, significantly\n * reducing jitter in some browsers (respectively Firefox and Safari) when\n * scrolling from the top. However, top-aligned sticky positioning means that\n * the sidebar snaps to the bottom when the end of the container is reached.\n * This is what leads to the mentioned jitter, as the sidebar's height may be\n * updated too slowly.\n *\n * This behaviour can be mitigiated by setting the height of the sidebar to `0`\n * while preserving the padding, and the height on its first element.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @returns Sidebar component observable\n */\nexport function mountSidebar(\n el: HTMLElement, { header$, ...options }: MountOptions\n): Observable> {\n const inner = getElement(\".md-sidebar__scrollwrap\", el)\n const { y } = getElementOffset(inner)\n return defer(() => {\n const push$ = new Subject()\n push$\n .pipe(\n auditTime(0, animationFrameScheduler),\n withLatestFrom(header$)\n )\n .subscribe({\n\n /* Handle emission */\n next([{ height }, { height: offset }]) {\n inner.style.height = `${height - 2 * y}px`\n el.style.top = `${offset}px`\n },\n\n /* Handle complete */\n complete() {\n inner.style.height = \"\"\n el.style.top = \"\"\n }\n })\n\n /* Create and return component */\n return watchSidebar(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Repo, User } from \"github-types\"\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map,\n zip\n} from \"rxjs\"\n\nimport { requestJSON } from \"~/browser\"\n\nimport { SourceFacts } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * GitHub release (partial)\n */\ninterface Release {\n tag_name: string /* Tag name */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitHub repository facts\n *\n * @param user - GitHub user or organization\n * @param repo - GitHub repository\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFactsFromGitHub(\n user: string, repo?: string\n): Observable {\n if (typeof repo !== \"undefined\") {\n const url = `https://api.github.com/repos/${user}/${repo}`\n return zip(\n\n /* Fetch version */\n requestJSON(`${url}/releases/latest`)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(release => ({\n version: release.tag_name\n })),\n defaultIfEmpty({})\n ),\n\n /* Fetch stars and forks */\n requestJSON(url)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(info => ({\n stars: info.stargazers_count,\n forks: info.forks_count\n })),\n defaultIfEmpty({})\n )\n )\n .pipe(\n map(([release, info]) => ({ ...release, ...info }))\n )\n\n /* User or organization */\n } else {\n const url = `https://api.github.com/users/${user}`\n return requestJSON(url)\n .pipe(\n map(info => ({\n repositories: info.public_repos\n })),\n defaultIfEmpty({})\n )\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ProjectSchema } from \"gitlab\"\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map\n} from \"rxjs\"\n\nimport { requestJSON } from \"~/browser\"\n\nimport { SourceFacts } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitLab repository facts\n *\n * @param base - GitLab base\n * @param project - GitLab project\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFactsFromGitLab(\n base: string, project: string\n): Observable {\n const url = `https://${base}/api/v4/projects/${encodeURIComponent(project)}`\n return requestJSON(url)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(({ star_count, forks_count }) => ({\n stars: star_count,\n forks: forks_count\n })),\n defaultIfEmpty({})\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { EMPTY, Observable } from \"rxjs\"\n\nimport { fetchSourceFactsFromGitHub } from \"../github\"\nimport { fetchSourceFactsFromGitLab } from \"../gitlab\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository facts for repositories\n */\nexport interface RepositoryFacts {\n stars?: number /* Number of stars */\n forks?: number /* Number of forks */\n version?: string /* Latest version */\n}\n\n/**\n * Repository facts for organizations\n */\nexport interface OrganizationFacts {\n repositories?: number /* Number of repositories */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Repository facts\n */\nexport type SourceFacts =\n | RepositoryFacts\n | OrganizationFacts\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch repository facts\n *\n * @param url - Repository URL\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFacts(\n url: string\n): Observable {\n const [type] = url.match(/(git(?:hub|lab))/i) || []\n switch (type.toLowerCase()) {\n\n /* GitHub repository */\n case \"github\":\n const [, user, repo] = url.match(/^.+github\\.com\\/([^/]+)\\/?([^/]+)?/i)!\n return fetchSourceFactsFromGitHub(user, repo)\n\n /* GitLab repository */\n case \"gitlab\":\n const [, base, slug] = url.match(/^.+?([^/]*gitlab[^/]+)\\/(.+?)\\/?$/i)!\n return fetchSourceFactsFromGitLab(base, slug)\n\n /* Everything else */\n default:\n return EMPTY\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n catchError,\n defer,\n filter,\n finalize,\n map,\n of,\n shareReplay,\n tap\n} from \"rxjs\"\n\nimport { getElement } from \"~/browser\"\nimport { renderSourceFacts } from \"~/templates\"\n\nimport { Component } from \"../../_\"\nimport {\n SourceFacts,\n fetchSourceFacts\n} from \"../facts\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository information\n */\nexport interface Source {\n facts: SourceFacts /* Repository facts */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository information observable\n */\nlet fetch$: Observable\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch repository information\n *\n * This function tries to read the repository facts from session storage, and\n * if unsuccessful, fetches them from the underlying provider.\n *\n * @param el - Repository information element\n *\n * @returns Repository information observable\n */\nexport function watchSource(\n el: HTMLAnchorElement\n): Observable {\n return fetch$ ||= defer(() => {\n const cached = __md_get(\"__source\", sessionStorage)\n if (cached)\n return of(cached)\n else\n return fetchSourceFacts(el.href)\n .pipe(\n tap(facts => __md_set(\"__source\", facts, sessionStorage))\n )\n })\n .pipe(\n catchError(() => EMPTY),\n filter(facts => Object.keys(facts).length > 0),\n map(facts => ({ facts })),\n shareReplay(1)\n )\n}\n\n/**\n * Mount repository information\n *\n * @param el - Repository information element\n *\n * @returns Repository information component observable\n */\nexport function mountSource(\n el: HTMLAnchorElement\n): Observable> {\n const inner = getElement(\":scope > :last-child\", el)\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ facts }) => {\n inner.appendChild(renderSourceFacts(facts))\n inner.classList.add(\"md-source__repository--active\")\n })\n\n /* Create and return component */\n return watchSource(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n distinctUntilKeyChanged,\n finalize,\n map,\n of,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n watchElementSize,\n watchViewportAt\n} from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Navigation tabs\n */\nexport interface Tabs {\n hidden: boolean /* Navigation tabs are hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch navigation tabs\n *\n * @param el - Navigation tabs element\n * @param options - Options\n *\n * @returns Navigation tabs observable\n */\nexport function watchTabs(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n return watchElementSize(document.body)\n .pipe(\n switchMap(() => watchViewportAt(el, { header$, viewport$ })),\n map(({ offset: { y } }) => {\n return {\n hidden: y >= 10\n }\n }),\n distinctUntilKeyChanged(\"hidden\")\n )\n}\n\n/**\n * Mount navigation tabs\n *\n * This function hides the navigation tabs when scrolling past the threshold\n * and makes them reappear in a nice CSS animation when scrolling back up.\n *\n * @param el - Navigation tabs element\n * @param options - Options\n *\n * @returns Navigation tabs component observable\n */\nexport function mountTabs(\n el: HTMLElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe({\n\n /* Handle emission */\n next({ hidden }) {\n el.hidden = hidden\n },\n\n /* Handle complete */\n complete() {\n el.hidden = false\n }\n })\n\n /* Create and return component */\n return (\n feature(\"navigation.tabs.sticky\")\n ? of({ hidden: false })\n : watchTabs(el, options)\n )\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatestWith,\n debounceTime,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n finalize,\n map,\n of,\n repeat,\n scan,\n share,\n skip,\n startWith,\n switchMap,\n takeLast,\n takeUntil,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n getElement,\n getElements,\n getLocation,\n getOptionalElement,\n watchElementSize\n} from \"~/browser\"\n\nimport {\n Component,\n getComponentElement\n} from \"../_\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Table of contents\n */\nexport interface TableOfContents {\n prev: HTMLAnchorElement[][] /* Anchors (previous) */\n next: HTMLAnchorElement[][] /* Anchors (next) */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n target$: Observable /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch table of contents\n *\n * This is effectively a scroll spy implementation which will account for the\n * fixed header and automatically re-calculate anchor offsets when the viewport\n * is resized. The returned observable will only emit if the table of contents\n * needs to be repainted.\n *\n * This implementation tracks an anchor element's entire path starting from its\n * level up to the top-most anchor element, e.g. `[h3, h2, h1]`. Although the\n * Material theme currently doesn't make use of this information, it enables\n * the styling of the entire hierarchy through customization.\n *\n * Note that the current anchor is the last item of the `prev` anchor list.\n *\n * @param el - Table of contents element\n * @param options - Options\n *\n * @returns Table of contents observable\n */\nexport function watchTableOfContents(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n const table = new Map()\n\n /* Compute anchor-to-target mapping */\n const anchors = getElements(\"[href^=\\\\#]\", el)\n for (const anchor of anchors) {\n const id = decodeURIComponent(anchor.hash.substring(1))\n const target = getOptionalElement(`[id=\"${id}\"]`)\n if (typeof target !== \"undefined\")\n table.set(anchor, target)\n }\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n distinctUntilKeyChanged(\"height\"),\n map(({ height }) => {\n const main = getComponentElement(\"main\")\n const grid = getElement(\":scope > :first-child\", main)\n return height + 0.8 * (\n grid.offsetTop -\n main.offsetTop\n )\n }),\n share()\n )\n\n /* Compute partition of previous and next anchors */\n const partition$ = watchElementSize(document.body)\n .pipe(\n distinctUntilKeyChanged(\"height\"),\n\n /* Build index to map anchor paths to vertical offsets */\n switchMap(body => defer(() => {\n let path: HTMLAnchorElement[] = []\n return of([...table].reduce((index, [anchor, target]) => {\n while (path.length) {\n const last = table.get(path[path.length - 1])!\n if (last.tagName >= target.tagName) {\n path.pop()\n } else {\n break\n }\n }\n\n /* If the current anchor is hidden, continue with its parent */\n let offset = target.offsetTop\n while (!offset && target.parentElement) {\n target = target.parentElement\n offset = target.offsetTop\n }\n\n /* Map reversed anchor path to vertical offset */\n return index.set(\n [...path = [...path, anchor]].reverse(),\n offset\n )\n }, new Map()))\n })\n .pipe(\n\n /* Sort index by vertical offset (see https://bit.ly/30z6QSO) */\n map(index => new Map([...index].sort(([, a], [, b]) => a - b))),\n combineLatestWith(adjust$),\n\n /* Re-compute partition when viewport offset changes */\n switchMap(([index, adjust]) => viewport$\n .pipe(\n scan(([prev, next], { offset: { y }, size }) => {\n const last = y + size.height >= Math.floor(body.height)\n\n /* Look forward */\n while (next.length) {\n const [, offset] = next[0]\n if (offset - adjust < y || last) {\n prev = [...prev, next.shift()!]\n } else {\n break\n }\n }\n\n /* Look backward */\n while (prev.length) {\n const [, offset] = prev[prev.length - 1]\n if (offset - adjust >= y && !last) {\n next = [prev.pop()!, ...next]\n } else {\n break\n }\n }\n\n /* Return partition */\n return [prev, next]\n }, [[], [...index]]),\n distinctUntilChanged((a, b) => (\n a[0] === b[0] &&\n a[1] === b[1]\n ))\n )\n )\n )\n )\n )\n\n /* Compute and return anchor list migrations */\n return partition$\n .pipe(\n map(([prev, next]) => ({\n prev: prev.map(([path]) => path),\n next: next.map(([path]) => path)\n })),\n\n /* Extract anchor list migrations */\n startWith({ prev: [], next: [] }),\n bufferCount(2, 1),\n map(([a, b]) => {\n\n /* Moving down */\n if (a.prev.length < b.prev.length) {\n return {\n prev: b.prev.slice(Math.max(0, a.prev.length - 1), b.prev.length),\n next: []\n }\n\n /* Moving up */\n } else {\n return {\n prev: b.prev.slice(-1),\n next: b.next.slice(0, b.next.length - a.next.length)\n }\n }\n })\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount table of contents\n *\n * @param el - Table of contents element\n * @param options - Options\n *\n * @returns Table of contents component observable\n */\nexport function mountTableOfContents(\n el: HTMLElement, { viewport$, header$, target$ }: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n push$.subscribe(({ prev, next }) => {\n\n /* Look forward */\n for (const [anchor] of next) {\n anchor.classList.remove(\"md-nav__link--passed\")\n anchor.classList.remove(\"md-nav__link--active\")\n }\n\n /* Look backward */\n for (const [index, [anchor]] of prev.entries()) {\n anchor.classList.add(\"md-nav__link--passed\")\n anchor.classList.toggle(\n \"md-nav__link--active\",\n index === prev.length - 1\n )\n }\n })\n\n /* Set up anchor tracking, if enabled */\n if (feature(\"navigation.tracking\"))\n viewport$\n .pipe(\n takeUntil(done$),\n distinctUntilKeyChanged(\"offset\"),\n debounceTime(250),\n skip(1),\n takeUntil(target$.pipe(skip(1))),\n repeat({ delay: 250 }),\n withLatestFrom(push$)\n )\n .subscribe(([, { prev }]) => {\n const url = getLocation()\n\n /* Set hash fragment to active anchor */\n const anchor = prev[prev.length - 1]\n if (anchor && anchor.length) {\n const [active] = anchor\n const { hash } = new URL(active.href)\n if (url.hash !== hash) {\n url.hash = hash\n history.replaceState({}, \"\", `${url}`)\n }\n\n /* Reset anchor when at the top */\n } else {\n url.hash = \"\"\n history.replaceState({}, \"\", `${url}`)\n }\n })\n\n /* Create and return component */\n return watchTableOfContents(el, { viewport$, header$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatest,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n endWith,\n finalize,\n map,\n repeat,\n skip,\n takeLast,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { Viewport } from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\nimport { Main } from \"../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Back-to-top button\n */\nexport interface BackToTop {\n hidden: boolean /* Back-to-top button is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n main$: Observable
    /* Main area observable */\n target$: Observable /* Location target observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n target$: Observable /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch back-to-top\n *\n * @param _el - Back-to-top element\n * @param options - Options\n *\n * @returns Back-to-top observable\n */\nexport function watchBackToTop(\n _el: HTMLElement, { viewport$, main$, target$ }: WatchOptions\n): Observable {\n\n /* Compute direction */\n const direction$ = viewport$\n .pipe(\n map(({ offset: { y } }) => y),\n bufferCount(2, 1),\n map(([a, b]) => a > b && b > 0),\n distinctUntilChanged()\n )\n\n /* Compute whether main area is active */\n const active$ = main$\n .pipe(\n map(({ active }) => active)\n )\n\n /* Compute threshold for hiding */\n return combineLatest([active$, direction$])\n .pipe(\n map(([active, direction]) => !(active && direction)),\n distinctUntilChanged(),\n takeUntil(target$.pipe(skip(1))),\n endWith(true),\n repeat({ delay: 250 }),\n map(hidden => ({ hidden }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount back-to-top\n *\n * @param el - Back-to-top element\n * @param options - Options\n *\n * @returns Back-to-top component observable\n */\nexport function mountBackToTop(\n el: HTMLElement, { viewport$, header$, main$, target$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n push$.subscribe({\n\n /* Handle emission */\n next({ hidden }) {\n el.hidden = hidden\n if (hidden) {\n el.setAttribute(\"tabindex\", \"-1\")\n el.blur()\n } else {\n el.removeAttribute(\"tabindex\")\n }\n },\n\n /* Handle complete */\n complete() {\n el.style.top = \"\"\n el.hidden = true\n el.removeAttribute(\"tabindex\")\n }\n })\n\n /* Watch header height */\n header$\n .pipe(\n takeUntil(done$),\n distinctUntilKeyChanged(\"height\")\n )\n .subscribe(({ height }) => {\n el.style.top = `${height + 16}px`\n })\n\n /* Create and return component */\n return watchBackToTop(el, { viewport$, main$, target$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n mergeMap,\n switchMap,\n takeWhile,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n tablet$: Observable /* Media tablet observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch indeterminate checkboxes\n *\n * This function replaces the indeterminate \"pseudo state\" with the actual\n * indeterminate state, which is used to keep navigation always expanded.\n *\n * @param options - Options\n */\nexport function patchIndeterminate(\n { document$, tablet$ }: PatchOptions\n): void {\n document$\n .pipe(\n switchMap(() => getElements(\n // @todo `data-md-state` is deprecated and removed in v9\n \".md-toggle--indeterminate, [data-md-state=indeterminate]\"\n )),\n tap(el => {\n el.indeterminate = true\n el.checked = false\n }),\n mergeMap(el => fromEvent(el, \"change\")\n .pipe(\n takeWhile(() => el.classList.contains(\"md-toggle--indeterminate\")),\n map(() => el)\n )\n ),\n withLatestFrom(tablet$)\n )\n .subscribe(([el, tablet]) => {\n el.classList.remove(\"md-toggle--indeterminate\")\n if (tablet)\n el.checked = false\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n mergeMap,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether the given device is an Apple device\n *\n * @returns Test result\n */\nfunction isAppleDevice(): boolean {\n return /(iPad|iPhone|iPod)/.test(navigator.userAgent)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all elements with `data-md-scrollfix` attributes\n *\n * This is a year-old patch which ensures that overflow scrolling works at the\n * top and bottom of containers on iOS by ensuring a `1px` scroll offset upon\n * the start of a touch event.\n *\n * @see https://bit.ly/2SCtAOO - Original source\n *\n * @param options - Options\n */\nexport function patchScrollfix(\n { document$ }: PatchOptions\n): void {\n document$\n .pipe(\n switchMap(() => getElements(\"[data-md-scrollfix]\")),\n tap(el => el.removeAttribute(\"data-md-scrollfix\")),\n filter(isAppleDevice),\n mergeMap(el => fromEvent(el, \"touchstart\")\n .pipe(\n map(() => el)\n )\n )\n )\n .subscribe(el => {\n const top = el.scrollTop\n\n /* We're at the top of the container */\n if (top === 0) {\n el.scrollTop = 1\n\n /* We're at the bottom of the container */\n } else if (top + el.offsetHeight === el.scrollHeight) {\n el.scrollTop = top - 1\n }\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n delay,\n map,\n of,\n switchMap,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n Viewport,\n watchToggle\n} from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n viewport$: Observable /* Viewport observable */\n tablet$: Observable /* Media tablet observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch the document body to lock when search is open\n *\n * For mobile and tablet viewports, the search is rendered full screen, which\n * leads to scroll leaking when at the top or bottom of the search result. This\n * function locks the body when the search is in full screen mode, and restores\n * the scroll position when leaving.\n *\n * @param options - Options\n */\nexport function patchScrolllock(\n { viewport$, tablet$ }: PatchOptions\n): void {\n combineLatest([watchToggle(\"search\"), tablet$])\n .pipe(\n map(([active, tablet]) => active && !tablet),\n switchMap(active => of(active)\n .pipe(\n delay(active ? 400 : 100)\n )\n ),\n withLatestFrom(viewport$)\n )\n .subscribe(([active, { offset: { y }}]) => {\n if (active) {\n document.body.setAttribute(\"data-md-scrolllock\", \"\")\n document.body.style.top = `-${y}px`\n } else {\n const value = -1 * parseInt(document.body.style.top, 10)\n document.body.removeAttribute(\"data-md-scrolllock\")\n document.body.style.top = \"\"\n if (value)\n window.scrollTo(0, value)\n }\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Polyfills\n * ------------------------------------------------------------------------- */\n\n/* Polyfill `Object.entries` */\nif (!Object.entries)\n Object.entries = function (obj: object) {\n const data: [string, string][] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push([key, obj[key]])\n\n /* Return entries */\n return data\n }\n\n/* Polyfill `Object.values` */\nif (!Object.values)\n Object.values = function (obj: object) {\n const data: string[] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push(obj[key])\n\n /* Return values */\n return data\n }\n\n/* ------------------------------------------------------------------------- */\n\n/* Polyfills for `Element` */\nif (typeof Element !== \"undefined\") {\n\n /* Polyfill `Element.scrollTo` */\n if (!Element.prototype.scrollTo)\n Element.prototype.scrollTo = function (\n x?: ScrollToOptions | number, y?: number\n ): void {\n if (typeof x === \"object\") {\n this.scrollLeft = x.left!\n this.scrollTop = x.top!\n } else {\n this.scrollLeft = x!\n this.scrollTop = y!\n }\n }\n\n /* Polyfill `Element.replaceWith` */\n if (!Element.prototype.replaceWith)\n Element.prototype.replaceWith = function (\n ...nodes: Array\n ): void {\n const parent = this.parentNode\n if (parent) {\n if (nodes.length === 0)\n parent.removeChild(this)\n\n /* Replace children and create text nodes */\n for (let i = nodes.length - 1; i >= 0; i--) {\n let node = nodes[i]\n if (typeof node !== \"object\")\n node = document.createTextNode(node)\n else if (node.parentNode)\n node.parentNode.removeChild(node)\n\n /* Replace child or insert before previous sibling */\n if (!i)\n parent.replaceChild(node, this)\n else\n parent.insertBefore(this.previousSibling!, node)\n }\n }\n }\n}\n"], - "mappings": "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", - "names": ["require_focus_visible", "__commonJSMin", "exports", "module", "global", "factory", "applyFocusVisiblePolyfill", "scope", "hadKeyboardEvent", "hadFocusVisibleRecently", "hadFocusVisibleRecentlyTimeout", "inputTypesAllowlist", "isValidFocusTarget", "el", "focusTriggersKeyboardModality", "type", "tagName", "addFocusVisibleClass", "removeFocusVisibleClass", "onKeyDown", "e", "onPointerDown", "onFocus", "onBlur", "onVisibilityChange", "addInitialPointerMoveListeners", "onInitialPointerMove", "removeInitialPointerMoveListeners", "event", "error", "require_url_polyfill", "__commonJSMin", "exports", "global", "checkIfIteratorIsSupported", "error", "iteratorSupported", "createIterator", "items", "iterator", "value", "serializeParam", "deserializeParam", "polyfillURLSearchParams", "URLSearchParams", "searchString", "typeofSearchString", "_this", "name", "i", "entry", "key", "proto", "callback", "thisArg", "entries", "searchArray", "checkIfURLSearchParamsSupported", "e", "a", "b", "keys", "attributes", "attribute", "checkIfURLIsSupported", "u", "polyfillURL", "_URL", "URL", "url", "base", "doc", "baseElement", "err", "anchorElement", "inputElement", "searchParams", "enableSearchUpdate", "enableSearchParamsUpdate", "methodName", "method", "search", "linkURLWithAnchorAttribute", "attributeName", "expectedPort", "addPortToOrigin", "blob", "getOrigin", "require_tslib", "__commonJSMin", "exports", "module", "__extends", "__assign", "__rest", "__decorate", "__param", "__metadata", "__awaiter", "__generator", "__exportStar", "__values", "__read", "__spread", "__spreadArrays", "__spreadArray", "__await", "__asyncGenerator", "__asyncDelegator", "__asyncValues", "__makeTemplateObject", "__importStar", "__importDefault", "__classPrivateFieldGet", "__classPrivateFieldSet", "__createBinding", "factory", "root", "createExporter", "previous", "id", "v", "exporter", "extendStatics", "d", "b", "p", "__", "t", "s", "n", "e", "i", "decorators", "target", "key", "desc", "c", "r", "paramIndex", "decorator", "metadataKey", "metadataValue", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "reject", "fulfilled", "step", "rejected", "result", "body", "_", "f", "y", "g", "verb", "op", "m", "o", "k", "k2", "ar", "error", "il", "a", "j", "jl", "to", "from", "pack", "l", "q", "resume", "settle", "fulfill", "cooked", "raw", "__setModuleDefault", "mod", "receiver", "state", "kind", "require_clipboard", "__commonJSMin", "exports", "module", "root", "factory", "__webpack_modules__", "__unused_webpack_module", "__webpack_exports__", "__webpack_require__", "clipboard", "tiny_emitter", "tiny_emitter_default", "listen", "listen_default", "src_select", "select_default", "command", "type", "err", "ClipboardActionCut", "target", "selectedText", "actions_cut", "createFakeElement", "value", "isRTL", "fakeElement", "yPosition", "fakeCopyAction", "options", "ClipboardActionCopy", "actions_copy", "_typeof", "obj", "ClipboardActionDefault", "_options$action", "action", "container", "text", "actions_default", "clipboard_typeof", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "i", "descriptor", "_createClass", "protoProps", "staticProps", "_inherits", "subClass", "superClass", "_setPrototypeOf", "o", "p", "_createSuper", "Derived", "hasNativeReflectConstruct", "_isNativeReflectConstruct", "Super", "_getPrototypeOf", "result", "NewTarget", "_possibleConstructorReturn", "self", "call", "_assertThisInitialized", "e", "getAttributeValue", "suffix", "element", "attribute", "Clipboard", "_Emitter", "_super", "trigger", "_this", "_this2", "selector", "actions", "support", "DOCUMENT_NODE_TYPE", "proto", "closest", "__unused_webpack_exports", "_delegate", "callback", "useCapture", "listenerFn", "listener", "delegate", "elements", "is", "listenNode", "listenNodeList", "listenSelector", "node", "nodeList", "select", "isReadOnly", "selection", "range", "E", "name", "ctx", "data", "evtArr", "len", "evts", "liveEvents", "__webpack_module_cache__", "moduleId", "getter", "definition", "key", "prop", "require_escape_html", "__commonJSMin", "exports", "module", "matchHtmlRegExp", "escapeHtml", "string", "str", "match", "escape", "html", "index", "lastIndex", "r", "a", "e", "import_focus_visible", "n", "t", "s", "r", "o", "u", "i", "a", "e", "c", "import_url_polyfill", "import_tslib", "__extends", "__assign", "__rest", "__decorate", "__param", "__metadata", "__awaiter", "__generator", "__exportStar", "__createBinding", "__values", "__read", "__spread", "__spreadArrays", "__spreadArray", "__await", "__asyncGenerator", "__asyncDelegator", "__asyncValues", "__makeTemplateObject", "__importStar", "__importDefault", "__classPrivateFieldGet", "__classPrivateFieldSet", "tslib", "isFunction", "value", "createErrorClass", "createImpl", "_super", "instance", "ctorFunc", "UnsubscriptionError", "createErrorClass", "_super", "errors", "err", "i", "arrRemove", "arr", "item", "index", "Subscription", "initialTeardown", "errors", "_parentage", "_parentage_1", "__values", "_parentage_1_1", "parent_1", "initialFinalizer", "isFunction", "e", "UnsubscriptionError", "_finalizers", "_finalizers_1", "_finalizers_1_1", "finalizer", "execFinalizer", "err", "__spreadArray", "__read", "teardown", "_a", "parent", "arrRemove", "empty", "EMPTY_SUBSCRIPTION", "Subscription", "isSubscription", "value", "isFunction", "execFinalizer", "finalizer", "config", "timeoutProvider", "handler", "timeout", "args", "_i", "delegate", "__spreadArray", "__read", "handle", "reportUnhandledError", "err", "timeoutProvider", "onUnhandledError", "config", "noop", "COMPLETE_NOTIFICATION", "createNotification", "errorNotification", "error", "nextNotification", "value", "kind", "context", "errorContext", "cb", "config", "isRoot", "_a", "errorThrown", "error", "captureError", "err", "Subscriber", "_super", "__extends", "destination", "_this", "isSubscription", "EMPTY_OBSERVER", "next", "error", "complete", "SafeSubscriber", "value", "handleStoppedNotification", "nextNotification", "err", "errorNotification", "COMPLETE_NOTIFICATION", "Subscription", "_bind", "bind", "fn", "thisArg", "ConsumerObserver", "partialObserver", "value", "error", "handleUnhandledError", "err", "SafeSubscriber", "_super", "__extends", "observerOrNext", "complete", "_this", "isFunction", "context_1", "config", "Subscriber", "handleUnhandledError", "error", "config", "captureError", "reportUnhandledError", "defaultErrorHandler", "err", "handleStoppedNotification", "notification", "subscriber", "onStoppedNotification", "timeoutProvider", "EMPTY_OBSERVER", "noop", "observable", "identity", "x", "pipe", "fns", "_i", "pipeFromArray", "identity", "input", "prev", "fn", "Observable", "subscribe", "operator", "observable", "observerOrNext", "error", "complete", "_this", "subscriber", "isSubscriber", "SafeSubscriber", "errorContext", "_a", "source", "sink", "err", "next", "promiseCtor", "getPromiseCtor", "resolve", "reject", "value", "operations", "_i", "pipeFromArray", "x", "getPromiseCtor", "promiseCtor", "_a", "config", "isObserver", "value", "isFunction", "isSubscriber", "Subscriber", "isSubscription", "hasLift", "source", "isFunction", "operate", "init", "liftedSource", "err", "createOperatorSubscriber", "destination", "onNext", "onComplete", "onError", "onFinalize", "OperatorSubscriber", "_super", "__extends", "shouldUnsubscribe", "_this", "value", "err", "closed_1", "_a", "Subscriber", "animationFrameProvider", "callback", "request", "cancel", "delegate", "handle", "timestamp", "Subscription", "args", "_i", "__spreadArray", "__read", "ObjectUnsubscribedError", "createErrorClass", "_super", "Subject", "_super", "__extends", "_this", "operator", "subject", "AnonymousSubject", "ObjectUnsubscribedError", "value", "errorContext", "_b", "__values", "_c", "observer", "err", "observers", "_a", "subscriber", "hasError", "isStopped", "EMPTY_SUBSCRIPTION", "Subscription", "arrRemove", "thrownError", "observable", "Observable", "destination", "source", "AnonymousSubject", "_super", "__extends", "destination", "source", "_this", "value", "_b", "_a", "err", "subscriber", "EMPTY_SUBSCRIPTION", "Subject", "dateTimestampProvider", "ReplaySubject", "_super", "__extends", "_bufferSize", "_windowTime", "_timestampProvider", "dateTimestampProvider", "_this", "value", "_a", "isStopped", "_buffer", "_infiniteTimeWindow", "subscriber", "subscription", "copy", "i", "adjustedBufferSize", "now", "last", "Subject", "Action", "_super", "__extends", "scheduler", "work", "state", "delay", "Subscription", "intervalProvider", "handler", "timeout", "args", "_i", "delegate", "__spreadArray", "__read", "handle", "AsyncAction", "_super", "__extends", "scheduler", "work", "_this", "state", "delay", "id", "_id", "intervalProvider", "_scheduler", "error", "_delay", "errored", "errorValue", "e", "_a", "actions", "arrRemove", "Action", "Scheduler", "schedulerActionCtor", "now", "work", "delay", "state", "dateTimestampProvider", "AsyncScheduler", "_super", "__extends", "SchedulerAction", "now", "Scheduler", "_this", "action", "actions", "error", "asyncScheduler", "AsyncScheduler", "AsyncAction", "async", "AnimationFrameAction", "_super", "__extends", "scheduler", "work", "_this", "id", "delay", "animationFrameProvider", "action", "AsyncAction", "AnimationFrameScheduler", "_super", "__extends", "action", "flushId", "actions", "error", "AsyncScheduler", "animationFrameScheduler", "AnimationFrameScheduler", "AnimationFrameAction", "EMPTY", "Observable", "subscriber", "isScheduler", "value", "isFunction", "last", "arr", "popResultSelector", "args", "isFunction", "popScheduler", "isScheduler", "popNumber", "defaultValue", "isArrayLike", "x", "isPromise", "value", "isFunction", "isInteropObservable", "input", "isFunction", "observable", "isAsyncIterable", "obj", "isFunction", "createInvalidObservableTypeError", "input", "getSymbolIterator", "iterator", "isIterable", "input", "isFunction", "iterator", "readableStreamLikeToAsyncGenerator", "readableStream", "reader", "__await", "_a", "_b", "value", "done", "isReadableStreamLike", "obj", "isFunction", "innerFrom", "input", "Observable", "isInteropObservable", "fromInteropObservable", "isArrayLike", "fromArrayLike", "isPromise", "fromPromise", "isAsyncIterable", "fromAsyncIterable", "isIterable", "fromIterable", "isReadableStreamLike", "fromReadableStreamLike", "createInvalidObservableTypeError", "obj", "subscriber", "obs", "observable", "isFunction", "array", "i", "promise", "value", "err", "reportUnhandledError", "iterable", "iterable_1", "__values", "iterable_1_1", "asyncIterable", "process", "readableStream", "readableStreamLikeToAsyncGenerator", "asyncIterable_1", "__asyncValues", "asyncIterable_1_1", "executeSchedule", "parentSubscription", "scheduler", "work", "delay", "repeat", "scheduleSubscription", "observeOn", "scheduler", "delay", "operate", "source", "subscriber", "createOperatorSubscriber", "value", "executeSchedule", "err", "subscribeOn", "scheduler", "delay", "operate", "source", "subscriber", "scheduleObservable", "input", "scheduler", "innerFrom", "subscribeOn", "observeOn", "schedulePromise", "input", "scheduler", "innerFrom", "subscribeOn", "observeOn", "scheduleArray", "input", "scheduler", "Observable", "subscriber", "i", "scheduleIterable", "input", "scheduler", "Observable", "subscriber", "iterator", "executeSchedule", "value", "done", "_a", "err", "isFunction", "scheduleAsyncIterable", "input", "scheduler", "Observable", "subscriber", "executeSchedule", "iterator", "result", "scheduleReadableStreamLike", "input", "scheduler", "scheduleAsyncIterable", "readableStreamLikeToAsyncGenerator", "scheduled", "input", "scheduler", "isInteropObservable", "scheduleObservable", "isArrayLike", "scheduleArray", "isPromise", "schedulePromise", "isAsyncIterable", "scheduleAsyncIterable", "isIterable", "scheduleIterable", "isReadableStreamLike", "scheduleReadableStreamLike", "createInvalidObservableTypeError", "from", "input", "scheduler", "scheduled", "innerFrom", "of", "args", "_i", "scheduler", "popScheduler", "from", "throwError", "errorOrErrorFactory", "scheduler", "errorFactory", "isFunction", "init", "subscriber", "Observable", "isValidDate", "value", "map", "project", "thisArg", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "isArray", "callOrApply", "fn", "args", "__spreadArray", "__read", "mapOneOrManyArgs", "map", "isArray", "getPrototypeOf", "objectProto", "getKeys", "argsArgArrayOrObject", "args", "first_1", "isPOJO", "keys", "key", "obj", "createObject", "keys", "values", "result", "key", "i", "combineLatest", "args", "_i", "scheduler", "popScheduler", "resultSelector", "popResultSelector", "_a", "argsArgArrayOrObject", "observables", "keys", "from", "result", "Observable", "combineLatestInit", "values", "createObject", "identity", "mapOneOrManyArgs", "valueTransform", "subscriber", "maybeSchedule", "length", "active", "remainingFirstValues", "i", "source", "hasFirstValue", "createOperatorSubscriber", "value", "execute", "subscription", "executeSchedule", "mergeInternals", "source", "subscriber", "project", "concurrent", "onBeforeNext", "expand", "innerSubScheduler", "additionalFinalizer", "buffer", "active", "index", "isComplete", "checkComplete", "outerNext", "value", "doInnerSub", "innerComplete", "innerFrom", "createOperatorSubscriber", "innerValue", "bufferedValue", "executeSchedule", "err", "mergeMap", "project", "resultSelector", "concurrent", "isFunction", "a", "i", "map", "b", "ii", "innerFrom", "operate", "source", "subscriber", "mergeInternals", "mergeAll", "concurrent", "mergeMap", "identity", "concatAll", "mergeAll", "concat", "args", "_i", "concatAll", "from", "popScheduler", "defer", "observableFactory", "Observable", "subscriber", "innerFrom", "nodeEventEmitterMethods", "eventTargetMethods", "jqueryMethods", "fromEvent", "target", "eventName", "options", "resultSelector", "isFunction", "mapOneOrManyArgs", "_a", "__read", "isEventTarget", "methodName", "handler", "isNodeStyleEventEmitter", "toCommonHandlerRegistry", "isJQueryStyleEventEmitter", "add", "remove", "isArrayLike", "mergeMap", "subTarget", "innerFrom", "Observable", "subscriber", "args", "_i", "fromEventPattern", "addHandler", "removeHandler", "resultSelector", "mapOneOrManyArgs", "Observable", "subscriber", "handler", "e", "_i", "retValue", "isFunction", "timer", "dueTime", "intervalOrScheduler", "scheduler", "async", "intervalDuration", "isScheduler", "Observable", "subscriber", "due", "isValidDate", "n", "merge", "args", "_i", "scheduler", "popScheduler", "concurrent", "popNumber", "sources", "innerFrom", "mergeAll", "from", "EMPTY", "NEVER", "Observable", "noop", "isArray", "argsOrArgArray", "args", "filter", "predicate", "thisArg", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "zip", "args", "_i", "resultSelector", "popResultSelector", "sources", "argsOrArgArray", "Observable", "subscriber", "buffers", "completed", "sourceIndex", "innerFrom", "createOperatorSubscriber", "value", "buffer", "result", "__spreadArray", "__read", "i", "EMPTY", "audit", "durationSelector", "operate", "source", "subscriber", "hasValue", "lastValue", "durationSubscriber", "isComplete", "endDuration", "value", "cleanupDuration", "createOperatorSubscriber", "innerFrom", "auditTime", "duration", "scheduler", "asyncScheduler", "audit", "timer", "bufferCount", "bufferSize", "startBufferEvery", "operate", "source", "subscriber", "buffers", "count", "createOperatorSubscriber", "value", "toEmit", "buffers_1", "__values", "buffers_1_1", "buffer", "toEmit_1", "toEmit_1_1", "arrRemove", "buffers_2", "buffers_2_1", "catchError", "selector", "operate", "source", "subscriber", "innerSub", "syncUnsub", "handledResult", "createOperatorSubscriber", "err", "innerFrom", "scanInternals", "accumulator", "seed", "hasSeed", "emitOnNext", "emitBeforeComplete", "source", "subscriber", "hasState", "state", "index", "createOperatorSubscriber", "value", "i", "combineLatest", "args", "_i", "resultSelector", "popResultSelector", "pipe", "__spreadArray", "__read", "mapOneOrManyArgs", "operate", "source", "subscriber", "combineLatestInit", "argsOrArgArray", "combineLatestWith", "otherSources", "_i", "combineLatest", "__spreadArray", "__read", "concatMap", "project", "resultSelector", "isFunction", "mergeMap", "debounceTime", "dueTime", "scheduler", "asyncScheduler", "operate", "source", "subscriber", "activeTask", "lastValue", "lastTime", "emit", "value", "emitWhenIdle", "targetTime", "now", "createOperatorSubscriber", "defaultIfEmpty", "defaultValue", "operate", "source", "subscriber", "hasValue", "createOperatorSubscriber", "value", "take", "count", "EMPTY", "operate", "source", "subscriber", "seen", "createOperatorSubscriber", "value", "ignoreElements", "operate", "source", "subscriber", "createOperatorSubscriber", "noop", "mapTo", "value", "map", "delayWhen", "delayDurationSelector", "subscriptionDelay", "source", "concat", "take", "ignoreElements", "mergeMap", "value", "index", "mapTo", "delay", "due", "scheduler", "asyncScheduler", "duration", "timer", "delayWhen", "distinctUntilChanged", "comparator", "keySelector", "identity", "defaultCompare", "operate", "source", "subscriber", "previousKey", "first", "createOperatorSubscriber", "value", "currentKey", "a", "b", "distinctUntilKeyChanged", "key", "compare", "distinctUntilChanged", "x", "y", "endWith", "values", "_i", "source", "concat", "of", "__spreadArray", "__read", "finalize", "callback", "operate", "source", "subscriber", "takeLast", "count", "EMPTY", "operate", "source", "subscriber", "buffer", "createOperatorSubscriber", "value", "buffer_1", "__values", "buffer_1_1", "merge", "args", "_i", "scheduler", "popScheduler", "concurrent", "popNumber", "argsOrArgArray", "operate", "source", "subscriber", "mergeAll", "from", "__spreadArray", "__read", "mergeWith", "otherSources", "_i", "merge", "__spreadArray", "__read", "repeat", "countOrConfig", "count", "delay", "_a", "EMPTY", "operate", "source", "subscriber", "soFar", "sourceSub", "resubscribe", "notifier", "timer", "innerFrom", "notifierSubscriber_1", "createOperatorSubscriber", "subscribeToSource", "syncUnsub", "sample", "notifier", "operate", "source", "subscriber", "hasValue", "lastValue", "createOperatorSubscriber", "value", "noop", "scan", "accumulator", "seed", "operate", "scanInternals", "share", "options", "_a", "connector", "Subject", "_b", "resetOnError", "_c", "resetOnComplete", "_d", "resetOnRefCountZero", "wrapperSource", "connection", "resetConnection", "subject", "refCount", "hasCompleted", "hasErrored", "cancelReset", "reset", "resetAndUnsubscribe", "conn", "operate", "source", "subscriber", "dest", "handleReset", "SafeSubscriber", "value", "err", "innerFrom", "on", "args", "_i", "onSubscriber", "__spreadArray", "__read", "shareReplay", "configOrBufferSize", "windowTime", "scheduler", "bufferSize", "refCount", "_a", "_b", "_c", "share", "ReplaySubject", "skip", "count", "filter", "_", "index", "skipUntil", "notifier", "operate", "source", "subscriber", "taking", "skipSubscriber", "createOperatorSubscriber", "noop", "innerFrom", "value", "startWith", "values", "_i", "scheduler", "popScheduler", "operate", "source", "subscriber", "concat", "switchMap", "project", "resultSelector", "operate", "source", "subscriber", "innerSubscriber", "index", "isComplete", "checkComplete", "createOperatorSubscriber", "value", "innerIndex", "outerIndex", "innerFrom", "innerValue", "takeUntil", "notifier", "operate", "source", "subscriber", "innerFrom", "createOperatorSubscriber", "noop", "takeWhile", "predicate", "inclusive", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "result", "tap", "observerOrNext", "error", "complete", "tapObserver", "isFunction", "operate", "source", "subscriber", "_a", "isUnsub", "createOperatorSubscriber", "value", "err", "_b", "identity", "defaultThrottleConfig", "throttle", "durationSelector", "config", "operate", "source", "subscriber", "leading", "trailing", "hasValue", "sendValue", "throttled", "isComplete", "endThrottling", "send", "cleanupThrottling", "startThrottle", "value", "innerFrom", "createOperatorSubscriber", "throttleTime", "duration", "scheduler", "config", "asyncScheduler", "defaultThrottleConfig", "duration$", "timer", "throttle", "withLatestFrom", "inputs", "_i", "project", "popResultSelector", "operate", "source", "subscriber", "len", "otherValues", "hasValue", "ready", "i", "innerFrom", "createOperatorSubscriber", "value", "identity", "noop", "values", "__spreadArray", "__read", "zip", "sources", "_i", "operate", "source", "subscriber", "__spreadArray", "__read", "zipWith", "otherInputs", "_i", "zip", "__spreadArray", "__read", "watchDocument", "document$", "ReplaySubject", "fromEvent", "getElements", "selector", "node", "getElement", "el", "getOptionalElement", "getActiveElement", "watchElementFocus", "el", "merge", "fromEvent", "debounceTime", "map", "active", "getActiveElement", "startWith", "distinctUntilChanged", "getElementOffset", "el", "watchElementOffset", "merge", "fromEvent", "auditTime", "animationFrameScheduler", "map", "startWith", "getElementContentOffset", "el", "watchElementContentOffset", "merge", "fromEvent", "auditTime", "animationFrameScheduler", "map", "startWith", "MapShim", "getIndex", "arr", "key", "result", "entry", "index", "class_1", "value", "entries", "callback", "ctx", "_i", "_a", "isBrowser", "global$1", "requestAnimationFrame$1", "trailingTimeout", "throttle", "delay", "leadingCall", "trailingCall", "lastCallTime", "resolvePending", "proxy", "timeoutCallback", "timeStamp", "REFRESH_DELAY", "transitionKeys", "mutationObserverSupported", "ResizeObserverController", "observer", "observers", "changesDetected", "activeObservers", "_b", "propertyName", "isReflowProperty", "defineConfigurable", "target", "props", "getWindowOf", "ownerGlobal", "emptyRect", "createRectInit", "toFloat", "getBordersSize", "styles", "positions", "size", "position", "getPaddings", "paddings", "positions_1", "getSVGContentRect", "bbox", "getHTMLElementContentRect", "clientWidth", "clientHeight", "horizPad", "vertPad", "width", "height", "isDocumentElement", "vertScrollbar", "horizScrollbar", "isSVGGraphicsElement", "getContentRect", "createReadOnlyRect", "x", "y", "Constr", "rect", "ResizeObservation", "ResizeObserverEntry", "rectInit", "contentRect", "ResizeObserverSPI", "controller", "callbackCtx", "observations", "_this", "observation", "ResizeObserver", "method", "ResizeObserver_es_default", "entry$", "Subject", "observer$", "defer", "of", "ResizeObserver_es_default", "entries", "entry", "switchMap", "observer", "merge", "NEVER", "finalize", "shareReplay", "getElementSize", "el", "watchElementSize", "tap", "filter", "target", "map", "startWith", "getElementContentSize", "el", "entry$", "Subject", "observer$", "defer", "of", "entries", "entry", "switchMap", "observer", "merge", "NEVER", "finalize", "shareReplay", "watchElementVisibility", "el", "tap", "filter", "target", "map", "isIntersecting", "watchElementBoundary", "threshold", "watchElementContentOffset", "y", "visible", "getElementSize", "content", "getElementContentSize", "distinctUntilChanged", "toggles", "getElement", "getToggle", "name", "setToggle", "value", "watchToggle", "el", "fromEvent", "map", "startWith", "isSusceptibleToKeyboard", "el", "type", "watchKeyboard", "fromEvent", "filter", "ev", "map", "getToggle", "mode", "active", "getActiveElement", "share", "getLocation", "setLocation", "url", "watchLocation", "Subject", "appendChild", "el", "child", "node", "h", "tag", "attributes", "children", "attr", "truncate", "value", "n", "i", "round", "digits", "getLocationHash", "setLocationHash", "hash", "el", "h", "ev", "watchLocationHash", "fromEvent", "map", "startWith", "filter", "shareReplay", "watchLocationTarget", "id", "getOptionalElement", "watchMedia", "query", "media", "fromEventPattern", "next", "startWith", "watchPrint", "merge", "fromEvent", "map", "at", "query$", "factory", "switchMap", "active", "EMPTY", "request", "url", "options", "from", "catchError", "EMPTY", "switchMap", "res", "throwError", "of", "requestJSON", "shareReplay", "requestXML", "dom", "map", "watchScript", "src", "script", "h", "defer", "merge", "fromEvent", "switchMap", "throwError", "map", "finalize", "take", "getViewportOffset", "watchViewportOffset", "merge", "fromEvent", "map", "startWith", "getViewportSize", "watchViewportSize", "fromEvent", "map", "startWith", "watchViewport", "combineLatest", "watchViewportOffset", "watchViewportSize", "map", "offset", "size", "shareReplay", "watchViewportAt", "el", "viewport$", "header$", "size$", "distinctUntilKeyChanged", "offset$", "combineLatest", "map", "getElementOffset", "height", "offset", "size", "x", "y", "watchWorker", "worker", "tx$", "rx$", "fromEvent", "map", "data", "throttle", "tap", "message", "switchMap", "share", "script", "getElement", "config", "getLocation", "configuration", "feature", "flag", "translation", "key", "value", "getComponentElement", "type", "node", "getElement", "getComponentElements", "getElements", "watchAnnounce", "el", "button", "getElement", "fromEvent", "map", "content", "mountAnnounce", "feature", "EMPTY", "defer", "push$", "Subject", "startWith", "hash", "_a", "tap", "state", "finalize", "__spreadValues", "watchConsent", "el", "target$", "map", "target", "mountConsent", "options", "internal$", "Subject", "hidden", "tap", "state", "finalize", "__spreadValues", "import_clipboard", "renderAnnotation", "id", "h", "renderClipboardButton", "id", "h", "translation", "renderSearchDocument", "document", "flag", "parent", "teaser", "missing", "key", "list", "h", "url", "feature", "match", "highlight", "value", "truncate", "tag", "translation", "renderSearchResultItem", "result", "threshold", "docs", "doc", "article", "index", "best", "more", "children", "section", "renderSourceFacts", "facts", "h", "key", "value", "round", "renderTabbedControl", "type", "classes", "h", "renderTable", "table", "h", "renderVersion", "version", "config", "configuration", "url", "h", "renderVersionSelector", "versions", "active", "translation", "watchAnnotation", "el", "container", "offset$", "defer", "combineLatest", "watchElementOffset", "watchElementContentOffset", "map", "x", "y", "scroll", "width", "getElementSize", "watchElementFocus", "switchMap", "active", "offset", "take", "mountAnnotation", "push$", "Subject", "done$", "takeLast", "watchElementVisibility", "takeUntil", "visible", "throttleTime", "animationFrameScheduler", "origin", "index", "getElement", "blur$", "fromEvent", "EMPTY", "tap", "ev", "state", "finalize", "__spreadValues", "findAnnotationMarkers", "container", "markers", "comment", "getElements", "match", "text", "marker", "swap", "source", "target", "mountAnnotationList", "el", "print$", "annotations", "id", "getOptionalElement", "renderAnnotation", "EMPTY", "defer", "done$", "Subject", "takeUntil", "takeLast", "active", "annotation", "inner", "getElement", "child", "merge", "mountAnnotation", "finalize", "share", "sequence", "findCandidateList", "el", "sibling", "watchCodeBlock", "watchElementSize", "map", "width", "getElementContentSize", "distinctUntilKeyChanged", "mountCodeBlock", "options", "hover", "factory$", "defer", "push$", "Subject", "scrollable", "ClipboardJS", "parent", "renderClipboardButton", "container", "list", "feature", "annotations$", "mountAnnotationList", "tap", "state", "finalize", "__spreadValues", "mergeWith", "takeUntil", "takeLast", "height", "distinctUntilChanged", "switchMap", "active", "EMPTY", "watchElementVisibility", "filter", "visible", "take", "mermaid$", "sequence", "fetchScripts", "watchScript", "of", "mountMermaid", "el", "tap", "mermaid_default", "map", "shareReplay", "id", "host", "h", "svg", "shadow", "watchDetails", "el", "target$", "print$", "open", "merge", "map", "target", "filter", "details", "active", "tap", "mountDetails", "options", "defer", "push$", "Subject", "action", "reveal", "state", "finalize", "__spreadValues", "sentinel", "h", "mountDataTable", "el", "renderTable", "of", "watchContentTabs", "el", "inputs", "getElements", "initial", "input", "merge", "fromEvent", "map", "getElement", "startWith", "active", "mountContentTabs", "prev", "renderTabbedControl", "next", "container", "defer", "push$", "Subject", "done$", "takeLast", "combineLatest", "watchElementSize", "auditTime", "animationFrameScheduler", "takeUntil", "size", "offset", "getElementOffset", "width", "getElementSize", "content", "getElementContentOffset", "watchElementContentOffset", "getElementContentSize", "direction", "feature", "skip", "tab", "set", "tabs", "tap", "state", "finalize", "__spreadValues", "subscribeOn", "asyncScheduler", "mountContent", "el", "target$", "print$", "merge", "getElements", "child", "mountCodeBlock", "mountMermaid", "mountDataTable", "mountDetails", "mountContentTabs", "watchDialog", "_el", "alert$", "switchMap", "message", "merge", "of", "delay", "map", "active", "mountDialog", "el", "options", "inner", "getElement", "defer", "push$", "Subject", "tap", "state", "finalize", "__spreadValues", "isHidden", "viewport$", "feature", "of", "direction$", "map", "y", "bufferCount", "a", "b", "distinctUntilKeyChanged", "hidden$", "combineLatest", "filter", "offset", "direction", "distinctUntilChanged", "search$", "watchToggle", "search", "switchMap", "active", "startWith", "watchHeader", "el", "options", "defer", "watchElementSize", "height", "hidden", "shareReplay", "mountHeader", "header$", "main$", "push$", "Subject", "done$", "takeLast", "combineLatestWith", "takeUntil", "state", "__spreadValues", "watchHeaderTitle", "el", "viewport$", "header$", "watchViewportAt", "map", "y", "height", "getElementSize", "distinctUntilKeyChanged", "mountHeaderTitle", "options", "defer", "push$", "Subject", "active", "heading", "getOptionalElement", "EMPTY", "tap", "state", "finalize", "__spreadValues", "watchMain", "el", "viewport$", "header$", "adjust$", "map", "height", "distinctUntilChanged", "border$", "switchMap", "watchElementSize", "distinctUntilKeyChanged", "combineLatest", "header", "top", "bottom", "y", "a", "b", "watchPalette", "inputs", "current", "input", "of", "mergeMap", "fromEvent", "map", "startWith", "shareReplay", "mountPalette", "el", "defer", "push$", "Subject", "palette", "key", "value", "index", "label", "observeOn", "asyncScheduler", "getElements", "tap", "state", "finalize", "__spreadValues", "import_clipboard", "extract", "el", "text", "setupClipboardJS", "alert$", "ClipboardJS", "Observable", "subscriber", "getElement", "ev", "tap", "map", "translation", "preprocess", "urls", "root", "next", "a", "b", "url", "index", "fetchSitemap", "base", "cached", "of", "config", "configuration", "requestXML", "map", "sitemap", "getElements", "node", "catchError", "EMPTY", "defaultIfEmpty", "tap", "setupInstantLoading", "document$", "location$", "viewport$", "config", "configuration", "fromEvent", "favicon", "getOptionalElement", "push$", "fetchSitemap", "map", "paths", "path", "switchMap", "urls", "filter", "ev", "el", "url", "of", "NEVER", "share", "pop$", "merge", "distinctUntilChanged", "a", "b", "response$", "distinctUntilKeyChanged", "request", "catchError", "setLocation", "sample", "dom", "res", "skip", "replacement", "selector", "feature", "source", "target", "getComponentElement", "getElements", "concatMap", "script", "h", "name", "Observable", "observer", "EMPTY", "offset", "setLocationHash", "skipUntil", "debounceTime", "bufferCount", "state", "import_escape_html", "import_escape_html", "setupSearchHighlighter", "config", "escape", "separator", "highlight", "_", "data", "term", "query", "match", "value", "escapeHTML", "defaultTransform", "query", "terms", "index", "isSearchReadyMessage", "message", "isSearchQueryMessage", "isSearchResultMessage", "setupSearchIndex", "config", "docs", "translation", "options", "feature", "setupSearchWorker", "url", "index", "configuration", "worker", "tx$", "Subject", "rx$", "watchWorker", "map", "message", "isSearchResultMessage", "result", "document", "share", "from", "data", "setupVersionSelector", "document$", "config", "configuration", "versions$", "requestJSON", "catchError", "EMPTY", "current$", "map", "versions", "current", "version", "aliases", "switchMap", "urls", "fromEvent", "filter", "ev", "withLatestFrom", "el", "url", "of", "fetchSitemap", "sitemap", "path", "getLocation", "setLocation", "combineLatest", "getElement", "renderVersionSelector", "_a", "outdated", "latest", "warning", "getComponentElements", "watchSearchQuery", "el", "rx$", "fn", "defaultTransform", "searchParams", "getLocation", "setToggle", "param$", "filter", "isSearchReadyMessage", "take", "map", "watchToggle", "active", "url", "value", "focus$", "watchElementFocus", "value$", "merge", "fromEvent", "delay", "startWith", "distinctUntilChanged", "combineLatest", "focus", "shareReplay", "mountSearchQuery", "tx$", "push$", "Subject", "done$", "takeLast", "distinctUntilKeyChanged", "translation", "takeUntil", "tap", "state", "finalize", "__spreadValues", "share", "mountSearchResult", "el", "rx$", "query$", "push$", "Subject", "boundary$", "watchElementBoundary", "filter", "meta", "getElement", "list", "ready$", "isSearchReadyMessage", "take", "withLatestFrom", "skipUntil", "items", "value", "translation", "round", "tap", "switchMap", "merge", "of", "bufferCount", "zipWith", "chunk", "result", "renderSearchResultItem", "isSearchResultMessage", "map", "data", "state", "finalize", "__spreadValues", "watchSearchShare", "_el", "query$", "map", "value", "url", "getLocation", "mountSearchShare", "el", "options", "push$", "Subject", "fromEvent", "ev", "tap", "state", "finalize", "__spreadValues", "mountSearchSuggest", "el", "rx$", "keyboard$", "push$", "Subject", "query", "getComponentElement", "query$", "merge", "fromEvent", "observeOn", "asyncScheduler", "map", "distinctUntilChanged", "combineLatestWith", "suggestions", "value", "words", "last", "filter", "mode", "key", "isSearchResultMessage", "data", "tap", "state", "finalize", "mountSearch", "el", "index$", "keyboard$", "config", "configuration", "url", "worker", "setupSearchWorker", "query", "getComponentElement", "result", "tx$", "rx$", "filter", "isSearchQueryMessage", "sample", "isSearchReadyMessage", "take", "mode", "key", "active", "getActiveElement", "anchors", "anchor", "getElements", "article", "best", "a", "b", "setToggle", "els", "i", "query$", "mountSearchQuery", "result$", "mountSearchResult", "merge", "mergeWith", "getComponentElements", "child", "mountSearchShare", "mountSearchSuggest", "err", "NEVER", "mountSearchHiglight", "el", "index$", "location$", "combineLatest", "startWith", "getLocation", "filter", "url", "map", "index", "setupSearchHighlighter", "fn", "_a", "nodes", "it", "node", "original", "replaced", "text", "childNodes", "h", "watchSidebar", "el", "viewport$", "main$", "parent", "adjust", "combineLatest", "map", "offset", "height", "y", "distinctUntilChanged", "a", "b", "mountSidebar", "_a", "_b", "header$", "options", "__objRest", "inner", "getElement", "getElementOffset", "defer", "push$", "Subject", "auditTime", "animationFrameScheduler", "withLatestFrom", "tap", "state", "finalize", "__spreadValues", "fetchSourceFactsFromGitHub", "user", "repo", "url", "zip", "requestJSON", "catchError", "EMPTY", "map", "release", "defaultIfEmpty", "info", "__spreadValues", "fetchSourceFactsFromGitLab", "base", "project", "url", "requestJSON", "catchError", "EMPTY", "map", "star_count", "forks_count", "defaultIfEmpty", "fetchSourceFacts", "url", "type", "user", "repo", "fetchSourceFactsFromGitHub", "base", "slug", "fetchSourceFactsFromGitLab", "EMPTY", "fetch$", "watchSource", "el", "defer", "cached", "of", "fetchSourceFacts", "tap", "facts", "catchError", "EMPTY", "filter", "map", "shareReplay", "mountSource", "inner", "getElement", "push$", "Subject", "renderSourceFacts", "state", "finalize", "__spreadValues", "watchTabs", "el", "viewport$", "header$", "watchElementSize", "switchMap", "watchViewportAt", "map", "y", "distinctUntilKeyChanged", "mountTabs", "options", "defer", "push$", "Subject", "hidden", "feature", "of", "tap", "state", "finalize", "__spreadValues", "watchTableOfContents", "el", "viewport$", "header$", "table", "anchors", "getElements", "anchor", "id", "target", "getOptionalElement", "adjust$", "distinctUntilKeyChanged", "map", "height", "main", "getComponentElement", "grid", "getElement", "share", "watchElementSize", "switchMap", "body", "defer", "path", "of", "index", "offset", "a", "b", "combineLatestWith", "adjust", "scan", "prev", "next", "y", "size", "last", "distinctUntilChanged", "startWith", "bufferCount", "mountTableOfContents", "target$", "push$", "Subject", "done$", "takeLast", "feature", "takeUntil", "debounceTime", "skip", "repeat", "withLatestFrom", "url", "getLocation", "active", "hash", "tap", "state", "finalize", "__spreadValues", "watchBackToTop", "_el", "viewport$", "main$", "target$", "direction$", "map", "y", "bufferCount", "b", "distinctUntilChanged", "active$", "active", "combineLatest", "direction", "takeUntil", "skip", "endWith", "repeat", "hidden", "mountBackToTop", "el", "header$", "push$", "Subject", "done$", "takeLast", "distinctUntilKeyChanged", "height", "tap", "state", "finalize", "__spreadValues", "patchIndeterminate", "document$", "tablet$", "switchMap", "getElements", "tap", "el", "mergeMap", "fromEvent", "takeWhile", "map", "withLatestFrom", "tablet", "isAppleDevice", "patchScrollfix", "document$", "switchMap", "getElements", "tap", "el", "filter", "mergeMap", "fromEvent", "map", "top", "patchScrolllock", "viewport$", "tablet$", "combineLatest", "watchToggle", "map", "active", "tablet", "switchMap", "of", "delay", "withLatestFrom", "y", "value", "obj", "data", "key", "x", "y", "nodes", "parent", "i", "node", "document$", "watchDocument", "location$", "watchLocation", "target$", "watchLocationTarget", "keyboard$", "watchKeyboard", "viewport$", "watchViewport", "tablet$", "watchMedia", "screen$", "print$", "watchPrint", "config", "configuration", "index$", "requestJSON", "NEVER", "alert$", "Subject", "setupClipboardJS", "feature", "setupInstantLoading", "_a", "setupVersionSelector", "merge", "delay", "setToggle", "filter", "mode", "key", "prev", "getOptionalElement", "next", "patchIndeterminate", "patchScrollfix", "patchScrolllock", "header$", "watchHeader", "getComponentElement", "main$", "map", "switchMap", "el", "watchMain", "shareReplay", "control$", "getComponentElements", "mountConsent", "mountDialog", "mountHeader", "mountPalette", "mountSearch", "mountSource", "content$", "defer", "mountAnnounce", "mountContent", "mountSearchHiglight", "EMPTY", "mountHeaderTitle", "at", "mountSidebar", "mountTabs", "mountTableOfContents", "mountBackToTop", "component$", "mergeWith"] -} diff --git a/assets/javascripts/workers/search.ecf98df9.min.js b/assets/javascripts/workers/search.5bf1dace.min.js similarity index 99% rename from assets/javascripts/workers/search.ecf98df9.min.js rename to assets/javascripts/workers/search.5bf1dace.min.js index f8c7399..5b80d43 100644 --- a/assets/javascripts/workers/search.ecf98df9.min.js +++ b/assets/javascripts/workers/search.5bf1dace.min.js @@ -44,5 +44,5 @@ * Copyright(c) 2015 Tiancheng "Timothy" Gu * MIT Licensed */var Le=/["'&<>]/;ne.exports=we;function we(t){var e=""+t,r=Le.exec(e);if(!r)return e;var n,i="",s=0,o=0;for(s=r.index;s=0;r--){let n=t[r];typeof n!="object"?n=document.createTextNode(n):n.parentNode&&n.parentNode.removeChild(n),r?e.insertBefore(this.previousSibling,n):e.replaceChild(n,this)}}}));var ie=H(q());function se(t){let e=new Map,r=new Set;for(let n of t){let[i,s]=n.location.split("#"),o=n.location,a=n.title,u=n.tags,c=(0,ie.default)(n.text).replace(/\s+(?=[,.:;!?])/g,"").replace(/\s+/g," ");if(s){let h=e.get(i);r.has(h)?e.set(o,{location:o,title:a,text:c,parent:h}):(h.title=n.title,h.text=c,r.add(h))}else e.set(o,M({location:o,title:a,text:c},u&&{tags:u}))}return e}var oe=H(q());function ae(t,e){let r=new RegExp(t.separator,"img"),n=(i,s,o)=>`${s}${o}`;return i=>{i=i.replace(/[\s*+\-:~^]+/g," ").trim();let s=new RegExp(`(^|${t.separator})(${i.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return o=>(e?(0,oe.default)(o):o).replace(s,n).replace(/<\/mark>(\s+)]*>/img,"$1")}}function ue(t){let e=new lunr.Query(["title","text"]);return new lunr.QueryParser(t,e).parse(),e.clauses}function ce(t,e){var i;let r=new Set(t),n={};for(let s=0;s!n.has(i)))]}var U=class{constructor({config:e,docs:r,options:n}){this.options=n,this.documents=se(r),this.highlight=ae(e,!1),lunr.tokenizer.separator=new RegExp(e.separator),this.index=lunr(function(){e.lang.length===1&&e.lang[0]!=="en"?this.use(lunr[e.lang[0]]):e.lang.length>1&&this.use(lunr.multiLanguage(...e.lang));let i=Ee(["trimmer","stopWordFilter","stemmer"],n.pipeline);for(let s of e.lang.map(o=>o==="en"?lunr:lunr[o]))for(let o of i)this.pipeline.remove(s[o]),this.searchPipeline.remove(s[o]);this.ref("location"),this.field("title",{boost:1e3}),this.field("text"),this.field("tags",{boost:1e6,extractor:s=>{let{tags:o=[]}=s;return o.reduce((a,u)=>[...a,...lunr.tokenizer(u)],[])}});for(let s of r)this.add(s,{boost:s.boost})})}search(e){if(e)try{let r=this.highlight(e),n=ue(e).filter(o=>o.presence!==lunr.Query.presence.PROHIBITED),i=this.index.search(`${e}*`).reduce((o,{ref:a,score:u,matchData:c})=>{let h=this.documents.get(a);if(typeof h!="undefined"){let{location:y,title:g,text:b,tags:m,parent:Q}=h,p=ce(n,Object.keys(c.metadata)),d=+!Q+ +Object.values(p).every(w=>w);o.push(Z(M({location:y,title:r(g),text:r(b)},m&&{tags:m.map(r)}),{score:u*(1+d),terms:p}))}return o},[]).sort((o,a)=>a.score-o.score).reduce((o,a)=>{let u=this.documents.get(a.location);if(typeof u!="undefined"){let c="parent"in u?u.parent.location:u.location;o.set(c,[...o.get(c)||[],a])}return o},new Map),s;if(this.options.suggestions){let o=this.index.query(a=>{for(let u of n)a.term(u.term,{fields:["title"],presence:lunr.Query.presence.REQUIRED,wildcard:lunr.Query.wildcard.TRAILING})});s=o.length?Object.keys(o[0].matchData.metadata):[]}return M({items:[...i.values()]},typeof s!="undefined"&&{suggestions:s})}catch(r){console.warn(`Invalid query: ${e} \u2013 see https://bit.ly/2s3ChXG`)}return{items:[]}}};var Y;function ke(t){return z(this,null,function*(){let e="../lunr";if(typeof parent!="undefined"&&"IFrameWorker"in parent){let n=document.querySelector("script[src]"),[i]=n.src.split("/worker");e=e.replace("..",i)}let r=[];for(let n of t.lang){switch(n){case"ja":r.push(`${e}/tinyseg.js`);break;case"hi":case"th":r.push(`${e}/wordcut.js`);break}n!=="en"&&r.push(`${e}/min/lunr.${n}.min.js`)}t.lang.length>1&&r.push(`${e}/min/lunr.multi.min.js`),r.length&&(yield importScripts(`${e}/min/lunr.stemmer.support.min.js`,...r))})}function Te(t){return z(this,null,function*(){switch(t.type){case 0:return yield ke(t.data.config),Y=new U(t.data),{type:1};case 2:return{type:3,data:Y?Y.search(t.data):{items:[]}};default:throw new TypeError("Invalid message type")}})}self.lunr=le.default;addEventListener("message",t=>z(void 0,null,function*(){postMessage(yield Te(t.data))}));})(); -//# sourceMappingURL=search.ecf98df9.min.js.map +//# sourceMappingURL=search.5bf1dace.min.js.map diff --git a/assets/javascripts/workers/search.ecf98df9.min.js.map b/assets/javascripts/workers/search.5bf1dace.min.js.map similarity index 94% rename from assets/javascripts/workers/search.ecf98df9.min.js.map rename to assets/javascripts/workers/search.5bf1dace.min.js.map index eada3e6..1df8be0 100644 --- a/assets/javascripts/workers/search.ecf98df9.min.js.map +++ b/assets/javascripts/workers/search.5bf1dace.min.js.map @@ -3,6 +3,6 @@ "sources": ["node_modules/lunr/lunr.js", "node_modules/escape-html/index.js", "src/assets/javascripts/integrations/search/worker/main/index.ts", "src/assets/javascripts/polyfills/index.ts", "src/assets/javascripts/integrations/search/document/index.ts", "src/assets/javascripts/integrations/search/highlighter/index.ts", "src/assets/javascripts/integrations/search/query/_/index.ts", "src/assets/javascripts/integrations/search/_/index.ts"], "sourceRoot": "../../../..", "sourcesContent": ["/**\n * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9\n * Copyright (C) 2020 Oliver Nightingale\n * @license MIT\n */\n\n;(function(){\n\n/**\n * A convenience function for configuring and constructing\n * a new lunr Index.\n *\n * A lunr.Builder instance is created and the pipeline setup\n * with a trimmer, stop word filter and stemmer.\n *\n * This builder object is yielded to the configuration function\n * that is passed as a parameter, allowing the list of fields\n * and other builder parameters to be customised.\n *\n * All documents _must_ be added within the passed config function.\n *\n * @example\n * var idx = lunr(function () {\n * this.field('title')\n * this.field('body')\n * this.ref('id')\n *\n * documents.forEach(function (doc) {\n * this.add(doc)\n * }, this)\n * })\n *\n * @see {@link lunr.Builder}\n * @see {@link lunr.Pipeline}\n * @see {@link lunr.trimmer}\n * @see {@link lunr.stopWordFilter}\n * @see {@link lunr.stemmer}\n * @namespace {function} lunr\n */\nvar lunr = function (config) {\n var builder = new lunr.Builder\n\n builder.pipeline.add(\n lunr.trimmer,\n lunr.stopWordFilter,\n lunr.stemmer\n )\n\n builder.searchPipeline.add(\n lunr.stemmer\n )\n\n config.call(builder, builder)\n return builder.build()\n}\n\nlunr.version = \"2.3.9\"\n/*!\n * lunr.utils\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A namespace containing utils for the rest of the lunr library\n * @namespace lunr.utils\n */\nlunr.utils = {}\n\n/**\n * Print a warning message to the console.\n *\n * @param {String} message The message to be printed.\n * @memberOf lunr.utils\n * @function\n */\nlunr.utils.warn = (function (global) {\n /* eslint-disable no-console */\n return function (message) {\n if (global.console && console.warn) {\n console.warn(message)\n }\n }\n /* eslint-enable no-console */\n})(this)\n\n/**\n * Convert an object to a string.\n *\n * In the case of `null` and `undefined` the function returns\n * the empty string, in all other cases the result of calling\n * `toString` on the passed object is returned.\n *\n * @param {Any} obj The object to convert to a string.\n * @return {String} string representation of the passed object.\n * @memberOf lunr.utils\n */\nlunr.utils.asString = function (obj) {\n if (obj === void 0 || obj === null) {\n return \"\"\n } else {\n return obj.toString()\n }\n}\n\n/**\n * Clones an object.\n *\n * Will create a copy of an existing object such that any mutations\n * on the copy cannot affect the original.\n *\n * Only shallow objects are supported, passing a nested object to this\n * function will cause a TypeError.\n *\n * Objects with primitives, and arrays of primitives are supported.\n *\n * @param {Object} obj The object to clone.\n * @return {Object} a clone of the passed object.\n * @throws {TypeError} when a nested object is passed.\n * @memberOf Utils\n */\nlunr.utils.clone = function (obj) {\n if (obj === null || obj === undefined) {\n return obj\n }\n\n var clone = Object.create(null),\n keys = Object.keys(obj)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i],\n val = obj[key]\n\n if (Array.isArray(val)) {\n clone[key] = val.slice()\n continue\n }\n\n if (typeof val === 'string' ||\n typeof val === 'number' ||\n typeof val === 'boolean') {\n clone[key] = val\n continue\n }\n\n throw new TypeError(\"clone is not deep and does not support nested objects\")\n }\n\n return clone\n}\nlunr.FieldRef = function (docRef, fieldName, stringValue) {\n this.docRef = docRef\n this.fieldName = fieldName\n this._stringValue = stringValue\n}\n\nlunr.FieldRef.joiner = \"/\"\n\nlunr.FieldRef.fromString = function (s) {\n var n = s.indexOf(lunr.FieldRef.joiner)\n\n if (n === -1) {\n throw \"malformed field ref string\"\n }\n\n var fieldRef = s.slice(0, n),\n docRef = s.slice(n + 1)\n\n return new lunr.FieldRef (docRef, fieldRef, s)\n}\n\nlunr.FieldRef.prototype.toString = function () {\n if (this._stringValue == undefined) {\n this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef\n }\n\n return this._stringValue\n}\n/*!\n * lunr.Set\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A lunr set.\n *\n * @constructor\n */\nlunr.Set = function (elements) {\n this.elements = Object.create(null)\n\n if (elements) {\n this.length = elements.length\n\n for (var i = 0; i < this.length; i++) {\n this.elements[elements[i]] = true\n }\n } else {\n this.length = 0\n }\n}\n\n/**\n * A complete set that contains all elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.complete = {\n intersect: function (other) {\n return other\n },\n\n union: function () {\n return this\n },\n\n contains: function () {\n return true\n }\n}\n\n/**\n * An empty set that contains no elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.empty = {\n intersect: function () {\n return this\n },\n\n union: function (other) {\n return other\n },\n\n contains: function () {\n return false\n }\n}\n\n/**\n * Returns true if this set contains the specified object.\n *\n * @param {object} object - Object whose presence in this set is to be tested.\n * @returns {boolean} - True if this set contains the specified object.\n */\nlunr.Set.prototype.contains = function (object) {\n return !!this.elements[object]\n}\n\n/**\n * Returns a new set containing only the elements that are present in both\n * this set and the specified set.\n *\n * @param {lunr.Set} other - set to intersect with this set.\n * @returns {lunr.Set} a new set that is the intersection of this and the specified set.\n */\n\nlunr.Set.prototype.intersect = function (other) {\n var a, b, elements, intersection = []\n\n if (other === lunr.Set.complete) {\n return this\n }\n\n if (other === lunr.Set.empty) {\n return other\n }\n\n if (this.length < other.length) {\n a = this\n b = other\n } else {\n a = other\n b = this\n }\n\n elements = Object.keys(a.elements)\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i]\n if (element in b.elements) {\n intersection.push(element)\n }\n }\n\n return new lunr.Set (intersection)\n}\n\n/**\n * Returns a new set combining the elements of this and the specified set.\n *\n * @param {lunr.Set} other - set to union with this set.\n * @return {lunr.Set} a new set that is the union of this and the specified set.\n */\n\nlunr.Set.prototype.union = function (other) {\n if (other === lunr.Set.complete) {\n return lunr.Set.complete\n }\n\n if (other === lunr.Set.empty) {\n return this\n }\n\n return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)))\n}\n/**\n * A function to calculate the inverse document frequency for\n * a posting. This is shared between the builder and the index\n *\n * @private\n * @param {object} posting - The posting for a given term\n * @param {number} documentCount - The total number of documents.\n */\nlunr.idf = function (posting, documentCount) {\n var documentsWithTerm = 0\n\n for (var fieldName in posting) {\n if (fieldName == '_index') continue // Ignore the term index, its not a field\n documentsWithTerm += Object.keys(posting[fieldName]).length\n }\n\n var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5)\n\n return Math.log(1 + Math.abs(x))\n}\n\n/**\n * A token wraps a string representation of a token\n * as it is passed through the text processing pipeline.\n *\n * @constructor\n * @param {string} [str=''] - The string token being wrapped.\n * @param {object} [metadata={}] - Metadata associated with this token.\n */\nlunr.Token = function (str, metadata) {\n this.str = str || \"\"\n this.metadata = metadata || {}\n}\n\n/**\n * Returns the token string that is being wrapped by this object.\n *\n * @returns {string}\n */\nlunr.Token.prototype.toString = function () {\n return this.str\n}\n\n/**\n * A token update function is used when updating or optionally\n * when cloning a token.\n *\n * @callback lunr.Token~updateFunction\n * @param {string} str - The string representation of the token.\n * @param {Object} metadata - All metadata associated with this token.\n */\n\n/**\n * Applies the given function to the wrapped string token.\n *\n * @example\n * token.update(function (str, metadata) {\n * return str.toUpperCase()\n * })\n *\n * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.update = function (fn) {\n this.str = fn(this.str, this.metadata)\n return this\n}\n\n/**\n * Creates a clone of this token. Optionally a function can be\n * applied to the cloned token.\n *\n * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.clone = function (fn) {\n fn = fn || function (s) { return s }\n return new lunr.Token (fn(this.str, this.metadata), this.metadata)\n}\n/*!\n * lunr.tokenizer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A function for splitting a string into tokens ready to be inserted into\n * the search index. Uses `lunr.tokenizer.separator` to split strings, change\n * the value of this property to change how strings are split into tokens.\n *\n * This tokenizer will convert its parameter to a string by calling `toString` and\n * then will split this string on the character in `lunr.tokenizer.separator`.\n * Arrays will have their elements converted to strings and wrapped in a lunr.Token.\n *\n * Optional metadata can be passed to the tokenizer, this metadata will be cloned and\n * added as metadata to every token that is created from the object to be tokenized.\n *\n * @static\n * @param {?(string|object|object[])} obj - The object to convert into tokens\n * @param {?object} metadata - Optional metadata to associate with every token\n * @returns {lunr.Token[]}\n * @see {@link lunr.Pipeline}\n */\nlunr.tokenizer = function (obj, metadata) {\n if (obj == null || obj == undefined) {\n return []\n }\n\n if (Array.isArray(obj)) {\n return obj.map(function (t) {\n return new lunr.Token(\n lunr.utils.asString(t).toLowerCase(),\n lunr.utils.clone(metadata)\n )\n })\n }\n\n var str = obj.toString().toLowerCase(),\n len = str.length,\n tokens = []\n\n for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {\n var char = str.charAt(sliceEnd),\n sliceLength = sliceEnd - sliceStart\n\n if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) {\n\n if (sliceLength > 0) {\n var tokenMetadata = lunr.utils.clone(metadata) || {}\n tokenMetadata[\"position\"] = [sliceStart, sliceLength]\n tokenMetadata[\"index\"] = tokens.length\n\n tokens.push(\n new lunr.Token (\n str.slice(sliceStart, sliceEnd),\n tokenMetadata\n )\n )\n }\n\n sliceStart = sliceEnd + 1\n }\n\n }\n\n return tokens\n}\n\n/**\n * The separator used to split a string into tokens. Override this property to change the behaviour of\n * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.\n *\n * @static\n * @see lunr.tokenizer\n */\nlunr.tokenizer.separator = /[\\s\\-]+/\n/*!\n * lunr.Pipeline\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.Pipelines maintain an ordered list of functions to be applied to all\n * tokens in documents entering the search index and queries being ran against\n * the index.\n *\n * An instance of lunr.Index created with the lunr shortcut will contain a\n * pipeline with a stop word filter and an English language stemmer. Extra\n * functions can be added before or after either of these functions or these\n * default functions can be removed.\n *\n * When run the pipeline will call each function in turn, passing a token, the\n * index of that token in the original list of all tokens and finally a list of\n * all the original tokens.\n *\n * The output of functions in the pipeline will be passed to the next function\n * in the pipeline. To exclude a token from entering the index the function\n * should return undefined, the rest of the pipeline will not be called with\n * this token.\n *\n * For serialisation of pipelines to work, all functions used in an instance of\n * a pipeline should be registered with lunr.Pipeline. Registered functions can\n * then be loaded. If trying to load a serialised pipeline that uses functions\n * that are not registered an error will be thrown.\n *\n * If not planning on serialising the pipeline then registering pipeline functions\n * is not necessary.\n *\n * @constructor\n */\nlunr.Pipeline = function () {\n this._stack = []\n}\n\nlunr.Pipeline.registeredFunctions = Object.create(null)\n\n/**\n * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token\n * string as well as all known metadata. A pipeline function can mutate the token string\n * or mutate (or add) metadata for a given token.\n *\n * A pipeline function can indicate that the passed token should be discarded by returning\n * null, undefined or an empty string. This token will not be passed to any downstream pipeline\n * functions and will not be added to the index.\n *\n * Multiple tokens can be returned by returning an array of tokens. Each token will be passed\n * to any downstream pipeline functions and all will returned tokens will be added to the index.\n *\n * Any number of pipeline functions may be chained together using a lunr.Pipeline.\n *\n * @interface lunr.PipelineFunction\n * @param {lunr.Token} token - A token from the document being processed.\n * @param {number} i - The index of this token in the complete list of tokens for this document/field.\n * @param {lunr.Token[]} tokens - All tokens for this document/field.\n * @returns {(?lunr.Token|lunr.Token[])}\n */\n\n/**\n * Register a function with the pipeline.\n *\n * Functions that are used in the pipeline should be registered if the pipeline\n * needs to be serialised, or a serialised pipeline needs to be loaded.\n *\n * Registering a function does not add it to a pipeline, functions must still be\n * added to instances of the pipeline for them to be used when running a pipeline.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @param {String} label - The label to register this function with\n */\nlunr.Pipeline.registerFunction = function (fn, label) {\n if (label in this.registeredFunctions) {\n lunr.utils.warn('Overwriting existing registered function: ' + label)\n }\n\n fn.label = label\n lunr.Pipeline.registeredFunctions[fn.label] = fn\n}\n\n/**\n * Warns if the function is not registered as a Pipeline function.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @private\n */\nlunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n var isRegistered = fn.label && (fn.label in this.registeredFunctions)\n\n if (!isRegistered) {\n lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\\n', fn)\n }\n}\n\n/**\n * Loads a previously serialised pipeline.\n *\n * All functions to be loaded must already be registered with lunr.Pipeline.\n * If any function from the serialised data has not been registered then an\n * error will be thrown.\n *\n * @param {Object} serialised - The serialised pipeline to load.\n * @returns {lunr.Pipeline}\n */\nlunr.Pipeline.load = function (serialised) {\n var pipeline = new lunr.Pipeline\n\n serialised.forEach(function (fnName) {\n var fn = lunr.Pipeline.registeredFunctions[fnName]\n\n if (fn) {\n pipeline.add(fn)\n } else {\n throw new Error('Cannot load unregistered function: ' + fnName)\n }\n })\n\n return pipeline\n}\n\n/**\n * Adds new functions to the end of the pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.\n */\nlunr.Pipeline.prototype.add = function () {\n var fns = Array.prototype.slice.call(arguments)\n\n fns.forEach(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n this._stack.push(fn)\n }, this)\n}\n\n/**\n * Adds a single function after a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.after = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n pos = pos + 1\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Adds a single function before a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.before = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Removes a function from the pipeline.\n *\n * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.\n */\nlunr.Pipeline.prototype.remove = function (fn) {\n var pos = this._stack.indexOf(fn)\n if (pos == -1) {\n return\n }\n\n this._stack.splice(pos, 1)\n}\n\n/**\n * Runs the current list of functions that make up the pipeline against the\n * passed tokens.\n *\n * @param {Array} tokens The tokens to run through the pipeline.\n * @returns {Array}\n */\nlunr.Pipeline.prototype.run = function (tokens) {\n var stackLength = this._stack.length\n\n for (var i = 0; i < stackLength; i++) {\n var fn = this._stack[i]\n var memo = []\n\n for (var j = 0; j < tokens.length; j++) {\n var result = fn(tokens[j], j, tokens)\n\n if (result === null || result === void 0 || result === '') continue\n\n if (Array.isArray(result)) {\n for (var k = 0; k < result.length; k++) {\n memo.push(result[k])\n }\n } else {\n memo.push(result)\n }\n }\n\n tokens = memo\n }\n\n return tokens\n}\n\n/**\n * Convenience method for passing a string through a pipeline and getting\n * strings out. This method takes care of wrapping the passed string in a\n * token and mapping the resulting tokens back to strings.\n *\n * @param {string} str - The string to pass through the pipeline.\n * @param {?object} metadata - Optional metadata to associate with the token\n * passed to the pipeline.\n * @returns {string[]}\n */\nlunr.Pipeline.prototype.runString = function (str, metadata) {\n var token = new lunr.Token (str, metadata)\n\n return this.run([token]).map(function (t) {\n return t.toString()\n })\n}\n\n/**\n * Resets the pipeline by removing any existing processors.\n *\n */\nlunr.Pipeline.prototype.reset = function () {\n this._stack = []\n}\n\n/**\n * Returns a representation of the pipeline ready for serialisation.\n *\n * Logs a warning if the function has not been registered.\n *\n * @returns {Array}\n */\nlunr.Pipeline.prototype.toJSON = function () {\n return this._stack.map(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n\n return fn.label\n })\n}\n/*!\n * lunr.Vector\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A vector is used to construct the vector space of documents and queries. These\n * vectors support operations to determine the similarity between two documents or\n * a document and a query.\n *\n * Normally no parameters are required for initializing a vector, but in the case of\n * loading a previously dumped vector the raw elements can be provided to the constructor.\n *\n * For performance reasons vectors are implemented with a flat array, where an elements\n * index is immediately followed by its value. E.g. [index, value, index, value]. This\n * allows the underlying array to be as sparse as possible and still offer decent\n * performance when being used for vector calculations.\n *\n * @constructor\n * @param {Number[]} [elements] - The flat list of element index and element value pairs.\n */\nlunr.Vector = function (elements) {\n this._magnitude = 0\n this.elements = elements || []\n}\n\n\n/**\n * Calculates the position within the vector to insert a given index.\n *\n * This is used internally by insert and upsert. If there are duplicate indexes then\n * the position is returned as if the value for that index were to be updated, but it\n * is the callers responsibility to check whether there is a duplicate at that index\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @returns {Number}\n */\nlunr.Vector.prototype.positionForIndex = function (index) {\n // For an empty vector the tuple can be inserted at the beginning\n if (this.elements.length == 0) {\n return 0\n }\n\n var start = 0,\n end = this.elements.length / 2,\n sliceLength = end - start,\n pivotPoint = Math.floor(sliceLength / 2),\n pivotIndex = this.elements[pivotPoint * 2]\n\n while (sliceLength > 1) {\n if (pivotIndex < index) {\n start = pivotPoint\n }\n\n if (pivotIndex > index) {\n end = pivotPoint\n }\n\n if (pivotIndex == index) {\n break\n }\n\n sliceLength = end - start\n pivotPoint = start + Math.floor(sliceLength / 2)\n pivotIndex = this.elements[pivotPoint * 2]\n }\n\n if (pivotIndex == index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex > index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex < index) {\n return (pivotPoint + 1) * 2\n }\n}\n\n/**\n * Inserts an element at an index within the vector.\n *\n * Does not allow duplicates, will throw an error if there is already an entry\n * for this index.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n */\nlunr.Vector.prototype.insert = function (insertIdx, val) {\n this.upsert(insertIdx, val, function () {\n throw \"duplicate index\"\n })\n}\n\n/**\n * Inserts or updates an existing index within the vector.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n * @param {function} fn - A function that is called for updates, the existing value and the\n * requested value are passed as arguments\n */\nlunr.Vector.prototype.upsert = function (insertIdx, val, fn) {\n this._magnitude = 0\n var position = this.positionForIndex(insertIdx)\n\n if (this.elements[position] == insertIdx) {\n this.elements[position + 1] = fn(this.elements[position + 1], val)\n } else {\n this.elements.splice(position, 0, insertIdx, val)\n }\n}\n\n/**\n * Calculates the magnitude of this vector.\n *\n * @returns {Number}\n */\nlunr.Vector.prototype.magnitude = function () {\n if (this._magnitude) return this._magnitude\n\n var sumOfSquares = 0,\n elementsLength = this.elements.length\n\n for (var i = 1; i < elementsLength; i += 2) {\n var val = this.elements[i]\n sumOfSquares += val * val\n }\n\n return this._magnitude = Math.sqrt(sumOfSquares)\n}\n\n/**\n * Calculates the dot product of this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The vector to compute the dot product with.\n * @returns {Number}\n */\nlunr.Vector.prototype.dot = function (otherVector) {\n var dotProduct = 0,\n a = this.elements, b = otherVector.elements,\n aLen = a.length, bLen = b.length,\n aVal = 0, bVal = 0,\n i = 0, j = 0\n\n while (i < aLen && j < bLen) {\n aVal = a[i], bVal = b[j]\n if (aVal < bVal) {\n i += 2\n } else if (aVal > bVal) {\n j += 2\n } else if (aVal == bVal) {\n dotProduct += a[i + 1] * b[j + 1]\n i += 2\n j += 2\n }\n }\n\n return dotProduct\n}\n\n/**\n * Calculates the similarity between this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The other vector to calculate the\n * similarity with.\n * @returns {Number}\n */\nlunr.Vector.prototype.similarity = function (otherVector) {\n return this.dot(otherVector) / this.magnitude() || 0\n}\n\n/**\n * Converts the vector to an array of the elements within the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toArray = function () {\n var output = new Array (this.elements.length / 2)\n\n for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {\n output[j] = this.elements[i]\n }\n\n return output\n}\n\n/**\n * A JSON serializable representation of the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toJSON = function () {\n return this.elements\n}\n/* eslint-disable */\n/*!\n * lunr.stemmer\n * Copyright (C) 2020 Oliver Nightingale\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n/**\n * lunr.stemmer is an english language stemmer, this is a JavaScript\n * implementation of the PorterStemmer taken from http://tartarus.org/~martin\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token - The string to stem\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n * @function\n */\nlunr.stemmer = (function(){\n var step2list = {\n \"ational\" : \"ate\",\n \"tional\" : \"tion\",\n \"enci\" : \"ence\",\n \"anci\" : \"ance\",\n \"izer\" : \"ize\",\n \"bli\" : \"ble\",\n \"alli\" : \"al\",\n \"entli\" : \"ent\",\n \"eli\" : \"e\",\n \"ousli\" : \"ous\",\n \"ization\" : \"ize\",\n \"ation\" : \"ate\",\n \"ator\" : \"ate\",\n \"alism\" : \"al\",\n \"iveness\" : \"ive\",\n \"fulness\" : \"ful\",\n \"ousness\" : \"ous\",\n \"aliti\" : \"al\",\n \"iviti\" : \"ive\",\n \"biliti\" : \"ble\",\n \"logi\" : \"log\"\n },\n\n step3list = {\n \"icate\" : \"ic\",\n \"ative\" : \"\",\n \"alize\" : \"al\",\n \"iciti\" : \"ic\",\n \"ical\" : \"ic\",\n \"ful\" : \"\",\n \"ness\" : \"\"\n },\n\n c = \"[^aeiou]\", // consonant\n v = \"[aeiouy]\", // vowel\n C = c + \"[^aeiouy]*\", // consonant sequence\n V = v + \"[aeiou]*\", // vowel sequence\n\n mgr0 = \"^(\" + C + \")?\" + V + C, // [C]VC... is m>0\n meq1 = \"^(\" + C + \")?\" + V + C + \"(\" + V + \")?$\", // [C]VC[V] is m=1\n mgr1 = \"^(\" + C + \")?\" + V + C + V + C, // [C]VCVC... is m>1\n s_v = \"^(\" + C + \")?\" + v; // vowel in stem\n\n var re_mgr0 = new RegExp(mgr0);\n var re_mgr1 = new RegExp(mgr1);\n var re_meq1 = new RegExp(meq1);\n var re_s_v = new RegExp(s_v);\n\n var re_1a = /^(.+?)(ss|i)es$/;\n var re2_1a = /^(.+?)([^s])s$/;\n var re_1b = /^(.+?)eed$/;\n var re2_1b = /^(.+?)(ed|ing)$/;\n var re_1b_2 = /.$/;\n var re2_1b_2 = /(at|bl|iz)$/;\n var re3_1b_2 = new RegExp(\"([^aeiouylsz])\\\\1$\");\n var re4_1b_2 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var re_1c = /^(.+?[^aeiou])y$/;\n var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n\n var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n\n var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n var re2_4 = /^(.+?)(s|t)(ion)$/;\n\n var re_5 = /^(.+?)e$/;\n var re_5_1 = /ll$/;\n var re3_5 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var porterStemmer = function porterStemmer(w) {\n var stem,\n suffix,\n firstch,\n re,\n re2,\n re3,\n re4;\n\n if (w.length < 3) { return w; }\n\n firstch = w.substr(0,1);\n if (firstch == \"y\") {\n w = firstch.toUpperCase() + w.substr(1);\n }\n\n // Step 1a\n re = re_1a\n re2 = re2_1a;\n\n if (re.test(w)) { w = w.replace(re,\"$1$2\"); }\n else if (re2.test(w)) { w = w.replace(re2,\"$1$2\"); }\n\n // Step 1b\n re = re_1b;\n re2 = re2_1b;\n if (re.test(w)) {\n var fp = re.exec(w);\n re = re_mgr0;\n if (re.test(fp[1])) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1];\n re2 = re_s_v;\n if (re2.test(stem)) {\n w = stem;\n re2 = re2_1b_2;\n re3 = re3_1b_2;\n re4 = re4_1b_2;\n if (re2.test(w)) { w = w + \"e\"; }\n else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,\"\"); }\n else if (re4.test(w)) { w = w + \"e\"; }\n }\n }\n\n // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)\n re = re_1c;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n w = stem + \"i\";\n }\n\n // Step 2\n re = re_2;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step2list[suffix];\n }\n }\n\n // Step 3\n re = re_3;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step3list[suffix];\n }\n }\n\n // Step 4\n re = re_4;\n re2 = re2_4;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n if (re.test(stem)) {\n w = stem;\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1] + fp[2];\n re2 = re_mgr1;\n if (re2.test(stem)) {\n w = stem;\n }\n }\n\n // Step 5\n re = re_5;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n re2 = re_meq1;\n re3 = re3_5;\n if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {\n w = stem;\n }\n }\n\n re = re_5_1;\n re2 = re_mgr1;\n if (re.test(w) && re2.test(w)) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n\n // and turn initial Y back to y\n\n if (firstch == \"y\") {\n w = firstch.toLowerCase() + w.substr(1);\n }\n\n return w;\n };\n\n return function (token) {\n return token.update(porterStemmer);\n }\n})();\n\nlunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')\n/*!\n * lunr.stopWordFilter\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.generateStopWordFilter builds a stopWordFilter function from the provided\n * list of stop words.\n *\n * The built in lunr.stopWordFilter is built using this generator and can be used\n * to generate custom stopWordFilters for applications or non English languages.\n *\n * @function\n * @param {Array} token The token to pass through the filter\n * @returns {lunr.PipelineFunction}\n * @see lunr.Pipeline\n * @see lunr.stopWordFilter\n */\nlunr.generateStopWordFilter = function (stopWords) {\n var words = stopWords.reduce(function (memo, stopWord) {\n memo[stopWord] = stopWord\n return memo\n }, {})\n\n return function (token) {\n if (token && words[token.toString()] !== token.toString()) return token\n }\n}\n\n/**\n * lunr.stopWordFilter is an English language stop word list filter, any words\n * contained in the list will not be passed through the filter.\n *\n * This is intended to be used in the Pipeline. If the token does not pass the\n * filter then undefined will be returned.\n *\n * @function\n * @implements {lunr.PipelineFunction}\n * @params {lunr.Token} token - A token to check for being a stop word.\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n */\nlunr.stopWordFilter = lunr.generateStopWordFilter([\n 'a',\n 'able',\n 'about',\n 'across',\n 'after',\n 'all',\n 'almost',\n 'also',\n 'am',\n 'among',\n 'an',\n 'and',\n 'any',\n 'are',\n 'as',\n 'at',\n 'be',\n 'because',\n 'been',\n 'but',\n 'by',\n 'can',\n 'cannot',\n 'could',\n 'dear',\n 'did',\n 'do',\n 'does',\n 'either',\n 'else',\n 'ever',\n 'every',\n 'for',\n 'from',\n 'get',\n 'got',\n 'had',\n 'has',\n 'have',\n 'he',\n 'her',\n 'hers',\n 'him',\n 'his',\n 'how',\n 'however',\n 'i',\n 'if',\n 'in',\n 'into',\n 'is',\n 'it',\n 'its',\n 'just',\n 'least',\n 'let',\n 'like',\n 'likely',\n 'may',\n 'me',\n 'might',\n 'most',\n 'must',\n 'my',\n 'neither',\n 'no',\n 'nor',\n 'not',\n 'of',\n 'off',\n 'often',\n 'on',\n 'only',\n 'or',\n 'other',\n 'our',\n 'own',\n 'rather',\n 'said',\n 'say',\n 'says',\n 'she',\n 'should',\n 'since',\n 'so',\n 'some',\n 'than',\n 'that',\n 'the',\n 'their',\n 'them',\n 'then',\n 'there',\n 'these',\n 'they',\n 'this',\n 'tis',\n 'to',\n 'too',\n 'twas',\n 'us',\n 'wants',\n 'was',\n 'we',\n 'were',\n 'what',\n 'when',\n 'where',\n 'which',\n 'while',\n 'who',\n 'whom',\n 'why',\n 'will',\n 'with',\n 'would',\n 'yet',\n 'you',\n 'your'\n])\n\nlunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')\n/*!\n * lunr.trimmer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.trimmer is a pipeline function for trimming non word\n * characters from the beginning and end of tokens before they\n * enter the index.\n *\n * This implementation may not work correctly for non latin\n * characters and should either be removed or adapted for use\n * with languages with non-latin characters.\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token The token to pass through the filter\n * @returns {lunr.Token}\n * @see lunr.Pipeline\n */\nlunr.trimmer = function (token) {\n return token.update(function (s) {\n return s.replace(/^\\W+/, '').replace(/\\W+$/, '')\n })\n}\n\nlunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')\n/*!\n * lunr.TokenSet\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A token set is used to store the unique list of all tokens\n * within an index. Token sets are also used to represent an\n * incoming query to the index, this query token set and index\n * token set are then intersected to find which tokens to look\n * up in the inverted index.\n *\n * A token set can hold multiple tokens, as in the case of the\n * index token set, or it can hold a single token as in the\n * case of a simple query token set.\n *\n * Additionally token sets are used to perform wildcard matching.\n * Leading, contained and trailing wildcards are supported, and\n * from this edit distance matching can also be provided.\n *\n * Token sets are implemented as a minimal finite state automata,\n * where both common prefixes and suffixes are shared between tokens.\n * This helps to reduce the space used for storing the token set.\n *\n * @constructor\n */\nlunr.TokenSet = function () {\n this.final = false\n this.edges = {}\n this.id = lunr.TokenSet._nextId\n lunr.TokenSet._nextId += 1\n}\n\n/**\n * Keeps track of the next, auto increment, identifier to assign\n * to a new tokenSet.\n *\n * TokenSets require a unique identifier to be correctly minimised.\n *\n * @private\n */\nlunr.TokenSet._nextId = 1\n\n/**\n * Creates a TokenSet instance from the given sorted array of words.\n *\n * @param {String[]} arr - A sorted array of strings to create the set from.\n * @returns {lunr.TokenSet}\n * @throws Will throw an error if the input array is not sorted.\n */\nlunr.TokenSet.fromArray = function (arr) {\n var builder = new lunr.TokenSet.Builder\n\n for (var i = 0, len = arr.length; i < len; i++) {\n builder.insert(arr[i])\n }\n\n builder.finish()\n return builder.root\n}\n\n/**\n * Creates a token set from a query clause.\n *\n * @private\n * @param {Object} clause - A single clause from lunr.Query.\n * @param {string} clause.term - The query clause term.\n * @param {number} [clause.editDistance] - The optional edit distance for the term.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromClause = function (clause) {\n if ('editDistance' in clause) {\n return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance)\n } else {\n return lunr.TokenSet.fromString(clause.term)\n }\n}\n\n/**\n * Creates a token set representing a single string with a specified\n * edit distance.\n *\n * Insertions, deletions, substitutions and transpositions are each\n * treated as an edit distance of 1.\n *\n * Increasing the allowed edit distance will have a dramatic impact\n * on the performance of both creating and intersecting these TokenSets.\n * It is advised to keep the edit distance less than 3.\n *\n * @param {string} str - The string to create the token set from.\n * @param {number} editDistance - The allowed edit distance to match.\n * @returns {lunr.Vector}\n */\nlunr.TokenSet.fromFuzzyString = function (str, editDistance) {\n var root = new lunr.TokenSet\n\n var stack = [{\n node: root,\n editsRemaining: editDistance,\n str: str\n }]\n\n while (stack.length) {\n var frame = stack.pop()\n\n // no edit\n if (frame.str.length > 0) {\n var char = frame.str.charAt(0),\n noEditNode\n\n if (char in frame.node.edges) {\n noEditNode = frame.node.edges[char]\n } else {\n noEditNode = new lunr.TokenSet\n frame.node.edges[char] = noEditNode\n }\n\n if (frame.str.length == 1) {\n noEditNode.final = true\n }\n\n stack.push({\n node: noEditNode,\n editsRemaining: frame.editsRemaining,\n str: frame.str.slice(1)\n })\n }\n\n if (frame.editsRemaining == 0) {\n continue\n }\n\n // insertion\n if (\"*\" in frame.node.edges) {\n var insertionNode = frame.node.edges[\"*\"]\n } else {\n var insertionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = insertionNode\n }\n\n if (frame.str.length == 0) {\n insertionNode.final = true\n }\n\n stack.push({\n node: insertionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str\n })\n\n // deletion\n // can only do a deletion if we have enough edits remaining\n // and if there are characters left to delete in the string\n if (frame.str.length > 1) {\n stack.push({\n node: frame.node,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // deletion\n // just removing the last character from the str\n if (frame.str.length == 1) {\n frame.node.final = true\n }\n\n // substitution\n // can only do a substitution if we have enough edits remaining\n // and if there are characters left to substitute\n if (frame.str.length >= 1) {\n if (\"*\" in frame.node.edges) {\n var substitutionNode = frame.node.edges[\"*\"]\n } else {\n var substitutionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = substitutionNode\n }\n\n if (frame.str.length == 1) {\n substitutionNode.final = true\n }\n\n stack.push({\n node: substitutionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // transposition\n // can only do a transposition if there are edits remaining\n // and there are enough characters to transpose\n if (frame.str.length > 1) {\n var charA = frame.str.charAt(0),\n charB = frame.str.charAt(1),\n transposeNode\n\n if (charB in frame.node.edges) {\n transposeNode = frame.node.edges[charB]\n } else {\n transposeNode = new lunr.TokenSet\n frame.node.edges[charB] = transposeNode\n }\n\n if (frame.str.length == 1) {\n transposeNode.final = true\n }\n\n stack.push({\n node: transposeNode,\n editsRemaining: frame.editsRemaining - 1,\n str: charA + frame.str.slice(2)\n })\n }\n }\n\n return root\n}\n\n/**\n * Creates a TokenSet from a string.\n *\n * The string may contain one or more wildcard characters (*)\n * that will allow wildcard matching when intersecting with\n * another TokenSet.\n *\n * @param {string} str - The string to create a TokenSet from.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromString = function (str) {\n var node = new lunr.TokenSet,\n root = node\n\n /*\n * Iterates through all characters within the passed string\n * appending a node for each character.\n *\n * When a wildcard character is found then a self\n * referencing edge is introduced to continually match\n * any number of any characters.\n */\n for (var i = 0, len = str.length; i < len; i++) {\n var char = str[i],\n final = (i == len - 1)\n\n if (char == \"*\") {\n node.edges[char] = node\n node.final = final\n\n } else {\n var next = new lunr.TokenSet\n next.final = final\n\n node.edges[char] = next\n node = next\n }\n }\n\n return root\n}\n\n/**\n * Converts this TokenSet into an array of strings\n * contained within the TokenSet.\n *\n * This is not intended to be used on a TokenSet that\n * contains wildcards, in these cases the results are\n * undefined and are likely to cause an infinite loop.\n *\n * @returns {string[]}\n */\nlunr.TokenSet.prototype.toArray = function () {\n var words = []\n\n var stack = [{\n prefix: \"\",\n node: this\n }]\n\n while (stack.length) {\n var frame = stack.pop(),\n edges = Object.keys(frame.node.edges),\n len = edges.length\n\n if (frame.node.final) {\n /* In Safari, at this point the prefix is sometimes corrupted, see:\n * https://github.com/olivernn/lunr.js/issues/279 Calling any\n * String.prototype method forces Safari to \"cast\" this string to what\n * it's supposed to be, fixing the bug. */\n frame.prefix.charAt(0)\n words.push(frame.prefix)\n }\n\n for (var i = 0; i < len; i++) {\n var edge = edges[i]\n\n stack.push({\n prefix: frame.prefix.concat(edge),\n node: frame.node.edges[edge]\n })\n }\n }\n\n return words\n}\n\n/**\n * Generates a string representation of a TokenSet.\n *\n * This is intended to allow TokenSets to be used as keys\n * in objects, largely to aid the construction and minimisation\n * of a TokenSet. As such it is not designed to be a human\n * friendly representation of the TokenSet.\n *\n * @returns {string}\n */\nlunr.TokenSet.prototype.toString = function () {\n // NOTE: Using Object.keys here as this.edges is very likely\n // to enter 'hash-mode' with many keys being added\n //\n // avoiding a for-in loop here as it leads to the function\n // being de-optimised (at least in V8). From some simple\n // benchmarks the performance is comparable, but allowing\n // V8 to optimize may mean easy performance wins in the future.\n\n if (this._str) {\n return this._str\n }\n\n var str = this.final ? '1' : '0',\n labels = Object.keys(this.edges).sort(),\n len = labels.length\n\n for (var i = 0; i < len; i++) {\n var label = labels[i],\n node = this.edges[label]\n\n str = str + label + node.id\n }\n\n return str\n}\n\n/**\n * Returns a new TokenSet that is the intersection of\n * this TokenSet and the passed TokenSet.\n *\n * This intersection will take into account any wildcards\n * contained within the TokenSet.\n *\n * @param {lunr.TokenSet} b - An other TokenSet to intersect with.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.prototype.intersect = function (b) {\n var output = new lunr.TokenSet,\n frame = undefined\n\n var stack = [{\n qNode: b,\n output: output,\n node: this\n }]\n\n while (stack.length) {\n frame = stack.pop()\n\n // NOTE: As with the #toString method, we are using\n // Object.keys and a for loop instead of a for-in loop\n // as both of these objects enter 'hash' mode, causing\n // the function to be de-optimised in V8\n var qEdges = Object.keys(frame.qNode.edges),\n qLen = qEdges.length,\n nEdges = Object.keys(frame.node.edges),\n nLen = nEdges.length\n\n for (var q = 0; q < qLen; q++) {\n var qEdge = qEdges[q]\n\n for (var n = 0; n < nLen; n++) {\n var nEdge = nEdges[n]\n\n if (nEdge == qEdge || qEdge == '*') {\n var node = frame.node.edges[nEdge],\n qNode = frame.qNode.edges[qEdge],\n final = node.final && qNode.final,\n next = undefined\n\n if (nEdge in frame.output.edges) {\n // an edge already exists for this character\n // no need to create a new node, just set the finality\n // bit unless this node is already final\n next = frame.output.edges[nEdge]\n next.final = next.final || final\n\n } else {\n // no edge exists yet, must create one\n // set the finality bit and insert it\n // into the output\n next = new lunr.TokenSet\n next.final = final\n frame.output.edges[nEdge] = next\n }\n\n stack.push({\n qNode: qNode,\n output: next,\n node: node\n })\n }\n }\n }\n }\n\n return output\n}\nlunr.TokenSet.Builder = function () {\n this.previousWord = \"\"\n this.root = new lunr.TokenSet\n this.uncheckedNodes = []\n this.minimizedNodes = {}\n}\n\nlunr.TokenSet.Builder.prototype.insert = function (word) {\n var node,\n commonPrefix = 0\n\n if (word < this.previousWord) {\n throw new Error (\"Out of order word insertion\")\n }\n\n for (var i = 0; i < word.length && i < this.previousWord.length; i++) {\n if (word[i] != this.previousWord[i]) break\n commonPrefix++\n }\n\n this.minimize(commonPrefix)\n\n if (this.uncheckedNodes.length == 0) {\n node = this.root\n } else {\n node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child\n }\n\n for (var i = commonPrefix; i < word.length; i++) {\n var nextNode = new lunr.TokenSet,\n char = word[i]\n\n node.edges[char] = nextNode\n\n this.uncheckedNodes.push({\n parent: node,\n char: char,\n child: nextNode\n })\n\n node = nextNode\n }\n\n node.final = true\n this.previousWord = word\n}\n\nlunr.TokenSet.Builder.prototype.finish = function () {\n this.minimize(0)\n}\n\nlunr.TokenSet.Builder.prototype.minimize = function (downTo) {\n for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {\n var node = this.uncheckedNodes[i],\n childKey = node.child.toString()\n\n if (childKey in this.minimizedNodes) {\n node.parent.edges[node.char] = this.minimizedNodes[childKey]\n } else {\n // Cache the key for this node since\n // we know it can't change anymore\n node.child._str = childKey\n\n this.minimizedNodes[childKey] = node.child\n }\n\n this.uncheckedNodes.pop()\n }\n}\n/*!\n * lunr.Index\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * An index contains the built index of all documents and provides a query interface\n * to the index.\n *\n * Usually instances of lunr.Index will not be created using this constructor, instead\n * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be\n * used to load previously built and serialized indexes.\n *\n * @constructor\n * @param {Object} attrs - The attributes of the built search index.\n * @param {Object} attrs.invertedIndex - An index of term/field to document reference.\n * @param {Object} attrs.fieldVectors - Field vectors\n * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.\n * @param {string[]} attrs.fields - The names of indexed document fields.\n * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.\n */\nlunr.Index = function (attrs) {\n this.invertedIndex = attrs.invertedIndex\n this.fieldVectors = attrs.fieldVectors\n this.tokenSet = attrs.tokenSet\n this.fields = attrs.fields\n this.pipeline = attrs.pipeline\n}\n\n/**\n * A result contains details of a document matching a search query.\n * @typedef {Object} lunr.Index~Result\n * @property {string} ref - The reference of the document this result represents.\n * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.\n * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.\n */\n\n/**\n * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple\n * query language which itself is parsed into an instance of lunr.Query.\n *\n * For programmatically building queries it is advised to directly use lunr.Query, the query language\n * is best used for human entered text rather than program generated text.\n *\n * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported\n * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'\n * or 'world', though those that contain both will rank higher in the results.\n *\n * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can\n * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding\n * wildcards will increase the number of documents that will be found but can also have a negative\n * impact on query performance, especially with wildcards at the beginning of a term.\n *\n * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term\n * hello in the title field will match this query. Using a field not present in the index will lead\n * to an error being thrown.\n *\n * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term\n * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported\n * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.\n * Avoid large values for edit distance to improve query performance.\n *\n * Each term also supports a presence modifier. By default a term's presence in document is optional, however\n * this can be changed to either required or prohibited. For a term's presence to be required in a document the\n * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and\n * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not\n * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.\n *\n * To escape special characters the backslash character '\\' can be used, this allows searches to include\n * characters that would normally be considered modifiers, e.g. `foo\\~2` will search for a term \"foo~2\" instead\n * of attempting to apply a boost of 2 to the search term \"foo\".\n *\n * @typedef {string} lunr.Index~QueryString\n * @example Simple single term query\n * hello\n * @example Multiple term query\n * hello world\n * @example term scoped to a field\n * title:hello\n * @example term with a boost of 10\n * hello^10\n * @example term with an edit distance of 2\n * hello~2\n * @example terms with presence modifiers\n * -foo +bar baz\n */\n\n/**\n * Performs a search against the index using lunr query syntax.\n *\n * Results will be returned sorted by their score, the most relevant results\n * will be returned first. For details on how the score is calculated, please see\n * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.\n *\n * For more programmatic querying use lunr.Index#query.\n *\n * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.\n * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.search = function (queryString) {\n return this.query(function (query) {\n var parser = new lunr.QueryParser(queryString, query)\n parser.parse()\n })\n}\n\n/**\n * A query builder callback provides a query object to be used to express\n * the query to perform on the index.\n *\n * @callback lunr.Index~queryBuilder\n * @param {lunr.Query} query - The query object to build up.\n * @this lunr.Query\n */\n\n/**\n * Performs a query against the index using the yielded lunr.Query object.\n *\n * If performing programmatic queries against the index, this method is preferred\n * over lunr.Index#search so as to avoid the additional query parsing overhead.\n *\n * A query object is yielded to the supplied function which should be used to\n * express the query to be run against the index.\n *\n * Note that although this function takes a callback parameter it is _not_ an\n * asynchronous operation, the callback is just yielded a query object to be\n * customized.\n *\n * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.query = function (fn) {\n // for each query clause\n // * process terms\n // * expand terms from token set\n // * find matching documents and metadata\n // * get document vectors\n // * score documents\n\n var query = new lunr.Query(this.fields),\n matchingFields = Object.create(null),\n queryVectors = Object.create(null),\n termFieldCache = Object.create(null),\n requiredMatches = Object.create(null),\n prohibitedMatches = Object.create(null)\n\n /*\n * To support field level boosts a query vector is created per\n * field. An empty vector is eagerly created to support negated\n * queries.\n */\n for (var i = 0; i < this.fields.length; i++) {\n queryVectors[this.fields[i]] = new lunr.Vector\n }\n\n fn.call(query, query)\n\n for (var i = 0; i < query.clauses.length; i++) {\n /*\n * Unless the pipeline has been disabled for this term, which is\n * the case for terms with wildcards, we need to pass the clause\n * term through the search pipeline. A pipeline returns an array\n * of processed terms. Pipeline functions may expand the passed\n * term, which means we may end up performing multiple index lookups\n * for a single query term.\n */\n var clause = query.clauses[i],\n terms = null,\n clauseMatches = lunr.Set.empty\n\n if (clause.usePipeline) {\n terms = this.pipeline.runString(clause.term, {\n fields: clause.fields\n })\n } else {\n terms = [clause.term]\n }\n\n for (var m = 0; m < terms.length; m++) {\n var term = terms[m]\n\n /*\n * Each term returned from the pipeline needs to use the same query\n * clause object, e.g. the same boost and or edit distance. The\n * simplest way to do this is to re-use the clause object but mutate\n * its term property.\n */\n clause.term = term\n\n /*\n * From the term in the clause we create a token set which will then\n * be used to intersect the indexes token set to get a list of terms\n * to lookup in the inverted index\n */\n var termTokenSet = lunr.TokenSet.fromClause(clause),\n expandedTerms = this.tokenSet.intersect(termTokenSet).toArray()\n\n /*\n * If a term marked as required does not exist in the tokenSet it is\n * impossible for the search to return any matches. We set all the field\n * scoped required matches set to empty and stop examining any further\n * clauses.\n */\n if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = lunr.Set.empty\n }\n\n break\n }\n\n for (var j = 0; j < expandedTerms.length; j++) {\n /*\n * For each term get the posting and termIndex, this is required for\n * building the query vector.\n */\n var expandedTerm = expandedTerms[j],\n posting = this.invertedIndex[expandedTerm],\n termIndex = posting._index\n\n for (var k = 0; k < clause.fields.length; k++) {\n /*\n * For each field that this query term is scoped by (by default\n * all fields are in scope) we need to get all the document refs\n * that have this term in that field.\n *\n * The posting is the entry in the invertedIndex for the matching\n * term from above.\n */\n var field = clause.fields[k],\n fieldPosting = posting[field],\n matchingDocumentRefs = Object.keys(fieldPosting),\n termField = expandedTerm + \"/\" + field,\n matchingDocumentsSet = new lunr.Set(matchingDocumentRefs)\n\n /*\n * if the presence of this term is required ensure that the matching\n * documents are added to the set of required matches for this clause.\n *\n */\n if (clause.presence == lunr.Query.presence.REQUIRED) {\n clauseMatches = clauseMatches.union(matchingDocumentsSet)\n\n if (requiredMatches[field] === undefined) {\n requiredMatches[field] = lunr.Set.complete\n }\n }\n\n /*\n * if the presence of this term is prohibited ensure that the matching\n * documents are added to the set of prohibited matches for this field,\n * creating that set if it does not yet exist.\n */\n if (clause.presence == lunr.Query.presence.PROHIBITED) {\n if (prohibitedMatches[field] === undefined) {\n prohibitedMatches[field] = lunr.Set.empty\n }\n\n prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet)\n\n /*\n * Prohibited matches should not be part of the query vector used for\n * similarity scoring and no metadata should be extracted so we continue\n * to the next field\n */\n continue\n }\n\n /*\n * The query field vector is populated using the termIndex found for\n * the term and a unit value with the appropriate boost applied.\n * Using upsert because there could already be an entry in the vector\n * for the term we are working with. In that case we just add the scores\n * together.\n */\n queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b })\n\n /**\n * If we've already seen this term, field combo then we've already collected\n * the matching documents and metadata, no need to go through all that again\n */\n if (termFieldCache[termField]) {\n continue\n }\n\n for (var l = 0; l < matchingDocumentRefs.length; l++) {\n /*\n * All metadata for this term/field/document triple\n * are then extracted and collected into an instance\n * of lunr.MatchData ready to be returned in the query\n * results\n */\n var matchingDocumentRef = matchingDocumentRefs[l],\n matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field),\n metadata = fieldPosting[matchingDocumentRef],\n fieldMatch\n\n if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {\n matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata)\n } else {\n fieldMatch.add(expandedTerm, field, metadata)\n }\n\n }\n\n termFieldCache[termField] = true\n }\n }\n }\n\n /**\n * If the presence was required we need to update the requiredMatches field sets.\n * We do this after all fields for the term have collected their matches because\n * the clause terms presence is required in _any_ of the fields not _all_ of the\n * fields.\n */\n if (clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = requiredMatches[field].intersect(clauseMatches)\n }\n }\n }\n\n /**\n * Need to combine the field scoped required and prohibited\n * matching documents into a global set of required and prohibited\n * matches\n */\n var allRequiredMatches = lunr.Set.complete,\n allProhibitedMatches = lunr.Set.empty\n\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i]\n\n if (requiredMatches[field]) {\n allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field])\n }\n\n if (prohibitedMatches[field]) {\n allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field])\n }\n }\n\n var matchingFieldRefs = Object.keys(matchingFields),\n results = [],\n matches = Object.create(null)\n\n /*\n * If the query is negated (contains only prohibited terms)\n * we need to get _all_ fieldRefs currently existing in the\n * index. This is only done when we know that the query is\n * entirely prohibited terms to avoid any cost of getting all\n * fieldRefs unnecessarily.\n *\n * Additionally, blank MatchData must be created to correctly\n * populate the results.\n */\n if (query.isNegated()) {\n matchingFieldRefs = Object.keys(this.fieldVectors)\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n var matchingFieldRef = matchingFieldRefs[i]\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRef)\n matchingFields[matchingFieldRef] = new lunr.MatchData\n }\n }\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n /*\n * Currently we have document fields that match the query, but we\n * need to return documents. The matchData and scores are combined\n * from multiple fields belonging to the same document.\n *\n * Scores are calculated by field, using the query vectors created\n * above, and combined into a final document score using addition.\n */\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),\n docRef = fieldRef.docRef\n\n if (!allRequiredMatches.contains(docRef)) {\n continue\n }\n\n if (allProhibitedMatches.contains(docRef)) {\n continue\n }\n\n var fieldVector = this.fieldVectors[fieldRef],\n score = queryVectors[fieldRef.fieldName].similarity(fieldVector),\n docMatch\n\n if ((docMatch = matches[docRef]) !== undefined) {\n docMatch.score += score\n docMatch.matchData.combine(matchingFields[fieldRef])\n } else {\n var match = {\n ref: docRef,\n score: score,\n matchData: matchingFields[fieldRef]\n }\n matches[docRef] = match\n results.push(match)\n }\n }\n\n /*\n * Sort the results objects by score, highest first.\n */\n return results.sort(function (a, b) {\n return b.score - a.score\n })\n}\n\n/**\n * Prepares the index for JSON serialization.\n *\n * The schema for this JSON blob will be described in a\n * separate JSON schema file.\n *\n * @returns {Object}\n */\nlunr.Index.prototype.toJSON = function () {\n var invertedIndex = Object.keys(this.invertedIndex)\n .sort()\n .map(function (term) {\n return [term, this.invertedIndex[term]]\n }, this)\n\n var fieldVectors = Object.keys(this.fieldVectors)\n .map(function (ref) {\n return [ref, this.fieldVectors[ref].toJSON()]\n }, this)\n\n return {\n version: lunr.version,\n fields: this.fields,\n fieldVectors: fieldVectors,\n invertedIndex: invertedIndex,\n pipeline: this.pipeline.toJSON()\n }\n}\n\n/**\n * Loads a previously serialized lunr.Index\n *\n * @param {Object} serializedIndex - A previously serialized lunr.Index\n * @returns {lunr.Index}\n */\nlunr.Index.load = function (serializedIndex) {\n var attrs = {},\n fieldVectors = {},\n serializedVectors = serializedIndex.fieldVectors,\n invertedIndex = Object.create(null),\n serializedInvertedIndex = serializedIndex.invertedIndex,\n tokenSetBuilder = new lunr.TokenSet.Builder,\n pipeline = lunr.Pipeline.load(serializedIndex.pipeline)\n\n if (serializedIndex.version != lunr.version) {\n lunr.utils.warn(\"Version mismatch when loading serialised index. Current version of lunr '\" + lunr.version + \"' does not match serialized index '\" + serializedIndex.version + \"'\")\n }\n\n for (var i = 0; i < serializedVectors.length; i++) {\n var tuple = serializedVectors[i],\n ref = tuple[0],\n elements = tuple[1]\n\n fieldVectors[ref] = new lunr.Vector(elements)\n }\n\n for (var i = 0; i < serializedInvertedIndex.length; i++) {\n var tuple = serializedInvertedIndex[i],\n term = tuple[0],\n posting = tuple[1]\n\n tokenSetBuilder.insert(term)\n invertedIndex[term] = posting\n }\n\n tokenSetBuilder.finish()\n\n attrs.fields = serializedIndex.fields\n\n attrs.fieldVectors = fieldVectors\n attrs.invertedIndex = invertedIndex\n attrs.tokenSet = tokenSetBuilder.root\n attrs.pipeline = pipeline\n\n return new lunr.Index(attrs)\n}\n/*!\n * lunr.Builder\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.Builder performs indexing on a set of documents and\n * returns instances of lunr.Index ready for querying.\n *\n * All configuration of the index is done via the builder, the\n * fields to index, the document reference, the text processing\n * pipeline and document scoring parameters are all set on the\n * builder before indexing.\n *\n * @constructor\n * @property {string} _ref - Internal reference to the document reference field.\n * @property {string[]} _fields - Internal reference to the document fields to index.\n * @property {object} invertedIndex - The inverted index maps terms to document fields.\n * @property {object} documentTermFrequencies - Keeps track of document term frequencies.\n * @property {object} documentLengths - Keeps track of the length of documents added to the index.\n * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.\n * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.\n * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.\n * @property {number} documentCount - Keeps track of the total number of documents indexed.\n * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.\n * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.\n * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.\n * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.\n */\nlunr.Builder = function () {\n this._ref = \"id\"\n this._fields = Object.create(null)\n this._documents = Object.create(null)\n this.invertedIndex = Object.create(null)\n this.fieldTermFrequencies = {}\n this.fieldLengths = {}\n this.tokenizer = lunr.tokenizer\n this.pipeline = new lunr.Pipeline\n this.searchPipeline = new lunr.Pipeline\n this.documentCount = 0\n this._b = 0.75\n this._k1 = 1.2\n this.termIndex = 0\n this.metadataWhitelist = []\n}\n\n/**\n * Sets the document field used as the document reference. Every document must have this field.\n * The type of this field in the document should be a string, if it is not a string it will be\n * coerced into a string by calling toString.\n *\n * The default ref is 'id'.\n *\n * The ref should _not_ be changed during indexing, it should be set before any documents are\n * added to the index. Changing it during indexing can lead to inconsistent results.\n *\n * @param {string} ref - The name of the reference field in the document.\n */\nlunr.Builder.prototype.ref = function (ref) {\n this._ref = ref\n}\n\n/**\n * A function that is used to extract a field from a document.\n *\n * Lunr expects a field to be at the top level of a document, if however the field\n * is deeply nested within a document an extractor function can be used to extract\n * the right field for indexing.\n *\n * @callback fieldExtractor\n * @param {object} doc - The document being added to the index.\n * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.\n * @example Extracting a nested field\n * function (doc) { return doc.nested.field }\n */\n\n/**\n * Adds a field to the list of document fields that will be indexed. Every document being\n * indexed should have this field. Null values for this field in indexed documents will\n * not cause errors but will limit the chance of that document being retrieved by searches.\n *\n * All fields should be added before adding documents to the index. Adding fields after\n * a document has been indexed will have no effect on already indexed documents.\n *\n * Fields can be boosted at build time. This allows terms within that field to have more\n * importance when ranking search results. Use a field boost to specify that matches within\n * one field are more important than other fields.\n *\n * @param {string} fieldName - The name of a field to index in all documents.\n * @param {object} attributes - Optional attributes associated with this field.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.\n * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.\n * @throws {RangeError} fieldName cannot contain unsupported characters '/'\n */\nlunr.Builder.prototype.field = function (fieldName, attributes) {\n if (/\\//.test(fieldName)) {\n throw new RangeError (\"Field '\" + fieldName + \"' contains illegal character '/'\")\n }\n\n this._fields[fieldName] = attributes || {}\n}\n\n/**\n * A parameter to tune the amount of field length normalisation that is applied when\n * calculating relevance scores. A value of 0 will completely disable any normalisation\n * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b\n * will be clamped to the range 0 - 1.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.b = function (number) {\n if (number < 0) {\n this._b = 0\n } else if (number > 1) {\n this._b = 1\n } else {\n this._b = number\n }\n}\n\n/**\n * A parameter that controls the speed at which a rise in term frequency results in term\n * frequency saturation. The default value is 1.2. Setting this to a higher value will give\n * slower saturation levels, a lower value will result in quicker saturation.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.k1 = function (number) {\n this._k1 = number\n}\n\n/**\n * Adds a document to the index.\n *\n * Before adding fields to the index the index should have been fully setup, with the document\n * ref and all fields to index already having been specified.\n *\n * The document must have a field name as specified by the ref (by default this is 'id') and\n * it should have all fields defined for indexing, though null or undefined values will not\n * cause errors.\n *\n * Entire documents can be boosted at build time. Applying a boost to a document indicates that\n * this document should rank higher in search results than other documents.\n *\n * @param {object} doc - The document to add to the index.\n * @param {object} attributes - Optional attributes associated with this document.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.\n */\nlunr.Builder.prototype.add = function (doc, attributes) {\n var docRef = doc[this._ref],\n fields = Object.keys(this._fields)\n\n this._documents[docRef] = attributes || {}\n this.documentCount += 1\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i],\n extractor = this._fields[fieldName].extractor,\n field = extractor ? extractor(doc) : doc[fieldName],\n tokens = this.tokenizer(field, {\n fields: [fieldName]\n }),\n terms = this.pipeline.run(tokens),\n fieldRef = new lunr.FieldRef (docRef, fieldName),\n fieldTerms = Object.create(null)\n\n this.fieldTermFrequencies[fieldRef] = fieldTerms\n this.fieldLengths[fieldRef] = 0\n\n // store the length of this field for this document\n this.fieldLengths[fieldRef] += terms.length\n\n // calculate term frequencies for this field\n for (var j = 0; j < terms.length; j++) {\n var term = terms[j]\n\n if (fieldTerms[term] == undefined) {\n fieldTerms[term] = 0\n }\n\n fieldTerms[term] += 1\n\n // add to inverted index\n // create an initial posting if one doesn't exist\n if (this.invertedIndex[term] == undefined) {\n var posting = Object.create(null)\n posting[\"_index\"] = this.termIndex\n this.termIndex += 1\n\n for (var k = 0; k < fields.length; k++) {\n posting[fields[k]] = Object.create(null)\n }\n\n this.invertedIndex[term] = posting\n }\n\n // add an entry for this term/fieldName/docRef to the invertedIndex\n if (this.invertedIndex[term][fieldName][docRef] == undefined) {\n this.invertedIndex[term][fieldName][docRef] = Object.create(null)\n }\n\n // store all whitelisted metadata about this token in the\n // inverted index\n for (var l = 0; l < this.metadataWhitelist.length; l++) {\n var metadataKey = this.metadataWhitelist[l],\n metadata = term.metadata[metadataKey]\n\n if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {\n this.invertedIndex[term][fieldName][docRef][metadataKey] = []\n }\n\n this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata)\n }\n }\n\n }\n}\n\n/**\n * Calculates the average document length for this index\n *\n * @private\n */\nlunr.Builder.prototype.calculateAverageFieldLengths = function () {\n\n var fieldRefs = Object.keys(this.fieldLengths),\n numberOfFields = fieldRefs.length,\n accumulator = {},\n documentsWithField = {}\n\n for (var i = 0; i < numberOfFields; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n field = fieldRef.fieldName\n\n documentsWithField[field] || (documentsWithField[field] = 0)\n documentsWithField[field] += 1\n\n accumulator[field] || (accumulator[field] = 0)\n accumulator[field] += this.fieldLengths[fieldRef]\n }\n\n var fields = Object.keys(this._fields)\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i]\n accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName]\n }\n\n this.averageFieldLength = accumulator\n}\n\n/**\n * Builds a vector space model of every document using lunr.Vector\n *\n * @private\n */\nlunr.Builder.prototype.createFieldVectors = function () {\n var fieldVectors = {},\n fieldRefs = Object.keys(this.fieldTermFrequencies),\n fieldRefsLength = fieldRefs.length,\n termIdfCache = Object.create(null)\n\n for (var i = 0; i < fieldRefsLength; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n fieldName = fieldRef.fieldName,\n fieldLength = this.fieldLengths[fieldRef],\n fieldVector = new lunr.Vector,\n termFrequencies = this.fieldTermFrequencies[fieldRef],\n terms = Object.keys(termFrequencies),\n termsLength = terms.length\n\n\n var fieldBoost = this._fields[fieldName].boost || 1,\n docBoost = this._documents[fieldRef.docRef].boost || 1\n\n for (var j = 0; j < termsLength; j++) {\n var term = terms[j],\n tf = termFrequencies[term],\n termIndex = this.invertedIndex[term]._index,\n idf, score, scoreWithPrecision\n\n if (termIdfCache[term] === undefined) {\n idf = lunr.idf(this.invertedIndex[term], this.documentCount)\n termIdfCache[term] = idf\n } else {\n idf = termIdfCache[term]\n }\n\n score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf)\n score *= fieldBoost\n score *= docBoost\n scoreWithPrecision = Math.round(score * 1000) / 1000\n // Converts 1.23456789 to 1.234.\n // Reducing the precision so that the vectors take up less\n // space when serialised. Doing it now so that they behave\n // the same before and after serialisation. Also, this is\n // the fastest approach to reducing a number's precision in\n // JavaScript.\n\n fieldVector.insert(termIndex, scoreWithPrecision)\n }\n\n fieldVectors[fieldRef] = fieldVector\n }\n\n this.fieldVectors = fieldVectors\n}\n\n/**\n * Creates a token set of all tokens in the index using lunr.TokenSet\n *\n * @private\n */\nlunr.Builder.prototype.createTokenSet = function () {\n this.tokenSet = lunr.TokenSet.fromArray(\n Object.keys(this.invertedIndex).sort()\n )\n}\n\n/**\n * Builds the index, creating an instance of lunr.Index.\n *\n * This completes the indexing process and should only be called\n * once all documents have been added to the index.\n *\n * @returns {lunr.Index}\n */\nlunr.Builder.prototype.build = function () {\n this.calculateAverageFieldLengths()\n this.createFieldVectors()\n this.createTokenSet()\n\n return new lunr.Index({\n invertedIndex: this.invertedIndex,\n fieldVectors: this.fieldVectors,\n tokenSet: this.tokenSet,\n fields: Object.keys(this._fields),\n pipeline: this.searchPipeline\n })\n}\n\n/**\n * Applies a plugin to the index builder.\n *\n * A plugin is a function that is called with the index builder as its context.\n * Plugins can be used to customise or extend the behaviour of the index\n * in some way. A plugin is just a function, that encapsulated the custom\n * behaviour that should be applied when building the index.\n *\n * The plugin function will be called with the index builder as its argument, additional\n * arguments can also be passed when calling use. The function will be called\n * with the index builder as its context.\n *\n * @param {Function} plugin The plugin to apply.\n */\nlunr.Builder.prototype.use = function (fn) {\n var args = Array.prototype.slice.call(arguments, 1)\n args.unshift(this)\n fn.apply(this, args)\n}\n/**\n * Contains and collects metadata about a matching document.\n * A single instance of lunr.MatchData is returned as part of every\n * lunr.Index~Result.\n *\n * @constructor\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n * @property {object} metadata - A cloned collection of metadata associated with this document.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData = function (term, field, metadata) {\n var clonedMetadata = Object.create(null),\n metadataKeys = Object.keys(metadata || {})\n\n // Cloning the metadata to prevent the original\n // being mutated during match data combination.\n // Metadata is kept in an array within the inverted\n // index so cloning the data can be done with\n // Array#slice\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n clonedMetadata[key] = metadata[key].slice()\n }\n\n this.metadata = Object.create(null)\n\n if (term !== undefined) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = clonedMetadata\n }\n}\n\n/**\n * An instance of lunr.MatchData will be created for every term that matches a\n * document. However only one instance is required in a lunr.Index~Result. This\n * method combines metadata from another instance of lunr.MatchData with this\n * objects metadata.\n *\n * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData.prototype.combine = function (otherMatchData) {\n var terms = Object.keys(otherMatchData.metadata)\n\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i],\n fields = Object.keys(otherMatchData.metadata[term])\n\n if (this.metadata[term] == undefined) {\n this.metadata[term] = Object.create(null)\n }\n\n for (var j = 0; j < fields.length; j++) {\n var field = fields[j],\n keys = Object.keys(otherMatchData.metadata[term][field])\n\n if (this.metadata[term][field] == undefined) {\n this.metadata[term][field] = Object.create(null)\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k]\n\n if (this.metadata[term][field][key] == undefined) {\n this.metadata[term][field][key] = otherMatchData.metadata[term][field][key]\n } else {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key])\n }\n\n }\n }\n }\n}\n\n/**\n * Add metadata for a term/field pair to this instance of match data.\n *\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n */\nlunr.MatchData.prototype.add = function (term, field, metadata) {\n if (!(term in this.metadata)) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = metadata\n return\n }\n\n if (!(field in this.metadata[term])) {\n this.metadata[term][field] = metadata\n return\n }\n\n var metadataKeys = Object.keys(metadata)\n\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n\n if (key in this.metadata[term][field]) {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key])\n } else {\n this.metadata[term][field][key] = metadata[key]\n }\n }\n}\n/**\n * A lunr.Query provides a programmatic way of defining queries to be performed\n * against a {@link lunr.Index}.\n *\n * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method\n * so the query object is pre-initialized with the right index fields.\n *\n * @constructor\n * @property {lunr.Query~Clause[]} clauses - An array of query clauses.\n * @property {string[]} allFields - An array of all available fields in a lunr.Index.\n */\nlunr.Query = function (allFields) {\n this.clauses = []\n this.allFields = allFields\n}\n\n/**\n * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.\n *\n * This allows wildcards to be added to the beginning and end of a term without having to manually do any string\n * concatenation.\n *\n * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.\n *\n * @constant\n * @default\n * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour\n * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists\n * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example query term with trailing wildcard\n * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })\n * @example query term with leading and trailing wildcard\n * query.term('foo', {\n * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING\n * })\n */\n\nlunr.Query.wildcard = new String (\"*\")\nlunr.Query.wildcard.NONE = 0\nlunr.Query.wildcard.LEADING = 1\nlunr.Query.wildcard.TRAILING = 2\n\n/**\n * Constants for indicating what kind of presence a term must have in matching documents.\n *\n * @constant\n * @enum {number}\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example query term with required presence\n * query.term('foo', { presence: lunr.Query.presence.REQUIRED })\n */\nlunr.Query.presence = {\n /**\n * Term's presence in a document is optional, this is the default value.\n */\n OPTIONAL: 1,\n\n /**\n * Term's presence in a document is required, documents that do not contain\n * this term will not be returned.\n */\n REQUIRED: 2,\n\n /**\n * Term's presence in a document is prohibited, documents that do contain\n * this term will not be returned.\n */\n PROHIBITED: 3\n}\n\n/**\n * A single clause in a {@link lunr.Query} contains a term and details on how to\n * match that term against a {@link lunr.Index}.\n *\n * @typedef {Object} lunr.Query~Clause\n * @property {string[]} fields - The fields in an index this clause should be matched against.\n * @property {number} [boost=1] - Any boost that should be applied when matching this clause.\n * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.\n * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.\n * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.\n * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.\n */\n\n/**\n * Adds a {@link lunr.Query~Clause} to this query.\n *\n * Unless the clause contains the fields to be matched all fields will be matched. In addition\n * a default boost of 1 is applied to the clause.\n *\n * @param {lunr.Query~Clause} clause - The clause to add to this query.\n * @see lunr.Query~Clause\n * @returns {lunr.Query}\n */\nlunr.Query.prototype.clause = function (clause) {\n if (!('fields' in clause)) {\n clause.fields = this.allFields\n }\n\n if (!('boost' in clause)) {\n clause.boost = 1\n }\n\n if (!('usePipeline' in clause)) {\n clause.usePipeline = true\n }\n\n if (!('wildcard' in clause)) {\n clause.wildcard = lunr.Query.wildcard.NONE\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) {\n clause.term = \"*\" + clause.term\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) {\n clause.term = \"\" + clause.term + \"*\"\n }\n\n if (!('presence' in clause)) {\n clause.presence = lunr.Query.presence.OPTIONAL\n }\n\n this.clauses.push(clause)\n\n return this\n}\n\n/**\n * A negated query is one in which every clause has a presence of\n * prohibited. These queries require some special processing to return\n * the expected results.\n *\n * @returns boolean\n */\nlunr.Query.prototype.isNegated = function () {\n for (var i = 0; i < this.clauses.length; i++) {\n if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}\n * to the list of clauses that make up this query.\n *\n * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion\n * to a token or token-like string should be done before calling this method.\n *\n * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an\n * array, each term in the array will share the same options.\n *\n * @param {object|object[]} term - The term(s) to add to the query.\n * @param {object} [options] - Any additional properties to add to the query clause.\n * @returns {lunr.Query}\n * @see lunr.Query#clause\n * @see lunr.Query~Clause\n * @example adding a single term to a query\n * query.term(\"foo\")\n * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard\n * query.term(\"foo\", {\n * fields: [\"title\"],\n * boost: 10,\n * wildcard: lunr.Query.wildcard.TRAILING\n * })\n * @example using lunr.tokenizer to convert a string to tokens before using them as terms\n * query.term(lunr.tokenizer(\"foo bar\"))\n */\nlunr.Query.prototype.term = function (term, options) {\n if (Array.isArray(term)) {\n term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this)\n return this\n }\n\n var clause = options || {}\n clause.term = term.toString()\n\n this.clause(clause)\n\n return this\n}\nlunr.QueryParseError = function (message, start, end) {\n this.name = \"QueryParseError\"\n this.message = message\n this.start = start\n this.end = end\n}\n\nlunr.QueryParseError.prototype = new Error\nlunr.QueryLexer = function (str) {\n this.lexemes = []\n this.str = str\n this.length = str.length\n this.pos = 0\n this.start = 0\n this.escapeCharPositions = []\n}\n\nlunr.QueryLexer.prototype.run = function () {\n var state = lunr.QueryLexer.lexText\n\n while (state) {\n state = state(this)\n }\n}\n\nlunr.QueryLexer.prototype.sliceString = function () {\n var subSlices = [],\n sliceStart = this.start,\n sliceEnd = this.pos\n\n for (var i = 0; i < this.escapeCharPositions.length; i++) {\n sliceEnd = this.escapeCharPositions[i]\n subSlices.push(this.str.slice(sliceStart, sliceEnd))\n sliceStart = sliceEnd + 1\n }\n\n subSlices.push(this.str.slice(sliceStart, this.pos))\n this.escapeCharPositions.length = 0\n\n return subSlices.join('')\n}\n\nlunr.QueryLexer.prototype.emit = function (type) {\n this.lexemes.push({\n type: type,\n str: this.sliceString(),\n start: this.start,\n end: this.pos\n })\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.escapeCharacter = function () {\n this.escapeCharPositions.push(this.pos - 1)\n this.pos += 1\n}\n\nlunr.QueryLexer.prototype.next = function () {\n if (this.pos >= this.length) {\n return lunr.QueryLexer.EOS\n }\n\n var char = this.str.charAt(this.pos)\n this.pos += 1\n return char\n}\n\nlunr.QueryLexer.prototype.width = function () {\n return this.pos - this.start\n}\n\nlunr.QueryLexer.prototype.ignore = function () {\n if (this.start == this.pos) {\n this.pos += 1\n }\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.backup = function () {\n this.pos -= 1\n}\n\nlunr.QueryLexer.prototype.acceptDigitRun = function () {\n var char, charCode\n\n do {\n char = this.next()\n charCode = char.charCodeAt(0)\n } while (charCode > 47 && charCode < 58)\n\n if (char != lunr.QueryLexer.EOS) {\n this.backup()\n }\n}\n\nlunr.QueryLexer.prototype.more = function () {\n return this.pos < this.length\n}\n\nlunr.QueryLexer.EOS = 'EOS'\nlunr.QueryLexer.FIELD = 'FIELD'\nlunr.QueryLexer.TERM = 'TERM'\nlunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE'\nlunr.QueryLexer.BOOST = 'BOOST'\nlunr.QueryLexer.PRESENCE = 'PRESENCE'\n\nlunr.QueryLexer.lexField = function (lexer) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.FIELD)\n lexer.ignore()\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexTerm = function (lexer) {\n if (lexer.width() > 1) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.TERM)\n }\n\n lexer.ignore()\n\n if (lexer.more()) {\n return lunr.QueryLexer.lexText\n }\n}\n\nlunr.QueryLexer.lexEditDistance = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.EDIT_DISTANCE)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexBoost = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.BOOST)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexEOS = function (lexer) {\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n}\n\n// This matches the separator used when tokenising fields\n// within a document. These should match otherwise it is\n// not possible to search for some tokens within a document.\n//\n// It is possible for the user to change the separator on the\n// tokenizer so it _might_ clash with any other of the special\n// characters already used within the search string, e.g. :.\n//\n// This means that it is possible to change the separator in\n// such a way that makes some words unsearchable using a search\n// string.\nlunr.QueryLexer.termSeparator = lunr.tokenizer.separator\n\nlunr.QueryLexer.lexText = function (lexer) {\n while (true) {\n var char = lexer.next()\n\n if (char == lunr.QueryLexer.EOS) {\n return lunr.QueryLexer.lexEOS\n }\n\n // Escape character is '\\'\n if (char.charCodeAt(0) == 92) {\n lexer.escapeCharacter()\n continue\n }\n\n if (char == \":\") {\n return lunr.QueryLexer.lexField\n }\n\n if (char == \"~\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexEditDistance\n }\n\n if (char == \"^\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexBoost\n }\n\n // \"+\" indicates term presence is required\n // checking for length to ensure that only\n // leading \"+\" are considered\n if (char == \"+\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n // \"-\" indicates term presence is prohibited\n // checking for length to ensure that only\n // leading \"-\" are considered\n if (char == \"-\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n if (char.match(lunr.QueryLexer.termSeparator)) {\n return lunr.QueryLexer.lexTerm\n }\n }\n}\n\nlunr.QueryParser = function (str, query) {\n this.lexer = new lunr.QueryLexer (str)\n this.query = query\n this.currentClause = {}\n this.lexemeIdx = 0\n}\n\nlunr.QueryParser.prototype.parse = function () {\n this.lexer.run()\n this.lexemes = this.lexer.lexemes\n\n var state = lunr.QueryParser.parseClause\n\n while (state) {\n state = state(this)\n }\n\n return this.query\n}\n\nlunr.QueryParser.prototype.peekLexeme = function () {\n return this.lexemes[this.lexemeIdx]\n}\n\nlunr.QueryParser.prototype.consumeLexeme = function () {\n var lexeme = this.peekLexeme()\n this.lexemeIdx += 1\n return lexeme\n}\n\nlunr.QueryParser.prototype.nextClause = function () {\n var completedClause = this.currentClause\n this.query.clause(completedClause)\n this.currentClause = {}\n}\n\nlunr.QueryParser.parseClause = function (parser) {\n var lexeme = parser.peekLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.type) {\n case lunr.QueryLexer.PRESENCE:\n return lunr.QueryParser.parsePresence\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expected either a field or a term, found \" + lexeme.type\n\n if (lexeme.str.length >= 1) {\n errorMessage += \" with value '\" + lexeme.str + \"'\"\n }\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n}\n\nlunr.QueryParser.parsePresence = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.str) {\n case \"-\":\n parser.currentClause.presence = lunr.Query.presence.PROHIBITED\n break\n case \"+\":\n parser.currentClause.presence = lunr.Query.presence.REQUIRED\n break\n default:\n var errorMessage = \"unrecognised presence operator'\" + lexeme.str + \"'\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term or field, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term or field, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseField = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n if (parser.query.allFields.indexOf(lexeme.str) == -1) {\n var possibleFields = parser.query.allFields.map(function (f) { return \"'\" + f + \"'\" }).join(', '),\n errorMessage = \"unrecognised field '\" + lexeme.str + \"', possible fields: \" + possibleFields\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.fields = [lexeme.str]\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseTerm = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n parser.currentClause.term = lexeme.str.toLowerCase()\n\n if (lexeme.str.indexOf(\"*\") != -1) {\n parser.currentClause.usePipeline = false\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseEditDistance = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var editDistance = parseInt(lexeme.str, 10)\n\n if (isNaN(editDistance)) {\n var errorMessage = \"edit distance must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.editDistance = editDistance\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseBoost = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var boost = parseInt(lexeme.str, 10)\n\n if (isNaN(boost)) {\n var errorMessage = \"boost must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.boost = boost\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\n /**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */\n ;(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory)\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like enviroments that support module.exports,\n * like Node.\n */\n module.exports = factory()\n } else {\n // Browser globals (root is window)\n root.lunr = factory()\n }\n }(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return lunr\n }))\n})();\n", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport lunr from \"lunr\"\n\nimport \"~/polyfills\"\n\nimport { Search, SearchIndexConfig } from \"../../_\"\nimport {\n SearchMessage,\n SearchMessageType\n} from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Add support for usage with `iframe-worker` polyfill\n *\n * While `importScripts` is synchronous when executed inside of a web worker,\n * it's not possible to provide a synchronous polyfilled implementation. The\n * cool thing is that awaiting a non-Promise is a noop, so extending the type\n * definition to return a `Promise` shouldn't break anything.\n *\n * @see https://bit.ly/2PjDnXi - GitHub comment\n */\ndeclare global {\n function importScripts(...urls: string[]): Promise | void\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Search index\n */\nlet index: Search\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch (= import) multi-language support through `lunr-languages`\n *\n * This function automatically imports the stemmers necessary to process the\n * languages, which are defined through the search index configuration.\n *\n * If the worker runs inside of an `iframe` (when using `iframe-worker` as\n * a shim), the base URL for the stemmers to be loaded must be determined by\n * searching for the first `script` element with a `src` attribute, which will\n * contain the contents of this script.\n *\n * @param config - Search index configuration\n *\n * @returns Promise resolving with no result\n */\nasync function setupSearchLanguages(\n config: SearchIndexConfig\n): Promise {\n let base = \"../lunr\"\n\n /* Detect `iframe-worker` and fix base URL */\n if (typeof parent !== \"undefined\" && \"IFrameWorker\" in parent) {\n const worker = document.querySelector(\"script[src]\")!\n const [path] = worker.src.split(\"/worker\")\n\n /* Prefix base with path */\n base = base.replace(\"..\", path)\n }\n\n /* Add scripts for languages */\n const scripts = []\n for (const lang of config.lang) {\n switch (lang) {\n\n /* Add segmenter for Japanese */\n case \"ja\":\n scripts.push(`${base}/tinyseg.js`)\n break\n\n /* Add segmenter for Hindi and Thai */\n case \"hi\":\n case \"th\":\n scripts.push(`${base}/wordcut.js`)\n break\n }\n\n /* Add language support */\n if (lang !== \"en\")\n scripts.push(`${base}/min/lunr.${lang}.min.js`)\n }\n\n /* Add multi-language support */\n if (config.lang.length > 1)\n scripts.push(`${base}/min/lunr.multi.min.js`)\n\n /* Load scripts synchronously */\n if (scripts.length)\n await importScripts(\n `${base}/min/lunr.stemmer.support.min.js`,\n ...scripts\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Message handler\n *\n * @param message - Source message\n *\n * @returns Target message\n */\nexport async function handler(\n message: SearchMessage\n): Promise {\n switch (message.type) {\n\n /* Search setup message */\n case SearchMessageType.SETUP:\n await setupSearchLanguages(message.data.config)\n index = new Search(message.data)\n return {\n type: SearchMessageType.READY\n }\n\n /* Search query message */\n case SearchMessageType.QUERY:\n return {\n type: SearchMessageType.RESULT,\n data: index ? index.search(message.data) : { items: [] }\n }\n\n /* All other messages */\n default:\n throw new TypeError(\"Invalid message type\")\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Worker\n * ------------------------------------------------------------------------- */\n\n/* @ts-expect-error - expose Lunr.js in global scope, or stemmers won't work */\nself.lunr = lunr\n\n/* Handle messages */\naddEventListener(\"message\", async ev => {\n postMessage(await handler(ev.data))\n})\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Polyfills\n * ------------------------------------------------------------------------- */\n\n/* Polyfill `Object.entries` */\nif (!Object.entries)\n Object.entries = function (obj: object) {\n const data: [string, string][] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push([key, obj[key]])\n\n /* Return entries */\n return data\n }\n\n/* Polyfill `Object.values` */\nif (!Object.values)\n Object.values = function (obj: object) {\n const data: string[] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push(obj[key])\n\n /* Return values */\n return data\n }\n\n/* ------------------------------------------------------------------------- */\n\n/* Polyfills for `Element` */\nif (typeof Element !== \"undefined\") {\n\n /* Polyfill `Element.scrollTo` */\n if (!Element.prototype.scrollTo)\n Element.prototype.scrollTo = function (\n x?: ScrollToOptions | number, y?: number\n ): void {\n if (typeof x === \"object\") {\n this.scrollLeft = x.left!\n this.scrollTop = x.top!\n } else {\n this.scrollLeft = x!\n this.scrollTop = y!\n }\n }\n\n /* Polyfill `Element.replaceWith` */\n if (!Element.prototype.replaceWith)\n Element.prototype.replaceWith = function (\n ...nodes: Array\n ): void {\n const parent = this.parentNode\n if (parent) {\n if (nodes.length === 0)\n parent.removeChild(this)\n\n /* Replace children and create text nodes */\n for (let i = nodes.length - 1; i >= 0; i--) {\n let node = nodes[i]\n if (typeof node !== \"object\")\n node = document.createTextNode(node)\n else if (node.parentNode)\n node.parentNode.removeChild(node)\n\n /* Replace child or insert before previous sibling */\n if (!i)\n parent.replaceChild(node, this)\n else\n parent.insertBefore(this.previousSibling!, node)\n }\n }\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexDocument } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search document\n */\nexport interface SearchDocument extends SearchIndexDocument {\n parent?: SearchIndexDocument /* Parent article */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search document mapping\n */\nexport type SearchDocumentMap = Map\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search document mapping\n *\n * @param docs - Search index documents\n *\n * @returns Search document map\n */\nexport function setupSearchDocumentMap(\n docs: SearchIndexDocument[]\n): SearchDocumentMap {\n const documents = new Map()\n const parents = new Set()\n for (const doc of docs) {\n const [path, hash] = doc.location.split(\"#\")\n\n /* Extract location, title and tags */\n const location = doc.location\n const title = doc.title\n const tags = doc.tags\n\n /* Escape and cleanup text */\n const text = escapeHTML(doc.text)\n .replace(/\\s+(?=[,.:;!?])/g, \"\")\n .replace(/\\s+/g, \" \")\n\n /* Handle section */\n if (hash) {\n const parent = documents.get(path)!\n\n /* Ignore first section, override article */\n if (!parents.has(parent)) {\n parent.title = doc.title\n parent.text = text\n\n /* Remember that we processed the article */\n parents.add(parent)\n\n /* Add subsequent section */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n parent\n })\n }\n\n /* Add article */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n ...tags && { tags }\n })\n }\n }\n return documents\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexConfig } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlight function\n *\n * @param value - Value\n *\n * @returns Highlighted value\n */\nexport type SearchHighlightFn = (value: string) => string\n\n/**\n * Search highlight factory function\n *\n * @param query - Query value\n *\n * @returns Search highlight function\n */\nexport type SearchHighlightFactoryFn = (query: string) => SearchHighlightFn\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search highlighter\n *\n * @param config - Search index configuration\n * @param escape - Whether to escape HTML\n *\n * @returns Search highlight factory function\n */\nexport function setupSearchHighlighter(\n config: SearchIndexConfig, escape: boolean\n): SearchHighlightFactoryFn {\n const separator = new RegExp(config.separator, \"img\")\n const highlight = (_: unknown, data: string, term: string) => {\n return `${data}${term}`\n }\n\n /* Return factory function */\n return (query: string) => {\n query = query\n .replace(/[\\s*+\\-:~^]+/g, \" \")\n .trim()\n\n /* Create search term match expression */\n const match = new RegExp(`(^|${config.separator})(${\n query\n .replace(/[|\\\\{}()[\\]^$+*?.-]/g, \"\\\\$&\")\n .replace(separator, \"|\")\n })`, \"img\")\n\n /* Highlight string value */\n return value => (\n escape\n ? escapeHTML(value)\n : value\n )\n .replace(match, highlight)\n .replace(/<\\/mark>(\\s+)]*>/img, \"$1\")\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search query clause\n */\nexport interface SearchQueryClause {\n presence: lunr.Query.presence /* Clause presence */\n term: string /* Clause term */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search query terms\n */\nexport type SearchQueryTerms = Record\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Parse a search query for analysis\n *\n * @param value - Query value\n *\n * @returns Search query clauses\n */\nexport function parseSearchQuery(\n value: string\n): SearchQueryClause[] {\n const query = new (lunr as any).Query([\"title\", \"text\"])\n const parser = new (lunr as any).QueryParser(value, query)\n\n /* Parse and return query clauses */\n parser.parse()\n return query.clauses\n}\n\n/**\n * Analyze the search query clauses in regard to the search terms found\n *\n * @param query - Search query clauses\n * @param terms - Search terms\n *\n * @returns Search query terms\n */\nexport function getSearchQueryTerms(\n query: SearchQueryClause[], terms: string[]\n): SearchQueryTerms {\n const clauses = new Set(query)\n\n /* Match query clauses against terms */\n const result: SearchQueryTerms = {}\n for (let t = 0; t < terms.length; t++)\n for (const clause of clauses)\n if (terms[t].startsWith(clause.term)) {\n result[clause.term] = true\n clauses.delete(clause)\n }\n\n /* Annotate unmatched non-stopword query clauses */\n for (const clause of clauses)\n if (lunr.stopWordFilter?.(clause.term as any))\n result[clause.term] = false\n\n /* Return query terms */\n return result\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n SearchDocument,\n SearchDocumentMap,\n setupSearchDocumentMap\n} from \"../document\"\nimport {\n SearchHighlightFactoryFn,\n setupSearchHighlighter\n} from \"../highlighter\"\nimport { SearchOptions } from \"../options\"\nimport {\n SearchQueryTerms,\n getSearchQueryTerms,\n parseSearchQuery\n} from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search index configuration\n */\nexport interface SearchIndexConfig {\n lang: string[] /* Search languages */\n separator: string /* Search separator */\n}\n\n/**\n * Search index document\n */\nexport interface SearchIndexDocument {\n location: string /* Document location */\n title: string /* Document title */\n text: string /* Document text */\n tags?: string[] /* Document tags */\n boost?: number /* Document boost */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search index\n *\n * This interfaces describes the format of the `search_index.json` file which\n * is automatically built by the MkDocs search plugin.\n */\nexport interface SearchIndex {\n config: SearchIndexConfig /* Search index configuration */\n docs: SearchIndexDocument[] /* Search index documents */\n options: SearchOptions /* Search options */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search metadata\n */\nexport interface SearchMetadata {\n score: number /* Score (relevance) */\n terms: SearchQueryTerms /* Search query terms */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search result document\n */\nexport type SearchResultDocument = SearchDocument & SearchMetadata\n\n/**\n * Search result item\n */\nexport type SearchResultItem = SearchResultDocument[]\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search result\n */\nexport interface SearchResult {\n items: SearchResultItem[] /* Search result items */\n suggestions?: string[] /* Search suggestions */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Compute the difference of two lists of strings\n *\n * @param a - 1st list of strings\n * @param b - 2nd list of strings\n *\n * @returns Difference\n */\nfunction difference(a: string[], b: string[]): string[] {\n const [x, y] = [new Set(a), new Set(b)]\n return [\n ...new Set([...x].filter(value => !y.has(value)))\n ]\n}\n\n/* ----------------------------------------------------------------------------\n * Class\n * ------------------------------------------------------------------------- */\n\n/**\n * Search index\n */\nexport class Search {\n\n /**\n * Search document mapping\n *\n * A mapping of URLs (including hash fragments) to the actual articles and\n * sections of the documentation. The search document mapping must be created\n * regardless of whether the index was prebuilt or not, as Lunr.js itself\n * only stores the actual index.\n */\n protected documents: SearchDocumentMap\n\n /**\n * Search highlight factory function\n */\n protected highlight: SearchHighlightFactoryFn\n\n /**\n * The underlying Lunr.js search index\n */\n protected index: lunr.Index\n\n /**\n * Search options\n */\n protected options: SearchOptions\n\n /**\n * Create the search integration\n *\n * @param data - Search index\n */\n public constructor({ config, docs, options }: SearchIndex) {\n this.options = options\n\n /* Set up document map and highlighter factory */\n this.documents = setupSearchDocumentMap(docs)\n this.highlight = setupSearchHighlighter(config, false)\n\n /* Set separator for tokenizer */\n lunr.tokenizer.separator = new RegExp(config.separator)\n\n /* Create search index */\n this.index = lunr(function () {\n\n /* Set up multi-language support */\n if (config.lang.length === 1 && config.lang[0] !== \"en\") {\n this.use((lunr as any)[config.lang[0]])\n } else if (config.lang.length > 1) {\n this.use((lunr as any).multiLanguage(...config.lang))\n }\n\n /* Compute functions to be removed from the pipeline */\n const fns = difference([\n \"trimmer\", \"stopWordFilter\", \"stemmer\"\n ], options.pipeline)\n\n /* Remove functions from the pipeline for registered languages */\n for (const lang of config.lang.map(language => (\n language === \"en\" ? lunr : (lunr as any)[language]\n ))) {\n for (const fn of fns) {\n this.pipeline.remove(lang[fn])\n this.searchPipeline.remove(lang[fn])\n }\n }\n\n /* Set up reference */\n this.ref(\"location\")\n\n /* Set up fields */\n this.field(\"title\", { boost: 1e3 })\n this.field(\"text\")\n this.field(\"tags\", { boost: 1e6, extractor: doc => {\n const { tags = [] } = doc as SearchDocument\n return tags.reduce((list, tag) => [\n ...list,\n ...lunr.tokenizer(tag)\n ], [] as lunr.Token[])\n } })\n\n /* Index documents */\n for (const doc of docs)\n this.add(doc, { boost: doc.boost })\n })\n }\n\n /**\n * Search for matching documents\n *\n * The search index which MkDocs provides is divided up into articles, which\n * contain the whole content of the individual pages, and sections, which only\n * contain the contents of the subsections obtained by breaking the individual\n * pages up at `h1` ... `h6`. As there may be many sections on different pages\n * with identical titles (for example within this very project, e.g. \"Usage\"\n * or \"Installation\"), they need to be put into the context of the containing\n * page. For this reason, section results are grouped within their respective\n * articles which are the top-level results that are returned.\n *\n * @param query - Query value\n *\n * @returns Search results\n */\n public search(query: string): SearchResult {\n if (query) {\n try {\n const highlight = this.highlight(query)\n\n /* Parse query to extract clauses for analysis */\n const clauses = parseSearchQuery(query)\n .filter(clause => (\n clause.presence !== lunr.Query.presence.PROHIBITED\n ))\n\n /* Perform search and post-process results */\n const groups = this.index.search(`${query}*`)\n\n /* Apply post-query boosts based on title and search query terms */\n .reduce((item, { ref, score, matchData }) => {\n const document = this.documents.get(ref)\n if (typeof document !== \"undefined\") {\n const { location, title, text, tags, parent } = document\n\n /* Compute and analyze search query terms */\n const terms = getSearchQueryTerms(\n clauses,\n Object.keys(matchData.metadata)\n )\n\n /* Highlight title and text and apply post-query boosts */\n const boost = +!parent + +Object.values(terms).every(t => t)\n item.push({\n location,\n title: highlight(title),\n text: highlight(text),\n ...tags && { tags: tags.map(highlight) },\n score: score * (1 + boost),\n terms\n })\n }\n return item\n }, [])\n\n /* Sort search results again after applying boosts */\n .sort((a, b) => b.score - a.score)\n\n /* Group search results by page */\n .reduce((items, result) => {\n const document = this.documents.get(result.location)\n if (typeof document !== \"undefined\") {\n const ref = \"parent\" in document\n ? document.parent!.location\n : document.location\n items.set(ref, [...items.get(ref) || [], result])\n }\n return items\n }, new Map())\n\n /* Generate search suggestions, if desired */\n let suggestions: string[] | undefined\n if (this.options.suggestions) {\n const titles = this.index.query(builder => {\n for (const clause of clauses)\n builder.term(clause.term, {\n fields: [\"title\"],\n presence: lunr.Query.presence.REQUIRED,\n wildcard: lunr.Query.wildcard.TRAILING\n })\n })\n\n /* Retrieve suggestions for best match */\n suggestions = titles.length\n ? Object.keys(titles[0].matchData.metadata)\n : []\n }\n\n /* Return items and suggestions */\n return {\n items: [...groups.values()],\n ...typeof suggestions !== \"undefined\" && { suggestions }\n }\n\n /* Log errors to console (for now) */\n } catch {\n console.warn(`Invalid query: ${query} \u2013 see https://bit.ly/2s3ChXG`)\n }\n }\n\n /* Return nothing in case of error or empty query */\n return { items: [] }\n }\n}\n"], - "mappings": "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L,CAAI,KACrDD,EAAIC,EAER,CAEA,OAAAG,EAAKP,EACLQ,EAAMzB,EACFwB,EAAG,KAAKJ,CAAC,GAAKK,EAAI,KAAKL,CAAC,IAC1BI,EAAKjB,EACLa,EAAIA,EAAE,QAAQI,EAAG,EAAE,GAKjBD,GAAW,MACbH,EAAIG,EAAQ,YAAY,EAAIH,EAAE,OAAO,CAAC,GAGjCA,CACT,EAEA,OAAO,SAAUhD,EAAO,CACtB,OAAOA,EAAM,OAAO+C,CAAa,CACnC,CACF,EAAG,EAEHpG,EAAK,SAAS,iBAAiBA,EAAK,QAAS,SAAS,EACtD;AAAA;AAAA;AAAA,GAkBAA,EAAK,uBAAyB,SAAU8G,EAAW,CACjD,IAAIC,EAAQD,EAAU,OAAO,SAAU7D,EAAM+D,EAAU,CACrD,OAAA/D,EAAK+D,GAAYA,EACV/D,CACT,EAAG,CAAC,CAAC,EAEL,OAAO,SAAUI,EAAO,CACtB,GAAIA,GAAS0D,EAAM1D,EAAM,SAAS,KAAOA,EAAM,SAAS,EAAG,OAAOA,CACpE,CACF,EAeArD,EAAK,eAAiBA,EAAK,uBAAuB,CAChD,IACA,OACA,QACA,SACA,QACA,MACA,SACA,OACA,KACA,QACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,UACA,OACA,MACA,KACA,MACA,SACA,QACA,OACA,MACA,KACA,OACA,SACA,OACA,OACA,QACA,MACA,OACA,MACA,MACA,MACA,MACA,OACA,KACA,MACA,OACA,MACA,MACA,MACA,UACA,IACA,KACA,KACA,OACA,KACA,KACA,MACA,OACA,QACA,MACA,OACA,SACA,MACA,KACA,QACA,OACA,OACA,KACA,UACA,KACA,MACA,MACA,KACA,MACA,QACA,KACA,OACA,KACA,QACA,MACA,MACA,SACA,OACA,MACA,OACA,MACA,SACA,QACA,KACA,OACA,OACA,OACA,MACA,QACA,OACA,OACA,QACA,QACA,OACA,OACA,MACA,KACA,MACA,OACA,KACA,QACA,MACA,KACA,OACA,OACA,OACA,QACA,QACA,QACA,MACA,OACA,MACA,OACA,OACA,QACA,MACA,MACA,MACF,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", + "mappings": "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L,CAAI,KACrDD,EAAIC,EAER,CAEA,OAAAG,EAAKP,EACLQ,EAAMzB,EACFwB,EAAG,KAAKJ,CAAC,GAAKK,EAAI,KAAKL,CAAC,IAC1BI,EAAKjB,EACLa,EAAIA,EAAE,QAAQI,EAAG,EAAE,GAKjBD,GAAW,MACbH,EAAIG,EAAQ,YAAY,EAAIH,EAAE,OAAO,CAAC,GAGjCA,CACT,EAEA,OAAO,SAAUhD,EAAO,CACtB,OAAOA,EAAM,OAAO+C,CAAa,CACnC,CACF,EAAG,EAEHpG,EAAK,SAAS,iBAAiBA,EAAK,QAAS,SAAS,EACtD;AAAA;AAAA;AAAA,GAkBAA,EAAK,uBAAyB,SAAU8G,EAAW,CACjD,IAAIC,EAAQD,EAAU,OAAO,SAAU7D,EAAM+D,EAAU,CACrD,OAAA/D,EAAK+D,GAAYA,EACV/D,CACT,EAAG,CAAC,CAAC,EAEL,OAAO,SAAUI,EAAO,CACtB,GAAIA,GAAS0D,EAAM1D,EAAM,SAAS,KAAOA,EAAM,SAAS,EAAG,OAAOA,CACpE,CACF,EAeArD,EAAK,eAAiBA,EAAK,uBAAuB,CAChD,IACA,OACA,QACA,SACA,QACA,MACA,SACA,OACA,KACA,QACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,UACA,OACA,MACA,KACA,MACA,SACA,QACA,OACA,MACA,KACA,OACA,SACA,OACA,OACA,QACA,MACA,OACA,MACA,MACA,MACA,MACA,OACA,KACA,MACA,OACA,MACA,MACA,MACA,UACA,IACA,KACA,KACA,OACA,KACA,KACA,MACA,OACA,QACA,MACA,OACA,SACA,MACA,KACA,QACA,OACA,OACA,KACA,UACA,KACA,MACA,MACA,KACA,MACA,QACA,KACA,OACA,KACA,QACA,MACA,MACA,SACA,OACA,MACA,OACA,MACA,SACA,QACA,KACA,OACA,OACA,OACA,MACA,QACA,OACA,OACA,QACA,QACA,OACA,OACA,MACA,KACA,MACA,OACA,KACA,QACA,MACA,KACA,OACA,OACA,OACA,QACA,QACA,QACA,MACA,OACA,MACA,OACA,OACA,QACA,MACA,MACA,MACF,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", "names": ["require_lunr", "__commonJSMin", "exports", "module", "lunr", "config", "builder", "global", "message", "obj", "clone", "keys", "key", "val", "docRef", "fieldName", "stringValue", "s", "n", "fieldRef", "elements", "i", "other", "object", "a", "b", "intersection", "element", "posting", "documentCount", "documentsWithTerm", "x", "str", "metadata", "fn", "t", "len", "tokens", "sliceEnd", "sliceStart", "char", "sliceLength", "tokenMetadata", "label", "isRegistered", "serialised", "pipeline", "fnName", "fns", "existingFn", "newFn", "pos", "stackLength", "memo", "j", "result", "k", "token", "index", "start", "end", "pivotPoint", "pivotIndex", "insertIdx", "position", "sumOfSquares", "elementsLength", "otherVector", "dotProduct", "aLen", "bLen", "aVal", "bVal", "output", "step2list", "step3list", "c", "v", "C", "V", "mgr0", "meq1", "mgr1", "s_v", "re_mgr0", "re_mgr1", "re_meq1", "re_s_v", "re_1a", "re2_1a", "re_1b", "re2_1b", "re_1b_2", "re2_1b_2", "re3_1b_2", "re4_1b_2", "re_1c", "re_2", "re_3", "re_4", "re2_4", "re_5", "re_5_1", "re3_5", "porterStemmer", "w", "stem", "suffix", "firstch", "re", "re2", "re3", "re4", "fp", "stopWords", "words", "stopWord", "arr", "clause", "editDistance", "root", "stack", "frame", "noEditNode", "insertionNode", "substitutionNode", "charA", "charB", "transposeNode", "node", "final", "next", "edges", "edge", "labels", "qEdges", "qLen", "nEdges", "nLen", "q", "qEdge", "nEdge", "qNode", "word", "commonPrefix", "nextNode", "downTo", "childKey", "attrs", "queryString", "query", "parser", "matchingFields", "queryVectors", "termFieldCache", "requiredMatches", "prohibitedMatches", "terms", "clauseMatches", "m", "term", "termTokenSet", "expandedTerms", "field", "expandedTerm", "termIndex", "fieldPosting", "matchingDocumentRefs", "termField", "matchingDocumentsSet", "l", "matchingDocumentRef", "matchingFieldRef", "fieldMatch", "allRequiredMatches", "allProhibitedMatches", "matchingFieldRefs", "results", "matches", "fieldVector", "score", "docMatch", "match", "invertedIndex", "fieldVectors", "ref", "serializedIndex", "serializedVectors", "serializedInvertedIndex", "tokenSetBuilder", "tuple", "attributes", "number", "doc", "fields", "extractor", "fieldTerms", "metadataKey", "fieldRefs", "numberOfFields", "accumulator", "documentsWithField", "fieldRefsLength", "termIdfCache", "fieldLength", "termFrequencies", "termsLength", "fieldBoost", "docBoost", "tf", "idf", "scoreWithPrecision", "args", "clonedMetadata", "metadataKeys", "otherMatchData", "allFields", "options", "state", "subSlices", "type", "charCode", "lexer", "lexeme", "completedClause", "errorMessage", "nextLexeme", "possibleFields", "f", "boost", "factory", "require_escape_html", "__commonJSMin", "exports", "module", "matchHtmlRegExp", "escapeHtml", "string", "str", "match", "escape", "html", "index", "lastIndex", "import_lunr", "obj", "data", "key", "x", "y", "nodes", "parent", "i", "node", "import_escape_html", "setupSearchDocumentMap", "docs", "documents", "parents", "doc", "path", "hash", "location", "title", "tags", "text", "escapeHTML", "parent", "__spreadValues", "import_escape_html", "setupSearchHighlighter", "config", "escape", "separator", "highlight", "_", "data", "term", "query", "match", "value", "escapeHTML", "parseSearchQuery", "value", "query", "getSearchQueryTerms", "terms", "_a", "clauses", "result", "t", "clause", "difference", "a", "b", "x", "y", "value", "Search", "config", "docs", "options", "setupSearchDocumentMap", "setupSearchHighlighter", "fns", "lang", "language", "fn", "doc", "tags", "list", "tag", "query", "highlight", "clauses", "parseSearchQuery", "clause", "groups", "item", "ref", "score", "matchData", "document", "location", "title", "text", "parent", "terms", "getSearchQueryTerms", "boost", "t", "__spreadProps", "__spreadValues", "items", "result", "suggestions", "titles", "builder", "e", "index", "setupSearchLanguages", "config", "__async", "base", "worker", "path", "scripts", "lang", "handler", "message", "Search", "lunr", "ev"] } diff --git a/assets/stylesheets/main.20d9efc8.min.css b/assets/stylesheets/main.20d9efc8.min.css new file mode 100644 index 0000000..d1d3d5e --- /dev/null +++ b/assets/stylesheets/main.20d9efc8.min.css @@ -0,0 +1 @@ +@charset "UTF-8";html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box}*,:after,:before{box-sizing:inherit}@media (prefers-reduced-motion){*,:after,:before{transition:none!important}}body{margin:0}a,button,input,label{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}hr{border:0;box-sizing:initial;display:block;height:.05rem;overflow:visible;padding:0}small{font-size:80%}sub,sup{line-height:1em}img{border-style:none}table{border-collapse:initial;border-spacing:0}td,th{font-weight:400;vertical-align:top}button{background:transparent;border:0;font-family:inherit;font-size:inherit;margin:0;padding:0}input{border:0;outline:none}:root,[data-md-color-scheme=default]{--md-default-fg-color:rgba(0,0,0,.87);--md-default-fg-color--light:rgba(0,0,0,.54);--md-default-fg-color--lighter:rgba(0,0,0,.32);--md-default-fg-color--lightest:rgba(0,0,0,.07);--md-default-bg-color:#fff;--md-default-bg-color--light:hsla(0,0%,100%,.7);--md-default-bg-color--lighter:hsla(0,0%,100%,.3);--md-default-bg-color--lightest:hsla(0,0%,100%,.12);--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:rgba(82,108,254,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7);--md-code-fg-color:#36464e;--md-code-bg-color:#f5f5f5;--md-code-hl-color:rgba(255,255,0,.5);--md-code-hl-number-color:#d52a2a;--md-code-hl-special-color:#db1457;--md-code-hl-function-color:#a846b9;--md-code-hl-constant-color:#6e59d9;--md-code-hl-keyword-color:#3f6ec6;--md-code-hl-string-color:#1c7d4d;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-mark-color:rgba(255,255,0,.5);--md-typeset-del-color:rgba(245,80,61,.15);--md-typeset-ins-color:rgba(11,213,112,.15);--md-typeset-kbd-color:#fafafa;--md-typeset-kbd-accent-color:#fff;--md-typeset-kbd-border-color:#b8b8b8;--md-typeset-table-color:rgba(0,0,0,.12);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-fg-color:#fff;--md-footer-fg-color--light:hsla(0,0%,100%,.7);--md-footer-fg-color--lighter:hsla(0,0%,100%,.3);--md-footer-bg-color:rgba(0,0,0,.87);--md-footer-bg-color--dark:rgba(0,0,0,.32);--md-shadow-z1:0 0.2rem 0.5rem rgba(0,0,0,.05),0 0 0.05rem rgba(0,0,0,.1);--md-shadow-z2:0 0.2rem 0.5rem rgba(0,0,0,.1),0 0 0.05rem rgba(0,0,0,.25);--md-shadow-z3:0 0.2rem 0.5rem rgba(0,0,0,.2),0 0 0.05rem rgba(0,0,0,.35)}.md-icon svg{fill:currentcolor;display:block;height:1.2rem;width:1.2rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--md-text-font-family:var(--md-text-font,_),-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;--md-code-font-family:var(--md-code-font,_),SFMono-Regular,Consolas,Menlo,monospace}body,input{font-feature-settings:"kern","liga";font-family:var(--md-text-font-family)}body,code,input,kbd,pre{color:var(--md-typeset-color)}code,kbd,pre{font-feature-settings:"kern";font-family:var(--md-code-font-family)}:root{--md-typeset-table-sort-icon:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--asc:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--desc:url('data:image/svg+xml;charset=utf-8,')}.md-typeset{-webkit-print-color-adjust:exact;color-adjust:exact;font-size:.8rem;line-height:1.6}@media print{.md-typeset{font-size:.68rem}}.md-typeset blockquote,.md-typeset dl,.md-typeset figure,.md-typeset ol,.md-typeset pre,.md-typeset ul{margin-bottom:1em;margin-top:1em}.md-typeset h1{color:var(--md-default-fg-color--light);font-size:2em;line-height:1.3;margin:0 0 1.25em}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{font-size:1.5625em;line-height:1.4;margin:1.6em 0 .64em}.md-typeset h3{font-size:1.25em;font-weight:400;letter-spacing:-.01em;line-height:1.5;margin:1.6em 0 .8em}.md-typeset h2+h3{margin-top:.8em}.md-typeset h4{font-weight:700;letter-spacing:-.01em;margin:1em 0}.md-typeset h5,.md-typeset h6{color:var(--md-default-fg-color--light);font-size:.8em;font-weight:700;letter-spacing:-.01em;margin:1.25em 0}.md-typeset h5{text-transform:uppercase}.md-typeset hr{border-bottom:.05rem solid var(--md-default-fg-color--lightest);display:flow-root;margin:1.5em 0}.md-typeset a{color:var(--md-typeset-a-color);word-break:break-word}.md-typeset a,.md-typeset a:before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset a:focus code,.md-typeset a:hover code{background-color:var(--md-accent-fg-color--transparent)}.md-typeset a code{color:currentcolor;transition:background-color 125ms}.md-typeset a.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset code,.md-typeset kbd,.md-typeset pre{color:var(--md-code-fg-color);direction:ltr;font-variant-ligatures:none}@media print{.md-typeset code,.md-typeset kbd,.md-typeset pre{white-space:pre-wrap}}.md-typeset code{background-color:var(--md-code-bg-color);border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em;padding:0 .2941176471em;word-break:break-word}.md-typeset code:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-typeset pre{display:flow-root;line-height:1.4;position:relative}.md-typeset pre>code{-webkit-box-decoration-break:slice;box-decoration-break:slice;box-shadow:none;display:block;margin:0;outline-color:var(--md-accent-fg-color);overflow:auto;padding:.7720588235em 1.1764705882em;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin;touch-action:auto;word-break:normal}.md-typeset pre>code:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-typeset pre>code::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset kbd{background-color:var(--md-typeset-kbd-color);border-radius:.1rem;box-shadow:0 .1rem 0 .05rem var(--md-typeset-kbd-border-color),0 .1rem 0 var(--md-typeset-kbd-border-color),0 -.1rem .2rem var(--md-typeset-kbd-accent-color) inset;color:var(--md-default-fg-color);display:inline-block;font-size:.75em;padding:0 .6666666667em;vertical-align:text-top;word-break:break-word}.md-typeset mark{background-color:var(--md-typeset-mark-color);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:inherit;word-break:break-word}.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light);cursor:help;text-decoration:none}@media (hover:none){.md-typeset abbr{position:relative}.md-typeset abbr[title]:-webkit-any(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:-webkit-max-content;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}.md-typeset abbr[title]:-moz-any(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:-moz-max-content;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}[dir=ltr] .md-typeset abbr[title]:-webkit-any(:focus,:hover):after{left:0}[dir=ltr] .md-typeset abbr[title]:-moz-any(:focus,:hover):after{left:0}[dir=ltr] .md-typeset abbr[title]:is(:focus,:hover):after{left:0}[dir=rtl] .md-typeset abbr[title]:-webkit-any(:focus,:hover):after{right:0}[dir=rtl] .md-typeset abbr[title]:-moz-any(:focus,:hover):after{right:0}[dir=rtl] .md-typeset abbr[title]:is(:focus,:hover):after{right:0}.md-typeset abbr[title]:is(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}}.md-typeset small{opacity:.75}[dir=ltr] .md-typeset sub,[dir=ltr] .md-typeset sup{margin-left:.078125em}[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{margin-right:.078125em}[dir=ltr] .md-typeset blockquote{padding-left:.6rem}[dir=rtl] .md-typeset blockquote{padding-right:.6rem}[dir=ltr] .md-typeset blockquote{border-left:.2rem solid var(--md-default-fg-color--lighter)}[dir=rtl] .md-typeset blockquote{border-right:.2rem solid var(--md-default-fg-color--lighter)}.md-typeset blockquote{color:var(--md-default-fg-color--light);margin-left:0;margin-right:0}.md-typeset ul{list-style-type:disc}[dir=ltr] .md-typeset ol,[dir=ltr] .md-typeset ul{margin-left:.625em}[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{margin-right:.625em}.md-typeset ol,.md-typeset ul{padding:0}.md-typeset ol:not([hidden]),.md-typeset ul:not([hidden]){display:flow-root}.md-typeset ol ol,.md-typeset ul ol{list-style-type:lower-alpha}.md-typeset ol ol ol,.md-typeset ul ol ol{list-style-type:lower-roman}[dir=ltr] .md-typeset ol li,[dir=ltr] .md-typeset ul li{margin-left:1.25em}[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{margin-right:1.25em}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}.md-typeset ol li :-webkit-any(ul,ol),.md-typeset ul li :-webkit-any(ul,ol){margin-bottom:.5em;margin-top:.5em}.md-typeset ol li :-moz-any(ul,ol),.md-typeset ul li :-moz-any(ul,ol){margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset ol li :-webkit-any(ul,ol),[dir=ltr] .md-typeset ul li :-webkit-any(ul,ol){margin-left:.625em}[dir=ltr] .md-typeset ol li :-moz-any(ul,ol),[dir=ltr] .md-typeset ul li :-moz-any(ul,ol){margin-left:.625em}[dir=ltr] .md-typeset ol li :is(ul,ol),[dir=ltr] .md-typeset ul li :is(ul,ol){margin-left:.625em}[dir=rtl] .md-typeset ol li :-webkit-any(ul,ol),[dir=rtl] .md-typeset ul li :-webkit-any(ul,ol){margin-right:.625em}[dir=rtl] .md-typeset ol li :-moz-any(ul,ol),[dir=rtl] .md-typeset ul li :-moz-any(ul,ol){margin-right:.625em}[dir=rtl] .md-typeset ol li :is(ul,ol),[dir=rtl] .md-typeset ul li :is(ul,ol){margin-right:.625em}.md-typeset ol li :is(ul,ol),.md-typeset ul li :is(ul,ol){margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset dd{margin-left:1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em}.md-typeset dd{margin-bottom:1.5em;margin-top:1em}.md-typeset img,.md-typeset svg,.md-typeset video{height:auto;max-width:100%}.md-typeset img[align=left]{margin:1em 1em 1em 0}.md-typeset img[align=right]{margin:1em 0 1em 1em}.md-typeset img[align]:only-child{margin-top:0}.md-typeset img[src$="#gh-dark-mode-only"],.md-typeset img[src$="#only-dark"]{display:none}.md-typeset figure{display:flow-root;margin:1em auto;max-width:100%;text-align:center;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.md-typeset figure img{display:block}.md-typeset figcaption{font-style:italic;margin:1em auto;max-width:24rem}.md-typeset iframe{max-width:100%}.md-typeset table:not([class]){background-color:var(--md-default-bg-color);border:.05rem solid var(--md-typeset-table-color);border-radius:.1rem;display:inline-block;font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto}@media print{.md-typeset table:not([class]){display:table}}.md-typeset table:not([class])+*{margin-top:1.5em}.md-typeset table:not([class]) :-webkit-any(th,td)>:first-child{margin-top:0}.md-typeset table:not([class]) :-moz-any(th,td)>:first-child{margin-top:0}.md-typeset table:not([class]) :is(th,td)>:first-child{margin-top:0}.md-typeset table:not([class]) :-webkit-any(th,td)>:last-child{margin-bottom:0}.md-typeset table:not([class]) :-moz-any(th,td)>:last-child{margin-bottom:0}.md-typeset table:not([class]) :is(th,td)>:last-child{margin-bottom:0}.md-typeset table:not([class]) :-webkit-any(th,td):not([align]){text-align:left}.md-typeset table:not([class]) :-moz-any(th,td):not([align]){text-align:left}.md-typeset table:not([class]) :is(th,td):not([align]){text-align:left}[dir=rtl] .md-typeset table:not([class]) :-webkit-any(th,td):not([align]){text-align:right}[dir=rtl] .md-typeset table:not([class]) :-moz-any(th,td):not([align]){text-align:right}[dir=rtl] .md-typeset table:not([class]) :is(th,td):not([align]){text-align:right}.md-typeset table:not([class]) th{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) td{border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) tbody tr{transition:background-color 125ms}.md-typeset table:not([class]) tbody tr:hover{background-color:rgba(0,0,0,.035);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table:not([class]) a{word-break:normal}.md-typeset table th[role=columnheader]{cursor:pointer}[dir=ltr] .md-typeset table th[role=columnheader]:after{margin-left:.5em}[dir=rtl] .md-typeset table th[role=columnheader]:after{margin-right:.5em}.md-typeset table th[role=columnheader]:after{content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-typeset-table-sort-icon);mask-image:var(--md-typeset-table-sort-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset table th[role=columnheader]:hover:after{background-color:var(--md-default-fg-color--lighter)}.md-typeset table th[role=columnheader][aria-sort=ascending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--asc);mask-image:var(--md-typeset-table-sort-icon--asc)}.md-typeset table th[role=columnheader][aria-sort=descending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--desc);mask-image:var(--md-typeset-table-sort-icon--desc)}.md-typeset__scrollwrap{margin:1em -.8rem;overflow-x:auto;touch-action:auto}.md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}@media print{.md-typeset__table{display:block}}html .md-typeset__table table{display:table;margin:0;overflow:hidden;width:100%}@media screen and (max-width:44.9375em){.md-content__inner>pre{margin:1em -.8rem}.md-content__inner>pre code{border-radius:0}}.md-banner{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color);overflow:auto}@media print{.md-banner{display:none}}.md-banner--warning{background:var(--md-typeset-mark-color);color:var(--md-default-fg-color)}.md-banner__inner{font-size:.7rem;margin:.6rem auto;padding:0 .8rem}[dir=ltr] .md-banner__button{float:right}[dir=rtl] .md-banner__button{float:left}.md-banner__button{color:inherit;cursor:pointer;transition:opacity .25s}.md-banner__button:hover{opacity:.7}html{font-size:125%;height:100%;overflow-x:hidden}@media screen and (min-width:100em){html{font-size:137.5%}}@media screen and (min-width:125em){html{font-size:150%}}body{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;font-size:.5rem;min-height:100%;position:relative;width:100%}@media print{body{display:block}}@media screen and (max-width:59.9375em){body[data-md-scrolllock]{position:fixed}}.md-grid{margin-left:auto;margin-right:auto;max-width:61rem}.md-container{display:flex;flex-direction:column;flex-grow:1}@media print{.md-container{display:block}}.md-main{flex-grow:1}.md-main__inner{display:flex;height:100%;margin-top:1.5rem}.md-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-toggle{display:none}.md-option{height:0;opacity:0;position:absolute;width:0}.md-option:checked+label:not([hidden]){display:block}.md-option.focus-visible+label{outline-color:var(--md-accent-fg-color);outline-style:auto}.md-skip{background-color:var(--md-default-fg-color);border-radius:.1rem;color:var(--md-default-bg-color);font-size:.64rem;margin:.5rem;opacity:0;outline-color:var(--md-accent-fg-color);padding:.3rem .5rem;position:fixed;transform:translateY(.4rem);z-index:-1}.md-skip:focus{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 175ms 75ms;z-index:10}@page{margin:25mm}:root{--md-clipboard-icon:url('data:image/svg+xml;charset=utf-8,')}.md-clipboard{border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;position:absolute;right:.5em;top:.5em;transition:color .25s;width:1.5em;z-index:1}@media print{.md-clipboard{display:none}}.md-clipboard:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}:hover>.md-clipboard{color:var(--md-default-fg-color--light)}.md-clipboard:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-image:var(--md-clipboard-icon);mask-image:var(--md-clipboard-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-clipboard--inline{cursor:pointer}.md-clipboard--inline code{transition:color .25s,background-color .25s}.md-clipboard--inline:-webkit-any(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-clipboard--inline:-moz-any(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-clipboard--inline:is(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}@keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes overlay{0%{opacity:0}to{opacity:1}}.md-consent__overlay{animation:overlay .25s both;-webkit-backdrop-filter:blur(.1rem);backdrop-filter:blur(.1rem);background-color:rgba(0,0,0,.54);height:100%;opacity:1;position:fixed;top:0;width:100%;z-index:5}.md-consent__inner{animation:consent .5s cubic-bezier(.1,.7,.1,1) both;background-color:var(--md-default-bg-color);border:0;border-radius:.1rem;bottom:0;box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2);max-height:100%;overflow:auto;padding:0;position:fixed;width:100%;z-index:5}.md-consent__form{padding:.8rem}.md-consent__settings{display:none;margin:1em 0}input:checked+.md-consent__settings{display:block}.md-consent__controls{margin-bottom:.8rem}.md-typeset .md-consent__controls .md-button{display:inline}@media screen and (max-width:44.9375em){.md-typeset .md-consent__controls .md-button{display:block;margin-top:.4rem;text-align:center;width:100%}}.md-consent label{cursor:pointer}.md-content{flex-grow:1;min-width:0}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}@media screen and (min-width:76.25em){[dir=ltr] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}[dir=ltr] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner,[dir=rtl] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-right:1.2rem}[dir=rtl] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}}.md-content__inner:before{content:"";display:block;height:.4rem}.md-content__inner>:last-child{margin-bottom:0}[dir=ltr] .md-content__button{float:right}[dir=rtl] .md-content__button{float:left}[dir=ltr] .md-content__button{margin-left:.4rem}[dir=rtl] .md-content__button{margin-right:.4rem}.md-content__button{margin:.4rem 0;padding:0}@media print{.md-content__button{display:none}}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}[dir=ltr] .md-dialog{right:.8rem}[dir=rtl] .md-dialog{left:.8rem}.md-dialog{background-color:var(--md-default-fg-color);border-radius:.1rem;bottom:.8rem;box-shadow:var(--md-shadow-z3);min-width:11.1rem;opacity:0;padding:.4rem .6rem;pointer-events:none;position:fixed;transform:translateY(100%);transition:transform 0ms .4s,opacity .4s;z-index:4}@media print{.md-dialog{display:none}}.md-dialog--active{opacity:1;pointer-events:auto;transform:translateY(0);transition:transform .4s cubic-bezier(.075,.85,.175,1),opacity .4s}.md-dialog__inner{color:var(--md-default-bg-color);font-size:.7rem}.md-feedback{margin:2em 0 1em;text-align:center}.md-feedback fieldset{border:none;margin:0;padding:0}.md-feedback__title{font-weight:700;margin:1em auto}.md-feedback__inner{position:relative}.md-feedback__list{align-content:baseline;display:flex;flex-wrap:wrap;justify-content:center;position:relative}.md-feedback__list:hover .md-icon:not(:disabled){color:var(--md-default-fg-color--lighter)}:disabled .md-feedback__list{min-height:1.8rem}.md-feedback__icon{color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;margin:0 .1rem;transition:color 125ms}.md-feedback__icon:not(:disabled).md-icon:hover{color:var(--md-accent-fg-color)}.md-feedback__icon:disabled{color:var(--md-default-fg-color--lightest);pointer-events:none}.md-feedback__note{opacity:0;position:relative;transform:translateY(.4rem);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-feedback__note>*{margin:0 auto;max-width:16rem}:disabled .md-feedback__note{opacity:1;transform:translateY(0)}.md-footer{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color)}@media print{.md-footer{display:none}}.md-footer__inner{justify-content:space-between;overflow:auto;padding:.2rem}.md-footer__inner:not([hidden]){display:flex}.md-footer__link{display:flex;flex-grow:0.01;outline-color:var(--md-accent-fg-color);overflow:hidden;padding-bottom:.4rem;padding-top:1.4rem;transition:opacity .25s}.md-footer__link:-webkit-any(:focus,:hover){opacity:.7}.md-footer__link:-moz-any(:focus,:hover){opacity:.7}.md-footer__link:is(:focus,:hover){opacity:.7}[dir=rtl] .md-footer__link svg{transform:scaleX(-1)}@media screen and (max-width:44.9375em){.md-footer__link--prev .md-footer__title{display:none}}[dir=ltr] .md-footer__link--next{margin-left:auto}[dir=rtl] .md-footer__link--next{margin-right:auto}.md-footer__link--next{text-align:right}[dir=rtl] .md-footer__link--next{text-align:left}.md-footer__title{flex-grow:1;font-size:.9rem;line-height:2.4rem;max-width:calc(100% - 2.4rem);padding:0 1rem;position:relative;white-space:nowrap}.md-footer__button{margin:.2rem;padding:.4rem}.md-footer__direction{font-size:.64rem;left:0;margin-top:-1rem;opacity:.7;padding:0 1rem;position:absolute;right:0}.md-footer-meta{background-color:var(--md-footer-bg-color--dark)}.md-footer-meta__inner{display:flex;flex-wrap:wrap;justify-content:space-between;padding:.2rem}html .md-footer-meta.md-typeset a{color:var(--md-footer-fg-color--light)}html .md-footer-meta.md-typeset a:-webkit-any(:focus,:hover){color:var(--md-footer-fg-color)}html .md-footer-meta.md-typeset a:-moz-any(:focus,:hover){color:var(--md-footer-fg-color)}html .md-footer-meta.md-typeset a:is(:focus,:hover){color:var(--md-footer-fg-color)}.md-copyright{color:var(--md-footer-fg-color--lighter);font-size:.64rem;margin:auto .6rem;padding:.4rem 0;width:100%}@media screen and (min-width:45em){.md-copyright{width:auto}}.md-copyright__highlight{color:var(--md-footer-fg-color--light)}.md-social{margin:0 .4rem;padding:.2rem 0 .6rem}@media screen and (min-width:45em){.md-social{padding:.6rem 0}}.md-social__link{display:inline-block;height:1.6rem;text-align:center;width:1.6rem}.md-social__link:before{line-height:1.9}.md-social__link svg{fill:currentcolor;max-height:.8rem;vertical-align:-25%}.md-typeset .md-button{border:.1rem solid;border-radius:.1rem;color:var(--md-primary-fg-color);cursor:pointer;display:inline-block;font-weight:700;padding:.625em 2em;transition:color 125ms,background-color 125ms,border-color 125ms}.md-typeset .md-button--primary{background-color:var(--md-primary-fg-color);border-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-typeset .md-button:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-typeset .md-button:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-typeset .md-button:is(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[dir=ltr] .md-typeset .md-input{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .md-input,[dir=rtl] .md-typeset .md-input{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .md-input{border-top-left-radius:.1rem}.md-typeset .md-input{border-bottom:.1rem solid var(--md-default-fg-color--lighter);box-shadow:var(--md-shadow-z1);font-size:.8rem;height:1.8rem;padding:0 .6rem;transition:border .25s,box-shadow .25s}.md-typeset .md-input:-webkit-any(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input:-moz-any(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input:is(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input--stretch{width:100%}.md-header{background-color:var(--md-primary-fg-color);box-shadow:0 0 .2rem transparent,0 .2rem .4rem transparent;color:var(--md-primary-bg-color);display:block;left:0;position:-webkit-sticky;position:sticky;right:0;top:0;z-index:4}@media print{.md-header{display:none}}.md-header[hidden]{transform:translateY(-100%);transition:transform .25s cubic-bezier(.8,0,.6,1),box-shadow .25s}.md-header--shadow{box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2);transition:transform .25s cubic-bezier(.1,.7,.1,1),box-shadow .25s}.md-header__inner{align-items:center;display:flex;padding:0 .2rem}.md-header__button{color:currentcolor;cursor:pointer;margin:.2rem;outline-color:var(--md-accent-fg-color);padding:.4rem;position:relative;transition:opacity .25s;vertical-align:middle;z-index:1}.md-header__button:hover{opacity:.7}.md-header__button:not([hidden]){display:inline-block}.md-header__button:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-header__button.md-logo{margin:.2rem;padding:.4rem}@media screen and (max-width:76.1875em){.md-header__button.md-logo{display:none}}.md-header__button.md-logo :-webkit-any(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}.md-header__button.md-logo :-moz-any(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}.md-header__button.md-logo :is(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}@media screen and (min-width:60em){.md-header__button[for=__search]{display:none}}.no-js .md-header__button[for=__search]{display:none}[dir=rtl] .md-header__button[for=__search] svg{transform:scaleX(-1)}@media screen and (min-width:76.25em){.md-header__button[for=__drawer]{display:none}}.md-header__topic{display:flex;max-width:100%;position:absolute;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;white-space:nowrap}.md-header__topic+.md-header__topic{opacity:0;pointer-events:none;transform:translateX(1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__topic+.md-header__topic{transform:translateX(-1.25rem)}.md-header__topic:first-child{font-weight:700}[dir=ltr] .md-header__title{margin-right:.4rem}[dir=rtl] .md-header__title{margin-left:.4rem}[dir=ltr] .md-header__title{margin-left:1rem}[dir=rtl] .md-header__title{margin-right:1rem}.md-header__title{flex-grow:1;font-size:.9rem;height:2.4rem;line-height:2.4rem}.md-header__title--active .md-header__topic{opacity:0;pointer-events:none;transform:translateX(-1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__title--active .md-header__topic{transform:translateX(1.25rem)}.md-header__title--active .md-header__topic+.md-header__topic{opacity:1;pointer-events:auto;transform:translateX(0);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;z-index:0}.md-header__title>.md-header__ellipsis{height:100%;position:relative;width:100%}.md-header__option{display:flex;flex-shrink:0;max-width:100%;transition:max-width 0ms .25s,opacity .25s .25s;white-space:nowrap}[data-md-toggle=search]:checked~.md-header .md-header__option{max-width:0;opacity:0;transition:max-width 0ms,opacity 0ms}.md-header__source{display:none}@media screen and (min-width:60em){[dir=ltr] .md-header__source{margin-left:1rem}[dir=rtl] .md-header__source{margin-right:1rem}.md-header__source{display:block;max-width:11.7rem;width:11.7rem}}@media screen and (min-width:76.25em){[dir=ltr] .md-header__source{margin-left:1.4rem}[dir=rtl] .md-header__source{margin-right:1.4rem}}:root{--md-nav-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-nav-icon--next:url('data:image/svg+xml;charset=utf-8,');--md-toc-icon:url('data:image/svg+xml;charset=utf-8,')}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{display:block;font-weight:700;overflow:hidden;padding:0 .6rem;text-overflow:ellipsis}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{height:100%;width:auto}.md-nav__title .md-nav__button.md-logo :-webkit-any(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__title .md-nav__button.md-logo :-moz-any(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__title .md-nav__button.md-logo :is(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__list{list-style:none;margin:0;padding:0}.md-nav__item{padding:0 .6rem}[dir=ltr] .md-nav__item .md-nav__item{padding-right:0}[dir=rtl] .md-nav__item .md-nav__item{padding-left:0}.md-nav__link{align-items:center;cursor:pointer;display:flex;justify-content:space-between;margin-top:.625em;overflow:hidden;scroll-snap-align:start;text-overflow:ellipsis;transition:color 125ms}.md-nav__link--passed{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active{color:var(--md-typeset-a-color)}.md-nav__item .md-nav__link--index [href]{width:100%}.md-nav__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-nav--primary .md-nav__link[for=__toc]{display:none}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{background-color:currentcolor;display:block;height:100%;-webkit-mask-image:var(--md-toc-icon);mask-image:var(--md-toc-icon);width:100%}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__link>*{cursor:pointer;display:flex}.md-nav__icon{flex-shrink:0}.md-nav__source{display:none}@media screen and (max-width:76.1875em){.md-nav--primary,.md-nav--primary .md-nav{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;height:100%;left:0;position:absolute;right:0;top:0;z-index:1}.md-nav--primary :-webkit-any(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary :-moz-any(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary :is(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);cursor:pointer;height:5.6rem;line-height:2.4rem;padding:3rem .8rem .2rem;position:relative;white-space:nowrap}[dir=ltr] .md-nav--primary .md-nav__title .md-nav__icon{left:.4rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem}.md-nav--primary .md-nav__title .md-nav__icon{display:block;height:1.2rem;margin:.2rem;position:absolute;top:.4rem;width:1.2rem}.md-nav--primary .md-nav__title .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--prev);mask-image:var(--md-nav-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:0 .05rem 0 var(--md-default-fg-color--lightest) inset;overflow-y:auto;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;touch-action:pan-y}.md-nav--primary .md-nav__title~.md-nav__list>:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-weight:700}.md-nav--primary .md-nav__title .md-logo{display:block;left:.2rem;margin:.2rem;padding:.4rem;position:absolute;right:.2rem;top:.2rem}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{border-top:.05rem solid var(--md-default-fg-color--lightest);padding:0}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-typeset-a-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__link{margin-top:0;padding:.6rem .8rem}[dir=ltr] .md-nav--primary .md-nav__link .md-nav__icon{margin-right:-.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{margin-left:-.2rem}.md-nav--primary .md-nav__link .md-nav__icon{font-size:1.2rem;height:1.2rem;width:1.2rem}.md-nav--primary .md-nav__link .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-nav--primary .md-nav__icon:after{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav{background-color:initial;position:static}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem}.md-nav--secondary{background-color:initial}.md-nav__toggle~.md-nav{display:flex;opacity:0;transform:translateX(100%);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity 125ms 50ms}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 125ms 125ms}.md-nav__toggle:checked~.md-nav>.md-nav__list{-webkit-backface-visibility:hidden;backface-visibility:hidden}}@media screen and (max-width:59.9375em){.md-nav--primary .md-nav__link[for=__toc]{display:flex}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--primary .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:flex}.md-nav__source{background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color);display:block;padding:0 .2rem}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-nav--integrated .md-nav__link[for=__toc]{display:flex}.md-nav--integrated .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--integrated .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--integrated .md-nav__link[for=__toc]~.md-nav{display:flex}}@media screen and (min-width:60em){.md-nav--secondary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:-webkit-sticky;position:sticky;top:0;z-index:1}.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}}@media screen and (min-width:76.25em){.md-nav{transition:max-height .25s cubic-bezier(.86,0,.07,1)}.md-nav--primary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:-webkit-sticky;position:sticky;top:0;z-index:1}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon,.md-nav__toggle~.md-nav{display:none}.md-nav__toggle:-webkit-any(:checked,:indeterminate)~.md-nav{display:block}.md-nav__toggle:-moz-any(:checked,:indeterminate)~.md-nav{display:block}.md-nav__toggle:is(:checked,:indeterminate)~.md-nav{display:block}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__item--section{display:block;margin:1.25em 0}.md-nav__item--section:last-child{margin-bottom:0}.md-nav__item--section>.md-nav__link{font-weight:700;pointer-events:none}.md-nav__item--section>.md-nav__link--index [href]{pointer-events:auto}.md-nav__item--section>.md-nav__link .md-nav__icon{display:none}.md-nav__item--section>.md-nav{display:block}.md-nav__item--section>.md-nav>.md-nav__list>.md-nav__item{padding:0}.md-nav__icon{border-radius:100%;height:.9rem;transition:background-color .25s,transform .25s;width:.9rem}[dir=rtl] .md-nav__icon{transform:rotate(180deg)}.md-nav__icon:hover{background-color:var(--md-accent-fg-color--transparent)}.md-nav__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.1rem;width:100%}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon,.md-nav__item--nested .md-nav__toggle:indeterminate~.md-nav__link .md-nav__icon{transform:rotate(90deg)}.md-nav--lifted>.md-nav__list>.md-nav__item,.md-nav--lifted>.md-nav__list>.md-nav__item--nested,.md-nav--lifted>.md-nav__title{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active{display:block;padding:0}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);font-weight:700;margin-top:0;padding:0 .6rem;position:-webkit-sticky;position:sticky;top:0;z-index:1}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link:not(.md-nav__link--index){pointer-events:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link .md-nav__icon{display:none}.md-nav--lifted .md-nav[data-md-level="1"]{display:block}[dir=ltr] .md-nav--lifted .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding-right:.6rem}[dir=rtl] .md-nav--lifted .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding-left:.6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested){padding:0 .6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested)>.md-nav__link{padding:0}[dir=ltr] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-left:.05rem solid var(--md-primary-fg-color)}[dir=rtl] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-right:.05rem solid var(--md-primary-fg-color)}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{display:block;margin-bottom:1.25em}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__title{display:none}}:root{--md-search-result-icon:url('data:image/svg+xml;charset=utf-8,')}.md-search{position:relative}@media screen and (min-width:60em){.md-search{padding:.2rem 0}}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__overlay{left:-2.2rem}[dir=rtl] .md-search__overlay{right:-2.2rem}.md-search__overlay{background-color:var(--md-default-bg-color);border-radius:1rem;height:2rem;overflow:hidden;pointer-events:none;position:absolute;top:-1rem;transform-origin:center;transition:transform .3s .1s,opacity .2s .2s;width:2rem}[data-md-toggle=search]:checked~.md-header .md-search__overlay{opacity:1;transition:transform .4s,opacity .1s}}@media screen and (min-width:60em){[dir=ltr] .md-search__overlay{left:0}[dir=rtl] .md-search__overlay{right:0}.md-search__overlay{background-color:rgba(0,0,0,.54);cursor:pointer;height:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0}[data-md-toggle=search]:checked~.md-header .md-search__overlay{height:200vh;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@media screen and (max-width:29.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width:30em) and (max-width:44.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width:45em) and (max-width:59.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}.md-search__inner{-webkit-backface-visibility:hidden;backface-visibility:hidden}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__inner{left:0}[dir=rtl] .md-search__inner{right:0}.md-search__inner{height:0;opacity:0;overflow:hidden;position:fixed;top:0;transform:translateX(5%);transition:width 0ms .3s,height 0ms .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s;width:0;z-index:2}[dir=rtl] .md-search__inner{transform:translateX(-5%)}[data-md-toggle=search]:checked~.md-header .md-search__inner{height:100%;opacity:1;transform:translateX(0);transition:width 0ms 0ms,height 0ms 0ms,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__inner{float:right}[dir=rtl] .md-search__inner{float:left}.md-search__inner{padding:.1rem 0;position:relative;transition:width .25s cubic-bezier(.1,.7,.1,1);width:11.7rem}}@media screen and (min-width:60em) and (max-width:76.1875em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}}@media screen and (min-width:76.25em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}}.md-search__form{background-color:var(--md-default-bg-color);box-shadow:0 0 .6rem transparent;height:2.4rem;position:relative;transition:color .25s,background-color .25s;z-index:2}@media screen and (min-width:60em){.md-search__form{background-color:rgba(0,0,0,.26);border-radius:.1rem;height:1.8rem}.md-search__form:hover{background-color:hsla(0,0%,100%,.12)}}[data-md-toggle=search]:checked~.md-header .md-search__form{background-color:var(--md-default-bg-color);border-radius:.1rem .1rem 0 0;box-shadow:0 0 .6rem rgba(0,0,0,.07);color:var(--md-default-fg-color)}[dir=ltr] .md-search__input{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__input{padding-left:2.2rem;padding-right:3.6rem}.md-search__input{background:transparent;font-size:.9rem;height:100%;position:relative;text-overflow:ellipsis;width:100%;z-index:2}.md-search__input::-ms-input-placeholder{-ms-transition:color .25s;transition:color .25s}.md-search__input::placeholder{transition:color .25s}.md-search__input::-ms-input-placeholder{color:var(--md-default-fg-color--light)}.md-search__input::placeholder,.md-search__input~.md-search__icon{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}@media screen and (max-width:59.9375em){.md-search__input{font-size:.9rem;height:2.4rem;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__input{padding-left:2.2rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input{color:inherit;font-size:.8rem}.md-search__input::-ms-input-placeholder{color:var(--md-primary-bg-color--light)}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}[data-md-toggle=search]:checked~.md-header .md-search__input{text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input::-ms-input-placeholder{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon,[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:var(--md-default-fg-color--light)}}.md-search__icon{cursor:pointer;display:inline-block;height:1.2rem;transition:color .25s,opacity .25s;width:1.2rem}.md-search__icon:hover{opacity:.7}[dir=ltr] .md-search__icon[for=__search]{left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem}.md-search__icon[for=__search]{position:absolute;top:.3rem;z-index:2}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__icon[for=__search]{left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem}.md-search__icon[for=__search]{top:.6rem}.md-search__icon[for=__search] svg:first-child{display:none}}@media screen and (min-width:60em){.md-search__icon[for=__search]{pointer-events:none}.md-search__icon[for=__search] svg:last-child{display:none}}[dir=ltr] .md-search__options{right:.5rem}[dir=rtl] .md-search__options{left:.5rem}.md-search__options{pointer-events:none;position:absolute;top:.3rem;z-index:2}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__options{right:.8rem}[dir=rtl] .md-search__options{left:.8rem}.md-search__options{top:.6rem}}[dir=ltr] .md-search__options>*{margin-left:.2rem}[dir=rtl] .md-search__options>*{margin-right:.2rem}.md-search__options>*{color:var(--md-default-fg-color--light);opacity:0;transform:scale(.75);transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-search__options>:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>*{opacity:1;pointer-events:auto;transform:scale(1)}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>:hover{opacity:.7}[dir=ltr] .md-search__suggest{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__suggest{padding-left:2.2rem;padding-right:3.6rem}.md-search__suggest{align-items:center;color:var(--md-default-fg-color--lighter);display:flex;font-size:.9rem;height:100%;opacity:0;position:absolute;top:0;transition:opacity 50ms;white-space:nowrap;width:100%}@media screen and (min-width:60em){[dir=ltr] .md-search__suggest{padding-left:2.2rem}[dir=rtl] .md-search__suggest{padding-right:2.2rem}.md-search__suggest{font-size:.8rem}}[data-md-toggle=search]:checked~.md-header .md-search__suggest{opacity:1;transition:opacity .3s .1s}[dir=ltr] .md-search__output{border-bottom-left-radius:.1rem}[dir=ltr] .md-search__output,[dir=rtl] .md-search__output{border-bottom-right-radius:.1rem}[dir=rtl] .md-search__output{border-bottom-left-radius:.1rem}.md-search__output{overflow:hidden;position:absolute;width:100%;z-index:1}@media screen and (max-width:59.9375em){.md-search__output{bottom:0;top:2.4rem}}@media screen and (min-width:60em){.md-search__output{opacity:0;top:1.9rem;transition:opacity .4s}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:var(--md-shadow-z3);opacity:1}}.md-search__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);height:100%;overflow-y:auto;touch-action:pan-y}@media (-webkit-max-device-pixel-ratio:1),(max-resolution:1dppx){.md-search__scrollwrap{transform:translateZ(0)}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-search__scrollwrap{width:23.4rem}}@media screen and (min-width:76.25em){.md-search__scrollwrap{width:34.4rem}}@media screen and (min-width:60em){.md-search__scrollwrap{max-height:0;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-search__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;padding:0 .8rem;scroll-snap-align:start}@media screen and (min-width:60em){[dir=ltr] .md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem}}.md-search-result__list{list-style:none;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.md-search-result__item{box-shadow:0 -.05rem var(--md-default-fg-color--lightest)}.md-search-result__item:first-child{box-shadow:none}.md-search-result__link{display:block;outline:none;scroll-snap-align:start;transition:background-color .25s}.md-search-result__link:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:is(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:last-child p:last-child{margin-bottom:.6rem}.md-search-result__more summary{color:var(--md-typeset-a-color);cursor:pointer;display:block;font-size:.64rem;outline:none;padding:.75em .8rem;scroll-snap-align:start;transition:color .25s,background-color .25s}@media screen and (min-width:60em){[dir=ltr] .md-search-result__more summary{padding-left:2.2rem}[dir=rtl] .md-search-result__more summary{padding-right:2.2rem}}.md-search-result__more summary:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary:is(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary::marker{display:none}.md-search-result__more summary::-webkit-details-marker{display:none}.md-search-result__more summary~*>*{opacity:.65}.md-search-result__article{overflow:hidden;padding:0 .8rem;position:relative}@media screen and (min-width:60em){[dir=ltr] .md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem}}.md-search-result__article--document .md-search-result__title{font-size:.8rem;font-weight:400;line-height:1.4;margin:.55rem 0}[dir=ltr] .md-search-result__icon{left:0}[dir=rtl] .md-search-result__icon{right:0}.md-search-result__icon{color:var(--md-default-fg-color--light);height:1.2rem;margin:.5rem;position:absolute;width:1.2rem}@media screen and (max-width:59.9375em){.md-search-result__icon{display:none}}.md-search-result__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-search-result-icon);mask-image:var(--md-search-result-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-search-result__icon:after{transform:scaleX(-1)}.md-search-result__title{font-size:.64rem;font-weight:700;line-height:1.6;margin:.5em 0}.md-search-result__teaser{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--md-default-fg-color--light);display:-webkit-box;font-size:.64rem;line-height:1.6;margin:.5em 0;max-height:2rem;overflow:hidden;text-overflow:ellipsis}@media screen and (max-width:44.9375em){.md-search-result__teaser{-webkit-line-clamp:3;max-height:3rem}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-search-result__teaser{-webkit-line-clamp:3;max-height:3rem}}.md-search-result__teaser mark{background-color:initial;text-decoration:underline}.md-search-result__terms{font-size:.64rem;font-style:italic;margin:.5em 0}.md-search-result mark{background-color:initial;color:var(--md-accent-fg-color)}.md-select{position:relative;z-index:1}.md-select__inner{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:50%;margin-top:.2rem;max-height:0;opacity:0;position:absolute;top:calc(100% - .2rem);transform:translate3d(-50%,.3rem,0);transition:transform .25s 375ms,opacity .25s .25s,max-height 0ms .5s}.md-select:-webkit-any(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);-webkit-transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms;transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select:-moz-any(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);-moz-transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms;transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select:is(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select__inner:after{border-bottom:.2rem solid transparent;border-bottom-color:var(--md-default-bg-color);border-left:.2rem solid transparent;border-right:.2rem solid transparent;border-top:0;content:"";height:0;left:50%;margin-left:-.2rem;margin-top:-.2rem;position:absolute;top:0;width:0}.md-select__list{border-radius:.1rem;font-size:.8rem;list-style-type:none;margin:0;max-height:inherit;overflow:auto;padding:0}.md-select__item{line-height:1.8rem}[dir=ltr] .md-select__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-select__link{padding-left:1.2rem;padding-right:.6rem}.md-select__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:background-color .25s,color .25s;width:100%}.md-select__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:focus{background-color:var(--md-default-fg-color--lightest)}.md-sidebar{align-self:flex-start;flex-shrink:0;padding:1.2rem 0;position:-webkit-sticky;position:sticky;top:2.4rem;width:12.1rem}@media print{.md-sidebar{display:none}}@media screen and (max-width:76.1875em){[dir=ltr] .md-sidebar--primary{left:-12.1rem}[dir=rtl] .md-sidebar--primary{right:-12.1rem}.md-sidebar--primary{background-color:var(--md-default-bg-color);display:block;height:100%;position:fixed;top:0;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;width:12.1rem;z-index:5}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:var(--md-shadow-z3);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{bottom:0;left:0;margin:0;overflow:hidden;position:absolute;right:0;-ms-scroll-snap-type:none;scroll-snap-type:none;top:0}}@media screen and (min-width:76.25em){.md-sidebar{height:0}.no-js .md-sidebar{height:auto}.md-header--lifted~.md-container .md-sidebar{top:4.8rem}}.md-sidebar--secondary{display:none;order:2}@media screen and (min-width:60em){.md-sidebar--secondary{height:0}.no-js .md-sidebar--secondary{height:auto}.md-sidebar--secondary:not([hidden]){display:block}.md-sidebar--secondary .md-sidebar__scrollwrap{touch-action:pan-y}}.md-sidebar__scrollwrap{scrollbar-gutter:stable;-webkit-backface-visibility:hidden;backface-visibility:hidden;margin:0 .2rem;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin}.md-sidebar__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-sidebar__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@supports selector(::-webkit-scrollbar){.md-sidebar__scrollwrap{scrollbar-gutter:auto}[dir=ltr] .md-sidebar__inner{padding-right:calc(100% - 11.5rem)}[dir=rtl] .md-sidebar__inner{padding-left:calc(100% - 11.5rem)}}@media screen and (max-width:76.1875em){.md-overlay{background-color:rgba(0,0,0,.54);height:0;opacity:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0;z-index:5}[data-md-toggle=drawer]:checked~.md-overlay{height:100%;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@keyframes facts{0%{height:0}to{height:.65rem}}@keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}:root{--md-source-forks-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-repositories-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-source{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.65rem;line-height:1.2;outline-color:var(--md-accent-fg-color);transition:opacity .25s;white-space:nowrap}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;height:2.4rem;vertical-align:middle;width:2rem}[dir=ltr] .md-source__icon svg{margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem}.md-source__icon svg{margin-top:.6rem}[dir=ltr] .md-source__icon+.md-source__repository{margin-left:-2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem}[dir=ltr] .md-source__icon+.md-source__repository{padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{padding-right:2rem}[dir=ltr] .md-source__repository{margin-left:.6rem}[dir=rtl] .md-source__repository{margin-right:.6rem}.md-source__repository{display:inline-block;max-width:calc(100% - 1.2rem);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.md-source__facts{display:flex;font-size:.55rem;gap:.4rem;list-style-type:none;margin:.1rem 0 0;opacity:.75;overflow:hidden;padding:0;width:100%}.md-source__repository--active .md-source__facts{animation:facts .25s ease-in}.md-source__fact{overflow:hidden;text-overflow:ellipsis}.md-source__repository--active .md-source__fact{animation:fact .4s ease-out}[dir=ltr] .md-source__fact:before{margin-right:.1rem}[dir=rtl] .md-source__fact:before{margin-left:.1rem}.md-source__fact:before{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-top;width:.6rem}.md-source__fact:nth-child(1n+2){flex-shrink:0}.md-source__fact--version:before{-webkit-mask-image:var(--md-source-version-icon);mask-image:var(--md-source-version-icon)}.md-source__fact--stars:before{-webkit-mask-image:var(--md-source-stars-icon);mask-image:var(--md-source-stars-icon)}.md-source__fact--forks:before{-webkit-mask-image:var(--md-source-forks-icon);mask-image:var(--md-source-forks-icon)}.md-source__fact--repositories:before{-webkit-mask-image:var(--md-source-repositories-icon);mask-image:var(--md-source-repositories-icon)}.md-tabs{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block;line-height:1.3;overflow:auto;width:100%;z-index:3}@media print{.md-tabs{display:none}}@media screen and (max-width:76.1875em){.md-tabs{display:none}}.md-tabs[hidden]{pointer-events:none}[dir=ltr] .md-tabs__list{margin-left:.2rem}[dir=rtl] .md-tabs__list{margin-right:.2rem}.md-tabs__list{contain:content;list-style:none;margin:0;padding:0;white-space:nowrap}.md-tabs__item{display:inline-block;height:2.4rem;padding-left:.6rem;padding-right:.6rem}.md-tabs__link{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.7rem;margin-top:.8rem;opacity:.7;outline-color:var(--md-accent-fg-color);outline-offset:.2rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s}.md-tabs__link--active,.md-tabs__link:-webkit-any(:focus,:hover){color:inherit;opacity:1}.md-tabs__link--active,.md-tabs__link:-moz-any(:focus,:hover){color:inherit;opacity:1}.md-tabs__link--active,.md-tabs__link:is(:focus,:hover){color:inherit;opacity:1}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:.1s}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:.12s}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:.14s}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:.16s}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:.18s}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:.2s}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:.22s}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:.24s}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:.26s}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:.28s}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:.3s}.md-tabs[hidden] .md-tabs__link{opacity:0;transform:translateY(50%);transition:transform 0ms .1s,opacity .1s}:root{--md-tag-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .md-tags{margin-bottom:.75em;margin-top:-.125em}[dir=ltr] .md-typeset .md-tag{margin-right:.5em}[dir=rtl] .md-typeset .md-tag{margin-left:.5em}.md-typeset .md-tag{background:var(--md-default-fg-color--lightest);border-radius:2.4rem;display:inline-block;font-size:.64rem;font-weight:700;letter-spacing:normal;line-height:1.6;margin-bottom:.5em;padding:.3125em .9375em;vertical-align:middle}.md-typeset .md-tag[href]{-webkit-tap-highlight-color:transparent;color:inherit;outline:none;transition:color 125ms,background-color 125ms}.md-typeset .md-tag[href]:focus,.md-typeset .md-tag[href]:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[id]>.md-typeset .md-tag{vertical-align:text-top}.md-typeset .md-tag-icon:before{background-color:var(--md-default-fg-color--lighter);content:"";display:inline-block;height:1.2em;margin-right:.4em;-webkit-mask-image:var(--md-tag-icon);mask-image:var(--md-tag-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset .md-tag-icon:-webkit-any(a:focus,a:hover):before{background-color:var(--md-accent-bg-color)}.md-typeset .md-tag-icon:-moz-any(a:focus,a:hover):before{background-color:var(--md-accent-bg-color)}.md-typeset .md-tag-icon:is(a:focus,a:hover):before{background-color:var(--md-accent-bg-color)}@keyframes pulse{0%{box-shadow:0 0 0 0 var(--md-default-fg-color--lightest);transform:scale(.95)}75%{box-shadow:0 0 0 .625em transparent;transform:scale(1)}to{box-shadow:0 0 0 0 transparent;transform:scale(.95)}}:root{--md-tooltip-width:20rem}.md-tooltip{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);font-family:var(--md-text-font-family);left:clamp(var(--md-tooltip-0,0rem) + .8rem,var(--md-tooltip-x),100vw + var(--md-tooltip-0,0rem) + .8rem - var(--md-tooltip-width) - 2 * .8rem);max-width:calc(100vw - 1.6rem);opacity:0;position:absolute;top:var(--md-tooltip-y);transform:translateY(-.4rem);transition:transform 0ms .25s,opacity .25s,z-index .25s;width:var(--md-tooltip-width);z-index:0}.md-tooltip--active{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,z-index 0ms;z-index:2}:-webkit-any(.focus-visible>.md-tooltip,.md-tooltip:target){outline:var(--md-accent-fg-color) auto}:-moz-any(.focus-visible>.md-tooltip,.md-tooltip:target){outline:var(--md-accent-fg-color) auto}:is(.focus-visible>.md-tooltip,.md-tooltip:target){outline:var(--md-accent-fg-color) auto}.md-tooltip__inner{font-size:.64rem;padding:.8rem}.md-tooltip__inner.md-typeset>:first-child{margin-top:0}.md-tooltip__inner.md-typeset>:last-child{margin-bottom:0}.md-annotation{font-weight:400;outline:none;white-space:normal}[dir=rtl] .md-annotation{direction:rtl}.md-annotation:not([hidden]){display:inline-block;line-height:1.325}.md-annotation__index{cursor:pointer;font-family:var(--md-code-font-family);font-size:.85em;margin:0 1ch;outline:none;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0}.md-annotation .md-annotation__index{color:#fff;transition:z-index .25s}.md-annotation .md-annotation__index:-webkit-any(:focus,:hover){color:#fff}.md-annotation .md-annotation__index:-moz-any(:focus,:hover){color:#fff}.md-annotation .md-annotation__index:is(:focus,:hover){color:#fff}.md-annotation__index:after{background-color:var(--md-default-fg-color--lighter);border-radius:2ch;content:"";height:2.2ch;left:-.125em;margin:0 -.4ch;padding:0 .4ch;position:absolute;top:0;transition:color .25s,background-color .25s;width:calc(100% + 1.2ch);width:max(2.2ch,100% + 1.2ch);z-index:-1}@media not all and (prefers-reduced-motion){[data-md-visible]>.md-annotation__index:after{animation:pulse 2s infinite}}.md-tooltip--active+.md-annotation__index:after{animation:none;transition:color .25s,background-color .25s}code .md-annotation__index{font-family:var(--md-code-font-family);font-size:inherit}:-webkit-any(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index){color:var(--md-accent-bg-color)}:-moz-any(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index){color:var(--md-accent-bg-color)}:is(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index){color:var(--md-accent-bg-color)}:-webkit-any(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index):after{background-color:var(--md-accent-fg-color)}:-moz-any(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index):after{background-color:var(--md-accent-fg-color)}:is(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index):after{background-color:var(--md-accent-fg-color)}.md-tooltip--active+.md-annotation__index{animation:none;transition:none;z-index:2}.md-annotation__index [data-md-annotation-id]{display:inline-block;line-height:90%}.md-annotation__index [data-md-annotation-id]:before{content:attr(data-md-annotation-id);display:inline-block;padding-bottom:.1em;transform:scale(1.15);transition:transform .4s cubic-bezier(.1,.7,.1,1);vertical-align:.065em}@media not print{.md-annotation__index [data-md-annotation-id]:before{content:"+"}:focus-within>.md-annotation__index [data-md-annotation-id]:before{transform:scale(1.25) rotate(45deg)}}[dir=ltr] .md-top{margin-left:50%}[dir=rtl] .md-top{margin-right:50%}.md-top{background-color:var(--md-default-bg-color);border-radius:1.6rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color--light);display:block;font-size:.7rem;outline:none;padding:.4rem .8rem;position:fixed;top:3.2rem;transform:translate(-50%);transition:color 125ms,background-color 125ms,transform 125ms cubic-bezier(.4,0,.2,1),opacity 125ms;z-index:2}@media print{.md-top{display:none}}[dir=rtl] .md-top{transform:translate(50%)}.md-top[hidden]{opacity:0;pointer-events:none;transform:translate(-50%,.2rem);transition-duration:0ms}[dir=rtl] .md-top[hidden]{transform:translate(50%,.2rem)}.md-top:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top:is(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top svg{display:inline-block;vertical-align:-.5em}@keyframes hoverfix{0%{pointer-events:none}}:root{--md-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-version{flex-shrink:0;font-size:.8rem;height:2.4rem}[dir=ltr] .md-version__current{margin-left:1.4rem;margin-right:.4rem}[dir=rtl] .md-version__current{margin-left:.4rem;margin-right:1.4rem}.md-version__current{color:inherit;cursor:pointer;outline:none;position:relative;top:.05rem}[dir=ltr] .md-version__current:after{margin-left:.4rem}[dir=rtl] .md-version__current:after{margin-right:.4rem}.md-version__current:after{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-image:var(--md-version-icon);mask-image:var(--md-version-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.4rem}.md-version__list{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);list-style-type:none;margin:.2rem .8rem;max-height:0;opacity:0;overflow:auto;padding:0;position:absolute;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;top:.15rem;transition:max-height 0ms .5s,opacity .25s .25s;z-index:3}.md-version:-webkit-any(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;-webkit-transition:max-height 0ms,opacity .25s;transition:max-height 0ms,opacity .25s}.md-version:-moz-any(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;-moz-transition:max-height 0ms,opacity .25s;transition:max-height 0ms,opacity .25s}.md-version:is(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;transition:max-height 0ms,opacity .25s}@media (pointer:coarse){.md-version:hover .md-version__list{animation:hoverfix .25s forwards}.md-version:focus-within .md-version__list{animation:none}}.md-version__item{line-height:1.8rem}[dir=ltr] .md-version__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-version__link{padding-left:1.2rem;padding-right:.6rem}.md-version__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:color .25s,background-color .25s;white-space:nowrap;width:100%}.md-version__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:focus{background-color:var(--md-default-fg-color--lightest)}:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .admonition,.md-typeset details{background-color:var(--md-admonition-bg-color);border:.05rem solid #448aff;border-radius:.2rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid}@media print{.md-typeset .admonition,.md-typeset details{box-shadow:none}}.md-typeset .admonition>*,.md-typeset details>*{box-sizing:border-box}.md-typeset .admonition :-webkit-any(.admonition,details),.md-typeset details :-webkit-any(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset .admonition :-moz-any(.admonition,details),.md-typeset details :-moz-any(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset .admonition :is(.admonition,details),.md-typeset details :is(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset .admonition .md-typeset__scrollwrap,.md-typeset details .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset .admonition .md-typeset__table,.md-typeset details .md-typeset__table{padding:0 .6rem}.md-typeset .admonition>.tabbed-set:only-child,.md-typeset details>.tabbed-set:only-child{margin-top:0}html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{margin-bottom:.6rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{padding-left:2rem;padding-right:.6rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{padding-left:.6rem;padding-right:2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-left-width:.2rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-right-width:.2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset .admonition-title,.md-typeset summary{background-color:rgba(68,138,255,.1);border:none;font-weight:700;margin:0 -.6rem;padding-bottom:.4rem;padding-top:.4rem;position:relative}html .md-typeset .admonition-title:last-child,html .md-typeset summary:last-child{margin-bottom:0}[dir=ltr] .md-typeset .admonition-title:before,[dir=ltr] .md-typeset summary:before{left:.6rem}[dir=rtl] .md-typeset .admonition-title:before,[dir=rtl] .md-typeset summary:before{right:.6rem}.md-typeset .admonition-title:before,.md-typeset summary:before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset .admonition-title code,.md-typeset summary code{box-shadow:0 0 0 .05rem var(--md-default-fg-color--lightest)}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.note){border-color:#448aff}.md-typeset :-moz-any(.admonition,details):-moz-any(.note){border-color:#448aff}.md-typeset :is(.admonition,details):is(.note){border-color:#448aff}.md-typeset :-webkit-any(.note)>:-webkit-any(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :-moz-any(.note)>:-moz-any(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :is(.note)>:is(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :-webkit-any(.note)>:-webkit-any(.admonition-title,summary):before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset :-moz-any(.note)>:-moz-any(.admonition-title,summary):before{background-color:#448aff;mask-image:var(--md-admonition-icon--note)}.md-typeset :is(.note)>:is(.admonition-title,summary):before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset :-webkit-any(.note)>:-webkit-any(.admonition-title,summary):after{color:#448aff}.md-typeset :-moz-any(.note)>:-moz-any(.admonition-title,summary):after{color:#448aff}.md-typeset :is(.note)>:is(.admonition-title,summary):after{color:#448aff}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :-moz-any(.admonition,details):-moz-any(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :is(.admonition,details):is(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :-webkit-any(.abstract,.summary,.tldr)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :-moz-any(.abstract,.summary,.tldr)>:-moz-any(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :is(.abstract,.summary,.tldr)>:is(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :-webkit-any(.abstract,.summary,.tldr)>:-webkit-any(.admonition-title,summary):before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset :-moz-any(.abstract,.summary,.tldr)>:-moz-any(.admonition-title,summary):before{background-color:#00b0ff;mask-image:var(--md-admonition-icon--abstract)}.md-typeset :is(.abstract,.summary,.tldr)>:is(.admonition-title,summary):before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset :-webkit-any(.abstract,.summary,.tldr)>:-webkit-any(.admonition-title,summary):after{color:#00b0ff}.md-typeset :-moz-any(.abstract,.summary,.tldr)>:-moz-any(.admonition-title,summary):after{color:#00b0ff}.md-typeset :is(.abstract,.summary,.tldr)>:is(.admonition-title,summary):after{color:#00b0ff}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.info,.todo){border-color:#00b8d4}.md-typeset :-moz-any(.admonition,details):-moz-any(.info,.todo){border-color:#00b8d4}.md-typeset :is(.admonition,details):is(.info,.todo){border-color:#00b8d4}.md-typeset :-webkit-any(.info,.todo)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :-moz-any(.info,.todo)>:-moz-any(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :is(.info,.todo)>:is(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :-webkit-any(.info,.todo)>:-webkit-any(.admonition-title,summary):before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset :-moz-any(.info,.todo)>:-moz-any(.admonition-title,summary):before{background-color:#00b8d4;mask-image:var(--md-admonition-icon--info)}.md-typeset :is(.info,.todo)>:is(.admonition-title,summary):before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset :-webkit-any(.info,.todo)>:-webkit-any(.admonition-title,summary):after{color:#00b8d4}.md-typeset :-moz-any(.info,.todo)>:-moz-any(.admonition-title,summary):after{color:#00b8d4}.md-typeset :is(.info,.todo)>:is(.admonition-title,summary):after{color:#00b8d4}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :-moz-any(.admonition,details):-moz-any(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :is(.admonition,details):is(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :-webkit-any(.tip,.hint,.important)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :-moz-any(.tip,.hint,.important)>:-moz-any(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :is(.tip,.hint,.important)>:is(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :-webkit-any(.tip,.hint,.important)>:-webkit-any(.admonition-title,summary):before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset :-moz-any(.tip,.hint,.important)>:-moz-any(.admonition-title,summary):before{background-color:#00bfa5;mask-image:var(--md-admonition-icon--tip)}.md-typeset :is(.tip,.hint,.important)>:is(.admonition-title,summary):before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset :-webkit-any(.tip,.hint,.important)>:-webkit-any(.admonition-title,summary):after{color:#00bfa5}.md-typeset :-moz-any(.tip,.hint,.important)>:-moz-any(.admonition-title,summary):after{color:#00bfa5}.md-typeset :is(.tip,.hint,.important)>:is(.admonition-title,summary):after{color:#00bfa5}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.success,.check,.done){border-color:#00c853}.md-typeset :-moz-any(.admonition,details):-moz-any(.success,.check,.done){border-color:#00c853}.md-typeset :is(.admonition,details):is(.success,.check,.done){border-color:#00c853}.md-typeset :-webkit-any(.success,.check,.done)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :-moz-any(.success,.check,.done)>:-moz-any(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :is(.success,.check,.done)>:is(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :-webkit-any(.success,.check,.done)>:-webkit-any(.admonition-title,summary):before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset :-moz-any(.success,.check,.done)>:-moz-any(.admonition-title,summary):before{background-color:#00c853;mask-image:var(--md-admonition-icon--success)}.md-typeset :is(.success,.check,.done)>:is(.admonition-title,summary):before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset :-webkit-any(.success,.check,.done)>:-webkit-any(.admonition-title,summary):after{color:#00c853}.md-typeset :-moz-any(.success,.check,.done)>:-moz-any(.admonition-title,summary):after{color:#00c853}.md-typeset :is(.success,.check,.done)>:is(.admonition-title,summary):after{color:#00c853}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.question,.help,.faq){border-color:#64dd17}.md-typeset :-moz-any(.admonition,details):-moz-any(.question,.help,.faq){border-color:#64dd17}.md-typeset :is(.admonition,details):is(.question,.help,.faq){border-color:#64dd17}.md-typeset :-webkit-any(.question,.help,.faq)>:-webkit-any(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :-moz-any(.question,.help,.faq)>:-moz-any(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :is(.question,.help,.faq)>:is(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :-webkit-any(.question,.help,.faq)>:-webkit-any(.admonition-title,summary):before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset :-moz-any(.question,.help,.faq)>:-moz-any(.admonition-title,summary):before{background-color:#64dd17;mask-image:var(--md-admonition-icon--question)}.md-typeset :is(.question,.help,.faq)>:is(.admonition-title,summary):before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset :-webkit-any(.question,.help,.faq)>:-webkit-any(.admonition-title,summary):after{color:#64dd17}.md-typeset :-moz-any(.question,.help,.faq)>:-moz-any(.admonition-title,summary):after{color:#64dd17}.md-typeset :is(.question,.help,.faq)>:is(.admonition-title,summary):after{color:#64dd17}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :-moz-any(.admonition,details):-moz-any(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :is(.admonition,details):is(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :-webkit-any(.warning,.caution,.attention)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :-moz-any(.warning,.caution,.attention)>:-moz-any(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :is(.warning,.caution,.attention)>:is(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :-webkit-any(.warning,.caution,.attention)>:-webkit-any(.admonition-title,summary):before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset :-moz-any(.warning,.caution,.attention)>:-moz-any(.admonition-title,summary):before{background-color:#ff9100;mask-image:var(--md-admonition-icon--warning)}.md-typeset :is(.warning,.caution,.attention)>:is(.admonition-title,summary):before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset :-webkit-any(.warning,.caution,.attention)>:-webkit-any(.admonition-title,summary):after{color:#ff9100}.md-typeset :-moz-any(.warning,.caution,.attention)>:-moz-any(.admonition-title,summary):after{color:#ff9100}.md-typeset :is(.warning,.caution,.attention)>:is(.admonition-title,summary):after{color:#ff9100}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :-moz-any(.admonition,details):-moz-any(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :is(.admonition,details):is(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :-webkit-any(.failure,.fail,.missing)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :-moz-any(.failure,.fail,.missing)>:-moz-any(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :is(.failure,.fail,.missing)>:is(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :-webkit-any(.failure,.fail,.missing)>:-webkit-any(.admonition-title,summary):before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset :-moz-any(.failure,.fail,.missing)>:-moz-any(.admonition-title,summary):before{background-color:#ff5252;mask-image:var(--md-admonition-icon--failure)}.md-typeset :is(.failure,.fail,.missing)>:is(.admonition-title,summary):before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset :-webkit-any(.failure,.fail,.missing)>:-webkit-any(.admonition-title,summary):after{color:#ff5252}.md-typeset :-moz-any(.failure,.fail,.missing)>:-moz-any(.admonition-title,summary):after{color:#ff5252}.md-typeset :is(.failure,.fail,.missing)>:is(.admonition-title,summary):after{color:#ff5252}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.danger,.error){border-color:#ff1744}.md-typeset :-moz-any(.admonition,details):-moz-any(.danger,.error){border-color:#ff1744}.md-typeset :is(.admonition,details):is(.danger,.error){border-color:#ff1744}.md-typeset :-webkit-any(.danger,.error)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :-moz-any(.danger,.error)>:-moz-any(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :is(.danger,.error)>:is(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :-webkit-any(.danger,.error)>:-webkit-any(.admonition-title,summary):before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset :-moz-any(.danger,.error)>:-moz-any(.admonition-title,summary):before{background-color:#ff1744;mask-image:var(--md-admonition-icon--danger)}.md-typeset :is(.danger,.error)>:is(.admonition-title,summary):before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset :-webkit-any(.danger,.error)>:-webkit-any(.admonition-title,summary):after{color:#ff1744}.md-typeset :-moz-any(.danger,.error)>:-moz-any(.admonition-title,summary):after{color:#ff1744}.md-typeset :is(.danger,.error)>:is(.admonition-title,summary):after{color:#ff1744}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.bug){border-color:#f50057}.md-typeset :-moz-any(.admonition,details):-moz-any(.bug){border-color:#f50057}.md-typeset :is(.admonition,details):is(.bug){border-color:#f50057}.md-typeset :-webkit-any(.bug)>:-webkit-any(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :-moz-any(.bug)>:-moz-any(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :is(.bug)>:is(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :-webkit-any(.bug)>:-webkit-any(.admonition-title,summary):before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset :-moz-any(.bug)>:-moz-any(.admonition-title,summary):before{background-color:#f50057;mask-image:var(--md-admonition-icon--bug)}.md-typeset :is(.bug)>:is(.admonition-title,summary):before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset :-webkit-any(.bug)>:-webkit-any(.admonition-title,summary):after{color:#f50057}.md-typeset :-moz-any(.bug)>:-moz-any(.admonition-title,summary):after{color:#f50057}.md-typeset :is(.bug)>:is(.admonition-title,summary):after{color:#f50057}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.example){border-color:#7c4dff}.md-typeset :-moz-any(.admonition,details):-moz-any(.example){border-color:#7c4dff}.md-typeset :is(.admonition,details):is(.example){border-color:#7c4dff}.md-typeset :-webkit-any(.example)>:-webkit-any(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :-moz-any(.example)>:-moz-any(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :is(.example)>:is(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :-webkit-any(.example)>:-webkit-any(.admonition-title,summary):before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset :-moz-any(.example)>:-moz-any(.admonition-title,summary):before{background-color:#7c4dff;mask-image:var(--md-admonition-icon--example)}.md-typeset :is(.example)>:is(.admonition-title,summary):before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset :-webkit-any(.example)>:-webkit-any(.admonition-title,summary):after{color:#7c4dff}.md-typeset :-moz-any(.example)>:-moz-any(.admonition-title,summary):after{color:#7c4dff}.md-typeset :is(.example)>:is(.admonition-title,summary):after{color:#7c4dff}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.quote,.cite){border-color:#9e9e9e}.md-typeset :-moz-any(.admonition,details):-moz-any(.quote,.cite){border-color:#9e9e9e}.md-typeset :is(.admonition,details):is(.quote,.cite){border-color:#9e9e9e}.md-typeset :-webkit-any(.quote,.cite)>:-webkit-any(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :-moz-any(.quote,.cite)>:-moz-any(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :is(.quote,.cite)>:is(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :-webkit-any(.quote,.cite)>:-webkit-any(.admonition-title,summary):before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset :-moz-any(.quote,.cite)>:-moz-any(.admonition-title,summary):before{background-color:#9e9e9e;mask-image:var(--md-admonition-icon--quote)}.md-typeset :is(.quote,.cite)>:is(.admonition-title,summary):before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset :-webkit-any(.quote,.cite)>:-webkit-any(.admonition-title,summary):after{color:#9e9e9e}.md-typeset :-moz-any(.quote,.cite)>:-moz-any(.admonition-title,summary):after{color:#9e9e9e}.md-typeset :is(.quote,.cite)>:is(.admonition-title,summary):after{color:#9e9e9e}:root{--md-footnotes-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}[dir=ltr] .md-typeset .footnote>ol{margin-left:0}[dir=rtl] .md-typeset .footnote>ol{margin-right:0}.md-typeset .footnote>ol>li{transition:color 125ms}.md-typeset .footnote>ol>li:target{color:var(--md-default-fg-color)}.md-typeset .footnote>ol>li:focus-within .footnote-backref{opacity:1;transform:translateX(0);transition:none}.md-typeset .footnote>ol>li:-webkit-any(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li:-moz-any(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li:is(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li>:first-child{margin-top:0}.md-typeset .footnote-ref{font-size:.75em;font-weight:700}html .md-typeset .footnote-ref{outline-offset:.1rem}.md-typeset [id^="fnref:"]:target>.footnote-ref{outline:auto}.md-typeset .footnote-backref{color:var(--md-typeset-a-color);display:inline-block;font-size:0;opacity:0;transform:translateX(.25rem);transition:color .25s,transform .25s .25s,opacity 125ms .25s;vertical-align:text-bottom}@media print{.md-typeset .footnote-backref{color:var(--md-typeset-a-color);opacity:1;transform:translateX(0)}}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-.25rem)}.md-typeset .footnote-backref:hover{color:var(--md-accent-fg-color)}.md-typeset .footnote-backref:before{background-color:currentcolor;content:"";display:inline-block;height:.8rem;-webkit-mask-image:var(--md-footnotes-icon);mask-image:var(--md-footnotes-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.8rem}[dir=rtl] .md-typeset .footnote-backref:before svg{transform:scaleX(-1)}[dir=ltr] .md-typeset .headerlink{margin-left:.5rem}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem}.md-typeset .headerlink{color:var(--md-default-fg-color--lighter);display:inline-block;opacity:0;transition:color .25s,opacity 125ms}@media print{.md-typeset .headerlink{display:none}}.md-typeset .headerlink:focus,.md-typeset :-webkit-any(:hover,:target)>.headerlink{opacity:1;-webkit-transition:color .25s,opacity 125ms;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset :-moz-any(:hover,:target)>.headerlink{opacity:1;-moz-transition:color .25s,opacity 125ms;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset :is(:hover,:target)>.headerlink{opacity:1;transition:color .25s,opacity 125ms}.md-typeset .headerlink:-webkit-any(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset .headerlink:-moz-any(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset .headerlink:is(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset :target{--md-scroll-margin:3.6rem;--md-scroll-offset:0rem;scroll-margin-top:calc(var(--md-scroll-margin) - var(--md-scroll-offset))}@media screen and (min-width:76.25em){.md-header--lifted~.md-container .md-typeset :target{--md-scroll-margin:6rem}}.md-typeset :-webkit-any(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset :-moz-any(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset :is(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset h4:target{--md-scroll-offset:0.15rem}.md-typeset div.arithmatex{overflow:auto}@media screen and (max-width:44.9375em){.md-typeset div.arithmatex{margin:0 -.8rem}}.md-typeset div.arithmatex>*{margin-left:auto!important;margin-right:auto!important;padding:0 .8rem;touch-action:auto;width:-webkit-min-content;width:-moz-min-content;width:min-content}.md-typeset div.arithmatex>* mjx-container{margin:0!important}.md-typeset :-webkit-any(del,ins,.comment).critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset :-moz-any(del,ins,.comment).critic{box-decoration-break:clone}.md-typeset :is(del,ins,.comment).critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset del.critic{background-color:var(--md-typeset-del-color)}.md-typeset ins.critic{background-color:var(--md-typeset-ins-color)}.md-typeset .critic.comment{color:var(--md-code-hl-comment-color)}.md-typeset .critic.comment:before{content:"/* "}.md-typeset .critic.comment:after{content:" */"}.md-typeset .critic.block{box-shadow:none;display:block;margin:1em 0;overflow:auto;padding-left:.8rem;padding-right:.8rem}.md-typeset .critic.block>:first-child{margin-top:.5em}.md-typeset .critic.block>:last-child{margin-bottom:.5em}:root{--md-details-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset details{display:flow-root;overflow:visible;padding-top:0}.md-typeset details[open]>summary:after{transform:rotate(90deg)}.md-typeset details:not([open]){box-shadow:none;padding-bottom:0}.md-typeset details:not([open])>summary{border-radius:.1rem}[dir=ltr] .md-typeset summary{padding-right:1.8rem}[dir=rtl] .md-typeset summary{padding-left:1.8rem}[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset summary{cursor:pointer;display:block;min-height:1rem}.md-typeset summary.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset summary:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[dir=ltr] .md-typeset summary:after{right:.4rem}[dir=rtl] .md-typeset summary:after{left:.4rem}.md-typeset summary:after{background-color:currentcolor;content:"";height:1rem;-webkit-mask-image:var(--md-details-icon);mask-image:var(--md-details-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;transform:rotate(0deg);transition:transform .25s;width:1rem}[dir=rtl] .md-typeset summary:after{transform:rotate(180deg)}.md-typeset summary::marker{display:none}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset :-webkit-any(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :-moz-any(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :is(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :-webkit-any(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.md-typeset :-moz-any(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.md-typeset :is(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.highlight :-webkit-any(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight :-moz-any(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight :is(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight .p{color:var(--md-code-hl-punctuation-color)}.highlight :-webkit-any(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :-moz-any(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :is(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :-webkit-any(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :-moz-any(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :is(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :-webkit-any(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :-moz-any(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :is(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :-webkit-any(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :-moz-any(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :is(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :-webkit-any(.kc,.n){color:var(--md-code-hl-name-color)}.highlight :-moz-any(.kc,.n){color:var(--md-code-hl-name-color)}.highlight :is(.kc,.n){color:var(--md-code-hl-name-color)}.highlight :-webkit-any(.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :-moz-any(.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :is(.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :-webkit-any(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :-moz-any(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :is(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :-webkit-any(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :-moz-any(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :is(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :-webkit-any(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :-moz-any(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :is(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :-webkit-any(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :-moz-any(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :is(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :-webkit-any(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :-moz-any(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :is(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :-webkit-any(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight :-moz-any(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight :is(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight .gd{background-color:var(--md-typeset-del-color)}.highlight .gi{background-color:var(--md-typeset-ins-color)}.highlight .hll{background-color:var(--md-code-hl-color);display:block;margin:0 -1.1764705882em;padding:0 1.1764705882em}.highlight span.filename{background-color:var(--md-code-bg-color);border-bottom:.05rem solid var(--md-default-fg-color--lightest);border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:flow-root;font-size:.85em;font-weight:700;margin-top:1em;padding:.6617647059em 1.1764705882em;position:relative}.highlight span.filename+pre{margin-top:0}.highlight span.filename+pre>code{border-top-left-radius:0;border-top-right-radius:0}.highlight [data-linenos]:before{background-color:var(--md-code-bg-color);box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;color:var(--md-default-fg-color--light);content:attr(data-linenos);float:left;left:-1.1764705882em;margin-left:-1.1764705882em;margin-right:1.1764705882em;padding-left:1.1764705882em;position:-webkit-sticky;position:sticky;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:3}.highlight code a[id]{position:absolute;visibility:hidden}.highlight code[data-md-copying] .hll{display:contents}.highlight code[data-md-copying] .md-annotation{display:none}.highlighttable{display:flow-root}.highlighttable :-webkit-any(tbody,td){display:block;padding:0}.highlighttable :-moz-any(tbody,td){display:block;padding:0}.highlighttable :is(tbody,td){display:block;padding:0}.highlighttable tr{display:flex}.highlighttable pre{margin:0}.highlighttable th.filename{flex-grow:1;padding:0;text-align:left}.highlighttable th.filename span.filename{margin-top:0}.highlighttable .linenos{background-color:var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-top-left-radius:.1rem;font-size:.85em;padding:.7720588235em 0 .7720588235em 1.1764705882em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.highlighttable .linenodiv{box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;padding-right:.5882352941em}.highlighttable .linenodiv pre{color:var(--md-default-fg-color--light);text-align:right}.highlighttable .code{flex:1;min-width:0}.linenodiv a{color:inherit}.md-typeset .highlighttable{direction:ltr;margin:1em 0}.md-typeset .highlighttable>tbody>tr>.code>div>pre>code{border-bottom-left-radius:0;border-top-left-radius:0}.md-typeset .highlight+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset .highlight+.result:after{clear:both;content:"";display:block}@media screen and (max-width:44.9375em){.md-content__inner>.highlight{margin:1em -.8rem}.md-content__inner>.highlight>.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.code>div>pre>code,.md-content__inner>.highlight>.highlighttable>tbody>tr>.filename span.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.linenos,.md-content__inner>.highlight>pre>code{border-radius:0}.md-content__inner>.highlight+.result{border-left-width:0;border-radius:0;border-right-width:0;margin-left:-.8rem;margin-right:-.8rem}}.md-typeset .keys kbd:-webkit-any(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys kbd:-moz-any(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys kbd:is(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys span{color:var(--md-default-fg-color--light);padding:0 .2em}.md-typeset .keys .key-alt:before,.md-typeset .keys .key-left-alt:before,.md-typeset .keys .key-right-alt:before{content:"⎇";padding-right:.4em}.md-typeset .keys .key-command:before,.md-typeset .keys .key-left-command:before,.md-typeset .keys .key-right-command:before{content:"⌘";padding-right:.4em}.md-typeset .keys .key-control:before,.md-typeset .keys .key-left-control:before,.md-typeset .keys .key-right-control:before{content:"⌃";padding-right:.4em}.md-typeset .keys .key-left-meta:before,.md-typeset .keys .key-meta:before,.md-typeset .keys .key-right-meta:before{content:"◆";padding-right:.4em}.md-typeset .keys .key-left-option:before,.md-typeset .keys .key-option:before,.md-typeset .keys .key-right-option:before{content:"⌥";padding-right:.4em}.md-typeset .keys .key-left-shift:before,.md-typeset .keys .key-right-shift:before,.md-typeset .keys .key-shift:before{content:"⇧";padding-right:.4em}.md-typeset .keys .key-left-super:before,.md-typeset .keys .key-right-super:before,.md-typeset .keys .key-super:before{content:"❖";padding-right:.4em}.md-typeset .keys .key-left-windows:before,.md-typeset .keys .key-right-windows:before,.md-typeset .keys .key-windows:before{content:"⊞";padding-right:.4em}.md-typeset .keys .key-arrow-down:before{content:"↓";padding-right:.4em}.md-typeset .keys .key-arrow-left:before{content:"←";padding-right:.4em}.md-typeset .keys .key-arrow-right:before{content:"→";padding-right:.4em}.md-typeset .keys .key-arrow-up:before{content:"↑";padding-right:.4em}.md-typeset .keys .key-backspace:before{content:"⌫";padding-right:.4em}.md-typeset .keys .key-backtab:before{content:"⇤";padding-right:.4em}.md-typeset .keys .key-caps-lock:before{content:"⇪";padding-right:.4em}.md-typeset .keys .key-clear:before{content:"⌧";padding-right:.4em}.md-typeset .keys .key-context-menu:before{content:"☰";padding-right:.4em}.md-typeset .keys .key-delete:before{content:"⌦";padding-right:.4em}.md-typeset .keys .key-eject:before{content:"⏏";padding-right:.4em}.md-typeset .keys .key-end:before{content:"⤓";padding-right:.4em}.md-typeset .keys .key-escape:before{content:"⎋";padding-right:.4em}.md-typeset .keys .key-home:before{content:"⤒";padding-right:.4em}.md-typeset .keys .key-insert:before{content:"⎀";padding-right:.4em}.md-typeset .keys .key-page-down:before{content:"⇟";padding-right:.4em}.md-typeset .keys .key-page-up:before{content:"⇞";padding-right:.4em}.md-typeset .keys .key-print-screen:before{content:"⎙";padding-right:.4em}.md-typeset .keys .key-tab:after{content:"⇥";padding-left:.4em}.md-typeset .keys .key-num-enter:after{content:"⌤";padding-left:.4em}.md-typeset .keys .key-enter:after{content:"⏎";padding-left:.4em}:root{--md-tabbed-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-tabbed-icon--next:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .tabbed-set{border-radius:.1rem;display:flex;flex-flow:column wrap;margin:1em 0;position:relative}.md-typeset .tabbed-set>input{height:0;opacity:0;position:absolute;width:0}.md-typeset .tabbed-set>input:target{--md-scroll-offset:0.625em}.md-typeset .tabbed-labels{-ms-overflow-style:none;box-shadow:0 -.05rem var(--md-default-fg-color--lightest) inset;display:flex;max-width:100%;overflow:auto;scrollbar-width:none}@media print{.md-typeset .tabbed-labels{display:contents}}@media screen{.js .md-typeset .tabbed-labels{position:relative}.js .md-typeset .tabbed-labels:before{background:var(--md-accent-fg-color);bottom:0;content:"";display:block;height:2px;left:0;position:absolute;transform:translateX(var(--md-indicator-x));transition:width 225ms,transform .25s;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--md-indicator-width)}}.md-typeset .tabbed-labels::-webkit-scrollbar{display:none}.md-typeset .tabbed-labels>label{border-bottom:.1rem solid transparent;border-radius:.1rem .1rem 0 0;color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;font-size:.64rem;font-weight:700;padding:.78125em 1.25em .625em;scroll-margin-inline-start:1rem;transition:background-color .25s,color .25s;white-space:nowrap;width:auto}@media print{.md-typeset .tabbed-labels>label:first-child{order:1}.md-typeset .tabbed-labels>label:nth-child(2){order:2}.md-typeset .tabbed-labels>label:nth-child(3){order:3}.md-typeset .tabbed-labels>label:nth-child(4){order:4}.md-typeset .tabbed-labels>label:nth-child(5){order:5}.md-typeset .tabbed-labels>label:nth-child(6){order:6}.md-typeset .tabbed-labels>label:nth-child(7){order:7}.md-typeset .tabbed-labels>label:nth-child(8){order:8}.md-typeset .tabbed-labels>label:nth-child(9){order:9}.md-typeset .tabbed-labels>label:nth-child(10){order:10}.md-typeset .tabbed-labels>label:nth-child(11){order:11}.md-typeset .tabbed-labels>label:nth-child(12){order:12}.md-typeset .tabbed-labels>label:nth-child(13){order:13}.md-typeset .tabbed-labels>label:nth-child(14){order:14}.md-typeset .tabbed-labels>label:nth-child(15){order:15}.md-typeset .tabbed-labels>label:nth-child(16){order:16}.md-typeset .tabbed-labels>label:nth-child(17){order:17}.md-typeset .tabbed-labels>label:nth-child(18){order:18}.md-typeset .tabbed-labels>label:nth-child(19){order:19}.md-typeset .tabbed-labels>label:nth-child(20){order:20}}.md-typeset .tabbed-labels>label:hover{color:var(--md-accent-fg-color)}.md-typeset .tabbed-content{width:100%}@media print{.md-typeset .tabbed-content{display:contents}}.md-typeset .tabbed-block{display:none}@media print{.md-typeset .tabbed-block{display:block}.md-typeset .tabbed-block:first-child{order:1}.md-typeset .tabbed-block:nth-child(2){order:2}.md-typeset .tabbed-block:nth-child(3){order:3}.md-typeset .tabbed-block:nth-child(4){order:4}.md-typeset .tabbed-block:nth-child(5){order:5}.md-typeset .tabbed-block:nth-child(6){order:6}.md-typeset .tabbed-block:nth-child(7){order:7}.md-typeset .tabbed-block:nth-child(8){order:8}.md-typeset .tabbed-block:nth-child(9){order:9}.md-typeset .tabbed-block:nth-child(10){order:10}.md-typeset .tabbed-block:nth-child(11){order:11}.md-typeset .tabbed-block:nth-child(12){order:12}.md-typeset .tabbed-block:nth-child(13){order:13}.md-typeset .tabbed-block:nth-child(14){order:14}.md-typeset .tabbed-block:nth-child(15){order:15}.md-typeset .tabbed-block:nth-child(16){order:16}.md-typeset .tabbed-block:nth-child(17){order:17}.md-typeset .tabbed-block:nth-child(18){order:18}.md-typeset .tabbed-block:nth-child(19){order:19}.md-typeset .tabbed-block:nth-child(20){order:20}}.md-typeset .tabbed-block>.highlight:first-child>pre,.md-typeset .tabbed-block>pre:first-child{margin:0}.md-typeset .tabbed-block>.highlight:first-child>pre>code,.md-typeset .tabbed-block>pre:first-child>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child>.filename{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable{margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.filename span.filename,.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.linenos{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.code>div>pre>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child+.result{margin-top:-.125em}.md-typeset .tabbed-block>.tabbed-set{margin:0}.md-typeset .tabbed-button{align-self:center;border-radius:100%;color:var(--md-default-fg-color--light);cursor:pointer;display:block;height:.9rem;margin-top:.1rem;pointer-events:auto;transition:background-color .25s;width:.9rem}.md-typeset .tabbed-button:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .tabbed-button:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-tabbed-icon--prev);mask-image:var(--md-tabbed-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color .25s,transform .25s;width:100%}.md-typeset .tabbed-control{background:linear-gradient(to right,var(--md-default-bg-color) 60%,transparent);display:flex;height:1.9rem;justify-content:start;pointer-events:none;position:absolute;transition:opacity 125ms;width:1.2rem}[dir=rtl] .md-typeset .tabbed-control{transform:rotate(180deg)}.md-typeset .tabbed-control[hidden]{opacity:0}.md-typeset .tabbed-control--next{background:linear-gradient(to left,var(--md-default-bg-color) 60%,transparent);justify-content:end;right:0}.md-typeset .tabbed-control--next .tabbed-button:after{-webkit-mask-image:var(--md-tabbed-icon--next);mask-image:var(--md-tabbed-icon--next)}@media screen and (max-width:44.9375em){[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels{margin:0 -.8rem;max-width:100vw;scroll-padding-inline-start:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels:after{content:""}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-left:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-right:-.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{width:2rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-right:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-left:-.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{width:2rem}}@media screen{.md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){color:var(--md-accent-fg-color)}.md-typeset .no-js .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .no-js .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .no-js .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .no-js .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .no-js .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .no-js .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .no-js .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .no-js .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .no-js .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .no-js .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .no-js .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .no-js .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .no-js .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .no-js .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .no-js .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .no-js .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .no-js .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .no-js .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .no-js .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .no-js .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),.no-js .md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.no-js .md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.no-js .md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.no-js .md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.no-js .md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.no-js .md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.no-js .md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.no-js .md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.no-js .md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.no-js .md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.no-js .md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.no-js .md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.no-js .md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.no-js .md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.no-js .md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.no-js .md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.no-js .md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.no-js .md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.no-js .md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.no-js .md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){border-color:var(--md-accent-fg-color)}}.md-typeset .tabbed-set>input:first-child.focus-visible~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10).focus-visible~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11).focus-visible~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12).focus-visible~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13).focus-visible~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14).focus-visible~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15).focus-visible~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16).focus-visible~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17).focus-visible~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18).focus-visible~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19).focus-visible~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2).focus-visible~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20).focus-visible~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3).focus-visible~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4).focus-visible~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5).focus-visible~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6).focus-visible~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7).focus-visible~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8).focus-visible~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9).focus-visible~.tabbed-labels>:nth-child(9){background-color:var(--md-accent-fg-color--transparent)}.md-typeset .tabbed-set>input:first-child:checked~.tabbed-content>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-content>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-content>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-content>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-content>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-content>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-content>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-content>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-content>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-content>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-content>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-content>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-content>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-content>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-content>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-content>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-content>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-content>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-content>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-content>:nth-child(9){display:block}:root{--md-tasklist-icon:url('data:image/svg+xml;charset=utf-8,');--md-tasklist-icon--checked:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .task-list-item{list-style-type:none;position:relative}[dir=ltr] .md-typeset .task-list-item [type=checkbox]{left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}[dir=ltr] .md-typeset .task-list-indicator:before{left:-1.5em}[dir=rtl] .md-typeset .task-list-indicator:before{right:-1.5em}.md-typeset .task-list-indicator:before{background-color:var(--md-default-fg-color--lightest);content:"";height:1.25em;-webkit-mask-image:var(--md-tasklist-icon);mask-image:var(--md-tasklist-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.15em;width:1.25em}.md-typeset [type=checkbox]:checked+.task-list-indicator:before{background-color:#00e676;-webkit-mask-image:var(--md-tasklist-icon--checked);mask-image:var(--md-tasklist-icon--checked)}:root>*{--md-mermaid-font-family:var(--md-text-font-family),sans-serif;--md-mermaid-edge-color:var(--md-code-fg-color);--md-mermaid-node-bg-color:var(--md-accent-fg-color--transparent);--md-mermaid-node-fg-color:var(--md-accent-fg-color);--md-mermaid-label-bg-color:var(--md-default-bg-color);--md-mermaid-label-fg-color:var(--md-code-fg-color)}.mermaid{line-height:normal;margin:1em 0}@media screen and (min-width:45em){[dir=ltr] .md-typeset .inline{float:left}[dir=rtl] .md-typeset .inline{float:right}[dir=ltr] .md-typeset .inline{margin-right:.8rem}[dir=rtl] .md-typeset .inline{margin-left:.8rem}.md-typeset .inline{margin-bottom:.8rem;margin-top:0;width:11.7rem}[dir=ltr] .md-typeset .inline.end{float:right}[dir=rtl] .md-typeset .inline.end{float:left}[dir=ltr] .md-typeset .inline.end{margin-left:.8rem;margin-right:0}[dir=rtl] .md-typeset .inline.end{margin-left:0;margin-right:.8rem}} \ No newline at end of file diff --git a/assets/stylesheets/main.20d9efc8.min.css.map b/assets/stylesheets/main.20d9efc8.min.css.map new file mode 100644 index 0000000..5247bac --- /dev/null +++ b/assets/stylesheets/main.20d9efc8.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["src/assets/stylesheets/main/extensions/pymdownx/_keys.scss","../../../src/assets/stylesheets/main.scss","src/assets/stylesheets/main/_resets.scss","src/assets/stylesheets/main/_colors.scss","src/assets/stylesheets/main/_icons.scss","src/assets/stylesheets/main/_typeset.scss","src/assets/stylesheets/utilities/_break.scss","src/assets/stylesheets/main/layout/_banner.scss","src/assets/stylesheets/main/layout/_base.scss","src/assets/stylesheets/main/layout/_clipboard.scss","src/assets/stylesheets/main/layout/_consent.scss","src/assets/stylesheets/main/layout/_content.scss","src/assets/stylesheets/main/layout/_dialog.scss","src/assets/stylesheets/main/layout/_feedback.scss","src/assets/stylesheets/main/layout/_footer.scss","src/assets/stylesheets/main/layout/_form.scss","src/assets/stylesheets/main/layout/_header.scss","src/assets/stylesheets/main/layout/_nav.scss","src/assets/stylesheets/main/layout/_search.scss","src/assets/stylesheets/main/layout/_select.scss","src/assets/stylesheets/main/layout/_sidebar.scss","src/assets/stylesheets/main/layout/_source.scss","src/assets/stylesheets/main/layout/_tabs.scss","src/assets/stylesheets/main/layout/_tag.scss","src/assets/stylesheets/main/layout/_tooltip.scss","src/assets/stylesheets/main/layout/_top.scss","src/assets/stylesheets/main/layout/_version.scss","src/assets/stylesheets/main/extensions/markdown/_admonition.scss","node_modules/material-design-color/material-color.scss","src/assets/stylesheets/main/extensions/markdown/_footnotes.scss","src/assets/stylesheets/main/extensions/markdown/_toc.scss","src/assets/stylesheets/main/extensions/pymdownx/_arithmatex.scss","src/assets/stylesheets/main/extensions/pymdownx/_critic.scss","src/assets/stylesheets/main/extensions/pymdownx/_details.scss","src/assets/stylesheets/main/extensions/pymdownx/_emoji.scss","src/assets/stylesheets/main/extensions/pymdownx/_highlight.scss","src/assets/stylesheets/main/extensions/pymdownx/_tabbed.scss","src/assets/stylesheets/main/extensions/pymdownx/_tasklist.scss","src/assets/stylesheets/main/integrations/_mermaid.scss","src/assets/stylesheets/main/_modifiers.scss"],"names":[],"mappings":"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FJ,C0B10FE,iEACE,oB1By0FJ,C0B10FE,qDACE,oB1By0FJ,C0Br0FE,8EACE,mC1Bw0FJ,C0Bz0FE,wEACE,mC1Bw0FJ,C0Bz0FE,4DACE,mC1Bw0FJ,C0Br0FI,qFACE,wBAnBG,CAoBH,kDAAA,CAAA,0C1Bu0FN,C0Bz0FI,+EACE,wBAnBG,CAoBH,0C1Bu0FN,C0Bz0FI,mEACE,wBAnBG,CAoBH,kDAAA,CAAA,0C1Bu0FN,C0Bn0FI,oFACE,a1Bq0FN,C0Bt0FI,8EACE,a1Bq0FN,C0Bt0FI,kEACE,a1Bq0FN,C0Br1FE,iFACE,oB1Bw1FJ,C0Bz1FE,2EACE,oB1Bw1FJ,C0Bz1FE,+DACE,oB1Bw1FJ,C0Bp1FE,wFACE,mC1Bu1FJ,C0Bx1FE,kFACE,mC1Bu1FJ,C0Bx1FE,sEACE,mC1Bu1FJ,C0Bp1FI,+FACE,wBAnBG,CAoBH,iDAAA,CAAA,yC1Bs1FN,C0Bx1FI,yFACE,wBAnBG,CAoBH,yC1Bs1FN,C0Bx1FI,6EACE,wBAnBG,CAoBH,iDAAA,CAAA,yC1Bs1FN,C0Bl1FI,8FACE,a1Bo1FN,C0Br1FI,wFACE,a1Bo1FN,C0Br1FI,4EACE,a1Bo1FN,C0Bp2FE,iFACE,oB1Bu2FJ,C0Bx2FE,2EACE,oB1Bu2FJ,C0Bx2FE,+DACE,oB1Bu2FJ,C0Bn2FE,wFACE,kC1Bs2FJ,C0Bv2FE,kFACE,kC1Bs2FJ,C0Bv2FE,sEACE,kC1Bs2FJ,C0Bn2FI,+FACE,wBAnBG,CAoBH,qDAAA,CAAA,6C1Bq2FN,C0Bv2FI,yFACE,wBAnBG,CAoBH,6C1Bq2FN,C0Bv2FI,6EACE,wBAnBG,CAoBH,qDAAA,CAAA,6C1Bq2FN,C0Bj2FI,8FACE,a1Bm2FN,C0Bp2FI,wFACE,a1Bm2FN,C0Bp2FI,4EACE,a1Bm2FN,C0Bn3FE,gFACE,oB1Bs3FJ,C0Bv3FE,0EACE,oB1Bs3FJ,C0Bv3FE,8DACE,oB1Bs3FJ,C0Bl3FE,uFACE,oC1Bq3FJ,C0Bt3FE,iFACE,oC1Bq3FJ,C0Bt3FE,qEACE,oC1Bq3FJ,C0Bl3FI,8FACE,wBAnBG,CAoBH,sDAAA,CAAA,8C1Bo3FN,C0Bt3FI,wFACE,wBAnBG,CAoBH,8C1Bo3FN,C0Bt3FI,4EACE,wBAnBG,CAoBH,sDAAA,CAAA,8C1Bo3FN,C0Bh3FI,6FACE,a1Bk3FN,C0Bn3FI,uFACE,a1Bk3FN,C0Bn3FI,2EACE,a1Bk3FN,C0Bl4FE,wFACE,oB1Bq4FJ,C0Bt4FE,kFACE,oB1Bq4FJ,C0Bt4FE,sEACE,oB1Bq4FJ,C0Bj4FE,+FACE,mC1Bo4FJ,C0Br4FE,yFACE,mC1Bo4FJ,C0Br4FE,6EACE,mC1Bo4FJ,C0Bj4FI,sGACE,wBAnBG,CAoBH,qDAAA,CAAA,6C1Bm4FN,C0Br4FI,gGACE,wBAnBG,CAoBH,6C1Bm4FN,C0Br4FI,oFACE,wBAnBG,CAoBH,qDAAA,CAAA,6C1Bm4FN,C0B/3FI,qGACE,a1Bi4FN,C0Bl4FI,+FACE,a1Bi4FN,C0Bl4FI,mFACE,a1Bi4FN,C0Bj5FE,mFACE,oB1Bo5FJ,C0Br5FE,6EACE,oB1Bo5FJ,C0Br5FE,iEACE,oB1Bo5FJ,C0Bh5FE,0FACE,mC1Bm5FJ,C0Bp5FE,oFACE,mC1Bm5FJ,C0Bp5FE,wEACE,mC1Bm5FJ,C0Bh5FI,iGACE,wBAnBG,CAoBH,qDAAA,CAAA,6C1Bk5FN,C0Bp5FI,2FACE,wBAnBG,CAoBH,6C1Bk5FN,C0Bp5FI,+EACE,wBAnBG,CAoBH,qDAAA,CAAA,6C1Bk5FN,C0B94FI,gGACE,a1Bg5FN,C0Bj5FI,0FACE,a1Bg5FN,C0Bj5FI,8EACE,a1Bg5FN,C0Bh6FE,0EACE,oB1Bm6FJ,C0Bp6FE,oEACE,oB1Bm6FJ,C0Bp6FE,wDACE,oB1Bm6FJ,C0B/5FE,iFACE,mC1Bk6FJ,C0Bn6FE,2EACE,mC1Bk6FJ,C0Bn6FE,+DACE,mC1Bk6FJ,C0B/5FI,wFACE,wBAnBG,CAoBH,oDAAA,CAAA,4C1Bi6FN,C0Bn6FI,kFACE,wBAnBG,CAoBH,4C1Bi6FN,C0Bn6FI,sEACE,wBAnBG,CAoBH,oDAAA,CAAA,4C1Bi6FN,C0B75FI,uFACE,a1B+5FN,C0Bh6FI,iFACE,a1B+5FN,C0Bh6FI,qEACE,a1B+5FN,C0B/6FE,gEACE,oB1Bk7FJ,C0Bn7FE,0DACE,oB1Bk7FJ,C0Bn7FE,8CACE,oB1Bk7FJ,C0B96FE,uEACE,kC1Bi7FJ,C0Bl7FE,iEACE,kC1Bi7FJ,C0Bl7FE,qDACE,kC1Bi7FJ,C0B96FI,8EACE,wBAnBG,CAoBH,iDAAA,CAAA,yC1Bg7FN,C0Bl7FI,wEACE,wBAnBG,CAoBH,yC1Bg7FN,C0Bl7FI,4DACE,wBAnBG,CAoBH,iDAAA,CAAA,yC1Bg7FN,C0B56FI,6EACE,a1B86FN,C0B/6FI,uEACE,a1B86FN,C0B/6FI,2DACE,a1B86FN,C0B97FE,oEACE,oB1Bi8FJ,C0Bl8FE,8DACE,oB1Bi8FJ,C0Bl8FE,kDACE,oB1Bi8FJ,C0B77FE,2EACE,oC1Bg8FJ,C0Bj8FE,qEACE,oC1Bg8FJ,C0Bj8FE,yDACE,oC1Bg8FJ,C0B77FI,kFACE,wBAnBG,CAoBH,qDAAA,CAAA,6C1B+7FN,C0Bj8FI,4EACE,wBAnBG,CAoBH,6C1B+7FN,C0Bj8FI,gEACE,wBAnBG,CAoBH,qDAAA,CAAA,6C1B+7FN,C0B37FI,iFACE,a1B67FN,C0B97FI,2EACE,a1B67FN,C0B97FI,+DACE,a1B67FN,C0B78FE,wEACE,oB1Bg9FJ,C0Bj9FE,kEACE,oB1Bg9FJ,C0Bj9FE,sDACE,oB1Bg9FJ,C0B58FE,+EACE,kC1B+8FJ,C0Bh9FE,yEACE,kC1B+8FJ,C0Bh9FE,6DACE,kC1B+8FJ,C0B58FI,sFACE,wBAnBG,CAoBH,mDAAA,CAAA,2C1B88FN,C0Bh9FI,gFACE,wBAnBG,CAoBH,2C1B88FN,C0Bh9FI,oEACE,wBAnBG,CAoBH,mDAAA,CAAA,2C1B88FN,C0B18FI,qFACE,a1B48FN,C0B78FI,+EACE,a1B48FN,C0B78FI,mEACE,a1B48FN,C4B9mGA,MACE,wM5BinGF,C4BxmGE,sBACE,uCAAA,CACA,gB5B2mGJ,C4BxmGI,mCACE,a5B0mGN,C4B3mGI,mCACE,c5B0mGN,C4BtmGM,4BACE,sB5BwmGR,C4BrmGQ,mCACE,gC5BumGV,C4BnmGQ,2DAEE,SAAA,CADA,uBAAA,CAEA,e5BqmGV,C4BjmGQ,0EAEE,SAAA,CADA,uB5BomGV,C4BrmGQ,uEAEE,SAAA,CADA,uB5BomGV,C4BrmGQ,iEAEE,SAAA,CADA,u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J,CkCz1GE,6BACE,sClCw1GJ,CkCz1GE,uBACE,sClCw1GJ,CkCr1GE,cACE,yClCu1GJ,CkC30GE,4DACE,oClC60GJ,CkC90GE,yDACE,oClC60GJ,CkC90GE,mDACE,oClC60GJ,CkCr0GE,6CACE,qClCu0GJ,CkCx0GE,0CACE,qClCu0GJ,CkCx0GE,oCACE,qClCu0GJ,CkC7zGE,oDACE,oClC+zGJ,CkCh0GE,iDACE,oClC+zGJ,CkCh0GE,2CACE,oClC+zGJ,CkCtzGE,gDACE,qClCwzGJ,CkCzzGE,6CACE,qClCwzGJ,CkCzzGE,uCACE,qClCwzGJ,CkCnzGE,gCACE,kClCqzGJ,CkCtzGE,6BACE,kClCqzGJ,CkCtzGE,uBACE,kClCqzGJ,CkC/yGE,qCACE,sClCizGJ,CkClzGE,kCACE,sClCizGJ,CkClzGE,4BACE,sClCizGJ,CkC1yGE,yCACE,sClC4yGJ,CkC7yGE,sCACE,sClC4yGJ,CkC7yGE,gCACE,sClC4yGJ,CkCryGE,yCACE,qClCuyGJ,CkCxyGE,sCACE,qClCuyGJ,CkCxyGE,gCACE,qClCuyGJ,CkC9xGE,gDACE,qClCgyGJ,CkCjyGE,6CACE,qClCgyGJ,CkCjyGE,uCACE,qClCgyGJ,CkCxxGE,6CACE,sClC0xGJ,CkC3xGE,0CACE,sClC0xGJ,CkC3xGE,oCACE,sClC0xGJ,CkC/wGE,yDACE,qClCixGJ,CkClxGE,sDACE,qClCixGJ,CkClxGE,gDACE,qClCixGJ,CkC5wGE,iCAGE,mBAAA,CAFA,gBAAA,CACA,gBlC+wGJ,CkCjxGE,8BAGE,mBAAA,CAFA,gBAAA,CACA,gBlC+wGJ,CkCjxGE,wBAGE,mBAAA,CAFA,gBAAA,CACA,gBlC+wGJ,CkC3wGE,eACE,4ClC6wGJ,CkC1wGE,eACE,4ClC4wGJ,CkCxwGE,gBAIE,wCAAA,CAHA,aAAA,CACA,wBAAA,CACA,wBlC2wGJ,CkCtwGE,yBAOE,wCAAA,CACA,+DAAA,CACA,4BAAA,CACA,6BAAA,CARA,iBAAA,CAIA,eAAA,CADA,eAAA,CAFA,cAAA,CACA,oCAAA,CAHA,iBlCixGJ,CkCrwGI,6BACE,YlCu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","file":"main.css"} \ No newline at end of file diff --git a/assets/stylesheets/main.69437709.min.css b/assets/stylesheets/main.69437709.min.css deleted file mode 100644 index 702d013..0000000 --- a/assets/stylesheets/main.69437709.min.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box}*,:after,:before{box-sizing:inherit}@media (prefers-reduced-motion){*,:after,:before{transition:none!important}}body{margin:0}a,button,input,label{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}hr{border:0;box-sizing:initial;display:block;height:.05rem;overflow:visible;padding:0}small{font-size:80%}sub,sup{line-height:1em}img{border-style:none}table{border-collapse:initial;border-spacing:0}td,th{font-weight:400;vertical-align:top}button{background:transparent;border:0;font-family:inherit;font-size:inherit;margin:0;padding:0}input{border:0;outline:none}:root,[data-md-color-scheme=default]{--md-default-fg-color:rgba(0,0,0,.87);--md-default-fg-color--light:rgba(0,0,0,.54);--md-default-fg-color--lighter:rgba(0,0,0,.32);--md-default-fg-color--lightest:rgba(0,0,0,.07);--md-default-bg-color:#fff;--md-default-bg-color--light:hsla(0,0%,100%,.7);--md-default-bg-color--lighter:hsla(0,0%,100%,.3);--md-default-bg-color--lightest:hsla(0,0%,100%,.12);--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:rgba(82,108,254,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7);--md-code-fg-color:#36464e;--md-code-bg-color:#f5f5f5;--md-code-hl-color:rgba(255,255,0,.5);--md-code-hl-number-color:#d52a2a;--md-code-hl-special-color:#db1457;--md-code-hl-function-color:#a846b9;--md-code-hl-constant-color:#6e59d9;--md-code-hl-keyword-color:#3f6ec6;--md-code-hl-string-color:#1c7d4d;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-mark-color:rgba(255,255,0,.5);--md-typeset-del-color:rgba(245,80,61,.15);--md-typeset-ins-color:rgba(11,213,112,.15);--md-typeset-kbd-color:#fafafa;--md-typeset-kbd-accent-color:#fff;--md-typeset-kbd-border-color:#b8b8b8;--md-typeset-table-color:rgba(0,0,0,.12);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-fg-color:#fff;--md-footer-fg-color--light:hsla(0,0%,100%,.7);--md-footer-fg-color--lighter:hsla(0,0%,100%,.3);--md-footer-bg-color:rgba(0,0,0,.87);--md-footer-bg-color--dark:rgba(0,0,0,.32);--md-shadow-z1:0 0.2rem 0.5rem rgba(0,0,0,.05),0 0 0.05rem rgba(0,0,0,.1);--md-shadow-z2:0 0.2rem 0.5rem rgba(0,0,0,.1),0 0 0.05rem rgba(0,0,0,.25);--md-shadow-z3:0 0.2rem 0.5rem rgba(0,0,0,.2),0 0 0.05rem rgba(0,0,0,.35)}.md-icon svg{fill:currentcolor;display:block;height:1.2rem;width:1.2rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--md-text-font-family:var(--md-text-font,_),-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;--md-code-font-family:var(--md-code-font,_),SFMono-Regular,Consolas,Menlo,monospace}body,input{font-feature-settings:"kern","liga";font-family:var(--md-text-font-family)}body,code,input,kbd,pre{color:var(--md-typeset-color)}code,kbd,pre{font-feature-settings:"kern";font-family:var(--md-code-font-family)}:root{--md-typeset-table-sort-icon:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--asc:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--desc:url('data:image/svg+xml;charset=utf-8,')}.md-typeset{-webkit-print-color-adjust:exact;color-adjust:exact;font-size:.8rem;line-height:1.6}@media print{.md-typeset{font-size:.68rem}}.md-typeset blockquote,.md-typeset dl,.md-typeset figure,.md-typeset ol,.md-typeset pre,.md-typeset ul{margin-bottom:1em;margin-top:1em}.md-typeset h1{color:var(--md-default-fg-color--light);font-size:2em;line-height:1.3;margin:0 0 1.25em}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{font-size:1.5625em;line-height:1.4;margin:1.6em 0 .64em}.md-typeset h3{font-size:1.25em;font-weight:400;letter-spacing:-.01em;line-height:1.5;margin:1.6em 0 .8em}.md-typeset h2+h3{margin-top:.8em}.md-typeset h4{font-weight:700;letter-spacing:-.01em;margin:1em 0}.md-typeset h5,.md-typeset h6{color:var(--md-default-fg-color--light);font-size:.8em;font-weight:700;letter-spacing:-.01em;margin:1.25em 0}.md-typeset h5{text-transform:uppercase}.md-typeset hr{border-bottom:.05rem solid var(--md-default-fg-color--lightest);display:flow-root;margin:1.5em 0}.md-typeset a{color:var(--md-typeset-a-color);word-break:break-word}.md-typeset a,.md-typeset a:before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset a:focus code,.md-typeset a:hover code{background-color:var(--md-accent-fg-color--transparent)}.md-typeset a code{color:currentcolor;transition:background-color 125ms}.md-typeset a.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset code,.md-typeset kbd,.md-typeset pre{color:var(--md-code-fg-color);direction:ltr}@media print{.md-typeset code,.md-typeset kbd,.md-typeset pre{white-space:pre-wrap}}.md-typeset code{background-color:var(--md-code-bg-color);border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em;padding:0 .2941176471em;word-break:break-word}.md-typeset code:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-typeset pre{display:flow-root;line-height:1.4;position:relative}.md-typeset pre>code{-webkit-box-decoration-break:slice;box-decoration-break:slice;box-shadow:none;display:block;margin:0;outline-color:var(--md-accent-fg-color);overflow:auto;padding:.7720588235em 1.1764705882em;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin;touch-action:auto;word-break:normal}.md-typeset pre>code:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-typeset pre>code::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset kbd{background-color:var(--md-typeset-kbd-color);border-radius:.1rem;box-shadow:0 .1rem 0 .05rem var(--md-typeset-kbd-border-color),0 .1rem 0 var(--md-typeset-kbd-border-color),0 -.1rem .2rem var(--md-typeset-kbd-accent-color) inset;color:var(--md-default-fg-color);display:inline-block;font-size:.75em;padding:0 .6666666667em;vertical-align:text-top;word-break:break-word}.md-typeset mark{background-color:var(--md-typeset-mark-color);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:inherit;word-break:break-word}.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light);cursor:help;text-decoration:none}@media (hover:none){.md-typeset abbr{position:relative}.md-typeset abbr[title]:-webkit-any(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:-webkit-max-content;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}.md-typeset abbr[title]:-moz-any(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:-moz-max-content;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}[dir=ltr] .md-typeset abbr[title]:-webkit-any(:focus,:hover):after{left:0}[dir=ltr] .md-typeset abbr[title]:-moz-any(:focus,:hover):after{left:0}[dir=ltr] .md-typeset abbr[title]:is(:focus,:hover):after{left:0}[dir=rtl] .md-typeset abbr[title]:-webkit-any(:focus,:hover):after{right:0}[dir=rtl] .md-typeset abbr[title]:-moz-any(:focus,:hover):after{right:0}[dir=rtl] .md-typeset abbr[title]:is(:focus,:hover):after{right:0}.md-typeset abbr[title]:is(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}}.md-typeset small{opacity:.75}[dir=ltr] .md-typeset sub,[dir=ltr] .md-typeset sup{margin-left:.078125em}[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{margin-right:.078125em}[dir=ltr] .md-typeset blockquote{padding-left:.6rem}[dir=rtl] .md-typeset blockquote{padding-right:.6rem}[dir=ltr] .md-typeset blockquote{border-left:.2rem solid var(--md-default-fg-color--lighter)}[dir=rtl] .md-typeset blockquote{border-right:.2rem solid var(--md-default-fg-color--lighter)}.md-typeset blockquote{color:var(--md-default-fg-color--light);margin-left:0;margin-right:0}.md-typeset ul{list-style-type:disc}[dir=ltr] .md-typeset ol,[dir=ltr] .md-typeset ul{margin-left:.625em}[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{margin-right:.625em}.md-typeset ol,.md-typeset ul{padding:0}.md-typeset ol:not([hidden]),.md-typeset ul:not([hidden]){display:flow-root}.md-typeset ol ol,.md-typeset ul ol{list-style-type:lower-alpha}.md-typeset ol ol ol,.md-typeset ul ol ol{list-style-type:lower-roman}[dir=ltr] .md-typeset ol li,[dir=ltr] .md-typeset ul li{margin-left:1.25em}[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{margin-right:1.25em}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}.md-typeset ol li :-webkit-any(ul,ol),.md-typeset ul li :-webkit-any(ul,ol){margin-bottom:.5em;margin-top:.5em}.md-typeset ol li :-moz-any(ul,ol),.md-typeset ul li :-moz-any(ul,ol){margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset ol li :-webkit-any(ul,ol),[dir=ltr] .md-typeset ul li :-webkit-any(ul,ol){margin-left:.625em}[dir=ltr] .md-typeset ol li :-moz-any(ul,ol),[dir=ltr] .md-typeset ul li :-moz-any(ul,ol){margin-left:.625em}[dir=ltr] .md-typeset ol li :is(ul,ol),[dir=ltr] .md-typeset ul li :is(ul,ol){margin-left:.625em}[dir=rtl] .md-typeset ol li :-webkit-any(ul,ol),[dir=rtl] .md-typeset ul li :-webkit-any(ul,ol){margin-right:.625em}[dir=rtl] .md-typeset ol li :-moz-any(ul,ol),[dir=rtl] .md-typeset ul li :-moz-any(ul,ol){margin-right:.625em}[dir=rtl] .md-typeset ol li :is(ul,ol),[dir=rtl] .md-typeset ul li :is(ul,ol){margin-right:.625em}.md-typeset ol li :is(ul,ol),.md-typeset ul li :is(ul,ol){margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset dd{margin-left:1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em}.md-typeset dd{margin-bottom:1.5em;margin-top:1em}.md-typeset img,.md-typeset svg,.md-typeset video{height:auto;max-width:100%}.md-typeset img[align=left]{margin:1em 1em 1em 0}.md-typeset img[align=right]{margin:1em 0 1em 1em}.md-typeset img[align]:only-child{margin-top:0}.md-typeset img[src$="#gh-dark-mode-only"],.md-typeset img[src$="#only-dark"]{display:none}.md-typeset figure{display:flow-root;margin:1em auto;max-width:100%;text-align:center;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.md-typeset figure img{display:block}.md-typeset figcaption{font-style:italic;margin:1em auto;max-width:24rem}.md-typeset iframe{max-width:100%}.md-typeset table:not([class]){background-color:var(--md-default-bg-color);border:.05rem solid var(--md-typeset-table-color);border-radius:.1rem;display:inline-block;font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto}@media print{.md-typeset table:not([class]){display:table}}.md-typeset table:not([class])+*{margin-top:1.5em}.md-typeset table:not([class]) :-webkit-any(th,td)>:first-child{margin-top:0}.md-typeset table:not([class]) :-moz-any(th,td)>:first-child{margin-top:0}.md-typeset table:not([class]) :is(th,td)>:first-child{margin-top:0}.md-typeset table:not([class]) :-webkit-any(th,td)>:last-child{margin-bottom:0}.md-typeset table:not([class]) :-moz-any(th,td)>:last-child{margin-bottom:0}.md-typeset table:not([class]) :is(th,td)>:last-child{margin-bottom:0}.md-typeset table:not([class]) :-webkit-any(th,td):not([align]){text-align:left}.md-typeset table:not([class]) :-moz-any(th,td):not([align]){text-align:left}.md-typeset table:not([class]) :is(th,td):not([align]){text-align:left}[dir=rtl] .md-typeset table:not([class]) :-webkit-any(th,td):not([align]){text-align:right}[dir=rtl] .md-typeset table:not([class]) :-moz-any(th,td):not([align]){text-align:right}[dir=rtl] .md-typeset table:not([class]) :is(th,td):not([align]){text-align:right}.md-typeset table:not([class]) th{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) th a{color:inherit}.md-typeset table:not([class]) td{border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) tbody tr{transition:background-color 125ms}.md-typeset table:not([class]) tbody tr:hover{background-color:rgba(0,0,0,.035);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table:not([class]) a{word-break:normal}.md-typeset table th[role=columnheader]{cursor:pointer}[dir=ltr] .md-typeset table th[role=columnheader]:after{margin-left:.5em}[dir=rtl] .md-typeset table th[role=columnheader]:after{margin-right:.5em}.md-typeset table th[role=columnheader]:after{content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-typeset-table-sort-icon);mask-image:var(--md-typeset-table-sort-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset table th[role=columnheader]:hover:after{background-color:var(--md-default-fg-color--lighter)}.md-typeset table th[role=columnheader][aria-sort=ascending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--asc);mask-image:var(--md-typeset-table-sort-icon--asc)}.md-typeset table th[role=columnheader][aria-sort=descending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--desc);mask-image:var(--md-typeset-table-sort-icon--desc)}.md-typeset__scrollwrap{margin:1em -.8rem;overflow-x:auto;touch-action:auto}.md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}@media print{.md-typeset__table{display:block}}html .md-typeset__table table{display:table;margin:0;overflow:hidden;width:100%}@media screen and (max-width:44.9375em){.md-content__inner>pre{margin:1em -.8rem}.md-content__inner>pre code{border-radius:0}}.md-banner{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color);overflow:auto}@media print{.md-banner{display:none}}.md-banner--warning{background:var(--md-typeset-mark-color);color:var(--md-default-fg-color)}.md-banner__inner{font-size:.7rem;margin:.6rem auto;padding:0 .8rem}.md-banner__button{color:inherit;cursor:pointer;float:right;transition:opacity .25s}.md-banner__button:hover{opacity:.7}html{font-size:125%;height:100%;overflow-x:hidden}@media screen and (min-width:100em){html{font-size:137.5%}}@media screen and (min-width:125em){html{font-size:150%}}body{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;font-size:.5rem;min-height:100%;position:relative;width:100%}@media print{body{display:block}}@media screen and (max-width:59.9375em){body[data-md-scrolllock]{position:fixed}}.md-grid{margin-left:auto;margin-right:auto;max-width:61rem}.md-container{display:flex;flex-direction:column;flex-grow:1}@media print{.md-container{display:block}}.md-main{flex-grow:1}.md-main__inner{display:flex;height:100%;margin-top:1.5rem}.md-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-toggle{display:none}.md-option{height:0;opacity:0;position:absolute;width:0}.md-option:checked+label:not([hidden]){display:block}.md-option.focus-visible+label{outline-color:var(--md-accent-fg-color);outline-style:auto}.md-skip{background-color:var(--md-default-fg-color);border-radius:.1rem;color:var(--md-default-bg-color);font-size:.64rem;margin:.5rem;opacity:0;outline-color:var(--md-accent-fg-color);padding:.3rem .5rem;position:fixed;transform:translateY(.4rem);z-index:-1}.md-skip:focus{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 175ms 75ms;z-index:10}@page{margin:25mm}:root{--md-clipboard-icon:url('data:image/svg+xml;charset=utf-8,')}.md-clipboard{border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;position:absolute;right:.5em;top:.5em;transition:color .25s;width:1.5em;z-index:1}@media print{.md-clipboard{display:none}}.md-clipboard:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}:hover>.md-clipboard{color:var(--md-default-fg-color--light)}.md-clipboard:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-image:var(--md-clipboard-icon);mask-image:var(--md-clipboard-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-clipboard--inline{cursor:pointer}.md-clipboard--inline code{transition:color .25s,background-color .25s}.md-clipboard--inline:-webkit-any(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-clipboard--inline:-moz-any(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-clipboard--inline:is(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}@-webkit-keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@-webkit-keyframes overlay{0%{opacity:0}to{opacity:1}}@keyframes overlay{0%{opacity:0}to{opacity:1}}.md-consent__overlay{-webkit-animation:overlay .25s both;animation:overlay .25s both;-webkit-backdrop-filter:blur(.1rem);backdrop-filter:blur(.1rem);background-color:rgba(0,0,0,.54);height:100%;opacity:1;position:fixed;top:0;width:100%;z-index:5}.md-consent__inner{-webkit-animation:consent .5s cubic-bezier(.1,.7,.1,1) both;animation:consent .5s cubic-bezier(.1,.7,.1,1) both;background-color:var(--md-default-bg-color);border:0;border-radius:.1rem;bottom:0;box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2);max-height:100%;overflow:auto;padding:0;position:fixed;width:100%;z-index:5}.md-consent__form{padding:.8rem}.md-consent__settings{display:none;margin:1em 0}input:checked+.md-consent__settings{display:block}.md-consent__controls{margin-bottom:.8rem}.md-typeset .md-consent__controls .md-button{display:inline}@media screen and (max-width:44.9375em){.md-typeset .md-consent__controls .md-button{display:block;margin-top:.4rem;text-align:center;width:100%}}.md-consent label{cursor:pointer}.md-content{flex-grow:1;min-width:0}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}@media screen and (min-width:76.25em){[dir=ltr] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}[dir=ltr] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner,[dir=rtl] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-right:1.2rem}[dir=rtl] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}}.md-content__inner:before{content:"";display:block;height:.4rem}.md-content__inner>:last-child{margin-bottom:0}[dir=ltr] .md-content__button{margin-left:.4rem}[dir=rtl] .md-content__button{margin-right:.4rem}.md-content__button{float:right;margin:.4rem 0;padding:0}@media print{.md-content__button{display:none}}[dir=rtl] .md-content__button{float:left}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}[dir=ltr] .md-dialog{right:.8rem}[dir=rtl] .md-dialog{left:.8rem}.md-dialog{background-color:var(--md-default-fg-color);border-radius:.1rem;bottom:.8rem;box-shadow:var(--md-shadow-z3);min-width:11.1rem;opacity:0;padding:.4rem .6rem;pointer-events:none;position:fixed;transform:translateY(100%);transition:transform 0ms .4s,opacity .4s;z-index:4}@media print{.md-dialog{display:none}}.md-dialog--active{opacity:1;pointer-events:auto;transform:translateY(0);transition:transform .4s cubic-bezier(.075,.85,.175,1),opacity .4s}.md-dialog__inner{color:var(--md-default-bg-color);font-size:.7rem}.md-feedback{margin:2em 0 1em;text-align:center}.md-feedback fieldset{border:none;margin:0;padding:0}.md-feedback__title{font-weight:700;margin:1em auto}.md-feedback__inner{position:relative}.md-feedback__list{align-content:baseline;display:flex;flex-wrap:wrap;justify-content:center;position:relative}.md-feedback__list:hover .md-icon:not(:disabled){color:var(--md-default-fg-color--lighter)}:disabled .md-feedback__list{min-height:1.8rem}.md-feedback__icon{color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;margin:0 .1rem;transition:color 125ms}.md-feedback__icon:not(:disabled).md-icon:hover{color:var(--md-accent-fg-color)}.md-feedback__icon:disabled{color:var(--md-default-fg-color--lightest);pointer-events:none}.md-feedback__note{opacity:0;position:relative;transform:translateY(.4rem);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-feedback__note>*{margin:0 auto;max-width:16rem}:disabled .md-feedback__note{opacity:1;transform:translateY(0)}.md-footer{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color)}@media print{.md-footer{display:none}}.md-footer__inner{justify-content:space-between;overflow:auto;padding:.2rem}.md-footer__inner:not([hidden]){display:flex}.md-footer__link{display:flex;flex-grow:0.01;outline-color:var(--md-accent-fg-color);overflow:hidden;padding-bottom:.4rem;padding-top:1.4rem;transition:opacity .25s}.md-footer__link:-webkit-any(:focus,:hover){opacity:.7}.md-footer__link:-moz-any(:focus,:hover){opacity:.7}.md-footer__link:is(:focus,:hover){opacity:.7}[dir=rtl] .md-footer__link svg{transform:scaleX(-1)}@media screen and (max-width:44.9375em){.md-footer__link--prev .md-footer__title{display:none}}[dir=ltr] .md-footer__link--next{margin-left:auto}[dir=rtl] .md-footer__link--next{margin-right:auto}.md-footer__link--next{text-align:right}[dir=rtl] .md-footer__link--next{text-align:left}.md-footer__title{flex-grow:1;font-size:.9rem;line-height:2.4rem;max-width:calc(100% - 2.4rem);padding:0 1rem;position:relative;white-space:nowrap}.md-footer__button{margin:.2rem;padding:.4rem}.md-footer__direction{font-size:.64rem;left:0;margin-top:-1rem;opacity:.7;padding:0 1rem;position:absolute;right:0}.md-footer-meta{background-color:var(--md-footer-bg-color--dark)}.md-footer-meta__inner{display:flex;flex-wrap:wrap;justify-content:space-between;padding:.2rem}html .md-footer-meta.md-typeset a{color:var(--md-footer-fg-color--light)}html .md-footer-meta.md-typeset a:-webkit-any(:focus,:hover){color:var(--md-footer-fg-color)}html .md-footer-meta.md-typeset a:-moz-any(:focus,:hover){color:var(--md-footer-fg-color)}html .md-footer-meta.md-typeset a:is(:focus,:hover){color:var(--md-footer-fg-color)}.md-copyright{color:var(--md-footer-fg-color--lighter);font-size:.64rem;margin:auto .6rem;padding:.4rem 0;width:100%}@media screen and (min-width:45em){.md-copyright{width:auto}}.md-copyright__highlight{color:var(--md-footer-fg-color--light)}.md-social{margin:0 .4rem;padding:.2rem 0 .6rem}@media screen and (min-width:45em){.md-social{padding:.6rem 0}}.md-social__link{display:inline-block;height:1.6rem;text-align:center;width:1.6rem}.md-social__link:before{line-height:1.9}.md-social__link svg{fill:currentcolor;max-height:.8rem;vertical-align:-25%}.md-typeset .md-button{border:.1rem solid;border-radius:.1rem;color:var(--md-primary-fg-color);cursor:pointer;display:inline-block;font-weight:700;padding:.625em 2em;transition:color 125ms,background-color 125ms,border-color 125ms}.md-typeset .md-button--primary{background-color:var(--md-primary-fg-color);border-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-typeset .md-button:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-typeset .md-button:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-typeset .md-button:is(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[dir=ltr] .md-typeset .md-input{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .md-input,[dir=rtl] .md-typeset .md-input{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .md-input{border-top-left-radius:.1rem}.md-typeset .md-input{border-bottom:.1rem solid var(--md-default-fg-color--lighter);box-shadow:var(--md-shadow-z1);font-size:.8rem;height:1.8rem;padding:0 .6rem;transition:border .25s,box-shadow .25s}.md-typeset .md-input:-webkit-any(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input:-moz-any(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input:is(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input--stretch{width:100%}.md-header{background-color:var(--md-primary-fg-color);box-shadow:0 0 .2rem transparent,0 .2rem .4rem transparent;color:var(--md-primary-bg-color);display:block;left:0;position:-webkit-sticky;position:sticky;right:0;top:0;z-index:4}@media print{.md-header{display:none}}.md-header[hidden]{transform:translateY(-100%);transition:transform .25s cubic-bezier(.8,0,.6,1),box-shadow .25s}.md-header--shadow{box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2);transition:transform .25s cubic-bezier(.1,.7,.1,1),box-shadow .25s}.md-header__inner{align-items:center;display:flex;padding:0 .2rem}.md-header__button{color:currentcolor;cursor:pointer;margin:.2rem;outline-color:var(--md-accent-fg-color);padding:.4rem;position:relative;transition:opacity .25s;vertical-align:middle;z-index:1}.md-header__button:hover{opacity:.7}.md-header__button:not([hidden]){display:inline-block}.md-header__button:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-header__button.md-logo{margin:.2rem;padding:.4rem}@media screen and (max-width:76.1875em){.md-header__button.md-logo{display:none}}.md-header__button.md-logo :-webkit-any(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}.md-header__button.md-logo :-moz-any(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}.md-header__button.md-logo :is(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}@media screen and (min-width:60em){.md-header__button[for=__search]{display:none}}.no-js .md-header__button[for=__search]{display:none}[dir=rtl] .md-header__button[for=__search] svg{transform:scaleX(-1)}@media screen and (min-width:76.25em){.md-header__button[for=__drawer]{display:none}}.md-header__topic{display:flex;max-width:100%;position:absolute;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;white-space:nowrap}.md-header__topic+.md-header__topic{opacity:0;pointer-events:none;transform:translateX(1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__topic+.md-header__topic{transform:translateX(-1.25rem)}.md-header__topic:first-child{font-weight:700}[dir=ltr] .md-header__title{margin-right:.4rem}[dir=rtl] .md-header__title{margin-left:.4rem}[dir=ltr] .md-header__title{margin-left:1rem}[dir=rtl] .md-header__title{margin-right:1rem}.md-header__title{flex-grow:1;font-size:.9rem;height:2.4rem;line-height:2.4rem}.md-header__title--active .md-header__topic{opacity:0;pointer-events:none;transform:translateX(-1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__title--active .md-header__topic{transform:translateX(1.25rem)}.md-header__title--active .md-header__topic+.md-header__topic{opacity:1;pointer-events:auto;transform:translateX(0);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;z-index:0}.md-header__title>.md-header__ellipsis{height:100%;position:relative;width:100%}.md-header__option{display:flex;flex-shrink:0;max-width:100%;transition:max-width 0ms .25s,opacity .25s .25s;white-space:nowrap}[data-md-toggle=search]:checked~.md-header .md-header__option{max-width:0;opacity:0;transition:max-width 0ms,opacity 0ms}.md-header__source{display:none}@media screen and (min-width:60em){[dir=ltr] .md-header__source{margin-left:1rem}[dir=rtl] .md-header__source{margin-right:1rem}.md-header__source{display:block;max-width:11.7rem;width:11.7rem}}@media screen and (min-width:76.25em){[dir=ltr] .md-header__source{margin-left:1.4rem}[dir=rtl] .md-header__source{margin-right:1.4rem}}:root{--md-nav-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-nav-icon--next:url('data:image/svg+xml;charset=utf-8,');--md-toc-icon:url('data:image/svg+xml;charset=utf-8,')}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{display:block;font-weight:700;overflow:hidden;padding:0 .6rem;text-overflow:ellipsis}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{height:100%;width:auto}.md-nav__title .md-nav__button.md-logo :-webkit-any(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__title .md-nav__button.md-logo :-moz-any(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__title .md-nav__button.md-logo :is(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__list{list-style:none;margin:0;padding:0}.md-nav__item{padding:0 .6rem}[dir=ltr] .md-nav__item .md-nav__item{padding-right:0}[dir=rtl] .md-nav__item .md-nav__item{padding-left:0}.md-nav__link{align-items:center;cursor:pointer;display:flex;justify-content:space-between;margin-top:.625em;overflow:hidden;scroll-snap-align:start;text-overflow:ellipsis;transition:color 125ms}.md-nav__link--passed{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active{color:var(--md-typeset-a-color)}.md-nav__item .md-nav__link--index [href]{width:100%}.md-nav__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-nav--primary .md-nav__link[for=__toc]{display:none}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{background-color:currentcolor;display:block;height:100%;-webkit-mask-image:var(--md-toc-icon);mask-image:var(--md-toc-icon);width:100%}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__link>*{cursor:pointer;display:flex}.md-nav__icon{flex-shrink:0}.md-nav__source{display:none}@media screen and (max-width:76.1875em){.md-nav--primary,.md-nav--primary .md-nav{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;height:100%;left:0;position:absolute;right:0;top:0;z-index:1}.md-nav--primary :-webkit-any(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary :-moz-any(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary :is(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);cursor:pointer;height:5.6rem;line-height:2.4rem;padding:3rem .8rem .2rem;position:relative;white-space:nowrap}[dir=ltr] .md-nav--primary .md-nav__title .md-nav__icon{left:.4rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem}.md-nav--primary .md-nav__title .md-nav__icon{display:block;height:1.2rem;margin:.2rem;position:absolute;top:.4rem;width:1.2rem}.md-nav--primary .md-nav__title .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--prev);mask-image:var(--md-nav-icon--prev);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:0 .05rem 0 var(--md-default-fg-color--lightest) inset;overflow-y:auto;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;touch-action:pan-y}.md-nav--primary .md-nav__title~.md-nav__list>:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-weight:700}.md-nav--primary .md-nav__title .md-logo{display:block;left:.2rem;margin:.2rem;padding:.4rem;position:absolute;right:.2rem;top:.2rem}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{border-top:.05rem solid var(--md-default-fg-color--lightest);padding:0}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-typeset-a-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__link{margin-top:0;padding:.6rem .8rem}[dir=ltr] .md-nav--primary .md-nav__link .md-nav__icon{margin-right:-.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{margin-left:-.2rem}.md-nav--primary .md-nav__link .md-nav__icon{font-size:1.2rem;height:1.2rem;width:1.2rem}.md-nav--primary .md-nav__link .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-nav--primary .md-nav__icon:after{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav{background-color:initial;position:static}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem}.md-nav--secondary{background-color:initial}.md-nav__toggle~.md-nav{display:flex;opacity:0;transform:translateX(100%);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity 125ms 50ms}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 125ms 125ms}.md-nav__toggle:checked~.md-nav>.md-nav__list{-webkit-backface-visibility:hidden;backface-visibility:hidden}}@media screen and (max-width:59.9375em){.md-nav--primary .md-nav__link[for=__toc]{display:flex}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--primary .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:flex}.md-nav__source{background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color);display:block;padding:0 .2rem}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-nav--integrated .md-nav__link[for=__toc]{display:flex}.md-nav--integrated .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--integrated .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--integrated .md-nav__link[for=__toc]~.md-nav{display:flex}}@media screen and (min-width:60em){.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}}@media screen and (min-width:76.25em){.md-nav{transition:max-height .25s cubic-bezier(.86,0,.07,1)}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon,.md-nav__toggle~.md-nav{display:none}.md-nav__toggle:-webkit-any(:checked,:indeterminate)~.md-nav{display:block}.md-nav__toggle:-moz-any(:checked,:indeterminate)~.md-nav{display:block}.md-nav__toggle:is(:checked,:indeterminate)~.md-nav{display:block}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__item--section{display:block;margin:1.25em 0}.md-nav__item--section:last-child{margin-bottom:0}.md-nav__item--section>.md-nav__link{font-weight:700;pointer-events:none}.md-nav__item--section>.md-nav__link--index [href]{pointer-events:auto}.md-nav__item--section>.md-nav__link .md-nav__icon{display:none}.md-nav__item--section>.md-nav{display:block}.md-nav__item--section>.md-nav>.md-nav__list>.md-nav__item{padding:0}.md-nav__icon{border-radius:100%;float:right;height:.9rem;transition:background-color .25s,transform .25s;width:.9rem}[dir=rtl] .md-nav__icon{float:left;transform:rotate(180deg)}.md-nav__icon:hover{background-color:var(--md-accent-fg-color--transparent)}.md-nav__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.1rem;width:100%}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon,.md-nav__item--nested .md-nav__toggle:indeterminate~.md-nav__link .md-nav__icon{transform:rotate(90deg)}.md-nav--lifted>.md-nav__list>.md-nav__item,.md-nav--lifted>.md-nav__list>.md-nav__item--nested,.md-nav--lifted>.md-nav__title{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active{display:block;padding:0}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link{font-weight:700;margin-top:0;padding:0 .6rem;pointer-events:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link--index [href]{pointer-events:auto}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link .md-nav__icon{display:none}.md-nav--lifted .md-nav[data-md-level="1"]{display:block}[dir=ltr] .md-nav--lifted .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding-right:.6rem}[dir=rtl] .md-nav--lifted .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding-left:.6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested){padding:0 .6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested)>.md-nav__link{padding:0}[dir=ltr] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-left:.05rem solid var(--md-primary-fg-color)}[dir=rtl] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-right:.05rem solid var(--md-primary-fg-color)}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{display:block;margin-bottom:1.25em}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__title{display:none}}:root{--md-search-result-icon:url('data:image/svg+xml;charset=utf-8,')}.md-search{position:relative}@media screen and (min-width:60em){.md-search{padding:.2rem 0}}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__overlay{left:-2.2rem}[dir=rtl] .md-search__overlay{right:-2.2rem}.md-search__overlay{background-color:var(--md-default-bg-color);border-radius:1rem;height:2rem;overflow:hidden;pointer-events:none;position:absolute;top:-1rem;transform-origin:center;transition:transform .3s .1s,opacity .2s .2s;width:2rem}[data-md-toggle=search]:checked~.md-header .md-search__overlay{opacity:1;transition:transform .4s,opacity .1s}}@media screen and (min-width:60em){[dir=ltr] .md-search__overlay{left:0}[dir=rtl] .md-search__overlay{right:0}.md-search__overlay{background-color:rgba(0,0,0,.54);cursor:pointer;height:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0}[data-md-toggle=search]:checked~.md-header .md-search__overlay{height:200vh;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@media screen and (max-width:29.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width:30em) and (max-width:44.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width:45em) and (max-width:59.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}.md-search__inner{-webkit-backface-visibility:hidden;backface-visibility:hidden}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__inner{left:0}[dir=rtl] .md-search__inner{right:0}.md-search__inner{height:0;opacity:0;overflow:hidden;position:fixed;top:0;transform:translateX(5%);transition:width 0ms .3s,height 0ms .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s;width:0;z-index:2}[dir=rtl] .md-search__inner{transform:translateX(-5%)}[data-md-toggle=search]:checked~.md-header .md-search__inner{height:100%;opacity:1;transform:translateX(0);transition:width 0ms 0ms,height 0ms 0ms,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;width:100%}}@media screen and (min-width:60em){.md-search__inner{float:right;padding:.1rem 0;position:relative;transition:width .25s cubic-bezier(.1,.7,.1,1);width:11.7rem}[dir=rtl] .md-search__inner{float:left}}@media screen and (min-width:60em) and (max-width:76.1875em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}}@media screen and (min-width:76.25em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}}.md-search__form{background-color:var(--md-default-bg-color);box-shadow:0 0 .6rem transparent;height:2.4rem;position:relative;transition:color .25s,background-color .25s;z-index:2}@media screen and (min-width:60em){.md-search__form{background-color:rgba(0,0,0,.26);border-radius:.1rem;height:1.8rem}.md-search__form:hover{background-color:hsla(0,0%,100%,.12)}}[data-md-toggle=search]:checked~.md-header .md-search__form{background-color:var(--md-default-bg-color);border-radius:.1rem .1rem 0 0;box-shadow:0 0 .6rem rgba(0,0,0,.07);color:var(--md-default-fg-color)}[dir=ltr] .md-search__input{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__input{padding-left:2.2rem;padding-right:3.6rem}.md-search__input{background:transparent;font-size:.9rem;height:100%;position:relative;text-overflow:ellipsis;width:100%;z-index:2}.md-search__input::-ms-input-placeholder{-ms-transition:color .25s;transition:color .25s}.md-search__input::placeholder{transition:color .25s}.md-search__input::-ms-input-placeholder{color:var(--md-default-fg-color--light)}.md-search__input::placeholder,.md-search__input~.md-search__icon{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}@media screen and (max-width:59.9375em){.md-search__input{font-size:.9rem;height:2.4rem;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__input{padding-left:2.2rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input{color:inherit;font-size:.8rem}.md-search__input::-ms-input-placeholder{color:var(--md-primary-bg-color--light)}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}[data-md-toggle=search]:checked~.md-header .md-search__input{text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input::-ms-input-placeholder{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon,[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:var(--md-default-fg-color--light)}}.md-search__icon{cursor:pointer;display:inline-block;height:1.2rem;transition:color .25s,opacity .25s;width:1.2rem}.md-search__icon:hover{opacity:.7}[dir=ltr] .md-search__icon[for=__search]{left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem}.md-search__icon[for=__search]{position:absolute;top:.3rem;z-index:2}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__icon[for=__search]{left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem}.md-search__icon[for=__search]{top:.6rem}.md-search__icon[for=__search] svg:first-child{display:none}}@media screen and (min-width:60em){.md-search__icon[for=__search]{pointer-events:none}.md-search__icon[for=__search] svg:last-child{display:none}}[dir=ltr] .md-search__options{right:.5rem}[dir=rtl] .md-search__options{left:.5rem}.md-search__options{pointer-events:none;position:absolute;top:.3rem;z-index:2}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__options{right:.8rem}[dir=rtl] .md-search__options{left:.8rem}.md-search__options{top:.6rem}}[dir=ltr] .md-search__options>*{margin-left:.2rem}[dir=rtl] .md-search__options>*{margin-right:.2rem}.md-search__options>*{color:var(--md-default-fg-color--light);opacity:0;transform:scale(.75);transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-search__options>:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>*{opacity:1;pointer-events:auto;transform:scale(1)}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>:hover{opacity:.7}[dir=ltr] .md-search__suggest{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__suggest{padding-left:2.2rem;padding-right:3.6rem}.md-search__suggest{align-items:center;color:var(--md-default-fg-color--lighter);display:flex;font-size:.9rem;height:100%;opacity:0;position:absolute;top:0;transition:opacity 50ms;white-space:nowrap;width:100%}@media screen and (min-width:60em){[dir=ltr] .md-search__suggest{padding-left:2.2rem}[dir=rtl] .md-search__suggest{padding-right:2.2rem}.md-search__suggest{font-size:.8rem}}[data-md-toggle=search]:checked~.md-header .md-search__suggest{opacity:1;transition:opacity .3s .1s}[dir=ltr] .md-search__output{border-bottom-left-radius:.1rem}[dir=ltr] .md-search__output,[dir=rtl] .md-search__output{border-bottom-right-radius:.1rem}[dir=rtl] .md-search__output{border-bottom-left-radius:.1rem}.md-search__output{overflow:hidden;position:absolute;width:100%;z-index:1}@media screen and (max-width:59.9375em){.md-search__output{bottom:0;top:2.4rem}}@media screen and (min-width:60em){.md-search__output{opacity:0;top:1.9rem;transition:opacity .4s}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:var(--md-shadow-z3);opacity:1}}.md-search__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);height:100%;overflow-y:auto;touch-action:pan-y}@media (-webkit-max-device-pixel-ratio:1),(max-resolution:1dppx){.md-search__scrollwrap{transform:translateZ(0)}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-search__scrollwrap{width:23.4rem}}@media screen and (min-width:76.25em){.md-search__scrollwrap{width:34.4rem}}@media screen and (min-width:60em){.md-search__scrollwrap{max-height:0;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-search__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;padding:0 .8rem;scroll-snap-align:start}@media screen and (min-width:60em){[dir=ltr] .md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem}}.md-search-result__list{list-style:none;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.md-search-result__item{box-shadow:0 -.05rem var(--md-default-fg-color--lightest)}.md-search-result__item:first-child{box-shadow:none}.md-search-result__link{display:block;outline:none;scroll-snap-align:start;transition:background-color .25s}.md-search-result__link:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:is(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:last-child p:last-child{margin-bottom:.6rem}.md-search-result__more summary{color:var(--md-typeset-a-color);cursor:pointer;display:block;font-size:.64rem;outline:none;padding:.75em .8rem;scroll-snap-align:start;transition:color .25s,background-color .25s}@media screen and (min-width:60em){[dir=ltr] .md-search-result__more summary{padding-left:2.2rem}[dir=rtl] .md-search-result__more summary{padding-right:2.2rem}}.md-search-result__more summary:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary:is(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary::marker{display:none}.md-search-result__more summary::-webkit-details-marker{display:none}.md-search-result__more summary~*>*{opacity:.65}.md-search-result__article{overflow:hidden;padding:0 .8rem;position:relative}@media screen and (min-width:60em){[dir=ltr] .md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem}}.md-search-result__article--document .md-search-result__title{font-size:.8rem;font-weight:400;line-height:1.4;margin:.55rem 0}[dir=ltr] .md-search-result__icon{left:0}[dir=rtl] .md-search-result__icon{right:0}.md-search-result__icon{color:var(--md-default-fg-color--light);height:1.2rem;margin:.5rem;position:absolute;width:1.2rem}@media screen and (max-width:59.9375em){.md-search-result__icon{display:none}}.md-search-result__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-search-result-icon);mask-image:var(--md-search-result-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-search-result__icon:after{transform:scaleX(-1)}.md-search-result__title{font-size:.64rem;font-weight:700;line-height:1.6;margin:.5em 0}.md-search-result__teaser{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--md-default-fg-color--light);display:-webkit-box;font-size:.64rem;line-height:1.6;margin:.5em 0;max-height:2rem;overflow:hidden;text-overflow:ellipsis}@media screen and (max-width:44.9375em){.md-search-result__teaser{-webkit-line-clamp:3;max-height:3rem}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-search-result__teaser{-webkit-line-clamp:3;max-height:3rem}}.md-search-result__teaser mark{background-color:initial;text-decoration:underline}.md-search-result__terms{font-size:.64rem;font-style:italic;margin:.5em 0}.md-search-result mark{background-color:initial;color:var(--md-accent-fg-color)}.md-select{position:relative;z-index:1}.md-select__inner{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:50%;margin-top:.2rem;max-height:0;opacity:0;position:absolute;top:calc(100% - .2rem);transform:translate3d(-50%,.3rem,0);transition:transform .25s 375ms,opacity .25s .25s,max-height 0ms .5s}.md-select:-webkit-any(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);-webkit-transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms;transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select:-moz-any(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);-moz-transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms;transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select:is(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select__inner:after{border-bottom:.2rem solid transparent;border-bottom-color:var(--md-default-bg-color);border-left:.2rem solid transparent;border-right:.2rem solid transparent;border-top:0;content:"";height:0;left:50%;margin-left:-.2rem;margin-top:-.2rem;position:absolute;top:0;width:0}.md-select__list{border-radius:.1rem;font-size:.8rem;list-style-type:none;margin:0;max-height:inherit;overflow:auto;padding:0}.md-select__item{line-height:1.8rem}[dir=ltr] .md-select__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-select__link{padding-left:1.2rem;padding-right:.6rem}.md-select__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:background-color .25s,color .25s;width:100%}.md-select__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:focus{background-color:var(--md-default-fg-color--lightest)}.md-sidebar{align-self:flex-start;flex-shrink:0;padding:1.2rem 0;position:-webkit-sticky;position:sticky;top:2.4rem;width:12.1rem}@media print{.md-sidebar{display:none}}@media screen and (max-width:76.1875em){[dir=ltr] .md-sidebar--primary{left:-12.1rem}[dir=rtl] .md-sidebar--primary{right:-12.1rem}.md-sidebar--primary{background-color:var(--md-default-bg-color);display:block;height:100%;position:fixed;top:0;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;width:12.1rem;z-index:5}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:var(--md-shadow-z3);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{bottom:0;left:0;margin:0;overflow:hidden;position:absolute;right:0;-ms-scroll-snap-type:none;scroll-snap-type:none;top:0}}@media screen and (min-width:76.25em){.md-sidebar{height:0}.no-js .md-sidebar{height:auto}}.md-sidebar--secondary{display:none;order:2}@media screen and (min-width:60em){.md-sidebar--secondary{height:0}.no-js .md-sidebar--secondary{height:auto}.md-sidebar--secondary:not([hidden]){display:block}.md-sidebar--secondary .md-sidebar__scrollwrap{touch-action:pan-y}}.md-sidebar__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;margin:0 .2rem;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin}.md-sidebar__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-sidebar__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@media screen and (max-width:76.1875em){.md-overlay{background-color:rgba(0,0,0,.54);height:0;opacity:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0;z-index:5}[data-md-toggle=drawer]:checked~.md-overlay{height:100%;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@-webkit-keyframes facts{0%{height:0}to{height:.65rem}}@keyframes facts{0%{height:0}to{height:.65rem}}@-webkit-keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}@keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}:root{--md-source-forks-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-repositories-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-source{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.65rem;line-height:1.2;outline-color:var(--md-accent-fg-color);transition:opacity .25s;white-space:nowrap}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;height:2.4rem;vertical-align:middle;width:2rem}[dir=ltr] .md-source__icon svg{margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem}.md-source__icon svg{margin-top:.6rem}[dir=ltr] .md-source__icon+.md-source__repository{margin-left:-2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem}[dir=ltr] .md-source__icon+.md-source__repository{padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{padding-right:2rem}[dir=ltr] .md-source__repository{margin-left:.6rem}[dir=rtl] .md-source__repository{margin-right:.6rem}.md-source__repository{display:inline-block;max-width:calc(100% - 1.2rem);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.md-source__facts{display:flex;font-size:.55rem;gap:.4rem;list-style-type:none;margin:.1rem 0 0;opacity:.75;overflow:hidden;padding:0;width:100%}.md-source__repository--active .md-source__facts{-webkit-animation:facts .25s ease-in;animation:facts .25s ease-in}.md-source__fact{overflow:hidden;text-overflow:ellipsis}.md-source__repository--active .md-source__fact{-webkit-animation:fact .4s ease-out;animation:fact .4s ease-out}[dir=ltr] .md-source__fact:before{margin-right:.1rem}[dir=rtl] .md-source__fact:before{margin-left:.1rem}.md-source__fact:before{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-top;width:.6rem}.md-source__fact:nth-child(1n+2){flex-shrink:0}.md-source__fact--version:before{-webkit-mask-image:var(--md-source-version-icon);mask-image:var(--md-source-version-icon)}.md-source__fact--stars:before{-webkit-mask-image:var(--md-source-stars-icon);mask-image:var(--md-source-stars-icon)}.md-source__fact--forks:before{-webkit-mask-image:var(--md-source-forks-icon);mask-image:var(--md-source-forks-icon)}.md-source__fact--repositories:before{-webkit-mask-image:var(--md-source-repositories-icon);mask-image:var(--md-source-repositories-icon)}.md-tabs{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block;line-height:1.3;overflow:auto;width:100%;z-index:3}@media print{.md-tabs{display:none}}@media screen and (max-width:76.1875em){.md-tabs{display:none}}.md-tabs[hidden]{pointer-events:none}[dir=ltr] .md-tabs__list{margin-left:.2rem}[dir=rtl] .md-tabs__list{margin-right:.2rem}.md-tabs__list{contain:content;list-style:none;margin:0;padding:0;white-space:nowrap}.md-tabs__item{display:inline-block;height:2.4rem;padding-left:.6rem;padding-right:.6rem}.md-tabs__link{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.7rem;margin-top:.8rem;opacity:.7;outline-color:var(--md-accent-fg-color);outline-offset:.2rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s}.md-tabs__link--active,.md-tabs__link:-webkit-any(:focus,:hover){color:inherit;opacity:1}.md-tabs__link--active,.md-tabs__link:-moz-any(:focus,:hover){color:inherit;opacity:1}.md-tabs__link--active,.md-tabs__link:is(:focus,:hover){color:inherit;opacity:1}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:.1s}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:.12s}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:.14s}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:.16s}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:.18s}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:.2s}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:.22s}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:.24s}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:.26s}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:.28s}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:.3s}.md-tabs[hidden] .md-tabs__link{opacity:0;transform:translateY(50%);transition:transform 0ms .1s,opacity .1s}.md-tags{margin-bottom:.75em}[dir=ltr] .md-tag{margin-right:.5em}[dir=rtl] .md-tag{margin-left:.5em}.md-tag{background:var(--md-default-fg-color--lightest);border-radius:.4rem;display:inline-block;font-size:.64rem;font-weight:700;line-height:1.6;margin-bottom:.5em;padding:.3125em .9375em}.md-tag[href]{-webkit-tap-highlight-color:transparent;color:inherit;outline:none;transition:color 125ms,background-color 125ms}.md-tag[href]:focus,.md-tag[href]:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[id]>.md-tag{vertical-align:text-top}@-webkit-keyframes pulse{0%{box-shadow:0 0 0 0 var(--md-default-fg-color--lightest);transform:scale(.95)}75%{box-shadow:0 0 0 .625em transparent;transform:scale(1)}to{box-shadow:0 0 0 0 transparent;transform:scale(.95)}}@keyframes pulse{0%{box-shadow:0 0 0 0 var(--md-default-fg-color--lightest);transform:scale(.95)}75%{box-shadow:0 0 0 .625em transparent;transform:scale(1)}to{box-shadow:0 0 0 0 transparent;transform:scale(.95)}}:root{--md-tooltip-width:20rem}.md-tooltip{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:clamp(var(--md-tooltip-0,0rem) + .8rem,var(--md-tooltip-x),100vw + var(--md-tooltip-0,0rem) + .8rem - var(--md-tooltip-width) - 2 * .8rem);max-height:0;max-width:calc(100vw - 1.6rem);opacity:0;position:absolute;top:var(--md-tooltip-y);transform:translateY(-.4rem);transition:transform 0ms .25s,opacity .25s,max-height 0ms .25s,z-index .25s;width:var(--md-tooltip-width);z-index:0}:focus-within>.md-tooltip{max-height:1000%;opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height .25s,z-index 0ms}.focus-visible>.md-tooltip{outline:var(--md-accent-fg-color) auto}.md-tooltip__inner{font-size:.64rem;padding:.8rem}.md-tooltip__inner.md-typeset>:first-child{margin-top:0}.md-tooltip__inner.md-typeset>:last-child{margin-bottom:0}.md-annotation{outline:none;white-space:normal}[dir=rtl] .md-annotation{direction:rtl}.md-annotation:not([hidden]){display:inline-block;line-height:1.325}.md-annotation:focus-within>*{z-index:2}.md-annotation__inner{font-family:var(--md-text-font-family);top:calc(var(--md-tooltip-y) + 1.2ch)}:not(:focus-within)>.md-annotation__inner{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.md-annotation__index{color:#fff;cursor:pointer;margin:0 1ch;position:relative;transition:z-index .25s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0}.md-annotation__index:after{background-color:var(--md-default-fg-color--lighter);border-radius:2ch;content:"";height:2.2ch;left:-.126em;margin:0 -.4ch;padding:0 .4ch;position:absolute;transition:color .25s,background-color .25s;width:calc(100% + 1.2ch);width:max(2.2ch,100% + 1.2ch);z-index:-1}@media not all and (prefers-reduced-motion){[data-md-visible]>.md-annotation__index:after{-webkit-animation:pulse 2s infinite;animation:pulse 2s infinite}}:-webkit-any(:focus-within,:hover)>.md-annotation__index:after{background-color:var(--md-accent-fg-color)}:-moz-any(:focus-within,:hover)>.md-annotation__index:after{background-color:var(--md-accent-fg-color)}:is(:focus-within,:hover)>.md-annotation__index:after{background-color:var(--md-accent-fg-color)}:focus-within>.md-annotation__index:after{-webkit-animation:none;animation:none;transition:color .25s,background-color .25s}.md-annotation__index [data-md-annotation-id]{display:inline-block;line-height:90%}.md-annotation__index [data-md-annotation-id]:before{content:attr(data-md-annotation-id);display:inline-block;padding-bottom:.1em;transform:scale(1.15);transition:transform .4s cubic-bezier(.1,.7,.1,1);vertical-align:.065em}@media not print{.md-annotation__index [data-md-annotation-id]:before{content:"+"}:focus-within>.md-annotation__index [data-md-annotation-id]:before{transform:scale(1.25) rotate(45deg)}}:-webkit-any(:focus-within,:hover)>.md-annotation__index{color:var(--md-accent-bg-color)}:-moz-any(:focus-within,:hover)>.md-annotation__index{color:var(--md-accent-bg-color)}:is(:focus-within,:hover)>.md-annotation__index{color:var(--md-accent-bg-color)}:focus-within>.md-annotation__index{-webkit-animation:none;animation:none;transition:none}[dir=ltr] .md-top{margin-left:50%}[dir=rtl] .md-top{margin-right:50%}.md-top{background-color:var(--md-default-bg-color);border-radius:1.6rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color--light);display:block;font-size:.7rem;outline:none;padding:.4rem .8rem;position:fixed;top:3.2rem;transform:translate(-50%);transition:color 125ms,background-color 125ms,transform 125ms cubic-bezier(.4,0,.2,1),opacity 125ms;z-index:2}@media print{.md-top{display:none}}[dir=rtl] .md-top{transform:translate(50%)}.md-top[hidden]{opacity:0;pointer-events:none;transform:translate(-50%,.2rem);transition-duration:0ms}[dir=rtl] .md-top[hidden]{transform:translate(50%,.2rem)}.md-top:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top:is(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top svg{display:inline-block;vertical-align:-.5em}@-webkit-keyframes hoverfix{0%{pointer-events:none}}@keyframes hoverfix{0%{pointer-events:none}}:root{--md-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-version{flex-shrink:0;font-size:.8rem;height:2.4rem}[dir=ltr] .md-version__current{margin-left:1.4rem;margin-right:.4rem}[dir=rtl] .md-version__current{margin-left:.4rem;margin-right:1.4rem}.md-version__current{color:inherit;cursor:pointer;outline:none;position:relative;top:.05rem}[dir=ltr] .md-version__current:after{margin-left:.4rem}[dir=rtl] .md-version__current:after{margin-right:.4rem}.md-version__current:after{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-image:var(--md-version-icon);mask-image:var(--md-version-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;width:.4rem}.md-version__list{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);list-style-type:none;margin:.2rem .8rem;max-height:0;opacity:0;overflow:auto;padding:0;position:absolute;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;top:.15rem;transition:max-height 0ms .5s,opacity .25s .25s;z-index:3}.md-version:-webkit-any(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;-webkit-transition:max-height 0ms,opacity .25s;transition:max-height 0ms,opacity .25s}.md-version:-moz-any(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;-moz-transition:max-height 0ms,opacity .25s;transition:max-height 0ms,opacity .25s}.md-version:is(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;transition:max-height 0ms,opacity .25s}@media (pointer:coarse){.md-version:hover .md-version__list{-webkit-animation:hoverfix .25s forwards;animation:hoverfix .25s forwards}.md-version:focus-within .md-version__list{-webkit-animation:none;animation:none}}.md-version__item{line-height:1.8rem}[dir=ltr] .md-version__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-version__link{padding-left:1.2rem;padding-right:.6rem}.md-version__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:color .25s,background-color .25s;white-space:nowrap;width:100%}.md-version__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:focus{background-color:var(--md-default-fg-color--lightest)}:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,')}.md-typeset :-webkit-any(.admonition,details){background-color:var(--md-admonition-bg-color);border:0 solid #448aff;border-radius:.1rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid}.md-typeset :-moz-any(.admonition,details){background-color:var(--md-admonition-bg-color);border:0 solid #448aff;border-radius:.1rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid}[dir=ltr] .md-typeset :-webkit-any(.admonition,details){border-left-width:.2rem}[dir=ltr] .md-typeset :-moz-any(.admonition,details){border-left-width:.2rem}[dir=ltr] .md-typeset :is(.admonition,details){border-left-width:.2rem}[dir=rtl] .md-typeset :-webkit-any(.admonition,details){border-right-width:.2rem}[dir=rtl] .md-typeset :-moz-any(.admonition,details){border-right-width:.2rem}[dir=rtl] .md-typeset :is(.admonition,details){border-right-width:.2rem}.md-typeset :is(.admonition,details){background-color:var(--md-admonition-bg-color);border:0 solid #448aff;border-radius:.1rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid}@media print{.md-typeset :-webkit-any(.admonition,details){box-shadow:none}.md-typeset :-moz-any(.admonition,details){box-shadow:none}.md-typeset :is(.admonition,details){box-shadow:none}}.md-typeset :-webkit-any(.admonition,details)>*{box-sizing:border-box}.md-typeset :-moz-any(.admonition,details)>*{box-sizing:border-box}.md-typeset :is(.admonition,details)>*{box-sizing:border-box}.md-typeset :-webkit-any(.admonition,details) :-webkit-any(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset :-moz-any(.admonition,details) :-moz-any(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset :is(.admonition,details) :is(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset :-webkit-any(.admonition,details) .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset :-moz-any(.admonition,details) .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset :is(.admonition,details) .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset :-webkit-any(.admonition,details) .md-typeset__table{padding:0 .6rem}.md-typeset :-moz-any(.admonition,details) .md-typeset__table{padding:0 .6rem}.md-typeset :is(.admonition,details) .md-typeset__table{padding:0 .6rem}.md-typeset :-webkit-any(.admonition,details)>.tabbed-set:only-child{margin-top:0}.md-typeset :-moz-any(.admonition,details)>.tabbed-set:only-child{margin-top:0}.md-typeset :is(.admonition,details)>.tabbed-set:only-child{margin-top:0}html .md-typeset :-webkit-any(.admonition,details)>:last-child{margin-bottom:.6rem}html .md-typeset :-moz-any(.admonition,details)>:last-child{margin-bottom:.6rem}html .md-typeset :is(.admonition,details)>:last-child{margin-bottom:.6rem}.md-typeset :-webkit-any(.admonition-title,summary){background-color:rgba(68,138,255,.1);border:none;font-weight:700;margin-bottom:0;margin-top:0;padding-bottom:.4rem;padding-top:.4rem;position:relative}.md-typeset :-moz-any(.admonition-title,summary){background-color:rgba(68,138,255,.1);border:none;font-weight:700;margin-bottom:0;margin-top:0;padding-bottom:.4rem;padding-top:.4rem;position:relative}[dir=ltr] .md-typeset :-webkit-any(.admonition-title,summary){margin-left:-.8rem;margin-right:-.6rem}[dir=ltr] .md-typeset :-moz-any(.admonition-title,summary){margin-left:-.8rem;margin-right:-.6rem}[dir=ltr] .md-typeset :is(.admonition-title,summary){margin-left:-.8rem;margin-right:-.6rem}[dir=rtl] .md-typeset :-webkit-any(.admonition-title,summary){margin-left:-.6rem;margin-right:-.8rem}[dir=rtl] .md-typeset :-moz-any(.admonition-title,summary){margin-left:-.6rem;margin-right:-.8rem}[dir=rtl] .md-typeset :is(.admonition-title,summary){margin-left:-.6rem;margin-right:-.8rem}[dir=ltr] .md-typeset :-webkit-any(.admonition-title,summary){padding-left:2.2rem;padding-right:.6rem}[dir=ltr] .md-typeset :-moz-any(.admonition-title,summary){padding-left:2.2rem;padding-right:.6rem}[dir=ltr] .md-typeset :is(.admonition-title,summary){padding-left:2.2rem;padding-right:.6rem}[dir=rtl] .md-typeset :-webkit-any(.admonition-title,summary){padding-left:.6rem;padding-right:2.2rem}[dir=rtl] .md-typeset :-moz-any(.admonition-title,summary){padding-left:.6rem;padding-right:2.2rem}[dir=rtl] .md-typeset :is(.admonition-title,summary){padding-left:.6rem;padding-right:2.2rem}[dir=ltr] .md-typeset :-webkit-any(.admonition-title,summary){border-left-width:.2rem}[dir=ltr] .md-typeset :-moz-any(.admonition-title,summary){border-left-width:.2rem}[dir=ltr] .md-typeset :is(.admonition-title,summary){border-left-width:.2rem}[dir=rtl] .md-typeset :-webkit-any(.admonition-title,summary){border-right-width:.2rem}[dir=rtl] .md-typeset :-moz-any(.admonition-title,summary){border-right-width:.2rem}[dir=rtl] .md-typeset :is(.admonition-title,summary){border-right-width:.2rem}[dir=ltr] .md-typeset :-webkit-any(.admonition-title,summary){border-top-left-radius:.1rem}[dir=ltr] .md-typeset :-moz-any(.admonition-title,summary){border-top-left-radius:.1rem}[dir=ltr] .md-typeset :is(.admonition-title,summary){border-top-left-radius:.1rem}[dir=rtl] .md-typeset :-webkit-any(.admonition-title,summary){border-top-right-radius:.1rem}[dir=rtl] .md-typeset :-moz-any(.admonition-title,summary){border-top-right-radius:.1rem}[dir=rtl] .md-typeset :is(.admonition-title,summary){border-top-right-radius:.1rem}[dir=ltr] .md-typeset :-webkit-any(.admonition-title,summary){border-top-right-radius:.1rem}[dir=ltr] .md-typeset :-moz-any(.admonition-title,summary){border-top-right-radius:.1rem}[dir=ltr] .md-typeset :is(.admonition-title,summary){border-top-right-radius:.1rem}[dir=rtl] .md-typeset :-webkit-any(.admonition-title,summary){border-top-left-radius:.1rem}[dir=rtl] .md-typeset :-moz-any(.admonition-title,summary){border-top-left-radius:.1rem}[dir=rtl] .md-typeset :is(.admonition-title,summary){border-top-left-radius:.1rem}.md-typeset :is(.admonition-title,summary){background-color:rgba(68,138,255,.1);border:none;font-weight:700;margin-bottom:0;margin-top:0;padding-bottom:.4rem;padding-top:.4rem;position:relative}html .md-typeset :-webkit-any(.admonition-title,summary):last-child{margin-bottom:0}html .md-typeset :-moz-any(.admonition-title,summary):last-child{margin-bottom:0}html .md-typeset :is(.admonition-title,summary):last-child{margin-bottom:0}.md-typeset :-webkit-any(.admonition-title,summary):before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset :-moz-any(.admonition-title,summary):before{background-color:#448aff;content:"";height:1rem;mask-image:var(--md-admonition-icon--note);mask-repeat:no-repeat;mask-size:contain;position:absolute;top:.625em;width:1rem}[dir=ltr] .md-typeset :-webkit-any(.admonition-title,summary):before{left:.8rem}[dir=ltr] .md-typeset :-moz-any(.admonition-title,summary):before{left:.8rem}[dir=ltr] .md-typeset :is(.admonition-title,summary):before{left:.8rem}[dir=rtl] .md-typeset :-webkit-any(.admonition-title,summary):before{right:.8rem}[dir=rtl] .md-typeset :-moz-any(.admonition-title,summary):before{right:.8rem}[dir=rtl] .md-typeset :is(.admonition-title,summary):before{right:.8rem}.md-typeset :is(.admonition-title,summary):before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.note){border-color:#448aff}.md-typeset :-moz-any(.admonition,details):-moz-any(.note){border-color:#448aff}.md-typeset :is(.admonition,details):is(.note){border-color:#448aff}.md-typeset :-webkit-any(.note)>:-webkit-any(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :-moz-any(.note)>:-moz-any(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :is(.note)>:is(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :-webkit-any(.note)>:-webkit-any(.admonition-title,summary):before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.note)>:-moz-any(.admonition-title,summary):before{background-color:#448aff;mask-image:var(--md-admonition-icon--note);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.note)>:is(.admonition-title,summary):before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :-moz-any(.admonition,details):-moz-any(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :is(.admonition,details):is(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :-webkit-any(.abstract,.summary,.tldr)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :-moz-any(.abstract,.summary,.tldr)>:-moz-any(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :is(.abstract,.summary,.tldr)>:is(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :-webkit-any(.abstract,.summary,.tldr)>:-webkit-any(.admonition-title,summary):before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.abstract,.summary,.tldr)>:-moz-any(.admonition-title,summary):before{background-color:#00b0ff;mask-image:var(--md-admonition-icon--abstract);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.abstract,.summary,.tldr)>:is(.admonition-title,summary):before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.info,.todo){border-color:#00b8d4}.md-typeset :-moz-any(.admonition,details):-moz-any(.info,.todo){border-color:#00b8d4}.md-typeset :is(.admonition,details):is(.info,.todo){border-color:#00b8d4}.md-typeset :-webkit-any(.info,.todo)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :-moz-any(.info,.todo)>:-moz-any(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :is(.info,.todo)>:is(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :-webkit-any(.info,.todo)>:-webkit-any(.admonition-title,summary):before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.info,.todo)>:-moz-any(.admonition-title,summary):before{background-color:#00b8d4;mask-image:var(--md-admonition-icon--info);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.info,.todo)>:is(.admonition-title,summary):before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :-moz-any(.admonition,details):-moz-any(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :is(.admonition,details):is(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :-webkit-any(.tip,.hint,.important)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :-moz-any(.tip,.hint,.important)>:-moz-any(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :is(.tip,.hint,.important)>:is(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :-webkit-any(.tip,.hint,.important)>:-webkit-any(.admonition-title,summary):before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.tip,.hint,.important)>:-moz-any(.admonition-title,summary):before{background-color:#00bfa5;mask-image:var(--md-admonition-icon--tip);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.tip,.hint,.important)>:is(.admonition-title,summary):before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.success,.check,.done){border-color:#00c853}.md-typeset :-moz-any(.admonition,details):-moz-any(.success,.check,.done){border-color:#00c853}.md-typeset :is(.admonition,details):is(.success,.check,.done){border-color:#00c853}.md-typeset :-webkit-any(.success,.check,.done)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :-moz-any(.success,.check,.done)>:-moz-any(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :is(.success,.check,.done)>:is(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :-webkit-any(.success,.check,.done)>:-webkit-any(.admonition-title,summary):before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.success,.check,.done)>:-moz-any(.admonition-title,summary):before{background-color:#00c853;mask-image:var(--md-admonition-icon--success);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.success,.check,.done)>:is(.admonition-title,summary):before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.question,.help,.faq){border-color:#64dd17}.md-typeset :-moz-any(.admonition,details):-moz-any(.question,.help,.faq){border-color:#64dd17}.md-typeset :is(.admonition,details):is(.question,.help,.faq){border-color:#64dd17}.md-typeset :-webkit-any(.question,.help,.faq)>:-webkit-any(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :-moz-any(.question,.help,.faq)>:-moz-any(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :is(.question,.help,.faq)>:is(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :-webkit-any(.question,.help,.faq)>:-webkit-any(.admonition-title,summary):before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.question,.help,.faq)>:-moz-any(.admonition-title,summary):before{background-color:#64dd17;mask-image:var(--md-admonition-icon--question);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.question,.help,.faq)>:is(.admonition-title,summary):before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :-moz-any(.admonition,details):-moz-any(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :is(.admonition,details):is(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :-webkit-any(.warning,.caution,.attention)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :-moz-any(.warning,.caution,.attention)>:-moz-any(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :is(.warning,.caution,.attention)>:is(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :-webkit-any(.warning,.caution,.attention)>:-webkit-any(.admonition-title,summary):before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.warning,.caution,.attention)>:-moz-any(.admonition-title,summary):before{background-color:#ff9100;mask-image:var(--md-admonition-icon--warning);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.warning,.caution,.attention)>:is(.admonition-title,summary):before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :-moz-any(.admonition,details):-moz-any(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :is(.admonition,details):is(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :-webkit-any(.failure,.fail,.missing)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :-moz-any(.failure,.fail,.missing)>:-moz-any(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :is(.failure,.fail,.missing)>:is(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :-webkit-any(.failure,.fail,.missing)>:-webkit-any(.admonition-title,summary):before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.failure,.fail,.missing)>:-moz-any(.admonition-title,summary):before{background-color:#ff5252;mask-image:var(--md-admonition-icon--failure);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.failure,.fail,.missing)>:is(.admonition-title,summary):before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.danger,.error){border-color:#ff1744}.md-typeset :-moz-any(.admonition,details):-moz-any(.danger,.error){border-color:#ff1744}.md-typeset :is(.admonition,details):is(.danger,.error){border-color:#ff1744}.md-typeset :-webkit-any(.danger,.error)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :-moz-any(.danger,.error)>:-moz-any(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :is(.danger,.error)>:is(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :-webkit-any(.danger,.error)>:-webkit-any(.admonition-title,summary):before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.danger,.error)>:-moz-any(.admonition-title,summary):before{background-color:#ff1744;mask-image:var(--md-admonition-icon--danger);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.danger,.error)>:is(.admonition-title,summary):before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.bug){border-color:#f50057}.md-typeset :-moz-any(.admonition,details):-moz-any(.bug){border-color:#f50057}.md-typeset :is(.admonition,details):is(.bug){border-color:#f50057}.md-typeset :-webkit-any(.bug)>:-webkit-any(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :-moz-any(.bug)>:-moz-any(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :is(.bug)>:is(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :-webkit-any(.bug)>:-webkit-any(.admonition-title,summary):before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.bug)>:-moz-any(.admonition-title,summary):before{background-color:#f50057;mask-image:var(--md-admonition-icon--bug);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.bug)>:is(.admonition-title,summary):before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.example){border-color:#7c4dff}.md-typeset :-moz-any(.admonition,details):-moz-any(.example){border-color:#7c4dff}.md-typeset :is(.admonition,details):is(.example){border-color:#7c4dff}.md-typeset :-webkit-any(.example)>:-webkit-any(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :-moz-any(.example)>:-moz-any(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :is(.example)>:is(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :-webkit-any(.example)>:-webkit-any(.admonition-title,summary):before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.example)>:-moz-any(.admonition-title,summary):before{background-color:#7c4dff;mask-image:var(--md-admonition-icon--example);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.example)>:is(.admonition-title,summary):before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.quote,.cite){border-color:#9e9e9e}.md-typeset :-moz-any(.admonition,details):-moz-any(.quote,.cite){border-color:#9e9e9e}.md-typeset :is(.admonition,details):is(.quote,.cite){border-color:#9e9e9e}.md-typeset :-webkit-any(.quote,.cite)>:-webkit-any(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :-moz-any(.quote,.cite)>:-moz-any(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :is(.quote,.cite)>:is(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :-webkit-any(.quote,.cite)>:-webkit-any(.admonition-title,summary):before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.md-typeset :-moz-any(.quote,.cite)>:-moz-any(.admonition-title,summary):before{background-color:#9e9e9e;mask-image:var(--md-admonition-icon--quote);mask-repeat:no-repeat;mask-size:contain}.md-typeset :is(.quote,.cite)>:is(.admonition-title,summary):before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}:root{--md-footnotes-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}[dir=ltr] .md-typeset .footnote>ol{margin-left:0}[dir=rtl] .md-typeset .footnote>ol{margin-right:0}.md-typeset .footnote>ol>li{transition:color 125ms}.md-typeset .footnote>ol>li:target{color:var(--md-default-fg-color)}.md-typeset .footnote>ol>li:focus-within .footnote-backref{opacity:1;transform:translateX(0);transition:none}.md-typeset .footnote>ol>li:-webkit-any(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li:-moz-any(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li:is(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li>:first-child{margin-top:0}.md-typeset .footnote-ref{font-size:.75em;font-weight:700}html .md-typeset .footnote-ref{outline-offset:.1rem}.md-typeset [id^="fnref:"]:target>.footnote-ref{outline:auto}.md-typeset .footnote-backref{color:var(--md-typeset-a-color);display:inline-block;font-size:0;opacity:0;transform:translateX(.25rem);transition:color .25s,transform .25s .25s,opacity 125ms .25s;vertical-align:text-bottom}@media print{.md-typeset .footnote-backref{color:var(--md-typeset-a-color);opacity:1;transform:translateX(0)}}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-.25rem)}.md-typeset .footnote-backref:hover{color:var(--md-accent-fg-color)}.md-typeset .footnote-backref:before{background-color:currentcolor;content:"";display:inline-block;height:.8rem;-webkit-mask-image:var(--md-footnotes-icon);mask-image:var(--md-footnotes-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.8rem}[dir=rtl] .md-typeset .footnote-backref:before svg{transform:scaleX(-1)}[dir=ltr] .md-typeset .headerlink{margin-left:.5rem}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem}.md-typeset .headerlink{color:var(--md-default-fg-color--lighter);display:inline-block;opacity:0;transition:color .25s,opacity 125ms}@media print{.md-typeset .headerlink{display:none}}.md-typeset .headerlink:focus,.md-typeset :-webkit-any(:hover,:target)>.headerlink{opacity:1;-webkit-transition:color .25s,opacity 125ms;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset :-moz-any(:hover,:target)>.headerlink{opacity:1;-moz-transition:color .25s,opacity 125ms;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset :is(:hover,:target)>.headerlink{opacity:1;transition:color .25s,opacity 125ms}.md-typeset .headerlink:-webkit-any(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset .headerlink:-moz-any(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset .headerlink:is(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset :target{--md-scroll-margin:3.6rem;--md-scroll-offset:0rem;scroll-margin-top:calc(var(--md-scroll-margin) - var(--md-scroll-offset))}@media screen and (min-width:76.25em){.md-header--lifted~.md-container .md-typeset :target{--md-scroll-margin:6rem}}.md-typeset :-webkit-any(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset :-moz-any(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset :is(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset h4:target{--md-scroll-offset:0.15rem}.md-typeset div.arithmatex{overflow:auto}@media screen and (max-width:44.9375em){.md-typeset div.arithmatex{margin:0 -.8rem}}.md-typeset div.arithmatex>*{margin-left:auto!important;margin-right:auto!important;padding:0 .8rem;touch-action:auto;width:-webkit-min-content;width:-moz-min-content;width:min-content}.md-typeset div.arithmatex>* mjx-container{margin:0!important}.md-typeset :-webkit-any(del,ins,.comment).critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset :-moz-any(del,ins,.comment).critic{box-decoration-break:clone}.md-typeset :is(del,ins,.comment).critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset del.critic{background-color:var(--md-typeset-del-color)}.md-typeset ins.critic{background-color:var(--md-typeset-ins-color)}.md-typeset .critic.comment{color:var(--md-code-hl-comment-color)}.md-typeset .critic.comment:before{content:"/* "}.md-typeset .critic.comment:after{content:" */"}.md-typeset .critic.block{box-shadow:none;display:block;margin:1em 0;overflow:auto;padding-left:.8rem;padding-right:.8rem}.md-typeset .critic.block>:first-child{margin-top:.5em}.md-typeset .critic.block>:last-child{margin-bottom:.5em}:root{--md-details-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset details{display:flow-root;overflow:visible;padding-top:0}.md-typeset details[open]>summary:after{transform:rotate(90deg)}.md-typeset details:not([open]){box-shadow:none;padding-bottom:0}.md-typeset details:not([open])>summary{border-radius:.1rem}[dir=ltr] .md-typeset summary{padding-right:1.8rem}[dir=rtl] .md-typeset summary{padding-left:1.8rem}[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset summary{cursor:pointer;display:block;min-height:1rem}.md-typeset summary.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset summary:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[dir=ltr] .md-typeset summary:after{right:.4rem}[dir=rtl] .md-typeset summary:after{left:.4rem}.md-typeset summary:after{background-color:currentcolor;content:"";height:1rem;-webkit-mask-image:var(--md-details-icon);mask-image:var(--md-details-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;transform:rotate(0deg);transition:transform .25s;width:1rem}[dir=rtl] .md-typeset summary:after{transform:rotate(180deg)}.md-typeset summary::marker{display:none}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset :-webkit-any(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :-moz-any(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :is(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :-webkit-any(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.md-typeset :-moz-any(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.md-typeset :is(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.highlight :-webkit-any(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight :-moz-any(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight :is(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight .p{color:var(--md-code-hl-punctuation-color)}.highlight :-webkit-any(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :-moz-any(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :is(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :-webkit-any(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :-moz-any(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :is(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :-webkit-any(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :-moz-any(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :is(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :-webkit-any(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :-moz-any(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :is(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :-webkit-any(.kc,.n){color:var(--md-code-hl-name-color)}.highlight :-moz-any(.kc,.n){color:var(--md-code-hl-name-color)}.highlight :is(.kc,.n){color:var(--md-code-hl-name-color)}.highlight :-webkit-any(.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :-moz-any(.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :is(.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :-webkit-any(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :-moz-any(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :is(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :-webkit-any(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :-moz-any(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :is(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :-webkit-any(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :-moz-any(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :is(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :-webkit-any(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :-moz-any(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :is(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :-webkit-any(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :-moz-any(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :is(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :-webkit-any(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight :-moz-any(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight :is(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight .gd{background-color:var(--md-typeset-del-color)}.highlight .gi{background-color:var(--md-typeset-ins-color)}.highlight .hll{background-color:var(--md-code-hl-color);display:block;margin:0 -1.1764705882em;padding:0 1.1764705882em}.highlight span.filename{background-color:var(--md-code-bg-color);border-bottom:.05rem solid var(--md-default-fg-color--lightest);border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:flow-root;font-size:.85em;font-weight:700;margin-top:1em;padding:.6617647059em 1.1764705882em;position:relative}.highlight span.filename+pre{margin-top:0}.highlight span.filename+pre>code{border-top-left-radius:0;border-top-right-radius:0}.highlight [data-linenos]:before{background-color:var(--md-code-bg-color);box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;color:var(--md-default-fg-color--light);content:attr(data-linenos);float:left;left:-1.1764705882em;margin-left:-1.1764705882em;margin-right:1.1764705882em;padding-left:1.1764705882em;position:-webkit-sticky;position:sticky;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:3}.highlight code a[id]{position:absolute;visibility:hidden}.highlight code[data-md-copying] .hll{display:contents}.highlight code[data-md-copying] .md-annotation{display:none}.highlighttable{display:flow-root}.highlighttable :-webkit-any(tbody,td){display:block;padding:0}.highlighttable :-moz-any(tbody,td){display:block;padding:0}.highlighttable :is(tbody,td){display:block;padding:0}.highlighttable tr{display:flex}.highlighttable pre{margin:0}.highlighttable th.filename{flex-grow:1;padding:0;text-align:left}.highlighttable th.filename span.filename{margin-top:0}.highlighttable .linenos{background-color:var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-top-left-radius:.1rem;font-size:.85em;padding:.7720588235em 0 .7720588235em 1.1764705882em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.highlighttable .linenodiv{box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;padding-right:.5882352941em}.highlighttable .linenodiv pre{color:var(--md-default-fg-color--light);text-align:right}.highlighttable .code{flex:1;min-width:0}.linenodiv a{color:inherit}.md-typeset .highlighttable{direction:ltr;margin:1em 0}.md-typeset .highlighttable>tbody>tr>.code>div>pre>code{border-bottom-left-radius:0;border-top-left-radius:0}.md-typeset .highlight+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset .highlight+.result:after{clear:both;content:"";display:block}@media screen and (max-width:44.9375em){.md-content__inner>.highlight{margin:1em -.8rem}.md-content__inner>.highlight>.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.code>div>pre>code,.md-content__inner>.highlight>.highlighttable>tbody>tr>.filename span.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.linenos,.md-content__inner>.highlight>pre>code{border-radius:0}.md-content__inner>.highlight+.result{border-left-width:0;border-radius:0;border-right-width:0;margin-left:-.8rem;margin-right:-.8rem}}.md-typeset .keys kbd:-webkit-any(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys kbd:-moz-any(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys kbd:is(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys span{color:var(--md-default-fg-color--light);padding:0 .2em}.md-typeset .keys .key-alt:before,.md-typeset .keys .key-left-alt:before,.md-typeset .keys .key-right-alt:before{content:"⎇";padding-right:.4em}.md-typeset .keys .key-command:before,.md-typeset .keys .key-left-command:before,.md-typeset .keys .key-right-command:before{content:"⌘";padding-right:.4em}.md-typeset .keys .key-control:before,.md-typeset .keys .key-left-control:before,.md-typeset .keys .key-right-control:before{content:"⌃";padding-right:.4em}.md-typeset .keys .key-left-meta:before,.md-typeset .keys .key-meta:before,.md-typeset .keys .key-right-meta:before{content:"◆";padding-right:.4em}.md-typeset .keys .key-left-option:before,.md-typeset .keys .key-option:before,.md-typeset .keys .key-right-option:before{content:"⌥";padding-right:.4em}.md-typeset .keys .key-left-shift:before,.md-typeset .keys .key-right-shift:before,.md-typeset .keys .key-shift:before{content:"⇧";padding-right:.4em}.md-typeset .keys .key-left-super:before,.md-typeset .keys .key-right-super:before,.md-typeset .keys .key-super:before{content:"❖";padding-right:.4em}.md-typeset .keys .key-left-windows:before,.md-typeset .keys .key-right-windows:before,.md-typeset .keys .key-windows:before{content:"⊞";padding-right:.4em}.md-typeset .keys .key-arrow-down:before{content:"↓";padding-right:.4em}.md-typeset .keys .key-arrow-left:before{content:"←";padding-right:.4em}.md-typeset .keys .key-arrow-right:before{content:"→";padding-right:.4em}.md-typeset .keys .key-arrow-up:before{content:"↑";padding-right:.4em}.md-typeset .keys .key-backspace:before{content:"⌫";padding-right:.4em}.md-typeset .keys .key-backtab:before{content:"⇤";padding-right:.4em}.md-typeset .keys .key-caps-lock:before{content:"⇪";padding-right:.4em}.md-typeset .keys .key-clear:before{content:"⌧";padding-right:.4em}.md-typeset .keys .key-context-menu:before{content:"☰";padding-right:.4em}.md-typeset .keys .key-delete:before{content:"⌦";padding-right:.4em}.md-typeset .keys .key-eject:before{content:"⏏";padding-right:.4em}.md-typeset .keys .key-end:before{content:"⤓";padding-right:.4em}.md-typeset .keys .key-escape:before{content:"⎋";padding-right:.4em}.md-typeset .keys .key-home:before{content:"⤒";padding-right:.4em}.md-typeset .keys .key-insert:before{content:"⎀";padding-right:.4em}.md-typeset .keys .key-page-down:before{content:"⇟";padding-right:.4em}.md-typeset .keys .key-page-up:before{content:"⇞";padding-right:.4em}.md-typeset .keys .key-print-screen:before{content:"⎙";padding-right:.4em}.md-typeset .keys .key-tab:after{content:"⇥";padding-left:.4em}.md-typeset .keys .key-num-enter:after{content:"⌤";padding-left:.4em}.md-typeset .keys .key-enter:after{content:"⏎";padding-left:.4em}:root{--md-tabbed-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-tabbed-icon--next:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .tabbed-set{border-radius:.1rem;display:flex;flex-flow:column wrap;margin:1em 0;position:relative}.md-typeset .tabbed-set>input{height:0;opacity:0;position:absolute;width:0}.md-typeset .tabbed-set>input:target{--md-scroll-offset:0.625em}.md-typeset .tabbed-labels{-ms-overflow-style:none;box-shadow:0 -.05rem var(--md-default-fg-color--lightest) inset;display:flex;max-width:100%;overflow:auto;scrollbar-width:none}@media print{.md-typeset .tabbed-labels{display:contents}}@media screen{.js .md-typeset .tabbed-labels{position:relative}.js .md-typeset .tabbed-labels:before{background:var(--md-accent-fg-color);bottom:0;content:"";display:block;height:2px;left:0;position:absolute;transform:translateX(var(--md-indicator-x));transition:width 225ms,transform .25s;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--md-indicator-width)}}.md-typeset .tabbed-labels::-webkit-scrollbar{display:none}.md-typeset .tabbed-labels>label{border-bottom:.1rem solid transparent;border-radius:.1rem .1rem 0 0;color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;font-size:.64rem;font-weight:700;padding:.78125em 1.25em .625em;scroll-margin-inline-start:1rem;transition:background-color .25s,color .25s;white-space:nowrap;width:auto}@media print{.md-typeset .tabbed-labels>label:first-child{order:1}.md-typeset .tabbed-labels>label:nth-child(2){order:2}.md-typeset .tabbed-labels>label:nth-child(3){order:3}.md-typeset .tabbed-labels>label:nth-child(4){order:4}.md-typeset .tabbed-labels>label:nth-child(5){order:5}.md-typeset .tabbed-labels>label:nth-child(6){order:6}.md-typeset .tabbed-labels>label:nth-child(7){order:7}.md-typeset .tabbed-labels>label:nth-child(8){order:8}.md-typeset .tabbed-labels>label:nth-child(9){order:9}.md-typeset .tabbed-labels>label:nth-child(10){order:10}.md-typeset .tabbed-labels>label:nth-child(11){order:11}.md-typeset .tabbed-labels>label:nth-child(12){order:12}.md-typeset .tabbed-labels>label:nth-child(13){order:13}.md-typeset .tabbed-labels>label:nth-child(14){order:14}.md-typeset .tabbed-labels>label:nth-child(15){order:15}.md-typeset .tabbed-labels>label:nth-child(16){order:16}.md-typeset .tabbed-labels>label:nth-child(17){order:17}.md-typeset .tabbed-labels>label:nth-child(18){order:18}.md-typeset .tabbed-labels>label:nth-child(19){order:19}.md-typeset .tabbed-labels>label:nth-child(20){order:20}}.md-typeset .tabbed-labels>label:hover{color:var(--md-accent-fg-color)}.md-typeset .tabbed-content{width:100%}@media print{.md-typeset .tabbed-content{display:contents}}.md-typeset .tabbed-block{display:none}@media print{.md-typeset .tabbed-block{display:block}.md-typeset .tabbed-block:first-child{order:1}.md-typeset .tabbed-block:nth-child(2){order:2}.md-typeset .tabbed-block:nth-child(3){order:3}.md-typeset .tabbed-block:nth-child(4){order:4}.md-typeset .tabbed-block:nth-child(5){order:5}.md-typeset .tabbed-block:nth-child(6){order:6}.md-typeset .tabbed-block:nth-child(7){order:7}.md-typeset .tabbed-block:nth-child(8){order:8}.md-typeset .tabbed-block:nth-child(9){order:9}.md-typeset .tabbed-block:nth-child(10){order:10}.md-typeset .tabbed-block:nth-child(11){order:11}.md-typeset .tabbed-block:nth-child(12){order:12}.md-typeset .tabbed-block:nth-child(13){order:13}.md-typeset .tabbed-block:nth-child(14){order:14}.md-typeset .tabbed-block:nth-child(15){order:15}.md-typeset .tabbed-block:nth-child(16){order:16}.md-typeset .tabbed-block:nth-child(17){order:17}.md-typeset .tabbed-block:nth-child(18){order:18}.md-typeset .tabbed-block:nth-child(19){order:19}.md-typeset .tabbed-block:nth-child(20){order:20}}.md-typeset .tabbed-block>.highlight:first-child>pre,.md-typeset .tabbed-block>pre:first-child{margin:0}.md-typeset .tabbed-block>.highlight:first-child>pre>code,.md-typeset .tabbed-block>pre:first-child>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child>.filename{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable{margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.filename span.filename,.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.linenos{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.code>div>pre>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child+.result{margin-top:-.125em}.md-typeset .tabbed-block>.tabbed-set{margin:0}.md-typeset .tabbed-button{align-self:center;border-radius:100%;color:var(--md-default-fg-color--light);cursor:pointer;display:block;height:.9rem;margin-top:.1rem;pointer-events:auto;transition:background-color .25s;width:.9rem}.md-typeset .tabbed-button:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .tabbed-button:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-tabbed-icon--prev);mask-image:var(--md-tabbed-icon--prev);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color .25s,transform .25s;width:100%}.md-typeset .tabbed-control{background:linear-gradient(to right,var(--md-default-bg-color) 60%,transparent);display:flex;height:1.9rem;justify-content:start;pointer-events:none;position:absolute;transition:opacity 125ms;width:1.2rem}[dir=rtl] .md-typeset .tabbed-control{transform:rotate(180deg)}.md-typeset .tabbed-control[hidden]{opacity:0}.md-typeset .tabbed-control--next{background:linear-gradient(to left,var(--md-default-bg-color) 60%,transparent);justify-content:end;right:0}.md-typeset .tabbed-control--next .tabbed-button:after{-webkit-mask-image:var(--md-tabbed-icon--next);mask-image:var(--md-tabbed-icon--next)}@media screen and (max-width:44.9375em){[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels{margin:0 -.8rem;max-width:100vw;scroll-padding-inline-start:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels:after{content:""}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-left:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-right:-.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{width:2rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-right:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-left:-.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{width:2rem}}@media screen{.md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){color:var(--md-accent-fg-color)}.md-typeset .no-js .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .no-js .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .no-js .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .no-js .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .no-js .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .no-js .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .no-js .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .no-js .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .no-js .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .no-js .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .no-js .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .no-js .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .no-js .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .no-js .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .no-js .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .no-js .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .no-js .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .no-js .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .no-js .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .no-js .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),.no-js .md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.no-js .md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.no-js .md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.no-js .md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.no-js .md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.no-js .md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.no-js .md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.no-js .md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.no-js .md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.no-js .md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.no-js .md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.no-js .md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.no-js .md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.no-js .md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.no-js .md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.no-js .md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.no-js .md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.no-js .md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.no-js .md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.no-js .md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){border-color:var(--md-accent-fg-color)}}.md-typeset .tabbed-set>input:first-child.focus-visible~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10).focus-visible~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11).focus-visible~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12).focus-visible~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13).focus-visible~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14).focus-visible~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15).focus-visible~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16).focus-visible~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17).focus-visible~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18).focus-visible~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19).focus-visible~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2).focus-visible~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20).focus-visible~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3).focus-visible~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4).focus-visible~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5).focus-visible~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6).focus-visible~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7).focus-visible~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8).focus-visible~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9).focus-visible~.tabbed-labels>:nth-child(9){background-color:var(--md-accent-fg-color--transparent)}.md-typeset .tabbed-set>input:first-child:checked~.tabbed-content>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-content>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-content>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-content>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-content>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-content>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-content>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-content>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-content>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-content>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-content>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-content>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-content>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-content>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-content>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-content>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-content>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-content>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-content>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-content>:nth-child(9){display:block}:root{--md-tasklist-icon:url('data:image/svg+xml;charset=utf-8,');--md-tasklist-icon--checked:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .task-list-item{list-style-type:none;position:relative}[dir=ltr] .md-typeset .task-list-item [type=checkbox]{left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}[dir=ltr] .md-typeset .task-list-indicator:before{left:-1.5em}[dir=rtl] .md-typeset .task-list-indicator:before{right:-1.5em}.md-typeset .task-list-indicator:before{background-color:var(--md-default-fg-color--lightest);content:"";height:1.25em;-webkit-mask-image:var(--md-tasklist-icon);mask-image:var(--md-tasklist-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.15em;width:1.25em}.md-typeset [type=checkbox]:checked+.task-list-indicator:before{background-color:#00e676;-webkit-mask-image:var(--md-tasklist-icon--checked);mask-image:var(--md-tasklist-icon--checked)}:root>*{--md-mermaid-font-family:var(--md-text-font-family),sans-serif;--md-mermaid-edge-color:var(--md-code-fg-color);--md-mermaid-node-bg-color:var(--md-accent-fg-color--transparent);--md-mermaid-node-fg-color:var(--md-accent-fg-color);--md-mermaid-label-bg-color:var(--md-default-bg-color);--md-mermaid-label-fg-color:var(--md-code-fg-color)}.mermaid{line-height:normal;margin:1em 0}@media screen and (min-width:45em){[dir=ltr] .md-typeset .inline{margin-right:.8rem}[dir=rtl] .md-typeset .inline{margin-left:.8rem}.md-typeset .inline{float:left;margin-bottom:.8rem;margin-top:0;width:11.7rem}[dir=rtl] .md-typeset .inline{float:right}[dir=ltr] .md-typeset .inline.end{margin-left:.8rem;margin-right:0}[dir=rtl] .md-typeset .inline.end{margin-left:0;margin-right:.8rem}.md-typeset .inline.end{float:right}[dir=rtl] .md-typeset .inline.end{float:left}} \ No newline at end of file diff --git a/assets/stylesheets/main.69437709.min.css.map b/assets/stylesheets/main.69437709.min.css.map deleted file mode 100644 index 4c56066..0000000 --- a/assets/stylesheets/main.69437709.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["src/assets/stylesheets/main/extensions/pymdownx/_keys.scss","../../../src/assets/stylesheets/main.scss","src/assets/stylesheets/main/_resets.scss","src/assets/stylesheets/main/_colors.scss","src/assets/stylesheets/main/_icons.scss","src/assets/stylesheets/main/_typeset.scss","src/assets/stylesheets/utilities/_break.scss","src/assets/stylesheets/main/layout/_banner.scss","src/assets/stylesheets/main/layout/_base.scss","src/assets/stylesheets/main/layout/_clipboard.scss","src/assets/stylesheets/main/layout/_consent.scss","src/assets/stylesheets/main/layout/_content.scss","src/assets/stylesheets/main/layout/_dialog.scss","src/assets/stylesheets/main/layout/_feedback.scss","src/assets/stylesheets/main/layout/_footer.scss","src/assets/stylesheets/main/layout/_form.scss","src/assets/stylesheets/main/layout/_header.scss","src/assets/stylesheets/main/layout/_nav.scss","src/assets/stylesheets/main/layout/_search.scss","src/assets/stylesheets/main/layout/_select.scss","src/assets/stylesheets/main/layout/_sidebar.scss","src/assets/stylesheets/main/layout/_source.scss","src/assets/stylesheets/main/layout/_tabs.scss","src/assets/stylesheets/main/layout/_tag.scss","src/assets/stylesheets/main/layout/_tooltip.scss","src/assets/stylesheets/main/layout/_top.scss","src/assets/stylesheets/main/layout/_version.scss","src/assets/stylesheets/main/extensions/markdown/_admonition.scss","node_modules/material-design-color/material-color.scss","src/assets/stylesheets/main/extensions/markdown/_footnotes.scss","src/assets/stylesheets/main/extensions/markdown/_toc.scss","src/assets/stylesheets/main/extensions/pymdownx/_arithmatex.scss","src/assets/stylesheets/main/extensions/pymdownx/_critic.scss","src/assets/stylesheets/main/extensions/pymdownx/_details.scss","src/assets/stylesheets/main/extensions/pymdownx/_emoji.scss","src/assets/stylesheets/main/extensions/pymdownx/_highlight.scss","src/assets/stylesheets/main/extensions/pymdownx/_tabbed.scss","src/assets/stylesheets/main/extensions/pymdownx/_tasklist.scss","src/assets/stylesheets/main/integrations/_mermaid.scss","src/assets/stylesheets/main/_modifiers.scss"],"names":[],"mappings":"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CALA,UnC4lHN,CmC7kHM,aAII,6CACE,OnC4kHV,CmC7kHQ,8CACE,OnC+kHV,CmChlHQ,8CACE,OnCklHV,CmCnlHQ,8CACE,OnCqlHV,CmCtlHQ,8CACE,OnCwlHV,CmCzlHQ,8CACE,OnC2lHV,CmC5lHQ,8CACE,OnC8lHV,CmC/lHQ,8CACE,OnCimHV,CmClmHQ,8CACE,OnComHV,CmCrmHQ,+CACE,QnCumHV,CmCxmHQ,+CACE,QnC0mHV,CmC3mHQ,+CACE,QnC6mHV,CmC9mHQ,+CACE,QnCgnHV,CmCjnHQ,+CACE,QnCmnHV,CmCpnHQ,+CACE,QnCsnHV,CmCvnHQ,+CACE,QnCynHV,CmC1nHQ,+CACE,QnC4nHV,CmC7nHQ,+CACE,QnC+nHV,CmChoHQ,+CACE,QnCkoHV,CmCnoHQ,+CACE,QnCqoHV,CACF,CmChoHM,uCACE,+BnCkoHR,CmC5nHE,4BACE,UnC8nHJ,CmC3nHI,aAJF,4BAKI,gBnC8nHJ,CACF,CmC1nHE,0BACE,YnC4nHJ,CmCznHI,aAJF,0BAKI,anC4nHJ,CmCxnHM,sCACE,OnC0nHR,CmC3nHM,uCACE,OnC6nHR,CmC9nHM,uCACE,OnCgoHR,CmCjoHM,uCACE,OnCmoHR,CmCpoHM,uCACE,OnCsoHR,CmCvoHM,uCACE,OnCyoHR,CmC1oHM,uCACE,OnC4oHR,CmC7oHM,uCACE,OnC+oHR,CmChpHM,uCACE,OnCkpHR,CmCnpHM,wCACE,QnCqpHR,CmCtpHM,wCACE,QnCwpHR,CmCzpHM,wCACE,QnC2pHR,CmC5pHM,wCACE,QnC8pHR,CmC/pHM,wCACE,QnCiqHR,CmClqHM,wCACE,QnCoqHR,CmCrqHM,wCACE,QnCuqHR,CmCxqHM,wCACE,QnC0qHR,CmC3qHM,wCACE,QnC6qHR,CmC9qHM,wCACE,QnCgrHR,CmCjrHM,wCACE,QnCmrHR,CACF,CmC7qHI,+FAEE,QnC+qHN,CmC5qHM,yGACE,wBAAA,CACA,yBnC+qHR,CmCtqHM,2DAEE,wBAAA,CACA,yBAAA,CAFA,QnC0qHR,CmCnqHM,iEACE,QnCqqHR,CmClqHQ,qLAGE,wBAAA,CACA,yBAAA,CAFA,QnCsqHV,CmChqHQ,6FACE,wBAAA,CACA,yBnCkqHV,CmC7pHM,yDACE,kBnC+pHR,CmC1pHI,sCACE,QnC4pHN,CmCvpHE,2BAEE,iBAAA,CAKA,kBAAA,CADA,uCAAA,CAEA,cAAA,CAPA,aAAA,CAGA,YAAA,CACA,gBAAA,CAKA,mBAAA,CADA,gCAAA,CANA,WnCgqHJ,CmCtpHI,iCAEE,uDAAA,CADA,+BnCypHN,CmCppHI,iCAIE,6BAAA,CAOA,UAAA,CAVA,aAAA,CAEA,WAAA,CAKA,8CAAA,CAAA,sCAAA,CACA,6BAAA,CAAA,qBAAA,CACA,yBAAA,CAAA,iBAAA,CALA,+CACE,CAJF,UnC6pHN,CmC/oHE,4BAME,+EACE,CALF,YAAA,CAGA,aAAA,CAFA,qBAAA,CAUA,mBAAA,CAZA,iBAAA,CAWA,wBAAA,CARA,YnCqpHJ,CmCzoHI,sCACE,wBnC2oHN,CmCvoHI,oCACE,SnCyoHN,CmCroHI,kCAGE,8EACE,CAFF,mBAAA,CADA,OnCyoHN,CmC/nHM,uDACE,8CAAA,CAAA,sCnCioHR,CKhvHI,wC8B6HF,wDAGE,kBnCwnHF,CmC3nHA,wDAGE,mBnCwnHF,CmC3nHA,8CAEE,eAAA,CADA,eAAA,CAGA,iCnCunHF,CmCnnHE,8DACE,mBnCsnHJ,CmCvnHE,8DACE,kBnCsnHJ,CmCvnHE,oDAEE,UnCqnHJ,CmCjnHE,8EAEE,kBnConHJ,CmCtnHE,8EAEE,mBnConHJ,CmCtnHE,8EAGE,kBnCmnHJ,CmCtnHE,8EAGE,mBnCmnHJ,CmCtnHE,oEACE,UnCqnHJ,CmC/mHE,8EAEE,mBnCknHJ,CmCpnHE,8EAEE,kBnCknHJ,CmCpnHE,8EAGE,mBnCinHJ,CmCpnHE,8EAGE,kBnCinHJ,CmCpnHE,oEACE,UnCmnHJ,CACF,CmCrmHE,cAHF,olDAII,+BnCwmHF,CmCrmHE,g8GACE,sCnCumHJ,CACF,CmClmHA,4sDACE,uDnCqmHF,CmCjmHA,wmDACE,anComHF,CoCh9HA,MACE,mVAAA,CAEA,4VpCo9HF,CoC18HE,4BAEE,oBAAA,CADA,iBpC88HJ,CoCz8HI,sDAGE,SpC28HN,CoC98HI,sDAGE,UpC28HN,CoC98HI,4CACE,iBAAA,CACA,SpC48HN,CoCt8HE,+CAEE,SAAA,CADA,UpCy8HJ,CoCp8HE,kDAGE,WpC68HJ,CoCh9HE,kDAGE,YpC68HJ,CoCh9HE,wCAME,qDAAA,CAIA,UAAA,CALA,aAAA,CAEA,0CAAA,CAAA,kCAAA,CACA,6BAAA,CAAA,qBAAA,CACA,yBAAA,CAAA,iBAAA,CARA,iBAAA,CACA,SAAA,CAEA,YpC48HJ,CoCl8HE,gEACE,wBT0Wa,CSzWb,mDAAA,CAAA,2CpCo8HJ,CqCr/HA,QACE,8DAAA,CAGA,+CAAA,CACA,iEAAA,CACA,oDAAA,CACA,sDAAA,CACA,mDrCs/HF,CqCl/HA,SAEE,kBAAA,CADA,YrCs/HF,CK71HI,mCiChKA,8BAIE,kBtCkgIJ,CsCtgIE,8BAIE,iBtCkgIJ,CsCtgIE,oBACE,UAAA,CAIA,mBAAA,CAFA,YAAA,CADA,atCogIJ,CsC9/HI,8BACE,WtCggIN,CsC5/HI,kCAEE,iBAAA,CAAA,ctC8/HN,CsChgII,kCAEE,aAAA,CAAA,kBtC8/HN,CsChgII,wBACE,WtC+/HN,CsC3/HM,kCACE,UtC6/HR,CACF","file":"main.css"} \ No newline at end of file diff --git a/class_derivations/index.html b/class_derivations/index.html index 1a48e16..d493f9a 100644 --- a/class_derivations/index.html +++ b/class_derivations/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: class_derivations

    -

    Instructions on how to derive a set of class in the target schema

    -

    URI: https://w3id.org/linkml/transformer/class_derivations

    +

    Instructions on how to derive a set of classes in the target schema from classes in the source schema.

    +

    URI: linkmltr:class_derivations

    +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    TransformationSpecificationA collection of mappings between source and target classes

    Properties

    Identifier and Mapping Information

    Schema Source

    • from schema: https://w3id.org/linkml/transformer
    +

    LinkML Source

    +
    +
    name: class_derivations
    +description: Instructions on how to derive a set of classes in the target schema from
    +  classes in the source schema.
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +multivalued: true
    +alias: class_derivations
    +owner: TransformationSpecification
    +domain_of:
    +- TransformationSpecification
    +range: ClassDerivation
    +inlined: true
     
    +
    +
    - -
    - + + + + + +
    +
    + + -
    @@ -364,10 +419,10 @@

    Schema Source

    - + - + diff --git a/class_name/index.html b/class_name/index.html index a48b0ce..c0f195e 100644 --- a/class_name/index.html +++ b/class_name/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: class_name

    -

    URI: https://w3id.org/linkml/transformer/class_name

    +

    URI: linkmltr:class_name

    +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    InverseUsed for back references

    Properties

    Identifier and Mapping Information

    Schema Source

    • from schema: https://w3id.org/linkml/transformer
    +

    LinkML Source

    +
    +
    name: class_name
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: class_name
    +owner: Inverse
    +domain_of:
    +- Inverse
    +range: string
     
    +
    +
    - -
    - + + + + + +
    +
    + + -
    @@ -363,10 +413,10 @@

    Schema Source

    - + - + diff --git a/class_named/index.html b/class_named/index.html index 86d63e1..7f5525f 100644 --- a/class_named/index.html +++ b/class_named/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: class_named

    local alias for the class

    -

    URI: https://w3id.org/linkml/transformer/class_named

    +

    URI: linkmltr:class_named

    +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    AliasedClassalias-class key value pairs for classes

    Properties

    Identifier and Mapping Information

    Schema Source

    • from schema: https://w3id.org/linkml/transformer
    +

    LinkML Source

    +
    +
    name: class_named
    +description: local alias for the class
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: class_named
    +owner: AliasedClass
    +domain_of:
    +- AliasedClass
    +range: string
     
    +
    +
    - -
    - + + + + + +
    +
    + + -
    @@ -364,10 +415,10 @@

    Schema Source

    - + - + diff --git a/copy_all/index.html b/copy_all/index.html new file mode 100644 index 0000000..ad96a05 --- /dev/null +++ b/copy_all/index.html @@ -0,0 +1,423 @@ + + + + + + + + + + + + + + + + + + Slot: copy_all - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Slot: copy_all

    +

    URI: linkmltr:copy_all

    + + +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    CopyDirective
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: copy_all
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: copy_all
    +owner: CopyDirective
    +domain_of:
    +- CopyDirective
    +range: boolean
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/copy_directives/index.html b/copy_directives/index.html new file mode 100644 index 0000000..072f59e --- /dev/null +++ b/copy_directives/index.html @@ -0,0 +1,446 @@ + + + + + + + + + + + + + + + + + + Slot: copy_directives - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Slot: copy_directives

    +

    URI: linkmltr:copy_directives

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    ElementDerivationA specification of how to derive a target element from a source element
    ClassDerivationA specification of how to derive a target class from a source class
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...
    PermissibleValueDerivationA specification of how to derive the value of a PV from a source enum
    PrefixDerivation
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: copy_directives
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +multivalued: true
    +alias: copy_directives
    +owner: ElementDerivation
    +domain_of:
    +- ElementDerivation
    +range: CopyDirective
    +inlined: true
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/element_name/index.html b/element_name/index.html new file mode 100644 index 0000000..5d834bb --- /dev/null +++ b/element_name/index.html @@ -0,0 +1,424 @@ + + + + + + + + + + + + + + + + + + Slot: element_name - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Slot: element_name

    +

    URI: linkmltr:element_name

    + + +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    CopyDirective
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: element_name
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +key: true
    +alias: element_name
    +owner: CopyDirective
    +domain_of:
    +- CopyDirective
    +range: string
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/enum_derivations/index.html b/enum_derivations/index.html new file mode 100644 index 0000000..9031214 --- /dev/null +++ b/enum_derivations/index.html @@ -0,0 +1,428 @@ + + + + + + + + + + + + + + + + + + Slot: enum_derivations - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Slot: enum_derivations

    +

    Instructions on how to derive a set of enums in the target schema

    +

    URI: linkmltr:enum_derivations

    + + +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    TransformationSpecificationA collection of mappings between source and target classes
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: enum_derivations
    +description: Instructions on how to derive a set of enums in the target schema
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +multivalued: true
    +alias: enum_derivations
    +owner: TransformationSpecification
    +domain_of:
    +- TransformationSpecification
    +range: EnumDerivation
    +inlined: true
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/exclude/index.html b/exclude/index.html new file mode 100644 index 0000000..3d89215 --- /dev/null +++ b/exclude/index.html @@ -0,0 +1,423 @@ + + + + + + + + + + + + + + + + + + Slot: exclude - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Slot: exclude

    +

    URI: linkmltr:exclude

    + + +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    CopyDirective
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: exclude
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: exclude
    +owner: CopyDirective
    +domain_of:
    +- CopyDirective
    +range: Any
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/exclude_all/index.html b/exclude_all/index.html new file mode 100644 index 0000000..bc2c497 --- /dev/null +++ b/exclude_all/index.html @@ -0,0 +1,423 @@ + + + + + + + + + + + + + + + + + + Slot: exclude_all - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Slot: exclude_all

    +

    URI: linkmltr:exclude_all

    + + +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    CopyDirective
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: exclude_all
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: exclude_all
    +owner: CopyDirective
    +domain_of:
    +- CopyDirective
    +range: boolean
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/expr/index.html b/expr/index.html index 8cb9566..eca788b 100644 --- a/expr/index.html +++ b/expr/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: expr

    -

    URI: https://w3id.org/linkml/transformer/expr

    +

    URI: linkmltr:expr

    +

    Applicable Classes

    + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...
    PermissibleValueDerivationA specification of how to derive the value of a PV from a source enum

    Properties

    Identifier and Mapping Information

    -

    Schema Source

    -
      -
    • from schema: https://w3id.org/linkml/transformer
    • -
    +

    LinkML Source

    +
    +
    name: expr
    +alias: expr
    +domain_of:
    +- SlotDerivation
    +- EnumDerivation
    +- PermissibleValueDerivation
    +range: string
     
    +
    +
    - -
    - + + + + + +
    +
    + + -
    @@ -363,10 +403,10 @@

    Schema Source

    - + - + diff --git a/hide/index.html b/hide/index.html index 89b4d96..7356ed0 100644 --- a/hide/index.html +++ b/hide/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: hide

    -

    URI: https://w3id.org/linkml/transformer/hide

    +

    URI: linkmltr:hide

    +

    Applicable Classes

    + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...
    PermissibleValueDerivationA specification of how to derive the value of a PV from a source enum

    Properties

    Identifier and Mapping Information

    -

    Schema Source

    -
      -
    • from schema: https://w3id.org/linkml/transformer
    • -
    +

    LinkML Source

    +
    +
    name: hide
    +alias: hide
    +domain_of:
    +- SlotDerivation
    +- EnumDerivation
    +- PermissibleValueDerivation
    +range: string
     
    +
    +
    - -
    - + + + + + +
    +
    + + -
    @@ -363,10 +403,10 @@

    Schema Source

    - + - + diff --git a/id/index.html b/id/index.html index 35abe1b..38e743f 100644 --- a/id/index.html +++ b/id/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: id

    -

    URI: https://w3id.org/linkml/transformer/id

    +

    Unique identifier for this transformation specification

    +

    URI: linkmltr:id

    +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    TransformationSpecificationA collection of mappings between source and target classes

    Properties

    Identifier and Mapping Information

    Schema Source

    • from schema: https://w3id.org/linkml/transformer
    +

    LinkML Source

    +
    +
    name: id
    +description: Unique identifier for this transformation specification
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +identifier: true
    +alias: id
    +owner: TransformationSpecification
    +domain_of:
    +- TransformationSpecification
    +range: string
     
    +
    +
    - -
    - + + + + + +
    +
    + + -
    @@ -363,10 +416,10 @@

    Schema Source

    - + - + diff --git a/include/index.html b/include/index.html new file mode 100644 index 0000000..0e22ab3 --- /dev/null +++ b/include/index.html @@ -0,0 +1,423 @@ + + + + + + + + + + + + + + + + + + Slot: include - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Slot: include

    +

    URI: linkmltr:include

    + + +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    CopyDirective
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: include
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: include
    +owner: CopyDirective
    +domain_of:
    +- CopyDirective
    +range: Any
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/index.html b/index.html index dac0125..0da4252 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    GitHub @@ -257,6 +259,13 @@ Enumerations + + +
  • + + Types + +
  • @@ -349,6 +358,13 @@ Enumerations +
  • + +
  • + + Types + +
  • @@ -366,18 +382,31 @@
  • -
    -
    - + +
    +
    + + + -

    LinkML Data Transformer Model

    -

    Datamodel for LinkML schema transformations

    +

    Datamodel for LinkML schema transformations.

    +

    A transformer generates instances of a target data model from +instances of a source data model. This transformation process +is guided by a TransformationSpecification.

    +

    The specification is independent of any one method for transforming +data. It allows different approaches, including:

    +
      +
    • direct implementation, transforming python or json objects
    • +
    • translation of the specification into SQL commands, to operate on relations
    • +
    • translation of the specification into SPARQL CONSTRUCTs, to operate on triples
    • +
    • translation into another specification language, such as R2RML
    • +

    URI: https://w3id.org/linkml/transformer Name: transformer

    Classes

    @@ -394,16 +423,44 @@

    Classes

    alias-class key value pairs for classes +Any + + + ClassDerivation -None +A specification of how to derive a target class from a source class + + +CopyDirective + + + +ElementDerivation +A specification of how to derive a target element from a source element + + +EnumDerivation +A specification of how to derive the value of a target enum from a source enu... Inverse -None +Used for back references + + +KeyVal + + + +PermissibleValueDerivation +A specification of how to derive the value of a PV from a source enum + + +PrefixDerivation + SlotDerivation -None +A specification of how to derive the value of a target slot from a source slo... TransformationSpecification @@ -421,44 +478,92 @@

    Slots

    +add + + + alias -None +name of the class to be aliased class_derivations -Instructions on how to derive a set of class in the target schema +Instructions on how to derive a set of classes in the target schema from clas... class_name -None + class_named local alias for the class +copy_all + + + +copy_directives + + + +element_name + + + +enum_derivations +Instructions on how to derive a set of enums in the target schema + + +exclude + + + +exclude_all + + + expr -None +An expression to be evaluated on the source object to derive the target slot hide -None +True if this is suppressed id -None +Unique identifier for this transformation specification + + +include + inverse_of -None +Used to specify a class-slot tuple that is the inverse of the derived/target ... + + +is_a + joins Additional classes to be joined to derive instances of the target class +key + + + +mixins + + + name -Name of the class in the target schema +Name of the element in the target schema + + +permissible_value_derivations +Instructions on how to derive a set of PVs in the target schema populated_from @@ -466,31 +571,35 @@

    Slots

    prefixes -None +prefix map slot_derivations -None +Instructions on how to derive a set of top level slots in the target schema slot_name -None + source_schema -None +name of the schema that describes the source (input) objects target_schema -None +name of the schema that describes the target (output) objects title -None +human readable title for this transformation specification type_designator -None + + + +value + @@ -509,6 +618,81 @@

    Enumerations

    +

    Types

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeDescription
    xsd:booleanA binary (true or false) value
    xsd:stringa compact URI
    xsd:datea date (year, month and day) in an idealized calendar
    linkml:DateOrDatetimeEither a date or a datetime
    xsd:dateTimeThe combination of a date and time
    xsd:decimalA real number with arbitrary precision that conforms to the xsd:decimal speci...
    xsd:doubleA real number that conforms to the xsd:double specification
    xsd:floatA real number that conforms to the xsd:float specification
    xsd:integerAn integer
    xsd:stringPrefix part of CURIE
    shex:nonLiteralA URI, CURIE or BNODE that represents a node in a model
    shex:iriA URI or CURIE that represents an object in the model
    xsd:stringA character string
    xsd:dateTimeA time object represents a (local) time of day, independent of any particular...
    xsd:anyURIa complete URI
    xsd:anyURIa URI or a CURIE

    Subsets

    @@ -528,12 +712,14 @@

    Subsets

    - - - + + + + + + - @@ -582,10 +768,10 @@

    Subsets

    - + - + diff --git a/inverse_of/index.html b/inverse_of/index.html index d9f0496..e29947e 100644 --- a/inverse_of/index.html +++ b/inverse_of/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: inverse_of

    -

    URI: https://w3id.org/linkml/transformer/inverse_of

    +

    Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot.

    +

    URI: linkmltr:inverse_of

    +

    Applicable Classes

    +
    + + + + + + + + + + + + +
    NameDescription
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...

    Properties

    • Range: Inverse
    • @@ -326,16 +360,37 @@

      Schema Source

      • from schema: https://w3id.org/linkml/transformer
      +

      LinkML Source

      +
      +
      name: inverse_of
      +description: Used to specify a class-slot tuple that is the inverse of the derived/target
      +  slot. This is used primarily for mapping to relational databases or formalisms that
      +  do not allow multiple values. The class representing the repeated element has a
      +  foreign key slot inserted in that 'back references' the original multivalued slot.
      +from_schema: https://w3id.org/linkml/transformer
      +rank: 1000
      +alias: inverse_of
      +owner: SlotDerivation
      +domain_of:
      +- SlotDerivation
      +range: Inverse
       
      +
      +
      - -
    - + + + + + +
    +
    + + -
    @@ -363,10 +418,10 @@

    Schema Source

    - + - + diff --git a/is_a/index.html b/is_a/index.html new file mode 100644 index 0000000..a394928 --- /dev/null +++ b/is_a/index.html @@ -0,0 +1,443 @@ + + + + + + + + + + + + + + + + + + Slot: is_a - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Slot: is_a

    +

    URI: linkmltr:is_a

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    ElementDerivationA specification of how to derive a target element from a source element
    ClassDerivationA specification of how to derive a target class from a source class
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...
    PermissibleValueDerivationA specification of how to derive the value of a PV from a source enum
    PrefixDerivation
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: is_a
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: is_a
    +owner: ElementDerivation
    +domain_of:
    +- ElementDerivation
    +range: ElementDerivation
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/joins/index.html b/joins/index.html index c6ff589..985574e 100644 --- a/joins/index.html +++ b/joins/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: joins

    Additional classes to be joined to derive instances of the target class

    -

    URI: https://w3id.org/linkml/transformer/joins

    +

    URI: linkmltr:joins

    +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    ClassDerivationA specification of how to derive a target class from a source class

    Properties

    +

    Comments

    +
      +
    • not yet implemented

    Identifier and Mapping Information

    Schema Source

    • from schema: https://w3id.org/linkml/transformer
    +

    LinkML Source

    +
    +
    name: joins
    +description: Additional classes to be joined to derive instances of the target class
    +comments:
    +- not yet implemented
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +multivalued: true
    +alias: joins
    +owner: ClassDerivation
    +domain_of:
    +- ClassDerivation
    +range: AliasedClass
    +inlined: true
     
    +
    +
    - -
    - + + + + + +
    +
    + + -
    @@ -364,10 +431,10 @@

    Schema Source

    - + - + diff --git a/key/index.html b/key/index.html new file mode 100644 index 0000000..6f36483 --- /dev/null +++ b/key/index.html @@ -0,0 +1,424 @@ + + + + + + + + + + + + + + + + + + Slot: key - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Slot: key

    +

    URI: linkmltr:key

    + + +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    KeyVal
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: key
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +key: true
    +alias: key
    +owner: KeyVal
    +domain_of:
    +- KeyVal
    +range: string
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/mixins/index.html b/mixins/index.html new file mode 100644 index 0000000..eca74d6 --- /dev/null +++ b/mixins/index.html @@ -0,0 +1,446 @@ + + + + + + + + + + + + + + + + + + Slot: mixins - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Slot: mixins

    +

    URI: linkmltr:mixins

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    ElementDerivationA specification of how to derive a target element from a source element
    ClassDerivationA specification of how to derive a target class from a source class
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...
    PermissibleValueDerivationA specification of how to derive the value of a PV from a source enum
    PrefixDerivation
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: mixins
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +multivalued: true
    +alias: mixins
    +owner: ElementDerivation
    +domain_of:
    +- ElementDerivation
    +range: ElementDerivation
    +inlined: true
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/name/index.html b/name/index.html index 6fffe35..9d263e8 100644 --- a/name/index.html +++ b/name/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: name

    -

    Name of the class in the target schema

    -

    URI: https://w3id.org/linkml/transformer/name

    +

    URI: linkmltr:name

    +

    Applicable Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    ElementDerivationA specification of how to derive a target element from a source element
    ClassDerivationA specification of how to derive a target class from a source class
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...
    PermissibleValueDerivationA specification of how to derive the value of a PV from a source enum
    PrefixDerivation

    Properties

    Identifier and Mapping Information

    -

    Schema Source

    -
      -
    • from schema: https://w3id.org/linkml/transformer
    • -
    +

    LinkML Source

    +
    +
    name: name
    +alias: name
    +domain_of:
    +- ElementDerivation
    +- ClassDerivation
    +- SlotDerivation
    +- EnumDerivation
    +- PermissibleValueDerivation
    +range: string
     
    +
    +
    - -
    - + + + + + +
    +
    + + -
    @@ -364,10 +417,10 @@

    Schema Source

    - + - + diff --git a/overview/index.html b/overview/index.html index 05e40d2..0f9a288 100644 --- a/overview/index.html +++ b/overview/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    GitHub @@ -278,16 +280,18 @@
    -
    -
    - + +
    +
    + + + -

    Mapping Between LinkML Schemas

    Draft

    2022-06-24

    @@ -922,12 +926,14 @@

    Roadmap

    - -
    - + + +
    +
    + + -
    @@ -976,10 +982,10 @@

    Roadmap

    - + - + diff --git a/permissible_value_derivations/index.html b/permissible_value_derivations/index.html new file mode 100644 index 0000000..209f13e --- /dev/null +++ b/permissible_value_derivations/index.html @@ -0,0 +1,428 @@ + + + + + + + + + + + + + + + + + + Slot: permissible_value_derivations - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Slot: permissible_value_derivations

    +

    Instructions on how to derive a set of PVs in the target schema

    +

    URI: linkmltr:permissible_value_derivations

    + + +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: permissible_value_derivations
    +description: Instructions on how to derive a set of PVs in the target schema
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +multivalued: true
    +alias: permissible_value_derivations
    +owner: EnumDerivation
    +domain_of:
    +- EnumDerivation
    +range: PermissibleValueDerivation
    +inlined: true
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/populated_from/index.html b/populated_from/index.html index 004583c..110bd8b 100644 --- a/populated_from/index.html +++ b/populated_from/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: populated_from

    -

    Name of the class in the source schema

    -

    URI: https://w3id.org/linkml/transformer/populated_from

    +

    URI: linkmltr:populated_from

    +

    Applicable Classes

    + + + + + + + + + + + + + + + + + + + + + +
    NameDescription
    ClassDerivationA specification of how to derive a target class from a source class
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...

    Properties

    Identifier and Mapping Information

    -

    Schema Source

    -
      -
    • from schema: https://w3id.org/linkml/transformer
    • -
    +

    LinkML Source

    +
    +
    name: populated_from
    +alias: populated_from
    +domain_of:
    +- ClassDerivation
    +- SlotDerivation
    +- EnumDerivation
    +range: string
     
    +
    +
    - -
    - + + + + + +
    +
    + + -
    @@ -364,10 +403,10 @@

    Schema Source

    - + - + diff --git a/prefixes/index.html b/prefixes/index.html index 0da0cb6..c5b7d18 100644 --- a/prefixes/index.html +++ b/prefixes/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: prefixes

    -

    URI: https://w3id.org/linkml/transformer/prefixes

    +

    prefix map

    +

    URI: linkmltr:prefixes

    +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    TransformationSpecificationA collection of mappings between source and target classes

    Properties

    Identifier and Mapping Information

    Schema Source

    • from schema: https://w3id.org/linkml/transformer
    +

    LinkML Source

    +
    +
    name: prefixes
    +description: prefix map
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: prefixes
    +owner: TransformationSpecification
    +domain_of:
    +- TransformationSpecification
    +range: string
     
    +
    +
    - -
    - + + + + + +
    +
    + + -
    @@ -363,10 +415,10 @@

    Schema Source

    - + - + diff --git a/same_as/index.html b/same_as/index.html index b7268f8..7896d81 100644 --- a/same_as/index.html +++ b/same_as/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    GitHub @@ -303,16 +305,18 @@
    -
    - +
    + + -
    @@ -364,10 +370,10 @@

    Schema Source

    - + - + diff --git a/search/search_index.json b/search/search_index.json index 556c53b..74fa293 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"LinkML Data Transformer Model Datamodel for LinkML schema transformations URI: https://w3id.org/linkml/transformer Name: transformer Classes Class Description AliasedClass alias-class key value pairs for classes ClassDerivation None Inverse None SlotDerivation None TransformationSpecification A collection of mappings between source and target classes Slots Slot Description alias None class_derivations Instructions on how to derive a set of class in the target schema class_name None class_named local alias for the class expr None hide None id None inverse_of None joins Additional classes to be joined to derive instances of the target class name Name of the class in the target schema populated_from Name of the class in the source schema prefixes None slot_derivations None slot_name None source_schema None target_schema None title None type_designator None Enumerations Enumeration Description Subsets Subset Description","title":"Index"},{"location":"#linkml-data-transformer-model","text":"Datamodel for LinkML schema transformations URI: https://w3id.org/linkml/transformer Name: transformer","title":"LinkML Data Transformer Model"},{"location":"#classes","text":"Class Description AliasedClass alias-class key value pairs for classes ClassDerivation None Inverse None SlotDerivation None TransformationSpecification A collection of mappings between source and target classes","title":"Classes"},{"location":"#slots","text":"Slot Description alias None class_derivations Instructions on how to derive a set of class in the target schema class_name None class_named local alias for the class expr None hide None id None inverse_of None joins Additional classes to be joined to derive instances of the target class name Name of the class in the target schema populated_from Name of the class in the source schema prefixes None slot_derivations None slot_name None source_schema None target_schema None title None type_designator None","title":"Slots"},{"location":"#enumerations","text":"Enumeration Description","title":"Enumerations"},{"location":"#subsets","text":"Subset Description","title":"Subsets"},{"location":"AliasedClass/","text":"Class: AliasedClass alias-class key value pairs for classes URI: tr:AliasedClass classDiagram class AliasedClass AliasedClass : alias AliasedClass : class_named Slots Name Range Cardinality Description Info alias NONE 0..1 None . class_named NONE 0..1 local alias for the class . Usages used by used in type used ClassDerivation joins range AliasedClass Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self ['tr:AliasedClass'] native ['tr:AliasedClass'] LinkML Specification Direct name: AliasedClass description: alias-class key value pairs for classes from_schema: https://w3id.org/linkml/transformer attributes: alias: name: alias from_schema: https://w3id.org/linkml/transformer key: true class_named: name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer Induced name: AliasedClass description: alias-class key value pairs for classes from_schema: https://w3id.org/linkml/transformer attributes: alias: name: alias from_schema: https://w3id.org/linkml/transformer key: true alias: alias owner: AliasedClass class_named: name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer alias: class_named owner: AliasedClass","title":"Class: AliasedClass"},{"location":"AliasedClass/#class-aliasedclass","text":"alias-class key value pairs for classes URI: tr:AliasedClass classDiagram class AliasedClass AliasedClass : alias AliasedClass : class_named","title":"Class: AliasedClass"},{"location":"AliasedClass/#slots","text":"Name Range Cardinality Description Info alias NONE 0..1 None . class_named NONE 0..1 local alias for the class .","title":"Slots"},{"location":"AliasedClass/#usages","text":"used by used in type used ClassDerivation joins range AliasedClass","title":"Usages"},{"location":"AliasedClass/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"AliasedClass/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"AliasedClass/#mappings","text":"Mapping Type Mapped Value self ['tr:AliasedClass'] native ['tr:AliasedClass']","title":"Mappings"},{"location":"AliasedClass/#linkml-specification","text":"","title":"LinkML Specification"},{"location":"AliasedClass/#direct","text":"name: AliasedClass description: alias-class key value pairs for classes from_schema: https://w3id.org/linkml/transformer attributes: alias: name: alias from_schema: https://w3id.org/linkml/transformer key: true class_named: name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer","title":"Direct"},{"location":"AliasedClass/#induced","text":"name: AliasedClass description: alias-class key value pairs for classes from_schema: https://w3id.org/linkml/transformer attributes: alias: name: alias from_schema: https://w3id.org/linkml/transformer key: true alias: alias owner: AliasedClass class_named: name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer alias: class_named owner: AliasedClass","title":"Induced"},{"location":"ClassDerivation/","text":"Class: ClassDerivation URI: tr:ClassDerivation classDiagram class ClassDerivation ClassDerivation : joins ClassDerivation : name ClassDerivation : populated_from ClassDerivation : slot_derivations Slots Name Range Cardinality Description Info name NONE 0..1 Name of the class in the target schema . populated_from xsd:string 0..1 Name of the class in the source schema . joins AliasedClass 0..* Additional classes to be joined to derive instances of the target class . slot_derivations SlotDerivation 0..* None . Usages used by used in type used TransformationSpecification class_derivations range ClassDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self ['tr:ClassDerivation'] native ['tr:ClassDerivation'] LinkML Specification Direct name: ClassDerivation from_schema: https://w3id.org/linkml/transformer attributes: name: name: name description: Name of the class in the target schema from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from description: Name of the class in the source schema from_schema: https://w3id.org/linkml/transformer range: string joins: name: joins description: Additional classes to be joined to derive instances of the target class from_schema: https://w3id.org/linkml/transformer multivalued: true range: AliasedClass inlined: true slot_derivations: name: slot_derivations from_schema: https://w3id.org/linkml/transformer multivalued: true range: SlotDerivation inlined: true Induced name: ClassDerivation from_schema: https://w3id.org/linkml/transformer attributes: name: name: name description: Name of the class in the target schema from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: ClassDerivation populated_from: name: populated_from description: Name of the class in the source schema from_schema: https://w3id.org/linkml/transformer alias: populated_from owner: ClassDerivation range: string joins: name: joins description: Additional classes to be joined to derive instances of the target class from_schema: https://w3id.org/linkml/transformer multivalued: true alias: joins owner: ClassDerivation range: AliasedClass inlined: true slot_derivations: name: slot_derivations from_schema: https://w3id.org/linkml/transformer multivalued: true alias: slot_derivations owner: ClassDerivation range: SlotDerivation inlined: true","title":"Class: ClassDerivation"},{"location":"ClassDerivation/#class-classderivation","text":"URI: tr:ClassDerivation classDiagram class ClassDerivation ClassDerivation : joins ClassDerivation : name ClassDerivation : populated_from ClassDerivation : slot_derivations","title":"Class: ClassDerivation"},{"location":"ClassDerivation/#slots","text":"Name Range Cardinality Description Info name NONE 0..1 Name of the class in the target schema . populated_from xsd:string 0..1 Name of the class in the source schema . joins AliasedClass 0..* Additional classes to be joined to derive instances of the target class . slot_derivations SlotDerivation 0..* None .","title":"Slots"},{"location":"ClassDerivation/#usages","text":"used by used in type used TransformationSpecification class_derivations range ClassDerivation","title":"Usages"},{"location":"ClassDerivation/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"ClassDerivation/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"ClassDerivation/#mappings","text":"Mapping Type Mapped Value self ['tr:ClassDerivation'] native ['tr:ClassDerivation']","title":"Mappings"},{"location":"ClassDerivation/#linkml-specification","text":"","title":"LinkML Specification"},{"location":"ClassDerivation/#direct","text":"name: ClassDerivation from_schema: https://w3id.org/linkml/transformer attributes: name: name: name description: Name of the class in the target schema from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from description: Name of the class in the source schema from_schema: https://w3id.org/linkml/transformer range: string joins: name: joins description: Additional classes to be joined to derive instances of the target class from_schema: https://w3id.org/linkml/transformer multivalued: true range: AliasedClass inlined: true slot_derivations: name: slot_derivations from_schema: https://w3id.org/linkml/transformer multivalued: true range: SlotDerivation inlined: true","title":"Direct"},{"location":"ClassDerivation/#induced","text":"name: ClassDerivation from_schema: https://w3id.org/linkml/transformer attributes: name: name: name description: Name of the class in the target schema from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: ClassDerivation populated_from: name: populated_from description: Name of the class in the source schema from_schema: https://w3id.org/linkml/transformer alias: populated_from owner: ClassDerivation range: string joins: name: joins description: Additional classes to be joined to derive instances of the target class from_schema: https://w3id.org/linkml/transformer multivalued: true alias: joins owner: ClassDerivation range: AliasedClass inlined: true slot_derivations: name: slot_derivations from_schema: https://w3id.org/linkml/transformer multivalued: true alias: slot_derivations owner: ClassDerivation range: SlotDerivation inlined: true","title":"Induced"},{"location":"Inverse/","text":"Class: Inverse URI: tr:Inverse classDiagram class Inverse Inverse : class_name Inverse : slot_name Slots Name Range Cardinality Description Info slot_name NONE 0..1 None . class_name NONE 0..1 None . Usages used by used in type used SlotDerivation inverse_of range Inverse Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self ['tr:Inverse'] native ['tr:Inverse'] LinkML Specification Direct name: Inverse from_schema: https://w3id.org/linkml/transformer aliases: - backref - back references attributes: slot_name: name: slot_name from_schema: https://w3id.org/linkml/transformer class_name: name: class_name from_schema: https://w3id.org/linkml/transformer Induced name: Inverse from_schema: https://w3id.org/linkml/transformer aliases: - backref - back references attributes: slot_name: name: slot_name from_schema: https://w3id.org/linkml/transformer alias: slot_name owner: Inverse class_name: name: class_name from_schema: https://w3id.org/linkml/transformer alias: class_name owner: Inverse","title":"Class: Inverse"},{"location":"Inverse/#class-inverse","text":"URI: tr:Inverse classDiagram class Inverse Inverse : class_name Inverse : slot_name","title":"Class: Inverse"},{"location":"Inverse/#slots","text":"Name Range Cardinality Description Info slot_name NONE 0..1 None . class_name NONE 0..1 None .","title":"Slots"},{"location":"Inverse/#usages","text":"used by used in type used SlotDerivation inverse_of range Inverse","title":"Usages"},{"location":"Inverse/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Inverse/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"Inverse/#mappings","text":"Mapping Type Mapped Value self ['tr:Inverse'] native ['tr:Inverse']","title":"Mappings"},{"location":"Inverse/#linkml-specification","text":"","title":"LinkML Specification"},{"location":"Inverse/#direct","text":"name: Inverse from_schema: https://w3id.org/linkml/transformer aliases: - backref - back references attributes: slot_name: name: slot_name from_schema: https://w3id.org/linkml/transformer class_name: name: class_name from_schema: https://w3id.org/linkml/transformer","title":"Direct"},{"location":"Inverse/#induced","text":"name: Inverse from_schema: https://w3id.org/linkml/transformer aliases: - backref - back references attributes: slot_name: name: slot_name from_schema: https://w3id.org/linkml/transformer alias: slot_name owner: Inverse class_name: name: class_name from_schema: https://w3id.org/linkml/transformer alias: class_name owner: Inverse","title":"Induced"},{"location":"SlotDerivation/","text":"Class: SlotDerivation URI: tr:SlotDerivation classDiagram class SlotDerivation SlotDerivation : expr SlotDerivation : hide SlotDerivation : inverse_of SlotDerivation : name SlotDerivation : populated_from SlotDerivation : type_designator Slots Name Range Cardinality Description Info name NONE 0..1 None . populated_from xsd:string 0..1 None . expr xsd:string 0..1 None . inverse_of Inverse 0..1 None . hide xsd:boolean 0..1 None . type_designator xsd:boolean 0..1 None . Usages used by used in type used ClassDerivation slot_derivations range SlotDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self ['tr:SlotDerivation'] native ['tr:SlotDerivation'] LinkML Specification Direct name: SlotDerivation from_schema: https://w3id.org/linkml/transformer attributes: name: name: name from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from from_schema: https://w3id.org/linkml/transformer range: string expr: name: expr from_schema: https://w3id.org/linkml/transformer range: string inverse_of: name: inverse_of from_schema: https://w3id.org/linkml/transformer range: Inverse hide: name: hide from_schema: https://w3id.org/linkml/transformer range: boolean type_designator: name: type_designator from_schema: https://w3id.org/linkml/transformer range: boolean Induced name: SlotDerivation from_schema: https://w3id.org/linkml/transformer attributes: name: name: name from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: SlotDerivation populated_from: name: populated_from from_schema: https://w3id.org/linkml/transformer alias: populated_from owner: SlotDerivation range: string expr: name: expr from_schema: https://w3id.org/linkml/transformer alias: expr owner: SlotDerivation range: string inverse_of: name: inverse_of from_schema: https://w3id.org/linkml/transformer alias: inverse_of owner: SlotDerivation range: Inverse hide: name: hide from_schema: https://w3id.org/linkml/transformer alias: hide owner: SlotDerivation range: boolean type_designator: name: type_designator from_schema: https://w3id.org/linkml/transformer alias: type_designator owner: SlotDerivation range: boolean","title":"Class: SlotDerivation"},{"location":"SlotDerivation/#class-slotderivation","text":"URI: tr:SlotDerivation classDiagram class SlotDerivation SlotDerivation : expr SlotDerivation : hide SlotDerivation : inverse_of SlotDerivation : name SlotDerivation : populated_from SlotDerivation : type_designator","title":"Class: SlotDerivation"},{"location":"SlotDerivation/#slots","text":"Name Range Cardinality Description Info name NONE 0..1 None . populated_from xsd:string 0..1 None . expr xsd:string 0..1 None . inverse_of Inverse 0..1 None . hide xsd:boolean 0..1 None . type_designator xsd:boolean 0..1 None .","title":"Slots"},{"location":"SlotDerivation/#usages","text":"used by used in type used ClassDerivation slot_derivations range SlotDerivation","title":"Usages"},{"location":"SlotDerivation/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"SlotDerivation/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"SlotDerivation/#mappings","text":"Mapping Type Mapped Value self ['tr:SlotDerivation'] native ['tr:SlotDerivation']","title":"Mappings"},{"location":"SlotDerivation/#linkml-specification","text":"","title":"LinkML Specification"},{"location":"SlotDerivation/#direct","text":"name: SlotDerivation from_schema: https://w3id.org/linkml/transformer attributes: name: name: name from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from from_schema: https://w3id.org/linkml/transformer range: string expr: name: expr from_schema: https://w3id.org/linkml/transformer range: string inverse_of: name: inverse_of from_schema: https://w3id.org/linkml/transformer range: Inverse hide: name: hide from_schema: https://w3id.org/linkml/transformer range: boolean type_designator: name: type_designator from_schema: https://w3id.org/linkml/transformer range: boolean","title":"Direct"},{"location":"SlotDerivation/#induced","text":"name: SlotDerivation from_schema: https://w3id.org/linkml/transformer attributes: name: name: name from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: SlotDerivation populated_from: name: populated_from from_schema: https://w3id.org/linkml/transformer alias: populated_from owner: SlotDerivation range: string expr: name: expr from_schema: https://w3id.org/linkml/transformer alias: expr owner: SlotDerivation range: string inverse_of: name: inverse_of from_schema: https://w3id.org/linkml/transformer alias: inverse_of owner: SlotDerivation range: Inverse hide: name: hide from_schema: https://w3id.org/linkml/transformer alias: hide owner: SlotDerivation range: boolean type_designator: name: type_designator from_schema: https://w3id.org/linkml/transformer alias: type_designator owner: SlotDerivation range: boolean","title":"Induced"},{"location":"TransformationSpecification/","text":"Class: TransformationSpecification A collection of mappings between source and target classes URI: tr:TransformationSpecification classDiagram class TransformationSpecification TransformationSpecification : class_derivations TransformationSpecification : id TransformationSpecification : prefixes TransformationSpecification : source_schema TransformationSpecification : target_schema TransformationSpecification : title Slots Name Range Cardinality Description Info id NONE 0..1 None . title NONE 0..1 None . prefixes NONE 0..1 None . source_schema NONE 0..1 None . target_schema NONE 0..1 None . class_derivations ClassDerivation 0..* Instructions on how to derive a set of class in the target schema . Usages Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self ['tr:TransformationSpecification'] native ['tr:TransformationSpecification'] LinkML Specification Direct name: TransformationSpecification description: A collection of mappings between source and target classes from_schema: https://w3id.org/linkml/transformer attributes: id: name: id from_schema: https://w3id.org/linkml/transformer title: name: title from_schema: https://w3id.org/linkml/transformer prefixes: name: prefixes from_schema: https://w3id.org/linkml/transformer source_schema: name: source_schema from_schema: https://w3id.org/linkml/transformer target_schema: name: target_schema from_schema: https://w3id.org/linkml/transformer class_derivations: name: class_derivations description: Instructions on how to derive a set of class in the target schema from_schema: https://w3id.org/linkml/transformer multivalued: true range: ClassDerivation inlined: true tree_root: true Induced name: TransformationSpecification description: A collection of mappings between source and target classes from_schema: https://w3id.org/linkml/transformer attributes: id: name: id from_schema: https://w3id.org/linkml/transformer alias: id owner: TransformationSpecification title: name: title from_schema: https://w3id.org/linkml/transformer alias: title owner: TransformationSpecification prefixes: name: prefixes from_schema: https://w3id.org/linkml/transformer alias: prefixes owner: TransformationSpecification source_schema: name: source_schema from_schema: https://w3id.org/linkml/transformer alias: source_schema owner: TransformationSpecification target_schema: name: target_schema from_schema: https://w3id.org/linkml/transformer alias: target_schema owner: TransformationSpecification class_derivations: name: class_derivations description: Instructions on how to derive a set of class in the target schema from_schema: https://w3id.org/linkml/transformer multivalued: true alias: class_derivations owner: TransformationSpecification range: ClassDerivation inlined: true tree_root: true","title":"Class: TransformationSpecification"},{"location":"TransformationSpecification/#class-transformationspecification","text":"A collection of mappings between source and target classes URI: tr:TransformationSpecification classDiagram class TransformationSpecification TransformationSpecification : class_derivations TransformationSpecification : id TransformationSpecification : prefixes TransformationSpecification : source_schema TransformationSpecification : target_schema TransformationSpecification : title","title":"Class: TransformationSpecification"},{"location":"TransformationSpecification/#slots","text":"Name Range Cardinality Description Info id NONE 0..1 None . title NONE 0..1 None . prefixes NONE 0..1 None . source_schema NONE 0..1 None . target_schema NONE 0..1 None . class_derivations ClassDerivation 0..* Instructions on how to derive a set of class in the target schema .","title":"Slots"},{"location":"TransformationSpecification/#usages","text":"","title":"Usages"},{"location":"TransformationSpecification/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"TransformationSpecification/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"TransformationSpecification/#mappings","text":"Mapping Type Mapped Value self ['tr:TransformationSpecification'] native ['tr:TransformationSpecification']","title":"Mappings"},{"location":"TransformationSpecification/#linkml-specification","text":"","title":"LinkML Specification"},{"location":"TransformationSpecification/#direct","text":"name: TransformationSpecification description: A collection of mappings between source and target classes from_schema: https://w3id.org/linkml/transformer attributes: id: name: id from_schema: https://w3id.org/linkml/transformer title: name: title from_schema: https://w3id.org/linkml/transformer prefixes: name: prefixes from_schema: https://w3id.org/linkml/transformer source_schema: name: source_schema from_schema: https://w3id.org/linkml/transformer target_schema: name: target_schema from_schema: https://w3id.org/linkml/transformer class_derivations: name: class_derivations description: Instructions on how to derive a set of class in the target schema from_schema: https://w3id.org/linkml/transformer multivalued: true range: ClassDerivation inlined: true tree_root: true","title":"Direct"},{"location":"TransformationSpecification/#induced","text":"name: TransformationSpecification description: A collection of mappings between source and target classes from_schema: https://w3id.org/linkml/transformer attributes: id: name: id from_schema: https://w3id.org/linkml/transformer alias: id owner: TransformationSpecification title: name: title from_schema: https://w3id.org/linkml/transformer alias: title owner: TransformationSpecification prefixes: name: prefixes from_schema: https://w3id.org/linkml/transformer alias: prefixes owner: TransformationSpecification source_schema: name: source_schema from_schema: https://w3id.org/linkml/transformer alias: source_schema owner: TransformationSpecification target_schema: name: target_schema from_schema: https://w3id.org/linkml/transformer alias: target_schema owner: TransformationSpecification class_derivations: name: class_derivations description: Instructions on how to derive a set of class in the target schema from_schema: https://w3id.org/linkml/transformer multivalued: true alias: class_derivations owner: TransformationSpecification range: ClassDerivation inlined: true tree_root: true","title":"Induced"},{"location":"alias/","text":"Slot: alias URI: https://w3id.org/linkml/transformer/alias Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: alias"},{"location":"alias/#slot-alias","text":"URI: https://w3id.org/linkml/transformer/alias","title":"Slot: alias"},{"location":"alias/#properties","text":"Range: NONE","title":"Properties"},{"location":"alias/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"alias/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"class_derivations/","text":"Slot: class_derivations Instructions on how to derive a set of class in the target schema URI: https://w3id.org/linkml/transformer/class_derivations Properties Range: ClassDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: class_derivations"},{"location":"class_derivations/#slot-class_derivations","text":"Instructions on how to derive a set of class in the target schema URI: https://w3id.org/linkml/transformer/class_derivations","title":"Slot: class_derivations"},{"location":"class_derivations/#properties","text":"Range: ClassDerivation","title":"Properties"},{"location":"class_derivations/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"class_derivations/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"class_name/","text":"Slot: class_name URI: https://w3id.org/linkml/transformer/class_name Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: class_name"},{"location":"class_name/#slot-class_name","text":"URI: https://w3id.org/linkml/transformer/class_name","title":"Slot: class_name"},{"location":"class_name/#properties","text":"Range: NONE","title":"Properties"},{"location":"class_name/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"class_name/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"class_named/","text":"Slot: class_named local alias for the class URI: https://w3id.org/linkml/transformer/class_named Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: class_named"},{"location":"class_named/#slot-class_named","text":"local alias for the class URI: https://w3id.org/linkml/transformer/class_named","title":"Slot: class_named"},{"location":"class_named/#properties","text":"Range: NONE","title":"Properties"},{"location":"class_named/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"class_named/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"expr/","text":"Slot: expr URI: https://w3id.org/linkml/transformer/expr Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: expr"},{"location":"expr/#slot-expr","text":"URI: https://w3id.org/linkml/transformer/expr","title":"Slot: expr"},{"location":"expr/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"expr/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"expr/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"hide/","text":"Slot: hide URI: https://w3id.org/linkml/transformer/hide Properties Range: xsd:boolean Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: hide"},{"location":"hide/#slot-hide","text":"URI: https://w3id.org/linkml/transformer/hide","title":"Slot: hide"},{"location":"hide/#properties","text":"Range: xsd:boolean","title":"Properties"},{"location":"hide/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"hide/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"id/","text":"Slot: id URI: https://w3id.org/linkml/transformer/id Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: id"},{"location":"id/#slot-id","text":"URI: https://w3id.org/linkml/transformer/id","title":"Slot: id"},{"location":"id/#properties","text":"Range: NONE","title":"Properties"},{"location":"id/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"id/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"inverse_of/","text":"Slot: inverse_of URI: https://w3id.org/linkml/transformer/inverse_of Properties Range: Inverse Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: inverse_of"},{"location":"inverse_of/#slot-inverse_of","text":"URI: https://w3id.org/linkml/transformer/inverse_of","title":"Slot: inverse_of"},{"location":"inverse_of/#properties","text":"Range: Inverse","title":"Properties"},{"location":"inverse_of/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"inverse_of/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"joins/","text":"Slot: joins Additional classes to be joined to derive instances of the target class URI: https://w3id.org/linkml/transformer/joins Properties Range: AliasedClass Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: joins"},{"location":"joins/#slot-joins","text":"Additional classes to be joined to derive instances of the target class URI: https://w3id.org/linkml/transformer/joins","title":"Slot: joins"},{"location":"joins/#properties","text":"Range: AliasedClass","title":"Properties"},{"location":"joins/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"joins/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"name/","text":"Slot: name Name of the class in the target schema URI: https://w3id.org/linkml/transformer/name Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: name"},{"location":"name/#slot-name","text":"Name of the class in the target schema URI: https://w3id.org/linkml/transformer/name","title":"Slot: name"},{"location":"name/#properties","text":"Range: NONE","title":"Properties"},{"location":"name/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"name/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"overview/","text":"Mapping Between LinkML Schemas Draft 2022-06-24 Problem: map data from one schema to another Problem: Map d1 \u2192 d2 Assumption d1 and d2 conform to two separate schemas\\, s1\u2192 s2 Sub-problems: Ingest/Import: my data warehouse conforms to s2 (e.g. Monarch ingest) Export: make my data ingest friendly Migrations: s1 and s2 are different versions of the same schema Not in scope: in-schema syntactic or structural transforms JSON to YAML\\, JSON to TSV\\, JSON to SQL\\, JSON to RDF\\, ORM\\, \u2026 In LinkML this is already largely solved The actual problem space is highly varied S1 and S2 may be trivially isomorphic S1 and S2 may differ in complex or nuanced ways There are many existing approaches Generic frameworks\\, driven by declarative specification in Domain Specific Language (DSL) JSON-based Google whistle jsonpath-lift XSLT Semweb YARRML\\, R2RML Many many more\u2026 Bespoke transforms: non-declarative Implement in python/awk/etc. Hybrid: bespoke with some declarative mappings in ad-hoc format E.g. NMDC ingest framework Traps with declarative mapping Declarative is great\\, until it\u2019s not Anti-patterns: Insufficient expressivity to carry out real world tasks Bolting on features to mapping DSL until it\u2019s a fully-featured Turing-complete language Optimization/scalability at mercy of framework Messy layering between DSL and host language It can be useful to leverage host language features (e.g arbitrary python function) But this can get confusing: NFNF: Neither fish nor fowl Limits optimizations (forces iterative host language calls) YARRRML https://rml.io/yarrrml/ YARRRML notes Has a playground\\, which is great Mixes two concerns: 1. Isomorphic structural mapping between JSON/TSVs and RDF (already covered by JSON-LD) 2. Mapping This isn\u2019t necessarily bad - it\u2019s quite practical\\, but a little unsatisfying IMO jsonpath-lifter Was proposed for CCDH CRDC-node mappings Doesn\u2019t seem widely used Is there a big advantage over simply writing javascript functions? Koza (previously: bioweave) ETL frameworks There are many many ETL frameworks E.g. WebKarma Inherently mixing of concerns Here we are concerned with the \u201cT\u201d part Do existing frameworks separate out the T as a modular composable component? I\u2019m not sure Do we need Yet Another Mapping Framework? LinkML philosophy: Embrace\\, extend\\, parasitize Develop lightweight ways to map Map mappings to existing mapping frameworks This actually makes sense even if it sounds kind of meta\u2026 Level 0 Mapping: Isomorphic, same URIs classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address classes: Agent: class_uri: sdo:Person attributes: surname: slot_uri: sdo:familyName home_address: slot_uri: sdo:address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Level 0: handled by standard linkml convert to/from RDF classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address classes: Agent: class_uri: sdo:Person attributes: surname: slot_uri: sdo:familyName home_address: slot_uri: sdo:address data2 (yaml/json) d ata1 (yaml/json) family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville d ata1.ttl == data2.ttl [sdo:familyName \u201cWu\u201d ; sdo:address \u201c1 my street\\, Oakville\u201d ] Level 0: Enums TODO: add example here. Basically this works the same way Level 0: HOWTO Compose two commands: linkml-convert -s schema1.yaml data1.yaml -o data1.ttl linkml-convert -s schema2.yaml data1.ttl -o data2.yaml That\u2019s it! TODO: Write a wrapper (linkml-map-data?) that does this in one command Level 0: other considerations Going via RDF in theory eliminates inlining differences E.g. s1 inlines address objects\\, s2 uses references (inlined: false) and includes a separate index slot for addresses Current status: Currently when going from s1 to s2\\, no index slots are generated This could be done as part of the general rdflib framework Lessons learned so far: annotate your schema with URIs! Annotating schemas with URIs is optional with LinkML But your future self and data users will thank you for careful schema annotation! Hints: Schema-automator can provide suggestions for your element and enum URIs Sometimes plain semweb URIs (e.g. schema.org) can be easier for interoperation than overly granular OBO ones E.g modeling Personhood as a role vs straightforward schema:Person Level 1 Mapping: Isomorphic, different URIs name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Level 1 Mapping: mediated by URI mapping name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address subject_id object_id sdo:Person NCBITaxon:9606 sdo:familyName IAO:nnnn sdo:address IAO:0000422 family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] Level 1: HOWTO Compose three commands: linkml-convert -s schema1.yaml data1.yaml -o data1.ttl sssom-map-iris -i data1.ttl -m schema1-to-schema2.sssom.tsv -o data2.ttl linkml-convert -s schema2.yaml data2.ttl -o data2.yaml That\u2019s it! TODO: sssom-map-iris does not yet exist (?)\\, but should be trivial Fold into wrapper CLI tool Nuances: Schemas have nuanced differences: not everything with be skos:exact We can distinguish 3 flavors of level 1 mapping: Precise\\, bidirectional: follow exact only Valid\\, unidirectional: follow exact + broad Loose: any mapping Level 1 variant: mappings in schema name: example-semweb-schema classes: Person: class_uri: sdo:Person exact_mappings: [\u201cNCBITaxon:9606\u201d] attributes: family_name: slot_uri: sdo:familyName exact_mappings: [\u201cIAO:nnnn\u201d] address: slot_uri: sdo:address exact_mappings: [\u201cIAO:0000422\u201d] name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] Advantages of RDF as an intermediate Use of IRIs Separation of concerns Structural differences (e.g. inlining) are already handled by linkml convert Allows us to focus on semantic mappings Lessons learned so far: think about mappings https://linkml.io/linkml/faq/modeling.html#when-is-it-important-to-have-mappings https://github.com/alliance-genome/agr_curation_schema/blob/main/model/schema/agent.yaml More complex mappings: level 2 and above TODO: define levels 2 and above Examples of kinds of features: merging/splitting fields; e.g. full_name = first + \u201c \u201c + last Unit conversion or baked-in units to explicit units Normalization/denormalization (aka flattening) Complex logic If conditions A\\, B\\, C and not D are met then copy field F from X to Y LinkML Rule and Inference Framework Current use case is intra-schema inference Easy to invoke on command line Needs more docs! Could form basis of inter-schema DSL Examples Schemas differ in units Schemas differ in categorical vs quantitative Current use case is intra-schema inference Could form basis of inter-schema DSL Datalog Datalog could serve as the powerful basis of an expressive declarative transformation language https://linkml.io/linkml-datalog Approach for level 2+ Do we even want a generic mapping framework in LinkML here? This is a good \u201c parasitization hook\u201d Do complex stuff using an existing framework TBD: derive or semi-derive mapping specification? This is also a code bespoke procedural code hook Do the generic stuff with linkml-convert and isomorphic IRI mapping Do more complex stuff in code General approach for level 2+; same to same name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville JSON OR XML OR YAML OR RDF OR SQL JSON OR XML OR YAML OR RDF OR SQL (matches the one on the left) Existing mapping framework (X to X) Example of same-to-same: jsonpath-lifter name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Jsonpath-lifter (JSON to JSON) Example of same-to-same: awk Example of same-to-same: SQL INSERT INTO Agent AS SELECT Person.last_name AS Agent.surname\\, CONCAT(Person.full_name\\, \u201c \u201c\\, Person.first) AS Agent.full_name\\, \u2026 CONSTRUCT { [ a schema:Person ; my:fullName STRCAT(...) ] } WHERE { ?person a schema:Person ; schema:firstName ; schema:lastName ; \u2026 } SPARQL CONSTRUCT RDF Engine or Triplestore Example of same-to-same: Python (LinkML objects) def convert(p: Person) -> Agent: return Agent(p.id\\, full_name=f\u201d{..} {..}\u201d\\, \u2026 Conversion script General approach for level 2+; heteromorphic name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville L inkml-convert OPTIONAL L inkml-convert OPTIONAL JSON OR XML OR YAML OR RDF OR SQL JSON OR XML OR YAML OR RDF OR SQL ( different from the one on the left) Existing mapping framework (X to Y) Example: YARRRML name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville YARRRML (JSON/YAML to RDF) Example: YARRRML, native mappings name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville mapping.yarrrml.yml Example: YARRRML, compiled mappings name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address Mappings : \u2026 \\< TO BE DEFINED LINKML MAPPING SPEC > name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville mapping.yarrrml.yml Hyperparasitism is good name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address Mappings : \u2026 \\< TO BE DEFINED LINKML MAPPING SPEC > name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address mapping.yarrrml.yml family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Alternative: Direct translation language Desiderata Ability to compile to scalable frameworks E.g. compile to SQL Simple for simple tasks Layer on existing expression language Provides path to safe subset of host language (Python) Can be easily implemented in other languages Normalized to Denormalized (modeling SSSOM) SQL INSERT (or CREATE VIEW) SQL FROM Clause (implicit INNER JOIN/WHERE) SQL SELECT \u2026 AS clause Relationship to profiles TODO Profiles/IGs can be seen as a sub-case of schema mapping Current progress https://github.com/linkml/linkml/issues/533 map to YARRRML Vincent Vemonet has started on linkml->rml https://github.com/vemonet/linkml/blob/add-gen-rml/linkml/generators/rmlgen.py Relationship to Koza Koza ingests often require multiple files See Also Revisiting BioWeave (Kent Shefchek\\, 2020?) https://docs.google.com/presentation/d/1DYiWXoz3iHM2PvMFD0hRpJ544tnHawg00PBwNuESo44/edit#slide=id.gb33d7ddd1b_0_93 Automating mapping Should we pursue approaches to automate mapping? Some of the functionality is already in schema-automator. E.g. auto-annotating schema elements using ontologies Isomorphic schema mapping discovery analogous to ontology mapping Can a boomer type approach help? E.g. given multiple loose mappings with alternative interpretations\\, which ones give coherent results Other approaches Inductive Logic Programming: transformations as logic programs Genetic programming: transformations as lambda functions Deep Learning: e.g. Language Models for translation There is already a rich literature spanning decades here to be parasitized\u2026 Summary: just tell me what to do today For isomorphic mappings: Stay within LinkML/SSSOM No need for custom code\\, it all works For complex mappings: It depends! Do the structural mapping with linkml-convert Implement the complex logic as you see fit\\, depending on multiple factors. Any of the following may be valid Koza Awk SPARQL CONSTRUCTS or SELECTS Custom python YARRRML SQL INSERTs XSLT Jsonpath-lifter \u2026. Roadmap 2022: Continue to gather use cases\\, experiment 2023: If funding permits Extend metamodel to include complex mapping Implement EITHER Parasitizing converters Direct mapping framework TBD: Is this Koza2?","title":"Overview"},{"location":"overview/#mapping-between-linkml-schemas","text":"","title":"Mapping Between LinkML Schemas"},{"location":"overview/#draft","text":"2022-06-24","title":"Draft"},{"location":"overview/#problem-map-data-from-one-schema-to-another","text":"Problem: Map d1 \u2192 d2 Assumption d1 and d2 conform to two separate schemas\\, s1\u2192 s2 Sub-problems: Ingest/Import: my data warehouse conforms to s2 (e.g. Monarch ingest) Export: make my data ingest friendly Migrations: s1 and s2 are different versions of the same schema Not in scope: in-schema syntactic or structural transforms JSON to YAML\\, JSON to TSV\\, JSON to SQL\\, JSON to RDF\\, ORM\\, \u2026 In LinkML this is already largely solved The actual problem space is highly varied S1 and S2 may be trivially isomorphic S1 and S2 may differ in complex or nuanced ways","title":"Problem: map data from one schema to another"},{"location":"overview/#there-are-many-existing-approaches","text":"Generic frameworks\\, driven by declarative specification in Domain Specific Language (DSL) JSON-based Google whistle jsonpath-lift XSLT Semweb YARRML\\, R2RML Many many more\u2026 Bespoke transforms: non-declarative Implement in python/awk/etc. Hybrid: bespoke with some declarative mappings in ad-hoc format E.g. NMDC ingest framework","title":"There are many existing approaches"},{"location":"overview/#traps-with-declarative-mapping","text":"Declarative is great\\, until it\u2019s not Anti-patterns: Insufficient expressivity to carry out real world tasks Bolting on features to mapping DSL until it\u2019s a fully-featured Turing-complete language Optimization/scalability at mercy of framework Messy layering between DSL and host language It can be useful to leverage host language features (e.g arbitrary python function) But this can get confusing: NFNF: Neither fish nor fowl Limits optimizations (forces iterative host language calls)","title":"Traps with declarative mapping"},{"location":"overview/#yarrrml","text":"https://rml.io/yarrrml/","title":"YARRRML"},{"location":"overview/#yarrrml-notes","text":"Has a playground\\, which is great Mixes two concerns: 1. Isomorphic structural mapping between JSON/TSVs and RDF (already covered by JSON-LD) 2. Mapping This isn\u2019t necessarily bad - it\u2019s quite practical\\, but a little unsatisfying IMO","title":"YARRRML notes"},{"location":"overview/#jsonpath-lifter","text":"Was proposed for CCDH CRDC-node mappings Doesn\u2019t seem widely used Is there a big advantage over simply writing javascript functions?","title":"jsonpath-lifter"},{"location":"overview/#koza-previously-bioweave","text":"","title":"Koza (previously: bioweave)"},{"location":"overview/#etl-frameworks","text":"There are many many ETL frameworks E.g. WebKarma Inherently mixing of concerns Here we are concerned with the \u201cT\u201d part Do existing frameworks separate out the T as a modular composable component? I\u2019m not sure","title":"ETL frameworks"},{"location":"overview/#do-we-need-yet-another-mapping-framework","text":"LinkML philosophy: Embrace\\, extend\\, parasitize Develop lightweight ways to map Map mappings to existing mapping frameworks This actually makes sense even if it sounds kind of meta\u2026","title":"Do we need Yet Another Mapping Framework?"},{"location":"overview/#level-0-mapping-isomorphic-same-uris","text":"classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address classes: Agent: class_uri: sdo:Person attributes: surname: slot_uri: sdo:familyName home_address: slot_uri: sdo:address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville","title":"Level 0 Mapping: Isomorphic, same URIs"},{"location":"overview/#level-0-handled-by-standard-linkml-convert-tofrom-rdf","text":"classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address classes: Agent: class_uri: sdo:Person attributes: surname: slot_uri: sdo:familyName home_address: slot_uri: sdo:address data2 (yaml/json) d ata1 (yaml/json) family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville d ata1.ttl == data2.ttl [sdo:familyName \u201cWu\u201d ; sdo:address \u201c1 my street\\, Oakville\u201d ]","title":"Level 0: handled by standard linkml convert to/from RDF"},{"location":"overview/#level-0-enums-todo-add-example-here-basically-this-works-the-same-way","text":"","title":"Level 0: Enums TODO: add example here. Basically this works the same way"},{"location":"overview/#level-0-howto","text":"Compose two commands: linkml-convert -s schema1.yaml data1.yaml -o data1.ttl linkml-convert -s schema2.yaml data1.ttl -o data2.yaml That\u2019s it! TODO: Write a wrapper (linkml-map-data?) that does this in one command","title":"Level 0: HOWTO"},{"location":"overview/#level-0-other-considerations","text":"Going via RDF in theory eliminates inlining differences E.g. s1 inlines address objects\\, s2 uses references (inlined: false) and includes a separate index slot for addresses Current status: Currently when going from s1 to s2\\, no index slots are generated This could be done as part of the general rdflib framework","title":"Level 0: other considerations"},{"location":"overview/#lessons-learned-so-far-annotate-your-schema-with-uris","text":"Annotating schemas with URIs is optional with LinkML But your future self and data users will thank you for careful schema annotation! Hints: Schema-automator can provide suggestions for your element and enum URIs Sometimes plain semweb URIs (e.g. schema.org) can be easier for interoperation than overly granular OBO ones E.g modeling Personhood as a role vs straightforward schema:Person","title":"Lessons learned so far: annotate your schema with URIs!"},{"location":"overview/#level-1-mapping-isomorphic-different-uris","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville","title":"Level 1 Mapping: Isomorphic, different URIs"},{"location":"overview/#level-1-mapping-mediated-by-uri-mapping","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address subject_id object_id sdo:Person NCBITaxon:9606 sdo:familyName IAO:nnnn sdo:address IAO:0000422 family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ]","title":"Level 1 Mapping: mediated by URI mapping"},{"location":"overview/#level-1-howto","text":"Compose three commands: linkml-convert -s schema1.yaml data1.yaml -o data1.ttl sssom-map-iris -i data1.ttl -m schema1-to-schema2.sssom.tsv -o data2.ttl linkml-convert -s schema2.yaml data2.ttl -o data2.yaml That\u2019s it! TODO: sssom-map-iris does not yet exist (?)\\, but should be trivial Fold into wrapper CLI tool Nuances: Schemas have nuanced differences: not everything with be skos:exact We can distinguish 3 flavors of level 1 mapping: Precise\\, bidirectional: follow exact only Valid\\, unidirectional: follow exact + broad Loose: any mapping","title":"Level 1: HOWTO"},{"location":"overview/#level-1-variant-mappings-in-schema","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person exact_mappings: [\u201cNCBITaxon:9606\u201d] attributes: family_name: slot_uri: sdo:familyName exact_mappings: [\u201cIAO:nnnn\u201d] address: slot_uri: sdo:address exact_mappings: [\u201cIAO:0000422\u201d] name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ]","title":"Level 1 variant: mappings in schema"},{"location":"overview/#advantages-of-rdf-as-an-intermediate","text":"Use of IRIs Separation of concerns Structural differences (e.g. inlining) are already handled by linkml convert Allows us to focus on semantic mappings","title":"Advantages of RDF as an intermediate"},{"location":"overview/#lessons-learned-so-far-think-about-mappings","text":"https://linkml.io/linkml/faq/modeling.html#when-is-it-important-to-have-mappings%20https://github.com/alliance-genome/agr_curation_schema/blob/main/model/schema/agent.yaml","title":"Lessons learned so far: think about mappings"},{"location":"overview/#more-complex-mappings-level-2-and-above","text":"TODO: define levels 2 and above Examples of kinds of features: merging/splitting fields; e.g. full_name = first + \u201c \u201c + last Unit conversion or baked-in units to explicit units Normalization/denormalization (aka flattening) Complex logic If conditions A\\, B\\, C and not D are met then copy field F from X to Y","title":"More complex mappings: level 2 and above"},{"location":"overview/#linkml-rule-and-inference-framework","text":"Current use case is intra-schema inference Easy to invoke on command line Needs more docs! Could form basis of inter-schema DSL Examples Schemas differ in units Schemas differ in categorical vs quantitative Current use case is intra-schema inference Could form basis of inter-schema DSL","title":"LinkML Rule and Inference Framework"},{"location":"overview/#datalog","text":"Datalog could serve as the powerful basis of an expressive declarative transformation language https://linkml.io/linkml-datalog","title":"Datalog"},{"location":"overview/#approach-for-level-2","text":"Do we even want a generic mapping framework in LinkML here? This is a good \u201c parasitization hook\u201d Do complex stuff using an existing framework TBD: derive or semi-derive mapping specification? This is also a code bespoke procedural code hook Do the generic stuff with linkml-convert and isomorphic IRI mapping Do more complex stuff in code","title":"Approach for level 2+"},{"location":"overview/#general-approach-for-level-2-same-to-same","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville JSON OR XML OR YAML OR RDF OR SQL JSON OR XML OR YAML OR RDF OR SQL (matches the one on the left) Existing mapping framework (X to X)","title":"General approach for level 2+; same to same"},{"location":"overview/#example-of-same-to-same-jsonpath-lifter","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Jsonpath-lifter (JSON to JSON)","title":"Example of same-to-same: jsonpath-lifter"},{"location":"overview/#example-of-same-to-same-awk","text":"","title":"Example of same-to-same: awk"},{"location":"overview/#example-of-same-to-same-sql","text":"INSERT INTO Agent AS SELECT Person.last_name AS Agent.surname\\, CONCAT(Person.full_name\\, \u201c \u201c\\, Person.first) AS Agent.full_name\\, \u2026 CONSTRUCT { [ a schema:Person ; my:fullName STRCAT(...) ] } WHERE { ?person a schema:Person ; schema:firstName ; schema:lastName ; \u2026 } SPARQL CONSTRUCT RDF Engine or Triplestore","title":"Example of same-to-same: SQL"},{"location":"overview/#example-of-same-to-same-python-linkml-objects","text":"def convert(p: Person) -> Agent: return Agent(p.id\\, full_name=f\u201d{..} {..}\u201d\\, \u2026 Conversion script","title":"Example of same-to-same: Python (LinkML objects)"},{"location":"overview/#general-approach-for-level-2-heteromorphic","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville L inkml-convert OPTIONAL L inkml-convert OPTIONAL JSON OR XML OR YAML OR RDF OR SQL JSON OR XML OR YAML OR RDF OR SQL ( different from the one on the left) Existing mapping framework (X to Y)","title":"General approach for level 2+; heteromorphic"},{"location":"overview/#example-yarrrml","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville YARRRML (JSON/YAML to RDF)","title":"Example: YARRRML"},{"location":"overview/#example-yarrrml-native-mappings","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville mapping.yarrrml.yml","title":"Example: YARRRML, native mappings"},{"location":"overview/#example-yarrrml-compiled-mappings","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address Mappings : \u2026 \\< TO BE DEFINED LINKML MAPPING SPEC > name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville mapping.yarrrml.yml","title":"Example: YARRRML, compiled mappings"},{"location":"overview/#hyperparasitism-is-good","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address Mappings : \u2026 \\< TO BE DEFINED LINKML MAPPING SPEC > name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address mapping.yarrrml.yml family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville","title":"Hyperparasitism is good"},{"location":"overview/#alternative-direct-translation-language","text":"Desiderata Ability to compile to scalable frameworks E.g. compile to SQL Simple for simple tasks Layer on existing expression language Provides path to safe subset of host language (Python) Can be easily implemented in other languages","title":"Alternative: Direct translation language"},{"location":"overview/#normalized-to-denormalized-modeling-sssom","text":"SQL INSERT (or CREATE VIEW) SQL FROM Clause (implicit INNER JOIN/WHERE) SQL SELECT \u2026 AS clause","title":"Normalized to Denormalized (modeling SSSOM)"},{"location":"overview/#relationship-to-profiles-todo","text":"Profiles/IGs can be seen as a sub-case of schema mapping","title":"Relationship to profiles TODO"},{"location":"overview/#current-progress","text":"https://github.com/linkml/linkml/issues/533%20map%20to%20YARRRML%20Vincent%20Vemonet%20has%20started%20on%20linkml-%3Erml%20https://github.com/vemonet/linkml/blob/add-gen-rml/linkml/generators/rmlgen.py","title":"Current progress"},{"location":"overview/#relationship-to-koza","text":"","title":"Relationship to Koza"},{"location":"overview/#koza-ingests-often-require-multiple-files","text":"","title":"Koza ingests often require multiple files"},{"location":"overview/#see-also","text":"Revisiting BioWeave (Kent Shefchek\\, 2020?) https://docs.google.com/presentation/d/1DYiWXoz3iHM2PvMFD0hRpJ544tnHawg00PBwNuESo44/edit#slide=id.gb33d7ddd1b_0_93","title":"See Also"},{"location":"overview/#automating-mapping","text":"Should we pursue approaches to automate mapping? Some of the functionality is already in schema-automator. E.g. auto-annotating schema elements using ontologies Isomorphic schema mapping discovery analogous to ontology mapping Can a boomer type approach help? E.g. given multiple loose mappings with alternative interpretations\\, which ones give coherent results Other approaches Inductive Logic Programming: transformations as logic programs Genetic programming: transformations as lambda functions Deep Learning: e.g. Language Models for translation There is already a rich literature spanning decades here to be parasitized\u2026","title":"Automating mapping"},{"location":"overview/#summary-just-tell-me-what-to-do-today","text":"For isomorphic mappings: Stay within LinkML/SSSOM No need for custom code\\, it all works For complex mappings: It depends! Do the structural mapping with linkml-convert Implement the complex logic as you see fit\\, depending on multiple factors. Any of the following may be valid Koza Awk SPARQL CONSTRUCTS or SELECTS Custom python YARRRML SQL INSERTs XSLT Jsonpath-lifter \u2026.","title":"Summary: just tell me what to do today"},{"location":"overview/#roadmap","text":"2022: Continue to gather use cases\\, experiment 2023: If funding permits Extend metamodel to include complex mapping Implement EITHER Parasitizing converters Direct mapping framework TBD: Is this Koza2?","title":"Roadmap"},{"location":"populated_from/","text":"Slot: populated_from Name of the class in the source schema URI: https://w3id.org/linkml/transformer/populated_from Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: populated_from"},{"location":"populated_from/#slot-populated_from","text":"Name of the class in the source schema URI: https://w3id.org/linkml/transformer/populated_from","title":"Slot: populated_from"},{"location":"populated_from/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"populated_from/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"populated_from/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"prefixes/","text":"Slot: prefixes URI: https://w3id.org/linkml/transformer/prefixes Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: prefixes"},{"location":"prefixes/#slot-prefixes","text":"URI: https://w3id.org/linkml/transformer/prefixes","title":"Slot: prefixes"},{"location":"prefixes/#properties","text":"Range: NONE","title":"Properties"},{"location":"prefixes/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"prefixes/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"same_as/","text":"Slot: same_as Name of the class in the source schema URI: https://w3id.org/linkml/transformer/same_as Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: same_as"},{"location":"same_as/#slot-same_as","text":"Name of the class in the source schema URI: https://w3id.org/linkml/transformer/same_as","title":"Slot: same_as"},{"location":"same_as/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"same_as/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"same_as/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"slot_derivations/","text":"Slot: slot_derivations URI: https://w3id.org/linkml/transformer/slot_derivations Properties Range: SlotDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: slot_derivations"},{"location":"slot_derivations/#slot-slot_derivations","text":"URI: https://w3id.org/linkml/transformer/slot_derivations","title":"Slot: slot_derivations"},{"location":"slot_derivations/#properties","text":"Range: SlotDerivation","title":"Properties"},{"location":"slot_derivations/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"slot_derivations/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"slot_name/","text":"Slot: slot_name URI: https://w3id.org/linkml/transformer/slot_name Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: slot_name"},{"location":"slot_name/#slot-slot_name","text":"URI: https://w3id.org/linkml/transformer/slot_name","title":"Slot: slot_name"},{"location":"slot_name/#properties","text":"Range: NONE","title":"Properties"},{"location":"slot_name/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"slot_name/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"source_schema/","text":"Slot: source_schema URI: https://w3id.org/linkml/transformer/source_schema Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: source_schema"},{"location":"source_schema/#slot-source_schema","text":"URI: https://w3id.org/linkml/transformer/source_schema","title":"Slot: source_schema"},{"location":"source_schema/#properties","text":"Range: NONE","title":"Properties"},{"location":"source_schema/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"source_schema/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"target_schema/","text":"Slot: target_schema URI: https://w3id.org/linkml/transformer/target_schema Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: target_schema"},{"location":"target_schema/#slot-target_schema","text":"URI: https://w3id.org/linkml/transformer/target_schema","title":"Slot: target_schema"},{"location":"target_schema/#properties","text":"Range: NONE","title":"Properties"},{"location":"target_schema/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"target_schema/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"title/","text":"Slot: title URI: https://w3id.org/linkml/transformer/title Properties Range: NONE Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: title"},{"location":"title/#slot-title","text":"URI: https://w3id.org/linkml/transformer/title","title":"Slot: title"},{"location":"title/#properties","text":"Range: NONE","title":"Properties"},{"location":"title/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"title/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"transformer/","text":"transformer Datamodel for LinkML schema transformations URI: https://w3id.org/linkml/transformer","title":"transformer"},{"location":"transformer/#transformer","text":"Datamodel for LinkML schema transformations URI: https://w3id.org/linkml/transformer","title":"transformer"},{"location":"type_designator/","text":"Slot: type_designator URI: https://w3id.org/linkml/transformer/type_designator Properties Range: xsd:boolean Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: type_designator"},{"location":"type_designator/#slot-type_designator","text":"URI: https://w3id.org/linkml/transformer/type_designator","title":"Slot: type_designator"},{"location":"type_designator/#properties","text":"Range: xsd:boolean","title":"Properties"},{"location":"type_designator/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"type_designator/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"types/","text":"types Shared type definitions for the core LinkML mode and metamodel URI: https://w3id.org/linkml/types","title":"types"},{"location":"types/#types","text":"Shared type definitions for the core LinkML mode and metamodel URI: https://w3id.org/linkml/types","title":"types"}]} \ No newline at end of file +{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"LinkML Data Transformer Model Datamodel for LinkML schema transformations. A transformer generates instances of a target data model from instances of a source data model. This transformation process is guided by a TransformationSpecification . The specification is independent of any one method for transforming data. It allows different approaches, including: direct implementation, transforming python or json objects translation of the specification into SQL commands, to operate on relations translation of the specification into SPARQL CONSTRUCTs, to operate on triples translation into another specification language, such as R2RML URI: https://w3id.org/linkml/transformer Name: transformer Classes Class Description AliasedClass alias-class key value pairs for classes Any ClassDerivation A specification of how to derive a target class from a source class CopyDirective ElementDerivation A specification of how to derive a target element from a source element EnumDerivation A specification of how to derive the value of a target enum from a source enu... Inverse Used for back references KeyVal PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation SlotDerivation A specification of how to derive the value of a target slot from a source slo... TransformationSpecification A collection of mappings between source and target classes Slots Slot Description add alias name of the class to be aliased class_derivations Instructions on how to derive a set of classes in the target schema from clas... class_name class_named local alias for the class copy_all copy_directives element_name enum_derivations Instructions on how to derive a set of enums in the target schema exclude exclude_all expr An expression to be evaluated on the source object to derive the target slot hide True if this is suppressed id Unique identifier for this transformation specification include inverse_of Used to specify a class-slot tuple that is the inverse of the derived/target ... is_a joins Additional classes to be joined to derive instances of the target class key mixins name Name of the element in the target schema permissible_value_derivations Instructions on how to derive a set of PVs in the target schema populated_from Name of the class in the source schema prefixes prefix map slot_derivations Instructions on how to derive a set of top level slots in the target schema slot_name source_schema name of the schema that describes the source (input) objects target_schema name of the schema that describes the target (output) objects title human readable title for this transformation specification type_designator value Enumerations Enumeration Description Types Type Description xsd:boolean A binary (true or false) value xsd:string a compact URI xsd:date a date (year, month and day) in an idealized calendar linkml:DateOrDatetime Either a date or a datetime xsd:dateTime The combination of a date and time xsd:decimal A real number with arbitrary precision that conforms to the xsd:decimal speci... xsd:double A real number that conforms to the xsd:double specification xsd:float A real number that conforms to the xsd:float specification xsd:integer An integer xsd:string Prefix part of CURIE shex:nonLiteral A URI, CURIE or BNODE that represents a node in a model shex:iri A URI or CURIE that represents an object in the model xsd:string A character string xsd:dateTime A time object represents a (local) time of day, independent of any particular... xsd:anyURI a complete URI xsd:anyURI a URI or a CURIE Subsets Subset Description","title":"Index"},{"location":"#linkml-data-transformer-model","text":"Datamodel for LinkML schema transformations. A transformer generates instances of a target data model from instances of a source data model. This transformation process is guided by a TransformationSpecification . The specification is independent of any one method for transforming data. It allows different approaches, including: direct implementation, transforming python or json objects translation of the specification into SQL commands, to operate on relations translation of the specification into SPARQL CONSTRUCTs, to operate on triples translation into another specification language, such as R2RML URI: https://w3id.org/linkml/transformer Name: transformer","title":"LinkML Data Transformer Model"},{"location":"#classes","text":"Class Description AliasedClass alias-class key value pairs for classes Any ClassDerivation A specification of how to derive a target class from a source class CopyDirective ElementDerivation A specification of how to derive a target element from a source element EnumDerivation A specification of how to derive the value of a target enum from a source enu... Inverse Used for back references KeyVal PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation SlotDerivation A specification of how to derive the value of a target slot from a source slo... TransformationSpecification A collection of mappings between source and target classes","title":"Classes"},{"location":"#slots","text":"Slot Description add alias name of the class to be aliased class_derivations Instructions on how to derive a set of classes in the target schema from clas... class_name class_named local alias for the class copy_all copy_directives element_name enum_derivations Instructions on how to derive a set of enums in the target schema exclude exclude_all expr An expression to be evaluated on the source object to derive the target slot hide True if this is suppressed id Unique identifier for this transformation specification include inverse_of Used to specify a class-slot tuple that is the inverse of the derived/target ... is_a joins Additional classes to be joined to derive instances of the target class key mixins name Name of the element in the target schema permissible_value_derivations Instructions on how to derive a set of PVs in the target schema populated_from Name of the class in the source schema prefixes prefix map slot_derivations Instructions on how to derive a set of top level slots in the target schema slot_name source_schema name of the schema that describes the source (input) objects target_schema name of the schema that describes the target (output) objects title human readable title for this transformation specification type_designator value","title":"Slots"},{"location":"#enumerations","text":"Enumeration Description","title":"Enumerations"},{"location":"#types","text":"Type Description xsd:boolean A binary (true or false) value xsd:string a compact URI xsd:date a date (year, month and day) in an idealized calendar linkml:DateOrDatetime Either a date or a datetime xsd:dateTime The combination of a date and time xsd:decimal A real number with arbitrary precision that conforms to the xsd:decimal speci... xsd:double A real number that conforms to the xsd:double specification xsd:float A real number that conforms to the xsd:float specification xsd:integer An integer xsd:string Prefix part of CURIE shex:nonLiteral A URI, CURIE or BNODE that represents a node in a model shex:iri A URI or CURIE that represents an object in the model xsd:string A character string xsd:dateTime A time object represents a (local) time of day, independent of any particular... xsd:anyURI a complete URI xsd:anyURI a URI or a CURIE","title":"Types"},{"location":"#subsets","text":"Subset Description","title":"Subsets"},{"location":"AliasedClass/","text":"Class: AliasedClass alias-class key value pairs for classes URI: linkmltr:AliasedClass classDiagram class AliasedClass AliasedClass : alias AliasedClass : class_named Slots Name Cardinality and Range Description Inheritance alias 0..1 xsd:string name of the class to be aliased direct class_named 0..1 xsd:string local alias for the class direct Usages used by used in type used ClassDerivation joins range AliasedClass Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:AliasedClass native linkmltr:AliasedClass LinkML Source Direct name: AliasedClass description: alias-class key value pairs for classes from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: alias: name: alias description: name of the class to be aliased from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true class_named: name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer rank: 1000 Induced name: AliasedClass description: alias-class key value pairs for classes from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: alias: name: alias description: name of the class to be aliased from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: alias owner: AliasedClass domain_of: - AliasedClass class_named: name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: class_named owner: AliasedClass domain_of: - AliasedClass","title":"Class: AliasedClass"},{"location":"AliasedClass/#class-aliasedclass","text":"alias-class key value pairs for classes URI: linkmltr:AliasedClass classDiagram class AliasedClass AliasedClass : alias AliasedClass : class_named","title":"Class: AliasedClass"},{"location":"AliasedClass/#slots","text":"Name Cardinality and Range Description Inheritance alias 0..1 xsd:string name of the class to be aliased direct class_named 0..1 xsd:string local alias for the class direct","title":"Slots"},{"location":"AliasedClass/#usages","text":"used by used in type used ClassDerivation joins range AliasedClass","title":"Usages"},{"location":"AliasedClass/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"AliasedClass/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"AliasedClass/#mappings","text":"Mapping Type Mapped Value self linkmltr:AliasedClass native linkmltr:AliasedClass","title":"Mappings"},{"location":"AliasedClass/#linkml-source","text":"","title":"LinkML Source"},{"location":"AliasedClass/#direct","text":"name: AliasedClass description: alias-class key value pairs for classes from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: alias: name: alias description: name of the class to be aliased from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true class_named: name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer rank: 1000","title":"Direct"},{"location":"AliasedClass/#induced","text":"name: AliasedClass description: alias-class key value pairs for classes from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: alias: name: alias description: name of the class to be aliased from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: alias owner: AliasedClass domain_of: - AliasedClass class_named: name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: class_named owner: AliasedClass domain_of: - AliasedClass","title":"Induced"},{"location":"Any/","text":"Class: Any URI: linkml:Any classDiagram class Any Slots Name Cardinality and Range Description Inheritance Usages used by used in type used KeyVal value range Any CopyDirective exclude range Any CopyDirective include range Any CopyDirective add range Any Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkml:Any native linkmltr:Any LinkML Source Direct name: Any from_schema: https://w3id.org/linkml/transformer rank: 1000 class_uri: linkml:Any Induced name: Any from_schema: https://w3id.org/linkml/transformer rank: 1000 class_uri: linkml:Any","title":"Class: Any"},{"location":"Any/#class-any","text":"URI: linkml:Any classDiagram class Any","title":"Class: Any"},{"location":"Any/#slots","text":"Name Cardinality and Range Description Inheritance","title":"Slots"},{"location":"Any/#usages","text":"used by used in type used KeyVal value range Any CopyDirective exclude range Any CopyDirective include range Any CopyDirective add range Any","title":"Usages"},{"location":"Any/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Any/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"Any/#mappings","text":"Mapping Type Mapped Value self linkml:Any native linkmltr:Any","title":"Mappings"},{"location":"Any/#linkml-source","text":"","title":"LinkML Source"},{"location":"Any/#direct","text":"name: Any from_schema: https://w3id.org/linkml/transformer rank: 1000 class_uri: linkml:Any","title":"Direct"},{"location":"Any/#induced","text":"name: Any from_schema: https://w3id.org/linkml/transformer rank: 1000 class_uri: linkml:Any","title":"Induced"},{"location":"Boolean/","text":"Type: Boolean A binary (true or false) value URI: xsd:boolean base : Bool uri : xsd:boolean repr : bool Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Boolean"},{"location":"Boolean/#type-boolean","text":"A binary (true or false) value URI: xsd:boolean base : Bool uri : xsd:boolean repr : bool","title":"Type: Boolean"},{"location":"Boolean/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Boolean/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"ClassDerivation/","text":"Class: ClassDerivation A specification of how to derive a target class from a source class. URI: linkmltr:ClassDerivation classDiagram class ClassDerivation ElementDerivation <|-- ClassDerivation ClassDerivation : copy_directives ClassDerivation : is_a ClassDerivation : joins ClassDerivation : mixins ClassDerivation : name ClassDerivation : populated_from ClassDerivation : slot_derivations Inheritance ElementDerivation ClassDerivation Slots Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct populated_from 0..1 xsd:string direct joins 0..* AliasedClass Additional classes to be joined to derive instances of the target class direct slot_derivations 0..1 xsd:string direct copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation Usages used by used in type used TransformationSpecification class_derivations range ClassDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:ClassDerivation native linkmltr:ClassDerivation LinkML Source Direct name: ClassDerivation description: A specification of how to derive a target class from a source class. from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Name of the class in the target schema from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from description: Name of the class in the source schema from_schema: https://w3id.org/linkml/transformer rank: 1000 range: string joins: name: joins description: Additional classes to be joined to derive instances of the target class comments: - not yet implemented from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: AliasedClass inlined: true slot_derivations: name: slot_derivations from_schema: https://w3id.org/linkml/transformer multivalued: true range: SlotDerivation inlined: true Induced name: ClassDerivation description: A specification of how to derive a target class from a source class. from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Name of the class in the target schema from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: ClassDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation populated_from: name: populated_from description: Name of the class in the source schema from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: populated_from owner: ClassDerivation domain_of: - ClassDerivation - SlotDerivation - EnumDerivation range: string joins: name: joins description: Additional classes to be joined to derive instances of the target class comments: - not yet implemented from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: joins owner: ClassDerivation domain_of: - ClassDerivation range: AliasedClass inlined: true slot_derivations: name: slot_derivations from_schema: https://w3id.org/linkml/transformer multivalued: true alias: slot_derivations owner: ClassDerivation domain_of: - TransformationSpecification - ClassDerivation range: SlotDerivation inlined: true copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: ClassDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: ClassDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: ClassDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Class: ClassDerivation"},{"location":"ClassDerivation/#class-classderivation","text":"A specification of how to derive a target class from a source class. URI: linkmltr:ClassDerivation classDiagram class ClassDerivation ElementDerivation <|-- ClassDerivation ClassDerivation : copy_directives ClassDerivation : is_a ClassDerivation : joins ClassDerivation : mixins ClassDerivation : name ClassDerivation : populated_from ClassDerivation : slot_derivations","title":"Class: ClassDerivation"},{"location":"ClassDerivation/#inheritance","text":"ElementDerivation ClassDerivation","title":"Inheritance"},{"location":"ClassDerivation/#slots","text":"Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct populated_from 0..1 xsd:string direct joins 0..* AliasedClass Additional classes to be joined to derive instances of the target class direct slot_derivations 0..1 xsd:string direct copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation","title":"Slots"},{"location":"ClassDerivation/#usages","text":"used by used in type used TransformationSpecification class_derivations range ClassDerivation","title":"Usages"},{"location":"ClassDerivation/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"ClassDerivation/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"ClassDerivation/#mappings","text":"Mapping Type Mapped Value self linkmltr:ClassDerivation native linkmltr:ClassDerivation","title":"Mappings"},{"location":"ClassDerivation/#linkml-source","text":"","title":"LinkML Source"},{"location":"ClassDerivation/#direct","text":"name: ClassDerivation description: A specification of how to derive a target class from a source class. from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Name of the class in the target schema from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from description: Name of the class in the source schema from_schema: https://w3id.org/linkml/transformer rank: 1000 range: string joins: name: joins description: Additional classes to be joined to derive instances of the target class comments: - not yet implemented from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: AliasedClass inlined: true slot_derivations: name: slot_derivations from_schema: https://w3id.org/linkml/transformer multivalued: true range: SlotDerivation inlined: true","title":"Direct"},{"location":"ClassDerivation/#induced","text":"name: ClassDerivation description: A specification of how to derive a target class from a source class. from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Name of the class in the target schema from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: ClassDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation populated_from: name: populated_from description: Name of the class in the source schema from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: populated_from owner: ClassDerivation domain_of: - ClassDerivation - SlotDerivation - EnumDerivation range: string joins: name: joins description: Additional classes to be joined to derive instances of the target class comments: - not yet implemented from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: joins owner: ClassDerivation domain_of: - ClassDerivation range: AliasedClass inlined: true slot_derivations: name: slot_derivations from_schema: https://w3id.org/linkml/transformer multivalued: true alias: slot_derivations owner: ClassDerivation domain_of: - TransformationSpecification - ClassDerivation range: SlotDerivation inlined: true copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: ClassDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: ClassDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: ClassDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Induced"},{"location":"CopyDirective/","text":"Class: CopyDirective URI: linkmltr:CopyDirective classDiagram class CopyDirective CopyDirective : add CopyDirective : copy_all CopyDirective : element_name CopyDirective : exclude CopyDirective : exclude_all CopyDirective : include Slots Name Cardinality and Range Description Inheritance element_name 0..1 xsd:string direct copy_all 0..1 xsd:boolean direct exclude_all 0..1 xsd:boolean direct exclude 0..1 Any direct include 0..1 Any direct add 0..1 Any direct Usages used by used in type used ElementDerivation copy_directives range CopyDirective ClassDerivation copy_directives range CopyDirective SlotDerivation copy_directives range CopyDirective EnumDerivation copy_directives range CopyDirective PermissibleValueDerivation copy_directives range CopyDirective PrefixDerivation copy_directives range CopyDirective Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:CopyDirective native linkmltr:CopyDirective LinkML Source Direct name: CopyDirective from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: element_name: name: element_name from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true copy_all: name: copy_all from_schema: https://w3id.org/linkml/transformer rank: 1000 range: boolean exclude_all: name: exclude_all from_schema: https://w3id.org/linkml/transformer rank: 1000 range: boolean exclude: name: exclude from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Any include: name: include from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Any add: name: add from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Any Induced name: CopyDirective from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: element_name: name: element_name from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: element_name owner: CopyDirective domain_of: - CopyDirective copy_all: name: copy_all from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: copy_all owner: CopyDirective domain_of: - CopyDirective range: boolean exclude_all: name: exclude_all from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: exclude_all owner: CopyDirective domain_of: - CopyDirective range: boolean exclude: name: exclude from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: exclude owner: CopyDirective domain_of: - CopyDirective range: Any include: name: include from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: include owner: CopyDirective domain_of: - CopyDirective range: Any add: name: add from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: add owner: CopyDirective domain_of: - CopyDirective range: Any","title":"Class: CopyDirective"},{"location":"CopyDirective/#class-copydirective","text":"URI: linkmltr:CopyDirective classDiagram class CopyDirective CopyDirective : add CopyDirective : copy_all CopyDirective : element_name CopyDirective : exclude CopyDirective : exclude_all CopyDirective : include","title":"Class: CopyDirective"},{"location":"CopyDirective/#slots","text":"Name Cardinality and Range Description Inheritance element_name 0..1 xsd:string direct copy_all 0..1 xsd:boolean direct exclude_all 0..1 xsd:boolean direct exclude 0..1 Any direct include 0..1 Any direct add 0..1 Any direct","title":"Slots"},{"location":"CopyDirective/#usages","text":"used by used in type used ElementDerivation copy_directives range CopyDirective ClassDerivation copy_directives range CopyDirective SlotDerivation copy_directives range CopyDirective EnumDerivation copy_directives range CopyDirective PermissibleValueDerivation copy_directives range CopyDirective PrefixDerivation copy_directives range CopyDirective","title":"Usages"},{"location":"CopyDirective/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"CopyDirective/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"CopyDirective/#mappings","text":"Mapping Type Mapped Value self linkmltr:CopyDirective native linkmltr:CopyDirective","title":"Mappings"},{"location":"CopyDirective/#linkml-source","text":"","title":"LinkML Source"},{"location":"CopyDirective/#direct","text":"name: CopyDirective from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: element_name: name: element_name from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true copy_all: name: copy_all from_schema: https://w3id.org/linkml/transformer rank: 1000 range: boolean exclude_all: name: exclude_all from_schema: https://w3id.org/linkml/transformer rank: 1000 range: boolean exclude: name: exclude from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Any include: name: include from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Any add: name: add from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Any","title":"Direct"},{"location":"CopyDirective/#induced","text":"name: CopyDirective from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: element_name: name: element_name from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: element_name owner: CopyDirective domain_of: - CopyDirective copy_all: name: copy_all from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: copy_all owner: CopyDirective domain_of: - CopyDirective range: boolean exclude_all: name: exclude_all from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: exclude_all owner: CopyDirective domain_of: - CopyDirective range: boolean exclude: name: exclude from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: exclude owner: CopyDirective domain_of: - CopyDirective range: Any include: name: include from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: include owner: CopyDirective domain_of: - CopyDirective range: Any add: name: add from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: add owner: CopyDirective domain_of: - CopyDirective range: Any","title":"Induced"},{"location":"Curie/","text":"Type: Curie a compact URI URI: xsd:string base : Curie uri : xsd:string repr : str Comments in RDF serializations this MUST be expanded to a URI in non-RDF serializations MAY be serialized as the compact representation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Curie"},{"location":"Curie/#type-curie","text":"a compact URI URI: xsd:string base : Curie uri : xsd:string repr : str","title":"Type: Curie"},{"location":"Curie/#comments","text":"in RDF serializations this MUST be expanded to a URI in non-RDF serializations MAY be serialized as the compact representation","title":"Comments"},{"location":"Curie/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Curie/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Date/","text":"Type: Date a date (year, month and day) in an idealized calendar URI: xsd:date base : XSDDate uri : xsd:date repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Date"},{"location":"Date/#type-date","text":"a date (year, month and day) in an idealized calendar URI: xsd:date base : XSDDate uri : xsd:date repr : str","title":"Type: Date"},{"location":"Date/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Date/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"DateOrDatetime/","text":"Type: DateOrDatetime Either a date or a datetime URI: linkml:DateOrDatetime base : str uri : linkml:DateOrDatetime repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: DateOrDatetime"},{"location":"DateOrDatetime/#type-dateordatetime","text":"Either a date or a datetime URI: linkml:DateOrDatetime base : str uri : linkml:DateOrDatetime repr : str","title":"Type: DateOrDatetime"},{"location":"DateOrDatetime/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"DateOrDatetime/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Datetime/","text":"Type: Datetime The combination of a date and time URI: xsd:dateTime base : XSDDateTime uri : xsd:dateTime repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Datetime"},{"location":"Datetime/#type-datetime","text":"The combination of a date and time URI: xsd:dateTime base : XSDDateTime uri : xsd:dateTime repr : str","title":"Type: Datetime"},{"location":"Datetime/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Datetime/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Decimal/","text":"Type: Decimal A real number with arbitrary precision that conforms to the xsd:decimal specification URI: xsd:decimal base : Decimal uri : xsd:decimal Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Decimal"},{"location":"Decimal/#type-decimal","text":"A real number with arbitrary precision that conforms to the xsd:decimal specification URI: xsd:decimal base : Decimal uri : xsd:decimal","title":"Type: Decimal"},{"location":"Decimal/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Decimal/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Double/","text":"Type: Double A real number that conforms to the xsd:double specification URI: xsd:double base : float uri : xsd:double Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Double"},{"location":"Double/#type-double","text":"A real number that conforms to the xsd:double specification URI: xsd:double base : float uri : xsd:double","title":"Type: Double"},{"location":"Double/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Double/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"ElementDerivation/","text":"Class: ElementDerivation A specification of how to derive a target element from a source element. NOTE : this is an abstract class and should not be instantiated directly URI: linkmltr:ElementDerivation classDiagram class ElementDerivation ElementDerivation <|-- ClassDerivation ElementDerivation <|-- SlotDerivation ElementDerivation <|-- EnumDerivation ElementDerivation <|-- PermissibleValueDerivation ElementDerivation <|-- PrefixDerivation ElementDerivation : copy_directives ElementDerivation : is_a ElementDerivation : mixins ElementDerivation : name Inheritance ElementDerivation ClassDerivation SlotDerivation EnumDerivation PermissibleValueDerivation PrefixDerivation Slots Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct copy_directives 0..* CopyDirective direct is_a 0..1 ElementDerivation direct mixins 0..* ElementDerivation direct Usages used by used in type used ElementDerivation is_a range ElementDerivation ElementDerivation mixins range ElementDerivation ClassDerivation is_a range ElementDerivation ClassDerivation mixins range ElementDerivation SlotDerivation is_a range ElementDerivation SlotDerivation mixins range ElementDerivation EnumDerivation is_a range ElementDerivation EnumDerivation mixins range ElementDerivation PermissibleValueDerivation is_a range ElementDerivation PermissibleValueDerivation mixins range ElementDerivation PrefixDerivation is_a range ElementDerivation PrefixDerivation mixins range ElementDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:ElementDerivation native linkmltr:ElementDerivation LinkML Source Direct name: ElementDerivation description: A specification of how to derive a target element from a source element. from_schema: https://w3id.org/linkml/transformer rank: 1000 abstract: true attributes: name: name: name description: Name of the element in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: ElementDerivation inlined: true Induced name: ElementDerivation description: A specification of how to derive a target element from a source element. from_schema: https://w3id.org/linkml/transformer rank: 1000 abstract: true attributes: name: name: name description: Name of the element in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: name owner: ElementDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: ElementDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: ElementDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: ElementDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Class: ElementDerivation"},{"location":"ElementDerivation/#class-elementderivation","text":"A specification of how to derive a target element from a source element. NOTE : this is an abstract class and should not be instantiated directly URI: linkmltr:ElementDerivation classDiagram class ElementDerivation ElementDerivation <|-- ClassDerivation ElementDerivation <|-- SlotDerivation ElementDerivation <|-- EnumDerivation ElementDerivation <|-- PermissibleValueDerivation ElementDerivation <|-- PrefixDerivation ElementDerivation : copy_directives ElementDerivation : is_a ElementDerivation : mixins ElementDerivation : name","title":"Class: ElementDerivation"},{"location":"ElementDerivation/#inheritance","text":"ElementDerivation ClassDerivation SlotDerivation EnumDerivation PermissibleValueDerivation PrefixDerivation","title":"Inheritance"},{"location":"ElementDerivation/#slots","text":"Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct copy_directives 0..* CopyDirective direct is_a 0..1 ElementDerivation direct mixins 0..* ElementDerivation direct","title":"Slots"},{"location":"ElementDerivation/#usages","text":"used by used in type used ElementDerivation is_a range ElementDerivation ElementDerivation mixins range ElementDerivation ClassDerivation is_a range ElementDerivation ClassDerivation mixins range ElementDerivation SlotDerivation is_a range ElementDerivation SlotDerivation mixins range ElementDerivation EnumDerivation is_a range ElementDerivation EnumDerivation mixins range ElementDerivation PermissibleValueDerivation is_a range ElementDerivation PermissibleValueDerivation mixins range ElementDerivation PrefixDerivation is_a range ElementDerivation PrefixDerivation mixins range ElementDerivation","title":"Usages"},{"location":"ElementDerivation/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"ElementDerivation/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"ElementDerivation/#mappings","text":"Mapping Type Mapped Value self linkmltr:ElementDerivation native linkmltr:ElementDerivation","title":"Mappings"},{"location":"ElementDerivation/#linkml-source","text":"","title":"LinkML Source"},{"location":"ElementDerivation/#direct","text":"name: ElementDerivation description: A specification of how to derive a target element from a source element. from_schema: https://w3id.org/linkml/transformer rank: 1000 abstract: true attributes: name: name: name description: Name of the element in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: ElementDerivation inlined: true","title":"Direct"},{"location":"ElementDerivation/#induced","text":"name: ElementDerivation description: A specification of how to derive a target element from a source element. from_schema: https://w3id.org/linkml/transformer rank: 1000 abstract: true attributes: name: name: name description: Name of the element in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: name owner: ElementDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: ElementDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: ElementDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: ElementDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Induced"},{"location":"EnumDerivation/","text":"Class: EnumDerivation A specification of how to derive the value of a target enum from a source enum URI: linkmltr:EnumDerivation classDiagram class EnumDerivation ElementDerivation <|-- EnumDerivation EnumDerivation : copy_directives EnumDerivation : expr EnumDerivation : hide EnumDerivation : is_a EnumDerivation : mixins EnumDerivation : name EnumDerivation : permissible_value_derivations EnumDerivation : populated_from Inheritance ElementDerivation EnumDerivation Slots Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct populated_from 0..1 xsd:string direct expr 0..1 xsd:string direct hide 0..1 xsd:string direct permissible_value_derivations 0..* PermissibleValueDerivation Instructions on how to derive a set of PVs in the target schema direct copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation Usages used by used in type used TransformationSpecification enum_derivations range EnumDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:EnumDerivation native linkmltr:EnumDerivation LinkML Source Direct name: EnumDerivation description: A specification of how to derive the value of a target enum from a source enum from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target enum name from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from description: Source enum name from_schema: https://w3id.org/linkml/transformer range: string expr: name: expr description: An expression to be evaluated on the source object to derive the target slot. Should be specified using the LinkML expression language. from_schema: https://w3id.org/linkml/transformer range: string hide: name: hide description: True if this is suppressed from_schema: https://w3id.org/linkml/transformer range: boolean permissible_value_derivations: name: permissible_value_derivations description: Instructions on how to derive a set of PVs in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: PermissibleValueDerivation inlined: true Induced name: EnumDerivation description: A specification of how to derive the value of a target enum from a source enum from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target enum name from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: EnumDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation populated_from: name: populated_from description: Source enum name from_schema: https://w3id.org/linkml/transformer alias: populated_from owner: EnumDerivation domain_of: - ClassDerivation - SlotDerivation - EnumDerivation range: string expr: name: expr description: An expression to be evaluated on the source object to derive the target slot. Should be specified using the LinkML expression language. from_schema: https://w3id.org/linkml/transformer alias: expr owner: EnumDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string hide: name: hide description: True if this is suppressed from_schema: https://w3id.org/linkml/transformer alias: hide owner: EnumDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: boolean permissible_value_derivations: name: permissible_value_derivations description: Instructions on how to derive a set of PVs in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: permissible_value_derivations owner: EnumDerivation domain_of: - EnumDerivation range: PermissibleValueDerivation inlined: true copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: EnumDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: EnumDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: EnumDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Class: EnumDerivation"},{"location":"EnumDerivation/#class-enumderivation","text":"A specification of how to derive the value of a target enum from a source enum URI: linkmltr:EnumDerivation classDiagram class EnumDerivation ElementDerivation <|-- EnumDerivation EnumDerivation : copy_directives EnumDerivation : expr EnumDerivation : hide EnumDerivation : is_a EnumDerivation : mixins EnumDerivation : name EnumDerivation : permissible_value_derivations EnumDerivation : populated_from","title":"Class: EnumDerivation"},{"location":"EnumDerivation/#inheritance","text":"ElementDerivation EnumDerivation","title":"Inheritance"},{"location":"EnumDerivation/#slots","text":"Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct populated_from 0..1 xsd:string direct expr 0..1 xsd:string direct hide 0..1 xsd:string direct permissible_value_derivations 0..* PermissibleValueDerivation Instructions on how to derive a set of PVs in the target schema direct copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation","title":"Slots"},{"location":"EnumDerivation/#usages","text":"used by used in type used TransformationSpecification enum_derivations range EnumDerivation","title":"Usages"},{"location":"EnumDerivation/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"EnumDerivation/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"EnumDerivation/#mappings","text":"Mapping Type Mapped Value self linkmltr:EnumDerivation native linkmltr:EnumDerivation","title":"Mappings"},{"location":"EnumDerivation/#linkml-source","text":"","title":"LinkML Source"},{"location":"EnumDerivation/#direct","text":"name: EnumDerivation description: A specification of how to derive the value of a target enum from a source enum from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target enum name from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from description: Source enum name from_schema: https://w3id.org/linkml/transformer range: string expr: name: expr description: An expression to be evaluated on the source object to derive the target slot. Should be specified using the LinkML expression language. from_schema: https://w3id.org/linkml/transformer range: string hide: name: hide description: True if this is suppressed from_schema: https://w3id.org/linkml/transformer range: boolean permissible_value_derivations: name: permissible_value_derivations description: Instructions on how to derive a set of PVs in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: PermissibleValueDerivation inlined: true","title":"Direct"},{"location":"EnumDerivation/#induced","text":"name: EnumDerivation description: A specification of how to derive the value of a target enum from a source enum from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target enum name from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: EnumDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation populated_from: name: populated_from description: Source enum name from_schema: https://w3id.org/linkml/transformer alias: populated_from owner: EnumDerivation domain_of: - ClassDerivation - SlotDerivation - EnumDerivation range: string expr: name: expr description: An expression to be evaluated on the source object to derive the target slot. Should be specified using the LinkML expression language. from_schema: https://w3id.org/linkml/transformer alias: expr owner: EnumDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string hide: name: hide description: True if this is suppressed from_schema: https://w3id.org/linkml/transformer alias: hide owner: EnumDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: boolean permissible_value_derivations: name: permissible_value_derivations description: Instructions on how to derive a set of PVs in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: permissible_value_derivations owner: EnumDerivation domain_of: - EnumDerivation range: PermissibleValueDerivation inlined: true copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: EnumDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: EnumDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: EnumDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Induced"},{"location":"Float/","text":"Type: Float A real number that conforms to the xsd:float specification URI: xsd:float base : float uri : xsd:float Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Float"},{"location":"Float/#type-float","text":"A real number that conforms to the xsd:float specification URI: xsd:float base : float uri : xsd:float","title":"Type: Float"},{"location":"Float/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Float/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Integer/","text":"Type: Integer An integer URI: xsd:integer base : int uri : xsd:integer Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Integer"},{"location":"Integer/#type-integer","text":"An integer URI: xsd:integer base : int uri : xsd:integer","title":"Type: Integer"},{"location":"Integer/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Integer/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Inverse/","text":"Class: Inverse Used for back references URI: linkmltr:Inverse classDiagram class Inverse Inverse : class_name Inverse : slot_name Slots Name Cardinality and Range Description Inheritance slot_name 0..1 xsd:string direct class_name 0..1 xsd:string direct Usages used by used in type used SlotDerivation inverse_of range Inverse Aliases backref back_references Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:Inverse native linkmltr:Inverse LinkML Source Direct name: Inverse description: Used for back references from_schema: https://w3id.org/linkml/transformer aliases: - backref - back_references rank: 1000 attributes: slot_name: name: slot_name from_schema: https://w3id.org/linkml/transformer rank: 1000 class_name: name: class_name from_schema: https://w3id.org/linkml/transformer rank: 1000 Induced name: Inverse description: Used for back references from_schema: https://w3id.org/linkml/transformer aliases: - backref - back_references rank: 1000 attributes: slot_name: name: slot_name from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: slot_name owner: Inverse domain_of: - Inverse class_name: name: class_name from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: class_name owner: Inverse domain_of: - Inverse","title":"Class: Inverse"},{"location":"Inverse/#class-inverse","text":"Used for back references URI: linkmltr:Inverse classDiagram class Inverse Inverse : class_name Inverse : slot_name","title":"Class: Inverse"},{"location":"Inverse/#slots","text":"Name Cardinality and Range Description Inheritance slot_name 0..1 xsd:string direct class_name 0..1 xsd:string direct","title":"Slots"},{"location":"Inverse/#usages","text":"used by used in type used SlotDerivation inverse_of range Inverse","title":"Usages"},{"location":"Inverse/#aliases","text":"backref back_references","title":"Aliases"},{"location":"Inverse/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Inverse/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"Inverse/#mappings","text":"Mapping Type Mapped Value self linkmltr:Inverse native linkmltr:Inverse","title":"Mappings"},{"location":"Inverse/#linkml-source","text":"","title":"LinkML Source"},{"location":"Inverse/#direct","text":"name: Inverse description: Used for back references from_schema: https://w3id.org/linkml/transformer aliases: - backref - back_references rank: 1000 attributes: slot_name: name: slot_name from_schema: https://w3id.org/linkml/transformer rank: 1000 class_name: name: class_name from_schema: https://w3id.org/linkml/transformer rank: 1000","title":"Direct"},{"location":"Inverse/#induced","text":"name: Inverse description: Used for back references from_schema: https://w3id.org/linkml/transformer aliases: - backref - back_references rank: 1000 attributes: slot_name: name: slot_name from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: slot_name owner: Inverse domain_of: - Inverse class_name: name: class_name from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: class_name owner: Inverse domain_of: - Inverse","title":"Induced"},{"location":"KeyVal/","text":"Class: KeyVal URI: linkmltr:KeyVal classDiagram class KeyVal KeyVal : key KeyVal : value Slots Name Cardinality and Range Description Inheritance key 0..1 xsd:string direct value 0..1 Any direct Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:KeyVal native linkmltr:KeyVal LinkML Source Direct name: KeyVal from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: key: name: key from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true value: name: value from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Any Induced name: KeyVal from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: key: name: key from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: key owner: KeyVal domain_of: - KeyVal value: name: value from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: value owner: KeyVal domain_of: - KeyVal range: Any","title":"Class: KeyVal"},{"location":"KeyVal/#class-keyval","text":"URI: linkmltr:KeyVal classDiagram class KeyVal KeyVal : key KeyVal : value","title":"Class: KeyVal"},{"location":"KeyVal/#slots","text":"Name Cardinality and Range Description Inheritance key 0..1 xsd:string direct value 0..1 Any direct","title":"Slots"},{"location":"KeyVal/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"KeyVal/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"KeyVal/#mappings","text":"Mapping Type Mapped Value self linkmltr:KeyVal native linkmltr:KeyVal","title":"Mappings"},{"location":"KeyVal/#linkml-source","text":"","title":"LinkML Source"},{"location":"KeyVal/#direct","text":"name: KeyVal from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: key: name: key from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true value: name: value from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Any","title":"Direct"},{"location":"KeyVal/#induced","text":"name: KeyVal from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: key: name: key from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: key owner: KeyVal domain_of: - KeyVal value: name: value from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: value owner: KeyVal domain_of: - KeyVal range: Any","title":"Induced"},{"location":"Ncname/","text":"Type: Ncname Prefix part of CURIE URI: xsd:string base : NCName uri : xsd:string repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Ncname"},{"location":"Ncname/#type-ncname","text":"Prefix part of CURIE URI: xsd:string base : NCName uri : xsd:string repr : str","title":"Type: Ncname"},{"location":"Ncname/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Ncname/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Nodeidentifier/","text":"Type: Nodeidentifier A URI, CURIE or BNODE that represents a node in a model. URI: shex:nonLiteral base : NodeIdentifier uri : shex:nonLiteral repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Nodeidentifier"},{"location":"Nodeidentifier/#type-nodeidentifier","text":"A URI, CURIE or BNODE that represents a node in a model. URI: shex:nonLiteral base : NodeIdentifier uri : shex:nonLiteral repr : str","title":"Type: Nodeidentifier"},{"location":"Nodeidentifier/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Nodeidentifier/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Objectidentifier/","text":"Type: Objectidentifier A URI or CURIE that represents an object in the model. URI: shex:iri base : ElementIdentifier uri : shex:iri repr : str Comments Used for inheritence and type checking Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Objectidentifier"},{"location":"Objectidentifier/#type-objectidentifier","text":"A URI or CURIE that represents an object in the model. URI: shex:iri base : ElementIdentifier uri : shex:iri repr : str","title":"Type: Objectidentifier"},{"location":"Objectidentifier/#comments","text":"Used for inheritence and type checking","title":"Comments"},{"location":"Objectidentifier/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Objectidentifier/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"PermissibleValueDerivation/","text":"Class: PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum URI: linkmltr:PermissibleValueDerivation classDiagram class PermissibleValueDerivation ElementDerivation <|-- PermissibleValueDerivation PermissibleValueDerivation : copy_directives PermissibleValueDerivation : expr PermissibleValueDerivation : hide PermissibleValueDerivation : is_a PermissibleValueDerivation : mixins PermissibleValueDerivation : name Inheritance ElementDerivation PermissibleValueDerivation Slots Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct expr 0..1 xsd:string direct hide 0..1 xsd:string direct copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation Usages used by used in type used EnumDerivation permissible_value_derivations range PermissibleValueDerivation TODOs this is currently under-specified. We will need boolean combinators to express if-then-else Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:PermissibleValueDerivation native linkmltr:PermissibleValueDerivation LinkML Source Direct name: PermissibleValueDerivation description: A specification of how to derive the value of a PV from a source enum todos: - this is currently under-specified. We will need boolean combinators to express if-then-else from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target permissible value text from_schema: https://w3id.org/linkml/transformer key: true expr: name: expr from_schema: https://w3id.org/linkml/transformer range: string hide: name: hide from_schema: https://w3id.org/linkml/transformer range: boolean Induced name: PermissibleValueDerivation description: A specification of how to derive the value of a PV from a source enum todos: - this is currently under-specified. We will need boolean combinators to express if-then-else from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target permissible value text from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: PermissibleValueDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation expr: name: expr from_schema: https://w3id.org/linkml/transformer alias: expr owner: PermissibleValueDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string hide: name: hide from_schema: https://w3id.org/linkml/transformer alias: hide owner: PermissibleValueDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: boolean copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: PermissibleValueDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: PermissibleValueDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: PermissibleValueDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Class: PermissibleValueDerivation"},{"location":"PermissibleValueDerivation/#class-permissiblevaluederivation","text":"A specification of how to derive the value of a PV from a source enum URI: linkmltr:PermissibleValueDerivation classDiagram class PermissibleValueDerivation ElementDerivation <|-- PermissibleValueDerivation PermissibleValueDerivation : copy_directives PermissibleValueDerivation : expr PermissibleValueDerivation : hide PermissibleValueDerivation : is_a PermissibleValueDerivation : mixins PermissibleValueDerivation : name","title":"Class: PermissibleValueDerivation"},{"location":"PermissibleValueDerivation/#inheritance","text":"ElementDerivation PermissibleValueDerivation","title":"Inheritance"},{"location":"PermissibleValueDerivation/#slots","text":"Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct expr 0..1 xsd:string direct hide 0..1 xsd:string direct copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation","title":"Slots"},{"location":"PermissibleValueDerivation/#usages","text":"used by used in type used EnumDerivation permissible_value_derivations range PermissibleValueDerivation","title":"Usages"},{"location":"PermissibleValueDerivation/#todos","text":"this is currently under-specified. We will need boolean combinators to express if-then-else","title":"TODOs"},{"location":"PermissibleValueDerivation/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"PermissibleValueDerivation/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"PermissibleValueDerivation/#mappings","text":"Mapping Type Mapped Value self linkmltr:PermissibleValueDerivation native linkmltr:PermissibleValueDerivation","title":"Mappings"},{"location":"PermissibleValueDerivation/#linkml-source","text":"","title":"LinkML Source"},{"location":"PermissibleValueDerivation/#direct","text":"name: PermissibleValueDerivation description: A specification of how to derive the value of a PV from a source enum todos: - this is currently under-specified. We will need boolean combinators to express if-then-else from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target permissible value text from_schema: https://w3id.org/linkml/transformer key: true expr: name: expr from_schema: https://w3id.org/linkml/transformer range: string hide: name: hide from_schema: https://w3id.org/linkml/transformer range: boolean","title":"Direct"},{"location":"PermissibleValueDerivation/#induced","text":"name: PermissibleValueDerivation description: A specification of how to derive the value of a PV from a source enum todos: - this is currently under-specified. We will need boolean combinators to express if-then-else from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target permissible value text from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: PermissibleValueDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation expr: name: expr from_schema: https://w3id.org/linkml/transformer alias: expr owner: PermissibleValueDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string hide: name: hide from_schema: https://w3id.org/linkml/transformer alias: hide owner: PermissibleValueDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: boolean copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: PermissibleValueDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: PermissibleValueDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: PermissibleValueDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Induced"},{"location":"PrefixDerivation/","text":"Class: PrefixDerivation URI: linkmltr:PrefixDerivation classDiagram class PrefixDerivation ElementDerivation <|-- PrefixDerivation PrefixDerivation : copy_directives PrefixDerivation : is_a PrefixDerivation : mixins PrefixDerivation : name Inheritance ElementDerivation PrefixDerivation Slots Name Cardinality and Range Description Inheritance name 0..1 xsd:string Name of the element in the target schema ElementDerivation copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:PrefixDerivation native linkmltr:PrefixDerivation LinkML Source Direct name: PrefixDerivation from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation Induced name: PrefixDerivation from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Name of the element in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: name owner: PrefixDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: PrefixDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: PrefixDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: PrefixDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Class: PrefixDerivation"},{"location":"PrefixDerivation/#class-prefixderivation","text":"URI: linkmltr:PrefixDerivation classDiagram class PrefixDerivation ElementDerivation <|-- PrefixDerivation PrefixDerivation : copy_directives PrefixDerivation : is_a PrefixDerivation : mixins PrefixDerivation : name","title":"Class: PrefixDerivation"},{"location":"PrefixDerivation/#inheritance","text":"ElementDerivation PrefixDerivation","title":"Inheritance"},{"location":"PrefixDerivation/#slots","text":"Name Cardinality and Range Description Inheritance name 0..1 xsd:string Name of the element in the target schema ElementDerivation copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation","title":"Slots"},{"location":"PrefixDerivation/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"PrefixDerivation/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"PrefixDerivation/#mappings","text":"Mapping Type Mapped Value self linkmltr:PrefixDerivation native linkmltr:PrefixDerivation","title":"Mappings"},{"location":"PrefixDerivation/#linkml-source","text":"","title":"LinkML Source"},{"location":"PrefixDerivation/#direct","text":"name: PrefixDerivation from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation","title":"Direct"},{"location":"PrefixDerivation/#induced","text":"name: PrefixDerivation from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Name of the element in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: name owner: PrefixDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: PrefixDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: PrefixDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: PrefixDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Induced"},{"location":"SlotDerivation/","text":"Class: SlotDerivation A specification of how to derive the value of a target slot from a source slot URI: linkmltr:SlotDerivation classDiagram class SlotDerivation ElementDerivation <|-- SlotDerivation SlotDerivation : copy_directives SlotDerivation : expr SlotDerivation : hide SlotDerivation : inverse_of SlotDerivation : is_a SlotDerivation : mixins SlotDerivation : name SlotDerivation : populated_from SlotDerivation : type_designator Inheritance ElementDerivation SlotDerivation Slots Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct populated_from 0..1 xsd:string direct expr 0..1 xsd:string direct inverse_of 0..1 Inverse Used to specify a class-slot tuple that is the inverse of the derived/target ... direct hide 0..1 xsd:string direct type_designator 0..1 xsd:boolean direct copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation Usages used by used in type used TransformationSpecification slot_derivations range SlotDerivation ClassDerivation slot_derivations range SlotDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:SlotDerivation native linkmltr:SlotDerivation LinkML Source Direct name: SlotDerivation description: A specification of how to derive the value of a target slot from a source slot from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target slot name from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from description: Source slot name from_schema: https://w3id.org/linkml/transformer range: string expr: name: expr description: An expression to be evaluated on the source object to derive the target slot. Should be specified using the LinkML expression language. from_schema: https://w3id.org/linkml/transformer rank: 1000 range: string inverse_of: name: inverse_of description: Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot. from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Inverse hide: name: hide description: True if this is suppressed from_schema: https://w3id.org/linkml/transformer rank: 1000 range: boolean type_designator: name: type_designator from_schema: https://w3id.org/linkml/transformer rank: 1000 range: boolean Induced name: SlotDerivation description: A specification of how to derive the value of a target slot from a source slot from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target slot name from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: SlotDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation populated_from: name: populated_from description: Source slot name from_schema: https://w3id.org/linkml/transformer alias: populated_from owner: SlotDerivation domain_of: - ClassDerivation - SlotDerivation - EnumDerivation range: string expr: name: expr description: An expression to be evaluated on the source object to derive the target slot. Should be specified using the LinkML expression language. from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: expr owner: SlotDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string inverse_of: name: inverse_of description: Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot. from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: inverse_of owner: SlotDerivation domain_of: - SlotDerivation range: Inverse hide: name: hide description: True if this is suppressed from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: hide owner: SlotDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: boolean type_designator: name: type_designator from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: type_designator owner: SlotDerivation domain_of: - SlotDerivation range: boolean copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: SlotDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: SlotDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: SlotDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Class: SlotDerivation"},{"location":"SlotDerivation/#class-slotderivation","text":"A specification of how to derive the value of a target slot from a source slot URI: linkmltr:SlotDerivation classDiagram class SlotDerivation ElementDerivation <|-- SlotDerivation SlotDerivation : copy_directives SlotDerivation : expr SlotDerivation : hide SlotDerivation : inverse_of SlotDerivation : is_a SlotDerivation : mixins SlotDerivation : name SlotDerivation : populated_from SlotDerivation : type_designator","title":"Class: SlotDerivation"},{"location":"SlotDerivation/#inheritance","text":"ElementDerivation SlotDerivation","title":"Inheritance"},{"location":"SlotDerivation/#slots","text":"Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct populated_from 0..1 xsd:string direct expr 0..1 xsd:string direct inverse_of 0..1 Inverse Used to specify a class-slot tuple that is the inverse of the derived/target ... direct hide 0..1 xsd:string direct type_designator 0..1 xsd:boolean direct copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation","title":"Slots"},{"location":"SlotDerivation/#usages","text":"used by used in type used TransformationSpecification slot_derivations range SlotDerivation ClassDerivation slot_derivations range SlotDerivation","title":"Usages"},{"location":"SlotDerivation/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"SlotDerivation/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"SlotDerivation/#mappings","text":"Mapping Type Mapped Value self linkmltr:SlotDerivation native linkmltr:SlotDerivation","title":"Mappings"},{"location":"SlotDerivation/#linkml-source","text":"","title":"LinkML Source"},{"location":"SlotDerivation/#direct","text":"name: SlotDerivation description: A specification of how to derive the value of a target slot from a source slot from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target slot name from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from description: Source slot name from_schema: https://w3id.org/linkml/transformer range: string expr: name: expr description: An expression to be evaluated on the source object to derive the target slot. Should be specified using the LinkML expression language. from_schema: https://w3id.org/linkml/transformer rank: 1000 range: string inverse_of: name: inverse_of description: Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot. from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Inverse hide: name: hide description: True if this is suppressed from_schema: https://w3id.org/linkml/transformer rank: 1000 range: boolean type_designator: name: type_designator from_schema: https://w3id.org/linkml/transformer rank: 1000 range: boolean","title":"Direct"},{"location":"SlotDerivation/#induced","text":"name: SlotDerivation description: A specification of how to derive the value of a target slot from a source slot from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target slot name from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: SlotDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation populated_from: name: populated_from description: Source slot name from_schema: https://w3id.org/linkml/transformer alias: populated_from owner: SlotDerivation domain_of: - ClassDerivation - SlotDerivation - EnumDerivation range: string expr: name: expr description: An expression to be evaluated on the source object to derive the target slot. Should be specified using the LinkML expression language. from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: expr owner: SlotDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string inverse_of: name: inverse_of description: Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot. from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: inverse_of owner: SlotDerivation domain_of: - SlotDerivation range: Inverse hide: name: hide description: True if this is suppressed from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: hide owner: SlotDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: boolean type_designator: name: type_designator from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: type_designator owner: SlotDerivation domain_of: - SlotDerivation range: boolean copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: SlotDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: SlotDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: SlotDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Induced"},{"location":"String/","text":"Type: String A character string URI: xsd:string base : str uri : xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: String"},{"location":"String/#type-string","text":"A character string URI: xsd:string base : str uri : xsd:string","title":"Type: String"},{"location":"String/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"String/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Time/","text":"Type: Time A time object represents a (local) time of day, independent of any particular day URI: xsd:dateTime base : XSDTime uri : xsd:dateTime repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Time"},{"location":"Time/#type-time","text":"A time object represents a (local) time of day, independent of any particular day URI: xsd:dateTime base : XSDTime uri : xsd:dateTime repr : str","title":"Type: Time"},{"location":"Time/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Time/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"TransformationSpecification/","text":"Class: TransformationSpecification A collection of mappings between source and target classes URI: linkmltr:TransformationSpecification classDiagram class TransformationSpecification TransformationSpecification : class_derivations TransformationSpecification : enum_derivations TransformationSpecification : id TransformationSpecification : prefixes TransformationSpecification : slot_derivations TransformationSpecification : source_schema TransformationSpecification : target_schema TransformationSpecification : title Slots Name Cardinality and Range Description Inheritance id 1..1 xsd:string Unique identifier for this transformation specification direct title 0..1 xsd:string human readable title for this transformation specification direct prefixes 0..1 xsd:string prefix map direct source_schema 0..1 xsd:string name of the schema that describes the source (input) objects direct target_schema 0..1 xsd:string name of the schema that describes the target (output) objects direct class_derivations 0..* ClassDerivation Instructions on how to derive a set of classes in the target schema from clas... direct enum_derivations 0..* EnumDerivation Instructions on how to derive a set of enums in the target schema direct slot_derivations 0..1 xsd:string direct Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:TransformationSpecification native linkmltr:TransformationSpecification LinkML Source Direct name: TransformationSpecification description: A collection of mappings between source and target classes from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: id: name: id description: Unique identifier for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 identifier: true title: name: title description: human readable title for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 prefixes: name: prefixes description: prefix map from_schema: https://w3id.org/linkml/transformer rank: 1000 source_schema: name: source_schema description: name of the schema that describes the source (input) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 target_schema: name: target_schema description: name of the schema that describes the target (output) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 class_derivations: name: class_derivations description: Instructions on how to derive a set of classes in the target schema from classes in the source schema. from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: ClassDerivation inlined: true enum_derivations: name: enum_derivations description: Instructions on how to derive a set of enums in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: EnumDerivation inlined: true slot_derivations: name: slot_derivations description: Instructions on how to derive a set of top level slots in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: SlotDerivation inlined: true tree_root: true Induced name: TransformationSpecification description: A collection of mappings between source and target classes from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: id: name: id description: Unique identifier for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 identifier: true alias: id owner: TransformationSpecification domain_of: - TransformationSpecification title: name: title description: human readable title for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: title owner: TransformationSpecification domain_of: - TransformationSpecification prefixes: name: prefixes description: prefix map from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: prefixes owner: TransformationSpecification domain_of: - TransformationSpecification source_schema: name: source_schema description: name of the schema that describes the source (input) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: source_schema owner: TransformationSpecification domain_of: - TransformationSpecification target_schema: name: target_schema description: name of the schema that describes the target (output) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: target_schema owner: TransformationSpecification domain_of: - TransformationSpecification class_derivations: name: class_derivations description: Instructions on how to derive a set of classes in the target schema from classes in the source schema. from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: class_derivations owner: TransformationSpecification domain_of: - TransformationSpecification range: ClassDerivation inlined: true enum_derivations: name: enum_derivations description: Instructions on how to derive a set of enums in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: enum_derivations owner: TransformationSpecification domain_of: - TransformationSpecification range: EnumDerivation inlined: true slot_derivations: name: slot_derivations description: Instructions on how to derive a set of top level slots in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: slot_derivations owner: TransformationSpecification domain_of: - TransformationSpecification - ClassDerivation range: SlotDerivation inlined: true tree_root: true","title":"Class: TransformationSpecification"},{"location":"TransformationSpecification/#class-transformationspecification","text":"A collection of mappings between source and target classes URI: linkmltr:TransformationSpecification classDiagram class TransformationSpecification TransformationSpecification : class_derivations TransformationSpecification : enum_derivations TransformationSpecification : id TransformationSpecification : prefixes TransformationSpecification : slot_derivations TransformationSpecification : source_schema TransformationSpecification : target_schema TransformationSpecification : title","title":"Class: TransformationSpecification"},{"location":"TransformationSpecification/#slots","text":"Name Cardinality and Range Description Inheritance id 1..1 xsd:string Unique identifier for this transformation specification direct title 0..1 xsd:string human readable title for this transformation specification direct prefixes 0..1 xsd:string prefix map direct source_schema 0..1 xsd:string name of the schema that describes the source (input) objects direct target_schema 0..1 xsd:string name of the schema that describes the target (output) objects direct class_derivations 0..* ClassDerivation Instructions on how to derive a set of classes in the target schema from clas... direct enum_derivations 0..* EnumDerivation Instructions on how to derive a set of enums in the target schema direct slot_derivations 0..1 xsd:string direct","title":"Slots"},{"location":"TransformationSpecification/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"TransformationSpecification/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"TransformationSpecification/#mappings","text":"Mapping Type Mapped Value self linkmltr:TransformationSpecification native linkmltr:TransformationSpecification","title":"Mappings"},{"location":"TransformationSpecification/#linkml-source","text":"","title":"LinkML Source"},{"location":"TransformationSpecification/#direct","text":"name: TransformationSpecification description: A collection of mappings between source and target classes from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: id: name: id description: Unique identifier for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 identifier: true title: name: title description: human readable title for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 prefixes: name: prefixes description: prefix map from_schema: https://w3id.org/linkml/transformer rank: 1000 source_schema: name: source_schema description: name of the schema that describes the source (input) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 target_schema: name: target_schema description: name of the schema that describes the target (output) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 class_derivations: name: class_derivations description: Instructions on how to derive a set of classes in the target schema from classes in the source schema. from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: ClassDerivation inlined: true enum_derivations: name: enum_derivations description: Instructions on how to derive a set of enums in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: EnumDerivation inlined: true slot_derivations: name: slot_derivations description: Instructions on how to derive a set of top level slots in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: SlotDerivation inlined: true tree_root: true","title":"Direct"},{"location":"TransformationSpecification/#induced","text":"name: TransformationSpecification description: A collection of mappings between source and target classes from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: id: name: id description: Unique identifier for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 identifier: true alias: id owner: TransformationSpecification domain_of: - TransformationSpecification title: name: title description: human readable title for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: title owner: TransformationSpecification domain_of: - TransformationSpecification prefixes: name: prefixes description: prefix map from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: prefixes owner: TransformationSpecification domain_of: - TransformationSpecification source_schema: name: source_schema description: name of the schema that describes the source (input) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: source_schema owner: TransformationSpecification domain_of: - TransformationSpecification target_schema: name: target_schema description: name of the schema that describes the target (output) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: target_schema owner: TransformationSpecification domain_of: - TransformationSpecification class_derivations: name: class_derivations description: Instructions on how to derive a set of classes in the target schema from classes in the source schema. from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: class_derivations owner: TransformationSpecification domain_of: - TransformationSpecification range: ClassDerivation inlined: true enum_derivations: name: enum_derivations description: Instructions on how to derive a set of enums in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: enum_derivations owner: TransformationSpecification domain_of: - TransformationSpecification range: EnumDerivation inlined: true slot_derivations: name: slot_derivations description: Instructions on how to derive a set of top level slots in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: slot_derivations owner: TransformationSpecification domain_of: - TransformationSpecification - ClassDerivation range: SlotDerivation inlined: true tree_root: true","title":"Induced"},{"location":"Uri/","text":"Type: Uri a complete URI URI: xsd:anyURI base : URI uri : xsd:anyURI repr : str Comments in RDF serializations a slot with range of uri is treated as a literal or type xsd:anyURI unless it is an identifier or a reference to an identifier, in which case it is translated directly to a node Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Uri"},{"location":"Uri/#type-uri","text":"a complete URI URI: xsd:anyURI base : URI uri : xsd:anyURI repr : str","title":"Type: Uri"},{"location":"Uri/#comments","text":"in RDF serializations a slot with range of uri is treated as a literal or type xsd:anyURI unless it is an identifier or a reference to an identifier, in which case it is translated directly to a node","title":"Comments"},{"location":"Uri/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Uri/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Uriorcurie/","text":"Type: Uriorcurie a URI or a CURIE URI: xsd:anyURI base : URIorCURIE uri : xsd:anyURI repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Uriorcurie"},{"location":"Uriorcurie/#type-uriorcurie","text":"a URI or a CURIE URI: xsd:anyURI base : URIorCURIE uri : xsd:anyURI repr : str","title":"Type: Uriorcurie"},{"location":"Uriorcurie/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Uriorcurie/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"add/","text":"Slot: add URI: linkmltr:add Applicable Classes Name Description CopyDirective Properties Range: Any Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: add from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: add owner: CopyDirective domain_of: - CopyDirective range: Any","title":"Slot: add"},{"location":"add/#slot-add","text":"URI: linkmltr:add","title":"Slot: add"},{"location":"add/#applicable-classes","text":"Name Description CopyDirective","title":"Applicable Classes"},{"location":"add/#properties","text":"Range: Any","title":"Properties"},{"location":"add/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"add/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"add/#linkml-source","text":"name: add from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: add owner: CopyDirective domain_of: - CopyDirective range: Any","title":"LinkML Source"},{"location":"alias/","text":"Slot: alias name of the class to be aliased URI: linkmltr:alias Applicable Classes Name Description AliasedClass alias-class key value pairs for classes Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: alias description: name of the class to be aliased from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: alias owner: AliasedClass domain_of: - AliasedClass range: string","title":"Slot: alias"},{"location":"alias/#slot-alias","text":"name of the class to be aliased URI: linkmltr:alias","title":"Slot: alias"},{"location":"alias/#applicable-classes","text":"Name Description AliasedClass alias-class key value pairs for classes","title":"Applicable Classes"},{"location":"alias/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"alias/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"alias/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"alias/#linkml-source","text":"name: alias description: name of the class to be aliased from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: alias owner: AliasedClass domain_of: - AliasedClass range: string","title":"LinkML Source"},{"location":"class_derivations/","text":"Slot: class_derivations Instructions on how to derive a set of classes in the target schema from classes in the source schema. URI: linkmltr:class_derivations Applicable Classes Name Description TransformationSpecification A collection of mappings between source and target classes Properties Range: ClassDerivation Multivalued: True Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: class_derivations description: Instructions on how to derive a set of classes in the target schema from classes in the source schema. from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: class_derivations owner: TransformationSpecification domain_of: - TransformationSpecification range: ClassDerivation inlined: true","title":"Slot: class_derivations"},{"location":"class_derivations/#slot-class_derivations","text":"Instructions on how to derive a set of classes in the target schema from classes in the source schema. URI: linkmltr:class_derivations","title":"Slot: class_derivations"},{"location":"class_derivations/#applicable-classes","text":"Name Description TransformationSpecification A collection of mappings between source and target classes","title":"Applicable Classes"},{"location":"class_derivations/#properties","text":"Range: ClassDerivation Multivalued: True","title":"Properties"},{"location":"class_derivations/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"class_derivations/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"class_derivations/#linkml-source","text":"name: class_derivations description: Instructions on how to derive a set of classes in the target schema from classes in the source schema. from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: class_derivations owner: TransformationSpecification domain_of: - TransformationSpecification range: ClassDerivation inlined: true","title":"LinkML Source"},{"location":"class_name/","text":"Slot: class_name URI: linkmltr:class_name Applicable Classes Name Description Inverse Used for back references Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: class_name from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: class_name owner: Inverse domain_of: - Inverse range: string","title":"Slot: class_name"},{"location":"class_name/#slot-class_name","text":"URI: linkmltr:class_name","title":"Slot: class_name"},{"location":"class_name/#applicable-classes","text":"Name Description Inverse Used for back references","title":"Applicable Classes"},{"location":"class_name/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"class_name/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"class_name/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"class_name/#linkml-source","text":"name: class_name from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: class_name owner: Inverse domain_of: - Inverse range: string","title":"LinkML Source"},{"location":"class_named/","text":"Slot: class_named local alias for the class URI: linkmltr:class_named Applicable Classes Name Description AliasedClass alias-class key value pairs for classes Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: class_named owner: AliasedClass domain_of: - AliasedClass range: string","title":"Slot: class_named"},{"location":"class_named/#slot-class_named","text":"local alias for the class URI: linkmltr:class_named","title":"Slot: class_named"},{"location":"class_named/#applicable-classes","text":"Name Description AliasedClass alias-class key value pairs for classes","title":"Applicable Classes"},{"location":"class_named/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"class_named/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"class_named/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"class_named/#linkml-source","text":"name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: class_named owner: AliasedClass domain_of: - AliasedClass range: string","title":"LinkML Source"},{"location":"copy_all/","text":"Slot: copy_all URI: linkmltr:copy_all Applicable Classes Name Description CopyDirective Properties Range: xsd:boolean Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: copy_all from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: copy_all owner: CopyDirective domain_of: - CopyDirective range: boolean","title":"Slot: copy_all"},{"location":"copy_all/#slot-copy_all","text":"URI: linkmltr:copy_all","title":"Slot: copy_all"},{"location":"copy_all/#applicable-classes","text":"Name Description CopyDirective","title":"Applicable Classes"},{"location":"copy_all/#properties","text":"Range: xsd:boolean","title":"Properties"},{"location":"copy_all/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"copy_all/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"copy_all/#linkml-source","text":"name: copy_all from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: copy_all owner: CopyDirective domain_of: - CopyDirective range: boolean","title":"LinkML Source"},{"location":"copy_directives/","text":"Slot: copy_directives URI: linkmltr:copy_directives Applicable Classes Name Description ElementDerivation A specification of how to derive a target element from a source element ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation Properties Range: CopyDirective Multivalued: True Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: ElementDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true","title":"Slot: copy_directives"},{"location":"copy_directives/#slot-copy_directives","text":"URI: linkmltr:copy_directives","title":"Slot: copy_directives"},{"location":"copy_directives/#applicable-classes","text":"Name Description ElementDerivation A specification of how to derive a target element from a source element ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation","title":"Applicable Classes"},{"location":"copy_directives/#properties","text":"Range: CopyDirective Multivalued: True","title":"Properties"},{"location":"copy_directives/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"copy_directives/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"copy_directives/#linkml-source","text":"name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: ElementDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true","title":"LinkML Source"},{"location":"element_name/","text":"Slot: element_name URI: linkmltr:element_name Applicable Classes Name Description CopyDirective Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: element_name from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: element_name owner: CopyDirective domain_of: - CopyDirective range: string","title":"Slot: element_name"},{"location":"element_name/#slot-element_name","text":"URI: linkmltr:element_name","title":"Slot: element_name"},{"location":"element_name/#applicable-classes","text":"Name Description CopyDirective","title":"Applicable Classes"},{"location":"element_name/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"element_name/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"element_name/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"element_name/#linkml-source","text":"name: element_name from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: element_name owner: CopyDirective domain_of: - CopyDirective range: string","title":"LinkML Source"},{"location":"enum_derivations/","text":"Slot: enum_derivations Instructions on how to derive a set of enums in the target schema URI: linkmltr:enum_derivations Applicable Classes Name Description TransformationSpecification A collection of mappings between source and target classes Properties Range: EnumDerivation Multivalued: True Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: enum_derivations description: Instructions on how to derive a set of enums in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: enum_derivations owner: TransformationSpecification domain_of: - TransformationSpecification range: EnumDerivation inlined: true","title":"Slot: enum_derivations"},{"location":"enum_derivations/#slot-enum_derivations","text":"Instructions on how to derive a set of enums in the target schema URI: linkmltr:enum_derivations","title":"Slot: enum_derivations"},{"location":"enum_derivations/#applicable-classes","text":"Name Description TransformationSpecification A collection of mappings between source and target classes","title":"Applicable Classes"},{"location":"enum_derivations/#properties","text":"Range: EnumDerivation Multivalued: True","title":"Properties"},{"location":"enum_derivations/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"enum_derivations/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"enum_derivations/#linkml-source","text":"name: enum_derivations description: Instructions on how to derive a set of enums in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: enum_derivations owner: TransformationSpecification domain_of: - TransformationSpecification range: EnumDerivation inlined: true","title":"LinkML Source"},{"location":"exclude/","text":"Slot: exclude URI: linkmltr:exclude Applicable Classes Name Description CopyDirective Properties Range: Any Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: exclude from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: exclude owner: CopyDirective domain_of: - CopyDirective range: Any","title":"Slot: exclude"},{"location":"exclude/#slot-exclude","text":"URI: linkmltr:exclude","title":"Slot: exclude"},{"location":"exclude/#applicable-classes","text":"Name Description CopyDirective","title":"Applicable Classes"},{"location":"exclude/#properties","text":"Range: Any","title":"Properties"},{"location":"exclude/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"exclude/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"exclude/#linkml-source","text":"name: exclude from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: exclude owner: CopyDirective domain_of: - CopyDirective range: Any","title":"LinkML Source"},{"location":"exclude_all/","text":"Slot: exclude_all URI: linkmltr:exclude_all Applicable Classes Name Description CopyDirective Properties Range: xsd:boolean Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: exclude_all from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: exclude_all owner: CopyDirective domain_of: - CopyDirective range: boolean","title":"Slot: exclude_all"},{"location":"exclude_all/#slot-exclude_all","text":"URI: linkmltr:exclude_all","title":"Slot: exclude_all"},{"location":"exclude_all/#applicable-classes","text":"Name Description CopyDirective","title":"Applicable Classes"},{"location":"exclude_all/#properties","text":"Range: xsd:boolean","title":"Properties"},{"location":"exclude_all/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"exclude_all/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"exclude_all/#linkml-source","text":"name: exclude_all from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: exclude_all owner: CopyDirective domain_of: - CopyDirective range: boolean","title":"LinkML Source"},{"location":"expr/","text":"Slot: expr URI: linkmltr:expr Applicable Classes Name Description SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum Properties Range: xsd:string Identifier and Mapping Information LinkML Source name: expr alias: expr domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string","title":"Slot: expr"},{"location":"expr/#slot-expr","text":"URI: linkmltr:expr","title":"Slot: expr"},{"location":"expr/#applicable-classes","text":"Name Description SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum","title":"Applicable Classes"},{"location":"expr/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"expr/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"expr/#linkml-source","text":"name: expr alias: expr domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string","title":"LinkML Source"},{"location":"hide/","text":"Slot: hide URI: linkmltr:hide Applicable Classes Name Description SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum Properties Range: xsd:string Identifier and Mapping Information LinkML Source name: hide alias: hide domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string","title":"Slot: hide"},{"location":"hide/#slot-hide","text":"URI: linkmltr:hide","title":"Slot: hide"},{"location":"hide/#applicable-classes","text":"Name Description SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum","title":"Applicable Classes"},{"location":"hide/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"hide/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"hide/#linkml-source","text":"name: hide alias: hide domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string","title":"LinkML Source"},{"location":"id/","text":"Slot: id Unique identifier for this transformation specification URI: linkmltr:id Applicable Classes Name Description TransformationSpecification A collection of mappings between source and target classes Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: id description: Unique identifier for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 identifier: true alias: id owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"Slot: id"},{"location":"id/#slot-id","text":"Unique identifier for this transformation specification URI: linkmltr:id","title":"Slot: id"},{"location":"id/#applicable-classes","text":"Name Description TransformationSpecification A collection of mappings between source and target classes","title":"Applicable Classes"},{"location":"id/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"id/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"id/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"id/#linkml-source","text":"name: id description: Unique identifier for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 identifier: true alias: id owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"LinkML Source"},{"location":"include/","text":"Slot: include URI: linkmltr:include Applicable Classes Name Description CopyDirective Properties Range: Any Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: include from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: include owner: CopyDirective domain_of: - CopyDirective range: Any","title":"Slot: include"},{"location":"include/#slot-include","text":"URI: linkmltr:include","title":"Slot: include"},{"location":"include/#applicable-classes","text":"Name Description CopyDirective","title":"Applicable Classes"},{"location":"include/#properties","text":"Range: Any","title":"Properties"},{"location":"include/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"include/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"include/#linkml-source","text":"name: include from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: include owner: CopyDirective domain_of: - CopyDirective range: Any","title":"LinkML Source"},{"location":"inverse_of/","text":"Slot: inverse_of Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot. URI: linkmltr:inverse_of Applicable Classes Name Description SlotDerivation A specification of how to derive the value of a target slot from a source slo... Properties Range: Inverse Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: inverse_of description: Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot. from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: inverse_of owner: SlotDerivation domain_of: - SlotDerivation range: Inverse","title":"Slot: inverse_of"},{"location":"inverse_of/#slot-inverse_of","text":"Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot. URI: linkmltr:inverse_of","title":"Slot: inverse_of"},{"location":"inverse_of/#applicable-classes","text":"Name Description SlotDerivation A specification of how to derive the value of a target slot from a source slo...","title":"Applicable Classes"},{"location":"inverse_of/#properties","text":"Range: Inverse","title":"Properties"},{"location":"inverse_of/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"inverse_of/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"inverse_of/#linkml-source","text":"name: inverse_of description: Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot. from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: inverse_of owner: SlotDerivation domain_of: - SlotDerivation range: Inverse","title":"LinkML Source"},{"location":"is_a/","text":"Slot: is_a URI: linkmltr:is_a Applicable Classes Name Description ElementDerivation A specification of how to derive a target element from a source element ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation Properties Range: ElementDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: ElementDerivation domain_of: - ElementDerivation range: ElementDerivation","title":"Slot: is_a"},{"location":"is_a/#slot-is_a","text":"URI: linkmltr:is_a","title":"Slot: is_a"},{"location":"is_a/#applicable-classes","text":"Name Description ElementDerivation A specification of how to derive a target element from a source element ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation","title":"Applicable Classes"},{"location":"is_a/#properties","text":"Range: ElementDerivation","title":"Properties"},{"location":"is_a/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"is_a/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"is_a/#linkml-source","text":"name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: ElementDerivation domain_of: - ElementDerivation range: ElementDerivation","title":"LinkML Source"},{"location":"joins/","text":"Slot: joins Additional classes to be joined to derive instances of the target class URI: linkmltr:joins Applicable Classes Name Description ClassDerivation A specification of how to derive a target class from a source class Properties Range: AliasedClass Multivalued: True Comments not yet implemented Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: joins description: Additional classes to be joined to derive instances of the target class comments: - not yet implemented from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: joins owner: ClassDerivation domain_of: - ClassDerivation range: AliasedClass inlined: true","title":"Slot: joins"},{"location":"joins/#slot-joins","text":"Additional classes to be joined to derive instances of the target class URI: linkmltr:joins","title":"Slot: joins"},{"location":"joins/#applicable-classes","text":"Name Description ClassDerivation A specification of how to derive a target class from a source class","title":"Applicable Classes"},{"location":"joins/#properties","text":"Range: AliasedClass Multivalued: True","title":"Properties"},{"location":"joins/#comments","text":"not yet implemented","title":"Comments"},{"location":"joins/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"joins/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"joins/#linkml-source","text":"name: joins description: Additional classes to be joined to derive instances of the target class comments: - not yet implemented from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: joins owner: ClassDerivation domain_of: - ClassDerivation range: AliasedClass inlined: true","title":"LinkML Source"},{"location":"key/","text":"Slot: key URI: linkmltr:key Applicable Classes Name Description KeyVal Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: key from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: key owner: KeyVal domain_of: - KeyVal range: string","title":"Slot: key"},{"location":"key/#slot-key","text":"URI: linkmltr:key","title":"Slot: key"},{"location":"key/#applicable-classes","text":"Name Description KeyVal","title":"Applicable Classes"},{"location":"key/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"key/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"key/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"key/#linkml-source","text":"name: key from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: key owner: KeyVal domain_of: - KeyVal range: string","title":"LinkML Source"},{"location":"mixins/","text":"Slot: mixins URI: linkmltr:mixins Applicable Classes Name Description ElementDerivation A specification of how to derive a target element from a source element ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation Properties Range: ElementDerivation Multivalued: True Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: ElementDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Slot: mixins"},{"location":"mixins/#slot-mixins","text":"URI: linkmltr:mixins","title":"Slot: mixins"},{"location":"mixins/#applicable-classes","text":"Name Description ElementDerivation A specification of how to derive a target element from a source element ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation","title":"Applicable Classes"},{"location":"mixins/#properties","text":"Range: ElementDerivation Multivalued: True","title":"Properties"},{"location":"mixins/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"mixins/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"mixins/#linkml-source","text":"name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: ElementDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"LinkML Source"},{"location":"name/","text":"Slot: name URI: linkmltr:name Applicable Classes Name Description ElementDerivation A specification of how to derive a target element from a source element ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation Properties Range: xsd:string Identifier and Mapping Information LinkML Source name: name alias: name domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string","title":"Slot: name"},{"location":"name/#slot-name","text":"URI: linkmltr:name","title":"Slot: name"},{"location":"name/#applicable-classes","text":"Name Description ElementDerivation A specification of how to derive a target element from a source element ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation","title":"Applicable Classes"},{"location":"name/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"name/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"name/#linkml-source","text":"name: name alias: name domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string","title":"LinkML Source"},{"location":"overview/","text":"Mapping Between LinkML Schemas Draft 2022-06-24 Problem: map data from one schema to another Problem: Map d1 \u2192 d2 Assumption d1 and d2 conform to two separate schemas\\, s1\u2192 s2 Sub-problems: Ingest/Import: my data warehouse conforms to s2 (e.g. Monarch ingest) Export: make my data ingest friendly Migrations: s1 and s2 are different versions of the same schema Not in scope: in-schema syntactic or structural transforms JSON to YAML\\, JSON to TSV\\, JSON to SQL\\, JSON to RDF\\, ORM\\, \u2026 In LinkML this is already largely solved The actual problem space is highly varied S1 and S2 may be trivially isomorphic S1 and S2 may differ in complex or nuanced ways There are many existing approaches Generic frameworks\\, driven by declarative specification in Domain Specific Language (DSL) JSON-based Google whistle jsonpath-lift XSLT Semweb YARRML\\, R2RML Many many more\u2026 Bespoke transforms: non-declarative Implement in python/awk/etc. Hybrid: bespoke with some declarative mappings in ad-hoc format E.g. NMDC ingest framework Traps with declarative mapping Declarative is great\\, until it\u2019s not Anti-patterns: Insufficient expressivity to carry out real world tasks Bolting on features to mapping DSL until it\u2019s a fully-featured Turing-complete language Optimization/scalability at mercy of framework Messy layering between DSL and host language It can be useful to leverage host language features (e.g arbitrary python function) But this can get confusing: NFNF: Neither fish nor fowl Limits optimizations (forces iterative host language calls) YARRRML https://rml.io/yarrrml/ YARRRML notes Has a playground\\, which is great Mixes two concerns: 1. Isomorphic structural mapping between JSON/TSVs and RDF (already covered by JSON-LD) 2. Mapping This isn\u2019t necessarily bad - it\u2019s quite practical\\, but a little unsatisfying IMO jsonpath-lifter Was proposed for CCDH CRDC-node mappings Doesn\u2019t seem widely used Is there a big advantage over simply writing javascript functions? Koza (previously: bioweave) ETL frameworks There are many many ETL frameworks E.g. WebKarma Inherently mixing of concerns Here we are concerned with the \u201cT\u201d part Do existing frameworks separate out the T as a modular composable component? I\u2019m not sure Do we need Yet Another Mapping Framework? LinkML philosophy: Embrace\\, extend\\, parasitize Develop lightweight ways to map Map mappings to existing mapping frameworks This actually makes sense even if it sounds kind of meta\u2026 Level 0 Mapping: Isomorphic, same URIs classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address classes: Agent: class_uri: sdo:Person attributes: surname: slot_uri: sdo:familyName home_address: slot_uri: sdo:address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Level 0: handled by standard linkml convert to/from RDF classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address classes: Agent: class_uri: sdo:Person attributes: surname: slot_uri: sdo:familyName home_address: slot_uri: sdo:address data2 (yaml/json) d ata1 (yaml/json) family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville d ata1.ttl == data2.ttl [sdo:familyName \u201cWu\u201d ; sdo:address \u201c1 my street\\, Oakville\u201d ] Level 0: Enums TODO: add example here. Basically this works the same way Level 0: HOWTO Compose two commands: linkml-convert -s schema1.yaml data1.yaml -o data1.ttl linkml-convert -s schema2.yaml data1.ttl -o data2.yaml That\u2019s it! TODO: Write a wrapper (linkml-map-data?) that does this in one command Level 0: other considerations Going via RDF in theory eliminates inlining differences E.g. s1 inlines address objects\\, s2 uses references (inlined: false) and includes a separate index slot for addresses Current status: Currently when going from s1 to s2\\, no index slots are generated This could be done as part of the general rdflib framework Lessons learned so far: annotate your schema with URIs! Annotating schemas with URIs is optional with LinkML But your future self and data users will thank you for careful schema annotation! Hints: Schema-automator can provide suggestions for your element and enum URIs Sometimes plain semweb URIs (e.g. schema.org) can be easier for interoperation than overly granular OBO ones E.g modeling Personhood as a role vs straightforward schema:Person Level 1 Mapping: Isomorphic, different URIs name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Level 1 Mapping: mediated by URI mapping name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address subject_id object_id sdo:Person NCBITaxon:9606 sdo:familyName IAO:nnnn sdo:address IAO:0000422 family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] Level 1: HOWTO Compose three commands: linkml-convert -s schema1.yaml data1.yaml -o data1.ttl sssom-map-iris -i data1.ttl -m schema1-to-schema2.sssom.tsv -o data2.ttl linkml-convert -s schema2.yaml data2.ttl -o data2.yaml That\u2019s it! TODO: sssom-map-iris does not yet exist (?)\\, but should be trivial Fold into wrapper CLI tool Nuances: Schemas have nuanced differences: not everything with be skos:exact We can distinguish 3 flavors of level 1 mapping: Precise\\, bidirectional: follow exact only Valid\\, unidirectional: follow exact + broad Loose: any mapping Level 1 variant: mappings in schema name: example-semweb-schema classes: Person: class_uri: sdo:Person exact_mappings: [\u201cNCBITaxon:9606\u201d] attributes: family_name: slot_uri: sdo:familyName exact_mappings: [\u201cIAO:nnnn\u201d] address: slot_uri: sdo:address exact_mappings: [\u201cIAO:0000422\u201d] name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] Advantages of RDF as an intermediate Use of IRIs Separation of concerns Structural differences (e.g. inlining) are already handled by linkml convert Allows us to focus on semantic mappings Lessons learned so far: think about mappings https://linkml.io/linkml/faq/modeling.html#when-is-it-important-to-have-mappings https://github.com/alliance-genome/agr_curation_schema/blob/main/model/schema/agent.yaml More complex mappings: level 2 and above TODO: define levels 2 and above Examples of kinds of features: merging/splitting fields; e.g. full_name = first + \u201c \u201c + last Unit conversion or baked-in units to explicit units Normalization/denormalization (aka flattening) Complex logic If conditions A\\, B\\, C and not D are met then copy field F from X to Y LinkML Rule and Inference Framework Current use case is intra-schema inference Easy to invoke on command line Needs more docs! Could form basis of inter-schema DSL Examples Schemas differ in units Schemas differ in categorical vs quantitative Current use case is intra-schema inference Could form basis of inter-schema DSL Datalog Datalog could serve as the powerful basis of an expressive declarative transformation language https://linkml.io/linkml-datalog Approach for level 2+ Do we even want a generic mapping framework in LinkML here? This is a good \u201c parasitization hook\u201d Do complex stuff using an existing framework TBD: derive or semi-derive mapping specification? This is also a code bespoke procedural code hook Do the generic stuff with linkml-convert and isomorphic IRI mapping Do more complex stuff in code General approach for level 2+; same to same name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville JSON OR XML OR YAML OR RDF OR SQL JSON OR XML OR YAML OR RDF OR SQL (matches the one on the left) Existing mapping framework (X to X) Example of same-to-same: jsonpath-lifter name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Jsonpath-lifter (JSON to JSON) Example of same-to-same: awk Example of same-to-same: SQL INSERT INTO Agent AS SELECT Person.last_name AS Agent.surname\\, CONCAT(Person.full_name\\, \u201c \u201c\\, Person.first) AS Agent.full_name\\, \u2026 CONSTRUCT { [ a schema:Person ; my:fullName STRCAT(...) ] } WHERE { ?person a schema:Person ; schema:firstName ; schema:lastName ; \u2026 } SPARQL CONSTRUCT RDF Engine or Triplestore Example of same-to-same: Python (LinkML objects) def convert(p: Person) -> Agent: return Agent(p.id\\, full_name=f\u201d{..} {..}\u201d\\, \u2026 Conversion script General approach for level 2+; heteromorphic name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville L inkml-convert OPTIONAL L inkml-convert OPTIONAL JSON OR XML OR YAML OR RDF OR SQL JSON OR XML OR YAML OR RDF OR SQL ( different from the one on the left) Existing mapping framework (X to Y) Example: YARRRML name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville YARRRML (JSON/YAML to RDF) Example: YARRRML, native mappings name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville mapping.yarrrml.yml Example: YARRRML, compiled mappings name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address Mappings : \u2026 \\< TO BE DEFINED LINKML MAPPING SPEC > name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville mapping.yarrrml.yml Hyperparasitism is good name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address Mappings : \u2026 \\< TO BE DEFINED LINKML MAPPING SPEC > name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address mapping.yarrrml.yml family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Alternative: Direct translation language Desiderata Ability to compile to scalable frameworks E.g. compile to SQL Simple for simple tasks Layer on existing expression language Provides path to safe subset of host language (Python) Can be easily implemented in other languages Normalized to Denormalized (modeling SSSOM) SQL INSERT (or CREATE VIEW) SQL FROM Clause (implicit INNER JOIN/WHERE) SQL SELECT \u2026 AS clause Relationship to profiles TODO Profiles/IGs can be seen as a sub-case of schema mapping Current progress https://github.com/linkml/linkml/issues/533 map to YARRRML Vincent Vemonet has started on linkml->rml https://github.com/vemonet/linkml/blob/add-gen-rml/linkml/generators/rmlgen.py Relationship to Koza Koza ingests often require multiple files See Also Revisiting BioWeave (Kent Shefchek\\, 2020?) https://docs.google.com/presentation/d/1DYiWXoz3iHM2PvMFD0hRpJ544tnHawg00PBwNuESo44/edit#slide=id.gb33d7ddd1b_0_93 Automating mapping Should we pursue approaches to automate mapping? Some of the functionality is already in schema-automator. E.g. auto-annotating schema elements using ontologies Isomorphic schema mapping discovery analogous to ontology mapping Can a boomer type approach help? E.g. given multiple loose mappings with alternative interpretations\\, which ones give coherent results Other approaches Inductive Logic Programming: transformations as logic programs Genetic programming: transformations as lambda functions Deep Learning: e.g. Language Models for translation There is already a rich literature spanning decades here to be parasitized\u2026 Summary: just tell me what to do today For isomorphic mappings: Stay within LinkML/SSSOM No need for custom code\\, it all works For complex mappings: It depends! Do the structural mapping with linkml-convert Implement the complex logic as you see fit\\, depending on multiple factors. Any of the following may be valid Koza Awk SPARQL CONSTRUCTS or SELECTS Custom python YARRRML SQL INSERTs XSLT Jsonpath-lifter \u2026. Roadmap 2022: Continue to gather use cases\\, experiment 2023: If funding permits Extend metamodel to include complex mapping Implement EITHER Parasitizing converters Direct mapping framework TBD: Is this Koza2?","title":"Overview"},{"location":"overview/#mapping-between-linkml-schemas","text":"","title":"Mapping Between LinkML Schemas"},{"location":"overview/#draft","text":"2022-06-24","title":"Draft"},{"location":"overview/#problem-map-data-from-one-schema-to-another","text":"Problem: Map d1 \u2192 d2 Assumption d1 and d2 conform to two separate schemas\\, s1\u2192 s2 Sub-problems: Ingest/Import: my data warehouse conforms to s2 (e.g. Monarch ingest) Export: make my data ingest friendly Migrations: s1 and s2 are different versions of the same schema Not in scope: in-schema syntactic or structural transforms JSON to YAML\\, JSON to TSV\\, JSON to SQL\\, JSON to RDF\\, ORM\\, \u2026 In LinkML this is already largely solved The actual problem space is highly varied S1 and S2 may be trivially isomorphic S1 and S2 may differ in complex or nuanced ways","title":"Problem: map data from one schema to another"},{"location":"overview/#there-are-many-existing-approaches","text":"Generic frameworks\\, driven by declarative specification in Domain Specific Language (DSL) JSON-based Google whistle jsonpath-lift XSLT Semweb YARRML\\, R2RML Many many more\u2026 Bespoke transforms: non-declarative Implement in python/awk/etc. Hybrid: bespoke with some declarative mappings in ad-hoc format E.g. NMDC ingest framework","title":"There are many existing approaches"},{"location":"overview/#traps-with-declarative-mapping","text":"Declarative is great\\, until it\u2019s not Anti-patterns: Insufficient expressivity to carry out real world tasks Bolting on features to mapping DSL until it\u2019s a fully-featured Turing-complete language Optimization/scalability at mercy of framework Messy layering between DSL and host language It can be useful to leverage host language features (e.g arbitrary python function) But this can get confusing: NFNF: Neither fish nor fowl Limits optimizations (forces iterative host language calls)","title":"Traps with declarative mapping"},{"location":"overview/#yarrrml","text":"https://rml.io/yarrrml/","title":"YARRRML"},{"location":"overview/#yarrrml-notes","text":"Has a playground\\, which is great Mixes two concerns: 1. Isomorphic structural mapping between JSON/TSVs and RDF (already covered by JSON-LD) 2. Mapping This isn\u2019t necessarily bad - it\u2019s quite practical\\, but a little unsatisfying IMO","title":"YARRRML notes"},{"location":"overview/#jsonpath-lifter","text":"Was proposed for CCDH CRDC-node mappings Doesn\u2019t seem widely used Is there a big advantage over simply writing javascript functions?","title":"jsonpath-lifter"},{"location":"overview/#koza-previously-bioweave","text":"","title":"Koza (previously: bioweave)"},{"location":"overview/#etl-frameworks","text":"There are many many ETL frameworks E.g. WebKarma Inherently mixing of concerns Here we are concerned with the \u201cT\u201d part Do existing frameworks separate out the T as a modular composable component? I\u2019m not sure","title":"ETL frameworks"},{"location":"overview/#do-we-need-yet-another-mapping-framework","text":"LinkML philosophy: Embrace\\, extend\\, parasitize Develop lightweight ways to map Map mappings to existing mapping frameworks This actually makes sense even if it sounds kind of meta\u2026","title":"Do we need Yet Another Mapping Framework?"},{"location":"overview/#level-0-mapping-isomorphic-same-uris","text":"classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address classes: Agent: class_uri: sdo:Person attributes: surname: slot_uri: sdo:familyName home_address: slot_uri: sdo:address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville","title":"Level 0 Mapping: Isomorphic, same URIs"},{"location":"overview/#level-0-handled-by-standard-linkml-convert-tofrom-rdf","text":"classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address classes: Agent: class_uri: sdo:Person attributes: surname: slot_uri: sdo:familyName home_address: slot_uri: sdo:address data2 (yaml/json) d ata1 (yaml/json) family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville d ata1.ttl == data2.ttl [sdo:familyName \u201cWu\u201d ; sdo:address \u201c1 my street\\, Oakville\u201d ]","title":"Level 0: handled by standard linkml convert to/from RDF"},{"location":"overview/#level-0-enums-todo-add-example-here-basically-this-works-the-same-way","text":"","title":"Level 0: Enums TODO: add example here. Basically this works the same way"},{"location":"overview/#level-0-howto","text":"Compose two commands: linkml-convert -s schema1.yaml data1.yaml -o data1.ttl linkml-convert -s schema2.yaml data1.ttl -o data2.yaml That\u2019s it! TODO: Write a wrapper (linkml-map-data?) that does this in one command","title":"Level 0: HOWTO"},{"location":"overview/#level-0-other-considerations","text":"Going via RDF in theory eliminates inlining differences E.g. s1 inlines address objects\\, s2 uses references (inlined: false) and includes a separate index slot for addresses Current status: Currently when going from s1 to s2\\, no index slots are generated This could be done as part of the general rdflib framework","title":"Level 0: other considerations"},{"location":"overview/#lessons-learned-so-far-annotate-your-schema-with-uris","text":"Annotating schemas with URIs is optional with LinkML But your future self and data users will thank you for careful schema annotation! Hints: Schema-automator can provide suggestions for your element and enum URIs Sometimes plain semweb URIs (e.g. schema.org) can be easier for interoperation than overly granular OBO ones E.g modeling Personhood as a role vs straightforward schema:Person","title":"Lessons learned so far: annotate your schema with URIs!"},{"location":"overview/#level-1-mapping-isomorphic-different-uris","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville","title":"Level 1 Mapping: Isomorphic, different URIs"},{"location":"overview/#level-1-mapping-mediated-by-uri-mapping","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address subject_id object_id sdo:Person NCBITaxon:9606 sdo:familyName IAO:nnnn sdo:address IAO:0000422 family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ]","title":"Level 1 Mapping: mediated by URI mapping"},{"location":"overview/#level-1-howto","text":"Compose three commands: linkml-convert -s schema1.yaml data1.yaml -o data1.ttl sssom-map-iris -i data1.ttl -m schema1-to-schema2.sssom.tsv -o data2.ttl linkml-convert -s schema2.yaml data2.ttl -o data2.yaml That\u2019s it! TODO: sssom-map-iris does not yet exist (?)\\, but should be trivial Fold into wrapper CLI tool Nuances: Schemas have nuanced differences: not everything with be skos:exact We can distinguish 3 flavors of level 1 mapping: Precise\\, bidirectional: follow exact only Valid\\, unidirectional: follow exact + broad Loose: any mapping","title":"Level 1: HOWTO"},{"location":"overview/#level-1-variant-mappings-in-schema","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person exact_mappings: [\u201cNCBITaxon:9606\u201d] attributes: family_name: slot_uri: sdo:familyName exact_mappings: [\u201cIAO:nnnn\u201d] address: slot_uri: sdo:address exact_mappings: [\u201cIAO:0000422\u201d] name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ]","title":"Level 1 variant: mappings in schema"},{"location":"overview/#advantages-of-rdf-as-an-intermediate","text":"Use of IRIs Separation of concerns Structural differences (e.g. inlining) are already handled by linkml convert Allows us to focus on semantic mappings","title":"Advantages of RDF as an intermediate"},{"location":"overview/#lessons-learned-so-far-think-about-mappings","text":"https://linkml.io/linkml/faq/modeling.html#when-is-it-important-to-have-mappings%20https://github.com/alliance-genome/agr_curation_schema/blob/main/model/schema/agent.yaml","title":"Lessons learned so far: think about mappings"},{"location":"overview/#more-complex-mappings-level-2-and-above","text":"TODO: define levels 2 and above Examples of kinds of features: merging/splitting fields; e.g. full_name = first + \u201c \u201c + last Unit conversion or baked-in units to explicit units Normalization/denormalization (aka flattening) Complex logic If conditions A\\, B\\, C and not D are met then copy field F from X to Y","title":"More complex mappings: level 2 and above"},{"location":"overview/#linkml-rule-and-inference-framework","text":"Current use case is intra-schema inference Easy to invoke on command line Needs more docs! Could form basis of inter-schema DSL Examples Schemas differ in units Schemas differ in categorical vs quantitative Current use case is intra-schema inference Could form basis of inter-schema DSL","title":"LinkML Rule and Inference Framework"},{"location":"overview/#datalog","text":"Datalog could serve as the powerful basis of an expressive declarative transformation language https://linkml.io/linkml-datalog","title":"Datalog"},{"location":"overview/#approach-for-level-2","text":"Do we even want a generic mapping framework in LinkML here? This is a good \u201c parasitization hook\u201d Do complex stuff using an existing framework TBD: derive or semi-derive mapping specification? This is also a code bespoke procedural code hook Do the generic stuff with linkml-convert and isomorphic IRI mapping Do more complex stuff in code","title":"Approach for level 2+"},{"location":"overview/#general-approach-for-level-2-same-to-same","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville JSON OR XML OR YAML OR RDF OR SQL JSON OR XML OR YAML OR RDF OR SQL (matches the one on the left) Existing mapping framework (X to X)","title":"General approach for level 2+; same to same"},{"location":"overview/#example-of-same-to-same-jsonpath-lifter","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Jsonpath-lifter (JSON to JSON)","title":"Example of same-to-same: jsonpath-lifter"},{"location":"overview/#example-of-same-to-same-awk","text":"","title":"Example of same-to-same: awk"},{"location":"overview/#example-of-same-to-same-sql","text":"INSERT INTO Agent AS SELECT Person.last_name AS Agent.surname\\, CONCAT(Person.full_name\\, \u201c \u201c\\, Person.first) AS Agent.full_name\\, \u2026 CONSTRUCT { [ a schema:Person ; my:fullName STRCAT(...) ] } WHERE { ?person a schema:Person ; schema:firstName ; schema:lastName ; \u2026 } SPARQL CONSTRUCT RDF Engine or Triplestore","title":"Example of same-to-same: SQL"},{"location":"overview/#example-of-same-to-same-python-linkml-objects","text":"def convert(p: Person) -> Agent: return Agent(p.id\\, full_name=f\u201d{..} {..}\u201d\\, \u2026 Conversion script","title":"Example of same-to-same: Python (LinkML objects)"},{"location":"overview/#general-approach-for-level-2-heteromorphic","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville L inkml-convert OPTIONAL L inkml-convert OPTIONAL JSON OR XML OR YAML OR RDF OR SQL JSON OR XML OR YAML OR RDF OR SQL ( different from the one on the left) Existing mapping framework (X to Y)","title":"General approach for level 2+; heteromorphic"},{"location":"overview/#example-yarrrml","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville YARRRML (JSON/YAML to RDF)","title":"Example: YARRRML"},{"location":"overview/#example-yarrrml-native-mappings","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville mapping.yarrrml.yml","title":"Example: YARRRML, native mappings"},{"location":"overview/#example-yarrrml-compiled-mappings","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address Mappings : \u2026 \\< TO BE DEFINED LINKML MAPPING SPEC > name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville mapping.yarrrml.yml","title":"Example: YARRRML, compiled mappings"},{"location":"overview/#hyperparasitism-is-good","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address Mappings : \u2026 \\< TO BE DEFINED LINKML MAPPING SPEC > name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address mapping.yarrrml.yml family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville","title":"Hyperparasitism is good"},{"location":"overview/#alternative-direct-translation-language","text":"Desiderata Ability to compile to scalable frameworks E.g. compile to SQL Simple for simple tasks Layer on existing expression language Provides path to safe subset of host language (Python) Can be easily implemented in other languages","title":"Alternative: Direct translation language"},{"location":"overview/#normalized-to-denormalized-modeling-sssom","text":"SQL INSERT (or CREATE VIEW) SQL FROM Clause (implicit INNER JOIN/WHERE) SQL SELECT \u2026 AS clause","title":"Normalized to Denormalized (modeling SSSOM)"},{"location":"overview/#relationship-to-profiles-todo","text":"Profiles/IGs can be seen as a sub-case of schema mapping","title":"Relationship to profiles TODO"},{"location":"overview/#current-progress","text":"https://github.com/linkml/linkml/issues/533%20map%20to%20YARRRML%20Vincent%20Vemonet%20has%20started%20on%20linkml-%3Erml%20https://github.com/vemonet/linkml/blob/add-gen-rml/linkml/generators/rmlgen.py","title":"Current progress"},{"location":"overview/#relationship-to-koza","text":"","title":"Relationship to Koza"},{"location":"overview/#koza-ingests-often-require-multiple-files","text":"","title":"Koza ingests often require multiple files"},{"location":"overview/#see-also","text":"Revisiting BioWeave (Kent Shefchek\\, 2020?) https://docs.google.com/presentation/d/1DYiWXoz3iHM2PvMFD0hRpJ544tnHawg00PBwNuESo44/edit#slide=id.gb33d7ddd1b_0_93","title":"See Also"},{"location":"overview/#automating-mapping","text":"Should we pursue approaches to automate mapping? Some of the functionality is already in schema-automator. E.g. auto-annotating schema elements using ontologies Isomorphic schema mapping discovery analogous to ontology mapping Can a boomer type approach help? E.g. given multiple loose mappings with alternative interpretations\\, which ones give coherent results Other approaches Inductive Logic Programming: transformations as logic programs Genetic programming: transformations as lambda functions Deep Learning: e.g. Language Models for translation There is already a rich literature spanning decades here to be parasitized\u2026","title":"Automating mapping"},{"location":"overview/#summary-just-tell-me-what-to-do-today","text":"For isomorphic mappings: Stay within LinkML/SSSOM No need for custom code\\, it all works For complex mappings: It depends! Do the structural mapping with linkml-convert Implement the complex logic as you see fit\\, depending on multiple factors. Any of the following may be valid Koza Awk SPARQL CONSTRUCTS or SELECTS Custom python YARRRML SQL INSERTs XSLT Jsonpath-lifter \u2026.","title":"Summary: just tell me what to do today"},{"location":"overview/#roadmap","text":"2022: Continue to gather use cases\\, experiment 2023: If funding permits Extend metamodel to include complex mapping Implement EITHER Parasitizing converters Direct mapping framework TBD: Is this Koza2?","title":"Roadmap"},{"location":"permissible_value_derivations/","text":"Slot: permissible_value_derivations Instructions on how to derive a set of PVs in the target schema URI: linkmltr:permissible_value_derivations Applicable Classes Name Description EnumDerivation A specification of how to derive the value of a target enum from a source enu... Properties Range: PermissibleValueDerivation Multivalued: True Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: permissible_value_derivations description: Instructions on how to derive a set of PVs in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: permissible_value_derivations owner: EnumDerivation domain_of: - EnumDerivation range: PermissibleValueDerivation inlined: true","title":"Slot: permissible_value_derivations"},{"location":"permissible_value_derivations/#slot-permissible_value_derivations","text":"Instructions on how to derive a set of PVs in the target schema URI: linkmltr:permissible_value_derivations","title":"Slot: permissible_value_derivations"},{"location":"permissible_value_derivations/#applicable-classes","text":"Name Description EnumDerivation A specification of how to derive the value of a target enum from a source enu...","title":"Applicable Classes"},{"location":"permissible_value_derivations/#properties","text":"Range: PermissibleValueDerivation Multivalued: True","title":"Properties"},{"location":"permissible_value_derivations/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"permissible_value_derivations/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"permissible_value_derivations/#linkml-source","text":"name: permissible_value_derivations description: Instructions on how to derive a set of PVs in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: permissible_value_derivations owner: EnumDerivation domain_of: - EnumDerivation range: PermissibleValueDerivation inlined: true","title":"LinkML Source"},{"location":"populated_from/","text":"Slot: populated_from URI: linkmltr:populated_from Applicable Classes Name Description ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... Properties Range: xsd:string Identifier and Mapping Information LinkML Source name: populated_from alias: populated_from domain_of: - ClassDerivation - SlotDerivation - EnumDerivation range: string","title":"Slot: populated_from"},{"location":"populated_from/#slot-populated_from","text":"URI: linkmltr:populated_from","title":"Slot: populated_from"},{"location":"populated_from/#applicable-classes","text":"Name Description ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu...","title":"Applicable Classes"},{"location":"populated_from/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"populated_from/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"populated_from/#linkml-source","text":"name: populated_from alias: populated_from domain_of: - ClassDerivation - SlotDerivation - EnumDerivation range: string","title":"LinkML Source"},{"location":"prefixes/","text":"Slot: prefixes prefix map URI: linkmltr:prefixes Applicable Classes Name Description TransformationSpecification A collection of mappings between source and target classes Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: prefixes description: prefix map from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: prefixes owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"Slot: prefixes"},{"location":"prefixes/#slot-prefixes","text":"prefix map URI: linkmltr:prefixes","title":"Slot: prefixes"},{"location":"prefixes/#applicable-classes","text":"Name Description TransformationSpecification A collection of mappings between source and target classes","title":"Applicable Classes"},{"location":"prefixes/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"prefixes/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"prefixes/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"prefixes/#linkml-source","text":"name: prefixes description: prefix map from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: prefixes owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"LinkML Source"},{"location":"same_as/","text":"Slot: same_as Name of the class in the source schema URI: https://w3id.org/linkml/transformer/same_as Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: same_as"},{"location":"same_as/#slot-same_as","text":"Name of the class in the source schema URI: https://w3id.org/linkml/transformer/same_as","title":"Slot: same_as"},{"location":"same_as/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"same_as/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"same_as/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"slot_derivations/","text":"Slot: slot_derivations URI: linkmltr:slot_derivations Applicable Classes Name Description TransformationSpecification A collection of mappings between source and target classes ClassDerivation A specification of how to derive a target class from a source class Properties Range: xsd:string Identifier and Mapping Information LinkML Source name: slot_derivations alias: slot_derivations domain_of: - TransformationSpecification - ClassDerivation range: string","title":"Slot: slot_derivations"},{"location":"slot_derivations/#slot-slot_derivations","text":"URI: linkmltr:slot_derivations","title":"Slot: slot_derivations"},{"location":"slot_derivations/#applicable-classes","text":"Name Description TransformationSpecification A collection of mappings between source and target classes ClassDerivation A specification of how to derive a target class from a source class","title":"Applicable Classes"},{"location":"slot_derivations/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"slot_derivations/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"slot_derivations/#linkml-source","text":"name: slot_derivations alias: slot_derivations domain_of: - TransformationSpecification - ClassDerivation range: string","title":"LinkML Source"},{"location":"slot_name/","text":"Slot: slot_name URI: linkmltr:slot_name Applicable Classes Name Description Inverse Used for back references Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: slot_name from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: slot_name owner: Inverse domain_of: - Inverse range: string","title":"Slot: slot_name"},{"location":"slot_name/#slot-slot_name","text":"URI: linkmltr:slot_name","title":"Slot: slot_name"},{"location":"slot_name/#applicable-classes","text":"Name Description Inverse Used for back references","title":"Applicable Classes"},{"location":"slot_name/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"slot_name/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"slot_name/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"slot_name/#linkml-source","text":"name: slot_name from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: slot_name owner: Inverse domain_of: - Inverse range: string","title":"LinkML Source"},{"location":"source_schema/","text":"Slot: source_schema name of the schema that describes the source (input) objects URI: linkmltr:source_schema Applicable Classes Name Description TransformationSpecification A collection of mappings between source and target classes Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: source_schema description: name of the schema that describes the source (input) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: source_schema owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"Slot: source_schema"},{"location":"source_schema/#slot-source_schema","text":"name of the schema that describes the source (input) objects URI: linkmltr:source_schema","title":"Slot: source_schema"},{"location":"source_schema/#applicable-classes","text":"Name Description TransformationSpecification A collection of mappings between source and target classes","title":"Applicable Classes"},{"location":"source_schema/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"source_schema/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"source_schema/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"source_schema/#linkml-source","text":"name: source_schema description: name of the schema that describes the source (input) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: source_schema owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"LinkML Source"},{"location":"target_schema/","text":"Slot: target_schema name of the schema that describes the target (output) objects URI: linkmltr:target_schema Applicable Classes Name Description TransformationSpecification A collection of mappings between source and target classes Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: target_schema description: name of the schema that describes the target (output) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: target_schema owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"Slot: target_schema"},{"location":"target_schema/#slot-target_schema","text":"name of the schema that describes the target (output) objects URI: linkmltr:target_schema","title":"Slot: target_schema"},{"location":"target_schema/#applicable-classes","text":"Name Description TransformationSpecification A collection of mappings between source and target classes","title":"Applicable Classes"},{"location":"target_schema/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"target_schema/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"target_schema/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"target_schema/#linkml-source","text":"name: target_schema description: name of the schema that describes the target (output) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: target_schema owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"LinkML Source"},{"location":"title/","text":"Slot: title human readable title for this transformation specification URI: linkmltr:title Applicable Classes Name Description TransformationSpecification A collection of mappings between source and target classes Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: title description: human readable title for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: title owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"Slot: title"},{"location":"title/#slot-title","text":"human readable title for this transformation specification URI: linkmltr:title","title":"Slot: title"},{"location":"title/#applicable-classes","text":"Name Description TransformationSpecification A collection of mappings between source and target classes","title":"Applicable Classes"},{"location":"title/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"title/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"title/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"title/#linkml-source","text":"name: title description: human readable title for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: title owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"LinkML Source"},{"location":"transformer/","text":"transformer Datamodel for LinkML schema transformations. A transformer generates instances of a target data model from instances of a source data model. This transformation process is guided by a TransformationSpecification . The specification is independent of any one method for transforming data. It allows different approaches, including: direct implementation, transforming python or json objects translation of the specification into SQL commands, to operate on relations translation of the specification into SPARQL CONSTRUCTs, to operate on triples translation into another specification language, such as R2RML URI: https://w3id.org/linkml/transformer","title":"transformer"},{"location":"transformer/#transformer","text":"Datamodel for LinkML schema transformations. A transformer generates instances of a target data model from instances of a source data model. This transformation process is guided by a TransformationSpecification . The specification is independent of any one method for transforming data. It allows different approaches, including: direct implementation, transforming python or json objects translation of the specification into SQL commands, to operate on relations translation of the specification into SPARQL CONSTRUCTs, to operate on triples translation into another specification language, such as R2RML URI: https://w3id.org/linkml/transformer","title":"transformer"},{"location":"type_designator/","text":"Slot: type_designator URI: linkmltr:type_designator Applicable Classes Name Description SlotDerivation A specification of how to derive the value of a target slot from a source slo... Properties Range: xsd:boolean Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: type_designator from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: type_designator owner: SlotDerivation domain_of: - SlotDerivation range: boolean","title":"Slot: type_designator"},{"location":"type_designator/#slot-type_designator","text":"URI: linkmltr:type_designator","title":"Slot: type_designator"},{"location":"type_designator/#applicable-classes","text":"Name Description SlotDerivation A specification of how to derive the value of a target slot from a source slo...","title":"Applicable Classes"},{"location":"type_designator/#properties","text":"Range: xsd:boolean","title":"Properties"},{"location":"type_designator/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"type_designator/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"type_designator/#linkml-source","text":"name: type_designator from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: type_designator owner: SlotDerivation domain_of: - SlotDerivation range: boolean","title":"LinkML Source"},{"location":"types/","text":"types Shared type definitions for the core LinkML mode and metamodel URI: https://w3id.org/linkml/types","title":"types"},{"location":"types/#types","text":"Shared type definitions for the core LinkML mode and metamodel URI: https://w3id.org/linkml/types","title":"types"},{"location":"value/","text":"Slot: value URI: linkmltr:value Applicable Classes Name Description KeyVal Properties Range: Any Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: value from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: value owner: KeyVal domain_of: - KeyVal range: Any","title":"Slot: value"},{"location":"value/#slot-value","text":"URI: linkmltr:value","title":"Slot: value"},{"location":"value/#applicable-classes","text":"Name Description KeyVal","title":"Applicable Classes"},{"location":"value/#properties","text":"Range: Any","title":"Properties"},{"location":"value/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"value/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"value/#linkml-source","text":"name: value from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: value owner: KeyVal domain_of: - KeyVal range: Any","title":"LinkML Source"}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 618596e..96e42e9 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,142 +2,322 @@ https://cmungall.github.io/linkml-transformer/ - 2022-08-19 + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/AliasedClass/ - 2022-08-19 + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/Any/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/Boolean/ + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/ClassDerivation/ - 2022-08-19 + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/CopyDirective/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/Curie/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/Date/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/DateOrDatetime/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/Datetime/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/Decimal/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/Double/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/ElementDerivation/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/EnumDerivation/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/Float/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/Integer/ + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/Inverse/ - 2022-08-19 + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/KeyVal/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/Ncname/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/Nodeidentifier/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/Objectidentifier/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/PermissibleValueDerivation/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/PrefixDerivation/ + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/SlotDerivation/ - 2022-08-19 + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/String/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/Time/ + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/TransformationSpecification/ - 2022-08-19 + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/Uri/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/Uriorcurie/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/add/ + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/alias/ - 2022-08-19 + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/class_derivations/ - 2022-08-19 + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/class_name/ - 2022-08-19 + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/class_named/ - 2022-08-19 + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/copy_all/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/copy_directives/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/element_name/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/enum_derivations/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/exclude/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/exclude_all/ + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/expr/ - 2022-08-19 + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/hide/ - 2022-08-19 + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/id/ - 2022-08-19 + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/include/ + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/inverse_of/ - 2022-08-19 + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/is_a/ + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/joins/ - 2022-08-19 + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/key/ + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/mixins/ + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/name/ - 2022-08-19 + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/overview/ - 2022-08-19 + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/permissible_value_derivations/ + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/populated_from/ - 2022-08-19 + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/prefixes/ - 2022-08-19 + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/same_as/ - 2022-08-19 + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/slot_derivations/ - 2022-08-19 + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/slot_name/ - 2022-08-19 + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/source_schema/ - 2022-08-19 + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/target_schema/ - 2022-08-19 + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/title/ - 2022-08-19 + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/transformer/ - 2022-08-19 + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/type_designator/ - 2022-08-19 + 2023-03-04 daily https://cmungall.github.io/linkml-transformer/types/ - 2022-08-19 + 2023-03-04 + daily + + + https://cmungall.github.io/linkml-transformer/value/ + 2023-03-04 daily \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index 5ddac8c839e322796a0e6567314153ea65fd5ff4..b9240215edd0389fd646bf6aad482c6897ad167b 100644 GIT binary patch literal 629 zcmV-*0*d_~iwFoPvI1lR|8r?{Wo=<_E_iKh0M(jbZ`v>v#ozlWP~J&cw})*4s%^AV zHL0xx?Q3M5n{Zp(H?tie-+oT$AKs@uoCra%jP+A=?zz_&&##WwO!njhi(6!$@>w<^ zr=?=oEV9SV&Gc(_wY->j-UN!1G}(nkwu`a-UKEGJArBnMsy5`}ni?`&9c`^LvdyLQzBUl4h$646bxr z1M_gN4Owy#&xx;HXYr_SjHrkLd+Q=KI0fdd8>)4f$oozG6OOChX{T^f#+_8eRq{2i z8ArhP+vlOMgyVi7Z#e``X)h_dBRpGv@Ko~=k9%zdFm27FsMVj5Cv8b-K?^DcVaMbq|)w#7)Huk+P+M)pm?jdE+>qZ z>D0=AQZu>EBKig$wdpDX!$k^0I<_zyz#ZdAfnm}HJE$1rQ~Rxy8iqKO3WfDq7$-Zt z5X|4^mXAOW7OAw6WCweu0}5~Z(ZwwHLmLyZE^DRjjEYp1wHFIRJ+@zQb{ZjtVTse7 z2u32Jm`83T%L~$ZP37sZ9}09-zM+T)%@OB}1>j-L*tbLe3*0yr1qvI+-o_&1|HF3zJC;A9LJQ z=l7A1zw?>;(1XGn6{}Z}(~{%@tERPBRyUn612?h*e#8|QWH|S1cET1bHc~(~3czL4 zD{ak%_|qaE7vtn#HYnkQFmmDTZ9iz~p(<- - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: slot_derivations

    -

    URI: https://w3id.org/linkml/transformer/slot_derivations

    +

    URI: linkmltr:slot_derivations

    +

    Applicable Classes

    + + + + + + + + + + + + + + + + + +
    NameDescription
    TransformationSpecificationA collection of mappings between source and target classes
    ClassDerivationA specification of how to derive a target class from a source class

    Properties

    Identifier and Mapping Information

    -

    Schema Source

    -
      -
    • from schema: https://w3id.org/linkml/transformer
    • -
    +

    LinkML Source

    +
    +
    name: slot_derivations
    +alias: slot_derivations
    +domain_of:
    +- TransformationSpecification
    +- ClassDerivation
    +range: string
     
    +
    +
    - -
    - + + + + + +
    +
    + + -
    @@ -363,10 +398,10 @@

    Schema Source

    - + - + diff --git a/slot_name/index.html b/slot_name/index.html index 4d21c7a..5202ba8 100644 --- a/slot_name/index.html +++ b/slot_name/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: slot_name

    -

    URI: https://w3id.org/linkml/transformer/slot_name

    +

    URI: linkmltr:slot_name

    +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    InverseUsed for back references

    Properties

    Identifier and Mapping Information

    Schema Source

    • from schema: https://w3id.org/linkml/transformer
    +

    LinkML Source

    +
    +
    name: slot_name
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: slot_name
    +owner: Inverse
    +domain_of:
    +- Inverse
    +range: string
     
    +
    +
    - -
    - + + + + + +
    +
    + + -
    @@ -363,10 +413,10 @@

    Schema Source

    - + - + diff --git a/source_schema/index.html b/source_schema/index.html index c40b233..2e9a71c 100644 --- a/source_schema/index.html +++ b/source_schema/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: source_schema

    -

    URI: https://w3id.org/linkml/transformer/source_schema

    +

    name of the schema that describes the source (input) objects

    +

    URI: linkmltr:source_schema

    +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    TransformationSpecificationA collection of mappings between source and target classes

    Properties

    Identifier and Mapping Information

    Schema Source

    • from schema: https://w3id.org/linkml/transformer
    +

    LinkML Source

    +
    +
    name: source_schema
    +description: name of the schema that describes the source (input) objects
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: source_schema
    +owner: TransformationSpecification
    +domain_of:
    +- TransformationSpecification
    +range: string
     
    +
    +
    - -
    - + + + + + +
    +
    + + -
    @@ -363,10 +415,10 @@

    Schema Source

    - + - + diff --git a/target_schema/index.html b/target_schema/index.html index 711c64b..cf3942c 100644 --- a/target_schema/index.html +++ b/target_schema/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: target_schema

    -

    URI: https://w3id.org/linkml/transformer/target_schema

    +

    name of the schema that describes the target (output) objects

    +

    URI: linkmltr:target_schema

    +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    TransformationSpecificationA collection of mappings between source and target classes

    Properties

    Identifier and Mapping Information

    Schema Source

    • from schema: https://w3id.org/linkml/transformer
    +

    LinkML Source

    +
    +
    name: target_schema
    +description: name of the schema that describes the target (output) objects
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: target_schema
    +owner: TransformationSpecification
    +domain_of:
    +- TransformationSpecification
    +range: string
     
    +
    +
    - -
    - + + + + + +
    +
    + + -
    @@ -363,10 +415,10 @@

    Schema Source

    - + - + diff --git a/title/index.html b/title/index.html index 8639a86..ddba703 100644 --- a/title/index.html +++ b/title/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: title

    -

    URI: https://w3id.org/linkml/transformer/title

    +

    human readable title for this transformation specification

    +

    URI: linkmltr:title

    +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    TransformationSpecificationA collection of mappings between source and target classes

    Properties

    Identifier and Mapping Information

    Schema Source

    • from schema: https://w3id.org/linkml/transformer
    +

    LinkML Source

    +
    +
    name: title
    +description: human readable title for this transformation specification
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: title
    +owner: TransformationSpecification
    +domain_of:
    +- TransformationSpecification
    +range: string
     
    +
    +
    - -
    - + + + + + +
    +
    + + -
    @@ -363,10 +415,10 @@

    Schema Source

    - + - + diff --git a/transformer/index.html b/transformer/index.html index 9b16429..7ae625c 100644 --- a/transformer/index.html +++ b/transformer/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    GitHub @@ -268,29 +270,44 @@
    -
    -
    - + +
    +
    + + + -

    transformer

    -

    Datamodel for LinkML schema transformations

    +

    Datamodel for LinkML schema transformations.

    +

    A transformer generates instances of a target data model from +instances of a source data model. This transformation process +is guided by a TransformationSpecification.

    +

    The specification is independent of any one method for transforming +data. It allows different approaches, including:

    +
      +
    • direct implementation, transforming python or json objects
    • +
    • translation of the specification into SQL commands, to operate on relations
    • +
    • translation of the specification into SPARQL CONSTRUCTs, to operate on triples
    • +
    • translation into another specification language, such as R2RML
    • +

    URI: https://w3id.org/linkml/transformer

    - -
    - + + +
    +
    + + -
    @@ -318,10 +335,10 @@

    transformer

    - + - + diff --git a/type_designator/index.html b/type_designator/index.html index a787c8b..5836a93 100644 --- a/type_designator/index.html +++ b/type_designator/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    -
    -
    - + +
    +
    + + + -

    Slot: type_designator

    -

    URI: https://w3id.org/linkml/transformer/type_designator

    +

    URI: linkmltr:type_designator

    +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...

    Properties

    • Range: xsd:boolean
    • @@ -326,16 +359,33 @@

      Schema Source

      • from schema: https://w3id.org/linkml/transformer
      +

      LinkML Source

      +
      +
      name: type_designator
      +from_schema: https://w3id.org/linkml/transformer
      +rank: 1000
      +alias: type_designator
      +owner: SlotDerivation
      +domain_of:
      +- SlotDerivation
      +range: boolean
       
      +
      +
      - -
    - + + + + + +
    +
    + + -
    @@ -363,10 +413,10 @@

    Schema Source

    - + - + diff --git a/types/index.html b/types/index.html index 895cc57..edaf7fa 100644 --- a/types/index.html +++ b/types/index.html @@ -11,7 +11,7 @@ - + @@ -19,13 +19,14 @@ - + + @@ -44,6 +45,7 @@ + @@ -118,7 +120,7 @@ @@ -142,7 +144,7 @@
    - +
    GitHub @@ -187,7 +189,7 @@
    - +
    GitHub @@ -268,16 +270,18 @@
    -
    -
    - + +
    +
    + + + -

    types

    Shared type definitions for the core LinkML mode and metamodel

    URI: https://w3id.org/linkml/types

    @@ -285,12 +289,14 @@

    types

    - -
    - + + +
    +
    + + -
    @@ -318,10 +324,10 @@

    types

    - + - + diff --git a/value/index.html b/value/index.html new file mode 100644 index 0000000..eb8096f --- /dev/null +++ b/value/index.html @@ -0,0 +1,423 @@ + + + + + + + + + + + + + + + + + + Slot: value - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + + +

    Slot: value

    +

    URI: linkmltr:value

    + + +

    Applicable Classes

    + + + + + + + + + + + + + +
    NameDescription
    KeyVal
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: value
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: value
    +owner: KeyVal
    +domain_of:
    +- KeyVal
    +range: Any
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file From 613c789e0f7487db131d4f68c8274dc9b6971e07 Mon Sep 17 00:00:00 2001 From: <> Date: Sat, 6 Jan 2024 01:50:39 +0000 Subject: [PATCH 3/6] Deployed 0b96a96 with MkDocs version: 1.4.3 --- 404.html | 72 +- AliasedClass/index.html | 59 +- Any/index.html | 83 +- Boolean/index.html | 82 +- ClassDerivation/index.html | 308 +- ClassReference/index.html | 391 + CollectionType/index.html | 467 ++ CopyDirective/index.html | 76 +- Curie/index.html | 82 +- Date/index.html | 82 +- DateOrDatetime/index.html | 80 +- Datetime/index.html | 82 +- Decimal/index.html | 82 +- Double/index.html | 82 +- ElementDerivation/index.html | 289 +- EnumDerivation/index.html | 283 +- {same_as => EnumReference}/index.html | 111 +- Float/index.html | 82 +- Integer/index.html | 82 +- Inverse/index.html | 63 +- Jsonpath/index.html | 392 + Jsonpointer/index.html | 392 + KeyVal/index.html | 189 +- Ncname/index.html | 82 +- Nodeidentifier/index.html | 82 +- Objectidentifier/index.html | 84 +- PermissibleValueDerivation/index.html | 293 +- PrefixDerivation/index.html | 234 +- SerializationSyntaxType/index.html | 460 ++ SlotDerivation/index.html | 430 +- SlotReference/index.html | 391 + Sparqlpath/index.html | 392 + SpecificationComponent/index.html | 401 + String/index.html | 82 +- StringificationConfiguration/index.html | 403 + Time/index.html | 84 +- TransformationSpecification/index.html | 184 +- UnitConversionConfiguration/index.html | 505 ++ Uri/index.html | 82 +- Uriorcurie/index.html | 82 +- {types => about}/index.html | 90 +- add/index.html | 82 +- alias/index.html | 89 +- assets/javascripts/bundle.078830c0.min.js | 29 - assets/javascripts/bundle.078830c0.min.js.map | 8 - assets/javascripts/bundle.fac441b0.min.js | 29 + assets/javascripts/bundle.fac441b0.min.js.map | 8 + assets/javascripts/lunr/min/lunr.ar.min.js | 2 +- assets/javascripts/lunr/min/lunr.hy.min.js | 1 + assets/javascripts/lunr/min/lunr.ko.min.js | 1 + assets/javascripts/lunr/min/lunr.ta.min.js | 1 + assets/javascripts/lunr/min/lunr.zh.min.js | 2 +- assets/javascripts/lunr/wordcut.js | 4 +- ...5bf1dace.min.js => search.208ed371.min.js} | 24 +- ....min.js.map => search.208ed371.min.js.map} | 8 +- assets/stylesheets/main.20d9efc8.min.css | 1 - assets/stylesheets/main.20d9efc8.min.css.map | 1 - assets/stylesheets/main.85bb2934.min.css | 1 + assets/stylesheets/main.85bb2934.min.css.map | 1 + assets/stylesheets/palette.a6bdf11c.min.css | 1 + .../stylesheets/palette.a6bdf11c.min.css.map | 1 + assets/stylesheets/palette.cbb835fc.min.css | 1 - .../stylesheets/palette.cbb835fc.min.css.map | 1 - cast_collection_as/index.html | 439 ++ class_derivations/index.html | 88 +- class_name/index.html | 85 +- class_named/index.html | 83 +- comments/index.html | 485 ++ copy_all/index.html | 84 +- copy_directives/index.html | 95 +- delimiter/index.html | 469 ++ derived_from/index.html | 448 ++ description/index.html | 476 ++ dictionary_key/index.html | 439 ++ element_name/index.html | 91 +- enum_derivations/index.html | 88 +- exclude/index.html | 82 +- exclude_all/index.html | 84 +- expr/index.html | 85 +- expression_to_expression_mappings/index.html | 473 ++ expression_to_value_mappings/index.html | 473 ++ hide/index.html | 85 +- id/index.html | 87 +- img/Mapping Between LinkML Schemas0.png | Bin 187865 -> 0 bytes img/Mapping Between LinkML Schemas1.png | Bin 79188 -> 0 bytes img/Mapping Between LinkML Schemas10.png | Bin 182340 -> 0 bytes img/Mapping Between LinkML Schemas11.png | Bin 36395 -> 0 bytes img/Mapping Between LinkML Schemas12.png | Bin 128490 -> 0 bytes img/Mapping Between LinkML Schemas13.png | Bin 85125 -> 0 bytes img/Mapping Between LinkML Schemas14.png | Bin 404705 -> 0 bytes img/Mapping Between LinkML Schemas15.png | Bin 56248 -> 0 bytes img/Mapping Between LinkML Schemas16.png | Bin 93285 -> 0 bytes img/Mapping Between LinkML Schemas17.png | Bin 24093 -> 0 bytes img/Mapping Between LinkML Schemas18.png | Bin 84629 -> 0 bytes img/Mapping Between LinkML Schemas19.png | Bin 10449 -> 0 bytes img/Mapping Between LinkML Schemas2.png | Bin 54667 -> 0 bytes img/Mapping Between LinkML Schemas20.png | Bin 20516 -> 0 bytes img/Mapping Between LinkML Schemas3.png | Bin 57703 -> 0 bytes img/Mapping Between LinkML Schemas4.png | Bin 79188 -> 0 bytes img/Mapping Between LinkML Schemas5.png | Bin 54667 -> 0 bytes img/Mapping Between LinkML Schemas6.png | Bin 82911 -> 0 bytes img/Mapping Between LinkML Schemas7.png | Bin 3699 -> 0 bytes img/Mapping Between LinkML Schemas8.png | Bin 159497 -> 0 bytes img/Mapping Between LinkML Schemas9.png | Bin 144396 -> 0 bytes implements/index.html | 482 ++ include/index.html | 82 +- index.html | 323 +- inverse_of/index.html | 80 +- is_a/index.html | 90 +- joins/index.html | 88 +- key/index.html | 89 +- mirror_source/index.html | 464 ++ mixins/index.html | 100 +- name/index.html | 91 +- overrides/index.html | 466 ++ overview/index.html | 992 --- permissible_value_derivations/index.html | 88 +- populated_from/index.html | 91 +- prefixes/index.html | 98 +- range/index.html | 440 ++ reversed/index.html | 439 ++ search/search_index.json | 2 +- sitemap.xml | 314 +- sitemap.xml.gz | Bin 629 -> 887 bytes slot_derivations/index.html | 84 +- slot_name/index.html | 85 +- source_magnitude_slot/index.html | 438 ++ source_schema/index.html | 83 +- source_unit/index.html | 438 ++ source_unit_scheme/index.html | 461 ++ source_unit_slot/index.html | 438 ++ sources/index.html | 436 ++ specification/compliance/index.html | 6725 +++++++++++++++++ stringification/index.html | 439 ++ syntax/index.html | 465 ++ target_magnitude_slot/index.html | 438 ++ target_schema/index.html | 83 +- target_unit/index.html | 438 ++ target_unit_scheme/index.html | 461 ++ target_unit_slot/index.html | 438 ++ title/index.html | 86 +- transformer/index.html | 78 +- type_designator/index.html | 82 +- unit_conversion/index.html | 439 ++ value/index.html | 80 +- value_mappings/index.html | 473 ++ 146 files changed, 28011 insertions(+), 3303 deletions(-) create mode 100644 ClassReference/index.html create mode 100644 CollectionType/index.html rename {same_as => EnumReference}/index.html (80%) create mode 100644 Jsonpath/index.html create mode 100644 Jsonpointer/index.html create mode 100644 SerializationSyntaxType/index.html create mode 100644 SlotReference/index.html create mode 100644 Sparqlpath/index.html create mode 100644 SpecificationComponent/index.html create mode 100644 StringificationConfiguration/index.html create mode 100644 UnitConversionConfiguration/index.html rename {types => about}/index.html (80%) delete mode 100644 assets/javascripts/bundle.078830c0.min.js delete mode 100644 assets/javascripts/bundle.078830c0.min.js.map create mode 100644 assets/javascripts/bundle.fac441b0.min.js create mode 100644 assets/javascripts/bundle.fac441b0.min.js.map create mode 100644 assets/javascripts/lunr/min/lunr.hy.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ta.min.js rename assets/javascripts/workers/{search.5bf1dace.min.js => search.208ed371.min.js} (57%) rename assets/javascripts/workers/{search.5bf1dace.min.js.map => search.208ed371.min.js.map} (53%) delete mode 100644 assets/stylesheets/main.20d9efc8.min.css delete mode 100644 assets/stylesheets/main.20d9efc8.min.css.map create mode 100644 assets/stylesheets/main.85bb2934.min.css create mode 100644 assets/stylesheets/main.85bb2934.min.css.map create mode 100644 assets/stylesheets/palette.a6bdf11c.min.css create mode 100644 assets/stylesheets/palette.a6bdf11c.min.css.map delete mode 100644 assets/stylesheets/palette.cbb835fc.min.css delete mode 100644 assets/stylesheets/palette.cbb835fc.min.css.map create mode 100644 cast_collection_as/index.html create mode 100644 comments/index.html create mode 100644 delimiter/index.html create mode 100644 derived_from/index.html create mode 100644 description/index.html create mode 100644 dictionary_key/index.html create mode 100644 expression_to_expression_mappings/index.html create mode 100644 expression_to_value_mappings/index.html delete mode 100644 img/Mapping Between LinkML Schemas0.png delete mode 100644 img/Mapping Between LinkML Schemas1.png delete mode 100644 img/Mapping Between LinkML Schemas10.png delete mode 100644 img/Mapping Between LinkML Schemas11.png delete mode 100644 img/Mapping Between LinkML Schemas12.png delete mode 100644 img/Mapping Between LinkML Schemas13.png delete mode 100644 img/Mapping Between LinkML Schemas14.png delete mode 100644 img/Mapping Between LinkML Schemas15.png delete mode 100644 img/Mapping Between LinkML Schemas16.png delete mode 100644 img/Mapping Between LinkML Schemas17.png delete mode 100644 img/Mapping Between LinkML Schemas18.png delete mode 100644 img/Mapping Between LinkML Schemas19.png delete mode 100644 img/Mapping Between LinkML Schemas2.png delete mode 100644 img/Mapping Between LinkML Schemas20.png delete mode 100644 img/Mapping Between LinkML Schemas3.png delete mode 100644 img/Mapping Between LinkML Schemas4.png delete mode 100644 img/Mapping Between LinkML Schemas5.png delete mode 100644 img/Mapping Between LinkML Schemas6.png delete mode 100644 img/Mapping Between LinkML Schemas7.png delete mode 100644 img/Mapping Between LinkML Schemas8.png delete mode 100644 img/Mapping Between LinkML Schemas9.png create mode 100644 implements/index.html create mode 100644 mirror_source/index.html create mode 100644 overrides/index.html delete mode 100644 overview/index.html create mode 100644 range/index.html create mode 100644 reversed/index.html create mode 100644 source_magnitude_slot/index.html create mode 100644 source_unit/index.html create mode 100644 source_unit_scheme/index.html create mode 100644 source_unit_slot/index.html create mode 100644 sources/index.html create mode 100644 specification/compliance/index.html create mode 100644 stringification/index.html create mode 100644 syntax/index.html create mode 100644 target_magnitude_slot/index.html create mode 100644 target_unit/index.html create mode 100644 target_unit_scheme/index.html create mode 100644 target_unit_slot/index.html create mode 100644 unit_conversion/index.html create mode 100644 value_mappings/index.html diff --git a/404.html b/404.html index d7dead8..f83d9ff 100644 --- a/404.html +++ b/404.html @@ -8,8 +8,10 @@ + + - + @@ -17,11 +19,7 @@ - - - - - + @@ -47,15 +45,12 @@ - - - - - - + + + @@ -69,7 +64,9 @@ -
    + + +
    @@ -300,10 +316,10 @@

    404 - Not found

    - + - + diff --git a/AliasedClass/index.html b/AliasedClass/index.html index 2e66a3c..fdf82ee 100644 --- a/AliasedClass/index.html +++ b/AliasedClass/index.html @@ -7,16 +7,16 @@ - + Class: AliasedClass - LinkML-Transformer - - + - + + @@ -27,7 +27,7 @@
    -
    +
    @@ -201,17 +211,20 @@
    - - -

    Class: AliasedClass

    alias-class key value pairs for classes

    URI: linkmltr:AliasedClass

    classDiagram class AliasedClass AliasedClass : alias + + AliasedClass --|> None : alias + AliasedClass : class_named + AliasedClass --|> None : class_named + +

    Slots

    @@ -227,13 +240,13 @@

    Slots

    alias -0..1
    xsd:string +1..1
    String name of the class to be aliased direct class_named -0..1
    xsd:string +0..1
    String local alias for the class direct @@ -289,7 +302,6 @@

    Direct

    name: AliasedClass
     description: alias-class key value pairs for classes
     from_schema: https://w3id.org/linkml/transformer
    -rank: 1000
     attributes:
       alias:
         name: alias
    @@ -297,6 +309,7 @@ 

    Direct

    from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true + required: true class_named: name: class_named description: local alias for the class @@ -310,7 +323,6 @@

    Induced

    name: AliasedClass
     description: alias-class key value pairs for classes
     from_schema: https://w3id.org/linkml/transformer
    -rank: 1000
     attributes:
       alias:
         name: alias
    @@ -322,6 +334,7 @@ 

    Induced

    owner: AliasedClass domain_of: - AliasedClass + required: true class_named: name: class_named description: local alias for the class @@ -357,7 +370,7 @@

    Induced

    - - + + \ No newline at end of file diff --git a/Any/index.html b/Any/index.html index 345a9f1..25821e3 100644 --- a/Any/index.html +++ b/Any/index.html @@ -7,16 +7,16 @@ - + Class: Any - LinkML-Transformer - - + - + + @@ -27,7 +27,7 @@
    -
    +
    @@ -201,9 +211,6 @@
    - - -

    Class: Any

    URI: linkml:Any

    classDiagram @@ -242,6 +249,42 @@

    Usages

    +ElementDerivation +overrides +range +Any + + +ClassDerivation +overrides +range +Any + + +SlotDerivation +overrides +range +Any + + +EnumDerivation +overrides +range +Any + + +PermissibleValueDerivation +overrides +range +Any + + +PrefixDerivation +overrides +range +Any + + KeyVal value range @@ -297,7 +340,6 @@

    Direct

    name: Any
     from_schema: https://w3id.org/linkml/transformer
    -rank: 1000
     class_uri: linkml:Any
     
     
    @@ -306,7 +348,6 @@

    Induced

    name: Any
     from_schema: https://w3id.org/linkml/transformer
    -rank: 1000
     class_uri: linkml:Any
     
     
    @@ -334,7 +375,7 @@

    Induced

    - - + + \ No newline at end of file diff --git a/Boolean/index.html b/Boolean/index.html index b1fb2a6..4a104d1 100644 --- a/Boolean/index.html +++ b/Boolean/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -304,15 +320,13 @@ - - - - + +

    Type: Boolean

    A binary (true or false) value

    -

    URI: xsd:boolean

    +

    URI: xsd:boolean

    • base: Bool

      @@ -327,7 +341,7 @@

      Type: Boolean

      Identifier and Mapping Information

      Schema Source

        -
      • from schema: https://w3id.org/linkml/types
      • +
      • from schema: https://w3id.org/linkml/transformer
      @@ -368,10 +382,10 @@

      Schema Source

    - + - + diff --git a/ClassDerivation/index.html b/ClassDerivation/index.html index 35b0074..d26ac86 100644 --- a/ClassDerivation/index.html +++ b/ClassDerivation/index.html @@ -7,16 +7,16 @@ - + Class: ClassDerivation - LinkML-Transformer - - + - + + @@ -27,7 +27,7 @@
    -
    +
    @@ -206,9 +216,6 @@
    - - -

    Class: ClassDerivation

    A specification of how to derive a target class from a source class.

    URI: linkmltr:ClassDerivation

    @@ -216,22 +223,72 @@

    Class: ClassDerivation

    class ClassDerivation ElementDerivation <|-- ClassDerivation + ClassDerivation : comments + ClassDerivation : copy_directives + + ClassDerivation --|> CopyDirective : copy_directives + + ClassDerivation : description + + ClassDerivation --|> None : description + + ClassDerivation : expression_to_expression_mappings + + ClassDerivation --|> KeyVal : expression_to_expression_mappings + + ClassDerivation : expression_to_value_mappings + + ClassDerivation --|> KeyVal : expression_to_value_mappings + + ClassDerivation : implements + ClassDerivation : is_a + + ClassDerivation --|> ElementDerivation : is_a + ClassDerivation : joins + + ClassDerivation --|> AliasedClass : joins + + ClassDerivation : mirror_source + ClassDerivation : mixins + + ClassDerivation --|> ElementDerivation : mixins + ClassDerivation : name + + ClassDerivation --|> None : name + + ClassDerivation : overrides + + ClassDerivation --|> Any : overrides + ClassDerivation : populated_from + ClassDerivation : slot_derivations + ClassDerivation --|> SlotDerivation : slot_derivations + + ClassDerivation : sources + + ClassDerivation : value_mappings + + ClassDerivation --|> KeyVal : value_mappings + +

    Inheritance

    Slots

    @@ -244,14 +301,14 @@

    Slots

    - - - + + + - - + + @@ -263,17 +320,29 @@

    Slots

    - + + + + + + + + + + + + + @@ -285,6 +354,48 @@

    Slots

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    name0..1
    xsd:string
    populated_from0..1
    ClassReference
    Name of the class in the source schema direct
    populated_from0..1
    xsd:string
    sources0..*
    ClassReference
    direct
    slot_derivations0..1
    xsd:string
    0..*
    SlotDerivation
    direct
    name1..1
    String
    Name of the element in the target schemaElementDerivation
    copy_directives 0..*
    CopyDirective
    ElementDerivation
    overrides0..1
    Any
    overrides source schema slotsElementDerivation
    is_a 0..1
    ElementDerivation
    ElementDerivation
    value_mappings0..*
    KeyVal
    A mapping table that is applied directly to mappings, in order of precedenceElementDerivation
    expression_to_value_mappings0..*
    KeyVal
    A mapping table in which the keys are expressionsElementDerivation
    expression_to_expression_mappings0..*
    KeyVal
    A mapping table in which the keys and values are expressionsElementDerivation
    mirror_source0..1
    Boolean
    ElementDerivation
    description0..1
    String
    description of the specification componentSpecificationComponent
    implements0..*
    Uriorcurie
    A reference to a specification that this component implementsSpecificationComponent
    comments0..*
    String
    A list of comments about this componentSpecificationComponent

    Usages

    @@ -337,20 +448,20 @@

    Direct

    name: ClassDerivation
     description: A specification of how to derive a target class from a source class.
     from_schema: https://w3id.org/linkml/transformer
    -rank: 1000
     is_a: ElementDerivation
     attributes:
    -  name:
    -    name: name
    -    description: Name of the class in the target schema
    -    from_schema: https://w3id.org/linkml/transformer
    -    key: true
       populated_from:
         name: populated_from
         description: Name of the class in the source schema
         from_schema: https://w3id.org/linkml/transformer
         rank: 1000
    -    range: string
    +    range: ClassReference
    +  sources:
    +    name: sources
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    multivalued: true
    +    range: ClassReference
       joins:
         name: joins
         description: Additional classes to be joined to derive instances of the target
    @@ -376,34 +487,34 @@ 

    Induced

    name: ClassDerivation
     description: A specification of how to derive a target class from a source class.
     from_schema: https://w3id.org/linkml/transformer
    -rank: 1000
     is_a: ElementDerivation
     attributes:
    -  name:
    -    name: name
    -    description: Name of the class in the target schema
    +  populated_from:
    +    name: populated_from
    +    description: Name of the class in the source schema
         from_schema: https://w3id.org/linkml/transformer
    -    key: true
    -    alias: name
    +    rank: 1000
    +    alias: populated_from
         owner: ClassDerivation
         domain_of:
    -    - ElementDerivation
         - ClassDerivation
         - SlotDerivation
         - EnumDerivation
         - PermissibleValueDerivation
    -  populated_from:
    -    name: populated_from
    -    description: Name of the class in the source schema
    +    range: ClassReference
    +  sources:
    +    name: sources
         from_schema: https://w3id.org/linkml/transformer
         rank: 1000
    -    alias: populated_from
    +    multivalued: true
    +    alias: sources
         owner: ClassDerivation
         domain_of:
         - ClassDerivation
         - SlotDerivation
         - EnumDerivation
    -    range: string
    +    - PermissibleValueDerivation
    +    range: ClassReference
       joins:
         name: joins
         description: Additional classes to be joined to derive instances of the target
    @@ -430,6 +541,21 @@ 

    Induced

    - ClassDerivation range: SlotDerivation inlined: true + name: + name: name + description: Name of the element in the target schema + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + key: true + alias: name + owner: ClassDerivation + domain_of: + - ElementDerivation + - SlotDerivation + - EnumDerivation + - PermissibleValueDerivation + range: string + required: true copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer @@ -441,10 +567,21 @@

    Induced

    - ElementDerivation range: CopyDirective inlined: true + overrides: + name: overrides + description: overrides source schema slots + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + alias: overrides + owner: ClassDerivation + domain_of: + - ElementDerivation + range: Any is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 + slot_uri: linkml:is_a alias: is_a owner: ClassDerivation domain_of: @@ -454,13 +591,96 @@

    Induced

    name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 + slot_uri: linkml:mixins multivalued: true alias: mixins owner: ClassDerivation domain_of: - ElementDerivation range: ElementDerivation + inlined: false + value_mappings: + name: value_mappings + description: A mapping table that is applied directly to mappings, in order of + precedence + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: value_mappings + owner: ClassDerivation + domain_of: + - ElementDerivation + range: KeyVal + inlined: true + expression_to_value_mappings: + name: expression_to_value_mappings + description: A mapping table in which the keys are expressions + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: expression_to_value_mappings + owner: ClassDerivation + domain_of: + - ElementDerivation + range: KeyVal inlined: true + expression_to_expression_mappings: + name: expression_to_expression_mappings + description: A mapping table in which the keys and values are expressions + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: expression_to_expression_mappings + owner: ClassDerivation + domain_of: + - ElementDerivation + range: KeyVal + inlined: true + mirror_source: + name: mirror_source + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + alias: mirror_source + owner: ClassDerivation + domain_of: + - ElementDerivation + range: boolean + description: + name: description + description: description of the specification component + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + slot_uri: dcterms:description + alias: description + owner: ClassDerivation + domain_of: + - SpecificationComponent + range: string + implements: + name: implements + description: A reference to a specification that this component implements. + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: implements + owner: ClassDerivation + domain_of: + - SpecificationComponent + range: uriorcurie + comments: + name: comments + description: A list of comments about this component. Comments are free text, + and may be used to provide additional information about the component, including + instructions for its use. + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + slot_uri: rdfs:comment + multivalued: true + alias: comments + owner: ClassDerivation + domain_of: + - SpecificationComponent + range: string
    @@ -487,7 +707,7 @@

    Induced

    - - + + \ No newline at end of file diff --git a/ClassReference/index.html b/ClassReference/index.html new file mode 100644 index 0000000..b8e4aa1 --- /dev/null +++ b/ClassReference/index.html @@ -0,0 +1,391 @@ + + + + + + + + + + + + + + + + + + + + Type: ClassReference - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Type: ClassReference

    +

    URI: xsd:string

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/CollectionType/index.html b/CollectionType/index.html new file mode 100644 index 0000000..44816c4 --- /dev/null +++ b/CollectionType/index.html @@ -0,0 +1,467 @@ + + + + + + + + + + + + + + + + + + + + Enum: CollectionType - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Enum: CollectionType

    +

    URI: CollectionType

    +

    Permissible Values

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningDescription
    SingleValuedNone
    MultiValuedNone
    MultiValuedListNone
    MultiValuedDictNone
    +

    Slots

    + + + + + + + + + + + + + +
    NameDescription
    cast_collection_as
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: CollectionType
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +permissible_values:
    +  SingleValued:
    +    text: SingleValued
    +  MultiValued:
    +    text: MultiValued
    +  MultiValuedList:
    +    text: MultiValuedList
    +  MultiValuedDict:
    +    text: MultiValuedDict
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/CopyDirective/index.html b/CopyDirective/index.html index f00c05f..be920b2 100644 --- a/CopyDirective/index.html +++ b/CopyDirective/index.html @@ -7,16 +7,16 @@ - + Class: CopyDirective - LinkML-Transformer - - + - + + @@ -27,7 +27,7 @@
    -
    +
    @@ -201,20 +211,32 @@
    - - -

    Class: CopyDirective

    +

    Instructs a Schema Mapper in how to map to a target schema. Not used for data transformation.

    URI: linkmltr:CopyDirective

    classDiagram class CopyDirective CopyDirective : add + + CopyDirective --|> Any : add + CopyDirective : copy_all + CopyDirective : element_name + + CopyDirective --|> None : element_name + CopyDirective : exclude + + CopyDirective --|> Any : exclude + CopyDirective : exclude_all + CopyDirective : include + CopyDirective --|> Any : include + +

    Slots

    @@ -230,19 +252,19 @@

    Slots

    element_name -0..1
    xsd:string +1..1
    String direct copy_all -0..1
    xsd:boolean +0..1
    Boolean direct exclude_all -0..1
    xsd:boolean +0..1
    Boolean direct @@ -344,14 +366,17 @@

    LinkML Source

    Direct

    name: CopyDirective
    +description: Instructs a Schema Mapper in how to map to a target schema. Not used
    +  for data transformation.
     from_schema: https://w3id.org/linkml/transformer
    -rank: 1000
    +status: testing
     attributes:
       element_name:
         name: element_name
         from_schema: https://w3id.org/linkml/transformer
         rank: 1000
         key: true
    +    required: true
       copy_all:
         name: copy_all
         from_schema: https://w3id.org/linkml/transformer
    @@ -383,8 +408,10 @@ 

    Direct

    Induced

    name: CopyDirective
    +description: Instructs a Schema Mapper in how to map to a target schema. Not used
    +  for data transformation.
     from_schema: https://w3id.org/linkml/transformer
    -rank: 1000
    +status: testing
     attributes:
       element_name:
         name: element_name
    @@ -395,6 +422,7 @@ 

    Induced

    owner: CopyDirective domain_of: - CopyDirective + required: true copy_all: name: copy_all from_schema: https://w3id.org/linkml/transformer @@ -466,7 +494,7 @@

    Induced

    - - + + \ No newline at end of file diff --git a/Curie/index.html b/Curie/index.html index 6bd822b..bba414f 100644 --- a/Curie/index.html +++ b/Curie/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -311,15 +327,13 @@ - - - - + +

    Type: Curie

    a compact URI

    -

    URI: xsd:string

    +

    URI: xsd:string

    • base: Curie

      @@ -339,7 +353,7 @@

      Comments

      Identifier and Mapping Information

      Schema Source

        -
      • from schema: https://w3id.org/linkml/types
      • +
      • from schema: https://w3id.org/linkml/transformer
      @@ -380,10 +394,10 @@

      Schema Source

    - + - + diff --git a/Date/index.html b/Date/index.html index 27a164f..0a91e4d 100644 --- a/Date/index.html +++ b/Date/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -304,15 +320,13 @@ - - - - + +

    Type: Date

    a date (year, month and day) in an idealized calendar

    -

    URI: xsd:date

    +

    URI: xsd:date

    • base: XSDDate

      @@ -327,7 +341,7 @@

      Type: Date

      Identifier and Mapping Information

      Schema Source

        -
      • from schema: https://w3id.org/linkml/types
      • +
      • from schema: https://w3id.org/linkml/transformer
      @@ -368,10 +382,10 @@

      Schema Source

    - + - + diff --git a/DateOrDatetime/index.html b/DateOrDatetime/index.html index 7e92f17..6fe63c9 100644 --- a/DateOrDatetime/index.html +++ b/DateOrDatetime/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -304,10 +320,8 @@ - - - - + +

    Type: DateOrDatetime

    @@ -327,7 +341,7 @@

    Type: DateOrDatetime

    Identifier and Mapping Information

    Schema Source

      -
    • from schema: https://w3id.org/linkml/types
    • +
    • from schema: https://w3id.org/linkml/transformer
    @@ -368,10 +382,10 @@

    Schema Source

    - + - + diff --git a/Datetime/index.html b/Datetime/index.html index 3591e0b..653052c 100644 --- a/Datetime/index.html +++ b/Datetime/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -304,15 +320,13 @@ - - - - + +

    Type: Datetime

    The combination of a date and time

    -

    URI: xsd:dateTime

    +

    URI: xsd:dateTime

    • base: XSDDateTime

      @@ -327,7 +341,7 @@

      Type: Datetime

      Identifier and Mapping Information

      Schema Source

        -
      • from schema: https://w3id.org/linkml/types
      • +
      • from schema: https://w3id.org/linkml/transformer
      @@ -368,10 +382,10 @@

      Schema Source

    - + - + diff --git a/Decimal/index.html b/Decimal/index.html index 28111de..6de3540 100644 --- a/Decimal/index.html +++ b/Decimal/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -304,15 +320,13 @@ - - - - + +

    Type: Decimal

    A real number with arbitrary precision that conforms to the xsd:decimal specification

    -

    URI: xsd:decimal

    +

    URI: xsd:decimal

    • base: Decimal

      @@ -324,7 +338,7 @@

      Type: Decimal

      Identifier and Mapping Information

      Schema Source

        -
      • from schema: https://w3id.org/linkml/types
      • +
      • from schema: https://w3id.org/linkml/transformer
      @@ -365,10 +379,10 @@

      Schema Source

    - + - + diff --git a/Double/index.html b/Double/index.html index 64fc460..dd12991 100644 --- a/Double/index.html +++ b/Double/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -304,15 +320,13 @@ - - - - + +

    Type: Double

    A real number that conforms to the xsd:double specification

    -

    URI: xsd:double

    +

    URI: xsd:double

    • base: float

      @@ -324,7 +338,7 @@

      Type: Double

      Identifier and Mapping Information

      Schema Source

        -
      • from schema: https://w3id.org/linkml/types
      • +
      • from schema: https://w3id.org/linkml/transformer
      @@ -365,10 +379,10 @@

      Schema Source

    - + - + diff --git a/ElementDerivation/index.html b/ElementDerivation/index.html index 5c58aac..399234a 100644 --- a/ElementDerivation/index.html +++ b/ElementDerivation/index.html @@ -7,16 +7,16 @@ - + Class: ElementDerivation - LinkML-Transformer - - + - + + @@ -27,7 +27,7 @@
    -
    +
    @@ -206,31 +216,71 @@
    - - -

    Class: ElementDerivation

    -

    A specification of how to derive a target element from a source element.

    +

    An abstract grouping for classes that provide a specification of how to derive a target element from a source element.

    • NOTE: this is an abstract class and should not be instantiated directly

    URI: linkmltr:ElementDerivation

    classDiagram class ElementDerivation + SpecificationComponent <|-- ElementDerivation + + ElementDerivation <|-- ClassDerivation ElementDerivation <|-- SlotDerivation ElementDerivation <|-- EnumDerivation ElementDerivation <|-- PermissibleValueDerivation ElementDerivation <|-- PrefixDerivation + + ElementDerivation : comments + ElementDerivation : copy_directives + + ElementDerivation --|> CopyDirective : copy_directives + + ElementDerivation : description + + ElementDerivation --|> None : description + + ElementDerivation : expression_to_expression_mappings + + ElementDerivation --|> KeyVal : expression_to_expression_mappings + + ElementDerivation : expression_to_value_mappings + + ElementDerivation --|> KeyVal : expression_to_value_mappings + + ElementDerivation : implements + ElementDerivation : is_a + + ElementDerivation --|> ElementDerivation : is_a + + ElementDerivation : mirror_source + ElementDerivation : mixins + + ElementDerivation --|> ElementDerivation : mixins + ElementDerivation : name + ElementDerivation --|> None : name + + ElementDerivation : overrides + + ElementDerivation --|> Any : overrides + + ElementDerivation : value_mappings + + ElementDerivation --|> KeyVal : value_mappings + +

    Inheritance

    Slots

    @@ -253,8 +305,8 @@

    Slots

    - - + + @@ -264,6 +316,12 @@

    Slots

    + + + + + + @@ -275,6 +333,48 @@

    Slots

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    name0..1
    xsd:string
    1..1
    String
    Name of the element in the target schema direct
    direct
    overrides0..1
    Any
    overrides source schema slotsdirect
    is_a 0..1
    ElementDerivation
    direct
    value_mappings0..*
    KeyVal
    A mapping table that is applied directly to mappings, in order of precedencedirect
    expression_to_value_mappings0..*
    KeyVal
    A mapping table in which the keys are expressionsdirect
    expression_to_expression_mappings0..*
    KeyVal
    A mapping table in which the keys and values are expressionsdirect
    mirror_source0..1
    Boolean
    direct
    description0..1
    String
    description of the specification componentSpecificationComponent
    implements0..*
    Uriorcurie
    A reference to a specification that this component implementsSpecificationComponent
    comments0..*
    String
    A list of comments about this componentSpecificationComponent

    Usages

    @@ -391,9 +491,10 @@

    LinkML Source

    Direct

    name: ElementDerivation
    -description: A specification of how to derive a target element from a source element.
    +description: An abstract grouping for classes that provide a specification of how
    +  to  derive a target element from a source element.
     from_schema: https://w3id.org/linkml/transformer
    -rank: 1000
    +is_a: SpecificationComponent
     abstract: true
     attributes:
       name:
    @@ -402,6 +503,7 @@ 

    Direct

    from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true + required: true copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer @@ -409,27 +511,66 @@

    Direct

    multivalued: true range: CopyDirective inlined: true + overrides: + name: overrides + description: overrides source schema slots + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + range: Any is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 + slot_uri: linkml:is_a range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 + slot_uri: linkml:mixins multivalued: true range: ElementDerivation + inlined: false + value_mappings: + name: value_mappings + description: A mapping table that is applied directly to mappings, in order of + precedence + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + range: KeyVal + inlined: true + expression_to_value_mappings: + name: expression_to_value_mappings + description: A mapping table in which the keys are expressions + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + range: KeyVal inlined: true + expression_to_expression_mappings: + name: expression_to_expression_mappings + description: A mapping table in which the keys and values are expressions + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + range: KeyVal + inlined: true + mirror_source: + name: mirror_source + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + range: boolean

    Induced

    name: ElementDerivation
    -description: A specification of how to derive a target element from a source element.
    +description: An abstract grouping for classes that provide a specification of how
    +  to  derive a target element from a source element.
     from_schema: https://w3id.org/linkml/transformer
    -rank: 1000
    +is_a: SpecificationComponent
     abstract: true
     attributes:
       name:
    @@ -442,10 +583,10 @@ 

    Induced

    owner: ElementDerivation domain_of: - ElementDerivation - - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation + required: true copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer @@ -457,10 +598,21 @@

    Induced

    - ElementDerivation range: CopyDirective inlined: true + overrides: + name: overrides + description: overrides source schema slots + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + alias: overrides + owner: ElementDerivation + domain_of: + - ElementDerivation + range: Any is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 + slot_uri: linkml:is_a alias: is_a owner: ElementDerivation domain_of: @@ -470,13 +622,96 @@

    Induced

    name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 + slot_uri: linkml:mixins multivalued: true alias: mixins owner: ElementDerivation domain_of: - ElementDerivation range: ElementDerivation + inlined: false + value_mappings: + name: value_mappings + description: A mapping table that is applied directly to mappings, in order of + precedence + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: value_mappings + owner: ElementDerivation + domain_of: + - ElementDerivation + range: KeyVal + inlined: true + expression_to_value_mappings: + name: expression_to_value_mappings + description: A mapping table in which the keys are expressions + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: expression_to_value_mappings + owner: ElementDerivation + domain_of: + - ElementDerivation + range: KeyVal inlined: true + expression_to_expression_mappings: + name: expression_to_expression_mappings + description: A mapping table in which the keys and values are expressions + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: expression_to_expression_mappings + owner: ElementDerivation + domain_of: + - ElementDerivation + range: KeyVal + inlined: true + mirror_source: + name: mirror_source + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + alias: mirror_source + owner: ElementDerivation + domain_of: + - ElementDerivation + range: boolean + description: + name: description + description: description of the specification component + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + slot_uri: dcterms:description + alias: description + owner: ElementDerivation + domain_of: + - SpecificationComponent + range: string + implements: + name: implements + description: A reference to a specification that this component implements. + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: implements + owner: ElementDerivation + domain_of: + - SpecificationComponent + range: uriorcurie + comments: + name: comments + description: A list of comments about this component. Comments are free text, + and may be used to provide additional information about the component, including + instructions for its use. + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + slot_uri: rdfs:comment + multivalued: true + alias: comments + owner: ElementDerivation + domain_of: + - SpecificationComponent + range: string
    @@ -503,7 +738,7 @@

    Induced

    - - + + \ No newline at end of file diff --git a/EnumDerivation/index.html b/EnumDerivation/index.html index 0f20bd5..6d75874 100644 --- a/EnumDerivation/index.html +++ b/EnumDerivation/index.html @@ -7,16 +7,16 @@ - + Class: EnumDerivation - LinkML-Transformer - - + - + + @@ -27,7 +27,7 @@
    -
    +
    @@ -206,9 +216,6 @@
    - - -

    Class: EnumDerivation

    A specification of how to derive the value of a target enum from a source enum

    URI: linkmltr:EnumDerivation

    @@ -216,23 +223,72 @@

    Class: EnumDerivation

    class EnumDerivation ElementDerivation <|-- EnumDerivation + EnumDerivation : comments + EnumDerivation : copy_directives + + EnumDerivation --|> CopyDirective : copy_directives + + EnumDerivation : description + + EnumDerivation --|> None : description + EnumDerivation : expr + + EnumDerivation : expression_to_expression_mappings + + EnumDerivation --|> KeyVal : expression_to_expression_mappings + + EnumDerivation : expression_to_value_mappings + + EnumDerivation --|> KeyVal : expression_to_value_mappings + EnumDerivation : hide + + EnumDerivation : implements + EnumDerivation : is_a + + EnumDerivation --|> ElementDerivation : is_a + + EnumDerivation : mirror_source + EnumDerivation : mixins + + EnumDerivation --|> ElementDerivation : mixins + EnumDerivation : name + + EnumDerivation --|> None : name + + EnumDerivation : overrides + + EnumDerivation --|> Any : overrides + EnumDerivation : permissible_value_derivations + + EnumDerivation --|> PermissibleValueDerivation : permissible_value_derivations + EnumDerivation : populated_from + EnumDerivation : sources + + EnumDerivation : value_mappings + + EnumDerivation --|> KeyVal : value_mappings + +

    Inheritance

    Slots

    @@ -246,26 +302,32 @@

    Slots

    - - + + - + + + + + + + - - + + - - + + @@ -281,6 +343,12 @@

    Slots

    + + + + + + @@ -292,6 +360,48 @@

    Slots

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    name0..1
    xsd:string
    1..1
    String
    Target enum name direct
    populated_from0..1
    xsd:string
    0..1
    EnumReference
    Source enum namedirect
    sources0..*
    EnumReference
    direct
    expr0..1
    xsd:string
    0..1
    String
    An expression to be evaluated on the source object to derive the target slot direct
    hide0..1
    xsd:string
    0..1
    Boolean
    True if this is suppressed direct
    ElementDerivation
    overrides0..1
    Any
    overrides source schema slotsElementDerivation
    is_a 0..1
    ElementDerivation
    ElementDerivation
    value_mappings0..*
    KeyVal
    A mapping table that is applied directly to mappings, in order of precedenceElementDerivation
    expression_to_value_mappings0..*
    KeyVal
    A mapping table in which the keys are expressionsElementDerivation
    expression_to_expression_mappings0..*
    KeyVal
    A mapping table in which the keys and values are expressionsElementDerivation
    mirror_source0..1
    Boolean
    ElementDerivation
    description0..1
    String
    description of the specification componentSpecificationComponent
    implements0..*
    Uriorcurie
    A reference to a specification that this component implementsSpecificationComponent
    comments0..*
    String
    A list of comments about this componentSpecificationComponent

    Usages

    @@ -345,7 +455,6 @@

    Direct

    description: A specification of how to derive the value of a target enum from a source enum from_schema: https://w3id.org/linkml/transformer -rank: 1000 is_a: ElementDerivation attributes: name: @@ -353,11 +462,17 @@

    Direct

    description: Target enum name from_schema: https://w3id.org/linkml/transformer key: true + required: true populated_from: name: populated_from description: Source enum name from_schema: https://w3id.org/linkml/transformer - range: string + range: EnumReference + sources: + name: sources + from_schema: https://w3id.org/linkml/transformer + multivalued: true + range: EnumReference expr: name: expr description: An expression to be evaluated on the source object to derive the @@ -386,7 +501,6 @@

    Induced

    description: A specification of how to derive the value of a target enum from a source enum from_schema: https://w3id.org/linkml/transformer -rank: 1000 is_a: ElementDerivation attributes: name: @@ -398,10 +512,10 @@

    Induced

    owner: EnumDerivation domain_of: - ElementDerivation - - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation + required: true populated_from: name: populated_from description: Source enum name @@ -412,7 +526,20 @@

    Induced

    - ClassDerivation - SlotDerivation - EnumDerivation - range: string + - PermissibleValueDerivation + range: EnumReference + sources: + name: sources + from_schema: https://w3id.org/linkml/transformer + multivalued: true + alias: sources + owner: EnumDerivation + domain_of: + - ClassDerivation + - SlotDerivation + - EnumDerivation + - PermissibleValueDerivation + range: EnumReference expr: name: expr description: An expression to be evaluated on the source object to derive the @@ -459,10 +586,21 @@

    Induced

    - ElementDerivation range: CopyDirective inlined: true + overrides: + name: overrides + description: overrides source schema slots + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + alias: overrides + owner: EnumDerivation + domain_of: + - ElementDerivation + range: Any is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 + slot_uri: linkml:is_a alias: is_a owner: EnumDerivation domain_of: @@ -472,13 +610,96 @@

    Induced

    name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 + slot_uri: linkml:mixins multivalued: true alias: mixins owner: EnumDerivation domain_of: - ElementDerivation range: ElementDerivation + inlined: false + value_mappings: + name: value_mappings + description: A mapping table that is applied directly to mappings, in order of + precedence + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: value_mappings + owner: EnumDerivation + domain_of: + - ElementDerivation + range: KeyVal inlined: true + expression_to_value_mappings: + name: expression_to_value_mappings + description: A mapping table in which the keys are expressions + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: expression_to_value_mappings + owner: EnumDerivation + domain_of: + - ElementDerivation + range: KeyVal + inlined: true + expression_to_expression_mappings: + name: expression_to_expression_mappings + description: A mapping table in which the keys and values are expressions + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: expression_to_expression_mappings + owner: EnumDerivation + domain_of: + - ElementDerivation + range: KeyVal + inlined: true + mirror_source: + name: mirror_source + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + alias: mirror_source + owner: EnumDerivation + domain_of: + - ElementDerivation + range: boolean + description: + name: description + description: description of the specification component + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + slot_uri: dcterms:description + alias: description + owner: EnumDerivation + domain_of: + - SpecificationComponent + range: string + implements: + name: implements + description: A reference to a specification that this component implements. + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: implements + owner: EnumDerivation + domain_of: + - SpecificationComponent + range: uriorcurie + comments: + name: comments + description: A list of comments about this component. Comments are free text, + and may be used to provide additional information about the component, including + instructions for its use. + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + slot_uri: rdfs:comment + multivalued: true + alias: comments + owner: EnumDerivation + domain_of: + - SpecificationComponent + range: string
    @@ -505,7 +726,7 @@

    Induced

    - - + + \ No newline at end of file diff --git a/same_as/index.html b/EnumReference/index.html similarity index 80% rename from same_as/index.html rename to EnumReference/index.html index 7896d81..2d40611 100644 --- a/same_as/index.html +++ b/EnumReference/index.html @@ -8,22 +8,20 @@ - + + + - + - Slot: same_as - LinkML-Transformer + Type: EnumReference - LinkML-Transformer - - - - - + @@ -49,22 +47,19 @@ - - - - - - + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -270,13 +286,6 @@
    - + - + diff --git a/Float/index.html b/Float/index.html index c451f45..4b8b3a9 100644 --- a/Float/index.html +++ b/Float/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -304,15 +320,13 @@ - - - - + +

    Type: Float

    A real number that conforms to the xsd:float specification

    -

    URI: xsd:float

    +

    URI: xsd:float

    • base: float

      @@ -324,7 +338,7 @@

      Type: Float

      Identifier and Mapping Information

      Schema Source

        -
      • from schema: https://w3id.org/linkml/types
      • +
      • from schema: https://w3id.org/linkml/transformer
      @@ -365,10 +379,10 @@

      Schema Source

    - + - + diff --git a/Integer/index.html b/Integer/index.html index 0e72e5a..b263a52 100644 --- a/Integer/index.html +++ b/Integer/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -304,15 +320,13 @@ - - - - + +

    Type: Integer

    An integer

    -

    URI: xsd:integer

    +

    URI: xsd:integer

    • base: int

      @@ -324,7 +338,7 @@

      Type: Integer

      Identifier and Mapping Information

      Schema Source

        -
      • from schema: https://w3id.org/linkml/types
      • +
      • from schema: https://w3id.org/linkml/transformer
      @@ -365,10 +379,10 @@

      Schema Source

    - + - + diff --git a/Inverse/index.html b/Inverse/index.html index 4d5844a..cb9db54 100644 --- a/Inverse/index.html +++ b/Inverse/index.html @@ -7,16 +7,16 @@ - + Class: Inverse - LinkML-Transformer - - + - + + @@ -27,7 +27,7 @@
    -
    +
    @@ -206,17 +216,20 @@
    - - -

    Class: Inverse

    -

    Used for back references

    +

    Used for back references in mapping to relational model

    URI: linkmltr:Inverse

    classDiagram class Inverse Inverse : class_name + + Inverse --|> None : class_name + Inverse : slot_name + Inverse --|> None : slot_name + +

    Slots

    @@ -232,13 +245,13 @@

    Slots

    slot_name -0..1
    xsd:string +0..1
    String direct class_name -0..1
    xsd:string +0..1
    String direct @@ -297,12 +310,11 @@

    LinkML Source

    Direct

    name: Inverse
    -description: Used for back references
    +description: Used for back references in mapping to relational model
     from_schema: https://w3id.org/linkml/transformer
     aliases:
     - backref
     - back_references
    -rank: 1000
     attributes:
       slot_name:
         name: slot_name
    @@ -318,12 +330,11 @@ 

    Direct

    Induced

    name: Inverse
    -description: Used for back references
    +description: Used for back references in mapping to relational model
     from_schema: https://w3id.org/linkml/transformer
     aliases:
     - backref
     - back_references
    -rank: 1000
     attributes:
       slot_name:
         name: slot_name
    @@ -367,7 +378,7 @@ 

    Induced

    - - + + \ No newline at end of file diff --git a/Jsonpath/index.html b/Jsonpath/index.html new file mode 100644 index 0000000..695b10e --- /dev/null +++ b/Jsonpath/index.html @@ -0,0 +1,392 @@ + + + + + + + + + + + + + + + + + + + + Type: Jsonpath - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Type: Jsonpath

    +

    A string encoding a JSON Path. The value of the string MUST conform to JSON Point syntax and SHOULD dereference to zero or more valid objects within the current instance document when encoded in tree form.

    +

    URI: xsd:string

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/Jsonpointer/index.html b/Jsonpointer/index.html new file mode 100644 index 0000000..76fd06e --- /dev/null +++ b/Jsonpointer/index.html @@ -0,0 +1,392 @@ + + + + + + + + + + + + + + + + + + + + Type: Jsonpointer - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Type: Jsonpointer

    +

    A string encoding a JSON Pointer. The value of the string MUST conform to JSON Point syntax and SHOULD dereference to a valid object within the current instance document when encoded in tree form.

    +

    URI: xsd:string

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/KeyVal/index.html b/KeyVal/index.html index 241ec15..a73440f 100644 --- a/KeyVal/index.html +++ b/KeyVal/index.html @@ -7,16 +7,16 @@ - + Class: KeyVal - LinkML-Transformer - - + - + + @@ -27,7 +27,7 @@
    -
    +
    @@ -152,6 +162,11 @@
  • + + Usages + +
  • +
  • Identifier and Mapping Information @@ -196,16 +211,19 @@
    - - -

    Class: KeyVal

    URI: linkmltr:KeyVal

    classDiagram class KeyVal KeyVal : key + + KeyVal --|> None : key + KeyVal : value + KeyVal --|> Any : value + +

    Slots

    @@ -221,7 +239,7 @@

    Slots

    key -0..1
    xsd:string +1..1
    String direct @@ -233,6 +251,133 @@

    Slots

    +

    Usages

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    used byused intypeused
    TransformationSpecificationprefixesrangeKeyVal
    ElementDerivationvalue_mappingsrangeKeyVal
    ElementDerivationexpression_to_value_mappingsrangeKeyVal
    ElementDerivationexpression_to_expression_mappingsrangeKeyVal
    ClassDerivationvalue_mappingsrangeKeyVal
    ClassDerivationexpression_to_value_mappingsrangeKeyVal
    ClassDerivationexpression_to_expression_mappingsrangeKeyVal
    SlotDerivationvalue_mappingsrangeKeyVal
    SlotDerivationexpression_to_value_mappingsrangeKeyVal
    SlotDerivationexpression_to_expression_mappingsrangeKeyVal
    EnumDerivationvalue_mappingsrangeKeyVal
    EnumDerivationexpression_to_value_mappingsrangeKeyVal
    EnumDerivationexpression_to_expression_mappingsrangeKeyVal
    PermissibleValueDerivationvalue_mappingsrangeKeyVal
    PermissibleValueDerivationexpression_to_value_mappingsrangeKeyVal
    PermissibleValueDerivationexpression_to_expression_mappingsrangeKeyVal
    PrefixDerivationvalue_mappingsrangeKeyVal
    PrefixDerivationexpression_to_value_mappingsrangeKeyVal
    PrefixDerivationexpression_to_expression_mappingsrangeKeyVal

    Identifier and Mapping Information

    Schema Source

      @@ -263,13 +408,13 @@

      Direct

      name: KeyVal
       from_schema: https://w3id.org/linkml/transformer
      -rank: 1000
       attributes:
         key:
           name: key
           from_schema: https://w3id.org/linkml/transformer
           rank: 1000
           key: true
      +    required: true
         value:
           name: value
           from_schema: https://w3id.org/linkml/transformer
      @@ -282,7 +427,6 @@ 

      Induced

      name: KeyVal
       from_schema: https://w3id.org/linkml/transformer
      -rank: 1000
       attributes:
         key:
           name: key
      @@ -293,6 +437,7 @@ 

      Induced

      owner: KeyVal domain_of: - KeyVal + required: true value: name: value from_schema: https://w3id.org/linkml/transformer @@ -328,7 +473,7 @@

      Induced

      - - + + \ No newline at end of file diff --git a/Ncname/index.html b/Ncname/index.html index f4d2c59..ef84937 100644 --- a/Ncname/index.html +++ b/Ncname/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
      + + +
    - +
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -304,15 +320,13 @@ - - - - + +

    Type: Ncname

    Prefix part of CURIE

    -

    URI: xsd:string

    +

    URI: xsd:string

    • base: NCName

      @@ -327,7 +341,7 @@

      Type: Ncname

      Identifier and Mapping Information

      Schema Source

        -
      • from schema: https://w3id.org/linkml/types
      • +
      • from schema: https://w3id.org/linkml/transformer
      @@ -368,10 +382,10 @@

      Schema Source

      - + - + diff --git a/Nodeidentifier/index.html b/Nodeidentifier/index.html index 0e10a10..75e0603 100644 --- a/Nodeidentifier/index.html +++ b/Nodeidentifier/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
      + + +
    @@ -304,15 +320,13 @@ - - - - + +

    Type: Nodeidentifier

    A URI, CURIE or BNODE that represents a node in a model.

    -

    URI: shex:nonLiteral

    +

    URI: shex:nonLiteral

    • base: NodeIdentifier

      @@ -327,7 +341,7 @@

      Type: Nodeidentifier

      Identifier and Mapping Information

      Schema Source

        -
      • from schema: https://w3id.org/linkml/types
      • +
      • from schema: https://w3id.org/linkml/transformer
      @@ -368,10 +382,10 @@

      Schema Source

      - + - + diff --git a/Objectidentifier/index.html b/Objectidentifier/index.html index 1df7ada..347297c 100644 --- a/Objectidentifier/index.html +++ b/Objectidentifier/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
      + + +
    @@ -311,15 +327,13 @@ - - - - + +

    Type: Objectidentifier

    A URI or CURIE that represents an object in the model.

    -

    URI: shex:iri

    +

    URI: shex:iri

    • base: ElementIdentifier

      @@ -333,12 +347,12 @@

      Type: Objectidentifier

    Comments

      -
    • Used for inheritence and type checking
    • +
    • Used for inheritance and type checking

    Identifier and Mapping Information

    Schema Source

      -
    • from schema: https://w3id.org/linkml/types
    • +
    • from schema: https://w3id.org/linkml/transformer
    @@ -379,10 +393,10 @@

    Schema Source

    - + - + diff --git a/PermissibleValueDerivation/index.html b/PermissibleValueDerivation/index.html index ba6f186..dbde504 100644 --- a/PermissibleValueDerivation/index.html +++ b/PermissibleValueDerivation/index.html @@ -7,16 +7,16 @@ - + Class: PermissibleValueDerivation - LinkML-Transformer - - + - + + @@ -27,7 +27,7 @@
    -
    +
    @@ -211,9 +221,6 @@
    - - -

    Class: PermissibleValueDerivation

    A specification of how to derive the value of a PV from a source enum

    URI: linkmltr:PermissibleValueDerivation

    @@ -221,21 +228,68 @@

    Class: PermissibleValueDerivation

    class PermissibleValueDerivation ElementDerivation <|-- PermissibleValueDerivation + PermissibleValueDerivation : comments + PermissibleValueDerivation : copy_directives + + PermissibleValueDerivation --|> CopyDirective : copy_directives + + PermissibleValueDerivation : description + + PermissibleValueDerivation --|> None : description + PermissibleValueDerivation : expr + + PermissibleValueDerivation : expression_to_expression_mappings + + PermissibleValueDerivation --|> KeyVal : expression_to_expression_mappings + + PermissibleValueDerivation : expression_to_value_mappings + + PermissibleValueDerivation --|> KeyVal : expression_to_value_mappings + PermissibleValueDerivation : hide + + PermissibleValueDerivation : implements + PermissibleValueDerivation : is_a + + PermissibleValueDerivation --|> ElementDerivation : is_a + + PermissibleValueDerivation : mirror_source + PermissibleValueDerivation : mixins + + PermissibleValueDerivation --|> ElementDerivation : mixins + PermissibleValueDerivation : name + PermissibleValueDerivation --|> None : name + + PermissibleValueDerivation : overrides + + PermissibleValueDerivation --|> Any : overrides + + PermissibleValueDerivation : populated_from + + PermissibleValueDerivation : sources + + PermissibleValueDerivation : value_mappings + + PermissibleValueDerivation --|> KeyVal : value_mappings + +

    Inheritance

    Slots

    @@ -249,19 +303,31 @@

    Slots

    - - + + - + + + + + + + + + + + + + - + @@ -272,6 +338,12 @@

    Slots

    + + + + + + @@ -283,6 +355,48 @@

    Slots

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    name0..1
    xsd:string
    1..1
    String
    Target permissible value text direct
    expr0..1
    xsd:string
    0..1
    String
    direct
    populated_from0..1
    String
    Source permissible valuedirect
    sources0..*
    String
    direct
    hide0..1
    xsd:string
    0..1
    Boolean
    direct
    ElementDerivation
    overrides0..1
    Any
    overrides source schema slotsElementDerivation
    is_a 0..1
    ElementDerivation
    ElementDerivation
    value_mappings0..*
    KeyVal
    A mapping table that is applied directly to mappings, in order of precedenceElementDerivation
    expression_to_value_mappings0..*
    KeyVal
    A mapping table in which the keys are expressionsElementDerivation
    expression_to_expression_mappings0..*
    KeyVal
    A mapping table in which the keys and values are expressionsElementDerivation
    mirror_source0..1
    Boolean
    ElementDerivation
    description0..1
    String
    description of the specification componentSpecificationComponent
    implements0..*
    Uriorcurie
    A reference to a specification that this component implementsSpecificationComponent
    comments0..*
    String
    A list of comments about this componentSpecificationComponent

    Usages

    @@ -341,7 +455,6 @@

    Direct

    todos: - this is currently under-specified. We will need boolean combinators to express if-then-else from_schema: https://w3id.org/linkml/transformer -rank: 1000 is_a: ElementDerivation attributes: name: @@ -349,10 +462,21 @@

    Direct

    description: Target permissible value text from_schema: https://w3id.org/linkml/transformer key: true + required: true expr: name: expr from_schema: https://w3id.org/linkml/transformer range: string + populated_from: + name: populated_from + description: Source permissible value + from_schema: https://w3id.org/linkml/transformer + range: string + sources: + name: sources + from_schema: https://w3id.org/linkml/transformer + multivalued: true + range: string hide: name: hide from_schema: https://w3id.org/linkml/transformer @@ -367,7 +491,6 @@

    Induced

    todos: - this is currently under-specified. We will need boolean combinators to express if-then-else from_schema: https://w3id.org/linkml/transformer -rank: 1000 is_a: ElementDerivation attributes: name: @@ -379,10 +502,10 @@

    Induced

    owner: PermissibleValueDerivation domain_of: - ElementDerivation - - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation + required: true expr: name: expr from_schema: https://w3id.org/linkml/transformer @@ -393,6 +516,30 @@

    Induced

    - EnumDerivation - PermissibleValueDerivation range: string + populated_from: + name: populated_from + description: Source permissible value + from_schema: https://w3id.org/linkml/transformer + alias: populated_from + owner: PermissibleValueDerivation + domain_of: + - ClassDerivation + - SlotDerivation + - EnumDerivation + - PermissibleValueDerivation + range: string + sources: + name: sources + from_schema: https://w3id.org/linkml/transformer + multivalued: true + alias: sources + owner: PermissibleValueDerivation + domain_of: + - ClassDerivation + - SlotDerivation + - EnumDerivation + - PermissibleValueDerivation + range: string hide: name: hide from_schema: https://w3id.org/linkml/transformer @@ -414,10 +561,21 @@

    Induced

    - ElementDerivation range: CopyDirective inlined: true + overrides: + name: overrides + description: overrides source schema slots + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + alias: overrides + owner: PermissibleValueDerivation + domain_of: + - ElementDerivation + range: Any is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 + slot_uri: linkml:is_a alias: is_a owner: PermissibleValueDerivation domain_of: @@ -427,13 +585,96 @@

    Induced

    name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 + slot_uri: linkml:mixins multivalued: true alias: mixins owner: PermissibleValueDerivation domain_of: - ElementDerivation range: ElementDerivation + inlined: false + value_mappings: + name: value_mappings + description: A mapping table that is applied directly to mappings, in order of + precedence + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: value_mappings + owner: PermissibleValueDerivation + domain_of: + - ElementDerivation + range: KeyVal inlined: true + expression_to_value_mappings: + name: expression_to_value_mappings + description: A mapping table in which the keys are expressions + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: expression_to_value_mappings + owner: PermissibleValueDerivation + domain_of: + - ElementDerivation + range: KeyVal + inlined: true + expression_to_expression_mappings: + name: expression_to_expression_mappings + description: A mapping table in which the keys and values are expressions + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: expression_to_expression_mappings + owner: PermissibleValueDerivation + domain_of: + - ElementDerivation + range: KeyVal + inlined: true + mirror_source: + name: mirror_source + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + alias: mirror_source + owner: PermissibleValueDerivation + domain_of: + - ElementDerivation + range: boolean + description: + name: description + description: description of the specification component + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + slot_uri: dcterms:description + alias: description + owner: PermissibleValueDerivation + domain_of: + - SpecificationComponent + range: string + implements: + name: implements + description: A reference to a specification that this component implements. + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: implements + owner: PermissibleValueDerivation + domain_of: + - SpecificationComponent + range: uriorcurie + comments: + name: comments + description: A list of comments about this component. Comments are free text, + and may be used to provide additional information about the component, including + instructions for its use. + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + slot_uri: rdfs:comment + multivalued: true + alias: comments + owner: PermissibleValueDerivation + domain_of: + - SpecificationComponent + range: string
    @@ -460,7 +701,7 @@

    Induced

    - - + + \ No newline at end of file diff --git a/PrefixDerivation/index.html b/PrefixDerivation/index.html index d7565ed..e5ff29e 100644 --- a/PrefixDerivation/index.html +++ b/PrefixDerivation/index.html @@ -7,16 +7,16 @@ - + Class: PrefixDerivation - LinkML-Transformer - - + - + + @@ -27,7 +27,7 @@
    -
    +
    @@ -201,28 +211,66 @@
    - - -

    Class: PrefixDerivation

    URI: linkmltr:PrefixDerivation

    classDiagram class PrefixDerivation ElementDerivation <|-- PrefixDerivation + PrefixDerivation : comments + PrefixDerivation : copy_directives + + PrefixDerivation --|> CopyDirective : copy_directives + + PrefixDerivation : description + + PrefixDerivation --|> None : description + + PrefixDerivation : expression_to_expression_mappings + + PrefixDerivation --|> KeyVal : expression_to_expression_mappings + + PrefixDerivation : expression_to_value_mappings + + PrefixDerivation --|> KeyVal : expression_to_value_mappings + + PrefixDerivation : implements + PrefixDerivation : is_a + + PrefixDerivation --|> ElementDerivation : is_a + + PrefixDerivation : mirror_source + PrefixDerivation : mixins + + PrefixDerivation --|> ElementDerivation : mixins + PrefixDerivation : name + PrefixDerivation --|> None : name + + PrefixDerivation : overrides + + PrefixDerivation --|> Any : overrides + + PrefixDerivation : value_mappings + + PrefixDerivation --|> KeyVal : value_mappings + +

    Inheritance

    Slots

    @@ -236,7 +284,7 @@

    Slots

    - + @@ -247,6 +295,12 @@

    Slots

    + + + + + + @@ -258,6 +312,48 @@

    Slots

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    name0..1
    xsd:string
    1..1
    String
    Name of the element in the target schema ElementDerivation
    ElementDerivation
    overrides0..1
    Any
    overrides source schema slotsElementDerivation
    is_a 0..1
    ElementDerivation
    ElementDerivation
    value_mappings0..*
    KeyVal
    A mapping table that is applied directly to mappings, in order of precedenceElementDerivation
    expression_to_value_mappings0..*
    KeyVal
    A mapping table in which the keys are expressionsElementDerivation
    expression_to_expression_mappings0..*
    KeyVal
    A mapping table in which the keys and values are expressionsElementDerivation
    mirror_source0..1
    Boolean
    ElementDerivation
    description0..1
    String
    description of the specification componentSpecificationComponent
    implements0..*
    Uriorcurie
    A reference to a specification that this component implementsSpecificationComponent
    comments0..*
    String
    A list of comments about this componentSpecificationComponent

    Identifier and Mapping Information

    @@ -290,7 +386,6 @@

    Direct

    name: PrefixDerivation
     from_schema: https://w3id.org/linkml/transformer
    -rank: 1000
     is_a: ElementDerivation
     
     
    @@ -299,7 +394,6 @@

    Induced

    name: PrefixDerivation
     from_schema: https://w3id.org/linkml/transformer
    -rank: 1000
     is_a: ElementDerivation
     attributes:
       name:
    @@ -312,11 +406,11 @@ 

    Induced

    owner: PrefixDerivation domain_of: - ElementDerivation - - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string + required: true copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer @@ -328,10 +422,21 @@

    Induced

    - ElementDerivation range: CopyDirective inlined: true + overrides: + name: overrides + description: overrides source schema slots + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + alias: overrides + owner: PrefixDerivation + domain_of: + - ElementDerivation + range: Any is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 + slot_uri: linkml:is_a alias: is_a owner: PrefixDerivation domain_of: @@ -341,13 +446,96 @@

    Induced

    name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 + slot_uri: linkml:mixins multivalued: true alias: mixins owner: PrefixDerivation domain_of: - ElementDerivation range: ElementDerivation + inlined: false + value_mappings: + name: value_mappings + description: A mapping table that is applied directly to mappings, in order of + precedence + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: value_mappings + owner: PrefixDerivation + domain_of: + - ElementDerivation + range: KeyVal + inlined: true + expression_to_value_mappings: + name: expression_to_value_mappings + description: A mapping table in which the keys are expressions + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: expression_to_value_mappings + owner: PrefixDerivation + domain_of: + - ElementDerivation + range: KeyVal inlined: true + expression_to_expression_mappings: + name: expression_to_expression_mappings + description: A mapping table in which the keys and values are expressions + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: expression_to_expression_mappings + owner: PrefixDerivation + domain_of: + - ElementDerivation + range: KeyVal + inlined: true + mirror_source: + name: mirror_source + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + alias: mirror_source + owner: PrefixDerivation + domain_of: + - ElementDerivation + range: boolean + description: + name: description + description: description of the specification component + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + slot_uri: dcterms:description + alias: description + owner: PrefixDerivation + domain_of: + - SpecificationComponent + range: string + implements: + name: implements + description: A reference to a specification that this component implements. + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: implements + owner: PrefixDerivation + domain_of: + - SpecificationComponent + range: uriorcurie + comments: + name: comments + description: A list of comments about this component. Comments are free text, + and may be used to provide additional information about the component, including + instructions for its use. + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + slot_uri: rdfs:comment + multivalued: true + alias: comments + owner: PrefixDerivation + domain_of: + - SpecificationComponent + range: string
    @@ -374,7 +562,7 @@

    Induced

    - - + + \ No newline at end of file diff --git a/SerializationSyntaxType/index.html b/SerializationSyntaxType/index.html new file mode 100644 index 0000000..25c82ab --- /dev/null +++ b/SerializationSyntaxType/index.html @@ -0,0 +1,460 @@ + + + + + + + + + + + + + + + + + + + + Enum: SerializationSyntaxType - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Enum: SerializationSyntaxType

    +

    URI: SerializationSyntaxType

    +

    Permissible Values

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningDescription
    JSONNone
    YAMLNone
    TURTLENone
    +

    Slots

    + + + + + + + + + + + + + +
    NameDescription
    syntax
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: SerializationSyntaxType
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +permissible_values:
    +  JSON:
    +    text: JSON
    +  YAML:
    +    text: YAML
    +  TURTLE:
    +    text: TURTLE
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/SlotDerivation/index.html b/SlotDerivation/index.html index 21808af..62f1405 100644 --- a/SlotDerivation/index.html +++ b/SlotDerivation/index.html @@ -7,16 +7,16 @@ - + Class: SlotDerivation - LinkML-Transformer - - + - + + @@ -27,7 +27,7 @@
    -
    +
    @@ -206,9 +216,6 @@
    - - -

    Class: SlotDerivation

    A specification of how to derive the value of a target slot from a source slot

    URI: linkmltr:SlotDerivation

    @@ -216,24 +223,92 @@

    Class: SlotDerivation

    class SlotDerivation ElementDerivation <|-- SlotDerivation + SlotDerivation : cast_collection_as + + SlotDerivation --|> CollectionType : cast_collection_as + + SlotDerivation : comments + SlotDerivation : copy_directives + + SlotDerivation --|> CopyDirective : copy_directives + + SlotDerivation : derived_from + + SlotDerivation : description + + SlotDerivation --|> None : description + + SlotDerivation : dictionary_key + SlotDerivation : expr + + SlotDerivation : expression_to_expression_mappings + + SlotDerivation --|> KeyVal : expression_to_expression_mappings + + SlotDerivation : expression_to_value_mappings + + SlotDerivation --|> KeyVal : expression_to_value_mappings + SlotDerivation : hide + + SlotDerivation : implements + SlotDerivation : inverse_of + + SlotDerivation --|> Inverse : inverse_of + SlotDerivation : is_a + + SlotDerivation --|> ElementDerivation : is_a + + SlotDerivation : mirror_source + SlotDerivation : mixins + + SlotDerivation --|> ElementDerivation : mixins + SlotDerivation : name + + SlotDerivation --|> None : name + + SlotDerivation : overrides + + SlotDerivation --|> Any : overrides + SlotDerivation : populated_from + + SlotDerivation : range + + SlotDerivation : sources + + SlotDerivation : stringification + + SlotDerivation --|> StringificationConfiguration : stringification + SlotDerivation : type_designator + SlotDerivation : unit_conversion + + SlotDerivation --|> UnitConversionConfiguration : unit_conversion + + SlotDerivation : value_mappings + + SlotDerivation --|> KeyVal : value_mappings + +

    Inheritance

    Slots

    @@ -247,19 +322,43 @@

    Slots

    - - + + - + + + + + + + + + + + + + - + + + + + + + + + + + + + @@ -271,13 +370,31 @@

    Slots

    - - + + - + + + + + + + + + + + + + + + + + + + @@ -288,6 +405,12 @@

    Slots

    + + + + + + @@ -299,6 +422,48 @@

    Slots

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    name0..1
    xsd:string
    1..1
    String
    Target slot name direct
    populated_from0..1
    xsd:string
    0..1
    SlotReference
    Source slot namedirect
    sources0..*
    SlotReference
    direct
    derived_from0..*
    SlotReference
    Source slots that are used to derive this slotdirect
    expr0..1
    xsd:string
    0..1
    String
    An expression to be evaluated on the source object to derive the target slotdirect
    range0..1
    String
    direct
    unit_conversion0..1
    UnitConversionConfiguration
    direct
    hide0..1
    xsd:string
    0..1
    Boolean
    True if this is suppressed direct
    type_designator0..1
    xsd:boolean
    0..1
    Boolean
    direct
    cast_collection_as0..1
    CollectionType
    direct
    dictionary_key0..1
    String
    direct
    stringification0..1
    StringificationConfiguration
    direct
    ElementDerivation
    overrides0..1
    Any
    overrides source schema slotsElementDerivation
    is_a 0..1
    ElementDerivation
    ElementDerivation
    value_mappings0..*
    KeyVal
    A mapping table that is applied directly to mappings, in order of precedenceElementDerivation
    expression_to_value_mappings0..*
    KeyVal
    A mapping table in which the keys are expressionsElementDerivation
    expression_to_expression_mappings0..*
    KeyVal
    A mapping table in which the keys and values are expressionsElementDerivation
    mirror_source0..1
    Boolean
    ElementDerivation
    description0..1
    String
    description of the specification componentSpecificationComponent
    implements0..*
    Uriorcurie
    A reference to a specification that this component implementsSpecificationComponent
    comments0..*
    String
    A list of comments about this componentSpecificationComponent

    Usages

    @@ -358,7 +523,6 @@

    Direct

    description: A specification of how to derive the value of a target slot from a source slot from_schema: https://w3id.org/linkml/transformer -rank: 1000 is_a: ElementDerivation attributes: name: @@ -366,11 +530,25 @@

    Direct

    description: Target slot name from_schema: https://w3id.org/linkml/transformer key: true + required: true populated_from: name: populated_from description: Source slot name from_schema: https://w3id.org/linkml/transformer - range: string + range: SlotReference + sources: + name: sources + from_schema: https://w3id.org/linkml/transformer + multivalued: true + range: SlotReference + derived_from: + name: derived_from + description: Source slots that are used to derive this slot. This can be computed + from the expr, if the expr is declarative. + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + range: SlotReference expr: name: expr description: An expression to be evaluated on the source object to derive the @@ -378,6 +556,17 @@

    Direct

    from_schema: https://w3id.org/linkml/transformer rank: 1000 range: string + range: + name: range + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + slot_uri: linkml:range + range: string + unit_conversion: + name: unit_conversion + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + range: UnitConversionConfiguration inverse_of: name: inverse_of description: Used to specify a class-slot tuple that is the inverse of the derived/target @@ -399,6 +588,21 @@

    Direct

    from_schema: https://w3id.org/linkml/transformer rank: 1000 range: boolean + cast_collection_as: + name: cast_collection_as + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + range: CollectionType + dictionary_key: + name: dictionary_key + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + range: string + stringification: + name: stringification + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + range: StringificationConfiguration
    @@ -408,7 +612,6 @@

    Induced

    description: A specification of how to derive the value of a target slot from a source slot from_schema: https://w3id.org/linkml/transformer -rank: 1000 is_a: ElementDerivation attributes: name: @@ -420,10 +623,10 @@

    Induced

    owner: SlotDerivation domain_of: - ElementDerivation - - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation + required: true populated_from: name: populated_from description: Source slot name @@ -434,7 +637,32 @@

    Induced

    - ClassDerivation - SlotDerivation - EnumDerivation - range: string + - PermissibleValueDerivation + range: SlotReference + sources: + name: sources + from_schema: https://w3id.org/linkml/transformer + multivalued: true + alias: sources + owner: SlotDerivation + domain_of: + - ClassDerivation + - SlotDerivation + - EnumDerivation + - PermissibleValueDerivation + range: SlotReference + derived_from: + name: derived_from + description: Source slots that are used to derive this slot. This can be computed + from the expr, if the expr is declarative. + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: derived_from + owner: SlotDerivation + domain_of: + - SlotDerivation + range: SlotReference expr: name: expr description: An expression to be evaluated on the source object to derive the @@ -448,6 +676,25 @@

    Induced

    - EnumDerivation - PermissibleValueDerivation range: string + range: + name: range + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + slot_uri: linkml:range + alias: range + owner: SlotDerivation + domain_of: + - SlotDerivation + range: string + unit_conversion: + name: unit_conversion + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + alias: unit_conversion + owner: SlotDerivation + domain_of: + - SlotDerivation + range: UnitConversionConfiguration inverse_of: name: inverse_of description: Used to specify a class-slot tuple that is the inverse of the derived/target @@ -483,6 +730,33 @@

    Induced

    domain_of: - SlotDerivation range: boolean + cast_collection_as: + name: cast_collection_as + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + alias: cast_collection_as + owner: SlotDerivation + domain_of: + - SlotDerivation + range: CollectionType + dictionary_key: + name: dictionary_key + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + alias: dictionary_key + owner: SlotDerivation + domain_of: + - SlotDerivation + range: string + stringification: + name: stringification + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + alias: stringification + owner: SlotDerivation + domain_of: + - SlotDerivation + range: StringificationConfiguration copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer @@ -494,10 +768,21 @@

    Induced

    - ElementDerivation range: CopyDirective inlined: true + overrides: + name: overrides + description: overrides source schema slots + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + alias: overrides + owner: SlotDerivation + domain_of: + - ElementDerivation + range: Any is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 + slot_uri: linkml:is_a alias: is_a owner: SlotDerivation domain_of: @@ -507,13 +792,96 @@

    Induced

    name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 + slot_uri: linkml:mixins multivalued: true alias: mixins owner: SlotDerivation domain_of: - ElementDerivation range: ElementDerivation + inlined: false + value_mappings: + name: value_mappings + description: A mapping table that is applied directly to mappings, in order of + precedence + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: value_mappings + owner: SlotDerivation + domain_of: + - ElementDerivation + range: KeyVal inlined: true + expression_to_value_mappings: + name: expression_to_value_mappings + description: A mapping table in which the keys are expressions + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: expression_to_value_mappings + owner: SlotDerivation + domain_of: + - ElementDerivation + range: KeyVal + inlined: true + expression_to_expression_mappings: + name: expression_to_expression_mappings + description: A mapping table in which the keys and values are expressions + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: expression_to_expression_mappings + owner: SlotDerivation + domain_of: + - ElementDerivation + range: KeyVal + inlined: true + mirror_source: + name: mirror_source + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + alias: mirror_source + owner: SlotDerivation + domain_of: + - ElementDerivation + range: boolean + description: + name: description + description: description of the specification component + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + slot_uri: dcterms:description + alias: description + owner: SlotDerivation + domain_of: + - SpecificationComponent + range: string + implements: + name: implements + description: A reference to a specification that this component implements. + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: implements + owner: SlotDerivation + domain_of: + - SpecificationComponent + range: uriorcurie + comments: + name: comments + description: A list of comments about this component. Comments are free text, + and may be used to provide additional information about the component, including + instructions for its use. + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + slot_uri: rdfs:comment + multivalued: true + alias: comments + owner: SlotDerivation + domain_of: + - SpecificationComponent + range: string @@ -540,7 +908,7 @@

    Induced

    - - + + \ No newline at end of file diff --git a/SlotReference/index.html b/SlotReference/index.html new file mode 100644 index 0000000..88bfc13 --- /dev/null +++ b/SlotReference/index.html @@ -0,0 +1,391 @@ + + + + + + + + + + + + + + + + + + + + Type: SlotReference - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Type: SlotReference

    +

    URI: xsd:string

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/Sparqlpath/index.html b/Sparqlpath/index.html new file mode 100644 index 0000000..40bd399 --- /dev/null +++ b/Sparqlpath/index.html @@ -0,0 +1,392 @@ + + + + + + + + + + + + + + + + + + + + Type: Sparqlpath - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Type: Sparqlpath

    +

    A string encoding a SPARQL Property Path. The value of the string MUST conform to SPARQL syntax and SHOULD dereference to zero or more valid objects within the current instance document when encoded as RDF.

    +

    URI: xsd:string

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/SpecificationComponent/index.html b/SpecificationComponent/index.html new file mode 100644 index 0000000..695a450 --- /dev/null +++ b/SpecificationComponent/index.html @@ -0,0 +1,401 @@ + + + + + + + + + + +Class: SpecificationComponent - LinkML-Transformer + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +

    Class: SpecificationComponent

    +
      +
    • NOTE: this is an abstract class and should not be instantiated directly
    • +
    +

    URI: linkmltr:SpecificationComponent

    +
    classDiagram + class SpecificationComponent + SpecificationComponent <|-- TransformationSpecification + SpecificationComponent <|-- ElementDerivation + + SpecificationComponent : comments + + SpecificationComponent : description + + SpecificationComponent --|> None : description + + SpecificationComponent : implements + + +
    +

    Inheritance

    + +

    Slots

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameCardinality and RangeDescriptionInheritance
    description0..1
    String
    description of the specification componentdirect
    implements0..*
    Uriorcurie
    A reference to a specification that this component implementsdirect
    comments0..*
    String
    A list of comments about this componentdirect
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    Mappings

    + + + + + + + + + + + + + + + + + +
    Mapping TypeMapped Value
    selflinkmltr:SpecificationComponent
    nativelinkmltr:SpecificationComponent
    +

    LinkML Source

    + +

    Direct

    +
    +
    name: SpecificationComponent
    +from_schema: https://w3id.org/linkml/transformer
    +abstract: true
    +attributes:
    +  description:
    +    name: description
    +    description: description of the specification component
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    slot_uri: dcterms:description
    +  implements:
    +    name: implements
    +    description: A reference to a specification that this component implements.
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    multivalued: true
    +    range: uriorcurie
    +  comments:
    +    name: comments
    +    description: A list of comments about this component. Comments are free text,
    +      and may be used to provide additional information about the component, including
    +      instructions for its use.
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    slot_uri: rdfs:comment
    +    multivalued: true
    +    range: string
    +
    +
    +
    +

    Induced

    +
    +
    name: SpecificationComponent
    +from_schema: https://w3id.org/linkml/transformer
    +abstract: true
    +attributes:
    +  description:
    +    name: description
    +    description: description of the specification component
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    slot_uri: dcterms:description
    +    alias: description
    +    owner: SpecificationComponent
    +    domain_of:
    +    - SpecificationComponent
    +  implements:
    +    name: implements
    +    description: A reference to a specification that this component implements.
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    multivalued: true
    +    alias: implements
    +    owner: SpecificationComponent
    +    domain_of:
    +    - SpecificationComponent
    +    range: uriorcurie
    +  comments:
    +    name: comments
    +    description: A list of comments about this component. Comments are free text,
    +      and may be used to provide additional information about the component, including
    +      instructions for its use.
    +    from_schema: https://w3id.org/linkml/transformer
    +    rank: 1000
    +    slot_uri: rdfs:comment
    +    multivalued: true
    +    alias: comments
    +    owner: SpecificationComponent
    +    domain_of:
    +    - SpecificationComponent
    +    range: string
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/String/index.html b/String/index.html index b188d0b..09fead2 100644 --- a/String/index.html +++ b/String/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    @@ -304,15 +320,13 @@ - - - - + +

    Type: String

    A character string

    -

    URI: xsd:string

    +

    URI: xsd:string

    • base: str

      @@ -324,7 +338,7 @@

      Type: String

      Identifier and Mapping Information

      Schema Source

        -
      • from schema: https://w3id.org/linkml/types
      • +
      • from schema: https://w3id.org/linkml/transformer
      @@ -365,10 +379,10 @@

      Schema Source

      - + - + diff --git a/StringificationConfiguration/index.html b/StringificationConfiguration/index.html new file mode 100644 index 0000000..0455678 --- /dev/null +++ b/StringificationConfiguration/index.html @@ -0,0 +1,403 @@ + + + + + + + + + + +Class: StringificationConfiguration - LinkML-Transformer + + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +
      +

      Class: StringificationConfiguration

      +

      URI: linkmltr:StringificationConfiguration

      +
      classDiagram + class StringificationConfiguration + StringificationConfiguration : delimiter + + StringificationConfiguration : reversed + + StringificationConfiguration : syntax + + StringificationConfiguration --|> SerializationSyntaxType : syntax + + +
      + +

      Slots

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameCardinality and RangeDescriptionInheritance
      delimiter0..1
      String
      direct
      reversed0..1
      Boolean
      direct
      syntax0..1
      SerializationSyntaxType
      direct
      +

      Usages

      + + + + + + + + + + + + + + + + + +
      used byused intypeused
      SlotDerivationstringificationrangeStringificationConfiguration
      +

      Identifier and Mapping Information

      +

      Schema Source

      +
        +
      • from schema: https://w3id.org/linkml/transformer
      • +
      +

      Mappings

      + + + + + + + + + + + + + + + + + +
      Mapping TypeMapped Value
      selflinkmltr:StringificationConfiguration
      nativelinkmltr:StringificationConfiguration
      +

      LinkML Source

      + +

      Direct

      +
      +
      name: StringificationConfiguration
      +from_schema: https://w3id.org/linkml/transformer
      +attributes:
      +  delimiter:
      +    name: delimiter
      +    examples:
      +    - value: ','
      +    - value: '|'
      +    - value: ;
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +    range: string
      +  reversed:
      +    name: reversed
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +    range: boolean
      +  syntax:
      +    name: syntax
      +    examples:
      +    - value: json
      +    - value: yaml
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +    range: SerializationSyntaxType
      +
      +
      +
      +

      Induced

      +
      +
      name: StringificationConfiguration
      +from_schema: https://w3id.org/linkml/transformer
      +attributes:
      +  delimiter:
      +    name: delimiter
      +    examples:
      +    - value: ','
      +    - value: '|'
      +    - value: ;
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +    alias: delimiter
      +    owner: StringificationConfiguration
      +    domain_of:
      +    - StringificationConfiguration
      +    range: string
      +  reversed:
      +    name: reversed
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +    alias: reversed
      +    owner: StringificationConfiguration
      +    domain_of:
      +    - StringificationConfiguration
      +    range: boolean
      +  syntax:
      +    name: syntax
      +    examples:
      +    - value: json
      +    - value: yaml
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +    alias: syntax
      +    owner: StringificationConfiguration
      +    domain_of:
      +    - StringificationConfiguration
      +    range: SerializationSyntaxType
      +
      +
      +
      +
      +
      + +
      +
      + +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/Time/index.html b/Time/index.html index 0eadaf5..b77c3be 100644 --- a/Time/index.html +++ b/Time/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
      + + +
    @@ -304,21 +320,19 @@ - - - - + +

    Type: Time

    A time object represents a (local) time of day, independent of any particular day

    -

    URI: xsd:dateTime

    +

    URI: xsd:time

    • base: XSDTime

    • -

      uri: xsd:dateTime

      +

      uri: xsd:time

    • repr: str

      @@ -327,7 +341,7 @@

      Type: Time

      Identifier and Mapping Information

      Schema Source

        -
      • from schema: https://w3id.org/linkml/types
      • +
      • from schema: https://w3id.org/linkml/transformer
      @@ -368,10 +382,10 @@

      Schema Source

      - + - + diff --git a/TransformationSpecification/index.html b/TransformationSpecification/index.html index 316df2c..7b2b5be 100644 --- a/TransformationSpecification/index.html +++ b/TransformationSpecification/index.html @@ -7,16 +7,16 @@ - + Class: TransformationSpecification - LinkML-Transformer - - + - + + @@ -27,7 +27,7 @@
      -
      +
    • +
    • + + +
    @@ -147,6 +157,11 @@
    • + + Inheritance + +
    • +
    • Slots @@ -196,25 +211,62 @@
      - - -

      Class: TransformationSpecification

      A collection of mappings between source and target classes

      URI: linkmltr:TransformationSpecification

      classDiagram class TransformationSpecification + SpecificationComponent <|-- TransformationSpecification + TransformationSpecification : class_derivations + + TransformationSpecification --|> ClassDerivation : class_derivations + + TransformationSpecification : comments + + TransformationSpecification : description + + TransformationSpecification --|> None : description + TransformationSpecification : enum_derivations + + TransformationSpecification --|> EnumDerivation : enum_derivations + TransformationSpecification : id + + TransformationSpecification --|> None : id + + TransformationSpecification : implements + TransformationSpecification : prefixes + + TransformationSpecification --|> KeyVal : prefixes + TransformationSpecification : slot_derivations + + TransformationSpecification --|> SlotDerivation : slot_derivations + TransformationSpecification : source_schema + + TransformationSpecification --|> None : source_schema + TransformationSpecification : target_schema + + TransformationSpecification --|> None : target_schema + TransformationSpecification : title + TransformationSpecification --|> None : title + +
      - +

      Inheritance

      +

      Slots

      @@ -228,31 +280,31 @@

      Slots

      - + - + - - + + - + - + @@ -270,10 +322,28 @@

      Slots

      - - + + + + + + + + + + + + + + + + + + + +
      id1..1
      xsd:string
      0..1
      String
      Unique identifier for this transformation specification direct
      title0..1
      xsd:string
      0..1
      String
      human readable title for this transformation specification direct
      prefixes0..1
      xsd:string
      prefix map0..*
      KeyVal
      maps prefixes to URL expansions direct
      source_schema0..1
      xsd:string
      0..1
      String
      name of the schema that describes the source (input) objects direct
      target_schema0..1
      xsd:string
      0..1
      String
      name of the schema that describes the target (output) objects direct
      slot_derivations0..1
      xsd:string
      0..*
      SlotDerivation
      Instructions on how to derive a set of top level slots in the target schema direct
      description0..1
      String
      description of the specification componentSpecificationComponent
      implements0..*
      Uriorcurie
      A reference to a specification that this component implementsSpecificationComponent
      comments0..*
      String
      A list of comments about this componentSpecificationComponent

      Identifier and Mapping Information

      @@ -307,24 +377,29 @@

      Direct

      name: TransformationSpecification
       description: A collection of mappings between source and target classes
       from_schema: https://w3id.org/linkml/transformer
      -rank: 1000
      +is_a: SpecificationComponent
       attributes:
         id:
           name: id
           description: Unique identifier for this transformation specification
           from_schema: https://w3id.org/linkml/transformer
           rank: 1000
      -    identifier: true
      +    slot_uri: schema:identifier
         title:
           name: title
           description: human readable title for this transformation specification
           from_schema: https://w3id.org/linkml/transformer
           rank: 1000
      +    slot_uri: dcterms:title
         prefixes:
           name: prefixes
      -    description: prefix map
      +    description: maps prefixes to URL expansions
           from_schema: https://w3id.org/linkml/transformer
           rank: 1000
      +    slot_uri: sh:declare
      +    multivalued: true
      +    range: KeyVal
      +    inlined: true
         source_schema:
           name: source_schema
           description: name of the schema that describes the source (input) objects
      @@ -370,14 +445,14 @@ 

      Induced

      name: TransformationSpecification
       description: A collection of mappings between source and target classes
       from_schema: https://w3id.org/linkml/transformer
      -rank: 1000
      +is_a: SpecificationComponent
       attributes:
         id:
           name: id
           description: Unique identifier for this transformation specification
           from_schema: https://w3id.org/linkml/transformer
           rank: 1000
      -    identifier: true
      +    slot_uri: schema:identifier
           alias: id
           owner: TransformationSpecification
           domain_of:
      @@ -387,19 +462,24 @@ 

      Induced

      description: human readable title for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 + slot_uri: dcterms:title alias: title owner: TransformationSpecification domain_of: - TransformationSpecification prefixes: name: prefixes - description: prefix map + description: maps prefixes to URL expansions from_schema: https://w3id.org/linkml/transformer rank: 1000 + slot_uri: sh:declare + multivalued: true alias: prefixes owner: TransformationSpecification domain_of: - TransformationSpecification + range: KeyVal + inlined: true source_schema: name: source_schema description: name of the schema that describes the source (input) objects @@ -457,6 +537,42 @@

      Induced

      - ClassDerivation range: SlotDerivation inlined: true + description: + name: description + description: description of the specification component + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + slot_uri: dcterms:description + alias: description + owner: TransformationSpecification + domain_of: + - SpecificationComponent + range: string + implements: + name: implements + description: A reference to a specification that this component implements. + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + multivalued: true + alias: implements + owner: TransformationSpecification + domain_of: + - SpecificationComponent + range: uriorcurie + comments: + name: comments + description: A list of comments about this component. Comments are free text, + and may be used to provide additional information about the component, including + instructions for its use. + from_schema: https://w3id.org/linkml/transformer + rank: 1000 + slot_uri: rdfs:comment + multivalued: true + alias: comments + owner: TransformationSpecification + domain_of: + - SpecificationComponent + range: string tree_root: true
      @@ -484,7 +600,7 @@

      Induced

      - - + + \ No newline at end of file diff --git a/UnitConversionConfiguration/index.html b/UnitConversionConfiguration/index.html new file mode 100644 index 0000000..f55054b --- /dev/null +++ b/UnitConversionConfiguration/index.html @@ -0,0 +1,505 @@ + + + + + + + + + + +Class: UnitConversionConfiguration - LinkML-Transformer + + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +
      +

      Class: UnitConversionConfiguration

      +

      URI: linkmltr:UnitConversionConfiguration

      +
      classDiagram + class UnitConversionConfiguration + UnitConversionConfiguration : source_magnitude_slot + + UnitConversionConfiguration --|> None : source_magnitude_slot + + UnitConversionConfiguration : source_unit + + UnitConversionConfiguration --|> None : source_unit + + UnitConversionConfiguration : source_unit_scheme + + UnitConversionConfiguration : source_unit_slot + + UnitConversionConfiguration --|> None : source_unit_slot + + UnitConversionConfiguration : target_magnitude_slot + + UnitConversionConfiguration --|> None : target_magnitude_slot + + UnitConversionConfiguration : target_unit + + UnitConversionConfiguration --|> None : target_unit + + UnitConversionConfiguration : target_unit_scheme + + UnitConversionConfiguration : target_unit_slot + + UnitConversionConfiguration --|> None : target_unit_slot + + +
      + +

      Slots

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameCardinality and RangeDescriptionInheritance
      target_unit0..1
      String
      direct
      target_unit_scheme0..1
      String
      direct
      source_unit0..1
      String
      direct
      source_unit_scheme0..1
      String
      direct
      source_unit_slot0..1
      String
      direct
      source_magnitude_slot0..1
      String
      direct
      target_unit_slot0..1
      String
      direct
      target_magnitude_slot0..1
      String
      direct
      +

      Usages

      + + + + + + + + + + + + + + + + + +
      used byused intypeused
      SlotDerivationunit_conversionrangeUnitConversionConfiguration
      +

      Identifier and Mapping Information

      +

      Schema Source

      +
        +
      • from schema: https://w3id.org/linkml/transformer
      • +
      +

      Mappings

      + + + + + + + + + + + + + + + + + +
      Mapping TypeMapped Value
      selflinkmltr:UnitConversionConfiguration
      nativelinkmltr:UnitConversionConfiguration
      +

      LinkML Source

      + +

      Direct

      +
      +
      name: UnitConversionConfiguration
      +from_schema: https://w3id.org/linkml/transformer
      +attributes:
      +  target_unit:
      +    name: target_unit
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +  target_unit_scheme:
      +    name: target_unit_scheme
      +    examples:
      +    - value: ucum
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +    range: string
      +  source_unit:
      +    name: source_unit
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +  source_unit_scheme:
      +    name: source_unit_scheme
      +    examples:
      +    - value: ucum
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +    range: string
      +  source_unit_slot:
      +    name: source_unit_slot
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +  source_magnitude_slot:
      +    name: source_magnitude_slot
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +  target_unit_slot:
      +    name: target_unit_slot
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +  target_magnitude_slot:
      +    name: target_magnitude_slot
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +
      +
      +
      +

      Induced

      +
      +
      name: UnitConversionConfiguration
      +from_schema: https://w3id.org/linkml/transformer
      +attributes:
      +  target_unit:
      +    name: target_unit
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +    alias: target_unit
      +    owner: UnitConversionConfiguration
      +    domain_of:
      +    - UnitConversionConfiguration
      +  target_unit_scheme:
      +    name: target_unit_scheme
      +    examples:
      +    - value: ucum
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +    alias: target_unit_scheme
      +    owner: UnitConversionConfiguration
      +    domain_of:
      +    - UnitConversionConfiguration
      +    range: string
      +  source_unit:
      +    name: source_unit
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +    alias: source_unit
      +    owner: UnitConversionConfiguration
      +    domain_of:
      +    - UnitConversionConfiguration
      +  source_unit_scheme:
      +    name: source_unit_scheme
      +    examples:
      +    - value: ucum
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +    alias: source_unit_scheme
      +    owner: UnitConversionConfiguration
      +    domain_of:
      +    - UnitConversionConfiguration
      +    range: string
      +  source_unit_slot:
      +    name: source_unit_slot
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +    alias: source_unit_slot
      +    owner: UnitConversionConfiguration
      +    domain_of:
      +    - UnitConversionConfiguration
      +  source_magnitude_slot:
      +    name: source_magnitude_slot
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +    alias: source_magnitude_slot
      +    owner: UnitConversionConfiguration
      +    domain_of:
      +    - UnitConversionConfiguration
      +  target_unit_slot:
      +    name: target_unit_slot
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +    alias: target_unit_slot
      +    owner: UnitConversionConfiguration
      +    domain_of:
      +    - UnitConversionConfiguration
      +  target_magnitude_slot:
      +    name: target_magnitude_slot
      +    from_schema: https://w3id.org/linkml/transformer
      +    rank: 1000
      +    alias: target_magnitude_slot
      +    owner: UnitConversionConfiguration
      +    domain_of:
      +    - UnitConversionConfiguration
      +
      +
      +
      +
      +
      + +
      +
      + +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/Uri/index.html b/Uri/index.html index 00e2493..700c83b 100644 --- a/Uri/index.html +++ b/Uri/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
      + + +
      - +
    • - - About - -
    • - - +
    • - + + + + + + + + +
    • + +
    @@ -311,15 +327,13 @@ - - - - + +

    Type: Uri

    a complete URI

    -

    URI: xsd:anyURI

    +

    URI: xsd:anyURI

    • base: URI

      @@ -338,7 +352,7 @@

      Comments

      Identifier and Mapping Information

      Schema Source

        -
      • from schema: https://w3id.org/linkml/types
      • +
      • from schema: https://w3id.org/linkml/transformer
      @@ -379,10 +393,10 @@

      Schema Source

      - + - + diff --git a/Uriorcurie/index.html b/Uriorcurie/index.html index 1c34ad1..4a80195 100644 --- a/Uriorcurie/index.html +++ b/Uriorcurie/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
      + + +
    @@ -304,15 +320,13 @@ - - - - + +

    Type: Uriorcurie

    a URI or a CURIE

    -

    URI: xsd:anyURI

    +

    URI: xsd:anyURI

    • base: URIorCURIE

      @@ -327,7 +341,7 @@

      Type: Uriorcurie

      Identifier and Mapping Information

      Schema Source

        -
      • from schema: https://w3id.org/linkml/types
      • +
      • from schema: https://w3id.org/linkml/transformer
      @@ -368,10 +382,10 @@

      Schema Source

      - + - + diff --git a/types/index.html b/about/index.html similarity index 80% rename from types/index.html rename to about/index.html index edaf7fa..a358b4f 100644 --- a/types/index.html +++ b/about/index.html @@ -8,22 +8,20 @@ - + + + - + - types - LinkML-Transformer + LinkML-Transformer - LinkML-Transformer - - - - - + @@ -49,22 +47,19 @@ - - - - - - + + +
      - +
    • - - About - -
    • - - +
    • - + + + + + + + + +
    • + +
    @@ -276,15 +292,11 @@ - - - - + + -

    types

    -

    Shared type definitions for the core LinkML mode and metamodel

    -

    URI: https://w3id.org/linkml/types

    +

    LinkML-Transformer

    @@ -324,10 +336,10 @@

    types

    - + - + diff --git a/add/index.html b/add/index.html index cab7901..f2e2dfb 100644 --- a/add/index.html +++ b/add/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    @@ -325,10 +341,8 @@ - - - - + +

    Slot: add

    @@ -341,12 +355,14 @@

    Applicable Classes

    Name Description +Modifies Slot CopyDirective - +Instructs a Schema Mapper in how to map to a target schema +no @@ -413,10 +429,10 @@

    LinkML Source

    - + - + diff --git a/alias/index.html b/alias/index.html index 49b012b..4c7623e 100644 --- a/alias/index.html +++ b/alias/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    @@ -325,10 +341,8 @@ - - - - + +

    Slot: alias

    @@ -342,18 +356,25 @@

    Applicable Classes

    Name Description +Modifies Slot AliasedClass alias-class key value pairs for classes +no

    Properties

      -
    • Range: xsd:string
    • +
    • +

      Range: NONE

      +
    • +
    • +

      Required: True

      +

    Identifier and Mapping Information

    Schema Source

    @@ -372,7 +393,7 @@

    LinkML Source

    owner: AliasedClass domain_of: - AliasedClass -range: string +required: true
    @@ -416,10 +437,10 @@

    LinkML Source

    - + - + diff --git a/assets/javascripts/bundle.078830c0.min.js b/assets/javascripts/bundle.078830c0.min.js deleted file mode 100644 index af96b24..0000000 --- a/assets/javascripts/bundle.078830c0.min.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict";(()=>{var aa=Object.create;var wr=Object.defineProperty;var sa=Object.getOwnPropertyDescriptor;var ca=Object.getOwnPropertyNames,kt=Object.getOwnPropertySymbols,fa=Object.getPrototypeOf,Er=Object.prototype.hasOwnProperty,fn=Object.prototype.propertyIsEnumerable;var cn=(e,t,r)=>t in e?wr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,H=(e,t)=>{for(var r in t||(t={}))Er.call(t,r)&&cn(e,r,t[r]);if(kt)for(var r of kt(t))fn.call(t,r)&&cn(e,r,t[r]);return e};var un=(e,t)=>{var r={};for(var n in e)Er.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&kt)for(var n of kt(e))t.indexOf(n)<0&&fn.call(e,n)&&(r[n]=e[n]);return r};var yt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ua=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ca(t))!Er.call(e,o)&&o!==r&&wr(e,o,{get:()=>t[o],enumerable:!(n=sa(t,o))||n.enumerable});return e};var Ye=(e,t,r)=>(r=e!=null?aa(fa(e)):{},ua(t||!e||!e.__esModule?wr(r,"default",{value:e,enumerable:!0}):r,e));var ln=yt((Sr,pn)=>{(function(e,t){typeof Sr=="object"&&typeof pn!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(Sr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(_){return!!(_&&_!==document&&_.nodeName!=="HTML"&&_.nodeName!=="BODY"&&"classList"in _&&"contains"in _.classList)}function c(_){var We=_.type,Fe=_.tagName;return!!(Fe==="INPUT"&&s[We]&&!_.readOnly||Fe==="TEXTAREA"&&!_.readOnly||_.isContentEditable)}function f(_){_.classList.contains("focus-visible")||(_.classList.add("focus-visible"),_.setAttribute("data-focus-visible-added",""))}function u(_){!_.hasAttribute("data-focus-visible-added")||(_.classList.remove("focus-visible"),_.removeAttribute("data-focus-visible-added"))}function p(_){_.metaKey||_.altKey||_.ctrlKey||(a(r.activeElement)&&f(r.activeElement),n=!0)}function l(_){n=!1}function d(_){!a(_.target)||(n||c(_.target))&&f(_.target)}function h(_){!a(_.target)||(_.target.classList.contains("focus-visible")||_.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(_.target))}function b(_){document.visibilityState==="hidden"&&(o&&(n=!0),U())}function U(){document.addEventListener("mousemove",W),document.addEventListener("mousedown",W),document.addEventListener("mouseup",W),document.addEventListener("pointermove",W),document.addEventListener("pointerdown",W),document.addEventListener("pointerup",W),document.addEventListener("touchmove",W),document.addEventListener("touchstart",W),document.addEventListener("touchend",W)}function G(){document.removeEventListener("mousemove",W),document.removeEventListener("mousedown",W),document.removeEventListener("mouseup",W),document.removeEventListener("pointermove",W),document.removeEventListener("pointerdown",W),document.removeEventListener("pointerup",W),document.removeEventListener("touchmove",W),document.removeEventListener("touchstart",W),document.removeEventListener("touchend",W)}function W(_){_.target.nodeName&&_.target.nodeName.toLowerCase()==="html"||(n=!1,G())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",l,!0),document.addEventListener("pointerdown",l,!0),document.addEventListener("touchstart",l,!0),document.addEventListener("visibilitychange",b,!0),U(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var mn=yt(Or=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(f){return!1}},r=t(),n=function(f){var u={next:function(){var p=f.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(f){return encodeURIComponent(f).replace(/%20/g,"+")},i=function(f){return decodeURIComponent(String(f).replace(/\+/g," "))},s=function(){var f=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var l=typeof p;if(l!=="undefined")if(l==="string")p!==""&&this._fromString(p);else if(p instanceof f){var d=this;p.forEach(function(G,W){d.append(W,G)})}else if(p!==null&&l==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),f._entries&&(f._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Or);(function(e){var t=function(){try{var o=new e.URL("b","http://a/");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(c,f){typeof c!="string"&&(c=String(c)),f&&typeof f!="string"&&(f=String(f));var u=document,p;if(f&&(e.location===void 0||f!==e.location.href)){f=f.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=f,u.head.appendChild(p);try{if(p.href.indexOf(f)!==0)throw new Error(p.href)}catch(_){throw new Error("URL unable to set base "+f+" due to "+_)}}var l=u.createElement("a");l.href=c,p&&(u.body.appendChild(l),l.href=l.href);var d=u.createElement("input");if(d.type="url",d.value=c,l.protocol===":"||!/:/.test(l.href)||!d.checkValidity()&&!f)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:l});var h=new e.URLSearchParams(this.search),b=!0,U=!0,G=this;["append","delete","set"].forEach(function(_){var We=h[_];h[_]=function(){We.apply(h,arguments),b&&(U=!1,G.search=h.toString(),U=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var W=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==W&&(W=this.search,U&&(b=!1,this.searchParams._fromString(this.search),b=!0))}})},s=i.prototype,a=function(c){Object.defineProperty(s,c,{get:function(){return this._anchorElement[c]},set:function(f){this._anchorElement[c]=f},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(c){a(c)}),Object.defineProperty(s,"search",{get:function(){return this._anchorElement.search},set:function(c){this._anchorElement.search=c,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(s,{toString:{get:function(){var c=this;return function(){return c.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(c){this._anchorElement.href=c,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(c){this._anchorElement.pathname=c},enumerable:!0},origin:{get:function(){var c={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],f=this._anchorElement.port!=c&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(f?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(c){},enumerable:!0},username:{get:function(){return""},set:function(c){},enumerable:!0}}),i.createObjectURL=function(c){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(c){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Or)});var Pn=yt((Ks,$t)=>{/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */var dn,hn,bn,vn,gn,yn,xn,wn,En,Ht,_r,Sn,On,_n,rt,Tn,Mn,Ln,An,Cn,Rn,kn,Hn,Pt;(function(e){var t=typeof global=="object"?global:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(n){e(r(t,r(n)))}):typeof $t=="object"&&typeof $t.exports=="object"?e(r(t,r($t.exports))):e(r(t));function r(n,o){return n!==t&&(typeof Object.create=="function"?Object.defineProperty(n,"__esModule",{value:!0}):n.__esModule=!0),function(i,s){return n[i]=o?o(i,s):s}}})(function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,o){n.__proto__=o}||function(n,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(n[i]=o[i])};dn=function(n,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");t(n,o);function i(){this.constructor=n}n.prototype=o===null?Object.create(o):(i.prototype=o.prototype,new i)},hn=Object.assign||function(n){for(var o,i=1,s=arguments.length;i=0;u--)(f=n[u])&&(c=(a<3?f(c):a>3?f(o,i,c):f(o,i))||c);return a>3&&c&&Object.defineProperty(o,i,c),c},gn=function(n,o){return function(i,s){o(i,s,n)}},yn=function(n,o){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,o)},xn=function(n,o,i,s){function a(c){return c instanceof i?c:new i(function(f){f(c)})}return new(i||(i=Promise))(function(c,f){function u(d){try{l(s.next(d))}catch(h){f(h)}}function p(d){try{l(s.throw(d))}catch(h){f(h)}}function l(d){d.done?c(d.value):a(d.value).then(u,p)}l((s=s.apply(n,o||[])).next())})},wn=function(n,o){var i={label:0,sent:function(){if(c[0]&1)throw c[1];return c[1]},trys:[],ops:[]},s,a,c,f;return f={next:u(0),throw:u(1),return:u(2)},typeof Symbol=="function"&&(f[Symbol.iterator]=function(){return this}),f;function u(l){return function(d){return p([l,d])}}function p(l){if(s)throw new TypeError("Generator is already executing.");for(;i;)try{if(s=1,a&&(c=l[0]&2?a.return:l[0]?a.throw||((c=a.return)&&c.call(a),0):a.next)&&!(c=c.call(a,l[1])).done)return c;switch(a=0,c&&(l=[l[0]&2,c.value]),l[0]){case 0:case 1:c=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,a=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(c=i.trys,!(c=c.length>0&&c[c.length-1])&&(l[0]===6||l[0]===2)){i=0;continue}if(l[0]===3&&(!c||l[1]>c[0]&&l[1]=n.length&&(n=void 0),{value:n&&n[s++],done:!n}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")},_r=function(n,o){var i=typeof Symbol=="function"&&n[Symbol.iterator];if(!i)return n;var s=i.call(n),a,c=[],f;try{for(;(o===void 0||o-- >0)&&!(a=s.next()).done;)c.push(a.value)}catch(u){f={error:u}}finally{try{a&&!a.done&&(i=s.return)&&i.call(s)}finally{if(f)throw f.error}}return c},Sn=function(){for(var n=[],o=0;o1||u(b,U)})})}function u(b,U){try{p(s[b](U))}catch(G){h(c[0][3],G)}}function p(b){b.value instanceof rt?Promise.resolve(b.value.v).then(l,d):h(c[0][2],b)}function l(b){u("next",b)}function d(b){u("throw",b)}function h(b,U){b(U),c.shift(),c.length&&u(c[0][0],c[0][1])}},Mn=function(n){var o,i;return o={},s("next"),s("throw",function(a){throw a}),s("return"),o[Symbol.iterator]=function(){return this},o;function s(a,c){o[a]=n[a]?function(f){return(i=!i)?{value:rt(n[a](f)),done:a==="return"}:c?c(f):f}:c}},Ln=function(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n[Symbol.asyncIterator],i;return o?o.call(n):(n=typeof Ht=="function"?Ht(n):n[Symbol.iterator](),i={},s("next"),s("throw"),s("return"),i[Symbol.asyncIterator]=function(){return this},i);function s(c){i[c]=n[c]&&function(f){return new Promise(function(u,p){f=n[c](f),a(u,p,f.done,f.value)})}}function a(c,f,u,p){Promise.resolve(p).then(function(l){c({value:l,done:u})},f)}},An=function(n,o){return Object.defineProperty?Object.defineProperty(n,"raw",{value:o}):n.raw=o,n};var r=Object.create?function(n,o){Object.defineProperty(n,"default",{enumerable:!0,value:o})}:function(n,o){n.default=o};Cn=function(n){if(n&&n.__esModule)return n;var o={};if(n!=null)for(var i in n)i!=="default"&&Object.prototype.hasOwnProperty.call(n,i)&&Pt(o,n,i);return r(o,n),o},Rn=function(n){return n&&n.__esModule?n:{default:n}},kn=function(n,o,i,s){if(i==="a"&&!s)throw new TypeError("Private accessor was defined without a getter");if(typeof o=="function"?n!==o||!s:!o.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return i==="m"?s:i==="a"?s.call(n):s?s.value:o.get(n)},Hn=function(n,o,i,s,a){if(s==="m")throw new TypeError("Private method is not writable");if(s==="a"&&!a)throw new TypeError("Private accessor was defined without a setter");if(typeof o=="function"?n!==o||!a:!o.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return s==="a"?a.call(n,i):a?a.value=i:o.set(n,i),i},e("__extends",dn),e("__assign",hn),e("__rest",bn),e("__decorate",vn),e("__param",gn),e("__metadata",yn),e("__awaiter",xn),e("__generator",wn),e("__exportStar",En),e("__createBinding",Pt),e("__values",Ht),e("__read",_r),e("__spread",Sn),e("__spreadArrays",On),e("__spreadArray",_n),e("__await",rt),e("__asyncGenerator",Tn),e("__asyncDelegator",Mn),e("__asyncValues",Ln),e("__makeTemplateObject",An),e("__importStar",Cn),e("__importDefault",Rn),e("__classPrivateFieldGet",kn),e("__classPrivateFieldSet",Hn)})});var Br=yt((At,Yr)=>{/*! - * clipboard.js v2.0.11 - * https://clipboardjs.com/ - * - * Licensed MIT © Zeno Rocha - */(function(t,r){typeof At=="object"&&typeof Yr=="object"?Yr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof At=="object"?At.ClipboardJS=r():t.ClipboardJS=r()})(At,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return ia}});var s=i(279),a=i.n(s),c=i(370),f=i.n(c),u=i(817),p=i.n(u);function l(j){try{return document.execCommand(j)}catch(T){return!1}}var d=function(T){var O=p()(T);return l("cut"),O},h=d;function b(j){var T=document.documentElement.getAttribute("dir")==="rtl",O=document.createElement("textarea");O.style.fontSize="12pt",O.style.border="0",O.style.padding="0",O.style.margin="0",O.style.position="absolute",O.style[T?"right":"left"]="-9999px";var k=window.pageYOffset||document.documentElement.scrollTop;return O.style.top="".concat(k,"px"),O.setAttribute("readonly",""),O.value=j,O}var U=function(T,O){var k=b(T);O.container.appendChild(k);var $=p()(k);return l("copy"),k.remove(),$},G=function(T){var O=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},k="";return typeof T=="string"?k=U(T,O):T instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(T==null?void 0:T.type)?k=U(T.value,O):(k=p()(T),l("copy")),k},W=G;function _(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?_=function(O){return typeof O}:_=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},_(j)}var We=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},O=T.action,k=O===void 0?"copy":O,$=T.container,q=T.target,Te=T.text;if(k!=="copy"&&k!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&_(q)==="object"&&q.nodeType===1){if(k==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(k==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Te)return W(Te,{container:$});if(q)return k==="cut"?h(q):W(q,{container:$})},Fe=We;function Pe(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Pe=function(O){return typeof O}:Pe=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},Pe(j)}function Ji(j,T){if(!(j instanceof T))throw new TypeError("Cannot call a class as a function")}function sn(j,T){for(var O=0;O0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof $.action=="function"?$.action:this.defaultAction,this.target=typeof $.target=="function"?$.target:this.defaultTarget,this.text=typeof $.text=="function"?$.text:this.defaultText,this.container=Pe($.container)==="object"?$.container:document.body}},{key:"listenClick",value:function($){var q=this;this.listener=f()($,"click",function(Te){return q.onClick(Te)})}},{key:"onClick",value:function($){var q=$.delegateTarget||$.currentTarget,Te=this.action(q)||"copy",Rt=Fe({action:Te,container:this.container,target:this.target(q),text:this.text(q)});this.emit(Rt?"success":"error",{action:Te,text:Rt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function($){return xr("action",$)}},{key:"defaultTarget",value:function($){var q=xr("target",$);if(q)return document.querySelector(q)}},{key:"defaultText",value:function($){return xr("text",$)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function($){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return W($,q)}},{key:"cut",value:function($){return h($)}},{key:"isSupported",value:function(){var $=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof $=="string"?[$]:$,Te=!!document.queryCommandSupported;return q.forEach(function(Rt){Te=Te&&!!document.queryCommandSupported(Rt)}),Te}}]),O}(a()),ia=oa},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,c){for(;a&&a.nodeType!==o;){if(typeof a.matches=="function"&&a.matches(c))return a;a=a.parentNode}}n.exports=s},438:function(n,o,i){var s=i(828);function a(u,p,l,d,h){var b=f.apply(this,arguments);return u.addEventListener(l,b,h),{destroy:function(){u.removeEventListener(l,b,h)}}}function c(u,p,l,d,h){return typeof u.addEventListener=="function"?a.apply(null,arguments):typeof l=="function"?a.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(b){return a(b,p,l,d,h)}))}function f(u,p,l,d){return function(h){h.delegateTarget=s(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=c},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(n,o,i){var s=i(879),a=i(438);function c(l,d,h){if(!l&&!d&&!h)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(h))throw new TypeError("Third argument must be a Function");if(s.node(l))return f(l,d,h);if(s.nodeList(l))return u(l,d,h);if(s.string(l))return p(l,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function f(l,d,h){return l.addEventListener(d,h),{destroy:function(){l.removeEventListener(d,h)}}}function u(l,d,h){return Array.prototype.forEach.call(l,function(b){b.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(l,function(b){b.removeEventListener(d,h)})}}}function p(l,d,h){return a(document.body,l,d,h)}n.exports=c},817:function(n){function o(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var c=window.getSelection(),f=document.createRange();f.selectNodeContents(i),c.removeAllRanges(),c.addRange(f),s=c.toString()}return s}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,s,a){var c=this.e||(this.e={});return(c[i]||(c[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var c=this;function f(){c.off(i,f),s.apply(a,arguments)}return f._=s,this.on(i,f,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),c=0,f=a.length;for(c;c{"use strict";/*! - * escape-html - * Copyright(c) 2012-2013 TJ Holowaychuk - * Copyright(c) 2015 Andreas Lubbe - * Copyright(c) 2015 Tiancheng "Timothy" Gu - * MIT Licensed - */var Ms=/["'&<>]/;Si.exports=Ls;function Ls(e){var t=""+e,r=Ms.exec(t);if(!r)return t;var n,o="",i=0,s=0;for(i=r.index;i0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,s=o.isStopped,a=o.observers;return i||s?Tr:(this.currentObservers=null,a.push(r),new $e(function(){n.currentObservers=null,Ue(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,n){return new Qn(r,n)},t}(F);var Qn=function(e){ne(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Tr},t}(E);var wt={now:function(){return(wt.delegate||Date).now()},delegate:void 0};var Et=function(e){ne(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=wt);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,a=n._timestampProvider,c=n._windowTime;o||(i.push(r),!s&&i.push(a.now()+c)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,s=o._buffer,a=s.slice(),c=0;c0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=at.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var s=r.actions;n!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==n&&(at.cancelAnimationFrame(n),r._scheduled=void 0)},t}(zt);var Gn=function(e){ne(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Nt);var xe=new Gn(Bn);var R=new F(function(e){return e.complete()});function qt(e){return e&&L(e.schedule)}function Hr(e){return e[e.length-1]}function Ve(e){return L(Hr(e))?e.pop():void 0}function Ee(e){return qt(Hr(e))?e.pop():void 0}function Kt(e,t){return typeof Hr(e)=="number"?e.pop():t}var st=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Qt(e){return L(e==null?void 0:e.then)}function Yt(e){return L(e[it])}function Bt(e){return Symbol.asyncIterator&&L(e==null?void 0:e[Symbol.asyncIterator])}function Gt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function ya(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Jt=ya();function Xt(e){return L(e==null?void 0:e[Jt])}function Zt(e){return jn(this,arguments,function(){var r,n,o,i;return It(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,jt(r.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,jt(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,jt(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function er(e){return L(e==null?void 0:e.getReader)}function z(e){if(e instanceof F)return e;if(e!=null){if(Yt(e))return xa(e);if(st(e))return wa(e);if(Qt(e))return Ea(e);if(Bt(e))return Jn(e);if(Xt(e))return Sa(e);if(er(e))return Oa(e)}throw Gt(e)}function xa(e){return new F(function(t){var r=e[it]();if(L(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function wa(e){return new F(function(t){for(var r=0;r=2,!0))}function ie(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new E}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,c=a===void 0?!0:a;return function(f){var u,p,l,d=0,h=!1,b=!1,U=function(){p==null||p.unsubscribe(),p=void 0},G=function(){U(),u=l=void 0,h=b=!1},W=function(){var _=u;G(),_==null||_.unsubscribe()};return g(function(_,We){d++,!b&&!h&&U();var Fe=l=l!=null?l:r();We.add(function(){d--,d===0&&!b&&!h&&(p=Dr(W,c))}),Fe.subscribe(We),!u&&d>0&&(u=new Ge({next:function(Pe){return Fe.next(Pe)},error:function(Pe){b=!0,U(),p=Dr(G,o,Pe),Fe.error(Pe)},complete:function(){h=!0,U(),p=Dr(G,s),Fe.complete()}}),z(_).subscribe(u))})(f)}}function Dr(e,t){for(var r=[],n=2;ne.next(document)),e}function Q(e,t=document){return Array.from(t.querySelectorAll(e))}function K(e,t=document){let r=pe(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function pe(e,t=document){return t.querySelector(e)||void 0}function Ie(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function nr(e){return A(v(document.body,"focusin"),v(document.body,"focusout")).pipe(Re(1),m(()=>{let t=Ie();return typeof t!="undefined"?e.contains(t):!1}),N(e===Ie()),B())}function qe(e){return{x:e.offsetLeft,y:e.offsetTop}}function yo(e){return A(v(window,"load"),v(window,"resize")).pipe(Ae(0,xe),m(()=>qe(e)),N(qe(e)))}function or(e){return{x:e.scrollLeft,y:e.scrollTop}}function pt(e){return A(v(e,"scroll"),v(window,"resize")).pipe(Ae(0,xe),m(()=>or(e)),N(or(e)))}var wo=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!qr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),Ka?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!qr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=qa.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Eo=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Oo=typeof WeakMap!="undefined"?new WeakMap:new wo,_o=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=Qa.getInstance(),n=new ns(t,r,this);Oo.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){_o.prototype[e]=function(){var t;return(t=Oo.get(this))[e].apply(t,arguments)}});var os=function(){return typeof ir.ResizeObserver!="undefined"?ir.ResizeObserver:_o}(),To=os;var Mo=new E,is=P(()=>I(new To(e=>{for(let t of e)Mo.next(t)}))).pipe(S(e=>A(Se,I(e)).pipe(C(()=>e.disconnect()))),X(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ve(e){return is.pipe(w(t=>t.observe(e)),S(t=>Mo.pipe(x(({target:r})=>r===e),C(()=>t.unobserve(e)),m(()=>he(e)))),N(he(e)))}function mt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function cr(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var Lo=new E,as=P(()=>I(new IntersectionObserver(e=>{for(let t of e)Lo.next(t)},{threshold:0}))).pipe(S(e=>A(Se,I(e)).pipe(C(()=>e.disconnect()))),X(1));function fr(e){return as.pipe(w(t=>t.observe(e)),S(t=>Lo.pipe(x(({target:r})=>r===e),C(()=>t.unobserve(e)),m(({isIntersecting:r})=>r))))}function Ao(e,t=16){return pt(e).pipe(m(({y:r})=>{let n=he(e),o=mt(e);return r>=o.height-n.height-t}),B())}var ur={drawer:K("[data-md-toggle=drawer]"),search:K("[data-md-toggle=search]")};function Co(e){return ur[e].checked}function Ke(e,t){ur[e].checked!==t&&ur[e].click()}function dt(e){let t=ur[e];return v(t,"change").pipe(m(()=>t.checked),N(t.checked))}function ss(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ro(){return v(window,"keydown").pipe(x(e=>!(e.metaKey||e.ctrlKey)),m(e=>({mode:Co("search")?"search":"global",type:e.key,claim(){e.preventDefault(),e.stopPropagation()}})),x(({mode:e,type:t})=>{if(e==="global"){let r=Ie();if(typeof r!="undefined")return!ss(r,t)}return!0}),ie())}function Oe(){return new URL(location.href)}function pr(e){location.href=e.href}function ko(){return new E}function Ho(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)Ho(e,r)}function M(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)Ho(n,o);return n}function Po(e,t){let r=t;if(e.length>r){for(;e[r]!==" "&&--r>0;);return`${e.substring(0,r)}...`}return e}function lr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function $o(){return location.hash.substring(1)}function Io(e){let t=M("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function cs(){return v(window,"hashchange").pipe(m($o),N($o()),x(e=>e.length>0),X(1))}function jo(){return cs().pipe(m(e=>pe(`[id="${e}"]`)),x(e=>typeof e!="undefined"))}function Kr(e){let t=matchMedia(e);return rr(r=>t.addListener(()=>r(t.matches))).pipe(N(t.matches))}function Fo(){let e=matchMedia("print");return A(v(window,"beforeprint").pipe(m(()=>!0)),v(window,"afterprint").pipe(m(()=>!1))).pipe(N(e.matches))}function Qr(e,t){return e.pipe(S(r=>r?t():R))}function mr(e,t={credentials:"same-origin"}){return ue(fetch(`${e}`,t)).pipe(ce(()=>R),S(r=>r.status!==200?Ot(()=>new Error(r.statusText)):I(r)))}function je(e,t){return mr(e,t).pipe(S(r=>r.json()),X(1))}function Uo(e,t){let r=new DOMParser;return mr(e,t).pipe(S(n=>n.text()),m(n=>r.parseFromString(n,"text/xml")),X(1))}function Do(e){let t=M("script",{src:e});return P(()=>(document.head.appendChild(t),A(v(t,"load"),v(t,"error").pipe(S(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(m(()=>{}),C(()=>document.head.removeChild(t)),oe(1))))}function Wo(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function Vo(){return A(v(window,"scroll",{passive:!0}),v(window,"resize",{passive:!0})).pipe(m(Wo),N(Wo()))}function zo(){return{width:innerWidth,height:innerHeight}}function No(){return v(window,"resize",{passive:!0}).pipe(m(zo),N(zo()))}function qo(){return Y([Vo(),No()]).pipe(m(([e,t])=>({offset:e,size:t})),X(1))}function dr(e,{viewport$:t,header$:r}){let n=t.pipe(J("size")),o=Y([n,r]).pipe(m(()=>qe(e)));return Y([r,t,o]).pipe(m(([{height:i},{offset:s,size:a},{x:c,y:f}])=>({offset:{x:s.x-c,y:s.y-f+i},size:a})))}function Ko(e,{tx$:t}){let r=v(e,"message").pipe(m(({data:n})=>n));return t.pipe(Lt(()=>r,{leading:!0,trailing:!0}),w(n=>e.postMessage(n)),S(()=>r),ie())}var fs=K("#__config"),ht=JSON.parse(fs.textContent);ht.base=`${new URL(ht.base,Oe())}`;function le(){return ht}function Z(e){return ht.features.includes(e)}function re(e,t){return typeof t!="undefined"?ht.translations[e].replace("#",t.toString()):ht.translations[e]}function _e(e,t=document){return K(`[data-md-component=${e}]`,t)}function te(e,t=document){return Q(`[data-md-component=${e}]`,t)}function us(e){let t=K(".md-typeset > :first-child",e);return v(t,"click",{once:!0}).pipe(m(()=>K(".md-typeset",e)),m(r=>({hash:__md_hash(r.innerHTML)})))}function Qo(e){return!Z("announce.dismiss")||!e.childElementCount?R:P(()=>{let t=new E;return t.pipe(N({hash:__md_get("__announce")})).subscribe(({hash:r})=>{var n;r&&r===((n=__md_get("__announce"))!=null?n:r)&&(e.hidden=!0,__md_set("__announce",r))}),us(e).pipe(w(r=>t.next(r)),C(()=>t.complete()),m(r=>H({ref:e},r)))})}function ps(e,{target$:t}){return t.pipe(m(r=>({hidden:r!==e})))}function Yo(e,t){let r=new E;return r.subscribe(({hidden:n})=>{e.hidden=n}),ps(e,t).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))}var ii=Ye(Br());function Gr(e){return M("div",{class:"md-tooltip",id:e},M("div",{class:"md-tooltip__inner md-typeset"}))}function Bo(e,t){if(t=t?`${t}_annotation_${e}`:void 0,t){let r=t?`#${t}`:void 0;return M("aside",{class:"md-annotation",tabIndex:0},Gr(t),M("a",{href:r,class:"md-annotation__index",tabIndex:-1},M("span",{"data-md-annotation-id":e})))}else return M("aside",{class:"md-annotation",tabIndex:0},Gr(t),M("span",{class:"md-annotation__index",tabIndex:-1},M("span",{"data-md-annotation-id":e})))}function Go(e){return M("button",{class:"md-clipboard md-icon",title:re("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}function Jr(e,t){let r=t&2,n=t&1,o=Object.keys(e.terms).filter(a=>!e.terms[a]).reduce((a,c)=>[...a,M("del",null,c)," "],[]).slice(0,-1),i=new URL(e.location);Z("search.highlight")&&i.searchParams.set("h",Object.entries(e.terms).filter(([,a])=>a).reduce((a,[c])=>`${a} ${c}`.trim(),""));let{tags:s}=le();return M("a",{href:`${i}`,class:"md-search-result__link",tabIndex:-1},M("article",{class:["md-search-result__article",...r?["md-search-result__article--document"]:[]].join(" "),"data-md-score":e.score.toFixed(2)},r>0&&M("div",{class:"md-search-result__icon md-icon"}),M("h1",{class:"md-search-result__title"},e.title),n>0&&e.text.length>0&&M("p",{class:"md-search-result__teaser"},Po(e.text,320)),e.tags&&M("div",{class:"md-typeset"},e.tags.map(a=>{let c=a.replace(/<[^>]+>/g,""),f=s?c in s?`md-tag-icon md-tag-icon--${s[c]}`:"md-tag-icon":"";return M("span",{class:`md-tag ${f}`},a)})),n>0&&o.length>0&&M("p",{class:"md-search-result__terms"},re("search.result.term.missing"),": ",...o)))}function Jo(e){let t=e[0].score,r=[...e],n=r.findIndex(f=>!f.location.includes("#")),[o]=r.splice(n,1),i=r.findIndex(f=>f.scoreJr(f,1)),...a.length?[M("details",{class:"md-search-result__more"},M("summary",{tabIndex:-1},a.length>0&&a.length===1?re("search.result.more.one"):re("search.result.more.other",a.length)),...a.map(f=>Jr(f,1)))]:[]];return M("li",{class:"md-search-result__item"},c)}function Xo(e){return M("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>M("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?lr(r):r)))}function Xr(e){let t=`tabbed-control tabbed-control--${e}`;return M("div",{class:t,hidden:!0},M("button",{class:"tabbed-button",tabIndex:-1}))}function Zo(e){return M("div",{class:"md-typeset__scrollwrap"},M("div",{class:"md-typeset__table"},e))}function ls(e){let t=le(),r=new URL(`../${e.version}/`,t.base);return M("li",{class:"md-version__item"},M("a",{href:`${r}`,class:"md-version__link"},e.title))}function ei(e,t){return M("div",{class:"md-version"},M("button",{class:"md-version__current","aria-label":re("select.version.title")},t.title),M("ul",{class:"md-version__list"},e.map(ls)))}function ms(e,t){let r=P(()=>Y([yo(e),pt(t)])).pipe(m(([{x:n,y:o},i])=>{let{width:s,height:a}=he(e);return{x:n-i.x+s/2,y:o-i.y+a/2}}));return nr(e).pipe(S(n=>r.pipe(m(o=>({active:n,offset:o})),oe(+!n||1/0))))}function ti(e,t,{target$:r}){let[n,o]=Array.from(e.children);return P(()=>{let i=new E,s=i.pipe(de(1));return i.subscribe({next({offset:a}){e.style.setProperty("--md-tooltip-x",`${a.x}px`),e.style.setProperty("--md-tooltip-y",`${a.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}}),fr(e).pipe(ee(s)).subscribe(a=>{e.toggleAttribute("data-md-visible",a)}),A(i.pipe(x(({active:a})=>a)),i.pipe(Re(250),x(({active:a})=>!a))).subscribe({next({active:a}){a?e.prepend(n):n.remove()},complete(){e.prepend(n)}}),i.pipe(Ae(16,xe)).subscribe(({active:a})=>{n.classList.toggle("md-tooltip--active",a)}),i.pipe(zr(125,xe),x(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:a})=>a)).subscribe({next(a){a?e.style.setProperty("--md-tooltip-0",`${-a}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}}),v(o,"click").pipe(ee(s),x(a=>!(a.metaKey||a.ctrlKey))).subscribe(a=>a.preventDefault()),v(o,"mousedown").pipe(ee(s),ae(i)).subscribe(([a,{active:c}])=>{var f;if(a.button!==0||a.metaKey||a.ctrlKey)a.preventDefault();else if(c){a.preventDefault();let u=e.parentElement.closest(".md-annotation");u instanceof HTMLElement?u.focus():(f=Ie())==null||f.blur()}}),r.pipe(ee(s),x(a=>a===n),ke(125)).subscribe(()=>e.focus()),ms(e,t).pipe(w(a=>i.next(a)),C(()=>i.complete()),m(a=>H({ref:e},a)))})}function ds(e){let t=[];for(let r of Q(".c, .c1, .cm",e)){let n=[],o=document.createNodeIterator(r,NodeFilter.SHOW_TEXT);for(let i=o.nextNode();i;i=o.nextNode())n.push(i);for(let i of n){let s;for(;s=/(\(\d+\))(!)?/.exec(i.textContent);){let[,a,c]=s;if(typeof c=="undefined"){let f=i.splitText(s.index);i=f.splitText(a.length),t.push(f)}else{i.textContent=a,t.push(i);break}}}}return t}function ri(e,t){t.append(...Array.from(e.childNodes))}function ni(e,t,{target$:r,print$:n}){let o=t.closest("[id]"),i=o==null?void 0:o.id,s=new Map;for(let a of ds(t)){let[,c]=a.textContent.match(/\((\d+)\)/);pe(`li:nth-child(${c})`,e)&&(s.set(c,Bo(c,i)),a.replaceWith(s.get(c)))}return s.size===0?R:P(()=>{let a=new E,c=[];for(let[f,u]of s)c.push([K(".md-typeset",u),K(`li:nth-child(${f})`,e)]);return n.pipe(ee(a.pipe(de(1)))).subscribe(f=>{e.hidden=!f;for(let[u,p]of c)f?ri(u,p):ri(p,u)}),A(...[...s].map(([,f])=>ti(f,t,{target$:r}))).pipe(C(()=>a.complete()),ie())})}var hs=0;function ai(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return ai(t)}}function oi(e){return ve(e).pipe(m(({width:t})=>({scrollable:mt(e).width>t})),J("scrollable"))}function si(e,t){let{matches:r}=matchMedia("(hover)"),n=P(()=>{let o=new E;if(o.subscribe(({scrollable:s})=>{s&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}),ii.default.isSupported()){let s=e.closest("pre");s.id=`__code_${++hs}`,s.insertBefore(Go(s.id),e)}let i=e.closest(".highlight");if(i instanceof HTMLElement){let s=ai(i);if(typeof s!="undefined"&&(i.classList.contains("annotate")||Z("content.code.annotate"))){let a=ni(s,e,t);return oi(e).pipe(w(c=>o.next(c)),C(()=>o.complete()),m(c=>H({ref:e},c)),et(ve(i).pipe(m(({width:c,height:f})=>c&&f),B(),S(c=>c?a:R))))}}return oi(e).pipe(w(s=>o.next(s)),C(()=>o.complete()),m(s=>H({ref:e},s)))});return Z("content.lazy")?fr(e).pipe(x(o=>o),oe(1),S(()=>n)):n}var ci=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:transparent}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel rect,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel rect{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color)}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}defs #flowchart-circleEnd,defs #flowchart-circleStart,defs #flowchart-crossEnd,defs #flowchart-crossStart,defs #flowchart-pointEnd,defs #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}.actor,defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{stroke:var(--md-mermaid-node-fg-color)}text.actor>tspan{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-default-fg-color--lighter)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-edge-color)}.loopText>tspan,.messageText,.noteText>tspan{font-family:var(--md-mermaid-font-family)!important}#arrowhead path,.loopText>tspan,.messageText,.noteText>tspan{fill:var(--md-mermaid-edge-color);stroke:none}.loopLine{stroke:var(--md-mermaid-node-fg-color)}.labelBox,.loopLine{fill:var(--md-mermaid-node-bg-color)}.labelBox{stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-node-fg-color);font-family:var(--md-mermaid-font-family)}";var Zr,vs=0;function gs(){return typeof mermaid=="undefined"||mermaid instanceof Element?Do("https://unpkg.com/mermaid@9.1.7/dist/mermaid.min.js"):I(void 0)}function fi(e){return e.classList.remove("mermaid"),Zr||(Zr=gs().pipe(w(()=>mermaid.initialize({startOnLoad:!1,themeCSS:ci,sequence:{actorFontSize:"16px",messageFontSize:"16px",noteFontSize:"16px"}})),m(()=>{}),X(1))),Zr.subscribe(()=>{e.classList.add("mermaid");let t=`__mermaid_${vs++}`,r=M("div",{class:"mermaid"});mermaid.mermaidAPI.render(t,e.textContent,n=>{let o=r.attachShadow({mode:"closed"});o.innerHTML=n,e.replaceWith(r)})}),Zr.pipe(m(()=>({ref:e})))}function ys(e,{target$:t,print$:r}){let n=!0;return A(t.pipe(m(o=>o.closest("details:not([open])")),x(o=>e===o),m(()=>({action:"open",reveal:!0}))),r.pipe(x(o=>o||!n),w(()=>n=e.open),m(o=>({action:o?"open":"close"}))))}function ui(e,t){return P(()=>{let r=new E;return r.subscribe(({action:n,reveal:o})=>{e.toggleAttribute("open",n==="open"),o&&e.scrollIntoView()}),ys(e,t).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))})}var pi=M("table");function li(e){return e.replaceWith(pi),pi.replaceWith(Zo(e)),I({ref:e})}function xs(e){let t=Q(":scope > input",e),r=t.find(n=>n.checked)||t[0];return A(...t.map(n=>v(n,"change").pipe(m(()=>K(`label[for="${n.id}"]`))))).pipe(N(K(`label[for="${r.id}"]`)),m(n=>({active:n})))}function mi(e,{viewport$:t}){let r=Xr("prev");e.append(r);let n=Xr("next");e.append(n);let o=K(".tabbed-labels",e);return P(()=>{let i=new E,s=i.pipe(de(1));return Y([i,ve(e)]).pipe(Ae(1,xe),ee(s)).subscribe({next([{active:a},c]){let f=qe(a),{width:u}=he(a);e.style.setProperty("--md-indicator-x",`${f.x}px`),e.style.setProperty("--md-indicator-width",`${u}px`);let p=or(o);(f.xp.x+c.width)&&o.scrollTo({left:Math.max(0,f.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),Y([pt(o),ve(o)]).pipe(ee(s)).subscribe(([a,c])=>{let f=mt(o);r.hidden=a.x<16,n.hidden=a.x>f.width-c.width-16}),A(v(r,"click").pipe(m(()=>-1)),v(n,"click").pipe(m(()=>1))).pipe(ee(s)).subscribe(a=>{let{width:c}=he(o);o.scrollBy({left:c*a,behavior:"smooth"})}),Z("content.tabs.link")&&i.pipe(He(1),ae(t)).subscribe(([{active:a},{offset:c}])=>{let f=a.innerText.trim();if(a.hasAttribute("data-md-switching"))a.removeAttribute("data-md-switching");else{let u=e.offsetTop-c.y;for(let l of Q("[data-tabs]"))for(let d of Q(":scope > input",l)){let h=K(`label[for="${d.id}"]`);if(h!==a&&h.innerText.trim()===f){h.setAttribute("data-md-switching",""),d.click();break}}window.scrollTo({top:e.offsetTop-u});let p=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([f,...p])])}}),xs(e).pipe(w(a=>i.next(a)),C(()=>i.complete()),m(a=>H({ref:e},a)))}).pipe(Je(fe))}function di(e,{viewport$:t,target$:r,print$:n}){return A(...Q("pre:not(.mermaid) > code",e).map(o=>si(o,{target$:r,print$:n})),...Q("pre.mermaid",e).map(o=>fi(o)),...Q("table:not([class])",e).map(o=>li(o)),...Q("details",e).map(o=>ui(o,{target$:r,print$:n})),...Q("[data-tabs]",e).map(o=>mi(o,{viewport$:t})))}function ws(e,{alert$:t}){return t.pipe(S(r=>A(I(!0),I(!1).pipe(ke(2e3))).pipe(m(n=>({message:r,active:n})))))}function hi(e,t){let r=K(".md-typeset",e);return P(()=>{let n=new E;return n.subscribe(({message:o,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=o}),ws(e,t).pipe(w(o=>n.next(o)),C(()=>n.complete()),m(o=>H({ref:e},o)))})}function Es({viewport$:e}){if(!Z("header.autohide"))return I(!1);let t=e.pipe(m(({offset:{y:o}})=>o),Ce(2,1),m(([o,i])=>[oMath.abs(i-o.y)>100),m(([,[o]])=>o),B()),n=dt("search");return Y([e,n]).pipe(m(([{offset:o},i])=>o.y>400&&!i),B(),S(o=>o?r:I(!1)),N(!1))}function bi(e,t){return P(()=>Y([ve(e),Es(t)])).pipe(m(([{height:r},n])=>({height:r,hidden:n})),B((r,n)=>r.height===n.height&&r.hidden===n.hidden),X(1))}function vi(e,{header$:t,main$:r}){return P(()=>{let n=new E,o=n.pipe(de(1));return n.pipe(J("active"),Ze(t)).subscribe(([{active:i},{hidden:s}])=>{e.classList.toggle("md-header--shadow",i&&!s),e.hidden=s}),r.subscribe(n),t.pipe(ee(o),m(i=>H({ref:e},i)))})}function Ss(e,{viewport$:t,header$:r}){return dr(e,{viewport$:t,header$:r}).pipe(m(({offset:{y:n}})=>{let{height:o}=he(e);return{active:n>=o}}),J("active"))}function gi(e,t){return P(()=>{let r=new E;r.subscribe(({active:o})=>{e.classList.toggle("md-header__title--active",o)});let n=pe("article h1");return typeof n=="undefined"?R:Ss(n,t).pipe(w(o=>r.next(o)),C(()=>r.complete()),m(o=>H({ref:e},o)))})}function yi(e,{viewport$:t,header$:r}){let n=r.pipe(m(({height:i})=>i),B()),o=n.pipe(S(()=>ve(e).pipe(m(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),J("bottom"))));return Y([n,o,t]).pipe(m(([i,{top:s,bottom:a},{offset:{y:c},size:{height:f}}])=>(f=Math.max(0,f-Math.max(0,s-c,i)-Math.max(0,f+c-a)),{offset:s-i,height:f,active:s-i<=c})),B((i,s)=>i.offset===s.offset&&i.height===s.height&&i.active===s.active))}function Os(e){let t=__md_get("__palette")||{index:e.findIndex(r=>matchMedia(r.getAttribute("data-md-color-media")).matches)};return I(...e).pipe(se(r=>v(r,"change").pipe(m(()=>r))),N(e[Math.max(0,t.index)]),m(r=>({index:e.indexOf(r),color:{scheme:r.getAttribute("data-md-color-scheme"),primary:r.getAttribute("data-md-color-primary"),accent:r.getAttribute("data-md-color-accent")}})),X(1))}function xi(e){return P(()=>{let t=new E;t.subscribe(n=>{document.body.setAttribute("data-md-color-switching","");for(let[o,i]of Object.entries(n.color))document.body.setAttribute(`data-md-color-${o}`,i);for(let o=0;o{document.body.removeAttribute("data-md-color-switching")});let r=Q("input",e);return Os(r).pipe(w(n=>t.next(n)),C(()=>t.complete()),m(n=>H({ref:e},n)))})}var en=Ye(Br());function _s(e){e.setAttribute("data-md-copying","");let t=e.innerText;return e.removeAttribute("data-md-copying"),t}function wi({alert$:e}){en.default.isSupported()&&new F(t=>{new en.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||_s(K(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(w(t=>{t.trigger.focus()}),m(()=>re("clipboard.copied"))).subscribe(e)}function Ts(e){if(e.length<2)return[""];let[t,r]=[...e].sort((o,i)=>o.length-i.length).map(o=>o.replace(/[^/]+$/,"")),n=0;if(t===r)n=t.length;else for(;t.charCodeAt(n)===r.charCodeAt(n);)n++;return e.map(o=>o.replace(t.slice(0,n),""))}function hr(e){let t=__md_get("__sitemap",sessionStorage,e);if(t)return I(t);{let r=le();return Uo(new URL("sitemap.xml",e||r.base)).pipe(m(n=>Ts(Q("loc",n).map(o=>o.textContent))),ce(()=>R),De([]),w(n=>__md_set("__sitemap",n,sessionStorage,e)))}}function Ei({document$:e,location$:t,viewport$:r}){let n=le();if(location.protocol==="file:")return;"scrollRestoration"in history&&(history.scrollRestoration="manual",v(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}));let o=pe("link[rel=icon]");typeof o!="undefined"&&(o.href=o.href);let i=hr().pipe(m(f=>f.map(u=>`${new URL(u,n.base)}`)),S(f=>v(document.body,"click").pipe(x(u=>!u.metaKey&&!u.ctrlKey),S(u=>{if(u.target instanceof Element){let p=u.target.closest("a");if(p&&!p.target){let l=new URL(p.href);if(l.search="",l.hash="",l.pathname!==location.pathname&&f.includes(l.toString()))return u.preventDefault(),I({url:new URL(p.href)})}}return Se}))),ie()),s=v(window,"popstate").pipe(x(f=>f.state!==null),m(f=>({url:new URL(location.href),offset:f.state})),ie());A(i,s).pipe(B((f,u)=>f.url.href===u.url.href),m(({url:f})=>f)).subscribe(t);let a=t.pipe(J("pathname"),S(f=>mr(f.href).pipe(ce(()=>(pr(f),Se)))),ie());i.pipe(ut(a)).subscribe(({url:f})=>{history.pushState({},"",`${f}`)});let c=new DOMParser;a.pipe(S(f=>f.text()),m(f=>c.parseFromString(f,"text/html"))).subscribe(e),e.pipe(He(1)).subscribe(f=>{for(let u of["title","link[rel=canonical]","meta[name=author]","meta[name=description]","[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...Z("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let p=pe(u),l=pe(u,f);typeof p!="undefined"&&typeof l!="undefined"&&p.replaceWith(l)}}),e.pipe(He(1),m(()=>_e("container")),S(f=>Q("script",f)),Ir(f=>{let u=M("script");if(f.src){for(let p of f.getAttributeNames())u.setAttribute(p,f.getAttribute(p));return f.replaceWith(u),new F(p=>{u.onload=()=>p.complete()})}else return u.textContent=f.textContent,f.replaceWith(u),R})).subscribe(),A(i,s).pipe(ut(e)).subscribe(({url:f,offset:u})=>{f.hash&&!u?Io(f.hash):window.scrollTo(0,(u==null?void 0:u.y)||0)}),r.pipe(Mt(i),Re(250),J("offset")).subscribe(({offset:f})=>{history.replaceState(f,"")}),A(i,s).pipe(Ce(2,1),x(([f,u])=>f.url.pathname===u.url.pathname),m(([,f])=>f)).subscribe(({offset:f})=>{window.scrollTo(0,(f==null?void 0:f.y)||0)})}var As=Ye(tn());var Oi=Ye(tn());function rn(e,t){let r=new RegExp(e.separator,"img"),n=(o,i,s)=>`${i}${s}`;return o=>{o=o.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator})(${o.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return s=>(t?(0,Oi.default)(s):s).replace(i,n).replace(/<\/mark>(\s+)]*>/img,"$1")}}function _i(e){return e.split(/"([^"]+)"/g).map((t,r)=>r&1?t.replace(/^\b|^(?![^\x00-\x7F]|$)|\s+/g," +"):t).join("").replace(/"|(?:^|\s+)[*+\-:^~]+(?=\s+|$)/g,"").trim()}function bt(e){return e.type===1}function Ti(e){return e.type===2}function vt(e){return e.type===3}function Rs({config:e,docs:t}){e.lang.length===1&&e.lang[0]==="en"&&(e.lang=[re("search.config.lang")]),e.separator==="[\\s\\-]+"&&(e.separator=re("search.config.separator"));let n={pipeline:re("search.config.pipeline").split(/\s*,\s*/).filter(Boolean),suggestions:Z("search.suggest")};return{config:e,docs:t,options:n}}function Mi(e,t){let r=le(),n=new Worker(e),o=new E,i=Ko(n,{tx$:o}).pipe(m(s=>{if(vt(s))for(let a of s.data.items)for(let c of a)c.location=`${new URL(c.location,r.base)}`;return s}),ie());return ue(t).pipe(m(s=>({type:0,data:Rs(s)}))).subscribe(o.next.bind(o)),{tx$:o,rx$:i}}function Li({document$:e}){let t=le(),r=je(new URL("../versions.json",t.base)).pipe(ce(()=>R)),n=r.pipe(m(o=>{let[,i]=t.base.match(/([^/]+)\/?$/);return o.find(({version:s,aliases:a})=>s===i||a.includes(i))||o[0]}));r.pipe(m(o=>new Map(o.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),S(o=>v(document.body,"click").pipe(x(i=>!i.metaKey&&!i.ctrlKey),ae(n),S(([i,s])=>{if(i.target instanceof Element){let a=i.target.closest("a");if(a&&!a.target&&o.has(a.href)){let c=a.href;return!i.target.closest(".md-version")&&o.get(c)===s?R:(i.preventDefault(),I(c))}}return R}),S(i=>{let{version:s}=o.get(i);return hr(new URL(i)).pipe(m(a=>{let f=Oe().href.replace(t.base,"");return a.includes(f.split("#")[0])?new URL(`../${s}/${f}`,t.base):new URL(i)}))})))).subscribe(o=>pr(o)),Y([r,n]).subscribe(([o,i])=>{K(".md-header__topic").appendChild(ei(o,i))}),e.pipe(S(()=>n)).subscribe(o=>{var s;let i=__md_get("__outdated",sessionStorage);if(i===null){let a=((s=t.version)==null?void 0:s.default)||"latest";i=!o.aliases.includes(a),__md_set("__outdated",i,sessionStorage)}if(i)for(let a of te("outdated"))a.hidden=!1})}function ks(e,{rx$:t}){let r=(__search==null?void 0:__search.transform)||_i,{searchParams:n}=Oe();n.has("q")&&Ke("search",!0);let o=t.pipe(x(bt),oe(1),m(()=>n.get("q")||""));dt("search").pipe(x(a=>!a),oe(1)).subscribe(()=>{let a=new URL(location.href);a.searchParams.delete("q"),history.replaceState({},"",`${a}`)}),o.subscribe(a=>{a&&(e.value=a,e.focus())});let i=nr(e),s=A(v(e,"keyup"),v(e,"focus").pipe(ke(1)),o).pipe(m(()=>r(e.value)),N(""),B());return Y([s,i]).pipe(m(([a,c])=>({value:a,focus:c})),X(1))}function Ai(e,{tx$:t,rx$:r}){let n=new E,o=n.pipe(de(1));return n.pipe(J("value"),m(({value:i})=>({type:2,data:i}))).subscribe(t.next.bind(t)),n.pipe(J("focus")).subscribe(({focus:i})=>{i?(Ke("search",i),e.placeholder=""):e.placeholder=re("search.placeholder")}),v(e.form,"reset").pipe(ee(o)).subscribe(()=>e.focus()),ks(e,{tx$:t,rx$:r}).pipe(w(i=>n.next(i)),C(()=>n.complete()),m(i=>H({ref:e},i)),ie())}function Ci(e,{rx$:t},{query$:r}){let n=new E,o=Ao(e.parentElement).pipe(x(Boolean)),i=K(":scope > :first-child",e),s=K(":scope > :last-child",e),a=t.pipe(x(bt),oe(1));return n.pipe(ae(r),Mt(a)).subscribe(([{items:f},{value:u}])=>{if(u)switch(f.length){case 0:i.textContent=re("search.result.none");break;case 1:i.textContent=re("search.result.one");break;default:i.textContent=re("search.result.other",lr(f.length))}else i.textContent=re("search.result.placeholder")}),n.pipe(w(()=>s.innerHTML=""),S(({items:f})=>A(I(...f.slice(0,10)),I(...f.slice(10)).pipe(Ce(4),Nr(o),S(([u])=>u))))).subscribe(f=>s.appendChild(Jo(f))),t.pipe(x(vt),m(({data:f})=>f)).pipe(w(f=>n.next(f)),C(()=>n.complete()),m(f=>H({ref:e},f)))}function Hs(e,{query$:t}){return t.pipe(m(({value:r})=>{let n=Oe();return n.hash="",n.searchParams.delete("h"),n.searchParams.set("q",r),{url:n}}))}function Ri(e,t){let r=new E;return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),v(e,"click").subscribe(n=>n.preventDefault()),Hs(e,t).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))}function ki(e,{rx$:t},{keyboard$:r}){let n=new E,o=_e("search-query"),i=A(v(o,"keydown"),v(o,"focus")).pipe(Le(fe),m(()=>o.value),B());return n.pipe(Ze(i),m(([{suggestions:a},c])=>{let f=c.split(/([\s-]+)/);if((a==null?void 0:a.length)&&f[f.length-1]){let u=a[a.length-1];u.startsWith(f[f.length-1])&&(f[f.length-1]=u)}else f.length=0;return f})).subscribe(a=>e.innerHTML=a.join("").replace(/\s/g," ")),r.pipe(x(({mode:a})=>a==="search")).subscribe(a=>{switch(a.type){case"ArrowRight":e.innerText.length&&o.selectionStart===o.value.length&&(o.value=e.innerText);break}}),t.pipe(x(vt),m(({data:a})=>a)).pipe(w(a=>n.next(a)),C(()=>n.complete()),m(()=>({ref:e})))}function Hi(e,{index$:t,keyboard$:r}){let n=le();try{let o=(__search==null?void 0:__search.worker)||n.search,i=Mi(o,t),s=_e("search-query",e),a=_e("search-result",e),{tx$:c,rx$:f}=i;c.pipe(x(Ti),ut(f.pipe(x(bt))),oe(1)).subscribe(c.next.bind(c)),r.pipe(x(({mode:l})=>l==="search")).subscribe(l=>{let d=Ie();switch(l.type){case"Enter":if(d===s){let h=new Map;for(let b of Q(":first-child [href]",a)){let U=b.firstElementChild;h.set(b,parseFloat(U.getAttribute("data-md-score")))}if(h.size){let[[b]]=[...h].sort(([,U],[,G])=>G-U);b.click()}l.claim()}break;case"Escape":case"Tab":Ke("search",!1),s.blur();break;case"ArrowUp":case"ArrowDown":if(typeof d=="undefined")s.focus();else{let h=[s,...Q(":not(details) > [href], summary, details[open] [href]",a)],b=Math.max(0,(Math.max(0,h.indexOf(d))+h.length+(l.type==="ArrowUp"?-1:1))%h.length);h[b].focus()}l.claim();break;default:s!==Ie()&&s.focus()}}),r.pipe(x(({mode:l})=>l==="global")).subscribe(l=>{switch(l.type){case"f":case"s":case"/":s.focus(),s.select(),l.claim();break}});let u=Ai(s,i),p=Ci(a,i,{query$:u});return A(u,p).pipe(et(...te("search-share",e).map(l=>Ri(l,{query$:u})),...te("search-suggest",e).map(l=>ki(l,i,{keyboard$:r}))))}catch(o){return e.hidden=!0,Se}}function Pi(e,{index$:t,location$:r}){return Y([t,r.pipe(N(Oe()),x(n=>!!n.searchParams.get("h")))]).pipe(m(([n,o])=>rn(n.config,!0)(o.searchParams.get("h"))),m(n=>{var s;let o=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let a=i.nextNode();a;a=i.nextNode())if((s=a.parentElement)!=null&&s.offsetHeight){let c=a.textContent,f=n(c);f.length>c.length&&o.set(a,f)}for(let[a,c]of o){let{childNodes:f}=M("span",null,c);a.replaceWith(...Array.from(f))}return{ref:e,nodes:o}}))}function Ps(e,{viewport$:t,main$:r}){let n=e.parentElement,o=n.offsetTop-n.parentElement.offsetTop;return Y([r,t]).pipe(m(([{offset:i,height:s},{offset:{y:a}}])=>(s=s+Math.min(o,Math.max(0,a-i))-o,{height:s,locked:a>=i+o})),B((i,s)=>i.height===s.height&&i.locked===s.locked))}function nn(e,n){var o=n,{header$:t}=o,r=un(o,["header$"]);let i=K(".md-sidebar__scrollwrap",e),{y:s}=qe(i);return P(()=>{let a=new E;return a.pipe(Ae(0,xe),ae(t)).subscribe({next([{height:c},{height:f}]){i.style.height=`${c-2*s}px`,e.style.top=`${f}px`},complete(){i.style.height="",e.style.top=""}}),a.pipe(Le(xe),oe(1)).subscribe(()=>{for(let c of Q(".md-nav__link--active[href]",e)){let f=cr(c);if(typeof f!="undefined"){let u=c.offsetTop-f.offsetTop,{height:p}=he(f);f.scrollTo({top:u-p/2})}}}),Ps(e,r).pipe(w(c=>a.next(c)),C(()=>a.complete()),m(c=>H({ref:e},c)))})}function $i(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return _t(je(`${r}/releases/latest`).pipe(ce(()=>R),m(n=>({version:n.tag_name})),De({})),je(r).pipe(ce(()=>R),m(n=>({stars:n.stargazers_count,forks:n.forks_count})),De({}))).pipe(m(([n,o])=>H(H({},n),o)))}else{let r=`https://api.github.com/users/${e}`;return je(r).pipe(m(n=>({repositories:n.public_repos})),De({}))}}function Ii(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return je(r).pipe(ce(()=>R),m(({star_count:n,forks_count:o})=>({stars:n,forks:o})),De({}))}function ji(e){let[t]=e.match(/(git(?:hub|lab))/i)||[];switch(t.toLowerCase()){case"github":let[,r,n]=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);return $i(r,n);case"gitlab":let[,o,i]=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i);return Ii(o,i);default:return R}}var $s;function Is(e){return $s||($s=P(()=>{let t=__md_get("__source",sessionStorage);if(t)return I(t);if(te("consent").length){let n=__md_get("__consent");if(!(n&&n.github))return R}return ji(e.href).pipe(w(n=>__md_set("__source",n,sessionStorage)))}).pipe(ce(()=>R),x(t=>Object.keys(t).length>0),m(t=>({facts:t})),X(1)))}function Fi(e){let t=K(":scope > :last-child",e);return P(()=>{let r=new E;return r.subscribe(({facts:n})=>{t.appendChild(Xo(n)),t.classList.add("md-source__repository--active")}),Is(e).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))})}function js(e,{viewport$:t,header$:r}){return ve(document.body).pipe(S(()=>dr(e,{header$:r,viewport$:t})),m(({offset:{y:n}})=>({hidden:n>=10})),J("hidden"))}function Ui(e,t){return P(()=>{let r=new E;return r.subscribe({next({hidden:n}){e.hidden=n},complete(){e.hidden=!1}}),(Z("navigation.tabs.sticky")?I({hidden:!1}):js(e,t)).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))})}function Fs(e,{viewport$:t,header$:r}){let n=new Map,o=Q("[href^=\\#]",e);for(let a of o){let c=decodeURIComponent(a.hash.substring(1)),f=pe(`[id="${c}"]`);typeof f!="undefined"&&n.set(a,f)}let i=r.pipe(J("height"),m(({height:a})=>{let c=_e("main"),f=K(":scope > :first-child",c);return a+.8*(f.offsetTop-c.offsetTop)}),ie());return ve(document.body).pipe(J("height"),S(a=>P(()=>{let c=[];return I([...n].reduce((f,[u,p])=>{for(;c.length&&n.get(c[c.length-1]).tagName>=p.tagName;)c.pop();let l=p.offsetTop;for(;!l&&p.parentElement;)p=p.parentElement,l=p.offsetTop;return f.set([...c=[...c,u]].reverse(),l)},new Map))}).pipe(m(c=>new Map([...c].sort(([,f],[,u])=>f-u))),Ze(i),S(([c,f])=>t.pipe(Ur(([u,p],{offset:{y:l},size:d})=>{let h=l+d.height>=Math.floor(a.height);for(;p.length;){let[,b]=p[0];if(b-f=l&&!h)p=[u.pop(),...p];else break}return[u,p]},[[],[...c]]),B((u,p)=>u[0]===p[0]&&u[1]===p[1])))))).pipe(m(([a,c])=>({prev:a.map(([f])=>f),next:c.map(([f])=>f)})),N({prev:[],next:[]}),Ce(2,1),m(([a,c])=>a.prev.length{let o=new E,i=o.pipe(de(1));if(o.subscribe(({prev:s,next:a})=>{for(let[c]of a)c.classList.remove("md-nav__link--passed"),c.classList.remove("md-nav__link--active");for(let[c,[f]]of s.entries())f.classList.add("md-nav__link--passed"),f.classList.toggle("md-nav__link--active",c===s.length-1)}),Z("toc.follow")){let s=A(t.pipe(Re(1),m(()=>{})),t.pipe(Re(250),m(()=>"smooth")));o.pipe(x(({prev:a})=>a.length>0),ae(s)).subscribe(([{prev:a},c])=>{let[f]=a[a.length-1];if(f.offsetHeight){let u=cr(f);if(typeof u!="undefined"){let p=f.offsetTop-u.offsetTop,{height:l}=he(u);u.scrollTo({top:p-l/2,behavior:c})}}})}return Z("navigation.tracking")&&t.pipe(ee(i),J("offset"),Re(250),He(1),ee(n.pipe(He(1))),Tt({delay:250}),ae(o)).subscribe(([,{prev:s}])=>{let a=Oe(),c=s[s.length-1];if(c&&c.length){let[f]=c,{hash:u}=new URL(f.href);a.hash!==u&&(a.hash=u,history.replaceState({},"",`${a}`))}else a.hash="",history.replaceState({},"",`${a}`)}),Fs(e,{viewport$:t,header$:r}).pipe(w(s=>o.next(s)),C(()=>o.complete()),m(s=>H({ref:e},s)))})}function Us(e,{viewport$:t,main$:r,target$:n}){let o=t.pipe(m(({offset:{y:s}})=>s),Ce(2,1),m(([s,a])=>s>a&&a>0),B()),i=r.pipe(m(({active:s})=>s));return Y([i,o]).pipe(m(([s,a])=>!(s&&a)),B(),ee(n.pipe(He(1))),Fr(!0),Tt({delay:250}),m(s=>({hidden:s})))}function Wi(e,{viewport$:t,header$:r,main$:n,target$:o}){let i=new E,s=i.pipe(de(1));return i.subscribe({next({hidden:a}){e.hidden=a,a?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(ee(s),J("height")).subscribe(({height:a})=>{e.style.top=`${a+16}px`}),Us(e,{viewport$:t,main$:n,target$:o}).pipe(w(a=>i.next(a)),C(()=>i.complete()),m(a=>H({ref:e},a)))}function Vi({document$:e,tablet$:t}){e.pipe(S(()=>Q(".md-toggle--indeterminate, [data-md-state=indeterminate]")),w(r=>{r.indeterminate=!0,r.checked=!1}),se(r=>v(r,"change").pipe(Wr(()=>r.classList.contains("md-toggle--indeterminate")),m(()=>r))),ae(t)).subscribe(([r,n])=>{r.classList.remove("md-toggle--indeterminate"),n&&(r.checked=!1)})}function Ds(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function zi({document$:e}){e.pipe(S(()=>Q("[data-md-scrollfix]")),w(t=>t.removeAttribute("data-md-scrollfix")),x(Ds),se(t=>v(t,"touchstart").pipe(m(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function Ni({viewport$:e,tablet$:t}){Y([dt("search"),t]).pipe(m(([r,n])=>r&&!n),S(r=>I(r).pipe(ke(r?400:100))),ae(e)).subscribe(([r,{offset:{y:n}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${n}px`;else{let o=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",o&&window.scrollTo(0,o)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let n=e[r];typeof n!="object"?n=document.createTextNode(n):n.parentNode&&n.parentNode.removeChild(n),r?t.insertBefore(this.previousSibling,n):t.replaceChild(n,this)}}}));document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var tt=go(),vr=ko(),gt=jo(),on=Ro(),we=qo(),gr=Kr("(min-width: 960px)"),Ki=Kr("(min-width: 1220px)"),Qi=Fo(),Yi=le(),Bi=document.forms.namedItem("search")?(__search==null?void 0:__search.index)||je(new URL("search/search_index.json",Yi.base)):Se,an=new E;wi({alert$:an});Z("navigation.instant")&&Ei({document$:tt,location$:vr,viewport$:we});var qi;((qi=Yi.version)==null?void 0:qi.provider)==="mike"&&Li({document$:tt});A(vr,gt).pipe(ke(125)).subscribe(()=>{Ke("drawer",!1),Ke("search",!1)});on.pipe(x(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=pe("[href][rel=prev]");typeof t!="undefined"&&t.click();break;case"n":case".":let r=pe("[href][rel=next]");typeof r!="undefined"&&r.click();break}});Vi({document$:tt,tablet$:gr});zi({document$:tt});Ni({viewport$:we,tablet$:gr});var Qe=bi(_e("header"),{viewport$:we}),br=tt.pipe(m(()=>_e("main")),S(e=>yi(e,{viewport$:we,header$:Qe})),X(1)),Ws=A(...te("consent").map(e=>Yo(e,{target$:gt})),...te("dialog").map(e=>hi(e,{alert$:an})),...te("header").map(e=>vi(e,{viewport$:we,header$:Qe,main$:br})),...te("palette").map(e=>xi(e)),...te("search").map(e=>Hi(e,{index$:Bi,keyboard$:on})),...te("source").map(e=>Fi(e))),Vs=P(()=>A(...te("announce").map(e=>Qo(e)),...te("content").map(e=>di(e,{viewport$:we,target$:gt,print$:Qi})),...te("content").map(e=>Z("search.highlight")?Pi(e,{index$:Bi,location$:vr}):R),...te("header-title").map(e=>gi(e,{viewport$:we,header$:Qe})),...te("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?Qr(Ki,()=>nn(e,{viewport$:we,header$:Qe,main$:br})):Qr(gr,()=>nn(e,{viewport$:we,header$:Qe,main$:br}))),...te("tabs").map(e=>Ui(e,{viewport$:we,header$:Qe})),...te("toc").map(e=>Di(e,{viewport$:we,header$:Qe,target$:gt})),...te("top").map(e=>Wi(e,{viewport$:we,header$:Qe,main$:br,target$:gt})))),Gi=tt.pipe(S(()=>Vs),et(Ws),X(1));Gi.subscribe();window.document$=tt;window.location$=vr;window.target$=gt;window.keyboard$=on;window.viewport$=we;window.tablet$=gr;window.screen$=Ki;window.print$=Qi;window.alert$=an;window.component$=Gi;})(); -//# sourceMappingURL=bundle.078830c0.min.js.map - diff --git a/assets/javascripts/bundle.078830c0.min.js.map b/assets/javascripts/bundle.078830c0.min.js.map deleted file mode 100644 index 3636669..0000000 --- a/assets/javascripts/bundle.078830c0.min.js.map +++ /dev/null @@ -1,8 +0,0 @@ -{ - "version": 3, - "sources": ["node_modules/focus-visible/dist/focus-visible.js", "node_modules/url-polyfill/url-polyfill.js", "node_modules/rxjs/node_modules/tslib/tslib.js", "node_modules/clipboard/dist/clipboard.js", "node_modules/escape-html/index.js", "node_modules/array-flat-polyfill/index.mjs", "src/assets/javascripts/bundle.ts", "node_modules/unfetch/polyfill/index.js", "node_modules/rxjs/node_modules/tslib/modules/index.js", "node_modules/rxjs/src/internal/util/isFunction.ts", "node_modules/rxjs/src/internal/util/createErrorClass.ts", "node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "node_modules/rxjs/src/internal/util/arrRemove.ts", "node_modules/rxjs/src/internal/Subscription.ts", "node_modules/rxjs/src/internal/config.ts", "node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "node_modules/rxjs/src/internal/util/noop.ts", "node_modules/rxjs/src/internal/NotificationFactories.ts", "node_modules/rxjs/src/internal/util/errorContext.ts", "node_modules/rxjs/src/internal/Subscriber.ts", "node_modules/rxjs/src/internal/symbol/observable.ts", "node_modules/rxjs/src/internal/util/identity.ts", "node_modules/rxjs/src/internal/util/pipe.ts", "node_modules/rxjs/src/internal/Observable.ts", "node_modules/rxjs/src/internal/util/lift.ts", "node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts", "node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "node_modules/rxjs/src/internal/Subject.ts", "node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "node_modules/rxjs/src/internal/ReplaySubject.ts", "node_modules/rxjs/src/internal/scheduler/Action.ts", "node_modules/rxjs/src/internal/scheduler/intervalProvider.ts", "node_modules/rxjs/src/internal/scheduler/AsyncAction.ts", "node_modules/rxjs/src/internal/Scheduler.ts", "node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts", "node_modules/rxjs/src/internal/scheduler/async.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts", "node_modules/rxjs/src/internal/scheduler/animationFrame.ts", "node_modules/rxjs/src/internal/observable/empty.ts", "node_modules/rxjs/src/internal/util/isScheduler.ts", "node_modules/rxjs/src/internal/util/args.ts", "node_modules/rxjs/src/internal/util/isArrayLike.ts", "node_modules/rxjs/src/internal/util/isPromise.ts", "node_modules/rxjs/src/internal/util/isInteropObservable.ts", "node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "node_modules/rxjs/src/internal/symbol/iterator.ts", "node_modules/rxjs/src/internal/util/isIterable.ts", "node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "node_modules/rxjs/src/internal/observable/innerFrom.ts", "node_modules/rxjs/src/internal/util/executeSchedule.ts", "node_modules/rxjs/src/internal/operators/observeOn.ts", "node_modules/rxjs/src/internal/operators/subscribeOn.ts", "node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "node_modules/rxjs/src/internal/scheduled/scheduled.ts", "node_modules/rxjs/src/internal/observable/from.ts", "node_modules/rxjs/src/internal/observable/of.ts", "node_modules/rxjs/src/internal/observable/throwError.ts", "node_modules/rxjs/src/internal/util/isDate.ts", "node_modules/rxjs/src/internal/operators/map.ts", "node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts", "node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts", "node_modules/rxjs/src/internal/util/createObject.ts", "node_modules/rxjs/src/internal/observable/combineLatest.ts", "node_modules/rxjs/src/internal/operators/mergeInternals.ts", "node_modules/rxjs/src/internal/operators/mergeMap.ts", "node_modules/rxjs/src/internal/operators/mergeAll.ts", "node_modules/rxjs/src/internal/operators/concatAll.ts", "node_modules/rxjs/src/internal/observable/concat.ts", "node_modules/rxjs/src/internal/observable/defer.ts", "node_modules/rxjs/src/internal/observable/fromEvent.ts", "node_modules/rxjs/src/internal/observable/fromEventPattern.ts", "node_modules/rxjs/src/internal/observable/timer.ts", "node_modules/rxjs/src/internal/observable/merge.ts", "node_modules/rxjs/src/internal/observable/never.ts", "node_modules/rxjs/src/internal/util/argsOrArgArray.ts", "node_modules/rxjs/src/internal/operators/filter.ts", "node_modules/rxjs/src/internal/observable/zip.ts", "node_modules/rxjs/src/internal/operators/audit.ts", "node_modules/rxjs/src/internal/operators/auditTime.ts", "node_modules/rxjs/src/internal/operators/bufferCount.ts", "node_modules/rxjs/src/internal/operators/catchError.ts", "node_modules/rxjs/src/internal/operators/scanInternals.ts", "node_modules/rxjs/src/internal/operators/combineLatest.ts", "node_modules/rxjs/src/internal/operators/combineLatestWith.ts", "node_modules/rxjs/src/internal/operators/concatMap.ts", "node_modules/rxjs/src/internal/operators/debounceTime.ts", "node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts", "node_modules/rxjs/src/internal/operators/take.ts", "node_modules/rxjs/src/internal/operators/ignoreElements.ts", "node_modules/rxjs/src/internal/operators/mapTo.ts", "node_modules/rxjs/src/internal/operators/delayWhen.ts", "node_modules/rxjs/src/internal/operators/delay.ts", "node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts", "node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts", "node_modules/rxjs/src/internal/operators/endWith.ts", "node_modules/rxjs/src/internal/operators/finalize.ts", "node_modules/rxjs/src/internal/operators/takeLast.ts", "node_modules/rxjs/src/internal/operators/merge.ts", "node_modules/rxjs/src/internal/operators/mergeWith.ts", "node_modules/rxjs/src/internal/operators/repeat.ts", "node_modules/rxjs/src/internal/operators/sample.ts", "node_modules/rxjs/src/internal/operators/scan.ts", "node_modules/rxjs/src/internal/operators/share.ts", "node_modules/rxjs/src/internal/operators/shareReplay.ts", "node_modules/rxjs/src/internal/operators/skip.ts", "node_modules/rxjs/src/internal/operators/skipUntil.ts", "node_modules/rxjs/src/internal/operators/startWith.ts", "node_modules/rxjs/src/internal/operators/switchMap.ts", "node_modules/rxjs/src/internal/operators/takeUntil.ts", "node_modules/rxjs/src/internal/operators/takeWhile.ts", "node_modules/rxjs/src/internal/operators/tap.ts", "node_modules/rxjs/src/internal/operators/throttle.ts", "node_modules/rxjs/src/internal/operators/throttleTime.ts", "node_modules/rxjs/src/internal/operators/withLatestFrom.ts", "node_modules/rxjs/src/internal/operators/zip.ts", "node_modules/rxjs/src/internal/operators/zipWith.ts", "src/assets/javascripts/browser/document/index.ts", "src/assets/javascripts/browser/element/_/index.ts", "src/assets/javascripts/browser/element/focus/index.ts", "src/assets/javascripts/browser/element/offset/_/index.ts", "src/assets/javascripts/browser/element/offset/content/index.ts", "node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js", "src/assets/javascripts/browser/element/size/_/index.ts", "src/assets/javascripts/browser/element/size/content/index.ts", "src/assets/javascripts/browser/element/visibility/index.ts", "src/assets/javascripts/browser/toggle/index.ts", "src/assets/javascripts/browser/keyboard/index.ts", "src/assets/javascripts/browser/location/_/index.ts", "src/assets/javascripts/utilities/h/index.ts", "src/assets/javascripts/utilities/string/index.ts", "src/assets/javascripts/browser/location/hash/index.ts", "src/assets/javascripts/browser/media/index.ts", "src/assets/javascripts/browser/request/index.ts", "src/assets/javascripts/browser/script/index.ts", "src/assets/javascripts/browser/viewport/offset/index.ts", "src/assets/javascripts/browser/viewport/size/index.ts", "src/assets/javascripts/browser/viewport/_/index.ts", "src/assets/javascripts/browser/viewport/at/index.ts", "src/assets/javascripts/browser/worker/index.ts", "src/assets/javascripts/_/index.ts", "src/assets/javascripts/components/_/index.ts", "src/assets/javascripts/components/announce/index.ts", "src/assets/javascripts/components/consent/index.ts", "src/assets/javascripts/components/content/code/_/index.ts", "src/assets/javascripts/templates/tooltip/index.tsx", "src/assets/javascripts/templates/annotation/index.tsx", "src/assets/javascripts/templates/clipboard/index.tsx", "src/assets/javascripts/templates/search/index.tsx", "src/assets/javascripts/templates/source/index.tsx", "src/assets/javascripts/templates/tabbed/index.tsx", "src/assets/javascripts/templates/table/index.tsx", "src/assets/javascripts/templates/version/index.tsx", "src/assets/javascripts/components/content/annotation/_/index.ts", "src/assets/javascripts/components/content/annotation/list/index.ts", "src/assets/javascripts/components/content/code/mermaid/index.ts", "src/assets/javascripts/components/content/details/index.ts", "src/assets/javascripts/components/content/table/index.ts", "src/assets/javascripts/components/content/tabs/index.ts", "src/assets/javascripts/components/content/_/index.ts", "src/assets/javascripts/components/dialog/index.ts", "src/assets/javascripts/components/header/_/index.ts", "src/assets/javascripts/components/header/title/index.ts", "src/assets/javascripts/components/main/index.ts", "src/assets/javascripts/components/palette/index.ts", "src/assets/javascripts/integrations/clipboard/index.ts", "src/assets/javascripts/integrations/sitemap/index.ts", "src/assets/javascripts/integrations/instant/index.ts", "src/assets/javascripts/integrations/search/document/index.ts", "src/assets/javascripts/integrations/search/highlighter/index.ts", "src/assets/javascripts/integrations/search/query/transform/index.ts", "src/assets/javascripts/integrations/search/worker/message/index.ts", "src/assets/javascripts/integrations/search/worker/_/index.ts", "src/assets/javascripts/integrations/version/index.ts", "src/assets/javascripts/components/search/query/index.ts", "src/assets/javascripts/components/search/result/index.ts", "src/assets/javascripts/components/search/share/index.ts", "src/assets/javascripts/components/search/suggest/index.ts", "src/assets/javascripts/components/search/_/index.ts", "src/assets/javascripts/components/search/highlight/index.ts", "src/assets/javascripts/components/sidebar/index.ts", "src/assets/javascripts/components/source/facts/github/index.ts", "src/assets/javascripts/components/source/facts/gitlab/index.ts", "src/assets/javascripts/components/source/facts/_/index.ts", "src/assets/javascripts/components/source/_/index.ts", "src/assets/javascripts/components/tabs/index.ts", "src/assets/javascripts/components/toc/index.ts", "src/assets/javascripts/components/top/index.ts", "src/assets/javascripts/patches/indeterminate/index.ts", "src/assets/javascripts/patches/scrollfix/index.ts", "src/assets/javascripts/patches/scrolllock/index.ts", "src/assets/javascripts/polyfills/index.ts"], - "sourceRoot": "../../../..", - "sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-visible\n */\n function applyFocusVisiblePolyfill(scope) {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesAllowlist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {KeyboardEvent} e\n */\n function onKeyDown(e) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (isValidFocusTarget(scope.activeElement)) {\n addFocusVisibleClass(scope.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on whenever the\n // window blurs, even if you're tabbing out of the page. \u00AF\\_(\u30C4)_/\u00AF\n if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n // For some kinds of state, we are interested in changes at the global scope\n // only. For example, global pointer input, global key presses and global\n // visibility change should affect the state at every scope:\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n addInitialPointerMoveListeners();\n\n // For focus and blur, we specifically care about state changes in the local\n // scope. This is because focus / blur events that originate from within a\n // shadow root are not re-dispatched from the host element if it was already\n // the active element in its own scope:\n scope.addEventListener('focus', onFocus, true);\n scope.addEventListener('blur', onBlur, true);\n\n // We detect that a node is a ShadowRoot by ensuring that it is a\n // DocumentFragment and also has a host property. This check covers native\n // implementation and polyfill implementation transparently. If we only cared\n // about the native implementation, we could just check if the scope was\n // an instance of a ShadowRoot.\n if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n // have a root element to add a class to. So, we add this attribute to the\n // host element instead:\n scope.host.setAttribute('data-js-focus-visible', '');\n } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n document.documentElement.classList.add('js-focus-visible');\n document.documentElement.setAttribute('data-js-focus-visible', '');\n }\n }\n\n // It is important to wrap all references to global window and document in\n // these checks to support server-side rendering use cases\n // @see https://github.com/WICG/focus-visible/issues/199\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Make the polyfill helper globally available. This can be used as a signal\n // to interested libraries that wish to coordinate with the polyfill for e.g.,\n // applying the polyfill to a shadow root:\n window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n // Notify interested libraries of the polyfill's presence, in case the\n // polyfill was loaded lazily:\n var event;\n\n try {\n event = new CustomEvent('focus-visible-polyfill-ready');\n } catch (error) {\n // IE11 does not support using CustomEvent as a constructor directly:\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n }\n\n window.dispatchEvent(event);\n }\n\n if (typeof document !== 'undefined') {\n // Apply the polyfill to the global document, so that no JavaScript\n // coordination is required to use the polyfill in the top-level document:\n applyFocusVisiblePolyfill(document);\n }\n\n})));\n", "(function(global) {\r\n /**\r\n * Polyfill URLSearchParams\r\n *\r\n * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n */\r\n\r\n var checkIfIteratorIsSupported = function() {\r\n try {\r\n return !!Symbol.iterator;\r\n } catch (error) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n var createIterator = function(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift();\r\n return { done: value === void 0, value: value };\r\n }\r\n };\r\n\r\n if (iteratorSupported) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n };\r\n\r\n /**\r\n * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n */\r\n var serializeParam = function(value) {\r\n return encodeURIComponent(value).replace(/%20/g, '+');\r\n };\r\n\r\n var deserializeParam = function(value) {\r\n return decodeURIComponent(String(value).replace(/\\+/g, ' '));\r\n };\r\n\r\n var polyfillURLSearchParams = function() {\r\n\r\n var URLSearchParams = function(searchString) {\r\n Object.defineProperty(this, '_entries', { writable: true, value: {} });\r\n var typeofSearchString = typeof searchString;\r\n\r\n if (typeofSearchString === 'undefined') {\r\n // do nothing\r\n } else if (typeofSearchString === 'string') {\r\n if (searchString !== '') {\r\n this._fromString(searchString);\r\n }\r\n } else if (searchString instanceof URLSearchParams) {\r\n var _this = this;\r\n searchString.forEach(function(value, name) {\r\n _this.append(name, value);\r\n });\r\n } else if ((searchString !== null) && (typeofSearchString === 'object')) {\r\n if (Object.prototype.toString.call(searchString) === '[object Array]') {\r\n for (var i = 0; i < searchString.length; i++) {\r\n var entry = searchString[i];\r\n if ((Object.prototype.toString.call(entry) === '[object Array]') || (entry.length !== 2)) {\r\n this.append(entry[0], entry[1]);\r\n } else {\r\n throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\\'s input');\r\n }\r\n }\r\n } else {\r\n for (var key in searchString) {\r\n if (searchString.hasOwnProperty(key)) {\r\n this.append(key, searchString[key]);\r\n }\r\n }\r\n }\r\n } else {\r\n throw new TypeError('Unsupported input\\'s type for URLSearchParams');\r\n }\r\n };\r\n\r\n var proto = URLSearchParams.prototype;\r\n\r\n proto.append = function(name, value) {\r\n if (name in this._entries) {\r\n this._entries[name].push(String(value));\r\n } else {\r\n this._entries[name] = [String(value)];\r\n }\r\n };\r\n\r\n proto.delete = function(name) {\r\n delete this._entries[name];\r\n };\r\n\r\n proto.get = function(name) {\r\n return (name in this._entries) ? this._entries[name][0] : null;\r\n };\r\n\r\n proto.getAll = function(name) {\r\n return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n };\r\n\r\n proto.has = function(name) {\r\n return (name in this._entries);\r\n };\r\n\r\n proto.set = function(name, value) {\r\n this._entries[name] = [String(value)];\r\n };\r\n\r\n proto.forEach = function(callback, thisArg) {\r\n var entries;\r\n for (var name in this._entries) {\r\n if (this._entries.hasOwnProperty(name)) {\r\n entries = this._entries[name];\r\n for (var i = 0; i < entries.length; i++) {\r\n callback.call(thisArg, entries[i], name, this);\r\n }\r\n }\r\n }\r\n };\r\n\r\n proto.keys = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push(name);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.values = function() {\r\n var items = [];\r\n this.forEach(function(value) {\r\n items.push(value);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.entries = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n if (iteratorSupported) {\r\n proto[Symbol.iterator] = proto.entries;\r\n }\r\n\r\n proto.toString = function() {\r\n var searchArray = [];\r\n this.forEach(function(value, name) {\r\n searchArray.push(serializeParam(name) + '=' + serializeParam(value));\r\n });\r\n return searchArray.join('&');\r\n };\r\n\r\n\r\n global.URLSearchParams = URLSearchParams;\r\n };\r\n\r\n var checkIfURLSearchParamsSupported = function() {\r\n try {\r\n var URLSearchParams = global.URLSearchParams;\r\n\r\n return (\r\n (new URLSearchParams('?a=1').toString() === 'a=1') &&\r\n (typeof URLSearchParams.prototype.set === 'function') &&\r\n (typeof URLSearchParams.prototype.entries === 'function')\r\n );\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n if (!checkIfURLSearchParamsSupported()) {\r\n polyfillURLSearchParams();\r\n }\r\n\r\n var proto = global.URLSearchParams.prototype;\r\n\r\n if (typeof proto.sort !== 'function') {\r\n proto.sort = function() {\r\n var _this = this;\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n if (!_this._entries) {\r\n _this.delete(name);\r\n }\r\n });\r\n items.sort(function(a, b) {\r\n if (a[0] < b[0]) {\r\n return -1;\r\n } else if (a[0] > b[0]) {\r\n return +1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n if (_this._entries) { // force reset because IE keeps keys index\r\n _this._entries = {};\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n this.append(items[i][0], items[i][1]);\r\n }\r\n };\r\n }\r\n\r\n if (typeof proto._fromString !== 'function') {\r\n Object.defineProperty(proto, '_fromString', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function(searchString) {\r\n if (this._entries) {\r\n this._entries = {};\r\n } else {\r\n var keys = [];\r\n this.forEach(function(value, name) {\r\n keys.push(name);\r\n });\r\n for (var i = 0; i < keys.length; i++) {\r\n this.delete(keys[i]);\r\n }\r\n }\r\n\r\n searchString = searchString.replace(/^\\?/, '');\r\n var attributes = searchString.split('&');\r\n var attribute;\r\n for (var i = 0; i < attributes.length; i++) {\r\n attribute = attributes[i].split('=');\r\n this.append(\r\n deserializeParam(attribute[0]),\r\n (attribute.length > 1) ? deserializeParam(attribute[1]) : ''\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n // HTMLAnchorElement\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n /**\r\n * Polyfill URL\r\n *\r\n * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n */\r\n\r\n var checkIfURLIsSupported = function() {\r\n try {\r\n var u = new global.URL('b', 'http://a/');\r\n u.pathname = 'c d';\r\n return (u.href === 'http://a/c%20d') && u.searchParams;\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var polyfillURL = function() {\r\n var _URL = global.URL;\r\n\r\n var URL = function(url, base) {\r\n if (typeof url !== 'string') url = String(url);\r\n if (base && typeof base !== 'string') base = String(base);\r\n\r\n // Only create another document if the base is different from current location.\r\n var doc = document, baseElement;\r\n if (base && (global.location === void 0 || base !== global.location.href)) {\r\n base = base.toLowerCase();\r\n doc = document.implementation.createHTMLDocument('');\r\n baseElement = doc.createElement('base');\r\n baseElement.href = base;\r\n doc.head.appendChild(baseElement);\r\n try {\r\n if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);\r\n } catch (err) {\r\n throw new Error('URL unable to set base ' + base + ' due to ' + err);\r\n }\r\n }\r\n\r\n var anchorElement = doc.createElement('a');\r\n anchorElement.href = url;\r\n if (baseElement) {\r\n doc.body.appendChild(anchorElement);\r\n anchorElement.href = anchorElement.href; // force href to refresh\r\n }\r\n\r\n var inputElement = doc.createElement('input');\r\n inputElement.type = 'url';\r\n inputElement.value = url;\r\n\r\n if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href) || (!inputElement.checkValidity() && !base)) {\r\n throw new TypeError('Invalid URL');\r\n }\r\n\r\n Object.defineProperty(this, '_anchorElement', {\r\n value: anchorElement\r\n });\r\n\r\n\r\n // create a linked searchParams which reflect its changes on URL\r\n var searchParams = new global.URLSearchParams(this.search);\r\n var enableSearchUpdate = true;\r\n var enableSearchParamsUpdate = true;\r\n var _this = this;\r\n ['append', 'delete', 'set'].forEach(function(methodName) {\r\n var method = searchParams[methodName];\r\n searchParams[methodName] = function() {\r\n method.apply(searchParams, arguments);\r\n if (enableSearchUpdate) {\r\n enableSearchParamsUpdate = false;\r\n _this.search = searchParams.toString();\r\n enableSearchParamsUpdate = true;\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperty(this, 'searchParams', {\r\n value: searchParams,\r\n enumerable: true\r\n });\r\n\r\n var search = void 0;\r\n Object.defineProperty(this, '_updateSearchParams', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function() {\r\n if (this.search !== search) {\r\n search = this.search;\r\n if (enableSearchParamsUpdate) {\r\n enableSearchUpdate = false;\r\n this.searchParams._fromString(this.search);\r\n enableSearchUpdate = true;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n var proto = URL.prototype;\r\n\r\n var linkURLWithAnchorAttribute = function(attributeName) {\r\n Object.defineProperty(proto, attributeName, {\r\n get: function() {\r\n return this._anchorElement[attributeName];\r\n },\r\n set: function(value) {\r\n this._anchorElement[attributeName] = value;\r\n },\r\n enumerable: true\r\n });\r\n };\r\n\r\n ['hash', 'host', 'hostname', 'port', 'protocol']\r\n .forEach(function(attributeName) {\r\n linkURLWithAnchorAttribute(attributeName);\r\n });\r\n\r\n Object.defineProperty(proto, 'search', {\r\n get: function() {\r\n return this._anchorElement['search'];\r\n },\r\n set: function(value) {\r\n this._anchorElement['search'] = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n });\r\n\r\n Object.defineProperties(proto, {\r\n\r\n 'toString': {\r\n get: function() {\r\n var _this = this;\r\n return function() {\r\n return _this.href;\r\n };\r\n }\r\n },\r\n\r\n 'href': {\r\n get: function() {\r\n return this._anchorElement.href.replace(/\\?$/, '');\r\n },\r\n set: function(value) {\r\n this._anchorElement.href = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'pathname': {\r\n get: function() {\r\n return this._anchorElement.pathname.replace(/(^\\/?)/, '/');\r\n },\r\n set: function(value) {\r\n this._anchorElement.pathname = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'origin': {\r\n get: function() {\r\n // get expected port from protocol\r\n var expectedPort = { 'http:': 80, 'https:': 443, 'ftp:': 21 }[this._anchorElement.protocol];\r\n // add port to origin if, expected port is different than actual port\r\n // and it is not empty f.e http://foo:8080\r\n // 8080 != 80 && 8080 != ''\r\n var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n this._anchorElement.port !== '';\r\n\r\n return this._anchorElement.protocol +\r\n '//' +\r\n this._anchorElement.hostname +\r\n (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'password': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'username': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n });\r\n\r\n URL.createObjectURL = function(blob) {\r\n return _URL.createObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n URL.revokeObjectURL = function(url) {\r\n return _URL.revokeObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n global.URL = URL;\r\n\r\n };\r\n\r\n if (!checkIfURLIsSupported()) {\r\n polyfillURL();\r\n }\r\n\r\n if ((global.location !== void 0) && !('origin' in global.location)) {\r\n var getOrigin = function() {\r\n return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n };\r\n\r\n try {\r\n Object.defineProperty(global.location, 'origin', {\r\n get: getOrigin,\r\n enumerable: true\r\n });\r\n } catch (e) {\r\n setInterval(function() {\r\n global.location.origin = getOrigin();\r\n }, 100);\r\n }\r\n }\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global global, define, System, Reflect, Promise */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __createBinding;\r\n(function (factory) {\r\n var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n if (typeof define === \"function\" && define.amd) {\r\n define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n }\r\n else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n factory(createExporter(root, createExporter(module.exports)));\r\n }\r\n else {\r\n factory(createExporter(root));\r\n }\r\n function createExporter(exports, previous) {\r\n if (exports !== root) {\r\n if (typeof Object.create === \"function\") {\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n }\r\n else {\r\n exports.__esModule = true;\r\n }\r\n }\r\n return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n }\r\n})\r\n(function (exporter) {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n __extends = function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n\r\n __rest = function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n };\r\n\r\n __decorate = function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n };\r\n\r\n __param = function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n };\r\n\r\n __metadata = function (metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n };\r\n\r\n __awaiter = function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n };\r\n\r\n __generator = function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n };\r\n\r\n __exportStar = function(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n };\r\n\r\n __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n }) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n });\r\n\r\n __values = function (o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n };\r\n\r\n __read = function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spread = function () {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spreadArrays = function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n };\r\n\r\n __spreadArray = function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n };\r\n\r\n __await = function (v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n };\r\n\r\n __asyncGenerator = function (thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n };\r\n\r\n __asyncDelegator = function (o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n };\r\n\r\n __asyncValues = function (o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n };\r\n\r\n __makeTemplateObject = function (cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n };\r\n\r\n var __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n }) : function(o, v) {\r\n o[\"default\"] = v;\r\n };\r\n\r\n __importStar = function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n };\r\n\r\n __importDefault = function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n };\r\n\r\n __classPrivateFieldGet = function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n };\r\n\r\n __classPrivateFieldSet = function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n };\r\n\r\n exporter(\"__extends\", __extends);\r\n exporter(\"__assign\", __assign);\r\n exporter(\"__rest\", __rest);\r\n exporter(\"__decorate\", __decorate);\r\n exporter(\"__param\", __param);\r\n exporter(\"__metadata\", __metadata);\r\n exporter(\"__awaiter\", __awaiter);\r\n exporter(\"__generator\", __generator);\r\n exporter(\"__exportStar\", __exportStar);\r\n exporter(\"__createBinding\", __createBinding);\r\n exporter(\"__values\", __values);\r\n exporter(\"__read\", __read);\r\n exporter(\"__spread\", __spread);\r\n exporter(\"__spreadArrays\", __spreadArrays);\r\n exporter(\"__spreadArray\", __spreadArray);\r\n exporter(\"__await\", __await);\r\n exporter(\"__asyncGenerator\", __asyncGenerator);\r\n exporter(\"__asyncDelegator\", __asyncDelegator);\r\n exporter(\"__asyncValues\", __asyncValues);\r\n exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n exporter(\"__importStar\", __importStar);\r\n exporter(\"__importDefault\", __importDefault);\r\n exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n});\r\n", "/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT \u00A9 Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n try {\n return document.execCommand(type);\n } catch (err) {\n return false;\n }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n var selectedText = select_default()(target);\n command('cut');\n return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n fakeElement.style.fontSize = '12pt'; // Reset box model\n\n fakeElement.style.border = '0';\n fakeElement.style.padding = '0';\n fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n fakeElement.style.position = 'absolute';\n fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n fakeElement.style.top = \"\".concat(yPosition, \"px\");\n fakeElement.setAttribute('readonly', '');\n fakeElement.value = value;\n return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n var fakeElement = createFakeElement(value);\n options.container.appendChild(fakeElement);\n var selectedText = select_default()(fakeElement);\n command('copy');\n fakeElement.remove();\n return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n var selectedText = '';\n\n if (typeof target === 'string') {\n selectedText = fakeCopyAction(target, options);\n } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n selectedText = fakeCopyAction(target.value, options);\n } else {\n selectedText = select_default()(target);\n command('copy');\n }\n\n return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Defines base properties passed from constructor.\n var _options$action = options.action,\n action = _options$action === void 0 ? 'copy' : _options$action,\n container = options.container,\n target = options.target,\n text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n if (action !== 'copy' && action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n } // Sets the `target` property using an element that will be have its content copied.\n\n\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n } // Define selection strategy based on `text` property.\n\n\n if (text) {\n return actions_copy(text, {\n container: container\n });\n } // Defines which selection strategy based on `target` property.\n\n\n if (target) {\n return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n container: container\n });\n }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n var _this;\n\n _classCallCheck(this, Clipboard);\n\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n var action = this.action(trigger) || 'copy';\n var text = actions_default({\n action: action,\n container: this.container,\n target: this.target(trigger),\n text: this.text(trigger)\n }); // Fires an event based on the copy operation result.\n\n this.emit(text ? 'success' : 'error', {\n action: action,\n text: text,\n trigger: trigger,\n clearSelection: function clearSelection() {\n if (trigger) {\n trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Allow fire programmatically a copy action\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @returns Text copied.\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n }\n }], [{\n key: \"copy\",\n value: function copy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n return actions_copy(target, options);\n }\n /**\n * Allow fire programmatically a cut action\n * @param {String|HTMLElement} target\n * @returns Text cutted.\n */\n\n }, {\n key: \"cut\",\n value: function cut(target) {\n return actions_cut(target);\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n\n return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "Array.prototype.flat||Object.defineProperty(Array.prototype,\"flat\",{configurable:!0,value:function r(){var t=isNaN(arguments[0])?1:Number(arguments[0]);return t?Array.prototype.reduce.call(this,function(a,e){return Array.isArray(e)?a.push.apply(a,r.call(e,t-1)):a.push(e),a},[]):Array.prototype.slice.call(this)},writable:!0}),Array.prototype.flatMap||Object.defineProperty(Array.prototype,\"flatMap\",{configurable:!0,value:function(r){return Array.prototype.map.apply(this,arguments).flat()},writable:!0})\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport \"array-flat-polyfill\"\nimport \"focus-visible\"\nimport \"unfetch/polyfill\"\nimport \"url-polyfill\"\n\nimport {\n EMPTY,\n NEVER,\n Subject,\n defer,\n delay,\n filter,\n map,\n merge,\n mergeWith,\n shareReplay,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"./_\"\nimport {\n at,\n getOptionalElement,\n requestJSON,\n setToggle,\n watchDocument,\n watchKeyboard,\n watchLocation,\n watchLocationTarget,\n watchMedia,\n watchPrint,\n watchViewport\n} from \"./browser\"\nimport {\n getComponentElement,\n getComponentElements,\n mountAnnounce,\n mountBackToTop,\n mountConsent,\n mountContent,\n mountDialog,\n mountHeader,\n mountHeaderTitle,\n mountPalette,\n mountSearch,\n mountSearchHiglight,\n mountSidebar,\n mountSource,\n mountTableOfContents,\n mountTabs,\n watchHeader,\n watchMain\n} from \"./components\"\nimport {\n SearchIndex,\n setupClipboardJS,\n setupInstantLoading,\n setupVersionSelector\n} from \"./integrations\"\nimport {\n patchIndeterminate,\n patchScrollfix,\n patchScrolllock\n} from \"./patches\"\nimport \"./polyfills\"\n\n/* ----------------------------------------------------------------------------\n * Application\n * ------------------------------------------------------------------------- */\n\n/* Yay, JavaScript is available */\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Set up navigation observables and subjects */\nconst document$ = watchDocument()\nconst location$ = watchLocation()\nconst target$ = watchLocationTarget()\nconst keyboard$ = watchKeyboard()\n\n/* Set up media observables */\nconst viewport$ = watchViewport()\nconst tablet$ = watchMedia(\"(min-width: 960px)\")\nconst screen$ = watchMedia(\"(min-width: 1220px)\")\nconst print$ = watchPrint()\n\n/* Retrieve search index, if search is enabled */\nconst config = configuration()\nconst index$ = document.forms.namedItem(\"search\")\n ? __search?.index || requestJSON(\n new URL(\"search/search_index.json\", config.base)\n )\n : NEVER\n\n/* Set up Clipboard.js integration */\nconst alert$ = new Subject()\nsetupClipboardJS({ alert$ })\n\n/* Set up instant loading, if enabled */\nif (feature(\"navigation.instant\"))\n setupInstantLoading({ document$, location$, viewport$ })\n\n/* Set up version selector */\nif (config.version?.provider === \"mike\")\n setupVersionSelector({ document$ })\n\n/* Always close drawer and search on navigation */\nmerge(location$, target$)\n .pipe(\n delay(125)\n )\n .subscribe(() => {\n setToggle(\"drawer\", false)\n setToggle(\"search\", false)\n })\n\n/* Set up global keyboard handlers */\nkeyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Go to previous page */\n case \"p\":\n case \",\":\n const prev = getOptionalElement(\"[href][rel=prev]\")\n if (typeof prev !== \"undefined\")\n prev.click()\n break\n\n /* Go to next page */\n case \"n\":\n case \".\":\n const next = getOptionalElement(\"[href][rel=next]\")\n if (typeof next !== \"undefined\")\n next.click()\n break\n }\n })\n\n/* Set up patches */\npatchIndeterminate({ document$, tablet$ })\npatchScrollfix({ document$ })\npatchScrolllock({ viewport$, tablet$ })\n\n/* Set up header and main area observable */\nconst header$ = watchHeader(getComponentElement(\"header\"), { viewport$ })\nconst main$ = document$\n .pipe(\n map(() => getComponentElement(\"main\")),\n switchMap(el => watchMain(el, { viewport$, header$ })),\n shareReplay(1)\n )\n\n/* Set up control component observables */\nconst control$ = merge(\n\n /* Consent */\n ...getComponentElements(\"consent\")\n .map(el => mountConsent(el, { target$ })),\n\n /* Dialog */\n ...getComponentElements(\"dialog\")\n .map(el => mountDialog(el, { alert$ })),\n\n /* Header */\n ...getComponentElements(\"header\")\n .map(el => mountHeader(el, { viewport$, header$, main$ })),\n\n /* Color palette */\n ...getComponentElements(\"palette\")\n .map(el => mountPalette(el)),\n\n /* Search */\n ...getComponentElements(\"search\")\n .map(el => mountSearch(el, { index$, keyboard$ })),\n\n /* Repository information */\n ...getComponentElements(\"source\")\n .map(el => mountSource(el))\n)\n\n/* Set up content component observables */\nconst content$ = defer(() => merge(\n\n /* Announcement bar */\n ...getComponentElements(\"announce\")\n .map(el => mountAnnounce(el)),\n\n /* Content */\n ...getComponentElements(\"content\")\n .map(el => mountContent(el, { viewport$, target$, print$ })),\n\n /* Search highlighting */\n ...getComponentElements(\"content\")\n .map(el => feature(\"search.highlight\")\n ? mountSearchHiglight(el, { index$, location$ })\n : EMPTY\n ),\n\n /* Header title */\n ...getComponentElements(\"header-title\")\n .map(el => mountHeaderTitle(el, { viewport$, header$ })),\n\n /* Sidebar */\n ...getComponentElements(\"sidebar\")\n .map(el => el.getAttribute(\"data-md-type\") === \"navigation\"\n ? at(screen$, () => mountSidebar(el, { viewport$, header$, main$ }))\n : at(tablet$, () => mountSidebar(el, { viewport$, header$, main$ }))\n ),\n\n /* Navigation tabs */\n ...getComponentElements(\"tabs\")\n .map(el => mountTabs(el, { viewport$, header$ })),\n\n /* Table of contents */\n ...getComponentElements(\"toc\")\n .map(el => mountTableOfContents(el, { viewport$, header$, target$ })),\n\n /* Back-to-top button */\n ...getComponentElements(\"top\")\n .map(el => mountBackToTop(el, { viewport$, header$, main$, target$ }))\n))\n\n/* Set up component observables */\nconst component$ = document$\n .pipe(\n switchMap(() => content$),\n mergeWith(control$),\n shareReplay(1)\n )\n\n/* Subscribe to all components */\ncomponent$.subscribe()\n\n/* ----------------------------------------------------------------------------\n * Exports\n * ------------------------------------------------------------------------- */\n\nwindow.document$ = document$ /* Document observable */\nwindow.location$ = location$ /* Location subject */\nwindow.target$ = target$ /* Location target observable */\nwindow.keyboard$ = keyboard$ /* Keyboard observable */\nwindow.viewport$ = viewport$ /* Viewport observable */\nwindow.tablet$ = tablet$ /* Media tablet observable */\nwindow.screen$ = screen$ /* Media screen observable */\nwindow.print$ = print$ /* Media print observable */\nwindow.alert$ = alert$ /* Alert subject */\nwindow.component$ = component$ /* Component observable */\n", "self.fetch||(self.fetch=function(e,n){return n=n||{},new Promise(function(t,s){var r=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(r.status/100|0),statusText:r.statusText,status:r.status,url:r.responseURL,text:function(){return Promise.resolve(r.responseText)},json:function(){return Promise.resolve(r.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([r.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var c in r.open(n.method||\"get\",e,!0),r.onload=function(){r.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},r.onerror=s,r.withCredentials=\"include\"==n.credentials,n.headers)r.setRequestHeader(c,n.headers[c]);r.send(n.body||null)})});\n", "import tslib from '../tslib.js';\r\nconst {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n} = tslib;\r\nexport {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n};\r\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n ReplaySubject,\n Subject,\n fromEvent\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch document\n *\n * Documents are implemented as subjects, so all downstream observables are\n * automatically updated when a new document is emitted.\n *\n * @returns Document subject\n */\nexport function watchDocument(): Subject {\n const document$ = new ReplaySubject(1)\n fromEvent(document, \"DOMContentLoaded\", { once: true })\n .subscribe(() => document$.next(document))\n\n /* Return document */\n return document$\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve all elements matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getElements(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T][]\n\nexport function getElements(\n selector: string, node?: ParentNode\n): T[]\n\nexport function getElements(\n selector: string, node: ParentNode = document\n): T[] {\n return Array.from(node.querySelectorAll(selector))\n}\n\n/**\n * Retrieve an element matching a query selector or throw a reference error\n *\n * Note that this function assumes that the element is present. If unsure if an\n * element is existent, use the `getOptionalElement` function instead.\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getElement(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T]\n\nexport function getElement(\n selector: string, node?: ParentNode\n): T\n\nexport function getElement(\n selector: string, node: ParentNode = document\n): T {\n const el = getOptionalElement(selector, node)\n if (typeof el === \"undefined\")\n throw new ReferenceError(\n `Missing element: expected \"${selector}\" to be present`\n )\n\n /* Return element */\n return el\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Retrieve an optional element matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element or nothing\n */\nexport function getOptionalElement(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T] | undefined\n\nexport function getOptionalElement(\n selector: string, node?: ParentNode\n): T | undefined\n\nexport function getOptionalElement(\n selector: string, node: ParentNode = document\n): T | undefined {\n return node.querySelector(selector) || undefined\n}\n\n/**\n * Retrieve the currently active element\n *\n * @returns Element or nothing\n */\nexport function getActiveElement(): HTMLElement | undefined {\n return document.activeElement instanceof HTMLElement\n ? document.activeElement || undefined\n : undefined\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n debounceTime,\n distinctUntilChanged,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\nimport { getActiveElement } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch element focus\n *\n * Previously, this function used `focus` and `blur` events to determine whether\n * an element is focused, but this doesn't work if there are focusable elements\n * within the elements itself. A better solutions are `focusin` and `focusout`\n * events, which bubble up the tree and allow for more fine-grained control.\n *\n * `debounceTime` is necessary, because when a focus change happens inside an\n * element, the observable would first emit `false` and then `true` again.\n *\n * @param el - Element\n *\n * @returns Element focus observable\n */\nexport function watchElementFocus(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(document.body, \"focusin\"),\n fromEvent(document.body, \"focusout\")\n )\n .pipe(\n debounceTime(1),\n map(() => {\n const active = getActiveElement()\n return typeof active !== \"undefined\"\n ? el.contains(active)\n : false\n }),\n startWith(el === getActiveElement()),\n distinctUntilChanged()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n animationFrameScheduler,\n auditTime,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element offset\n *\n * @param el - Element\n *\n * @returns Element offset\n */\nexport function getElementOffset(\n el: HTMLElement\n): ElementOffset {\n return {\n x: el.offsetLeft,\n y: el.offsetTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element offset\n *\n * @param el - Element\n *\n * @returns Element offset observable\n */\nexport function watchElementOffset(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(window, \"load\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n auditTime(0, animationFrameScheduler),\n map(() => getElementOffset(el)),\n startWith(getElementOffset(el))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n animationFrameScheduler,\n auditTime,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\nimport { ElementOffset } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element content offset (= scroll offset)\n *\n * @param el - Element\n *\n * @returns Element content offset\n */\nexport function getElementContentOffset(\n el: HTMLElement\n): ElementOffset {\n return {\n x: el.scrollLeft,\n y: el.scrollTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element content offset\n *\n * @param el - Element\n *\n * @returns Element content offset observable\n */\nexport function watchElementContentOffset(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(el, \"scroll\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n auditTime(0, animationFrameScheduler),\n map(() => getElementContentOffset(el)),\n startWith(getElementContentOffset(el))\n )\n}\n", "/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ResizeObserver from \"resize-observer-polyfill\"\nimport {\n NEVER,\n Observable,\n Subject,\n defer,\n filter,\n finalize,\n map,\n merge,\n of,\n shareReplay,\n startWith,\n switchMap,\n tap\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementSize {\n width: number /* Element width */\n height: number /* Element height */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Resize observer entry subject\n */\nconst entry$ = new Subject()\n\n/**\n * Resize observer observable\n *\n * This observable will create a `ResizeObserver` on the first subscription\n * and will automatically terminate it when there are no more subscribers.\n * It's quite important to centralize observation in a single `ResizeObserver`,\n * as the performance difference can be quite dramatic, as the link shows.\n *\n * @see https://bit.ly/3iIYfEm - Google Groups on performance\n */\nconst observer$ = defer(() => of(\n new ResizeObserver(entries => {\n for (const entry of entries)\n entry$.next(entry)\n })\n))\n .pipe(\n switchMap(observer => merge(NEVER, of(observer))\n .pipe(\n finalize(() => observer.disconnect())\n )\n ),\n shareReplay(1)\n )\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element size\n *\n * @param el - Element\n *\n * @returns Element size\n */\nexport function getElementSize(\n el: HTMLElement\n): ElementSize {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element size\n *\n * This function returns an observable that subscribes to a single internal\n * instance of `ResizeObserver` upon subscription, and emit resize events until\n * termination. Note that this function should not be called with the same\n * element twice, as the first unsubscription will terminate observation.\n *\n * Sadly, we can't use the `DOMRect` objects returned by the observer, because\n * we need the emitted values to be consistent with `getElementSize`, which will\n * return the used values (rounded) and not actual values (unrounded). Thus, we\n * use the `offset*` properties. See the linked GitHub issue.\n *\n * @see https://bit.ly/3m0k3he - GitHub issue\n *\n * @param el - Element\n *\n * @returns Element size observable\n */\nexport function watchElementSize(\n el: HTMLElement\n): Observable {\n return observer$\n .pipe(\n tap(observer => observer.observe(el)),\n switchMap(observer => entry$\n .pipe(\n filter(({ target }) => target === el),\n finalize(() => observer.unobserve(el)),\n map(() => getElementSize(el))\n )\n ),\n startWith(getElementSize(el))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ElementSize } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element content size (= scroll width and height)\n *\n * @param el - Element\n *\n * @returns Element content size\n */\nexport function getElementContentSize(\n el: HTMLElement\n): ElementSize {\n return {\n width: el.scrollWidth,\n height: el.scrollHeight\n }\n}\n\n/**\n * Retrieve the overflowing container of an element, if any\n *\n * @param el - Element\n *\n * @returns Overflowing container or nothing\n */\nexport function getElementContainer(\n el: HTMLElement\n): HTMLElement | undefined {\n let parent = el.parentElement\n while (parent)\n if (\n el.scrollWidth <= parent.scrollWidth &&\n el.scrollHeight <= parent.scrollHeight\n )\n parent = (el = parent).parentElement\n else\n break\n\n /* Return overflowing container */\n return parent ? el : undefined\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n NEVER,\n Observable,\n Subject,\n defer,\n distinctUntilChanged,\n filter,\n finalize,\n map,\n merge,\n of,\n shareReplay,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport {\n getElementContentSize,\n getElementSize,\n watchElementContentOffset\n} from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Intersection observer entry subject\n */\nconst entry$ = new Subject()\n\n/**\n * Intersection observer observable\n *\n * This observable will create an `IntersectionObserver` on first subscription\n * and will automatically terminate it when there are no more subscribers.\n *\n * @see https://bit.ly/3iIYfEm - Google Groups on performance\n */\nconst observer$ = defer(() => of(\n new IntersectionObserver(entries => {\n for (const entry of entries)\n entry$.next(entry)\n }, {\n threshold: 0\n })\n))\n .pipe(\n switchMap(observer => merge(NEVER, of(observer))\n .pipe(\n finalize(() => observer.disconnect())\n )\n ),\n shareReplay(1)\n )\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch element visibility\n *\n * @param el - Element\n *\n * @returns Element visibility observable\n */\nexport function watchElementVisibility(\n el: HTMLElement\n): Observable {\n return observer$\n .pipe(\n tap(observer => observer.observe(el)),\n switchMap(observer => entry$\n .pipe(\n filter(({ target }) => target === el),\n finalize(() => observer.unobserve(el)),\n map(({ isIntersecting }) => isIntersecting)\n )\n )\n )\n}\n\n/**\n * Watch element boundary\n *\n * This function returns an observable which emits whether the bottom content\n * boundary (= scroll offset) of an element is within a certain threshold.\n *\n * @param el - Element\n * @param threshold - Threshold\n *\n * @returns Element boundary observable\n */\nexport function watchElementBoundary(\n el: HTMLElement, threshold = 16\n): Observable {\n return watchElementContentOffset(el)\n .pipe(\n map(({ y }) => {\n const visible = getElementSize(el)\n const content = getElementContentSize(el)\n return y >= (\n content.height - visible.height - threshold\n )\n }),\n distinctUntilChanged()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n startWith\n} from \"rxjs\"\n\nimport { getElement } from \"../element\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle\n */\nexport type Toggle =\n | \"drawer\" /* Toggle for drawer */\n | \"search\" /* Toggle for search */\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle map\n */\nconst toggles: Record = {\n drawer: getElement(\"[data-md-toggle=drawer]\"),\n search: getElement(\"[data-md-toggle=search]\")\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the value of a toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value\n */\nexport function getToggle(name: Toggle): boolean {\n return toggles[name].checked\n}\n\n/**\n * Set toggle\n *\n * Simulating a click event seems to be the most cross-browser compatible way\n * of changing the value while also emitting a `change` event. Before, Material\n * used `CustomEvent` to programmatically change the value of a toggle, but this\n * is a much simpler and cleaner solution which doesn't require a polyfill.\n *\n * @param name - Toggle\n * @param value - Toggle value\n */\nexport function setToggle(name: Toggle, value: boolean): void {\n if (toggles[name].checked !== value)\n toggles[name].click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value observable\n */\nexport function watchToggle(name: Toggle): Observable {\n const el = toggles[name]\n return fromEvent(el, \"change\")\n .pipe(\n map(() => el.checked),\n startWith(el.checked)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n share\n} from \"rxjs\"\n\nimport { getActiveElement } from \"../element\"\nimport { getToggle } from \"../toggle\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Keyboard mode\n */\nexport type KeyboardMode =\n | \"global\" /* Global */\n | \"search\" /* Search is open */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Keyboard\n */\nexport interface Keyboard {\n mode: KeyboardMode /* Keyboard mode */\n type: string /* Key type */\n claim(): void /* Key claim */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether an element may receive keyboard input\n *\n * @param el - Element\n * @param type - Key type\n *\n * @returns Test result\n */\nfunction isSusceptibleToKeyboard(\n el: HTMLElement, type: string\n): boolean {\n switch (el.constructor) {\n\n /* Input elements */\n case HTMLInputElement:\n /* @ts-expect-error - omit unnecessary type cast */\n if (el.type === \"radio\")\n return /^Arrow/.test(type)\n else\n return true\n\n /* Select element and textarea */\n case HTMLSelectElement:\n case HTMLTextAreaElement:\n return true\n\n /* Everything else */\n default:\n return el.isContentEditable\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch keyboard\n *\n * @returns Keyboard observable\n */\nexport function watchKeyboard(): Observable {\n return fromEvent(window, \"keydown\")\n .pipe(\n filter(ev => !(ev.metaKey || ev.ctrlKey)),\n map(ev => ({\n mode: getToggle(\"search\") ? \"search\" : \"global\",\n type: ev.key,\n claim() {\n ev.preventDefault()\n ev.stopPropagation()\n }\n } as Keyboard)),\n filter(({ mode, type }) => {\n if (mode === \"global\") {\n const active = getActiveElement()\n if (typeof active !== \"undefined\")\n return !isSusceptibleToKeyboard(active, type)\n }\n return true\n }),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Subject } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location\n *\n * This function returns a `URL` object (and not `Location`) to normalize the\n * typings across the application. Furthermore, locations need to be tracked\n * without setting them and `Location` is a singleton which represents the\n * current location.\n *\n * @returns URL\n */\nexport function getLocation(): URL {\n return new URL(location.href)\n}\n\n/**\n * Set location\n *\n * @param url - URL to change to\n */\nexport function setLocation(url: URL): void {\n location.href = url.href\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location\n *\n * @returns Location subject\n */\nexport function watchLocation(): Subject {\n return new Subject()\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { JSX as JSXInternal } from \"preact\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * HTML attributes\n */\ntype Attributes =\n & JSXInternal.HTMLAttributes\n & JSXInternal.SVGAttributes\n & Record\n\n/**\n * Child element\n */\ntype Child =\n | HTMLElement\n | Text\n | string\n | number\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Append a child node to an element\n *\n * @param el - Element\n * @param child - Child node(s)\n */\nfunction appendChild(el: HTMLElement, child: Child | Child[]): void {\n\n /* Handle primitive types (including raw HTML) */\n if (typeof child === \"string\" || typeof child === \"number\") {\n el.innerHTML += child.toString()\n\n /* Handle nodes */\n } else if (child instanceof Node) {\n el.appendChild(child)\n\n /* Handle nested children */\n } else if (Array.isArray(child)) {\n for (const node of child)\n appendChild(el, node)\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * JSX factory\n *\n * @template T - Element type\n *\n * @param tag - HTML tag\n * @param attributes - HTML attributes\n * @param children - Child elements\n *\n * @returns Element\n */\nexport function h(\n tag: T, attributes?: Attributes | null, ...children: Child[]\n): HTMLElementTagNameMap[T]\n\nexport function h(\n tag: string, attributes?: Attributes | null, ...children: Child[]\n): T\n\nexport function h(\n tag: string, attributes?: Attributes | null, ...children: Child[]\n): T {\n const el = document.createElement(tag)\n\n /* Set attributes, if any */\n if (attributes)\n for (const attr of Object.keys(attributes)) {\n if (typeof attributes[attr] === \"undefined\")\n continue\n\n /* Set default attribute or boolean */\n if (typeof attributes[attr] !== \"boolean\")\n el.setAttribute(attr, attributes[attr])\n else\n el.setAttribute(attr, \"\")\n }\n\n /* Append child nodes */\n for (const child of children)\n appendChild(el, child)\n\n /* Return element */\n return el as T\n}\n\n/* ----------------------------------------------------------------------------\n * Namespace\n * ------------------------------------------------------------------------- */\n\nexport declare namespace h {\n namespace JSX {\n type Element = HTMLElement\n type IntrinsicElements = JSXInternal.IntrinsicElements\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Truncate a string after the given number of characters\n *\n * This is not a very reasonable approach, since the summaries kind of suck.\n * It would be better to create something more intelligent, highlighting the\n * search occurrences and making a better summary out of it, but this note was\n * written three years ago, so who knows if we'll ever fix it.\n *\n * @param value - Value to be truncated\n * @param n - Number of characters\n *\n * @returns Truncated value\n */\nexport function truncate(value: string, n: number): string {\n let i = n\n if (value.length > i) {\n while (value[i] !== \" \" && --i > 0) { /* keep eating */ }\n return `${value.substring(0, i)}...`\n }\n return value\n}\n\n/**\n * Round a number for display with repository facts\n *\n * This is a reverse-engineered version of GitHub's weird rounding algorithm\n * for stars, forks and all other numbers. While all numbers below `1,000` are\n * returned as-is, bigger numbers are converted to fixed numbers:\n *\n * - `1,049` => `1k`\n * - `1,050` => `1.1k`\n * - `1,949` => `1.9k`\n * - `1,950` => `2k`\n *\n * @param value - Original value\n *\n * @returns Rounded value\n */\nexport function round(value: number): string {\n if (value > 999) {\n const digits = +((value - 950) % 1000 > 99)\n return `${((value + 0.000001) / 1000).toFixed(digits)}k`\n } else {\n return value.toString()\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n shareReplay,\n startWith\n} from \"rxjs\"\n\nimport { getOptionalElement } from \"~/browser\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location hash\n *\n * @returns Location hash\n */\nexport function getLocationHash(): string {\n return location.hash.substring(1)\n}\n\n/**\n * Set location hash\n *\n * Setting a new fragment identifier via `location.hash` will have no effect\n * if the value doesn't change. When a new fragment identifier is set, we want\n * the browser to target the respective element at all times, which is why we\n * use this dirty little trick.\n *\n * @param hash - Location hash\n */\nexport function setLocationHash(hash: string): void {\n const el = h(\"a\", { href: hash })\n el.addEventListener(\"click\", ev => ev.stopPropagation())\n el.click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location hash\n *\n * @returns Location hash observable\n */\nexport function watchLocationHash(): Observable {\n return fromEvent(window, \"hashchange\")\n .pipe(\n map(getLocationHash),\n startWith(getLocationHash()),\n filter(hash => hash.length > 0),\n shareReplay(1)\n )\n}\n\n/**\n * Watch location target\n *\n * @returns Location target observable\n */\nexport function watchLocationTarget(): Observable {\n return watchLocationHash()\n .pipe(\n map(id => getOptionalElement(`[id=\"${id}\"]`)!),\n filter(el => typeof el !== \"undefined\")\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n fromEvent,\n fromEventPattern,\n map,\n merge,\n startWith,\n switchMap\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch media query\n *\n * Note that although `MediaQueryList.addListener` is deprecated we have to\n * use it, because it's the only way to ensure proper downward compatibility.\n *\n * @see https://bit.ly/3dUBH2m - GitHub issue\n *\n * @param query - Media query\n *\n * @returns Media observable\n */\nexport function watchMedia(query: string): Observable {\n const media = matchMedia(query)\n return fromEventPattern(next => (\n media.addListener(() => next(media.matches))\n ))\n .pipe(\n startWith(media.matches)\n )\n}\n\n/**\n * Watch print mode\n *\n * @returns Print observable\n */\nexport function watchPrint(): Observable {\n const media = matchMedia(\"print\")\n return merge(\n fromEvent(window, \"beforeprint\").pipe(map(() => true)),\n fromEvent(window, \"afterprint\").pipe(map(() => false))\n )\n .pipe(\n startWith(media.matches)\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Toggle an observable with a media observable\n *\n * @template T - Data type\n *\n * @param query$ - Media observable\n * @param factory - Observable factory\n *\n * @returns Toggled observable\n */\nexport function at(\n query$: Observable, factory: () => Observable\n): Observable {\n return query$\n .pipe(\n switchMap(active => active ? factory() : EMPTY)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n catchError,\n from,\n map,\n of,\n shareReplay,\n switchMap,\n throwError\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch the given URL\n *\n * If the request fails (e.g. when dispatched from `file://` locations), the\n * observable will complete without emitting a value.\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Response observable\n */\nexport function request(\n url: URL | string, options: RequestInit = { credentials: \"same-origin\" }\n): Observable {\n return from(fetch(`${url}`, options))\n .pipe(\n catchError(() => EMPTY),\n switchMap(res => res.status !== 200\n ? throwError(() => new Error(res.statusText))\n : of(res)\n )\n )\n}\n\n/**\n * Fetch JSON from the given URL\n *\n * @template T - Data type\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestJSON(\n url: URL | string, options?: RequestInit\n): Observable {\n return request(url, options)\n .pipe(\n switchMap(res => res.json()),\n shareReplay(1)\n )\n}\n\n/**\n * Fetch XML from the given URL\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestXML(\n url: URL | string, options?: RequestInit\n): Observable {\n const dom = new DOMParser()\n return request(url, options)\n .pipe(\n switchMap(res => res.text()),\n map(res => dom.parseFromString(res, \"text/xml\")),\n shareReplay(1)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n defer,\n finalize,\n fromEvent,\n map,\n merge,\n switchMap,\n take,\n throwError\n} from \"rxjs\"\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create and load a `script` element\n *\n * This function returns an observable that will emit when the script was\n * successfully loaded, or throw an error if it didn't.\n *\n * @param src - Script URL\n *\n * @returns Script observable\n */\nexport function watchScript(src: string): Observable {\n const script = h(\"script\", { src })\n return defer(() => {\n document.head.appendChild(script)\n return merge(\n fromEvent(script, \"load\"),\n fromEvent(script, \"error\")\n .pipe(\n switchMap(() => (\n throwError(() => new ReferenceError(`Invalid script: ${src}`))\n ))\n )\n )\n .pipe(\n map(() => undefined),\n finalize(() => document.head.removeChild(script)),\n take(1)\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport offset\n */\nexport interface ViewportOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport offset\n *\n * On iOS Safari, viewport offset can be negative due to overflow scrolling.\n * As this may induce strange behaviors downstream, we'll just limit it to 0.\n *\n * @returns Viewport offset\n */\nexport function getViewportOffset(): ViewportOffset {\n return {\n x: Math.max(0, scrollX),\n y: Math.max(0, scrollY)\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport offset\n *\n * @returns Viewport offset observable\n */\nexport function watchViewportOffset(): Observable {\n return merge(\n fromEvent(window, \"scroll\", { passive: true }),\n fromEvent(window, \"resize\", { passive: true })\n )\n .pipe(\n map(getViewportOffset),\n startWith(getViewportOffset())\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport size\n */\nexport interface ViewportSize {\n width: number /* Viewport width */\n height: number /* Viewport height */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport size\n *\n * @returns Viewport size\n */\nexport function getViewportSize(): ViewportSize {\n return {\n width: innerWidth,\n height: innerHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport size\n *\n * @returns Viewport size observable\n */\nexport function watchViewportSize(): Observable {\n return fromEvent(window, \"resize\", { passive: true })\n .pipe(\n map(getViewportSize),\n startWith(getViewportSize())\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n map,\n shareReplay\n} from \"rxjs\"\n\nimport {\n ViewportOffset,\n watchViewportOffset\n} from \"../offset\"\nimport {\n ViewportSize,\n watchViewportSize\n} from \"../size\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport\n */\nexport interface Viewport {\n offset: ViewportOffset /* Viewport offset */\n size: ViewportSize /* Viewport size */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport\n *\n * @returns Viewport observable\n */\nexport function watchViewport(): Observable {\n return combineLatest([\n watchViewportOffset(),\n watchViewportSize()\n ])\n .pipe(\n map(([offset, size]) => ({ offset, size })),\n shareReplay(1)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n distinctUntilKeyChanged,\n map\n} from \"rxjs\"\n\nimport { Header } from \"~/components\"\n\nimport { getElementOffset } from \"../../element\"\nimport { Viewport } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport relative to element\n *\n * @param el - Element\n * @param options - Options\n *\n * @returns Viewport observable\n */\nexport function watchViewportAt(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n const size$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\")\n )\n\n /* Compute element offset */\n const offset$ = combineLatest([size$, header$])\n .pipe(\n map(() => getElementOffset(el))\n )\n\n /* Compute relative viewport, return hot observable */\n return combineLatest([header$, viewport$, offset$])\n .pipe(\n map(([{ height }, { offset, size }, { x, y }]) => ({\n offset: {\n x: offset.x - x,\n y: offset.y - y + height\n },\n size\n }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n fromEvent,\n map,\n share,\n switchMap,\n tap,\n throttle\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Worker message\n */\nexport interface WorkerMessage {\n type: unknown /* Message type */\n data?: unknown /* Message data */\n}\n\n/**\n * Worker handler\n *\n * @template T - Message type\n */\nexport interface WorkerHandler<\n T extends WorkerMessage\n> {\n tx$: Subject /* Message transmission subject */\n rx$: Observable /* Message receive observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n *\n * @template T - Worker message type\n */\ninterface WatchOptions {\n tx$: Observable /* Message transmission observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch a web worker\n *\n * This function returns an observable that sends all values emitted by the\n * message observable to the web worker. Web worker communication is expected\n * to be bidirectional (request-response) and synchronous. Messages that are\n * emitted during a pending request are throttled, the last one is emitted.\n *\n * @param worker - Web worker\n * @param options - Options\n *\n * @returns Worker message observable\n */\nexport function watchWorker(\n worker: Worker, { tx$ }: WatchOptions\n): Observable {\n\n /* Intercept messages from worker-like objects */\n const rx$ = fromEvent(worker, \"message\")\n .pipe(\n map(({ data }) => data as T)\n )\n\n /* Send and receive messages, return hot observable */\n return tx$\n .pipe(\n throttle(() => rx$, { leading: true, trailing: true }),\n tap(message => worker.postMessage(message)),\n switchMap(() => rx$),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElement, getLocation } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Feature flag\n */\nexport type Flag =\n | \"announce.dismiss\" /* Dismissable announcement bar */\n | \"content.code.annotate\" /* Code annotations */\n | \"content.lazy\" /* Lazy content elements */\n | \"content.tabs.link\" /* Link content tabs */\n | \"header.autohide\" /* Hide header */\n | \"navigation.expand\" /* Automatic expansion */\n | \"navigation.indexes\" /* Section pages */\n | \"navigation.instant\" /* Instant loading */\n | \"navigation.sections\" /* Section navigation */\n | \"navigation.tabs\" /* Tabs navigation */\n | \"navigation.tabs.sticky\" /* Tabs navigation (sticky) */\n | \"navigation.top\" /* Back-to-top button */\n | \"navigation.tracking\" /* Anchor tracking */\n | \"search.highlight\" /* Search highlighting */\n | \"search.share\" /* Search sharing */\n | \"search.suggest\" /* Search suggestions */\n | \"toc.follow\" /* Following table of contents */\n | \"toc.integrate\" /* Integrated table of contents */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Translation\n */\nexport type Translation =\n | \"clipboard.copy\" /* Copy to clipboard */\n | \"clipboard.copied\" /* Copied to clipboard */\n | \"search.config.lang\" /* Search language */\n | \"search.config.pipeline\" /* Search pipeline */\n | \"search.config.separator\" /* Search separator */\n | \"search.placeholder\" /* Search */\n | \"search.result.placeholder\" /* Type to start searching */\n | \"search.result.none\" /* No matching documents */\n | \"search.result.one\" /* 1 matching document */\n | \"search.result.other\" /* # matching documents */\n | \"search.result.more.one\" /* 1 more on this page */\n | \"search.result.more.other\" /* # more on this page */\n | \"search.result.term.missing\" /* Missing */\n | \"select.version.title\" /* Version selector */\n\n/**\n * Translations\n */\nexport type Translations = Record\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Versioning\n */\nexport interface Versioning {\n provider: \"mike\" /* Version provider */\n default?: string /* Default version */\n}\n\n/**\n * Configuration\n */\nexport interface Config {\n base: string /* Base URL */\n features: Flag[] /* Feature flags */\n translations: Translations /* Translations */\n search: string /* Search worker URL */\n tags?: Record /* Tags mapping */\n version?: Versioning /* Versioning */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration and make base URL absolute\n */\nconst script = getElement(\"#__config\")\nconst config: Config = JSON.parse(script.textContent!)\nconfig.base = `${new URL(config.base, getLocation())}`\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration\n *\n * @returns Global configuration\n */\nexport function configuration(): Config {\n return config\n}\n\n/**\n * Check whether a feature flag is enabled\n *\n * @param flag - Feature flag\n *\n * @returns Test result\n */\nexport function feature(flag: Flag): boolean {\n return config.features.includes(flag)\n}\n\n/**\n * Retrieve the translation for the given key\n *\n * @param key - Key to be translated\n * @param value - Positional value, if any\n *\n * @returns Translation\n */\nexport function translation(\n key: Translation, value?: string | number\n): string {\n return typeof value !== \"undefined\"\n ? config.translations[key].replace(\"#\", value.toString())\n : config.translations[key]\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElement, getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component type\n */\nexport type ComponentType =\n | \"announce\" /* Announcement bar */\n | \"container\" /* Container */\n | \"consent\" /* Consent */\n | \"content\" /* Content */\n | \"dialog\" /* Dialog */\n | \"header\" /* Header */\n | \"header-title\" /* Header title */\n | \"header-topic\" /* Header topic */\n | \"main\" /* Main area */\n | \"outdated\" /* Version warning */\n | \"palette\" /* Color palette */\n | \"search\" /* Search */\n | \"search-query\" /* Search input */\n | \"search-result\" /* Search results */\n | \"search-share\" /* Search sharing */\n | \"search-suggest\" /* Search suggestions */\n | \"sidebar\" /* Sidebar */\n | \"skip\" /* Skip link */\n | \"source\" /* Repository information */\n | \"tabs\" /* Navigation tabs */\n | \"toc\" /* Table of contents */\n | \"top\" /* Back-to-top button */\n\n/**\n * Component\n *\n * @template T - Component type\n * @template U - Reference type\n */\nexport type Component<\n T extends {} = {},\n U extends HTMLElement = HTMLElement\n> =\n T & {\n ref: U /* Component reference */\n }\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component type map\n */\ninterface ComponentTypeMap {\n \"announce\": HTMLElement /* Announcement bar */\n \"container\": HTMLElement /* Container */\n \"consent\": HTMLElement /* Consent */\n \"content\": HTMLElement /* Content */\n \"dialog\": HTMLElement /* Dialog */\n \"header\": HTMLElement /* Header */\n \"header-title\": HTMLElement /* Header title */\n \"header-topic\": HTMLElement /* Header topic */\n \"main\": HTMLElement /* Main area */\n \"outdated\": HTMLElement /* Version warning */\n \"palette\": HTMLElement /* Color palette */\n \"search\": HTMLElement /* Search */\n \"search-query\": HTMLInputElement /* Search input */\n \"search-result\": HTMLElement /* Search results */\n \"search-share\": HTMLAnchorElement /* Search sharing */\n \"search-suggest\": HTMLElement /* Search suggestions */\n \"sidebar\": HTMLElement /* Sidebar */\n \"skip\": HTMLAnchorElement /* Skip link */\n \"source\": HTMLAnchorElement /* Repository information */\n \"tabs\": HTMLElement /* Navigation tabs */\n \"toc\": HTMLElement /* Table of contents */\n \"top\": HTMLAnchorElement /* Back-to-top button */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the element for a given component or throw a reference error\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getComponentElement(\n type: T, node: ParentNode = document\n): ComponentTypeMap[T] {\n return getElement(`[data-md-component=${type}]`, node)\n}\n\n/**\n * Retrieve all elements for a given component\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getComponentElements(\n type: T, node: ParentNode = document\n): ComponentTypeMap[T][] {\n return getElements(`[data-md-component=${type}]`, node)\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n finalize,\n fromEvent,\n map,\n startWith,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport { getElement } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Announcement bar\n */\nexport interface Announce {\n hash: number /* Content hash */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch announcement bar\n *\n * @param el - Announcement bar element\n *\n * @returns Announcement bar observable\n */\nexport function watchAnnounce(\n el: HTMLElement\n): Observable {\n const button = getElement(\".md-typeset > :first-child\", el)\n return fromEvent(button, \"click\", { once: true })\n .pipe(\n map(() => getElement(\".md-typeset\", el)),\n map(content => ({ hash: __md_hash(content.innerHTML) }))\n )\n}\n\n/**\n * Mount announcement bar\n *\n * @param el - Announcement bar element\n *\n * @returns Announcement bar component observable\n */\nexport function mountAnnounce(\n el: HTMLElement\n): Observable> {\n if (!feature(\"announce.dismiss\") || !el.childElementCount)\n return EMPTY\n\n /* Mount component on subscription */\n return defer(() => {\n const push$ = new Subject()\n push$\n .pipe(\n startWith({ hash: __md_get(\"__announce\") })\n )\n .subscribe(({ hash }) => {\n if (hash && hash === (__md_get(\"__announce\") ?? hash)) {\n el.hidden = true\n\n /* Persist preference in local storage */\n __md_set(\"__announce\", hash)\n }\n })\n\n /* Create and return component */\n return watchAnnounce(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n finalize,\n map,\n tap\n} from \"rxjs\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Consent\n */\nexport interface Consent {\n hidden: boolean /* Consent is hidden */\n}\n\n/**\n * Consent defaults\n */\nexport interface ConsentDefaults {\n analytics?: boolean /* Consent for Analytics */\n github?: boolean /* Consent for GitHub */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n target$: Observable /* Target observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch consent\n *\n * @param el - Consent element\n * @param options - Options\n *\n * @returns Consent observable\n */\nexport function watchConsent(\n el: HTMLElement, { target$ }: WatchOptions\n): Observable {\n return target$\n .pipe(\n map(target => ({ hidden: target !== el }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount consent\n *\n * @param el - Consent element\n * @param options - Options\n *\n * @returns Consent component observable\n */\nexport function mountConsent(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const internal$ = new Subject()\n internal$.subscribe(({ hidden }) => {\n el.hidden = hidden\n })\n\n /* Create and return component */\n return watchConsent(el, options)\n .pipe(\n tap(state => internal$.next(state)),\n finalize(() => internal$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ClipboardJS from \"clipboard\"\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n finalize,\n map,\n mergeWith,\n switchMap,\n take,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n getElementContentSize,\n watchElementSize,\n watchElementVisibility\n} from \"~/browser\"\nimport { renderClipboardButton } from \"~/templates\"\n\nimport { Component } from \"../../../_\"\nimport {\n Annotation,\n mountAnnotationList\n} from \"../../annotation\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Code block\n */\nexport interface CodeBlock {\n scrollable: boolean /* Code block overflows */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Global sequence number for code blocks\n */\nlet sequence = 0\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Find candidate list element directly following a code block\n *\n * @param el - Code block element\n *\n * @returns List element or nothing\n */\nfunction findCandidateList(el: HTMLElement): HTMLElement | undefined {\n if (el.nextElementSibling) {\n const sibling = el.nextElementSibling as HTMLElement\n if (sibling.tagName === \"OL\")\n return sibling\n\n /* Skip empty paragraphs - see https://bit.ly/3r4ZJ2O */\n else if (sibling.tagName === \"P\" && !sibling.children.length)\n return findCandidateList(sibling)\n }\n\n /* Everything else */\n return undefined\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch code block\n *\n * This function monitors size changes of the viewport, as well as switches of\n * content tabs with embedded code blocks, as both may trigger overflow.\n *\n * @param el - Code block element\n *\n * @returns Code block observable\n */\nexport function watchCodeBlock(\n el: HTMLElement\n): Observable {\n return watchElementSize(el)\n .pipe(\n map(({ width }) => {\n const content = getElementContentSize(el)\n return {\n scrollable: content.width > width\n }\n }),\n distinctUntilKeyChanged(\"scrollable\")\n )\n}\n\n/**\n * Mount code block\n *\n * This function ensures that an overflowing code block is focusable through\n * keyboard, so it can be scrolled without a mouse to improve on accessibility.\n * Furthermore, if code annotations are enabled, they are mounted if and only\n * if the code block is currently visible, e.g., not in a hidden content tab.\n *\n * Note that code blocks may be mounted eagerly or lazily. If they're mounted\n * lazily (on first visibility), code annotation anchor links will not work,\n * as they are evaluated on initial page load, and code annotations in general\n * might feel a little bumpier.\n *\n * @param el - Code block element\n * @param options - Options\n *\n * @returns Code block and annotation component observable\n */\nexport function mountCodeBlock(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const { matches: hover } = matchMedia(\"(hover)\")\n\n /* Defer mounting of code block - see https://bit.ly/3vHVoVD */\n const factory$ = defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ scrollable }) => {\n if (scrollable && hover)\n el.setAttribute(\"tabindex\", \"0\")\n else\n el.removeAttribute(\"tabindex\")\n })\n\n /* Render button for Clipboard.js integration */\n if (ClipboardJS.isSupported()) {\n const parent = el.closest(\"pre\")!\n parent.id = `__code_${++sequence}`\n parent.insertBefore(\n renderClipboardButton(parent.id),\n el\n )\n }\n\n /* Handle code annotations */\n const container = el.closest(\".highlight\")\n if (container instanceof HTMLElement) {\n const list = findCandidateList(container)\n\n /* Mount code annotations, if enabled */\n if (typeof list !== \"undefined\" && (\n container.classList.contains(\"annotate\") ||\n feature(\"content.code.annotate\")\n )) {\n const annotations$ = mountAnnotationList(list, el, options)\n\n /* Create and return component */\n return watchCodeBlock(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state })),\n mergeWith(\n watchElementSize(container)\n .pipe(\n map(({ width, height }) => width && height),\n distinctUntilChanged(),\n switchMap(active => active ? annotations$ : EMPTY)\n )\n )\n )\n }\n }\n\n /* Create and return component */\n return watchCodeBlock(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n\n /* Mount code block lazily */\n if (feature(\"content.lazy\"))\n return watchElementVisibility(el)\n .pipe(\n filter(visible => visible),\n take(1),\n switchMap(() => factory$)\n )\n\n /* Mount code block */\n return factory$\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a tooltip\n *\n * @param id - Tooltip identifier\n *\n * @returns Element\n */\nexport function renderTooltip(id?: string): HTMLElement {\n return (\n
    \n
    \n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\nimport { renderTooltip } from \"../tooltip\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render an annotation\n *\n * @param id - Annotation identifier\n * @param prefix - Tooltip identifier prefix\n *\n * @returns Element\n */\nexport function renderAnnotation(\n id: string | number, prefix?: string\n): HTMLElement {\n prefix = prefix ? `${prefix}_annotation_${id}` : undefined\n\n /* Render tooltip with anchor, if given */\n if (prefix) {\n const anchor = prefix ? `#${prefix}` : undefined\n return (\n \n )\n } else {\n return (\n \n )\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { translation } from \"~/_\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a 'copy-to-clipboard' button\n *\n * @param id - Unique identifier\n *\n * @returns Element\n */\nexport function renderClipboardButton(id: string): HTMLElement {\n return (\n code`}\n >\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ComponentChild } from \"preact\"\n\nimport { configuration, feature, translation } from \"~/_\"\nimport {\n SearchDocument,\n SearchMetadata,\n SearchResultItem\n} from \"~/integrations/search\"\nimport { h, truncate } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Render flag\n */\nconst enum Flag {\n TEASER = 1, /* Render teaser */\n PARENT = 2 /* Render as parent */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper function\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search document\n *\n * @param document - Search document\n * @param flag - Render flags\n *\n * @returns Element\n */\nfunction renderSearchDocument(\n document: SearchDocument & SearchMetadata, flag: Flag\n): HTMLElement {\n const parent = flag & Flag.PARENT\n const teaser = flag & Flag.TEASER\n\n /* Render missing query terms */\n const missing = Object.keys(document.terms)\n .filter(key => !document.terms[key])\n .reduce((list, key) => [\n ...list, {key}, \" \"\n ], [])\n .slice(0, -1)\n\n /* Assemble query string for highlighting */\n const url = new URL(document.location)\n if (feature(\"search.highlight\"))\n url.searchParams.set(\"h\", Object.entries(document.terms)\n .filter(([, match]) => match)\n .reduce((highlight, [value]) => `${highlight} ${value}`.trim(), \"\")\n )\n\n /* Render article or section, depending on flags */\n const { tags } = configuration()\n return (\n \n \n {parent > 0 &&
    }\n

    {document.title}

    \n {teaser > 0 && document.text.length > 0 &&\n

    \n {truncate(document.text, 320)}\n

    \n }\n {document.tags && (\n
    \n {document.tags.map(tag => {\n const id = tag.replace(/<[^>]+>/g, \"\")\n const type = tags\n ? id in tags\n ? `md-tag-icon md-tag-icon--${tags[id]}`\n : \"md-tag-icon\"\n : \"\"\n return (\n {tag}\n )\n })}\n
    \n )}\n {teaser > 0 && missing.length > 0 &&\n

    \n {translation(\"search.result.term.missing\")}: {...missing}\n

    \n }\n \n
    \n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search result\n *\n * @param result - Search result\n *\n * @returns Element\n */\nexport function renderSearchResultItem(\n result: SearchResultItem\n): HTMLElement {\n const threshold = result[0].score\n const docs = [...result]\n\n /* Find and extract parent article */\n const parent = docs.findIndex(doc => !doc.location.includes(\"#\"))\n const [article] = docs.splice(parent, 1)\n\n /* Determine last index above threshold */\n let index = docs.findIndex(doc => doc.score < threshold)\n if (index === -1)\n index = docs.length\n\n /* Partition sections */\n const best = docs.slice(0, index)\n const more = docs.slice(index)\n\n /* Render children */\n const children = [\n renderSearchDocument(article, Flag.PARENT | +(!parent && index === 0)),\n ...best.map(section => renderSearchDocument(section, Flag.TEASER)),\n ...more.length ? [\n
    \n \n {more.length > 0 && more.length === 1\n ? translation(\"search.result.more.one\")\n : translation(\"search.result.more.other\", more.length)\n }\n \n {...more.map(section => renderSearchDocument(section, Flag.TEASER))}\n
    \n ] : []\n ]\n\n /* Render search result */\n return (\n
  • \n {children}\n
  • \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SourceFacts } from \"~/components\"\nimport { h, round } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render repository facts\n *\n * @param facts - Repository facts\n *\n * @returns Element\n */\nexport function renderSourceFacts(facts: SourceFacts): HTMLElement {\n return (\n
      \n {Object.entries(facts).map(([key, value]) => (\n
    • \n {typeof value === \"number\" ? round(value) : value}\n
    • \n ))}\n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Tabbed control type\n */\ntype TabbedControlType =\n | \"prev\"\n | \"next\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render control for content tabs\n *\n * @param type - Control type\n *\n * @returns Element\n */\nexport function renderTabbedControl(\n type: TabbedControlType\n): HTMLElement {\n const classes = `tabbed-control tabbed-control--${type}`\n return (\n \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a table inside a wrapper to improve scrolling on mobile\n *\n * @param table - Table element\n *\n * @returns Element\n */\nexport function renderTable(table: HTMLElement): HTMLElement {\n return (\n
    \n
    \n {table}\n
    \n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { configuration, translation } from \"~/_\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Version\n */\nexport interface Version {\n version: string /* Version identifier */\n title: string /* Version title */\n aliases: string[] /* Version aliases */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a version\n *\n * @param version - Version\n *\n * @returns Element\n */\nfunction renderVersion(version: Version): HTMLElement {\n const config = configuration()\n\n /* Ensure trailing slash - see https://bit.ly/3rL5u3f */\n const url = new URL(`../${version.version}/`, config.base)\n return (\n
  • \n \n {version.title}\n \n
  • \n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a version selector\n *\n * @param versions - Versions\n * @param active - Active version\n *\n * @returns Element\n */\nexport function renderVersionSelector(\n versions: Version[], active: Version\n): HTMLElement {\n return (\n
    \n \n {active.title}\n \n
      \n {versions.map(renderVersion)}\n
    \n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n auditTime,\n combineLatest,\n debounceTime,\n defer,\n delay,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n switchMap,\n take,\n takeLast,\n takeUntil,\n tap,\n throttleTime,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n ElementOffset,\n getActiveElement,\n getElementSize,\n watchElementContentOffset,\n watchElementFocus,\n watchElementOffset,\n watchElementVisibility\n} from \"~/browser\"\n\nimport { Component } from \"../../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Annotation\n */\nexport interface Annotation {\n active: boolean /* Annotation is active */\n offset: ElementOffset /* Annotation offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch annotation\n *\n * @param el - Annotation element\n * @param container - Containing element\n *\n * @returns Annotation observable\n */\nexport function watchAnnotation(\n el: HTMLElement, container: HTMLElement\n): Observable {\n const offset$ = defer(() => combineLatest([\n watchElementOffset(el),\n watchElementContentOffset(container)\n ]))\n .pipe(\n map(([{ x, y }, scroll]): ElementOffset => {\n const { width, height } = getElementSize(el)\n return ({\n x: x - scroll.x + width / 2,\n y: y - scroll.y + height / 2\n })\n })\n )\n\n /* Actively watch annotation on focus */\n return watchElementFocus(el)\n .pipe(\n switchMap(active => offset$\n .pipe(\n map(offset => ({ active, offset })),\n take(+!active || Infinity)\n )\n )\n )\n}\n\n/**\n * Mount annotation\n *\n * @param el - Annotation element\n * @param container - Containing element\n * @param options - Options\n *\n * @returns Annotation component observable\n */\nexport function mountAnnotation(\n el: HTMLElement, container: HTMLElement, { target$ }: MountOptions\n): Observable> {\n const [tooltip, index] = Array.from(el.children)\n\n /* Mount component on subscription */\n return defer(() => {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n push$.subscribe({\n\n /* Handle emission */\n next({ offset }) {\n el.style.setProperty(\"--md-tooltip-x\", `${offset.x}px`)\n el.style.setProperty(\"--md-tooltip-y\", `${offset.y}px`)\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-tooltip-x\")\n el.style.removeProperty(\"--md-tooltip-y\")\n }\n })\n\n /* Start animation only when annotation is visible */\n watchElementVisibility(el)\n .pipe(\n takeUntil(done$)\n )\n .subscribe(visible => {\n el.toggleAttribute(\"data-md-visible\", visible)\n })\n\n /* Toggle tooltip presence to mitigate empty lines when copying */\n merge(\n push$.pipe(filter(({ active }) => active)),\n push$.pipe(debounceTime(250), filter(({ active }) => !active))\n )\n .subscribe({\n\n /* Handle emission */\n next({ active }) {\n if (active)\n el.prepend(tooltip)\n else\n tooltip.remove()\n },\n\n /* Handle complete */\n complete() {\n el.prepend(tooltip)\n }\n })\n\n /* Toggle tooltip visibility */\n push$\n .pipe(\n auditTime(16, animationFrameScheduler)\n )\n .subscribe(({ active }) => {\n tooltip.classList.toggle(\"md-tooltip--active\", active)\n })\n\n /* Track relative origin of tooltip */\n push$\n .pipe(\n throttleTime(125, animationFrameScheduler),\n filter(() => !!el.offsetParent),\n map(() => el.offsetParent!.getBoundingClientRect()),\n map(({ x }) => x)\n )\n .subscribe({\n\n /* Handle emission */\n next(origin) {\n if (origin)\n el.style.setProperty(\"--md-tooltip-0\", `${-origin}px`)\n else\n el.style.removeProperty(\"--md-tooltip-0\")\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-tooltip-0\")\n }\n })\n\n /* Allow to copy link without scrolling to anchor */\n fromEvent(index, \"click\")\n .pipe(\n takeUntil(done$),\n filter(ev => !(ev.metaKey || ev.ctrlKey))\n )\n .subscribe(ev => ev.preventDefault())\n\n /* Allow to open link in new tab or blur on close */\n fromEvent(index, \"mousedown\")\n .pipe(\n takeUntil(done$),\n withLatestFrom(push$)\n )\n .subscribe(([ev, { active }]) => {\n\n /* Open in new tab */\n if (ev.button !== 0 || ev.metaKey || ev.ctrlKey) {\n ev.preventDefault()\n\n /* Close annotation */\n } else if (active) {\n ev.preventDefault()\n\n /* Focus parent annotation, if any */\n const parent = el.parentElement!.closest(\".md-annotation\")\n if (parent instanceof HTMLElement)\n parent.focus()\n else\n getActiveElement()?.blur()\n }\n })\n\n /* Open and focus annotation on location target */\n target$\n .pipe(\n takeUntil(done$),\n filter(target => target === tooltip),\n delay(125)\n )\n .subscribe(() => el.focus())\n\n /* Create and return component */\n return watchAnnotation(el, container)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n finalize,\n merge,\n share,\n takeLast,\n takeUntil\n} from \"rxjs\"\n\nimport {\n getElement,\n getElements,\n getOptionalElement\n} from \"~/browser\"\nimport { renderAnnotation } from \"~/templates\"\n\nimport { Component } from \"../../../_\"\nimport {\n Annotation,\n mountAnnotation\n} from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Find all annotation markers in the given code block\n *\n * @param container - Containing element\n *\n * @returns Annotation markers\n */\nfunction findAnnotationMarkers(container: HTMLElement): Text[] {\n const markers: Text[] = []\n for (const el of getElements(\".c, .c1, .cm\", container)) {\n const nodes: Text[] = []\n\n /* Find all text nodes in current element */\n const it = document.createNodeIterator(el, NodeFilter.SHOW_TEXT)\n for (let node = it.nextNode(); node; node = it.nextNode())\n nodes.push(node as Text)\n\n /* Find all markers in each text node */\n for (let text of nodes) {\n let match: RegExpExecArray | null\n\n /* Split text at marker and add to list */\n while ((match = /(\\(\\d+\\))(!)?/.exec(text.textContent!))) {\n const [, id, force] = match\n if (typeof force === \"undefined\") {\n const marker = text.splitText(match.index)\n text = marker.splitText(id.length)\n markers.push(marker)\n\n /* Replace entire text with marker */\n } else {\n text.textContent = id\n markers.push(text)\n break\n }\n }\n }\n }\n return markers\n}\n\n/**\n * Swap the child nodes of two elements\n *\n * @param source - Source element\n * @param target - Target element\n */\nfunction swap(source: HTMLElement, target: HTMLElement): void {\n target.append(...Array.from(source.childNodes))\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount annotation list\n *\n * This function analyzes the containing code block and checks for markers\n * referring to elements in the given annotation list. If no markers are found,\n * the list is left untouched. Otherwise, list elements are rendered as\n * annotations inside the code block.\n *\n * @param el - Annotation list element\n * @param container - Containing element\n * @param options - Options\n *\n * @returns Annotation component observable\n */\nexport function mountAnnotationList(\n el: HTMLElement, container: HTMLElement, { target$, print$ }: MountOptions\n): Observable> {\n\n /* Compute prefix for tooltip anchors */\n const parent = container.closest(\"[id]\")\n const prefix = parent?.id\n\n /* Find and replace all markers with empty annotations */\n const annotations = new Map()\n for (const marker of findAnnotationMarkers(container)) {\n const [, id] = marker.textContent!.match(/\\((\\d+)\\)/)!\n if (getOptionalElement(`li:nth-child(${id})`, el)) {\n annotations.set(id, renderAnnotation(id, prefix))\n marker.replaceWith(annotations.get(id)!)\n }\n }\n\n /* Keep list if there are no annotations to render */\n if (annotations.size === 0)\n return EMPTY\n\n /* Mount component on subscription */\n return defer(() => {\n const done$ = new Subject()\n\n /* Retrieve container pairs for swapping */\n const pairs: [HTMLElement, HTMLElement][] = []\n for (const [id, annotation] of annotations)\n pairs.push([\n getElement(\".md-typeset\", annotation),\n getElement(`li:nth-child(${id})`, el)\n ])\n\n /* Handle print mode - see https://bit.ly/3rgPdpt */\n print$\n .pipe(\n takeUntil(done$.pipe(takeLast(1)))\n )\n .subscribe(active => {\n el.hidden = !active\n\n /* Show annotations in code block or list (print) */\n for (const [inner, child] of pairs)\n if (!active)\n swap(child, inner)\n else\n swap(inner, child)\n })\n\n /* Create and return component */\n return merge(...[...annotations]\n .map(([, annotation]) => (\n mountAnnotation(annotation, container, { target$ })\n ))\n )\n .pipe(\n finalize(() => done$.complete()),\n share()\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n map,\n of,\n shareReplay,\n tap\n} from \"rxjs\"\n\nimport { watchScript } from \"~/browser\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../../_\"\n\nimport themeCSS from \"./index.css\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mermaid diagram\n */\nexport interface Mermaid {}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Mermaid instance observable\n */\nlet mermaid$: Observable\n\n/**\n * Global sequence number for diagrams\n */\nlet sequence = 0\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch Mermaid script\n *\n * @returns Mermaid scripts observable\n */\nfunction fetchScripts(): Observable {\n return typeof mermaid === \"undefined\" || mermaid instanceof Element\n ? watchScript(\"https://unpkg.com/mermaid@9.1.7/dist/mermaid.min.js/")\n : of(undefined)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount Mermaid diagram\n *\n * @param el - Code block element\n *\n * @returns Mermaid diagram component observable\n */\nexport function mountMermaid(\n el: HTMLElement\n): Observable> {\n el.classList.remove(\"mermaid\") // Hack: mitigate https://bit.ly/3CiN6Du\n mermaid$ ||= fetchScripts()\n .pipe(\n tap(() => mermaid.initialize({\n startOnLoad: false,\n themeCSS,\n sequence: {\n actorFontSize: \"16px\", // Hack: mitigate https://bit.ly/3y0NEi3\n messageFontSize: \"16px\",\n noteFontSize: \"16px\"\n }\n })),\n map(() => undefined),\n shareReplay(1)\n )\n\n /* Render diagram */\n mermaid$.subscribe(() => {\n el.classList.add(\"mermaid\") // Hack: mitigate https://bit.ly/3CiN6Du\n const id = `__mermaid_${sequence++}`\n const host = h(\"div\", { class: \"mermaid\" })\n mermaid.mermaidAPI.render(id, el.textContent, (svg: string) => {\n\n /* Create a shadow root and inject diagram */\n const shadow = host.attachShadow({ mode: \"closed\" })\n shadow.innerHTML = svg\n\n /* Replace code block with diagram */\n el.replaceWith(host)\n })\n })\n\n /* Create and return component */\n return mermaid$\n .pipe(\n map(() => ({ ref: el }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n filter,\n finalize,\n map,\n merge,\n tap\n} from \"rxjs\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Details\n */\nexport interface Details {\n action: \"open\" | \"close\" /* Details state */\n reveal?: boolean /* Details is revealed */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch details\n *\n * @param el - Details element\n * @param options - Options\n *\n * @returns Details observable\n */\nexport function watchDetails(\n el: HTMLDetailsElement, { target$, print$ }: WatchOptions\n): Observable
    {\n let open = true\n return merge(\n\n /* Open and focus details on location target */\n target$\n .pipe(\n map(target => target.closest(\"details:not([open])\")!),\n filter(details => el === details),\n map(() => ({\n action: \"open\", reveal: true\n }) as Details)\n ),\n\n /* Open details on print and close afterwards */\n print$\n .pipe(\n filter(active => active || !open),\n tap(() => open = el.open),\n map(active => ({\n action: active ? \"open\" : \"close\"\n }) as Details)\n )\n )\n}\n\n/**\n * Mount details\n *\n * This function ensures that `details` tags are opened on anchor jumps and\n * prior to printing, so the whole content of the page is visible.\n *\n * @param el - Details element\n * @param options - Options\n *\n * @returns Details component observable\n */\nexport function mountDetails(\n el: HTMLDetailsElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject
    ()\n push$.subscribe(({ action, reveal }) => {\n el.toggleAttribute(\"open\", action === \"open\")\n if (reveal)\n el.scrollIntoView()\n })\n\n /* Create and return component */\n return watchDetails(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, of } from \"rxjs\"\n\nimport { renderTable } from \"~/templates\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Data table\n */\nexport interface DataTable {}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Sentinel for replacement\n */\nconst sentinel = h(\"table\")\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount data table\n *\n * This function wraps a data table in another scrollable container, so it can\n * be smoothly scrolled on smaller screen sizes and won't break the layout.\n *\n * @param el - Data table element\n *\n * @returns Data table component observable\n */\nexport function mountDataTable(\n el: HTMLElement\n): Observable> {\n el.replaceWith(sentinel)\n sentinel.replaceWith(renderTable(el))\n\n /* Create and return component */\n return of({ ref: el })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n asyncScheduler,\n auditTime,\n combineLatest,\n defer,\n finalize,\n fromEvent,\n map,\n merge,\n skip,\n startWith,\n subscribeOn,\n takeLast,\n takeUntil,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n getElement,\n getElementContentOffset,\n getElementContentSize,\n getElementOffset,\n getElementSize,\n getElements,\n watchElementContentOffset,\n watchElementSize\n} from \"~/browser\"\nimport { renderTabbedControl } from \"~/templates\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Content tabs\n */\nexport interface ContentTabs {\n active: HTMLLabelElement /* Active tab label */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch content tabs\n *\n * @param el - Content tabs element\n *\n * @returns Content tabs observable\n */\nexport function watchContentTabs(\n el: HTMLElement\n): Observable {\n const inputs = getElements(\":scope > input\", el)\n const initial = inputs.find(input => input.checked) || inputs[0]\n return merge(...inputs.map(input => fromEvent(input, \"change\")\n .pipe(\n map(() => getElement(`label[for=\"${input.id}\"]`))\n )\n ))\n .pipe(\n startWith(getElement(`label[for=\"${initial.id}\"]`)),\n map(active => ({ active }))\n )\n}\n\n/**\n * Mount content tabs\n *\n * This function scrolls the active tab into view. While this functionality is\n * provided by browsers as part of `scrollInfoView`, browsers will always also\n * scroll the vertical axis, which we do not want. Thus, we decided to provide\n * this functionality ourselves.\n *\n * @param el - Content tabs element\n * @param options - Options\n *\n * @returns Content tabs component observable\n */\nexport function mountContentTabs(\n el: HTMLElement, { viewport$ }: MountOptions\n): Observable> {\n\n /* Render content tab previous button for pagination */\n const prev = renderTabbedControl(\"prev\")\n el.append(prev)\n\n /* Render content tab next button for pagination */\n const next = renderTabbedControl(\"next\")\n el.append(next)\n\n /* Mount component on subscription */\n const container = getElement(\".tabbed-labels\", el)\n return defer(() => {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n combineLatest([push$, watchElementSize(el)])\n .pipe(\n auditTime(1, animationFrameScheduler),\n takeUntil(done$)\n )\n .subscribe({\n\n /* Handle emission */\n next([{ active }, size]) {\n const offset = getElementOffset(active)\n const { width } = getElementSize(active)\n\n /* Set tab indicator offset and width */\n el.style.setProperty(\"--md-indicator-x\", `${offset.x}px`)\n el.style.setProperty(\"--md-indicator-width\", `${width}px`)\n\n /* Scroll container to active content tab */\n const content = getElementContentOffset(container)\n if (\n offset.x < content.x ||\n offset.x + width > content.x + size.width\n )\n container.scrollTo({\n left: Math.max(0, offset.x - 16),\n behavior: \"smooth\"\n })\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-indicator-x\")\n el.style.removeProperty(\"--md-indicator-width\")\n }\n })\n\n /* Hide content tab buttons on borders */\n combineLatest([\n watchElementContentOffset(container),\n watchElementSize(container)\n ])\n .pipe(\n takeUntil(done$)\n )\n .subscribe(([offset, size]) => {\n const content = getElementContentSize(container)\n prev.hidden = offset.x < 16\n next.hidden = offset.x > content.width - size.width - 16\n })\n\n /* Paginate content tab container on click */\n merge(\n fromEvent(prev, \"click\").pipe(map(() => -1)),\n fromEvent(next, \"click\").pipe(map(() => +1))\n )\n .pipe(\n takeUntil(done$)\n )\n .subscribe(direction => {\n const { width } = getElementSize(container)\n container.scrollBy({\n left: width * direction,\n behavior: \"smooth\"\n })\n })\n\n /* Set up linking of content tabs, if enabled */\n if (feature(\"content.tabs.link\"))\n push$.pipe(\n skip(1),\n withLatestFrom(viewport$)\n )\n .subscribe(([{ active }, { offset }]) => {\n const tab = active.innerText.trim()\n if (active.hasAttribute(\"data-md-switching\")) {\n active.removeAttribute(\"data-md-switching\")\n\n /* Determine viewport offset of active tab */\n } else {\n const y = el.offsetTop - offset.y\n\n /* Passively activate other tabs */\n for (const set of getElements(\"[data-tabs]\"))\n for (const input of getElements(\n \":scope > input\", set\n )) {\n const label = getElement(`label[for=\"${input.id}\"]`)\n if (\n label !== active &&\n label.innerText.trim() === tab\n ) {\n label.setAttribute(\"data-md-switching\", \"\")\n input.click()\n break\n }\n }\n\n /* Bring active tab into view */\n window.scrollTo({\n top: el.offsetTop - y\n })\n\n /* Persist active tabs in local storage */\n const tabs = __md_get(\"__tabs\") || []\n __md_set(\"__tabs\", [...new Set([tab, ...tabs])])\n }\n })\n\n /* Create and return component */\n return watchContentTabs(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n .pipe(\n subscribeOn(asyncScheduler)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, merge } from \"rxjs\"\n\nimport { Viewport, getElements } from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Annotation } from \"../annotation\"\nimport {\n CodeBlock,\n Mermaid,\n mountCodeBlock,\n mountMermaid\n} from \"../code\"\nimport {\n Details,\n mountDetails\n} from \"../details\"\nimport {\n DataTable,\n mountDataTable\n} from \"../table\"\nimport {\n ContentTabs,\n mountContentTabs\n} from \"../tabs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Content\n */\nexport type Content =\n | Annotation\n | ContentTabs\n | CodeBlock\n | Mermaid\n | DataTable\n | Details\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount content\n *\n * This function mounts all components that are found in the content of the\n * actual article, including code blocks, data tables and details.\n *\n * @param el - Content element\n * @param options - Options\n *\n * @returns Content component observable\n */\nexport function mountContent(\n el: HTMLElement, { viewport$, target$, print$ }: MountOptions\n): Observable> {\n return merge(\n\n /* Code blocks */\n ...getElements(\"pre:not(.mermaid) > code\", el)\n .map(child => mountCodeBlock(child, { target$, print$ })),\n\n /* Mermaid diagrams */\n ...getElements(\"pre.mermaid\", el)\n .map(child => mountMermaid(child)),\n\n /* Data tables */\n ...getElements(\"table:not([class])\", el)\n .map(child => mountDataTable(child)),\n\n /* Details */\n ...getElements(\"details\", el)\n .map(child => mountDetails(child, { target$, print$ })),\n\n /* Content tabs */\n ...getElements(\"[data-tabs]\", el)\n .map(child => mountContentTabs(child, { viewport$ }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n delay,\n finalize,\n map,\n merge,\n of,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { getElement } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Dialog\n */\nexport interface Dialog {\n message: string /* Dialog message */\n active: boolean /* Dialog is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n alert$: Subject /* Alert subject */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n alert$: Subject /* Alert subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch dialog\n *\n * @param _el - Dialog element\n * @param options - Options\n *\n * @returns Dialog observable\n */\nexport function watchDialog(\n _el: HTMLElement, { alert$ }: WatchOptions\n): Observable {\n return alert$\n .pipe(\n switchMap(message => merge(\n of(true),\n of(false).pipe(delay(2000))\n )\n .pipe(\n map(active => ({ message, active }))\n )\n )\n )\n}\n\n/**\n * Mount dialog\n *\n * This function reveals the dialog in the right corner when a new alert is\n * emitted through the subject that is passed as part of the options.\n *\n * @param el - Dialog element\n * @param options - Options\n *\n * @returns Dialog component observable\n */\nexport function mountDialog(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const inner = getElement(\".md-typeset\", el)\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ message, active }) => {\n el.classList.toggle(\"md-dialog--active\", active)\n inner.textContent = message\n })\n\n /* Create and return component */\n return watchDialog(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatest,\n combineLatestWith,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n map,\n of,\n shareReplay,\n startWith,\n switchMap,\n takeLast,\n takeUntil\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n watchElementSize,\n watchToggle\n} from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Main } from \"../../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface Header {\n height: number /* Header visible height */\n hidden: boolean /* Header is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Compute whether the header is hidden\n *\n * If the user scrolls past a certain threshold, the header can be hidden when\n * scrolling down, and shown when scrolling up.\n *\n * @param options - Options\n *\n * @returns Toggle observable\n */\nfunction isHidden({ viewport$ }: WatchOptions): Observable {\n if (!feature(\"header.autohide\"))\n return of(false)\n\n /* Compute direction and turning point */\n const direction$ = viewport$\n .pipe(\n map(({ offset: { y } }) => y),\n bufferCount(2, 1),\n map(([a, b]) => [a < b, b] as const),\n distinctUntilKeyChanged(0)\n )\n\n /* Compute whether header should be hidden */\n const hidden$ = combineLatest([viewport$, direction$])\n .pipe(\n filter(([{ offset }, [, y]]) => Math.abs(y - offset.y) > 100),\n map(([, [direction]]) => direction),\n distinctUntilChanged()\n )\n\n /* Compute threshold for hiding */\n const search$ = watchToggle(\"search\")\n return combineLatest([viewport$, search$])\n .pipe(\n map(([{ offset }, search]) => offset.y > 400 && !search),\n distinctUntilChanged(),\n switchMap(active => active ? hidden$ : of(false)),\n startWith(false)\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header\n *\n * @param el - Header element\n * @param options - Options\n *\n * @returns Header observable\n */\nexport function watchHeader(\n el: HTMLElement, options: WatchOptions\n): Observable
    {\n return defer(() => combineLatest([\n watchElementSize(el),\n isHidden(options)\n ]))\n .pipe(\n map(([{ height }, hidden]) => ({\n height,\n hidden\n })),\n distinctUntilChanged((a, b) => (\n a.height === b.height &&\n a.hidden === b.hidden\n )),\n shareReplay(1)\n )\n}\n\n/**\n * Mount header\n *\n * This function manages the different states of the header, i.e. whether it's\n * hidden or rendered with a shadow. This depends heavily on the main area.\n *\n * @param el - Header element\n * @param options - Options\n *\n * @returns Header component observable\n */\nexport function mountHeader(\n el: HTMLElement, { header$, main$ }: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject
    ()\n const done$ = push$.pipe(takeLast(1))\n push$\n .pipe(\n distinctUntilKeyChanged(\"active\"),\n combineLatestWith(header$)\n )\n .subscribe(([{ active }, { hidden }]) => {\n el.classList.toggle(\"md-header--shadow\", active && !hidden)\n el.hidden = hidden\n })\n\n /* Link to main area */\n main$.subscribe(push$)\n\n /* Create and return component */\n return header$\n .pipe(\n takeUntil(done$),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n distinctUntilKeyChanged,\n finalize,\n map,\n tap\n} from \"rxjs\"\n\nimport {\n Viewport,\n getElementSize,\n getOptionalElement,\n watchViewportAt\n} from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Header } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface HeaderTitle {\n active: boolean /* Header title is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header title\n *\n * @param el - Heading element\n * @param options - Options\n *\n * @returns Header title observable\n */\nexport function watchHeaderTitle(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n return watchViewportAt(el, { viewport$, header$ })\n .pipe(\n map(({ offset: { y } }) => {\n const { height } = getElementSize(el)\n return {\n active: y >= height\n }\n }),\n distinctUntilKeyChanged(\"active\")\n )\n}\n\n/**\n * Mount header title\n *\n * This function swaps the header title from the site title to the title of the\n * current page when the user scrolls past the first headline.\n *\n * @param el - Header title element\n * @param options - Options\n *\n * @returns Header title component observable\n */\nexport function mountHeaderTitle(\n el: HTMLElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ active }) => {\n el.classList.toggle(\"md-header__title--active\", active)\n })\n\n /* Obtain headline, if any */\n const heading = getOptionalElement(\"article h1\")\n if (typeof heading === \"undefined\")\n return EMPTY\n\n /* Create and return component */\n return watchHeaderTitle(heading, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n map,\n switchMap\n} from \"rxjs\"\n\nimport {\n Viewport,\n watchElementSize\n} from \"~/browser\"\n\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Main area\n */\nexport interface Main {\n offset: number /* Main area top offset */\n height: number /* Main area visible height */\n active: boolean /* Main area is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch main area\n *\n * This function returns an observable that computes the visual parameters of\n * the main area which depends on the viewport vertical offset and height, as\n * well as the height of the header element, if the header is fixed.\n *\n * @param el - Main area element\n * @param options - Options\n *\n * @returns Main area observable\n */\nexport function watchMain(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable
    {\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n map(({ height }) => height),\n distinctUntilChanged()\n )\n\n /* Compute the main area's top and bottom borders */\n const border$ = adjust$\n .pipe(\n switchMap(() => watchElementSize(el)\n .pipe(\n map(({ height }) => ({\n top: el.offsetTop,\n bottom: el.offsetTop + height\n })),\n distinctUntilKeyChanged(\"bottom\")\n )\n )\n )\n\n /* Compute the main area's offset, visible height and if we scrolled past */\n return combineLatest([adjust$, border$, viewport$])\n .pipe(\n map(([header, { top, bottom }, { offset: { y }, size: { height } }]) => {\n height = Math.max(0, height\n - Math.max(0, top - y, header)\n - Math.max(0, height + y - bottom)\n )\n return {\n offset: top - header,\n height,\n active: top - header <= y\n }\n }),\n distinctUntilChanged((a, b) => (\n a.offset === b.offset &&\n a.height === b.height &&\n a.active === b.active\n ))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n asyncScheduler,\n defer,\n finalize,\n fromEvent,\n map,\n mergeMap,\n observeOn,\n of,\n shareReplay,\n startWith,\n tap\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Palette colors\n */\nexport interface PaletteColor {\n scheme?: string /* Color scheme */\n primary?: string /* Primary color */\n accent?: string /* Accent color */\n}\n\n/**\n * Palette\n */\nexport interface Palette {\n index: number /* Palette index */\n color: PaletteColor /* Palette colors */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch color palette\n *\n * @param inputs - Color palette element\n *\n * @returns Color palette observable\n */\nexport function watchPalette(\n inputs: HTMLInputElement[]\n): Observable {\n const current = __md_get(\"__palette\") || {\n index: inputs.findIndex(input => matchMedia(\n input.getAttribute(\"data-md-color-media\")!\n ).matches)\n }\n\n /* Emit changes in color palette */\n return of(...inputs)\n .pipe(\n mergeMap(input => fromEvent(input, \"change\")\n .pipe(\n map(() => input)\n )\n ),\n startWith(inputs[Math.max(0, current.index)]),\n map(input => ({\n index: inputs.indexOf(input),\n color: {\n scheme: input.getAttribute(\"data-md-color-scheme\"),\n primary: input.getAttribute(\"data-md-color-primary\"),\n accent: input.getAttribute(\"data-md-color-accent\")\n }\n } as Palette)),\n shareReplay(1)\n )\n}\n\n/**\n * Mount color palette\n *\n * @param el - Color palette element\n *\n * @returns Color palette component observable\n */\nexport function mountPalette(\n el: HTMLElement\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(palette => {\n document.body.setAttribute(\"data-md-color-switching\", \"\")\n\n /* Set color palette */\n for (const [key, value] of Object.entries(palette.color))\n document.body.setAttribute(`data-md-color-${key}`, value)\n\n /* Toggle visibility */\n for (let index = 0; index < inputs.length; index++) {\n const label = inputs[index].nextElementSibling\n if (label instanceof HTMLElement)\n label.hidden = palette.index !== index\n }\n\n /* Persist preference in local storage */\n __md_set(\"__palette\", palette)\n })\n\n /* Revert transition durations after color switch */\n push$.pipe(observeOn(asyncScheduler))\n .subscribe(() => {\n document.body.removeAttribute(\"data-md-color-switching\")\n })\n\n /* Create and return component */\n const inputs = getElements(\"input\", el)\n return watchPalette(inputs)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ClipboardJS from \"clipboard\"\nimport {\n Observable,\n Subject,\n map,\n tap\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport { getElement } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n alert$: Subject /* Alert subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Extract text to copy\n *\n * @param el - HTML element\n *\n * @returns Extracted text\n */\nfunction extract(el: HTMLElement): string {\n el.setAttribute(\"data-md-copying\", \"\")\n const text = el.innerText\n el.removeAttribute(\"data-md-copying\")\n return text\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up Clipboard.js integration\n *\n * @param options - Options\n */\nexport function setupClipboardJS(\n { alert$ }: SetupOptions\n): void {\n if (ClipboardJS.isSupported()) {\n new Observable(subscriber => {\n new ClipboardJS(\"[data-clipboard-target], [data-clipboard-text]\", {\n text: el => (\n el.getAttribute(\"data-clipboard-text\")! ||\n extract(getElement(\n el.getAttribute(\"data-clipboard-target\")!\n ))\n )\n })\n .on(\"success\", ev => subscriber.next(ev))\n })\n .pipe(\n tap(ev => {\n const trigger = ev.trigger as HTMLElement\n trigger.focus()\n }),\n map(() => translation(\"clipboard.copied\"))\n )\n .subscribe(alert$)\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map,\n of,\n tap\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport { getElements, requestXML } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sitemap, i.e. a list of URLs\n */\nexport type Sitemap = string[]\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Preprocess a list of URLs\n *\n * This function replaces the `site_url` in the sitemap with the actual base\n * URL, to allow instant loading to work in occasions like Netlify previews.\n *\n * @param urls - URLs\n *\n * @returns URL path parts\n */\nfunction preprocess(urls: Sitemap): Sitemap {\n if (urls.length < 2)\n return [\"\"]\n\n /* Take the first two URLs and remove everything after the last slash */\n const [root, next] = [...urls]\n .sort((a, b) => a.length - b.length)\n .map(url => url.replace(/[^/]+$/, \"\"))\n\n /* Compute common prefix */\n let index = 0\n if (root === next)\n index = root.length\n else\n while (root.charCodeAt(index) === next.charCodeAt(index))\n index++\n\n /* Remove common prefix and return in original order */\n return urls.map(url => url.replace(root.slice(0, index), \"\"))\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch the sitemap for the given base URL\n *\n * @param base - Base URL\n *\n * @returns Sitemap observable\n */\nexport function fetchSitemap(base?: URL): Observable {\n const cached = __md_get(\"__sitemap\", sessionStorage, base)\n if (cached) {\n return of(cached)\n } else {\n const config = configuration()\n return requestXML(new URL(\"sitemap.xml\", base || config.base))\n .pipe(\n map(sitemap => preprocess(getElements(\"loc\", sitemap)\n .map(node => node.textContent!)\n )),\n catchError(() => EMPTY), // @todo refactor instant loading\n defaultIfEmpty([]),\n tap(sitemap => __md_set(\"__sitemap\", sitemap, sessionStorage, base))\n )\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n NEVER,\n Observable,\n Subject,\n bufferCount,\n catchError,\n concatMap,\n debounceTime,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n fromEvent,\n map,\n merge,\n of,\n sample,\n share,\n skip,\n skipUntil,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"~/_\"\nimport {\n Viewport,\n ViewportOffset,\n getElements,\n getOptionalElement,\n request,\n setLocation,\n setLocationHash\n} from \"~/browser\"\nimport { getComponentElement } from \"~/components\"\nimport { h } from \"~/utilities\"\n\nimport { fetchSitemap } from \"../sitemap\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * History state\n */\nexport interface HistoryState {\n url: URL /* State URL */\n offset?: ViewportOffset /* State viewport offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Subject /* Document subject */\n location$: Subject /* Location subject */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up instant loading\n *\n * When fetching, theoretically, we could use `responseType: \"document\"`, but\n * since all MkDocs links are relative, we need to make sure that the current\n * location matches the document we just loaded. Otherwise any relative links\n * in the document could use the old location.\n *\n * This is the reason why we need to synchronize history events and the process\n * of fetching the document for navigation changes (except `popstate` events):\n *\n * 1. Fetch document via `XMLHTTPRequest`\n * 2. Set new location via `history.pushState`\n * 3. Parse and emit fetched document\n *\n * For `popstate` events, we must not use `history.pushState`, or the forward\n * history will be irreversibly overwritten. In case the request fails, the\n * location change is dispatched regularly.\n *\n * @param options - Options\n */\nexport function setupInstantLoading(\n { document$, location$, viewport$ }: SetupOptions\n): void {\n const config = configuration()\n if (location.protocol === \"file:\")\n return\n\n /* Disable automatic scroll restoration */\n if (\"scrollRestoration\" in history) {\n history.scrollRestoration = \"manual\"\n\n /* Hack: ensure that reloads restore viewport offset */\n fromEvent(window, \"beforeunload\")\n .subscribe(() => {\n history.scrollRestoration = \"auto\"\n })\n }\n\n /* Hack: ensure absolute favicon link to omit 404s when switching */\n const favicon = getOptionalElement(\"link[rel=icon]\")\n if (typeof favicon !== \"undefined\")\n favicon.href = favicon.href\n\n /* Intercept internal navigation */\n const push$ = fetchSitemap()\n .pipe(\n map(paths => paths.map(path => `${new URL(path, config.base)}`)),\n switchMap(urls => fromEvent(document.body, \"click\")\n .pipe(\n filter(ev => !ev.metaKey && !ev.ctrlKey),\n switchMap(ev => {\n if (ev.target instanceof Element) {\n const el = ev.target.closest(\"a\")\n if (el && !el.target) {\n const url = new URL(el.href)\n\n /* Canonicalize URL */\n url.search = \"\"\n url.hash = \"\"\n\n /* Check if URL should be intercepted */\n if (\n url.pathname !== location.pathname &&\n urls.includes(url.toString())\n ) {\n ev.preventDefault()\n return of({\n url: new URL(el.href)\n })\n }\n }\n }\n return NEVER\n })\n )\n ),\n share()\n )\n\n /* Intercept history back and forward */\n const pop$ = fromEvent(window, \"popstate\")\n .pipe(\n filter(ev => ev.state !== null),\n map(ev => ({\n url: new URL(location.href),\n offset: ev.state\n })),\n share()\n )\n\n /* Emit location change */\n merge(push$, pop$)\n .pipe(\n distinctUntilChanged((a, b) => a.url.href === b.url.href),\n map(({ url }) => url)\n )\n .subscribe(location$)\n\n /* Fetch document via `XMLHTTPRequest` */\n const response$ = location$\n .pipe(\n distinctUntilKeyChanged(\"pathname\"),\n switchMap(url => request(url.href)\n .pipe(\n catchError(() => {\n setLocation(url)\n return NEVER\n })\n )\n ),\n share()\n )\n\n /* Set new location via `history.pushState` */\n push$\n .pipe(\n sample(response$)\n )\n .subscribe(({ url }) => {\n history.pushState({}, \"\", `${url}`)\n })\n\n /* Parse and emit fetched document */\n const dom = new DOMParser()\n response$\n .pipe(\n switchMap(res => res.text()),\n map(res => dom.parseFromString(res, \"text/html\"))\n )\n .subscribe(document$)\n\n /* Replace meta tags and components */\n document$\n .pipe(\n skip(1)\n )\n .subscribe(replacement => {\n for (const selector of [\n\n /* Meta tags */\n \"title\",\n \"link[rel=canonical]\",\n \"meta[name=author]\",\n \"meta[name=description]\",\n\n /* Components */\n \"[data-md-component=announce]\",\n \"[data-md-component=container]\",\n \"[data-md-component=header-topic]\",\n \"[data-md-component=outdated]\",\n \"[data-md-component=logo]\",\n \"[data-md-component=skip]\",\n ...feature(\"navigation.tabs.sticky\")\n ? [\"[data-md-component=tabs]\"]\n : []\n ]) {\n const source = getOptionalElement(selector)\n const target = getOptionalElement(selector, replacement)\n if (\n typeof source !== \"undefined\" &&\n typeof target !== \"undefined\"\n ) {\n source.replaceWith(target)\n }\n }\n })\n\n /* Re-evaluate scripts */\n document$\n .pipe(\n skip(1),\n map(() => getComponentElement(\"container\")),\n switchMap(el => getElements(\"script\", el)),\n concatMap(el => {\n const script = h(\"script\")\n if (el.src) {\n for (const name of el.getAttributeNames())\n script.setAttribute(name, el.getAttribute(name)!)\n el.replaceWith(script)\n\n /* Complete when script is loaded */\n return new Observable(observer => {\n script.onload = () => observer.complete()\n })\n\n /* Complete immediately */\n } else {\n script.textContent = el.textContent\n el.replaceWith(script)\n return EMPTY\n }\n })\n )\n .subscribe()\n\n /* Emit history state change */\n merge(push$, pop$)\n .pipe(\n sample(document$)\n )\n .subscribe(({ url, offset }) => {\n if (url.hash && !offset) {\n setLocationHash(url.hash)\n } else {\n window.scrollTo(0, offset?.y || 0)\n }\n })\n\n /* Debounce update of viewport offset */\n viewport$\n .pipe(\n skipUntil(push$),\n debounceTime(250),\n distinctUntilKeyChanged(\"offset\")\n )\n .subscribe(({ offset }) => {\n history.replaceState(offset, \"\")\n })\n\n /* Set viewport offset from history */\n merge(push$, pop$)\n .pipe(\n bufferCount(2, 1),\n filter(([a, b]) => a.url.pathname === b.url.pathname),\n map(([, state]) => state)\n )\n .subscribe(({ offset }) => {\n window.scrollTo(0, offset?.y || 0)\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexDocument } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search document\n */\nexport interface SearchDocument extends SearchIndexDocument {\n parent?: SearchIndexDocument /* Parent article */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search document mapping\n */\nexport type SearchDocumentMap = Map\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search document mapping\n *\n * @param docs - Search index documents\n *\n * @returns Search document map\n */\nexport function setupSearchDocumentMap(\n docs: SearchIndexDocument[]\n): SearchDocumentMap {\n const documents = new Map()\n const parents = new Set()\n for (const doc of docs) {\n const [path, hash] = doc.location.split(\"#\")\n\n /* Extract location, title and tags */\n const location = doc.location\n const title = doc.title\n const tags = doc.tags\n\n /* Escape and cleanup text */\n const text = escapeHTML(doc.text)\n .replace(/\\s+(?=[,.:;!?])/g, \"\")\n .replace(/\\s+/g, \" \")\n\n /* Handle section */\n if (hash) {\n const parent = documents.get(path)!\n\n /* Ignore first section, override article */\n if (!parents.has(parent)) {\n parent.title = doc.title\n parent.text = text\n\n /* Remember that we processed the article */\n parents.add(parent)\n\n /* Add subsequent section */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n parent\n })\n }\n\n /* Add article */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n ...tags && { tags }\n })\n }\n }\n return documents\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexConfig } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlight function\n *\n * @param value - Value\n *\n * @returns Highlighted value\n */\nexport type SearchHighlightFn = (value: string) => string\n\n/**\n * Search highlight factory function\n *\n * @param query - Query value\n *\n * @returns Search highlight function\n */\nexport type SearchHighlightFactoryFn = (query: string) => SearchHighlightFn\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search highlighter\n *\n * @param config - Search index configuration\n * @param escape - Whether to escape HTML\n *\n * @returns Search highlight factory function\n */\nexport function setupSearchHighlighter(\n config: SearchIndexConfig, escape: boolean\n): SearchHighlightFactoryFn {\n const separator = new RegExp(config.separator, \"img\")\n const highlight = (_: unknown, data: string, term: string) => {\n return `${data}${term}`\n }\n\n /* Return factory function */\n return (query: string) => {\n query = query\n .replace(/[\\s*+\\-:~^]+/g, \" \")\n .trim()\n\n /* Create search term match expression */\n const match = new RegExp(`(^|${config.separator})(${\n query\n .replace(/[|\\\\{}()[\\]^$+*?.-]/g, \"\\\\$&\")\n .replace(separator, \"|\")\n })`, \"img\")\n\n /* Highlight string value */\n return value => (\n escape\n ? escapeHTML(value)\n : value\n )\n .replace(match, highlight)\n .replace(/<\\/mark>(\\s+)]*>/img, \"$1\")\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search transformation function\n *\n * @param value - Query value\n *\n * @returns Transformed query value\n */\nexport type SearchTransformFn = (value: string) => string\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Default transformation function\n *\n * 1. Search for terms in quotation marks and prepend a `+` modifier to denote\n * that the resulting document must contain all terms, converting the query\n * to an `AND` query (as opposed to the default `OR` behavior). While users\n * may expect terms enclosed in quotation marks to map to span queries, i.e.\n * for which order is important, Lunr.js doesn't support them, so the best\n * we can do is to convert the terms to an `AND` query.\n *\n * 2. Replace control characters which are not located at the beginning of the\n * query or preceded by white space, or are not followed by a non-whitespace\n * character or are at the end of the query string. Furthermore, filter\n * unmatched quotation marks.\n *\n * 3. Trim excess whitespace from left and right.\n *\n * @param query - Query value\n *\n * @returns Transformed query value\n */\nexport function defaultTransform(query: string): string {\n return query\n .split(/\"([^\"]+)\"/g) /* => 1 */\n .map((terms, index) => index & 1\n ? terms.replace(/^\\b|^(?![^\\x00-\\x7F]|$)|\\s+/g, \" +\")\n : terms\n )\n .join(\"\")\n .replace(/\"|(?:^|\\s+)[*+\\-:^~]+(?=\\s+|$)/g, \"\") /* => 2 */\n .trim() /* => 3 */\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchIndex, SearchResult } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search message type\n */\nexport const enum SearchMessageType {\n SETUP, /* Search index setup */\n READY, /* Search index ready */\n QUERY, /* Search query */\n RESULT /* Search results */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Message containing the data necessary to setup the search index\n */\nexport interface SearchSetupMessage {\n type: SearchMessageType.SETUP /* Message type */\n data: SearchIndex /* Message data */\n}\n\n/**\n * Message indicating the search index is ready\n */\nexport interface SearchReadyMessage {\n type: SearchMessageType.READY /* Message type */\n}\n\n/**\n * Message containing a search query\n */\nexport interface SearchQueryMessage {\n type: SearchMessageType.QUERY /* Message type */\n data: string /* Message data */\n}\n\n/**\n * Message containing results for a search query\n */\nexport interface SearchResultMessage {\n type: SearchMessageType.RESULT /* Message type */\n data: SearchResult /* Message data */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Message exchanged with the search worker\n */\nexport type SearchMessage =\n | SearchSetupMessage\n | SearchReadyMessage\n | SearchQueryMessage\n | SearchResultMessage\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Type guard for search setup messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchSetupMessage(\n message: SearchMessage\n): message is SearchSetupMessage {\n return message.type === SearchMessageType.SETUP\n}\n\n/**\n * Type guard for search ready messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchReadyMessage(\n message: SearchMessage\n): message is SearchReadyMessage {\n return message.type === SearchMessageType.READY\n}\n\n/**\n * Type guard for search query messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchQueryMessage(\n message: SearchMessage\n): message is SearchQueryMessage {\n return message.type === SearchMessageType.QUERY\n}\n\n/**\n * Type guard for search result messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchResultMessage(\n message: SearchMessage\n): message is SearchResultMessage {\n return message.type === SearchMessageType.RESULT\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n ObservableInput,\n Subject,\n from,\n map,\n share\n} from \"rxjs\"\n\nimport { configuration, feature, translation } from \"~/_\"\nimport { WorkerHandler, watchWorker } from \"~/browser\"\n\nimport { SearchIndex } from \"../../_\"\nimport {\n SearchOptions,\n SearchPipeline\n} from \"../../options\"\nimport {\n SearchMessage,\n SearchMessageType,\n SearchSetupMessage,\n isSearchResultMessage\n} from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search worker\n */\nexport type SearchWorker = WorkerHandler\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up search index\n *\n * @param data - Search index\n *\n * @returns Search index\n */\nfunction setupSearchIndex({ config, docs }: SearchIndex): SearchIndex {\n\n /* Override default language with value from translation */\n if (config.lang.length === 1 && config.lang[0] === \"en\")\n config.lang = [\n translation(\"search.config.lang\")\n ]\n\n /* Override default separator with value from translation */\n if (config.separator === \"[\\\\s\\\\-]+\")\n config.separator = translation(\"search.config.separator\")\n\n /* Set pipeline from translation */\n const pipeline = translation(\"search.config.pipeline\")\n .split(/\\s*,\\s*/)\n .filter(Boolean) as SearchPipeline\n\n /* Determine search options */\n const options: SearchOptions = {\n pipeline,\n suggestions: feature(\"search.suggest\")\n }\n\n /* Return search index after defaulting */\n return { config, docs, options }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up search worker\n *\n * This function creates a web worker to set up and query the search index,\n * which is done using Lunr.js. The index must be passed as an observable to\n * enable hacks like _localsearch_ via search index embedding as JSON.\n *\n * @param url - Worker URL\n * @param index - Search index observable input\n *\n * @returns Search worker\n */\nexport function setupSearchWorker(\n url: string, index: ObservableInput\n): SearchWorker {\n const config = configuration()\n const worker = new Worker(url)\n\n /* Create communication channels and resolve relative links */\n const tx$ = new Subject()\n const rx$ = watchWorker(worker, { tx$ })\n .pipe(\n map(message => {\n if (isSearchResultMessage(message)) {\n for (const result of message.data.items)\n for (const document of result)\n document.location = `${new URL(document.location, config.base)}`\n }\n return message\n }),\n share()\n )\n\n /* Set up search index */\n from(index)\n .pipe(\n map(data => ({\n type: SearchMessageType.SETUP,\n data: setupSearchIndex(data)\n } as SearchSetupMessage))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Return search worker */\n return { tx$, rx$ }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Subject,\n catchError,\n combineLatest,\n filter,\n fromEvent,\n map,\n of,\n switchMap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport {\n getElement,\n getLocation,\n requestJSON,\n setLocation\n} from \"~/browser\"\nimport { getComponentElements } from \"~/components\"\nimport {\n Version,\n renderVersionSelector\n} from \"~/templates\"\n\nimport { fetchSitemap } from \"../sitemap\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Subject /* Document subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up version selector\n *\n * @param options - Options\n */\nexport function setupVersionSelector(\n { document$ }: SetupOptions\n): void {\n const config = configuration()\n const versions$ = requestJSON(\n new URL(\"../versions.json\", config.base)\n )\n .pipe(\n catchError(() => EMPTY) // @todo refactor instant loading\n )\n\n /* Determine current version */\n const current$ = versions$\n .pipe(\n map(versions => {\n const [, current] = config.base.match(/([^/]+)\\/?$/)!\n return versions.find(({ version, aliases }) => (\n version === current || aliases.includes(current)\n )) || versions[0]\n })\n )\n\n /* Intercept inter-version navigation */\n versions$\n .pipe(\n map(versions => new Map(versions.map(version => [\n `${new URL(`../${version.version}/`, config.base)}`,\n version\n ]))),\n switchMap(urls => fromEvent(document.body, \"click\")\n .pipe(\n filter(ev => !ev.metaKey && !ev.ctrlKey),\n withLatestFrom(current$),\n switchMap(([ev, current]) => {\n if (ev.target instanceof Element) {\n const el = ev.target.closest(\"a\")\n if (el && !el.target && urls.has(el.href)) {\n const url = el.href\n // This is a temporary hack to detect if a version inside the\n // version selector or on another part of the site was clicked.\n // If we're inside the version selector, we definitely want to\n // find the same page, as we might have different deployments\n // due to aliases. However, if we're outside the version\n // selector, we must abort here, because we might otherwise\n // interfere with instant loading. We need to refactor this\n // at some point together with instant loading.\n //\n // See https://github.com/squidfunk/mkdocs-material/issues/4012\n if (!ev.target.closest(\".md-version\")) {\n const version = urls.get(url)!\n if (version === current)\n return EMPTY\n }\n ev.preventDefault()\n return of(url)\n }\n }\n return EMPTY\n }),\n switchMap(url => {\n const { version } = urls.get(url)!\n return fetchSitemap(new URL(url))\n .pipe(\n map(sitemap => {\n const location = getLocation()\n const path = location.href.replace(config.base, \"\")\n return sitemap.includes(path.split(\"#\")[0])\n ? new URL(`../${version}/${path}`, config.base)\n : new URL(url)\n })\n )\n })\n )\n )\n )\n .subscribe(url => setLocation(url))\n\n /* Render version selector and warning */\n combineLatest([versions$, current$])\n .subscribe(([versions, current]) => {\n const topic = getElement(\".md-header__topic\")\n topic.appendChild(renderVersionSelector(versions, current))\n })\n\n /* Integrate outdated version banner with instant loading */\n document$.pipe(switchMap(() => current$))\n .subscribe(current => {\n\n /* Check if version state was already determined */\n let outdated = __md_get(\"__outdated\", sessionStorage)\n if (outdated === null) {\n const latest = config.version?.default || \"latest\"\n outdated = !current.aliases.includes(latest)\n\n /* Persist version state in session storage */\n __md_set(\"__outdated\", outdated, sessionStorage)\n }\n\n /* Unhide outdated version banner */\n if (outdated)\n for (const warning of getComponentElements(\"outdated\"))\n warning.hidden = false\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n combineLatest,\n delay,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n share,\n shareReplay,\n startWith,\n take,\n takeLast,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport {\n getLocation,\n setToggle,\n watchElementFocus,\n watchToggle\n} from \"~/browser\"\nimport {\n SearchMessageType,\n SearchQueryMessage,\n SearchWorker,\n defaultTransform,\n isSearchReadyMessage\n} from \"~/integrations\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search query\n */\nexport interface SearchQuery {\n value: string /* Query value */\n focus: boolean /* Query focus */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch search query\n *\n * Note that the focus event which triggers re-reading the current query value\n * is delayed by `1ms` so the input's empty state is allowed to propagate.\n *\n * @param el - Search query element\n * @param worker - Search worker\n *\n * @returns Search query observable\n */\nexport function watchSearchQuery(\n el: HTMLInputElement, { rx$ }: SearchWorker\n): Observable {\n const fn = __search?.transform || defaultTransform\n\n /* Immediately show search dialog */\n const { searchParams } = getLocation()\n if (searchParams.has(\"q\"))\n setToggle(\"search\", true)\n\n /* Intercept query parameter (deep link) */\n const param$ = rx$\n .pipe(\n filter(isSearchReadyMessage),\n take(1),\n map(() => searchParams.get(\"q\") || \"\")\n )\n\n /* Remove query parameter when search is closed */\n watchToggle(\"search\")\n .pipe(\n filter(active => !active),\n take(1)\n )\n .subscribe(() => {\n const url = new URL(location.href)\n url.searchParams.delete(\"q\")\n history.replaceState({}, \"\", `${url}`)\n })\n\n /* Set query from parameter */\n param$.subscribe(value => { // TODO: not ideal - find a better way\n if (value) {\n el.value = value\n el.focus()\n }\n })\n\n /* Intercept focus and input events */\n const focus$ = watchElementFocus(el)\n const value$ = merge(\n fromEvent(el, \"keyup\"),\n fromEvent(el, \"focus\").pipe(delay(1)),\n param$\n )\n .pipe(\n map(() => fn(el.value)),\n startWith(\"\"),\n distinctUntilChanged(),\n )\n\n /* Combine into single observable */\n return combineLatest([value$, focus$])\n .pipe(\n map(([value, focus]) => ({ value, focus })),\n shareReplay(1)\n )\n}\n\n/**\n * Mount search query\n *\n * @param el - Search query element\n * @param worker - Search worker\n *\n * @returns Search query component observable\n */\nexport function mountSearchQuery(\n el: HTMLInputElement, { tx$, rx$ }: SearchWorker\n): Observable> {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n\n /* Handle value changes */\n push$\n .pipe(\n distinctUntilKeyChanged(\"value\"),\n map(({ value }): SearchQueryMessage => ({\n type: SearchMessageType.QUERY,\n data: value\n }))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Handle focus changes */\n push$\n .pipe(\n distinctUntilKeyChanged(\"focus\")\n )\n .subscribe(({ focus }) => {\n if (focus) {\n setToggle(\"search\", focus)\n el.placeholder = \"\"\n } else {\n el.placeholder = translation(\"search.placeholder\")\n }\n })\n\n /* Handle reset */\n fromEvent(el.form!, \"reset\")\n .pipe(\n takeUntil(done$)\n )\n .subscribe(() => el.focus())\n\n /* Create and return component */\n return watchSearchQuery(el, { tx$, rx$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state })),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n filter,\n finalize,\n map,\n merge,\n of,\n skipUntil,\n switchMap,\n take,\n tap,\n withLatestFrom,\n zipWith\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport {\n getElement,\n watchElementBoundary\n} from \"~/browser\"\nimport {\n SearchResult,\n SearchWorker,\n isSearchReadyMessage,\n isSearchResultMessage\n} from \"~/integrations\"\nimport { renderSearchResultItem } from \"~/templates\"\nimport { round } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search result list\n *\n * This function performs a lazy rendering of the search results, depending on\n * the vertical offset of the search result container.\n *\n * @param el - Search result list element\n * @param worker - Search worker\n * @param options - Options\n *\n * @returns Search result list component observable\n */\nexport function mountSearchResult(\n el: HTMLElement, { rx$ }: SearchWorker, { query$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n const boundary$ = watchElementBoundary(el.parentElement!)\n .pipe(\n filter(Boolean)\n )\n\n /* Retrieve nested components */\n const meta = getElement(\":scope > :first-child\", el)\n const list = getElement(\":scope > :last-child\", el)\n\n /* Wait until search is ready */\n const ready$ = rx$\n .pipe(\n filter(isSearchReadyMessage),\n take(1)\n )\n\n /* Update search result metadata */\n push$\n .pipe(\n withLatestFrom(query$),\n skipUntil(ready$)\n )\n .subscribe(([{ items }, { value }]) => {\n if (value) {\n switch (items.length) {\n\n /* No results */\n case 0:\n meta.textContent = translation(\"search.result.none\")\n break\n\n /* One result */\n case 1:\n meta.textContent = translation(\"search.result.one\")\n break\n\n /* Multiple result */\n default:\n meta.textContent = translation(\n \"search.result.other\",\n round(items.length)\n )\n }\n } else {\n meta.textContent = translation(\"search.result.placeholder\")\n }\n })\n\n /* Update search result list */\n push$\n .pipe(\n tap(() => list.innerHTML = \"\"),\n switchMap(({ items }) => merge(\n of(...items.slice(0, 10)),\n of(...items.slice(10))\n .pipe(\n bufferCount(4),\n zipWith(boundary$),\n switchMap(([chunk]) => chunk)\n )\n ))\n )\n .subscribe(result => list.appendChild(\n renderSearchResultItem(result)\n ))\n\n /* Filter search result message */\n const result$ = rx$\n .pipe(\n filter(isSearchResultMessage),\n map(({ data }) => data)\n )\n\n /* Create and return component */\n return result$\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n finalize,\n fromEvent,\n map,\n tap\n} from \"rxjs\"\n\nimport { getLocation } from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search sharing\n */\nexport interface SearchShare {\n url: URL /* Deep link for sharing */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n query$: Observable /* Search query observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search sharing\n *\n * @param _el - Search sharing element\n * @param options - Options\n *\n * @returns Search sharing observable\n */\nexport function watchSearchShare(\n _el: HTMLElement, { query$ }: WatchOptions\n): Observable {\n return query$\n .pipe(\n map(({ value }) => {\n const url = getLocation()\n url.hash = \"\"\n url.searchParams.delete(\"h\")\n url.searchParams.set(\"q\", value)\n return { url }\n })\n )\n}\n\n/**\n * Mount search sharing\n *\n * @param el - Search sharing element\n * @param options - Options\n *\n * @returns Search sharing component observable\n */\nexport function mountSearchShare(\n el: HTMLAnchorElement, options: MountOptions\n): Observable> {\n const push$ = new Subject()\n push$.subscribe(({ url }) => {\n el.setAttribute(\"data-clipboard-text\", el.href)\n el.href = `${url}`\n })\n\n /* Prevent following of link */\n fromEvent(el, \"click\")\n .subscribe(ev => ev.preventDefault())\n\n /* Create and return component */\n return watchSearchShare(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n asyncScheduler,\n combineLatestWith,\n distinctUntilChanged,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n observeOn,\n tap\n} from \"rxjs\"\n\nimport { Keyboard } from \"~/browser\"\nimport {\n SearchResult,\n SearchWorker,\n isSearchResultMessage\n} from \"~/integrations\"\n\nimport { Component, getComponentElement } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search suggestions\n */\nexport interface SearchSuggest {}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n keyboard$: Observable /* Keyboard observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search suggestions\n *\n * This function will perform a lazy rendering of the search results, depending\n * on the vertical offset of the search result container.\n *\n * @param el - Search result list element\n * @param worker - Search worker\n * @param options - Options\n *\n * @returns Search result list component observable\n */\nexport function mountSearchSuggest(\n el: HTMLElement, { rx$ }: SearchWorker, { keyboard$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n\n /* Retrieve query component and track all changes */\n const query = getComponentElement(\"search-query\")\n const query$ = merge(\n fromEvent(query, \"keydown\"),\n fromEvent(query, \"focus\")\n )\n .pipe(\n observeOn(asyncScheduler),\n map(() => query.value),\n distinctUntilChanged(),\n )\n\n /* Update search suggestions */\n push$\n .pipe(\n combineLatestWith(query$),\n map(([{ suggestions }, value]) => {\n const words = value.split(/([\\s-]+)/)\n if (suggestions?.length && words[words.length - 1]) {\n const last = suggestions[suggestions.length - 1]\n if (last.startsWith(words[words.length - 1]))\n words[words.length - 1] = last\n } else {\n words.length = 0\n }\n return words\n })\n )\n .subscribe(words => el.innerHTML = words\n .join(\"\")\n .replace(/\\s/g, \" \")\n )\n\n /* Set up search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Right arrow: accept current suggestion */\n case \"ArrowRight\":\n if (\n el.innerText.length &&\n query.selectionStart === query.value.length\n )\n query.value = el.innerText\n break\n }\n })\n\n /* Filter search result message */\n const result$ = rx$\n .pipe(\n filter(isSearchResultMessage),\n map(({ data }) => data)\n )\n\n /* Create and return component */\n return result$\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(() => ({ ref: el }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n NEVER,\n Observable,\n ObservableInput,\n filter,\n merge,\n mergeWith,\n sample,\n take\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport {\n Keyboard,\n getActiveElement,\n getElements,\n setToggle\n} from \"~/browser\"\nimport {\n SearchIndex,\n SearchResult,\n isSearchQueryMessage,\n isSearchReadyMessage,\n setupSearchWorker\n} from \"~/integrations\"\n\nimport {\n Component,\n getComponentElement,\n getComponentElements\n} from \"../../_\"\nimport {\n SearchQuery,\n mountSearchQuery\n} from \"../query\"\nimport { mountSearchResult } from \"../result\"\nimport {\n SearchShare,\n mountSearchShare\n} from \"../share\"\nimport {\n SearchSuggest,\n mountSearchSuggest\n} from \"../suggest\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search\n */\nexport type Search =\n | SearchQuery\n | SearchResult\n | SearchShare\n | SearchSuggest\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n index$: ObservableInput /* Search index observable */\n keyboard$: Observable /* Keyboard observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search\n *\n * This function sets up the search functionality, including the underlying\n * web worker and all keyboard bindings.\n *\n * @param el - Search element\n * @param options - Options\n *\n * @returns Search component observable\n */\nexport function mountSearch(\n el: HTMLElement, { index$, keyboard$ }: MountOptions\n): Observable> {\n const config = configuration()\n try {\n const url = __search?.worker || config.search\n const worker = setupSearchWorker(url, index$)\n\n /* Retrieve query and result components */\n const query = getComponentElement(\"search-query\", el)\n const result = getComponentElement(\"search-result\", el)\n\n /* Re-emit query when search is ready */\n const { tx$, rx$ } = worker\n tx$\n .pipe(\n filter(isSearchQueryMessage),\n sample(rx$.pipe(filter(isSearchReadyMessage))),\n take(1)\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Set up search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\")\n )\n .subscribe(key => {\n const active = getActiveElement()\n switch (key.type) {\n\n /* Enter: go to first (best) result */\n case \"Enter\":\n if (active === query) {\n const anchors = new Map()\n for (const anchor of getElements(\n \":first-child [href]\", result\n )) {\n const article = anchor.firstElementChild!\n anchors.set(anchor, parseFloat(\n article.getAttribute(\"data-md-score\")!\n ))\n }\n\n /* Go to result with highest score, if any */\n if (anchors.size) {\n const [[best]] = [...anchors].sort(([, a], [, b]) => b - a)\n best.click()\n }\n\n /* Otherwise omit form submission */\n key.claim()\n }\n break\n\n /* Escape or Tab: close search */\n case \"Escape\":\n case \"Tab\":\n setToggle(\"search\", false)\n query.blur()\n break\n\n /* Vertical arrows: select previous or next search result */\n case \"ArrowUp\":\n case \"ArrowDown\":\n if (typeof active === \"undefined\") {\n query.focus()\n } else {\n const els = [query, ...getElements(\n \":not(details) > [href], summary, details[open] [href]\",\n result\n )]\n const i = Math.max(0, (\n Math.max(0, els.indexOf(active)) + els.length + (\n key.type === \"ArrowUp\" ? -1 : +1\n )\n ) % els.length)\n els[i].focus()\n }\n\n /* Prevent scrolling of page */\n key.claim()\n break\n\n /* All other keys: hand to search query */\n default:\n if (query !== getActiveElement())\n query.focus()\n }\n })\n\n /* Set up global keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\"),\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Open search and select query */\n case \"f\":\n case \"s\":\n case \"/\":\n query.focus()\n query.select()\n\n /* Prevent scrolling of page */\n key.claim()\n break\n }\n })\n\n /* Create and return component */\n const query$ = mountSearchQuery(query, worker)\n const result$ = mountSearchResult(result, worker, { query$ })\n return merge(query$, result$)\n .pipe(\n mergeWith(\n\n /* Search sharing */\n ...getComponentElements(\"search-share\", el)\n .map(child => mountSearchShare(child, { query$ })),\n\n /* Search suggestions */\n ...getComponentElements(\"search-suggest\", el)\n .map(child => mountSearchSuggest(child, worker, { keyboard$ }))\n )\n )\n\n /* Gracefully handle broken search */\n } catch (err) {\n el.hidden = true\n return NEVER\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n ObservableInput,\n combineLatest,\n filter,\n map,\n startWith\n} from \"rxjs\"\n\nimport { getLocation } from \"~/browser\"\nimport {\n SearchIndex,\n setupSearchHighlighter\n} from \"~/integrations\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlighting\n */\nexport interface SearchHighlight {\n nodes: Map /* Map of replacements */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n index$: ObservableInput /* Search index observable */\n location$: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search highlighting\n *\n * @param el - Content element\n * @param options - Options\n *\n * @returns Search highlighting component observable\n */\nexport function mountSearchHiglight(\n el: HTMLElement, { index$, location$ }: MountOptions\n): Observable> {\n return combineLatest([\n index$,\n location$\n .pipe(\n startWith(getLocation()),\n filter(url => !!url.searchParams.get(\"h\"))\n )\n ])\n .pipe(\n map(([index, url]) => setupSearchHighlighter(index.config, true)(\n url.searchParams.get(\"h\")!\n )),\n map(fn => {\n const nodes = new Map()\n\n /* Traverse text nodes and collect matches */\n const it = document.createNodeIterator(el, NodeFilter.SHOW_TEXT)\n for (let node = it.nextNode(); node; node = it.nextNode()) {\n if (node.parentElement?.offsetHeight) {\n const original = node.textContent!\n const replaced = fn(original)\n if (replaced.length > original.length)\n nodes.set(node as ChildNode, replaced)\n }\n }\n\n /* Replace original nodes with matches */\n for (const [node, text] of nodes) {\n const { childNodes } = h(\"span\", null, text)\n node.replaceWith(...Array.from(childNodes))\n }\n\n /* Return component */\n return { ref: el, nodes }\n })\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n auditTime,\n combineLatest,\n defer,\n distinctUntilChanged,\n finalize,\n map,\n observeOn,\n take,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n Viewport,\n getElement,\n getElementContainer,\n getElementOffset,\n getElementSize,\n getElements\n} from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\nimport { Main } from \"../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sidebar\n */\nexport interface Sidebar {\n height: number /* Sidebar height */\n locked: boolean /* Sidebar is locked */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n main$: Observable
    /* Main area observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch sidebar\n *\n * This function returns an observable that computes the visual parameters of\n * the sidebar which depends on the vertical viewport offset, as well as the\n * height of the main area. When the page is scrolled beyond the header, the\n * sidebar is locked and fills the remaining space.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @returns Sidebar observable\n */\nexport function watchSidebar(\n el: HTMLElement, { viewport$, main$ }: WatchOptions\n): Observable {\n const parent = el.parentElement!\n const adjust =\n parent.offsetTop -\n parent.parentElement!.offsetTop\n\n /* Compute the sidebar's available height and if it should be locked */\n return combineLatest([main$, viewport$])\n .pipe(\n map(([{ offset, height }, { offset: { y } }]) => {\n height = height\n + Math.min(adjust, Math.max(0, y - offset))\n - adjust\n return {\n height,\n locked: y >= offset + adjust\n }\n }),\n distinctUntilChanged((a, b) => (\n a.height === b.height &&\n a.locked === b.locked\n ))\n )\n}\n\n/**\n * Mount sidebar\n *\n * This function doesn't set the height of the actual sidebar, but of its first\n * child \u2013 the `.md-sidebar__scrollwrap` element in order to mitigiate jittery\n * sidebars when the footer is scrolled into view. At some point we switched\n * from `absolute` / `fixed` positioning to `sticky` positioning, significantly\n * reducing jitter in some browsers (respectively Firefox and Safari) when\n * scrolling from the top. However, top-aligned sticky positioning means that\n * the sidebar snaps to the bottom when the end of the container is reached.\n * This is what leads to the mentioned jitter, as the sidebar's height may be\n * updated too slowly.\n *\n * This behaviour can be mitigiated by setting the height of the sidebar to `0`\n * while preserving the padding, and the height on its first element.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @returns Sidebar component observable\n */\nexport function mountSidebar(\n el: HTMLElement, { header$, ...options }: MountOptions\n): Observable> {\n const inner = getElement(\".md-sidebar__scrollwrap\", el)\n const { y } = getElementOffset(inner)\n return defer(() => {\n const push$ = new Subject()\n push$\n .pipe(\n auditTime(0, animationFrameScheduler),\n withLatestFrom(header$)\n )\n .subscribe({\n\n /* Handle emission */\n next([{ height }, { height: offset }]) {\n inner.style.height = `${height - 2 * y}px`\n el.style.top = `${offset}px`\n },\n\n /* Handle complete */\n complete() {\n inner.style.height = \"\"\n el.style.top = \"\"\n }\n })\n\n /* Bring active item into view on initial load */\n push$\n .pipe(\n observeOn(animationFrameScheduler),\n take(1)\n )\n .subscribe(() => {\n for (const item of getElements(\".md-nav__link--active[href]\", el)) {\n const container = getElementContainer(item)\n if (typeof container !== \"undefined\") {\n const offset = item.offsetTop - container.offsetTop\n const { height } = getElementSize(container)\n container.scrollTo({\n top: offset - height / 2\n })\n }\n }\n })\n\n /* Create and return component */\n return watchSidebar(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Repo, User } from \"github-types\"\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map,\n zip\n} from \"rxjs\"\n\nimport { requestJSON } from \"~/browser\"\n\nimport { SourceFacts } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * GitHub release (partial)\n */\ninterface Release {\n tag_name: string /* Tag name */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitHub repository facts\n *\n * @param user - GitHub user or organization\n * @param repo - GitHub repository\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFactsFromGitHub(\n user: string, repo?: string\n): Observable {\n if (typeof repo !== \"undefined\") {\n const url = `https://api.github.com/repos/${user}/${repo}`\n return zip(\n\n /* Fetch version */\n requestJSON(`${url}/releases/latest`)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(release => ({\n version: release.tag_name\n })),\n defaultIfEmpty({})\n ),\n\n /* Fetch stars and forks */\n requestJSON(url)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(info => ({\n stars: info.stargazers_count,\n forks: info.forks_count\n })),\n defaultIfEmpty({})\n )\n )\n .pipe(\n map(([release, info]) => ({ ...release, ...info }))\n )\n\n /* User or organization */\n } else {\n const url = `https://api.github.com/users/${user}`\n return requestJSON(url)\n .pipe(\n map(info => ({\n repositories: info.public_repos\n })),\n defaultIfEmpty({})\n )\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ProjectSchema } from \"gitlab\"\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map\n} from \"rxjs\"\n\nimport { requestJSON } from \"~/browser\"\n\nimport { SourceFacts } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitLab repository facts\n *\n * @param base - GitLab base\n * @param project - GitLab project\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFactsFromGitLab(\n base: string, project: string\n): Observable {\n const url = `https://${base}/api/v4/projects/${encodeURIComponent(project)}`\n return requestJSON(url)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(({ star_count, forks_count }) => ({\n stars: star_count,\n forks: forks_count\n })),\n defaultIfEmpty({})\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { EMPTY, Observable } from \"rxjs\"\n\nimport { fetchSourceFactsFromGitHub } from \"../github\"\nimport { fetchSourceFactsFromGitLab } from \"../gitlab\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository facts for repositories\n */\nexport interface RepositoryFacts {\n stars?: number /* Number of stars */\n forks?: number /* Number of forks */\n version?: string /* Latest version */\n}\n\n/**\n * Repository facts for organizations\n */\nexport interface OrganizationFacts {\n repositories?: number /* Number of repositories */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Repository facts\n */\nexport type SourceFacts =\n | RepositoryFacts\n | OrganizationFacts\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch repository facts\n *\n * @param url - Repository URL\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFacts(\n url: string\n): Observable {\n const [type] = url.match(/(git(?:hub|lab))/i) || []\n switch (type.toLowerCase()) {\n\n /* GitHub repository */\n case \"github\":\n const [, user, repo] = url.match(/^.+github\\.com\\/([^/]+)\\/?([^/]+)?/i)!\n return fetchSourceFactsFromGitHub(user, repo)\n\n /* GitLab repository */\n case \"gitlab\":\n const [, base, slug] = url.match(/^.+?([^/]*gitlab[^/]+)\\/(.+?)\\/?$/i)!\n return fetchSourceFactsFromGitLab(base, slug)\n\n /* Everything else */\n default:\n return EMPTY\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n catchError,\n defer,\n filter,\n finalize,\n map,\n of,\n shareReplay,\n tap\n} from \"rxjs\"\n\nimport { getElement } from \"~/browser\"\nimport { ConsentDefaults } from \"~/components/consent\"\nimport { renderSourceFacts } from \"~/templates\"\n\nimport {\n Component,\n getComponentElements\n} from \"../../_\"\nimport {\n SourceFacts,\n fetchSourceFacts\n} from \"../facts\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository information\n */\nexport interface Source {\n facts: SourceFacts /* Repository facts */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository information observable\n */\nlet fetch$: Observable\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch repository information\n *\n * This function tries to read the repository facts from session storage, and\n * if unsuccessful, fetches them from the underlying provider.\n *\n * @param el - Repository information element\n *\n * @returns Repository information observable\n */\nexport function watchSource(\n el: HTMLAnchorElement\n): Observable {\n return fetch$ ||= defer(() => {\n const cached = __md_get(\"__source\", sessionStorage)\n if (cached) {\n return of(cached)\n } else {\n\n /* Check if consent is configured and was given */\n const els = getComponentElements(\"consent\")\n if (els.length) {\n const consent = __md_get(\"__consent\")\n if (!(consent && consent.github))\n return EMPTY\n }\n\n /* Fetch repository facts */\n return fetchSourceFacts(el.href)\n .pipe(\n tap(facts => __md_set(\"__source\", facts, sessionStorage))\n )\n }\n })\n .pipe(\n catchError(() => EMPTY),\n filter(facts => Object.keys(facts).length > 0),\n map(facts => ({ facts })),\n shareReplay(1)\n )\n}\n\n/**\n * Mount repository information\n *\n * @param el - Repository information element\n *\n * @returns Repository information component observable\n */\nexport function mountSource(\n el: HTMLAnchorElement\n): Observable> {\n const inner = getElement(\":scope > :last-child\", el)\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ facts }) => {\n inner.appendChild(renderSourceFacts(facts))\n inner.classList.add(\"md-source__repository--active\")\n })\n\n /* Create and return component */\n return watchSource(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n distinctUntilKeyChanged,\n finalize,\n map,\n of,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n watchElementSize,\n watchViewportAt\n} from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Navigation tabs\n */\nexport interface Tabs {\n hidden: boolean /* Navigation tabs are hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch navigation tabs\n *\n * @param el - Navigation tabs element\n * @param options - Options\n *\n * @returns Navigation tabs observable\n */\nexport function watchTabs(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n return watchElementSize(document.body)\n .pipe(\n switchMap(() => watchViewportAt(el, { header$, viewport$ })),\n map(({ offset: { y } }) => {\n return {\n hidden: y >= 10\n }\n }),\n distinctUntilKeyChanged(\"hidden\")\n )\n}\n\n/**\n * Mount navigation tabs\n *\n * This function hides the navigation tabs when scrolling past the threshold\n * and makes them reappear in a nice CSS animation when scrolling back up.\n *\n * @param el - Navigation tabs element\n * @param options - Options\n *\n * @returns Navigation tabs component observable\n */\nexport function mountTabs(\n el: HTMLElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe({\n\n /* Handle emission */\n next({ hidden }) {\n el.hidden = hidden\n },\n\n /* Handle complete */\n complete() {\n el.hidden = false\n }\n })\n\n /* Create and return component */\n return (\n feature(\"navigation.tabs.sticky\")\n ? of({ hidden: false })\n : watchTabs(el, options)\n )\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatestWith,\n debounceTime,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n finalize,\n map,\n merge,\n of,\n repeat,\n scan,\n share,\n skip,\n startWith,\n switchMap,\n takeLast,\n takeUntil,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n getElement,\n getElementContainer,\n getElementSize,\n getElements,\n getLocation,\n getOptionalElement,\n watchElementSize\n} from \"~/browser\"\n\nimport {\n Component,\n getComponentElement\n} from \"../_\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Table of contents\n */\nexport interface TableOfContents {\n prev: HTMLAnchorElement[][] /* Anchors (previous) */\n next: HTMLAnchorElement[][] /* Anchors (next) */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n target$: Observable /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch table of contents\n *\n * This is effectively a scroll spy implementation which will account for the\n * fixed header and automatically re-calculate anchor offsets when the viewport\n * is resized. The returned observable will only emit if the table of contents\n * needs to be repainted.\n *\n * This implementation tracks an anchor element's entire path starting from its\n * level up to the top-most anchor element, e.g. `[h3, h2, h1]`. Although the\n * Material theme currently doesn't make use of this information, it enables\n * the styling of the entire hierarchy through customization.\n *\n * Note that the current anchor is the last item of the `prev` anchor list.\n *\n * @param el - Table of contents element\n * @param options - Options\n *\n * @returns Table of contents observable\n */\nexport function watchTableOfContents(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n const table = new Map()\n\n /* Compute anchor-to-target mapping */\n const anchors = getElements(\"[href^=\\\\#]\", el)\n for (const anchor of anchors) {\n const id = decodeURIComponent(anchor.hash.substring(1))\n const target = getOptionalElement(`[id=\"${id}\"]`)\n if (typeof target !== \"undefined\")\n table.set(anchor, target)\n }\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n distinctUntilKeyChanged(\"height\"),\n map(({ height }) => {\n const main = getComponentElement(\"main\")\n const grid = getElement(\":scope > :first-child\", main)\n return height + 0.8 * (\n grid.offsetTop -\n main.offsetTop\n )\n }),\n share()\n )\n\n /* Compute partition of previous and next anchors */\n const partition$ = watchElementSize(document.body)\n .pipe(\n distinctUntilKeyChanged(\"height\"),\n\n /* Build index to map anchor paths to vertical offsets */\n switchMap(body => defer(() => {\n let path: HTMLAnchorElement[] = []\n return of([...table].reduce((index, [anchor, target]) => {\n while (path.length) {\n const last = table.get(path[path.length - 1])!\n if (last.tagName >= target.tagName) {\n path.pop()\n } else {\n break\n }\n }\n\n /* If the current anchor is hidden, continue with its parent */\n let offset = target.offsetTop\n while (!offset && target.parentElement) {\n target = target.parentElement\n offset = target.offsetTop\n }\n\n /* Map reversed anchor path to vertical offset */\n return index.set(\n [...path = [...path, anchor]].reverse(),\n offset\n )\n }, new Map()))\n })\n .pipe(\n\n /* Sort index by vertical offset (see https://bit.ly/30z6QSO) */\n map(index => new Map([...index].sort(([, a], [, b]) => a - b))),\n combineLatestWith(adjust$),\n\n /* Re-compute partition when viewport offset changes */\n switchMap(([index, adjust]) => viewport$\n .pipe(\n scan(([prev, next], { offset: { y }, size }) => {\n const last = y + size.height >= Math.floor(body.height)\n\n /* Look forward */\n while (next.length) {\n const [, offset] = next[0]\n if (offset - adjust < y || last) {\n prev = [...prev, next.shift()!]\n } else {\n break\n }\n }\n\n /* Look backward */\n while (prev.length) {\n const [, offset] = prev[prev.length - 1]\n if (offset - adjust >= y && !last) {\n next = [prev.pop()!, ...next]\n } else {\n break\n }\n }\n\n /* Return partition */\n return [prev, next]\n }, [[], [...index]]),\n distinctUntilChanged((a, b) => (\n a[0] === b[0] &&\n a[1] === b[1]\n ))\n )\n )\n )\n )\n )\n\n /* Compute and return anchor list migrations */\n return partition$\n .pipe(\n map(([prev, next]) => ({\n prev: prev.map(([path]) => path),\n next: next.map(([path]) => path)\n })),\n\n /* Extract anchor list migrations */\n startWith({ prev: [], next: [] }),\n bufferCount(2, 1),\n map(([a, b]) => {\n\n /* Moving down */\n if (a.prev.length < b.prev.length) {\n return {\n prev: b.prev.slice(Math.max(0, a.prev.length - 1), b.prev.length),\n next: []\n }\n\n /* Moving up */\n } else {\n return {\n prev: b.prev.slice(-1),\n next: b.next.slice(0, b.next.length - a.next.length)\n }\n }\n })\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount table of contents\n *\n * @param el - Table of contents element\n * @param options - Options\n *\n * @returns Table of contents component observable\n */\nexport function mountTableOfContents(\n el: HTMLElement, { viewport$, header$, target$ }: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n push$.subscribe(({ prev, next }) => {\n\n /* Look forward */\n for (const [anchor] of next) {\n anchor.classList.remove(\"md-nav__link--passed\")\n anchor.classList.remove(\"md-nav__link--active\")\n }\n\n /* Look backward */\n for (const [index, [anchor]] of prev.entries()) {\n anchor.classList.add(\"md-nav__link--passed\")\n anchor.classList.toggle(\n \"md-nav__link--active\",\n index === prev.length - 1\n )\n }\n })\n\n /* Set up following, if enabled */\n if (feature(\"toc.follow\")) {\n\n /* Toggle smooth scrolling only for anchor clicks */\n const smooth$ = merge(\n viewport$.pipe(debounceTime(1), map(() => undefined)),\n viewport$.pipe(debounceTime(250), map(() => \"smooth\" as const))\n )\n\n /* Bring active anchor into view */\n push$\n .pipe(\n filter(({ prev }) => prev.length > 0),\n withLatestFrom(smooth$)\n )\n .subscribe(([{ prev }, behavior]) => {\n const [anchor] = prev[prev.length - 1]\n if (anchor.offsetHeight) {\n\n /* Retrieve overflowing container and scroll */\n const container = getElementContainer(anchor)\n if (typeof container !== \"undefined\") {\n const offset = anchor.offsetTop - container.offsetTop\n const { height } = getElementSize(container)\n container.scrollTo({\n top: offset - height / 2,\n behavior\n })\n }\n }\n })\n }\n\n /* Set up anchor tracking, if enabled */\n if (feature(\"navigation.tracking\"))\n viewport$\n .pipe(\n takeUntil(done$),\n distinctUntilKeyChanged(\"offset\"),\n debounceTime(250),\n skip(1),\n takeUntil(target$.pipe(skip(1))),\n repeat({ delay: 250 }),\n withLatestFrom(push$)\n )\n .subscribe(([, { prev }]) => {\n const url = getLocation()\n\n /* Set hash fragment to active anchor */\n const anchor = prev[prev.length - 1]\n if (anchor && anchor.length) {\n const [active] = anchor\n const { hash } = new URL(active.href)\n if (url.hash !== hash) {\n url.hash = hash\n history.replaceState({}, \"\", `${url}`)\n }\n\n /* Reset anchor when at the top */\n } else {\n url.hash = \"\"\n history.replaceState({}, \"\", `${url}`)\n }\n })\n\n /* Create and return component */\n return watchTableOfContents(el, { viewport$, header$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatest,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n endWith,\n finalize,\n map,\n repeat,\n skip,\n takeLast,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { Viewport } from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\nimport { Main } from \"../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Back-to-top button\n */\nexport interface BackToTop {\n hidden: boolean /* Back-to-top button is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n main$: Observable
    /* Main area observable */\n target$: Observable /* Location target observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n target$: Observable /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch back-to-top\n *\n * @param _el - Back-to-top element\n * @param options - Options\n *\n * @returns Back-to-top observable\n */\nexport function watchBackToTop(\n _el: HTMLElement, { viewport$, main$, target$ }: WatchOptions\n): Observable {\n\n /* Compute direction */\n const direction$ = viewport$\n .pipe(\n map(({ offset: { y } }) => y),\n bufferCount(2, 1),\n map(([a, b]) => a > b && b > 0),\n distinctUntilChanged()\n )\n\n /* Compute whether main area is active */\n const active$ = main$\n .pipe(\n map(({ active }) => active)\n )\n\n /* Compute threshold for hiding */\n return combineLatest([active$, direction$])\n .pipe(\n map(([active, direction]) => !(active && direction)),\n distinctUntilChanged(),\n takeUntil(target$.pipe(skip(1))),\n endWith(true),\n repeat({ delay: 250 }),\n map(hidden => ({ hidden }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount back-to-top\n *\n * @param el - Back-to-top element\n * @param options - Options\n *\n * @returns Back-to-top component observable\n */\nexport function mountBackToTop(\n el: HTMLElement, { viewport$, header$, main$, target$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n push$.subscribe({\n\n /* Handle emission */\n next({ hidden }) {\n el.hidden = hidden\n if (hidden) {\n el.setAttribute(\"tabindex\", \"-1\")\n el.blur()\n } else {\n el.removeAttribute(\"tabindex\")\n }\n },\n\n /* Handle complete */\n complete() {\n el.style.top = \"\"\n el.hidden = true\n el.removeAttribute(\"tabindex\")\n }\n })\n\n /* Watch header height */\n header$\n .pipe(\n takeUntil(done$),\n distinctUntilKeyChanged(\"height\")\n )\n .subscribe(({ height }) => {\n el.style.top = `${height + 16}px`\n })\n\n /* Create and return component */\n return watchBackToTop(el, { viewport$, main$, target$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n mergeMap,\n switchMap,\n takeWhile,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n tablet$: Observable /* Media tablet observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch indeterminate checkboxes\n *\n * This function replaces the indeterminate \"pseudo state\" with the actual\n * indeterminate state, which is used to keep navigation always expanded.\n *\n * @param options - Options\n */\nexport function patchIndeterminate(\n { document$, tablet$ }: PatchOptions\n): void {\n document$\n .pipe(\n switchMap(() => getElements(\n // @todo `data-md-state` is deprecated and removed in v9\n \".md-toggle--indeterminate, [data-md-state=indeterminate]\"\n )),\n tap(el => {\n el.indeterminate = true\n el.checked = false\n }),\n mergeMap(el => fromEvent(el, \"change\")\n .pipe(\n takeWhile(() => el.classList.contains(\"md-toggle--indeterminate\")),\n map(() => el)\n )\n ),\n withLatestFrom(tablet$)\n )\n .subscribe(([el, tablet]) => {\n el.classList.remove(\"md-toggle--indeterminate\")\n if (tablet)\n el.checked = false\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n mergeMap,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether the given device is an Apple device\n *\n * @returns Test result\n */\nfunction isAppleDevice(): boolean {\n return /(iPad|iPhone|iPod)/.test(navigator.userAgent)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all elements with `data-md-scrollfix` attributes\n *\n * This is a year-old patch which ensures that overflow scrolling works at the\n * top and bottom of containers on iOS by ensuring a `1px` scroll offset upon\n * the start of a touch event.\n *\n * @see https://bit.ly/2SCtAOO - Original source\n *\n * @param options - Options\n */\nexport function patchScrollfix(\n { document$ }: PatchOptions\n): void {\n document$\n .pipe(\n switchMap(() => getElements(\"[data-md-scrollfix]\")),\n tap(el => el.removeAttribute(\"data-md-scrollfix\")),\n filter(isAppleDevice),\n mergeMap(el => fromEvent(el, \"touchstart\")\n .pipe(\n map(() => el)\n )\n )\n )\n .subscribe(el => {\n const top = el.scrollTop\n\n /* We're at the top of the container */\n if (top === 0) {\n el.scrollTop = 1\n\n /* We're at the bottom of the container */\n } else if (top + el.offsetHeight === el.scrollHeight) {\n el.scrollTop = top - 1\n }\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n delay,\n map,\n of,\n switchMap,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n Viewport,\n watchToggle\n} from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n viewport$: Observable /* Viewport observable */\n tablet$: Observable /* Media tablet observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch the document body to lock when search is open\n *\n * For mobile and tablet viewports, the search is rendered full screen, which\n * leads to scroll leaking when at the top or bottom of the search result. This\n * function locks the body when the search is in full screen mode, and restores\n * the scroll position when leaving.\n *\n * @param options - Options\n */\nexport function patchScrolllock(\n { viewport$, tablet$ }: PatchOptions\n): void {\n combineLatest([watchToggle(\"search\"), tablet$])\n .pipe(\n map(([active, tablet]) => active && !tablet),\n switchMap(active => of(active)\n .pipe(\n delay(active ? 400 : 100)\n )\n ),\n withLatestFrom(viewport$)\n )\n .subscribe(([active, { offset: { y }}]) => {\n if (active) {\n document.body.setAttribute(\"data-md-scrolllock\", \"\")\n document.body.style.top = `-${y}px`\n } else {\n const value = -1 * parseInt(document.body.style.top, 10)\n document.body.removeAttribute(\"data-md-scrolllock\")\n document.body.style.top = \"\"\n if (value)\n window.scrollTo(0, value)\n }\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Polyfills\n * ------------------------------------------------------------------------- */\n\n/* Polyfill `Object.entries` */\nif (!Object.entries)\n Object.entries = function (obj: object) {\n const data: [string, string][] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push([key, obj[key]])\n\n /* Return entries */\n return data\n }\n\n/* Polyfill `Object.values` */\nif (!Object.values)\n Object.values = function (obj: object) {\n const data: string[] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push(obj[key])\n\n /* Return values */\n return data\n }\n\n/* ------------------------------------------------------------------------- */\n\n/* Polyfills for `Element` */\nif (typeof Element !== \"undefined\") {\n\n /* Polyfill `Element.scrollTo` */\n if (!Element.prototype.scrollTo)\n Element.prototype.scrollTo = function (\n x?: ScrollToOptions | number, y?: number\n ): void {\n if (typeof x === \"object\") {\n this.scrollLeft = x.left!\n this.scrollTop = x.top!\n } else {\n this.scrollLeft = x!\n this.scrollTop = y!\n }\n }\n\n /* Polyfill `Element.replaceWith` */\n if (!Element.prototype.replaceWith)\n Element.prototype.replaceWith = function (\n ...nodes: Array\n ): void {\n const parent = this.parentNode\n if (parent) {\n if (nodes.length === 0)\n parent.removeChild(this)\n\n /* Replace children and create text nodes */\n for (let i = nodes.length - 1; i >= 0; i--) {\n let node = nodes[i]\n if (typeof node !== \"object\")\n node = document.createTextNode(node)\n else if (node.parentNode)\n node.parentNode.removeChild(node)\n\n /* Replace child or insert before previous sibling */\n if (!i)\n parent.replaceChild(node, this)\n else\n parent.insertBefore(this.previousSibling!, node)\n }\n }\n }\n}\n"], - "mappings": "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", - "names": ["require_focus_visible", "__commonJSMin", "exports", "module", "global", "factory", "applyFocusVisiblePolyfill", "scope", "hadKeyboardEvent", "hadFocusVisibleRecently", "hadFocusVisibleRecentlyTimeout", "inputTypesAllowlist", "isValidFocusTarget", "el", "focusTriggersKeyboardModality", "type", "tagName", "addFocusVisibleClass", "removeFocusVisibleClass", "onKeyDown", "e", "onPointerDown", "onFocus", "onBlur", "onVisibilityChange", "addInitialPointerMoveListeners", "onInitialPointerMove", "removeInitialPointerMoveListeners", "event", "error", "require_url_polyfill", "__commonJSMin", "exports", "global", "checkIfIteratorIsSupported", "error", "iteratorSupported", "createIterator", "items", "iterator", "value", "serializeParam", "deserializeParam", "polyfillURLSearchParams", "URLSearchParams", "searchString", "typeofSearchString", "_this", "name", "i", "entry", "key", "proto", "callback", "thisArg", "entries", "searchArray", "checkIfURLSearchParamsSupported", "e", "a", "b", "keys", "attributes", "attribute", "checkIfURLIsSupported", "u", "polyfillURL", "_URL", "URL", "url", "base", "doc", "baseElement", "err", "anchorElement", "inputElement", "searchParams", "enableSearchUpdate", "enableSearchParamsUpdate", "methodName", "method", "search", "linkURLWithAnchorAttribute", "attributeName", "expectedPort", "addPortToOrigin", "blob", "getOrigin", "require_tslib", "__commonJSMin", "exports", "module", "__extends", "__assign", "__rest", "__decorate", "__param", "__metadata", "__awaiter", "__generator", "__exportStar", "__values", "__read", "__spread", "__spreadArrays", "__spreadArray", "__await", "__asyncGenerator", "__asyncDelegator", "__asyncValues", "__makeTemplateObject", "__importStar", "__importDefault", "__classPrivateFieldGet", "__classPrivateFieldSet", "__createBinding", "factory", "root", "createExporter", "previous", "id", "v", "exporter", "extendStatics", "d", "b", "p", "__", "t", "s", "n", "e", "i", "decorators", "target", "key", "desc", "c", "r", "paramIndex", "decorator", "metadataKey", "metadataValue", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "reject", "fulfilled", "step", "rejected", "result", "body", "_", "f", "y", "g", "verb", "op", "m", "o", "k", "k2", "ar", "error", "il", "a", "j", "jl", "to", "from", "pack", "l", "q", "resume", "settle", "fulfill", "cooked", "raw", "__setModuleDefault", "mod", "receiver", "state", "kind", "require_clipboard", "__commonJSMin", "exports", "module", "root", "factory", "__webpack_modules__", "__unused_webpack_module", "__webpack_exports__", "__webpack_require__", "clipboard", "tiny_emitter", "tiny_emitter_default", "listen", "listen_default", "src_select", "select_default", "command", "type", "err", "ClipboardActionCut", "target", "selectedText", "actions_cut", "createFakeElement", "value", "isRTL", "fakeElement", "yPosition", "fakeCopyAction", "options", "ClipboardActionCopy", "actions_copy", "_typeof", "obj", "ClipboardActionDefault", "_options$action", "action", "container", "text", "actions_default", "clipboard_typeof", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "i", "descriptor", "_createClass", "protoProps", "staticProps", "_inherits", "subClass", "superClass", "_setPrototypeOf", "o", "p", "_createSuper", "Derived", "hasNativeReflectConstruct", "_isNativeReflectConstruct", "Super", "_getPrototypeOf", "result", "NewTarget", "_possibleConstructorReturn", "self", "call", "_assertThisInitialized", "e", "getAttributeValue", "suffix", "element", "attribute", "Clipboard", "_Emitter", "_super", "trigger", "_this", "_this2", "selector", "actions", "support", "DOCUMENT_NODE_TYPE", "proto", "closest", "__unused_webpack_exports", "_delegate", "callback", "useCapture", "listenerFn", "listener", "delegate", "elements", "is", "listenNode", "listenNodeList", "listenSelector", "node", "nodeList", "select", "isReadOnly", "selection", "range", "E", "name", "ctx", "data", "evtArr", "len", "evts", "liveEvents", "__webpack_module_cache__", "moduleId", "getter", "definition", "key", "prop", "require_escape_html", "__commonJSMin", "exports", "module", "matchHtmlRegExp", "escapeHtml", "string", "str", "match", "escape", "html", "index", "lastIndex", "r", "a", "e", "import_focus_visible", "n", "t", "s", "r", "o", "u", "i", "a", "e", "c", "import_url_polyfill", "import_tslib", "__extends", "__assign", "__rest", "__decorate", "__param", "__metadata", "__awaiter", "__generator", "__exportStar", "__createBinding", "__values", "__read", "__spread", "__spreadArrays", "__spreadArray", "__await", "__asyncGenerator", "__asyncDelegator", "__asyncValues", "__makeTemplateObject", "__importStar", "__importDefault", "__classPrivateFieldGet", "__classPrivateFieldSet", "tslib", "isFunction", "value", "createErrorClass", "createImpl", "_super", "instance", "ctorFunc", "UnsubscriptionError", "createErrorClass", "_super", "errors", "err", "i", "arrRemove", "arr", "item", "index", "Subscription", "initialTeardown", "errors", "_parentage", "_parentage_1", "__values", "_parentage_1_1", "parent_1", "initialFinalizer", "isFunction", "e", "UnsubscriptionError", "_finalizers", "_finalizers_1", "_finalizers_1_1", "finalizer", "execFinalizer", "err", "__spreadArray", "__read", "teardown", "_a", "parent", "arrRemove", "empty", "EMPTY_SUBSCRIPTION", "Subscription", "isSubscription", "value", "isFunction", "execFinalizer", "finalizer", "config", "timeoutProvider", "handler", "timeout", "args", "_i", "delegate", "__spreadArray", "__read", "handle", "reportUnhandledError", "err", "timeoutProvider", "onUnhandledError", "config", "noop", "COMPLETE_NOTIFICATION", "createNotification", "errorNotification", "error", "nextNotification", "value", "kind", "context", "errorContext", "cb", "config", "isRoot", "_a", "errorThrown", "error", "captureError", "err", "Subscriber", "_super", "__extends", "destination", "_this", "isSubscription", "EMPTY_OBSERVER", "next", "error", "complete", "SafeSubscriber", "value", "handleStoppedNotification", "nextNotification", "err", "errorNotification", "COMPLETE_NOTIFICATION", "Subscription", "_bind", "bind", "fn", "thisArg", "ConsumerObserver", "partialObserver", "value", "error", "handleUnhandledError", "err", "SafeSubscriber", "_super", "__extends", "observerOrNext", "complete", "_this", "isFunction", "context_1", "config", "Subscriber", "handleUnhandledError", "error", "config", "captureError", "reportUnhandledError", "defaultErrorHandler", "err", "handleStoppedNotification", "notification", "subscriber", "onStoppedNotification", "timeoutProvider", "EMPTY_OBSERVER", "noop", "observable", "identity", "x", "pipe", "fns", "_i", "pipeFromArray", "identity", "input", "prev", "fn", "Observable", "subscribe", "operator", "observable", "observerOrNext", "error", "complete", "_this", "subscriber", "isSubscriber", "SafeSubscriber", "errorContext", "_a", "source", "sink", "err", "next", "promiseCtor", "getPromiseCtor", "resolve", "reject", "value", "operations", "_i", "pipeFromArray", "x", "getPromiseCtor", "promiseCtor", "_a", "config", "isObserver", "value", "isFunction", "isSubscriber", "Subscriber", "isSubscription", "hasLift", "source", "isFunction", "operate", "init", "liftedSource", "err", "createOperatorSubscriber", "destination", "onNext", "onComplete", "onError", "onFinalize", "OperatorSubscriber", "_super", "__extends", "shouldUnsubscribe", "_this", "value", "err", "closed_1", "_a", "Subscriber", "animationFrameProvider", "callback", "request", "cancel", "delegate", "handle", "timestamp", "Subscription", "args", "_i", "__spreadArray", "__read", "ObjectUnsubscribedError", "createErrorClass", "_super", "Subject", "_super", "__extends", "_this", "operator", "subject", "AnonymousSubject", "ObjectUnsubscribedError", "value", "errorContext", "_b", "__values", "_c", "observer", "err", "observers", "_a", "subscriber", "hasError", "isStopped", "EMPTY_SUBSCRIPTION", "Subscription", "arrRemove", "thrownError", "observable", "Observable", "destination", "source", "AnonymousSubject", "_super", "__extends", "destination", "source", "_this", "value", "_b", "_a", "err", "subscriber", "EMPTY_SUBSCRIPTION", "Subject", "dateTimestampProvider", "ReplaySubject", "_super", "__extends", "_bufferSize", "_windowTime", "_timestampProvider", "dateTimestampProvider", "_this", "value", "_a", "isStopped", "_buffer", "_infiniteTimeWindow", "subscriber", "subscription", "copy", "i", "adjustedBufferSize", "now", "last", "Subject", "Action", "_super", "__extends", "scheduler", "work", "state", "delay", "Subscription", "intervalProvider", "handler", "timeout", "args", "_i", "delegate", "__spreadArray", "__read", "handle", "AsyncAction", "_super", "__extends", "scheduler", "work", "_this", "state", "delay", "id", "_a", "_id", "intervalProvider", "_scheduler", "error", "_delay", "errored", "errorValue", "e", "actions", "arrRemove", "Action", "Scheduler", "schedulerActionCtor", "now", "work", "delay", "state", "dateTimestampProvider", "AsyncScheduler", "_super", "__extends", "SchedulerAction", "now", "Scheduler", "_this", "action", "actions", "error", "asyncScheduler", "AsyncScheduler", "AsyncAction", "async", "AnimationFrameAction", "_super", "__extends", "scheduler", "work", "_this", "id", "delay", "animationFrameProvider", "actions", "_a", "AsyncAction", "AnimationFrameScheduler", "_super", "__extends", "action", "flushId", "actions", "error", "AsyncScheduler", "animationFrameScheduler", "AnimationFrameScheduler", "AnimationFrameAction", "EMPTY", "Observable", "subscriber", "isScheduler", "value", "isFunction", "last", "arr", "popResultSelector", "args", "isFunction", "popScheduler", "isScheduler", "popNumber", "defaultValue", "isArrayLike", "x", "isPromise", "value", "isFunction", "isInteropObservable", "input", "isFunction", "observable", "isAsyncIterable", "obj", "isFunction", "createInvalidObservableTypeError", "input", "getSymbolIterator", "iterator", "isIterable", "input", "isFunction", "iterator", "readableStreamLikeToAsyncGenerator", "readableStream", "reader", "__await", "_a", "_b", "value", "done", "isReadableStreamLike", "obj", "isFunction", "innerFrom", "input", "Observable", "isInteropObservable", "fromInteropObservable", "isArrayLike", "fromArrayLike", "isPromise", "fromPromise", "isAsyncIterable", "fromAsyncIterable", "isIterable", "fromIterable", "isReadableStreamLike", "fromReadableStreamLike", "createInvalidObservableTypeError", "obj", "subscriber", "obs", "observable", "isFunction", "array", "i", "promise", "value", "err", "reportUnhandledError", "iterable", "iterable_1", "__values", "iterable_1_1", "asyncIterable", "process", "readableStream", "readableStreamLikeToAsyncGenerator", "asyncIterable_1", "__asyncValues", "asyncIterable_1_1", "executeSchedule", "parentSubscription", "scheduler", "work", "delay", "repeat", "scheduleSubscription", "observeOn", "scheduler", "delay", "operate", "source", "subscriber", "createOperatorSubscriber", "value", "executeSchedule", "err", "subscribeOn", "scheduler", "delay", "operate", "source", "subscriber", "scheduleObservable", "input", "scheduler", "innerFrom", "subscribeOn", "observeOn", "schedulePromise", "input", "scheduler", "innerFrom", "subscribeOn", "observeOn", "scheduleArray", "input", "scheduler", "Observable", "subscriber", "i", "scheduleIterable", "input", "scheduler", "Observable", "subscriber", "iterator", "executeSchedule", "value", "done", "_a", "err", "isFunction", "scheduleAsyncIterable", "input", "scheduler", "Observable", "subscriber", "executeSchedule", "iterator", "result", "scheduleReadableStreamLike", "input", "scheduler", "scheduleAsyncIterable", "readableStreamLikeToAsyncGenerator", "scheduled", "input", "scheduler", "isInteropObservable", "scheduleObservable", "isArrayLike", "scheduleArray", "isPromise", "schedulePromise", "isAsyncIterable", "scheduleAsyncIterable", "isIterable", "scheduleIterable", "isReadableStreamLike", "scheduleReadableStreamLike", "createInvalidObservableTypeError", "from", "input", "scheduler", "scheduled", "innerFrom", "of", "args", "_i", "scheduler", "popScheduler", "from", "throwError", "errorOrErrorFactory", "scheduler", "errorFactory", "isFunction", "init", "subscriber", "Observable", "isValidDate", "value", "map", "project", "thisArg", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "isArray", "callOrApply", "fn", "args", "__spreadArray", "__read", "mapOneOrManyArgs", "map", "isArray", "getPrototypeOf", "objectProto", "getKeys", "argsArgArrayOrObject", "args", "first_1", "isPOJO", "keys", "key", "obj", "createObject", "keys", "values", "result", "key", "i", "combineLatest", "args", "_i", "scheduler", "popScheduler", "resultSelector", "popResultSelector", "_a", "argsArgArrayOrObject", "observables", "keys", "from", "result", "Observable", "combineLatestInit", "values", "createObject", "identity", "mapOneOrManyArgs", "valueTransform", "subscriber", "maybeSchedule", "length", "active", "remainingFirstValues", "i", "source", "hasFirstValue", "createOperatorSubscriber", "value", "execute", "subscription", "executeSchedule", "mergeInternals", "source", "subscriber", "project", "concurrent", "onBeforeNext", "expand", "innerSubScheduler", "additionalFinalizer", "buffer", "active", "index", "isComplete", "checkComplete", "outerNext", "value", "doInnerSub", "innerComplete", "innerFrom", "createOperatorSubscriber", "innerValue", "bufferedValue", "executeSchedule", "err", "mergeMap", "project", "resultSelector", "concurrent", "isFunction", "a", "i", "map", "b", "ii", "innerFrom", "operate", "source", "subscriber", "mergeInternals", "mergeAll", "concurrent", "mergeMap", "identity", "concatAll", "mergeAll", "concat", "args", "_i", "concatAll", "from", "popScheduler", "defer", "observableFactory", "Observable", "subscriber", "innerFrom", "nodeEventEmitterMethods", "eventTargetMethods", "jqueryMethods", "fromEvent", "target", "eventName", "options", "resultSelector", "isFunction", "mapOneOrManyArgs", "_a", "__read", "isEventTarget", "methodName", "handler", "isNodeStyleEventEmitter", "toCommonHandlerRegistry", "isJQueryStyleEventEmitter", "add", "remove", "isArrayLike", "mergeMap", "subTarget", "innerFrom", "Observable", "subscriber", "args", "_i", "fromEventPattern", "addHandler", "removeHandler", "resultSelector", "mapOneOrManyArgs", "Observable", "subscriber", "handler", "e", "_i", "retValue", "isFunction", "timer", "dueTime", "intervalOrScheduler", "scheduler", "async", "intervalDuration", "isScheduler", "Observable", "subscriber", "due", "isValidDate", "n", "merge", "args", "_i", "scheduler", "popScheduler", "concurrent", "popNumber", "sources", "innerFrom", "mergeAll", "from", "EMPTY", "NEVER", "Observable", "noop", "isArray", "argsOrArgArray", "args", "filter", "predicate", "thisArg", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "zip", "args", "_i", "resultSelector", "popResultSelector", "sources", "argsOrArgArray", "Observable", "subscriber", "buffers", "completed", "sourceIndex", "innerFrom", "createOperatorSubscriber", "value", "buffer", "result", "__spreadArray", "__read", "i", "EMPTY", "audit", "durationSelector", "operate", "source", "subscriber", "hasValue", "lastValue", "durationSubscriber", "isComplete", "endDuration", "value", "cleanupDuration", "createOperatorSubscriber", "innerFrom", "auditTime", "duration", "scheduler", "asyncScheduler", "audit", "timer", "bufferCount", "bufferSize", "startBufferEvery", "operate", "source", "subscriber", "buffers", "count", "createOperatorSubscriber", "value", "toEmit", "buffers_1", "__values", "buffers_1_1", "buffer", "toEmit_1", "toEmit_1_1", "arrRemove", "buffers_2", "buffers_2_1", "catchError", "selector", "operate", "source", "subscriber", "innerSub", "syncUnsub", "handledResult", "createOperatorSubscriber", "err", "innerFrom", "scanInternals", "accumulator", "seed", "hasSeed", "emitOnNext", "emitBeforeComplete", "source", "subscriber", "hasState", "state", "index", "createOperatorSubscriber", "value", "i", "combineLatest", "args", "_i", "resultSelector", "popResultSelector", "pipe", "__spreadArray", "__read", "mapOneOrManyArgs", "operate", "source", "subscriber", "combineLatestInit", "argsOrArgArray", "combineLatestWith", "otherSources", "_i", "combineLatest", "__spreadArray", "__read", "concatMap", "project", "resultSelector", "isFunction", "mergeMap", "debounceTime", "dueTime", "scheduler", "asyncScheduler", "operate", "source", "subscriber", "activeTask", "lastValue", "lastTime", "emit", "value", "emitWhenIdle", "targetTime", "now", "createOperatorSubscriber", "defaultIfEmpty", "defaultValue", "operate", "source", "subscriber", "hasValue", "createOperatorSubscriber", "value", "take", "count", "EMPTY", "operate", "source", "subscriber", "seen", "createOperatorSubscriber", "value", "ignoreElements", "operate", "source", "subscriber", "createOperatorSubscriber", "noop", "mapTo", "value", "map", "delayWhen", "delayDurationSelector", "subscriptionDelay", "source", "concat", "take", "ignoreElements", "mergeMap", "value", "index", "mapTo", "delay", "due", "scheduler", "asyncScheduler", "duration", "timer", "delayWhen", "distinctUntilChanged", "comparator", "keySelector", "identity", "defaultCompare", "operate", "source", "subscriber", "previousKey", "first", "createOperatorSubscriber", "value", "currentKey", "a", "b", "distinctUntilKeyChanged", "key", "compare", "distinctUntilChanged", "x", "y", "endWith", "values", "_i", "source", "concat", "of", "__spreadArray", "__read", "finalize", "callback", "operate", "source", "subscriber", "takeLast", "count", "EMPTY", "operate", "source", "subscriber", "buffer", "createOperatorSubscriber", "value", "buffer_1", "__values", "buffer_1_1", "merge", "args", "_i", "scheduler", "popScheduler", "concurrent", "popNumber", "argsOrArgArray", "operate", "source", "subscriber", "mergeAll", "from", "__spreadArray", "__read", "mergeWith", "otherSources", "_i", "merge", "__spreadArray", "__read", "repeat", "countOrConfig", "count", "delay", "_a", "EMPTY", "operate", "source", "subscriber", "soFar", "sourceSub", "resubscribe", "notifier", "timer", "innerFrom", "notifierSubscriber_1", "createOperatorSubscriber", "subscribeToSource", "syncUnsub", "sample", "notifier", "operate", "source", "subscriber", "hasValue", "lastValue", "createOperatorSubscriber", "value", "noop", "scan", "accumulator", "seed", "operate", "scanInternals", "share", "options", "_a", "connector", "Subject", "_b", "resetOnError", "_c", "resetOnComplete", "_d", "resetOnRefCountZero", "wrapperSource", "connection", "resetConnection", "subject", "refCount", "hasCompleted", "hasErrored", "cancelReset", "reset", "resetAndUnsubscribe", "conn", "operate", "source", "subscriber", "dest", "handleReset", "SafeSubscriber", "value", "err", "innerFrom", "on", "args", "_i", "onSubscriber", "__spreadArray", "__read", "shareReplay", "configOrBufferSize", "windowTime", "scheduler", "bufferSize", "refCount", "_a", "_b", "_c", "share", "ReplaySubject", "skip", "count", "filter", "_", "index", "skipUntil", "notifier", "operate", "source", "subscriber", "taking", "skipSubscriber", "createOperatorSubscriber", "noop", "innerFrom", "value", "startWith", "values", "_i", "scheduler", "popScheduler", "operate", "source", "subscriber", "concat", "switchMap", "project", "resultSelector", "operate", "source", "subscriber", "innerSubscriber", "index", "isComplete", "checkComplete", "createOperatorSubscriber", "value", "innerIndex", "outerIndex", "innerFrom", "innerValue", "takeUntil", "notifier", "operate", "source", "subscriber", "innerFrom", "createOperatorSubscriber", "noop", "takeWhile", "predicate", "inclusive", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "result", "tap", "observerOrNext", "error", "complete", "tapObserver", "isFunction", "operate", "source", "subscriber", "_a", "isUnsub", "createOperatorSubscriber", "value", "err", "_b", "identity", "defaultThrottleConfig", "throttle", "durationSelector", "config", "operate", "source", "subscriber", "leading", "trailing", "hasValue", "sendValue", "throttled", "isComplete", "endThrottling", "send", "cleanupThrottling", "startThrottle", "value", "innerFrom", "createOperatorSubscriber", "throttleTime", "duration", "scheduler", "config", "asyncScheduler", "defaultThrottleConfig", "duration$", "timer", "throttle", "withLatestFrom", "inputs", "_i", "project", "popResultSelector", "operate", "source", "subscriber", "len", "otherValues", "hasValue", "ready", "i", "innerFrom", "createOperatorSubscriber", "value", "identity", "noop", "values", "__spreadArray", "__read", "zip", "sources", "_i", "operate", "source", "subscriber", "__spreadArray", "__read", "zipWith", "otherInputs", "_i", "zip", "__spreadArray", "__read", "watchDocument", "document$", "ReplaySubject", "fromEvent", "getElements", "selector", "node", "getElement", "el", "getOptionalElement", "getActiveElement", "watchElementFocus", "el", "merge", "fromEvent", "debounceTime", "map", "active", "getActiveElement", "startWith", "distinctUntilChanged", "getElementOffset", "el", "watchElementOffset", "merge", "fromEvent", "auditTime", "animationFrameScheduler", "map", "startWith", "getElementContentOffset", "el", "watchElementContentOffset", "merge", "fromEvent", "auditTime", "animationFrameScheduler", "map", "startWith", "MapShim", "getIndex", "arr", "key", "result", "entry", "index", "class_1", "value", "entries", "callback", "ctx", "_i", "_a", "isBrowser", "global$1", "requestAnimationFrame$1", "trailingTimeout", "throttle", "delay", "leadingCall", "trailingCall", "lastCallTime", "resolvePending", "proxy", "timeoutCallback", "timeStamp", "REFRESH_DELAY", "transitionKeys", "mutationObserverSupported", "ResizeObserverController", "observer", "observers", "changesDetected", "activeObservers", "_b", "propertyName", "isReflowProperty", "defineConfigurable", "target", "props", "getWindowOf", "ownerGlobal", "emptyRect", "createRectInit", "toFloat", "getBordersSize", "styles", "positions", "size", "position", "getPaddings", "paddings", "positions_1", "getSVGContentRect", "bbox", "getHTMLElementContentRect", "clientWidth", "clientHeight", "horizPad", "vertPad", "width", "height", "isDocumentElement", "vertScrollbar", "horizScrollbar", "isSVGGraphicsElement", "getContentRect", "createReadOnlyRect", "x", "y", "Constr", "rect", "ResizeObservation", "ResizeObserverEntry", "rectInit", "contentRect", "ResizeObserverSPI", "controller", "callbackCtx", "observations", "_this", "observation", "ResizeObserver", "method", "ResizeObserver_es_default", "entry$", "Subject", "observer$", "defer", "of", "ResizeObserver_es_default", "entries", "entry", "switchMap", "observer", "merge", "NEVER", "finalize", "shareReplay", "getElementSize", "el", "watchElementSize", "tap", "filter", "target", "map", "startWith", "getElementContentSize", "el", "getElementContainer", "parent", "entry$", "Subject", "observer$", "defer", "of", "entries", "entry", "switchMap", "observer", "merge", "NEVER", "finalize", "shareReplay", "watchElementVisibility", "el", "tap", "filter", "target", "map", "isIntersecting", "watchElementBoundary", "threshold", "watchElementContentOffset", "y", "visible", "getElementSize", "content", "getElementContentSize", "distinctUntilChanged", "toggles", "getElement", "getToggle", "name", "setToggle", "value", "watchToggle", "el", "fromEvent", "map", "startWith", "isSusceptibleToKeyboard", "el", "type", "watchKeyboard", "fromEvent", "filter", "ev", "map", "getToggle", "mode", "active", "getActiveElement", "share", "getLocation", "setLocation", "url", "watchLocation", "Subject", "appendChild", "el", "child", "node", "h", "tag", "attributes", "children", "attr", "truncate", "value", "n", "i", "round", "digits", "getLocationHash", "setLocationHash", "hash", "el", "h", "ev", "watchLocationHash", "fromEvent", "map", "startWith", "filter", "shareReplay", "watchLocationTarget", "id", "getOptionalElement", "watchMedia", "query", "media", "fromEventPattern", "next", "startWith", "watchPrint", "merge", "fromEvent", "map", "at", "query$", "factory", "switchMap", "active", "EMPTY", "request", "url", "options", "from", "catchError", "EMPTY", "switchMap", "res", "throwError", "of", "requestJSON", "shareReplay", "requestXML", "dom", "map", "watchScript", "src", "script", "h", "defer", "merge", "fromEvent", "switchMap", "throwError", "map", "finalize", "take", "getViewportOffset", "watchViewportOffset", "merge", "fromEvent", "map", "startWith", "getViewportSize", "watchViewportSize", "fromEvent", "map", "startWith", "watchViewport", "combineLatest", "watchViewportOffset", "watchViewportSize", "map", "offset", "size", "shareReplay", "watchViewportAt", "el", "viewport$", "header$", "size$", "distinctUntilKeyChanged", "offset$", "combineLatest", "map", "getElementOffset", "height", "offset", "size", "x", "y", "watchWorker", "worker", "tx$", "rx$", "fromEvent", "map", "data", "throttle", "tap", "message", "switchMap", "share", "script", "getElement", "config", "getLocation", "configuration", "feature", "flag", "translation", "key", "value", "getComponentElement", "type", "node", "getElement", "getComponentElements", "getElements", "watchAnnounce", "el", "button", "getElement", "fromEvent", "map", "content", "mountAnnounce", "feature", "EMPTY", "defer", "push$", "Subject", "startWith", "hash", "_a", "tap", "state", "finalize", "__spreadValues", "watchConsent", "el", "target$", "map", "target", "mountConsent", "options", "internal$", "Subject", "hidden", "tap", "state", "finalize", "__spreadValues", "import_clipboard", "renderTooltip", "id", "h", "renderAnnotation", "id", "prefix", "anchor", "h", "renderTooltip", "renderClipboardButton", "id", "h", "translation", "renderSearchDocument", "document", "flag", "parent", "teaser", "missing", "key", "list", "h", "url", "feature", "match", "highlight", "value", "tags", "configuration", "truncate", "tag", "id", "type", "translation", "renderSearchResultItem", "result", "threshold", "docs", "doc", "article", "index", "best", "more", "children", "section", "renderSourceFacts", "facts", "h", "key", "value", "round", "renderTabbedControl", "type", "classes", "h", "renderTable", "table", "h", "renderVersion", "version", "config", "configuration", "url", "h", "renderVersionSelector", "versions", "active", "translation", "watchAnnotation", "el", "container", "offset$", "defer", "combineLatest", "watchElementOffset", "watchElementContentOffset", "map", "x", "y", "scroll", "width", "height", "getElementSize", "watchElementFocus", "switchMap", "active", "offset", "take", "mountAnnotation", "target$", "tooltip", "index", "push$", "Subject", "done$", "takeLast", "watchElementVisibility", "takeUntil", "visible", "merge", "filter", "debounceTime", "auditTime", "animationFrameScheduler", "throttleTime", "origin", "fromEvent", "ev", "withLatestFrom", "_a", "parent", "getActiveElement", "target", "delay", "tap", "state", "finalize", "__spreadValues", "findAnnotationMarkers", "container", "markers", "el", "getElements", "nodes", "it", "node", "text", "match", "id", "force", "marker", "swap", "source", "target", "mountAnnotationList", "target$", "print$", "parent", "prefix", "annotations", "getOptionalElement", "renderAnnotation", "EMPTY", "defer", "done$", "Subject", "pairs", "annotation", "getElement", "takeUntil", "takeLast", "active", "inner", "child", "merge", "mountAnnotation", "finalize", "share", "sequence", "findCandidateList", "el", "sibling", "watchCodeBlock", "watchElementSize", "map", "width", "getElementContentSize", "distinctUntilKeyChanged", "mountCodeBlock", "options", "hover", "factory$", "defer", "push$", "Subject", "scrollable", "ClipboardJS", "parent", "renderClipboardButton", "container", "list", "feature", "annotations$", "mountAnnotationList", "tap", "state", "finalize", "__spreadValues", "mergeWith", "height", "distinctUntilChanged", "switchMap", "active", "EMPTY", "watchElementVisibility", "filter", "visible", "take", "mermaid$", "sequence", "fetchScripts", "watchScript", "of", "mountMermaid", "el", "tap", "mermaid_default", "map", "shareReplay", "id", "host", "h", "svg", "shadow", "watchDetails", "el", "target$", "print$", "open", "merge", "map", "target", "filter", "details", "active", "tap", "mountDetails", "options", "defer", "push$", "Subject", "action", "reveal", "state", "finalize", "__spreadValues", "sentinel", "h", "mountDataTable", "el", "renderTable", "of", "watchContentTabs", "el", "inputs", "getElements", "initial", "input", "merge", "fromEvent", "map", "getElement", "startWith", "active", "mountContentTabs", "viewport$", "prev", "renderTabbedControl", "next", "container", "defer", "push$", "Subject", "done$", "takeLast", "combineLatest", "watchElementSize", "auditTime", "animationFrameScheduler", "takeUntil", "size", "offset", "getElementOffset", "width", "getElementSize", "content", "getElementContentOffset", "watchElementContentOffset", "getElementContentSize", "direction", "feature", "skip", "withLatestFrom", "tab", "y", "set", "label", "tabs", "tap", "state", "finalize", "__spreadValues", "subscribeOn", "asyncScheduler", "mountContent", "el", "viewport$", "target$", "print$", "merge", "getElements", "child", "mountCodeBlock", "mountMermaid", "mountDataTable", "mountDetails", "mountContentTabs", "watchDialog", "_el", "alert$", "switchMap", "message", "merge", "of", "delay", "map", "active", "mountDialog", "el", "options", "inner", "getElement", "defer", "push$", "Subject", "tap", "state", "finalize", "__spreadValues", "isHidden", "viewport$", "feature", "of", "direction$", "map", "y", "bufferCount", "a", "b", "distinctUntilKeyChanged", "hidden$", "combineLatest", "filter", "offset", "direction", "distinctUntilChanged", "search$", "watchToggle", "search", "switchMap", "active", "startWith", "watchHeader", "el", "options", "defer", "watchElementSize", "height", "hidden", "shareReplay", "mountHeader", "header$", "main$", "push$", "Subject", "done$", "takeLast", "combineLatestWith", "takeUntil", "state", "__spreadValues", "watchHeaderTitle", "el", "viewport$", "header$", "watchViewportAt", "map", "y", "height", "getElementSize", "distinctUntilKeyChanged", "mountHeaderTitle", "options", "defer", "push$", "Subject", "active", "heading", "getOptionalElement", "EMPTY", "tap", "state", "finalize", "__spreadValues", "watchMain", "el", "viewport$", "header$", "adjust$", "map", "height", "distinctUntilChanged", "border$", "switchMap", "watchElementSize", "distinctUntilKeyChanged", "combineLatest", "header", "top", "bottom", "y", "a", "b", "watchPalette", "inputs", "current", "input", "of", "mergeMap", "fromEvent", "map", "startWith", "shareReplay", "mountPalette", "el", "defer", "push$", "Subject", "palette", "key", "value", "index", "label", "observeOn", "asyncScheduler", "getElements", "tap", "state", "finalize", "__spreadValues", "import_clipboard", "extract", "el", "text", "setupClipboardJS", "alert$", "ClipboardJS", "Observable", "subscriber", "getElement", "ev", "tap", "map", "translation", "preprocess", "urls", "root", "next", "a", "b", "url", "index", "fetchSitemap", "base", "cached", "of", "config", "configuration", "requestXML", "map", "sitemap", "getElements", "node", "catchError", "EMPTY", "defaultIfEmpty", "tap", "setupInstantLoading", "document$", "location$", "viewport$", "config", "configuration", "fromEvent", "favicon", "getOptionalElement", "push$", "fetchSitemap", "map", "paths", "path", "switchMap", "urls", "filter", "ev", "el", "url", "of", "NEVER", "share", "pop$", "merge", "distinctUntilChanged", "a", "b", "response$", "distinctUntilKeyChanged", "request", "catchError", "setLocation", "sample", "dom", "res", "skip", "replacement", "selector", "feature", "source", "target", "getComponentElement", "getElements", "concatMap", "script", "h", "name", "Observable", "observer", "EMPTY", "offset", "setLocationHash", "skipUntil", "debounceTime", "bufferCount", "state", "import_escape_html", "import_escape_html", "setupSearchHighlighter", "config", "escape", "separator", "highlight", "_", "data", "term", "query", "match", "value", "escapeHTML", "defaultTransform", "query", "terms", "index", "isSearchReadyMessage", "message", "isSearchQueryMessage", "isSearchResultMessage", "setupSearchIndex", "config", "docs", "translation", "options", "feature", "setupSearchWorker", "url", "index", "configuration", "worker", "tx$", "Subject", "rx$", "watchWorker", "map", "message", "isSearchResultMessage", "result", "document", "share", "from", "data", "setupVersionSelector", "document$", "config", "configuration", "versions$", "requestJSON", "catchError", "EMPTY", "current$", "map", "versions", "current", "version", "aliases", "switchMap", "urls", "fromEvent", "filter", "ev", "withLatestFrom", "el", "url", "of", "fetchSitemap", "sitemap", "path", "getLocation", "setLocation", "combineLatest", "getElement", "renderVersionSelector", "_a", "outdated", "latest", "warning", "getComponentElements", "watchSearchQuery", "el", "rx$", "fn", "defaultTransform", "searchParams", "getLocation", "setToggle", "param$", "filter", "isSearchReadyMessage", "take", "map", "watchToggle", "active", "url", "value", "focus$", "watchElementFocus", "value$", "merge", "fromEvent", "delay", "startWith", "distinctUntilChanged", "combineLatest", "focus", "shareReplay", "mountSearchQuery", "tx$", "push$", "Subject", "done$", "takeLast", "distinctUntilKeyChanged", "translation", "takeUntil", "tap", "state", "finalize", "__spreadValues", "share", "mountSearchResult", "el", "rx$", "query$", "push$", "Subject", "boundary$", "watchElementBoundary", "filter", "meta", "getElement", "list", "ready$", "isSearchReadyMessage", "take", "withLatestFrom", "skipUntil", "items", "value", "translation", "round", "tap", "switchMap", "merge", "of", "bufferCount", "zipWith", "chunk", "result", "renderSearchResultItem", "isSearchResultMessage", "map", "data", "state", "finalize", "__spreadValues", "watchSearchShare", "_el", "query$", "map", "value", "url", "getLocation", "mountSearchShare", "el", "options", "push$", "Subject", "fromEvent", "ev", "tap", "state", "finalize", "__spreadValues", "mountSearchSuggest", "el", "rx$", "keyboard$", "push$", "Subject", "query", "getComponentElement", "query$", "merge", "fromEvent", "observeOn", "asyncScheduler", "map", "distinctUntilChanged", "combineLatestWith", "suggestions", "value", "words", "last", "filter", "mode", "key", "isSearchResultMessage", "data", "tap", "state", "finalize", "mountSearch", "el", "index$", "keyboard$", "config", "configuration", "url", "worker", "setupSearchWorker", "query", "getComponentElement", "result", "tx$", "rx$", "filter", "isSearchQueryMessage", "sample", "isSearchReadyMessage", "take", "mode", "key", "active", "getActiveElement", "anchors", "anchor", "getElements", "article", "best", "a", "b", "setToggle", "els", "i", "query$", "mountSearchQuery", "result$", "mountSearchResult", "merge", "mergeWith", "getComponentElements", "child", "mountSearchShare", "mountSearchSuggest", "err", "NEVER", "mountSearchHiglight", "el", "index$", "location$", "combineLatest", "startWith", "getLocation", "filter", "url", "map", "index", "setupSearchHighlighter", "fn", "_a", "nodes", "it", "node", "original", "replaced", "text", "childNodes", "h", "watchSidebar", "el", "viewport$", "main$", "parent", "adjust", "combineLatest", "map", "offset", "height", "y", "distinctUntilChanged", "a", "b", "mountSidebar", "_a", "_b", "header$", "options", "__objRest", "inner", "getElement", "getElementOffset", "defer", "push$", "Subject", "auditTime", "animationFrameScheduler", "withLatestFrom", "observeOn", "take", "item", "getElements", "container", "getElementContainer", "getElementSize", "tap", "state", "finalize", "__spreadValues", "fetchSourceFactsFromGitHub", "user", "repo", "url", "zip", "requestJSON", "catchError", "EMPTY", "map", "release", "defaultIfEmpty", "info", "__spreadValues", "fetchSourceFactsFromGitLab", "base", "project", "url", "requestJSON", "catchError", "EMPTY", "map", "star_count", "forks_count", "defaultIfEmpty", "fetchSourceFacts", "url", "type", "user", "repo", "fetchSourceFactsFromGitHub", "base", "slug", "fetchSourceFactsFromGitLab", "EMPTY", "fetch$", "watchSource", "el", "defer", "cached", "of", "getComponentElements", "consent", "EMPTY", "fetchSourceFacts", "tap", "facts", "catchError", "filter", "map", "shareReplay", "mountSource", "inner", "getElement", "push$", "Subject", "renderSourceFacts", "state", "finalize", "__spreadValues", "watchTabs", "el", "viewport$", "header$", "watchElementSize", "switchMap", "watchViewportAt", "map", "y", "distinctUntilKeyChanged", "mountTabs", "options", "defer", "push$", "Subject", "hidden", "feature", "of", "tap", "state", "finalize", "__spreadValues", "watchTableOfContents", "el", "viewport$", "header$", "table", "anchors", "getElements", "anchor", "id", "target", "getOptionalElement", "adjust$", "distinctUntilKeyChanged", "map", "height", "main", "getComponentElement", "grid", "getElement", "share", "watchElementSize", "switchMap", "body", "defer", "path", "of", "index", "offset", "a", "b", "combineLatestWith", "adjust", "scan", "prev", "next", "y", "size", "last", "distinctUntilChanged", "startWith", "bufferCount", "mountTableOfContents", "target$", "push$", "Subject", "done$", "takeLast", "feature", "smooth$", "merge", "debounceTime", "filter", "withLatestFrom", "behavior", "container", "getElementContainer", "getElementSize", "takeUntil", "skip", "repeat", "url", "getLocation", "active", "hash", "tap", "state", "finalize", "__spreadValues", "watchBackToTop", "_el", "viewport$", "main$", "target$", "direction$", "map", "y", "bufferCount", "a", "b", "distinctUntilChanged", "active$", "active", "combineLatest", "direction", "takeUntil", "skip", "endWith", "repeat", "hidden", "mountBackToTop", "el", "header$", "push$", "Subject", "done$", "takeLast", "distinctUntilKeyChanged", "height", "tap", "state", "finalize", "__spreadValues", "patchIndeterminate", "document$", "tablet$", "switchMap", "getElements", "tap", "el", "mergeMap", "fromEvent", "takeWhile", "map", "withLatestFrom", "tablet", "isAppleDevice", "patchScrollfix", "document$", "switchMap", "getElements", "tap", "el", "filter", "mergeMap", "fromEvent", "map", "top", "patchScrolllock", "viewport$", "tablet$", "combineLatest", "watchToggle", "map", "active", "tablet", "switchMap", "of", "delay", "withLatestFrom", "y", "value", "obj", "data", "key", "x", "y", "nodes", "parent", "i", "node", "document$", "watchDocument", "location$", "watchLocation", "target$", "watchLocationTarget", "keyboard$", "watchKeyboard", "viewport$", "watchViewport", "tablet$", "watchMedia", "screen$", "print$", "watchPrint", "config", "configuration", "index$", "requestJSON", "NEVER", "alert$", "Subject", "setupClipboardJS", "feature", "setupInstantLoading", "_a", "setupVersionSelector", "merge", "delay", "setToggle", "filter", "mode", "key", "prev", "getOptionalElement", "next", "patchIndeterminate", "patchScrollfix", "patchScrolllock", "header$", "watchHeader", "getComponentElement", "main$", "map", "switchMap", "el", "watchMain", "shareReplay", "control$", "getComponentElements", "mountConsent", "mountDialog", "mountHeader", "mountPalette", "mountSearch", "mountSource", "content$", "defer", "mountAnnounce", "mountContent", "mountSearchHiglight", "EMPTY", "mountHeaderTitle", "at", "mountSidebar", "mountTabs", "mountTableOfContents", "mountBackToTop", "component$", "mergeWith"] -} diff --git a/assets/javascripts/bundle.fac441b0.min.js b/assets/javascripts/bundle.fac441b0.min.js new file mode 100644 index 0000000..4bb4cd6 --- /dev/null +++ b/assets/javascripts/bundle.fac441b0.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var Ci=Object.create;var gr=Object.defineProperty;var Ri=Object.getOwnPropertyDescriptor;var ki=Object.getOwnPropertyNames,Ht=Object.getOwnPropertySymbols,Hi=Object.getPrototypeOf,yr=Object.prototype.hasOwnProperty,nn=Object.prototype.propertyIsEnumerable;var rn=(e,t,r)=>t in e?gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))yr.call(t,r)&&rn(e,r,t[r]);if(Ht)for(var r of Ht(t))nn.call(t,r)&&rn(e,r,t[r]);return e};var on=(e,t)=>{var r={};for(var n in e)yr.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Ht)for(var n of Ht(e))t.indexOf(n)<0&&nn.call(e,n)&&(r[n]=e[n]);return r};var Pt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Pi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ki(t))!yr.call(e,o)&&o!==r&&gr(e,o,{get:()=>t[o],enumerable:!(n=Ri(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Ci(Hi(e)):{},Pi(t||!e||!e.__esModule?gr(r,"default",{value:e,enumerable:!0}):r,e));var sn=Pt((xr,an)=>{(function(e,t){typeof xr=="object"&&typeof an!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(xr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(O){return!!(O&&O!==document&&O.nodeName!=="HTML"&&O.nodeName!=="BODY"&&"classList"in O&&"contains"in O.classList)}function f(O){var Qe=O.type,De=O.tagName;return!!(De==="INPUT"&&s[Qe]&&!O.readOnly||De==="TEXTAREA"&&!O.readOnly||O.isContentEditable)}function c(O){O.classList.contains("focus-visible")||(O.classList.add("focus-visible"),O.setAttribute("data-focus-visible-added",""))}function u(O){O.hasAttribute("data-focus-visible-added")&&(O.classList.remove("focus-visible"),O.removeAttribute("data-focus-visible-added"))}function p(O){O.metaKey||O.altKey||O.ctrlKey||(a(r.activeElement)&&c(r.activeElement),n=!0)}function m(O){n=!1}function d(O){a(O.target)&&(n||f(O.target))&&c(O.target)}function h(O){a(O.target)&&(O.target.classList.contains("focus-visible")||O.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(O.target))}function v(O){document.visibilityState==="hidden"&&(o&&(n=!0),Q())}function Q(){document.addEventListener("mousemove",N),document.addEventListener("mousedown",N),document.addEventListener("mouseup",N),document.addEventListener("pointermove",N),document.addEventListener("pointerdown",N),document.addEventListener("pointerup",N),document.addEventListener("touchmove",N),document.addEventListener("touchstart",N),document.addEventListener("touchend",N)}function B(){document.removeEventListener("mousemove",N),document.removeEventListener("mousedown",N),document.removeEventListener("mouseup",N),document.removeEventListener("pointermove",N),document.removeEventListener("pointerdown",N),document.removeEventListener("pointerup",N),document.removeEventListener("touchmove",N),document.removeEventListener("touchstart",N),document.removeEventListener("touchend",N)}function N(O){O.target.nodeName&&O.target.nodeName.toLowerCase()==="html"||(n=!1,B())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),Q(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var cn=Pt(Er=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var u={next:function(){var p=c.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},s=function(){var c=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof c){var d=this;p.forEach(function(B,N){d.append(N,B)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),c._entries&&(c._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er);(function(e){var t=function(){try{var o=new e.URL("b","http://a/");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(f,c){typeof f!="string"&&(f=String(f)),c&&typeof c!="string"&&(c=String(c));var u=document,p;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=c,u.head.appendChild(p);try{if(p.href.indexOf(c)!==0)throw new Error(p.href)}catch(O){throw new Error("URL unable to set base "+c+" due to "+O)}}var m=u.createElement("a");m.href=f,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=f,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,Q=!0,B=this;["append","delete","set"].forEach(function(O){var Qe=h[O];h[O]=function(){Qe.apply(h,arguments),v&&(Q=!1,B.search=h.toString(),Q=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var N=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==N&&(N=this.search,Q&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},s=i.prototype,a=function(f){Object.defineProperty(s,f,{get:function(){return this._anchorElement[f]},set:function(c){this._anchorElement[f]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(f){a(f)}),Object.defineProperty(s,"search",{get:function(){return this._anchorElement.search},set:function(f){this._anchorElement.search=f,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(s,{toString:{get:function(){var f=this;return function(){return f.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(f){this._anchorElement.href=f,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(f){this._anchorElement.pathname=f},enumerable:!0},origin:{get:function(){var f={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=f&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(f){},enumerable:!0},username:{get:function(){return""},set:function(f){},enumerable:!0}}),i.createObjectURL=function(f){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(f){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er)});var qr=Pt((Mt,Nr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Mt=="object"&&typeof Nr=="object"?Nr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Mt=="object"?Mt.ClipboardJS=r():t.ClipboardJS=r()})(Mt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return Ai}});var s=i(279),a=i.n(s),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(T){return!1}}var d=function(T){var E=p()(T);return m("cut"),E},h=d;function v(j){var T=document.documentElement.getAttribute("dir")==="rtl",E=document.createElement("textarea");E.style.fontSize="12pt",E.style.border="0",E.style.padding="0",E.style.margin="0",E.style.position="absolute",E.style[T?"right":"left"]="-9999px";var H=window.pageYOffset||document.documentElement.scrollTop;return E.style.top="".concat(H,"px"),E.setAttribute("readonly",""),E.value=j,E}var Q=function(T,E){var H=v(T);E.container.appendChild(H);var I=p()(H);return m("copy"),H.remove(),I},B=function(T){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},H="";return typeof T=="string"?H=Q(T,E):T instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(T==null?void 0:T.type)?H=Q(T.value,E):(H=p()(T),m("copy")),H},N=B;function O(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?O=function(E){return typeof E}:O=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},O(j)}var Qe=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},E=T.action,H=E===void 0?"copy":E,I=T.container,q=T.target,Me=T.text;if(H!=="copy"&&H!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&O(q)==="object"&&q.nodeType===1){if(H==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(H==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Me)return N(Me,{container:I});if(q)return H==="cut"?h(q):N(q,{container:I})},De=Qe;function $e(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?$e=function(E){return typeof E}:$e=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},$e(j)}function Ei(j,T){if(!(j instanceof T))throw new TypeError("Cannot call a class as a function")}function tn(j,T){for(var E=0;E0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof I.action=="function"?I.action:this.defaultAction,this.target=typeof I.target=="function"?I.target:this.defaultTarget,this.text=typeof I.text=="function"?I.text:this.defaultText,this.container=$e(I.container)==="object"?I.container:document.body}},{key:"listenClick",value:function(I){var q=this;this.listener=c()(I,"click",function(Me){return q.onClick(Me)})}},{key:"onClick",value:function(I){var q=I.delegateTarget||I.currentTarget,Me=this.action(q)||"copy",kt=De({action:Me,container:this.container,target:this.target(q),text:this.text(q)});this.emit(kt?"success":"error",{action:Me,text:kt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(I){return vr("action",I)}},{key:"defaultTarget",value:function(I){var q=vr("target",I);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(I){return vr("text",I)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(I){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return N(I,q)}},{key:"cut",value:function(I){return h(I)}},{key:"isSupported",value:function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof I=="string"?[I]:I,Me=!!document.queryCommandSupported;return q.forEach(function(kt){Me=Me&&!!document.queryCommandSupported(kt)}),Me}}]),E}(a()),Ai=Li},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,f){for(;a&&a.nodeType!==o;){if(typeof a.matches=="function"&&a.matches(f))return a;a=a.parentNode}}n.exports=s},438:function(n,o,i){var s=i(828);function a(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?a.apply(null,arguments):typeof m=="function"?a.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return a(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=s(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(n,o,i){var s=i(879),a=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(h))throw new TypeError("Third argument must be a Function");if(s.node(m))return c(m,d,h);if(s.nodeList(m))return u(m,d,h);if(s.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return a(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),s=f.toString()}return s}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,s,a){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var f=this;function c(){f.off(i,c),s.apply(a,arguments)}return c._=s,this.on(i,c,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=a.length;for(f;f{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var rs=/["'&<>]/;Yo.exports=ns;function ns(e){var t=""+e,r=rs.exec(t);if(!r)return t;var n,o="",i=0,s=0;for(i=r.index;i0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||a(m,d)})})}function a(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof et?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){a("next",m)}function u(m){a("throw",m)}function p(m,d){m(d),i.shift(),i.length&&a(i[0][0],i[0][1])}}function pn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof Ee=="function"?Ee(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(s){return new Promise(function(a,f){s=e[i](s),o(a,f,s.done,s.value)})}}function o(i,s,a,f){Promise.resolve(f).then(function(c){i({value:c,done:a})},s)}}function C(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var It=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function Ve(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ie=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=Ee(s),f=a.next();!f.done;f=a.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var u=this.initialTeardown;if(C(u))try{u()}catch(v){i=v instanceof It?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=Ee(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{ln(h)}catch(v){i=i!=null?i:[],v instanceof It?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new It(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)ln(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ve(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ve(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Sr=Ie.EMPTY;function jt(e){return e instanceof Ie||e&&"closed"in e&&C(e.remove)&&C(e.add)&&C(e.unsubscribe)}function ln(e){C(e)?e():e.unsubscribe()}var Le={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,s=o.isStopped,a=o.observers;return i||s?Sr:(this.currentObservers=null,a.push(r),new Ie(function(){n.currentObservers=null,Ve(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,n){return new xn(r,n)},t}(F);var xn=function(e){ie(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Sr},t}(x);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ie(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,a=n._timestampProvider,f=n._windowTime;o||(i.push(r),!s&&i.push(a.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,s=o._buffer,a=s.slice(),f=0;f0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var s=r.actions;n!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Wt);var Sn=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Dt);var Oe=new Sn(wn);var _=new F(function(e){return e.complete()});function Vt(e){return e&&C(e.schedule)}function Cr(e){return e[e.length-1]}function Ye(e){return C(Cr(e))?e.pop():void 0}function Te(e){return Vt(Cr(e))?e.pop():void 0}function zt(e,t){return typeof Cr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Nt(e){return C(e==null?void 0:e.then)}function qt(e){return C(e[ft])}function Kt(e){return Symbol.asyncIterator&&C(e==null?void 0:e[Symbol.asyncIterator])}function Qt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function zi(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Yt=zi();function Gt(e){return C(e==null?void 0:e[Yt])}function Bt(e){return un(this,arguments,function(){var r,n,o,i;return $t(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,et(r.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,et(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,et(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Jt(e){return C(e==null?void 0:e.getReader)}function U(e){if(e instanceof F)return e;if(e!=null){if(qt(e))return Ni(e);if(pt(e))return qi(e);if(Nt(e))return Ki(e);if(Kt(e))return On(e);if(Gt(e))return Qi(e);if(Jt(e))return Yi(e)}throw Qt(e)}function Ni(e){return new F(function(t){var r=e[ft]();if(C(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function qi(e){return new F(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?A(function(o,i){return e(o,i,n)}):de,ge(1),r?He(t):Dn(function(){return new Zt}))}}function Vn(){for(var e=[],t=0;t=2,!0))}function pe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new x}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,f=a===void 0?!0:a;return function(c){var u,p,m,d=0,h=!1,v=!1,Q=function(){p==null||p.unsubscribe(),p=void 0},B=function(){Q(),u=m=void 0,h=v=!1},N=function(){var O=u;B(),O==null||O.unsubscribe()};return y(function(O,Qe){d++,!v&&!h&&Q();var De=m=m!=null?m:r();Qe.add(function(){d--,d===0&&!v&&!h&&(p=$r(N,f))}),De.subscribe(Qe),!u&&d>0&&(u=new rt({next:function($e){return De.next($e)},error:function($e){v=!0,Q(),p=$r(B,o,$e),De.error($e)},complete:function(){h=!0,Q(),p=$r(B,s),De.complete()}}),U(O).subscribe(u))})(c)}}function $r(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function z(e,t=document){let r=ce(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ce(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function tr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(ke(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),V(e===_e()),J())}function Xe(e){return{x:e.offsetLeft,y:e.offsetTop}}function Kn(e){return L(b(window,"load"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>Xe(e)),V(Xe(e)))}function rr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>rr(e)),V(rr(e)))}var Yn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!Wr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),va?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Wr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ba.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Gn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Jn=typeof WeakMap!="undefined"?new WeakMap:new Yn,Xn=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=ga.getInstance(),n=new La(t,r,this);Jn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Xn.prototype[e]=function(){var t;return(t=Jn.get(this))[e].apply(t,arguments)}});var Aa=function(){return typeof nr.ResizeObserver!="undefined"?nr.ResizeObserver:Xn}(),Zn=Aa;var eo=new x,Ca=$(()=>k(new Zn(e=>{for(let t of e)eo.next(t)}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ye(e){return Ca.pipe(S(t=>t.observe(e)),g(t=>eo.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(()=>he(e)))),V(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ar(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var to=new x,Ra=$(()=>k(new IntersectionObserver(e=>{for(let t of e)to.next(t)},{threshold:0}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function sr(e){return Ra.pipe(S(t=>t.observe(e)),g(t=>to.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function ro(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=he(e),o=bt(e);return r>=o.height-n.height-t}),J())}var cr={drawer:z("[data-md-toggle=drawer]"),search:z("[data-md-toggle=search]")};function no(e){return cr[e].checked}function Ke(e,t){cr[e].checked!==t&&cr[e].click()}function Ue(e){let t=cr[e];return b(t,"change").pipe(l(()=>t.checked),V(t.checked))}function ka(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ha(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(V(!1))}function oo(){let e=b(window,"keydown").pipe(A(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:no("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),A(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!ka(n,r)}return!0}),pe());return Ha().pipe(g(t=>t?_:e))}function le(){return new URL(location.href)}function ot(e){location.href=e.href}function io(){return new x}function ao(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)ao(e,r)}function M(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)ao(n,o);return n}function fr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function so(){return location.hash.substring(1)}function Dr(e){let t=M("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Pa(e){return L(b(window,"hashchange"),e).pipe(l(so),V(so()),A(t=>t.length>0),X(1))}function co(e){return Pa(e).pipe(l(t=>ce(`[id="${t}"]`)),A(t=>typeof t!="undefined"))}function Vr(e){let t=matchMedia(e);return er(r=>t.addListener(()=>r(t.matches))).pipe(V(t.matches))}function fo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(V(e.matches))}function zr(e,t){return e.pipe(g(r=>r?t():_))}function ur(e,t={credentials:"same-origin"}){return ue(fetch(`${e}`,t)).pipe(fe(()=>_),g(r=>r.status!==200?Ot(()=>new Error(r.statusText)):k(r)))}function We(e,t){return ur(e,t).pipe(g(r=>r.json()),X(1))}function uo(e,t){let r=new DOMParser;return ur(e,t).pipe(g(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),X(1))}function pr(e){let t=M("script",{src:e});return $(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(g(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),R(()=>document.head.removeChild(t)),ge(1))))}function po(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function lo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(po),V(po()))}function mo(){return{width:innerWidth,height:innerHeight}}function ho(){return b(window,"resize",{passive:!0}).pipe(l(mo),V(mo()))}function bo(){return Y([lo(),ho()]).pipe(l(([e,t])=>({offset:e,size:t})),X(1))}function lr(e,{viewport$:t,header$:r}){let n=t.pipe(ee("size")),o=Y([n,r]).pipe(l(()=>Xe(e)));return Y([r,t,o]).pipe(l(([{height:i},{offset:s,size:a},{x:f,y:c}])=>({offset:{x:s.x-f,y:s.y-c+i},size:a})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(s=>{let a=document.createElement("script");a.src=i,a.onload=s,document.body.appendChild(a)})),Promise.resolve())}var r=class extends EventTarget{constructor(n){super(),this.url=n,this.m=i=>{i.source===this.w&&(this.dispatchEvent(new MessageEvent("message",{data:i.data})),this.onmessage&&this.onmessage(i))},this.e=(i,s,a,f,c)=>{if(s===`${this.url}`){let u=new ErrorEvent("error",{message:i,filename:s,lineno:a,colno:f,error:c});this.dispatchEvent(u),this.onerror&&this.onerror(u)}};let o=document.createElement("iframe");o.hidden=!0,document.body.appendChild(this.iframe=o),this.w.document.open(),this.w.document.write(` + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: cast_collection_as

    +

    URI: linkmltr:cast_collection_as

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...no
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: cast_collection_as
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: cast_collection_as
    +owner: SlotDerivation
    +domain_of:
    +- SlotDerivation
    +range: CollectionType
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/class_derivations/index.html b/class_derivations/index.html index d493f9a..b603105 100644 --- a/class_derivations/index.html +++ b/class_derivations/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    @@ -325,10 +341,8 @@ - - - - + +

    Slot: class_derivations

    @@ -342,19 +356,25 @@

    Applicable Classes

    Name Description +Modifies Slot TransformationSpecification A collection of mappings between source and target classes +no

    Properties

    Identifier and Mapping Information

    Schema Source

    @@ -419,10 +439,10 @@

    LinkML Source

    - + - + diff --git a/class_name/index.html b/class_name/index.html index c0f195e..d880649 100644 --- a/class_name/index.html +++ b/class_name/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    @@ -325,10 +341,8 @@ - - - - + +

    Slot: class_name

    @@ -341,18 +355,20 @@

    Applicable Classes

    Name Description +Modifies Slot Inverse -Used for back references +Used for back references in mapping to relational model +no

    Properties

    Identifier and Mapping Information

    Schema Source

    @@ -369,7 +385,6 @@

    LinkML Source

    owner: Inverse domain_of: - Inverse -range: string @@ -413,10 +428,10 @@

    LinkML Source

    - + - + diff --git a/class_named/index.html b/class_named/index.html index 7f5525f..cb1f728 100644 --- a/class_named/index.html +++ b/class_named/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    @@ -325,10 +341,8 @@ - - - - + +

    Slot: class_named

    @@ -342,18 +356,20 @@

    Applicable Classes

    Name Description +Modifies Slot AliasedClass alias-class key value pairs for classes +no

    Properties

    Identifier and Mapping Information

    Schema Source

    @@ -371,7 +387,6 @@

    LinkML Source

    owner: AliasedClass domain_of: - AliasedClass -range: string @@ -415,10 +430,10 @@

    LinkML Source

    - + - + diff --git a/comments/index.html b/comments/index.html new file mode 100644 index 0000000..191cf87 --- /dev/null +++ b/comments/index.html @@ -0,0 +1,485 @@ + + + + + + + + + + + + + + + + + + + + Slot: comments - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: comments

    +

    A list of comments about this component. Comments are free text, and may be used to provide additional information about the component, including instructions for its use.

    +

    URI: rdfs:comment

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    SpecificationComponentno
    TransformationSpecificationA collection of mappings between source and target classesno
    ElementDerivationAn abstract grouping for classes that provide a specification of how to deri...no
    ClassDerivationA specification of how to derive a target class from a source classno
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...no
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...no
    PermissibleValueDerivationA specification of how to derive the value of a PV from a source enumno
    PrefixDerivationno
    +

    Properties

    +
      +
    • +

      Range: String

      +
    • +
    • +

      Multivalued: True

      +
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: comments
    +description: A list of comments about this component. Comments are free text, and
    +  may be used to provide additional information about the component, including instructions
    +  for its use.
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +slot_uri: rdfs:comment
    +multivalued: true
    +alias: comments
    +owner: SpecificationComponent
    +domain_of:
    +- SpecificationComponent
    +range: string
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/copy_all/index.html b/copy_all/index.html index ad96a05..b58ce9c 100644 --- a/copy_all/index.html +++ b/copy_all/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    @@ -325,10 +341,8 @@ - - - - + +

    Slot: copy_all

    @@ -341,18 +355,20 @@

    Applicable Classes

    Name Description +Modifies Slot CopyDirective - +Instructs a Schema Mapper in how to map to a target schema +no

    Properties

    Identifier and Mapping Information

    Schema Source

    @@ -413,10 +429,10 @@

    LinkML Source

    - + - + diff --git a/copy_directives/index.html b/copy_directives/index.html index 072f59e..a3dcf59 100644 --- a/copy_directives/index.html +++ b/copy_directives/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    @@ -325,10 +341,8 @@ - - - - + +

    Slot: copy_directives

    @@ -341,39 +355,50 @@

    Applicable Classes

    Name Description +Modifies Slot ElementDerivation -A specification of how to derive a target element from a source element +An abstract grouping for classes that provide a specification of how to deri... +no ClassDerivation A specification of how to derive a target class from a source class +no SlotDerivation A specification of how to derive the value of a target slot from a source slo... +no EnumDerivation A specification of how to derive the value of a target enum from a source enu... +no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum +no PrefixDerivation +no

    Properties

    Identifier and Mapping Information

    Schema Source

    @@ -436,10 +461,10 @@

    LinkML Source

    - + - + diff --git a/delimiter/index.html b/delimiter/index.html new file mode 100644 index 0000000..4cabd53 --- /dev/null +++ b/delimiter/index.html @@ -0,0 +1,469 @@ + + + + + + + + + + + + + + + + + + + + Slot: delimiter - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: delimiter

    +

    URI: linkmltr:delimiter

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    StringificationConfigurationno
    +

    Properties

    + +

    Examples

    + + + + + + + + + + + + + + + + + +
    Value
    ,
    ;
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: delimiter
    +examples:
    +- value: ','
    +- value: '|'
    +- value: ;
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: delimiter
    +owner: StringificationConfiguration
    +domain_of:
    +- StringificationConfiguration
    +range: string
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/derived_from/index.html b/derived_from/index.html new file mode 100644 index 0000000..9d98daa --- /dev/null +++ b/derived_from/index.html @@ -0,0 +1,448 @@ + + + + + + + + + + + + + + + + + + + + Slot: derived_from - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: derived_from

    +

    Source slots that are used to derive this slot. This can be computed from the expr, if the expr is declarative.

    +

    URI: linkmltr:derived_from

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...no
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: derived_from
    +description: Source slots that are used to derive this slot. This can be computed
    +  from the expr, if the expr is declarative.
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +multivalued: true
    +alias: derived_from
    +owner: SlotDerivation
    +domain_of:
    +- SlotDerivation
    +range: SlotReference
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/description/index.html b/description/index.html new file mode 100644 index 0000000..17fca10 --- /dev/null +++ b/description/index.html @@ -0,0 +1,476 @@ + + + + + + + + + + + + + + + + + + + + Slot: description - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: description

    +

    description of the specification component

    +

    URI: dcterms:description

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    SpecificationComponentno
    TransformationSpecificationA collection of mappings between source and target classesno
    ElementDerivationAn abstract grouping for classes that provide a specification of how to deri...no
    ClassDerivationA specification of how to derive a target class from a source classno
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...no
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...no
    PermissibleValueDerivationA specification of how to derive the value of a PV from a source enumno
    PrefixDerivationno
    +

    Properties

    +
      +
    • Range: NONE
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: description
    +description: description of the specification component
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +slot_uri: dcterms:description
    +alias: description
    +owner: SpecificationComponent
    +domain_of:
    +- SpecificationComponent
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/dictionary_key/index.html b/dictionary_key/index.html new file mode 100644 index 0000000..292a3ea --- /dev/null +++ b/dictionary_key/index.html @@ -0,0 +1,439 @@ + + + + + + + + + + + + + + + + + + + + Slot: dictionary_key - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: dictionary_key

    +

    URI: linkmltr:dictionary_key

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...no
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: dictionary_key
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: dictionary_key
    +owner: SlotDerivation
    +domain_of:
    +- SlotDerivation
    +range: string
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/element_name/index.html b/element_name/index.html index 5d834bb..9a6f2d6 100644 --- a/element_name/index.html +++ b/element_name/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    @@ -325,10 +341,8 @@ - - - - + +

    Slot: element_name

    @@ -341,18 +355,25 @@

    Applicable Classes

    Name Description +Modifies Slot CopyDirective - +Instructs a Schema Mapper in how to map to a target schema +no

    Properties

      -
    • Range: xsd:string
    • +
    • +

      Range: NONE

      +
    • +
    • +

      Required: True

      +

    Identifier and Mapping Information

    Schema Source

    @@ -370,7 +391,7 @@

    LinkML Source

    owner: CopyDirective domain_of: - CopyDirective -range: string +required: true @@ -414,10 +435,10 @@

    LinkML Source

    - + - + diff --git a/enum_derivations/index.html b/enum_derivations/index.html index 9031214..dcb3c2d 100644 --- a/enum_derivations/index.html +++ b/enum_derivations/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    @@ -325,10 +341,8 @@ - - - - + +

    Slot: enum_derivations

    @@ -342,19 +356,25 @@

    Applicable Classes

    Name Description +Modifies Slot TransformationSpecification A collection of mappings between source and target classes +no

    Properties

    Identifier and Mapping Information

    Schema Source

    @@ -418,10 +438,10 @@

    LinkML Source

    - + - + diff --git a/exclude/index.html b/exclude/index.html index 3d89215..3bb6286 100644 --- a/exclude/index.html +++ b/exclude/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    @@ -325,10 +341,8 @@ - - - - + +

    Slot: exclude

    @@ -341,12 +355,14 @@

    Applicable Classes

    Name Description +Modifies Slot CopyDirective - +Instructs a Schema Mapper in how to map to a target schema +no @@ -413,10 +429,10 @@

    LinkML Source

    - + - + diff --git a/exclude_all/index.html b/exclude_all/index.html index bc2c497..c00d0e2 100644 --- a/exclude_all/index.html +++ b/exclude_all/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    @@ -325,10 +341,8 @@ - - - - + +

    Slot: exclude_all

    @@ -341,18 +355,20 @@

    Applicable Classes

    Name Description +Modifies Slot CopyDirective - +Instructs a Schema Mapper in how to map to a target schema +no

    Properties

    Identifier and Mapping Information

    Schema Source

    @@ -413,10 +429,10 @@

    LinkML Source

    - + - + diff --git a/expr/index.html b/expr/index.html index eca788b..22af5c3 100644 --- a/expr/index.html +++ b/expr/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    @@ -312,10 +328,8 @@ - - - - + +

    Slot: expr

    @@ -328,26 +342,30 @@

    Applicable Classes

    Name Description +Modifies Slot SlotDerivation A specification of how to derive the value of a target slot from a source slo... +no EnumDerivation A specification of how to derive the value of a target enum from a source enu... +no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum +no

    Properties

    Identifier and Mapping Information

    LinkML Source

    @@ -359,7 +377,6 @@

    LinkML Source

    - SlotDerivation - EnumDerivation - PermissibleValueDerivation -range: string @@ -403,10 +420,10 @@

    LinkML Source

    - + - + diff --git a/expression_to_expression_mappings/index.html b/expression_to_expression_mappings/index.html new file mode 100644 index 0000000..f4ab285 --- /dev/null +++ b/expression_to_expression_mappings/index.html @@ -0,0 +1,473 @@ + + + + + + + + + + + + + + + + + + + + Slot: expression_to_expression_mappings - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: expression_to_expression_mappings

    +

    A mapping table in which the keys and values are expressions

    +

    URI: linkmltr:expression_to_expression_mappings

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    ElementDerivationAn abstract grouping for classes that provide a specification of how to deri...no
    ClassDerivationA specification of how to derive a target class from a source classno
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...no
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...no
    PermissibleValueDerivationA specification of how to derive the value of a PV from a source enumno
    PrefixDerivationno
    +

    Properties

    +
      +
    • +

      Range: KeyVal

      +
    • +
    • +

      Multivalued: True

      +
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: expression_to_expression_mappings
    +description: A mapping table in which the keys and values are expressions
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +multivalued: true
    +alias: expression_to_expression_mappings
    +owner: ElementDerivation
    +domain_of:
    +- ElementDerivation
    +range: KeyVal
    +inlined: true
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/expression_to_value_mappings/index.html b/expression_to_value_mappings/index.html new file mode 100644 index 0000000..63ff919 --- /dev/null +++ b/expression_to_value_mappings/index.html @@ -0,0 +1,473 @@ + + + + + + + + + + + + + + + + + + + + Slot: expression_to_value_mappings - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: expression_to_value_mappings

    +

    A mapping table in which the keys are expressions

    +

    URI: linkmltr:expression_to_value_mappings

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    ElementDerivationAn abstract grouping for classes that provide a specification of how to deri...no
    ClassDerivationA specification of how to derive a target class from a source classno
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...no
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...no
    PermissibleValueDerivationA specification of how to derive the value of a PV from a source enumno
    PrefixDerivationno
    +

    Properties

    +
      +
    • +

      Range: KeyVal

      +
    • +
    • +

      Multivalued: True

      +
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: expression_to_value_mappings
    +description: A mapping table in which the keys are expressions
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +multivalued: true
    +alias: expression_to_value_mappings
    +owner: ElementDerivation
    +domain_of:
    +- ElementDerivation
    +range: KeyVal
    +inlined: true
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/hide/index.html b/hide/index.html index 7356ed0..52bb090 100644 --- a/hide/index.html +++ b/hide/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    @@ -312,10 +328,8 @@ - - - - + +

    Slot: hide

    @@ -328,26 +342,30 @@

    Applicable Classes

    Name Description +Modifies Slot SlotDerivation A specification of how to derive the value of a target slot from a source slo... +no EnumDerivation A specification of how to derive the value of a target enum from a source enu... +no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum +no

    Properties

    Identifier and Mapping Information

    LinkML Source

    @@ -359,7 +377,6 @@

    LinkML Source

    - SlotDerivation - EnumDerivation - PermissibleValueDerivation -range: string @@ -403,10 +420,10 @@

    LinkML Source

    - + - + diff --git a/id/index.html b/id/index.html index 38e743f..058141b 100644 --- a/id/index.html +++ b/id/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    @@ -325,15 +341,13 @@ - - - - + +

    Slot: id

    Unique identifier for this transformation specification

    -

    URI: linkmltr:id

    +

    URI: schema:identifier

    Applicable Classes

    @@ -342,18 +356,20 @@

    Applicable Classes

    Name Description +Modifies Slot TransformationSpecification A collection of mappings between source and target classes +no

    Properties

    Identifier and Mapping Information

    Schema Source

    @@ -367,12 +383,11 @@

    LinkML Source

    description: Unique identifier for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 -identifier: true +slot_uri: schema:identifier alias: id owner: TransformationSpecification domain_of: - TransformationSpecification -range: string @@ -416,10 +431,10 @@

    LinkML Source

    - + - + diff --git a/img/Mapping Between LinkML Schemas0.png b/img/Mapping Between LinkML Schemas0.png deleted file mode 100644 index 2a775a99b32878b71488cc183da3c6c6440c9542..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 187865 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 z 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ࢁ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 diff --git a/img/Mapping Between LinkML Schemas10.png b/img/Mapping Between LinkML Schemas10.png deleted file mode 100644 index 56d3eea3ecda760613297f923aa60ee5d8dccf42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182340 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 diff --git a/img/Mapping Between LinkML Schemas11.png b/img/Mapping Between LinkML Schemas11.png deleted file mode 100644 index 408851f818298c1b0c1681f72c3b3720012601c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36395 zcmdSBc{tSX-#0vcg(6AW*H(p4*>@@w+4o@(S!e79S&O9XEhzg^c7qtp*g{6hn!#iY zFY2`J*{Hn3?nZoS*aae!sTUOMP8UCI)T>2n51( z|K43g2;?7W@UQm-9ry{x-$D%nc>=kASIs!UdXYH)#$>4JXmz6H)$Hn1lOmiBB|@>n zz1WWUwqD3b=e^aryqm5#vXt(H=qXjzNh=c#+P zg^DsEScY6$)i>{>o8^v?SvDIIPHo!s>~-%t@Y2~kk^`f@-42@slXwyzZA$}z7)Jd6 z>XnpvLRuhxc`|ePz)E9hLRq{nES|EU(Ze%eeA*;33S8FdIq;USxm^{?MAlAiL^9FYrpCBo|#a# z=SdWm!{w*4W4uL5XDR1o{YNSlyQ?_~ZnC0%s zD$3Ad`6FM8ooO;t%&pC>3|XIx<9d_7mL@$M_{wkjZ;Zu~Y6QkI2clV%TSC_n*u$CK zI5K6BpmuF+qH9I2eXJ)xZSoDv6^q$Z_#FN`;3I%y*6G6XVu z77QyV;?&8!5=rL35{6v=*ktfWlO;c!Gas_}Ja zB)A#t=;V?Hb?lBylgX`A^-G892og_QW{Dpvx(fYR?OP8VZRp~2g;kP5wV zK3<1c=u(#`T$GJ`@gez)3cj#Wc}2?1f9Ez}ES>e~Cn<$y$bO?OFV+&Px4*~|CJV3t1ZGDC22kkj3i3SmX`cY#>t%5GGI${hL*@czUr0_i!Qdd0& zBq@mk2;3jTYv{V`giqIRCJLoHKW$B9(j7KWwJIg(L}Z5?mKI(<&I3`^RIB*bDj=CA z>G<(XXvM(0Ov7OR!v^OEu|3(J&Wc?wM7meQB#ON&?b#j$Q{N9ggYfR33SvL*Xxe+K zgwZhGmb5nV?j$_~J{CK41!| z88eUtwGmADP&95xvCU(P^obM=dyt4d6)AX~H*2lx?IrvT5eBgH&LIA*6j+ldDJ{3v zNVe58J(_Oxn1ce zmu2kAjc_K&c`3?ETl*49@>#^)rx#9fm{wzB*cY@7eQE^9%lnUgg}&VW*evb{(^MC| z$*ujy1C~bA^m8ixfKbm-hp$~8XbT#>Iua`k7y9w`k5%CMzU(D@sd>Hd7%k+9slVRw zH1C0It2iHnk$6*XUG5K-VhrL@y1cQ_!1aH67E%`)p9=aO{&-ybc*3z3d6Zl_A`5{e znu67bBy#^>cukWA*NxSI$x8_{#W6jUf%wL{+bYZ6b4tFt8WjdE&UO5h;Yk(* zB-`^ikFPni;vehv&qoK02UE62^?v?!mQmo2KWSq@KnG9@8I-i1iAPCfnN$xG{gU3r zq$*fT(Sg-$jt7R?@aXz@e+$=|U__YA+K85mb_eRU0VF#a@aUt+b6Z4(OPIQWHO+bl z%jEjql8s4XdZxSN#rGnkf_7L}@h-kdw%ZxeqbIPyd$6y&EHsI-Fm=O|cjMm) zAYn|LO`qLHL%$O1e*R_;uIezk{&UJzZzMA6i{Fw8MesqnZ$^-=pLmN5mMNnG??$xX zqp-Um8YlDnEP0YrjgXZ6$UvE})tNbo=G{YcncyF|s{gOhW z;BD>4er0M@xTt$Dhl%i;ky2)`c!WwF@u2faDG`~TMD0TX_hL#>&tQIInN)abz-7*UY}>2l^`9|b2Olg%h<*H_SIM%ppX{&pIr0`f zVWXs!oJy;cC7DC&M!;P$=t$i`O}uS3c#J+0p`}gZk@2WI3SMdrnCQKu&~QIS5YxvI zMhVp2zQLdf`jxz5sXERu4?aIe?DX>?vBx3@Q*``8l$SGDJascv*!a2OWY7ck11n0{ z?y#5RSyUGN7v;DY51Lx70}NzLTVAmZ$nwEiDqpiAGQ)fVtd2^q24bGtH+$c~ihH*_ z#`rhF%2btA@aB*6IzJR9eN~~9S!X%%7MOB|h>55K|4MRhu~8nsWZw`CO@l!E&mczc z8jX8>5rr+_f60@@tbyx-ogj(3_X`U(f;bV%@6?5{du&DY#CRmE z$8V2!MM`FRB4a@Zj=Y4gesw!S2ifx~pk<rycJk2CTS z(?xzsdt2jB!t|@THN}a&`jtfUkdP2bTYT3BxraGXEQ#)5L9N_0IX_=Ply8CiQ?_TL zpwC#e%JUg$+uM~m!s(e)(!;5Ft2eSvWzFuMO5@=mpZ#QiH0~B0oGyUa|7<^u808od zC`2)p*n_fnjkh&Fj+Gm6m*k4D5zz}>xhtuCzbd6m2d1AI!e%XTeVU(O#875r|L_+Y zMY^?6yvZL&mh|~nVDVrSmH7HgmcukXPuVVW|n?vem3lBE7AJ9(To4Q zYP)cq!Loek)C~d5p`K}7Kg5P}&5MF=i;UWB^4vCP zjcIqNm!tyfsE{CjyIJ8V!x8|M1-d^py{|?uO`@*I1+5~2b<1FR`fR%ZqgSWd+7DtF zg*e2B7R$4w3;vjxeTqoldt=jO`m~Y}Zqm}ib74Aw*hcxmGQH(S1i#_Xi|@;+Fgi{4 zFHh*J-@CV2+$59cj)gD$W|Zc>uIRavSjW2~{kRLM?L3pH(=!Zth?I#`uS&jt-T9_s z9`X@lZ#?2^V^yff!kE;{Rt>~z%ZFp1cit-C8wmwF9rVY3S!;rFK7B&kB&vAIr@J(r z%QWS#QRiCZ$NG|4?8Z*Gj%9cBpU!^gY|pdkA9&@3&|9G?hA9axEAgHNjPWg~2b_q* z)z&X{l$C)o_|9+3?D8wESPULVq=S4-08M~_Ng8@xFJ{N3xb|ovGPMfL6|?WM^xj+6 zf7L2jH}2zVLtV1_p&$y*+^RtyG(V&N_1p9-r@gy-&e;_zN(4uvqB*NTWVoZA%YY&w zlNC{&HRRH@^}LK;VnGj=8N*IAg1;6B?qWmiQ)+)Q$~cy`(m=l6t#G-LD!3FC9_;Wf z|H`VDtJEr4atKNjc;J>nca`~xsLAp-0jG4Ekt)j71DBB&LaPQ*kKOz=_S?HYEb;wj znb431&9gVw@a(CUdlILlr^@B*v(&OWZSZ;@rNZNSxk9Z)E(uQT)Y3rC|j9{Cp z=ZYJGF9aT&eNN=b%^IY<=D59|n6oOoFz77f>-AHm^%qol1w zi+%^G3^ZvN)r;aUmpwQInd3Ym%{SJz!B~Y!WDvbS*f98D**9DDXNhxT&kp0pGDpV4Owvq5O;^-A;BgWgw(&hW>~3*Lx~dXzaSUye-Vo3`lv#pI zDYrgd0)aShoseGY2Gr1fU{~Giar2gs8#m%FMccq>9S0EoPKC>?aw;wc)F{=b;Jv)y zG5-s4er8?@8Y_H!307N4{EKVG->CS3=iU#Hozwn0##$9c^2ThiyuBrOvGcFhzwB4t zwRae^1E1-fRoa5W#i66iWKs+QVU4vN)N&_crVr&X@Zs~eEr{_3A;s(3H(RNs*Fal4fKQ}- z_EZdZWt;kt!dt8ye&oL7>Wrr2Im#g)Jz65CV0q#uA65<)^wsTAj=Zcw_Zn25H9#Qx zH^Oy9-kZpYgjSGS%Rk?&@^)ku%befvtqy6YFik$Rh(0MD;dm;xyh!XLpu?IYd;dve zAMxgyzRR&W{qlR*{shfHXxPGL0M;*QiN4l}SHv~)lh0Avgtq(dF&201A1?P_>&GZ9 z3M#yA9?pmp%rO8}LZ+!te+Hd@H2(qv!-g5TeW4IO*BvP_IdeUdjt8A?{#oA>^TYEB zs=;^Kkkxo`?RQ!itecYu{bf5x5C?Yu@Dh~g;5{R_LHfGK(@gEuZkI`k8aP+HuknTQ z-g*rUPxgTEkBFOFvY2*)%Q#F`h+NEi25#)NtKgysAkd&W<}@W7pAz!=*vIo=%raBN z$e`_b;shp_l4}J%Vh1zZHHwJrvym5|yiUPh%#cUQiy@K7|GFoed_*4llOm~JA8ra+ zZhD;b?7M+3<=26OeD`_dZQiVhu! zZkxzB5>vdaozto@ScT5QeD?jM66c&CwB{AO~-j!sylKS|=RQX(q*Y%n+S^q?~6jx%R7J0cN^4{O8Uq9R@1=uvf z6em(;xG#N}UxWte!>2jXoGyazGBnG5zfz@*zjxUH9;<|BlSIIHT6kqc&nsRxkag_P z!r!WL?d*yTL_W5tO-a%Tl5ylcC%;P^C?%T@>=guG?Mv@29PvMGQ=Wb7JI8|fBi>o6 zhS3Fzw$^$ejmp@zdYN3HfkO_CJJ0OGvm7kc$((X)vZ$SXs3dLOz8M%j&r5>hULqsQUOGCpZA6Je>zofGPE|y0n1=dv)DQ43}#> z3?KhVQj-(db@kfmuqRfH!JvDfUAgvElZCdtUNWlRTGz1qeu#nL(bUwF1M4)x-F`2 zDjtW7vQd}tovl4hT-c%WNa4`kvTMTPzWgj%cP7=#=yPT#c=?ytI#cNCnlH^XoE#L% z8$Q9vJi?7~;;nk*kVFQGfbo9f+Jl0eRX>sYqRJmvBI1%{0v~wOXo!3MrFJ@77awgI zKD;Yx5rGx+B^8)B(n_L_bE)9x>b6wg&xEeq7Q`M5K_3x9H}2{!NB06=c7|4zV78?p z>I^7JN@Yk-eh63RG1Z{k6>2|O&mnLbpZwMizx>K|Pq1P(Kz}jMxUDniXk;X5q#ZW% z!_*$pW?SX5ms3Z<_6Tmx`Gk-#E6Rn0dlEfu$ya|i9R&oZ-_BT#h>K6^5b^s$z+Jh5 zDX7sQnrR%v){y<@8v=HUgMPi*%9W2a2nmHaC!CPJmImmEav*;6F)o@kSa+^u(C*2{ zI-XVy`xmz*M20&yW*5Ywh8`>ZL1fL3v_#i!AgLFbx>yWqbHC40X z>I9TEJhrwd^4d!QS^op_KBRyA48ri&mv7u#vjtfq#m3joIWzOAB|30rq3+>1jt0Q& zeFaXZvau=X0UAAdVHNC_BGVH=vK$NU$I~i}QX+@AM6c2p!`l~LG!t^C3ArSx7kEkn zI&;0QXz4rKyvhsQ?GN{6g#$l7m&_C#(_;=)3RrrY*+)Df zZ6iwLHf<0!8S-jES8yWLT$0VUmD+PF<+04tS6dVW+}2u3BHw+l4U?(qX^U6337`b4 z+lNB3l`i5xsKQ_wJW`HU1`d1i#VeAcrp^@ucPwel+-%VD&fIIWHmK+V5z7oH!|O%7 z4^C-g^j9f8s!K)r-8=tNU%}YiXr8LmRwremJZtxwG8kOC&|Flx zW{E(WpikQsVOo`Dl*Vk;=tvCbQyJj1EDp#hBX#%p+miGghU?-It+QP=>cis(-tlDU z!5i^6g{AeS?*{=@*lXANK76;Z;oinHgLKL8a$N1a6J)LsYz>~s<3X|%rFZq%Xpa?q z2B7ja zZd2Wh6(=Elw5@awB)vPmTb}#A#_EkWKc;-kk$fB@9On>{Rh|6X_p1_P^TP={QM%^5 zrYSl_t&YSQnpMA^bcQ0Su7&Sx2wyz})A@tP2iTtN#++bcFvPQ#1)(n;TG1cw9ta^% zqM}Op^EKdje1wVpeVo+gK-*n-QQc0`+GbNr3$K5i;#Y8A=g@A-`}DK) zqNr)XhC>_eL01mWmgJx0ay`y5o(p|rXRE-fRipYvj@!}TcN&S?1x>HjVonNgLsWy* zE7UCJiF$_-BhjX;(%g5>HJ??BY5v(43IlSA*f}=Z!WFB)m6<@khyh=RBhHq~$fLKp zINM8yIM+ShLrH%)OvtH%#gb(-Iy~#Bq0$Y~Zw)TPFI9fA<(BG|MQ%e?gOVpL3DI;N zt{H5WZ7S)MvShBv4=YWYrntC|Xv@^Rq|l+=94?DVI6akB>gNn6CXU~C*q98;!tD;B zm#a&c3z7vx0K%Tu+uDqH+r&N<3=3)Of!eMw94FMYU<8%N=c)voMzqu!X#|7Hzc z+eS1jY%iVpE!mmk!BEF5FUJRtKZfJ&V4T?rW>fK`s6t zNSy-pz1+`AD-}ADJ)fV0WG|fofLPV_-}%}vX4T>~2>QcVTn46_PtH%iR19Cd5k!14 zz&Q5XqNJ_3k((RU00g_}cqLHOO8qWf4I^Pf#hqpt556Y9>nM#NN4zP^uO&cDdJT?}7dW z86$uv@!RUC54DrK5Bza+C-=IJOq0aNESm&1Bm5m!qxmQT0uN#_Zo}Yy@g6kgUG1%l zzGC@FYiS+>K(bRW%-d+D)DLLE@hA!VLwWyZRCBg%RUk=u#N$z9P|n(kt@%QRS}#JY z>EEKZ>}XmVqnw2z_M_8Cmd1P>{{7j`bBwzx@? zNKfOaL0DJl`go{y$9H1Lu3#_k=}(MJ$~n|Y$j%vr{#m8#OOyQUk?Ed(8 zW{;K%evEOZ!S)gwsQNUyj-LOqc;FfG><3#PlH(gPkdcSIgaflj`=(DzOK_C-VKS4h z+Hn2u9fF-^7Wz3~#X<7XOGW=USe*3#gxVR5l5YSa^7AOn#}YrsB{D|_yzl8buFhcp zncKsmribHhjeCOhnzQs@D zKgXRvYk0JBZ7zNK3>{CTW*)mpqk_+}u8kuLnYJfnWOZ+#gHb)5cEa71tT~cbnz|m@b;i%hpe1INK>ApIkLlOA+J8qe(RQsGqSrK@suK32);|q3 zoKXJ=;Jny)0$lQ)BUBU{R3Z_)wGN)#fuR5?ad*`F$JA z1cQ;6aqX_l?b_rsnRJN;E{Nn6a{`DBumzz-&9ZM$SLy~{Idvi9Zp2Fy0XiO@(zFtX zyUY#>{)XpQ*tijh;5h5f?7p;e=j&Q>7%2E;rC3fdkOgMSbX&~O!w=qBbLq_vf3_KN ziG2;AEtBwO!|}2t^}%|#G+G|U9O21>d%_G4ApN{x^LWdI$2s2psSFs>$&yRlCAqsd z@XniW_|ongMVB>$Yj(UKCF6-n*J1*=hvDgcGI{?nGSnah03($SWtY#lAa6l8d_5Lt zduf;<7xnS7^y$l|qz|j%VVF;=^mk-95R%*YO=8du9~ehg{sY3nHBA|#3*g%T9eY^| zhrLh4%Is8iJu+iHvj~XOsnHmmX2qYqp)g3vGBXPT4zm(BnN^D$}PpK&*bp$GOz|_ zlaIOMwCqWS)h*bU+oCcH(7{S+x&mJ6dOWcSab(JuW^DfX+A9oTi!aL;ac_f;4vT`c zjzU@GZOHOsOxf{f#O&3YQ=(LVuh zq1_Qjx&A|T(WB7Cm;XdmvM1lb<9DSaS$ll{xI9!S3pz_Fuuu$~%nj9Lkj|wgt?%rU z*3WDRZ0{l>^&x*OpBler?--13clA1pr%ckPW^h6Kmu4?nc}YD9VU^4#+;kT|Y9e~{GDeDiu}y)Z;F z$~NM(HnUw^#sH!I4Lk9>CbLyprB9>ao;r0A9%yH$2q}Xll4KhV{F^A zP};@Bt)V2SRmmhZ%vAQM1hS-OYUF?Ak*SVADJbk1hr zW^n6+fB^Uf6&Ijfmj`kg#a|qMvP{(v|GjWY-;dzO=VdgD@}lVso~DbnK9dAz8fhoq z`fn(T4w8MIs$0aR=}>lLq8bGDfA5rfZ|;Be+&aY}279@c(GuWePIR|w3?9lTRGRHg z|9%wmFF@$9*0DI`CA$NtJ<+mB*li;tVWusV3MM?zM7uL2b&RTT-j zu2LHWZs}uk9y5K9w@FaK^C)#!-J$xNbL^Thhp-U)cR_ibm#H|4P_bbvsr$8HZFhn+ zFuRK_Go19dLO=AtR*L2v!^_XUPBK}Y*m%D|1h)3H@CfB}eBGTghh0j$pqStCdgj@< zpupNbRvDM!uJo-(+a@@2`V>1jfBAjIV#LsZQ~M8awgF5^ z0YL8?gC|u^f~&C6)_JPdVfCnnvsYucRfRG+Km;R06%C>wsy{)Ix)m2W4}=t}(CyD6 z19u+43_+;iLu-3ljes|7Pd6qSsYEm%QBs(i-U2hG)iGR3;LGAm}!}o3YNJ;HAC{fD{bx7w~VuvfCT1* z7&%pz7^#R(r)pE{d@4M(Uk`SR5~fJLeIX!%bP$|B*dI&YpP3&YXhOG$!_X3>0G**) zd7>qHGZtVl>`m7tVZTK-2x|Q)>m*cb z#4nZWvl(&>Q4TuWd$>kjV*%nh{Ii=Fi)u6>Z()(HJtyabcAxgnWl~YeHvap@$do*z zG=n?ex?v8T`kQrr-51@-1zm1)OFy4mMtb_f(Sq)+vhpuwMu?8mbz z%mfoNJ{!e0upnMLzARF>hkW>5+lPv)viv(U6-aK^@y^|^b_fmj00eMY&St);LY0W! zR4BmeL{@L-#^umE=yFraf-{YNn7;iy1-YUX8(~loEo^D_*{1NuOpl@{J84$wt67 z6c(yGece_cXlRhkuq=}?t@S?0+?HjO_SnFjLzE&l$`mys!qGiIAjw`8@-dwi-Q_)X zo{oAo*U~`WeeGx^rAaP!j!OoB*^inM3Km1p{e~MjF9UR~vkBY3Dd~8SOyfnx7IdfJ zX_!vPFL$aADsNbE(q-mV#xnj})k9=A|0ctovLc)Sw(x2IR&4nm@c(!cOQ_g+R57TCt`YrnS(z(Q@VTmc)l(w3ZuL zp}hr(UH}uF1!X`7h&<3S-Izb~8^@)4?=Xjz!R+nbC9N+{aGq)U(~2rtE=qd2wq#Rm z7!eoA!iMg}Hw^?TyLN!!2*4b`Rd?;ggmG(=YR5n+m*TdxxA%l(OHsv_j^jK!1DgV$ zcA~N9XF%5*cCb^=X%%oT`7st@#yCA47;*N5N9EvQepYCq1YBV5GDB@@M~J+ko6JCKMdqBd>^1(`WZwbfylDl^aIY>_Qa^y z);{NUmds1`9;2q=#FH+LDJthjquXKxg7@dg**{b#RF248JHuUeKhNzxdDgk(p$-#s zc}Xs$sGqgDff3RL_)kzg#$i1f-n4u#2Ims(JBkgR+j9=dawzdvU;gU)eYpT`BA~zq zv-EhNM>?SG4`o3-xiz?bw&?)#_6Ii!3HfDxyW&{a;`egtM@S%Ytf$gLROf-T@qULC z7A=}uNej8g*GhLyf+=^1Gt;mO{hT~G4}qwIehztp`**(n%0wPub!6N}y=D9sZu$Sl z&jXPHD0)b$Uj4?Yi~%^oZn0nihJhM3#vJ-5*my>KoY$126vX24eD?PTP#{5<9mj(3 z?7N7EsP3Kt|8WI@F=Z}gapAqwBhQ9_2?kN!0~iKMjk7EPbw|{%s_2`jb!B^qd~sXT z{y68BdzKI-=4S~Jv|JEZqXyG-vTBD-mXx>;V4V-%SINuw@hAz_->)*ofK*9D9tDr7 z8l{$YOz{4{mK#oCOf-xGVE7EhCdU zkrQAd-n)zHTlkm*Ql)U{4j}G#Td!ngDdXfuYq$F4+yM=;nALy0aZm~3(Ud8+E$E1s z#U6BLAR=QdsRVew?o-{r;gT{~$B{$QfLuF?Kj630mSKv)Kpy}Rb$j5s|4B7=$}{J< zRDK_=|52rK@U6bk!90C?f{eQYCqH+U?b_F>kg0>PquVN5rsdx#;^oXQ4-aeoJ0I}^ zg~EvSBH{?ZllBnBNAWyzJ86Yd9sj(bqmPnyQ~8bA%wT6jpZF>F=U=ixumH?{?pX)r zn;BgP!5Ab8Jh#9z_X$W9SY~7-7cF1a)~}bcr>+(L2IOzriMfTe$t(NHpj_-C(r2fd z63dr|x=PEJ1@*y6CE@HyBEF`${#BdKy&^)_++Oow5Cb*H!vX;J=6+f`DJsyA`~s?8 zYHe=`Q@{X!E?&}U(9IS4!Oq~Vv$t6g z#Bnst)#pH^?ap_Gcln>CWoD!WC>jvZ z4mzG5-%mcS4;z!OUB-XS5Uc(6(By8!J7DznD+7`1)0RrT1Q~=??m$Pd3sSTS_ksN# zdVtehee6@lSqk~Br=n-*T(LvarpXOq^#nqt6V7eoz%BSRRTvBbLq0I7JBY$G-Bv3% z?bFx%&SzPx){heS9H|20O2-8O`Kcanj%~xdHPIk zZlQ;{sq<$BPUbz3^66yuW8^-ZV6&1`S4c4ok8@r?hw-8Fw@X+`p0zrD>ne`j4OTBR z&=6Ib6mAdAt^}p#(A)kqwKwK|0A%VV#@?N48!mmy6)PL8J zNLf$zD1+x!DvyMF-I)HcjHYVT2WDlD`5>w;|DLGL|Cj?>fnqA5 zwRI=~BW>`2gwB(O7yrHFI&Dvrl%_%syo(N@bs~^oVi)nhGEE*-6j?P8daUbi3WJTG zPTkO~t#n(ZSS%0a&E#6{r)5ta^Nhhp!iB%p_Z;XlXQ_`d(A>N1K-qF{Th|(?pMA9T zC&+%R|6~ktIAdti{gwLn+J^bHVGPX>dLVm@N+32>!g9t#{Aa>>B>i%NR+nD6uPmvQ zTf@EPq_vJLx2-MX(;DdCxM@`v^!$I7m(xMt2VjvWWW2?n zM<8TeOdxDh2{ z1qQNI0xOKHYMpnam!tg=AU}; zPi0d>&zn~7>>cRkJ5+a%AzY&|A4(6wR`tpN<<0Uwu|uKijWytE)l1O!jR3+zoIg}j zY~u9Ug*IwD*F$2%jC+h4mVwZnN0EW3J_e=X z7Lsp1rz|_SgK~TCbVe-A6ZTdKcErA0;0inqJNhn5X?1QpJz6Y!~y31aCGok!FYfZ2l3j$Z>xVO-3 z3;+^1ZFTJu;1P=|p8Z7sql6gYcFp*cdPZ+=)2;5RKWzupz|LP#=!4KxsdC*J%6GDhyWcV6mAOA5tpgRIlPUX5<6 zl|`+;l`C0eN253yrG3~P=+n5?Mmh+u!{hRO3CJP4br6fET6%e^A98QXn`TLxjE%6j zYHac=zPkB!RD7XVVTZW0at5OM614D_w*1#Iw zRj@2B&Uo5dG27wyoX%6O~}et!%s%<2oA;0yp(=WN=sJLI_=nM~`jQUs=5D zzEQDCv*Z)-h&yP2QT99ju$oFEl-?PH|-I}D&0+75VD;ia>;r$3$6BZ)e zwWbvVj}N#WrV^0=?f3(^#aWauYk1JWEW>)*Rx(e!JgEX6RU$$I(E^i?=`J--VG&&a zJd!GU$a$8E=fi?yqHn)JzAV}?E2dENUoiid(&l>_g-3$o^24?U2ju4oulOmUl zasM2LTw@Mrf+E6@I=EXb$`vN8cGaOV*tg(DFbH9-OR}>cEut9$MW5;sRUUd8e%`U$ zT!^(WdRQ?4XK(9EDZv+i-3dnf!m%ZnjN4W<0uz!2-1l>XYCr*xJpk)_2ZSE3-7DNs z6TK8z<$u$oTPzv%QOYhEHTr%P^L$gw2*YOQ>#^<#E&jq8@3oRZ5a_BI1j_=X#e-2AcE1>tG{IN8P0p-{!=VpEvxY z+Mr(13abQ>lD$^F%sydi=79obReFKU%u*SZD#bYMZ0$BkaI`I$6FWpKT9}h;lm;Zm z*dU{#AYU2{vOHAh(2I&`&mf@pb6RJxJ^8T{-}3r4uHYeao>V81D(HZOo%i;f(AKw= z#|HJ@=nJL2^B`_?4gv9%1%;FGc-m%^Elu_%ph$PPOH0*Lp+>6;`mBAa zX?y;5AS9$&tn?(WB;EzoG&1I|Nf`L|1kZ{`oNbK!dIWo!t+9w?U$3E=YtXs=+e6-yksGU!9m zHl%+Pl)U#7#o0IVvh6`ZWT8)-XzA}$5Vpu^bp$Cb61*7RF*nMxiqfa2VrE=qUU5TFXJGxzVEbax2wjxPD|Fgc zCo^saYsPvOfitw5HR8}b%XncLoDTW34t!wEks(!Ek*28Lm(d|&aak-Xcxs1p17=)X zVtPpfuZM#7qHnNHUPYDjPR+F&E@vt!3DLKc;|I3fbS;nb@DM)a?%7RnK}NX&|JW3e zouf1yb*d*#Ug~^SAe5@KvH^K8RjdCyb;q9Jq%^ml-E7(odv$X@Ak$6wGbV`uk17dP zm6-b!H$|WJW+J0cJ_Uq|fK2Gd?spfazc9|&C%_(O<3b$^nGu<#LyE!`*SfDg_4J20 zOC3*REi5VV$-~Bq6eA`K*fR64g_2)7GG1AY`1($0!hhg5uma`uL#|$PDfU0hBxp*N zqy&1`6Niy&NnPlMJkmah$ORvuK6xaB34kQKI@il2bnAl+?$e`V%n&F*p;xN7lu~EX?hbxhY8@V{UcUX;h1;o?);i1c1&Xru z*?`&y_gE2a?n420iX5*giqRyGKa)Ifxv?aK=R`}p0q@aKV@CpC&CdKc=c(mLWA3B0 zjp+K+1zel9g;Ubjvyr`*+KNy4V_F2GOjvk=3{ke1xGnR1T;1N?MqkF4TD4pq&!=6! z?J8Qe*Pq&oWmmwVU$>cDzzsPbGv8u?KzYDK2XRh8w#7UbKOo&otxM)+)<$HWcQ6}- zjRwpmh%>#|S}V|ux%~u2-IB}fKZM)re?zm&@wRz4g=*X!)i?2%b=Ycmhfhg!SMY|_ zu$S^8S|q}mp46y<7A_e{;16avyU9RXwv;;}Vh#foAmUOL)zWWl!PH2qL)BC}JVaM4 zC2-+(lNu87rD&|OUj3ZTZ$E38efw}XEj@Ax^pv}z=h%b6I_;}rU6}@D1@gp{N{n23 zY)Q-~hR-_?gZ46>k;#P{x-jHnb?AXRyXXXe76=eSve7J{8a64XWvphSD{q;uhs_uC zTAgD4o?Cf+veI;a_&j>%S;?urr&ujuycJG=QE7q3;zHP)xpTll+V%J=M~xU6KhXo1 zEny+NbNcHrL^Cz#va)jOP}04{`FvF$hHSjPL(LT91C{^ky3RM1*4ybDqv`%+w&)8` zGT&^5fJ1JjPtN&8IKNWl!7p(1@cxLovf%@29_XMiJJ}-DC$-46&JSL0(>xiPx)gZ7 zz^#fcy4HEJ;+Due0hfRqs_N!UIE|#XbF$J91@PQlghx zCUiiF&`9#c9zyz|pu#btKg>NWo9_j=!q%}-UnZp+8)C)q)_}C(59HzvHJBn)4Ii!z z*XJCqKG0v!1RaRs~DNxDyd~A$mI+8^BXu}L#ecP< zEBC*_r@^smz_1LL0(yRyel~RGlJ@cnkcX%$0EAUsq;P*QSzD;1(T(RXr~f}ei2tvC zo+$jk2znHYPIxZ{L?zXy0qv-emjY4}Ye*-E8b3Foh1Z3I(Z%lw@5=as<6-7Z*)-?z z=S@JiiFokqYG1=&?6FYMo8ItS7nkY7A#TG|!tm*lgNd)6F*RXZs*C#pA7@gc>y2(E z(Ihl-n6fPbYQJqA0wCRge%lXD#5!y}W1XmFpjF{AFSQI-4+7THUmOh^(*cPB*w*wGwvOuJO{mQJX{MYDAcI*e9?h(5kF^BmI^jM^KH9&y^*7G67ymBH3*?qc8wczS*Od-PxZ-J}n0p{G zGi5iim6EXa6_3gl>b;K({}@#p9p(XYHOW>+6NKLKiTlJ9KTBrLw{zx8WR2wlMcW~b1KY`J5*e%gKhZzu<`Jd-!RkMBO zE_fh!Fym19@sDUH^?3!t4%_B!s&h-W{Dghr!|E9gAp7vMyHrEaE41Q%YIvjLU~}D}Dw1O29>c_y1MtEj zCtr($mKv6l1;s&)F0^6=$Zx6{)~FJ3;J@yXq3zMr2}F=_Vhqpdk3f8*u}t|yxb|6PN) zB80zgl}wb+Qy*-jf2k6%29WHkUzQ5z&q9;-8Y-aT$udIOl2qm-pO}yIn5~BZ_ZO$d zre##Y5;puU4pu2v`~lVOEpi!;FO@r*DAXf$EGkfo-AhpHsxRZ6Mb8BV{7&871IG+3 zn1y;?d?Eq;Y-%Ya3KS1;e_0zGQIv8k3fh)L-}jzzShLJ))4%Lsa1_iwbXzO;c%AzSANLRH=PahD} z8-wN<_JV+R(H!^Ws63_y%QPRf*9tP)Seq)GQ1bVU|E^f6*eF z+eEo@bja$v-=|Y?OkNN;9Y229=55jLl&kB9Y2Iu;Zgo#c?mz4KDkx(T5|YaiDJ~=wD7KypwMQjGScQ}^8$A8;`1^!#>L1iQM1*C z44`buhhSH>3V{~>cN{x%^7fH`qw~(@w%Wte$SbF$bLm@pQdeU(H_X^hyS!4gT<;MF zH27Rosv5PZe+8##15VvH_Z6r{^-S-=R}T-vpSnt&bR!@yqb7WQ-8Iip8yQxpYx93} zB{J4(SxrlL$MheunN(#J*=ObNuU+M#H@;_3lBy?u5?yIz%369*Q6%*a;;VR^XAB8+ z$K0q!sQ)^I!3@=-PUPp7$f><`RkUUp>I*|xTq~VB_8u;p8I;s=!g@QrZ&M>n4=$Rt z7Ds|m!0A>)J$Uh3!?xDX&Y8Ef&@0XmZ?VZHvFa6tW7NDIfJ966rS30pYyT+adNjz% z{Xcs9uBfKE_D?K`qKFEJQsq@dK}4lVR}fGz6oJs2NN>_hfGAZ^iqe!80qHGBFChW~ z0wRPOx=0Cx5?V+o3A5un|5mD5o-}1V=0sa!;-2YDi`Tv{uEUwcyxONTG1sjoxOVF8WfaqlJXaB`>Opzis zW!^Ln6{!49714d31UO&o^4*t7G&skHhA$X|jVBcsN3F$n`PkkDEa^V5Hf4J>9(GnD z8R^D=V@+B%7!m|{L=up=N;iV0Yf_*Ur)(9b~wvMn^c zWQV)-6m#e2wL}1?+*8X8F(T=Y)B=CgB#n2aWm9n0aKEb_mty8A=)t1-rw10ffY+za z1)&k!WCehT$vZ7ZJ!M_gVn#AC$qimJGpCzd+kVH1@tXrl#uMLomK|3&M|b{T?wEr>y*||o)q)` z)ojIX!!_`MaPxmvYulHzPxE~85>5ma2`zb|*h-hR{Qz{>mHOb%74tI(z#bd<0ed$_ z_j%O?ti)=3k+M>W%wI)O)it1dq~UakeN|@fsF>9$crL9p5|vk%3hAk}?-nf`U9K3V zVa7DmT-!MBU%9o=E-c9bxY#x*+P+^M=TA#;R`dKM7Xz?ves7wZj-^zA`@1iLM#3h^ zu2U>TUmRq;ldj4zNUtwU(E$j^wCtozkR7j_+x00kSp6?rP4>qzNeG+I-){8Ub9Eh% z1<iDg^0NwxlFYhM>F7+|cQmR4m$INeGZ@dVdm1mV+ zsRifTdXOLN<0~|=bYA;<=s^+<&Nc0*-hbF-Hxbo@#v=fgP<%TTG~X@htJ!Yie9;VF z!T$Pc=iUFTXnwfR+Q6D4zup!c-98e^>bY{i%0VnI4(wqQv}hBkYSESvfCzfFT+hbV z6tNZdBJ13=^;5cNR)-;>-<3(=FF;+Z0|8IO3AH`Y`1g?icOszj885ki;(@MAXa1 zaC;2yyw%HKA2Y6XGCsH?3(u4o{AfV0wjsaxD)91l3#zduZ_{$*_I?WMy_^B}^n!Bs6|22SBATbv2X&D>zso1nlm z649JHNEj{H54B5e@2!LafiPG+m84&z`?$kU4&2$WzleWCrjd9+GQQ0ERu;Ph$e2ll zuciTy#@V85qII$S8Ht=AO}M2zB~7zGs(l_HICcIdcd0x^Iyb~XP!E~wzm~Ms;9B`6 zRZdIy-c)|(iO#kyhi6(w?ms? zVY1N5(THZ6s?FdANf2BL^uCAi4gbqKhbX|2Xk~Lhe4u{Al)}KpcyZMfC%p@oC7U7 zuSGDS6Xf%)Q7NC`9w-4g7l?nOh5_~A;(nU|Mv261dMHq=_zAeRXvA&;$UGzV6sIkP z_g-Frt{PnauXocFPGcawOK5-Xz{jO|jFA>sQ3?VT|E40$@356FL3L`2WIX?T{+n|1 z%j7-_RF!6kCwP3>d8{%?Q`t0S!zRBdvzQWk6`BH3lBS4WSc73=Mb>Iq?WpHKNvYB5 z^(pxd1yvs}LQH_91OG{eVhIqCrx4M#g+jdjn;vNa6u!|gi5FbPg&@}jvkPJo*1Yuy z@9JOpLspg~R;bj2`ZBq8_-~MVA+)@e5^t+fFQOl?bmHkUVTy;Ev@Bnpn%e05)ff#6 z{6lyYlOcW4R3ELnS~0&VsvyARtaE-ID!BX53C2eSFt zCGFZD)Hrp2T@1oy&7wySAka~`6TH^(=OHRh8s24^kN%zHWORW7Ta?}llw4YVf~gKT zn|_~l)fQ3VZk*HLwxzNS8zeGwDV*cEFz)dpmQ&pI%d+==6Mh;Iq*{;u8^F=ihs7@b zO$>`lENU^OX|hwHl@^o1i|>q6U-Xax~Ax;Rc-f5s{H`MyYJZ-)ium=SLKo z)u-cmW#4;oqt8&>9}i0f`ma;xTNP}%ZRbJ$Lfbxm%rdYvi(qut|3L(-C!QZ7Z_9(%yLD({kj@^^Zx3FWQwU{!KFE=^eHQ5iCy**u5ySrz9S)YM}VFaIH*SCbWi6*pZdCN)NKT+ z#aHei`{HQTcdXLmLv6GH{BE|HDc{byzOie3VHb*~K@4UkWb#(E@EKVZ$F$H%oh*i` zdeas1my5v~Au?@5yvxY~ae*_8P1ToZ1|zSHNS>x@$V0_qz4gDOuX|KUPY@D0PGh{hjLAsjiu!9z<%9zKS0UP7LtDt9woy_OI_GN?7 z|3RS{b7&utb7U5JaW(HQ+r@-Ij)B1h*^AeB<%(BD!%W3EbS%B(1Oh&4>*rUWm9W|A z8r_h9X&L)O8QC!AxX8=I8o31kz=1K*;r&;Cv|bCd1mg)lbmCKC&YqhR*c(5?4|?%F zVHqGS(pA%8XyDSdBH+H;8C9cD03(`kx;dB4uJ6m?Hx3Dyok=mQyK8IcDSt-Qj{-a89Y*ER^B!Y)k;WjD9Y1j$!9 z6y!V&DHh*pTYEnla;K4&zh$Lll+cG~s{|02*ei)hicH^?)dg0d2MA{0JXUHn^KP0c zQ4DKbA_qmV0`oAGA|vvJzAF!2lc$j$qi$-tKo+ID!3vHO+gjN7p@`lF#In7keBik+ zFPFA5lUx>R#Vr=og0BpIc@yNb*#$%!R$JRw_AuXdEF1=ka^%$%{yCqzc|ptNNB~KE zJ>O3dSu#+-Uh|Ubn%+aP4i$BOl>!R2$<)4It$J=Kg@#UEu{6gM@m2S(({s{4mzj#% z(f=`W>mHq*5O}Cq2n+k4`#1YjNtA2ZLTq&m4j8SLTOFFby>>I0!-tv%_vNM0xzs{p zJASa__f|*2T*~G|S_3G?0mYJCerpUw2S7r07@7+m?Y0lJfubA|TP_K5_lN>cm}E8}7+&x-_3zN&CdJfVHAkKo*8g1t-BTuww<{lc z;P?-?JyPi}oHe5yu1=CXxJLp>8|bU(4h7%qvrqo;-rKVK@KpBK{U9EJ%^&65-H@;R z%H_AzbFGaoSQ~|9J&H^)xVB^VT_YH>f_j4@3GSRYT72cf1zBc=qJU)E-pK|76O*`a zo0JqOCCA=1;nVMW8Sy6hnxX!7vY_o}MQ5jEa6i-zMGyi`&SXa71WWdlNlQbL>C z5tj;Q%GB&y3QBtiwzLYWk8{Fng-i6+P)tw+kdXgmllBL>uL^L=0ok`U7V=m@b(tRX zVI`^37P)~A3DQ@j`qKu7qjDY= z$7@xuGwcLRQ#&kan2YKS1JsV_hQ7JDn8YJF9;0Bh81z>)rE?Az-96ley2ioL>3LZl zx3O^<94{ecB0&?1)W*m^+L=7yOJi5?=W{cyjg5xp+W%0m92{@SmCxfr^wEB{KZN=0 zC&NZ^Q246*^NJ^ll@{5S`t-7J*fA!|lG_>Y^o8jJCFBt;;p3^^St_mdze^THX4XG~ zyg~k{l%lNg=DhY^@A{!-Ag4ck&zQ2lgf2xPD6a57PDV)WkYz%6Q5G6W$>4$GX5vaU z$D7P^Ce{rctN5{tTcaxe(1ZQi5o>zR{oTdsb=x`|HsiaOC9?d&R9>Z&0we2;*L;*h zS%Gk~3fi^$iMhcxELq$S>krfQbnS=Y!U(iTpZtr#5Sf0)6!+d<%;E0xd%BKZ?%3WD za}*R&9fBlxJG9!~u{SJ1x1rf6VFU)m%eorOxde{Um;GO(IA)PPH+6lgZsSK!ajrSg zr{)}v3(fV;mh&8ee{5YivkQR6<2h!D>kak;N=zMwvuRZm#>~^(oNf)0_R-bgL6kjz z7*JyO$%_N-i_H1MAV)c~;yb2RET`(zL5z4NUqQ4mTpW-ayvn=1Z>2DDha4HM*}DH+ zdAeaD^o2)xwZwU+46^0!IVL*8lM>9YI8KYZr}!4CUbD0Jz7JZe?RrLKe-Uw$#HLvP z5HWj0zQ+hT=N5O{oQPwACRY5iNi&sDD6AI9y%TNFqA?!;JH zbQ*7)+VL!o=YhyC1>l1iu#6RK{=K>YMX`#BrvQu}SAQpFrgWMG-{vZ&CbU1`dx zrUX8ZiLJ7;UZztVv+|d#zHv(h$;$$^KfrG@7-%S}U77S)|6mJgLT8Gkei0 zq}~3Kwbtf}Ne|PA+8X(ch1?!Wi)llUsO(U>EUXjq3H3|ZpsB}s(rXa4L$xJM*)|%Z zg3NW%cJpUR5j7nu1XNIW^KS>-+7xQpdrf8ySkC6m2;vyI{f_3+aR!#j+NGkbS-(ZO z?cJ<-E~U$Soj0 zIw2@)K93F>7@4dO6mUz|w%TEyhN0#-*tn+y%lLL~z6`?|YX3MDyNXRcBXqbk;G_O) zqkA7Q{6b=46FcjAt+XznDnN4x!-AXLn&Q5bJx9?E+IfCBcuoK(Vg?-Oj>Utwu$Rm( z$OPe^2TVnI!Ls5w%*wLXmvnxd?%jBM)Rlw2hF9*;t#elpPQkv#5Y#vt5R68Q+A~#x z-NP$qMUM47p)Cdf8rlBfwPJMN$D2YE6Zq0QOR`H?e)t~A z=K=wKNlAx%@fYkt-q|3))$&fGdkG(v>u~!KY0&IC$mUci}wY<=)U%*ryWgqia{HSY? z7=Q7vFH)S|t3P+=BP11rke6kgtqr(|d-)pCWv;Y1Ag`374=Sijh5FfcOgX$x@BFz| zKBngp;&z%02e&NCSk7AR3NlIH`A+T5v=UBX4lc=*!alYiehO3a{)4VwvmC~W;ony{ zwwz07Biwun<3+P;Ai8ZyI?YBNP61S(zD7a1bmrzbgM6#xmn;uRvF15E+)(}q*kKmN^pZ zz)VS`o%g~s5!Eru296byuETMbqV?IbMt1P3?TB5|TmL8h{vnDIWkM^TM1$g(B7WV% zE>aX3rM*qD#wR~}T*0z_dmR!nG15ehh9)*E5hNX)Gk3*?&lza9g2Uj#ua5@A!YQ3H zmU`f)v-{)z*yBm@R9aM~P zP^X_2xXi>^NS#LD*?21m2{m@|>a@`UvMIMXg12x40}LS|*rG1Z>h&0}#I`-T*G%Y) zC3S8_%sV~2lg?BAcX)7Ww;ua<6 zZFF}4p~RAvJ3!xU#tZ+aD9OZ8Bf`JBa>4*53C-j0 z82ZhS+E&yLZ{MkScFgr)MqGHDnV@RW@81nRA$7;k{-he;RcEiXwSD%~`0hpG{tM#F zoO^bil=rVUk)5w-YtQM&f=s{99zgWqz$!NQx!?$iGw-Ee8J6pm!ksy7d*p^dn2oRk zGpNSwYCESyozF(^pvw1lPDARh(RG(H zc9*kuLKBs9GSTS7Z`G3>7ibH@(lo+G)>f@|jE1?sUiti?DofDhgsDAJ%KMLEfJv*B z;X!5v=p4ptlt;p0S$4-B!n3~>U(s4Byb;*+^3qFU_`aMdBUI&ehkPtmxTZNXw9LMc z+o^Io7G+lZwG$zlGe60<>S#rrA)ErP6p&pgm>Xy+rmq5@*^e&axInyZaP00uMb4BS zX}2g&tgLnVhh`DHQaR{;L{>kD$LfDB?l7j_kAMbM%}6pQ5EE{(9#O%57U2)%Z_?tM_z%N}%sUT`4EVwQBlusmm2kov36@Zo3h+o+Mbs{|k% z^z4VSfvSh1eB#2iVwjrIv9btA;cXLdXR&u#iBIO`D|RF{1bU6)HucX5 z8&HQt3kP3vh|k#*irC~V?`UJ(eHF+rAXug{{RcuF%n}~#u93Jba!wA@`5_OM@Z&=M zDEG|8xlj8KC71Wf+giQu-800?UCz07x`>^M!PzTa^bV&TEbSzAIL7u*KEMG{ermzK zx#pi?L0<7Fj<1iGA)Q$xeVcZ~fEzz6E6hmR20 z-}?*|u@{q4Ic27xN|$~NTs(1=pjeCr(3chnn4pW5{-6Gnk_tS40jx*pWEp9!@aH@K z$=CdP=Z08dR2{Alx+?Dz7y*L1dfJU=?70;wiJUIYAd3ss85_2yRY9)49CV-K0Wa*} zGHvhOOLariis9-ngTtmwn(#%aD;7uHD`!`icO*^4x9SMFQ&h5He?Cp|&v#Dmc);;e z%}iXVK2V0VXS?xYmnd)7PkwfT7}(c5tO5dk-o zoTcH__02bmZJ=JBa3sJNf=Iacn9x~kM{nC5vfU+n;$C2BZ(rS7qEEZ>mcLl2nDf-$ zPbs0(`cAP5y$Ju9Sf#c%k=+*%dhv+v(I%X_r1KiPn-r}-;2(a5d~e<;c10fdC#T=< zaXoX&&*I(t=s>H`<-IjuNgKSH&mT``Ux(mu>dHPy!yXlvoc02;e$Qhax1#)qsRuK2 zHw>117gdz9X??`LI^rene(u^Pas5L+$kk%% z2E9yc_dl_6RF%#;dw$1F&*DM!pAEqFY%!cLa~SVkng)HnR7j{xd~~m^Pt_y?wse_|8&ESvX}Uf zf282X;?W0Y;5vE=hb)&l3JqUzc-*B>dO?F{CnDH$5>(8}>Lo+tRvqx|gN{hYM{?Jo zWmCt+KjNGF(8E?=viK)5-^VAlAvzGVSyyJ^(7w%yyH~JppIq`@oa#bdukZ8HgO&jF@I+Tp_P~X21he{{3@{8F|D|0Ldx8=4-U&pl(D&dX}vo9Jz{v z*#;?-NN;->T3aK{#OQh9wfM~;&W#BnN-=R1}PhC<3aD`DF&iT)iz~F-5R&jM{38u z4{t3FjV>1<$V-eVb->e63rOD!b1Zbv{>D^ni0>IX zJig7P_;hQyW8lwnfA~AG(Q!PnV$%?bIY@~E5M3TZly2@JIILp~%yngf6wVUCkcgO* z=D9taAb?%uz`ZESDJG2ifw|!Q7A`nJ$S~F|UkqERQfHCP!^+fFz%Jk{AA2~unLxeS zsuG0Uz+o!C@BFj*R=#Lw3PXBg)c`qcC7Cf7J(oDdlU!poxJUxbdF8#IceUx_7(khh zUtXR>p3gSYt0vq~2z^%2*sKz-RMIRc`RI>G$BzAz8g6~7UH`I3%!lX3W5xWlP{h#q z`sWbH7+0!0>!TIv)iK#}8;A|2&kR(s_A>=s#M+`-UAIyOq(4jeCi@!2#vC9$>=s>4e7T#-1$egv8JBc?$j;s|o zt8D46)K^Lg`GKU`{s{jJd42Yt$a2evLJ=|PkhHu&7f;y|pB`-0BnW)HuL1BvXK=Sd zrYtJJ&RW|nIFf3?l(FM>m-=O_dG;dAb{fZ=Q>lu?95)6vp!=M!|DAZygGx+SEVpYI zUxwnIMO(}csENT)FOMP>&PxkB?Wu291x$cpMgR51+37D!nxCCJWlu6HBJrME(o}>P z3xA2TBnqyccM>#Z8%nY8$g7j$smGuV<3A51`KwojL?4QtYE6QRbUeMuUD$tb%^d-d zoX@~kl%E1l_W{abkkg{bUQEn7x;`o?Xn#dcw~`R0_{xr7yLQyrmPz7|2r6i^hH@cR zs}D6+NATU=-gam47CI#{CZa0$!U(@w*5BX$ntJw!zbm38aT3+7&h?r0p6yO)j`G_tUhI zUsf(RGj82a#o>`cYTfm62SJd;ncAMybNZ%gyg7v=EUEgq@=y1#0er67jXR+;Em1pU zj7p$AE7xjcBTHOWUL2Y^&fF6%o_u{d1HXqHd8#Z_JeZx-9%Q@yI9zOp!@j7T?g~@$ z3Fh?b-yU4Ti^r)C~l5 z2pgcU-0t1+UwC~YmDdyYkG}%(0+=^9dJatIAhi>(fpx`!#QYH2GUIrgbJJJlsz;c> zYqKY|@2M zQF}!vQnZxy?2(+pZpsJlavoHjwpl!?QOpYnF4z>7mK{w z!F4?4V|_s3vSd!#er)OV+Zag+@$lp}(le5ZoGr^m$eSpCtph}&VgbRwl}K*N&nH3n z%DP|O-na{!?3>Gp2fWhNFd^dSf{4x-$6#M_hCJ}1%z+6)0>g_14|Q8F_4oC)b+fm& z@`DYE_}oCL;J0V?hKh*~v3=-9J{H$$)J6HcfYs%28f3BZVieC@Sg;|rt$AV4nY0mY zJ^PY*;cx6o!S7Kn*m#K@vp40^003;cv!tW>j{YCY)5?VDJifaPP$k!SAdY#Zi-tDOWr@w-4b=MdIU2i{vj8$-#Byo4?F{D z=229UDP0$c^OkMQxngn_;OLuRVipTL-?H!LYioh#>T9k@?FUGbdTJb=mQBc>&%H9I|5R?71u9<@F>mP?HFH$BK;r@xRb^~Bpm31%NOu)muR zG-lMePvOUjFpIWu(n^rf?*tuveZnsU`W!n5A)v8WL-NDF)HH-w~TFdYlu(m6N=W(sei2 zo4QQ#?!=1_4VHNJNN{qRrOQI$rww=SA|1^rZ9)w9h?G4mD=ktK{*O19Y4|fMBd@Yf zf$r5XA6AymLDz?S^l}(I+$);e@A_oQ!b-inB3x`GP~l^rP;r!8zC}Dyo;IrrQDuU> zn=+dv=XQ_@;_T=VzsjW{tY_^D8i)3qb2H2N@SK=jFDRmlH<~`CcwL7Hy|S^j z7|8lVkw&;FII1_d*8u*GEbW|y1LB?+CduBsLk%{>AmsVe*+v(6`W=^W`5?h`QFO63 zXv+Dr4Tpkd*0SX9f&A^m7oQy+1Shi@=+@bSdz3y~cR8$Y9_JKa8UAgvde8tS-;!l} z9-bmg7KxjUfhi*H*so10Z$JBpur?FEzb zjRZTkxF~c(DThjGO;-El^xHPxa7;jKaUB=xdLu8QNR{Kos^7rHpuUe^ozy&^BGh9q zBWDFIk=n?<3;vL~A*!qjO4rEw#fUwNEMf;)F5T0NX;R4A&+TlX!or&u)(cwQ($~s) z3^Vt$v}T!w!<$u5ViIMlIQ!et(;nF)eQ}?9nr{MoJKZjLLPauZ8f4q-kCBzfw{hox z@s?lM`B^+wE~s6`7q@i1n+TF0DBQDVu!l^Ja=w^&>aI(PbQ;M5)L^n#}16BYIe?m<*ad!#Z~;1O_=P;lwF6}zUy+& zUHm7EN%Fe15XZCr3#(#`$|6DAik;#{+PS1kL^66}JdfvA>bc@9OBv$WHrKw(HW>br zpn|BI@MztZ^F$rBma;_Fd6#$!IMRL72a}tgDhV*&#X~?1rw_ahW7nVWuO63_tATKPYx_ zw$}UECO&&GBroIWQ|dK-*2POeB<*LKF_@q$2ZA9W(e+6WYpQiG{39(5sBCIX8{Mmj z5Q`A#^4-1k4}6J@ITd)yXawfPOJ}TYeA&>x4N6>)xlr;fh*W7lQIe~tOyfbNg%rN! zhi=8T=o$R?j}Oe5^w`@wcQ!BlmDqY zdYP4}>hs`+M+Yz<^!H)UL2)V|WXThtxGc0(HtAr< z!-@Jpp%h>X040gR>TPp0*NC}eZBqWYhi6S{g|~*-)8~hB-pvLhUKS&Ec27`u3_WR8 z$OV4Fm*H&NnEHb5yn3GOX}7Dmn3q6<_BLkRkw*r0%Z*xB@3BFu9S9K67EtZwdW%n* zYN$@*jFz1EDy%*km(q;!S&`Ybl60Lk@u4gb*9Qx+fu8!E6p)ct%&)4!>jpOImy_Y% z9=s6zEY!((#$~!LT?m^d1sfjvnZcPX2P1{$(LIPss2rU0zFKkWV z>vPSICK*`#l{F?)C-Cf2dn`CF* z$=xqHOb4PO5tF&59ir>^`BwSBRvj?#^`r#7cC>}ne5WM*0?}ss)1ZLc!Aed=;dvkwBq(sGI=p(f=I=6~(S7G>L4Cq1w^BJ@oys@w@be zdyd4J9OrvJt7&BF!P+eQEUAl80^CNB30`6vZTM^x8VUf+xJSsFZ-AC!ngo}+`{=7> zZ+NW+N=mr1K@h)`q1hI_Q}8zL&n$<^7EHI0&51@!2T`WVvSt}YIF4>{%X{5#T0^+Id3z<3 z_+*Wkv|^9{!LmN83Wjhj zFZl-kaJ1Bm1YhDhK?#~<)lIO*wRGV*SiR7S`)+suU1Z%E-M)vV%+fLe%7HtOFWF*~w= zMo@^I8kSc#x_`c?3qlz-VG_Nfb@5%sKFIFI;Mpuj~?pYAG6&MILo;zU`4b<0@0nJ zNgm2ik;CY#KO#J1#dlye_t9iXf&i8*)Ltno7d-?3gTLQ9mNCsCv&zi!OeB={rLz&m zkbQ~pAq=j97E@mFph$hW$JYu=$+(QTer9~*rSjn4Z<#i4ea2^MOEhd==$pA(I{iv> z_NzZ+N98S@)^Wh6mHV;V7bR2oLvVlE*DV=1S9zQe^OJYwS{!ICj9VZWOrm0rl5ARL z8evJL-_uA_xXcT;-5!su*BXmyr=5ifr~1qASWtDbLL1ypceItgXLB-OqyMc9F3UJu zm>i3wZwf%$zEph~iz$*_0d!3oyWG?_GD-^U;2RMI+kV1a!2cjV7Se&1c!7W@ryg<8 zyade5#1l6kA6WbP5DM{KEKc8fpQYCNK5sk-0R2oP;qkwhoib_v@i4 z$T@JmIPy%&+(*7iqxE4BA?kYTnAOn(5N&?SM{UPPXvh5O7oPO>Eqq|B>MgtbMMejA zhMpNV+Pej$Ul-Y*RwoHgBpTA>CQrb*v2Pk*0R@j)KiR(47B{nBly#QAxt-_cXVsfu z$|GxAPF#O~hEdWoU+Y+@pX7W78$aU>M#CAe0sW^wU?gz#p-i+t5 zx-Wa2m)_vZOaadCKbDeeOp-hDTN_X_5#YM2lw4ge8nP)7<`%zl(3T|nb+Wn ze)IC}E|4P5401WSpQ)ad07c}9q(*wW^_M_1!DooPOxevx;$LH4;3yrWs`}8PU*OH4 zx#0eAU2fU(hsx9(M@p?j~Jqp2Enw2g^SI(BwJn;ggRgLg~af8lHp!& z%V3*5h*|)AxPivXhb8&x8BJmBCD=vN)%n!5WzDBiUHy=}RtLIt5Z$Lo1nr~C%bw46 z*z9M@XC-KL|5~h?l9iHy>97K|*9x=m%}d203zZX_Y%w5c_Bkj6T5q}|3qr%uD?vXE zWdw>tO;CF3<&z4u?X=WW1vr2?-teixr~i7GAMbSksW z>LsowHznRL{R-+pK-$Rb_`-F!FL#Z4c={aF)0%IBD!^L=raZuwJ(KfZZE9cwP)hZZ zRtvF_Adj3-2_x-px2?1v+6?rNJ?wuJ?YdOR_-UsB{LAx=-D)%GTRy$J~&9Fl-XJHgV4pGBf|41y`y}6c>uAlj-rv-UXr%^Ou3` z1W%E`+TpylSO7h7BIhe^SPTs`zmULg;;R+xM!4p=P+Cls>;>Q#UAA64MaSE(lNQ zoZS4M`LRV<=!l_VZRUYPjSjnJ8_xdm*9qH?RW?xHf`*qfS^Hxn=<~^h!`~ezz9N>2hh2|;6}Jjd;6Mj^|`YNsVk8K`$l z4@bupqLad7KPimKO>PyC$$f@OE!}@WsWTrWqD&ZfUZh0UNp}#mwM0Uj5N!KFdudd+ zL;zy>6TGJl6kr>3{QzzrI)=uP*Fe0~ge%FEm*~XD}yqL*+ga0h_pq^2OYD>ps z4M2Up42x_P(W1;Xncdl1fFSJXqsSXk^>?QG zHhm9_{}MXEF{YAM^Y4(-&_N52#kpoO7t_^U((qc*_1oi89C*gv=G^IoCQGmD5CeHy z(S~0hN53ysL1Ox#Jc-9skC~fk9M7l5dn==q1SL#zpY(diTo(m_GoQNvF40rdC&hTv zUX06{=?l<7pODwwg%EHkeTW8+hSf-zoLo~DFe2dAsn%>^197}g{Ru}=m<{+nI@o{2Z`DbUTtVHqAPq=JH_4$uPcf;CfqU3B`s&~$*vbC?(oWS{KG zO$t#12Ni#lM9SWEYR+8z804JfEYHo$91?9elsF`}zti>oDr*V>^@<0xz7W@=y?zA1 zW=vy`I9Cj}9%MZt<1Kf>tx6$xE zFYQr_tBkjSZy~S`J;5$ovk`O2+n-h7ML}#~;ijr<%zBCAw+M@$vey8_ zSU4xA%W6@1*hNh3WH>%%tJjKXFGT?S%pg$<2=I;8xK5;1TIj6#8Q5Dl?``Am44D_j z_G*`@sgLbt_{Xj{7-Hl`07><0Fe9?parOAz+p4Nai>>d>@CzCJx1ExIBM$uxSZO-J4NaxI`Hp_vc{uQMT_A727-aS9RL6T diff --git a/img/Mapping Between LinkML Schemas12.png b/img/Mapping Between LinkML Schemas12.png deleted file mode 100644 index a84ea88b10243073cec88d4e4b1a6d040a324f7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128490 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 b_t@El0_&o}2W>|q#|`h8>LPDHe*HfH%Apal diff --git a/img/Mapping Between LinkML Schemas13.png b/img/Mapping Between LinkML Schemas13.png deleted file mode 100644 index ef1b3661c3d7a5c959d81ffba9d16cdaa6419cc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85125 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�Vq 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 KPLb>`-To(MGib#C diff --git a/img/Mapping Between LinkML Schemas14.png b/img/Mapping Between LinkML Schemas14.png deleted file mode 100644 index 555c1589ecbc87f3b93d3515d421b566afc8642e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404705 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�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�JZW?i{Px-!X1O@EeW(yc&kr(Aid6C2(FyaEJ@0C}J zHGE0R_0%OWv`5f}!~P+~=U{^Ozu1@Y!^>Xd`xVTqie8L$>Ws|Lvb6ALY`dIo z3w5=!%3TyaR2bj~|K;O1H~iQ@RG-rw7>s>*w6e0c6J6;Ad;1mt2>m541d=q59?L-) z9yFTx9#wBhrVbm_rK3p&ytmB> z?eDuU8i3z=X*fLL>Tz5w6MNjeHlLc6_0`G}((Z90z9jG;<=p=UhA9(FRY3d8b>NfO zt#0k>02%PftulW;P~4TMqnkY`pd;4Ble7_~QvC=Ma0^hU#+uV5`=Lf-Q3^lxCHndp zDm5-!^N|$@7u+hq!7XHlk>CW1;6iHHI=*9~Z(^HqhT5~gJdz~O;9;k-i?Aa+m~l|F zXs7^qZ~@~$*3me8M^Zg3-z&J>VMJ4GH0B4hL~$M`lDZ^M#gc2LJl+i28EO0LOW zK(=FV+k0VuXKowCsLMqWlOquhDyh!A0v7vUvWaA%|Nw zzj^%}&#w4dYIZi(lA4)1vH@xbrZoOSKmojow&mBAohz*j$IhrtB^muqjb`4FSeF+bv@M+6cCv^)VlR@?tL1>) zX=)4aoAVFfT509;!ySK+cv6Wz3x)QQ-fGydG7@%1rfl_e z%0D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 diff --git a/img/Mapping Between LinkML Schemas16.png b/img/Mapping Between LinkML Schemas16.png deleted file mode 100644 index eb0a17a393e5b89f69ec0019f3625db228783ac9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93285 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 DM|_#k diff --git a/img/Mapping Between LinkML Schemas17.png b/img/Mapping Between LinkML Schemas17.png deleted file mode 100644 index 70f253e70bf43f876cdcf2b68534a005dac54e66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24093 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⪙WX_hHu7v=#ar6cxhOQ`A124xB%`>&NLX3&)qJfJ*TUk-ZA=F3mYOY9B7Iod7TIovVzQ7Gto3$MgmgCum4 zF9pv+WkN(CI-t}Yv(D1{?lL<4tSs9bG_&5JZP;_P zhJ83e%3N=4WQ0kk-=XhjMJpMf2}i3`^Z(|Ks>fF^kb43x!wmU0+xOCOo*muz4pwn< zgd_I!sh>3$z`IOt^GF-{xq3$0s+&T8Wj{~K|EU~{Ch~WdFtVsKptAjCZ72@ASy;(X!%;if$p(e@#TsuJ5qN*%d{o9Zqo z@N$hH$*PE=J>-|@E@VC_K9qYXSK4NhVK>3Bm{cLsdT>C9^=vFN-n4Hx$hrhcg3MI_ zik|nw5rdU^Io$8!idGe>Yu6Mpq3zmd*`Flj?2(ud_xJc@x%6d|*9#)tJ~KSt@kmso z3bZ8jC~p>!Qu$19plz=@TyULEE{o1~wj>qW$4Xe-Dyuy`7b(oNV}08A+fC5ux_~xg zoTZcqNt1E@R%`oVt-0vDzeGu5Y0+}4=xS-H!MW0&nI7->6&-)!NwR$+Ze}5Ohb2h> zYN{TxlFI}QP)-1_TAFp7}R9gFGDPO9Dq7K8qcZy|BEs-b^`GF#EFZdcu{gLMx1njI2dHY`8Q z$;f1YV(53pi?X`@;e@{&(P(i)jTHIX^2t(0@?SwAf_O}waP9a5Ka@Z@#eo)gxpOqU-B#!@sKdf{IivizpBzyQmSneYUtYtbEcgdg&CJdDkqrSW z;mD)2#f}D8N`ep}<0m&jCBGGgpIEJkOs=Jl|H&$93RQLM+t>NQ0Wu~H`pQvs{AV~5 zf2_?#J*hYW{W5OJllt3Uy{F`j3f&1Yorc-*ipq}Vk9E%kbMLWn;qddmTQGC^ov+kQ z`zI;P2-MbvjyFI?n4vd8F?{QXHUaRjJ%Hp%gIZB=UlBFd?~(zp@doQWBH?8Uz>)QI zK|5qV4@0S~f!_0)+_3FRnHK1;^rn~}@$*kHI+@=wB4lbhQarA%{|VB6k5EwzNxtVX zY~ry2ih)v+mjZCLgSZE*_%M7ThAxX2*aw^;am;`LQ zjvRVnEM)e3JCp)8riR#PLLu)38Bb%);gvZ{8Y+$(%}MuH=bXO!HK>n_iLIfS8TowP z8xNcayZ@qP?HP(8ro*0dGm#;1JW5BAm%sU9iIvB16H;3AS^q8y6Du_gLS1d?dLqX6 z5f-!&7sa-F4?yv~N%tq#ph=Li9f^az0OH1X=%*=M<($j5;{<(a}{g5htd}WTs^Y46i{;mF0>8rc; zXbOrY_Q}LbUQ(7d4ZV)G3p43ijMXojBq4R!ju9XId4lh$y|

    DrAw!;A0v2@O3RBH*wMC{%D^UC*;j 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 diff --git a/img/Mapping Between LinkML Schemas2.png b/img/Mapping Between LinkML Schemas2.png deleted file mode 100644 index 11be3da42260b35a8848cfe60967038586c97387..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54667 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

    ?$IG(-UeSiP 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 diff --git a/img/Mapping Between LinkML Schemas20.png b/img/Mapping Between LinkML Schemas20.png deleted file mode 100644 index a79f5e404527d452a1fbc9572d73c4c8b9ff248d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20516 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 D*qCd> diff --git a/img/Mapping Between LinkML Schemas4.png b/img/Mapping Between LinkML Schemas4.png deleted file mode 100644 index 7a3248cdf1af77cd35f6bd2d2db9238f67293cbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79188 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 diff --git a/img/Mapping Between LinkML Schemas5.png b/img/Mapping Between LinkML Schemas5.png deleted file mode 100644 index 11be3da42260b35a8848cfe60967038586c97387..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54667 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

    ?$IG(-UeSiP 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 diff --git a/img/Mapping Between LinkML Schemas6.png b/img/Mapping Between LinkML Schemas6.png deleted file mode 100644 index 4056e267374467a5cb93460ac00a50f2d508f3d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82911 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

    Sh4Yfu9&aq{%P?vB`NA9j{3tuD`cPJO$ppy?i$Z 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%0DlSH;ovux{rny?snk#3Qblb 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

    1a{c^WB4L! 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 RA1}<(yJ392Qp+jk{{ZQm6bk?V diff --git a/img/Mapping Between LinkML Schemas9.png b/img/Mapping Between LinkML Schemas9.png deleted file mode 100644 index 233a4e40c7edec758b0e4e9ed5f3996be2e7d6f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144396 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%0A6yZ6|Jb|M*Y7P#b>6Eq1TC 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

    n+I%5oAU^sj80~9#M4k} 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%0D+Aegt#pb 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

    `O2Xoev>dqqFI+Mh~Gx<4lah=yB=Eet{#0zD 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 MTimI*bvNdJ065xtiU0rr diff --git a/implements/index.html b/implements/index.html new file mode 100644 index 0000000..5417d36 --- /dev/null +++ b/implements/index.html @@ -0,0 +1,482 @@ + + + + + + + + + + + + + + + + + + + + Slot: implements - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: implements

    +

    A reference to a specification that this component implements.

    +

    URI: linkmltr:implements

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    SpecificationComponentno
    TransformationSpecificationA collection of mappings between source and target classesno
    ElementDerivationAn abstract grouping for classes that provide a specification of how to deri...no
    ClassDerivationA specification of how to derive a target class from a source classno
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...no
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...no
    PermissibleValueDerivationA specification of how to derive the value of a PV from a source enumno
    PrefixDerivationno
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: implements
    +description: A reference to a specification that this component implements.
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +multivalued: true
    +alias: implements
    +owner: SpecificationComponent
    +domain_of:
    +- SpecificationComponent
    +range: uriorcurie
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/include/index.html b/include/index.html index 0e22ab3..9c63570 100644 --- a/include/index.html +++ b/include/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    @@ -325,10 +341,8 @@ - - - - + +

    Slot: include

    @@ -341,12 +355,14 @@

    Applicable Classes

    Name Description +Modifies Slot CopyDirective - +Instructs a Schema Mapper in how to map to a target schema +no @@ -413,10 +429,10 @@

    LinkML Source

    - + - + diff --git a/index.html b/index.html index 0da4252..838df80 100644 --- a/index.html +++ b/index.html @@ -10,8 +10,12 @@ + + + + - + @@ -19,11 +23,7 @@ - - - - - + @@ -49,15 +49,12 @@ - - - - - - + + + @@ -76,7 +73,9 @@ -
    + + +
    @@ -388,10 +406,8 @@ - - - - + +

    LinkML Data Transformer Model

    @@ -407,8 +423,8 @@

    LinkML Data Transformer Model

  • translation of the specification into SPARQL CONSTRUCTs, to operate on triples
  • translation into another specification language, such as R2RML
  • -

    URI: https://w3id.org/linkml/transformer -Name: transformer

    +

    URI: https://w3id.org/linkml/transformer

    +

    Name: transformer

    Classes

    @@ -424,48 +440,60 @@

    Classes

    - + - - + + - - + + - - + + - - + + - - + + - - + + - + + + + + - - + + - - + + - + + + + + + + + +
    AnyNone
    ClassDerivationA specification of how to derive a target class from a source classCopyDirectiveInstructs a Schema Mapper in how to map to a target schema. Not used for data transformation.
    CopyDirectiveInverseUsed for back references in mapping to relational model
    ElementDerivationA specification of how to derive a target element from a source elementKeyValNone
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...SpecificationComponentNone
    InverseUsed for back references        ElementDerivationAn abstract grouping for classes that provide a specification of how to derive a target element from a source element.
    KeyVal                ClassDerivationA specification of how to derive a target class from a source class.
    PermissibleValueDerivation                EnumDerivationA specification of how to derive the value of a target enum from a source enum
                    PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum
    PrefixDerivation                PrefixDerivationNone
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...                SlotDerivationA specification of how to derive the value of a target slot from a source slot
    TransformationSpecification        TransformationSpecification A collection of mappings between source and target classes
    StringificationConfigurationNone
    UnitConversionConfigurationNone

    Slots

    @@ -486,6 +514,10 @@

    Slots

    name of the class to be aliased +cast_collection_as + + + class_derivations Instructions on how to derive a set of classes in the target schema from clas... @@ -498,6 +530,10 @@

    Slots

    local alias for the class +comments +A list of comments about this component + + copy_all @@ -506,6 +542,22 @@

    Slots

    +delimiter + + + +derived_from +Source slots that are used to derive this slot + + +description +description of the specification component + + +dictionary_key + + + element_name @@ -526,6 +578,14 @@

    Slots

    An expression to be evaluated on the source object to derive the target slot +expression_to_expression_mappings +A mapping table in which the keys and values are expressions + + +expression_to_value_mappings +A mapping table in which the keys are expressions + + hide True if this is suppressed @@ -534,6 +594,10 @@

    Slots

    Unique identifier for this transformation specification +implements +A reference to a specification that this component implements + + include @@ -554,6 +618,10 @@

    Slots

    +mirror_source + + + mixins @@ -562,6 +630,10 @@

    Slots

    Name of the element in the target schema +overrides +overrides source schema slots + + permissible_value_derivations Instructions on how to derive a set of PVs in the target schema @@ -571,7 +643,15 @@

    Slots

    prefixes -prefix map +maps prefixes to URL expansions + + +range + + + +reversed + slot_derivations @@ -582,14 +662,58 @@

    Slots

    +source_magnitude_slot + + + source_schema name of the schema that describes the source (input) objects +source_unit + + + +source_unit_scheme + + + +source_unit_slot + + + +sources + + + +stringification + + + +syntax + + + +target_magnitude_slot + + + target_schema name of the schema that describes the target (output) objects +target_unit + + + +target_unit_scheme + + + +target_unit_slot + + + title human readable title for this transformation specification @@ -598,9 +722,17 @@

    Slots

    +unit_conversion + + + value + +value_mappings +A mapping table that is applied directly to mappings, in order of precedence +

    Enumerations

    @@ -613,7 +745,11 @@

    Enumerations

    +CollectionType + + +SerializationSyntaxType @@ -628,67 +764,91 @@

    Types

    -xsd:boolean +Boolean A binary (true or false) value -xsd:string +ClassReference + + + +Curie a compact URI -xsd:date +Date a date (year, month and day) in an idealized calendar -linkml:DateOrDatetime +DateOrDatetime Either a date or a datetime -xsd:dateTime +Datetime The combination of a date and time -xsd:decimal +Decimal A real number with arbitrary precision that conforms to the xsd:decimal speci... -xsd:double +Double A real number that conforms to the xsd:double specification -xsd:float +EnumReference + + + +Float A real number that conforms to the xsd:float specification -xsd:integer +Integer An integer -xsd:string +Jsonpath +A string encoding a JSON Path + + +Jsonpointer +A string encoding a JSON Pointer + + +Ncname Prefix part of CURIE -shex:nonLiteral +Nodeidentifier A URI, CURIE or BNODE that represents a node in a model -shex:iri +Objectidentifier A URI or CURIE that represents an object in the model -xsd:string +SlotReference + + + +Sparqlpath +A string encoding a SPARQL Property Path + + +String A character string -xsd:dateTime +Time A time object represents a (local) time of day, independent of any particular... -xsd:anyURI +Uri a complete URI -xsd:anyURI +Uriorcurie a URI or a CURIE @@ -726,27 +886,6 @@

    Subsets

    - - -
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -325,10 +341,8 @@ - - - - + +

    Slot: inverse_of

    @@ -342,12 +356,14 @@

    Applicable Classes

    Name Description +Modifies Slot SlotDerivation A specification of how to derive the value of a target slot from a source slo... +no @@ -418,10 +434,10 @@

    LinkML Source

    - + - + diff --git a/is_a/index.html b/is_a/index.html index a394928..0843255 100644 --- a/is_a/index.html +++ b/is_a/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -325,14 +341,12 @@ - - - - + +

    Slot: is_a

    -

    URI: linkmltr:is_a

    +

    URI: linkml:is_a

    Applicable Classes

    @@ -341,32 +355,39 @@

    Applicable Classes

    Name Description +Modifies Slot ElementDerivation -A specification of how to derive a target element from a source element +An abstract grouping for classes that provide a specification of how to deri... +no ClassDerivation A specification of how to derive a target class from a source class +no SlotDerivation A specification of how to derive the value of a target slot from a source slo... +no EnumDerivation A specification of how to derive the value of a target enum from a source enu... +no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum +no PrefixDerivation +no @@ -385,6 +406,7 @@

    LinkML Source

    name: is_a
     from_schema: https://w3id.org/linkml/transformer
     rank: 1000
    +slot_uri: linkml:is_a
     alias: is_a
     owner: ElementDerivation
     domain_of:
    @@ -433,10 +455,10 @@ 

    LinkML Source

    - + - + diff --git a/joins/index.html b/joins/index.html index 985574e..bf00a19 100644 --- a/joins/index.html +++ b/joins/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -332,10 +348,8 @@ - - - - + +

    Slot: joins

    @@ -349,19 +363,25 @@

    Applicable Classes

    Name Description +Modifies Slot ClassDerivation A specification of how to derive a target class from a source class +no

    Properties

    Comments

      @@ -431,10 +451,10 @@

      LinkML Source

    - + - + diff --git a/key/index.html b/key/index.html index 6f36483..d76affa 100644 --- a/key/index.html +++ b/key/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -325,10 +341,8 @@ - - - - + +

    Slot: key

    @@ -341,18 +355,25 @@

    Applicable Classes

    Name Description +Modifies Slot KeyVal +no

    Properties

      -
    • Range: xsd:string
    • +
    • +

      Range: NONE

      +
    • +
    • +

      Required: True

      +

    Identifier and Mapping Information

    Schema Source

    @@ -370,7 +391,7 @@

    LinkML Source

    owner: KeyVal domain_of: - KeyVal -range: string +required: true
    @@ -414,10 +435,10 @@

    LinkML Source

    - + - + diff --git a/mirror_source/index.html b/mirror_source/index.html new file mode 100644 index 0000000..48ca5d7 --- /dev/null +++ b/mirror_source/index.html @@ -0,0 +1,464 @@ + + + + + + + + + + + + + + + + + + + + Slot: mirror_source - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: mirror_source

    +

    URI: linkmltr:mirror_source

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    ElementDerivationAn abstract grouping for classes that provide a specification of how to deri...no
    ClassDerivationA specification of how to derive a target class from a source classno
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...no
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...no
    PermissibleValueDerivationA specification of how to derive the value of a PV from a source enumno
    PrefixDerivationno
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: mirror_source
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: mirror_source
    +owner: ElementDerivation
    +domain_of:
    +- ElementDerivation
    +range: boolean
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/mixins/index.html b/mixins/index.html index eca74d6..76b4100 100644 --- a/mixins/index.html +++ b/mixins/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -325,14 +341,12 @@ - - - - + +

    Slot: mixins

    -

    URI: linkmltr:mixins

    +

    URI: linkml:mixins

    Applicable Classes

    @@ -341,39 +355,50 @@

    Applicable Classes

    Name Description +Modifies Slot ElementDerivation -A specification of how to derive a target element from a source element +An abstract grouping for classes that provide a specification of how to deri... +no ClassDerivation A specification of how to derive a target class from a source class +no SlotDerivation A specification of how to derive the value of a target slot from a source slo... +no EnumDerivation A specification of how to derive the value of a target enum from a source enu... +no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum +no PrefixDerivation +no

    Properties

    Identifier and Mapping Information

    Schema Source

    @@ -386,13 +411,14 @@

    LinkML Source

    name: mixins
     from_schema: https://w3id.org/linkml/transformer
     rank: 1000
    +slot_uri: linkml:mixins
     multivalued: true
     alias: mixins
     owner: ElementDerivation
     domain_of:
     - ElementDerivation
     range: ElementDerivation
    -inlined: true
    +inlined: false
     
     
    @@ -436,10 +462,10 @@

    LinkML Source

    - + - + diff --git a/name/index.html b/name/index.html index 9d263e8..6d299e3 100644 --- a/name/index.html +++ b/name/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -312,10 +328,8 @@ - - - - + +

    Slot: name

    @@ -328,38 +342,45 @@

    Applicable Classes

    Name Description +Modifies Slot ElementDerivation -A specification of how to derive a target element from a source element +An abstract grouping for classes that provide a specification of how to deri... +no ClassDerivation A specification of how to derive a target class from a source class +no SlotDerivation A specification of how to derive the value of a target slot from a source slo... +no EnumDerivation A specification of how to derive the value of a target enum from a source enu... +no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum +no PrefixDerivation +no

    Properties

    Identifier and Mapping Information

    LinkML Source

    @@ -369,11 +390,9 @@

    LinkML Source

    alias: name domain_of: - ElementDerivation -- ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation -range: string @@ -417,10 +436,10 @@

    LinkML Source

    - + - + diff --git a/overrides/index.html b/overrides/index.html new file mode 100644 index 0000000..1c1ca45 --- /dev/null +++ b/overrides/index.html @@ -0,0 +1,466 @@ + + + + + + + + + + + + + + + + + + + + Slot: overrides - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: overrides

    +

    overrides source schema slots

    +

    URI: linkmltr:overrides

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    ElementDerivationAn abstract grouping for classes that provide a specification of how to deri...no
    ClassDerivationA specification of how to derive a target class from a source classno
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...no
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...no
    PermissibleValueDerivationA specification of how to derive the value of a PV from a source enumno
    PrefixDerivationno
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: overrides
    +description: overrides source schema slots
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: overrides
    +owner: ElementDerivation
    +domain_of:
    +- ElementDerivation
    +range: Any
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/overview/index.html b/overview/index.html deleted file mode 100644 index 0f9a288..0000000 --- a/overview/index.html +++ /dev/null @@ -1,992 +0,0 @@ - - - - - - - - - - - - - - - - - - Overview - LinkML-Transformer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - -

    Mapping Between LinkML Schemas

    -

    Draft

    -

    2022-06-24

    -

    Problem: map data from one schema to another

    -
      -
    • Problem: Map d1 → d2
    • -
    • Assumption d1 and d2 conform to two separate schemas\, s1→ s2
    • -
    • Sub-problems:
    • -
    • Ingest/Import: my data warehouse conforms to s2 (e.g. Monarch ingest)
    • -
    • Export: make my data ingest friendly
    • -
    • Migrations: s1 and s2 are different versions of the same schema
    • -
    • Not in scope: in-schema syntactic or structural transforms
    • -
    • JSON to YAML\, JSON to TSV\, JSON to SQL\, JSON to RDF\, ORM\, …
    • -
    • In LinkML this is already largely solved
    • -
    • The actual problem space is highly varied
    • -
    • S1 and S2 may be trivially isomorphic
    • -
    • S1 and S2 may differ in complex or nuanced ways
    • -
    -

    There are many existing approaches

    -
      -
    • Generic frameworks\, driven by declarative specification in Domain Specific Language (DSL)
    • -
    • JSON-based
    • -
    • Google whistle
    • -
    • jsonpath-lift
    • -
    • XSLT
    • -
    • Semweb
    • -
    • YARRML\, R2RML
    • -
    • Many many more…
    • -
    • Bespoke transforms: non-declarative
    • -
    • Implement in python/awk/etc.
    • -
    • Hybrid: bespoke with some declarative mappings in ad-hoc format
    • -
    • E.g. NMDC ingest framework
    • -
    -

    Traps with declarative mapping

    -
      -
    • Declarative is great\, until it’s not
    • -
    • Anti-patterns:
    • -
    • Insufficient expressivity to carry out real world tasks
    • -
    • Bolting on features to mapping DSL until it’s a fully-featured Turing-complete language
    • -
    • Optimization/scalability at mercy of framework
    • -
    • Messy layering between DSL and host language
        -
      • It can be useful to leverage host language features (e.g arbitrary python function)
      • -
      • But this can get confusing:
      • -
      • NFNF: Neither fish nor fowl
      • -
      • Limits optimizations (forces iterative host language calls)
      • -
      -
    • -
    -

    YARRRML

    -

    -

    https://rml.io/yarrrml/

    -

    YARRRML notes

    -
      -
    • Has a playground\, which is great
    • -
    • Mixes two concerns:
    • -
    • 1. Isomorphic structural mapping between JSON/TSVs and RDF (already covered by JSON-LD)
    • -
    • 2. Mapping
    • -
    • This isn’t necessarily bad - it’s quite practical\, but a little unsatisfying IMO
    • -
    -

    jsonpath-lifter

    -

    -

    -

    -

    -

    -

    -

    -

    Was proposed for CCDH CRDC-node mappings

    -

    Doesn’t seem widely used

    -

    Is there a big advantage over simply writing javascript functions?

    -

    Koza (previously: bioweave)

    -

    -

    -

    ETL frameworks

    -
      -
    • There are many many ETL frameworks
    • -
    • E.g. WebKarma
    • -
    • Inherently mixing of concerns
    • -
    • Here we are concerned with the “T” part
    • -
    • Do existing frameworks separate out the T as a modular composable component?
    • -
    • I’m not sure
    • -
    -

    Do we need Yet Another Mapping Framework?

    -
      -
    • LinkML philosophy:
    • -
    • Embrace\, extend\, parasitize
    • -
    • Develop lightweight ways to map
    • -
    • Map mappings to existing mapping frameworks
        -
      • This actually makes sense even if it sounds kind of meta…
      • -
      -
    • -
    -

    Level 0 Mapping: Isomorphic, same URIs

    -

    classes:

    -

    Person:

    -

    class_uri: sdo:Person

    -

    attributes:

    -

    family_name:

    -

    slot_uri: sdo:familyName

    -

    address:

    -

    slot_uri: sdo:address

    -

    classes:

    -

    Agent:

    -

    class_uri: sdo:Person

    -

    attributes:

    -

    surname:

    -

    slot_uri: sdo:familyName

    -

    home_address:

    -

    slot_uri: sdo:address

    -

    family_name: Wu

    -

    address: 1 my street\, Oakville

    -

    surname: Wu

    -

    home_address: 1 my street\, Oakville

    -

    Level 0: handled by standard linkml convert to/from RDF

    -

    classes:

    -

    Person:

    -

    class_uri: sdo:Person

    -

    attributes:

    -

    family_name:

    -

    slot_uri: sdo:familyName

    -

    address:

    -

    slot_uri: sdo:address

    -

    classes:

    -

    Agent:

    -

    class_uri: sdo:Person

    -

    attributes:

    -

    surname:

    -

    slot_uri: sdo:familyName

    -

    home_address:

    -

    slot_uri: sdo:address

    -

    data2 (yaml/json)

    -

    d ata1 (yaml/json)

    -

    family_name: Wu

    -

    address: 1 my street\, Oakville

    -

    surname: Wu

    -

    home_address: 1 my street\, Oakville

    -

    d ata1.ttl == data2.ttl

    -

    [sdo:familyName “Wu” ;

    -

    sdo:address “1 my street\, Oakville”

    -

    ]

    -

    Level 0: Enums TODO: add example here. Basically this works the same way

    -

    Level 0: HOWTO

    -

    Compose two commands:

    -

    linkml-convert -s schema1.yaml data1.yaml -o data1.ttl

    -

    linkml-convert -s schema2.yaml data1.ttl -o data2.yaml

    -

    That’s it!

    -

    TODO:

    -

    Write a wrapper (linkml-map-data?) that does this in one command

    -

    Level 0: other considerations

    -
      -
    • Going via RDF in theory eliminates inlining differences
    • -
    • E.g. s1 inlines address objects\, s2 uses references (inlined: false) and includes a separate index slot for addresses
    • -
    • Current status:
    • -
    • Currently when going from s1 to s2\, no index slots are generated
    • -
    • This could be done as part of the general rdflib framework
    • -
    -

    Lessons learned so far: annotate your schema with URIs!

    -
      -
    • Annotating schemas with URIs is optional with LinkML
    • -
    • But your future self and data users will thank you for careful schema annotation!
    • -
    • Hints:
    • -
    • Schema-automator can provide suggestions for your element and enum URIs
    • -
    • Sometimes plain semweb URIs (e.g. schema.org) can be easier for interoperation than overly granular OBO ones
        -
      • E.g modeling Personhood as a role vs straightforward schema:Person
      • -
      -
    • -
    -

    Level 1 Mapping: Isomorphic, different URIs

    -

    name: example-semweb-schema

    -

    classes:

    -

    Person:

    -

    class_uri: sdo:Person

    -

    attributes:

    -

    family_name:

    -

    slot_uri: sdo:familyName

    -

    address:

    -

    slot_uri: sdo:address

    -

    name: example-OBO-schema

    -

    classes:

    -

    Person:

    -

    class_uri: NCBITaxon:9606 ## Homo sapiens

    -

    attributes:

    -

    surname:

    -

    slot_uri: IAO:0000590 ## written name

    -

    home_address:

    -

    slot_uri: IAO:0000422 ## postal address

    -

    family_name: Wu

    -

    address: 1 my street\, Oakville

    -

    surname: Wu

    -

    home_address: 1 my street\, Oakville

    -

    Level 1 Mapping: mediated by URI mapping

    -

    name: example-semweb-schema

    -

    classes:

    -

    Person:

    -

    class_uri: sdo:Person

    -

    attributes:

    -

    family_name:

    -

    slot_uri: sdo:familyName

    -

    address:

    -

    slot_uri: sdo:address

    -

    name: example-OBO-schema

    -

    classes:

    -

    Person:

    -

    class_uri: NCBITaxon:9606 ## Homo sapiens

    -

    attributes:

    -

    surname:

    -

    slot_uri: IAO:0000590 ## written name

    -

    home_address:

    -

    slot_uri: IAO:0000422 ## postal address

    - - - - - - - - - - - - - - - - - - - - - -
    subject_idobject_id
    sdo:PersonNCBITaxon:9606
    sdo:familyNameIAO:nnnn
    sdo:addressIAO:0000422
    -

    family_name: Wu

    -

    address: 1 my street\, Oakville

    -

    surname: Wu

    -

    home_address: 1 my street\, Oakville

    -

    [sdo:familyName “Wu”

    -

    sdo:address “1 my street\, Oakville”

    -

    ]

    -

    [sdo:familyName “Wu”

    -

    sdo:address “1 my street\, Oakville”

    -

    ]

    -

    Level 1: HOWTO

    -
      -
    • Compose three commands:
    • -
    • linkml-convert -s schema1.yaml data1.yaml -o data1.ttl
    • -
    • sssom-map-iris -i data1.ttl -m schema1-to-schema2.sssom.tsv -o data2.ttl
    • -
    • linkml-convert -s schema2.yaml data2.ttl -o data2.yaml
    • -
    • That’s it!
    • -
    • TODO:
    • -
    • sssom-map-iris does not yet exist (?)\, but should be trivial
    • -
    • Fold into wrapper CLI tool
    • -
    • Nuances:
    • -
    • Schemas have nuanced differences: not everything with be skos:exact
    • -
    • We can distinguish 3 flavors of level 1 mapping:
    • -
    • Precise\, bidirectional: follow exact only
    • -
    • Valid\, unidirectional: follow exact + broad
    • -
    • Loose: any mapping
    • -
    -

    Level 1 variant: mappings in schema

    -

    name: example-semweb-schema

    -

    classes:

    -

    Person:

    -

    class_uri: sdo:Person

    -

    exact_mappings: [“NCBITaxon:9606”]

    -

    attributes:

    -

    family_name:

    -

    slot_uri: sdo:familyName

    -

    exact_mappings: [“IAO:nnnn”]

    -

    address:

    -

    slot_uri: sdo:address

    -

    exact_mappings: [“IAO:0000422”]

    -

    name: example-OBO-schema

    -

    classes:

    -

    Person:

    -

    class_uri: NCBITaxon:9606 ## Homo sapiens

    -

    attributes:

    -

    surname:

    -

    slot_uri: IAO:0000590 ## written name

    -

    home_address:

    -

    slot_uri: IAO:0000422 ## postal address

    -

    family_name: Wu

    -

    address: 1 my street\, Oakville

    -

    surname: Wu

    -

    home_address: 1 my street\, Oakville

    -

    [sdo:familyName “Wu”

    -

    sdo:address “1 my street\, Oakville”

    -

    ]

    -

    [sdo:familyName “Wu”

    -

    sdo:address “1 my street\, Oakville”

    -

    ]

    -

    Advantages of RDF as an intermediate

    -
      -
    • Use of IRIs
    • -
    • Separation of concerns
    • -
    • Structural differences (e.g. inlining) are already handled by linkml convert
    • -
    • Allows us to focus on semantic mappings
    • -
    -

    Lessons learned so far: think about mappings

    -

    -

    -

    https://linkml.io/linkml/faq/modeling.html#when-is-it-important-to-have-mappings

    -

    https://github.com/alliance-genome/agr_curation_schema/blob/main/model/schema/agent.yaml

    -

    More complex mappings: level 2 and above

    -
      -
    • TODO: define levels 2 and above
    • -
    • Examples of kinds of features:
    • -
    • merging/splitting fields; e.g. full_name = first + “ “ + last
    • -
    • Unit conversion or baked-in units to explicit units
    • -
    • Normalization/denormalization (aka flattening)
    • -
    • Complex logic
        -
      • If conditions A\, B\, C and not D are met then copy field F from X to Y
      • -
      -
    • -
    -

    LinkML Rule and Inference Framework

    -
      -
    • Current use case is intra-schema inference
    • -
    • Easy to invoke on command line
    • -
    • Needs more docs!
    • -
    • Could form basis of inter-schema DSL
    • -
    • Examples
    • -
    • Schemas differ in units
    • -
    • Schemas differ in categorical vs quantitative
    • -
    -

    -

    Current use case is intra-schema inference

    -

    Could form basis of inter-schema DSL

    -

    -

    Datalog

    -

    Datalog could serve as the powerful basis of an expressive declarative transformation language

    -

    -

    https://linkml.io/linkml-datalog

    -

    Approach for level 2+

    -
      -
    • Do we even want a generic mapping framework in LinkML here?
    • -
    • This is a good “ parasitization hook”
    • -
    • Do complex stuff using an existing framework
    • -
    • TBD: derive or semi-derive mapping specification?
    • -
    • This is also a code bespoke procedural code hook
    • -
    • Do the generic stuff with linkml-convert and isomorphic IRI mapping
    • -
    • Do more complex stuff in code
    • -
    -

    General approach for level 2+; same to same

    -

    name: example-semweb-schema

    -

    classes:

    -

    Person:

    -

    class_uri: sdo:Person

    -

    attributes:

    -

    family_name:

    -

    slot_uri: sdo:familyName

    -

    address:

    -

    slot_uri: sdo:address

    -

    name: example-OBO-schema

    -

    classes:

    -

    Person:

    -

    class_uri: NCBITaxon:9606 ## Homo sapiens

    -

    attributes:

    -

    surname:

    -

    slot_uri: IAO:0000590 ## written name

    -

    home_address:

    -

    slot_uri: IAO:0000422 ## postal address

    -

    family_name: Wu

    -

    address: 1 my street\, Oakville

    -

    surname: Wu

    -

    home_address: 1 my street\, Oakville

    -

    JSON OR XML OR YAML OR RDF OR SQL

    -

    JSON OR XML OR YAML OR RDF OR SQL

    -

    (matches the one on the left)

    -

    Existing mapping framework (X to X)

    -

    Example of same-to-same: jsonpath-lifter

    -

    name: example-semweb-schema

    -

    classes:

    -

    Person:

    -

    class_uri: sdo:Person

    -

    attributes:

    -

    family_name:

    -

    slot_uri: sdo:familyName

    -

    address:

    -

    slot_uri: sdo:address

    -

    name: example-OBO-schema

    -

    classes:

    -

    Person:

    -

    class_uri: NCBITaxon:9606 ## Homo sapiens

    -

    attributes:

    -

    surname:

    -

    slot_uri: IAO:0000590 ## written name

    -

    home_address:

    -

    slot_uri: IAO:0000422 ## postal address

    -

    family_name: Wu

    -

    address: 1 my street\, Oakville

    -

    surname: Wu

    -

    home_address: 1 my street\, Oakville

    -

    Jsonpath-lifter (JSON to JSON)

    -

    Example of same-to-same: awk

    -

    Example of same-to-same: SQL

    -

    INSERT INTO Agent AS SELECT

    -

    Person.last_name AS Agent.surname\,

    -

    CONCAT(Person.full_name\, “ “\, Person.first) AS Agent.full_name\,

    -

    -

    CONSTRUCT {

    -

    [

    -

    a schema:Person ;

    -

    my:fullName STRCAT(...)

    -

    ]

    -

    }

    -

    WHERE {

    -

    ?person a schema:Person ;

    -

    schema:firstName ;

    -

    schema:lastName ;

    -

    -

    }

    -

    SPARQL CONSTRUCT

    -

    RDF Engine or Triplestore

    -

    Example of same-to-same: Python (LinkML objects)

    -

    def convert(p: Person) -> Agent:

    -

    return Agent(p.id\,

    -

    full_name=f”{..} {..}”\,

    -

    -

    Conversion script

    -

    General approach for level 2+; heteromorphic

    -

    name: example-semweb-schema

    -

    classes:

    -

    Person:

    -

    class_uri: sdo:Person

    -

    attributes:

    -

    family_name:

    -

    slot_uri: sdo:familyName

    -

    address:

    -

    slot_uri: sdo:address

    -

    name: example-OBO-schema

    -

    classes:

    -

    Person:

    -

    class_uri: NCBITaxon:9606 ## Homo sapiens

    -

    attributes:

    -

    surname:

    -

    slot_uri: IAO:0000590 ## written name

    -

    home_address:

    -

    slot_uri: IAO:0000422 ## postal address

    -

    family_name: Wu

    -

    address: 1 my street\, Oakville

    -

    surname: Wu

    -

    home_address: 1 my street\, Oakville

    -

    L inkml-convert

    -

    OPTIONAL

    -

    L inkml-convert

    -

    OPTIONAL

    -

    JSON OR XML OR YAML OR RDF OR SQL

    -

    JSON OR XML OR YAML OR RDF OR SQL

    -

    ( different from the one on the left)

    -

    Existing mapping framework (X to Y)

    -

    Example: YARRRML

    -

    name: example-semweb-schema

    -

    classes:

    -

    Person:

    -

    class_uri: sdo:Person

    -

    attributes:

    -

    family_name:

    -

    slot_uri: sdo:familyName

    -

    address:

    -

    slot_uri: sdo:address

    -

    name: example-OBO-schema

    -

    classes:

    -

    Person:

    -

    class_uri: NCBITaxon:9606 ## Homo sapiens

    -

    attributes:

    -

    surname:

    -

    slot_uri: IAO:0000590 ## written name

    -

    home_address:

    -

    slot_uri: IAO:0000422 ## postal address

    -

    -

    family_name: Wu

    -

    address: 1 my street\, Oakville

    -

    surname: Wu

    -

    home_address: 1 my street\, Oakville

    -

    YARRRML (JSON/YAML to RDF)

    -

    Example: YARRRML, native mappings

    -

    name: example-semweb-schema

    -

    classes:

    -

    Person:

    -

    class_uri: sdo:Person

    -

    attributes:

    -

    family_name:

    -

    slot_uri: sdo:familyName

    -

    address:

    -

    slot_uri: sdo:address

    -

    name: example-OBO-schema

    -

    classes:

    -

    Person:

    -

    class_uri: NCBITaxon:9606 ## Homo sapiens

    -

    attributes:

    -

    surname:

    -

    slot_uri: IAO:0000590 ## written name

    -

    home_address:

    -

    slot_uri: IAO:0000422 ## postal address

    -

    family_name: Wu

    -

    address: 1 my street\, Oakville

    -

    surname: Wu

    -

    home_address: 1 my street\, Oakville

    -

    mapping.yarrrml.yml

    -

    Example: YARRRML, compiled mappings

    -

    name: example-semweb-schema

    -

    classes:

    -

    Person:

    -

    class_uri: sdo:Person

    -

    attributes:

    -

    family_name:

    -

    slot_uri: sdo:familyName

    -

    address:

    -

    slot_uri: sdo:address

    -

    Mappings :

    -

    … \< TO BE DEFINED LINKML MAPPING SPEC >

    -

    name: example-OBO-schema

    -

    classes:

    -

    Person:

    -

    class_uri: NCBITaxon:9606 ## Homo sapiens

    -

    attributes:

    -

    surname:

    -

    slot_uri: IAO:0000590 ## written name

    -

    home_address:

    -

    slot_uri: IAO:0000422 ## postal address

    -

    family_name: Wu

    -

    address: 1 my street\, Oakville

    -

    surname: Wu

    -

    home_address: 1 my street\, Oakville

    -

    mapping.yarrrml.yml

    -

    Hyperparasitism is good

    -

    name: example-semweb-schema

    -

    classes:

    -

    Person:

    -

    class_uri: sdo:Person

    -

    attributes:

    -

    family_name:

    -

    slot_uri: sdo:familyName

    -

    address:

    -

    slot_uri: sdo:address

    -

    Mappings :

    -

    … \< TO BE DEFINED LINKML MAPPING SPEC >

    -

    name: example-OBO-schema

    -

    classes:

    -

    Person:

    -

    class_uri: NCBITaxon:9606 ## Homo sapiens

    -

    attributes:

    -

    surname:

    -

    slot_uri: IAO:0000590 ## written name

    -

    home_address:

    -

    slot_uri: IAO:0000422 ## postal address

    -

    mapping.yarrrml.yml

    -

    family_name: Wu

    -

    address: 1 my street\, Oakville

    -

    surname: Wu

    -

    home_address: 1 my street\, Oakville

    -

    Alternative: Direct translation language

    -
      -
    • Desiderata
    • -
    • Ability to compile to scalable frameworks
    • -
    • E.g. compile to SQL
    • -
    • Simple for simple tasks
    • -
    • Layer on existing expression language
    • -
    • Provides path to safe subset of host language (Python)
    • -
    • Can be easily implemented in other languages
    • -
    -

    -

    -

    Normalized to Denormalized (modeling SSSOM)

    -

    SQL INSERT (or CREATE VIEW)

    -

    -

    SQL FROM Clause

    -

    (implicit INNER JOIN/WHERE)

    -

    SQL SELECT … AS clause

    -

    Relationship to profiles TODO

    -

    Profiles/IGs can be seen as a sub-case of schema mapping

    -

    Current progress

    -

    https://github.com/linkml/linkml/issues/533 map to YARRRML

    -

    Vincent Vemonet has started on linkml->rml

    -

    https://github.com/vemonet/linkml/blob/add-gen-rml/linkml/generators/rmlgen.py

    -

    Relationship to Koza

    -

    Koza ingests often require multiple files

    -

    -

    -

    See Also

    -

    Revisiting BioWeave (Kent Shefchek\, 2020?)

    -

    https://docs.google.com/presentation/d/1DYiWXoz3iHM2PvMFD0hRpJ544tnHawg00PBwNuESo44/edit#slide=id.gb33d7ddd1b_0_93

    -

    Automating mapping

    -
      -
    • Should we pursue approaches to automate mapping?
    • -
    • Some of the functionality is already in schema-automator. E.g. auto-annotating schema elements using ontologies
    • -
    • Isomorphic schema mapping discovery analogous to ontology mapping
    • -
    • Can a boomer type approach help?
        -
      • E.g. given multiple loose mappings with alternative interpretations\, which ones give coherent results
      • -
      -
    • -
    • Other approaches
    • -
    • Inductive Logic Programming: transformations as logic programs
    • -
    • Genetic programming: transformations as lambda functions
    • -
    • Deep Learning: e.g. Language Models for translation
    • -
    • There is already a rich literature spanning decades here to be parasitized…
    • -
    -

    Summary: just tell me what to do today

    -
      -
    • For isomorphic mappings:
    • -
    • Stay within LinkML/SSSOM
    • -
    • No need for custom code\, it all works
    • -
    • For complex mappings:
    • -
    • It depends!
    • -
    • Do the structural mapping with linkml-convert
    • -
    • Implement the complex logic as you see fit\, depending on multiple factors. Any of the following may be valid
        -
      • Koza
      • -
      • Awk
      • -
      • SPARQL CONSTRUCTS or SELECTS
      • -
      • Custom python
      • -
      • YARRRML
      • -
      • SQL INSERTs
      • -
      • XSLT
      • -
      • Jsonpath-lifter
      • -
      • ….
      • -
      -
    • -
    -

    Roadmap

    -
      -
    • 2022: Continue to gather use cases\, experiment
    • -
    • 2023: If funding permits
    • -
    • Extend metamodel to include complex mapping
    • -
    • Implement EITHER
        -
      • Parasitizing converters
      • -
      • Direct mapping framework
      • -
      -
    • -
    • TBD: Is this Koza2?
    • -
    - - - - - - -
    -
    - - - - -
    - -
    - - - -
    -
    -
    -
    - - - - - - - - - \ No newline at end of file diff --git a/permissible_value_derivations/index.html b/permissible_value_derivations/index.html index 209f13e..c3a81df 100644 --- a/permissible_value_derivations/index.html +++ b/permissible_value_derivations/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -325,10 +341,8 @@ - - - - + +

    Slot: permissible_value_derivations

    @@ -342,19 +356,25 @@

    Applicable Classes

    Name Description +Modifies Slot EnumDerivation A specification of how to derive the value of a target enum from a source enu... +no

    Properties

    Identifier and Mapping Information

    Schema Source

    @@ -418,10 +438,10 @@

    LinkML Source

    - + - + diff --git a/populated_from/index.html b/populated_from/index.html index 110bd8b..97f5cc0 100644 --- a/populated_from/index.html +++ b/populated_from/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -312,10 +328,8 @@ - - - - + +

    Slot: populated_from

    @@ -328,26 +342,35 @@

    Applicable Classes

    Name Description +Modifies Slot ClassDerivation A specification of how to derive a target class from a source class +no SlotDerivation A specification of how to derive the value of a target slot from a source slo... +no EnumDerivation A specification of how to derive the value of a target enum from a source enu... +no + + +PermissibleValueDerivation +A specification of how to derive the value of a PV from a source enum +no

    Properties

    Identifier and Mapping Information

    LinkML Source

    @@ -359,7 +382,7 @@

    LinkML Source

    - ClassDerivation - SlotDerivation - EnumDerivation -range: string +- PermissibleValueDerivation
    @@ -403,10 +426,10 @@

    LinkML Source

    - + - + diff --git a/prefixes/index.html b/prefixes/index.html index c5b7d18..10a31c4 100644 --- a/prefixes/index.html +++ b/prefixes/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -325,15 +341,13 @@ - - - - + +

    Slot: prefixes

    -

    prefix map

    -

    URI: linkmltr:prefixes

    +

    maps prefixes to URL expansions

    +

    URI: sh:declare

    Applicable Classes

    @@ -342,18 +356,25 @@

    Applicable Classes

    Name Description +Modifies Slot TransformationSpecification A collection of mappings between source and target classes +no

    Properties

    Identifier and Mapping Information

    Schema Source

    @@ -364,14 +385,17 @@

    LinkML Source

    name: prefixes
    -description: prefix map
    +description: maps prefixes to URL expansions
     from_schema: https://w3id.org/linkml/transformer
     rank: 1000
    +slot_uri: sh:declare
    +multivalued: true
     alias: prefixes
     owner: TransformationSpecification
     domain_of:
     - TransformationSpecification
    -range: string
    +range: KeyVal
    +inlined: true
     
     
    @@ -415,10 +439,10 @@

    LinkML Source

    - + - + diff --git a/range/index.html b/range/index.html new file mode 100644 index 0000000..1cb227c --- /dev/null +++ b/range/index.html @@ -0,0 +1,440 @@ + + + + + + + + + + + + + + + + + + + + Slot: range - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: range

    +

    URI: linkml:range

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...no
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: range
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +slot_uri: linkml:range
    +alias: range
    +owner: SlotDerivation
    +domain_of:
    +- SlotDerivation
    +range: string
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/reversed/index.html b/reversed/index.html new file mode 100644 index 0000000..0bbea1e --- /dev/null +++ b/reversed/index.html @@ -0,0 +1,439 @@ + + + + + + + + + + + + + + + + + + + + Slot: reversed - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: reversed

    +

    URI: linkmltr:reversed

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    StringificationConfigurationno
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: reversed
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: reversed
    +owner: StringificationConfiguration
    +domain_of:
    +- StringificationConfiguration
    +range: boolean
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json index 74fa293..9bf668a 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"LinkML Data Transformer Model Datamodel for LinkML schema transformations. A transformer generates instances of a target data model from instances of a source data model. This transformation process is guided by a TransformationSpecification . The specification is independent of any one method for transforming data. It allows different approaches, including: direct implementation, transforming python or json objects translation of the specification into SQL commands, to operate on relations translation of the specification into SPARQL CONSTRUCTs, to operate on triples translation into another specification language, such as R2RML URI: https://w3id.org/linkml/transformer Name: transformer Classes Class Description AliasedClass alias-class key value pairs for classes Any ClassDerivation A specification of how to derive a target class from a source class CopyDirective ElementDerivation A specification of how to derive a target element from a source element EnumDerivation A specification of how to derive the value of a target enum from a source enu... Inverse Used for back references KeyVal PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation SlotDerivation A specification of how to derive the value of a target slot from a source slo... TransformationSpecification A collection of mappings between source and target classes Slots Slot Description add alias name of the class to be aliased class_derivations Instructions on how to derive a set of classes in the target schema from clas... class_name class_named local alias for the class copy_all copy_directives element_name enum_derivations Instructions on how to derive a set of enums in the target schema exclude exclude_all expr An expression to be evaluated on the source object to derive the target slot hide True if this is suppressed id Unique identifier for this transformation specification include inverse_of Used to specify a class-slot tuple that is the inverse of the derived/target ... is_a joins Additional classes to be joined to derive instances of the target class key mixins name Name of the element in the target schema permissible_value_derivations Instructions on how to derive a set of PVs in the target schema populated_from Name of the class in the source schema prefixes prefix map slot_derivations Instructions on how to derive a set of top level slots in the target schema slot_name source_schema name of the schema that describes the source (input) objects target_schema name of the schema that describes the target (output) objects title human readable title for this transformation specification type_designator value Enumerations Enumeration Description Types Type Description xsd:boolean A binary (true or false) value xsd:string a compact URI xsd:date a date (year, month and day) in an idealized calendar linkml:DateOrDatetime Either a date or a datetime xsd:dateTime The combination of a date and time xsd:decimal A real number with arbitrary precision that conforms to the xsd:decimal speci... xsd:double A real number that conforms to the xsd:double specification xsd:float A real number that conforms to the xsd:float specification xsd:integer An integer xsd:string Prefix part of CURIE shex:nonLiteral A URI, CURIE or BNODE that represents a node in a model shex:iri A URI or CURIE that represents an object in the model xsd:string A character string xsd:dateTime A time object represents a (local) time of day, independent of any particular... xsd:anyURI a complete URI xsd:anyURI a URI or a CURIE Subsets Subset Description","title":"Index"},{"location":"#linkml-data-transformer-model","text":"Datamodel for LinkML schema transformations. A transformer generates instances of a target data model from instances of a source data model. This transformation process is guided by a TransformationSpecification . The specification is independent of any one method for transforming data. It allows different approaches, including: direct implementation, transforming python or json objects translation of the specification into SQL commands, to operate on relations translation of the specification into SPARQL CONSTRUCTs, to operate on triples translation into another specification language, such as R2RML URI: https://w3id.org/linkml/transformer Name: transformer","title":"LinkML Data Transformer Model"},{"location":"#classes","text":"Class Description AliasedClass alias-class key value pairs for classes Any ClassDerivation A specification of how to derive a target class from a source class CopyDirective ElementDerivation A specification of how to derive a target element from a source element EnumDerivation A specification of how to derive the value of a target enum from a source enu... Inverse Used for back references KeyVal PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation SlotDerivation A specification of how to derive the value of a target slot from a source slo... TransformationSpecification A collection of mappings between source and target classes","title":"Classes"},{"location":"#slots","text":"Slot Description add alias name of the class to be aliased class_derivations Instructions on how to derive a set of classes in the target schema from clas... class_name class_named local alias for the class copy_all copy_directives element_name enum_derivations Instructions on how to derive a set of enums in the target schema exclude exclude_all expr An expression to be evaluated on the source object to derive the target slot hide True if this is suppressed id Unique identifier for this transformation specification include inverse_of Used to specify a class-slot tuple that is the inverse of the derived/target ... is_a joins Additional classes to be joined to derive instances of the target class key mixins name Name of the element in the target schema permissible_value_derivations Instructions on how to derive a set of PVs in the target schema populated_from Name of the class in the source schema prefixes prefix map slot_derivations Instructions on how to derive a set of top level slots in the target schema slot_name source_schema name of the schema that describes the source (input) objects target_schema name of the schema that describes the target (output) objects title human readable title for this transformation specification type_designator value","title":"Slots"},{"location":"#enumerations","text":"Enumeration Description","title":"Enumerations"},{"location":"#types","text":"Type Description xsd:boolean A binary (true or false) value xsd:string a compact URI xsd:date a date (year, month and day) in an idealized calendar linkml:DateOrDatetime Either a date or a datetime xsd:dateTime The combination of a date and time xsd:decimal A real number with arbitrary precision that conforms to the xsd:decimal speci... xsd:double A real number that conforms to the xsd:double specification xsd:float A real number that conforms to the xsd:float specification xsd:integer An integer xsd:string Prefix part of CURIE shex:nonLiteral A URI, CURIE or BNODE that represents a node in a model shex:iri A URI or CURIE that represents an object in the model xsd:string A character string xsd:dateTime A time object represents a (local) time of day, independent of any particular... xsd:anyURI a complete URI xsd:anyURI a URI or a CURIE","title":"Types"},{"location":"#subsets","text":"Subset Description","title":"Subsets"},{"location":"AliasedClass/","text":"Class: AliasedClass alias-class key value pairs for classes URI: linkmltr:AliasedClass classDiagram class AliasedClass AliasedClass : alias AliasedClass : class_named Slots Name Cardinality and Range Description Inheritance alias 0..1 xsd:string name of the class to be aliased direct class_named 0..1 xsd:string local alias for the class direct Usages used by used in type used ClassDerivation joins range AliasedClass Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:AliasedClass native linkmltr:AliasedClass LinkML Source Direct name: AliasedClass description: alias-class key value pairs for classes from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: alias: name: alias description: name of the class to be aliased from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true class_named: name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer rank: 1000 Induced name: AliasedClass description: alias-class key value pairs for classes from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: alias: name: alias description: name of the class to be aliased from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: alias owner: AliasedClass domain_of: - AliasedClass class_named: name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: class_named owner: AliasedClass domain_of: - AliasedClass","title":"Class: AliasedClass"},{"location":"AliasedClass/#class-aliasedclass","text":"alias-class key value pairs for classes URI: linkmltr:AliasedClass classDiagram class AliasedClass AliasedClass : alias AliasedClass : class_named","title":"Class: AliasedClass"},{"location":"AliasedClass/#slots","text":"Name Cardinality and Range Description Inheritance alias 0..1 xsd:string name of the class to be aliased direct class_named 0..1 xsd:string local alias for the class direct","title":"Slots"},{"location":"AliasedClass/#usages","text":"used by used in type used ClassDerivation joins range AliasedClass","title":"Usages"},{"location":"AliasedClass/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"AliasedClass/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"AliasedClass/#mappings","text":"Mapping Type Mapped Value self linkmltr:AliasedClass native linkmltr:AliasedClass","title":"Mappings"},{"location":"AliasedClass/#linkml-source","text":"","title":"LinkML Source"},{"location":"AliasedClass/#direct","text":"name: AliasedClass description: alias-class key value pairs for classes from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: alias: name: alias description: name of the class to be aliased from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true class_named: name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer rank: 1000","title":"Direct"},{"location":"AliasedClass/#induced","text":"name: AliasedClass description: alias-class key value pairs for classes from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: alias: name: alias description: name of the class to be aliased from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: alias owner: AliasedClass domain_of: - AliasedClass class_named: name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: class_named owner: AliasedClass domain_of: - AliasedClass","title":"Induced"},{"location":"Any/","text":"Class: Any URI: linkml:Any classDiagram class Any Slots Name Cardinality and Range Description Inheritance Usages used by used in type used KeyVal value range Any CopyDirective exclude range Any CopyDirective include range Any CopyDirective add range Any Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkml:Any native linkmltr:Any LinkML Source Direct name: Any from_schema: https://w3id.org/linkml/transformer rank: 1000 class_uri: linkml:Any Induced name: Any from_schema: https://w3id.org/linkml/transformer rank: 1000 class_uri: linkml:Any","title":"Class: Any"},{"location":"Any/#class-any","text":"URI: linkml:Any classDiagram class Any","title":"Class: Any"},{"location":"Any/#slots","text":"Name Cardinality and Range Description Inheritance","title":"Slots"},{"location":"Any/#usages","text":"used by used in type used KeyVal value range Any CopyDirective exclude range Any CopyDirective include range Any CopyDirective add range Any","title":"Usages"},{"location":"Any/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Any/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"Any/#mappings","text":"Mapping Type Mapped Value self linkml:Any native linkmltr:Any","title":"Mappings"},{"location":"Any/#linkml-source","text":"","title":"LinkML Source"},{"location":"Any/#direct","text":"name: Any from_schema: https://w3id.org/linkml/transformer rank: 1000 class_uri: linkml:Any","title":"Direct"},{"location":"Any/#induced","text":"name: Any from_schema: https://w3id.org/linkml/transformer rank: 1000 class_uri: linkml:Any","title":"Induced"},{"location":"Boolean/","text":"Type: Boolean A binary (true or false) value URI: xsd:boolean base : Bool uri : xsd:boolean repr : bool Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Boolean"},{"location":"Boolean/#type-boolean","text":"A binary (true or false) value URI: xsd:boolean base : Bool uri : xsd:boolean repr : bool","title":"Type: Boolean"},{"location":"Boolean/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Boolean/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"ClassDerivation/","text":"Class: ClassDerivation A specification of how to derive a target class from a source class. URI: linkmltr:ClassDerivation classDiagram class ClassDerivation ElementDerivation <|-- ClassDerivation ClassDerivation : copy_directives ClassDerivation : is_a ClassDerivation : joins ClassDerivation : mixins ClassDerivation : name ClassDerivation : populated_from ClassDerivation : slot_derivations Inheritance ElementDerivation ClassDerivation Slots Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct populated_from 0..1 xsd:string direct joins 0..* AliasedClass Additional classes to be joined to derive instances of the target class direct slot_derivations 0..1 xsd:string direct copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation Usages used by used in type used TransformationSpecification class_derivations range ClassDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:ClassDerivation native linkmltr:ClassDerivation LinkML Source Direct name: ClassDerivation description: A specification of how to derive a target class from a source class. from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Name of the class in the target schema from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from description: Name of the class in the source schema from_schema: https://w3id.org/linkml/transformer rank: 1000 range: string joins: name: joins description: Additional classes to be joined to derive instances of the target class comments: - not yet implemented from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: AliasedClass inlined: true slot_derivations: name: slot_derivations from_schema: https://w3id.org/linkml/transformer multivalued: true range: SlotDerivation inlined: true Induced name: ClassDerivation description: A specification of how to derive a target class from a source class. from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Name of the class in the target schema from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: ClassDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation populated_from: name: populated_from description: Name of the class in the source schema from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: populated_from owner: ClassDerivation domain_of: - ClassDerivation - SlotDerivation - EnumDerivation range: string joins: name: joins description: Additional classes to be joined to derive instances of the target class comments: - not yet implemented from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: joins owner: ClassDerivation domain_of: - ClassDerivation range: AliasedClass inlined: true slot_derivations: name: slot_derivations from_schema: https://w3id.org/linkml/transformer multivalued: true alias: slot_derivations owner: ClassDerivation domain_of: - TransformationSpecification - ClassDerivation range: SlotDerivation inlined: true copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: ClassDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: ClassDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: ClassDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Class: ClassDerivation"},{"location":"ClassDerivation/#class-classderivation","text":"A specification of how to derive a target class from a source class. URI: linkmltr:ClassDerivation classDiagram class ClassDerivation ElementDerivation <|-- ClassDerivation ClassDerivation : copy_directives ClassDerivation : is_a ClassDerivation : joins ClassDerivation : mixins ClassDerivation : name ClassDerivation : populated_from ClassDerivation : slot_derivations","title":"Class: ClassDerivation"},{"location":"ClassDerivation/#inheritance","text":"ElementDerivation ClassDerivation","title":"Inheritance"},{"location":"ClassDerivation/#slots","text":"Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct populated_from 0..1 xsd:string direct joins 0..* AliasedClass Additional classes to be joined to derive instances of the target class direct slot_derivations 0..1 xsd:string direct copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation","title":"Slots"},{"location":"ClassDerivation/#usages","text":"used by used in type used TransformationSpecification class_derivations range ClassDerivation","title":"Usages"},{"location":"ClassDerivation/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"ClassDerivation/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"ClassDerivation/#mappings","text":"Mapping Type Mapped Value self linkmltr:ClassDerivation native linkmltr:ClassDerivation","title":"Mappings"},{"location":"ClassDerivation/#linkml-source","text":"","title":"LinkML Source"},{"location":"ClassDerivation/#direct","text":"name: ClassDerivation description: A specification of how to derive a target class from a source class. from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Name of the class in the target schema from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from description: Name of the class in the source schema from_schema: https://w3id.org/linkml/transformer rank: 1000 range: string joins: name: joins description: Additional classes to be joined to derive instances of the target class comments: - not yet implemented from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: AliasedClass inlined: true slot_derivations: name: slot_derivations from_schema: https://w3id.org/linkml/transformer multivalued: true range: SlotDerivation inlined: true","title":"Direct"},{"location":"ClassDerivation/#induced","text":"name: ClassDerivation description: A specification of how to derive a target class from a source class. from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Name of the class in the target schema from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: ClassDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation populated_from: name: populated_from description: Name of the class in the source schema from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: populated_from owner: ClassDerivation domain_of: - ClassDerivation - SlotDerivation - EnumDerivation range: string joins: name: joins description: Additional classes to be joined to derive instances of the target class comments: - not yet implemented from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: joins owner: ClassDerivation domain_of: - ClassDerivation range: AliasedClass inlined: true slot_derivations: name: slot_derivations from_schema: https://w3id.org/linkml/transformer multivalued: true alias: slot_derivations owner: ClassDerivation domain_of: - TransformationSpecification - ClassDerivation range: SlotDerivation inlined: true copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: ClassDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: ClassDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: ClassDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Induced"},{"location":"CopyDirective/","text":"Class: CopyDirective URI: linkmltr:CopyDirective classDiagram class CopyDirective CopyDirective : add CopyDirective : copy_all CopyDirective : element_name CopyDirective : exclude CopyDirective : exclude_all CopyDirective : include Slots Name Cardinality and Range Description Inheritance element_name 0..1 xsd:string direct copy_all 0..1 xsd:boolean direct exclude_all 0..1 xsd:boolean direct exclude 0..1 Any direct include 0..1 Any direct add 0..1 Any direct Usages used by used in type used ElementDerivation copy_directives range CopyDirective ClassDerivation copy_directives range CopyDirective SlotDerivation copy_directives range CopyDirective EnumDerivation copy_directives range CopyDirective PermissibleValueDerivation copy_directives range CopyDirective PrefixDerivation copy_directives range CopyDirective Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:CopyDirective native linkmltr:CopyDirective LinkML Source Direct name: CopyDirective from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: element_name: name: element_name from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true copy_all: name: copy_all from_schema: https://w3id.org/linkml/transformer rank: 1000 range: boolean exclude_all: name: exclude_all from_schema: https://w3id.org/linkml/transformer rank: 1000 range: boolean exclude: name: exclude from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Any include: name: include from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Any add: name: add from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Any Induced name: CopyDirective from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: element_name: name: element_name from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: element_name owner: CopyDirective domain_of: - CopyDirective copy_all: name: copy_all from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: copy_all owner: CopyDirective domain_of: - CopyDirective range: boolean exclude_all: name: exclude_all from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: exclude_all owner: CopyDirective domain_of: - CopyDirective range: boolean exclude: name: exclude from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: exclude owner: CopyDirective domain_of: - CopyDirective range: Any include: name: include from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: include owner: CopyDirective domain_of: - CopyDirective range: Any add: name: add from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: add owner: CopyDirective domain_of: - CopyDirective range: Any","title":"Class: CopyDirective"},{"location":"CopyDirective/#class-copydirective","text":"URI: linkmltr:CopyDirective classDiagram class CopyDirective CopyDirective : add CopyDirective : copy_all CopyDirective : element_name CopyDirective : exclude CopyDirective : exclude_all CopyDirective : include","title":"Class: CopyDirective"},{"location":"CopyDirective/#slots","text":"Name Cardinality and Range Description Inheritance element_name 0..1 xsd:string direct copy_all 0..1 xsd:boolean direct exclude_all 0..1 xsd:boolean direct exclude 0..1 Any direct include 0..1 Any direct add 0..1 Any direct","title":"Slots"},{"location":"CopyDirective/#usages","text":"used by used in type used ElementDerivation copy_directives range CopyDirective ClassDerivation copy_directives range CopyDirective SlotDerivation copy_directives range CopyDirective EnumDerivation copy_directives range CopyDirective PermissibleValueDerivation copy_directives range CopyDirective PrefixDerivation copy_directives range CopyDirective","title":"Usages"},{"location":"CopyDirective/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"CopyDirective/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"CopyDirective/#mappings","text":"Mapping Type Mapped Value self linkmltr:CopyDirective native linkmltr:CopyDirective","title":"Mappings"},{"location":"CopyDirective/#linkml-source","text":"","title":"LinkML Source"},{"location":"CopyDirective/#direct","text":"name: CopyDirective from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: element_name: name: element_name from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true copy_all: name: copy_all from_schema: https://w3id.org/linkml/transformer rank: 1000 range: boolean exclude_all: name: exclude_all from_schema: https://w3id.org/linkml/transformer rank: 1000 range: boolean exclude: name: exclude from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Any include: name: include from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Any add: name: add from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Any","title":"Direct"},{"location":"CopyDirective/#induced","text":"name: CopyDirective from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: element_name: name: element_name from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: element_name owner: CopyDirective domain_of: - CopyDirective copy_all: name: copy_all from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: copy_all owner: CopyDirective domain_of: - CopyDirective range: boolean exclude_all: name: exclude_all from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: exclude_all owner: CopyDirective domain_of: - CopyDirective range: boolean exclude: name: exclude from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: exclude owner: CopyDirective domain_of: - CopyDirective range: Any include: name: include from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: include owner: CopyDirective domain_of: - CopyDirective range: Any add: name: add from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: add owner: CopyDirective domain_of: - CopyDirective range: Any","title":"Induced"},{"location":"Curie/","text":"Type: Curie a compact URI URI: xsd:string base : Curie uri : xsd:string repr : str Comments in RDF serializations this MUST be expanded to a URI in non-RDF serializations MAY be serialized as the compact representation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Curie"},{"location":"Curie/#type-curie","text":"a compact URI URI: xsd:string base : Curie uri : xsd:string repr : str","title":"Type: Curie"},{"location":"Curie/#comments","text":"in RDF serializations this MUST be expanded to a URI in non-RDF serializations MAY be serialized as the compact representation","title":"Comments"},{"location":"Curie/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Curie/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Date/","text":"Type: Date a date (year, month and day) in an idealized calendar URI: xsd:date base : XSDDate uri : xsd:date repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Date"},{"location":"Date/#type-date","text":"a date (year, month and day) in an idealized calendar URI: xsd:date base : XSDDate uri : xsd:date repr : str","title":"Type: Date"},{"location":"Date/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Date/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"DateOrDatetime/","text":"Type: DateOrDatetime Either a date or a datetime URI: linkml:DateOrDatetime base : str uri : linkml:DateOrDatetime repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: DateOrDatetime"},{"location":"DateOrDatetime/#type-dateordatetime","text":"Either a date or a datetime URI: linkml:DateOrDatetime base : str uri : linkml:DateOrDatetime repr : str","title":"Type: DateOrDatetime"},{"location":"DateOrDatetime/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"DateOrDatetime/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Datetime/","text":"Type: Datetime The combination of a date and time URI: xsd:dateTime base : XSDDateTime uri : xsd:dateTime repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Datetime"},{"location":"Datetime/#type-datetime","text":"The combination of a date and time URI: xsd:dateTime base : XSDDateTime uri : xsd:dateTime repr : str","title":"Type: Datetime"},{"location":"Datetime/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Datetime/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Decimal/","text":"Type: Decimal A real number with arbitrary precision that conforms to the xsd:decimal specification URI: xsd:decimal base : Decimal uri : xsd:decimal Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Decimal"},{"location":"Decimal/#type-decimal","text":"A real number with arbitrary precision that conforms to the xsd:decimal specification URI: xsd:decimal base : Decimal uri : xsd:decimal","title":"Type: Decimal"},{"location":"Decimal/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Decimal/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Double/","text":"Type: Double A real number that conforms to the xsd:double specification URI: xsd:double base : float uri : xsd:double Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Double"},{"location":"Double/#type-double","text":"A real number that conforms to the xsd:double specification URI: xsd:double base : float uri : xsd:double","title":"Type: Double"},{"location":"Double/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Double/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"ElementDerivation/","text":"Class: ElementDerivation A specification of how to derive a target element from a source element. NOTE : this is an abstract class and should not be instantiated directly URI: linkmltr:ElementDerivation classDiagram class ElementDerivation ElementDerivation <|-- ClassDerivation ElementDerivation <|-- SlotDerivation ElementDerivation <|-- EnumDerivation ElementDerivation <|-- PermissibleValueDerivation ElementDerivation <|-- PrefixDerivation ElementDerivation : copy_directives ElementDerivation : is_a ElementDerivation : mixins ElementDerivation : name Inheritance ElementDerivation ClassDerivation SlotDerivation EnumDerivation PermissibleValueDerivation PrefixDerivation Slots Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct copy_directives 0..* CopyDirective direct is_a 0..1 ElementDerivation direct mixins 0..* ElementDerivation direct Usages used by used in type used ElementDerivation is_a range ElementDerivation ElementDerivation mixins range ElementDerivation ClassDerivation is_a range ElementDerivation ClassDerivation mixins range ElementDerivation SlotDerivation is_a range ElementDerivation SlotDerivation mixins range ElementDerivation EnumDerivation is_a range ElementDerivation EnumDerivation mixins range ElementDerivation PermissibleValueDerivation is_a range ElementDerivation PermissibleValueDerivation mixins range ElementDerivation PrefixDerivation is_a range ElementDerivation PrefixDerivation mixins range ElementDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:ElementDerivation native linkmltr:ElementDerivation LinkML Source Direct name: ElementDerivation description: A specification of how to derive a target element from a source element. from_schema: https://w3id.org/linkml/transformer rank: 1000 abstract: true attributes: name: name: name description: Name of the element in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: ElementDerivation inlined: true Induced name: ElementDerivation description: A specification of how to derive a target element from a source element. from_schema: https://w3id.org/linkml/transformer rank: 1000 abstract: true attributes: name: name: name description: Name of the element in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: name owner: ElementDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: ElementDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: ElementDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: ElementDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Class: ElementDerivation"},{"location":"ElementDerivation/#class-elementderivation","text":"A specification of how to derive a target element from a source element. NOTE : this is an abstract class and should not be instantiated directly URI: linkmltr:ElementDerivation classDiagram class ElementDerivation ElementDerivation <|-- ClassDerivation ElementDerivation <|-- SlotDerivation ElementDerivation <|-- EnumDerivation ElementDerivation <|-- PermissibleValueDerivation ElementDerivation <|-- PrefixDerivation ElementDerivation : copy_directives ElementDerivation : is_a ElementDerivation : mixins ElementDerivation : name","title":"Class: ElementDerivation"},{"location":"ElementDerivation/#inheritance","text":"ElementDerivation ClassDerivation SlotDerivation EnumDerivation PermissibleValueDerivation PrefixDerivation","title":"Inheritance"},{"location":"ElementDerivation/#slots","text":"Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct copy_directives 0..* CopyDirective direct is_a 0..1 ElementDerivation direct mixins 0..* ElementDerivation direct","title":"Slots"},{"location":"ElementDerivation/#usages","text":"used by used in type used ElementDerivation is_a range ElementDerivation ElementDerivation mixins range ElementDerivation ClassDerivation is_a range ElementDerivation ClassDerivation mixins range ElementDerivation SlotDerivation is_a range ElementDerivation SlotDerivation mixins range ElementDerivation EnumDerivation is_a range ElementDerivation EnumDerivation mixins range ElementDerivation PermissibleValueDerivation is_a range ElementDerivation PermissibleValueDerivation mixins range ElementDerivation PrefixDerivation is_a range ElementDerivation PrefixDerivation mixins range ElementDerivation","title":"Usages"},{"location":"ElementDerivation/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"ElementDerivation/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"ElementDerivation/#mappings","text":"Mapping Type Mapped Value self linkmltr:ElementDerivation native linkmltr:ElementDerivation","title":"Mappings"},{"location":"ElementDerivation/#linkml-source","text":"","title":"LinkML Source"},{"location":"ElementDerivation/#direct","text":"name: ElementDerivation description: A specification of how to derive a target element from a source element. from_schema: https://w3id.org/linkml/transformer rank: 1000 abstract: true attributes: name: name: name description: Name of the element in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: ElementDerivation inlined: true","title":"Direct"},{"location":"ElementDerivation/#induced","text":"name: ElementDerivation description: A specification of how to derive a target element from a source element. from_schema: https://w3id.org/linkml/transformer rank: 1000 abstract: true attributes: name: name: name description: Name of the element in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: name owner: ElementDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: ElementDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: ElementDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: ElementDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Induced"},{"location":"EnumDerivation/","text":"Class: EnumDerivation A specification of how to derive the value of a target enum from a source enum URI: linkmltr:EnumDerivation classDiagram class EnumDerivation ElementDerivation <|-- EnumDerivation EnumDerivation : copy_directives EnumDerivation : expr EnumDerivation : hide EnumDerivation : is_a EnumDerivation : mixins EnumDerivation : name EnumDerivation : permissible_value_derivations EnumDerivation : populated_from Inheritance ElementDerivation EnumDerivation Slots Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct populated_from 0..1 xsd:string direct expr 0..1 xsd:string direct hide 0..1 xsd:string direct permissible_value_derivations 0..* PermissibleValueDerivation Instructions on how to derive a set of PVs in the target schema direct copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation Usages used by used in type used TransformationSpecification enum_derivations range EnumDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:EnumDerivation native linkmltr:EnumDerivation LinkML Source Direct name: EnumDerivation description: A specification of how to derive the value of a target enum from a source enum from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target enum name from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from description: Source enum name from_schema: https://w3id.org/linkml/transformer range: string expr: name: expr description: An expression to be evaluated on the source object to derive the target slot. Should be specified using the LinkML expression language. from_schema: https://w3id.org/linkml/transformer range: string hide: name: hide description: True if this is suppressed from_schema: https://w3id.org/linkml/transformer range: boolean permissible_value_derivations: name: permissible_value_derivations description: Instructions on how to derive a set of PVs in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: PermissibleValueDerivation inlined: true Induced name: EnumDerivation description: A specification of how to derive the value of a target enum from a source enum from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target enum name from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: EnumDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation populated_from: name: populated_from description: Source enum name from_schema: https://w3id.org/linkml/transformer alias: populated_from owner: EnumDerivation domain_of: - ClassDerivation - SlotDerivation - EnumDerivation range: string expr: name: expr description: An expression to be evaluated on the source object to derive the target slot. Should be specified using the LinkML expression language. from_schema: https://w3id.org/linkml/transformer alias: expr owner: EnumDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string hide: name: hide description: True if this is suppressed from_schema: https://w3id.org/linkml/transformer alias: hide owner: EnumDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: boolean permissible_value_derivations: name: permissible_value_derivations description: Instructions on how to derive a set of PVs in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: permissible_value_derivations owner: EnumDerivation domain_of: - EnumDerivation range: PermissibleValueDerivation inlined: true copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: EnumDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: EnumDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: EnumDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Class: EnumDerivation"},{"location":"EnumDerivation/#class-enumderivation","text":"A specification of how to derive the value of a target enum from a source enum URI: linkmltr:EnumDerivation classDiagram class EnumDerivation ElementDerivation <|-- EnumDerivation EnumDerivation : copy_directives EnumDerivation : expr EnumDerivation : hide EnumDerivation : is_a EnumDerivation : mixins EnumDerivation : name EnumDerivation : permissible_value_derivations EnumDerivation : populated_from","title":"Class: EnumDerivation"},{"location":"EnumDerivation/#inheritance","text":"ElementDerivation EnumDerivation","title":"Inheritance"},{"location":"EnumDerivation/#slots","text":"Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct populated_from 0..1 xsd:string direct expr 0..1 xsd:string direct hide 0..1 xsd:string direct permissible_value_derivations 0..* PermissibleValueDerivation Instructions on how to derive a set of PVs in the target schema direct copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation","title":"Slots"},{"location":"EnumDerivation/#usages","text":"used by used in type used TransformationSpecification enum_derivations range EnumDerivation","title":"Usages"},{"location":"EnumDerivation/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"EnumDerivation/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"EnumDerivation/#mappings","text":"Mapping Type Mapped Value self linkmltr:EnumDerivation native linkmltr:EnumDerivation","title":"Mappings"},{"location":"EnumDerivation/#linkml-source","text":"","title":"LinkML Source"},{"location":"EnumDerivation/#direct","text":"name: EnumDerivation description: A specification of how to derive the value of a target enum from a source enum from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target enum name from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from description: Source enum name from_schema: https://w3id.org/linkml/transformer range: string expr: name: expr description: An expression to be evaluated on the source object to derive the target slot. Should be specified using the LinkML expression language. from_schema: https://w3id.org/linkml/transformer range: string hide: name: hide description: True if this is suppressed from_schema: https://w3id.org/linkml/transformer range: boolean permissible_value_derivations: name: permissible_value_derivations description: Instructions on how to derive a set of PVs in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: PermissibleValueDerivation inlined: true","title":"Direct"},{"location":"EnumDerivation/#induced","text":"name: EnumDerivation description: A specification of how to derive the value of a target enum from a source enum from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target enum name from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: EnumDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation populated_from: name: populated_from description: Source enum name from_schema: https://w3id.org/linkml/transformer alias: populated_from owner: EnumDerivation domain_of: - ClassDerivation - SlotDerivation - EnumDerivation range: string expr: name: expr description: An expression to be evaluated on the source object to derive the target slot. Should be specified using the LinkML expression language. from_schema: https://w3id.org/linkml/transformer alias: expr owner: EnumDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string hide: name: hide description: True if this is suppressed from_schema: https://w3id.org/linkml/transformer alias: hide owner: EnumDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: boolean permissible_value_derivations: name: permissible_value_derivations description: Instructions on how to derive a set of PVs in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: permissible_value_derivations owner: EnumDerivation domain_of: - EnumDerivation range: PermissibleValueDerivation inlined: true copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: EnumDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: EnumDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: EnumDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Induced"},{"location":"Float/","text":"Type: Float A real number that conforms to the xsd:float specification URI: xsd:float base : float uri : xsd:float Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Float"},{"location":"Float/#type-float","text":"A real number that conforms to the xsd:float specification URI: xsd:float base : float uri : xsd:float","title":"Type: Float"},{"location":"Float/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Float/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Integer/","text":"Type: Integer An integer URI: xsd:integer base : int uri : xsd:integer Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Integer"},{"location":"Integer/#type-integer","text":"An integer URI: xsd:integer base : int uri : xsd:integer","title":"Type: Integer"},{"location":"Integer/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Integer/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Inverse/","text":"Class: Inverse Used for back references URI: linkmltr:Inverse classDiagram class Inverse Inverse : class_name Inverse : slot_name Slots Name Cardinality and Range Description Inheritance slot_name 0..1 xsd:string direct class_name 0..1 xsd:string direct Usages used by used in type used SlotDerivation inverse_of range Inverse Aliases backref back_references Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:Inverse native linkmltr:Inverse LinkML Source Direct name: Inverse description: Used for back references from_schema: https://w3id.org/linkml/transformer aliases: - backref - back_references rank: 1000 attributes: slot_name: name: slot_name from_schema: https://w3id.org/linkml/transformer rank: 1000 class_name: name: class_name from_schema: https://w3id.org/linkml/transformer rank: 1000 Induced name: Inverse description: Used for back references from_schema: https://w3id.org/linkml/transformer aliases: - backref - back_references rank: 1000 attributes: slot_name: name: slot_name from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: slot_name owner: Inverse domain_of: - Inverse class_name: name: class_name from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: class_name owner: Inverse domain_of: - Inverse","title":"Class: Inverse"},{"location":"Inverse/#class-inverse","text":"Used for back references URI: linkmltr:Inverse classDiagram class Inverse Inverse : class_name Inverse : slot_name","title":"Class: Inverse"},{"location":"Inverse/#slots","text":"Name Cardinality and Range Description Inheritance slot_name 0..1 xsd:string direct class_name 0..1 xsd:string direct","title":"Slots"},{"location":"Inverse/#usages","text":"used by used in type used SlotDerivation inverse_of range Inverse","title":"Usages"},{"location":"Inverse/#aliases","text":"backref back_references","title":"Aliases"},{"location":"Inverse/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Inverse/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"Inverse/#mappings","text":"Mapping Type Mapped Value self linkmltr:Inverse native linkmltr:Inverse","title":"Mappings"},{"location":"Inverse/#linkml-source","text":"","title":"LinkML Source"},{"location":"Inverse/#direct","text":"name: Inverse description: Used for back references from_schema: https://w3id.org/linkml/transformer aliases: - backref - back_references rank: 1000 attributes: slot_name: name: slot_name from_schema: https://w3id.org/linkml/transformer rank: 1000 class_name: name: class_name from_schema: https://w3id.org/linkml/transformer rank: 1000","title":"Direct"},{"location":"Inverse/#induced","text":"name: Inverse description: Used for back references from_schema: https://w3id.org/linkml/transformer aliases: - backref - back_references rank: 1000 attributes: slot_name: name: slot_name from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: slot_name owner: Inverse domain_of: - Inverse class_name: name: class_name from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: class_name owner: Inverse domain_of: - Inverse","title":"Induced"},{"location":"KeyVal/","text":"Class: KeyVal URI: linkmltr:KeyVal classDiagram class KeyVal KeyVal : key KeyVal : value Slots Name Cardinality and Range Description Inheritance key 0..1 xsd:string direct value 0..1 Any direct Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:KeyVal native linkmltr:KeyVal LinkML Source Direct name: KeyVal from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: key: name: key from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true value: name: value from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Any Induced name: KeyVal from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: key: name: key from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: key owner: KeyVal domain_of: - KeyVal value: name: value from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: value owner: KeyVal domain_of: - KeyVal range: Any","title":"Class: KeyVal"},{"location":"KeyVal/#class-keyval","text":"URI: linkmltr:KeyVal classDiagram class KeyVal KeyVal : key KeyVal : value","title":"Class: KeyVal"},{"location":"KeyVal/#slots","text":"Name Cardinality and Range Description Inheritance key 0..1 xsd:string direct value 0..1 Any direct","title":"Slots"},{"location":"KeyVal/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"KeyVal/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"KeyVal/#mappings","text":"Mapping Type Mapped Value self linkmltr:KeyVal native linkmltr:KeyVal","title":"Mappings"},{"location":"KeyVal/#linkml-source","text":"","title":"LinkML Source"},{"location":"KeyVal/#direct","text":"name: KeyVal from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: key: name: key from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true value: name: value from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Any","title":"Direct"},{"location":"KeyVal/#induced","text":"name: KeyVal from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: key: name: key from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: key owner: KeyVal domain_of: - KeyVal value: name: value from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: value owner: KeyVal domain_of: - KeyVal range: Any","title":"Induced"},{"location":"Ncname/","text":"Type: Ncname Prefix part of CURIE URI: xsd:string base : NCName uri : xsd:string repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Ncname"},{"location":"Ncname/#type-ncname","text":"Prefix part of CURIE URI: xsd:string base : NCName uri : xsd:string repr : str","title":"Type: Ncname"},{"location":"Ncname/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Ncname/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Nodeidentifier/","text":"Type: Nodeidentifier A URI, CURIE or BNODE that represents a node in a model. URI: shex:nonLiteral base : NodeIdentifier uri : shex:nonLiteral repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Nodeidentifier"},{"location":"Nodeidentifier/#type-nodeidentifier","text":"A URI, CURIE or BNODE that represents a node in a model. URI: shex:nonLiteral base : NodeIdentifier uri : shex:nonLiteral repr : str","title":"Type: Nodeidentifier"},{"location":"Nodeidentifier/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Nodeidentifier/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Objectidentifier/","text":"Type: Objectidentifier A URI or CURIE that represents an object in the model. URI: shex:iri base : ElementIdentifier uri : shex:iri repr : str Comments Used for inheritence and type checking Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Objectidentifier"},{"location":"Objectidentifier/#type-objectidentifier","text":"A URI or CURIE that represents an object in the model. URI: shex:iri base : ElementIdentifier uri : shex:iri repr : str","title":"Type: Objectidentifier"},{"location":"Objectidentifier/#comments","text":"Used for inheritence and type checking","title":"Comments"},{"location":"Objectidentifier/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Objectidentifier/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"PermissibleValueDerivation/","text":"Class: PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum URI: linkmltr:PermissibleValueDerivation classDiagram class PermissibleValueDerivation ElementDerivation <|-- PermissibleValueDerivation PermissibleValueDerivation : copy_directives PermissibleValueDerivation : expr PermissibleValueDerivation : hide PermissibleValueDerivation : is_a PermissibleValueDerivation : mixins PermissibleValueDerivation : name Inheritance ElementDerivation PermissibleValueDerivation Slots Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct expr 0..1 xsd:string direct hide 0..1 xsd:string direct copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation Usages used by used in type used EnumDerivation permissible_value_derivations range PermissibleValueDerivation TODOs this is currently under-specified. We will need boolean combinators to express if-then-else Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:PermissibleValueDerivation native linkmltr:PermissibleValueDerivation LinkML Source Direct name: PermissibleValueDerivation description: A specification of how to derive the value of a PV from a source enum todos: - this is currently under-specified. We will need boolean combinators to express if-then-else from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target permissible value text from_schema: https://w3id.org/linkml/transformer key: true expr: name: expr from_schema: https://w3id.org/linkml/transformer range: string hide: name: hide from_schema: https://w3id.org/linkml/transformer range: boolean Induced name: PermissibleValueDerivation description: A specification of how to derive the value of a PV from a source enum todos: - this is currently under-specified. We will need boolean combinators to express if-then-else from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target permissible value text from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: PermissibleValueDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation expr: name: expr from_schema: https://w3id.org/linkml/transformer alias: expr owner: PermissibleValueDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string hide: name: hide from_schema: https://w3id.org/linkml/transformer alias: hide owner: PermissibleValueDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: boolean copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: PermissibleValueDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: PermissibleValueDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: PermissibleValueDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Class: PermissibleValueDerivation"},{"location":"PermissibleValueDerivation/#class-permissiblevaluederivation","text":"A specification of how to derive the value of a PV from a source enum URI: linkmltr:PermissibleValueDerivation classDiagram class PermissibleValueDerivation ElementDerivation <|-- PermissibleValueDerivation PermissibleValueDerivation : copy_directives PermissibleValueDerivation : expr PermissibleValueDerivation : hide PermissibleValueDerivation : is_a PermissibleValueDerivation : mixins PermissibleValueDerivation : name","title":"Class: PermissibleValueDerivation"},{"location":"PermissibleValueDerivation/#inheritance","text":"ElementDerivation PermissibleValueDerivation","title":"Inheritance"},{"location":"PermissibleValueDerivation/#slots","text":"Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct expr 0..1 xsd:string direct hide 0..1 xsd:string direct copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation","title":"Slots"},{"location":"PermissibleValueDerivation/#usages","text":"used by used in type used EnumDerivation permissible_value_derivations range PermissibleValueDerivation","title":"Usages"},{"location":"PermissibleValueDerivation/#todos","text":"this is currently under-specified. We will need boolean combinators to express if-then-else","title":"TODOs"},{"location":"PermissibleValueDerivation/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"PermissibleValueDerivation/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"PermissibleValueDerivation/#mappings","text":"Mapping Type Mapped Value self linkmltr:PermissibleValueDerivation native linkmltr:PermissibleValueDerivation","title":"Mappings"},{"location":"PermissibleValueDerivation/#linkml-source","text":"","title":"LinkML Source"},{"location":"PermissibleValueDerivation/#direct","text":"name: PermissibleValueDerivation description: A specification of how to derive the value of a PV from a source enum todos: - this is currently under-specified. We will need boolean combinators to express if-then-else from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target permissible value text from_schema: https://w3id.org/linkml/transformer key: true expr: name: expr from_schema: https://w3id.org/linkml/transformer range: string hide: name: hide from_schema: https://w3id.org/linkml/transformer range: boolean","title":"Direct"},{"location":"PermissibleValueDerivation/#induced","text":"name: PermissibleValueDerivation description: A specification of how to derive the value of a PV from a source enum todos: - this is currently under-specified. We will need boolean combinators to express if-then-else from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target permissible value text from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: PermissibleValueDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation expr: name: expr from_schema: https://w3id.org/linkml/transformer alias: expr owner: PermissibleValueDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string hide: name: hide from_schema: https://w3id.org/linkml/transformer alias: hide owner: PermissibleValueDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: boolean copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: PermissibleValueDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: PermissibleValueDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: PermissibleValueDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Induced"},{"location":"PrefixDerivation/","text":"Class: PrefixDerivation URI: linkmltr:PrefixDerivation classDiagram class PrefixDerivation ElementDerivation <|-- PrefixDerivation PrefixDerivation : copy_directives PrefixDerivation : is_a PrefixDerivation : mixins PrefixDerivation : name Inheritance ElementDerivation PrefixDerivation Slots Name Cardinality and Range Description Inheritance name 0..1 xsd:string Name of the element in the target schema ElementDerivation copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:PrefixDerivation native linkmltr:PrefixDerivation LinkML Source Direct name: PrefixDerivation from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation Induced name: PrefixDerivation from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Name of the element in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: name owner: PrefixDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: PrefixDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: PrefixDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: PrefixDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Class: PrefixDerivation"},{"location":"PrefixDerivation/#class-prefixderivation","text":"URI: linkmltr:PrefixDerivation classDiagram class PrefixDerivation ElementDerivation <|-- PrefixDerivation PrefixDerivation : copy_directives PrefixDerivation : is_a PrefixDerivation : mixins PrefixDerivation : name","title":"Class: PrefixDerivation"},{"location":"PrefixDerivation/#inheritance","text":"ElementDerivation PrefixDerivation","title":"Inheritance"},{"location":"PrefixDerivation/#slots","text":"Name Cardinality and Range Description Inheritance name 0..1 xsd:string Name of the element in the target schema ElementDerivation copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation","title":"Slots"},{"location":"PrefixDerivation/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"PrefixDerivation/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"PrefixDerivation/#mappings","text":"Mapping Type Mapped Value self linkmltr:PrefixDerivation native linkmltr:PrefixDerivation","title":"Mappings"},{"location":"PrefixDerivation/#linkml-source","text":"","title":"LinkML Source"},{"location":"PrefixDerivation/#direct","text":"name: PrefixDerivation from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation","title":"Direct"},{"location":"PrefixDerivation/#induced","text":"name: PrefixDerivation from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Name of the element in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: name owner: PrefixDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: PrefixDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: PrefixDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: PrefixDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Induced"},{"location":"SlotDerivation/","text":"Class: SlotDerivation A specification of how to derive the value of a target slot from a source slot URI: linkmltr:SlotDerivation classDiagram class SlotDerivation ElementDerivation <|-- SlotDerivation SlotDerivation : copy_directives SlotDerivation : expr SlotDerivation : hide SlotDerivation : inverse_of SlotDerivation : is_a SlotDerivation : mixins SlotDerivation : name SlotDerivation : populated_from SlotDerivation : type_designator Inheritance ElementDerivation SlotDerivation Slots Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct populated_from 0..1 xsd:string direct expr 0..1 xsd:string direct inverse_of 0..1 Inverse Used to specify a class-slot tuple that is the inverse of the derived/target ... direct hide 0..1 xsd:string direct type_designator 0..1 xsd:boolean direct copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation Usages used by used in type used TransformationSpecification slot_derivations range SlotDerivation ClassDerivation slot_derivations range SlotDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:SlotDerivation native linkmltr:SlotDerivation LinkML Source Direct name: SlotDerivation description: A specification of how to derive the value of a target slot from a source slot from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target slot name from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from description: Source slot name from_schema: https://w3id.org/linkml/transformer range: string expr: name: expr description: An expression to be evaluated on the source object to derive the target slot. Should be specified using the LinkML expression language. from_schema: https://w3id.org/linkml/transformer rank: 1000 range: string inverse_of: name: inverse_of description: Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot. from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Inverse hide: name: hide description: True if this is suppressed from_schema: https://w3id.org/linkml/transformer rank: 1000 range: boolean type_designator: name: type_designator from_schema: https://w3id.org/linkml/transformer rank: 1000 range: boolean Induced name: SlotDerivation description: A specification of how to derive the value of a target slot from a source slot from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target slot name from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: SlotDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation populated_from: name: populated_from description: Source slot name from_schema: https://w3id.org/linkml/transformer alias: populated_from owner: SlotDerivation domain_of: - ClassDerivation - SlotDerivation - EnumDerivation range: string expr: name: expr description: An expression to be evaluated on the source object to derive the target slot. Should be specified using the LinkML expression language. from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: expr owner: SlotDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string inverse_of: name: inverse_of description: Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot. from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: inverse_of owner: SlotDerivation domain_of: - SlotDerivation range: Inverse hide: name: hide description: True if this is suppressed from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: hide owner: SlotDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: boolean type_designator: name: type_designator from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: type_designator owner: SlotDerivation domain_of: - SlotDerivation range: boolean copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: SlotDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: SlotDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: SlotDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Class: SlotDerivation"},{"location":"SlotDerivation/#class-slotderivation","text":"A specification of how to derive the value of a target slot from a source slot URI: linkmltr:SlotDerivation classDiagram class SlotDerivation ElementDerivation <|-- SlotDerivation SlotDerivation : copy_directives SlotDerivation : expr SlotDerivation : hide SlotDerivation : inverse_of SlotDerivation : is_a SlotDerivation : mixins SlotDerivation : name SlotDerivation : populated_from SlotDerivation : type_designator","title":"Class: SlotDerivation"},{"location":"SlotDerivation/#inheritance","text":"ElementDerivation SlotDerivation","title":"Inheritance"},{"location":"SlotDerivation/#slots","text":"Name Cardinality and Range Description Inheritance name 0..1 xsd:string direct populated_from 0..1 xsd:string direct expr 0..1 xsd:string direct inverse_of 0..1 Inverse Used to specify a class-slot tuple that is the inverse of the derived/target ... direct hide 0..1 xsd:string direct type_designator 0..1 xsd:boolean direct copy_directives 0..* CopyDirective ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation","title":"Slots"},{"location":"SlotDerivation/#usages","text":"used by used in type used TransformationSpecification slot_derivations range SlotDerivation ClassDerivation slot_derivations range SlotDerivation","title":"Usages"},{"location":"SlotDerivation/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"SlotDerivation/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"SlotDerivation/#mappings","text":"Mapping Type Mapped Value self linkmltr:SlotDerivation native linkmltr:SlotDerivation","title":"Mappings"},{"location":"SlotDerivation/#linkml-source","text":"","title":"LinkML Source"},{"location":"SlotDerivation/#direct","text":"name: SlotDerivation description: A specification of how to derive the value of a target slot from a source slot from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target slot name from_schema: https://w3id.org/linkml/transformer key: true populated_from: name: populated_from description: Source slot name from_schema: https://w3id.org/linkml/transformer range: string expr: name: expr description: An expression to be evaluated on the source object to derive the target slot. Should be specified using the LinkML expression language. from_schema: https://w3id.org/linkml/transformer rank: 1000 range: string inverse_of: name: inverse_of description: Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot. from_schema: https://w3id.org/linkml/transformer rank: 1000 range: Inverse hide: name: hide description: True if this is suppressed from_schema: https://w3id.org/linkml/transformer rank: 1000 range: boolean type_designator: name: type_designator from_schema: https://w3id.org/linkml/transformer rank: 1000 range: boolean","title":"Direct"},{"location":"SlotDerivation/#induced","text":"name: SlotDerivation description: A specification of how to derive the value of a target slot from a source slot from_schema: https://w3id.org/linkml/transformer rank: 1000 is_a: ElementDerivation attributes: name: name: name description: Target slot name from_schema: https://w3id.org/linkml/transformer key: true alias: name owner: SlotDerivation domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation populated_from: name: populated_from description: Source slot name from_schema: https://w3id.org/linkml/transformer alias: populated_from owner: SlotDerivation domain_of: - ClassDerivation - SlotDerivation - EnumDerivation range: string expr: name: expr description: An expression to be evaluated on the source object to derive the target slot. Should be specified using the LinkML expression language. from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: expr owner: SlotDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string inverse_of: name: inverse_of description: Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot. from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: inverse_of owner: SlotDerivation domain_of: - SlotDerivation range: Inverse hide: name: hide description: True if this is suppressed from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: hide owner: SlotDerivation domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: boolean type_designator: name: type_designator from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: type_designator owner: SlotDerivation domain_of: - SlotDerivation range: boolean copy_directives: name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: SlotDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true is_a: name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: SlotDerivation domain_of: - ElementDerivation range: ElementDerivation mixins: name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: SlotDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Induced"},{"location":"String/","text":"Type: String A character string URI: xsd:string base : str uri : xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: String"},{"location":"String/#type-string","text":"A character string URI: xsd:string base : str uri : xsd:string","title":"Type: String"},{"location":"String/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"String/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Time/","text":"Type: Time A time object represents a (local) time of day, independent of any particular day URI: xsd:dateTime base : XSDTime uri : xsd:dateTime repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Time"},{"location":"Time/#type-time","text":"A time object represents a (local) time of day, independent of any particular day URI: xsd:dateTime base : XSDTime uri : xsd:dateTime repr : str","title":"Type: Time"},{"location":"Time/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Time/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"TransformationSpecification/","text":"Class: TransformationSpecification A collection of mappings between source and target classes URI: linkmltr:TransformationSpecification classDiagram class TransformationSpecification TransformationSpecification : class_derivations TransformationSpecification : enum_derivations TransformationSpecification : id TransformationSpecification : prefixes TransformationSpecification : slot_derivations TransformationSpecification : source_schema TransformationSpecification : target_schema TransformationSpecification : title Slots Name Cardinality and Range Description Inheritance id 1..1 xsd:string Unique identifier for this transformation specification direct title 0..1 xsd:string human readable title for this transformation specification direct prefixes 0..1 xsd:string prefix map direct source_schema 0..1 xsd:string name of the schema that describes the source (input) objects direct target_schema 0..1 xsd:string name of the schema that describes the target (output) objects direct class_derivations 0..* ClassDerivation Instructions on how to derive a set of classes in the target schema from clas... direct enum_derivations 0..* EnumDerivation Instructions on how to derive a set of enums in the target schema direct slot_derivations 0..1 xsd:string direct Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer Mappings Mapping Type Mapped Value self linkmltr:TransformationSpecification native linkmltr:TransformationSpecification LinkML Source Direct name: TransformationSpecification description: A collection of mappings between source and target classes from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: id: name: id description: Unique identifier for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 identifier: true title: name: title description: human readable title for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 prefixes: name: prefixes description: prefix map from_schema: https://w3id.org/linkml/transformer rank: 1000 source_schema: name: source_schema description: name of the schema that describes the source (input) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 target_schema: name: target_schema description: name of the schema that describes the target (output) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 class_derivations: name: class_derivations description: Instructions on how to derive a set of classes in the target schema from classes in the source schema. from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: ClassDerivation inlined: true enum_derivations: name: enum_derivations description: Instructions on how to derive a set of enums in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: EnumDerivation inlined: true slot_derivations: name: slot_derivations description: Instructions on how to derive a set of top level slots in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: SlotDerivation inlined: true tree_root: true Induced name: TransformationSpecification description: A collection of mappings between source and target classes from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: id: name: id description: Unique identifier for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 identifier: true alias: id owner: TransformationSpecification domain_of: - TransformationSpecification title: name: title description: human readable title for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: title owner: TransformationSpecification domain_of: - TransformationSpecification prefixes: name: prefixes description: prefix map from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: prefixes owner: TransformationSpecification domain_of: - TransformationSpecification source_schema: name: source_schema description: name of the schema that describes the source (input) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: source_schema owner: TransformationSpecification domain_of: - TransformationSpecification target_schema: name: target_schema description: name of the schema that describes the target (output) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: target_schema owner: TransformationSpecification domain_of: - TransformationSpecification class_derivations: name: class_derivations description: Instructions on how to derive a set of classes in the target schema from classes in the source schema. from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: class_derivations owner: TransformationSpecification domain_of: - TransformationSpecification range: ClassDerivation inlined: true enum_derivations: name: enum_derivations description: Instructions on how to derive a set of enums in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: enum_derivations owner: TransformationSpecification domain_of: - TransformationSpecification range: EnumDerivation inlined: true slot_derivations: name: slot_derivations description: Instructions on how to derive a set of top level slots in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: slot_derivations owner: TransformationSpecification domain_of: - TransformationSpecification - ClassDerivation range: SlotDerivation inlined: true tree_root: true","title":"Class: TransformationSpecification"},{"location":"TransformationSpecification/#class-transformationspecification","text":"A collection of mappings between source and target classes URI: linkmltr:TransformationSpecification classDiagram class TransformationSpecification TransformationSpecification : class_derivations TransformationSpecification : enum_derivations TransformationSpecification : id TransformationSpecification : prefixes TransformationSpecification : slot_derivations TransformationSpecification : source_schema TransformationSpecification : target_schema TransformationSpecification : title","title":"Class: TransformationSpecification"},{"location":"TransformationSpecification/#slots","text":"Name Cardinality and Range Description Inheritance id 1..1 xsd:string Unique identifier for this transformation specification direct title 0..1 xsd:string human readable title for this transformation specification direct prefixes 0..1 xsd:string prefix map direct source_schema 0..1 xsd:string name of the schema that describes the source (input) objects direct target_schema 0..1 xsd:string name of the schema that describes the target (output) objects direct class_derivations 0..* ClassDerivation Instructions on how to derive a set of classes in the target schema from clas... direct enum_derivations 0..* EnumDerivation Instructions on how to derive a set of enums in the target schema direct slot_derivations 0..1 xsd:string direct","title":"Slots"},{"location":"TransformationSpecification/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"TransformationSpecification/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"TransformationSpecification/#mappings","text":"Mapping Type Mapped Value self linkmltr:TransformationSpecification native linkmltr:TransformationSpecification","title":"Mappings"},{"location":"TransformationSpecification/#linkml-source","text":"","title":"LinkML Source"},{"location":"TransformationSpecification/#direct","text":"name: TransformationSpecification description: A collection of mappings between source and target classes from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: id: name: id description: Unique identifier for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 identifier: true title: name: title description: human readable title for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 prefixes: name: prefixes description: prefix map from_schema: https://w3id.org/linkml/transformer rank: 1000 source_schema: name: source_schema description: name of the schema that describes the source (input) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 target_schema: name: target_schema description: name of the schema that describes the target (output) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 class_derivations: name: class_derivations description: Instructions on how to derive a set of classes in the target schema from classes in the source schema. from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: ClassDerivation inlined: true enum_derivations: name: enum_derivations description: Instructions on how to derive a set of enums in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: EnumDerivation inlined: true slot_derivations: name: slot_derivations description: Instructions on how to derive a set of top level slots in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true range: SlotDerivation inlined: true tree_root: true","title":"Direct"},{"location":"TransformationSpecification/#induced","text":"name: TransformationSpecification description: A collection of mappings between source and target classes from_schema: https://w3id.org/linkml/transformer rank: 1000 attributes: id: name: id description: Unique identifier for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 identifier: true alias: id owner: TransformationSpecification domain_of: - TransformationSpecification title: name: title description: human readable title for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: title owner: TransformationSpecification domain_of: - TransformationSpecification prefixes: name: prefixes description: prefix map from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: prefixes owner: TransformationSpecification domain_of: - TransformationSpecification source_schema: name: source_schema description: name of the schema that describes the source (input) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: source_schema owner: TransformationSpecification domain_of: - TransformationSpecification target_schema: name: target_schema description: name of the schema that describes the target (output) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: target_schema owner: TransformationSpecification domain_of: - TransformationSpecification class_derivations: name: class_derivations description: Instructions on how to derive a set of classes in the target schema from classes in the source schema. from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: class_derivations owner: TransformationSpecification domain_of: - TransformationSpecification range: ClassDerivation inlined: true enum_derivations: name: enum_derivations description: Instructions on how to derive a set of enums in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: enum_derivations owner: TransformationSpecification domain_of: - TransformationSpecification range: EnumDerivation inlined: true slot_derivations: name: slot_derivations description: Instructions on how to derive a set of top level slots in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: slot_derivations owner: TransformationSpecification domain_of: - TransformationSpecification - ClassDerivation range: SlotDerivation inlined: true tree_root: true","title":"Induced"},{"location":"Uri/","text":"Type: Uri a complete URI URI: xsd:anyURI base : URI uri : xsd:anyURI repr : str Comments in RDF serializations a slot with range of uri is treated as a literal or type xsd:anyURI unless it is an identifier or a reference to an identifier, in which case it is translated directly to a node Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Uri"},{"location":"Uri/#type-uri","text":"a complete URI URI: xsd:anyURI base : URI uri : xsd:anyURI repr : str","title":"Type: Uri"},{"location":"Uri/#comments","text":"in RDF serializations a slot with range of uri is treated as a literal or type xsd:anyURI unless it is an identifier or a reference to an identifier, in which case it is translated directly to a node","title":"Comments"},{"location":"Uri/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Uri/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"Uriorcurie/","text":"Type: Uriorcurie a URI or a CURIE URI: xsd:anyURI base : URIorCURIE uri : xsd:anyURI repr : str Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/types","title":"Type: Uriorcurie"},{"location":"Uriorcurie/#type-uriorcurie","text":"a URI or a CURIE URI: xsd:anyURI base : URIorCURIE uri : xsd:anyURI repr : str","title":"Type: Uriorcurie"},{"location":"Uriorcurie/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"Uriorcurie/#schema-source","text":"from schema: https://w3id.org/linkml/types","title":"Schema Source"},{"location":"add/","text":"Slot: add URI: linkmltr:add Applicable Classes Name Description CopyDirective Properties Range: Any Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: add from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: add owner: CopyDirective domain_of: - CopyDirective range: Any","title":"Slot: add"},{"location":"add/#slot-add","text":"URI: linkmltr:add","title":"Slot: add"},{"location":"add/#applicable-classes","text":"Name Description CopyDirective","title":"Applicable Classes"},{"location":"add/#properties","text":"Range: Any","title":"Properties"},{"location":"add/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"add/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"add/#linkml-source","text":"name: add from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: add owner: CopyDirective domain_of: - CopyDirective range: Any","title":"LinkML Source"},{"location":"alias/","text":"Slot: alias name of the class to be aliased URI: linkmltr:alias Applicable Classes Name Description AliasedClass alias-class key value pairs for classes Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: alias description: name of the class to be aliased from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: alias owner: AliasedClass domain_of: - AliasedClass range: string","title":"Slot: alias"},{"location":"alias/#slot-alias","text":"name of the class to be aliased URI: linkmltr:alias","title":"Slot: alias"},{"location":"alias/#applicable-classes","text":"Name Description AliasedClass alias-class key value pairs for classes","title":"Applicable Classes"},{"location":"alias/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"alias/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"alias/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"alias/#linkml-source","text":"name: alias description: name of the class to be aliased from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: alias owner: AliasedClass domain_of: - AliasedClass range: string","title":"LinkML Source"},{"location":"class_derivations/","text":"Slot: class_derivations Instructions on how to derive a set of classes in the target schema from classes in the source schema. URI: linkmltr:class_derivations Applicable Classes Name Description TransformationSpecification A collection of mappings between source and target classes Properties Range: ClassDerivation Multivalued: True Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: class_derivations description: Instructions on how to derive a set of classes in the target schema from classes in the source schema. from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: class_derivations owner: TransformationSpecification domain_of: - TransformationSpecification range: ClassDerivation inlined: true","title":"Slot: class_derivations"},{"location":"class_derivations/#slot-class_derivations","text":"Instructions on how to derive a set of classes in the target schema from classes in the source schema. URI: linkmltr:class_derivations","title":"Slot: class_derivations"},{"location":"class_derivations/#applicable-classes","text":"Name Description TransformationSpecification A collection of mappings between source and target classes","title":"Applicable Classes"},{"location":"class_derivations/#properties","text":"Range: ClassDerivation Multivalued: True","title":"Properties"},{"location":"class_derivations/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"class_derivations/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"class_derivations/#linkml-source","text":"name: class_derivations description: Instructions on how to derive a set of classes in the target schema from classes in the source schema. from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: class_derivations owner: TransformationSpecification domain_of: - TransformationSpecification range: ClassDerivation inlined: true","title":"LinkML Source"},{"location":"class_name/","text":"Slot: class_name URI: linkmltr:class_name Applicable Classes Name Description Inverse Used for back references Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: class_name from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: class_name owner: Inverse domain_of: - Inverse range: string","title":"Slot: class_name"},{"location":"class_name/#slot-class_name","text":"URI: linkmltr:class_name","title":"Slot: class_name"},{"location":"class_name/#applicable-classes","text":"Name Description Inverse Used for back references","title":"Applicable Classes"},{"location":"class_name/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"class_name/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"class_name/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"class_name/#linkml-source","text":"name: class_name from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: class_name owner: Inverse domain_of: - Inverse range: string","title":"LinkML Source"},{"location":"class_named/","text":"Slot: class_named local alias for the class URI: linkmltr:class_named Applicable Classes Name Description AliasedClass alias-class key value pairs for classes Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: class_named owner: AliasedClass domain_of: - AliasedClass range: string","title":"Slot: class_named"},{"location":"class_named/#slot-class_named","text":"local alias for the class URI: linkmltr:class_named","title":"Slot: class_named"},{"location":"class_named/#applicable-classes","text":"Name Description AliasedClass alias-class key value pairs for classes","title":"Applicable Classes"},{"location":"class_named/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"class_named/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"class_named/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"class_named/#linkml-source","text":"name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: class_named owner: AliasedClass domain_of: - AliasedClass range: string","title":"LinkML Source"},{"location":"copy_all/","text":"Slot: copy_all URI: linkmltr:copy_all Applicable Classes Name Description CopyDirective Properties Range: xsd:boolean Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: copy_all from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: copy_all owner: CopyDirective domain_of: - CopyDirective range: boolean","title":"Slot: copy_all"},{"location":"copy_all/#slot-copy_all","text":"URI: linkmltr:copy_all","title":"Slot: copy_all"},{"location":"copy_all/#applicable-classes","text":"Name Description CopyDirective","title":"Applicable Classes"},{"location":"copy_all/#properties","text":"Range: xsd:boolean","title":"Properties"},{"location":"copy_all/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"copy_all/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"copy_all/#linkml-source","text":"name: copy_all from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: copy_all owner: CopyDirective domain_of: - CopyDirective range: boolean","title":"LinkML Source"},{"location":"copy_directives/","text":"Slot: copy_directives URI: linkmltr:copy_directives Applicable Classes Name Description ElementDerivation A specification of how to derive a target element from a source element ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation Properties Range: CopyDirective Multivalued: True Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: ElementDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true","title":"Slot: copy_directives"},{"location":"copy_directives/#slot-copy_directives","text":"URI: linkmltr:copy_directives","title":"Slot: copy_directives"},{"location":"copy_directives/#applicable-classes","text":"Name Description ElementDerivation A specification of how to derive a target element from a source element ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation","title":"Applicable Classes"},{"location":"copy_directives/#properties","text":"Range: CopyDirective Multivalued: True","title":"Properties"},{"location":"copy_directives/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"copy_directives/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"copy_directives/#linkml-source","text":"name: copy_directives from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: copy_directives owner: ElementDerivation domain_of: - ElementDerivation range: CopyDirective inlined: true","title":"LinkML Source"},{"location":"element_name/","text":"Slot: element_name URI: linkmltr:element_name Applicable Classes Name Description CopyDirective Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: element_name from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: element_name owner: CopyDirective domain_of: - CopyDirective range: string","title":"Slot: element_name"},{"location":"element_name/#slot-element_name","text":"URI: linkmltr:element_name","title":"Slot: element_name"},{"location":"element_name/#applicable-classes","text":"Name Description CopyDirective","title":"Applicable Classes"},{"location":"element_name/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"element_name/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"element_name/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"element_name/#linkml-source","text":"name: element_name from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: element_name owner: CopyDirective domain_of: - CopyDirective range: string","title":"LinkML Source"},{"location":"enum_derivations/","text":"Slot: enum_derivations Instructions on how to derive a set of enums in the target schema URI: linkmltr:enum_derivations Applicable Classes Name Description TransformationSpecification A collection of mappings between source and target classes Properties Range: EnumDerivation Multivalued: True Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: enum_derivations description: Instructions on how to derive a set of enums in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: enum_derivations owner: TransformationSpecification domain_of: - TransformationSpecification range: EnumDerivation inlined: true","title":"Slot: enum_derivations"},{"location":"enum_derivations/#slot-enum_derivations","text":"Instructions on how to derive a set of enums in the target schema URI: linkmltr:enum_derivations","title":"Slot: enum_derivations"},{"location":"enum_derivations/#applicable-classes","text":"Name Description TransformationSpecification A collection of mappings between source and target classes","title":"Applicable Classes"},{"location":"enum_derivations/#properties","text":"Range: EnumDerivation Multivalued: True","title":"Properties"},{"location":"enum_derivations/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"enum_derivations/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"enum_derivations/#linkml-source","text":"name: enum_derivations description: Instructions on how to derive a set of enums in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: enum_derivations owner: TransformationSpecification domain_of: - TransformationSpecification range: EnumDerivation inlined: true","title":"LinkML Source"},{"location":"exclude/","text":"Slot: exclude URI: linkmltr:exclude Applicable Classes Name Description CopyDirective Properties Range: Any Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: exclude from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: exclude owner: CopyDirective domain_of: - CopyDirective range: Any","title":"Slot: exclude"},{"location":"exclude/#slot-exclude","text":"URI: linkmltr:exclude","title":"Slot: exclude"},{"location":"exclude/#applicable-classes","text":"Name Description CopyDirective","title":"Applicable Classes"},{"location":"exclude/#properties","text":"Range: Any","title":"Properties"},{"location":"exclude/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"exclude/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"exclude/#linkml-source","text":"name: exclude from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: exclude owner: CopyDirective domain_of: - CopyDirective range: Any","title":"LinkML Source"},{"location":"exclude_all/","text":"Slot: exclude_all URI: linkmltr:exclude_all Applicable Classes Name Description CopyDirective Properties Range: xsd:boolean Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: exclude_all from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: exclude_all owner: CopyDirective domain_of: - CopyDirective range: boolean","title":"Slot: exclude_all"},{"location":"exclude_all/#slot-exclude_all","text":"URI: linkmltr:exclude_all","title":"Slot: exclude_all"},{"location":"exclude_all/#applicable-classes","text":"Name Description CopyDirective","title":"Applicable Classes"},{"location":"exclude_all/#properties","text":"Range: xsd:boolean","title":"Properties"},{"location":"exclude_all/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"exclude_all/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"exclude_all/#linkml-source","text":"name: exclude_all from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: exclude_all owner: CopyDirective domain_of: - CopyDirective range: boolean","title":"LinkML Source"},{"location":"expr/","text":"Slot: expr URI: linkmltr:expr Applicable Classes Name Description SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum Properties Range: xsd:string Identifier and Mapping Information LinkML Source name: expr alias: expr domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string","title":"Slot: expr"},{"location":"expr/#slot-expr","text":"URI: linkmltr:expr","title":"Slot: expr"},{"location":"expr/#applicable-classes","text":"Name Description SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum","title":"Applicable Classes"},{"location":"expr/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"expr/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"expr/#linkml-source","text":"name: expr alias: expr domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string","title":"LinkML Source"},{"location":"hide/","text":"Slot: hide URI: linkmltr:hide Applicable Classes Name Description SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum Properties Range: xsd:string Identifier and Mapping Information LinkML Source name: hide alias: hide domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string","title":"Slot: hide"},{"location":"hide/#slot-hide","text":"URI: linkmltr:hide","title":"Slot: hide"},{"location":"hide/#applicable-classes","text":"Name Description SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum","title":"Applicable Classes"},{"location":"hide/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"hide/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"hide/#linkml-source","text":"name: hide alias: hide domain_of: - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string","title":"LinkML Source"},{"location":"id/","text":"Slot: id Unique identifier for this transformation specification URI: linkmltr:id Applicable Classes Name Description TransformationSpecification A collection of mappings between source and target classes Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: id description: Unique identifier for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 identifier: true alias: id owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"Slot: id"},{"location":"id/#slot-id","text":"Unique identifier for this transformation specification URI: linkmltr:id","title":"Slot: id"},{"location":"id/#applicable-classes","text":"Name Description TransformationSpecification A collection of mappings between source and target classes","title":"Applicable Classes"},{"location":"id/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"id/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"id/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"id/#linkml-source","text":"name: id description: Unique identifier for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 identifier: true alias: id owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"LinkML Source"},{"location":"include/","text":"Slot: include URI: linkmltr:include Applicable Classes Name Description CopyDirective Properties Range: Any Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: include from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: include owner: CopyDirective domain_of: - CopyDirective range: Any","title":"Slot: include"},{"location":"include/#slot-include","text":"URI: linkmltr:include","title":"Slot: include"},{"location":"include/#applicable-classes","text":"Name Description CopyDirective","title":"Applicable Classes"},{"location":"include/#properties","text":"Range: Any","title":"Properties"},{"location":"include/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"include/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"include/#linkml-source","text":"name: include from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: include owner: CopyDirective domain_of: - CopyDirective range: Any","title":"LinkML Source"},{"location":"inverse_of/","text":"Slot: inverse_of Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot. URI: linkmltr:inverse_of Applicable Classes Name Description SlotDerivation A specification of how to derive the value of a target slot from a source slo... Properties Range: Inverse Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: inverse_of description: Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot. from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: inverse_of owner: SlotDerivation domain_of: - SlotDerivation range: Inverse","title":"Slot: inverse_of"},{"location":"inverse_of/#slot-inverse_of","text":"Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot. URI: linkmltr:inverse_of","title":"Slot: inverse_of"},{"location":"inverse_of/#applicable-classes","text":"Name Description SlotDerivation A specification of how to derive the value of a target slot from a source slo...","title":"Applicable Classes"},{"location":"inverse_of/#properties","text":"Range: Inverse","title":"Properties"},{"location":"inverse_of/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"inverse_of/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"inverse_of/#linkml-source","text":"name: inverse_of description: Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot. from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: inverse_of owner: SlotDerivation domain_of: - SlotDerivation range: Inverse","title":"LinkML Source"},{"location":"is_a/","text":"Slot: is_a URI: linkmltr:is_a Applicable Classes Name Description ElementDerivation A specification of how to derive a target element from a source element ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation Properties Range: ElementDerivation Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: ElementDerivation domain_of: - ElementDerivation range: ElementDerivation","title":"Slot: is_a"},{"location":"is_a/#slot-is_a","text":"URI: linkmltr:is_a","title":"Slot: is_a"},{"location":"is_a/#applicable-classes","text":"Name Description ElementDerivation A specification of how to derive a target element from a source element ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation","title":"Applicable Classes"},{"location":"is_a/#properties","text":"Range: ElementDerivation","title":"Properties"},{"location":"is_a/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"is_a/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"is_a/#linkml-source","text":"name: is_a from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: is_a owner: ElementDerivation domain_of: - ElementDerivation range: ElementDerivation","title":"LinkML Source"},{"location":"joins/","text":"Slot: joins Additional classes to be joined to derive instances of the target class URI: linkmltr:joins Applicable Classes Name Description ClassDerivation A specification of how to derive a target class from a source class Properties Range: AliasedClass Multivalued: True Comments not yet implemented Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: joins description: Additional classes to be joined to derive instances of the target class comments: - not yet implemented from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: joins owner: ClassDerivation domain_of: - ClassDerivation range: AliasedClass inlined: true","title":"Slot: joins"},{"location":"joins/#slot-joins","text":"Additional classes to be joined to derive instances of the target class URI: linkmltr:joins","title":"Slot: joins"},{"location":"joins/#applicable-classes","text":"Name Description ClassDerivation A specification of how to derive a target class from a source class","title":"Applicable Classes"},{"location":"joins/#properties","text":"Range: AliasedClass Multivalued: True","title":"Properties"},{"location":"joins/#comments","text":"not yet implemented","title":"Comments"},{"location":"joins/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"joins/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"joins/#linkml-source","text":"name: joins description: Additional classes to be joined to derive instances of the target class comments: - not yet implemented from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: joins owner: ClassDerivation domain_of: - ClassDerivation range: AliasedClass inlined: true","title":"LinkML Source"},{"location":"key/","text":"Slot: key URI: linkmltr:key Applicable Classes Name Description KeyVal Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: key from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: key owner: KeyVal domain_of: - KeyVal range: string","title":"Slot: key"},{"location":"key/#slot-key","text":"URI: linkmltr:key","title":"Slot: key"},{"location":"key/#applicable-classes","text":"Name Description KeyVal","title":"Applicable Classes"},{"location":"key/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"key/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"key/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"key/#linkml-source","text":"name: key from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true alias: key owner: KeyVal domain_of: - KeyVal range: string","title":"LinkML Source"},{"location":"mixins/","text":"Slot: mixins URI: linkmltr:mixins Applicable Classes Name Description ElementDerivation A specification of how to derive a target element from a source element ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation Properties Range: ElementDerivation Multivalued: True Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: ElementDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"Slot: mixins"},{"location":"mixins/#slot-mixins","text":"URI: linkmltr:mixins","title":"Slot: mixins"},{"location":"mixins/#applicable-classes","text":"Name Description ElementDerivation A specification of how to derive a target element from a source element ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation","title":"Applicable Classes"},{"location":"mixins/#properties","text":"Range: ElementDerivation Multivalued: True","title":"Properties"},{"location":"mixins/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"mixins/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"mixins/#linkml-source","text":"name: mixins from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: mixins owner: ElementDerivation domain_of: - ElementDerivation range: ElementDerivation inlined: true","title":"LinkML Source"},{"location":"name/","text":"Slot: name URI: linkmltr:name Applicable Classes Name Description ElementDerivation A specification of how to derive a target element from a source element ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation Properties Range: xsd:string Identifier and Mapping Information LinkML Source name: name alias: name domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string","title":"Slot: name"},{"location":"name/#slot-name","text":"URI: linkmltr:name","title":"Slot: name"},{"location":"name/#applicable-classes","text":"Name Description ElementDerivation A specification of how to derive a target element from a source element ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation","title":"Applicable Classes"},{"location":"name/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"name/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"name/#linkml-source","text":"name: name alias: name domain_of: - ElementDerivation - ClassDerivation - SlotDerivation - EnumDerivation - PermissibleValueDerivation range: string","title":"LinkML Source"},{"location":"overview/","text":"Mapping Between LinkML Schemas Draft 2022-06-24 Problem: map data from one schema to another Problem: Map d1 \u2192 d2 Assumption d1 and d2 conform to two separate schemas\\, s1\u2192 s2 Sub-problems: Ingest/Import: my data warehouse conforms to s2 (e.g. Monarch ingest) Export: make my data ingest friendly Migrations: s1 and s2 are different versions of the same schema Not in scope: in-schema syntactic or structural transforms JSON to YAML\\, JSON to TSV\\, JSON to SQL\\, JSON to RDF\\, ORM\\, \u2026 In LinkML this is already largely solved The actual problem space is highly varied S1 and S2 may be trivially isomorphic S1 and S2 may differ in complex or nuanced ways There are many existing approaches Generic frameworks\\, driven by declarative specification in Domain Specific Language (DSL) JSON-based Google whistle jsonpath-lift XSLT Semweb YARRML\\, R2RML Many many more\u2026 Bespoke transforms: non-declarative Implement in python/awk/etc. Hybrid: bespoke with some declarative mappings in ad-hoc format E.g. NMDC ingest framework Traps with declarative mapping Declarative is great\\, until it\u2019s not Anti-patterns: Insufficient expressivity to carry out real world tasks Bolting on features to mapping DSL until it\u2019s a fully-featured Turing-complete language Optimization/scalability at mercy of framework Messy layering between DSL and host language It can be useful to leverage host language features (e.g arbitrary python function) But this can get confusing: NFNF: Neither fish nor fowl Limits optimizations (forces iterative host language calls) YARRRML https://rml.io/yarrrml/ YARRRML notes Has a playground\\, which is great Mixes two concerns: 1. Isomorphic structural mapping between JSON/TSVs and RDF (already covered by JSON-LD) 2. Mapping This isn\u2019t necessarily bad - it\u2019s quite practical\\, but a little unsatisfying IMO jsonpath-lifter Was proposed for CCDH CRDC-node mappings Doesn\u2019t seem widely used Is there a big advantage over simply writing javascript functions? Koza (previously: bioweave) ETL frameworks There are many many ETL frameworks E.g. WebKarma Inherently mixing of concerns Here we are concerned with the \u201cT\u201d part Do existing frameworks separate out the T as a modular composable component? I\u2019m not sure Do we need Yet Another Mapping Framework? LinkML philosophy: Embrace\\, extend\\, parasitize Develop lightweight ways to map Map mappings to existing mapping frameworks This actually makes sense even if it sounds kind of meta\u2026 Level 0 Mapping: Isomorphic, same URIs classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address classes: Agent: class_uri: sdo:Person attributes: surname: slot_uri: sdo:familyName home_address: slot_uri: sdo:address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Level 0: handled by standard linkml convert to/from RDF classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address classes: Agent: class_uri: sdo:Person attributes: surname: slot_uri: sdo:familyName home_address: slot_uri: sdo:address data2 (yaml/json) d ata1 (yaml/json) family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville d ata1.ttl == data2.ttl [sdo:familyName \u201cWu\u201d ; sdo:address \u201c1 my street\\, Oakville\u201d ] Level 0: Enums TODO: add example here. Basically this works the same way Level 0: HOWTO Compose two commands: linkml-convert -s schema1.yaml data1.yaml -o data1.ttl linkml-convert -s schema2.yaml data1.ttl -o data2.yaml That\u2019s it! TODO: Write a wrapper (linkml-map-data?) that does this in one command Level 0: other considerations Going via RDF in theory eliminates inlining differences E.g. s1 inlines address objects\\, s2 uses references (inlined: false) and includes a separate index slot for addresses Current status: Currently when going from s1 to s2\\, no index slots are generated This could be done as part of the general rdflib framework Lessons learned so far: annotate your schema with URIs! Annotating schemas with URIs is optional with LinkML But your future self and data users will thank you for careful schema annotation! Hints: Schema-automator can provide suggestions for your element and enum URIs Sometimes plain semweb URIs (e.g. schema.org) can be easier for interoperation than overly granular OBO ones E.g modeling Personhood as a role vs straightforward schema:Person Level 1 Mapping: Isomorphic, different URIs name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Level 1 Mapping: mediated by URI mapping name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address subject_id object_id sdo:Person NCBITaxon:9606 sdo:familyName IAO:nnnn sdo:address IAO:0000422 family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] Level 1: HOWTO Compose three commands: linkml-convert -s schema1.yaml data1.yaml -o data1.ttl sssom-map-iris -i data1.ttl -m schema1-to-schema2.sssom.tsv -o data2.ttl linkml-convert -s schema2.yaml data2.ttl -o data2.yaml That\u2019s it! TODO: sssom-map-iris does not yet exist (?)\\, but should be trivial Fold into wrapper CLI tool Nuances: Schemas have nuanced differences: not everything with be skos:exact We can distinguish 3 flavors of level 1 mapping: Precise\\, bidirectional: follow exact only Valid\\, unidirectional: follow exact + broad Loose: any mapping Level 1 variant: mappings in schema name: example-semweb-schema classes: Person: class_uri: sdo:Person exact_mappings: [\u201cNCBITaxon:9606\u201d] attributes: family_name: slot_uri: sdo:familyName exact_mappings: [\u201cIAO:nnnn\u201d] address: slot_uri: sdo:address exact_mappings: [\u201cIAO:0000422\u201d] name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] Advantages of RDF as an intermediate Use of IRIs Separation of concerns Structural differences (e.g. inlining) are already handled by linkml convert Allows us to focus on semantic mappings Lessons learned so far: think about mappings https://linkml.io/linkml/faq/modeling.html#when-is-it-important-to-have-mappings https://github.com/alliance-genome/agr_curation_schema/blob/main/model/schema/agent.yaml More complex mappings: level 2 and above TODO: define levels 2 and above Examples of kinds of features: merging/splitting fields; e.g. full_name = first + \u201c \u201c + last Unit conversion or baked-in units to explicit units Normalization/denormalization (aka flattening) Complex logic If conditions A\\, B\\, C and not D are met then copy field F from X to Y LinkML Rule and Inference Framework Current use case is intra-schema inference Easy to invoke on command line Needs more docs! Could form basis of inter-schema DSL Examples Schemas differ in units Schemas differ in categorical vs quantitative Current use case is intra-schema inference Could form basis of inter-schema DSL Datalog Datalog could serve as the powerful basis of an expressive declarative transformation language https://linkml.io/linkml-datalog Approach for level 2+ Do we even want a generic mapping framework in LinkML here? This is a good \u201c parasitization hook\u201d Do complex stuff using an existing framework TBD: derive or semi-derive mapping specification? This is also a code bespoke procedural code hook Do the generic stuff with linkml-convert and isomorphic IRI mapping Do more complex stuff in code General approach for level 2+; same to same name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville JSON OR XML OR YAML OR RDF OR SQL JSON OR XML OR YAML OR RDF OR SQL (matches the one on the left) Existing mapping framework (X to X) Example of same-to-same: jsonpath-lifter name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Jsonpath-lifter (JSON to JSON) Example of same-to-same: awk Example of same-to-same: SQL INSERT INTO Agent AS SELECT Person.last_name AS Agent.surname\\, CONCAT(Person.full_name\\, \u201c \u201c\\, Person.first) AS Agent.full_name\\, \u2026 CONSTRUCT { [ a schema:Person ; my:fullName STRCAT(...) ] } WHERE { ?person a schema:Person ; schema:firstName ; schema:lastName ; \u2026 } SPARQL CONSTRUCT RDF Engine or Triplestore Example of same-to-same: Python (LinkML objects) def convert(p: Person) -> Agent: return Agent(p.id\\, full_name=f\u201d{..} {..}\u201d\\, \u2026 Conversion script General approach for level 2+; heteromorphic name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville L inkml-convert OPTIONAL L inkml-convert OPTIONAL JSON OR XML OR YAML OR RDF OR SQL JSON OR XML OR YAML OR RDF OR SQL ( different from the one on the left) Existing mapping framework (X to Y) Example: YARRRML name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville YARRRML (JSON/YAML to RDF) Example: YARRRML, native mappings name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville mapping.yarrrml.yml Example: YARRRML, compiled mappings name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address Mappings : \u2026 \\< TO BE DEFINED LINKML MAPPING SPEC > name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville mapping.yarrrml.yml Hyperparasitism is good name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address Mappings : \u2026 \\< TO BE DEFINED LINKML MAPPING SPEC > name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address mapping.yarrrml.yml family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Alternative: Direct translation language Desiderata Ability to compile to scalable frameworks E.g. compile to SQL Simple for simple tasks Layer on existing expression language Provides path to safe subset of host language (Python) Can be easily implemented in other languages Normalized to Denormalized (modeling SSSOM) SQL INSERT (or CREATE VIEW) SQL FROM Clause (implicit INNER JOIN/WHERE) SQL SELECT \u2026 AS clause Relationship to profiles TODO Profiles/IGs can be seen as a sub-case of schema mapping Current progress https://github.com/linkml/linkml/issues/533 map to YARRRML Vincent Vemonet has started on linkml->rml https://github.com/vemonet/linkml/blob/add-gen-rml/linkml/generators/rmlgen.py Relationship to Koza Koza ingests often require multiple files See Also Revisiting BioWeave (Kent Shefchek\\, 2020?) https://docs.google.com/presentation/d/1DYiWXoz3iHM2PvMFD0hRpJ544tnHawg00PBwNuESo44/edit#slide=id.gb33d7ddd1b_0_93 Automating mapping Should we pursue approaches to automate mapping? Some of the functionality is already in schema-automator. E.g. auto-annotating schema elements using ontologies Isomorphic schema mapping discovery analogous to ontology mapping Can a boomer type approach help? E.g. given multiple loose mappings with alternative interpretations\\, which ones give coherent results Other approaches Inductive Logic Programming: transformations as logic programs Genetic programming: transformations as lambda functions Deep Learning: e.g. Language Models for translation There is already a rich literature spanning decades here to be parasitized\u2026 Summary: just tell me what to do today For isomorphic mappings: Stay within LinkML/SSSOM No need for custom code\\, it all works For complex mappings: It depends! Do the structural mapping with linkml-convert Implement the complex logic as you see fit\\, depending on multiple factors. Any of the following may be valid Koza Awk SPARQL CONSTRUCTS or SELECTS Custom python YARRRML SQL INSERTs XSLT Jsonpath-lifter \u2026. Roadmap 2022: Continue to gather use cases\\, experiment 2023: If funding permits Extend metamodel to include complex mapping Implement EITHER Parasitizing converters Direct mapping framework TBD: Is this Koza2?","title":"Overview"},{"location":"overview/#mapping-between-linkml-schemas","text":"","title":"Mapping Between LinkML Schemas"},{"location":"overview/#draft","text":"2022-06-24","title":"Draft"},{"location":"overview/#problem-map-data-from-one-schema-to-another","text":"Problem: Map d1 \u2192 d2 Assumption d1 and d2 conform to two separate schemas\\, s1\u2192 s2 Sub-problems: Ingest/Import: my data warehouse conforms to s2 (e.g. Monarch ingest) Export: make my data ingest friendly Migrations: s1 and s2 are different versions of the same schema Not in scope: in-schema syntactic or structural transforms JSON to YAML\\, JSON to TSV\\, JSON to SQL\\, JSON to RDF\\, ORM\\, \u2026 In LinkML this is already largely solved The actual problem space is highly varied S1 and S2 may be trivially isomorphic S1 and S2 may differ in complex or nuanced ways","title":"Problem: map data from one schema to another"},{"location":"overview/#there-are-many-existing-approaches","text":"Generic frameworks\\, driven by declarative specification in Domain Specific Language (DSL) JSON-based Google whistle jsonpath-lift XSLT Semweb YARRML\\, R2RML Many many more\u2026 Bespoke transforms: non-declarative Implement in python/awk/etc. Hybrid: bespoke with some declarative mappings in ad-hoc format E.g. NMDC ingest framework","title":"There are many existing approaches"},{"location":"overview/#traps-with-declarative-mapping","text":"Declarative is great\\, until it\u2019s not Anti-patterns: Insufficient expressivity to carry out real world tasks Bolting on features to mapping DSL until it\u2019s a fully-featured Turing-complete language Optimization/scalability at mercy of framework Messy layering between DSL and host language It can be useful to leverage host language features (e.g arbitrary python function) But this can get confusing: NFNF: Neither fish nor fowl Limits optimizations (forces iterative host language calls)","title":"Traps with declarative mapping"},{"location":"overview/#yarrrml","text":"https://rml.io/yarrrml/","title":"YARRRML"},{"location":"overview/#yarrrml-notes","text":"Has a playground\\, which is great Mixes two concerns: 1. Isomorphic structural mapping between JSON/TSVs and RDF (already covered by JSON-LD) 2. Mapping This isn\u2019t necessarily bad - it\u2019s quite practical\\, but a little unsatisfying IMO","title":"YARRRML notes"},{"location":"overview/#jsonpath-lifter","text":"Was proposed for CCDH CRDC-node mappings Doesn\u2019t seem widely used Is there a big advantage over simply writing javascript functions?","title":"jsonpath-lifter"},{"location":"overview/#koza-previously-bioweave","text":"","title":"Koza (previously: bioweave)"},{"location":"overview/#etl-frameworks","text":"There are many many ETL frameworks E.g. WebKarma Inherently mixing of concerns Here we are concerned with the \u201cT\u201d part Do existing frameworks separate out the T as a modular composable component? I\u2019m not sure","title":"ETL frameworks"},{"location":"overview/#do-we-need-yet-another-mapping-framework","text":"LinkML philosophy: Embrace\\, extend\\, parasitize Develop lightweight ways to map Map mappings to existing mapping frameworks This actually makes sense even if it sounds kind of meta\u2026","title":"Do we need Yet Another Mapping Framework?"},{"location":"overview/#level-0-mapping-isomorphic-same-uris","text":"classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address classes: Agent: class_uri: sdo:Person attributes: surname: slot_uri: sdo:familyName home_address: slot_uri: sdo:address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville","title":"Level 0 Mapping: Isomorphic, same URIs"},{"location":"overview/#level-0-handled-by-standard-linkml-convert-tofrom-rdf","text":"classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address classes: Agent: class_uri: sdo:Person attributes: surname: slot_uri: sdo:familyName home_address: slot_uri: sdo:address data2 (yaml/json) d ata1 (yaml/json) family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville d ata1.ttl == data2.ttl [sdo:familyName \u201cWu\u201d ; sdo:address \u201c1 my street\\, Oakville\u201d ]","title":"Level 0: handled by standard linkml convert to/from RDF"},{"location":"overview/#level-0-enums-todo-add-example-here-basically-this-works-the-same-way","text":"","title":"Level 0: Enums TODO: add example here. Basically this works the same way"},{"location":"overview/#level-0-howto","text":"Compose two commands: linkml-convert -s schema1.yaml data1.yaml -o data1.ttl linkml-convert -s schema2.yaml data1.ttl -o data2.yaml That\u2019s it! TODO: Write a wrapper (linkml-map-data?) that does this in one command","title":"Level 0: HOWTO"},{"location":"overview/#level-0-other-considerations","text":"Going via RDF in theory eliminates inlining differences E.g. s1 inlines address objects\\, s2 uses references (inlined: false) and includes a separate index slot for addresses Current status: Currently when going from s1 to s2\\, no index slots are generated This could be done as part of the general rdflib framework","title":"Level 0: other considerations"},{"location":"overview/#lessons-learned-so-far-annotate-your-schema-with-uris","text":"Annotating schemas with URIs is optional with LinkML But your future self and data users will thank you for careful schema annotation! Hints: Schema-automator can provide suggestions for your element and enum URIs Sometimes plain semweb URIs (e.g. schema.org) can be easier for interoperation than overly granular OBO ones E.g modeling Personhood as a role vs straightforward schema:Person","title":"Lessons learned so far: annotate your schema with URIs!"},{"location":"overview/#level-1-mapping-isomorphic-different-uris","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville","title":"Level 1 Mapping: Isomorphic, different URIs"},{"location":"overview/#level-1-mapping-mediated-by-uri-mapping","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address subject_id object_id sdo:Person NCBITaxon:9606 sdo:familyName IAO:nnnn sdo:address IAO:0000422 family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ]","title":"Level 1 Mapping: mediated by URI mapping"},{"location":"overview/#level-1-howto","text":"Compose three commands: linkml-convert -s schema1.yaml data1.yaml -o data1.ttl sssom-map-iris -i data1.ttl -m schema1-to-schema2.sssom.tsv -o data2.ttl linkml-convert -s schema2.yaml data2.ttl -o data2.yaml That\u2019s it! TODO: sssom-map-iris does not yet exist (?)\\, but should be trivial Fold into wrapper CLI tool Nuances: Schemas have nuanced differences: not everything with be skos:exact We can distinguish 3 flavors of level 1 mapping: Precise\\, bidirectional: follow exact only Valid\\, unidirectional: follow exact + broad Loose: any mapping","title":"Level 1: HOWTO"},{"location":"overview/#level-1-variant-mappings-in-schema","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person exact_mappings: [\u201cNCBITaxon:9606\u201d] attributes: family_name: slot_uri: sdo:familyName exact_mappings: [\u201cIAO:nnnn\u201d] address: slot_uri: sdo:address exact_mappings: [\u201cIAO:0000422\u201d] name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ] [sdo:familyName \u201cWu\u201d sdo:address \u201c1 my street\\, Oakville\u201d ]","title":"Level 1 variant: mappings in schema"},{"location":"overview/#advantages-of-rdf-as-an-intermediate","text":"Use of IRIs Separation of concerns Structural differences (e.g. inlining) are already handled by linkml convert Allows us to focus on semantic mappings","title":"Advantages of RDF as an intermediate"},{"location":"overview/#lessons-learned-so-far-think-about-mappings","text":"https://linkml.io/linkml/faq/modeling.html#when-is-it-important-to-have-mappings%20https://github.com/alliance-genome/agr_curation_schema/blob/main/model/schema/agent.yaml","title":"Lessons learned so far: think about mappings"},{"location":"overview/#more-complex-mappings-level-2-and-above","text":"TODO: define levels 2 and above Examples of kinds of features: merging/splitting fields; e.g. full_name = first + \u201c \u201c + last Unit conversion or baked-in units to explicit units Normalization/denormalization (aka flattening) Complex logic If conditions A\\, B\\, C and not D are met then copy field F from X to Y","title":"More complex mappings: level 2 and above"},{"location":"overview/#linkml-rule-and-inference-framework","text":"Current use case is intra-schema inference Easy to invoke on command line Needs more docs! Could form basis of inter-schema DSL Examples Schemas differ in units Schemas differ in categorical vs quantitative Current use case is intra-schema inference Could form basis of inter-schema DSL","title":"LinkML Rule and Inference Framework"},{"location":"overview/#datalog","text":"Datalog could serve as the powerful basis of an expressive declarative transformation language https://linkml.io/linkml-datalog","title":"Datalog"},{"location":"overview/#approach-for-level-2","text":"Do we even want a generic mapping framework in LinkML here? This is a good \u201c parasitization hook\u201d Do complex stuff using an existing framework TBD: derive or semi-derive mapping specification? This is also a code bespoke procedural code hook Do the generic stuff with linkml-convert and isomorphic IRI mapping Do more complex stuff in code","title":"Approach for level 2+"},{"location":"overview/#general-approach-for-level-2-same-to-same","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville JSON OR XML OR YAML OR RDF OR SQL JSON OR XML OR YAML OR RDF OR SQL (matches the one on the left) Existing mapping framework (X to X)","title":"General approach for level 2+; same to same"},{"location":"overview/#example-of-same-to-same-jsonpath-lifter","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville Jsonpath-lifter (JSON to JSON)","title":"Example of same-to-same: jsonpath-lifter"},{"location":"overview/#example-of-same-to-same-awk","text":"","title":"Example of same-to-same: awk"},{"location":"overview/#example-of-same-to-same-sql","text":"INSERT INTO Agent AS SELECT Person.last_name AS Agent.surname\\, CONCAT(Person.full_name\\, \u201c \u201c\\, Person.first) AS Agent.full_name\\, \u2026 CONSTRUCT { [ a schema:Person ; my:fullName STRCAT(...) ] } WHERE { ?person a schema:Person ; schema:firstName ; schema:lastName ; \u2026 } SPARQL CONSTRUCT RDF Engine or Triplestore","title":"Example of same-to-same: SQL"},{"location":"overview/#example-of-same-to-same-python-linkml-objects","text":"def convert(p: Person) -> Agent: return Agent(p.id\\, full_name=f\u201d{..} {..}\u201d\\, \u2026 Conversion script","title":"Example of same-to-same: Python (LinkML objects)"},{"location":"overview/#general-approach-for-level-2-heteromorphic","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville L inkml-convert OPTIONAL L inkml-convert OPTIONAL JSON OR XML OR YAML OR RDF OR SQL JSON OR XML OR YAML OR RDF OR SQL ( different from the one on the left) Existing mapping framework (X to Y)","title":"General approach for level 2+; heteromorphic"},{"location":"overview/#example-yarrrml","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville YARRRML (JSON/YAML to RDF)","title":"Example: YARRRML"},{"location":"overview/#example-yarrrml-native-mappings","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville mapping.yarrrml.yml","title":"Example: YARRRML, native mappings"},{"location":"overview/#example-yarrrml-compiled-mappings","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address Mappings : \u2026 \\< TO BE DEFINED LINKML MAPPING SPEC > name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville mapping.yarrrml.yml","title":"Example: YARRRML, compiled mappings"},{"location":"overview/#hyperparasitism-is-good","text":"name: example-semweb-schema classes: Person: class_uri: sdo:Person attributes: family_name: slot_uri: sdo:familyName address: slot_uri: sdo:address Mappings : \u2026 \\< TO BE DEFINED LINKML MAPPING SPEC > name: example-OBO-schema classes: Person: class_uri: NCBITaxon:9606 ## Homo sapiens attributes: surname: slot_uri: IAO:0000590 ## written name home_address: slot_uri: IAO:0000422 ## postal address mapping.yarrrml.yml family_name: Wu address: 1 my street\\, Oakville surname: Wu home_address: 1 my street\\, Oakville","title":"Hyperparasitism is good"},{"location":"overview/#alternative-direct-translation-language","text":"Desiderata Ability to compile to scalable frameworks E.g. compile to SQL Simple for simple tasks Layer on existing expression language Provides path to safe subset of host language (Python) Can be easily implemented in other languages","title":"Alternative: Direct translation language"},{"location":"overview/#normalized-to-denormalized-modeling-sssom","text":"SQL INSERT (or CREATE VIEW) SQL FROM Clause (implicit INNER JOIN/WHERE) SQL SELECT \u2026 AS clause","title":"Normalized to Denormalized (modeling SSSOM)"},{"location":"overview/#relationship-to-profiles-todo","text":"Profiles/IGs can be seen as a sub-case of schema mapping","title":"Relationship to profiles TODO"},{"location":"overview/#current-progress","text":"https://github.com/linkml/linkml/issues/533%20map%20to%20YARRRML%20Vincent%20Vemonet%20has%20started%20on%20linkml-%3Erml%20https://github.com/vemonet/linkml/blob/add-gen-rml/linkml/generators/rmlgen.py","title":"Current progress"},{"location":"overview/#relationship-to-koza","text":"","title":"Relationship to Koza"},{"location":"overview/#koza-ingests-often-require-multiple-files","text":"","title":"Koza ingests often require multiple files"},{"location":"overview/#see-also","text":"Revisiting BioWeave (Kent Shefchek\\, 2020?) https://docs.google.com/presentation/d/1DYiWXoz3iHM2PvMFD0hRpJ544tnHawg00PBwNuESo44/edit#slide=id.gb33d7ddd1b_0_93","title":"See Also"},{"location":"overview/#automating-mapping","text":"Should we pursue approaches to automate mapping? Some of the functionality is already in schema-automator. E.g. auto-annotating schema elements using ontologies Isomorphic schema mapping discovery analogous to ontology mapping Can a boomer type approach help? E.g. given multiple loose mappings with alternative interpretations\\, which ones give coherent results Other approaches Inductive Logic Programming: transformations as logic programs Genetic programming: transformations as lambda functions Deep Learning: e.g. Language Models for translation There is already a rich literature spanning decades here to be parasitized\u2026","title":"Automating mapping"},{"location":"overview/#summary-just-tell-me-what-to-do-today","text":"For isomorphic mappings: Stay within LinkML/SSSOM No need for custom code\\, it all works For complex mappings: It depends! Do the structural mapping with linkml-convert Implement the complex logic as you see fit\\, depending on multiple factors. Any of the following may be valid Koza Awk SPARQL CONSTRUCTS or SELECTS Custom python YARRRML SQL INSERTs XSLT Jsonpath-lifter \u2026.","title":"Summary: just tell me what to do today"},{"location":"overview/#roadmap","text":"2022: Continue to gather use cases\\, experiment 2023: If funding permits Extend metamodel to include complex mapping Implement EITHER Parasitizing converters Direct mapping framework TBD: Is this Koza2?","title":"Roadmap"},{"location":"permissible_value_derivations/","text":"Slot: permissible_value_derivations Instructions on how to derive a set of PVs in the target schema URI: linkmltr:permissible_value_derivations Applicable Classes Name Description EnumDerivation A specification of how to derive the value of a target enum from a source enu... Properties Range: PermissibleValueDerivation Multivalued: True Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: permissible_value_derivations description: Instructions on how to derive a set of PVs in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: permissible_value_derivations owner: EnumDerivation domain_of: - EnumDerivation range: PermissibleValueDerivation inlined: true","title":"Slot: permissible_value_derivations"},{"location":"permissible_value_derivations/#slot-permissible_value_derivations","text":"Instructions on how to derive a set of PVs in the target schema URI: linkmltr:permissible_value_derivations","title":"Slot: permissible_value_derivations"},{"location":"permissible_value_derivations/#applicable-classes","text":"Name Description EnumDerivation A specification of how to derive the value of a target enum from a source enu...","title":"Applicable Classes"},{"location":"permissible_value_derivations/#properties","text":"Range: PermissibleValueDerivation Multivalued: True","title":"Properties"},{"location":"permissible_value_derivations/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"permissible_value_derivations/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"permissible_value_derivations/#linkml-source","text":"name: permissible_value_derivations description: Instructions on how to derive a set of PVs in the target schema from_schema: https://w3id.org/linkml/transformer rank: 1000 multivalued: true alias: permissible_value_derivations owner: EnumDerivation domain_of: - EnumDerivation range: PermissibleValueDerivation inlined: true","title":"LinkML Source"},{"location":"populated_from/","text":"Slot: populated_from URI: linkmltr:populated_from Applicable Classes Name Description ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu... Properties Range: xsd:string Identifier and Mapping Information LinkML Source name: populated_from alias: populated_from domain_of: - ClassDerivation - SlotDerivation - EnumDerivation range: string","title":"Slot: populated_from"},{"location":"populated_from/#slot-populated_from","text":"URI: linkmltr:populated_from","title":"Slot: populated_from"},{"location":"populated_from/#applicable-classes","text":"Name Description ClassDerivation A specification of how to derive a target class from a source class SlotDerivation A specification of how to derive the value of a target slot from a source slo... EnumDerivation A specification of how to derive the value of a target enum from a source enu...","title":"Applicable Classes"},{"location":"populated_from/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"populated_from/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"populated_from/#linkml-source","text":"name: populated_from alias: populated_from domain_of: - ClassDerivation - SlotDerivation - EnumDerivation range: string","title":"LinkML Source"},{"location":"prefixes/","text":"Slot: prefixes prefix map URI: linkmltr:prefixes Applicable Classes Name Description TransformationSpecification A collection of mappings between source and target classes Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: prefixes description: prefix map from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: prefixes owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"Slot: prefixes"},{"location":"prefixes/#slot-prefixes","text":"prefix map URI: linkmltr:prefixes","title":"Slot: prefixes"},{"location":"prefixes/#applicable-classes","text":"Name Description TransformationSpecification A collection of mappings between source and target classes","title":"Applicable Classes"},{"location":"prefixes/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"prefixes/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"prefixes/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"prefixes/#linkml-source","text":"name: prefixes description: prefix map from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: prefixes owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"LinkML Source"},{"location":"same_as/","text":"Slot: same_as Name of the class in the source schema URI: https://w3id.org/linkml/transformer/same_as Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer","title":"Slot: same_as"},{"location":"same_as/#slot-same_as","text":"Name of the class in the source schema URI: https://w3id.org/linkml/transformer/same_as","title":"Slot: same_as"},{"location":"same_as/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"same_as/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"same_as/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"slot_derivations/","text":"Slot: slot_derivations URI: linkmltr:slot_derivations Applicable Classes Name Description TransformationSpecification A collection of mappings between source and target classes ClassDerivation A specification of how to derive a target class from a source class Properties Range: xsd:string Identifier and Mapping Information LinkML Source name: slot_derivations alias: slot_derivations domain_of: - TransformationSpecification - ClassDerivation range: string","title":"Slot: slot_derivations"},{"location":"slot_derivations/#slot-slot_derivations","text":"URI: linkmltr:slot_derivations","title":"Slot: slot_derivations"},{"location":"slot_derivations/#applicable-classes","text":"Name Description TransformationSpecification A collection of mappings between source and target classes ClassDerivation A specification of how to derive a target class from a source class","title":"Applicable Classes"},{"location":"slot_derivations/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"slot_derivations/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"slot_derivations/#linkml-source","text":"name: slot_derivations alias: slot_derivations domain_of: - TransformationSpecification - ClassDerivation range: string","title":"LinkML Source"},{"location":"slot_name/","text":"Slot: slot_name URI: linkmltr:slot_name Applicable Classes Name Description Inverse Used for back references Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: slot_name from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: slot_name owner: Inverse domain_of: - Inverse range: string","title":"Slot: slot_name"},{"location":"slot_name/#slot-slot_name","text":"URI: linkmltr:slot_name","title":"Slot: slot_name"},{"location":"slot_name/#applicable-classes","text":"Name Description Inverse Used for back references","title":"Applicable Classes"},{"location":"slot_name/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"slot_name/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"slot_name/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"slot_name/#linkml-source","text":"name: slot_name from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: slot_name owner: Inverse domain_of: - Inverse range: string","title":"LinkML Source"},{"location":"source_schema/","text":"Slot: source_schema name of the schema that describes the source (input) objects URI: linkmltr:source_schema Applicable Classes Name Description TransformationSpecification A collection of mappings between source and target classes Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: source_schema description: name of the schema that describes the source (input) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: source_schema owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"Slot: source_schema"},{"location":"source_schema/#slot-source_schema","text":"name of the schema that describes the source (input) objects URI: linkmltr:source_schema","title":"Slot: source_schema"},{"location":"source_schema/#applicable-classes","text":"Name Description TransformationSpecification A collection of mappings between source and target classes","title":"Applicable Classes"},{"location":"source_schema/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"source_schema/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"source_schema/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"source_schema/#linkml-source","text":"name: source_schema description: name of the schema that describes the source (input) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: source_schema owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"LinkML Source"},{"location":"target_schema/","text":"Slot: target_schema name of the schema that describes the target (output) objects URI: linkmltr:target_schema Applicable Classes Name Description TransformationSpecification A collection of mappings between source and target classes Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: target_schema description: name of the schema that describes the target (output) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: target_schema owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"Slot: target_schema"},{"location":"target_schema/#slot-target_schema","text":"name of the schema that describes the target (output) objects URI: linkmltr:target_schema","title":"Slot: target_schema"},{"location":"target_schema/#applicable-classes","text":"Name Description TransformationSpecification A collection of mappings between source and target classes","title":"Applicable Classes"},{"location":"target_schema/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"target_schema/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"target_schema/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"target_schema/#linkml-source","text":"name: target_schema description: name of the schema that describes the target (output) objects from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: target_schema owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"LinkML Source"},{"location":"title/","text":"Slot: title human readable title for this transformation specification URI: linkmltr:title Applicable Classes Name Description TransformationSpecification A collection of mappings between source and target classes Properties Range: xsd:string Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: title description: human readable title for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: title owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"Slot: title"},{"location":"title/#slot-title","text":"human readable title for this transformation specification URI: linkmltr:title","title":"Slot: title"},{"location":"title/#applicable-classes","text":"Name Description TransformationSpecification A collection of mappings between source and target classes","title":"Applicable Classes"},{"location":"title/#properties","text":"Range: xsd:string","title":"Properties"},{"location":"title/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"title/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"title/#linkml-source","text":"name: title description: human readable title for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: title owner: TransformationSpecification domain_of: - TransformationSpecification range: string","title":"LinkML Source"},{"location":"transformer/","text":"transformer Datamodel for LinkML schema transformations. A transformer generates instances of a target data model from instances of a source data model. This transformation process is guided by a TransformationSpecification . The specification is independent of any one method for transforming data. It allows different approaches, including: direct implementation, transforming python or json objects translation of the specification into SQL commands, to operate on relations translation of the specification into SPARQL CONSTRUCTs, to operate on triples translation into another specification language, such as R2RML URI: https://w3id.org/linkml/transformer","title":"transformer"},{"location":"transformer/#transformer","text":"Datamodel for LinkML schema transformations. A transformer generates instances of a target data model from instances of a source data model. This transformation process is guided by a TransformationSpecification . The specification is independent of any one method for transforming data. It allows different approaches, including: direct implementation, transforming python or json objects translation of the specification into SQL commands, to operate on relations translation of the specification into SPARQL CONSTRUCTs, to operate on triples translation into another specification language, such as R2RML URI: https://w3id.org/linkml/transformer","title":"transformer"},{"location":"type_designator/","text":"Slot: type_designator URI: linkmltr:type_designator Applicable Classes Name Description SlotDerivation A specification of how to derive the value of a target slot from a source slo... Properties Range: xsd:boolean Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: type_designator from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: type_designator owner: SlotDerivation domain_of: - SlotDerivation range: boolean","title":"Slot: type_designator"},{"location":"type_designator/#slot-type_designator","text":"URI: linkmltr:type_designator","title":"Slot: type_designator"},{"location":"type_designator/#applicable-classes","text":"Name Description SlotDerivation A specification of how to derive the value of a target slot from a source slo...","title":"Applicable Classes"},{"location":"type_designator/#properties","text":"Range: xsd:boolean","title":"Properties"},{"location":"type_designator/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"type_designator/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"type_designator/#linkml-source","text":"name: type_designator from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: type_designator owner: SlotDerivation domain_of: - SlotDerivation range: boolean","title":"LinkML Source"},{"location":"types/","text":"types Shared type definitions for the core LinkML mode and metamodel URI: https://w3id.org/linkml/types","title":"types"},{"location":"types/#types","text":"Shared type definitions for the core LinkML mode and metamodel URI: https://w3id.org/linkml/types","title":"types"},{"location":"value/","text":"Slot: value URI: linkmltr:value Applicable Classes Name Description KeyVal Properties Range: Any Identifier and Mapping Information Schema Source from schema: https://w3id.org/linkml/transformer LinkML Source name: value from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: value owner: KeyVal domain_of: - KeyVal range: Any","title":"Slot: value"},{"location":"value/#slot-value","text":"URI: linkmltr:value","title":"Slot: value"},{"location":"value/#applicable-classes","text":"Name Description KeyVal","title":"Applicable Classes"},{"location":"value/#properties","text":"Range: Any","title":"Properties"},{"location":"value/#identifier-and-mapping-information","text":"","title":"Identifier and Mapping Information"},{"location":"value/#schema-source","text":"from schema: https://w3id.org/linkml/transformer","title":"Schema Source"},{"location":"value/#linkml-source","text":"name: value from_schema: https://w3id.org/linkml/transformer rank: 1000 alias: value owner: KeyVal domain_of: - KeyVal range: Any","title":"LinkML Source"}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"LinkML Data Transformer Model","text":"

    Datamodel for LinkML schema transformations.

    A transformer generates instances of a target data model from instances of a source data model. This transformation process is guided by a TransformationSpecification.

    The specification is independent of any one method for transforming data. It allows different approaches, including:

    • direct implementation, transforming python or json objects
    • translation of the specification into SQL commands, to operate on relations
    • translation of the specification into SPARQL CONSTRUCTs, to operate on triples
    • translation into another specification language, such as R2RML

    URI: https://w3id.org/linkml/transformer

    Name: transformer

    "},{"location":"#classes","title":"Classes","text":"Class Description AliasedClass alias-class key value pairs for classes Any None CopyDirective Instructs a Schema Mapper in how to map to a target schema. Not used for data transformation. Inverse Used for back references in mapping to relational model KeyVal None SpecificationComponent None ElementDerivation An abstract grouping for classes that provide a specification of how to derive a target element from a source element. ClassDerivation A specification of how to derive a target class from a source class. EnumDerivation A specification of how to derive the value of a target enum from a source enum PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum PrefixDerivation None SlotDerivation A specification of how to derive the value of a target slot from a source slot TransformationSpecification A collection of mappings between source and target classes StringificationConfiguration None UnitConversionConfiguration None"},{"location":"#slots","title":"Slots","text":"Slot Description add alias name of the class to be aliased cast_collection_as class_derivations Instructions on how to derive a set of classes in the target schema from clas... class_name class_named local alias for the class comments A list of comments about this component copy_all copy_directives delimiter derived_from Source slots that are used to derive this slot description description of the specification component dictionary_key element_name enum_derivations Instructions on how to derive a set of enums in the target schema exclude exclude_all expr An expression to be evaluated on the source object to derive the target slot expression_to_expression_mappings A mapping table in which the keys and values are expressions expression_to_value_mappings A mapping table in which the keys are expressions hide True if this is suppressed id Unique identifier for this transformation specification implements A reference to a specification that this component implements include inverse_of Used to specify a class-slot tuple that is the inverse of the derived/target ... is_a joins Additional classes to be joined to derive instances of the target class key mirror_source mixins name Name of the element in the target schema overrides overrides source schema slots permissible_value_derivations Instructions on how to derive a set of PVs in the target schema populated_from Name of the class in the source schema prefixes maps prefixes to URL expansions range reversed slot_derivations Instructions on how to derive a set of top level slots in the target schema slot_name source_magnitude_slot source_schema name of the schema that describes the source (input) objects source_unit source_unit_scheme source_unit_slot sources stringification syntax target_magnitude_slot target_schema name of the schema that describes the target (output) objects target_unit target_unit_scheme target_unit_slot title human readable title for this transformation specification type_designator unit_conversion value value_mappings A mapping table that is applied directly to mappings, in order of precedence"},{"location":"#enumerations","title":"Enumerations","text":"Enumeration Description CollectionType SerializationSyntaxType"},{"location":"#types","title":"Types","text":"Type Description Boolean A binary (true or false) value ClassReference Curie a compact URI Date a date (year, month and day) in an idealized calendar DateOrDatetime Either a date or a datetime Datetime The combination of a date and time Decimal A real number with arbitrary precision that conforms to the xsd:decimal speci... Double A real number that conforms to the xsd:double specification EnumReference Float A real number that conforms to the xsd:float specification Integer An integer Jsonpath A string encoding a JSON Path Jsonpointer A string encoding a JSON Pointer Ncname Prefix part of CURIE Nodeidentifier A URI, CURIE or BNODE that represents a node in a model Objectidentifier A URI or CURIE that represents an object in the model SlotReference Sparqlpath A string encoding a SPARQL Property Path String A character string Time A time object represents a (local) time of day, independent of any particular... Uri a complete URI Uriorcurie a URI or a CURIE"},{"location":"#subsets","title":"Subsets","text":"Subset Description"},{"location":"AliasedClass/","title":"Class: AliasedClass","text":"

    alias-class key value pairs for classes

    URI: linkmltr:AliasedClass

     classDiagram\n    class AliasedClass\n      AliasedClass : alias\n\n          AliasedClass --|> None : alias\n\n      AliasedClass : class_named\n\n          AliasedClass --|> None : class_named\n\n\n
    "},{"location":"AliasedClass/#slots","title":"Slots","text":"Name Cardinality and Range Description Inheritance alias 1..1 String name of the class to be aliased direct class_named 0..1 String local alias for the class direct"},{"location":"AliasedClass/#usages","title":"Usages","text":"used by used in type used ClassDerivation joins range AliasedClass"},{"location":"AliasedClass/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"AliasedClass/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"AliasedClass/#mappings","title":"Mappings","text":"Mapping Type Mapped Value self linkmltr:AliasedClass native linkmltr:AliasedClass"},{"location":"AliasedClass/#linkml-source","title":"LinkML Source","text":""},{"location":"AliasedClass/#direct","title":"Direct","text":"
    name: AliasedClass\ndescription: alias-class key value pairs for classes\nfrom_schema: https://w3id.org/linkml/transformer\nattributes:\n  alias:\n    name: alias\n    description: name of the class to be aliased\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    key: true\n    required: true\n  class_named:\n    name: class_named\n    description: local alias for the class\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n\n
    "},{"location":"AliasedClass/#induced","title":"Induced","text":"
    name: AliasedClass\ndescription: alias-class key value pairs for classes\nfrom_schema: https://w3id.org/linkml/transformer\nattributes:\n  alias:\n    name: alias\n    description: name of the class to be aliased\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    key: true\n    alias: alias\n    owner: AliasedClass\n    domain_of:\n    - AliasedClass\n    required: true\n  class_named:\n    name: class_named\n    description: local alias for the class\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: class_named\n    owner: AliasedClass\n    domain_of:\n    - AliasedClass\n\n
    "},{"location":"Any/","title":"Class: Any","text":"

    URI: linkml:Any

     classDiagram\n    class Any\n\n
    "},{"location":"Any/#slots","title":"Slots","text":"Name Cardinality and Range Description Inheritance"},{"location":"Any/#usages","title":"Usages","text":"used by used in type used ElementDerivation overrides range Any ClassDerivation overrides range Any SlotDerivation overrides range Any EnumDerivation overrides range Any PermissibleValueDerivation overrides range Any PrefixDerivation overrides range Any KeyVal value range Any CopyDirective exclude range Any CopyDirective include range Any CopyDirective add range Any"},{"location":"Any/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Any/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"Any/#mappings","title":"Mappings","text":"Mapping Type Mapped Value self linkml:Any native linkmltr:Any"},{"location":"Any/#linkml-source","title":"LinkML Source","text":""},{"location":"Any/#direct","title":"Direct","text":"
    name: Any\nfrom_schema: https://w3id.org/linkml/transformer\nclass_uri: linkml:Any\n\n
    "},{"location":"Any/#induced","title":"Induced","text":"
    name: Any\nfrom_schema: https://w3id.org/linkml/transformer\nclass_uri: linkml:Any\n\n
    "},{"location":"Boolean/","title":"Type: Boolean","text":"

    A binary (true or false) value

    URI: xsd:boolean

    • base: Bool

    • uri: xsd:boolean

    • repr: bool

    "},{"location":"Boolean/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Boolean/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"ClassDerivation/","title":"Class: ClassDerivation","text":"

    A specification of how to derive a target class from a source class.

    URI: linkmltr:ClassDerivation

     classDiagram\n    class ClassDerivation\n      ElementDerivation <|-- ClassDerivation\n\n      ClassDerivation : comments\n\n      ClassDerivation : copy_directives\n\n          ClassDerivation --|> CopyDirective : copy_directives\n\n      ClassDerivation : description\n\n          ClassDerivation --|> None : description\n\n      ClassDerivation : expression_to_expression_mappings\n\n          ClassDerivation --|> KeyVal : expression_to_expression_mappings\n\n      ClassDerivation : expression_to_value_mappings\n\n          ClassDerivation --|> KeyVal : expression_to_value_mappings\n\n      ClassDerivation : implements\n\n      ClassDerivation : is_a\n\n          ClassDerivation --|> ElementDerivation : is_a\n\n      ClassDerivation : joins\n\n          ClassDerivation --|> AliasedClass : joins\n\n      ClassDerivation : mirror_source\n\n      ClassDerivation : mixins\n\n          ClassDerivation --|> ElementDerivation : mixins\n\n      ClassDerivation : name\n\n          ClassDerivation --|> None : name\n\n      ClassDerivation : overrides\n\n          ClassDerivation --|> Any : overrides\n\n      ClassDerivation : populated_from\n\n      ClassDerivation : slot_derivations\n\n          ClassDerivation --|> SlotDerivation : slot_derivations\n\n      ClassDerivation : sources\n\n      ClassDerivation : value_mappings\n\n          ClassDerivation --|> KeyVal : value_mappings\n\n\n
    "},{"location":"ClassDerivation/#inheritance","title":"Inheritance","text":"
    • SpecificationComponent
      • ElementDerivation
        • ClassDerivation
    "},{"location":"ClassDerivation/#slots","title":"Slots","text":"Name Cardinality and Range Description Inheritance populated_from 0..1 ClassReference Name of the class in the source schema direct sources 0..* ClassReference direct joins 0..* AliasedClass Additional classes to be joined to derive instances of the target class direct slot_derivations 0..* SlotDerivation direct name 1..1 String Name of the element in the target schema ElementDerivation copy_directives 0..* CopyDirective ElementDerivation overrides 0..1 Any overrides source schema slots ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation value_mappings 0..* KeyVal A mapping table that is applied directly to mappings, in order of precedence ElementDerivation expression_to_value_mappings 0..* KeyVal A mapping table in which the keys are expressions ElementDerivation expression_to_expression_mappings 0..* KeyVal A mapping table in which the keys and values are expressions ElementDerivation mirror_source 0..1 Boolean ElementDerivation description 0..1 String description of the specification component SpecificationComponent implements 0..* Uriorcurie A reference to a specification that this component implements SpecificationComponent comments 0..* String A list of comments about this component SpecificationComponent"},{"location":"ClassDerivation/#usages","title":"Usages","text":"used by used in type used TransformationSpecification class_derivations range ClassDerivation"},{"location":"ClassDerivation/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"ClassDerivation/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"ClassDerivation/#mappings","title":"Mappings","text":"Mapping Type Mapped Value self linkmltr:ClassDerivation native linkmltr:ClassDerivation"},{"location":"ClassDerivation/#linkml-source","title":"LinkML Source","text":""},{"location":"ClassDerivation/#direct","title":"Direct","text":"
    name: ClassDerivation\ndescription: A specification of how to derive a target class from a source class.\nfrom_schema: https://w3id.org/linkml/transformer\nis_a: ElementDerivation\nattributes:\n  populated_from:\n    name: populated_from\n    description: Name of the class in the source schema\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: ClassReference\n  sources:\n    name: sources\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    range: ClassReference\n  joins:\n    name: joins\n    description: Additional classes to be joined to derive instances of the target\n      class\n    comments:\n    - not yet implemented\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    range: AliasedClass\n    inlined: true\n  slot_derivations:\n    name: slot_derivations\n    from_schema: https://w3id.org/linkml/transformer\n    multivalued: true\n    range: SlotDerivation\n    inlined: true\n\n
    "},{"location":"ClassDerivation/#induced","title":"Induced","text":"
    name: ClassDerivation\ndescription: A specification of how to derive a target class from a source class.\nfrom_schema: https://w3id.org/linkml/transformer\nis_a: ElementDerivation\nattributes:\n  populated_from:\n    name: populated_from\n    description: Name of the class in the source schema\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: populated_from\n    owner: ClassDerivation\n    domain_of:\n    - ClassDerivation\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    range: ClassReference\n  sources:\n    name: sources\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: sources\n    owner: ClassDerivation\n    domain_of:\n    - ClassDerivation\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    range: ClassReference\n  joins:\n    name: joins\n    description: Additional classes to be joined to derive instances of the target\n      class\n    comments:\n    - not yet implemented\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: joins\n    owner: ClassDerivation\n    domain_of:\n    - ClassDerivation\n    range: AliasedClass\n    inlined: true\n  slot_derivations:\n    name: slot_derivations\n    from_schema: https://w3id.org/linkml/transformer\n    multivalued: true\n    alias: slot_derivations\n    owner: ClassDerivation\n    domain_of:\n    - TransformationSpecification\n    - ClassDerivation\n    range: SlotDerivation\n    inlined: true\n  name:\n    name: name\n    description: Name of the element in the target schema\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    key: true\n    alias: name\n    owner: ClassDerivation\n    domain_of:\n    - ElementDerivation\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    range: string\n    required: true\n  copy_directives:\n    name: copy_directives\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: copy_directives\n    owner: ClassDerivation\n    domain_of:\n    - ElementDerivation\n    range: CopyDirective\n    inlined: true\n  overrides:\n    name: overrides\n    description: overrides source schema slots\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: overrides\n    owner: ClassDerivation\n    domain_of:\n    - ElementDerivation\n    range: Any\n  is_a:\n    name: is_a\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: linkml:is_a\n    alias: is_a\n    owner: ClassDerivation\n    domain_of:\n    - ElementDerivation\n    range: ElementDerivation\n  mixins:\n    name: mixins\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: linkml:mixins\n    multivalued: true\n    alias: mixins\n    owner: ClassDerivation\n    domain_of:\n    - ElementDerivation\n    range: ElementDerivation\n    inlined: false\n  value_mappings:\n    name: value_mappings\n    description: A mapping table that is applied directly to mappings, in order of\n      precedence\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: value_mappings\n    owner: ClassDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  expression_to_value_mappings:\n    name: expression_to_value_mappings\n    description: A mapping table in which the keys are expressions\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: expression_to_value_mappings\n    owner: ClassDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  expression_to_expression_mappings:\n    name: expression_to_expression_mappings\n    description: A mapping table in which the keys and values are expressions\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: expression_to_expression_mappings\n    owner: ClassDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  mirror_source:\n    name: mirror_source\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: mirror_source\n    owner: ClassDerivation\n    domain_of:\n    - ElementDerivation\n    range: boolean\n  description:\n    name: description\n    description: description of the specification component\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: dcterms:description\n    alias: description\n    owner: ClassDerivation\n    domain_of:\n    - SpecificationComponent\n    range: string\n  implements:\n    name: implements\n    description: A reference to a specification that this component implements.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: implements\n    owner: ClassDerivation\n    domain_of:\n    - SpecificationComponent\n    range: uriorcurie\n  comments:\n    name: comments\n    description: A list of comments about this component. Comments are free text,\n      and may be used to provide additional information about the component, including\n      instructions for its use.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: rdfs:comment\n    multivalued: true\n    alias: comments\n    owner: ClassDerivation\n    domain_of:\n    - SpecificationComponent\n    range: string\n\n
    "},{"location":"ClassReference/","title":"Type: ClassReference","text":"

    URI: xsd:string

    • base: str

    • uri: xsd:string

    • typeof: string

    "},{"location":"ClassReference/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"ClassReference/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"CollectionType/","title":"Enum: CollectionType","text":"

    URI: CollectionType

    "},{"location":"CollectionType/#permissible-values","title":"Permissible Values","text":"Value Meaning Description SingleValued None MultiValued None MultiValuedList None MultiValuedDict None"},{"location":"CollectionType/#slots","title":"Slots","text":"Name Description cast_collection_as"},{"location":"CollectionType/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"CollectionType/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"CollectionType/#linkml-source","title":"LinkML Source","text":"
    name: CollectionType\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\npermissible_values:\n  SingleValued:\n    text: SingleValued\n  MultiValued:\n    text: MultiValued\n  MultiValuedList:\n    text: MultiValuedList\n  MultiValuedDict:\n    text: MultiValuedDict\n\n
    "},{"location":"CopyDirective/","title":"Class: CopyDirective","text":"

    Instructs a Schema Mapper in how to map to a target schema. Not used for data transformation.

    URI: linkmltr:CopyDirective

     classDiagram\n    class CopyDirective\n      CopyDirective : add\n\n          CopyDirective --|> Any : add\n\n      CopyDirective : copy_all\n\n      CopyDirective : element_name\n\n          CopyDirective --|> None : element_name\n\n      CopyDirective : exclude\n\n          CopyDirective --|> Any : exclude\n\n      CopyDirective : exclude_all\n\n      CopyDirective : include\n\n          CopyDirective --|> Any : include\n\n\n
    "},{"location":"CopyDirective/#slots","title":"Slots","text":"Name Cardinality and Range Description Inheritance element_name 1..1 String direct copy_all 0..1 Boolean direct exclude_all 0..1 Boolean direct exclude 0..1 Any direct include 0..1 Any direct add 0..1 Any direct"},{"location":"CopyDirective/#usages","title":"Usages","text":"used by used in type used ElementDerivation copy_directives range CopyDirective ClassDerivation copy_directives range CopyDirective SlotDerivation copy_directives range CopyDirective EnumDerivation copy_directives range CopyDirective PermissibleValueDerivation copy_directives range CopyDirective PrefixDerivation copy_directives range CopyDirective"},{"location":"CopyDirective/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"CopyDirective/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"CopyDirective/#mappings","title":"Mappings","text":"Mapping Type Mapped Value self linkmltr:CopyDirective native linkmltr:CopyDirective"},{"location":"CopyDirective/#linkml-source","title":"LinkML Source","text":""},{"location":"CopyDirective/#direct","title":"Direct","text":"
    name: CopyDirective\ndescription: Instructs a Schema Mapper in how to map to a target schema. Not used\n  for data transformation.\nfrom_schema: https://w3id.org/linkml/transformer\nstatus: testing\nattributes:\n  element_name:\n    name: element_name\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    key: true\n    required: true\n  copy_all:\n    name: copy_all\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: boolean\n  exclude_all:\n    name: exclude_all\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: boolean\n  exclude:\n    name: exclude\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: Any\n  include:\n    name: include\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: Any\n  add:\n    name: add\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: Any\n\n
    "},{"location":"CopyDirective/#induced","title":"Induced","text":"
    name: CopyDirective\ndescription: Instructs a Schema Mapper in how to map to a target schema. Not used\n  for data transformation.\nfrom_schema: https://w3id.org/linkml/transformer\nstatus: testing\nattributes:\n  element_name:\n    name: element_name\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    key: true\n    alias: element_name\n    owner: CopyDirective\n    domain_of:\n    - CopyDirective\n    required: true\n  copy_all:\n    name: copy_all\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: copy_all\n    owner: CopyDirective\n    domain_of:\n    - CopyDirective\n    range: boolean\n  exclude_all:\n    name: exclude_all\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: exclude_all\n    owner: CopyDirective\n    domain_of:\n    - CopyDirective\n    range: boolean\n  exclude:\n    name: exclude\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: exclude\n    owner: CopyDirective\n    domain_of:\n    - CopyDirective\n    range: Any\n  include:\n    name: include\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: include\n    owner: CopyDirective\n    domain_of:\n    - CopyDirective\n    range: Any\n  add:\n    name: add\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: add\n    owner: CopyDirective\n    domain_of:\n    - CopyDirective\n    range: Any\n\n
    "},{"location":"Curie/","title":"Type: Curie","text":"

    a compact URI

    URI: xsd:string

    • base: Curie

    • uri: xsd:string

    • repr: str

    "},{"location":"Curie/#comments","title":"Comments","text":"
    • in RDF serializations this MUST be expanded to a URI
    • in non-RDF serializations MAY be serialized as the compact representation
    "},{"location":"Curie/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Curie/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"Date/","title":"Type: Date","text":"

    a date (year, month and day) in an idealized calendar

    URI: xsd:date

    • base: XSDDate

    • uri: xsd:date

    • repr: str

    "},{"location":"Date/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Date/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"DateOrDatetime/","title":"Type: DateOrDatetime","text":"

    Either a date or a datetime

    URI: linkml:DateOrDatetime

    • base: str

    • uri: linkml:DateOrDatetime

    • repr: str

    "},{"location":"DateOrDatetime/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"DateOrDatetime/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"Datetime/","title":"Type: Datetime","text":"

    The combination of a date and time

    URI: xsd:dateTime

    • base: XSDDateTime

    • uri: xsd:dateTime

    • repr: str

    "},{"location":"Datetime/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Datetime/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"Decimal/","title":"Type: Decimal","text":"

    A real number with arbitrary precision that conforms to the xsd:decimal specification

    URI: xsd:decimal

    • base: Decimal

    • uri: xsd:decimal

    "},{"location":"Decimal/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Decimal/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"Double/","title":"Type: Double","text":"

    A real number that conforms to the xsd:double specification

    URI: xsd:double

    • base: float

    • uri: xsd:double

    "},{"location":"Double/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Double/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"ElementDerivation/","title":"Class: ElementDerivation","text":"

    An abstract grouping for classes that provide a specification of how to derive a target element from a source element.

    • NOTE: this is an abstract class and should not be instantiated directly

    URI: linkmltr:ElementDerivation

     classDiagram\n    class ElementDerivation\n      SpecificationComponent <|-- ElementDerivation\n\n\n      ElementDerivation <|-- ClassDerivation\n      ElementDerivation <|-- SlotDerivation\n      ElementDerivation <|-- EnumDerivation\n      ElementDerivation <|-- PermissibleValueDerivation\n      ElementDerivation <|-- PrefixDerivation\n\n\n      ElementDerivation : comments\n\n      ElementDerivation : copy_directives\n\n          ElementDerivation --|> CopyDirective : copy_directives\n\n      ElementDerivation : description\n\n          ElementDerivation --|> None : description\n\n      ElementDerivation : expression_to_expression_mappings\n\n          ElementDerivation --|> KeyVal : expression_to_expression_mappings\n\n      ElementDerivation : expression_to_value_mappings\n\n          ElementDerivation --|> KeyVal : expression_to_value_mappings\n\n      ElementDerivation : implements\n\n      ElementDerivation : is_a\n\n          ElementDerivation --|> ElementDerivation : is_a\n\n      ElementDerivation : mirror_source\n\n      ElementDerivation : mixins\n\n          ElementDerivation --|> ElementDerivation : mixins\n\n      ElementDerivation : name\n\n          ElementDerivation --|> None : name\n\n      ElementDerivation : overrides\n\n          ElementDerivation --|> Any : overrides\n\n      ElementDerivation : value_mappings\n\n          ElementDerivation --|> KeyVal : value_mappings\n\n\n
    "},{"location":"ElementDerivation/#inheritance","title":"Inheritance","text":"
    • SpecificationComponent
      • ElementDerivation
        • ClassDerivation
        • SlotDerivation
        • EnumDerivation
        • PermissibleValueDerivation
        • PrefixDerivation
    "},{"location":"ElementDerivation/#slots","title":"Slots","text":"Name Cardinality and Range Description Inheritance name 1..1 String Name of the element in the target schema direct copy_directives 0..* CopyDirective direct overrides 0..1 Any overrides source schema slots direct is_a 0..1 ElementDerivation direct mixins 0..* ElementDerivation direct value_mappings 0..* KeyVal A mapping table that is applied directly to mappings, in order of precedence direct expression_to_value_mappings 0..* KeyVal A mapping table in which the keys are expressions direct expression_to_expression_mappings 0..* KeyVal A mapping table in which the keys and values are expressions direct mirror_source 0..1 Boolean direct description 0..1 String description of the specification component SpecificationComponent implements 0..* Uriorcurie A reference to a specification that this component implements SpecificationComponent comments 0..* String A list of comments about this component SpecificationComponent"},{"location":"ElementDerivation/#usages","title":"Usages","text":"used by used in type used ElementDerivation is_a range ElementDerivation ElementDerivation mixins range ElementDerivation ClassDerivation is_a range ElementDerivation ClassDerivation mixins range ElementDerivation SlotDerivation is_a range ElementDerivation SlotDerivation mixins range ElementDerivation EnumDerivation is_a range ElementDerivation EnumDerivation mixins range ElementDerivation PermissibleValueDerivation is_a range ElementDerivation PermissibleValueDerivation mixins range ElementDerivation PrefixDerivation is_a range ElementDerivation PrefixDerivation mixins range ElementDerivation"},{"location":"ElementDerivation/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"ElementDerivation/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"ElementDerivation/#mappings","title":"Mappings","text":"Mapping Type Mapped Value self linkmltr:ElementDerivation native linkmltr:ElementDerivation"},{"location":"ElementDerivation/#linkml-source","title":"LinkML Source","text":""},{"location":"ElementDerivation/#direct","title":"Direct","text":"
    name: ElementDerivation\ndescription: An abstract grouping for classes that provide a specification of how\n  to  derive a target element from a source element.\nfrom_schema: https://w3id.org/linkml/transformer\nis_a: SpecificationComponent\nabstract: true\nattributes:\n  name:\n    name: name\n    description: Name of the element in the target schema\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    key: true\n    required: true\n  copy_directives:\n    name: copy_directives\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    range: CopyDirective\n    inlined: true\n  overrides:\n    name: overrides\n    description: overrides source schema slots\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: Any\n  is_a:\n    name: is_a\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: linkml:is_a\n    range: ElementDerivation\n  mixins:\n    name: mixins\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: linkml:mixins\n    multivalued: true\n    range: ElementDerivation\n    inlined: false\n  value_mappings:\n    name: value_mappings\n    description: A mapping table that is applied directly to mappings, in order of\n      precedence\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    range: KeyVal\n    inlined: true\n  expression_to_value_mappings:\n    name: expression_to_value_mappings\n    description: A mapping table in which the keys are expressions\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    range: KeyVal\n    inlined: true\n  expression_to_expression_mappings:\n    name: expression_to_expression_mappings\n    description: A mapping table in which the keys and values are expressions\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    range: KeyVal\n    inlined: true\n  mirror_source:\n    name: mirror_source\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: boolean\n\n
    "},{"location":"ElementDerivation/#induced","title":"Induced","text":"
    name: ElementDerivation\ndescription: An abstract grouping for classes that provide a specification of how\n  to  derive a target element from a source element.\nfrom_schema: https://w3id.org/linkml/transformer\nis_a: SpecificationComponent\nabstract: true\nattributes:\n  name:\n    name: name\n    description: Name of the element in the target schema\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    key: true\n    alias: name\n    owner: ElementDerivation\n    domain_of:\n    - ElementDerivation\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    required: true\n  copy_directives:\n    name: copy_directives\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: copy_directives\n    owner: ElementDerivation\n    domain_of:\n    - ElementDerivation\n    range: CopyDirective\n    inlined: true\n  overrides:\n    name: overrides\n    description: overrides source schema slots\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: overrides\n    owner: ElementDerivation\n    domain_of:\n    - ElementDerivation\n    range: Any\n  is_a:\n    name: is_a\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: linkml:is_a\n    alias: is_a\n    owner: ElementDerivation\n    domain_of:\n    - ElementDerivation\n    range: ElementDerivation\n  mixins:\n    name: mixins\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: linkml:mixins\n    multivalued: true\n    alias: mixins\n    owner: ElementDerivation\n    domain_of:\n    - ElementDerivation\n    range: ElementDerivation\n    inlined: false\n  value_mappings:\n    name: value_mappings\n    description: A mapping table that is applied directly to mappings, in order of\n      precedence\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: value_mappings\n    owner: ElementDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  expression_to_value_mappings:\n    name: expression_to_value_mappings\n    description: A mapping table in which the keys are expressions\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: expression_to_value_mappings\n    owner: ElementDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  expression_to_expression_mappings:\n    name: expression_to_expression_mappings\n    description: A mapping table in which the keys and values are expressions\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: expression_to_expression_mappings\n    owner: ElementDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  mirror_source:\n    name: mirror_source\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: mirror_source\n    owner: ElementDerivation\n    domain_of:\n    - ElementDerivation\n    range: boolean\n  description:\n    name: description\n    description: description of the specification component\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: dcterms:description\n    alias: description\n    owner: ElementDerivation\n    domain_of:\n    - SpecificationComponent\n    range: string\n  implements:\n    name: implements\n    description: A reference to a specification that this component implements.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: implements\n    owner: ElementDerivation\n    domain_of:\n    - SpecificationComponent\n    range: uriorcurie\n  comments:\n    name: comments\n    description: A list of comments about this component. Comments are free text,\n      and may be used to provide additional information about the component, including\n      instructions for its use.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: rdfs:comment\n    multivalued: true\n    alias: comments\n    owner: ElementDerivation\n    domain_of:\n    - SpecificationComponent\n    range: string\n\n
    "},{"location":"EnumDerivation/","title":"Class: EnumDerivation","text":"

    A specification of how to derive the value of a target enum from a source enum

    URI: linkmltr:EnumDerivation

     classDiagram\n    class EnumDerivation\n      ElementDerivation <|-- EnumDerivation\n\n      EnumDerivation : comments\n\n      EnumDerivation : copy_directives\n\n          EnumDerivation --|> CopyDirective : copy_directives\n\n      EnumDerivation : description\n\n          EnumDerivation --|> None : description\n\n      EnumDerivation : expr\n\n      EnumDerivation : expression_to_expression_mappings\n\n          EnumDerivation --|> KeyVal : expression_to_expression_mappings\n\n      EnumDerivation : expression_to_value_mappings\n\n          EnumDerivation --|> KeyVal : expression_to_value_mappings\n\n      EnumDerivation : hide\n\n      EnumDerivation : implements\n\n      EnumDerivation : is_a\n\n          EnumDerivation --|> ElementDerivation : is_a\n\n      EnumDerivation : mirror_source\n\n      EnumDerivation : mixins\n\n          EnumDerivation --|> ElementDerivation : mixins\n\n      EnumDerivation : name\n\n          EnumDerivation --|> None : name\n\n      EnumDerivation : overrides\n\n          EnumDerivation --|> Any : overrides\n\n      EnumDerivation : permissible_value_derivations\n\n          EnumDerivation --|> PermissibleValueDerivation : permissible_value_derivations\n\n      EnumDerivation : populated_from\n\n      EnumDerivation : sources\n\n      EnumDerivation : value_mappings\n\n          EnumDerivation --|> KeyVal : value_mappings\n\n\n
    "},{"location":"EnumDerivation/#inheritance","title":"Inheritance","text":"
    • SpecificationComponent
      • ElementDerivation
        • EnumDerivation
    "},{"location":"EnumDerivation/#slots","title":"Slots","text":"Name Cardinality and Range Description Inheritance name 1..1 String Target enum name direct populated_from 0..1 EnumReference Source enum name direct sources 0..* EnumReference direct expr 0..1 String An expression to be evaluated on the source object to derive the target slot direct hide 0..1 Boolean True if this is suppressed direct permissible_value_derivations 0..* PermissibleValueDerivation Instructions on how to derive a set of PVs in the target schema direct copy_directives 0..* CopyDirective ElementDerivation overrides 0..1 Any overrides source schema slots ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation value_mappings 0..* KeyVal A mapping table that is applied directly to mappings, in order of precedence ElementDerivation expression_to_value_mappings 0..* KeyVal A mapping table in which the keys are expressions ElementDerivation expression_to_expression_mappings 0..* KeyVal A mapping table in which the keys and values are expressions ElementDerivation mirror_source 0..1 Boolean ElementDerivation description 0..1 String description of the specification component SpecificationComponent implements 0..* Uriorcurie A reference to a specification that this component implements SpecificationComponent comments 0..* String A list of comments about this component SpecificationComponent"},{"location":"EnumDerivation/#usages","title":"Usages","text":"used by used in type used TransformationSpecification enum_derivations range EnumDerivation"},{"location":"EnumDerivation/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"EnumDerivation/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"EnumDerivation/#mappings","title":"Mappings","text":"Mapping Type Mapped Value self linkmltr:EnumDerivation native linkmltr:EnumDerivation"},{"location":"EnumDerivation/#linkml-source","title":"LinkML Source","text":""},{"location":"EnumDerivation/#direct","title":"Direct","text":"
    name: EnumDerivation\ndescription: A specification of how to derive the value of a target enum from a source\n  enum\nfrom_schema: https://w3id.org/linkml/transformer\nis_a: ElementDerivation\nattributes:\n  name:\n    name: name\n    description: Target enum name\n    from_schema: https://w3id.org/linkml/transformer\n    key: true\n    required: true\n  populated_from:\n    name: populated_from\n    description: Source enum name\n    from_schema: https://w3id.org/linkml/transformer\n    range: EnumReference\n  sources:\n    name: sources\n    from_schema: https://w3id.org/linkml/transformer\n    multivalued: true\n    range: EnumReference\n  expr:\n    name: expr\n    description: An expression to be evaluated on the source object to derive the\n      target slot. Should be specified using the LinkML expression language.\n    from_schema: https://w3id.org/linkml/transformer\n    range: string\n  hide:\n    name: hide\n    description: True if this is suppressed\n    from_schema: https://w3id.org/linkml/transformer\n    range: boolean\n  permissible_value_derivations:\n    name: permissible_value_derivations\n    description: Instructions on how to derive a set of PVs in the target schema\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    range: PermissibleValueDerivation\n    inlined: true\n\n
    "},{"location":"EnumDerivation/#induced","title":"Induced","text":"
    name: EnumDerivation\ndescription: A specification of how to derive the value of a target enum from a source\n  enum\nfrom_schema: https://w3id.org/linkml/transformer\nis_a: ElementDerivation\nattributes:\n  name:\n    name: name\n    description: Target enum name\n    from_schema: https://w3id.org/linkml/transformer\n    key: true\n    alias: name\n    owner: EnumDerivation\n    domain_of:\n    - ElementDerivation\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    required: true\n  populated_from:\n    name: populated_from\n    description: Source enum name\n    from_schema: https://w3id.org/linkml/transformer\n    alias: populated_from\n    owner: EnumDerivation\n    domain_of:\n    - ClassDerivation\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    range: EnumReference\n  sources:\n    name: sources\n    from_schema: https://w3id.org/linkml/transformer\n    multivalued: true\n    alias: sources\n    owner: EnumDerivation\n    domain_of:\n    - ClassDerivation\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    range: EnumReference\n  expr:\n    name: expr\n    description: An expression to be evaluated on the source object to derive the\n      target slot. Should be specified using the LinkML expression language.\n    from_schema: https://w3id.org/linkml/transformer\n    alias: expr\n    owner: EnumDerivation\n    domain_of:\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    range: string\n  hide:\n    name: hide\n    description: True if this is suppressed\n    from_schema: https://w3id.org/linkml/transformer\n    alias: hide\n    owner: EnumDerivation\n    domain_of:\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    range: boolean\n  permissible_value_derivations:\n    name: permissible_value_derivations\n    description: Instructions on how to derive a set of PVs in the target schema\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: permissible_value_derivations\n    owner: EnumDerivation\n    domain_of:\n    - EnumDerivation\n    range: PermissibleValueDerivation\n    inlined: true\n  copy_directives:\n    name: copy_directives\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: copy_directives\n    owner: EnumDerivation\n    domain_of:\n    - ElementDerivation\n    range: CopyDirective\n    inlined: true\n  overrides:\n    name: overrides\n    description: overrides source schema slots\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: overrides\n    owner: EnumDerivation\n    domain_of:\n    - ElementDerivation\n    range: Any\n  is_a:\n    name: is_a\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: linkml:is_a\n    alias: is_a\n    owner: EnumDerivation\n    domain_of:\n    - ElementDerivation\n    range: ElementDerivation\n  mixins:\n    name: mixins\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: linkml:mixins\n    multivalued: true\n    alias: mixins\n    owner: EnumDerivation\n    domain_of:\n    - ElementDerivation\n    range: ElementDerivation\n    inlined: false\n  value_mappings:\n    name: value_mappings\n    description: A mapping table that is applied directly to mappings, in order of\n      precedence\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: value_mappings\n    owner: EnumDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  expression_to_value_mappings:\n    name: expression_to_value_mappings\n    description: A mapping table in which the keys are expressions\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: expression_to_value_mappings\n    owner: EnumDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  expression_to_expression_mappings:\n    name: expression_to_expression_mappings\n    description: A mapping table in which the keys and values are expressions\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: expression_to_expression_mappings\n    owner: EnumDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  mirror_source:\n    name: mirror_source\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: mirror_source\n    owner: EnumDerivation\n    domain_of:\n    - ElementDerivation\n    range: boolean\n  description:\n    name: description\n    description: description of the specification component\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: dcterms:description\n    alias: description\n    owner: EnumDerivation\n    domain_of:\n    - SpecificationComponent\n    range: string\n  implements:\n    name: implements\n    description: A reference to a specification that this component implements.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: implements\n    owner: EnumDerivation\n    domain_of:\n    - SpecificationComponent\n    range: uriorcurie\n  comments:\n    name: comments\n    description: A list of comments about this component. Comments are free text,\n      and may be used to provide additional information about the component, including\n      instructions for its use.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: rdfs:comment\n    multivalued: true\n    alias: comments\n    owner: EnumDerivation\n    domain_of:\n    - SpecificationComponent\n    range: string\n\n
    "},{"location":"EnumReference/","title":"Type: EnumReference","text":"

    URI: xsd:string

    • base: str

    • uri: xsd:string

    • typeof: string

    "},{"location":"EnumReference/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"EnumReference/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"Float/","title":"Type: Float","text":"

    A real number that conforms to the xsd:float specification

    URI: xsd:float

    • base: float

    • uri: xsd:float

    "},{"location":"Float/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Float/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"Integer/","title":"Type: Integer","text":"

    An integer

    URI: xsd:integer

    • base: int

    • uri: xsd:integer

    "},{"location":"Integer/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Integer/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"Inverse/","title":"Class: Inverse","text":"

    Used for back references in mapping to relational model

    URI: linkmltr:Inverse

     classDiagram\n    class Inverse\n      Inverse : class_name\n\n          Inverse --|> None : class_name\n\n      Inverse : slot_name\n\n          Inverse --|> None : slot_name\n\n\n
    "},{"location":"Inverse/#slots","title":"Slots","text":"Name Cardinality and Range Description Inheritance slot_name 0..1 String direct class_name 0..1 String direct"},{"location":"Inverse/#usages","title":"Usages","text":"used by used in type used SlotDerivation inverse_of range Inverse"},{"location":"Inverse/#aliases","title":"Aliases","text":"
    • backref
    • back_references
    "},{"location":"Inverse/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Inverse/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"Inverse/#mappings","title":"Mappings","text":"Mapping Type Mapped Value self linkmltr:Inverse native linkmltr:Inverse"},{"location":"Inverse/#linkml-source","title":"LinkML Source","text":""},{"location":"Inverse/#direct","title":"Direct","text":"
    name: Inverse\ndescription: Used for back references in mapping to relational model\nfrom_schema: https://w3id.org/linkml/transformer\naliases:\n- backref\n- back_references\nattributes:\n  slot_name:\n    name: slot_name\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n  class_name:\n    name: class_name\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n\n
    "},{"location":"Inverse/#induced","title":"Induced","text":"
    name: Inverse\ndescription: Used for back references in mapping to relational model\nfrom_schema: https://w3id.org/linkml/transformer\naliases:\n- backref\n- back_references\nattributes:\n  slot_name:\n    name: slot_name\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: slot_name\n    owner: Inverse\n    domain_of:\n    - Inverse\n  class_name:\n    name: class_name\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: class_name\n    owner: Inverse\n    domain_of:\n    - Inverse\n\n
    "},{"location":"Jsonpath/","title":"Type: Jsonpath","text":"

    A string encoding a JSON Path. The value of the string MUST conform to JSON Point syntax and SHOULD dereference to zero or more valid objects within the current instance document when encoded in tree form.

    URI: xsd:string

    • base: str

    • uri: xsd:string

    • repr: str

    "},{"location":"Jsonpath/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Jsonpath/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"Jsonpointer/","title":"Type: Jsonpointer","text":"

    A string encoding a JSON Pointer. The value of the string MUST conform to JSON Point syntax and SHOULD dereference to a valid object within the current instance document when encoded in tree form.

    URI: xsd:string

    • base: str

    • uri: xsd:string

    • repr: str

    "},{"location":"Jsonpointer/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Jsonpointer/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"KeyVal/","title":"Class: KeyVal","text":"

    URI: linkmltr:KeyVal

     classDiagram\n    class KeyVal\n      KeyVal : key\n\n          KeyVal --|> None : key\n\n      KeyVal : value\n\n          KeyVal --|> Any : value\n\n\n
    "},{"location":"KeyVal/#slots","title":"Slots","text":"Name Cardinality and Range Description Inheritance key 1..1 String direct value 0..1 Any direct"},{"location":"KeyVal/#usages","title":"Usages","text":"used by used in type used TransformationSpecification prefixes range KeyVal ElementDerivation value_mappings range KeyVal ElementDerivation expression_to_value_mappings range KeyVal ElementDerivation expression_to_expression_mappings range KeyVal ClassDerivation value_mappings range KeyVal ClassDerivation expression_to_value_mappings range KeyVal ClassDerivation expression_to_expression_mappings range KeyVal SlotDerivation value_mappings range KeyVal SlotDerivation expression_to_value_mappings range KeyVal SlotDerivation expression_to_expression_mappings range KeyVal EnumDerivation value_mappings range KeyVal EnumDerivation expression_to_value_mappings range KeyVal EnumDerivation expression_to_expression_mappings range KeyVal PermissibleValueDerivation value_mappings range KeyVal PermissibleValueDerivation expression_to_value_mappings range KeyVal PermissibleValueDerivation expression_to_expression_mappings range KeyVal PrefixDerivation value_mappings range KeyVal PrefixDerivation expression_to_value_mappings range KeyVal PrefixDerivation expression_to_expression_mappings range KeyVal"},{"location":"KeyVal/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"KeyVal/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"KeyVal/#mappings","title":"Mappings","text":"Mapping Type Mapped Value self linkmltr:KeyVal native linkmltr:KeyVal"},{"location":"KeyVal/#linkml-source","title":"LinkML Source","text":""},{"location":"KeyVal/#direct","title":"Direct","text":"
    name: KeyVal\nfrom_schema: https://w3id.org/linkml/transformer\nattributes:\n  key:\n    name: key\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    key: true\n    required: true\n  value:\n    name: value\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: Any\n\n
    "},{"location":"KeyVal/#induced","title":"Induced","text":"
    name: KeyVal\nfrom_schema: https://w3id.org/linkml/transformer\nattributes:\n  key:\n    name: key\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    key: true\n    alias: key\n    owner: KeyVal\n    domain_of:\n    - KeyVal\n    required: true\n  value:\n    name: value\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: value\n    owner: KeyVal\n    domain_of:\n    - KeyVal\n    range: Any\n\n
    "},{"location":"Ncname/","title":"Type: Ncname","text":"

    Prefix part of CURIE

    URI: xsd:string

    • base: NCName

    • uri: xsd:string

    • repr: str

    "},{"location":"Ncname/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Ncname/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"Nodeidentifier/","title":"Type: Nodeidentifier","text":"

    A URI, CURIE or BNODE that represents a node in a model.

    URI: shex:nonLiteral

    • base: NodeIdentifier

    • uri: shex:nonLiteral

    • repr: str

    "},{"location":"Nodeidentifier/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Nodeidentifier/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"Objectidentifier/","title":"Type: Objectidentifier","text":"

    A URI or CURIE that represents an object in the model.

    URI: shex:iri

    • base: ElementIdentifier

    • uri: shex:iri

    • repr: str

    "},{"location":"Objectidentifier/#comments","title":"Comments","text":"
    • Used for inheritance and type checking
    "},{"location":"Objectidentifier/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Objectidentifier/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"PermissibleValueDerivation/","title":"Class: PermissibleValueDerivation","text":"

    A specification of how to derive the value of a PV from a source enum

    URI: linkmltr:PermissibleValueDerivation

     classDiagram\n    class PermissibleValueDerivation\n      ElementDerivation <|-- PermissibleValueDerivation\n\n      PermissibleValueDerivation : comments\n\n      PermissibleValueDerivation : copy_directives\n\n          PermissibleValueDerivation --|> CopyDirective : copy_directives\n\n      PermissibleValueDerivation : description\n\n          PermissibleValueDerivation --|> None : description\n\n      PermissibleValueDerivation : expr\n\n      PermissibleValueDerivation : expression_to_expression_mappings\n\n          PermissibleValueDerivation --|> KeyVal : expression_to_expression_mappings\n\n      PermissibleValueDerivation : expression_to_value_mappings\n\n          PermissibleValueDerivation --|> KeyVal : expression_to_value_mappings\n\n      PermissibleValueDerivation : hide\n\n      PermissibleValueDerivation : implements\n\n      PermissibleValueDerivation : is_a\n\n          PermissibleValueDerivation --|> ElementDerivation : is_a\n\n      PermissibleValueDerivation : mirror_source\n\n      PermissibleValueDerivation : mixins\n\n          PermissibleValueDerivation --|> ElementDerivation : mixins\n\n      PermissibleValueDerivation : name\n\n          PermissibleValueDerivation --|> None : name\n\n      PermissibleValueDerivation : overrides\n\n          PermissibleValueDerivation --|> Any : overrides\n\n      PermissibleValueDerivation : populated_from\n\n      PermissibleValueDerivation : sources\n\n      PermissibleValueDerivation : value_mappings\n\n          PermissibleValueDerivation --|> KeyVal : value_mappings\n\n\n
    "},{"location":"PermissibleValueDerivation/#inheritance","title":"Inheritance","text":"
    • SpecificationComponent
      • ElementDerivation
        • PermissibleValueDerivation
    "},{"location":"PermissibleValueDerivation/#slots","title":"Slots","text":"Name Cardinality and Range Description Inheritance name 1..1 String Target permissible value text direct expr 0..1 String direct populated_from 0..1 String Source permissible value direct sources 0..* String direct hide 0..1 Boolean direct copy_directives 0..* CopyDirective ElementDerivation overrides 0..1 Any overrides source schema slots ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation value_mappings 0..* KeyVal A mapping table that is applied directly to mappings, in order of precedence ElementDerivation expression_to_value_mappings 0..* KeyVal A mapping table in which the keys are expressions ElementDerivation expression_to_expression_mappings 0..* KeyVal A mapping table in which the keys and values are expressions ElementDerivation mirror_source 0..1 Boolean ElementDerivation description 0..1 String description of the specification component SpecificationComponent implements 0..* Uriorcurie A reference to a specification that this component implements SpecificationComponent comments 0..* String A list of comments about this component SpecificationComponent"},{"location":"PermissibleValueDerivation/#usages","title":"Usages","text":"used by used in type used EnumDerivation permissible_value_derivations range PermissibleValueDerivation"},{"location":"PermissibleValueDerivation/#todos","title":"TODOs","text":"
    • this is currently under-specified. We will need boolean combinators to express if-then-else
    "},{"location":"PermissibleValueDerivation/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"PermissibleValueDerivation/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"PermissibleValueDerivation/#mappings","title":"Mappings","text":"Mapping Type Mapped Value self linkmltr:PermissibleValueDerivation native linkmltr:PermissibleValueDerivation"},{"location":"PermissibleValueDerivation/#linkml-source","title":"LinkML Source","text":""},{"location":"PermissibleValueDerivation/#direct","title":"Direct","text":"
    name: PermissibleValueDerivation\ndescription: A specification of how to derive the value of a PV from a source enum\ntodos:\n- this is currently under-specified. We will need boolean combinators to express if-then-else\nfrom_schema: https://w3id.org/linkml/transformer\nis_a: ElementDerivation\nattributes:\n  name:\n    name: name\n    description: Target permissible value text\n    from_schema: https://w3id.org/linkml/transformer\n    key: true\n    required: true\n  expr:\n    name: expr\n    from_schema: https://w3id.org/linkml/transformer\n    range: string\n  populated_from:\n    name: populated_from\n    description: Source permissible value\n    from_schema: https://w3id.org/linkml/transformer\n    range: string\n  sources:\n    name: sources\n    from_schema: https://w3id.org/linkml/transformer\n    multivalued: true\n    range: string\n  hide:\n    name: hide\n    from_schema: https://w3id.org/linkml/transformer\n    range: boolean\n\n
    "},{"location":"PermissibleValueDerivation/#induced","title":"Induced","text":"
    name: PermissibleValueDerivation\ndescription: A specification of how to derive the value of a PV from a source enum\ntodos:\n- this is currently under-specified. We will need boolean combinators to express if-then-else\nfrom_schema: https://w3id.org/linkml/transformer\nis_a: ElementDerivation\nattributes:\n  name:\n    name: name\n    description: Target permissible value text\n    from_schema: https://w3id.org/linkml/transformer\n    key: true\n    alias: name\n    owner: PermissibleValueDerivation\n    domain_of:\n    - ElementDerivation\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    required: true\n  expr:\n    name: expr\n    from_schema: https://w3id.org/linkml/transformer\n    alias: expr\n    owner: PermissibleValueDerivation\n    domain_of:\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    range: string\n  populated_from:\n    name: populated_from\n    description: Source permissible value\n    from_schema: https://w3id.org/linkml/transformer\n    alias: populated_from\n    owner: PermissibleValueDerivation\n    domain_of:\n    - ClassDerivation\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    range: string\n  sources:\n    name: sources\n    from_schema: https://w3id.org/linkml/transformer\n    multivalued: true\n    alias: sources\n    owner: PermissibleValueDerivation\n    domain_of:\n    - ClassDerivation\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    range: string\n  hide:\n    name: hide\n    from_schema: https://w3id.org/linkml/transformer\n    alias: hide\n    owner: PermissibleValueDerivation\n    domain_of:\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    range: boolean\n  copy_directives:\n    name: copy_directives\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: copy_directives\n    owner: PermissibleValueDerivation\n    domain_of:\n    - ElementDerivation\n    range: CopyDirective\n    inlined: true\n  overrides:\n    name: overrides\n    description: overrides source schema slots\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: overrides\n    owner: PermissibleValueDerivation\n    domain_of:\n    - ElementDerivation\n    range: Any\n  is_a:\n    name: is_a\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: linkml:is_a\n    alias: is_a\n    owner: PermissibleValueDerivation\n    domain_of:\n    - ElementDerivation\n    range: ElementDerivation\n  mixins:\n    name: mixins\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: linkml:mixins\n    multivalued: true\n    alias: mixins\n    owner: PermissibleValueDerivation\n    domain_of:\n    - ElementDerivation\n    range: ElementDerivation\n    inlined: false\n  value_mappings:\n    name: value_mappings\n    description: A mapping table that is applied directly to mappings, in order of\n      precedence\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: value_mappings\n    owner: PermissibleValueDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  expression_to_value_mappings:\n    name: expression_to_value_mappings\n    description: A mapping table in which the keys are expressions\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: expression_to_value_mappings\n    owner: PermissibleValueDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  expression_to_expression_mappings:\n    name: expression_to_expression_mappings\n    description: A mapping table in which the keys and values are expressions\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: expression_to_expression_mappings\n    owner: PermissibleValueDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  mirror_source:\n    name: mirror_source\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: mirror_source\n    owner: PermissibleValueDerivation\n    domain_of:\n    - ElementDerivation\n    range: boolean\n  description:\n    name: description\n    description: description of the specification component\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: dcterms:description\n    alias: description\n    owner: PermissibleValueDerivation\n    domain_of:\n    - SpecificationComponent\n    range: string\n  implements:\n    name: implements\n    description: A reference to a specification that this component implements.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: implements\n    owner: PermissibleValueDerivation\n    domain_of:\n    - SpecificationComponent\n    range: uriorcurie\n  comments:\n    name: comments\n    description: A list of comments about this component. Comments are free text,\n      and may be used to provide additional information about the component, including\n      instructions for its use.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: rdfs:comment\n    multivalued: true\n    alias: comments\n    owner: PermissibleValueDerivation\n    domain_of:\n    - SpecificationComponent\n    range: string\n\n
    "},{"location":"PrefixDerivation/","title":"Class: PrefixDerivation","text":"

    URI: linkmltr:PrefixDerivation

     classDiagram\n    class PrefixDerivation\n      ElementDerivation <|-- PrefixDerivation\n\n      PrefixDerivation : comments\n\n      PrefixDerivation : copy_directives\n\n          PrefixDerivation --|> CopyDirective : copy_directives\n\n      PrefixDerivation : description\n\n          PrefixDerivation --|> None : description\n\n      PrefixDerivation : expression_to_expression_mappings\n\n          PrefixDerivation --|> KeyVal : expression_to_expression_mappings\n\n      PrefixDerivation : expression_to_value_mappings\n\n          PrefixDerivation --|> KeyVal : expression_to_value_mappings\n\n      PrefixDerivation : implements\n\n      PrefixDerivation : is_a\n\n          PrefixDerivation --|> ElementDerivation : is_a\n\n      PrefixDerivation : mirror_source\n\n      PrefixDerivation : mixins\n\n          PrefixDerivation --|> ElementDerivation : mixins\n\n      PrefixDerivation : name\n\n          PrefixDerivation --|> None : name\n\n      PrefixDerivation : overrides\n\n          PrefixDerivation --|> Any : overrides\n\n      PrefixDerivation : value_mappings\n\n          PrefixDerivation --|> KeyVal : value_mappings\n\n\n
    "},{"location":"PrefixDerivation/#inheritance","title":"Inheritance","text":"
    • SpecificationComponent
      • ElementDerivation
        • PrefixDerivation
    "},{"location":"PrefixDerivation/#slots","title":"Slots","text":"Name Cardinality and Range Description Inheritance name 1..1 String Name of the element in the target schema ElementDerivation copy_directives 0..* CopyDirective ElementDerivation overrides 0..1 Any overrides source schema slots ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation value_mappings 0..* KeyVal A mapping table that is applied directly to mappings, in order of precedence ElementDerivation expression_to_value_mappings 0..* KeyVal A mapping table in which the keys are expressions ElementDerivation expression_to_expression_mappings 0..* KeyVal A mapping table in which the keys and values are expressions ElementDerivation mirror_source 0..1 Boolean ElementDerivation description 0..1 String description of the specification component SpecificationComponent implements 0..* Uriorcurie A reference to a specification that this component implements SpecificationComponent comments 0..* String A list of comments about this component SpecificationComponent"},{"location":"PrefixDerivation/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"PrefixDerivation/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"PrefixDerivation/#mappings","title":"Mappings","text":"Mapping Type Mapped Value self linkmltr:PrefixDerivation native linkmltr:PrefixDerivation"},{"location":"PrefixDerivation/#linkml-source","title":"LinkML Source","text":""},{"location":"PrefixDerivation/#direct","title":"Direct","text":"
    name: PrefixDerivation\nfrom_schema: https://w3id.org/linkml/transformer\nis_a: ElementDerivation\n\n
    "},{"location":"PrefixDerivation/#induced","title":"Induced","text":"
    name: PrefixDerivation\nfrom_schema: https://w3id.org/linkml/transformer\nis_a: ElementDerivation\nattributes:\n  name:\n    name: name\n    description: Name of the element in the target schema\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    key: true\n    alias: name\n    owner: PrefixDerivation\n    domain_of:\n    - ElementDerivation\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    range: string\n    required: true\n  copy_directives:\n    name: copy_directives\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: copy_directives\n    owner: PrefixDerivation\n    domain_of:\n    - ElementDerivation\n    range: CopyDirective\n    inlined: true\n  overrides:\n    name: overrides\n    description: overrides source schema slots\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: overrides\n    owner: PrefixDerivation\n    domain_of:\n    - ElementDerivation\n    range: Any\n  is_a:\n    name: is_a\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: linkml:is_a\n    alias: is_a\n    owner: PrefixDerivation\n    domain_of:\n    - ElementDerivation\n    range: ElementDerivation\n  mixins:\n    name: mixins\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: linkml:mixins\n    multivalued: true\n    alias: mixins\n    owner: PrefixDerivation\n    domain_of:\n    - ElementDerivation\n    range: ElementDerivation\n    inlined: false\n  value_mappings:\n    name: value_mappings\n    description: A mapping table that is applied directly to mappings, in order of\n      precedence\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: value_mappings\n    owner: PrefixDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  expression_to_value_mappings:\n    name: expression_to_value_mappings\n    description: A mapping table in which the keys are expressions\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: expression_to_value_mappings\n    owner: PrefixDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  expression_to_expression_mappings:\n    name: expression_to_expression_mappings\n    description: A mapping table in which the keys and values are expressions\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: expression_to_expression_mappings\n    owner: PrefixDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  mirror_source:\n    name: mirror_source\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: mirror_source\n    owner: PrefixDerivation\n    domain_of:\n    - ElementDerivation\n    range: boolean\n  description:\n    name: description\n    description: description of the specification component\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: dcterms:description\n    alias: description\n    owner: PrefixDerivation\n    domain_of:\n    - SpecificationComponent\n    range: string\n  implements:\n    name: implements\n    description: A reference to a specification that this component implements.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: implements\n    owner: PrefixDerivation\n    domain_of:\n    - SpecificationComponent\n    range: uriorcurie\n  comments:\n    name: comments\n    description: A list of comments about this component. Comments are free text,\n      and may be used to provide additional information about the component, including\n      instructions for its use.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: rdfs:comment\n    multivalued: true\n    alias: comments\n    owner: PrefixDerivation\n    domain_of:\n    - SpecificationComponent\n    range: string\n\n
    "},{"location":"SerializationSyntaxType/","title":"Enum: SerializationSyntaxType","text":"

    URI: SerializationSyntaxType

    "},{"location":"SerializationSyntaxType/#permissible-values","title":"Permissible Values","text":"Value Meaning Description JSON None YAML None TURTLE None"},{"location":"SerializationSyntaxType/#slots","title":"Slots","text":"Name Description syntax"},{"location":"SerializationSyntaxType/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"SerializationSyntaxType/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"SerializationSyntaxType/#linkml-source","title":"LinkML Source","text":"
    name: SerializationSyntaxType\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\npermissible_values:\n  JSON:\n    text: JSON\n  YAML:\n    text: YAML\n  TURTLE:\n    text: TURTLE\n\n
    "},{"location":"SlotDerivation/","title":"Class: SlotDerivation","text":"

    A specification of how to derive the value of a target slot from a source slot

    URI: linkmltr:SlotDerivation

     classDiagram\n    class SlotDerivation\n      ElementDerivation <|-- SlotDerivation\n\n      SlotDerivation : cast_collection_as\n\n          SlotDerivation --|> CollectionType : cast_collection_as\n\n      SlotDerivation : comments\n\n      SlotDerivation : copy_directives\n\n          SlotDerivation --|> CopyDirective : copy_directives\n\n      SlotDerivation : derived_from\n\n      SlotDerivation : description\n\n          SlotDerivation --|> None : description\n\n      SlotDerivation : dictionary_key\n\n      SlotDerivation : expr\n\n      SlotDerivation : expression_to_expression_mappings\n\n          SlotDerivation --|> KeyVal : expression_to_expression_mappings\n\n      SlotDerivation : expression_to_value_mappings\n\n          SlotDerivation --|> KeyVal : expression_to_value_mappings\n\n      SlotDerivation : hide\n\n      SlotDerivation : implements\n\n      SlotDerivation : inverse_of\n\n          SlotDerivation --|> Inverse : inverse_of\n\n      SlotDerivation : is_a\n\n          SlotDerivation --|> ElementDerivation : is_a\n\n      SlotDerivation : mirror_source\n\n      SlotDerivation : mixins\n\n          SlotDerivation --|> ElementDerivation : mixins\n\n      SlotDerivation : name\n\n          SlotDerivation --|> None : name\n\n      SlotDerivation : overrides\n\n          SlotDerivation --|> Any : overrides\n\n      SlotDerivation : populated_from\n\n      SlotDerivation : range\n\n      SlotDerivation : sources\n\n      SlotDerivation : stringification\n\n          SlotDerivation --|> StringificationConfiguration : stringification\n\n      SlotDerivation : type_designator\n\n      SlotDerivation : unit_conversion\n\n          SlotDerivation --|> UnitConversionConfiguration : unit_conversion\n\n      SlotDerivation : value_mappings\n\n          SlotDerivation --|> KeyVal : value_mappings\n\n\n
    "},{"location":"SlotDerivation/#inheritance","title":"Inheritance","text":"
    • SpecificationComponent
      • ElementDerivation
        • SlotDerivation
    "},{"location":"SlotDerivation/#slots","title":"Slots","text":"Name Cardinality and Range Description Inheritance name 1..1 String Target slot name direct populated_from 0..1 SlotReference Source slot name direct sources 0..* SlotReference direct derived_from 0..* SlotReference Source slots that are used to derive this slot direct expr 0..1 String An expression to be evaluated on the source object to derive the target slot direct range 0..1 String direct unit_conversion 0..1 UnitConversionConfiguration direct inverse_of 0..1 Inverse Used to specify a class-slot tuple that is the inverse of the derived/target ... direct hide 0..1 Boolean True if this is suppressed direct type_designator 0..1 Boolean direct cast_collection_as 0..1 CollectionType direct dictionary_key 0..1 String direct stringification 0..1 StringificationConfiguration direct copy_directives 0..* CopyDirective ElementDerivation overrides 0..1 Any overrides source schema slots ElementDerivation is_a 0..1 ElementDerivation ElementDerivation mixins 0..* ElementDerivation ElementDerivation value_mappings 0..* KeyVal A mapping table that is applied directly to mappings, in order of precedence ElementDerivation expression_to_value_mappings 0..* KeyVal A mapping table in which the keys are expressions ElementDerivation expression_to_expression_mappings 0..* KeyVal A mapping table in which the keys and values are expressions ElementDerivation mirror_source 0..1 Boolean ElementDerivation description 0..1 String description of the specification component SpecificationComponent implements 0..* Uriorcurie A reference to a specification that this component implements SpecificationComponent comments 0..* String A list of comments about this component SpecificationComponent"},{"location":"SlotDerivation/#usages","title":"Usages","text":"used by used in type used TransformationSpecification slot_derivations range SlotDerivation ClassDerivation slot_derivations range SlotDerivation"},{"location":"SlotDerivation/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"SlotDerivation/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"SlotDerivation/#mappings","title":"Mappings","text":"Mapping Type Mapped Value self linkmltr:SlotDerivation native linkmltr:SlotDerivation"},{"location":"SlotDerivation/#linkml-source","title":"LinkML Source","text":""},{"location":"SlotDerivation/#direct","title":"Direct","text":"
    name: SlotDerivation\ndescription: A specification of how to derive the value of a target slot from a source\n  slot\nfrom_schema: https://w3id.org/linkml/transformer\nis_a: ElementDerivation\nattributes:\n  name:\n    name: name\n    description: Target slot name\n    from_schema: https://w3id.org/linkml/transformer\n    key: true\n    required: true\n  populated_from:\n    name: populated_from\n    description: Source slot name\n    from_schema: https://w3id.org/linkml/transformer\n    range: SlotReference\n  sources:\n    name: sources\n    from_schema: https://w3id.org/linkml/transformer\n    multivalued: true\n    range: SlotReference\n  derived_from:\n    name: derived_from\n    description: Source slots that are used to derive this slot. This can be computed\n      from the expr, if the expr is declarative.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    range: SlotReference\n  expr:\n    name: expr\n    description: An expression to be evaluated on the source object to derive the\n      target slot. Should be specified using the LinkML expression language.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: string\n  range:\n    name: range\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: linkml:range\n    range: string\n  unit_conversion:\n    name: unit_conversion\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: UnitConversionConfiguration\n  inverse_of:\n    name: inverse_of\n    description: Used to specify a class-slot tuple that is the inverse of the derived/target\n      slot. This is used primarily for mapping to relational databases or formalisms\n      that do not allow multiple values. The class representing the repeated element\n      has a foreign key slot inserted in that 'back references' the original multivalued\n      slot.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: Inverse\n  hide:\n    name: hide\n    description: True if this is suppressed\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: boolean\n  type_designator:\n    name: type_designator\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: boolean\n  cast_collection_as:\n    name: cast_collection_as\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: CollectionType\n  dictionary_key:\n    name: dictionary_key\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: string\n  stringification:\n    name: stringification\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: StringificationConfiguration\n\n
    "},{"location":"SlotDerivation/#induced","title":"Induced","text":"
    name: SlotDerivation\ndescription: A specification of how to derive the value of a target slot from a source\n  slot\nfrom_schema: https://w3id.org/linkml/transformer\nis_a: ElementDerivation\nattributes:\n  name:\n    name: name\n    description: Target slot name\n    from_schema: https://w3id.org/linkml/transformer\n    key: true\n    alias: name\n    owner: SlotDerivation\n    domain_of:\n    - ElementDerivation\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    required: true\n  populated_from:\n    name: populated_from\n    description: Source slot name\n    from_schema: https://w3id.org/linkml/transformer\n    alias: populated_from\n    owner: SlotDerivation\n    domain_of:\n    - ClassDerivation\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    range: SlotReference\n  sources:\n    name: sources\n    from_schema: https://w3id.org/linkml/transformer\n    multivalued: true\n    alias: sources\n    owner: SlotDerivation\n    domain_of:\n    - ClassDerivation\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    range: SlotReference\n  derived_from:\n    name: derived_from\n    description: Source slots that are used to derive this slot. This can be computed\n      from the expr, if the expr is declarative.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: derived_from\n    owner: SlotDerivation\n    domain_of:\n    - SlotDerivation\n    range: SlotReference\n  expr:\n    name: expr\n    description: An expression to be evaluated on the source object to derive the\n      target slot. Should be specified using the LinkML expression language.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: expr\n    owner: SlotDerivation\n    domain_of:\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    range: string\n  range:\n    name: range\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: linkml:range\n    alias: range\n    owner: SlotDerivation\n    domain_of:\n    - SlotDerivation\n    range: string\n  unit_conversion:\n    name: unit_conversion\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: unit_conversion\n    owner: SlotDerivation\n    domain_of:\n    - SlotDerivation\n    range: UnitConversionConfiguration\n  inverse_of:\n    name: inverse_of\n    description: Used to specify a class-slot tuple that is the inverse of the derived/target\n      slot. This is used primarily for mapping to relational databases or formalisms\n      that do not allow multiple values. The class representing the repeated element\n      has a foreign key slot inserted in that 'back references' the original multivalued\n      slot.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: inverse_of\n    owner: SlotDerivation\n    domain_of:\n    - SlotDerivation\n    range: Inverse\n  hide:\n    name: hide\n    description: True if this is suppressed\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: hide\n    owner: SlotDerivation\n    domain_of:\n    - SlotDerivation\n    - EnumDerivation\n    - PermissibleValueDerivation\n    range: boolean\n  type_designator:\n    name: type_designator\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: type_designator\n    owner: SlotDerivation\n    domain_of:\n    - SlotDerivation\n    range: boolean\n  cast_collection_as:\n    name: cast_collection_as\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: cast_collection_as\n    owner: SlotDerivation\n    domain_of:\n    - SlotDerivation\n    range: CollectionType\n  dictionary_key:\n    name: dictionary_key\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: dictionary_key\n    owner: SlotDerivation\n    domain_of:\n    - SlotDerivation\n    range: string\n  stringification:\n    name: stringification\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: stringification\n    owner: SlotDerivation\n    domain_of:\n    - SlotDerivation\n    range: StringificationConfiguration\n  copy_directives:\n    name: copy_directives\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: copy_directives\n    owner: SlotDerivation\n    domain_of:\n    - ElementDerivation\n    range: CopyDirective\n    inlined: true\n  overrides:\n    name: overrides\n    description: overrides source schema slots\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: overrides\n    owner: SlotDerivation\n    domain_of:\n    - ElementDerivation\n    range: Any\n  is_a:\n    name: is_a\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: linkml:is_a\n    alias: is_a\n    owner: SlotDerivation\n    domain_of:\n    - ElementDerivation\n    range: ElementDerivation\n  mixins:\n    name: mixins\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: linkml:mixins\n    multivalued: true\n    alias: mixins\n    owner: SlotDerivation\n    domain_of:\n    - ElementDerivation\n    range: ElementDerivation\n    inlined: false\n  value_mappings:\n    name: value_mappings\n    description: A mapping table that is applied directly to mappings, in order of\n      precedence\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: value_mappings\n    owner: SlotDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  expression_to_value_mappings:\n    name: expression_to_value_mappings\n    description: A mapping table in which the keys are expressions\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: expression_to_value_mappings\n    owner: SlotDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  expression_to_expression_mappings:\n    name: expression_to_expression_mappings\n    description: A mapping table in which the keys and values are expressions\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: expression_to_expression_mappings\n    owner: SlotDerivation\n    domain_of:\n    - ElementDerivation\n    range: KeyVal\n    inlined: true\n  mirror_source:\n    name: mirror_source\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: mirror_source\n    owner: SlotDerivation\n    domain_of:\n    - ElementDerivation\n    range: boolean\n  description:\n    name: description\n    description: description of the specification component\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: dcterms:description\n    alias: description\n    owner: SlotDerivation\n    domain_of:\n    - SpecificationComponent\n    range: string\n  implements:\n    name: implements\n    description: A reference to a specification that this component implements.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: implements\n    owner: SlotDerivation\n    domain_of:\n    - SpecificationComponent\n    range: uriorcurie\n  comments:\n    name: comments\n    description: A list of comments about this component. Comments are free text,\n      and may be used to provide additional information about the component, including\n      instructions for its use.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: rdfs:comment\n    multivalued: true\n    alias: comments\n    owner: SlotDerivation\n    domain_of:\n    - SpecificationComponent\n    range: string\n\n
    "},{"location":"SlotReference/","title":"Type: SlotReference","text":"

    URI: xsd:string

    • base: str

    • uri: xsd:string

    • typeof: string

    "},{"location":"SlotReference/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"SlotReference/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"Sparqlpath/","title":"Type: Sparqlpath","text":"

    A string encoding a SPARQL Property Path. The value of the string MUST conform to SPARQL syntax and SHOULD dereference to zero or more valid objects within the current instance document when encoded as RDF.

    URI: xsd:string

    • base: str

    • uri: xsd:string

    • repr: str

    "},{"location":"Sparqlpath/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Sparqlpath/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"SpecificationComponent/","title":"Class: SpecificationComponent","text":"
    • NOTE: this is an abstract class and should not be instantiated directly

    URI: linkmltr:SpecificationComponent

     classDiagram\n    class SpecificationComponent\n      SpecificationComponent <|-- TransformationSpecification\n      SpecificationComponent <|-- ElementDerivation\n\n      SpecificationComponent : comments\n\n      SpecificationComponent : description\n\n          SpecificationComponent --|> None : description\n\n      SpecificationComponent : implements\n\n\n
    "},{"location":"SpecificationComponent/#inheritance","title":"Inheritance","text":"
    • SpecificationComponent
      • TransformationSpecification
      • ElementDerivation
    "},{"location":"SpecificationComponent/#slots","title":"Slots","text":"Name Cardinality and Range Description Inheritance description 0..1 String description of the specification component direct implements 0..* Uriorcurie A reference to a specification that this component implements direct comments 0..* String A list of comments about this component direct"},{"location":"SpecificationComponent/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"SpecificationComponent/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"SpecificationComponent/#mappings","title":"Mappings","text":"Mapping Type Mapped Value self linkmltr:SpecificationComponent native linkmltr:SpecificationComponent"},{"location":"SpecificationComponent/#linkml-source","title":"LinkML Source","text":""},{"location":"SpecificationComponent/#direct","title":"Direct","text":"
    name: SpecificationComponent\nfrom_schema: https://w3id.org/linkml/transformer\nabstract: true\nattributes:\n  description:\n    name: description\n    description: description of the specification component\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: dcterms:description\n  implements:\n    name: implements\n    description: A reference to a specification that this component implements.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    range: uriorcurie\n  comments:\n    name: comments\n    description: A list of comments about this component. Comments are free text,\n      and may be used to provide additional information about the component, including\n      instructions for its use.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: rdfs:comment\n    multivalued: true\n    range: string\n\n
    "},{"location":"SpecificationComponent/#induced","title":"Induced","text":"
    name: SpecificationComponent\nfrom_schema: https://w3id.org/linkml/transformer\nabstract: true\nattributes:\n  description:\n    name: description\n    description: description of the specification component\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: dcterms:description\n    alias: description\n    owner: SpecificationComponent\n    domain_of:\n    - SpecificationComponent\n  implements:\n    name: implements\n    description: A reference to a specification that this component implements.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: implements\n    owner: SpecificationComponent\n    domain_of:\n    - SpecificationComponent\n    range: uriorcurie\n  comments:\n    name: comments\n    description: A list of comments about this component. Comments are free text,\n      and may be used to provide additional information about the component, including\n      instructions for its use.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: rdfs:comment\n    multivalued: true\n    alias: comments\n    owner: SpecificationComponent\n    domain_of:\n    - SpecificationComponent\n    range: string\n\n
    "},{"location":"String/","title":"Type: String","text":"

    A character string

    URI: xsd:string

    • base: str

    • uri: xsd:string

    "},{"location":"String/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"String/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"StringificationConfiguration/","title":"Class: StringificationConfiguration","text":"

    URI: linkmltr:StringificationConfiguration

     classDiagram\n    class StringificationConfiguration\n      StringificationConfiguration : delimiter\n\n      StringificationConfiguration : reversed\n\n      StringificationConfiguration : syntax\n\n          StringificationConfiguration --|> SerializationSyntaxType : syntax\n\n\n
    "},{"location":"StringificationConfiguration/#slots","title":"Slots","text":"Name Cardinality and Range Description Inheritance delimiter 0..1 String direct reversed 0..1 Boolean direct syntax 0..1 SerializationSyntaxType direct"},{"location":"StringificationConfiguration/#usages","title":"Usages","text":"used by used in type used SlotDerivation stringification range StringificationConfiguration"},{"location":"StringificationConfiguration/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"StringificationConfiguration/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"StringificationConfiguration/#mappings","title":"Mappings","text":"Mapping Type Mapped Value self linkmltr:StringificationConfiguration native linkmltr:StringificationConfiguration"},{"location":"StringificationConfiguration/#linkml-source","title":"LinkML Source","text":""},{"location":"StringificationConfiguration/#direct","title":"Direct","text":"
    name: StringificationConfiguration\nfrom_schema: https://w3id.org/linkml/transformer\nattributes:\n  delimiter:\n    name: delimiter\n    examples:\n    - value: ','\n    - value: '|'\n    - value: ;\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: string\n  reversed:\n    name: reversed\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: boolean\n  syntax:\n    name: syntax\n    examples:\n    - value: json\n    - value: yaml\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: SerializationSyntaxType\n\n
    "},{"location":"StringificationConfiguration/#induced","title":"Induced","text":"
    name: StringificationConfiguration\nfrom_schema: https://w3id.org/linkml/transformer\nattributes:\n  delimiter:\n    name: delimiter\n    examples:\n    - value: ','\n    - value: '|'\n    - value: ;\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: delimiter\n    owner: StringificationConfiguration\n    domain_of:\n    - StringificationConfiguration\n    range: string\n  reversed:\n    name: reversed\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: reversed\n    owner: StringificationConfiguration\n    domain_of:\n    - StringificationConfiguration\n    range: boolean\n  syntax:\n    name: syntax\n    examples:\n    - value: json\n    - value: yaml\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: syntax\n    owner: StringificationConfiguration\n    domain_of:\n    - StringificationConfiguration\n    range: SerializationSyntaxType\n\n
    "},{"location":"Time/","title":"Type: Time","text":"

    A time object represents a (local) time of day, independent of any particular day

    URI: xsd:time

    • base: XSDTime

    • uri: xsd:time

    • repr: str

    "},{"location":"Time/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Time/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"TransformationSpecification/","title":"Class: TransformationSpecification","text":"

    A collection of mappings between source and target classes

    URI: linkmltr:TransformationSpecification

     classDiagram\n    class TransformationSpecification\n      SpecificationComponent <|-- TransformationSpecification\n\n      TransformationSpecification : class_derivations\n\n          TransformationSpecification --|> ClassDerivation : class_derivations\n\n      TransformationSpecification : comments\n\n      TransformationSpecification : description\n\n          TransformationSpecification --|> None : description\n\n      TransformationSpecification : enum_derivations\n\n          TransformationSpecification --|> EnumDerivation : enum_derivations\n\n      TransformationSpecification : id\n\n          TransformationSpecification --|> None : id\n\n      TransformationSpecification : implements\n\n      TransformationSpecification : prefixes\n\n          TransformationSpecification --|> KeyVal : prefixes\n\n      TransformationSpecification : slot_derivations\n\n          TransformationSpecification --|> SlotDerivation : slot_derivations\n\n      TransformationSpecification : source_schema\n\n          TransformationSpecification --|> None : source_schema\n\n      TransformationSpecification : target_schema\n\n          TransformationSpecification --|> None : target_schema\n\n      TransformationSpecification : title\n\n          TransformationSpecification --|> None : title\n\n\n
    "},{"location":"TransformationSpecification/#inheritance","title":"Inheritance","text":"
    • SpecificationComponent
      • TransformationSpecification
    "},{"location":"TransformationSpecification/#slots","title":"Slots","text":"Name Cardinality and Range Description Inheritance id 0..1 String Unique identifier for this transformation specification direct title 0..1 String human readable title for this transformation specification direct prefixes 0..* KeyVal maps prefixes to URL expansions direct source_schema 0..1 String name of the schema that describes the source (input) objects direct target_schema 0..1 String name of the schema that describes the target (output) objects direct class_derivations 0..* ClassDerivation Instructions on how to derive a set of classes in the target schema from clas... direct enum_derivations 0..* EnumDerivation Instructions on how to derive a set of enums in the target schema direct slot_derivations 0..* SlotDerivation Instructions on how to derive a set of top level slots in the target schema direct description 0..1 String description of the specification component SpecificationComponent implements 0..* Uriorcurie A reference to a specification that this component implements SpecificationComponent comments 0..* String A list of comments about this component SpecificationComponent"},{"location":"TransformationSpecification/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"TransformationSpecification/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"TransformationSpecification/#mappings","title":"Mappings","text":"Mapping Type Mapped Value self linkmltr:TransformationSpecification native linkmltr:TransformationSpecification"},{"location":"TransformationSpecification/#linkml-source","title":"LinkML Source","text":""},{"location":"TransformationSpecification/#direct","title":"Direct","text":"
    name: TransformationSpecification\ndescription: A collection of mappings between source and target classes\nfrom_schema: https://w3id.org/linkml/transformer\nis_a: SpecificationComponent\nattributes:\n  id:\n    name: id\n    description: Unique identifier for this transformation specification\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: schema:identifier\n  title:\n    name: title\n    description: human readable title for this transformation specification\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: dcterms:title\n  prefixes:\n    name: prefixes\n    description: maps prefixes to URL expansions\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: sh:declare\n    multivalued: true\n    range: KeyVal\n    inlined: true\n  source_schema:\n    name: source_schema\n    description: name of the schema that describes the source (input) objects\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n  target_schema:\n    name: target_schema\n    description: name of the schema that describes the target (output) objects\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n  class_derivations:\n    name: class_derivations\n    description: Instructions on how to derive a set of classes in the target schema\n      from classes in the source schema.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    range: ClassDerivation\n    inlined: true\n  enum_derivations:\n    name: enum_derivations\n    description: Instructions on how to derive a set of enums in the target schema\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    range: EnumDerivation\n    inlined: true\n  slot_derivations:\n    name: slot_derivations\n    description: Instructions on how to derive a set of top level slots in the target\n      schema\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    range: SlotDerivation\n    inlined: true\ntree_root: true\n\n
    "},{"location":"TransformationSpecification/#induced","title":"Induced","text":"
    name: TransformationSpecification\ndescription: A collection of mappings between source and target classes\nfrom_schema: https://w3id.org/linkml/transformer\nis_a: SpecificationComponent\nattributes:\n  id:\n    name: id\n    description: Unique identifier for this transformation specification\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: schema:identifier\n    alias: id\n    owner: TransformationSpecification\n    domain_of:\n    - TransformationSpecification\n  title:\n    name: title\n    description: human readable title for this transformation specification\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: dcterms:title\n    alias: title\n    owner: TransformationSpecification\n    domain_of:\n    - TransformationSpecification\n  prefixes:\n    name: prefixes\n    description: maps prefixes to URL expansions\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: sh:declare\n    multivalued: true\n    alias: prefixes\n    owner: TransformationSpecification\n    domain_of:\n    - TransformationSpecification\n    range: KeyVal\n    inlined: true\n  source_schema:\n    name: source_schema\n    description: name of the schema that describes the source (input) objects\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: source_schema\n    owner: TransformationSpecification\n    domain_of:\n    - TransformationSpecification\n  target_schema:\n    name: target_schema\n    description: name of the schema that describes the target (output) objects\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: target_schema\n    owner: TransformationSpecification\n    domain_of:\n    - TransformationSpecification\n  class_derivations:\n    name: class_derivations\n    description: Instructions on how to derive a set of classes in the target schema\n      from classes in the source schema.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: class_derivations\n    owner: TransformationSpecification\n    domain_of:\n    - TransformationSpecification\n    range: ClassDerivation\n    inlined: true\n  enum_derivations:\n    name: enum_derivations\n    description: Instructions on how to derive a set of enums in the target schema\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: enum_derivations\n    owner: TransformationSpecification\n    domain_of:\n    - TransformationSpecification\n    range: EnumDerivation\n    inlined: true\n  slot_derivations:\n    name: slot_derivations\n    description: Instructions on how to derive a set of top level slots in the target\n      schema\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: slot_derivations\n    owner: TransformationSpecification\n    domain_of:\n    - TransformationSpecification\n    - ClassDerivation\n    range: SlotDerivation\n    inlined: true\n  description:\n    name: description\n    description: description of the specification component\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: dcterms:description\n    alias: description\n    owner: TransformationSpecification\n    domain_of:\n    - SpecificationComponent\n    range: string\n  implements:\n    name: implements\n    description: A reference to a specification that this component implements.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    multivalued: true\n    alias: implements\n    owner: TransformationSpecification\n    domain_of:\n    - SpecificationComponent\n    range: uriorcurie\n  comments:\n    name: comments\n    description: A list of comments about this component. Comments are free text,\n      and may be used to provide additional information about the component, including\n      instructions for its use.\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    slot_uri: rdfs:comment\n    multivalued: true\n    alias: comments\n    owner: TransformationSpecification\n    domain_of:\n    - SpecificationComponent\n    range: string\ntree_root: true\n\n
    "},{"location":"UnitConversionConfiguration/","title":"Class: UnitConversionConfiguration","text":"

    URI: linkmltr:UnitConversionConfiguration

     classDiagram\n    class UnitConversionConfiguration\n      UnitConversionConfiguration : source_magnitude_slot\n\n          UnitConversionConfiguration --|> None : source_magnitude_slot\n\n      UnitConversionConfiguration : source_unit\n\n          UnitConversionConfiguration --|> None : source_unit\n\n      UnitConversionConfiguration : source_unit_scheme\n\n      UnitConversionConfiguration : source_unit_slot\n\n          UnitConversionConfiguration --|> None : source_unit_slot\n\n      UnitConversionConfiguration : target_magnitude_slot\n\n          UnitConversionConfiguration --|> None : target_magnitude_slot\n\n      UnitConversionConfiguration : target_unit\n\n          UnitConversionConfiguration --|> None : target_unit\n\n      UnitConversionConfiguration : target_unit_scheme\n\n      UnitConversionConfiguration : target_unit_slot\n\n          UnitConversionConfiguration --|> None : target_unit_slot\n\n\n
    "},{"location":"UnitConversionConfiguration/#slots","title":"Slots","text":"Name Cardinality and Range Description Inheritance target_unit 0..1 String direct target_unit_scheme 0..1 String direct source_unit 0..1 String direct source_unit_scheme 0..1 String direct source_unit_slot 0..1 String direct source_magnitude_slot 0..1 String direct target_unit_slot 0..1 String direct target_magnitude_slot 0..1 String direct"},{"location":"UnitConversionConfiguration/#usages","title":"Usages","text":"used by used in type used SlotDerivation unit_conversion range UnitConversionConfiguration"},{"location":"UnitConversionConfiguration/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"UnitConversionConfiguration/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"UnitConversionConfiguration/#mappings","title":"Mappings","text":"Mapping Type Mapped Value self linkmltr:UnitConversionConfiguration native linkmltr:UnitConversionConfiguration"},{"location":"UnitConversionConfiguration/#linkml-source","title":"LinkML Source","text":""},{"location":"UnitConversionConfiguration/#direct","title":"Direct","text":"
    name: UnitConversionConfiguration\nfrom_schema: https://w3id.org/linkml/transformer\nattributes:\n  target_unit:\n    name: target_unit\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n  target_unit_scheme:\n    name: target_unit_scheme\n    examples:\n    - value: ucum\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: string\n  source_unit:\n    name: source_unit\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n  source_unit_scheme:\n    name: source_unit_scheme\n    examples:\n    - value: ucum\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    range: string\n  source_unit_slot:\n    name: source_unit_slot\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n  source_magnitude_slot:\n    name: source_magnitude_slot\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n  target_unit_slot:\n    name: target_unit_slot\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n  target_magnitude_slot:\n    name: target_magnitude_slot\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n\n
    "},{"location":"UnitConversionConfiguration/#induced","title":"Induced","text":"
    name: UnitConversionConfiguration\nfrom_schema: https://w3id.org/linkml/transformer\nattributes:\n  target_unit:\n    name: target_unit\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: target_unit\n    owner: UnitConversionConfiguration\n    domain_of:\n    - UnitConversionConfiguration\n  target_unit_scheme:\n    name: target_unit_scheme\n    examples:\n    - value: ucum\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: target_unit_scheme\n    owner: UnitConversionConfiguration\n    domain_of:\n    - UnitConversionConfiguration\n    range: string\n  source_unit:\n    name: source_unit\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: source_unit\n    owner: UnitConversionConfiguration\n    domain_of:\n    - UnitConversionConfiguration\n  source_unit_scheme:\n    name: source_unit_scheme\n    examples:\n    - value: ucum\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: source_unit_scheme\n    owner: UnitConversionConfiguration\n    domain_of:\n    - UnitConversionConfiguration\n    range: string\n  source_unit_slot:\n    name: source_unit_slot\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: source_unit_slot\n    owner: UnitConversionConfiguration\n    domain_of:\n    - UnitConversionConfiguration\n  source_magnitude_slot:\n    name: source_magnitude_slot\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: source_magnitude_slot\n    owner: UnitConversionConfiguration\n    domain_of:\n    - UnitConversionConfiguration\n  target_unit_slot:\n    name: target_unit_slot\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: target_unit_slot\n    owner: UnitConversionConfiguration\n    domain_of:\n    - UnitConversionConfiguration\n  target_magnitude_slot:\n    name: target_magnitude_slot\n    from_schema: https://w3id.org/linkml/transformer\n    rank: 1000\n    alias: target_magnitude_slot\n    owner: UnitConversionConfiguration\n    domain_of:\n    - UnitConversionConfiguration\n\n
    "},{"location":"Uri/","title":"Type: Uri","text":"

    a complete URI

    URI: xsd:anyURI

    • base: URI

    • uri: xsd:anyURI

    • repr: str

    "},{"location":"Uri/#comments","title":"Comments","text":"
    • in RDF serializations a slot with range of uri is treated as a literal or type xsd:anyURI unless it is an identifier or a reference to an identifier, in which case it is translated directly to a node
    "},{"location":"Uri/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Uri/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"Uriorcurie/","title":"Type: Uriorcurie","text":"

    a URI or a CURIE

    URI: xsd:anyURI

    • base: URIorCURIE

    • uri: xsd:anyURI

    • repr: str

    "},{"location":"Uriorcurie/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"Uriorcurie/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"about/","title":"LinkML-Transformer","text":""},{"location":"add/","title":"Slot: add","text":"

    URI: linkmltr:add

    "},{"location":"add/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot CopyDirective Instructs a Schema Mapper in how to map to a target schema no"},{"location":"add/#properties","title":"Properties","text":"
    • Range: Any
    "},{"location":"add/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"add/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"add/#linkml-source","title":"LinkML Source","text":"
    name: add\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: add\nowner: CopyDirective\ndomain_of:\n- CopyDirective\nrange: Any\n\n
    "},{"location":"alias/","title":"Slot: alias","text":"

    name of the class to be aliased

    URI: linkmltr:alias

    "},{"location":"alias/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot AliasedClass alias-class key value pairs for classes no"},{"location":"alias/#properties","title":"Properties","text":"
    • Range: NONE

    • Required: True

    "},{"location":"alias/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"alias/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"alias/#linkml-source","title":"LinkML Source","text":"
    name: alias\ndescription: name of the class to be aliased\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nkey: true\nalias: alias\nowner: AliasedClass\ndomain_of:\n- AliasedClass\nrequired: true\n\n
    "},{"location":"cast_collection_as/","title":"Slot: cast_collection_as","text":"

    URI: linkmltr:cast_collection_as

    "},{"location":"cast_collection_as/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot SlotDerivation A specification of how to derive the value of a target slot from a source slo... no"},{"location":"cast_collection_as/#properties","title":"Properties","text":"
    • Range: CollectionType
    "},{"location":"cast_collection_as/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"cast_collection_as/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"cast_collection_as/#linkml-source","title":"LinkML Source","text":"
    name: cast_collection_as\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: cast_collection_as\nowner: SlotDerivation\ndomain_of:\n- SlotDerivation\nrange: CollectionType\n\n
    "},{"location":"class_derivations/","title":"Slot: class_derivations","text":"

    Instructions on how to derive a set of classes in the target schema from classes in the source schema.

    URI: linkmltr:class_derivations

    "},{"location":"class_derivations/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot TransformationSpecification A collection of mappings between source and target classes no"},{"location":"class_derivations/#properties","title":"Properties","text":"
    • Range: ClassDerivation

    • Multivalued: True

    "},{"location":"class_derivations/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"class_derivations/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"class_derivations/#linkml-source","title":"LinkML Source","text":"
    name: class_derivations\ndescription: Instructions on how to derive a set of classes in the target schema from\n  classes in the source schema.\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nmultivalued: true\nalias: class_derivations\nowner: TransformationSpecification\ndomain_of:\n- TransformationSpecification\nrange: ClassDerivation\ninlined: true\n\n
    "},{"location":"class_name/","title":"Slot: class_name","text":"

    URI: linkmltr:class_name

    "},{"location":"class_name/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot Inverse Used for back references in mapping to relational model no"},{"location":"class_name/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"class_name/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"class_name/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"class_name/#linkml-source","title":"LinkML Source","text":"
    name: class_name\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: class_name\nowner: Inverse\ndomain_of:\n- Inverse\n\n
    "},{"location":"class_named/","title":"Slot: class_named","text":"

    local alias for the class

    URI: linkmltr:class_named

    "},{"location":"class_named/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot AliasedClass alias-class key value pairs for classes no"},{"location":"class_named/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"class_named/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"class_named/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"class_named/#linkml-source","title":"LinkML Source","text":"
    name: class_named\ndescription: local alias for the class\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: class_named\nowner: AliasedClass\ndomain_of:\n- AliasedClass\n\n
    "},{"location":"comments/","title":"Slot: comments","text":"

    A list of comments about this component. Comments are free text, and may be used to provide additional information about the component, including instructions for its use.

    URI: rdfs:comment

    "},{"location":"comments/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot SpecificationComponent no TransformationSpecification A collection of mappings between source and target classes no ElementDerivation An abstract grouping for classes that provide a specification of how to deri... no ClassDerivation A specification of how to derive a target class from a source class no SlotDerivation A specification of how to derive the value of a target slot from a source slo... no EnumDerivation A specification of how to derive the value of a target enum from a source enu... no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum no PrefixDerivation no"},{"location":"comments/#properties","title":"Properties","text":"
    • Range: String

    • Multivalued: True

    "},{"location":"comments/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"comments/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"comments/#linkml-source","title":"LinkML Source","text":"
    name: comments\ndescription: A list of comments about this component. Comments are free text, and\n  may be used to provide additional information about the component, including instructions\n  for its use.\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nslot_uri: rdfs:comment\nmultivalued: true\nalias: comments\nowner: SpecificationComponent\ndomain_of:\n- SpecificationComponent\nrange: string\n\n
    "},{"location":"copy_all/","title":"Slot: copy_all","text":"

    URI: linkmltr:copy_all

    "},{"location":"copy_all/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot CopyDirective Instructs a Schema Mapper in how to map to a target schema no"},{"location":"copy_all/#properties","title":"Properties","text":"
    • Range: Boolean
    "},{"location":"copy_all/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"copy_all/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"copy_all/#linkml-source","title":"LinkML Source","text":"
    name: copy_all\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: copy_all\nowner: CopyDirective\ndomain_of:\n- CopyDirective\nrange: boolean\n\n
    "},{"location":"copy_directives/","title":"Slot: copy_directives","text":"

    URI: linkmltr:copy_directives

    "},{"location":"copy_directives/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot ElementDerivation An abstract grouping for classes that provide a specification of how to deri... no ClassDerivation A specification of how to derive a target class from a source class no SlotDerivation A specification of how to derive the value of a target slot from a source slo... no EnumDerivation A specification of how to derive the value of a target enum from a source enu... no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum no PrefixDerivation no"},{"location":"copy_directives/#properties","title":"Properties","text":"
    • Range: CopyDirective

    • Multivalued: True

    "},{"location":"copy_directives/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"copy_directives/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"copy_directives/#linkml-source","title":"LinkML Source","text":"
    name: copy_directives\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nmultivalued: true\nalias: copy_directives\nowner: ElementDerivation\ndomain_of:\n- ElementDerivation\nrange: CopyDirective\ninlined: true\n\n
    "},{"location":"delimiter/","title":"Slot: delimiter","text":"

    URI: linkmltr:delimiter

    "},{"location":"delimiter/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot StringificationConfiguration no"},{"location":"delimiter/#properties","title":"Properties","text":"
    • Range: String
    "},{"location":"delimiter/#examples","title":"Examples","text":"Value , ;"},{"location":"delimiter/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"delimiter/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"delimiter/#linkml-source","title":"LinkML Source","text":"
    name: delimiter\nexamples:\n- value: ','\n- value: '|'\n- value: ;\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: delimiter\nowner: StringificationConfiguration\ndomain_of:\n- StringificationConfiguration\nrange: string\n\n
    "},{"location":"derived_from/","title":"Slot: derived_from","text":"

    Source slots that are used to derive this slot. This can be computed from the expr, if the expr is declarative.

    URI: linkmltr:derived_from

    "},{"location":"derived_from/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot SlotDerivation A specification of how to derive the value of a target slot from a source slo... no"},{"location":"derived_from/#properties","title":"Properties","text":"
    • Range: SlotReference

    • Multivalued: True

    "},{"location":"derived_from/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"derived_from/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"derived_from/#linkml-source","title":"LinkML Source","text":"
    name: derived_from\ndescription: Source slots that are used to derive this slot. This can be computed\n  from the expr, if the expr is declarative.\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nmultivalued: true\nalias: derived_from\nowner: SlotDerivation\ndomain_of:\n- SlotDerivation\nrange: SlotReference\n\n
    "},{"location":"description/","title":"Slot: description","text":"

    description of the specification component

    URI: dcterms:description

    "},{"location":"description/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot SpecificationComponent no TransformationSpecification A collection of mappings between source and target classes no ElementDerivation An abstract grouping for classes that provide a specification of how to deri... no ClassDerivation A specification of how to derive a target class from a source class no SlotDerivation A specification of how to derive the value of a target slot from a source slo... no EnumDerivation A specification of how to derive the value of a target enum from a source enu... no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum no PrefixDerivation no"},{"location":"description/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"description/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"description/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"description/#linkml-source","title":"LinkML Source","text":"
    name: description\ndescription: description of the specification component\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nslot_uri: dcterms:description\nalias: description\nowner: SpecificationComponent\ndomain_of:\n- SpecificationComponent\n\n
    "},{"location":"dictionary_key/","title":"Slot: dictionary_key","text":"

    URI: linkmltr:dictionary_key

    "},{"location":"dictionary_key/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot SlotDerivation A specification of how to derive the value of a target slot from a source slo... no"},{"location":"dictionary_key/#properties","title":"Properties","text":"
    • Range: String
    "},{"location":"dictionary_key/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"dictionary_key/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"dictionary_key/#linkml-source","title":"LinkML Source","text":"
    name: dictionary_key\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: dictionary_key\nowner: SlotDerivation\ndomain_of:\n- SlotDerivation\nrange: string\n\n
    "},{"location":"element_name/","title":"Slot: element_name","text":"

    URI: linkmltr:element_name

    "},{"location":"element_name/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot CopyDirective Instructs a Schema Mapper in how to map to a target schema no"},{"location":"element_name/#properties","title":"Properties","text":"
    • Range: NONE

    • Required: True

    "},{"location":"element_name/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"element_name/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"element_name/#linkml-source","title":"LinkML Source","text":"
    name: element_name\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nkey: true\nalias: element_name\nowner: CopyDirective\ndomain_of:\n- CopyDirective\nrequired: true\n\n
    "},{"location":"enum_derivations/","title":"Slot: enum_derivations","text":"

    Instructions on how to derive a set of enums in the target schema

    URI: linkmltr:enum_derivations

    "},{"location":"enum_derivations/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot TransformationSpecification A collection of mappings between source and target classes no"},{"location":"enum_derivations/#properties","title":"Properties","text":"
    • Range: EnumDerivation

    • Multivalued: True

    "},{"location":"enum_derivations/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"enum_derivations/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"enum_derivations/#linkml-source","title":"LinkML Source","text":"
    name: enum_derivations\ndescription: Instructions on how to derive a set of enums in the target schema\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nmultivalued: true\nalias: enum_derivations\nowner: TransformationSpecification\ndomain_of:\n- TransformationSpecification\nrange: EnumDerivation\ninlined: true\n\n
    "},{"location":"exclude/","title":"Slot: exclude","text":"

    URI: linkmltr:exclude

    "},{"location":"exclude/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot CopyDirective Instructs a Schema Mapper in how to map to a target schema no"},{"location":"exclude/#properties","title":"Properties","text":"
    • Range: Any
    "},{"location":"exclude/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"exclude/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"exclude/#linkml-source","title":"LinkML Source","text":"
    name: exclude\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: exclude\nowner: CopyDirective\ndomain_of:\n- CopyDirective\nrange: Any\n\n
    "},{"location":"exclude_all/","title":"Slot: exclude_all","text":"

    URI: linkmltr:exclude_all

    "},{"location":"exclude_all/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot CopyDirective Instructs a Schema Mapper in how to map to a target schema no"},{"location":"exclude_all/#properties","title":"Properties","text":"
    • Range: Boolean
    "},{"location":"exclude_all/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"exclude_all/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"exclude_all/#linkml-source","title":"LinkML Source","text":"
    name: exclude_all\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: exclude_all\nowner: CopyDirective\ndomain_of:\n- CopyDirective\nrange: boolean\n\n
    "},{"location":"expr/","title":"Slot: expr","text":"

    URI: linkmltr:expr

    "},{"location":"expr/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot SlotDerivation A specification of how to derive the value of a target slot from a source slo... no EnumDerivation A specification of how to derive the value of a target enum from a source enu... no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum no"},{"location":"expr/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"expr/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"expr/#linkml-source","title":"LinkML Source","text":"
    name: expr\nalias: expr\ndomain_of:\n- SlotDerivation\n- EnumDerivation\n- PermissibleValueDerivation\n\n
    "},{"location":"expression_to_expression_mappings/","title":"Slot: expression_to_expression_mappings","text":"

    A mapping table in which the keys and values are expressions

    URI: linkmltr:expression_to_expression_mappings

    "},{"location":"expression_to_expression_mappings/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot ElementDerivation An abstract grouping for classes that provide a specification of how to deri... no ClassDerivation A specification of how to derive a target class from a source class no SlotDerivation A specification of how to derive the value of a target slot from a source slo... no EnumDerivation A specification of how to derive the value of a target enum from a source enu... no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum no PrefixDerivation no"},{"location":"expression_to_expression_mappings/#properties","title":"Properties","text":"
    • Range: KeyVal

    • Multivalued: True

    "},{"location":"expression_to_expression_mappings/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"expression_to_expression_mappings/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"expression_to_expression_mappings/#linkml-source","title":"LinkML Source","text":"
    name: expression_to_expression_mappings\ndescription: A mapping table in which the keys and values are expressions\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nmultivalued: true\nalias: expression_to_expression_mappings\nowner: ElementDerivation\ndomain_of:\n- ElementDerivation\nrange: KeyVal\ninlined: true\n\n
    "},{"location":"expression_to_value_mappings/","title":"Slot: expression_to_value_mappings","text":"

    A mapping table in which the keys are expressions

    URI: linkmltr:expression_to_value_mappings

    "},{"location":"expression_to_value_mappings/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot ElementDerivation An abstract grouping for classes that provide a specification of how to deri... no ClassDerivation A specification of how to derive a target class from a source class no SlotDerivation A specification of how to derive the value of a target slot from a source slo... no EnumDerivation A specification of how to derive the value of a target enum from a source enu... no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum no PrefixDerivation no"},{"location":"expression_to_value_mappings/#properties","title":"Properties","text":"
    • Range: KeyVal

    • Multivalued: True

    "},{"location":"expression_to_value_mappings/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"expression_to_value_mappings/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"expression_to_value_mappings/#linkml-source","title":"LinkML Source","text":"
    name: expression_to_value_mappings\ndescription: A mapping table in which the keys are expressions\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nmultivalued: true\nalias: expression_to_value_mappings\nowner: ElementDerivation\ndomain_of:\n- ElementDerivation\nrange: KeyVal\ninlined: true\n\n
    "},{"location":"hide/","title":"Slot: hide","text":"

    URI: linkmltr:hide

    "},{"location":"hide/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot SlotDerivation A specification of how to derive the value of a target slot from a source slo... no EnumDerivation A specification of how to derive the value of a target enum from a source enu... no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum no"},{"location":"hide/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"hide/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"hide/#linkml-source","title":"LinkML Source","text":"
    name: hide\nalias: hide\ndomain_of:\n- SlotDerivation\n- EnumDerivation\n- PermissibleValueDerivation\n\n
    "},{"location":"id/","title":"Slot: id","text":"

    Unique identifier for this transformation specification

    URI: schema:identifier

    "},{"location":"id/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot TransformationSpecification A collection of mappings between source and target classes no"},{"location":"id/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"id/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"id/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"id/#linkml-source","title":"LinkML Source","text":"
    name: id\ndescription: Unique identifier for this transformation specification\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nslot_uri: schema:identifier\nalias: id\nowner: TransformationSpecification\ndomain_of:\n- TransformationSpecification\n\n
    "},{"location":"implements/","title":"Slot: implements","text":"

    A reference to a specification that this component implements.

    URI: linkmltr:implements

    "},{"location":"implements/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot SpecificationComponent no TransformationSpecification A collection of mappings between source and target classes no ElementDerivation An abstract grouping for classes that provide a specification of how to deri... no ClassDerivation A specification of how to derive a target class from a source class no SlotDerivation A specification of how to derive the value of a target slot from a source slo... no EnumDerivation A specification of how to derive the value of a target enum from a source enu... no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum no PrefixDerivation no"},{"location":"implements/#properties","title":"Properties","text":"
    • Range: Uriorcurie

    • Multivalued: True

    "},{"location":"implements/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"implements/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"implements/#linkml-source","title":"LinkML Source","text":"
    name: implements\ndescription: A reference to a specification that this component implements.\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nmultivalued: true\nalias: implements\nowner: SpecificationComponent\ndomain_of:\n- SpecificationComponent\nrange: uriorcurie\n\n
    "},{"location":"include/","title":"Slot: include","text":"

    URI: linkmltr:include

    "},{"location":"include/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot CopyDirective Instructs a Schema Mapper in how to map to a target schema no"},{"location":"include/#properties","title":"Properties","text":"
    • Range: Any
    "},{"location":"include/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"include/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"include/#linkml-source","title":"LinkML Source","text":"
    name: include\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: include\nowner: CopyDirective\ndomain_of:\n- CopyDirective\nrange: Any\n\n
    "},{"location":"inverse_of/","title":"Slot: inverse_of","text":"

    Used to specify a class-slot tuple that is the inverse of the derived/target slot. This is used primarily for mapping to relational databases or formalisms that do not allow multiple values. The class representing the repeated element has a foreign key slot inserted in that 'back references' the original multivalued slot.

    URI: linkmltr:inverse_of

    "},{"location":"inverse_of/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot SlotDerivation A specification of how to derive the value of a target slot from a source slo... no"},{"location":"inverse_of/#properties","title":"Properties","text":"
    • Range: Inverse
    "},{"location":"inverse_of/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"inverse_of/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"inverse_of/#linkml-source","title":"LinkML Source","text":"
    name: inverse_of\ndescription: Used to specify a class-slot tuple that is the inverse of the derived/target\n  slot. This is used primarily for mapping to relational databases or formalisms that\n  do not allow multiple values. The class representing the repeated element has a\n  foreign key slot inserted in that 'back references' the original multivalued slot.\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: inverse_of\nowner: SlotDerivation\ndomain_of:\n- SlotDerivation\nrange: Inverse\n\n
    "},{"location":"is_a/","title":"Slot: is_a","text":"

    URI: linkml:is_a

    "},{"location":"is_a/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot ElementDerivation An abstract grouping for classes that provide a specification of how to deri... no ClassDerivation A specification of how to derive a target class from a source class no SlotDerivation A specification of how to derive the value of a target slot from a source slo... no EnumDerivation A specification of how to derive the value of a target enum from a source enu... no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum no PrefixDerivation no"},{"location":"is_a/#properties","title":"Properties","text":"
    • Range: ElementDerivation
    "},{"location":"is_a/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"is_a/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"is_a/#linkml-source","title":"LinkML Source","text":"
    name: is_a\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nslot_uri: linkml:is_a\nalias: is_a\nowner: ElementDerivation\ndomain_of:\n- ElementDerivation\nrange: ElementDerivation\n\n
    "},{"location":"joins/","title":"Slot: joins","text":"

    Additional classes to be joined to derive instances of the target class

    URI: linkmltr:joins

    "},{"location":"joins/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot ClassDerivation A specification of how to derive a target class from a source class no"},{"location":"joins/#properties","title":"Properties","text":"
    • Range: AliasedClass

    • Multivalued: True

    "},{"location":"joins/#comments","title":"Comments","text":"
    • not yet implemented
    "},{"location":"joins/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"joins/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"joins/#linkml-source","title":"LinkML Source","text":"
    name: joins\ndescription: Additional classes to be joined to derive instances of the target class\ncomments:\n- not yet implemented\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nmultivalued: true\nalias: joins\nowner: ClassDerivation\ndomain_of:\n- ClassDerivation\nrange: AliasedClass\ninlined: true\n\n
    "},{"location":"key/","title":"Slot: key","text":"

    URI: linkmltr:key

    "},{"location":"key/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot KeyVal no"},{"location":"key/#properties","title":"Properties","text":"
    • Range: NONE

    • Required: True

    "},{"location":"key/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"key/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"key/#linkml-source","title":"LinkML Source","text":"
    name: key\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nkey: true\nalias: key\nowner: KeyVal\ndomain_of:\n- KeyVal\nrequired: true\n\n
    "},{"location":"mirror_source/","title":"Slot: mirror_source","text":"

    URI: linkmltr:mirror_source

    "},{"location":"mirror_source/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot ElementDerivation An abstract grouping for classes that provide a specification of how to deri... no ClassDerivation A specification of how to derive a target class from a source class no SlotDerivation A specification of how to derive the value of a target slot from a source slo... no EnumDerivation A specification of how to derive the value of a target enum from a source enu... no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum no PrefixDerivation no"},{"location":"mirror_source/#properties","title":"Properties","text":"
    • Range: Boolean
    "},{"location":"mirror_source/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"mirror_source/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"mirror_source/#linkml-source","title":"LinkML Source","text":"
    name: mirror_source\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: mirror_source\nowner: ElementDerivation\ndomain_of:\n- ElementDerivation\nrange: boolean\n\n
    "},{"location":"mixins/","title":"Slot: mixins","text":"

    URI: linkml:mixins

    "},{"location":"mixins/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot ElementDerivation An abstract grouping for classes that provide a specification of how to deri... no ClassDerivation A specification of how to derive a target class from a source class no SlotDerivation A specification of how to derive the value of a target slot from a source slo... no EnumDerivation A specification of how to derive the value of a target enum from a source enu... no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum no PrefixDerivation no"},{"location":"mixins/#properties","title":"Properties","text":"
    • Range: ElementDerivation

    • Multivalued: True

    "},{"location":"mixins/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"mixins/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"mixins/#linkml-source","title":"LinkML Source","text":"
    name: mixins\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nslot_uri: linkml:mixins\nmultivalued: true\nalias: mixins\nowner: ElementDerivation\ndomain_of:\n- ElementDerivation\nrange: ElementDerivation\ninlined: false\n\n
    "},{"location":"name/","title":"Slot: name","text":"

    URI: linkmltr:name

    "},{"location":"name/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot ElementDerivation An abstract grouping for classes that provide a specification of how to deri... no ClassDerivation A specification of how to derive a target class from a source class no SlotDerivation A specification of how to derive the value of a target slot from a source slo... no EnumDerivation A specification of how to derive the value of a target enum from a source enu... no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum no PrefixDerivation no"},{"location":"name/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"name/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"name/#linkml-source","title":"LinkML Source","text":"
    name: name\nalias: name\ndomain_of:\n- ElementDerivation\n- SlotDerivation\n- EnumDerivation\n- PermissibleValueDerivation\n\n
    "},{"location":"overrides/","title":"Slot: overrides","text":"

    overrides source schema slots

    URI: linkmltr:overrides

    "},{"location":"overrides/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot ElementDerivation An abstract grouping for classes that provide a specification of how to deri... no ClassDerivation A specification of how to derive a target class from a source class no SlotDerivation A specification of how to derive the value of a target slot from a source slo... no EnumDerivation A specification of how to derive the value of a target enum from a source enu... no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum no PrefixDerivation no"},{"location":"overrides/#properties","title":"Properties","text":"
    • Range: Any
    "},{"location":"overrides/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"overrides/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"overrides/#linkml-source","title":"LinkML Source","text":"
    name: overrides\ndescription: overrides source schema slots\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: overrides\nowner: ElementDerivation\ndomain_of:\n- ElementDerivation\nrange: Any\n\n
    "},{"location":"permissible_value_derivations/","title":"Slot: permissible_value_derivations","text":"

    Instructions on how to derive a set of PVs in the target schema

    URI: linkmltr:permissible_value_derivations

    "},{"location":"permissible_value_derivations/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot EnumDerivation A specification of how to derive the value of a target enum from a source enu... no"},{"location":"permissible_value_derivations/#properties","title":"Properties","text":"
    • Range: PermissibleValueDerivation

    • Multivalued: True

    "},{"location":"permissible_value_derivations/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"permissible_value_derivations/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"permissible_value_derivations/#linkml-source","title":"LinkML Source","text":"
    name: permissible_value_derivations\ndescription: Instructions on how to derive a set of PVs in the target schema\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nmultivalued: true\nalias: permissible_value_derivations\nowner: EnumDerivation\ndomain_of:\n- EnumDerivation\nrange: PermissibleValueDerivation\ninlined: true\n\n
    "},{"location":"populated_from/","title":"Slot: populated_from","text":"

    URI: linkmltr:populated_from

    "},{"location":"populated_from/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot ClassDerivation A specification of how to derive a target class from a source class no SlotDerivation A specification of how to derive the value of a target slot from a source slo... no EnumDerivation A specification of how to derive the value of a target enum from a source enu... no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum no"},{"location":"populated_from/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"populated_from/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"populated_from/#linkml-source","title":"LinkML Source","text":"
    name: populated_from\nalias: populated_from\ndomain_of:\n- ClassDerivation\n- SlotDerivation\n- EnumDerivation\n- PermissibleValueDerivation\n\n
    "},{"location":"prefixes/","title":"Slot: prefixes","text":"

    maps prefixes to URL expansions

    URI: sh:declare

    "},{"location":"prefixes/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot TransformationSpecification A collection of mappings between source and target classes no"},{"location":"prefixes/#properties","title":"Properties","text":"
    • Range: KeyVal

    • Multivalued: True

    "},{"location":"prefixes/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"prefixes/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"prefixes/#linkml-source","title":"LinkML Source","text":"
    name: prefixes\ndescription: maps prefixes to URL expansions\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nslot_uri: sh:declare\nmultivalued: true\nalias: prefixes\nowner: TransformationSpecification\ndomain_of:\n- TransformationSpecification\nrange: KeyVal\ninlined: true\n\n
    "},{"location":"range/","title":"Slot: range","text":"

    URI: linkml:range

    "},{"location":"range/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot SlotDerivation A specification of how to derive the value of a target slot from a source slo... no"},{"location":"range/#properties","title":"Properties","text":"
    • Range: String
    "},{"location":"range/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"range/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"range/#linkml-source","title":"LinkML Source","text":"
    name: range\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nslot_uri: linkml:range\nalias: range\nowner: SlotDerivation\ndomain_of:\n- SlotDerivation\nrange: string\n\n
    "},{"location":"reversed/","title":"Slot: reversed","text":"

    URI: linkmltr:reversed

    "},{"location":"reversed/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot StringificationConfiguration no"},{"location":"reversed/#properties","title":"Properties","text":"
    • Range: Boolean
    "},{"location":"reversed/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"reversed/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"reversed/#linkml-source","title":"LinkML Source","text":"
    name: reversed\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: reversed\nowner: StringificationConfiguration\ndomain_of:\n- StringificationConfiguration\nrange: boolean\n\n
    "},{"location":"slot_derivations/","title":"Slot: slot_derivations","text":"

    URI: linkmltr:slot_derivations

    "},{"location":"slot_derivations/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot TransformationSpecification A collection of mappings between source and target classes no ClassDerivation A specification of how to derive a target class from a source class no"},{"location":"slot_derivations/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"slot_derivations/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"slot_derivations/#linkml-source","title":"LinkML Source","text":"
    name: slot_derivations\nalias: slot_derivations\ndomain_of:\n- TransformationSpecification\n- ClassDerivation\n\n
    "},{"location":"slot_name/","title":"Slot: slot_name","text":"

    URI: linkmltr:slot_name

    "},{"location":"slot_name/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot Inverse Used for back references in mapping to relational model no"},{"location":"slot_name/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"slot_name/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"slot_name/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"slot_name/#linkml-source","title":"LinkML Source","text":"
    name: slot_name\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: slot_name\nowner: Inverse\ndomain_of:\n- Inverse\n\n
    "},{"location":"source_magnitude_slot/","title":"Slot: source_magnitude_slot","text":"

    URI: linkmltr:source_magnitude_slot

    "},{"location":"source_magnitude_slot/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot UnitConversionConfiguration no"},{"location":"source_magnitude_slot/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"source_magnitude_slot/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"source_magnitude_slot/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"source_magnitude_slot/#linkml-source","title":"LinkML Source","text":"
    name: source_magnitude_slot\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: source_magnitude_slot\nowner: UnitConversionConfiguration\ndomain_of:\n- UnitConversionConfiguration\n\n
    "},{"location":"source_schema/","title":"Slot: source_schema","text":"

    name of the schema that describes the source (input) objects

    URI: linkmltr:source_schema

    "},{"location":"source_schema/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot TransformationSpecification A collection of mappings between source and target classes no"},{"location":"source_schema/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"source_schema/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"source_schema/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"source_schema/#linkml-source","title":"LinkML Source","text":"
    name: source_schema\ndescription: name of the schema that describes the source (input) objects\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: source_schema\nowner: TransformationSpecification\ndomain_of:\n- TransformationSpecification\n\n
    "},{"location":"source_unit/","title":"Slot: source_unit","text":"

    URI: linkmltr:source_unit

    "},{"location":"source_unit/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot UnitConversionConfiguration no"},{"location":"source_unit/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"source_unit/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"source_unit/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"source_unit/#linkml-source","title":"LinkML Source","text":"
    name: source_unit\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: source_unit\nowner: UnitConversionConfiguration\ndomain_of:\n- UnitConversionConfiguration\n\n
    "},{"location":"source_unit_scheme/","title":"Slot: source_unit_scheme","text":"

    URI: linkmltr:source_unit_scheme

    "},{"location":"source_unit_scheme/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot UnitConversionConfiguration no"},{"location":"source_unit_scheme/#properties","title":"Properties","text":"
    • Range: String
    "},{"location":"source_unit_scheme/#examples","title":"Examples","text":"Value ucum"},{"location":"source_unit_scheme/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"source_unit_scheme/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"source_unit_scheme/#linkml-source","title":"LinkML Source","text":"
    name: source_unit_scheme\nexamples:\n- value: ucum\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: source_unit_scheme\nowner: UnitConversionConfiguration\ndomain_of:\n- UnitConversionConfiguration\nrange: string\n\n
    "},{"location":"source_unit_slot/","title":"Slot: source_unit_slot","text":"

    URI: linkmltr:source_unit_slot

    "},{"location":"source_unit_slot/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot UnitConversionConfiguration no"},{"location":"source_unit_slot/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"source_unit_slot/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"source_unit_slot/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"source_unit_slot/#linkml-source","title":"LinkML Source","text":"
    name: source_unit_slot\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: source_unit_slot\nowner: UnitConversionConfiguration\ndomain_of:\n- UnitConversionConfiguration\n\n
    "},{"location":"sources/","title":"Slot: sources","text":"

    URI: linkmltr:sources

    "},{"location":"sources/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot ClassDerivation A specification of how to derive a target class from a source class no SlotDerivation A specification of how to derive the value of a target slot from a source slo... no EnumDerivation A specification of how to derive the value of a target enum from a source enu... no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum no"},{"location":"sources/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"sources/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"sources/#linkml-source","title":"LinkML Source","text":"
    name: sources\nalias: sources\ndomain_of:\n- ClassDerivation\n- SlotDerivation\n- EnumDerivation\n- PermissibleValueDerivation\n\n
    "},{"location":"stringification/","title":"Slot: stringification","text":"

    URI: linkmltr:stringification

    "},{"location":"stringification/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot SlotDerivation A specification of how to derive the value of a target slot from a source slo... no"},{"location":"stringification/#properties","title":"Properties","text":"
    • Range: StringificationConfiguration
    "},{"location":"stringification/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"stringification/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"stringification/#linkml-source","title":"LinkML Source","text":"
    name: stringification\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: stringification\nowner: SlotDerivation\ndomain_of:\n- SlotDerivation\nrange: StringificationConfiguration\n\n
    "},{"location":"syntax/","title":"Slot: syntax","text":"

    URI: linkmltr:syntax

    "},{"location":"syntax/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot StringificationConfiguration no"},{"location":"syntax/#properties","title":"Properties","text":"
    • Range: SerializationSyntaxType
    "},{"location":"syntax/#examples","title":"Examples","text":"Value json yaml"},{"location":"syntax/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"syntax/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"syntax/#linkml-source","title":"LinkML Source","text":"
    name: syntax\nexamples:\n- value: json\n- value: yaml\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: syntax\nowner: StringificationConfiguration\ndomain_of:\n- StringificationConfiguration\nrange: SerializationSyntaxType\n\n
    "},{"location":"target_magnitude_slot/","title":"Slot: target_magnitude_slot","text":"

    URI: linkmltr:target_magnitude_slot

    "},{"location":"target_magnitude_slot/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot UnitConversionConfiguration no"},{"location":"target_magnitude_slot/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"target_magnitude_slot/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"target_magnitude_slot/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"target_magnitude_slot/#linkml-source","title":"LinkML Source","text":"
    name: target_magnitude_slot\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: target_magnitude_slot\nowner: UnitConversionConfiguration\ndomain_of:\n- UnitConversionConfiguration\n\n
    "},{"location":"target_schema/","title":"Slot: target_schema","text":"

    name of the schema that describes the target (output) objects

    URI: linkmltr:target_schema

    "},{"location":"target_schema/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot TransformationSpecification A collection of mappings between source and target classes no"},{"location":"target_schema/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"target_schema/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"target_schema/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"target_schema/#linkml-source","title":"LinkML Source","text":"
    name: target_schema\ndescription: name of the schema that describes the target (output) objects\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: target_schema\nowner: TransformationSpecification\ndomain_of:\n- TransformationSpecification\n\n
    "},{"location":"target_unit/","title":"Slot: target_unit","text":"

    URI: linkmltr:target_unit

    "},{"location":"target_unit/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot UnitConversionConfiguration no"},{"location":"target_unit/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"target_unit/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"target_unit/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"target_unit/#linkml-source","title":"LinkML Source","text":"
    name: target_unit\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: target_unit\nowner: UnitConversionConfiguration\ndomain_of:\n- UnitConversionConfiguration\n\n
    "},{"location":"target_unit_scheme/","title":"Slot: target_unit_scheme","text":"

    URI: linkmltr:target_unit_scheme

    "},{"location":"target_unit_scheme/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot UnitConversionConfiguration no"},{"location":"target_unit_scheme/#properties","title":"Properties","text":"
    • Range: String
    "},{"location":"target_unit_scheme/#examples","title":"Examples","text":"Value ucum"},{"location":"target_unit_scheme/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"target_unit_scheme/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"target_unit_scheme/#linkml-source","title":"LinkML Source","text":"
    name: target_unit_scheme\nexamples:\n- value: ucum\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: target_unit_scheme\nowner: UnitConversionConfiguration\ndomain_of:\n- UnitConversionConfiguration\nrange: string\n\n
    "},{"location":"target_unit_slot/","title":"Slot: target_unit_slot","text":"

    URI: linkmltr:target_unit_slot

    "},{"location":"target_unit_slot/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot UnitConversionConfiguration no"},{"location":"target_unit_slot/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"target_unit_slot/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"target_unit_slot/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"target_unit_slot/#linkml-source","title":"LinkML Source","text":"
    name: target_unit_slot\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: target_unit_slot\nowner: UnitConversionConfiguration\ndomain_of:\n- UnitConversionConfiguration\n\n
    "},{"location":"title/","title":"Slot: title","text":"

    human readable title for this transformation specification

    URI: dcterms:title

    "},{"location":"title/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot TransformationSpecification A collection of mappings between source and target classes no"},{"location":"title/#properties","title":"Properties","text":"
    • Range: NONE
    "},{"location":"title/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"title/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"title/#linkml-source","title":"LinkML Source","text":"
    name: title\ndescription: human readable title for this transformation specification\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nslot_uri: dcterms:title\nalias: title\nowner: TransformationSpecification\ndomain_of:\n- TransformationSpecification\n\n
    "},{"location":"transformer/","title":"transformer","text":"

    Datamodel for LinkML schema transformations.

    A transformer generates instances of a target data model from instances of a source data model. This transformation process is guided by a TransformationSpecification.

    The specification is independent of any one method for transforming data. It allows different approaches, including:

    • direct implementation, transforming python or json objects
    • translation of the specification into SQL commands, to operate on relations
    • translation of the specification into SPARQL CONSTRUCTs, to operate on triples
    • translation into another specification language, such as R2RML

    URI: https://w3id.org/linkml/transformer

    "},{"location":"type_designator/","title":"Slot: type_designator","text":"

    URI: linkmltr:type_designator

    "},{"location":"type_designator/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot SlotDerivation A specification of how to derive the value of a target slot from a source slo... no"},{"location":"type_designator/#properties","title":"Properties","text":"
    • Range: Boolean
    "},{"location":"type_designator/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"type_designator/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"type_designator/#linkml-source","title":"LinkML Source","text":"
    name: type_designator\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: type_designator\nowner: SlotDerivation\ndomain_of:\n- SlotDerivation\nrange: boolean\n\n
    "},{"location":"unit_conversion/","title":"Slot: unit_conversion","text":"

    URI: linkmltr:unit_conversion

    "},{"location":"unit_conversion/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot SlotDerivation A specification of how to derive the value of a target slot from a source slo... no"},{"location":"unit_conversion/#properties","title":"Properties","text":"
    • Range: UnitConversionConfiguration
    "},{"location":"unit_conversion/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"unit_conversion/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"unit_conversion/#linkml-source","title":"LinkML Source","text":"
    name: unit_conversion\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: unit_conversion\nowner: SlotDerivation\ndomain_of:\n- SlotDerivation\nrange: UnitConversionConfiguration\n\n
    "},{"location":"value/","title":"Slot: value","text":"

    URI: linkmltr:value

    "},{"location":"value/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot KeyVal no"},{"location":"value/#properties","title":"Properties","text":"
    • Range: Any
    "},{"location":"value/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"value/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"value/#linkml-source","title":"LinkML Source","text":"
    name: value\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nalias: value\nowner: KeyVal\ndomain_of:\n- KeyVal\nrange: Any\n\n
    "},{"location":"value_mappings/","title":"Slot: value_mappings","text":"

    A mapping table that is applied directly to mappings, in order of precedence

    URI: linkmltr:value_mappings

    "},{"location":"value_mappings/#applicable-classes","title":"Applicable Classes","text":"Name Description Modifies Slot ElementDerivation An abstract grouping for classes that provide a specification of how to deri... no ClassDerivation A specification of how to derive a target class from a source class no SlotDerivation A specification of how to derive the value of a target slot from a source slo... no EnumDerivation A specification of how to derive the value of a target enum from a source enu... no PermissibleValueDerivation A specification of how to derive the value of a PV from a source enum no PrefixDerivation no"},{"location":"value_mappings/#properties","title":"Properties","text":"
    • Range: KeyVal

    • Multivalued: True

    "},{"location":"value_mappings/#identifier-and-mapping-information","title":"Identifier and Mapping Information","text":""},{"location":"value_mappings/#schema-source","title":"Schema Source","text":"
    • from schema: https://w3id.org/linkml/transformer
    "},{"location":"value_mappings/#linkml-source","title":"LinkML Source","text":"
    name: value_mappings\ndescription: A mapping table that is applied directly to mappings, in order of precedence\nfrom_schema: https://w3id.org/linkml/transformer\nrank: 1000\nmultivalued: true\nalias: value_mappings\nowner: ElementDerivation\ndomain_of:\n- ElementDerivation\nrange: KeyVal\ninlined: true\n\n
    "},{"location":"specification/compliance/","title":"Compliance Suite","text":"
    • LinkML-Transformers Compliance Suite
      • Feature Set: test_map_types
      • Feature Set: test_map_collections
      • Feature Set: test_expr
      • Feature Set: test_simple_unit_conversion
      • Feature Set: test_complex_unit_conversion
      • Feature Set: test_stringify
      • Feature Set: test_isomorphic
      • Feature Set: test_join
      • Feature Set: test_map_enum
      • Feature Set: test_inheritance
    "},{"location":"specification/compliance/#linkml-transformers-compliance-suite","title":"LinkML-Transformers Compliance Suite","text":"

    This is the output from running the full compliance test suite.

    It is organized into Feature Sets that test a particular feature or group of features, and combinations of different schemas, input objects, and transformation specifications. This is intended to exhaustively test all combinations of features, and provide informative output.

    Each test is designed to demonstrate:

    • data mapping (transformation)
    • derived schemas
    • inversion (reverse transformation) (in some cases)
    • compliation to other frameworks (coming soon)
    "},{"location":"specification/compliance/#feature-set-test_map_types","title":"Feature Set: test_map_types","text":"

    Test mapping between basic data types.

    This test uses an ultra-minimal schema with a single class and a single attribute, the transformation specification maps that attribute onto itself, with a different type, demonstrating type coercion.

    Some cases will be trivially isomorphic (where source_datatype == target_datatype), but these are executed anyway.

    • source_datatype: linkml datatype of source object
    • target_datatype: linkml datatype of target object
    • source_value: value of source object
    • target_value: expected value of slot in target object
    • invertible: True if the transformation is invertible
    "},{"location":"specification/compliance/#combo-test_map_typesstring-string-foo-foo-true","title":"Combo: test_map_types[string-string-foo-foo-True]","text":"

    Mapping string => string

    Isomorphic mapping: input should equal output

    Source Schema:

    name: types\ndescription: Minimal single-attribute schema for testing datatype mapping\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: string\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        range: string\n\n

    Object Transformation:

    • Source Object:
    s1: foo\n\n
    • Target Object:
    s1: foo\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: string\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        range: string\n\n
    "},{"location":"specification/compliance/#combo-test_map_typesinteger-integer-5-5-true","title":"Combo: test_map_types[integer-integer-5-5-True]","text":"

    Mapping integer => integer

    Isomorphic mapping: input should equal output

    Source Schema:

    name: types\ndescription: Minimal single-attribute schema for testing datatype mapping\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: integer\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        range: integer\n\n

    Object Transformation:

    • Source Object:
    s1: 5\n\n
    • Target Object:
    s1: 5\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: integer\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        range: integer\n\n
    "},{"location":"specification/compliance/#combo-test_map_typesstring-integer-5-5-true","title":"Combo: test_map_types[string-integer-5-5-True]","text":"

    Mapping string => integer

    Should coerce datatype

    Source Schema:

    name: types\ndescription: Minimal single-attribute schema for testing datatype mapping\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: string\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        range: integer\n\n

    Object Transformation:

    • Source Object:
    s1: '5'\n\n
    • Target Object:
    s1: 5\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: integer\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        range: string\n\n
    "},{"location":"specification/compliance/#combo-test_map_typesinteger-float-5-50-true-combo-test_map_typesinteger-float-5-50-true","title":"Combo: test_map_types[integer-float-5-5.0-True] {#combo-test_map_typesinteger-float-5-50-true}","text":"

    Mapping integer => float

    Should coerce datatype

    Source Schema:

    name: types\ndescription: Minimal single-attribute schema for testing datatype mapping\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: integer\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        range: float\n\n

    Object Transformation:

    • Source Object:
    s1: 5\n\n
    • Target Object:
    s1: 5.0\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        range: integer\n\n
    "},{"location":"specification/compliance/#combo-test_map_typesfloat-integer-50-5-true-combo-test_map_typesfloat-integer-50-5-true","title":"Combo: test_map_types[float-integer-5.0-5-True] {#combo-test_map_typesfloat-integer-50-5-true}","text":"

    Mapping float => integer

    Should coerce datatype

    Source Schema:

    name: types\ndescription: Minimal single-attribute schema for testing datatype mapping\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        range: integer\n\n

    Object Transformation:

    • Source Object:
    s1: 5.0\n\n
    • Target Object:
    s1: 5\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: integer\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        range: float\n\n
    "},{"location":"specification/compliance/#combo-test_map_typesfloat-integer-52-5-false-combo-test_map_typesfloat-integer-52-5-false","title":"Combo: test_map_types[float-integer-5.2-5-False] {#combo-test_map_typesfloat-integer-52-5-false}","text":"

    Mapping float => integer

    Should coerce datatype

    Source Schema:

    name: types\ndescription: Minimal single-attribute schema for testing datatype mapping\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        range: integer\n\n

    Object Transformation:

    • Source Object:
    s1: 5.2\n\n
    • Target Object:
    s1: 5\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: integer\n\n
    "},{"location":"specification/compliance/#combo-test_map_typesinteger-boolean-5-true-false","title":"Combo: test_map_types[integer-boolean-5-True-False]","text":"

    Mapping integer => boolean

    Should coerce datatype

    Source Schema:

    name: types\ndescription: Minimal single-attribute schema for testing datatype mapping\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: integer\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        range: boolean\n\n

    Object Transformation:

    • Source Object:
    s1: 5\n\n
    • Target Object:
    s1: true\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: boolean\n\n
    "},{"location":"specification/compliance/#combo-test_map_typesinteger-boolean-0-false-false","title":"Combo: test_map_types[integer-boolean-0-False-False]","text":"

    Mapping integer => boolean

    Should coerce datatype

    Source Schema:

    name: types\ndescription: Minimal single-attribute schema for testing datatype mapping\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: integer\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        range: boolean\n\n

    Object Transformation:

    • Source Object:
    s1: 0\n\n
    • Target Object:
    s1: false\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: boolean\n\n
    "},{"location":"specification/compliance/#feature-set-test_map_collections","title":"Feature Set: test_map_collections","text":"

    Test mapping between collection data types (lists and dicts).

    This makes use of the cast_collection_as construct

    • source_datatype:
    • target_datatype:
    • source_value:
    • target_value:
    • invertible:
    "},{"location":"specification/compliance/#combo-test_map_collectionsstring-string-source_value0-target_value0-true","title":"Combo: test_map_collections[string-string-source_value0-target_value0-True]","text":"

    Mapping string => string

    Isomorphic mapping: input should equal output

    Source Schema:

    name: types\ndescription: Mapping between collection types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      ds:\n        name: ds\n        multivalued: true\n        range: D\n        inlined: true\n        inlined_as_list: true\n    tree_root: true\n  D:\n    name: D\n    attributes:\n      id:\n        name: id\n        identifier: true\n      s1:\n        name: s1\n        range: string\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      ds:\n        name: ds\n        populated_from: ds\n        cast_collection_as: MultiValuedDict\n        dictionary_key: id\n  D:\n    name: D\n    slot_derivations:\n      id:\n        name: id\n        populated_from: id\n      s1:\n        name: s1\n        populated_from: s1\n        range: string\n\n

    Object Transformation:

    • Source Object:
    ds:\n- id: X\n  s1: foo\n- id: Y\n  s1: bar\n\n
    • Target Object:
    ds:\n  X:\n    s1: foo\n  Y:\n    s1: bar\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      ds:\n        name: ds\n        multivalued: true\n        range: D\n        inlined: true\n        inlined_as_list: false\n    tree_root: true\n  D:\n    name: D\n    attributes:\n      id:\n        name: id\n        identifier: true\n        required: true\n      s1:\n        name: s1\n        range: string\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      ds:\n        name: ds\n        populated_from: ds\n        cast_collection_as: MultiValuedList\n  D:\n    name: D\n    populated_from: D\n    slot_derivations:\n      id:\n        name: id\n        populated_from: id\n      s1:\n        name: s1\n        populated_from: s1\n        range: string\n\n
    "},{"location":"specification/compliance/#combo-test_map_collectionsstring-string-source_value1-target_value1-true","title":"Combo: test_map_collections[string-string-source_value1-target_value1-True]","text":"

    Mapping string => string

    Isomorphic mapping: input should equal output

    Source Schema:

    name: types\ndescription: Mapping between collection types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      ds:\n        name: ds\n        multivalued: true\n        range: D\n        inlined: true\n        inlined_as_list: false\n    tree_root: true\n  D:\n    name: D\n    attributes:\n      id:\n        name: id\n        identifier: true\n      s1:\n        name: s1\n        range: string\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      ds:\n        name: ds\n        populated_from: ds\n        cast_collection_as: MultiValuedList\n  D:\n    name: D\n    slot_derivations:\n      id:\n        name: id\n        populated_from: id\n      s1:\n        name: s1\n        populated_from: s1\n        range: string\n\n

    Object Transformation:

    • Source Object:
    ds:\n  X:\n    s1: foo\n  Y:\n    s1: bar\n\n
    • Target Object:
    ds:\n- id: X\n  s1: foo\n- id: Y\n  s1: bar\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      ds:\n        name: ds\n        multivalued: true\n        range: D\n        inlined: true\n        inlined_as_list: true\n    tree_root: true\n  D:\n    name: D\n    attributes:\n      id:\n        name: id\n        identifier: true\n        required: true\n      s1:\n        name: s1\n        range: string\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      ds:\n        name: ds\n        populated_from: ds\n        cast_collection_as: MultiValuedDict\n        dictionary_key: id\n  D:\n    name: D\n    populated_from: D\n    slot_derivations:\n      id:\n        name: id\n        populated_from: id\n      s1:\n        name: s1\n        populated_from: s1\n        range: string\n\n
    "},{"location":"specification/compliance/#feature-set-test_expr","title":"Feature Set: test_expr","text":"

    Test transformation using pythonic expressions.

    This test uses a simple source schema with two slots (s1 and s2). These are combined using a pythonic expression, to populate the only slot in the target schema (called derived).

    The values of s1 and s2 can be numbers or strings.

    If the expression wraps a slot in {...} then the presence of a None forces the entire expression to be None

    Limitations: At this time, the framework cannot generate a complete derived schema or inversion for expressions. This will be fixed in future.

    • expr: pythonic expression
    • source_object: source object
    • target_value: expected value of slot in target object
    "},{"location":"specification/compliance/#combo-test_exprs1-s2-source_object0-11-combo-test_exprs1-s2-source_object0-11","title":"Combo: test_expr[s1 + s2-source_object0-11] {#combo-test_exprs1--s2-source_object0-11}","text":"

    Source Schema:

    name: expr\nid: expr\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: integer\n      s2:\n        name: s2\n        range: integer\n    tree_root: true\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      derived:\n        name: derived\n        expr: s1 + s2\n\n

    Object Transformation:

    • Source Object:
    s1: 5\ns2: 6\n\n
    • Target Object:
    derived: 11\n\n

    Target Schema (Derived):

    name: expr-derived\nid: expr-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: expr-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      derived:\n        name: derived\n    tree_root: true\n\n
    "},{"location":"specification/compliance/#combo-test_exprs1-s2-source_object1-11-combo-test_exprs1-s2-source_object1-11","title":"Combo: test_expr[{s1} + {s2}-source_object1-11] {#combo-test_exprs1--s2-source_object1-11}","text":"

    Source Schema:

    name: expr\nid: expr\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: integer\n      s2:\n        name: s2\n        range: integer\n    tree_root: true\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      derived:\n        name: derived\n        expr: '{s1} + {s2}'\n\n

    Object Transformation:

    • Source Object:
    s1: 5\ns2: 6\n\n
    • Target Object:
    derived: 11\n\n

    Target Schema (Derived):

    name: expr-derived\nid: expr-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: expr-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      derived:\n        name: derived\n    tree_root: true\n\n
    "},{"location":"specification/compliance/#combo-test_exprs1-s2-source_object2-none-combo-test_exprs1-s2-source_object2-none","title":"Combo: test_expr[{s1} + {s2}-source_object2-None] {#combo-test_exprs1--s2-source_object2-none}","text":"

    Source Schema:

    name: expr\nid: expr\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: integer\n    tree_root: true\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      derived:\n        name: derived\n        expr: '{s1} + {s2}'\n\n

    Object Transformation:

    • Source Object:
    s1: 5\n\n
    • Target Object:
    {}\n\n

    Target Schema (Derived):

    name: expr-derived\nid: expr-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: expr-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      derived:\n        name: derived\n    tree_root: true\n\n
    "},{"location":"specification/compliance/#combo-test_exprs1-s2s3-source_object3-11-combo-test_exprs1-s2s3-source_object3-11","title":"Combo: test_expr[s1 + s2.s3-source_object3-11] {#combo-test_exprs1--s2s3-source_object3-11}","text":"

    Source Schema:

    name: expr\nid: expr\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: integer\n      s2:\n        name: s2\n        range: D\n    tree_root: true\n  D:\n    name: D\n    attributes:\n      s3:\n        name: s3\n        range: integer\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      derived:\n        name: derived\n        expr: s1 + s2.s3\n\n

    Object Transformation:

    • Source Object:
    s1: 5\ns2:\n  s3: 6\n\n
    • Target Object:
    derived: 11\n\n

    Target Schema (Derived):

    name: expr-derived\nid: expr-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: expr-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      derived:\n        name: derived\n    tree_root: true\n\n
    "},{"location":"specification/compliance/#combo-test_exprs1-s2s3s4-source_object4-11-combo-test_exprs1-s2s3s4-source_object4-11","title":"Combo: test_expr[s1 + s2.s3.s4-source_object4-11] {#combo-test_exprs1--s2s3s4-source_object4-11}","text":"

    Source Schema:

    name: expr\nid: expr\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: integer\n      s2:\n        name: s2\n        range: D\n    tree_root: true\n  D:\n    name: D\n    attributes:\n      s4:\n        name: s4\n        range: integer\n      s3:\n        name: s3\n        range: D\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      derived:\n        name: derived\n        expr: s1 + s2.s3.s4\n\n

    Object Transformation:

    • Source Object:
    s1: 5\ns2:\n  s3:\n    s4: 6\n\n
    • Target Object:
    derived: 11\n\n

    Target Schema (Derived):

    name: expr-derived\nid: expr-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: expr-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      derived:\n        name: derived\n    tree_root: true\n\n
    "},{"location":"specification/compliance/#combo-test_exprs1-s2-source_object5-ab-combo-test_exprs1-s2-source_object5-ab","title":"Combo: test_expr[s1 + s2-source_object5-ab] {#combo-test_exprs1--s2-source_object5-ab}","text":"

    Source Schema:

    name: expr\nid: expr\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: string\n      s2:\n        name: s2\n        range: string\n    tree_root: true\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      derived:\n        name: derived\n        expr: s1 + s2\n\n

    Object Transformation:

    • Source Object:
    s1: a\ns2: b\n\n
    • Target Object:
    derived: ab\n\n

    Target Schema (Derived):

    name: expr-derived\nid: expr-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: expr-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      derived:\n        name: derived\n    tree_root: true\n\n
    "},{"location":"specification/compliance/#combo-test_exprs1-s2-source_object6-target_value6-combo-test_exprs1-s2-source_object6-target_value6","title":"Combo: test_expr[s1 + s2-source_object6-target_value6] {#combo-test_exprs1--s2-source_object6-target_value6}","text":"

    Source Schema:

    name: expr\nid: expr\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        multivalued: true\n        range: string\n      s2:\n        name: s2\n        multivalued: true\n        range: string\n    tree_root: true\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      derived:\n        name: derived\n        expr: s1 + s2\n\n

    Object Transformation:

    • Source Object:
    s1:\n- a\ns2:\n- b\n\n
    • Target Object:
    derived:\n- a\n- b\n\n

    Target Schema (Derived):

    name: expr-derived\nid: expr-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: expr-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      derived:\n        name: derived\n    tree_root: true\n\n
    "},{"location":"specification/compliance/#combo-test_exprlens1-source_object7-1","title":"Combo: test_expr[len(s1)-source_object7-1]","text":"

    Source Schema:

    name: expr\nid: expr\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        multivalued: true\n        range: string\n    tree_root: true\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      derived:\n        name: derived\n        expr: len(s1)\n\n

    Object Transformation:

    • Source Object:
    s1:\n- a\n\n
    • Target Object:
    derived: 1\n\n

    Target Schema (Derived):

    name: expr-derived\nid: expr-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: expr-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      derived:\n        name: derived\n    tree_root: true\n\n
    "},{"location":"specification/compliance/#combo-test_exprs1-s2-source_object8-true-combo-test_exprs1-s2-source_object8-true","title":"Combo: test_expr[s1 \\< s2-source_object8-True] {#combo-test_exprs1--s2-source_object8-true}","text":"

    Source Schema:

    name: expr\nid: expr\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: integer\n      s2:\n        name: s2\n        range: integer\n    tree_root: true\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      derived:\n        name: derived\n        expr: s1 < s2\n\n

    Object Transformation:

    • Source Object:
    s1: 5\ns2: 6\n\n
    • Target Object:
    derived: true\n\n

    Target Schema (Derived):

    name: expr-derived\nid: expr-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: expr-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      derived:\n        name: derived\n    tree_root: true\n\n
    "},{"location":"specification/compliance/#feature-set-test_simple_unit_conversion","title":"Feature Set: test_simple_unit_conversion","text":"

    Test unit conversion.

    This test uses a simple source schema with a single class and a single attribute, where the attribute is described using the units metaslot.

    The recommended way to describe unit slots in LinkML is with UCUM, but a number of other schemes can be used. We explicitly test for some known cases where UCUM uses non-standard units (e.g. Cel, mo), as well as UCUM-specific syntax (e.g. m.s-1) and extensions (e.g. using annotations like {Cre}).

    Developers note: to run this test, the units extension should be installed:

    poetry install -E units

    This installs the pint framework.

    • source_slot: name of slot in source schema
    • target_slot: name of slot in target schema
    • source_unit: unit of source slot
    • target_unit: unit of target slot
    • source_value: magnitude of source slot (to be converted)
    • target_value: expected magnitude of target slot (output of conversion)
    • err:
    "},{"location":"specification/compliance/#combo-test_simple_unit_conversions1-s1-m-cm-ucum_code-10-1000-none-none-combo-test_simple_unit_conversions1-s1-m-cm-ucum_code-10-1000-none-none","title":"Combo: test_simple_unit_conversion[s1-s1-m-cm-ucum_code-1.0-100.0-None-None] {#combo-test_simple_unit_conversions1-s1-m-cm-ucum_code-10-1000-none-none}","text":"

    Unit Conversion: 1.0 m => 100.0 cm [with s1]

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: m\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: cm\n\n

    Object Transformation:

    • Source Object:
    s1: 1.0\n\n
    • Target Object:
    s1: 100.0\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: cm\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: m\n          target_unit_scheme: ucum_code\n          source_unit: cm\n\n
    "},{"location":"specification/compliance/#combo-test_simple_unit_conversions1-s1-m-cm-symbol-10-1000-none-none-combo-test_simple_unit_conversions1-s1-m-cm-symbol-10-1000-none-none","title":"Combo: test_simple_unit_conversion[s1-s1-m-cm-symbol-1.0-100.0-None-None] {#combo-test_simple_unit_conversions1-s1-m-cm-symbol-10-1000-none-none}","text":"

    Unit Conversion: 1.0 m => 100.0 cm [with s1]

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          symbol: m\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: cm\n\n

    Object Transformation:

    • Source Object:
    s1: 1.0\n\n
    • Target Object:
    s1: 100.0\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: cm\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: m\n          target_unit_scheme: symbol\n          source_unit: cm\n\n
    "},{"location":"specification/compliance/#combo-test_simple_unit_conversions1-s1-m-m-ucum_code-10-10-none-none-combo-test_simple_unit_conversions1-s1-m-m-ucum_code-10-10-none-none","title":"Combo: test_simple_unit_conversion[s1-s1-m-m-ucum_code-1.0-1.0-None-None] {#combo-test_simple_unit_conversions1-s1-m-m-ucum_code-10-10-none-none}","text":"

    Unit Conversion: 1.0 m => 1.0 m [with s1]

    Isomorphic mapping: input should equal output Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: m\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: m\n\n

    Object Transformation:

    • Source Object:
    s1: 1.0\n\n
    • Target Object:
    s1: 1.0\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: m\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: m\n          target_unit_scheme: ucum_code\n          source_unit: m\n\n
    "},{"location":"specification/compliance/#combo-test_simple_unit_conversions1-s1-a-mo-ucum_code-100-1200-none-none-combo-test_simple_unit_conversions1-s1-a-mo-ucum_code-100-1200-none-none","title":"Combo: test_simple_unit_conversion[s1-s1-a-mo-ucum_code-10.0-120.0-None-None] {#combo-test_simple_unit_conversions1-s1-a-mo-ucum_code-100-1200-none-none}","text":"

    Unit Conversion: 10.0 a => 120.0 mo [with s1]

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: a\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: mo\n\n

    Object Transformation:

    • Source Object:
    s1: 10.0\n\n
    • Target Object:
    s1: 120.0\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: mo\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: a\n          target_unit_scheme: ucum_code\n          source_unit: mo\n\n
    "},{"location":"specification/compliance/#combo-test_simple_unit_conversions1-s1-a-mo-symbol-100-none-undefineduniterror-none-combo-test_simple_unit_conversions1-s1-a-mo-symbol-100-none-undefineduniterror-none","title":"Combo: test_simple_unit_conversion[s1-s1-a-mo-symbol-10.0-None-UndefinedUnitError-None] {#combo-test_simple_unit_conversions1-s1-a-mo-symbol-100-none-undefineduniterror-none}","text":"

    Unit Conversion: 10.0 a => None mo [with s1]

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          symbol: a\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: mo\n\n

    Object Transformation:

    Expected Error: UndefinedUnitError

    • Source Object:
    s1: 10.0\n\n
    • Target Object:
    null\n...\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: mo\n\n
    "},{"location":"specification/compliance/#combo-test_simple_unit_conversions1-s1-m-ml-ucum_code-10-none-dimensionalityerror-none-combo-test_simple_unit_conversions1-s1-m-ml-ucum_code-10-none-dimensionalityerror-none","title":"Combo: test_simple_unit_conversion[s1-s1-m-ml-ucum_code-1.0-None-DimensionalityError-None] {#combo-test_simple_unit_conversions1-s1-m-ml-ucum_code-10-none-dimensionalityerror-none}","text":"

    Unit Conversion: 1.0 m => None ml [with s1]

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: m\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: ml\n\n

    Object Transformation:

    Expected Error: DimensionalityError

    • Source Object:
    s1: 1.0\n\n
    • Target Object:
    null\n...\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: ml\n\n
    "},{"location":"specification/compliance/#combo-test_simple_unit_conversions1-s1-m-pinknoodles-ucum_code-10-none-undefineduniterror-none-combo-test_simple_unit_conversions1-s1-m-pinknoodles-ucum_code-10-none-undefineduniterror-none","title":"Combo: test_simple_unit_conversion[s1-s1-m-pinknoodles-ucum_code-1.0-None-UndefinedUnitError-None] {#combo-test_simple_unit_conversions1-s1-m-pinknoodles-ucum_code-10-none-undefineduniterror-none}","text":"

    Unit Conversion: 1.0 m => None pinknoodles [with s1]

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: m\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: pinknoodles\n\n

    Object Transformation:

    Expected Error: UndefinedUnitError

    • Source Object:
    s1: 1.0\n\n
    • Target Object:
    null\n...\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: pinknoodles\n\n
    "},{"location":"specification/compliance/#combo-test_simple_unit_conversions1-s1-ml-m-ucum_code-10-none-dimensionalityerror-none-combo-test_simple_unit_conversions1-s1-ml-m-ucum_code-10-none-dimensionalityerror-none","title":"Combo: test_simple_unit_conversion[s1-s1-ml-m-ucum_code-1.0-None-DimensionalityError-None] {#combo-test_simple_unit_conversions1-s1-ml-m-ucum_code-10-none-dimensionalityerror-none}","text":"

    Unit Conversion: 1.0 ml => None m [with s1]

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: ml\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: m\n\n

    Object Transformation:

    Expected Error: DimensionalityError

    • Source Object:
    s1: 1.0\n\n
    • Target Object:
    null\n...\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: m\n\n
    "},{"location":"specification/compliance/#combo-test_simple_unit_conversions1-s1-pinknoodles-m-ucum_code-10-none-undefineduniterror-none-combo-test_simple_unit_conversions1-s1-pinknoodles-m-ucum_code-10-none-undefineduniterror-none","title":"Combo: test_simple_unit_conversion[s1-s1-pinknoodles-m-ucum_code-1.0-None-UndefinedUnitError-None] {#combo-test_simple_unit_conversions1-s1-pinknoodles-m-ucum_code-10-none-undefineduniterror-none}","text":"

    Unit Conversion: 1.0 pinknoodles => None m [with s1]

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: pinknoodles\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: m\n\n

    Object Transformation:

    Expected Error: UndefinedUnitError

    • Source Object:
    s1: 1.0\n\n
    • Target Object:
    null\n...\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: m\n\n
    "},{"location":"specification/compliance/#combo-test_simple_unit_conversions1-s1-ms-cms-ucum_code-10-1000-none-none-combo-test_simple_unit_conversions1-s1-ms-cms-ucum_code-10-1000-none-none","title":"Combo: test_simple_unit_conversion[s1-s1-m/s-cm/s-ucum_code-1.0-100.0-None-None] {#combo-test_simple_unit_conversions1-s1-ms-cms-ucum_code-10-1000-none-none}","text":"

    Unit Conversion: 1.0 m/s => 100.0 cm/s [with s1]

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: m/s\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: cm/s\n\n

    Object Transformation:

    • Source Object:
    s1: 1.0\n\n
    • Target Object:
    s1: 100.0\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: cm/s\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: m/s\n          target_unit_scheme: ucum_code\n          source_unit: cm/s\n\n
    "},{"location":"specification/compliance/#combo-test_simple_unit_conversions1-s1-ms-1-cms-1-ucum_code-10-1000-none-none-combo-test_simple_unit_conversions1-s1-ms-1-cms-1-ucum_code-10-1000-none-none","title":"Combo: test_simple_unit_conversion[s1-s1-m.s-1-cm.s-1-ucum_code-1.0-100.0-None-None] {#combo-test_simple_unit_conversions1-s1-ms-1-cms-1-ucum_code-10-1000-none-none}","text":"

    Unit Conversion: 1.0 m.s-1 => 100.0 cm.s-1 [with s1]

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: m.s-1\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: cm.s-1\n\n

    Object Transformation:

    • Source Object:
    s1: 1.0\n\n
    • Target Object:
    s1: 100.0\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: cm.s-1\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: m.s-1\n          target_unit_scheme: ucum_code\n          source_unit: cm.s-1\n\n
    "},{"location":"specification/compliance/#combo-test_simple_unit_conversions1-s1-gm2-1-kgm2-1-ucum_code-10-0001-none-none-combo-test_simple_unit_conversions1-s1-gm2-1-kgm2-1-ucum_code-10-0001-none-none","title":"Combo: test_simple_unit_conversion[s1-s1-g.m2-1-kg.m2-1-ucum_code-1.0-0.001-None-None] {#combo-test_simple_unit_conversions1-s1-gm2-1-kgm2-1-ucum_code-10-0001-none-none}","text":"

    Unit Conversion: 1.0 g.m2-1 => 0.001 kg.m2-1 [with s1]

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: g.m2-1\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: kg.m2-1\n\n

    Object Transformation:

    • Source Object:
    s1: 1.0\n\n
    • Target Object:
    s1: 0.001\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: float\n        unit:\n          ucum_code: kg.m2-1\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n        unit_conversion:\n          target_unit: g.m2-1\n          target_unit_scheme: ucum_code\n          source_unit: kg.m2-1\n\n
    "},{"location":"specification/compliance/#combo-test_simple_unit_conversionheight_in_m-height_in_cm-m-cm-ucum_code-10-1000-none-none-combo-test_simple_unit_conversionheight_in_m-height_in_cm-m-cm-ucum_code-10-1000-none-none","title":"Combo: test_simple_unit_conversion[height_in_m-height_in_cm-m-cm-ucum_code-1.0-100.0-None-None] {#combo-test_simple_unit_conversionheight_in_m-height_in_cm-m-cm-ucum_code-10-1000-none-none}","text":"

    Unit Conversion: 1.0 m => 100.0 cm [with height_in_m]

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      height_in_m:\n        name: height_in_m\n        range: float\n        unit:\n          ucum_code: m\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      height_in_cm:\n        name: height_in_cm\n        populated_from: height_in_m\n        unit_conversion:\n          target_unit: cm\n\n

    Object Transformation:

    • Source Object:
    height_in_m: 1.0\n\n
    • Target Object:
    height_in_cm: 100.0\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      height_in_cm:\n        name: height_in_cm\n        range: float\n        unit:\n          ucum_code: cm\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      height_in_m:\n        name: height_in_m\n        populated_from: height_in_cm\n        unit_conversion:\n          target_unit: m\n          target_unit_scheme: ucum_code\n          source_unit: cm\n\n
    "},{"location":"specification/compliance/#feature-set-test_complex_unit_conversion","title":"Feature Set: test_complex_unit_conversion","text":"

    Test unit conversion, from complex object to simple scalar.

    • source_unit:
    • target_unit:
    • source_value:
    • target_value:
    • roundtrip_object:
    • err:
    "},{"location":"specification/compliance/#combo-test_complex_unit_conversionm-cm-10-1000-roundtrip_object0-none-combo-test_complex_unit_conversionm-cm-10-1000-roundtrip_object0-none","title":"Combo: test_complex_unit_conversion[m-cm-1.0-100.0-roundtrip_object0-None] {#combo-test_complex_unit_conversionm-cm-10-1000-roundtrip_object0-none}","text":"

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  Q:\n    name: Q\n    attributes:\n      magnitude:\n        name: magnitude\n        range: float\n      unit:\n        name: unit\n        range: string\n  C:\n    name: C\n    attributes:\n      q:\n        name: q\n        range: Q\n    tree_root: true\n\n

    Transformer Specification:

    class_derivations:\n  D:\n    name: D\n    populated_from: C\n    slot_derivations:\n      q_in_cm:\n        name: q_in_cm\n        populated_from: q\n        unit_conversion:\n          target_unit: cm\n          source_unit_slot: unit\n          source_magnitude_slot: magnitude\n\n

    Object Transformation:

    • Source Object:
    q:\n  magnitude: 1.0\n  unit: m\n\n
    • Target Object:
    q_in_cm: 100.0\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  D:\n    name: D\n    attributes:\n      q_in_cm:\n        name: q_in_cm\n        range: Q\n        unit:\n          ucum_code: cm\n    tree_root: true\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: D\n    slot_derivations:\n      q:\n        name: q\n        populated_from: q_in_cm\n        unit_conversion:\n          source_unit: cm\n          target_unit_slot: unit\n          target_magnitude_slot: magnitude\n\n
    "},{"location":"specification/compliance/#combo-test_complex_unit_conversioncm-cm-1000-1000-roundtrip_object1-none-combo-test_complex_unit_conversioncm-cm-1000-1000-roundtrip_object1-none","title":"Combo: test_complex_unit_conversion[cm-cm-100.0-100.0-roundtrip_object1-None] {#combo-test_complex_unit_conversioncm-cm-1000-1000-roundtrip_object1-none}","text":"

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  Q:\n    name: Q\n    attributes:\n      magnitude:\n        name: magnitude\n        range: float\n      unit:\n        name: unit\n        range: string\n  C:\n    name: C\n    attributes:\n      q:\n        name: q\n        range: Q\n    tree_root: true\n\n

    Transformer Specification:

    class_derivations:\n  D:\n    name: D\n    populated_from: C\n    slot_derivations:\n      q_in_cm:\n        name: q_in_cm\n        populated_from: q\n        unit_conversion:\n          target_unit: cm\n          source_unit_slot: unit\n          source_magnitude_slot: magnitude\n\n

    Object Transformation:

    • Source Object:
    q:\n  magnitude: 100.0\n  unit: cm\n\n
    • Target Object:
    q_in_cm: 100.0\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  D:\n    name: D\n    attributes:\n      q_in_cm:\n        name: q_in_cm\n        range: Q\n        unit:\n          ucum_code: cm\n    tree_root: true\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: D\n    slot_derivations:\n      q:\n        name: q\n        populated_from: q_in_cm\n        unit_conversion:\n          source_unit: cm\n          target_unit_slot: unit\n          target_magnitude_slot: magnitude\n\n
    "},{"location":"specification/compliance/#combo-test_complex_unit_conversioncm-ml-1000-none-none-dimensionalityerror-combo-test_complex_unit_conversioncm-ml-1000-none-none-dimensionalityerror","title":"Combo: test_complex_unit_conversion[cm-ml-100.0-None-None-DimensionalityError] {#combo-test_complex_unit_conversioncm-ml-1000-none-none-dimensionalityerror}","text":"

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  Q:\n    name: Q\n    attributes:\n      magnitude:\n        name: magnitude\n        range: float\n      unit:\n        name: unit\n        range: string\n  C:\n    name: C\n    attributes:\n      q:\n        name: q\n        range: Q\n    tree_root: true\n\n

    Transformer Specification:

    class_derivations:\n  D:\n    name: D\n    populated_from: C\n    slot_derivations:\n      q_in_ml:\n        name: q_in_ml\n        populated_from: q\n        unit_conversion:\n          target_unit: ml\n          source_unit_slot: unit\n          source_magnitude_slot: magnitude\n\n

    Object Transformation:

    Expected Error: DimensionalityError

    • Source Object:
    q:\n  magnitude: 100.0\n  unit: cm\n\n
    • Target Object:
    null\n...\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  D:\n    name: D\n    attributes:\n      q_in_ml:\n        name: q_in_ml\n        range: Q\n        unit:\n          ucum_code: ml\n    tree_root: true\n\n
    "},{"location":"specification/compliance/#combo-test_complex_unit_conversioncm-pinknoodles-1000-none-none-undefineduniterror-combo-test_complex_unit_conversioncm-pinknoodles-1000-none-none-undefineduniterror","title":"Combo: test_complex_unit_conversion[cm-pinknoodles-100.0-None-None-UndefinedUnitError] {#combo-test_complex_unit_conversioncm-pinknoodles-1000-none-none-undefineduniterror}","text":"

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  Q:\n    name: Q\n    attributes:\n      magnitude:\n        name: magnitude\n        range: float\n      unit:\n        name: unit\n        range: string\n  C:\n    name: C\n    attributes:\n      q:\n        name: q\n        range: Q\n    tree_root: true\n\n

    Transformer Specification:

    class_derivations:\n  D:\n    name: D\n    populated_from: C\n    slot_derivations:\n      q_in_pinknoodles:\n        name: q_in_pinknoodles\n        populated_from: q\n        unit_conversion:\n          target_unit: pinknoodles\n          source_unit_slot: unit\n          source_magnitude_slot: magnitude\n\n

    Object Transformation:

    Expected Error: UndefinedUnitError

    • Source Object:
    q:\n  magnitude: 100.0\n  unit: cm\n\n
    • Target Object:
    null\n...\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  D:\n    name: D\n    attributes:\n      q_in_pinknoodles:\n        name: q_in_pinknoodles\n        range: Q\n        unit:\n          ucum_code: pinknoodles\n    tree_root: true\n\n
    "},{"location":"specification/compliance/#feature-set-test_stringify","title":"Feature Set: test_stringify","text":"

    Test compaction of multivalued slots into a string.

    Stringification is primarily intended for mapping from complex nested formats to simple tabular TSV formats, where some of the following methodologies can be used:

    • flattening lists using an (internal) delimiter
    • flattening lists or more complex objects using JSON or YAML
    • delimiter: delimiter to use in stringification
    • source_value: source value (a list)
    • target_value: expected value of slot in target object (a string)
    "},{"location":"specification/compliance/#combo-test_stringify-source_value0-ab","title":"Combo: test_stringify[,-source_value0-a,b]","text":"

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        multivalued: true\n        range: string\n\n

    Transformer Specification:

    class_derivations:\n  D:\n    name: D\n    populated_from: C\n    slot_derivations:\n      s1_verbatim:\n        name: s1_verbatim\n        populated_from: s1\n        stringification:\n          delimiter: ','\n\n

    Object Transformation:

    • Source Object:
    s1:\n- a\n- b\n\n
    • Target Object:
    s1_verbatim: a,b\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  D:\n    name: D\n    attributes:\n      s1_verbatim:\n        name: s1_verbatim\n        multivalued: false\n        range: string\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: D\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1_verbatim\n        stringification:\n          delimiter: ','\n          reversed: true\n\n
    "},{"location":"specification/compliance/#combo-test_stringify-source_value1-ab","title":"Combo: test_stringify[|-source_value1-a|b]","text":"

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        multivalued: true\n        range: string\n\n

    Transformer Specification:

    class_derivations:\n  D:\n    name: D\n    populated_from: C\n    slot_derivations:\n      s1_verbatim:\n        name: s1_verbatim\n        populated_from: s1\n        stringification:\n          delimiter: '|'\n\n

    Object Transformation:

    • Source Object:
    s1:\n- a\n- b\n\n
    • Target Object:
    s1_verbatim: a|b\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  D:\n    name: D\n    attributes:\n      s1_verbatim:\n        name: s1_verbatim\n        multivalued: false\n        range: string\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: D\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1_verbatim\n        stringification:\n          delimiter: '|'\n          reversed: true\n\n
    "},{"location":"specification/compliance/#combo-test_stringify-source_value2-a","title":"Combo: test_stringify[|-source_value2-a]","text":"

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        multivalued: true\n        range: string\n\n

    Transformer Specification:

    class_derivations:\n  D:\n    name: D\n    populated_from: C\n    slot_derivations:\n      s1_verbatim:\n        name: s1_verbatim\n        populated_from: s1\n        stringification:\n          delimiter: '|'\n\n

    Object Transformation:

    • Source Object:
    s1:\n- a\n\n
    • Target Object:
    s1_verbatim: a\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  D:\n    name: D\n    attributes:\n      s1_verbatim:\n        name: s1_verbatim\n        multivalued: false\n        range: string\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: D\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1_verbatim\n        stringification:\n          delimiter: '|'\n          reversed: true\n\n
    "},{"location":"specification/compliance/#combo-test_stringify-source_value3-","title":"Combo: test_stringify[|-source_value3-]","text":"

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        multivalued: true\n        range: string\n\n

    Transformer Specification:

    class_derivations:\n  D:\n    name: D\n    populated_from: C\n    slot_derivations:\n      s1_verbatim:\n        name: s1_verbatim\n        populated_from: s1\n        stringification:\n          delimiter: '|'\n\n

    Object Transformation:

    • Source Object:
    {}\n\n
    • Target Object:
    s1_verbatim: ''\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  D:\n    name: D\n    attributes:\n      s1_verbatim:\n        name: s1_verbatim\n        multivalued: false\n        range: string\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: D\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1_verbatim\n        stringification:\n          delimiter: '|'\n          reversed: true\n\n
    "},{"location":"specification/compliance/#combo-test_stringifyjson-source_value4-a-b","title":"Combo: test_stringify[JSON-source_value4-[\\\"a\\\", \\\"b\\\"]]","text":"

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        multivalued: true\n        range: string\n\n

    Transformer Specification:

    class_derivations:\n  D:\n    name: D\n    populated_from: C\n    slot_derivations:\n      s1_verbatim:\n        name: s1_verbatim\n        populated_from: s1\n        stringification:\n          syntax: JSON\n\n

    Object Transformation:

    • Source Object:
    s1:\n- a\n- b\n\n
    • Target Object:
    s1_verbatim: '[\"a\", \"b\"]'\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  D:\n    name: D\n    attributes:\n      s1_verbatim:\n        name: s1_verbatim\n        multivalued: false\n        range: string\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: D\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1_verbatim\n        stringification:\n          reversed: true\n          syntax: JSON\n\n
    "},{"location":"specification/compliance/#combo-test_stringifyjson-source_value5-","title":"Combo: test_stringify[JSON-source_value5-[]]","text":"

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        multivalued: true\n        range: string\n\n

    Transformer Specification:

    class_derivations:\n  D:\n    name: D\n    populated_from: C\n    slot_derivations:\n      s1_verbatim:\n        name: s1_verbatim\n        populated_from: s1\n        stringification:\n          syntax: JSON\n\n

    Object Transformation:

    • Source Object:
    {}\n\n
    • Target Object:
    s1_verbatim: '[]'\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  D:\n    name: D\n    attributes:\n      s1_verbatim:\n        name: s1_verbatim\n        multivalued: false\n        range: string\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: D\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1_verbatim\n        stringification:\n          reversed: true\n          syntax: JSON\n\n
    "},{"location":"specification/compliance/#combo-test_stringifyyaml-source_value6-a-b","title":"Combo: test_stringify[YAML-source_value6-[a, b]]","text":"

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        multivalued: true\n        range: string\n\n

    Transformer Specification:

    class_derivations:\n  D:\n    name: D\n    populated_from: C\n    slot_derivations:\n      s1_verbatim:\n        name: s1_verbatim\n        populated_from: s1\n        stringification:\n          syntax: YAML\n\n

    Object Transformation:

    • Source Object:
    s1:\n- a\n- b\n\n
    • Target Object:
    s1_verbatim: '[a, b]'\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  D:\n    name: D\n    attributes:\n      s1_verbatim:\n        name: s1_verbatim\n        multivalued: false\n        range: string\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: D\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1_verbatim\n        stringification:\n          reversed: true\n          syntax: YAML\n\n
    "},{"location":"specification/compliance/#feature-set-test_isomorphic","title":"Feature Set: test_isomorphic","text":"

    Test mapping a schema to an identical schema (i.e copy).

    This also tests for the ability to recursively descend a nested structure.

    • source_object:
    • use_expr:
    • supply_source_schema: TODO: always True for now
    "},{"location":"specification/compliance/#combo-test_isomorphictrue-true-source_object0","title":"Combo: test_isomorphic[True-True-source_object0]","text":"

    Source Schema:

    name: isomorphic\nid: isomorphic\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  Container:\n    name: Container\n    attributes:\n      c_list:\n        name: c_list\n        multivalued: true\n        range: C\n      d:\n        name: d\n        range: D\n    tree_root: true\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: string\n      s2:\n        name: s2\n        range: string\n  D:\n    name: D\n    attributes:\n      s3:\n        name: s3\n        range: string\n\n

    Transformer Specification:

    class_derivations:\n  Container:\n    name: Container\n    populated_from: Container\n    slot_derivations:\n      c_list:\n        name: c_list\n        populated_from: c_list\n        range: C\n      d:\n        name: d\n        populated_from: d\n        range: D\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n      s2:\n        name: s2\n        populated_from: s2\n  D:\n    name: D\n    populated_from: D\n    slot_derivations:\n      s3:\n        name: s3\n        expr: s3\n\n

    Object Transformation:

    • Source Object:
    c_list:\n- s1: a\n  s2: b\n- s1: c\n  s2: d\nd:\n  s3: e\n\n
    • Target Object:
    c_list:\n- s1: a\n  s2: b\n- s1: c\n  s2: d\nd:\n  s3: e\n\n

    Target Schema (Derived):

    name: isomorphic-derived\nid: isomorphic-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: isomorphic-derived/\nclasses:\n  Container:\n    name: Container\n    attributes:\n      c_list:\n        name: c_list\n        multivalued: true\n        range: C\n      d:\n        name: d\n        range: D\n    tree_root: true\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: string\n      s2:\n        name: s2\n        range: string\n  D:\n    name: D\n    attributes:\n      s3:\n        name: s3\n        range: string\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  Container:\n    name: Container\n    populated_from: Container\n    slot_derivations:\n      c_list:\n        name: c_list\n        populated_from: c_list\n        range: C\n      d:\n        name: d\n        populated_from: d\n        range: D\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n      s2:\n        name: s2\n        populated_from: s2\n  D:\n    name: D\n    populated_from: D\n    slot_derivations:\n      s3:\n        name: s3\n        populated_from: s3\n\n
    "},{"location":"specification/compliance/#combo-test_isomorphictrue-false-source_object0","title":"Combo: test_isomorphic[True-False-source_object0]","text":"

    Source Schema:

    name: isomorphic\nid: isomorphic\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  Container:\n    name: Container\n    attributes:\n      c_list:\n        name: c_list\n        multivalued: true\n        range: C\n      d:\n        name: d\n        range: D\n    tree_root: true\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: string\n      s2:\n        name: s2\n        range: string\n  D:\n    name: D\n    attributes:\n      s3:\n        name: s3\n        range: string\n\n

    Transformer Specification:

    class_derivations:\n  Container:\n    name: Container\n    populated_from: Container\n    slot_derivations:\n      c_list:\n        name: c_list\n        populated_from: c_list\n        range: C\n      d:\n        name: d\n        populated_from: d\n        range: D\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n      s2:\n        name: s2\n        populated_from: s2\n  D:\n    name: D\n    populated_from: D\n    slot_derivations:\n      s3:\n        name: s3\n        populated_from: s3\n\n

    Object Transformation:

    • Source Object:
    c_list:\n- s1: a\n  s2: b\n- s1: c\n  s2: d\nd:\n  s3: e\n\n
    • Target Object:
    c_list:\n- s1: a\n  s2: b\n- s1: c\n  s2: d\nd:\n  s3: e\n\n

    Target Schema (Derived):

    name: isomorphic-derived\nid: isomorphic-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: isomorphic-derived/\nclasses:\n  Container:\n    name: Container\n    attributes:\n      c_list:\n        name: c_list\n        multivalued: true\n        range: C\n      d:\n        name: d\n        range: D\n    tree_root: true\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: string\n      s2:\n        name: s2\n        range: string\n  D:\n    name: D\n    attributes:\n      s3:\n        name: s3\n        range: string\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  Container:\n    name: Container\n    populated_from: Container\n    slot_derivations:\n      c_list:\n        name: c_list\n        populated_from: c_list\n        range: C\n      d:\n        name: d\n        populated_from: d\n        range: D\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\n      s2:\n        name: s2\n        populated_from: s2\n  D:\n    name: D\n    populated_from: D\n    slot_derivations:\n      s3:\n        name: s3\n        populated_from: s3\n\n
    "},{"location":"specification/compliance/#feature-set-test_join","title":"Feature Set: test_join","text":"

    Test joining two objects into a single object, aka denormalization.

    • source_object: normalized source object
    • target_object: denormalized target object
    • inlined: True if the source objects are inlined
    "},{"location":"specification/compliance/#combo-test_joinsource_object0-target_object0-true","title":"Combo: test_join[source_object0-target_object0-True]","text":"

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  R:\n    name: R\n    attributes:\n      s1:\n        name: s1\n        range: E\n        inlined: true\n      s2:\n        name: s2\n        range: E\n        inlined: true\n    tree_root: true\n  E:\n    name: E\n    attributes:\n      id:\n        name: id\n        identifier: true\n        range: string\n      name:\n        name: name\n        range: string\n\n

    Transformer Specification:

    class_derivations:\n  R:\n    name: R\n    populated_from: R\n    slot_derivations:\n      s1_id:\n        name: s1_id\n        expr: s1.id\n      s1_name:\n        name: s1_name\n        expr: s1.name\n      s2_id:\n        name: s2_id\n        expr: s2.id\n      s2_name:\n        name: s2_name\n        expr: s2.name\n\n

    Object Transformation:

    • Source Object:
    s1:\n  id: x1\n  name: foo\ns2:\n  id: x2\n  name: bar\n\n
    • Target Object:
    s1_id: x1\ns1_name: foo\ns2_id: x2\ns2_name: bar\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  R:\n    name: R\n    attributes:\n      s1_id:\n        name: s1_id\n      s1_name:\n        name: s1_name\n      s2_id:\n        name: s2_id\n      s2_name:\n        name: s2_name\n    tree_root: true\n\n
    "},{"location":"specification/compliance/#combo-test_joinsource_object0-target_object0-false","title":"Combo: test_join[source_object0-target_object0-False]","text":"

    Source Schema:

    name: types\nid: types\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  R:\n    name: R\n    attributes:\n      s1:\n        name: s1\n        range: E\n        inlined: false\n      s2:\n        name: s2\n        range: E\n        inlined: false\n    tree_root: false\n  E:\n    name: E\n    attributes:\n      id:\n        name: id\n        identifier: true\n        range: string\n      name:\n        name: name\n        range: string\n  Container:\n    name: Container\n    attributes:\n      r_list:\n        name: r_list\n        multivalued: true\n        range: R\n      e_list:\n        name: e_list\n        multivalued: true\n        range: E\n        inlined_as_list: true\n    tree_root: true\n\n

    Transformer Specification:

    class_derivations:\n  R:\n    name: R\n    populated_from: R\n    slot_derivations:\n      s1_id:\n        name: s1_id\n        expr: s1.id\n      s1_name:\n        name: s1_name\n        expr: s1.name\n      s2_id:\n        name: s2_id\n        expr: s2.id\n      s2_name:\n        name: s2_name\n        expr: s2.name\n  Container:\n    name: Container\n    populated_from: Container\n    slot_derivations:\n      r_list:\n        name: r_list\n        populated_from: r_list\n\n

    Object Transformation:

    • Source Object:
    r_list:\n- s1: x1\n  s2: x2\ne_list:\n- id: x1\n  name: foo\n- id: x2\n  name: bar\n\n
    • Target Object:
    r_list:\n- s1_id: x1\n  s1_name: foo\n  s2_id: x2\n  s2_name: bar\n\n

    Target Schema (Derived):

    name: types-derived\nid: types-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: types-derived/\nclasses:\n  R:\n    name: R\n    attributes:\n      s1_id:\n        name: s1_id\n      s1_name:\n        name: s1_name\n      s2_id:\n        name: s2_id\n      s2_name:\n        name: s2_name\n    tree_root: false\n  Container:\n    name: Container\n    attributes:\n      r_list:\n        name: r_list\n        multivalued: true\n        range: R\n    tree_root: true\n\n
    "},{"location":"specification/compliance/#feature-set-test_map_enum","title":"Feature Set: test_map_enum","text":"

    Test mapping between enum values.

    Currently this only supports simple dictionary-style mapping between permissible values, akin to SSSOM, but in future additional expressivity will be supported, including:

    • mapping ranges to categorical values
    • boolean/branching logic
    • source_value:
    • mapping:
    • target_value:
    "},{"location":"specification/compliance/#combo-test_map_enuma-mapping0-b-false","title":"Combo: test_map_enum[A-mapping0-B-False]","text":"

    Source Schema:

    name: enums\nid: enums\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nenums:\n  E:\n    name: E\n    permissible_values:\n      A:\n        text: A\n      B:\n        text: B\n      C:\n        text: C\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: E\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\nenum_derivations:\n  E:\n    name: E\n    mirror_source: false\n    populated_from: E\n    permissible_value_derivations:\n      B:\n        name: B\n        populated_from: A\n\n

    Object Transformation:

    • Source Object:
    s1: A\n\n
    • Target Object:
    s1: B\n\n

    Target Schema (Derived):

    name: enums-derived\nid: enums-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: enums-derived/\nenums:\n  E:\n    name: E\n    permissible_values:\n      A:\n        text: A\n      B:\n        text: B\n      C:\n        text: C\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: E\n\n

    Inverted Transformation Specification (Derived):

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\nenum_derivations:\n  E:\n    name: E\n    populated_from: E\n    permissible_value_derivations:\n      A:\n        name: A\n        populated_from: B\n\n
    "},{"location":"specification/compliance/#combo-test_map_enumz-mapping1-none-false","title":"Combo: test_map_enum[Z-mapping1-None-False]","text":"

    Source Schema:

    name: enums\nid: enums\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nenums:\n  E:\n    name: E\n    permissible_values:\n      A:\n        text: A\n      B:\n        text: B\n      C:\n        text: C\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: E\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\nenum_derivations:\n  E:\n    name: E\n    mirror_source: false\n    populated_from: E\n    permissible_value_derivations:\n      B:\n        name: B\n        populated_from: A\n\n

    Object Transformation:

    • Source Object:
    s1: Z\n\n
    • Target Object:
    {}\n\n

    Target Schema (Derived):

    name: enums-derived\nid: enums-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: enums-derived/\nenums:\n  E:\n    name: E\n    permissible_values:\n      A:\n        text: A\n      B:\n        text: B\n      C:\n        text: C\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: E\n\n
    "},{"location":"specification/compliance/#combo-test_map_enumc-mapping2-c-true","title":"Combo: test_map_enum[C-mapping2-C-True]","text":"

    Source Schema:

    name: enums\nid: enums\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nenums:\n  E:\n    name: E\n    permissible_values:\n      A:\n        text: A\n      B:\n        text: B\n      C:\n        text: C\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: E\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\nenum_derivations:\n  E:\n    name: E\n    mirror_source: true\n    populated_from: E\n    permissible_value_derivations:\n      B:\n        name: B\n        populated_from: A\n\n

    s### Combo: test_map_enum[A-mapping3-B-False]

    Source Schema:

    name: enums\nid: enums\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nenums:\n  E:\n    name: E\n    permissible_values:\n      A:\n        text: A\n      B:\n        text: B\n      C:\n        text: C\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: E\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\nenum_derivations:\n  E:\n    name: E\n    mirror_source: false\n    populated_from: E\n    permissible_value_derivations:\n      B:\n        name: B\n        sources:\n        - A\n        - C\n\n

    Object Transformation:

    • Source Object:
    s1: A\n\n
    • Target Object:
    s1: B\n\n

    Target Schema (Derived):

    name: enums-derived\nid: enums-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: enums-derived/\nenums:\n  E:\n    name: E\n    permissible_values:\n      A:\n        text: A\n      B:\n        text: B\n      C:\n        text: C\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: E\n\n
    "},{"location":"specification/compliance/#combo-test_map_enumc-mapping4-b-false","title":"Combo: test_map_enum[C-mapping4-B-False]","text":"

    Source Schema:

    name: enums\nid: enums\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nenums:\n  E:\n    name: E\n    permissible_values:\n      A:\n        text: A\n      B:\n        text: B\n      C:\n        text: C\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: E\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    slot_derivations:\n      s1:\n        name: s1\n        populated_from: s1\nenum_derivations:\n  E:\n    name: E\n    mirror_source: false\n    populated_from: E\n    permissible_value_derivations:\n      B:\n        name: B\n        sources:\n        - A\n        - C\n\n

    Object Transformation:

    • Source Object:
    s1: C\n\n
    • Target Object:
    s1: B\n\n

    Target Schema (Derived):

    name: enums-derived\nid: enums-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: enums-derived/\nenums:\n  E:\n    name: E\n    permissible_values:\n      A:\n        text: A\n      B:\n        text: B\n      C:\n        text: C\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: E\n\n
    "},{"location":"specification/compliance/#feature-set-test_inheritance","title":"Feature Set: test_inheritance","text":"

    Test inheritance.

    Transformation specifications can utilize inheritance, in the same way that LinkML schemas can.

    • is_a: use is_as instead of mixins in test schema
    • flatten: roll down inherited slots
    "},{"location":"specification/compliance/#combo-test_inheritancefalse-true","title":"Combo: test_inheritance[False-True]","text":"

    Source Schema:

    name: expr\nid: expr\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    is_a: D\n    attributes:\n      s1:\n        name: s1\n        range: integer\n    tree_root: true\n  D:\n    name: D\n    attributes:\n      s2:\n        name: s2\n        range: integer\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    is_a: D\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        expr: s1 + 1\n  D:\n    name: D\n    populated_from: D\n    slot_derivations:\n      s2:\n        name: s2\n        expr: s2 + 1\n\n

    Object Transformation:

    • Source Object:
    s1: 1\ns2: 2\n\n
    • Target Object:
    s1: 2\ns2: 3\n\n

    Target Schema (Derived):

    name: expr-derived\nid: expr-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: expr-derived/\nclasses:\n  C:\n    name: C\n    is_a: D\n    attributes:\n      s1:\n        name: s1\n        range: integer\n    tree_root: true\n  D:\n    name: D\n    attributes:\n      s2:\n        name: s2\n        range: integer\n\n
    "},{"location":"specification/compliance/#combo-test_inheritancefalse-false","title":"Combo: test_inheritance[False-False]","text":"

    Source Schema:

    name: expr\nid: expr\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    mixins:\n    - D\n    attributes:\n      s1:\n        name: s1\n        range: integer\n    tree_root: true\n  D:\n    name: D\n    attributes:\n      s2:\n        name: s2\n        range: integer\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    mixins:\n    - D\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        expr: s1 + 1\n  D:\n    name: D\n    populated_from: D\n    slot_derivations:\n      s2:\n        name: s2\n        expr: s2 + 1\n\n

    Object Transformation:

    • Source Object:
    s1: 1\ns2: 2\n\n
    • Target Object:
    s1: 2\ns2: 3\n\n

    Target Schema (Derived):

    name: expr-derived\nid: expr-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: expr-derived/\nclasses:\n  C:\n    name: C\n    mixins:\n    - D\n    attributes:\n      s1:\n        name: s1\n        range: integer\n    tree_root: true\n  D:\n    name: D\n    attributes:\n      s2:\n        name: s2\n        range: integer\n\n
    "},{"location":"specification/compliance/#combo-test_inheritancetrue-true","title":"Combo: test_inheritance[True-True]","text":"

    Source Schema:

    name: expr\nid: expr\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    is_a: D\n    attributes:\n      s1:\n        name: s1\n        range: integer\n    tree_root: true\n  D:\n    name: D\n    attributes:\n      s2:\n        name: s2\n        range: integer\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        expr: s1 + 1\n      s2:\n        name: s2\n        expr: s2 + 1\n\n

    Object Transformation:

    • Source Object:
    s1: 1\ns2: 2\n\n
    • Target Object:
    s1: 2\ns2: 3\n\n

    Target Schema (Derived):

    name: expr-derived\nid: expr-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: expr-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: integer\n      s2:\n        name: s2\n        range: integer\n    tree_root: true\n\n
    "},{"location":"specification/compliance/#combo-test_inheritancetrue-false","title":"Combo: test_inheritance[True-False]","text":"

    Source Schema:

    name: expr\nid: expr\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: test\nclasses:\n  C:\n    name: C\n    mixins:\n    - D\n    attributes:\n      s1:\n        name: s1\n        range: integer\n    tree_root: true\n  D:\n    name: D\n    attributes:\n      s2:\n        name: s2\n        range: integer\n\n

    Transformer Specification:

    class_derivations:\n  C:\n    name: C\n    populated_from: C\n    slot_derivations:\n      s1:\n        name: s1\n        expr: s1 + 1\n      s2:\n        name: s2\n        expr: s2 + 1\n\n

    Object Transformation:

    • Source Object:
    s1: 1\ns2: 2\n\n
    • Target Object:
    s1: 2\ns2: 3\n\n

    Target Schema (Derived):

    name: expr-derived\nid: expr-derived\nimports:\n- linkml:types\nprefixes:\n  linkml:\n    prefix_prefix: linkml\n    prefix_reference: https://w3id.org/linkml/\n  test:\n    prefix_prefix: test\n    prefix_reference: http://example.org/test/\ndefault_prefix: expr-derived/\nclasses:\n  C:\n    name: C\n    attributes:\n      s1:\n        name: s1\n        range: integer\n      s2:\n        name: s2\n        range: integer\n    tree_root: true\n\n

    . 55 passed, 1 skipped, 250 warnings in 9.98s

    "}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 96e42e9..762aaef 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,322 +2,502 @@ https://cmungall.github.io/linkml-transformer/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/AliasedClass/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/Any/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/Boolean/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/ClassDerivation/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/ClassReference/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/CollectionType/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/CopyDirective/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/Curie/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/Date/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/DateOrDatetime/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/Datetime/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/Decimal/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/Double/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/ElementDerivation/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/EnumDerivation/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/EnumReference/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/Float/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/Integer/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/Inverse/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/Jsonpath/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/Jsonpointer/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/KeyVal/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/Ncname/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/Nodeidentifier/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/Objectidentifier/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/PermissibleValueDerivation/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/PrefixDerivation/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/SerializationSyntaxType/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/SlotDerivation/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/SlotReference/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/Sparqlpath/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/SpecificationComponent/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/String/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/StringificationConfiguration/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/Time/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/TransformationSpecification/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/UnitConversionConfiguration/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/Uri/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/Uriorcurie/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/about/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/add/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/alias/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/cast_collection_as/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/class_derivations/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/class_name/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/class_named/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/comments/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/copy_all/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/copy_directives/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/delimiter/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/derived_from/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/description/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/dictionary_key/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/element_name/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/enum_derivations/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/exclude/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/exclude_all/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/expr/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/expression_to_expression_mappings/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/expression_to_value_mappings/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/hide/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/id/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/implements/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/include/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/inverse_of/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/is_a/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/joins/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/key/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/mirror_source/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/mixins/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/name/ - 2023-03-04 + 2024-01-06 daily - https://cmungall.github.io/linkml-transformer/overview/ - 2023-03-04 + https://cmungall.github.io/linkml-transformer/overrides/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/permissible_value_derivations/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/populated_from/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/prefixes/ - 2023-03-04 + 2024-01-06 daily - https://cmungall.github.io/linkml-transformer/same_as/ - 2023-03-04 + https://cmungall.github.io/linkml-transformer/range/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/reversed/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/slot_derivations/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/slot_name/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/source_magnitude_slot/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/source_schema/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/source_unit/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/source_unit_scheme/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/source_unit_slot/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/sources/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/stringification/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/syntax/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/target_magnitude_slot/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/target_schema/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/target_unit/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/target_unit_scheme/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/target_unit_slot/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/title/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/transformer/ - 2023-03-04 + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/type_designator/ - 2023-03-04 + 2024-01-06 daily - https://cmungall.github.io/linkml-transformer/types/ - 2023-03-04 + https://cmungall.github.io/linkml-transformer/unit_conversion/ + 2024-01-06 daily https://cmungall.github.io/linkml-transformer/value/ - 2023-03-04 + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/value_mappings/ + 2024-01-06 + daily + + + https://cmungall.github.io/linkml-transformer/specification/compliance/ + 2024-01-06 daily \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index b9240215edd0389fd646bf6aad482c6897ad167b..4cecd44625ec38bfee2d01739c92730e36531b68 100644 GIT binary patch literal 887 zcmV--1Bm<|iwFqsv6y87|8r?{Wo=<_E_iKh0M(pbZ__XohVS_mRqxky6GDKxPOyOl zNPy_ZZR9#9=^3_ld?plm@1=@mLwr>(WZh&1l=ZP8qZ4IPLoFf~7L-epz#pf^xByU@26qs{H1- z2^Eu-W_`9idwH@vJz2iWj~wnDJ*Iccb<_s>y>1knVO1U7nb@jFxPQldXIMpQE;C7l zVRi!w>U$AG%Aw$nGPt6^cPixx28I2DS_;_~5Dc{#L%NLf_27Z1{cy#hfZyRj_km$x zuT+9!{T9k+VhcqL#Y>v4GBCK(Zw<`gelTRoB|NY9!SxoC8qQUJG@=p;>?fC~!^uEC zxsuMoNa1r7=T+K4@d{^6z$oGi4L@v2A9+xDa+m%0gOlsHC$}B@hbc_NG^Tjb3WLz z9<^~P){D!A5r#emb{!V&(P+DtyFNfo%WI&ej_Zf>$#5Sl9ir zs1h{N`mWka4`Z!W)4-sXQYH$l&IGl7tN_(OaQ@v+>l|*Kx>ereWRvsgIFBqr~`YXK(pb|{i!h2zX)bm4^1UQC|^RZ zw}@Vw_S*Cff#D*#6x#cM#7eQ`)pe5k=*lYZ*>w@KBX^}Z0M~~dH=4r!0EiDXjtQ89DtuRh-0Tgpu4naa4r4Kl@HOqS-H6Vral5JSX{ugF&{nJ*6 zL%0K&jCk?AQ3-5az>j-4aHJAS+c2;+MiVgMWi*lyr{2hoWT7Wdos+uGaVkp!r3YZ} z(+iSd(0v|nK;&t#36dO6**IqJ`Tipq>~Y5>3T;xMqXcTI5Aax~`T&h&s*jMtO!YHz zBxQ5Ld5sY8zaP@zOBNovb1Df8_NZh1xWN(ydtCH@f`uzc#b?`vwODUh{g+n}#;-_e N{TKh`r=X!m004iv#ozlWP~J&cw})*4s%^AV zHL0xx?Q3M5n{Zp(H?tie-+oT$AKs@uoCra%jP+A=?zz_&&##WwO!njhi(6!$@>w<^ zr=?=oEV9SV&Gc(_wY->j-UN!1G}(nkwu`a-UKEGJArBnMsy5`}ni?`&9c`^LvdyLQzBUl4h$646bxr z1M_gN4Owy#&xx;HXYr_SjHrkLd+Q=KI0fdd8>)4f$oozG6OOChX{T^f#+_8eRq{2i z8ArhP+vlOMgyVi7Z#e``X)h_dBRpGv@Ko~=k9%zdFm27FsMVj5Cv8b-K?^DcVaMbq|)w#7)Huk+P+M)pm?jdE+>qZ z>D0=AQZu>EBKig$wdpDX!$k^0I<_zyz#ZdAfnm}HJE$1rQ~Rxy8iqKO3WfDq7$-Zt z5X|4^mXAOW7OAw6WCweu0}5~Z(ZwwHLmLyZE^DRjjEYp1wHFIRJ+@zQb{ZjtVTse7 z2u32Jm`83T%L~$ZP37sZ9}09-zM+T)%@OB}1>j-L*tbLe3*0yr1qvI+-o_&1|HF + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -312,10 +328,8 @@ - - - - + +

    Slot: slot_derivations

    @@ -328,22 +342,25 @@

    Applicable Classes

    Name Description +Modifies Slot TransformationSpecification A collection of mappings between source and target classes +no ClassDerivation A specification of how to derive a target class from a source class +no

    Properties

    Identifier and Mapping Information

    LinkML Source

    @@ -354,7 +371,6 @@

    LinkML Source

    domain_of: - TransformationSpecification - ClassDerivation -range: string @@ -398,10 +414,10 @@

    LinkML Source

    - + - + diff --git a/slot_name/index.html b/slot_name/index.html index 5202ba8..70d932a 100644 --- a/slot_name/index.html +++ b/slot_name/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -325,10 +341,8 @@ - - - - + +

    Slot: slot_name

    @@ -341,18 +355,20 @@

    Applicable Classes

    Name Description +Modifies Slot Inverse -Used for back references +Used for back references in mapping to relational model +no

    Properties

    Identifier and Mapping Information

    Schema Source

    @@ -369,7 +385,6 @@

    LinkML Source

    owner: Inverse domain_of: - Inverse -range: string @@ -413,10 +428,10 @@

    LinkML Source

    - + - + diff --git a/source_magnitude_slot/index.html b/source_magnitude_slot/index.html new file mode 100644 index 0000000..8ca16a1 --- /dev/null +++ b/source_magnitude_slot/index.html @@ -0,0 +1,438 @@ + + + + + + + + + + + + + + + + + + + + Slot: source_magnitude_slot - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: source_magnitude_slot

    +

    URI: linkmltr:source_magnitude_slot

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    UnitConversionConfigurationno
    +

    Properties

    +
      +
    • Range: NONE
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: source_magnitude_slot
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: source_magnitude_slot
    +owner: UnitConversionConfiguration
    +domain_of:
    +- UnitConversionConfiguration
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/source_schema/index.html b/source_schema/index.html index 2e9a71c..6d7157b 100644 --- a/source_schema/index.html +++ b/source_schema/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -325,10 +341,8 @@ - - - - + +

    Slot: source_schema

    @@ -342,18 +356,20 @@

    Applicable Classes

    Name Description +Modifies Slot TransformationSpecification A collection of mappings between source and target classes +no

    Properties

    Identifier and Mapping Information

    Schema Source

    @@ -371,7 +387,6 @@

    LinkML Source

    owner: TransformationSpecification domain_of: - TransformationSpecification -range: string @@ -415,10 +430,10 @@

    LinkML Source

    - + - + diff --git a/source_unit/index.html b/source_unit/index.html new file mode 100644 index 0000000..07e27a0 --- /dev/null +++ b/source_unit/index.html @@ -0,0 +1,438 @@ + + + + + + + + + + + + + + + + + + + + Slot: source_unit - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: source_unit

    +

    URI: linkmltr:source_unit

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    UnitConversionConfigurationno
    +

    Properties

    +
      +
    • Range: NONE
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: source_unit
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: source_unit
    +owner: UnitConversionConfiguration
    +domain_of:
    +- UnitConversionConfiguration
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/source_unit_scheme/index.html b/source_unit_scheme/index.html new file mode 100644 index 0000000..da54039 --- /dev/null +++ b/source_unit_scheme/index.html @@ -0,0 +1,461 @@ + + + + + + + + + + + + + + + + + + + + Slot: source_unit_scheme - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: source_unit_scheme

    +

    URI: linkmltr:source_unit_scheme

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    UnitConversionConfigurationno
    +

    Properties

    + +

    Examples

    + + + + + + + + + + + +
    Value
    ucum
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: source_unit_scheme
    +examples:
    +- value: ucum
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: source_unit_scheme
    +owner: UnitConversionConfiguration
    +domain_of:
    +- UnitConversionConfiguration
    +range: string
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/source_unit_slot/index.html b/source_unit_slot/index.html new file mode 100644 index 0000000..7853c2f --- /dev/null +++ b/source_unit_slot/index.html @@ -0,0 +1,438 @@ + + + + + + + + + + + + + + + + + + + + Slot: source_unit_slot - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: source_unit_slot

    +

    URI: linkmltr:source_unit_slot

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    UnitConversionConfigurationno
    +

    Properties

    +
      +
    • Range: NONE
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: source_unit_slot
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: source_unit_slot
    +owner: UnitConversionConfiguration
    +domain_of:
    +- UnitConversionConfiguration
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/sources/index.html b/sources/index.html new file mode 100644 index 0000000..15cf5d0 --- /dev/null +++ b/sources/index.html @@ -0,0 +1,436 @@ + + + + + + + + + + + + + + + + + + + + Slot: sources - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: sources

    +

    URI: linkmltr:sources

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    ClassDerivationA specification of how to derive a target class from a source classno
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...no
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...no
    PermissibleValueDerivationA specification of how to derive the value of a PV from a source enumno
    +

    Properties

    +
      +
    • Range: NONE
    • +
    +

    Identifier and Mapping Information

    +

    LinkML Source

    +
    + +
    name: sources
    +alias: sources
    +domain_of:
    +- ClassDerivation
    +- SlotDerivation
    +- EnumDerivation
    +- PermissibleValueDerivation
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/specification/compliance/index.html b/specification/compliance/index.html new file mode 100644 index 0000000..e89c8f7 --- /dev/null +++ b/specification/compliance/index.html @@ -0,0 +1,6725 @@ + + + + + + + + + + + + + + + + + + + + + + Compliance Suite - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    LinkML-Transformers Compliance Suite

    +

    This is the output from running the full compliance test suite.

    +

    It is organized into Feature Sets that test a particular feature or +group of features, and combinations of different schemas, input +objects, and transformation specifications. This is intended to +exhaustively test all combinations of features, and provide informative +output.

    +

    Each test is designed to demonstrate:

    +
      +
    • data mapping (transformation)
    • +
    • derived schemas
    • +
    • inversion (reverse transformation) (in some cases)
    • +
    • compliation to other frameworks (coming soon)
    • +
    +

    Feature Set: test_map_types

    +

    Test mapping between basic data types.

    +

    This test uses an ultra-minimal schema with a single class and a single +attribute, the transformation specification maps that attribute onto +itself, with a different type, demonstrating type coercion.

    +

    Some cases will be trivially isomorphic (where source_datatype == +target_datatype), but these are executed anyway.

    +
      +
    • source_datatype: linkml datatype of source object
    • +
    • target_datatype: linkml datatype of target object
    • +
    • source_value: value of source object
    • +
    • target_value: expected value of slot in target object
    • +
    • invertible: True if the transformation is invertible
    • +
    +

    Combo: test_map_types[string-string-foo-foo-True]

    +

    Mapping string => string

    +

    Isomorphic mapping: input should equal output

    +

    Source Schema:

    +
    name: types
    +description: Minimal single-attribute schema for testing datatype mapping
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: string
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        range: string
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: foo
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: foo
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: string
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        range: string
    +
    +
    +

    Combo: test_map_types[integer-integer-5-5-True]

    +

    Mapping integer => integer

    +

    Isomorphic mapping: input should equal output

    +

    Source Schema:

    +
    name: types
    +description: Minimal single-attribute schema for testing datatype mapping
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        range: integer
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 5
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: 5
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        range: integer
    +
    +
    +

    Combo: test_map_types[string-integer-5-5-True]

    +

    Mapping string => integer

    +

    Should coerce datatype

    +

    Source Schema:

    +
    name: types
    +description: Minimal single-attribute schema for testing datatype mapping
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: string
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        range: integer
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: '5'
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: 5
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        range: string
    +
    +
    +

    Combo: test_map_types[integer-float-5-5.0-True] {#combo-test_map_typesinteger-float-5-50-true}

    +

    Mapping integer => float

    +

    Should coerce datatype

    +

    Source Schema:

    +
    name: types
    +description: Minimal single-attribute schema for testing datatype mapping
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        range: float
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 5
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: 5.0
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        range: integer
    +
    +
    +

    Combo: test_map_types[float-integer-5.0-5-True] {#combo-test_map_typesfloat-integer-50-5-true}

    +

    Mapping float => integer

    +

    Should coerce datatype

    +

    Source Schema:

    +
    name: types
    +description: Minimal single-attribute schema for testing datatype mapping
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        range: integer
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 5.0
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: 5
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        range: float
    +
    +
    +

    Combo: test_map_types[float-integer-5.2-5-False] {#combo-test_map_typesfloat-integer-52-5-false}

    +

    Mapping float => integer

    +

    Should coerce datatype

    +

    Source Schema:

    +
    name: types
    +description: Minimal single-attribute schema for testing datatype mapping
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        range: integer
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 5.2
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: 5
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +
    +
    +

    Combo: test_map_types[integer-boolean-5-True-False]

    +

    Mapping integer => boolean

    +

    Should coerce datatype

    +

    Source Schema:

    +
    name: types
    +description: Minimal single-attribute schema for testing datatype mapping
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        range: boolean
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 5
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: true
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: boolean
    +
    +
    +

    Combo: test_map_types[integer-boolean-0-False-False]

    +

    Mapping integer => boolean

    +

    Should coerce datatype

    +

    Source Schema:

    +
    name: types
    +description: Minimal single-attribute schema for testing datatype mapping
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        range: boolean
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 0
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: false
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: boolean
    +
    +
    +

    Feature Set: test_map_collections

    +

    Test mapping between collection data types (lists and dicts).

    +

    This makes use of the cast_collection_as construct

    +
      +
    • source_datatype:
    • +
    • target_datatype:
    • +
    • source_value:
    • +
    • target_value:
    • +
    • invertible:
    • +
    +

    Combo: test_map_collections[string-string-source_value0-target_value0-True]

    +

    Mapping string => string

    +

    Isomorphic mapping: input should equal output

    +

    Source Schema:

    +
    name: types
    +description: Mapping between collection types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      ds:
    +        name: ds
    +        multivalued: true
    +        range: D
    +        inlined: true
    +        inlined_as_list: true
    +    tree_root: true
    +  D:
    +    name: D
    +    attributes:
    +      id:
    +        name: id
    +        identifier: true
    +      s1:
    +        name: s1
    +        range: string
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      ds:
    +        name: ds
    +        populated_from: ds
    +        cast_collection_as: MultiValuedDict
    +        dictionary_key: id
    +  D:
    +    name: D
    +    slot_derivations:
    +      id:
    +        name: id
    +        populated_from: id
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        range: string
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    ds:
    +- id: X
    +  s1: foo
    +- id: Y
    +  s1: bar
    +
    +
    +
      +
    • Target Object:
    • +
    +
    ds:
    +  X:
    +    s1: foo
    +  Y:
    +    s1: bar
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      ds:
    +        name: ds
    +        multivalued: true
    +        range: D
    +        inlined: true
    +        inlined_as_list: false
    +    tree_root: true
    +  D:
    +    name: D
    +    attributes:
    +      id:
    +        name: id
    +        identifier: true
    +        required: true
    +      s1:
    +        name: s1
    +        range: string
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      ds:
    +        name: ds
    +        populated_from: ds
    +        cast_collection_as: MultiValuedList
    +  D:
    +    name: D
    +    populated_from: D
    +    slot_derivations:
    +      id:
    +        name: id
    +        populated_from: id
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        range: string
    +
    +
    +

    Combo: test_map_collections[string-string-source_value1-target_value1-True]

    +

    Mapping string => string

    +

    Isomorphic mapping: input should equal output

    +

    Source Schema:

    +
    name: types
    +description: Mapping between collection types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      ds:
    +        name: ds
    +        multivalued: true
    +        range: D
    +        inlined: true
    +        inlined_as_list: false
    +    tree_root: true
    +  D:
    +    name: D
    +    attributes:
    +      id:
    +        name: id
    +        identifier: true
    +      s1:
    +        name: s1
    +        range: string
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      ds:
    +        name: ds
    +        populated_from: ds
    +        cast_collection_as: MultiValuedList
    +  D:
    +    name: D
    +    slot_derivations:
    +      id:
    +        name: id
    +        populated_from: id
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        range: string
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    ds:
    +  X:
    +    s1: foo
    +  Y:
    +    s1: bar
    +
    +
    +
      +
    • Target Object:
    • +
    +
    ds:
    +- id: X
    +  s1: foo
    +- id: Y
    +  s1: bar
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      ds:
    +        name: ds
    +        multivalued: true
    +        range: D
    +        inlined: true
    +        inlined_as_list: true
    +    tree_root: true
    +  D:
    +    name: D
    +    attributes:
    +      id:
    +        name: id
    +        identifier: true
    +        required: true
    +      s1:
    +        name: s1
    +        range: string
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      ds:
    +        name: ds
    +        populated_from: ds
    +        cast_collection_as: MultiValuedDict
    +        dictionary_key: id
    +  D:
    +    name: D
    +    populated_from: D
    +    slot_derivations:
    +      id:
    +        name: id
    +        populated_from: id
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        range: string
    +
    +
    +

    Feature Set: test_expr

    +

    Test transformation using pythonic expressions.

    +

    This test uses a simple source schema with two slots (s1 and s2). +These are combined using a pythonic expression, to populate the only +slot in the target schema (called derived).

    +

    The values of s1 and s2 can be numbers or strings.

    +

    If the expression wraps a slot in {...} then the presence of a None +forces the entire expression to be None

    +

    Limitations: At this time, the framework cannot generate a complete +derived schema or inversion for expressions. This will be fixed in +future.

    +
      +
    • expr: pythonic expression
    • +
    • source_object: source object
    • +
    • target_value: expected value of slot in target object
    • +
    +

    Combo: test_expr[s1 + s2-source_object0-11] {#combo-test_exprs1--s2-source_object0-11}

    +

    Source Schema:

    +
    name: expr
    +id: expr
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +      s2:
    +        name: s2
    +        range: integer
    +    tree_root: true
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      derived:
    +        name: derived
    +        expr: s1 + s2
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 5
    +s2: 6
    +
    +
    +
      +
    • Target Object:
    • +
    +
    derived: 11
    +
    +
    +

    Target Schema (Derived):

    +
    name: expr-derived
    +id: expr-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: expr-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      derived:
    +        name: derived
    +    tree_root: true
    +
    +
    +

    Combo: test_expr[{s1} + {s2}-source_object1-11] {#combo-test_exprs1--s2-source_object1-11}

    +

    Source Schema:

    +
    name: expr
    +id: expr
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +      s2:
    +        name: s2
    +        range: integer
    +    tree_root: true
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      derived:
    +        name: derived
    +        expr: '{s1} + {s2}'
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 5
    +s2: 6
    +
    +
    +
      +
    • Target Object:
    • +
    +
    derived: 11
    +
    +
    +

    Target Schema (Derived):

    +
    name: expr-derived
    +id: expr-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: expr-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      derived:
    +        name: derived
    +    tree_root: true
    +
    +
    +

    Combo: test_expr[{s1} + {s2}-source_object2-None] {#combo-test_exprs1--s2-source_object2-none}

    +

    Source Schema:

    +
    name: expr
    +id: expr
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +    tree_root: true
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      derived:
    +        name: derived
    +        expr: '{s1} + {s2}'
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 5
    +
    +
    +
      +
    • Target Object:
    • +
    +
    {}
    +
    +
    +

    Target Schema (Derived):

    +
    name: expr-derived
    +id: expr-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: expr-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      derived:
    +        name: derived
    +    tree_root: true
    +
    +
    +

    Combo: test_expr[s1 + s2.s3-source_object3-11] {#combo-test_exprs1--s2s3-source_object3-11}

    +

    Source Schema:

    +
    name: expr
    +id: expr
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +      s2:
    +        name: s2
    +        range: D
    +    tree_root: true
    +  D:
    +    name: D
    +    attributes:
    +      s3:
    +        name: s3
    +        range: integer
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      derived:
    +        name: derived
    +        expr: s1 + s2.s3
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 5
    +s2:
    +  s3: 6
    +
    +
    +
      +
    • Target Object:
    • +
    +
    derived: 11
    +
    +
    +

    Target Schema (Derived):

    +
    name: expr-derived
    +id: expr-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: expr-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      derived:
    +        name: derived
    +    tree_root: true
    +
    +
    +

    Combo: test_expr[s1 + s2.s3.s4-source_object4-11] {#combo-test_exprs1--s2s3s4-source_object4-11}

    +

    Source Schema:

    +
    name: expr
    +id: expr
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +      s2:
    +        name: s2
    +        range: D
    +    tree_root: true
    +  D:
    +    name: D
    +    attributes:
    +      s4:
    +        name: s4
    +        range: integer
    +      s3:
    +        name: s3
    +        range: D
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      derived:
    +        name: derived
    +        expr: s1 + s2.s3.s4
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 5
    +s2:
    +  s3:
    +    s4: 6
    +
    +
    +
      +
    • Target Object:
    • +
    +
    derived: 11
    +
    +
    +

    Target Schema (Derived):

    +
    name: expr-derived
    +id: expr-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: expr-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      derived:
    +        name: derived
    +    tree_root: true
    +
    +
    +

    Combo: test_expr[s1 + s2-source_object5-ab] {#combo-test_exprs1--s2-source_object5-ab}

    +

    Source Schema:

    +
    name: expr
    +id: expr
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: string
    +      s2:
    +        name: s2
    +        range: string
    +    tree_root: true
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      derived:
    +        name: derived
    +        expr: s1 + s2
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: a
    +s2: b
    +
    +
    +
      +
    • Target Object:
    • +
    +
    derived: ab
    +
    +
    +

    Target Schema (Derived):

    +
    name: expr-derived
    +id: expr-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: expr-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      derived:
    +        name: derived
    +    tree_root: true
    +
    +
    +

    Combo: test_expr[s1 + s2-source_object6-target_value6] {#combo-test_exprs1--s2-source_object6-target_value6}

    +

    Source Schema:

    +
    name: expr
    +id: expr
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        multivalued: true
    +        range: string
    +      s2:
    +        name: s2
    +        multivalued: true
    +        range: string
    +    tree_root: true
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      derived:
    +        name: derived
    +        expr: s1 + s2
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1:
    +- a
    +s2:
    +- b
    +
    +
    +
      +
    • Target Object:
    • +
    +
    derived:
    +- a
    +- b
    +
    +
    +

    Target Schema (Derived):

    +
    name: expr-derived
    +id: expr-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: expr-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      derived:
    +        name: derived
    +    tree_root: true
    +
    +
    +

    Combo: test_expr[len(s1)-source_object7-1]

    +

    Source Schema:

    +
    name: expr
    +id: expr
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        multivalued: true
    +        range: string
    +    tree_root: true
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      derived:
    +        name: derived
    +        expr: len(s1)
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1:
    +- a
    +
    +
    +
      +
    • Target Object:
    • +
    +
    derived: 1
    +
    +
    +

    Target Schema (Derived):

    +
    name: expr-derived
    +id: expr-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: expr-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      derived:
    +        name: derived
    +    tree_root: true
    +
    +
    +

    Combo: test_expr[s1 \< s2-source_object8-True] {#combo-test_exprs1--s2-source_object8-true}

    +

    Source Schema:

    +
    name: expr
    +id: expr
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +      s2:
    +        name: s2
    +        range: integer
    +    tree_root: true
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      derived:
    +        name: derived
    +        expr: s1 < s2
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 5
    +s2: 6
    +
    +
    +
      +
    • Target Object:
    • +
    +
    derived: true
    +
    +
    +

    Target Schema (Derived):

    +
    name: expr-derived
    +id: expr-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: expr-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      derived:
    +        name: derived
    +    tree_root: true
    +
    +
    +

    Feature Set: test_simple_unit_conversion

    +

    Test unit conversion.

    +

    This test uses a simple source schema with a single class and a single +attribute, where the attribute is described using the +units metaslot.

    +

    The recommended way to describe unit slots in LinkML is with UCUM, but a +number of other schemes can be used. We explicitly test for some known +cases where UCUM uses non-standard units (e.g. Cel, mo), as well as +UCUM-specific syntax (e.g. m.s-1) and extensions (e.g. using +annotations like {Cre}).

    +

    Developers note: to run this test, the units extension should be +installed:

    +

    poetry install -E units

    +

    This installs the pint framework.

    +
      +
    • source_slot: name of slot in source schema
    • +
    • target_slot: name of slot in target schema
    • +
    • source_unit: unit of source slot
    • +
    • target_unit: unit of target slot
    • +
    • source_value: magnitude of source slot (to be converted)
    • +
    • target_value: expected magnitude of target slot (output of + conversion)
    • +
    • err:
    • +
    +

    Combo: test_simple_unit_conversion[s1-s1-m-cm-ucum_code-1.0-100.0-None-None] {#combo-test_simple_unit_conversions1-s1-m-cm-ucum_code-10-1000-none-none}

    +

    Unit Conversion: 1.0 m => 100.0 cm [with s1]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: m
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: cm
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 1.0
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: 100.0
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: cm
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: m
    +          target_unit_scheme: ucum_code
    +          source_unit: cm
    +
    +
    +

    Combo: test_simple_unit_conversion[s1-s1-m-cm-symbol-1.0-100.0-None-None] {#combo-test_simple_unit_conversions1-s1-m-cm-symbol-10-1000-none-none}

    +

    Unit Conversion: 1.0 m => 100.0 cm [with s1]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          symbol: m
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: cm
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 1.0
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: 100.0
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: cm
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: m
    +          target_unit_scheme: symbol
    +          source_unit: cm
    +
    +
    +

    Combo: test_simple_unit_conversion[s1-s1-m-m-ucum_code-1.0-1.0-None-None] {#combo-test_simple_unit_conversions1-s1-m-m-ucum_code-10-10-none-none}

    +

    Unit Conversion: 1.0 m => 1.0 m [with s1]

    +

    Isomorphic mapping: input should equal output Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: m
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: m
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 1.0
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: 1.0
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: m
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: m
    +          target_unit_scheme: ucum_code
    +          source_unit: m
    +
    +
    +

    Combo: test_simple_unit_conversion[s1-s1-a-mo-ucum_code-10.0-120.0-None-None] {#combo-test_simple_unit_conversions1-s1-a-mo-ucum_code-100-1200-none-none}

    +

    Unit Conversion: 10.0 a => 120.0 mo [with s1]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: a
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: mo
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 10.0
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: 120.0
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: mo
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: a
    +          target_unit_scheme: ucum_code
    +          source_unit: mo
    +
    +
    +

    Combo: test_simple_unit_conversion[s1-s1-a-mo-symbol-10.0-None-UndefinedUnitError-None] {#combo-test_simple_unit_conversions1-s1-a-mo-symbol-100-none-undefineduniterror-none}

    +

    Unit Conversion: 10.0 a => None mo [with s1]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          symbol: a
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: mo
    +
    +
    +

    Object Transformation:

    +

    Expected Error: UndefinedUnitError

    +
      +
    • Source Object:
    • +
    +
    s1: 10.0
    +
    +
    +
      +
    • Target Object:
    • +
    +
    null
    +...
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: mo
    +
    +
    +

    Combo: test_simple_unit_conversion[s1-s1-m-ml-ucum_code-1.0-None-DimensionalityError-None] {#combo-test_simple_unit_conversions1-s1-m-ml-ucum_code-10-none-dimensionalityerror-none}

    +

    Unit Conversion: 1.0 m => None ml [with s1]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: m
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: ml
    +
    +
    +

    Object Transformation:

    +

    Expected Error: DimensionalityError

    +
      +
    • Source Object:
    • +
    +
    s1: 1.0
    +
    +
    +
      +
    • Target Object:
    • +
    +
    null
    +...
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: ml
    +
    +
    +

    Combo: test_simple_unit_conversion[s1-s1-m-pinknoodles-ucum_code-1.0-None-UndefinedUnitError-None] {#combo-test_simple_unit_conversions1-s1-m-pinknoodles-ucum_code-10-none-undefineduniterror-none}

    +

    Unit Conversion: 1.0 m => None pinknoodles [with s1]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: m
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: pinknoodles
    +
    +
    +

    Object Transformation:

    +

    Expected Error: UndefinedUnitError

    +
      +
    • Source Object:
    • +
    +
    s1: 1.0
    +
    +
    +
      +
    • Target Object:
    • +
    +
    null
    +...
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: pinknoodles
    +
    +
    +

    Combo: test_simple_unit_conversion[s1-s1-ml-m-ucum_code-1.0-None-DimensionalityError-None] {#combo-test_simple_unit_conversions1-s1-ml-m-ucum_code-10-none-dimensionalityerror-none}

    +

    Unit Conversion: 1.0 ml => None m [with s1]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: ml
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: m
    +
    +
    +

    Object Transformation:

    +

    Expected Error: DimensionalityError

    +
      +
    • Source Object:
    • +
    +
    s1: 1.0
    +
    +
    +
      +
    • Target Object:
    • +
    +
    null
    +...
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: m
    +
    +
    +

    Combo: test_simple_unit_conversion[s1-s1-pinknoodles-m-ucum_code-1.0-None-UndefinedUnitError-None] {#combo-test_simple_unit_conversions1-s1-pinknoodles-m-ucum_code-10-none-undefineduniterror-none}

    +

    Unit Conversion: 1.0 pinknoodles => None m [with s1]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: pinknoodles
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: m
    +
    +
    +

    Object Transformation:

    +

    Expected Error: UndefinedUnitError

    +
      +
    • Source Object:
    • +
    +
    s1: 1.0
    +
    +
    +
      +
    • Target Object:
    • +
    +
    null
    +...
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: m
    +
    +
    +

    Combo: test_simple_unit_conversion[s1-s1-m/s-cm/s-ucum_code-1.0-100.0-None-None] {#combo-test_simple_unit_conversions1-s1-ms-cms-ucum_code-10-1000-none-none}

    +

    Unit Conversion: 1.0 m/s => 100.0 cm/s [with s1]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: m/s
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: cm/s
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 1.0
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: 100.0
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: cm/s
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: m/s
    +          target_unit_scheme: ucum_code
    +          source_unit: cm/s
    +
    +
    +

    Combo: test_simple_unit_conversion[s1-s1-m.s-1-cm.s-1-ucum_code-1.0-100.0-None-None] {#combo-test_simple_unit_conversions1-s1-ms-1-cms-1-ucum_code-10-1000-none-none}

    +

    Unit Conversion: 1.0 m.s-1 => 100.0 cm.s-1 [with s1]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: m.s-1
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: cm.s-1
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 1.0
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: 100.0
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: cm.s-1
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: m.s-1
    +          target_unit_scheme: ucum_code
    +          source_unit: cm.s-1
    +
    +
    +

    Combo: test_simple_unit_conversion[s1-s1-g.m2-1-kg.m2-1-ucum_code-1.0-0.001-None-None] {#combo-test_simple_unit_conversions1-s1-gm2-1-kgm2-1-ucum_code-10-0001-none-none}

    +

    Unit Conversion: 1.0 g.m2-1 => 0.001 kg.m2-1 [with s1]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: g.m2-1
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: kg.m2-1
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 1.0
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: 0.001
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: float
    +        unit:
    +          ucum_code: kg.m2-1
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +        unit_conversion:
    +          target_unit: g.m2-1
    +          target_unit_scheme: ucum_code
    +          source_unit: kg.m2-1
    +
    +
    +

    Combo: test_simple_unit_conversion[height_in_m-height_in_cm-m-cm-ucum_code-1.0-100.0-None-None] {#combo-test_simple_unit_conversionheight_in_m-height_in_cm-m-cm-ucum_code-10-1000-none-none}

    +

    Unit Conversion: 1.0 m => 100.0 cm [with height_in_m]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      height_in_m:
    +        name: height_in_m
    +        range: float
    +        unit:
    +          ucum_code: m
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      height_in_cm:
    +        name: height_in_cm
    +        populated_from: height_in_m
    +        unit_conversion:
    +          target_unit: cm
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    height_in_m: 1.0
    +
    +
    +
      +
    • Target Object:
    • +
    +
    height_in_cm: 100.0
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      height_in_cm:
    +        name: height_in_cm
    +        range: float
    +        unit:
    +          ucum_code: cm
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      height_in_m:
    +        name: height_in_m
    +        populated_from: height_in_cm
    +        unit_conversion:
    +          target_unit: m
    +          target_unit_scheme: ucum_code
    +          source_unit: cm
    +
    +
    +

    Feature Set: test_complex_unit_conversion

    +

    Test unit conversion, from complex object to simple scalar.

    +
      +
    • source_unit:
    • +
    • target_unit:
    • +
    • source_value:
    • +
    • target_value:
    • +
    • roundtrip_object:
    • +
    • err:
    • +
    +

    Combo: test_complex_unit_conversion[m-cm-1.0-100.0-roundtrip_object0-None] {#combo-test_complex_unit_conversionm-cm-10-1000-roundtrip_object0-none}

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  Q:
    +    name: Q
    +    attributes:
    +      magnitude:
    +        name: magnitude
    +        range: float
    +      unit:
    +        name: unit
    +        range: string
    +  C:
    +    name: C
    +    attributes:
    +      q:
    +        name: q
    +        range: Q
    +    tree_root: true
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  D:
    +    name: D
    +    populated_from: C
    +    slot_derivations:
    +      q_in_cm:
    +        name: q_in_cm
    +        populated_from: q
    +        unit_conversion:
    +          target_unit: cm
    +          source_unit_slot: unit
    +          source_magnitude_slot: magnitude
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    q:
    +  magnitude: 1.0
    +  unit: m
    +
    +
    +
      +
    • Target Object:
    • +
    +
    q_in_cm: 100.0
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  D:
    +    name: D
    +    attributes:
    +      q_in_cm:
    +        name: q_in_cm
    +        range: Q
    +        unit:
    +          ucum_code: cm
    +    tree_root: true
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: D
    +    slot_derivations:
    +      q:
    +        name: q
    +        populated_from: q_in_cm
    +        unit_conversion:
    +          source_unit: cm
    +          target_unit_slot: unit
    +          target_magnitude_slot: magnitude
    +
    +
    +

    Combo: test_complex_unit_conversion[cm-cm-100.0-100.0-roundtrip_object1-None] {#combo-test_complex_unit_conversioncm-cm-1000-1000-roundtrip_object1-none}

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  Q:
    +    name: Q
    +    attributes:
    +      magnitude:
    +        name: magnitude
    +        range: float
    +      unit:
    +        name: unit
    +        range: string
    +  C:
    +    name: C
    +    attributes:
    +      q:
    +        name: q
    +        range: Q
    +    tree_root: true
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  D:
    +    name: D
    +    populated_from: C
    +    slot_derivations:
    +      q_in_cm:
    +        name: q_in_cm
    +        populated_from: q
    +        unit_conversion:
    +          target_unit: cm
    +          source_unit_slot: unit
    +          source_magnitude_slot: magnitude
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    q:
    +  magnitude: 100.0
    +  unit: cm
    +
    +
    +
      +
    • Target Object:
    • +
    +
    q_in_cm: 100.0
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  D:
    +    name: D
    +    attributes:
    +      q_in_cm:
    +        name: q_in_cm
    +        range: Q
    +        unit:
    +          ucum_code: cm
    +    tree_root: true
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: D
    +    slot_derivations:
    +      q:
    +        name: q
    +        populated_from: q_in_cm
    +        unit_conversion:
    +          source_unit: cm
    +          target_unit_slot: unit
    +          target_magnitude_slot: magnitude
    +
    +
    +

    Combo: test_complex_unit_conversion[cm-ml-100.0-None-None-DimensionalityError] {#combo-test_complex_unit_conversioncm-ml-1000-none-none-dimensionalityerror}

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  Q:
    +    name: Q
    +    attributes:
    +      magnitude:
    +        name: magnitude
    +        range: float
    +      unit:
    +        name: unit
    +        range: string
    +  C:
    +    name: C
    +    attributes:
    +      q:
    +        name: q
    +        range: Q
    +    tree_root: true
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  D:
    +    name: D
    +    populated_from: C
    +    slot_derivations:
    +      q_in_ml:
    +        name: q_in_ml
    +        populated_from: q
    +        unit_conversion:
    +          target_unit: ml
    +          source_unit_slot: unit
    +          source_magnitude_slot: magnitude
    +
    +
    +

    Object Transformation:

    +

    Expected Error: DimensionalityError

    +
      +
    • Source Object:
    • +
    +
    q:
    +  magnitude: 100.0
    +  unit: cm
    +
    +
    +
      +
    • Target Object:
    • +
    +
    null
    +...
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  D:
    +    name: D
    +    attributes:
    +      q_in_ml:
    +        name: q_in_ml
    +        range: Q
    +        unit:
    +          ucum_code: ml
    +    tree_root: true
    +
    +
    +

    Combo: test_complex_unit_conversion[cm-pinknoodles-100.0-None-None-UndefinedUnitError] {#combo-test_complex_unit_conversioncm-pinknoodles-1000-none-none-undefineduniterror}

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  Q:
    +    name: Q
    +    attributes:
    +      magnitude:
    +        name: magnitude
    +        range: float
    +      unit:
    +        name: unit
    +        range: string
    +  C:
    +    name: C
    +    attributes:
    +      q:
    +        name: q
    +        range: Q
    +    tree_root: true
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  D:
    +    name: D
    +    populated_from: C
    +    slot_derivations:
    +      q_in_pinknoodles:
    +        name: q_in_pinknoodles
    +        populated_from: q
    +        unit_conversion:
    +          target_unit: pinknoodles
    +          source_unit_slot: unit
    +          source_magnitude_slot: magnitude
    +
    +
    +

    Object Transformation:

    +

    Expected Error: UndefinedUnitError

    +
      +
    • Source Object:
    • +
    +
    q:
    +  magnitude: 100.0
    +  unit: cm
    +
    +
    +
      +
    • Target Object:
    • +
    +
    null
    +...
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  D:
    +    name: D
    +    attributes:
    +      q_in_pinknoodles:
    +        name: q_in_pinknoodles
    +        range: Q
    +        unit:
    +          ucum_code: pinknoodles
    +    tree_root: true
    +
    +
    +

    Feature Set: test_stringify

    +

    Test compaction of multivalued slots into a string.

    +

    Stringification is primarily intended for mapping from complex nested +formats to simple tabular TSV formats, where some of the following +methodologies can be used:

    +
      +
    • flattening lists using an (internal) delimiter
    • +
    • flattening lists or more complex objects using JSON or YAML
    • +
    + + +
      +
    • delimiter: delimiter to use in stringification
    • +
    • source_value: source value (a list)
    • +
    • target_value: expected value of slot in target object (a + string)
    • +
    +

    Combo: test_stringify[,-source_value0-a,b]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        multivalued: true
    +        range: string
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  D:
    +    name: D
    +    populated_from: C
    +    slot_derivations:
    +      s1_verbatim:
    +        name: s1_verbatim
    +        populated_from: s1
    +        stringification:
    +          delimiter: ','
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1:
    +- a
    +- b
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1_verbatim: a,b
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  D:
    +    name: D
    +    attributes:
    +      s1_verbatim:
    +        name: s1_verbatim
    +        multivalued: false
    +        range: string
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: D
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1_verbatim
    +        stringification:
    +          delimiter: ','
    +          reversed: true
    +
    +
    +

    Combo: test_stringify[|-source_value1-a|b]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        multivalued: true
    +        range: string
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  D:
    +    name: D
    +    populated_from: C
    +    slot_derivations:
    +      s1_verbatim:
    +        name: s1_verbatim
    +        populated_from: s1
    +        stringification:
    +          delimiter: '|'
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1:
    +- a
    +- b
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1_verbatim: a|b
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  D:
    +    name: D
    +    attributes:
    +      s1_verbatim:
    +        name: s1_verbatim
    +        multivalued: false
    +        range: string
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: D
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1_verbatim
    +        stringification:
    +          delimiter: '|'
    +          reversed: true
    +
    +
    +

    Combo: test_stringify[|-source_value2-a]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        multivalued: true
    +        range: string
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  D:
    +    name: D
    +    populated_from: C
    +    slot_derivations:
    +      s1_verbatim:
    +        name: s1_verbatim
    +        populated_from: s1
    +        stringification:
    +          delimiter: '|'
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1:
    +- a
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1_verbatim: a
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  D:
    +    name: D
    +    attributes:
    +      s1_verbatim:
    +        name: s1_verbatim
    +        multivalued: false
    +        range: string
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: D
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1_verbatim
    +        stringification:
    +          delimiter: '|'
    +          reversed: true
    +
    +
    +

    Combo: test_stringify[|-source_value3-]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        multivalued: true
    +        range: string
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  D:
    +    name: D
    +    populated_from: C
    +    slot_derivations:
    +      s1_verbatim:
    +        name: s1_verbatim
    +        populated_from: s1
    +        stringification:
    +          delimiter: '|'
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    {}
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1_verbatim: ''
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  D:
    +    name: D
    +    attributes:
    +      s1_verbatim:
    +        name: s1_verbatim
    +        multivalued: false
    +        range: string
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: D
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1_verbatim
    +        stringification:
    +          delimiter: '|'
    +          reversed: true
    +
    +
    +

    Combo: test_stringify[JSON-source_value4-[\"a\", \"b\"]]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        multivalued: true
    +        range: string
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  D:
    +    name: D
    +    populated_from: C
    +    slot_derivations:
    +      s1_verbatim:
    +        name: s1_verbatim
    +        populated_from: s1
    +        stringification:
    +          syntax: JSON
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1:
    +- a
    +- b
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1_verbatim: '["a", "b"]'
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  D:
    +    name: D
    +    attributes:
    +      s1_verbatim:
    +        name: s1_verbatim
    +        multivalued: false
    +        range: string
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: D
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1_verbatim
    +        stringification:
    +          reversed: true
    +          syntax: JSON
    +
    +
    +

    Combo: test_stringify[JSON-source_value5-[]]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        multivalued: true
    +        range: string
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  D:
    +    name: D
    +    populated_from: C
    +    slot_derivations:
    +      s1_verbatim:
    +        name: s1_verbatim
    +        populated_from: s1
    +        stringification:
    +          syntax: JSON
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    {}
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1_verbatim: '[]'
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  D:
    +    name: D
    +    attributes:
    +      s1_verbatim:
    +        name: s1_verbatim
    +        multivalued: false
    +        range: string
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: D
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1_verbatim
    +        stringification:
    +          reversed: true
    +          syntax: JSON
    +
    +
    +

    Combo: test_stringify[YAML-source_value6-[a, b]]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        multivalued: true
    +        range: string
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  D:
    +    name: D
    +    populated_from: C
    +    slot_derivations:
    +      s1_verbatim:
    +        name: s1_verbatim
    +        populated_from: s1
    +        stringification:
    +          syntax: YAML
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1:
    +- a
    +- b
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1_verbatim: '[a, b]'
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  D:
    +    name: D
    +    attributes:
    +      s1_verbatim:
    +        name: s1_verbatim
    +        multivalued: false
    +        range: string
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: D
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1_verbatim
    +        stringification:
    +          reversed: true
    +          syntax: YAML
    +
    +
    +

    Feature Set: test_isomorphic

    +

    Test mapping a schema to an identical schema (i.e copy).

    +

    This also tests for the ability to recursively descend a nested +structure.

    +
      +
    • source_object:
    • +
    • use_expr:
    • +
    • supply_source_schema: TODO: always True for now
    • +
    +

    Combo: test_isomorphic[True-True-source_object0]

    +

    Source Schema:

    +
    name: isomorphic
    +id: isomorphic
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  Container:
    +    name: Container
    +    attributes:
    +      c_list:
    +        name: c_list
    +        multivalued: true
    +        range: C
    +      d:
    +        name: d
    +        range: D
    +    tree_root: true
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: string
    +      s2:
    +        name: s2
    +        range: string
    +  D:
    +    name: D
    +    attributes:
    +      s3:
    +        name: s3
    +        range: string
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  Container:
    +    name: Container
    +    populated_from: Container
    +    slot_derivations:
    +      c_list:
    +        name: c_list
    +        populated_from: c_list
    +        range: C
    +      d:
    +        name: d
    +        populated_from: d
    +        range: D
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +      s2:
    +        name: s2
    +        populated_from: s2
    +  D:
    +    name: D
    +    populated_from: D
    +    slot_derivations:
    +      s3:
    +        name: s3
    +        expr: s3
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    c_list:
    +- s1: a
    +  s2: b
    +- s1: c
    +  s2: d
    +d:
    +  s3: e
    +
    +
    +
      +
    • Target Object:
    • +
    +
    c_list:
    +- s1: a
    +  s2: b
    +- s1: c
    +  s2: d
    +d:
    +  s3: e
    +
    +
    +

    Target Schema (Derived):

    +
    name: isomorphic-derived
    +id: isomorphic-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: isomorphic-derived/
    +classes:
    +  Container:
    +    name: Container
    +    attributes:
    +      c_list:
    +        name: c_list
    +        multivalued: true
    +        range: C
    +      d:
    +        name: d
    +        range: D
    +    tree_root: true
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: string
    +      s2:
    +        name: s2
    +        range: string
    +  D:
    +    name: D
    +    attributes:
    +      s3:
    +        name: s3
    +        range: string
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  Container:
    +    name: Container
    +    populated_from: Container
    +    slot_derivations:
    +      c_list:
    +        name: c_list
    +        populated_from: c_list
    +        range: C
    +      d:
    +        name: d
    +        populated_from: d
    +        range: D
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +      s2:
    +        name: s2
    +        populated_from: s2
    +  D:
    +    name: D
    +    populated_from: D
    +    slot_derivations:
    +      s3:
    +        name: s3
    +        populated_from: s3
    +
    +
    +

    Combo: test_isomorphic[True-False-source_object0]

    +

    Source Schema:

    +
    name: isomorphic
    +id: isomorphic
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  Container:
    +    name: Container
    +    attributes:
    +      c_list:
    +        name: c_list
    +        multivalued: true
    +        range: C
    +      d:
    +        name: d
    +        range: D
    +    tree_root: true
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: string
    +      s2:
    +        name: s2
    +        range: string
    +  D:
    +    name: D
    +    attributes:
    +      s3:
    +        name: s3
    +        range: string
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  Container:
    +    name: Container
    +    populated_from: Container
    +    slot_derivations:
    +      c_list:
    +        name: c_list
    +        populated_from: c_list
    +        range: C
    +      d:
    +        name: d
    +        populated_from: d
    +        range: D
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +      s2:
    +        name: s2
    +        populated_from: s2
    +  D:
    +    name: D
    +    populated_from: D
    +    slot_derivations:
    +      s3:
    +        name: s3
    +        populated_from: s3
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    c_list:
    +- s1: a
    +  s2: b
    +- s1: c
    +  s2: d
    +d:
    +  s3: e
    +
    +
    +
      +
    • Target Object:
    • +
    +
    c_list:
    +- s1: a
    +  s2: b
    +- s1: c
    +  s2: d
    +d:
    +  s3: e
    +
    +
    +

    Target Schema (Derived):

    +
    name: isomorphic-derived
    +id: isomorphic-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: isomorphic-derived/
    +classes:
    +  Container:
    +    name: Container
    +    attributes:
    +      c_list:
    +        name: c_list
    +        multivalued: true
    +        range: C
    +      d:
    +        name: d
    +        range: D
    +    tree_root: true
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: string
    +      s2:
    +        name: s2
    +        range: string
    +  D:
    +    name: D
    +    attributes:
    +      s3:
    +        name: s3
    +        range: string
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  Container:
    +    name: Container
    +    populated_from: Container
    +    slot_derivations:
    +      c_list:
    +        name: c_list
    +        populated_from: c_list
    +        range: C
    +      d:
    +        name: d
    +        populated_from: d
    +        range: D
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +      s2:
    +        name: s2
    +        populated_from: s2
    +  D:
    +    name: D
    +    populated_from: D
    +    slot_derivations:
    +      s3:
    +        name: s3
    +        populated_from: s3
    +
    +
    +

    Feature Set: test_join

    +

    Test joining two objects into a single object, aka denormalization.

    +
      +
    • source_object: normalized source object
    • +
    • target_object: denormalized target object
    • +
    • inlined: True if the source objects are inlined
    • +
    +

    Combo: test_join[source_object0-target_object0-True]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  R:
    +    name: R
    +    attributes:
    +      s1:
    +        name: s1
    +        range: E
    +        inlined: true
    +      s2:
    +        name: s2
    +        range: E
    +        inlined: true
    +    tree_root: true
    +  E:
    +    name: E
    +    attributes:
    +      id:
    +        name: id
    +        identifier: true
    +        range: string
    +      name:
    +        name: name
    +        range: string
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  R:
    +    name: R
    +    populated_from: R
    +    slot_derivations:
    +      s1_id:
    +        name: s1_id
    +        expr: s1.id
    +      s1_name:
    +        name: s1_name
    +        expr: s1.name
    +      s2_id:
    +        name: s2_id
    +        expr: s2.id
    +      s2_name:
    +        name: s2_name
    +        expr: s2.name
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1:
    +  id: x1
    +  name: foo
    +s2:
    +  id: x2
    +  name: bar
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1_id: x1
    +s1_name: foo
    +s2_id: x2
    +s2_name: bar
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  R:
    +    name: R
    +    attributes:
    +      s1_id:
    +        name: s1_id
    +      s1_name:
    +        name: s1_name
    +      s2_id:
    +        name: s2_id
    +      s2_name:
    +        name: s2_name
    +    tree_root: true
    +
    +
    +

    Combo: test_join[source_object0-target_object0-False]

    +

    Source Schema:

    +
    name: types
    +id: types
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  R:
    +    name: R
    +    attributes:
    +      s1:
    +        name: s1
    +        range: E
    +        inlined: false
    +      s2:
    +        name: s2
    +        range: E
    +        inlined: false
    +    tree_root: false
    +  E:
    +    name: E
    +    attributes:
    +      id:
    +        name: id
    +        identifier: true
    +        range: string
    +      name:
    +        name: name
    +        range: string
    +  Container:
    +    name: Container
    +    attributes:
    +      r_list:
    +        name: r_list
    +        multivalued: true
    +        range: R
    +      e_list:
    +        name: e_list
    +        multivalued: true
    +        range: E
    +        inlined_as_list: true
    +    tree_root: true
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  R:
    +    name: R
    +    populated_from: R
    +    slot_derivations:
    +      s1_id:
    +        name: s1_id
    +        expr: s1.id
    +      s1_name:
    +        name: s1_name
    +        expr: s1.name
    +      s2_id:
    +        name: s2_id
    +        expr: s2.id
    +      s2_name:
    +        name: s2_name
    +        expr: s2.name
    +  Container:
    +    name: Container
    +    populated_from: Container
    +    slot_derivations:
    +      r_list:
    +        name: r_list
    +        populated_from: r_list
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    r_list:
    +- s1: x1
    +  s2: x2
    +e_list:
    +- id: x1
    +  name: foo
    +- id: x2
    +  name: bar
    +
    +
    +
      +
    • Target Object:
    • +
    +
    r_list:
    +- s1_id: x1
    +  s1_name: foo
    +  s2_id: x2
    +  s2_name: bar
    +
    +
    +

    Target Schema (Derived):

    +
    name: types-derived
    +id: types-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: types-derived/
    +classes:
    +  R:
    +    name: R
    +    attributes:
    +      s1_id:
    +        name: s1_id
    +      s1_name:
    +        name: s1_name
    +      s2_id:
    +        name: s2_id
    +      s2_name:
    +        name: s2_name
    +    tree_root: false
    +  Container:
    +    name: Container
    +    attributes:
    +      r_list:
    +        name: r_list
    +        multivalued: true
    +        range: R
    +    tree_root: true
    +
    +
    +

    Feature Set: test_map_enum

    +

    Test mapping between enum values.

    +

    Currently this only supports simple dictionary-style mapping between +permissible values, akin to SSSOM, but in future additional expressivity +will be supported, including:

    +
      +
    • mapping ranges to categorical values
    • +
    • boolean/branching logic
    • +
    + + +
      +
    • source_value:
    • +
    • mapping:
    • +
    • target_value:
    • +
    +

    Combo: test_map_enum[A-mapping0-B-False]

    +

    Source Schema:

    +
    name: enums
    +id: enums
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +enums:
    +  E:
    +    name: E
    +    permissible_values:
    +      A:
    +        text: A
    +      B:
    +        text: B
    +      C:
    +        text: C
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: E
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +enum_derivations:
    +  E:
    +    name: E
    +    mirror_source: false
    +    populated_from: E
    +    permissible_value_derivations:
    +      B:
    +        name: B
    +        populated_from: A
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: A
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: B
    +
    +
    +

    Target Schema (Derived):

    +
    name: enums-derived
    +id: enums-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: enums-derived/
    +enums:
    +  E:
    +    name: E
    +    permissible_values:
    +      A:
    +        text: A
    +      B:
    +        text: B
    +      C:
    +        text: C
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: E
    +
    +
    +

    Inverted Transformation Specification (Derived):

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +enum_derivations:
    +  E:
    +    name: E
    +    populated_from: E
    +    permissible_value_derivations:
    +      A:
    +        name: A
    +        populated_from: B
    +
    +
    +

    Combo: test_map_enum[Z-mapping1-None-False]

    +

    Source Schema:

    +
    name: enums
    +id: enums
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +enums:
    +  E:
    +    name: E
    +    permissible_values:
    +      A:
    +        text: A
    +      B:
    +        text: B
    +      C:
    +        text: C
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: E
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +enum_derivations:
    +  E:
    +    name: E
    +    mirror_source: false
    +    populated_from: E
    +    permissible_value_derivations:
    +      B:
    +        name: B
    +        populated_from: A
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: Z
    +
    +
    +
      +
    • Target Object:
    • +
    +
    {}
    +
    +
    +

    Target Schema (Derived):

    +
    name: enums-derived
    +id: enums-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: enums-derived/
    +enums:
    +  E:
    +    name: E
    +    permissible_values:
    +      A:
    +        text: A
    +      B:
    +        text: B
    +      C:
    +        text: C
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: E
    +
    +
    +

    Combo: test_map_enum[C-mapping2-C-True]

    +

    Source Schema:

    +
    name: enums
    +id: enums
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +enums:
    +  E:
    +    name: E
    +    permissible_values:
    +      A:
    +        text: A
    +      B:
    +        text: B
    +      C:
    +        text: C
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: E
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +enum_derivations:
    +  E:
    +    name: E
    +    mirror_source: true
    +    populated_from: E
    +    permissible_value_derivations:
    +      B:
    +        name: B
    +        populated_from: A
    +
    +
    +

    s### Combo: test_map_enum[A-mapping3-B-False]

    +

    Source Schema:

    +
    name: enums
    +id: enums
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +enums:
    +  E:
    +    name: E
    +    permissible_values:
    +      A:
    +        text: A
    +      B:
    +        text: B
    +      C:
    +        text: C
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: E
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +enum_derivations:
    +  E:
    +    name: E
    +    mirror_source: false
    +    populated_from: E
    +    permissible_value_derivations:
    +      B:
    +        name: B
    +        sources:
    +        - A
    +        - C
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: A
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: B
    +
    +
    +

    Target Schema (Derived):

    +
    name: enums-derived
    +id: enums-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: enums-derived/
    +enums:
    +  E:
    +    name: E
    +    permissible_values:
    +      A:
    +        text: A
    +      B:
    +        text: B
    +      C:
    +        text: C
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: E
    +
    +
    +

    Combo: test_map_enum[C-mapping4-B-False]

    +

    Source Schema:

    +
    name: enums
    +id: enums
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +enums:
    +  E:
    +    name: E
    +    permissible_values:
    +      A:
    +        text: A
    +      B:
    +        text: B
    +      C:
    +        text: C
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: E
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        populated_from: s1
    +enum_derivations:
    +  E:
    +    name: E
    +    mirror_source: false
    +    populated_from: E
    +    permissible_value_derivations:
    +      B:
    +        name: B
    +        sources:
    +        - A
    +        - C
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: C
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: B
    +
    +
    +

    Target Schema (Derived):

    +
    name: enums-derived
    +id: enums-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: enums-derived/
    +enums:
    +  E:
    +    name: E
    +    permissible_values:
    +      A:
    +        text: A
    +      B:
    +        text: B
    +      C:
    +        text: C
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: E
    +
    +
    +

    Feature Set: test_inheritance

    +

    Test inheritance.

    +

    Transformation specifications can utilize inheritance, in the same way +that LinkML schemas can.

    +
      +
    • is_a: use is_as instead of mixins in test schema
    • +
    • flatten: roll down inherited slots
    • +
    +

    Combo: test_inheritance[False-True]

    +

    Source Schema:

    +
    name: expr
    +id: expr
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    is_a: D
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +    tree_root: true
    +  D:
    +    name: D
    +    attributes:
    +      s2:
    +        name: s2
    +        range: integer
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    is_a: D
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        expr: s1 + 1
    +  D:
    +    name: D
    +    populated_from: D
    +    slot_derivations:
    +      s2:
    +        name: s2
    +        expr: s2 + 1
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 1
    +s2: 2
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: 2
    +s2: 3
    +
    +
    +

    Target Schema (Derived):

    +
    name: expr-derived
    +id: expr-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: expr-derived/
    +classes:
    +  C:
    +    name: C
    +    is_a: D
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +    tree_root: true
    +  D:
    +    name: D
    +    attributes:
    +      s2:
    +        name: s2
    +        range: integer
    +
    +
    +

    Combo: test_inheritance[False-False]

    +

    Source Schema:

    +
    name: expr
    +id: expr
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    mixins:
    +    - D
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +    tree_root: true
    +  D:
    +    name: D
    +    attributes:
    +      s2:
    +        name: s2
    +        range: integer
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    mixins:
    +    - D
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        expr: s1 + 1
    +  D:
    +    name: D
    +    populated_from: D
    +    slot_derivations:
    +      s2:
    +        name: s2
    +        expr: s2 + 1
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 1
    +s2: 2
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: 2
    +s2: 3
    +
    +
    +

    Target Schema (Derived):

    +
    name: expr-derived
    +id: expr-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: expr-derived/
    +classes:
    +  C:
    +    name: C
    +    mixins:
    +    - D
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +    tree_root: true
    +  D:
    +    name: D
    +    attributes:
    +      s2:
    +        name: s2
    +        range: integer
    +
    +
    +

    Combo: test_inheritance[True-True]

    +

    Source Schema:

    +
    name: expr
    +id: expr
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    is_a: D
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +    tree_root: true
    +  D:
    +    name: D
    +    attributes:
    +      s2:
    +        name: s2
    +        range: integer
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        expr: s1 + 1
    +      s2:
    +        name: s2
    +        expr: s2 + 1
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 1
    +s2: 2
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: 2
    +s2: 3
    +
    +
    +

    Target Schema (Derived):

    +
    name: expr-derived
    +id: expr-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: expr-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +      s2:
    +        name: s2
    +        range: integer
    +    tree_root: true
    +
    +
    +

    Combo: test_inheritance[True-False]

    +

    Source Schema:

    +
    name: expr
    +id: expr
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: test
    +classes:
    +  C:
    +    name: C
    +    mixins:
    +    - D
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +    tree_root: true
    +  D:
    +    name: D
    +    attributes:
    +      s2:
    +        name: s2
    +        range: integer
    +
    +
    +

    Transformer Specification:

    +
    class_derivations:
    +  C:
    +    name: C
    +    populated_from: C
    +    slot_derivations:
    +      s1:
    +        name: s1
    +        expr: s1 + 1
    +      s2:
    +        name: s2
    +        expr: s2 + 1
    +
    +
    +

    Object Transformation:

    +
      +
    • Source Object:
    • +
    +
    s1: 1
    +s2: 2
    +
    +
    +
      +
    • Target Object:
    • +
    +
    s1: 2
    +s2: 3
    +
    +
    +

    Target Schema (Derived):

    +
    name: expr-derived
    +id: expr-derived
    +imports:
    +- linkml:types
    +prefixes:
    +  linkml:
    +    prefix_prefix: linkml
    +    prefix_reference: https://w3id.org/linkml/
    +  test:
    +    prefix_prefix: test
    +    prefix_reference: http://example.org/test/
    +default_prefix: expr-derived/
    +classes:
    +  C:
    +    name: C
    +    attributes:
    +      s1:
    +        name: s1
    +        range: integer
    +      s2:
    +        name: s2
    +        range: integer
    +    tree_root: true
    +
    +
    +

    . 55 passed, 1 skipped, 250 warnings in 9.98s

    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/stringification/index.html b/stringification/index.html new file mode 100644 index 0000000..577ad41 --- /dev/null +++ b/stringification/index.html @@ -0,0 +1,439 @@ + + + + + + + + + + + + + + + + + + + + Slot: stringification - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: stringification

    +

    URI: linkmltr:stringification

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...no
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: stringification
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: stringification
    +owner: SlotDerivation
    +domain_of:
    +- SlotDerivation
    +range: StringificationConfiguration
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/syntax/index.html b/syntax/index.html new file mode 100644 index 0000000..7290609 --- /dev/null +++ b/syntax/index.html @@ -0,0 +1,465 @@ + + + + + + + + + + + + + + + + + + + + Slot: syntax - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: syntax

    +

    URI: linkmltr:syntax

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    StringificationConfigurationno
    +

    Properties

    + +

    Examples

    + + + + + + + + + + + + + + +
    Value
    json
    yaml
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: syntax
    +examples:
    +- value: json
    +- value: yaml
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: syntax
    +owner: StringificationConfiguration
    +domain_of:
    +- StringificationConfiguration
    +range: SerializationSyntaxType
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/target_magnitude_slot/index.html b/target_magnitude_slot/index.html new file mode 100644 index 0000000..534326f --- /dev/null +++ b/target_magnitude_slot/index.html @@ -0,0 +1,438 @@ + + + + + + + + + + + + + + + + + + + + Slot: target_magnitude_slot - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: target_magnitude_slot

    +

    URI: linkmltr:target_magnitude_slot

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    UnitConversionConfigurationno
    +

    Properties

    +
      +
    • Range: NONE
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: target_magnitude_slot
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: target_magnitude_slot
    +owner: UnitConversionConfiguration
    +domain_of:
    +- UnitConversionConfiguration
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/target_schema/index.html b/target_schema/index.html index cf3942c..9f4058c 100644 --- a/target_schema/index.html +++ b/target_schema/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -325,10 +341,8 @@ - - - - + +

    Slot: target_schema

    @@ -342,18 +356,20 @@

    Applicable Classes

    Name Description +Modifies Slot TransformationSpecification A collection of mappings between source and target classes +no

    Properties

    Identifier and Mapping Information

    Schema Source

    @@ -371,7 +387,6 @@

    LinkML Source

    owner: TransformationSpecification domain_of: - TransformationSpecification -range: string @@ -415,10 +430,10 @@

    LinkML Source

    - + - + diff --git a/target_unit/index.html b/target_unit/index.html new file mode 100644 index 0000000..d3acd75 --- /dev/null +++ b/target_unit/index.html @@ -0,0 +1,438 @@ + + + + + + + + + + + + + + + + + + + + Slot: target_unit - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: target_unit

    +

    URI: linkmltr:target_unit

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    UnitConversionConfigurationno
    +

    Properties

    +
      +
    • Range: NONE
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: target_unit
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: target_unit
    +owner: UnitConversionConfiguration
    +domain_of:
    +- UnitConversionConfiguration
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/target_unit_scheme/index.html b/target_unit_scheme/index.html new file mode 100644 index 0000000..1690c0f --- /dev/null +++ b/target_unit_scheme/index.html @@ -0,0 +1,461 @@ + + + + + + + + + + + + + + + + + + + + Slot: target_unit_scheme - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: target_unit_scheme

    +

    URI: linkmltr:target_unit_scheme

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    UnitConversionConfigurationno
    +

    Properties

    + +

    Examples

    + + + + + + + + + + + +
    Value
    ucum
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: target_unit_scheme
    +examples:
    +- value: ucum
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: target_unit_scheme
    +owner: UnitConversionConfiguration
    +domain_of:
    +- UnitConversionConfiguration
    +range: string
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/target_unit_slot/index.html b/target_unit_slot/index.html new file mode 100644 index 0000000..9c145db --- /dev/null +++ b/target_unit_slot/index.html @@ -0,0 +1,438 @@ + + + + + + + + + + + + + + + + + + + + Slot: target_unit_slot - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: target_unit_slot

    +

    URI: linkmltr:target_unit_slot

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    UnitConversionConfigurationno
    +

    Properties

    +
      +
    • Range: NONE
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: target_unit_slot
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: target_unit_slot
    +owner: UnitConversionConfiguration
    +domain_of:
    +- UnitConversionConfiguration
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/title/index.html b/title/index.html index ddba703..50e8050 100644 --- a/title/index.html +++ b/title/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -325,15 +341,13 @@ - - - - + +

    Slot: title

    human readable title for this transformation specification

    -

    URI: linkmltr:title

    +

    URI: dcterms:title

    Applicable Classes

    @@ -342,18 +356,20 @@

    Applicable Classes

    Name Description +Modifies Slot TransformationSpecification A collection of mappings between source and target classes +no

    Properties

    Identifier and Mapping Information

    Schema Source

    @@ -367,11 +383,11 @@

    LinkML Source

    description: human readable title for this transformation specification from_schema: https://w3id.org/linkml/transformer rank: 1000 +slot_uri: dcterms:title alias: title owner: TransformationSpecification domain_of: - TransformationSpecification -range: string @@ -415,10 +431,10 @@

    LinkML Source

    - + - + diff --git a/transformer/index.html b/transformer/index.html index 7ae625c..578c63f 100644 --- a/transformer/index.html +++ b/transformer/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -276,10 +292,8 @@ - - - - + +

    transformer

    @@ -335,10 +349,10 @@

    transformer

    - + - + diff --git a/type_designator/index.html b/type_designator/index.html index 5836a93..91feb2c 100644 --- a/type_designator/index.html +++ b/type_designator/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -325,10 +341,8 @@ - - - - + +

    Slot: type_designator

    @@ -341,18 +355,20 @@

    Applicable Classes

    Name Description +Modifies Slot SlotDerivation A specification of how to derive the value of a target slot from a source slo... +no

    Properties

    Identifier and Mapping Information

    Schema Source

    @@ -413,10 +429,10 @@

    LinkML Source

    - + - + diff --git a/unit_conversion/index.html b/unit_conversion/index.html new file mode 100644 index 0000000..111dd79 --- /dev/null +++ b/unit_conversion/index.html @@ -0,0 +1,439 @@ + + + + + + + + + + + + + + + + + + + + Slot: unit_conversion - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: unit_conversion

    +

    URI: linkmltr:unit_conversion

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...no
    +

    Properties

    + +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: unit_conversion
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +alias: unit_conversion
    +owner: SlotDerivation
    +domain_of:
    +- SlotDerivation
    +range: UnitConversionConfiguration
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/value/index.html b/value/index.html index eb8096f..b1a6abd 100644 --- a/value/index.html +++ b/value/index.html @@ -10,8 +10,10 @@ + + - + @@ -19,11 +21,7 @@ - - - - - + @@ -49,15 +47,12 @@ - - - - - - + + + @@ -76,7 +71,9 @@ -
    + + +
    - +
    GitHub @@ -189,7 +186,7 @@
    - +
    GitHub @@ -221,28 +218,47 @@ -
  • - - About - -
  • - - +
  • - + + + + + + + + +
  • + + @@ -325,10 +341,8 @@ - - - - + +

    Slot: value

    @@ -341,12 +355,14 @@

    Applicable Classes

    Name Description +Modifies Slot KeyVal +no @@ -413,10 +429,10 @@

    LinkML Source

    - + - + diff --git a/value_mappings/index.html b/value_mappings/index.html new file mode 100644 index 0000000..17d12b9 --- /dev/null +++ b/value_mappings/index.html @@ -0,0 +1,473 @@ + + + + + + + + + + + + + + + + + + + + Slot: value_mappings - LinkML-Transformer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Slot: value_mappings

    +

    A mapping table that is applied directly to mappings, in order of precedence

    +

    URI: linkmltr:value_mappings

    + + +

    Applicable Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescriptionModifies Slot
    ElementDerivationAn abstract grouping for classes that provide a specification of how to deri...no
    ClassDerivationA specification of how to derive a target class from a source classno
    SlotDerivationA specification of how to derive the value of a target slot from a source slo...no
    EnumDerivationA specification of how to derive the value of a target enum from a source enu...no
    PermissibleValueDerivationA specification of how to derive the value of a PV from a source enumno
    PrefixDerivationno
    +

    Properties

    +
      +
    • +

      Range: KeyVal

      +
    • +
    • +

      Multivalued: True

      +
    • +
    +

    Identifier and Mapping Information

    +

    Schema Source

    +
      +
    • from schema: https://w3id.org/linkml/transformer
    • +
    +

    LinkML Source

    +
    + +
    name: value_mappings
    +description: A mapping table that is applied directly to mappings, in order of precedence
    +from_schema: https://w3id.org/linkml/transformer
    +rank: 1000
    +multivalued: true
    +alias: value_mappings
    +owner: ElementDerivation
    +domain_of:
    +- ElementDerivation
    +range: KeyVal
    +inlined: true
    +
    +
    + +
    + + + + + + +
    +
    + + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file From 115a9337867b5ff0ee56c42ce2f93d1621b8630a Mon Sep 17 00:00:00 2001 From: <> Date: Mon, 25 Mar 2024 23:56:57 +0000 Subject: [PATCH 4/6] Deployed 6b2654e with MkDocs version: 1.5.3 --- 404.html | 356 +- AliasedClass/index.html | 296 +- Any/index.html | 286 +- Boolean/index.html | 421 +- ClassDerivation/index.html | 327 +- ClassReference/index.html | 421 +- CollectionType/index.html | 445 +- CopyDirective/index.html | 306 +- Curie/index.html | 429 +- Date/index.html | 421 +- DateOrDatetime/index.html | 421 +- Datetime/index.html | 421 +- Decimal/index.html | 421 +- Double/index.html | 421 +- ElementDerivation/index.html | 331 +- EnumDerivation/index.html | 337 +- EnumReference/index.html | 421 +- Float/index.html | 421 +- Integer/index.html | 421 +- Inverse/index.html | 300 +- Jsonpath/index.html | 421 +- Jsonpointer/index.html | 421 +- KeyVal/index.html | 294 +- Ncname/index.html | 421 +- Nodeidentifier/index.html | 421 +- Objectidentifier/index.html | 429 +- PermissibleValueDerivation/index.html | 339 +- PrefixDerivation/index.html | 302 +- SerializationSyntaxType/index.html | 445 +- SlotDerivation/index.html | 357 +- SlotReference/index.html | 421 +- Sparqlpath/index.html | 421 +- SpecificationComponent/index.html | 294 +- String/index.html | 421 +- StringificationConfiguration/index.html | 318 +- Time/index.html | 421 +- TransformationSpecification/index.html | 319 +- UnitConversionConfiguration/index.html | 312 +- Uri/index.html | 429 +- Uriorcurie/index.html | 421 +- about/index.html | 346 - add/index.html | 445 +- alias/index.html | 445 +- assets/images/favicon.png | Bin 1870 -> 0 bytes assets/javascripts/bundle.fac441b0.min.js | 29 - assets/javascripts/bundle.fac441b0.min.js.map | 8 - assets/javascripts/lunr/min/lunr.ar.min.js | 1 - assets/javascripts/lunr/min/lunr.da.min.js | 18 - assets/javascripts/lunr/min/lunr.de.min.js | 18 - assets/javascripts/lunr/min/lunr.du.min.js | 18 - assets/javascripts/lunr/min/lunr.es.min.js | 18 - assets/javascripts/lunr/min/lunr.fi.min.js | 18 - assets/javascripts/lunr/min/lunr.fr.min.js | 18 - assets/javascripts/lunr/min/lunr.hi.min.js | 1 - assets/javascripts/lunr/min/lunr.hu.min.js | 18 - assets/javascripts/lunr/min/lunr.hy.min.js | 1 - assets/javascripts/lunr/min/lunr.it.min.js | 18 - assets/javascripts/lunr/min/lunr.ja.min.js | 1 - assets/javascripts/lunr/min/lunr.jp.min.js | 1 - assets/javascripts/lunr/min/lunr.ko.min.js | 1 - assets/javascripts/lunr/min/lunr.multi.min.js | 1 - assets/javascripts/lunr/min/lunr.nl.min.js | 18 - assets/javascripts/lunr/min/lunr.no.min.js | 18 - assets/javascripts/lunr/min/lunr.pt.min.js | 18 - assets/javascripts/lunr/min/lunr.ro.min.js | 18 - assets/javascripts/lunr/min/lunr.ru.min.js | 18 - .../lunr/min/lunr.stemmer.support.min.js | 1 - assets/javascripts/lunr/min/lunr.sv.min.js | 18 - assets/javascripts/lunr/min/lunr.ta.min.js | 1 - assets/javascripts/lunr/min/lunr.th.min.js | 1 - assets/javascripts/lunr/min/lunr.tr.min.js | 18 - assets/javascripts/lunr/min/lunr.vi.min.js | 1 - assets/javascripts/lunr/min/lunr.zh.min.js | 1 - assets/javascripts/lunr/tinyseg.js | 206 - assets/javascripts/lunr/wordcut.js | 6708 ---------- .../workers/search.208ed371.min.js | 42 - .../workers/search.208ed371.min.js.map | 8 - assets/stylesheets/main.85bb2934.min.css | 1 - assets/stylesheets/main.85bb2934.min.css.map | 1 - assets/stylesheets/palette.a6bdf11c.min.css | 1 - .../stylesheets/palette.a6bdf11c.min.css.map | 1 - cast_collection_as/index.html | 445 +- class_derivations/index.html | 445 +- class_name/index.html | 445 +- class_named/index.html | 445 +- comments/index.html | 453 +- copy_all/index.html | 445 +- copy_directives/index.html | 453 +- css/ansi-colours.css | 174 + css/base.css | 537 + css/bootstrap-3.3.7.css | 6757 ++++++++++ css/bootstrap-3.3.7.min.css | 6 + css/font-awesome-4.7.0.css | 2337 ++++ css/font-awesome-4.7.0.min.css | 4 + css/highlight.css | 124 + css/jupyter-cells.css | 10 + css/pandas-dataframe.css | 36 + datamodel/index.html | 596 + delimiter/index.html | 453 +- derived_from/index.html | 445 +- description/index.html | 453 +- dictionary_key/index.html | 445 +- element_name/index.html | 445 +- enum_derivations/index.html | 445 +- examples/Tutorial/index.html | 1228 ++ exclude/index.html | 445 +- exclude_all/index.html | 445 +- expr/index.html | 440 +- expression_to_expression_mappings/index.html | 453 +- expression_to_value_mappings/index.html | 453 +- faq/index.html | 147 + fonts/fontawesome-webfont.eot | Bin 0 -> 165742 bytes fonts/fontawesome-webfont.svg | 2671 ++++ fonts/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes fonts/fontawesome-webfont.woff | Bin 0 -> 98024 bytes fonts/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes fonts/glyphicons-halflings-regular.svg | 288 + fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes hide/index.html | 440 +- id/index.html | 445 +- img/favicon.ico | Bin 0 -> 1150 bytes implements/index.html | 453 +- include/index.html | 445 +- index.html | 1161 +- inverse_of/index.html | 445 +- is_a/index.html | 453 +- joins/index.html | 453 +- js/base.js | 568 + js/bootstrap-3.3.7.js | 2377 ++++ js/bootstrap-3.3.7.min.js | 7 + js/elasticlunr.js | 2485 ++++ js/elasticlunr.min.js | 10 + js/highlight.pack.js | 2 + js/jquery-3.2.1.js | 10253 ++++++++++++++++ js/jquery-3.2.1.min.js | 4 + key/index.html | 445 +- mirror_source/index.html | 453 +- mixins/index.html | 453 +- name/index.html | 440 +- over_slots/index.html | 130 + overrides/index.html | 453 +- permissible_value_derivations/index.html | 445 +- populated_from/index.html | 440 +- prefixes/index.html | 445 +- range/index.html | 445 +- reversed/index.html | 445 +- search.html | 84 + search/search_index.json | 2 +- sitemap.xml | 415 +- sitemap.xml.gz | Bin 887 -> 909 bytes slot_derivations/index.html | 432 +- slot_name/index.html | 445 +- source_magnitude_slot/index.html | 445 +- source_schema/index.html | 445 +- source_unit/index.html | 445 +- source_unit_scheme/index.html | 453 +- source_unit_slot/index.html | 445 +- sources/index.html | 440 +- specification/compliance/index.html | 1582 +-- stringification/index.html | 445 +- syntax/index.html | 453 +- target_magnitude_slot/index.html | 445 +- target_schema/index.html | 445 +- target_unit/index.html | 445 +- target_unit_scheme/index.html | 453 +- target_unit_slot/index.html | 445 +- title/index.html | 445 +- transformer/index.html | 392 +- type_designator/index.html | 445 +- unit_conversion/index.html | 445 +- value/index.html | 445 +- value_mappings/index.html | 453 +- 175 files changed, 38002 insertions(+), 44723 deletions(-) delete mode 100644 about/index.html delete mode 100644 assets/images/favicon.png delete mode 100644 assets/javascripts/bundle.fac441b0.min.js delete mode 100644 assets/javascripts/bundle.fac441b0.min.js.map delete mode 100644 assets/javascripts/lunr/min/lunr.ar.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.da.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.de.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.du.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.es.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.fi.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.fr.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.hi.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.hu.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.hy.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.it.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.ja.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.jp.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.ko.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.multi.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.nl.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.no.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.pt.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.ro.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.ru.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.stemmer.support.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.sv.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.ta.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.th.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.tr.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.vi.min.js delete mode 100644 assets/javascripts/lunr/min/lunr.zh.min.js delete mode 100644 assets/javascripts/lunr/tinyseg.js delete mode 100644 assets/javascripts/lunr/wordcut.js delete mode 100644 assets/javascripts/workers/search.208ed371.min.js delete mode 100644 assets/javascripts/workers/search.208ed371.min.js.map delete mode 100644 assets/stylesheets/main.85bb2934.min.css delete mode 100644 assets/stylesheets/main.85bb2934.min.css.map delete mode 100644 assets/stylesheets/palette.a6bdf11c.min.css delete mode 100644 assets/stylesheets/palette.a6bdf11c.min.css.map create mode 100644 css/ansi-colours.css create mode 100644 css/base.css create mode 100644 css/bootstrap-3.3.7.css create mode 100644 css/bootstrap-3.3.7.min.css create mode 100644 css/font-awesome-4.7.0.css create mode 100644 css/font-awesome-4.7.0.min.css create mode 100644 css/highlight.css create mode 100644 css/jupyter-cells.css create mode 100644 css/pandas-dataframe.css create mode 100644 datamodel/index.html create mode 100644 examples/Tutorial/index.html create mode 100644 faq/index.html create mode 100644 fonts/fontawesome-webfont.eot create mode 100644 fonts/fontawesome-webfont.svg create mode 100644 fonts/fontawesome-webfont.ttf create mode 100644 fonts/fontawesome-webfont.woff create mode 100644 fonts/fontawesome-webfont.woff2 create mode 100644 fonts/glyphicons-halflings-regular.eot create mode 100644 fonts/glyphicons-halflings-regular.svg create mode 100644 fonts/glyphicons-halflings-regular.ttf create mode 100644 fonts/glyphicons-halflings-regular.woff create mode 100644 fonts/glyphicons-halflings-regular.woff2 create mode 100644 img/favicon.ico create mode 100644 js/base.js create mode 100644 js/bootstrap-3.3.7.js create mode 100644 js/bootstrap-3.3.7.min.js create mode 100644 js/elasticlunr.js create mode 100644 js/elasticlunr.min.js create mode 100644 js/highlight.pack.js create mode 100644 js/jquery-3.2.1.js create mode 100644 js/jquery-3.2.1.min.js create mode 100644 over_slots/index.html create mode 100644 search.html diff --git a/404.html b/404.html index f83d9ff..9fc8e89 100644 --- a/404.html +++ b/404.html @@ -1,326 +1,74 @@ - - - - - - - - - - - - - - - - - - LinkML-Transformer - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - + + + - - - -
    - -
    -
    - -
    - - - + + + LinkML-Transformer + + + + + + + + + -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - + + + + - -
    -
    -
    - - - -
    -
    -
    - - -
    -
    -
    - - - -
    -
    - -

    404 - Not found

    -
    -
    - - - +
    + -
    - -
    - -
    -
    -
    -
    - - - - - - - - + + \ No newline at end of file diff --git a/AliasedClass/index.html b/AliasedClass/index.html index fdf82ee..7e20e64 100644 --- a/AliasedClass/index.html +++ b/AliasedClass/index.html @@ -1,216 +1,53 @@ - - + - - - - + + + + + Class: AliasedClass - LinkML-Transformer - - - - - - - - - - - - -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - -
    -
    -
    -
    + + + + + + + + + + + + + + + + + + +
    +

    Class: AliasedClass

    alias-class key value pairs for classes

    URI: linkmltr:AliasedClass

    @@ -218,11 +55,11 @@

    Class: AliasedClass

    class AliasedClass AliasedClass : alias - AliasedClass --|> None : alias + AliasedClass --> None : alias AliasedClass : class_named - AliasedClass --|> None : class_named + AliasedClass --> None : class_named
    @@ -240,7 +77,7 @@

    Slots

    alias -1..1
    String +0..1
    String name of the class to be aliased direct @@ -309,12 +146,16 @@

    Direct

    from_schema: https://w3id.org/linkml/transformer rank: 1000 key: true + domain_of: + - AliasedClass required: true class_named: name: class_named description: local alias for the class from_schema: https://w3id.org/linkml/transformer rank: 1000 + domain_of: + - AliasedClass
    @@ -347,30 +188,15 @@

    Induced

    - - - - - -