From 056d32b23a7e319f6f08c5677de38aa65f3c455d Mon Sep 17 00:00:00 2001 From: haneslinger Date: Wed, 25 Oct 2023 17:59:30 +0000 Subject: [PATCH] deploy: 6ac5bf7ddb51aceb81a2ce00965fbcc75948932f --- .doctrees/environment.pickle | Bin 550853 -> 514683 bytes .../guides/ingress-bacnet-to-brick.doctree | Bin 184836 -> 185496 bytes .../apidoc/_autosummary/buildingmotif.doctree | Bin 17392 -> 16413 bytes ...ee => buildingmotif.ingresses.csv.doctree} | Bin 14438 -> 14186 bytes .../buildingmotif.ingresses.doctree | Bin 11804 -> 10647 bytes ...gmotif.ingresses.naming_convention.doctree | Bin 14695 -> 0 bytes .../buildingmotif.label_parsing.doctree | Bin 114088 -> 0 bytes .doctrees/tutorials/model_correction.doctree | Bin 30150 -> 30150 bytes .doctrees/tutorials/model_creation.doctree | Bin 59493 -> 59581 bytes README.html | 27 +- .../building_motif/building_motif.html | 27 +- .../building_motif/singleton.html | 27 +- .../database/graph_connection.html | 27 +- .../database/table_connection.html | 27 +- _modules/buildingmotif/database/tables.html | 27 +- _modules/buildingmotif/database/utils.html | 27 +- .../buildingmotif/dataclasses/library.html | 27 +- _modules/buildingmotif/dataclasses/model.html | 27 +- .../dataclasses/shape_collection.html | 27 +- .../buildingmotif/dataclasses/template.html | 27 +- .../buildingmotif/dataclasses/validation.html | 27 +- _modules/buildingmotif/ingresses/bacnet.html | 27 +- _modules/buildingmotif/ingresses/base.html | 27 +- _modules/buildingmotif/ingresses/brick.html | 27 +- .../ingresses/{csvingress.html => csv.html} | 40 +- .../ingresses/naming_convention.html | 514 ----- .../buildingmotif/ingresses/template.html | 27 +- _modules/buildingmotif/ingresses/xlsx.html | 27 +- _modules/buildingmotif/label_parsing.html | 805 ------- _modules/buildingmotif/namespaces.html | 27 +- _modules/buildingmotif/schemas.html | 27 +- .../buildingmotif/shape_builder/shape.html | 27 +- .../buildingmotif/template_compilation.html | 27 +- _modules/buildingmotif/template_matcher.html | 27 +- _modules/buildingmotif/utils.html | 27 +- _modules/index.html | 31 +- ...ss.rst => buildingmotif.ingresses.csv.rst} | 6 +- ...ldingmotif.ingresses.naming_convention.rst | 29 - .../_autosummary/buildingmotif.ingresses.rst | 3 +- .../buildingmotif.label_parsing.rst | 53 - .../apidoc/_autosummary/buildingmotif.rst | 1 - _static/documentation_options.js | 2 +- _static/scripts/bootstrap.js | 2 +- _static/scripts/bootstrap.js.LICENSE.txt | 4 +- _static/scripts/bootstrap.js.map | 2 +- _static/scripts/pydata-sphinx-theme.js | 2 +- _static/scripts/pydata-sphinx-theme.js.map | 2 +- _static/styles/bootstrap.css | 8 +- _static/styles/bootstrap.css.map | 1 + _static/styles/pydata-sphinx-theme.css | 3 +- _static/styles/pydata-sphinx-theme.css.map | 1 + _static/webpack-macros.html | 18 +- bibliography.html | 27 +- explanations/ingresses.html | 27 +- genindex.html | 147 +- guides/csv-import.html | 27 +- guides/ingress-bacnet-to-brick.html | 1891 +++++++++-------- objects.inv | Bin 3853 -> 3522 bytes py-modindex.html | 39 +- .../_autosummary/buildingmotif.api.html | 27 +- .../_autosummary/buildingmotif.api.views.html | 27 +- ...ngmotif.building_motif.building_motif.html | 27 +- .../buildingmotif.building_motif.html | 27 +- ...uildingmotif.building_motif.singleton.html | 27 +- ...ildingmotif.database.graph_connection.html | 27 +- .../_autosummary/buildingmotif.database.html | 27 +- ...ildingmotif.database.table_connection.html | 27 +- .../buildingmotif.database.tables.html | 27 +- .../buildingmotif.database.utils.html | 27 +- .../buildingmotif.dataclasses.html | 27 +- .../buildingmotif.dataclasses.library.html | 27 +- .../buildingmotif.dataclasses.model.html | 27 +- ...ingmotif.dataclasses.shape_collection.html | 27 +- .../buildingmotif.dataclasses.template.html | 27 +- .../buildingmotif.dataclasses.validation.html | 27 +- .../apidoc/_autosummary/buildingmotif.html | 44 +- .../buildingmotif.ingresses.bacnet.html | 27 +- .../buildingmotif.ingresses.base.html | 27 +- .../buildingmotif.ingresses.brick.html | 33 +- ....html => buildingmotif.ingresses.csv.html} | 57 +- .../_autosummary/buildingmotif.ingresses.html | 36 +- ...dingmotif.ingresses.naming_convention.html | 577 ----- .../buildingmotif.ingresses.template.html | 33 +- .../buildingmotif.ingresses.xlsx.html | 33 +- .../buildingmotif.label_parsing.html | 808 ------- .../_autosummary/buildingmotif.libraries.html | 33 +- .../buildingmotif.namespaces.html | 27 +- .../_autosummary/buildingmotif.schemas.html | 27 +- .../buildingmotif.shape_builder.html | 27 +- .../buildingmotif.shape_builder.shape.html | 27 +- .../buildingmotif.template_compilation.html | 27 +- .../buildingmotif.template_matcher.html | 27 +- .../_autosummary/buildingmotif.utils.html | 27 +- reference/apidoc/index.html | 27 +- reference/cli_tool.html | 27 +- reference/developer_documentation.html | 27 +- search.html | 27 +- searchindex.js | 2 +- tutorials/model_correction.html | 65 +- tutorials/model_creation.html | 53 +- tutorials/model_validation.html | 27 +- tutorials/template_writing.html | 27 +- 102 files changed, 1983 insertions(+), 4934 deletions(-) rename .doctrees/reference/apidoc/_autosummary/{buildingmotif.ingresses.csvingress.doctree => buildingmotif.ingresses.csv.doctree} (50%) delete mode 100644 .doctrees/reference/apidoc/_autosummary/buildingmotif.ingresses.naming_convention.doctree delete mode 100644 .doctrees/reference/apidoc/_autosummary/buildingmotif.label_parsing.doctree rename _modules/buildingmotif/ingresses/{csvingress.html => csv.html} (92%) delete mode 100644 _modules/buildingmotif/ingresses/naming_convention.html delete mode 100644 _modules/buildingmotif/label_parsing.html rename _sources/reference/apidoc/_autosummary/{buildingmotif.ingresses.csvingress.rst => buildingmotif.ingresses.csv.rst} (50%) delete mode 100644 _sources/reference/apidoc/_autosummary/buildingmotif.ingresses.naming_convention.rst delete mode 100644 _sources/reference/apidoc/_autosummary/buildingmotif.label_parsing.rst create mode 100644 _static/styles/bootstrap.css.map create mode 100644 _static/styles/pydata-sphinx-theme.css.map rename reference/apidoc/_autosummary/{buildingmotif.ingresses.csvingress.html => buildingmotif.ingresses.csv.html} (89%) delete mode 100644 reference/apidoc/_autosummary/buildingmotif.ingresses.naming_convention.html delete mode 100644 reference/apidoc/_autosummary/buildingmotif.label_parsing.html diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle index 4779543f85159f67a22e62ebfde9245ae3d33451..aab0b7857df8823be6216f31bda333a295273b55 100644 GIT binary patch delta 85080 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 diff --git a/.doctrees/guides/ingress-bacnet-to-brick.doctree b/.doctrees/guides/ingress-bacnet-to-brick.doctree index 20ad5e3de06b5d3ef036da0823b388300020a717..480b71e5dd5def02eaedbac69cc72c614584360d 100644 GIT binary patch delta 24048 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 delta 23634 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 delta 1013 zcmb7BUr19?9QNGZtLd~2TG!3ZZEd=_&1o{!RmMu6vRe3HR93d(^6s+D*(Q}>P0J)% zR{m}eJ(%=V2tCLhK`$l*Ap|}27DBPCUJ?qd{8MUYyGKfhp!0CPALsji-|sv8#uDhu z5MmO{oexcu3_~Lq$mv7q6&$0-lsf|u1Hba{(1t(YqymS@73r(0v zAC+S1i1r>_GRUD`R|XS?6evoE2)%5?^t^tQs+B>)Uh;CF(H1eXXd6I>zqgWykss|42wu4gfj+!FR( z=mG^OxNnsM|fL%RQU-jIR~#{Flc#}!7I`$`8oW`zsFY(=2VOr ztLvpGFC%_-zmr*QSj$`R6-(wveBnU+Vl)uLd*d_2^%%DUuMqRF)X@G6hBfpu!U`9#(ZM(N21*`$T0WU$9h$>8i^2}!LenKF4w4_J8OlWB|vldBnX zCck40=1|VfPbtkwwVu3?M}~PykJ99PCMAg}8Ek$fQxZ!vv@>)wq%(LjWHOjDWP7?N zZ(xd_oWQR$*^~Jh<1#pJ4X51Z=PXAU8N(*8VKbQgn9YOH7R*X!-@<4)c^wc(aJWGn zHTfWi6r&o*d7^sG!C{_x=|!o<#Zy35%>-HjH+1tF&Ie44hLd}F3|KU$^ni72e#OJj z#5fIR@8-$;je_hd@n9cJ{>UUZ*+H=wV$0@hiVchim6JaxS2F5>ES>y7M|AQ+6$!?9 zFjIgcVw*En{Tb1OGSs_SpiUOkF+fOeexNg*NkclRG&3h9GcP?iza%qF7svp4BehsJ gxwvdfYKAf}+*MoRbLjrC$$cQEFOAVo`c($&? zZatfHrZed)C6#98qyWPtH@_q^O&1zCsl~d<#br>=l++AmU}95^MN4IyZ|U{1G2%=z Ko4=TrF#-Sqp8C}Q diff --git a/.doctrees/reference/apidoc/_autosummary/buildingmotif.ingresses.doctree b/.doctrees/reference/apidoc/_autosummary/buildingmotif.ingresses.doctree index 6cafae9e5609a1393af47490d44ece7b62e9e6fa..752d7cd73f0876af70658024113953bf412ec4e1 100644 GIT binary patch delta 437 zcmbOeGd-BKfpuz+=0?^~7Dltl(JVfUCng)R%1l1Ok_M&=Bsn%Wv2ubW^QA>MFXZ%L zhBBFX6Cq5o&D8?-jEpXmFN!KMCl{AZo+v5>rUke~7@aXh^Mqs>r6&hUOMum^6WWi& zn;={PHeGD9yof#HWF5(UlO4pkCx4aHncN_@W%5<2nNaDs;y~#$TuPJeWK||}$!1J` zCCNRxiCc2=G+F-1ic(u9N6JlQG~1jnt;x7qLP3m)(Q@)fMKd;_>!$SBftZtl9-I72 z$xmxN69Yrr6u+zuP=T3(D!oAtCEnHUQv7wD=pNBV8*1HHeF# delta 814 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 diff --git a/.doctrees/reference/apidoc/_autosummary/buildingmotif.label_parsing.doctree b/.doctrees/reference/apidoc/_autosummary/buildingmotif.label_parsing.doctree deleted file mode 100644 index 7297ae47c12132cd93c3f947cf42dd8b23cb2ea5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114088 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

yzPHYqj2PCR2wI2Wb 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 Jz$I=~`MESf(Wznx>i=CQrVVW=*U@#m!OaIeY-a CO?F%W delta 329 zcmX^1n(^3c#tpT~letxcCKss8;GB}d9y=vNtmo}y4%JYQ$mUp8Egp6Y6XT?0`rcHQdBFc}1$!{%r*Hzs?=uHBz|V1lwMOY zGe|N_G)^_tO-?mQ(gk|URM*nTFiqDm(a_AqC^gB@*fMqUtu$+56)J9yO3&c~06d3p Ao&W#< diff --git a/.doctrees/tutorials/model_creation.doctree b/.doctrees/tutorials/model_creation.doctree index 11370035980c603df380d17ee83c509bc8c7acaa..62bb75e78a1cefa3555b7b5d48dda56d78d28ee9 100644 GIT binary patch delta 883 zcmaEQfqCymW|julshc*kG-Dv6d#hBTaa3mSW;S) z8t<7`lA2zWm=hn8nVT9PkXV$Mn_7}Od7`(rU{royYP@4+QM^ZKZe~hmN#$feUt_M2 zFn{NGpVYF{oXHP84S9W16U#F5(jg{KKId)E;gOnH0uq`0(Mz1eB{eZ6DKRevq?I+e zAT<@tk_DNH?26!$)B+UC1$^?$<6Sa~lQR;F(m}46-0Ev<<&j?k^@2-gT3TvRYFX1b=S7M2!?=0*ml omPV5=UR0bMRVYQQV(ra+vF*adswUCs!-d`P)Hizb#fwwK0HIYmLjV8( delta 757 zcmdmck@@KbW|julsZkqQ8a-H!GBGercJR{VbImKsNX#jyj1NxDE6$(%&_i1&G%r6n zxwIfNH6`97HL)Z!FMaY1PkY{=#FWg$yps5U#JtoTkcf;+W^r;xVo`c(yklljyhmwn zW=duWl1UN)iA5!u$)!1oC8_bgi6teeMF?vIfHtQV0S%9L&dAKkNllsD?<2|#b%O+| z(QY~U - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -152,13 +152,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -206,13 +207,11 @@

  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -642,8 +641,8 @@

    Appendix - + +
    diff --git a/_modules/buildingmotif/building_motif/building_motif.html b/_modules/buildingmotif/building_motif/building_motif.html index cf9878b01..019d72133 100644 --- a/_modules/buildingmotif/building_motif/building_motif.html +++ b/_modules/buildingmotif/building_motif/building_motif.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -620,8 +619,8 @@

    Source code for buildingmotif.building_motif.building_motif

    - + +
    diff --git a/_modules/buildingmotif/building_motif/singleton.html b/_modules/buildingmotif/building_motif/singleton.html index ec389fd69..fa6279f7f 100644 --- a/_modules/buildingmotif/building_motif/singleton.html +++ b/_modules/buildingmotif/building_motif/singleton.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -475,8 +474,8 @@

    Source code for buildingmotif.building_motif.singleton

    - + +
    diff --git a/_modules/buildingmotif/database/graph_connection.html b/_modules/buildingmotif/database/graph_connection.html index e8bb41a61..b3e5f0d23 100644 --- a/_modules/buildingmotif/database/graph_connection.html +++ b/_modules/buildingmotif/database/graph_connection.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -549,8 +548,8 @@

    Source code for buildingmotif.database.graph_connection

    - + +
    diff --git a/_modules/buildingmotif/database/table_connection.html b/_modules/buildingmotif/database/table_connection.html index d1c095694..f0d993cc4 100644 --- a/_modules/buildingmotif/database/table_connection.html +++ b/_modules/buildingmotif/database/table_connection.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -992,8 +991,8 @@

    Source code for buildingmotif.database.table_connection

    - + +
    diff --git a/_modules/buildingmotif/database/tables.html b/_modules/buildingmotif/database/tables.html index 1ae519ba0..0d1666f7b 100644 --- a/_modules/buildingmotif/database/tables.html +++ b/_modules/buildingmotif/database/tables.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -569,8 +568,8 @@

    Source code for buildingmotif.database.tables

    - - + +
    diff --git a/_modules/buildingmotif/database/utils.html b/_modules/buildingmotif/database/utils.html index aa699c67a..32482bafc 100644 --- a/_modules/buildingmotif/database/utils.html +++ b/_modules/buildingmotif/database/utils.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -510,8 +509,8 @@

    Source code for buildingmotif.database.utils

       
       
    -  
    -
    +  
    +
     
       
    diff --git a/_modules/buildingmotif/dataclasses/library.html b/_modules/buildingmotif/dataclasses/library.html index f0824e688..afa0877eb 100644 --- a/_modules/buildingmotif/dataclasses/library.html +++ b/_modules/buildingmotif/dataclasses/library.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -1014,8 +1013,8 @@

    Source code for buildingmotif.dataclasses.library

    - - + +
    diff --git a/_modules/buildingmotif/dataclasses/model.html b/_modules/buildingmotif/dataclasses/model.html index 751aaf7db..d61f86a2f 100644 --- a/_modules/buildingmotif/dataclasses/model.html +++ b/_modules/buildingmotif/dataclasses/model.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -769,8 +768,8 @@

    Source code for buildingmotif.dataclasses.model

    <
    - - + +
    diff --git a/_modules/buildingmotif/dataclasses/shape_collection.html b/_modules/buildingmotif/dataclasses/shape_collection.html index e305f6ff7..8c4c8a559 100644 --- a/_modules/buildingmotif/dataclasses/shape_collection.html +++ b/_modules/buildingmotif/dataclasses/shape_collection.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -755,8 +754,8 @@

    Source code for buildingmotif.dataclasses.shape_collection

    - + +
    diff --git a/_modules/buildingmotif/dataclasses/template.html b/_modules/buildingmotif/dataclasses/template.html index c00b69052..e821dd2e1 100644 --- a/_modules/buildingmotif/dataclasses/template.html +++ b/_modules/buildingmotif/dataclasses/template.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -999,8 +998,8 @@

    Source code for buildingmotif.dataclasses.template

    - + +
    diff --git a/_modules/buildingmotif/dataclasses/validation.html b/_modules/buildingmotif/dataclasses/validation.html index 601b9c00f..64aca0b12 100644 --- a/_modules/buildingmotif/dataclasses/validation.html +++ b/_modules/buildingmotif/dataclasses/validation.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -903,8 +902,8 @@

    Source code for buildingmotif.dataclasses.validation

    - + +
    diff --git a/_modules/buildingmotif/ingresses/bacnet.html b/_modules/buildingmotif/ingresses/bacnet.html index 6ac4adf53..004339ddd 100644 --- a/_modules/buildingmotif/ingresses/bacnet.html +++ b/_modules/buildingmotif/ingresses/bacnet.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -555,8 +554,8 @@

    Source code for buildingmotif.ingresses.bacnet

    - - + +

    diff --git a/_modules/buildingmotif/ingresses/base.html b/_modules/buildingmotif/ingresses/base.html index d16fecf28..c5adf2c01 100644 --- a/_modules/buildingmotif/ingresses/base.html +++ b/_modules/buildingmotif/ingresses/base.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -546,8 +545,8 @@

    Source code for buildingmotif.ingresses.base

       
       
    -  
    -
    +  
    +
     
       
    diff --git a/_modules/buildingmotif/ingresses/brick.html b/_modules/buildingmotif/ingresses/brick.html index 4e7d40dbb..3149a4006 100644 --- a/_modules/buildingmotif/ingresses/brick.html +++ b/_modules/buildingmotif/ingresses/brick.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -532,8 +531,8 @@

    Source code for buildingmotif.ingresses.brick

    - - + +
    diff --git a/_modules/buildingmotif/ingresses/csvingress.html b/_modules/buildingmotif/ingresses/csv.html similarity index 92% rename from _modules/buildingmotif/ingresses/csvingress.html rename to _modules/buildingmotif/ingresses/csv.html index 3d323d6e6..921f6bc89 100644 --- a/_modules/buildingmotif/ingresses/csvingress.html +++ b/_modules/buildingmotif/ingresses/csv.html @@ -8,7 +8,7 @@ - buildingmotif.ingresses.csvingress — BuildingMOTIF Documentation + buildingmotif.ingresses.csv — BuildingMOTIF Documentation @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -61,7 +61,7 @@ const thebe_selector_output = ".output, .cell_output" - + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -316,7 +315,7 @@ -
  • -

    Source code for buildingmotif.ingresses.csvingress

    +  

    Source code for buildingmotif.ingresses.csv

     from csv import DictReader
     from functools import cached_property
     from io import StringIO
    @@ -402,7 +401,7 @@ 

    Source code for buildingmotif.ingresses.csvingress

    from buildingmotif.ingresses.base import Record, RecordIngressHandler -
    [docs]class CSVIngress(RecordIngressHandler): +
    [docs]class CSVIngress(RecordIngressHandler): """Reads rows from a CSV file and exposes them as records. The type of the record is the name of the CSV file """ @@ -420,9 +419,6 @@

    Source code for buildingmotif.ingresses.csvingress

    self.rtype = str(filename) elif data: - # if data is a string, convert to StringIO - if isinstance(data, str): - data = StringIO(data) self.dict_reader = DictReader(data, delimiter=",") self.rtype = "data stream" @@ -501,8 +497,8 @@

    Source code for buildingmotif.ingresses.csvingress

    - + +
    diff --git a/_modules/buildingmotif/ingresses/naming_convention.html b/_modules/buildingmotif/ingresses/naming_convention.html deleted file mode 100644 index 1b692c81f..000000000 --- a/_modules/buildingmotif/ingresses/naming_convention.html +++ /dev/null @@ -1,514 +0,0 @@ - - - - - - - - - - - buildingmotif.ingresses.naming_convention — BuildingMOTIF Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - -
    -
    -
    -
    -
    - - -
    -
    ⚠️ This is an BETA release for testing purposes only ⚠️
    -
    - - - - -
    -
    - -
    - - - - - - - - - - - - - -
    - -
    - - - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    - - -
    - -
    - -
    - - - - - - - - - - - - - - - - - -
    - -
    - -
    -
    - - - -
    -

    - -
    -
    - -
    -
    -
    - - - - -
    - -

    Source code for buildingmotif.ingresses.naming_convention

    -from functools import cached_property
    -from typing import List
    -
    -from buildingmotif.ingresses.base import Record, RecordIngressHandler
    -from buildingmotif.label_parsing import (
    -    Parser,
    -    analyze_failures,
    -    parse_list,
    -    results_to_tokens,
    -)
    -
    -
    -
    [docs]class NamingConventionIngress(RecordIngressHandler): - def __init__( - self, - upstream: RecordIngressHandler, - naming_convention: Parser, - ): - self.upstream = upstream - self.naming_convention = naming_convention - -
    [docs] def dump_failed_labels(self): - sorted_groups = sorted( - analyze_failures(self.failures).items(), - key=lambda x: len(x[1]), - reverse=True, - ) - for group, failures in sorted_groups: - print(f"Unparsed label: {group} ({len(failures)} failures)") - for failure in failures: - print(f"\t{failure}") - print()
    - - @cached_property - def records(self) -> List[Record]: - results, failures = parse_list( - self.naming_convention, [x.fields["label"] for x in self.upstream.records] - ) - self.failures = failures - self.results = results - tokens = results_to_tokens(results) - return [ - Record( - rtype="token", - fields={ - "label": t["label"], - "tokens": t["tokens"], - }, - ) - for t in tokens - ]
    -
    - -
    - - - - - - -
    - -
    -
    -
    - -
    - - - - -
    -
    - - -
    - - -
    -
    -
    - - - - - -
    -
    - - \ No newline at end of file diff --git a/_modules/buildingmotif/ingresses/template.html b/_modules/buildingmotif/ingresses/template.html index 8f68fc53a..e87e42ba0 100644 --- a/_modules/buildingmotif/ingresses/template.html +++ b/_modules/buildingmotif/ingresses/template.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -590,8 +589,8 @@

    Source code for buildingmotif.ingresses.template

    - - + +
    diff --git a/_modules/buildingmotif/ingresses/xlsx.html b/_modules/buildingmotif/ingresses/xlsx.html index 91324b5b9..53ed63bf6 100644 --- a/_modules/buildingmotif/ingresses/xlsx.html +++ b/_modules/buildingmotif/ingresses/xlsx.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -511,8 +510,8 @@

    Source code for buildingmotif.ingresses.xlsx

       
       
    -  
    -
    +  
    +
     
       
    diff --git a/_modules/buildingmotif/label_parsing.html b/_modules/buildingmotif/label_parsing.html deleted file mode 100644 index e918d5cf8..000000000 --- a/_modules/buildingmotif/label_parsing.html +++ /dev/null @@ -1,805 +0,0 @@ - - - - - - - - - - - buildingmotif.label_parsing — BuildingMOTIF Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - -
    -
    -
    -
    -
    - - -
    -
    ⚠️ This is an BETA release for testing purposes only ⚠️
    -
    - - - - -
    -
    - -
    - - - - - - - - - - - - - -
    - -
    - - - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    - - -
    - -
    - -
    - - - - - - - - - - - - - - - - - -
    - -
    - -
    -
    - - - -
    -

    - -
    -
    - -
    -
    -
    - - - - -
    - -

    Source code for buildingmotif.label_parsing

    -import re
    -from collections import defaultdict
    -from dataclasses import dataclass
    -from typing import Callable, Dict, List, Optional, Tuple, Union
    -
    -from rdflib import URIRef
    -
    -from buildingmotif.namespaces import BRICK
    -
    -# Token is a union of the different types of tokens
    -Token = Union["Identifier", "Constant", "Delimiter"]
    -TokenOrConstructor = Union[Token, type]
    -
    -
    -
    [docs]def ensure_token(token_or_constructor: TokenOrConstructor, value): - """Ensure a value is a token or constructs one from a given value.""" - if isinstance(token_or_constructor, type): - return token_or_constructor(value) - return token_or_constructor
    - - -
    [docs]@dataclass(frozen=True) -class Identifier: - """An identifier token. Contains a string.""" - - value: str
    - - -
    [docs]@dataclass(frozen=True) -class Constant: - """A constant token. Contains a URI, probably some sort of Class""" - - value: URIRef
    - - -
    [docs]@dataclass(frozen=True) -class Delimiter: - """A delimiter token.""" - - value: str
    - - -
    [docs]@dataclass(frozen=True) -class TokenResult: - """A token result. Contains a token, the type of the token, and the length of the token.""" - - value: Optional[str] - token: Token - length: int
    - - -# type definition for the output of a parser function -
    [docs]@dataclass(frozen=True) -class ParseResult: - tokens: List[TokenResult] - success: bool
    - - -# type definition for the parser functions. -# A parser function takes a string and returns a list of tuples -# each tuple is a token, the type of the token, and the length of the token -# the length of the token is used to keep track of how much of the string -# has been parsed -Parser = Callable[[str], List[TokenResult]] - - -
    [docs]def string(s, type_name: TokenOrConstructor): - """Constructs a parser that matches a string.""" - - def parser(target: str) -> List[TokenResult]: - if target.startswith(s): - return [TokenResult(s, ensure_token(type_name, s), len(s))] - return [] - - return parser
    - - -
    [docs]def substring_n(length, type_name: TokenOrConstructor): - """Constructs a parser that matches a substring of length n.""" - - def parser(target: str) -> List[TokenResult]: - if len(target) >= length: - value = target[:length] - return [TokenResult(value, ensure_token(type_name, value), length)] - return [] - - return parser
    - - -
    [docs]def regex(r, type_name: TokenOrConstructor): - """Constructs a parser that matches a regular expression.""" - - def parser(target: str) -> List[TokenResult]: - match = re.match(r, target) - if match: - value = match.group() - return [TokenResult(value, ensure_token(type_name, value), len(value))] - return [] - - return parser
    - - -
    [docs]def choice(*parsers): - """Constructs a choice combinator of parsers.""" - - def parser(target: str) -> List[TokenResult]: - for p in parsers: - result = p(target) - if result: - return result - return [] - - return parser
    - - -
    [docs]def constant(type_name: Token): - """Matches a constant token.""" - - def parser(target: str) -> List[TokenResult]: - return [TokenResult(None, type_name, 0)] - - return parser
    - - -
    [docs]def abbreviations(patterns): - """Constructs a choice combinator of string matching based on a dictionary.""" - parsers = [string(s, Constant(t)) for s, t in patterns.items()] - return choice(*parsers)
    - - -
    [docs]def sequence(*parsers): - """Applies parsers in sequence. All parsers must match consecutively.""" - - def parser(target): - results = [] - total_length = 0 - for p in parsers: - result = p(target) - if not result: - return results - results.extend(result) - target = target[result[0].length :] - total_length += result[0].length - return results - - return parser
    - - -
    [docs]def many(seq_parser): - """Applies the given sequence parser repeatedly until it stops matching.""" - - def parser(target): - results = [] - while True: - part = seq_parser(target) - if not part: - break - results.extend(part) - # add up the length of all the tokens - total_length = sum([r.length for r in part]) - target = target[total_length:] - return results - - return parser
    - - -COMMON_EQUIP_ABBREVIATIONS_BRICK = { - "AHU": BRICK.Air_Handling_Unit, - "FCU": BRICK.Fan_Coil_Unit, - "VAV": BRICK.Variable_Air_Volume_Box, - "CRAC": BRICK.Computer_Room_Air_Conditioner, - "HX": BRICK.Heat_Exchanger, - "PMP": BRICK.Pump, - "RVAV": BRICK.Variable_Air_Volume_Box_With_Reheat, - "HP": BRICK.Heat_Pump, - "RTU": BRICK.Rooftop_Unit, - "DMP": BRICK.Damper, - "STS": BRICK.Status, - "VLV": BRICK.Valve, - "CHVLV": BRICK.Chilled_Water_Valve, - "HWVLV": BRICK.Hot_Water_Valve, - "VFD": BRICK.Variable_Frequency_Drive, - "CT": BRICK.Cooling_Tower, - "MAU": BRICK.Makeup_Air_Unit, - "R": BRICK.Room, - "A": BRICK.Air_Handling_Unit, -} - -COMMON_POINT_ABBREVIATIONS = { - "ART": BRICK.Room_Temperature_Sensor, - "TSP": BRICK.Air_Temperature_Setpoint, - "HSP": BRICK.Air_Temperature_Heating_Setpoint, - "CSP": BRICK.Air_Temperature_Cooling_Setpoint, - "SP": BRICK.Setpoint, - "CHWST": BRICK.Leaving_Chilled_Water_Temperature_Sensor, - "CHWRT": BRICK.Entering_Chilled_Water_Temperature_Sensor, - "HWST": BRICK.Leaving_Hot_Water_Temperature_Sensor, - "HWRT": BRICK.Entering_Hot_Water_Temperature_Sensor, - "CO": BRICK.CO_Sensor, - "CO2": BRICK.CO2_Sensor, - "T": BRICK.Temperature_Sensor, - "FS": BRICK.Flow_Sensor, - "PS": BRICK.Pressure_Sensor, - "DPS": BRICK.Differential_Pressure_Sensor, -} - -COMMON_ABBREVIATIONS = abbreviations( - {**COMMON_EQUIP_ABBREVIATIONS_BRICK, **COMMON_POINT_ABBREVIATIONS} -) - - -# wrapper function for a parser that does the following: -# - apply the parser to the target -# - if the parser does not consume all the target, raise an error -# - return the result of the parser -
    [docs]def parse(parser: Parser, target: str) -> ParseResult: - """ - Parse the given target string using the given parser. - - :param parser: the parsing combinator function - :type parser: Parser - :param target: the target string to parse - :type target: str - :return: the result of the parser - :rtype: ParseResult - """ - result = parser(target) - # check length of target vs length of all results - total_length = sum([r.length for r in result]) - return ParseResult(result, total_length == len(target))
    - - -# wrapper function for reading a list of strings -# applies a given parser to each string in the list -# returns a dictionary of the input strings to the result of the parser -# Keep track of all strings that fail to parse and return them in a list -
    [docs]def parse_list( - parser, target_list -) -> Tuple[Dict[str, List[TokenResult]], Dict[str, List[TokenResult]]]: - """ - Parse a list of strings using the given parser. - - :param parser: the parsing combinator function - :type parser: Parser - :param target_list: the list of strings to parse - :type target_list: List[str] - :return: a tuple of the results and failures - """ - results = {} - failed = {} - for target in target_list: - result = parse(parser, target) - if result.success: - results[target] = result.tokens - else: - failed[target] = result.tokens - return results, failed
    - - -# from itertools documentation -
    [docs]def first_true(iterable, default=None, pred=None): - """Returns the first true value in the iterable. - - If no true value is found, returns *default* - - If *pred* is not None, returns the first item - for which pred(item) is true. - - """ - # first_true([a,b,c], x) --> a or b or c or x - # first_true([a,b], x, f) --> a if f(a) else b if f(b) else x - return next(filter(pred, iterable), default)
    - - -# function which takes the results of parse_list and turns all of the -# results (not failures) into token dictionaries. -# A token dictionary has an 'identifier' key which is the label (the keys -# of the results dictionary), and then a list of tokens. A token is a dictionary -# with 'identifier' (the substring part of the result) and 'type' (the type of -# the result if it is a constant) -
    [docs]def results_to_tokens(results): - tokens = [] - for r in results: - res = {"label": r, "tokens": []} - parts = iter(results[r]) - constant = None - while True: - try: - # get first constant token using itertools - constant = first_true( - parts, pred=lambda x: isinstance(x.token, Constant) - ) - # get the next identifier token - identifier = first_true( - parts, pred=lambda x: isinstance(x.token, Identifier) - ) - if not constant or not identifier: - break - # add the constant and identifier to the token dictionary - res["tokens"].append( - { - "identifier": identifier.token.value, - "type": constant.token.value.toPython(), - } - ) - except StopIteration: - break - if constant is None: - # if there are any constants left, add them to the token dictionary with the label - constant = first_true(parts, pred=lambda x: isinstance(x.token, Constant)) - if constant: - res["tokens"].append( - {"identifier": r, "type": constant.token.value.toPython()} - ) - tokens.append(res) - - return tokens
    - - -# Analyzes the failures of a parser to capture all point labels. -# For each label in the failures, compute the length of the found tokens. -# Create a dictionary keyed with the label. The value should have two keys. -# The first key is the remaining "unparsed" part of the string, the second key -# is the set of tokens that were found. -
    [docs]def analyze_failures(failures: Dict[str, List[TokenResult]]): - """Analyze the failures of a parser.""" - analyzed = {} - for failure in failures: - tokens = failures[failure] - length = sum([t.length for t in tokens]) - analyzed[failure] = { - "unparsed": failure[length:], - "tokens": [ - {"identifier": t.token.value, "type": t.token.value} for t in tokens - ], - } - # group the points by the unparsed portion - grouped = defaultdict(list) - for f in analyzed: - grouped[analyzed[f]["unparsed"]].append(f) - # for each group, add the tokens to the first point in the group - return grouped
    -
    - -
    - - - - - - -
    - -
    -
    -
    - -
    - - - - -
    -
    - - -
    - - -
    -
    -
    - - - - - -
    -
    - - \ No newline at end of file diff --git a/_modules/buildingmotif/namespaces.html b/_modules/buildingmotif/namespaces.html index 02831b2b8..a41b70af5 100644 --- a/_modules/buildingmotif/namespaces.html +++ b/_modules/buildingmotif/namespaces.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -510,8 +509,8 @@

    Source code for buildingmotif.namespaces

       
    - - + +
    diff --git a/_modules/buildingmotif/schemas.html b/_modules/buildingmotif/schemas.html index 15f38bf25..3c1f4aa65 100644 --- a/_modules/buildingmotif/schemas.html +++ b/_modules/buildingmotif/schemas.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -501,8 +500,8 @@

    Source code for buildingmotif.schemas

       
    - - + +
    diff --git a/_modules/buildingmotif/shape_builder/shape.html b/_modules/buildingmotif/shape_builder/shape.html index cbb46d068..854848d21 100644 --- a/_modules/buildingmotif/shape_builder/shape.html +++ b/_modules/buildingmotif/shape_builder/shape.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -808,8 +807,8 @@

    Source code for buildingmotif.shape_builder.shape

    - - + +
    diff --git a/_modules/buildingmotif/template_compilation.html b/_modules/buildingmotif/template_compilation.html index c36ae0adb..46292b605 100644 --- a/_modules/buildingmotif/template_compilation.html +++ b/_modules/buildingmotif/template_compilation.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -640,8 +639,8 @@

    Source code for buildingmotif.template_compilation

    - + +
    diff --git a/_modules/buildingmotif/template_matcher.html b/_modules/buildingmotif/template_matcher.html index 74d530daf..70aeca89d 100644 --- a/_modules/buildingmotif/template_matcher.html +++ b/_modules/buildingmotif/template_matcher.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -889,8 +888,8 @@

    Source code for buildingmotif.template_matcher

    - - + +

    diff --git a/_modules/buildingmotif/utils.html b/_modules/buildingmotif/utils.html index d46da7462..8a2559631 100644 --- a/_modules/buildingmotif/utils.html +++ b/_modules/buildingmotif/utils.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -969,8 +968,8 @@

    Source code for buildingmotif.utils

       
    - - + +
    diff --git a/_modules/index.html b/_modules/index.html index e4659fddc..4317fff58 100644 --- a/_modules/index.html +++ b/_modules/index.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -407,11 +406,9 @@

    All modules for which code is available

  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • buildingmotif.shape_builder.shape
  • @@ -479,8 +476,8 @@

    All modules for which code is available

    - - + +
    diff --git a/_sources/reference/apidoc/_autosummary/buildingmotif.ingresses.csvingress.rst b/_sources/reference/apidoc/_autosummary/buildingmotif.ingresses.csv.rst similarity index 50% rename from _sources/reference/apidoc/_autosummary/buildingmotif.ingresses.csvingress.rst rename to _sources/reference/apidoc/_autosummary/buildingmotif.ingresses.csv.rst index 3f1af0995..7c24adbd7 100644 --- a/_sources/reference/apidoc/_autosummary/buildingmotif.ingresses.csvingress.rst +++ b/_sources/reference/apidoc/_autosummary/buildingmotif.ingresses.csv.rst @@ -1,7 +1,7 @@ -buildingmotif.ingresses.csvingress -================================== +buildingmotif.ingresses.csv +=========================== -.. automodule:: buildingmotif.ingresses.csvingress +.. automodule:: buildingmotif.ingresses.csv diff --git a/_sources/reference/apidoc/_autosummary/buildingmotif.ingresses.naming_convention.rst b/_sources/reference/apidoc/_autosummary/buildingmotif.ingresses.naming_convention.rst deleted file mode 100644 index 7e161a91f..000000000 --- a/_sources/reference/apidoc/_autosummary/buildingmotif.ingresses.naming_convention.rst +++ /dev/null @@ -1,29 +0,0 @@ -buildingmotif.ingresses.naming\_convention -========================================== - -.. automodule:: buildingmotif.ingresses.naming_convention - - - - - - - - - - - - .. rubric:: Classes - - .. autosummary:: - - NamingConventionIngress - - - - - - - - - diff --git a/_sources/reference/apidoc/_autosummary/buildingmotif.ingresses.rst b/_sources/reference/apidoc/_autosummary/buildingmotif.ingresses.rst index 6614b915b..16d07146d 100644 --- a/_sources/reference/apidoc/_autosummary/buildingmotif.ingresses.rst +++ b/_sources/reference/apidoc/_autosummary/buildingmotif.ingresses.rst @@ -30,8 +30,7 @@ buildingmotif.ingresses buildingmotif.ingresses.bacnet buildingmotif.ingresses.base buildingmotif.ingresses.brick - buildingmotif.ingresses.csvingress - buildingmotif.ingresses.naming_convention + buildingmotif.ingresses.csv buildingmotif.ingresses.template buildingmotif.ingresses.xlsx diff --git a/_sources/reference/apidoc/_autosummary/buildingmotif.label_parsing.rst b/_sources/reference/apidoc/_autosummary/buildingmotif.label_parsing.rst deleted file mode 100644 index d307cca68..000000000 --- a/_sources/reference/apidoc/_autosummary/buildingmotif.label_parsing.rst +++ /dev/null @@ -1,53 +0,0 @@ -buildingmotif.label\_parsing -============================ - -.. automodule:: buildingmotif.label_parsing - - - - - - - - .. rubric:: Functions - - .. autosummary:: - - COMMON_ABBREVIATIONS - abbreviations - analyze_failures - choice - constant - ensure_token - first_true - many - parse - parse_list - regex - results_to_tokens - sequence - string - substring_n - - - - - - .. rubric:: Classes - - .. autosummary:: - - Constant - Delimiter - Identifier - ParseResult - TokenResult - - - - - - - - - diff --git a/_sources/reference/apidoc/_autosummary/buildingmotif.rst b/_sources/reference/apidoc/_autosummary/buildingmotif.rst index 361fb7df5..ad7caae51 100644 --- a/_sources/reference/apidoc/_autosummary/buildingmotif.rst +++ b/_sources/reference/apidoc/_autosummary/buildingmotif.rst @@ -32,7 +32,6 @@ buildingmotif.database buildingmotif.dataclasses buildingmotif.ingresses - buildingmotif.label_parsing buildingmotif.libraries buildingmotif.namespaces buildingmotif.schemas diff --git a/_static/documentation_options.js b/_static/documentation_options.js index 30637825d..162a6ba8d 100644 --- a/_static/documentation_options.js +++ b/_static/documentation_options.js @@ -8,7 +8,7 @@ var DOCUMENTATION_OPTIONS = { LINK_SUFFIX: '.html', HAS_SOURCE: true, SOURCELINK_SUFFIX: '', - NAVIGATION_WITH_KEYS: true, + NAVIGATION_WITH_KEYS: false, SHOW_SEARCH_SUMMARY: true, ENABLE_SEARCH_SHORTCUTS: false, }; \ No newline at end of file diff --git a/_static/scripts/bootstrap.js b/_static/scripts/bootstrap.js index ef07e0bca..bda8a6027 100644 --- a/_static/scripts/bootstrap.js +++ b/_static/scripts/bootstrap.js @@ -1,3 +1,3 @@ /*! For license information please see bootstrap.js.LICENSE.txt */ -(()=>{"use strict";var t={d:(e,i)=>{for(var n in i)t.o(i,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{afterMain:()=>w,afterRead:()=>b,afterWrite:()=>C,applyStyles:()=>$,arrow:()=>G,auto:()=>r,basePlacements:()=>a,beforeMain:()=>v,beforeRead:()=>m,beforeWrite:()=>A,bottom:()=>n,clippingParents:()=>h,computeStyles:()=>et,createPopper:()=>Dt,createPopperBase:()=>Lt,createPopperLite:()=>$t,detectOverflow:()=>mt,end:()=>c,eventListeners:()=>nt,flip:()=>_t,hide:()=>yt,left:()=>o,main:()=>y,modifierPhases:()=>T,offset:()=>wt,placements:()=>g,popper:()=>u,popperGenerator:()=>kt,popperOffsets:()=>At,preventOverflow:()=>Et,read:()=>_,reference:()=>f,right:()=>s,start:()=>l,top:()=>i,variationPlacements:()=>p,viewport:()=>d,write:()=>E});var i="top",n="bottom",s="right",o="left",r="auto",a=[i,n,s,o],l="start",c="end",h="clippingParents",d="viewport",u="popper",f="reference",p=a.reduce((function(t,e){return t.concat([e+"-"+l,e+"-"+c])}),[]),g=[].concat(a,[r]).reduce((function(t,e){return t.concat([e,e+"-"+l,e+"-"+c])}),[]),m="beforeRead",_="read",b="afterRead",v="beforeMain",y="main",w="afterMain",A="beforeWrite",E="write",C="afterWrite",T=[m,_,b,v,y,w,A,E,C];function O(t){return t?(t.nodeName||"").toLowerCase():null}function x(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function k(t){return t instanceof x(t).Element||t instanceof Element}function L(t){return t instanceof x(t).HTMLElement||t instanceof HTMLElement}function D(t){return"undefined"!=typeof ShadowRoot&&(t instanceof x(t).ShadowRoot||t instanceof ShadowRoot)}const $={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];L(s)&&O(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});L(n)&&O(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function S(t){return t.split("-")[0]}var I=Math.max,N=Math.min,P=Math.round;function j(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function M(){return!/^((?!chrome|android).)*safari/i.test(j())}function H(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&L(t)&&(s=t.offsetWidth>0&&P(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&P(n.height)/t.offsetHeight||1);var r=(k(t)?x(t):window).visualViewport,a=!M()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function B(t){var e=H(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function W(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&D(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function F(t){return x(t).getComputedStyle(t)}function z(t){return["table","td","th"].indexOf(O(t))>=0}function q(t){return((k(t)?t.ownerDocument:t.document)||window.document).documentElement}function R(t){return"html"===O(t)?t:t.assignedSlot||t.parentNode||(D(t)?t.host:null)||q(t)}function V(t){return L(t)&&"fixed"!==F(t).position?t.offsetParent:null}function Y(t){for(var e=x(t),i=V(t);i&&z(i)&&"static"===F(i).position;)i=V(i);return i&&("html"===O(i)||"body"===O(i)&&"static"===F(i).position)?e:i||function(t){var e=/firefox/i.test(j());if(/Trident/i.test(j())&&L(t)&&"fixed"===F(t).position)return null;var i=R(t);for(D(i)&&(i=i.host);L(i)&&["html","body"].indexOf(O(i))<0;){var n=F(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function K(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Q(t,e,i){return I(t,N(e,i))}function X(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function U(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const G={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,r=t.state,l=t.name,c=t.options,h=r.elements.arrow,d=r.modifiersData.popperOffsets,u=S(r.placement),f=K(u),p=[o,s].indexOf(u)>=0?"height":"width";if(h&&d){var g=function(t,e){return X("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:U(t,a))}(c.padding,r),m=B(h),_="y"===f?i:o,b="y"===f?n:s,v=r.rects.reference[p]+r.rects.reference[f]-d[f]-r.rects.popper[p],y=d[f]-r.rects.reference[f],w=Y(h),A=w?"y"===f?w.clientHeight||0:w.clientWidth||0:0,E=v/2-y/2,C=g[_],T=A-m[p]-g[b],O=A/2-m[p]/2+E,x=Q(C,O,T),k=f;r.modifiersData[l]=((e={})[k]=x,e.centerOffset=x-O,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&W(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function J(t){return t.split("-")[1]}var Z={top:"auto",right:"auto",bottom:"auto",left:"auto"};function tt(t){var e,r=t.popper,a=t.popperRect,l=t.placement,h=t.variation,d=t.offsets,u=t.position,f=t.gpuAcceleration,p=t.adaptive,g=t.roundOffsets,m=t.isFixed,_=d.x,b=void 0===_?0:_,v=d.y,y=void 0===v?0:v,w="function"==typeof g?g({x:b,y}):{x:b,y};b=w.x,y=w.y;var A=d.hasOwnProperty("x"),E=d.hasOwnProperty("y"),C=o,T=i,O=window;if(p){var k=Y(r),L="clientHeight",D="clientWidth";k===x(r)&&"static"!==F(k=q(r)).position&&"absolute"===u&&(L="scrollHeight",D="scrollWidth"),(l===i||(l===o||l===s)&&h===c)&&(T=n,y-=(m&&k===O&&O.visualViewport?O.visualViewport.height:k[L])-a.height,y*=f?1:-1),l!==o&&(l!==i&&l!==n||h!==c)||(C=s,b-=(m&&k===O&&O.visualViewport?O.visualViewport.width:k[D])-a.width,b*=f?1:-1)}var $,S=Object.assign({position:u},p&&Z),I=!0===g?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:P(i*s)/s||0,y:P(n*s)/s||0}}({x:b,y},x(r)):{x:b,y};return b=I.x,y=I.y,f?Object.assign({},S,(($={})[T]=E?"0":"",$[C]=A?"0":"",$.transform=(O.devicePixelRatio||1)<=1?"translate("+b+"px, "+y+"px)":"translate3d("+b+"px, "+y+"px, 0)",$)):Object.assign({},S,((e={})[T]=E?y+"px":"",e[C]=A?b+"px":"",e.transform="",e))}const et={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:S(e.placement),variation:J(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,tt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,tt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var it={passive:!0};const nt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=x(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,it)})),a&&l.addEventListener("resize",i.update,it),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,it)})),a&&l.removeEventListener("resize",i.update,it)}},data:{}};var st={left:"right",right:"left",bottom:"top",top:"bottom"};function ot(t){return t.replace(/left|right|bottom|top/g,(function(t){return st[t]}))}var rt={start:"end",end:"start"};function at(t){return t.replace(/start|end/g,(function(t){return rt[t]}))}function lt(t){var e=x(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ct(t){return H(q(t)).left+lt(t).scrollLeft}function ht(t){var e=F(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function dt(t){return["html","body","#document"].indexOf(O(t))>=0?t.ownerDocument.body:L(t)&&ht(t)?t:dt(R(t))}function ut(t,e){var i;void 0===e&&(e=[]);var n=dt(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=x(n),r=s?[o].concat(o.visualViewport||[],ht(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(ut(R(r)))}function ft(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function pt(t,e,i){return e===d?ft(function(t,e){var i=x(t),n=q(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=M();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+ct(t),y:l}}(t,i)):k(e)?function(t,e){var i=H(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):ft(function(t){var e,i=q(t),n=lt(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=I(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=I(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ct(t),l=-n.scrollTop;return"rtl"===F(s||i).direction&&(a+=I(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(q(t)))}function gt(t){var e,r=t.reference,a=t.element,h=t.placement,d=h?S(h):null,u=h?J(h):null,f=r.x+r.width/2-a.width/2,p=r.y+r.height/2-a.height/2;switch(d){case i:e={x:f,y:r.y-a.height};break;case n:e={x:f,y:r.y+r.height};break;case s:e={x:r.x+r.width,y:p};break;case o:e={x:r.x-a.width,y:p};break;default:e={x:r.x,y:r.y}}var g=d?K(d):null;if(null!=g){var m="y"===g?"height":"width";switch(u){case l:e[g]=e[g]-(r[m]/2-a[m]/2);break;case c:e[g]=e[g]+(r[m]/2-a[m]/2)}}return e}function mt(t,e){void 0===e&&(e={});var o=e,r=o.placement,l=void 0===r?t.placement:r,c=o.strategy,p=void 0===c?t.strategy:c,g=o.boundary,m=void 0===g?h:g,_=o.rootBoundary,b=void 0===_?d:_,v=o.elementContext,y=void 0===v?u:v,w=o.altBoundary,A=void 0!==w&&w,E=o.padding,C=void 0===E?0:E,T=X("number"!=typeof C?C:U(C,a)),x=y===u?f:u,D=t.rects.popper,$=t.elements[A?x:y],S=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=ut(R(t)),i=["absolute","fixed"].indexOf(F(t).position)>=0&&L(t)?Y(t):t;return k(i)?e.filter((function(t){return k(t)&&W(t,i)&&"body"!==O(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=pt(t,i,n);return e.top=I(s.top,e.top),e.right=N(s.right,e.right),e.bottom=N(s.bottom,e.bottom),e.left=I(s.left,e.left),e}),pt(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(k($)?$:$.contextElement||q(t.elements.popper),m,b,p),P=H(t.elements.reference),j=gt({reference:P,element:D,strategy:"absolute",placement:l}),M=ft(Object.assign({},D,j)),B=y===u?M:P,z={top:S.top-B.top+T.top,bottom:B.bottom-S.bottom+T.bottom,left:S.left-B.left+T.left,right:B.right-S.right+T.right},V=t.modifiersData.offset;if(y===u&&V){var K=V[l];Object.keys(z).forEach((function(t){var e=[s,n].indexOf(t)>=0?1:-1,o=[i,n].indexOf(t)>=0?"y":"x";z[t]+=K[o]*e}))}return z}const _t={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,c=t.options,h=t.name;if(!e.modifiersData[h]._skip){for(var d=c.mainAxis,u=void 0===d||d,f=c.altAxis,m=void 0===f||f,_=c.fallbackPlacements,b=c.padding,v=c.boundary,y=c.rootBoundary,w=c.altBoundary,A=c.flipVariations,E=void 0===A||A,C=c.allowedAutoPlacements,T=e.options.placement,O=S(T),x=_||(O!==T&&E?function(t){if(S(t)===r)return[];var e=ot(t);return[at(t),e,at(e)]}(T):[ot(T)]),k=[T].concat(x).reduce((function(t,i){return t.concat(S(i)===r?function(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,l=i.flipVariations,c=i.allowedAutoPlacements,h=void 0===c?g:c,d=J(n),u=d?l?p:p.filter((function(t){return J(t)===d})):a,f=u.filter((function(t){return h.indexOf(t)>=0}));0===f.length&&(f=u);var m=f.reduce((function(e,i){return e[i]=mt(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[S(i)],e}),{});return Object.keys(m).sort((function(t,e){return m[t]-m[e]}))}(e,{placement:i,boundary:v,rootBoundary:y,padding:b,flipVariations:E,allowedAutoPlacements:C}):i)}),[]),L=e.rects.reference,D=e.rects.popper,$=new Map,I=!0,N=k[0],P=0;P=0,W=B?"width":"height",F=mt(e,{placement:j,boundary:v,rootBoundary:y,altBoundary:w,padding:b}),z=B?H?s:o:H?n:i;L[W]>D[W]&&(z=ot(z));var q=ot(z),R=[];if(u&&R.push(F[M]<=0),m&&R.push(F[z]<=0,F[q]<=0),R.every((function(t){return t}))){N=j,I=!1;break}$.set(j,R)}if(I)for(var V=function(t){var e=k.find((function(e){var i=$.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return N=e,"break"},Y=E?3:1;Y>0&&"break"!==V(Y);Y--);e.placement!==N&&(e.modifiersData[h]._skip=!0,e.placement=N,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function bt(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function vt(t){return[i,s,n,o].some((function(e){return t[e]>=0}))}const yt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=mt(e,{elementContext:"reference"}),a=mt(e,{altBoundary:!0}),l=bt(r,n),c=bt(a,s,o),h=vt(l),d=vt(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},wt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,r=t.name,a=n.offset,l=void 0===a?[0,0]:a,c=g.reduce((function(t,n){return t[n]=function(t,e,n){var r=S(t),a=[o,i].indexOf(r)>=0?-1:1,l="function"==typeof n?n(Object.assign({},e,{placement:t})):n,c=l[0],h=l[1];return c=c||0,h=(h||0)*a,[o,s].indexOf(r)>=0?{x:h,y:c}:{x:c,y:h}}(n,e.rects,l),t}),{}),h=c[e.placement],d=h.x,u=h.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=d,e.modifiersData.popperOffsets.y+=u),e.modifiersData[r]=c}},At={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=gt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},Et={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,r=t.options,a=t.name,c=r.mainAxis,h=void 0===c||c,d=r.altAxis,u=void 0!==d&&d,f=r.boundary,p=r.rootBoundary,g=r.altBoundary,m=r.padding,_=r.tether,b=void 0===_||_,v=r.tetherOffset,y=void 0===v?0:v,w=mt(e,{boundary:f,rootBoundary:p,padding:m,altBoundary:g}),A=S(e.placement),E=J(e.placement),C=!E,T=K(A),O="x"===T?"y":"x",x=e.modifiersData.popperOffsets,k=e.rects.reference,L=e.rects.popper,D="function"==typeof y?y(Object.assign({},e.rects,{placement:e.placement})):y,$="number"==typeof D?{mainAxis:D,altAxis:D}:Object.assign({mainAxis:0,altAxis:0},D),P=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,j={x:0,y:0};if(x){if(h){var M,H="y"===T?i:o,W="y"===T?n:s,F="y"===T?"height":"width",z=x[T],q=z+w[H],R=z-w[W],V=b?-L[F]/2:0,X=E===l?k[F]:L[F],U=E===l?-L[F]:-k[F],G=e.elements.arrow,Z=b&&G?B(G):{width:0,height:0},tt=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},et=tt[H],it=tt[W],nt=Q(0,k[F],Z[F]),st=C?k[F]/2-V-nt-et-$.mainAxis:X-nt-et-$.mainAxis,ot=C?-k[F]/2+V+nt+it+$.mainAxis:U+nt+it+$.mainAxis,rt=e.elements.arrow&&Y(e.elements.arrow),at=rt?"y"===T?rt.clientTop||0:rt.clientLeft||0:0,lt=null!=(M=null==P?void 0:P[T])?M:0,ct=z+ot-lt,ht=Q(b?N(q,z+st-lt-at):q,z,b?I(R,ct):R);x[T]=ht,j[T]=ht-z}if(u){var dt,ut="x"===T?i:o,ft="x"===T?n:s,pt=x[O],gt="y"===O?"height":"width",_t=pt+w[ut],bt=pt-w[ft],vt=-1!==[i,o].indexOf(A),yt=null!=(dt=null==P?void 0:P[O])?dt:0,wt=vt?_t:pt-k[gt]-L[gt]-yt+$.altAxis,At=vt?pt+k[gt]+L[gt]-yt-$.altAxis:bt,Et=b&&vt?function(t,e,i){var n=Q(t,e,i);return n>i?i:n}(wt,pt,At):Q(b?wt:_t,pt,b?At:bt);x[O]=Et,j[O]=Et-pt}e.modifiersData[a]=j}},requiresIfExists:["offset"]};function Ct(t,e,i){void 0===i&&(i=!1);var n,s,o=L(e),r=L(e)&&function(t){var e=t.getBoundingClientRect(),i=P(e.width)/t.offsetWidth||1,n=P(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=q(e),l=H(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==O(e)||ht(a))&&(c=(n=e)!==x(n)&&L(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:lt(n)),L(e)?((h=H(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=ct(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function Tt(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Ot={placement:"bottom",modifiers:[],strategy:"absolute"};function xt(){for(var t=arguments.length,e=new Array(t),i=0;i{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},Nt=t=>{const e=It(t);return e&&document.querySelector(e)?e:null},Pt=t=>{const e=It(t);return e?document.querySelector(e):null},jt=t=>{t.dispatchEvent(new Event(St))},Mt=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),Ht=t=>Mt(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,Bt=t=>{if(!Mt(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},Wt=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),Ft=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?Ft(t.parentNode):null},zt=()=>{},qt=t=>{t.offsetHeight},Rt=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Vt=[],Yt=()=>"rtl"===document.documentElement.dir,Kt=t=>{var e;e=()=>{const e=Rt();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(Vt.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of Vt)t()})),Vt.push(e)):e()},Qt=t=>{"function"==typeof t&&t()},Xt=(t,e,i=!0)=>{if(!i)return void Qt(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let s=!1;const o=({target:i})=>{i===e&&(s=!0,e.removeEventListener(St,o),Qt(t))};e.addEventListener(St,o),setTimeout((()=>{s||jt(e)}),n)},Ut=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},Gt=/[^.]*(?=\..*)\.|.*/,Jt=/\..*/,Zt=/::\d+$/,te={};let ee=1;const ie={mouseenter:"mouseover",mouseleave:"mouseout"},ne=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function se(t,e){return e&&`${e}::${ee++}`||t.uidEvent||ee++}function oe(t){const e=se(t);return t.uidEvent=e,te[e]=te[e]||{},te[e]}function re(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function ae(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=de(t);return ne.has(o)||(o=t),[n,s,o]}function le(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=ae(e,i,n);if(e in ie){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=oe(t),c=l[a]||(l[a]={}),h=re(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=se(r,e.replace(Gt,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return fe(s,{delegateTarget:r}),n.oneOff&&ue.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return fe(n,{delegateTarget:t}),i.oneOff&&ue.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function ce(t,e,i,n,s){const o=re(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function he(t,e,i,n){const s=e[i]||{};for(const o of Object.keys(s))if(o.includes(n)){const n=s[o];ce(t,e,i,n.callable,n.delegationSelector)}}function de(t){return t=t.replace(Jt,""),ie[t]||t}const ue={on(t,e,i,n){le(t,e,i,n,!1)},one(t,e,i,n){le(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=ae(e,i,n),a=r!==e,l=oe(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))he(t,l,i,e.slice(1));for(const i of Object.keys(c)){const n=i.replace(Zt,"");if(!a||e.includes(n)){const e=c[i];ce(t,l,r,e.callable,e.delegationSelector)}}}else{if(!Object.keys(c).length)return;ce(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=Rt();let s=null,o=!0,r=!0,a=!1;e!==de(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());let l=new Event(e,{bubbles:o,cancelable:!0});return l=fe(l,i),a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function fe(t,e){for(const[i,n]of Object.entries(e||{}))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}const pe=new Map,ge={set(t,e,i){pe.has(t)||pe.set(t,new Map);const n=pe.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>pe.has(t)&&pe.get(t).get(e)||null,remove(t,e){if(!pe.has(t))return;const i=pe.get(t);i.delete(e),0===i.size&&pe.delete(t)}};function me(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function _e(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const be={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${_e(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${_e(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=me(t.dataset[n])}return e},getDataAttribute:(t,e)=>me(t.getAttribute(`data-bs-${_e(e)}`))};class ve{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=Mt(e)?be.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...Mt(e)?be.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const n of Object.keys(e)){const s=e[n],o=t[n],r=Mt(o)?"element":null==(i=o)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class ye extends ve{constructor(t,e){super(),(t=Ht(t))&&(this._element=t,this._config=this._getConfig(e),ge.set(this._element,this.constructor.DATA_KEY,this))}dispose(){ge.remove(this._element,this.constructor.DATA_KEY),ue.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){Xt(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return ge.get(Ht(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.2.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const we=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;ue.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),Wt(this))return;const s=Pt(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},Ae=".bs.alert",Ee=`close${Ae}`,Ce=`closed${Ae}`;class Te extends ye{static get NAME(){return"alert"}close(){if(ue.trigger(this._element,Ee).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),ue.trigger(this._element,Ce),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Te.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}we(Te,"close"),Kt(Te);const Oe='[data-bs-toggle="button"]';class xe extends ye{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=xe.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}ue.on(document,"click.bs.button.data-api",Oe,(t=>{t.preventDefault();const e=t.target.closest(Oe);xe.getOrCreateInstance(e).toggle()})),Kt(xe);const ke={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!Wt(t)&&Bt(t)))}},Le=".bs.swipe",De=`touchstart${Le}`,$e=`touchmove${Le}`,Se=`touchend${Le}`,Ie=`pointerdown${Le}`,Ne=`pointerup${Le}`,Pe={endCallback:null,leftCallback:null,rightCallback:null},je={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Me extends ve{constructor(t,e){super(),this._element=t,t&&Me.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Pe}static get DefaultType(){return je}static get NAME(){return"swipe"}dispose(){ue.off(this._element,Le)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),Qt(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&Qt(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(ue.on(this._element,Ie,(t=>this._start(t))),ue.on(this._element,Ne,(t=>this._end(t))),this._element.classList.add("pointer-event")):(ue.on(this._element,De,(t=>this._start(t))),ue.on(this._element,$e,(t=>this._move(t))),ue.on(this._element,Se,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const He=".bs.carousel",Be=".data-api",We="next",Fe="prev",ze="left",qe="right",Re=`slide${He}`,Ve=`slid${He}`,Ye=`keydown${He}`,Ke=`mouseenter${He}`,Qe=`mouseleave${He}`,Xe=`dragstart${He}`,Ue=`load${He}${Be}`,Ge=`click${He}${Be}`,Je="carousel",Ze="active",ti=".active",ei=".carousel-item",ii=ti+ei,ni={ArrowLeft:qe,ArrowRight:ze},si={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},oi={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class ri extends ye{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=ke.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===Je&&this.cycle()}static get Default(){return si}static get DefaultType(){return oi}static get NAME(){return"carousel"}next(){this._slide(We)}nextWhenVisible(){!document.hidden&&Bt(this._element)&&this.next()}prev(){this._slide(Fe)}pause(){this._isSliding&&jt(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?ue.one(this._element,Ve,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void ue.one(this._element,Ve,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?We:Fe;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&ue.on(this._element,Ye,(t=>this._keydown(t))),"hover"===this._config.pause&&(ue.on(this._element,Ke,(()=>this.pause())),ue.on(this._element,Qe,(()=>this._maybeEnableCycle()))),this._config.touch&&Me.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of ke.find(".carousel-item img",this._element))ue.on(t,Xe,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ze)),rightCallback:()=>this._slide(this._directionToOrder(qe)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new Me(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=ni[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=ke.findOne(ti,this._indicatorsElement);e.classList.remove(Ze),e.removeAttribute("aria-current");const i=ke.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(Ze),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===We,s=e||Ut(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>ue.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(Re).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),qt(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(Ze),i.classList.remove(Ze,c,l),this._isSliding=!1,r(Ve)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return ke.findOne(ii,this._element)}_getItems(){return ke.find(ei,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return Yt()?t===ze?Fe:We:t===ze?We:Fe}_orderToDirection(t){return Yt()?t===Fe?ze:qe:t===Fe?qe:ze}static jQueryInterface(t){return this.each((function(){const e=ri.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}ue.on(document,Ge,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=Pt(this);if(!e||!e.classList.contains(Je))return;t.preventDefault();const i=ri.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===be.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),ue.on(window,Ue,(()=>{const t=ke.find('[data-bs-ride="carousel"]');for(const e of t)ri.getOrCreateInstance(e)})),Kt(ri);const ai=".bs.collapse",li=`show${ai}`,ci=`shown${ai}`,hi=`hide${ai}`,di=`hidden${ai}`,ui=`click${ai}.data-api`,fi="show",pi="collapse",gi="collapsing",mi=`:scope .${pi} .${pi}`,_i='[data-bs-toggle="collapse"]',bi={parent:null,toggle:!0},vi={parent:"(null|element)",toggle:"boolean"};class yi extends ye{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=ke.find(_i);for(const t of i){const e=Nt(t),i=ke.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return bi}static get DefaultType(){return vi}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>yi.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(ue.trigger(this._element,li).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(pi),this._element.classList.add(gi),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(gi),this._element.classList.add(pi,fi),this._element.style[e]="",ue.trigger(this._element,ci)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(ue.trigger(this._element,hi).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,qt(this._element),this._element.classList.add(gi),this._element.classList.remove(pi,fi);for(const t of this._triggerArray){const e=Pt(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(gi),this._element.classList.add(pi),ue.trigger(this._element,di)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(fi)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=Ht(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(_i);for(const e of t){const t=Pt(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=ke.find(mi,this._config.parent);return ke.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=yi.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}ue.on(document,ui,_i,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=Nt(this),i=ke.find(e);for(const t of i)yi.getOrCreateInstance(t,{toggle:!1}).toggle()})),Kt(yi);const wi="dropdown",Ai=".bs.dropdown",Ei=".data-api",Ci="ArrowUp",Ti="ArrowDown",Oi=`hide${Ai}`,xi=`hidden${Ai}`,ki=`show${Ai}`,Li=`shown${Ai}`,Di=`click${Ai}${Ei}`,$i=`keydown${Ai}${Ei}`,Si=`keyup${Ai}${Ei}`,Ii="show",Ni='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Pi=`${Ni}.${Ii}`,ji=".dropdown-menu",Mi=Yt()?"top-end":"top-start",Hi=Yt()?"top-start":"top-end",Bi=Yt()?"bottom-end":"bottom-start",Wi=Yt()?"bottom-start":"bottom-end",Fi=Yt()?"left-start":"right-start",zi=Yt()?"right-start":"left-start",qi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Ri={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Vi extends ye{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=ke.next(this._element,ji)[0]||ke.prev(this._element,ji)[0]||ke.findOne(ji,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return qi}static get DefaultType(){return Ri}static get NAME(){return wi}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Wt(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!ue.trigger(this._element,ki,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))ue.on(t,"mouseover",zt);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Ii),this._element.classList.add(Ii),ue.trigger(this._element,Li,t)}}hide(){if(Wt(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!ue.trigger(this._element,Oi,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.off(t,"mouseover",zt);this._popper&&this._popper.destroy(),this._menu.classList.remove(Ii),this._element.classList.remove(Ii),this._element.setAttribute("aria-expanded","false"),be.removeDataAttribute(this._menu,"popper"),ue.trigger(this._element,xi,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!Mt(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${wi.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===e)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:Mt(this._config.reference)?t=Ht(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const i=this._getPopperConfig();this._popper=Dt(t,this._menu,i)}_isShown(){return this._menu.classList.contains(Ii)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Fi;if(t.classList.contains("dropstart"))return zi;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?Hi:Mi:e?Wi:Bi}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(be.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=ke.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>Bt(t)));i.length&&Ut(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=Vi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=ke.find(Pi);for(const i of e){const e=Vi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ci,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ni)?this:ke.prev(this,Ni)[0]||ke.next(this,Ni)[0]||ke.findOne(Ni,t.delegateTarget.parentNode),o=Vi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}ue.on(document,$i,Ni,Vi.dataApiKeydownHandler),ue.on(document,$i,ji,Vi.dataApiKeydownHandler),ue.on(document,Di,Vi.clearMenus),ue.on(document,Si,Vi.clearMenus),ue.on(document,Di,Ni,(function(t){t.preventDefault(),Vi.getOrCreateInstance(this).toggle()})),Kt(Vi);const Yi=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Ki=".sticky-top",Qi="padding-right",Xi="margin-right";class Ui{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,Qi,(e=>e+t)),this._setElementAttributes(Yi,Qi,(e=>e+t)),this._setElementAttributes(Ki,Xi,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,Qi),this._resetElementAttributes(Yi,Qi),this._resetElementAttributes(Ki,Xi)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&be.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=be.getDataAttribute(t,e);null!==i?(be.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(Mt(t))e(t);else for(const i of ke.find(t,this._element))e(i)}}const Gi="backdrop",Ji="show",Zi=`mousedown.bs.${Gi}`,tn={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},en={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class nn extends ve{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return tn}static get DefaultType(){return en}static get NAME(){return Gi}show(t){if(!this._config.isVisible)return void Qt(t);this._append();const e=this._getElement();this._config.isAnimated&&qt(e),e.classList.add(Ji),this._emulateAnimation((()=>{Qt(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ji),this._emulateAnimation((()=>{this.dispose(),Qt(t)}))):Qt(t)}dispose(){this._isAppended&&(ue.off(this._element,Zi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=Ht(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),ue.on(t,Zi,(()=>{Qt(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){Xt(t,this._getElement(),this._config.isAnimated)}}const sn=".bs.focustrap",on=`focusin${sn}`,rn=`keydown.tab${sn}`,an="backward",ln={autofocus:!0,trapElement:null},cn={autofocus:"boolean",trapElement:"element"};class hn extends ve{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return ln}static get DefaultType(){return cn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),ue.off(document,sn),ue.on(document,on,(t=>this._handleFocusin(t))),ue.on(document,rn,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,ue.off(document,sn))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=ke.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===an?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?an:"forward")}}const dn=".bs.modal",un=`hide${dn}`,fn=`hidePrevented${dn}`,pn=`hidden${dn}`,gn=`show${dn}`,mn=`shown${dn}`,_n=`resize${dn}`,bn=`click.dismiss${dn}`,vn=`mousedown.dismiss${dn}`,yn=`keydown.dismiss${dn}`,wn=`click${dn}.data-api`,An="modal-open",En="show",Cn="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},On={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class xn extends ye{constructor(t,e){super(t,e),this._dialog=ke.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new Ui,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return On}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||ue.trigger(this._element,gn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(An),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(ue.trigger(this._element,un).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(En),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){for(const t of[window,this._dialog])ue.off(t,dn);this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new nn({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new hn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=ke.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),qt(this._element),this._element.classList.add(En),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,ue.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){ue.on(this._element,yn,(t=>{if("Escape"===t.key)return this._config.keyboard?(t.preventDefault(),void this.hide()):void this._triggerBackdropTransition()})),ue.on(window,_n,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),ue.on(this._element,vn,(t=>{ue.one(this._element,bn,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(An),this._resetAdjustments(),this._scrollBar.reset(),ue.trigger(this._element,pn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(ue.trigger(this._element,fn).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(Cn)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Cn),this._queueCallback((()=>{this._element.classList.remove(Cn),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=Yt()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=Yt()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=xn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}ue.on(document,wn,'[data-bs-toggle="modal"]',(function(t){const e=Pt(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),ue.one(e,gn,(t=>{t.defaultPrevented||ue.one(e,pn,(()=>{Bt(this)&&this.focus()}))}));const i=ke.findOne(".modal.show");i&&xn.getInstance(i).hide(),xn.getOrCreateInstance(e).toggle(this)})),we(xn),Kt(xn);const kn=".bs.offcanvas",Ln=".data-api",Dn=`load${kn}${Ln}`,$n="show",Sn="showing",In="hiding",Nn=".offcanvas.show",Pn=`show${kn}`,jn=`shown${kn}`,Mn=`hide${kn}`,Hn=`hidePrevented${kn}`,Bn=`hidden${kn}`,Wn=`resize${kn}`,Fn=`click${kn}${Ln}`,zn=`keydown.dismiss${kn}`,qn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Vn extends ye{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return qn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||ue.trigger(this._element,Pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new Ui).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Sn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add($n),this._element.classList.remove(Sn),ue.trigger(this._element,jn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(ue.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(In),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove($n,In),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new Ui).reset(),ue.trigger(this._element,Bn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new nn({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():ue.trigger(this._element,Hn)}:null})}_initializeFocusTrap(){return new hn({trapElement:this._element})}_addEventListeners(){ue.on(this._element,zn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():ue.trigger(this._element,Hn))}))}static jQueryInterface(t){return this.each((function(){const e=Vn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}ue.on(document,Fn,'[data-bs-toggle="offcanvas"]',(function(t){const e=Pt(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),Wt(this))return;ue.one(e,Bn,(()=>{Bt(this)&&this.focus()}));const i=ke.findOne(Nn);i&&i!==e&&Vn.getInstance(i).hide(),Vn.getOrCreateInstance(e).toggle(this)})),ue.on(window,Dn,(()=>{for(const t of ke.find(Nn))Vn.getOrCreateInstance(t).show()})),ue.on(window,Wn,(()=>{for(const t of ke.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&Vn.getOrCreateInstance(t).hide()})),we(Vn),Kt(Vn);const Yn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Kn=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Qn=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Yn.has(i)||Boolean(Kn.test(t.nodeValue)||Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Un={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Gn={allowList:Un,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
    "},Jn={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Zn={entry:"(string|element|function|null)",selector:"(string|element)"};class ts extends ve{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Gn}static get DefaultType(){return Jn}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Zn)}_setContent(t,e,i){const n=ke.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?Mt(e)?this._putElementInTemplate(Ht(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return"function"==typeof t?t(this):t}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const es=new Set(["sanitize","allowList","sanitizeFn"]),is="fade",ns="show",ss=".modal",os="hide.bs.modal",rs="hover",as="focus",ls={AUTO:"auto",TOP:"top",RIGHT:Yt()?"left":"right",BOTTOM:"bottom",LEFT:Yt()?"right":"left"},cs={allowList:Un,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,0],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},hs={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class ds extends ye{constructor(t,i){if(void 0===e)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,i),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return cs}static get DefaultType(){return hs}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),ue.off(this._element.closest(ss),os,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=ue.trigger(this._element,this.constructor.eventName("show")),e=(Ft(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),ue.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(ns),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.on(t,"mouseover",zt);this._queueCallback((()=>{ue.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!ue.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(ns),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.off(t,"mouseover",zt);this._activeTrigger.click=!1,this._activeTrigger[as]=!1,this._activeTrigger[rs]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),ue.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(is,ns),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(is),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new ts({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(is)}_isShown(){return this.tip&&this.tip.classList.contains(ns)}_createPopper(t){const e="function"==typeof this._config.placement?this._config.placement.call(this,t,this._element):this._config.placement,i=ls[e.toUpperCase()];return Dt(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)ue.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===rs?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===rs?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");ue.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?as:rs]=!0,e._enter()})),ue.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?as:rs]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},ue.on(this._element.closest(ss),os,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=be.getDataAttributes(this._element);for(const t of Object.keys(e))es.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:Ht(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=ds.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Kt(ds);const us={...ds.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},fs={...ds.DefaultType,content:"(null|string|element|function)"};class ps extends ds{static get Default(){return us}static get DefaultType(){return fs}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=ps.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Kt(ps);const gs=".bs.scrollspy",ms=`activate${gs}`,_s=`click${gs}`,bs=`load${gs}.data-api`,vs="active",ys="[href]",ws=".nav-link",As=`${ws}, .nav-item > ${ws}, .list-group-item`,Es={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Cs={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Ts extends ye{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Es}static get DefaultType(){return Cs}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=Ht(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(ue.off(this._config.target,_s),ue.on(this._config.target,_s,ys,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=ke.find(ys,this._config.target);for(const e of t){if(!e.hash||Wt(e))continue;const t=ke.findOne(e.hash,this._element);Bt(t)&&(this._targetLinks.set(e.hash,e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(vs),this._activateParents(t),ue.trigger(this._element,ms,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))ke.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(vs);else for(const e of ke.parents(t,".nav, .list-group"))for(const t of ke.prev(e,As))t.classList.add(vs)}_clearActiveClass(t){t.classList.remove(vs);const e=ke.find(`${ys}.${vs}`,t);for(const t of e)t.classList.remove(vs)}static jQueryInterface(t){return this.each((function(){const e=Ts.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}ue.on(window,bs,(()=>{for(const t of ke.find('[data-bs-spy="scroll"]'))Ts.getOrCreateInstance(t)})),Kt(Ts);const Os=".bs.tab",xs=`hide${Os}`,ks=`hidden${Os}`,Ls=`show${Os}`,Ds=`shown${Os}`,$s=`click${Os}`,Ss=`keydown${Os}`,Is=`load${Os}`,Ns="ArrowLeft",Ps="ArrowRight",js="ArrowUp",Ms="ArrowDown",Hs="active",Bs="fade",Ws="show",Fs=":not(.dropdown-toggle)",zs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',qs=`.nav-link${Fs}, .list-group-item${Fs}, [role="tab"]${Fs}, ${zs}`,Rs=`.${Hs}[data-bs-toggle="tab"], .${Hs}[data-bs-toggle="pill"], .${Hs}[data-bs-toggle="list"]`;class Vs extends ye{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),ue.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?ue.trigger(e,xs,{relatedTarget:t}):null;ue.trigger(t,Ls,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Hs),this._activate(Pt(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),ue.trigger(t,Ds,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Bs)))}_deactivate(t,e){t&&(t.classList.remove(Hs),t.blur(),this._deactivate(Pt(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),ue.trigger(t,ks,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Bs)))}_keydown(t){if(![Ns,Ps,js,Ms].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=[Ps,Ms].includes(t.key),i=Ut(this._getChildren().filter((t=>!Wt(t))),t.target,e,!0);i&&(i.focus({preventScroll:!0}),Vs.getOrCreateInstance(i).show())}_getChildren(){return ke.find(qs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=Pt(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`#${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=ke.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",Hs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Hs)}_getInnerElement(t){return t.matches(qs)?t:ke.findOne(qs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Vs.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}ue.on(document,$s,zs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),Wt(this)||Vs.getOrCreateInstance(this).show()})),ue.on(window,Is,(()=>{for(const t of ke.find(Rs))Vs.getOrCreateInstance(t)})),Kt(Vs);const Ys=".bs.toast",Ks=`mouseover${Ys}`,Qs=`mouseout${Ys}`,Xs=`focusin${Ys}`,Us=`focusout${Ys}`,Gs=`hide${Ys}`,Js=`hidden${Ys}`,Zs=`show${Ys}`,to=`shown${Ys}`,eo="hide",io="show",no="showing",so={animation:"boolean",autohide:"boolean",delay:"number"},oo={animation:!0,autohide:!0,delay:5e3};class ro extends ye{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return oo}static get DefaultType(){return so}static get NAME(){return"toast"}show(){ue.trigger(this._element,Zs).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(eo),qt(this._element),this._element.classList.add(io,no),this._queueCallback((()=>{this._element.classList.remove(no),ue.trigger(this._element,to),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(ue.trigger(this._element,Gs).defaultPrevented||(this._element.classList.add(no),this._queueCallback((()=>{this._element.classList.add(eo),this._element.classList.remove(no,io),ue.trigger(this._element,Js)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(io),super.dispose()}isShown(){return this._element.classList.contains(io)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){ue.on(this._element,Ks,(t=>this._onInteraction(t,!0))),ue.on(this._element,Qs,(t=>this._onInteraction(t,!1))),ue.on(this._element,Xs,(t=>this._onInteraction(t,!0))),ue.on(this._element,Us,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ro.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}function ao(t){"loading"!=document.readyState?t():document.addEventListener("DOMContentLoaded",t)}we(ro),Kt(ro),ao((function(){[].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((function(t){return new ds(t,{delay:{show:500,hide:100}})}))})),ao((function(){document.getElementById("pst-back-to-top").addEventListener("click",(function(){document.body.scrollTop=0,document.documentElement.scrollTop=0}))})),ao((function(){var t=document.getElementById("pst-back-to-top"),e=document.getElementsByClassName("bd-header")[0].getBoundingClientRect();window.addEventListener("scroll",(function(){this.oldScroll>this.scrollY&&this.scrollY>e.bottom?t.style.display="block":t.style.display="none",this.oldScroll=this.scrollY}))}))})(); +(()=>{"use strict";var t={d:(e,i)=>{for(var n in i)t.o(i,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{afterMain:()=>w,afterRead:()=>b,afterWrite:()=>T,applyStyles:()=>D,arrow:()=>G,auto:()=>r,basePlacements:()=>a,beforeMain:()=>v,beforeRead:()=>g,beforeWrite:()=>E,bottom:()=>n,clippingParents:()=>h,computeStyles:()=>et,createPopper:()=>St,createPopperBase:()=>Lt,createPopperLite:()=>Dt,detectOverflow:()=>gt,end:()=>c,eventListeners:()=>nt,flip:()=>_t,hide:()=>yt,left:()=>o,main:()=>y,modifierPhases:()=>C,offset:()=>wt,placements:()=>m,popper:()=>u,popperGenerator:()=>kt,popperOffsets:()=>Et,preventOverflow:()=>At,read:()=>_,reference:()=>f,right:()=>s,start:()=>l,top:()=>i,variationPlacements:()=>p,viewport:()=>d,write:()=>A});var i="top",n="bottom",s="right",o="left",r="auto",a=[i,n,s,o],l="start",c="end",h="clippingParents",d="viewport",u="popper",f="reference",p=a.reduce((function(t,e){return t.concat([e+"-"+l,e+"-"+c])}),[]),m=[].concat(a,[r]).reduce((function(t,e){return t.concat([e,e+"-"+l,e+"-"+c])}),[]),g="beforeRead",_="read",b="afterRead",v="beforeMain",y="main",w="afterMain",E="beforeWrite",A="write",T="afterWrite",C=[g,_,b,v,y,w,E,A,T];function O(t){return t?(t.nodeName||"").toLowerCase():null}function x(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function k(t){return t instanceof x(t).Element||t instanceof Element}function L(t){return t instanceof x(t).HTMLElement||t instanceof HTMLElement}function S(t){return"undefined"!=typeof ShadowRoot&&(t instanceof x(t).ShadowRoot||t instanceof ShadowRoot)}const D={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];L(s)&&O(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});L(n)&&O(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function $(t){return t.split("-")[0]}var I=Math.max,N=Math.min,P=Math.round;function M(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function j(){return!/^((?!chrome|android).)*safari/i.test(M())}function F(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&L(t)&&(s=t.offsetWidth>0&&P(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&P(n.height)/t.offsetHeight||1);var r=(k(t)?x(t):window).visualViewport,a=!j()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function H(t){var e=F(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function B(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&S(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function W(t){return x(t).getComputedStyle(t)}function z(t){return["table","td","th"].indexOf(O(t))>=0}function R(t){return((k(t)?t.ownerDocument:t.document)||window.document).documentElement}function q(t){return"html"===O(t)?t:t.assignedSlot||t.parentNode||(S(t)?t.host:null)||R(t)}function V(t){return L(t)&&"fixed"!==W(t).position?t.offsetParent:null}function Y(t){for(var e=x(t),i=V(t);i&&z(i)&&"static"===W(i).position;)i=V(i);return i&&("html"===O(i)||"body"===O(i)&&"static"===W(i).position)?e:i||function(t){var e=/firefox/i.test(M());if(/Trident/i.test(M())&&L(t)&&"fixed"===W(t).position)return null;var i=q(t);for(S(i)&&(i=i.host);L(i)&&["html","body"].indexOf(O(i))<0;){var n=W(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function K(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Q(t,e,i){return I(t,N(e,i))}function X(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function U(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const G={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,r=t.state,l=t.name,c=t.options,h=r.elements.arrow,d=r.modifiersData.popperOffsets,u=$(r.placement),f=K(u),p=[o,s].indexOf(u)>=0?"height":"width";if(h&&d){var m=function(t,e){return X("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:U(t,a))}(c.padding,r),g=H(h),_="y"===f?i:o,b="y"===f?n:s,v=r.rects.reference[p]+r.rects.reference[f]-d[f]-r.rects.popper[p],y=d[f]-r.rects.reference[f],w=Y(h),E=w?"y"===f?w.clientHeight||0:w.clientWidth||0:0,A=v/2-y/2,T=m[_],C=E-g[p]-m[b],O=E/2-g[p]/2+A,x=Q(T,O,C),k=f;r.modifiersData[l]=((e={})[k]=x,e.centerOffset=x-O,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&B(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function J(t){return t.split("-")[1]}var Z={top:"auto",right:"auto",bottom:"auto",left:"auto"};function tt(t){var e,r=t.popper,a=t.popperRect,l=t.placement,h=t.variation,d=t.offsets,u=t.position,f=t.gpuAcceleration,p=t.adaptive,m=t.roundOffsets,g=t.isFixed,_=d.x,b=void 0===_?0:_,v=d.y,y=void 0===v?0:v,w="function"==typeof m?m({x:b,y}):{x:b,y};b=w.x,y=w.y;var E=d.hasOwnProperty("x"),A=d.hasOwnProperty("y"),T=o,C=i,O=window;if(p){var k=Y(r),L="clientHeight",S="clientWidth";k===x(r)&&"static"!==W(k=R(r)).position&&"absolute"===u&&(L="scrollHeight",S="scrollWidth"),(l===i||(l===o||l===s)&&h===c)&&(C=n,y-=(g&&k===O&&O.visualViewport?O.visualViewport.height:k[L])-a.height,y*=f?1:-1),l!==o&&(l!==i&&l!==n||h!==c)||(T=s,b-=(g&&k===O&&O.visualViewport?O.visualViewport.width:k[S])-a.width,b*=f?1:-1)}var D,$=Object.assign({position:u},p&&Z),I=!0===m?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:P(i*s)/s||0,y:P(n*s)/s||0}}({x:b,y},x(r)):{x:b,y};return b=I.x,y=I.y,f?Object.assign({},$,((D={})[C]=A?"0":"",D[T]=E?"0":"",D.transform=(O.devicePixelRatio||1)<=1?"translate("+b+"px, "+y+"px)":"translate3d("+b+"px, "+y+"px, 0)",D)):Object.assign({},$,((e={})[C]=A?y+"px":"",e[T]=E?b+"px":"",e.transform="",e))}const et={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:$(e.placement),variation:J(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,tt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,tt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var it={passive:!0};const nt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=x(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,it)})),a&&l.addEventListener("resize",i.update,it),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,it)})),a&&l.removeEventListener("resize",i.update,it)}},data:{}};var st={left:"right",right:"left",bottom:"top",top:"bottom"};function ot(t){return t.replace(/left|right|bottom|top/g,(function(t){return st[t]}))}var rt={start:"end",end:"start"};function at(t){return t.replace(/start|end/g,(function(t){return rt[t]}))}function lt(t){var e=x(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ct(t){return F(R(t)).left+lt(t).scrollLeft}function ht(t){var e=W(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function dt(t){return["html","body","#document"].indexOf(O(t))>=0?t.ownerDocument.body:L(t)&&ht(t)?t:dt(q(t))}function ut(t,e){var i;void 0===e&&(e=[]);var n=dt(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=x(n),r=s?[o].concat(o.visualViewport||[],ht(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(ut(q(r)))}function ft(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function pt(t,e,i){return e===d?ft(function(t,e){var i=x(t),n=R(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=j();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+ct(t),y:l}}(t,i)):k(e)?function(t,e){var i=F(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):ft(function(t){var e,i=R(t),n=lt(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=I(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=I(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ct(t),l=-n.scrollTop;return"rtl"===W(s||i).direction&&(a+=I(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(R(t)))}function mt(t){var e,r=t.reference,a=t.element,h=t.placement,d=h?$(h):null,u=h?J(h):null,f=r.x+r.width/2-a.width/2,p=r.y+r.height/2-a.height/2;switch(d){case i:e={x:f,y:r.y-a.height};break;case n:e={x:f,y:r.y+r.height};break;case s:e={x:r.x+r.width,y:p};break;case o:e={x:r.x-a.width,y:p};break;default:e={x:r.x,y:r.y}}var m=d?K(d):null;if(null!=m){var g="y"===m?"height":"width";switch(u){case l:e[m]=e[m]-(r[g]/2-a[g]/2);break;case c:e[m]=e[m]+(r[g]/2-a[g]/2)}}return e}function gt(t,e){void 0===e&&(e={});var o=e,r=o.placement,l=void 0===r?t.placement:r,c=o.strategy,p=void 0===c?t.strategy:c,m=o.boundary,g=void 0===m?h:m,_=o.rootBoundary,b=void 0===_?d:_,v=o.elementContext,y=void 0===v?u:v,w=o.altBoundary,E=void 0!==w&&w,A=o.padding,T=void 0===A?0:A,C=X("number"!=typeof T?T:U(T,a)),x=y===u?f:u,S=t.rects.popper,D=t.elements[E?x:y],$=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=ut(q(t)),i=["absolute","fixed"].indexOf(W(t).position)>=0&&L(t)?Y(t):t;return k(i)?e.filter((function(t){return k(t)&&B(t,i)&&"body"!==O(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=pt(t,i,n);return e.top=I(s.top,e.top),e.right=N(s.right,e.right),e.bottom=N(s.bottom,e.bottom),e.left=I(s.left,e.left),e}),pt(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(k(D)?D:D.contextElement||R(t.elements.popper),g,b,p),P=F(t.elements.reference),M=mt({reference:P,element:S,strategy:"absolute",placement:l}),j=ft(Object.assign({},S,M)),H=y===u?j:P,z={top:$.top-H.top+C.top,bottom:H.bottom-$.bottom+C.bottom,left:$.left-H.left+C.left,right:H.right-$.right+C.right},V=t.modifiersData.offset;if(y===u&&V){var K=V[l];Object.keys(z).forEach((function(t){var e=[s,n].indexOf(t)>=0?1:-1,o=[i,n].indexOf(t)>=0?"y":"x";z[t]+=K[o]*e}))}return z}const _t={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,c=t.options,h=t.name;if(!e.modifiersData[h]._skip){for(var d=c.mainAxis,u=void 0===d||d,f=c.altAxis,g=void 0===f||f,_=c.fallbackPlacements,b=c.padding,v=c.boundary,y=c.rootBoundary,w=c.altBoundary,E=c.flipVariations,A=void 0===E||E,T=c.allowedAutoPlacements,C=e.options.placement,O=$(C),x=_||(O!==C&&A?function(t){if($(t)===r)return[];var e=ot(t);return[at(t),e,at(e)]}(C):[ot(C)]),k=[C].concat(x).reduce((function(t,i){return t.concat($(i)===r?function(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,l=i.flipVariations,c=i.allowedAutoPlacements,h=void 0===c?m:c,d=J(n),u=d?l?p:p.filter((function(t){return J(t)===d})):a,f=u.filter((function(t){return h.indexOf(t)>=0}));0===f.length&&(f=u);var g=f.reduce((function(e,i){return e[i]=gt(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[$(i)],e}),{});return Object.keys(g).sort((function(t,e){return g[t]-g[e]}))}(e,{placement:i,boundary:v,rootBoundary:y,padding:b,flipVariations:A,allowedAutoPlacements:T}):i)}),[]),L=e.rects.reference,S=e.rects.popper,D=new Map,I=!0,N=k[0],P=0;P=0,B=H?"width":"height",W=gt(e,{placement:M,boundary:v,rootBoundary:y,altBoundary:w,padding:b}),z=H?F?s:o:F?n:i;L[B]>S[B]&&(z=ot(z));var R=ot(z),q=[];if(u&&q.push(W[j]<=0),g&&q.push(W[z]<=0,W[R]<=0),q.every((function(t){return t}))){N=M,I=!1;break}D.set(M,q)}if(I)for(var V=function(t){var e=k.find((function(e){var i=D.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return N=e,"break"},Y=A?3:1;Y>0&&"break"!==V(Y);Y--);e.placement!==N&&(e.modifiersData[h]._skip=!0,e.placement=N,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function bt(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function vt(t){return[i,s,n,o].some((function(e){return t[e]>=0}))}const yt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=gt(e,{elementContext:"reference"}),a=gt(e,{altBoundary:!0}),l=bt(r,n),c=bt(a,s,o),h=vt(l),d=vt(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},wt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,r=t.name,a=n.offset,l=void 0===a?[0,0]:a,c=m.reduce((function(t,n){return t[n]=function(t,e,n){var r=$(t),a=[o,i].indexOf(r)>=0?-1:1,l="function"==typeof n?n(Object.assign({},e,{placement:t})):n,c=l[0],h=l[1];return c=c||0,h=(h||0)*a,[o,s].indexOf(r)>=0?{x:h,y:c}:{x:c,y:h}}(n,e.rects,l),t}),{}),h=c[e.placement],d=h.x,u=h.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=d,e.modifiersData.popperOffsets.y+=u),e.modifiersData[r]=c}},Et={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=mt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},At={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,r=t.options,a=t.name,c=r.mainAxis,h=void 0===c||c,d=r.altAxis,u=void 0!==d&&d,f=r.boundary,p=r.rootBoundary,m=r.altBoundary,g=r.padding,_=r.tether,b=void 0===_||_,v=r.tetherOffset,y=void 0===v?0:v,w=gt(e,{boundary:f,rootBoundary:p,padding:g,altBoundary:m}),E=$(e.placement),A=J(e.placement),T=!A,C=K(E),O="x"===C?"y":"x",x=e.modifiersData.popperOffsets,k=e.rects.reference,L=e.rects.popper,S="function"==typeof y?y(Object.assign({},e.rects,{placement:e.placement})):y,D="number"==typeof S?{mainAxis:S,altAxis:S}:Object.assign({mainAxis:0,altAxis:0},S),P=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,M={x:0,y:0};if(x){if(h){var j,F="y"===C?i:o,B="y"===C?n:s,W="y"===C?"height":"width",z=x[C],R=z+w[F],q=z-w[B],V=b?-L[W]/2:0,X=A===l?k[W]:L[W],U=A===l?-L[W]:-k[W],G=e.elements.arrow,Z=b&&G?H(G):{width:0,height:0},tt=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},et=tt[F],it=tt[B],nt=Q(0,k[W],Z[W]),st=T?k[W]/2-V-nt-et-D.mainAxis:X-nt-et-D.mainAxis,ot=T?-k[W]/2+V+nt+it+D.mainAxis:U+nt+it+D.mainAxis,rt=e.elements.arrow&&Y(e.elements.arrow),at=rt?"y"===C?rt.clientTop||0:rt.clientLeft||0:0,lt=null!=(j=null==P?void 0:P[C])?j:0,ct=z+ot-lt,ht=Q(b?N(R,z+st-lt-at):R,z,b?I(q,ct):q);x[C]=ht,M[C]=ht-z}if(u){var dt,ut="x"===C?i:o,ft="x"===C?n:s,pt=x[O],mt="y"===O?"height":"width",_t=pt+w[ut],bt=pt-w[ft],vt=-1!==[i,o].indexOf(E),yt=null!=(dt=null==P?void 0:P[O])?dt:0,wt=vt?_t:pt-k[mt]-L[mt]-yt+D.altAxis,Et=vt?pt+k[mt]+L[mt]-yt-D.altAxis:bt,At=b&&vt?function(t,e,i){var n=Q(t,e,i);return n>i?i:n}(wt,pt,Et):Q(b?wt:_t,pt,b?Et:bt);x[O]=At,M[O]=At-pt}e.modifiersData[a]=M}},requiresIfExists:["offset"]};function Tt(t,e,i){void 0===i&&(i=!1);var n,s,o=L(e),r=L(e)&&function(t){var e=t.getBoundingClientRect(),i=P(e.width)/t.offsetWidth||1,n=P(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=R(e),l=F(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==O(e)||ht(a))&&(c=(n=e)!==x(n)&&L(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:lt(n)),L(e)?((h=F(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=ct(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function Ct(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Ot={placement:"bottom",modifiers:[],strategy:"absolute"};function xt(){for(var t=arguments.length,e=new Array(t),i=0;i$t.has(t)&&$t.get(t).get(e)||null,remove(t,e){if(!$t.has(t))return;const i=$t.get(t);i.delete(e),0===i.size&&$t.delete(t)}},Nt="transitionend",Pt=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),Mt=t=>{t.dispatchEvent(new Event(Nt))},jt=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),Ft=t=>jt(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(Pt(t)):null,Ht=t=>{if(!jt(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},Bt=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),Wt=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?Wt(t.parentNode):null},zt=()=>{},Rt=t=>{t.offsetHeight},qt=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Vt=[],Yt=()=>"rtl"===document.documentElement.dir,Kt=t=>{var e;e=()=>{const e=qt();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(Vt.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of Vt)t()})),Vt.push(e)):e()},Qt=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,Xt=(t,e,i=!0)=>{if(!i)return void Qt(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let s=!1;const o=({target:i})=>{i===e&&(s=!0,e.removeEventListener(Nt,o),Qt(t))};e.addEventListener(Nt,o),setTimeout((()=>{s||Mt(e)}),n)},Ut=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},Gt=/[^.]*(?=\..*)\.|.*/,Jt=/\..*/,Zt=/::\d+$/,te={};let ee=1;const ie={mouseenter:"mouseover",mouseleave:"mouseout"},ne=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function se(t,e){return e&&`${e}::${ee++}`||t.uidEvent||ee++}function oe(t){const e=se(t);return t.uidEvent=e,te[e]=te[e]||{},te[e]}function re(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function ae(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=de(t);return ne.has(o)||(o=t),[n,s,o]}function le(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=ae(e,i,n);if(e in ie){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=oe(t),c=l[a]||(l[a]={}),h=re(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=se(r,e.replace(Gt,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return fe(s,{delegateTarget:r}),n.oneOff&&ue.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return fe(n,{delegateTarget:t}),i.oneOff&&ue.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function ce(t,e,i,n,s){const o=re(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function he(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&ce(t,e,i,r.callable,r.delegationSelector)}function de(t){return t=t.replace(Jt,""),ie[t]||t}const ue={on(t,e,i,n){le(t,e,i,n,!1)},one(t,e,i,n){le(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=ae(e,i,n),a=r!==e,l=oe(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))he(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(Zt,"");a&&!e.includes(s)||ce(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;ce(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=qt();let s=null,o=!0,r=!0,a=!1;e!==de(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=fe(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function fe(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function pe(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function me(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const ge={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${me(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${me(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=pe(t.dataset[n])}return e},getDataAttribute:(t,e)=>pe(t.getAttribute(`data-bs-${me(e)}`))};class _e{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=jt(e)?ge.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...jt(e)?ge.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],o=jt(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${o}" but expected type "${s}".`)}var i}}class be extends _e{constructor(t,e){super(),(t=Ft(t))&&(this._element=t,this._config=this._getConfig(e),It.set(this._element,this.constructor.DATA_KEY,this))}dispose(){It.remove(this._element,this.constructor.DATA_KEY),ue.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){Xt(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return It.get(Ft(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.2"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const ve=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?Pt(i.trim()):null}return e},ye={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!Bt(t)&&Ht(t)))},getSelectorFromElement(t){const e=ve(t);return e&&ye.findOne(e)?e:null},getElementFromSelector(t){const e=ve(t);return e?ye.findOne(e):null},getMultipleElementsFromSelector(t){const e=ve(t);return e?ye.find(e):[]}},we=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;ue.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),Bt(this))return;const s=ye.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},Ee=".bs.alert",Ae=`close${Ee}`,Te=`closed${Ee}`;class Ce extends be{static get NAME(){return"alert"}close(){if(ue.trigger(this._element,Ae).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),ue.trigger(this._element,Te),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Ce.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}we(Ce,"close"),Kt(Ce);const Oe='[data-bs-toggle="button"]';class xe extends be{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=xe.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}ue.on(document,"click.bs.button.data-api",Oe,(t=>{t.preventDefault();const e=t.target.closest(Oe);xe.getOrCreateInstance(e).toggle()})),Kt(xe);const ke=".bs.swipe",Le=`touchstart${ke}`,Se=`touchmove${ke}`,De=`touchend${ke}`,$e=`pointerdown${ke}`,Ie=`pointerup${ke}`,Ne={endCallback:null,leftCallback:null,rightCallback:null},Pe={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Me extends _e{constructor(t,e){super(),this._element=t,t&&Me.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Ne}static get DefaultType(){return Pe}static get NAME(){return"swipe"}dispose(){ue.off(this._element,ke)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),Qt(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&Qt(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(ue.on(this._element,$e,(t=>this._start(t))),ue.on(this._element,Ie,(t=>this._end(t))),this._element.classList.add("pointer-event")):(ue.on(this._element,Le,(t=>this._start(t))),ue.on(this._element,Se,(t=>this._move(t))),ue.on(this._element,De,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const je=".bs.carousel",Fe=".data-api",He="next",Be="prev",We="left",ze="right",Re=`slide${je}`,qe=`slid${je}`,Ve=`keydown${je}`,Ye=`mouseenter${je}`,Ke=`mouseleave${je}`,Qe=`dragstart${je}`,Xe=`load${je}${Fe}`,Ue=`click${je}${Fe}`,Ge="carousel",Je="active",Ze=".active",ti=".carousel-item",ei=Ze+ti,ii={ArrowLeft:ze,ArrowRight:We},ni={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},si={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class oi extends be{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=ye.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===Ge&&this.cycle()}static get Default(){return ni}static get DefaultType(){return si}static get NAME(){return"carousel"}next(){this._slide(He)}nextWhenVisible(){!document.hidden&&Ht(this._element)&&this.next()}prev(){this._slide(Be)}pause(){this._isSliding&&Mt(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?ue.one(this._element,qe,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void ue.one(this._element,qe,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?He:Be;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&ue.on(this._element,Ve,(t=>this._keydown(t))),"hover"===this._config.pause&&(ue.on(this._element,Ye,(()=>this.pause())),ue.on(this._element,Ke,(()=>this._maybeEnableCycle()))),this._config.touch&&Me.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of ye.find(".carousel-item img",this._element))ue.on(t,Qe,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(We)),rightCallback:()=>this._slide(this._directionToOrder(ze)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new Me(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=ii[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=ye.findOne(Ze,this._indicatorsElement);e.classList.remove(Je),e.removeAttribute("aria-current");const i=ye.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(Je),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===He,s=e||Ut(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>ue.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(Re).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),Rt(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(Je),i.classList.remove(Je,c,l),this._isSliding=!1,r(qe)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return ye.findOne(ei,this._element)}_getItems(){return ye.find(ti,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return Yt()?t===We?Be:He:t===We?He:Be}_orderToDirection(t){return Yt()?t===Be?We:ze:t===Be?ze:We}static jQueryInterface(t){return this.each((function(){const e=oi.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}ue.on(document,Ue,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=ye.getElementFromSelector(this);if(!e||!e.classList.contains(Ge))return;t.preventDefault();const i=oi.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===ge.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),ue.on(window,Xe,(()=>{const t=ye.find('[data-bs-ride="carousel"]');for(const e of t)oi.getOrCreateInstance(e)})),Kt(oi);const ri=".bs.collapse",ai=`show${ri}`,li=`shown${ri}`,ci=`hide${ri}`,hi=`hidden${ri}`,di=`click${ri}.data-api`,ui="show",fi="collapse",pi="collapsing",mi=`:scope .${fi} .${fi}`,gi='[data-bs-toggle="collapse"]',_i={parent:null,toggle:!0},bi={parent:"(null|element)",toggle:"boolean"};class vi extends be{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=ye.find(gi);for(const t of i){const e=ye.getSelectorFromElement(t),i=ye.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return _i}static get DefaultType(){return bi}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>vi.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(ue.trigger(this._element,ai).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(fi),this._element.classList.add(pi),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pi),this._element.classList.add(fi,ui),this._element.style[e]="",ue.trigger(this._element,li)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(ue.trigger(this._element,ci).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,Rt(this._element),this._element.classList.add(pi),this._element.classList.remove(fi,ui);for(const t of this._triggerArray){const e=ye.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pi),this._element.classList.add(fi),ue.trigger(this._element,hi)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(ui)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=Ft(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(gi);for(const e of t){const t=ye.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=ye.find(mi,this._config.parent);return ye.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=vi.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}ue.on(document,di,gi,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of ye.getMultipleElementsFromSelector(this))vi.getOrCreateInstance(t,{toggle:!1}).toggle()})),Kt(vi);const yi="dropdown",wi=".bs.dropdown",Ei=".data-api",Ai="ArrowUp",Ti="ArrowDown",Ci=`hide${wi}`,Oi=`hidden${wi}`,xi=`show${wi}`,ki=`shown${wi}`,Li=`click${wi}${Ei}`,Si=`keydown${wi}${Ei}`,Di=`keyup${wi}${Ei}`,$i="show",Ii='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Ni=`${Ii}.${$i}`,Pi=".dropdown-menu",Mi=Yt()?"top-end":"top-start",ji=Yt()?"top-start":"top-end",Fi=Yt()?"bottom-end":"bottom-start",Hi=Yt()?"bottom-start":"bottom-end",Bi=Yt()?"left-start":"right-start",Wi=Yt()?"right-start":"left-start",zi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Ri={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class qi extends be{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=ye.next(this._element,Pi)[0]||ye.prev(this._element,Pi)[0]||ye.findOne(Pi,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return zi}static get DefaultType(){return Ri}static get NAME(){return yi}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Bt(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!ue.trigger(this._element,xi,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))ue.on(t,"mouseover",zt);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add($i),this._element.classList.add($i),ue.trigger(this._element,ki,t)}}hide(){if(Bt(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!ue.trigger(this._element,Ci,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.off(t,"mouseover",zt);this._popper&&this._popper.destroy(),this._menu.classList.remove($i),this._element.classList.remove($i),this._element.setAttribute("aria-expanded","false"),ge.removeDataAttribute(this._menu,"popper"),ue.trigger(this._element,Oi,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!jt(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${yi.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===e)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:jt(this._config.reference)?t=Ft(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const i=this._getPopperConfig();this._popper=St(t,this._menu,i)}_isShown(){return this._menu.classList.contains($i)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Bi;if(t.classList.contains("dropstart"))return Wi;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ji:Mi:e?Hi:Fi}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(ge.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...Qt(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=ye.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>Ht(t)));i.length&&Ut(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=ye.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ai,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:ye.prev(this,Ii)[0]||ye.next(this,Ii)[0]||ye.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}ue.on(document,Si,Ii,qi.dataApiKeydownHandler),ue.on(document,Si,Pi,qi.dataApiKeydownHandler),ue.on(document,Li,qi.clearMenus),ue.on(document,Di,qi.clearMenus),ue.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),Kt(qi);const Vi="backdrop",Yi="show",Ki=`mousedown.bs.${Vi}`,Qi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Xi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends _e{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Qi}static get DefaultType(){return Xi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void Qt(t);this._append();const e=this._getElement();this._config.isAnimated&&Rt(e),e.classList.add(Yi),this._emulateAnimation((()=>{Qt(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Yi),this._emulateAnimation((()=>{this.dispose(),Qt(t)}))):Qt(t)}dispose(){this._isAppended&&(ue.off(this._element,Ki),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=Ft(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),ue.on(t,Ki,(()=>{Qt(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){Xt(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends _e{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),ue.off(document,Gi),ue.on(document,Ji,(t=>this._handleFocusin(t))),ue.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,ue.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=ye.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&ge.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=ge.getDataAttribute(t,e);null!==i?(ge.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(jt(t))e(t);else for(const i of ye.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",En="show",An="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends be{constructor(t,e){super(t,e),this._dialog=ye.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||ue.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(ue.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(En),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){ue.off(window,hn),ue.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=ye.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),Rt(this._element),this._element.classList.add(En),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,ue.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){ue.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),ue.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),ue.on(this._element,bn,(t=>{ue.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),ue.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(ue.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(An)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(An),this._queueCallback((()=>{this._element.classList.remove(An),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=Yt()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=Yt()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}ue.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=ye.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),ue.one(e,pn,(t=>{t.defaultPrevented||ue.one(e,fn,(()=>{Ht(this)&&this.focus()}))}));const i=ye.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),we(On),Kt(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Bn=`click${xn}${kn}`,Wn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends be{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||ue.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),ue.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(ue.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),ue.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():ue.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){ue.on(this._element,Wn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():ue.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}ue.on(document,Bn,'[data-bs-toggle="offcanvas"]',(function(t){const e=ye.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),Bt(this))return;ue.one(e,Fn,(()=>{Ht(this)&&this.focus()}));const i=ye.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),ue.on(window,Ln,(()=>{for(const t of ye.find(In))qn.getOrCreateInstance(t).show()})),ue.on(window,Hn,(()=>{for(const t of ye.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),we(qn),Kt(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Yn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Kn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Qn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Yn.has(i)||Boolean(Kn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Xn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
    "},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends _e{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Xn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=ye.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?jt(e)?this._putElementInTemplate(Ft(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Qn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Qt(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:Yt()?"left":"right",BOTTOM:"bottom",LEFT:Yt()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends be{constructor(t,i){if(void 0===e)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,i),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),ue.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=ue.trigger(this._element,this.constructor.eventName("show")),e=(Wt(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),ue.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.on(t,"mouseover",zt);this._queueCallback((()=>{ue.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!ue.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.off(t,"mouseover",zt);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),ue.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=Qt(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return St(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return Qt(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...Qt(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)ue.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");ue.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),ue.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},ue.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=ge.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:Ft(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Kt(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Kt(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Es={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class As extends be{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return Es}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=Ft(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(ue.off(this._config.target,ms),ue.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=ye.find(bs,this._config.target);for(const e of t){if(!e.hash||Bt(e))continue;const t=ye.findOne(decodeURI(e.hash),this._element);Ht(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),ue.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))ye.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of ye.parents(t,".nav, .list-group"))for(const t of ye.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=ye.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=As.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}ue.on(window,gs,(()=>{for(const t of ye.find('[data-bs-spy="scroll"]'))As.getOrCreateInstance(t)})),Kt(As);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",Ms="Home",js="End",Fs="active",Hs="fade",Bs="show",Ws=".dropdown-toggle",zs=`:not(${Ws})`,Rs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',qs=`.nav-link${zs}, .list-group-item${zs}, [role="tab"]${zs}, ${Rs}`,Vs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Ys extends be{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),ue.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?ue.trigger(e,Cs,{relatedTarget:t}):null;ue.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(ye.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),ue.trigger(t,ks,{relatedTarget:e})):t.classList.add(Bs)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(ye.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),ue.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Bs)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,Ms,js].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!Bt(t)));let i;if([Ms,js].includes(t.key))i=e[t.key===Ms?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=Ut(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Ys.getOrCreateInstance(i).show())}_getChildren(){return ye.find(qs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=ye.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=ye.findOne(t,i);s&&s.classList.toggle(n,e)};n(Ws,Fs),n(".dropdown-menu",Bs),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(qs)?t:ye.findOne(qs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Ys.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}ue.on(document,Ls,Rs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),Bt(this)||Ys.getOrCreateInstance(this).show()})),ue.on(window,Ds,(()=>{for(const t of ye.find(Vs))Ys.getOrCreateInstance(t)})),Kt(Ys);const Ks=".bs.toast",Qs=`mouseover${Ks}`,Xs=`mouseout${Ks}`,Us=`focusin${Ks}`,Gs=`focusout${Ks}`,Js=`hide${Ks}`,Zs=`hidden${Ks}`,to=`show${Ks}`,eo=`shown${Ks}`,io="hide",no="show",so="showing",oo={animation:"boolean",autohide:"boolean",delay:"number"},ro={animation:!0,autohide:!0,delay:5e3};class ao extends be{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ro}static get DefaultType(){return oo}static get NAME(){return"toast"}show(){ue.trigger(this._element,to).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(io),Rt(this._element),this._element.classList.add(no,so),this._queueCallback((()=>{this._element.classList.remove(so),ue.trigger(this._element,eo),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(ue.trigger(this._element,Js).defaultPrevented||(this._element.classList.add(so),this._queueCallback((()=>{this._element.classList.add(io),this._element.classList.remove(so,no),ue.trigger(this._element,Zs)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(no),super.dispose()}isShown(){return this._element.classList.contains(no)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){ue.on(this._element,Qs,(t=>this._onInteraction(t,!0))),ue.on(this._element,Xs,(t=>this._onInteraction(t,!1))),ue.on(this._element,Us,(t=>this._onInteraction(t,!0))),ue.on(this._element,Gs,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ao.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}function lo(t){"loading"!=document.readyState?t():document.addEventListener("DOMContentLoaded",t)}we(ao),Kt(ao),lo((function(){[].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((function(t){return new cs(t,{delay:{show:500,hide:100}})}))})),lo((function(){document.getElementById("pst-back-to-top").addEventListener("click",(function(){document.body.scrollTop=0,document.documentElement.scrollTop=0}))})),lo((function(){var t=document.getElementById("pst-back-to-top"),e=document.getElementsByClassName("bd-header")[0].getBoundingClientRect();window.addEventListener("scroll",(function(){this.oldScroll>this.scrollY&&this.scrollY>e.bottom?t.style.display="block":t.style.display="none",this.oldScroll=this.scrollY}))}))})(); //# sourceMappingURL=bootstrap.js.map \ No newline at end of file diff --git a/_static/scripts/bootstrap.js.LICENSE.txt b/_static/scripts/bootstrap.js.LICENSE.txt index 91ad10aa0..10f979d07 100644 --- a/_static/scripts/bootstrap.js.LICENSE.txt +++ b/_static/scripts/bootstrap.js.LICENSE.txt @@ -1,5 +1,5 @@ /*! - * Bootstrap v5.2.3 (https://getbootstrap.com/) - * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Bootstrap v5.3.2 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ diff --git a/_static/scripts/bootstrap.js.map b/_static/scripts/bootstrap.js.map index 04c27d7bc..e5bc15752 100644 --- a/_static/scripts/bootstrap.js.map +++ b/_static/scripts/bootstrap.js.map @@ -1 +1 @@ -{"version":3,"file":"scripts/bootstrap.js","mappings":"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","sources":["webpack://pydata_sphinx_theme/webpack/bootstrap","webpack://pydata_sphinx_theme/webpack/runtime/define property getters","webpack://pydata_sphinx_theme/webpack/runtime/hasOwnProperty shorthand","webpack://pydata_sphinx_theme/webpack/runtime/make namespace object","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/enums.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/math.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/within.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/createPopper.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/popper.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/popper-lite.js","webpack://pydata_sphinx_theme/./node_modules/bootstrap/dist/js/bootstrap.esm.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/mixin.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/bootstrap.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","/*!\n * Bootstrap v5.2.3 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\nimport * as Popper from '@popperjs/core';\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend'; // Shout-out Angus Croll (https://goo.gl/pxwQGp)\n\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n/**\n * Public Util API\n */\n\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n\n return prefix;\n};\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n } // Just in case some CMS puts out a full URL with the anchor appended\n\n\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\n }\n\n return selector;\n};\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element);\n\n if (selector) {\n return document.querySelector(selector) ? selector : null;\n }\n\n return null;\n};\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element);\n return selector ? document.querySelector(selector) : null;\n};\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n\n return typeof object.nodeType !== 'undefined';\n};\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(object);\n }\n\n return null;\n};\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; // Handle `details` element as its content may falsie appear visible when it is closed\n\n const closedDetails = element.closest('details:not([open])');\n\n if (!closedDetails) {\n return elementIsVisible;\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n\n if (summary === null) {\n return false;\n }\n }\n\n return elementIsVisible;\n};\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n\n if (element.classList.contains('disabled')) {\n return true;\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return findShadowRoot(element.parentNode);\n};\n\nconst noop = () => {};\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\n\n\nconst reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n\n return null;\n};\n\nconst DOMContentLoadedCallbacks = [];\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\n\nconst isRTL = () => document.documentElement.dir === 'rtl';\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback();\n }\n};\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\n\n\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement); // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n\n index += shouldGetNext ? 1 : -1;\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\n\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n};\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n\n hydrateObj(event, {\n delegateTarget: target\n });\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n };\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'; // todo: tooltip passes `false` instead of selector, so we need to check\n\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n\n return [isDelegated, callable, typeEvent];\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n\n callable = wrapFunction(callable);\n }\n\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n for (const handlerKey of Object.keys(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey];\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n\n for (const keyHandlers of Object.keys(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers];\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n let evt = new Event(event, {\n bubbles,\n cancelable: true\n });\n evt = hydrateObj(evt, args);\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n }\n\n};\n\nfunction hydrateObj(obj, meta) {\n for (const [key, value] of Object.entries(meta || {})) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n\n get() {\n return value;\n }\n\n });\n }\n }\n\n return obj;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\nconst elementMap = new Map();\nconst Data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n\n const instanceMap = elementMap.get(element); // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n\n instanceMap.set(key, instance);\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n\n return null;\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key); // free up element references if there are no instances left for an element\n\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nfunction normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n\n if (value === 'false') {\n return false;\n }\n\n if (value === Number(value).toString()) {\n return Number(value);\n }\n\n if (value === '' || value === 'null') {\n return null;\n }\n\n if (typeof value !== 'string') {\n return value;\n }\n\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n\n return attributes;\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {};\n }\n\n static get DefaultType() {\n return {};\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n }\n\n _configAfterMerge(config) {\n return config;\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return { ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const property of Object.keys(configTypes)) {\n const expectedTypes = configTypes[property];\n const value = config[property];\n const valueType = isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst VERSION = '5.2.3';\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = getElement(element);\n\n if (!element) {\n return;\n }\n\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n } // Public\n\n\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n } // Static\n\n\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n\n static get VERSION() {\n return VERSION;\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n\n instance[method]();\n });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$f = 'alert';\nconst DATA_KEY$a = 'bs.alert';\nconst EVENT_KEY$b = `.${DATA_KEY$a}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$b}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$b}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$f;\n } // Public\n\n\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n\n if (closeEvent.defaultPrevented) {\n return;\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n } // Private\n\n\n _destroyElement() {\n this._element.remove();\n\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nenableDismissTrigger(Alert, 'close');\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$e = 'button';\nconst DATA_KEY$9 = 'bs.button';\nconst EVENT_KEY$a = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$e;\n } // Public\n\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this);\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n event.preventDefault();\n const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n const data = Button.getOrCreateInstance(button);\n data.toggle();\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n\n return parents;\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling;\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n\n previous = previous.previousElementSibling;\n }\n\n return [];\n },\n\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n\n next = next.nextElementSibling;\n }\n\n return [];\n },\n\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$d = 'swipe';\nconst EVENT_KEY$9 = '.bs.swipe';\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SWIPE_THRESHOLD = 40;\nconst Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n};\nconst DefaultType$c = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n};\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n\n if (!element || !Swipe.isSupported()) {\n return;\n }\n\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n\n this._initEvents();\n } // Getters\n\n\n static get Default() {\n return Default$c;\n }\n\n static get DefaultType() {\n return DefaultType$c;\n }\n\n static get NAME() {\n return NAME$d;\n } // Public\n\n\n dispose() {\n EventHandler.off(this._element, EVENT_KEY$9);\n } // Private\n\n\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n\n this._handleSwipe();\n\n execute(this._config.endCallback);\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n\n if (!direction) {\n return;\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n } // Static\n\n\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$c = 'carousel';\nconst DATA_KEY$8 = 'bs.carousel';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst ARROW_LEFT_KEY$1 = 'ArrowLeft';\nconst ARROW_RIGHT_KEY$1 = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst EVENT_SLIDE = `slide${EVENT_KEY$8}`;\nconst EVENT_SLID = `slid${EVENT_KEY$8}`;\nconst EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;\nconst EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;\nconst EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;\nconst EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT\n};\nconst Default$b = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n};\nconst DefaultType$b = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n\n this._addEventListeners();\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$b;\n }\n\n static get DefaultType() {\n return DefaultType$b;\n }\n\n static get NAME() {\n return NAME$c;\n } // Public\n\n\n next() {\n this._slide(ORDER_NEXT);\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n\n prev() {\n this._slide(ORDER_PREV);\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n\n this._clearInterval();\n }\n\n cycle() {\n this._clearInterval();\n\n this._updateInterval();\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n\n this.cycle();\n }\n\n to(index) {\n const items = this._getItems();\n\n if (index > items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n\n const activeIndex = this._getItemIndex(this._getActive());\n\n if (activeIndex === index) {\n return;\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n\n this._slide(order, items[index]);\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n\n super.dispose();\n } // Private\n\n\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n } // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n\n this.pause();\n\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n const direction = KEY_TO_DIRECTION[event.key];\n\n if (direction) {\n event.preventDefault();\n\n this._slide(this._directionToOrder(direction));\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute('aria-current');\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n\n if (!element) {\n return;\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n\n const activeElement = this._getActive();\n\n const isNext = order === ORDER_NEXT;\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n\n if (nextElement === activeElement) {\n return;\n }\n\n const nextElementIndex = this._getItemIndex(nextElement);\n\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n\n const slideEvent = triggerEvent(EVENT_SLIDE);\n\n if (slideEvent.defaultPrevented) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // todo: change tests that use empty divs to avoid this check\n return;\n }\n\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n\n this._setActiveIndicatorElement(nextElementIndex);\n\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n\n if (isCycling) {\n this.cycle();\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {\n const target = getElementFromSelector(this);\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n event.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-bs-slide-to');\n\n if (slideIndex) {\n carousel.to(slideIndex);\n\n carousel._maybeEnableCycle();\n\n return;\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n\n carousel._maybeEnableCycle();\n\n return;\n }\n\n carousel.prev();\n\n carousel._maybeEnableCycle();\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$b = 'collapse';\nconst DATA_KEY$7 = 'bs.collapse';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst EVENT_SHOW$6 = `show${EVENT_KEY$7}`;\nconst EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;\nconst EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;\nconst EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nconst Default$a = {\n parent: null,\n toggle: true\n};\nconst DefaultType$a = {\n parent: '(null|element)',\n toggle: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n\n for (const elem of toggleList) {\n const selector = getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n\n this._initializeChildren();\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$a;\n }\n\n static get DefaultType() {\n return DefaultType$a;\n }\n\n static get NAME() {\n return NAME$b;\n } // Public\n\n\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n\n let activeChildren = []; // find active children\n\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n\n if (startEvent.defaultPrevented) {\n return;\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n\n const dimension = this._getDimension();\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n this._element.style[dimension] = 0;\n\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n\n this._isTransitioning = true;\n\n const complete = () => {\n this._isTransitioning = false;\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN$6);\n };\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n\n this._queueCallback(complete, this._element, true);\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n\n if (startEvent.defaultPrevented) {\n return;\n }\n\n const dimension = this._getDimension();\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n for (const trigger of this._triggerArray) {\n const element = getElementFromSelector(trigger);\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n\n this._isTransitioning = true;\n\n const complete = () => {\n this._isTransitioning = false;\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$6);\n };\n\n this._element.style[dimension] = '';\n\n this._queueCallback(complete, this._element, true);\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$7);\n } // Private\n\n\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n config.parent = getElement(config.parent);\n return config;\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n\n for (const element of children) {\n const selected = getElementFromSelector(element);\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); // remove children if greater depth\n\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n } // Static\n\n\n static jQueryInterface(config) {\n const _config = {};\n\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n const selector = getSelectorFromElement(this);\n const selectorElements = SelectorEngine.find(selector);\n\n for (const element of selectorElements) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$a = 'dropdown';\nconst DATA_KEY$6 = 'bs.dropdown';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY$1 = 'ArrowUp';\nconst ARROW_DOWN_KEY$1 = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR = '.navbar';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst PLACEMENT_TOPCENTER = 'top';\nconst PLACEMENT_BOTTOMCENTER = 'bottom';\nconst Default$9 = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n};\nconst DefaultType$9 = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n};\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n } // Getters\n\n\n static get Default() {\n return Default$9;\n }\n\n static get DefaultType() {\n return DefaultType$9;\n }\n\n static get NAME() {\n return NAME$a;\n } // Public\n\n\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._createPopper(); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n\n this._element.classList.add(CLASS_NAME_SHOW$6);\n\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n };\n\n this._completeHide(relatedTarget);\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n\n super.dispose();\n }\n\n update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper) {\n this._popper.update();\n }\n } // Private\n\n\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n\n if (hideEvent.defaultPrevented) {\n return;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n\n this._element.setAttribute('aria-expanded', 'false');\n\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n\n _getConfig(config) {\n config = super._getConfig(config);\n\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n\n return config;\n }\n\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n\n let referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n\n const popperConfig = this._getPopperConfig();\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n\n _getPlacement() {\n const parentDropdown = this._parent;\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n } // We need to trim the value because custom properties can also include spaces\n\n\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n\n _getOffset() {\n const {\n offset\n } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }; // Disable Popper if we have a static display or Dropdown is in Navbar\n\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // todo:v6 remove\n\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n\n return { ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n };\n }\n\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));\n\n if (!items.length) {\n return;\n } // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n\n\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n return;\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle);\n\n if (!context || context._config.autoClose === false) {\n continue;\n }\n\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n\n\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n };\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n context._completeHide(relatedTarget);\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n const isInput = /input|textarea/i.test(event.target.tagName);\n const isEscapeEvent = event.key === ESCAPE_KEY$2;\n const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n\n if (isInput && !isEscapeEvent) {\n return;\n }\n\n event.preventDefault(); // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n\n instance._selectMenuItem(event);\n\n return;\n }\n\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\nconst PROPERTY_PADDING = 'padding-right';\nconst PROPERTY_MARGIN = 'margin-right';\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body;\n } // Public\n\n\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n\n hide() {\n const width = this.getWidth();\n\n this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width\n\n\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n\n\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n\n isOverflowing() {\n return this.getWidth() > 0;\n } // Private\n\n\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n\n this._element.style.overflow = 'hidden';\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n\n this._saveInitialAttribute(element, styleProperty);\n\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty); // We only want to remove the property if the value is `null`; the value can also be zero\n\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$9 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\nconst Default$8 = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n\n};\nconst DefaultType$8 = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n};\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n } // Getters\n\n\n static get Default() {\n return Default$8;\n }\n\n static get DefaultType() {\n return DefaultType$8;\n }\n\n static get NAME() {\n return NAME$9;\n } // Public\n\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._append();\n\n const element = this._getElement();\n\n if (this._config.isAnimated) {\n reflow(element);\n }\n\n element.classList.add(CLASS_NAME_SHOW$5);\n\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n\n dispose() {\n if (!this._isAppended) {\n return;\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n\n this._element.remove();\n\n this._isAppended = false;\n } // Private\n\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n\n this._element = backdrop;\n }\n\n return this._element;\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n\n _append() {\n if (this._isAppended) {\n return;\n }\n\n const element = this._getElement();\n\n this._config.rootElement.append(element);\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$8 = 'focustrap';\nconst DATA_KEY$5 = 'bs.focustrap';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\nconst Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n\n};\nconst DefaultType$7 = {\n autofocus: 'boolean',\n trapElement: 'element'\n};\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n } // Getters\n\n\n static get Default() {\n return Default$7;\n }\n\n static get DefaultType() {\n return DefaultType$7;\n }\n\n static get NAME() {\n return NAME$8;\n } // Public\n\n\n activate() {\n if (this._isActive) {\n return;\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n\n EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n\n EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n\n deactivate() {\n if (!this._isActive) {\n return;\n }\n\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n } // Private\n\n\n _handleFocusin(event) {\n const {\n trapElement\n } = this._config;\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement);\n\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$7 = 'modal';\nconst DATA_KEY$4 = 'bs.modal';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\nconst EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\nconst EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nconst DefaultType$6 = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n\n this._addEventListeners();\n } // Getters\n\n\n static get Default() {\n return Default$6;\n }\n\n static get DefaultType() {\n return DefaultType$6;\n }\n\n static get NAME() {\n return NAME$7;\n } // Public\n\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget\n });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = true;\n this._isTransitioning = true;\n\n this._scrollBar.hide();\n\n document.body.classList.add(CLASS_NAME_OPEN);\n\n this._adjustDialog();\n\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = false;\n this._isTransitioning = true;\n\n this._focustrap.deactivate();\n\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n\n dispose() {\n for (const htmlElement of [window, this._dialog]) {\n EventHandler.off(htmlElement, EVENT_KEY$4);\n }\n\n this._backdrop.dispose();\n\n this._focustrap.deactivate();\n\n super.dispose();\n }\n\n handleUpdate() {\n this._adjustDialog();\n } // Private\n\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n this._element.scrollTop = 0;\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOW$4);\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n relatedTarget\n });\n };\n\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n if (event.key !== ESCAPE_KEY$1) {\n return;\n }\n\n if (this._config.keyboard) {\n event.preventDefault();\n this.hide();\n return;\n }\n\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n\n return;\n }\n\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n\n _hideModal() {\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._isTransitioning = false;\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n\n this._resetAdjustments();\n\n this._scrollBar.reset();\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$4);\n });\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY; // return if the following background transition hasn't yet completed\n\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n\n this._element.focus();\n }\n /**\n * The following methods are used to handle overflowing modals\n */\n\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n const scrollbarWidth = this._scrollBar.getWidth();\n\n const isBodyOverflowing = scrollbarWidth > 0;\n\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n } // Static\n\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](relatedTarget);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n EventHandler.one(target, EVENT_SHOW$4, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n\n EventHandler.one(target, EVENT_HIDDEN$4, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n }); // avoid conflict when clicking modal toggler while another one is open\n\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$6 = 'offcanvas';\nconst DATA_KEY$3 = 'bs.offcanvas';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst ESCAPE_KEY = 'Escape';\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_SHOWING$1 = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$3}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst DefaultType$5 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n\n this._addEventListeners();\n } // Getters\n\n\n static get Default() {\n return Default$5;\n }\n\n static get DefaultType() {\n return DefaultType$5;\n }\n\n static get NAME() {\n return NAME$6;\n } // Public\n\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = true;\n\n this._backdrop.show();\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n\n this._element.classList.add(CLASS_NAME_SHOW$3);\n\n this._element.classList.remove(CLASS_NAME_SHOWING$1);\n\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n\n this._queueCallback(completeCallBack, this._element, true);\n }\n\n hide() {\n if (!this._isShown) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n this._focustrap.deactivate();\n\n this._element.blur();\n\n this._isShown = false;\n\n this._element.classList.add(CLASS_NAME_HIDING);\n\n this._backdrop.hide();\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n };\n\n this._queueCallback(completeCallback, this._element, true);\n }\n\n dispose() {\n this._backdrop.dispose();\n\n this._focustrap.deactivate();\n\n super.dispose();\n } // Private\n\n\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n\n this.hide();\n }; // 'static' option will be translated to true, and booleans will keep their value\n\n\n const isVisible = Boolean(this._config.backdrop);\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n });\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n\n if (!this._config.keyboard) {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n\n this.hide();\n });\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus();\n }\n }); // avoid conflict when clicking a toggler of an offcanvas, while another is open\n\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show();\n }\n});\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n});\nenableDismissTrigger(Offcanvas);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));\n }\n\n return true;\n } // Check if a regular expression validates the attribute.\n\n\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n};\n\nconst DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$5 = 'TemplateFactory';\nconst Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '
    '\n};\nconst DefaultType$4 = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n};\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n};\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n } // Getters\n\n\n static get Default() {\n return Default$4;\n }\n\n static get DefaultType() {\n return DefaultType$4;\n }\n\n static get NAME() {\n return NAME$5;\n } // Public\n\n\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n\n hasContent() {\n return this.getContent().length > 0;\n }\n\n changeContent(content) {\n this._checkContent(content);\n\n this._config.content = { ...this._config.content,\n ...content\n };\n return this;\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n\n const template = templateWrapper.children[0];\n\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n\n return template;\n } // Private\n\n\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n\n this._checkContent(config.content);\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n\n if (!templateElement) {\n return;\n }\n\n content = this._resolvePossibleFunction(content);\n\n if (!content) {\n templateElement.remove();\n return;\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n\n return;\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n\n templateElement.textContent = content;\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n\n _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg(this) : arg;\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n\n templateElement.textContent = element.textContent;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$4 = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\nconst EVENT_HIDE$2 = 'hide';\nconst EVENT_HIDDEN$2 = 'hidden';\nconst EVENT_SHOW$2 = 'show';\nconst EVENT_SHOWN$2 = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK$1 = 'click';\nconst EVENT_FOCUSIN$1 = 'focusin';\nconst EVENT_FOCUSOUT$1 = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 0],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '
    ' + '
    ' + '
    ' + '
    ',\n title: '',\n trigger: 'hover focus'\n};\nconst DefaultType$3 = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n};\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n\n super(element, config); // Private\n\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null; // Protected\n\n this.tip = null;\n\n this._setListeners();\n\n if (!this._config.selector) {\n this._fixTitle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$3;\n }\n\n static get DefaultType() {\n return DefaultType$3;\n }\n\n static get NAME() {\n return NAME$4;\n } // Public\n\n\n enable() {\n this._isEnabled = true;\n }\n\n disable() {\n this._isEnabled = false;\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n\n this._activeTrigger.click = !this._activeTrigger.click;\n\n if (this._isShown()) {\n this._leave();\n\n return;\n }\n\n this._enter();\n }\n\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n\n this._disposePopper();\n\n super.dispose();\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n const shadowRoot = findShadowRoot(this._element);\n\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n } // todo v6 remove this OR make it optional\n\n\n this._disposePopper();\n\n const tip = this._getTipElement();\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n\n const {\n container\n } = this._config;\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n\n this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));\n\n if (this._isHovered === false) {\n this._leave();\n }\n\n this._isHovered = false;\n };\n\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n\n hide() {\n if (!this._isShown()) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const tip = this._getTipElement();\n\n tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n\n if (!this._isHovered) {\n this._disposePopper();\n }\n\n this._element.removeAttribute('aria-describedby');\n\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));\n };\n\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n\n update() {\n if (this._popper) {\n this._popper.update();\n }\n } // Protected\n\n\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n\n return this.tip;\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml(); // todo: remove this check on v6\n\n\n if (!tip) {\n return null;\n }\n\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); // todo: on v6 the following can be achieved with CSS only\n\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n\n return tip;\n }\n\n setContent(content) {\n this._newContent = content;\n\n if (this._isShown()) {\n this._disposePopper();\n\n this.show();\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({ ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n }\n\n return this._templateFactory;\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n } // Private\n\n\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n }\n\n _createPopper(tip) {\n const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n\n _getOffset() {\n const {\n offset\n } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg.call(this._element) : arg;\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return { ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n };\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n\n context._leave();\n });\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title');\n\n if (!title) {\n return;\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n\n\n this._element.removeAttribute('title');\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n\n this._isHovered = true;\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n\n this._isHovered = false;\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n\n config = { ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n }\n\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n return config;\n }\n\n _getDelegateConfig() {\n const config = {};\n\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key];\n }\n }\n\n config.selector = false;\n config.trigger = 'manual'; // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n\n return config;\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n\n this._popper = null;\n }\n\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * jQuery\n */\n\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$3 = 'popover';\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\nconst Default$2 = { ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '
    ' + '
    ' + '

    ' + '
    ' + '
    ',\n trigger: 'click'\n};\nconst DefaultType$2 = { ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n};\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default$2;\n }\n\n static get DefaultType() {\n return DefaultType$2;\n }\n\n static get NAME() {\n return NAME$3;\n } // Overrides\n\n\n _isWithContent() {\n return this._getTitle() || this._getContent();\n } // Private\n\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n };\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * jQuery\n */\n\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_CLICK = `click${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_TARGET_LINKS = '[href]';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n};\nconst DefaultType$1 = {\n offset: '(number|null)',\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n};\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config); // this._element is the observablesContainer and config.target the menu links wrapper\n\n this._targetLinks = new Map();\n this._observableSections = new Map();\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;\n this._activeTarget = null;\n this._observer = null;\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n };\n this.refresh(); // initialize\n } // Getters\n\n\n static get Default() {\n return Default$1;\n }\n\n static get DefaultType() {\n return DefaultType$1;\n }\n\n static get NAME() {\n return NAME$2;\n } // Public\n\n\n refresh() {\n this._initializeTargetsAndObservables();\n\n this._maybeEnableSmoothScroll();\n\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section);\n }\n }\n\n dispose() {\n this._observer.disconnect();\n\n super.dispose();\n } // Private\n\n\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body; // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));\n }\n\n return config;\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return;\n } // unregister any previous listeners\n\n\n EventHandler.off(this._config.target, EVENT_CLICK);\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash);\n\n if (observableSection) {\n event.preventDefault();\n const root = this._rootElement || window;\n const height = observableSection.offsetTop - this._element.offsetTop;\n\n if (root.scrollTo) {\n root.scrollTo({\n top: height,\n behavior: 'smooth'\n });\n return;\n } // Chrome 60 doesn't support `scrollTo`\n\n\n root.scrollTop = height;\n }\n });\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver(entries => this._observerCallback(entries), options);\n } // The logic of selection\n\n\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\n\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n\n this._process(targetElement(entry));\n };\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n\n this._clearActiveClass(targetElement(entry));\n\n continue;\n }\n\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; // if we are scrolling down, pick the bigger offsetTop\n\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry); // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n\n if (!parentScrollTop) {\n return;\n }\n\n continue;\n } // if we are scrolling up, pick the smallest offsetTop\n\n\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue;\n }\n\n const observableSection = SelectorEngine.findOne(anchor.hash, this._element); // ensure that the observableSection exists & is visible\n\n if (isVisible(observableSection)) {\n this._targetLinks.set(anchor.hash, anchor);\n\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n\n this._clearActiveClass(this._config.target);\n\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE$1);\n\n this._activateParents(target);\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n return;\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both
    -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -690,8 +689,8 @@

    CSV Import - + +
    diff --git a/genindex.html b/genindex.html index 0c934d010..dde979bcd 100644 --- a/genindex.html +++ b/genindex.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -150,13 +150,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -204,13 +205,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -422,8 +421,6 @@

    Index

    A

    + -
    +
    • buildingmotif.dataclasses.model @@ -600,8 +597,6 @@

      B

    • module
    -
    • buildingmotif.dataclasses.shape_collection @@ -652,17 +647,10 @@

      B

  • - buildingmotif.ingresses.csvingress + buildingmotif.ingresses.csv
  • -
  • - buildingmotif.ingresses.naming_convention - -
  • @@ -677,13 +665,6 @@

    B

  • -
  • - buildingmotif.label_parsing - -
  • @@ -757,8 +738,6 @@

    C

  • check_dependencies() (Template method)
  • check_template_dependency_relationship() (TableConnection method) -
  • -
  • choice() (in module buildingmotif.label_parsing)
  • classname (GraphClassCardinality attribute) @@ -773,8 +752,6 @@

    C

  • close() (BuildingMOTIF method)
  • combine_graphs() (in module buildingmotif.utils) -
  • -
  • COMMON_ABBREVIATIONS() (in module buildingmotif.label_parsing)
  • compile() (Model method)
  • @@ -783,10 +760,6 @@

    C

    @@ -839,8 +812,6 @@

    D

  • delete_db_template() (TableConnection method)
  • delete_graph() (GraphConnection method) -
  • -
  • Delimiter (class in buildingmotif.label_parsing)
  • dependant_id (DepsAssociation attribute)
  • @@ -873,8 +844,6 @@

    D

  • digraph_to_rdflib() (in module buildingmotif.template_matcher)
  • dump() (RecordIngressHandler method) -
  • -
  • dump_failed_labels() (NamingConventionIngress method)
  • dumps() (RecordIngressHandler method)
  • @@ -884,14 +853,12 @@

    D

    E

    - + + -
    @@ -1639,8 +1556,8 @@

    X

    - - + +
    diff --git a/guides/csv-import.html b/guides/csv-import.html index 1f6bdf9f8..c1e65b61e 100644 --- a/guides/csv-import.html +++ b/guides/csv-import.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -624,8 +623,8 @@

    CSV Import - + +
    diff --git a/guides/ingress-bacnet-to-brick.html b/guides/ingress-bacnet-to-brick.html index 005ddade5..f6519c21a 100644 --- a/guides/ingress-bacnet-to-brick.html +++ b/guides/ingress-bacnet-to-brick.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -609,12 +608,12 @@

    BACnet Network Setup -
    #4 DONE 0.3s
    +
    -
    #7 DONE 1.3s
    +
    #7 DONE 0.5s
     
     #8 [device 3/6] RUN apt update     && apt install -y     python3     python3-pip     && rm -rf /var/lib/apt/lists/*
     
    -
    #8 0.916 
    -#8 0.916 WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
    -#8 0.916 
    -
    -
    -
    #8 1.382 Get:1 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
    -#8 1.517 Get:2 http://archive.ubuntu.com/ubuntu jammy InRelease [270 kB]
    -
    -
    -
    #8 1.795 Get:3 http://security.ubuntu.com/ubuntu jammy-security/multiverse amd64 Packages [44.0 kB]
    -#8 1.830 Get:4 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [1082 kB]
    -#8 1.896 Get:5 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [1005 kB]
    -#8 1.912 Get:6 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [1226 kB]
    -#8 1.940 Get:7 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
    -#8 2.039 Get:8 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [109 kB]
    -
    -
    -
    #8 2.138 Get:9 http://archive.ubuntu.com/ubuntu jammy/multiverse amd64 Packages [266 kB]
    -#8 2.194 Get:10 http://archive.ubuntu.com/ubuntu jammy/restricted amd64 Packages [164 kB]
    -#8 2.228 Get:11 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages [17.5 MB]
    -
    -
    -
    #8 2.820 Get:12 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages [1792 kB]
    -#8 2.857 Get:13 http://archive.ubuntu.com/ubuntu jammy-updates/multiverse amd64 Packages [49.8 kB]
    -#8 2.858 Get:14 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [1252 kB]
    -#8 2.895 Get:15 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1270 kB]
    -#8 2.930 Get:16 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [1347 kB]
    -
    -
    -
    #8 3.108 Get:17 http://archive.ubuntu.com/ubuntu jammy-backports/main amd64 Packages [50.4 kB]
    -#8 3.344 Get:18 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [28.1 kB]
    -
    -
    -
    #8 3.944 Fetched 27.7 MB in 3s (10.4 MB/s)
    -#8 3.944 Reading package lists...
    -
    -
    -
    #8 4.766 Building dependency tree...
    -#8 4.927 Reading state information...
    -#8 4.938 All packages are up to date.
    -#8 4.946 
    -#8 4.946 WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
    -#8 4.946 
    -#8 4.983 Reading package lists...
    -
    -
    -
    #8 5.808 Building dependency tree...
    -#8 5.977 Reading state information...
    -
    -
    -
    #8 6.141 The following additional packages will be installed:
    -#8 6.141   binutils binutils-common binutils-x86-64-linux-gnu build-essential bzip2
    -#8 6.141   ca-certificates cpp cpp-11 dirmngr dpkg-dev fakeroot fontconfig-config
    -#8 6.141   fonts-dejavu-core g++ g++-11 gcc gcc-11 gcc-11-base gnupg gnupg-l10n
    -#8 6.141   gnupg-utils gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm
    -#8 6.141   javascript-common libalgorithm-diff-perl libalgorithm-diff-xs-perl
    -#8 6.141   libalgorithm-merge-perl libasan6 libassuan0 libatomic1 libbinutils
    -#8 6.141   libbrotli1 libbsd0 libc-dev-bin libc-devtools libc6-dev libcc1-0
    -#8 6.141   libcrypt-dev libctf-nobfd0 libctf0 libdeflate0 libdpkg-perl libexpat1
    -#8 6.141   libexpat1-dev libfakeroot libfile-fcntllock-perl libfontconfig1 libfreetype6
    -#8 6.141   libgcc-11-dev libgd3 libgdbm-compat4 libgdbm6 libgomp1 libisl23 libitm1
    -#8 6.141   libjbig0 libjpeg-turbo8 libjpeg8 libjs-jquery libjs-sphinxdoc
    -#8 6.141   libjs-underscore libksba8 libldap-2.5-0 libldap-common
    -#8 6.141   liblocale-gettext-perl liblsan0 libmd0 libmpc3 libmpdec3 libmpfr6 libnpth0
    -#8 6.141   libnsl-dev libperl5.34 libpng16-16 libpython3-dev libpython3-stdlib
    -#8 6.141   libpython3.10 libpython3.10-dev libpython3.10-minimal libpython3.10-stdlib
    -#8 6.142   libquadmath0 libreadline8 libsasl2-2 libsasl2-modules libsasl2-modules-db
    -#8 6.142   libsqlite3-0 libstdc++-11-dev libtiff5 libtirpc-dev libtsan0 libubsan1
    -#8 6.142   libwebp7 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxpm4
    -#8 6.142   linux-libc-dev lto-disabled-list make manpages manpages-dev media-types
    -#8 6.142   netbase openssl patch perl perl-modules-5.34 pinentry-curses python3-dev
    -#8 6.142   python3-distutils python3-lib2to3 python3-minimal python3-pkg-resources
    -#8 6.142   python3-setuptools python3-wheel python3.10 python3.10-dev
    -#8 6.142   python3.10-minimal readline-common rpcsvc-proto ucf xz-utils zlib1g-dev
    -#8 6.143 Suggested packages:
    -#8 6.143   binutils-doc bzip2-doc cpp-doc gcc-11-locales dbus-user-session
    -#8 6.143   libpam-systemd pinentry-gnome3 tor debian-keyring g++-multilib
    -#8 6.143   g++-11-multilib gcc-11-doc gcc-multilib autoconf automake libtool flex bison
    -#8 6.143   gdb gcc-doc gcc-11-multilib parcimonie xloadimage scdaemon apache2
    -#8 6.143   | lighttpd | httpd glibc-doc git bzr libgd-tools gdbm-l10n
    -#8 6.143   libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal
    -#8 6.143   libsasl2-modules-ldap libsasl2-modules-otp libsasl2-modules-sql
    -#8 6.143   libstdc++-11-doc make-doc man-browser ed diffutils-doc perl-doc
    -#8 6.143   libterm-readline-gnu-perl | libterm-readline-perl-perl
    -#8 6.143   libtap-harness-archive-perl pinentry-doc python3-doc python3-tk python3-venv
    -#8 6.143   python-setuptools-doc python3.10-venv python3.10-doc binfmt-support
    -#8 6.143   readline-doc
    -
    -
    -
    #8 6.344 The following NEW packages will be installed:
    -#8 6.344   binutils binutils-common binutils-x86-64-linux-gnu build-essential bzip2
    -#8 6.344   ca-certificates cpp cpp-11 dirmngr dpkg-dev fakeroot fontconfig-config
    -#8 6.344   fonts-dejavu-core g++ g++-11 gcc gcc-11 gcc-11-base gnupg gnupg-l10n
    -#8 6.344   gnupg-utils gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm
    -#8 6.345   javascript-common libalgorithm-diff-perl libalgorithm-diff-xs-perl
    -#8 6.345   libalgorithm-merge-perl libasan6 libassuan0 libatomic1 libbinutils
    -#8 6.345   libbrotli1 libbsd0 libc-dev-bin libc-devtools libc6-dev libcc1-0
    -#8 6.345   libcrypt-dev libctf-nobfd0 libctf0 libdeflate0 libdpkg-perl libexpat1
    -#8 6.345   libexpat1-dev libfakeroot libfile-fcntllock-perl libfontconfig1 libfreetype6
    -#8 6.345   libgcc-11-dev libgd3 libgdbm-compat4 libgdbm6 libgomp1 libisl23 libitm1
    -#8 6.345   libjbig0 libjpeg-turbo8 libjpeg8 libjs-jquery libjs-sphinxdoc
    -#8 6.345   libjs-underscore libksba8 libldap-2.5-0 libldap-common
    -#8 6.345   liblocale-gettext-perl liblsan0 libmd0 libmpc3 libmpdec3 libmpfr6 libnpth0
    -#8 6.345   libnsl-dev libperl5.34 libpng16-16 libpython3-dev libpython3-stdlib
    -#8 6.345   libpython3.10 libpython3.10-dev libpython3.10-minimal libpython3.10-stdlib
    -#8 6.345   libquadmath0 libreadline8 libsasl2-2 libsasl2-modules libsasl2-modules-db
    -#8 6.345   libsqlite3-0 libstdc++-11-dev libtiff5 libtirpc-dev libtsan0 libubsan1
    -#8 6.345   libwebp7 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxpm4
    -#8 6.345   linux-libc-dev lto-disabled-list make manpages manpages-dev media-types
    -#8 6.346   netbase openssl patch perl perl-modules-5.34 pinentry-curses python3
    -#8 6.346   python3-dev python3-distutils python3-lib2to3 python3-minimal python3-pip
    -#8 6.346   python3-pkg-resources python3-setuptools python3-wheel python3.10
    -#8 6.346   python3.10-dev python3.10-minimal readline-common rpcsvc-proto ucf xz-utils
    -#8 6.346   zlib1g-dev
    -#8 6.404 0 upgraded, 131 newly installed, 0 to remove and 0 not upgraded.
    -#8 6.404 Need to get 101 MB of archives.
    -#8 6.404 After this operation, 356 MB of additional disk space will be used.
    -#8 6.404 Get:1 http://archive.ubuntu.com/ubuntu jammy/main amd64 liblocale-gettext-perl amd64 1.07-4build3 [17.1 kB]
    -#8 6.428 Get:2 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpython3.10-minimal amd64 3.10.12-1~22.04.2 [811 kB]
    -#8 6.491 Get:3 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libexpat1 amd64 2.4.7-1ubuntu0.2 [91.0 kB]
    -#8 6.493 Get:4 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3.10-minimal amd64 3.10.12-1~22.04.2 [2258 kB]
    -#8 6.520 Get:5 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3-minimal amd64 3.10.6-1~22.04 [24.3 kB]
    -
    -
    -
    #8 6.521 Get:6 http://archive.ubuntu.com/ubuntu jammy/main amd64 media-types all 7.0.0 [25.5 kB]
    -#8 6.521 Get:7 http://archive.ubuntu.com/ubuntu jammy/main amd64 libmpdec3 amd64 2.5.1-2build2 [86.8 kB]
    -#8 6.523 Get:8 http://archive.ubuntu.com/ubuntu jammy/main amd64 readline-common all 8.1.2-1 [53.5 kB]
    -#8 6.524 Get:9 http://archive.ubuntu.com/ubuntu jammy/main amd64 libreadline8 amd64 8.1.2-1 [153 kB]
    -#8 6.526 Get:10 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsqlite3-0 amd64 3.37.2-2ubuntu0.1 [641 kB]
    -#8 6.532 Get:11 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpython3.10-stdlib amd64 3.10.12-1~22.04.2 [1849 kB]
    -#8 6.551 Get:12 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3.10 amd64 3.10.12-1~22.04.2 [509 kB]
    -#8 6.556 Get:13 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpython3-stdlib amd64 3.10.6-1~22.04 [6910 B]
    -#8 6.556 Get:14 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3 amd64 3.10.6-1~22.04 [22.8 kB]
    -#8 6.557 Get:15 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 perl-modules-5.34 all 5.34.0-3ubuntu1.2 [2977 kB]
    -#8 6.586 Get:16 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgdbm6 amd64 1.23-1 [33.9 kB]
    -#8 6.587 Get:17 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgdbm-compat4 amd64 1.23-1 [6606 B]
    -#8 6.588 Get:18 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libperl5.34 amd64 5.34.0-3ubuntu1.2 [4818 kB]
    -#8 6.634 Get:19 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 perl amd64 5.34.0-3ubuntu1.2 [232 kB]
    -#8 6.637 Get:20 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 openssl amd64 3.0.2-0ubuntu1.10 [1183 kB]
    -#8 6.647 Get:21 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 ca-certificates all 20230311ubuntu0.22.04.1 [155 kB]
    -#8 6.649 Get:22 http://archive.ubuntu.com/ubuntu jammy/main amd64 libmd0 amd64 1.0.4-1build1 [23.0 kB]
    -#8 6.649 Get:23 http://archive.ubuntu.com/ubuntu jammy/main amd64 libbsd0 amd64 0.11.5-1 [44.8 kB]
    -#8 6.650 Get:24 http://archive.ubuntu.com/ubuntu jammy/main amd64 netbase all 6.3 [12.9 kB]
    -#8 6.650 Get:25 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3-pkg-resources all 59.6.0-1.2ubuntu0.22.04.1 [132 kB]
    -#8 6.652 Get:26 http://archive.ubuntu.com/ubuntu jammy/main amd64 ucf all 3.0043 [56.1 kB]
    -#8 6.652 Get:27 http://archive.ubuntu.com/ubuntu jammy/main amd64 libpng16-16 amd64 1.6.37-3build5 [191 kB]
    -#8 6.655 Get:28 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxau6 amd64 1:1.0.9-1build5 [7634 B]
    -#8 6.659 Get:29 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxdmcp6 amd64 1:1.1.3-0ubuntu5 [10.9 kB]
    -#8 6.676 Get:30 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxcb1 amd64 1.14-3ubuntu3 [49.0 kB]
    -#8 6.676 Get:31 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libx11-data all 2:1.7.5-1ubuntu0.3 [120 kB]
    -#8 6.676 Get:32 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libx11-6 amd64 2:1.7.5-1ubuntu0.3 [667 kB]
    -#8 6.681 Get:33 http://archive.ubuntu.com/ubuntu jammy/main amd64 manpages all 5.10-1ubuntu1 [1375 kB]
    -#8 6.694 Get:34 http://archive.ubuntu.com/ubuntu jammy/main amd64 xz-utils amd64 5.2.5-2ubuntu1 [84.8 kB]
    -#8 6.695 Get:35 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 binutils-common amd64 2.38-4ubuntu2.3 [222 kB]
    -#8 6.697 Get:36 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libbinutils amd64 2.38-4ubuntu2.3 [662 kB]
    -#8 6.703 Get:37 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libctf-nobfd0 amd64 2.38-4ubuntu2.3 [107 kB]
    -#8 6.705 Get:38 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libctf0 amd64 2.38-4ubuntu2.3 [103 kB]
    -#8 6.706 Get:39 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 binutils-x86-64-linux-gnu amd64 2.38-4ubuntu2.3 [2327 kB]
    -#8 6.727 Get:40 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 binutils amd64 2.38-4ubuntu2.3 [3190 B]
    -#8 6.728 Get:41 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libc-dev-bin amd64 2.35-0ubuntu3.4 [20.3 kB]
    -#8 6.729 Get:42 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 linux-libc-dev amd64 5.15.0-86.96 [1338 kB]
    -#8 6.740 Get:43 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcrypt-dev amd64 1:4.4.27-1 [112 kB]
    -
    -
    -
    #8 6.744 Get:44 http://archive.ubuntu.com/ubuntu jammy/main amd64 rpcsvc-proto amd64 1.4.2-0ubuntu6 [68.5 kB]
    -#8 6.745 Get:45 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libtirpc-dev amd64 1.3.2-2ubuntu0.1 [192 kB]
    -#8 6.747 Get:46 http://archive.ubuntu.com/ubuntu jammy/main amd64 libnsl-dev amd64 1.3.0-2build2 [71.3 kB]
    -#8 6.749 Get:47 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libc6-dev amd64 2.35-0ubuntu3.4 [2100 kB]
    -#8 6.769 Get:48 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gcc-11-base amd64 11.4.0-1ubuntu1~22.04 [20.2 kB]
    -#8 6.769 Get:49 http://archive.ubuntu.com/ubuntu jammy/main amd64 libisl23 amd64 0.24-2build1 [727 kB]
    -#8 6.777 Get:50 http://archive.ubuntu.com/ubuntu jammy/main amd64 libmpfr6 amd64 4.1.0-3build3 [1425 kB]
    -#8 6.790 Get:51 http://archive.ubuntu.com/ubuntu jammy/main amd64 libmpc3 amd64 1.2.1-2build1 [46.9 kB]
    -#8 6.791 Get:52 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 cpp-11 amd64 11.4.0-1ubuntu1~22.04 [10.0 MB]
    -#8 6.885 Get:53 http://archive.ubuntu.com/ubuntu jammy/main amd64 cpp amd64 4:11.2.0-1ubuntu1 [27.7 kB]
    -#8 6.889 Get:54 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libcc1-0 amd64 12.3.0-1ubuntu1~22.04 [48.3 kB]
    -#8 6.889 Get:55 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgomp1 amd64 12.3.0-1ubuntu1~22.04 [126 kB]
    -#8 6.890 Get:56 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libitm1 amd64 12.3.0-1ubuntu1~22.04 [30.2 kB]
    -#8 6.891 Get:57 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libatomic1 amd64 12.3.0-1ubuntu1~22.04 [10.4 kB]
    -#8 6.891 Get:58 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libasan6 amd64 11.4.0-1ubuntu1~22.04 [2282 kB]
    -#8 6.912 Get:59 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 liblsan0 amd64 12.3.0-1ubuntu1~22.04 [1069 kB]
    -#8 6.921 Get:60 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libtsan0 amd64 11.4.0-1ubuntu1~22.04 [2260 kB]
    -#8 6.941 Get:61 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libubsan1 amd64 12.3.0-1ubuntu1~22.04 [976 kB]
    -#8 6.950 Get:62 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libquadmath0 amd64 12.3.0-1ubuntu1~22.04 [154 kB]
    -#8 6.952 Get:63 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgcc-11-dev amd64 11.4.0-1ubuntu1~22.04 [2517 kB]
    -#8 6.974 Get:64 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gcc-11 amd64 11.4.0-1ubuntu1~22.04 [20.1 MB]
    -
    -
    -
    #8 7.150 Get:65 http://archive.ubuntu.com/ubuntu jammy/main amd64 gcc amd64 4:11.2.0-1ubuntu1 [5112 B]
    -#8 7.150 Get:66 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libstdc++-11-dev amd64 11.4.0-1ubuntu1~22.04 [2101 kB]
    -#8 7.169 Get:67 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 g++-11 amd64 11.4.0-1ubuntu1~22.04 [11.4 MB]
    -#8 7.270 Get:68 http://archive.ubuntu.com/ubuntu jammy/main amd64 g++ amd64 4:11.2.0-1ubuntu1 [1412 B]
    -
    -
    -
    #8 7.271 Get:69 http://archive.ubuntu.com/ubuntu jammy/main amd64 make amd64 4.3-4.1build1 [180 kB]
    -#8 7.272 Get:70 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libdpkg-perl all 1.21.1ubuntu2.2 [237 kB]
    -#8 7.274 Get:71 http://archive.ubuntu.com/ubuntu jammy/main amd64 bzip2 amd64 1.0.8-5build1 [34.8 kB]
    -#8 7.275 Get:72 http://archive.ubuntu.com/ubuntu jammy/main amd64 patch amd64 2.7.6-7build2 [109 kB]
    -#8 7.276 Get:73 http://archive.ubuntu.com/ubuntu jammy/main amd64 lto-disabled-list all 24 [12.5 kB]
    -#8 7.276 Get:74 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 dpkg-dev all 1.21.1ubuntu2.2 [922 kB]
    -#8 7.285 Get:75 http://archive.ubuntu.com/ubuntu jammy/main amd64 build-essential amd64 12.9ubuntu3 [4744 B]
    -#8 7.286 Get:76 http://archive.ubuntu.com/ubuntu jammy/main amd64 libassuan0 amd64 2.5.5-1build1 [38.2 kB]
    -#8 7.286 Get:77 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gpgconf amd64 2.2.27-3ubuntu2.1 [94.2 kB]
    -#8 7.287 Get:78 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libksba8 amd64 1.6.0-2ubuntu0.2 [119 kB]
    -#8 7.297 Get:79 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsasl2-modules-db amd64 2.1.27+dfsg2-3ubuntu1.2 [20.5 kB]
    -#8 7.298 Get:80 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsasl2-2 amd64 2.1.27+dfsg2-3ubuntu1.2 [53.8 kB]
    -#8 7.299 Get:81 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libldap-2.5-0 amd64 2.5.16+dfsg-0ubuntu0.22.04.1 [183 kB]
    -#8 7.301 Get:82 http://archive.ubuntu.com/ubuntu jammy/main amd64 libnpth0 amd64 1.6-3build2 [8664 B]
    -#8 7.301 Get:83 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 dirmngr amd64 2.2.27-3ubuntu2.1 [293 kB]
    -#8 7.308 Get:84 http://archive.ubuntu.com/ubuntu jammy/main amd64 libfakeroot amd64 1.28-1ubuntu1 [31.5 kB]
    -#8 7.309 Get:85 http://archive.ubuntu.com/ubuntu jammy/main amd64 fakeroot amd64 1.28-1ubuntu1 [60.4 kB]
    -#8 7.309 Get:86 http://archive.ubuntu.com/ubuntu jammy/main amd64 fonts-dejavu-core all 2.37-2build1 [1041 kB]
    -#8 7.319 Get:87 http://archive.ubuntu.com/ubuntu jammy/main amd64 fontconfig-config all 2.13.1-4.2ubuntu5 [29.1 kB]
    -#8 7.319 Get:88 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gnupg-l10n all 2.2.27-3ubuntu2.1 [54.4 kB]
    -#8 7.324 Get:89 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gnupg-utils amd64 2.2.27-3ubuntu2.1 [308 kB]
    -#8 7.325 Get:90 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gpg amd64 2.2.27-3ubuntu2.1 [519 kB]
    -#8 7.330 Get:91 http://archive.ubuntu.com/ubuntu jammy/main amd64 pinentry-curses amd64 1.1.1-1build2 [34.4 kB]
    -#8 7.330 Get:92 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gpg-agent amd64 2.2.27-3ubuntu2.1 [209 kB]
    -#8 7.331 Get:93 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gpg-wks-client amd64 2.2.27-3ubuntu2.1 [62.7 kB]
    -#8 7.332 Get:94 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gpg-wks-server amd64 2.2.27-3ubuntu2.1 [57.5 kB]
    -#8 7.333 Get:95 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gpgsm amd64 2.2.27-3ubuntu2.1 [197 kB]
    -#8 7.343 Get:96 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gnupg all 2.2.27-3ubuntu2.1 [315 kB]
    -#8 7.346 Get:97 http://archive.ubuntu.com/ubuntu jammy/main amd64 javascript-common all 11+nmu1 [5936 B]
    -#8 7.347 Get:98 http://archive.ubuntu.com/ubuntu jammy/main amd64 libalgorithm-diff-perl all 1.201-1 [41.8 kB]
    -#8 7.347 Get:99 http://archive.ubuntu.com/ubuntu jammy/main amd64 libalgorithm-diff-xs-perl amd64 0.04-6build3 [11.9 kB]
    -#8 7.355 Get:100 http://archive.ubuntu.com/ubuntu jammy/main amd64 libalgorithm-merge-perl all 0.08-3 [12.0 kB]
    -#8 7.355 Get:101 http://archive.ubuntu.com/ubuntu jammy/main amd64 libbrotli1 amd64 1.0.9-2build6 [315 kB]
    -
    -
    -
    #8 7.601 Get:102 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libfreetype6 amd64 2.11.1+dfsg-1ubuntu0.2 [389 kB]
    -
    -
    -
    #8 8.090 Get:103 http://archive.ubuntu.com/ubuntu jammy/main amd64 libfontconfig1 amd64 2.13.1-4.2ubuntu5 [131 kB]
    -#8 8.108 Get:104 http://archive.ubuntu.com/ubuntu jammy/main amd64 libjpeg-turbo8 amd64 2.1.2-0ubuntu1 [134 kB]
    -#8 8.128 Get:105 http://archive.ubuntu.com/ubuntu jammy/main amd64 libjpeg8 amd64 8c-2ubuntu10 [2264 B]
    -#8 8.129 Get:106 http://archive.ubuntu.com/ubuntu jammy/main amd64 libdeflate0 amd64 1.10-2 [70.9 kB]
    -#8 8.139 Get:107 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libjbig0 amd64 2.1-3.1ubuntu0.22.04.1 [29.2 kB]
    -#8 8.143 Get:108 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwebp7 amd64 1.2.2-2ubuntu0.22.04.2 [206 kB]
    -#8 8.194 Get:109 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libtiff5 amd64 4.3.0-6ubuntu0.6 [183 kB]
    -#8 8.221 Get:110 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libxpm4 amd64 1:3.5.12-1ubuntu0.22.04.2 [36.7 kB]
    -#8 8.226 Get:111 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgd3 amd64 2.3.0-2ubuntu2 [129 kB]
    -#8 8.241 Get:112 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libc-devtools amd64 2.35-0ubuntu3.4 [28.9 kB]
    -
    -
    -
    #8 8.488 Get:113 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libexpat1-dev amd64 2.4.7-1ubuntu0.2 [147 kB]
    -
    -
    -
    #8 8.859 Get:114 http://archive.ubuntu.com/ubuntu jammy/main amd64 libfile-fcntllock-perl amd64 0.22-3build7 [33.9 kB]
    -#8 8.872 Get:115 http://archive.ubuntu.com/ubuntu jammy/main amd64 libjs-jquery all 3.6.0+dfsg+~3.5.13-1 [321 kB]
    -#8 9.010 Get:116 http://archive.ubuntu.com/ubuntu jammy/main amd64 libjs-underscore all 1.13.2~dfsg-2 [118 kB]
    -#8 9.034 Get:117 http://archive.ubuntu.com/ubuntu jammy/main amd64 libjs-sphinxdoc all 4.3.2-1 [139 kB]
    -#8 9.058 Get:118 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libldap-common all 2.5.16+dfsg-0ubuntu0.22.04.1 [15.8 kB]
    -#8 9.060 Get:119 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpython3.10 amd64 3.10.12-1~22.04.2 [1949 kB]
    -
    -
    -
    #8 9.219 Get:120 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 zlib1g-dev amd64 1:1.2.11.dfsg-2ubuntu9.2 [164 kB]
    -#8 9.226 Get:121 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpython3.10-dev amd64 3.10.12-1~22.04.2 [4764 kB]
    -#8 9.358 Get:122 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpython3-dev amd64 3.10.6-1~22.04 [7166 B]
    -#8 9.358 Get:123 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsasl2-modules amd64 2.1.27+dfsg2-3ubuntu1.2 [68.8 kB]
    -
    -
    -
    #8 9.477 Get:124 http://archive.ubuntu.com/ubuntu jammy/main amd64 manpages-dev all 5.10-1ubuntu1 [2309 kB]
    -#8 9.581 Get:125 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3.10-dev amd64 3.10.12-1~22.04.2 [507 kB]
    -#8 9.587 Get:126 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3-lib2to3 all 3.10.8-1~22.04 [77.6 kB]
    -#8 9.588 Get:127 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3-distutils all 3.10.8-1~22.04 [139 kB]
    -#8 9.589 Get:128 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3-dev amd64 3.10.6-1~22.04 [26.0 kB]
    -#8 9.590 Get:129 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3-setuptools all 59.6.0-1.2ubuntu0.22.04.1 [339 kB]
    -#8 9.593 Get:130 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 python3-wheel all 0.37.1-2ubuntu0.22.04.1 [32.0 kB]
    -#8 9.593 Get:131 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 python3-pip all 22.0.2+dfsg-1ubuntu0.3 [1305 kB]
    -
    -
    -
    #8 10.29 debconf: delaying package configuration, since apt-utils is not installed
    -#8 10.32 Fetched 101 MB in 3s (31.0 MB/s)
    -#8 10.44 Selecting previously unselected package liblocale-gettext-perl.
    -#8 10.44 (Reading database ... 
    -
    -
    -
    (Reading database ... 5%
    +
    #8 0.324 
    +#8 0.324 WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
    +#8 0.324 
    +#8 0.421 Get:1 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
    +
    +
    +
    #8 0.612 Get:2 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [1131 kB]
    +#8 0.627 Get:3 http://archive.ubuntu.com/ubuntu jammy InRelease [270 kB]
    +#8 0.699 Get:4 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [1305 kB]
    +#8 0.713 Get:5 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [1009 kB]
    +#8 0.724 Get:6 http://security.ubuntu.com/ubuntu jammy-security/multiverse amd64 Packages [44.0 kB]
    +
    +
    +
    #8 1.075 Get:7 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
    +#8 1.181 Get:8 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [109 kB]
    +#8 1.285 Get:9 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages [17.5 MB]
    +
    +
    +
    #8 1.976 Get:10 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages [1792 kB]
    +#8 2.046 Get:11 http://archive.ubuntu.com/ubuntu jammy/multiverse amd64 Packages [266 kB]
    +#8 2.050 Get:12 http://archive.ubuntu.com/ubuntu jammy/restricted amd64 Packages [164 kB]
    +#8 2.057 Get:13 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [1398 kB]
    +#8 2.084 Get:14 http://archive.ubuntu.com/ubuntu jammy-updates/multiverse amd64 Packages [49.8 kB]
    +#8 2.087 Get:15 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1274 kB]
    +#8 2.129 Get:16 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [1330 kB]
    +
    +
    +
    #8 2.214 Get:17 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [32.6 kB]
    +#8 2.253 Get:18 http://archive.ubuntu.com/ubuntu jammy-backports/main amd64 Packages [78.3 kB]
    +
    +
    +
    #8 3.339 Fetched 28.0 MB in 3s (9444 kB/s)
    +#8 3.339 Reading package lists...
    +
    +
    +
    #8 4.404 Building dependency tree...
    +
    +
    +
    #8 4.626 Reading state information...
    +#8 4.643 1 package can be upgraded. Run 'apt list --upgradable' to see it.
    +#8 4.649 
    +#8 4.649 WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
    +#8 4.649 
    +#8 4.698 Reading package lists...
    +
    +
    +
    #8 5.819 Building dependency tree...
    +#8 6.036 Reading state information...
    +
    +
    +
    #8 6.230 The following additional packages will be installed:
    +#8 6.230   binutils binutils-common binutils-x86-64-linux-gnu build-essential bzip2
    +#8 6.230   ca-certificates cpp cpp-11 dirmngr dpkg-dev fakeroot fontconfig-config
    +#8 6.230   fonts-dejavu-core g++ g++-11 gcc gcc-11 gcc-11-base gnupg gnupg-l10n
    +#8 6.230   gnupg-utils gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm
    +#8 6.230   javascript-common libalgorithm-diff-perl libalgorithm-diff-xs-perl
    +#8 6.230   libalgorithm-merge-perl libasan6 libassuan0 libatomic1 libbinutils
    +#8 6.230   libbrotli1 libbsd0 libc-dev-bin libc-devtools libc6-dev libcc1-0
    +#8 6.231   libcrypt-dev libctf-nobfd0 libctf0 libdeflate0 libdpkg-perl libexpat1
    +#8 6.231   libexpat1-dev libfakeroot libfile-fcntllock-perl libfontconfig1 libfreetype6
    +#8 6.231   libgcc-11-dev libgd3 libgdbm-compat4 libgdbm6 libgomp1 libisl23 libitm1
    +#8 6.231   libjbig0 libjpeg-turbo8 libjpeg8 libjs-jquery libjs-sphinxdoc
    +#8 6.231   libjs-underscore libksba8 libldap-2.5-0 libldap-common
    +#8 6.231   liblocale-gettext-perl liblsan0 libmd0 libmpc3 libmpdec3 libmpfr6 libnpth0
    +#8 6.231   libnsl-dev libperl5.34 libpng16-16 libpython3-dev libpython3-stdlib
    +#8 6.231   libpython3.10 libpython3.10-dev libpython3.10-minimal libpython3.10-stdlib
    +#8 6.231   libquadmath0 libreadline8 libsasl2-2 libsasl2-modules libsasl2-modules-db
    +#8 6.231   libsqlite3-0 libstdc++-11-dev libtiff5 libtirpc-dev libtsan0 libubsan1
    +#8 6.231   libwebp7 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxpm4
    +#8 6.231   linux-libc-dev lto-disabled-list make manpages manpages-dev media-types
    +#8 6.232   netbase openssl patch perl perl-modules-5.34 pinentry-curses python3-dev
    +#8 6.232   python3-distutils python3-lib2to3 python3-minimal python3-pkg-resources
    +#8 6.232   python3-setuptools python3-wheel python3.10 python3.10-dev
    +#8 6.232   python3.10-minimal readline-common rpcsvc-proto ucf xz-utils zlib1g-dev
    +#8 6.233 Suggested packages:
    +#8 6.233   binutils-doc bzip2-doc cpp-doc gcc-11-locales dbus-user-session
    +#8 6.233   libpam-systemd pinentry-gnome3 tor debian-keyring g++-multilib
    +#8 6.233   g++-11-multilib gcc-11-doc gcc-multilib autoconf automake libtool flex bison
    +#8 6.233   gdb gcc-doc gcc-11-multilib parcimonie xloadimage scdaemon apache2
    +#8 6.233   | lighttpd | httpd glibc-doc git bzr libgd-tools gdbm-l10n
    +#8 6.233   libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal
    +#8 6.233   libsasl2-modules-ldap libsasl2-modules-otp libsasl2-modules-sql
    +#8 6.233   libstdc++-11-doc make-doc man-browser ed diffutils-doc perl-doc
    +#8 6.233   libterm-readline-gnu-perl | libterm-readline-perl-perl
    +#8 6.233   libtap-harness-archive-perl pinentry-doc python3-doc python3-tk python3-venv
    +#8 6.233   python-setuptools-doc python3.10-venv python3.10-doc binfmt-support
    +#8 6.233   readline-doc
    +#8 6.482 The following NEW packages will be installed:
    +#8 6.482   binutils binutils-common binutils-x86-64-linux-gnu build-essential bzip2
    +
    +
    +
    #8 6.482   ca-certificates cpp cpp-11 dirmngr dpkg-dev fakeroot fontconfig-config
    +#8 6.482   fonts-dejavu-core g++ g++-11 gcc gcc-11 gcc-11-base gnupg gnupg-l10n
    +#8 6.482   gnupg-utils gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm
    +#8 6.482   javascript-common libalgorithm-diff-perl libalgorithm-diff-xs-perl
    +#8 6.483   libalgorithm-merge-perl libasan6 libassuan0 libatomic1 libbinutils
    +#8 6.483   libbrotli1 libbsd0 libc-dev-bin libc-devtools libc6-dev libcc1-0
    +#8 6.483   libcrypt-dev libctf-nobfd0 libctf0 libdeflate0 libdpkg-perl libexpat1
    +#8 6.483   libexpat1-dev libfakeroot libfile-fcntllock-perl libfontconfig1 libfreetype6
    +#8 6.483   libgcc-11-dev libgd3 libgdbm-compat4 libgdbm6 libgomp1 libisl23 libitm1
    +#8 6.483   libjbig0 libjpeg-turbo8 libjpeg8 libjs-jquery libjs-sphinxdoc
    +#8 6.483   libjs-underscore libksba8 libldap-2.5-0 libldap-common
    +#8 6.483   liblocale-gettext-perl liblsan0 libmd0 libmpc3 libmpdec3 libmpfr6 libnpth0
    +#8 6.483   libnsl-dev libperl5.34 libpng16-16 libpython3-dev libpython3-stdlib
    +#8 6.483   libpython3.10 libpython3.10-dev libpython3.10-minimal libpython3.10-stdlib
    +#8 6.483   libquadmath0 libreadline8 libsasl2-2 libsasl2-modules libsasl2-modules-db
    +#8 6.483   libsqlite3-0 libstdc++-11-dev libtiff5 libtirpc-dev libtsan0 libubsan1
    +#8 6.483   libwebp7 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxpm4
    +#8 6.484   linux-libc-dev lto-disabled-list make manpages manpages-dev media-types
    +#8 6.484   netbase openssl patch perl perl-modules-5.34 pinentry-curses python3
    +#8 6.484   python3-dev python3-distutils python3-lib2to3 python3-minimal python3-pip
    +#8 6.484   python3-pkg-resources python3-setuptools python3-wheel python3.10
    +#8 6.484   python3.10-dev python3.10-minimal readline-common rpcsvc-proto ucf xz-utils
    +#8 6.484   zlib1g-dev
    +#8 6.751 0 upgraded, 131 newly installed, 0 to remove and 1 not upgraded.
    +#8 6.751 Need to get 101 MB of archives.
    +#8 6.751 After this operation, 356 MB of additional disk space will be used.
    +#8 6.751 Get:1 http://archive.ubuntu.com/ubuntu jammy/main amd64 liblocale-gettext-perl amd64 1.07-4build3 [17.1 kB]
    +
    +
    +
    #8 6.913 Get:2 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpython3.10-minimal amd64 3.10.12-1~22.04.2 [811 kB]
    +
    +
    +
    #8 7.331 Get:3 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libexpat1 amd64 2.4.7-1ubuntu0.2 [91.0 kB]
    +#8 7.342 Get:4 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3.10-minimal amd64 3.10.12-1~22.04.2 [2258 kB]
    +
    +
    +
    #8 7.484 Get:5 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3-minimal amd64 3.10.6-1~22.04 [24.3 kB]
    +#8 7.486 Get:6 http://archive.ubuntu.com/ubuntu jammy/main amd64 media-types all 7.0.0 [25.5 kB]
    +#8 7.486 Get:7 http://archive.ubuntu.com/ubuntu jammy/main amd64 libmpdec3 amd64 2.5.1-2build2 [86.8 kB]
    +#8 7.489 Get:8 http://archive.ubuntu.com/ubuntu jammy/main amd64 readline-common all 8.1.2-1 [53.5 kB]
    +#8 7.491 Get:9 http://archive.ubuntu.com/ubuntu jammy/main amd64 libreadline8 amd64 8.1.2-1 [153 kB]
    +#8 7.497 Get:10 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsqlite3-0 amd64 3.37.2-2ubuntu0.1 [641 kB]
    +#8 7.515 Get:11 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpython3.10-stdlib amd64 3.10.12-1~22.04.2 [1849 kB]
    +#8 7.617 Get:12 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3.10 amd64 3.10.12-1~22.04.2 [509 kB]
    +#8 7.729 Get:13 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpython3-stdlib amd64 3.10.6-1~22.04 [6910 B]
    +
    +
    +
    #8 7.731 Get:14 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3 amd64 3.10.6-1~22.04 [22.8 kB]
    +#8 7.732 Get:15 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 perl-modules-5.34 all 5.34.0-3ubuntu1.2 [2977 kB]
    +#8 7.785 Get:16 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgdbm6 amd64 1.23-1 [33.9 kB]
    +#8 7.786 Get:17 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgdbm-compat4 amd64 1.23-1 [6606 B]
    +#8 7.788 Get:18 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libperl5.34 amd64 5.34.0-3ubuntu1.2 [4818 kB]
    +#8 7.841 Get:19 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 perl amd64 5.34.0-3ubuntu1.2 [232 kB]
    +#8 7.844 Get:20 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 openssl amd64 3.0.2-0ubuntu1.12 [1182 kB]
    +#8 7.859 Get:21 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 ca-certificates all 20230311ubuntu0.22.04.1 [155 kB]
    +#8 7.862 Get:22 http://archive.ubuntu.com/ubuntu jammy/main amd64 libmd0 amd64 1.0.4-1build1 [23.0 kB]
    +#8 7.863 Get:23 http://archive.ubuntu.com/ubuntu jammy/main amd64 libbsd0 amd64 0.11.5-1 [44.8 kB]
    +#8 7.864 Get:24 http://archive.ubuntu.com/ubuntu jammy/main amd64 netbase all 6.3 [12.9 kB]
    +#8 7.864 Get:25 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3-pkg-resources all 59.6.0-1.2ubuntu0.22.04.1 [132 kB]
    +#8 7.866 Get:26 http://archive.ubuntu.com/ubuntu jammy/main amd64 ucf all 3.0043 [56.1 kB]
    +#8 7.867 Get:27 http://archive.ubuntu.com/ubuntu jammy/main amd64 libpng16-16 amd64 1.6.37-3build5 [191 kB]
    +#8 7.869 Get:28 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxau6 amd64 1:1.0.9-1build5 [7634 B]
    +#8 7.878 Get:29 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxdmcp6 amd64 1:1.1.3-0ubuntu5 [10.9 kB]
    +#8 7.895 Get:30 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxcb1 amd64 1.14-3ubuntu3 [49.0 kB]
    +#8 7.897 Get:31 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libx11-data all 2:1.7.5-1ubuntu0.3 [120 kB]
    +#8 7.899 Get:32 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libx11-6 amd64 2:1.7.5-1ubuntu0.3 [667 kB]
    +#8 7.910 Get:33 http://archive.ubuntu.com/ubuntu jammy/main amd64 manpages all 5.10-1ubuntu1 [1375 kB]
    +#8 7.927 Get:34 http://archive.ubuntu.com/ubuntu jammy/main amd64 xz-utils amd64 5.2.5-2ubuntu1 [84.8 kB]
    +#8 7.929 Get:35 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 binutils-common amd64 2.38-4ubuntu2.3 [222 kB]
    +#8 7.932 Get:36 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libbinutils amd64 2.38-4ubuntu2.3 [662 kB]
    +#8 7.942 Get:37 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libctf-nobfd0 amd64 2.38-4ubuntu2.3 [107 kB]
    +
    +
    +
    #8 7.944 Get:38 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libctf0 amd64 2.38-4ubuntu2.3 [103 kB]
    +#8 7.947 Get:39 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 binutils-x86-64-linux-gnu amd64 2.38-4ubuntu2.3 [2327 kB]
    +#8 7.972 Get:40 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 binutils amd64 2.38-4ubuntu2.3 [3190 B]
    +#8 7.972 Get:41 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libc-dev-bin amd64 2.35-0ubuntu3.4 [20.3 kB]
    +#8 7.973 Get:42 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 linux-libc-dev amd64 5.15.0-87.97 [1339 kB]
    +#8 7.988 Get:43 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcrypt-dev amd64 1:4.4.27-1 [112 kB]
    +#8 7.990 Get:44 http://archive.ubuntu.com/ubuntu jammy/main amd64 rpcsvc-proto amd64 1.4.2-0ubuntu6 [68.5 kB]
    +#8 7.991 Get:45 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libtirpc-dev amd64 1.3.2-2ubuntu0.1 [192 kB]
    +#8 7.994 Get:46 http://archive.ubuntu.com/ubuntu jammy/main amd64 libnsl-dev amd64 1.3.0-2build2 [71.3 kB]
    +#8 7.995 Get:47 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libc6-dev amd64 2.35-0ubuntu3.4 [2100 kB]
    +#8 8.018 Get:48 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gcc-11-base amd64 11.4.0-1ubuntu1~22.04 [20.2 kB]
    +#8 8.019 Get:49 http://archive.ubuntu.com/ubuntu jammy/main amd64 libisl23 amd64 0.24-2build1 [727 kB]
    +#8 8.027 Get:50 http://archive.ubuntu.com/ubuntu jammy/main amd64 libmpfr6 amd64 4.1.0-3build3 [1425 kB]
    +#8 8.044 Get:51 http://archive.ubuntu.com/ubuntu jammy/main amd64 libmpc3 amd64 1.2.1-2build1 [46.9 kB]
    +#8 8.045 Get:52 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 cpp-11 amd64 11.4.0-1ubuntu1~22.04 [10.0 MB]
    +#8 8.161 Get:53 http://archive.ubuntu.com/ubuntu jammy/main amd64 cpp amd64 4:11.2.0-1ubuntu1 [27.7 kB]
    +
    +
    +
    #8 8.165 Get:54 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libcc1-0 amd64 12.3.0-1ubuntu1~22.04 [48.3 kB]
    +#8 8.165 Get:55 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgomp1 amd64 12.3.0-1ubuntu1~22.04 [126 kB]
    +#8 8.165 Get:56 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libitm1 amd64 12.3.0-1ubuntu1~22.04 [30.2 kB]
    +#8 8.165 Get:57 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libatomic1 amd64 12.3.0-1ubuntu1~22.04 [10.4 kB]
    +#8 8.165 Get:58 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libasan6 amd64 11.4.0-1ubuntu1~22.04 [2282 kB]
    +#8 8.193 Get:59 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 liblsan0 amd64 12.3.0-1ubuntu1~22.04 [1069 kB]
    +#8 8.207 Get:60 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libtsan0 amd64 11.4.0-1ubuntu1~22.04 [2260 kB]
    +#8 8.236 Get:61 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libubsan1 amd64 12.3.0-1ubuntu1~22.04 [976 kB]
    +#8 8.248 Get:62 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libquadmath0 amd64 12.3.0-1ubuntu1~22.04 [154 kB]
    +#8 8.250 Get:63 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgcc-11-dev amd64 11.4.0-1ubuntu1~22.04 [2517 kB]
    +#8 8.278 Get:64 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gcc-11 amd64 11.4.0-1ubuntu1~22.04 [20.1 MB]
    +
    +
    +
    #8 8.509 Get:65 http://archive.ubuntu.com/ubuntu jammy/main amd64 gcc amd64 4:11.2.0-1ubuntu1 [5112 B]
    +#8 8.509 Get:66 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libstdc++-11-dev amd64 11.4.0-1ubuntu1~22.04 [2101 kB]
    +#8 8.534 Get:67 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 g++-11 amd64 11.4.0-1ubuntu1~22.04 [11.4 MB]
    +#8 8.663 Get:68 http://archive.ubuntu.com/ubuntu jammy/main amd64 g++ amd64 4:11.2.0-1ubuntu1 [1412 B]
    +#8 8.663 Get:69 http://archive.ubuntu.com/ubuntu jammy/main amd64 make amd64 4.3-4.1build1 [180 kB]
    +
    +
    +
    #8 8.666 Get:70 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libdpkg-perl all 1.21.1ubuntu2.2 [237 kB]
    +#8 8.668 Get:71 http://archive.ubuntu.com/ubuntu jammy/main amd64 bzip2 amd64 1.0.8-5build1 [34.8 kB]
    +#8 8.669 Get:72 http://archive.ubuntu.com/ubuntu jammy/main amd64 patch amd64 2.7.6-7build2 [109 kB]
    +#8 8.671 Get:73 http://archive.ubuntu.com/ubuntu jammy/main amd64 lto-disabled-list all 24 [12.5 kB]
    +#8 8.671 Get:74 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 dpkg-dev all 1.21.1ubuntu2.2 [922 kB]
    +#8 8.682 Get:75 http://archive.ubuntu.com/ubuntu jammy/main amd64 build-essential amd64 12.9ubuntu3 [4744 B]
    +#8 8.682 Get:76 http://archive.ubuntu.com/ubuntu jammy/main amd64 libassuan0 amd64 2.5.5-1build1 [38.2 kB]
    +#8 8.683 Get:77 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gpgconf amd64 2.2.27-3ubuntu2.1 [94.2 kB]
    +#8 8.685 Get:78 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libksba8 amd64 1.6.0-2ubuntu0.2 [119 kB]
    +#8 8.700 Get:79 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsasl2-modules-db amd64 2.1.27+dfsg2-3ubuntu1.2 [20.5 kB]
    +#8 8.701 Get:80 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsasl2-2 amd64 2.1.27+dfsg2-3ubuntu1.2 [53.8 kB]
    +#8 8.702 Get:81 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libldap-2.5-0 amd64 2.5.16+dfsg-0ubuntu0.22.04.1 [183 kB]
    +#8 8.705 Get:82 http://archive.ubuntu.com/ubuntu jammy/main amd64 libnpth0 amd64 1.6-3build2 [8664 B]
    +#8 8.706 Get:83 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 dirmngr amd64 2.2.27-3ubuntu2.1 [293 kB]
    +#8 8.709 Get:84 http://archive.ubuntu.com/ubuntu jammy/main amd64 libfakeroot amd64 1.28-1ubuntu1 [31.5 kB]
    +#8 8.710 Get:85 http://archive.ubuntu.com/ubuntu jammy/main amd64 fakeroot amd64 1.28-1ubuntu1 [60.4 kB]
    +#8 8.712 Get:86 http://archive.ubuntu.com/ubuntu jammy/main amd64 fonts-dejavu-core all 2.37-2build1 [1041 kB]
    +#8 8.725 Get:87 http://archive.ubuntu.com/ubuntu jammy/main amd64 fontconfig-config all 2.13.1-4.2ubuntu5 [29.1 kB]
    +#8 8.726 Get:88 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gnupg-l10n all 2.2.27-3ubuntu2.1 [54.4 kB]
    +#8 8.734 Get:89 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gnupg-utils amd64 2.2.27-3ubuntu2.1 [308 kB]
    +#8 8.739 Get:90 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gpg amd64 2.2.27-3ubuntu2.1 [519 kB]
    +#8 8.746 Get:91 http://archive.ubuntu.com/ubuntu jammy/main amd64 pinentry-curses amd64 1.1.1-1build2 [34.4 kB]
    +#8 8.747 Get:92 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gpg-agent amd64 2.2.27-3ubuntu2.1 [209 kB]
    +#8 8.749 Get:93 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gpg-wks-client amd64 2.2.27-3ubuntu2.1 [62.7 kB]
    +#8 8.750 Get:94 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gpg-wks-server amd64 2.2.27-3ubuntu2.1 [57.5 kB]
    +#8 8.752 Get:95 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gpgsm amd64 2.2.27-3ubuntu2.1 [197 kB]
    +#8 8.755 Get:96 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 gnupg all 2.2.27-3ubuntu2.1 [315 kB]
    +#8 8.758 Get:97 http://archive.ubuntu.com/ubuntu jammy/main amd64 javascript-common all 11+nmu1 [5936 B]
    +#8 8.759 Get:98 http://archive.ubuntu.com/ubuntu jammy/main amd64 libalgorithm-diff-perl all 1.201-1 [41.8 kB]
    +#8 8.768 Get:99 http://archive.ubuntu.com/ubuntu jammy/main amd64 libalgorithm-diff-xs-perl amd64 0.04-6build3 [11.9 kB]
    +#8 8.774 Get:100 http://archive.ubuntu.com/ubuntu jammy/main amd64 libalgorithm-merge-perl all 0.08-3 [12.0 kB]
    +#8 8.775 Get:101 http://archive.ubuntu.com/ubuntu jammy/main amd64 libbrotli1 amd64 1.0.9-2build6 [315 kB]
    +#8 8.785 Get:102 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libfreetype6 amd64 2.11.1+dfsg-1ubuntu0.2 [389 kB]
    +#8 8.790 Get:103 http://archive.ubuntu.com/ubuntu jammy/main amd64 libfontconfig1 amd64 2.13.1-4.2ubuntu5 [131 kB]
    +#8 8.793 Get:104 http://archive.ubuntu.com/ubuntu jammy/main amd64 libjpeg-turbo8 amd64 2.1.2-0ubuntu1 [134 kB]
    +#8 8.795 Get:105 http://archive.ubuntu.com/ubuntu jammy/main amd64 libjpeg8 amd64 8c-2ubuntu10 [2264 B]
    +#8 8.795 Get:106 http://archive.ubuntu.com/ubuntu jammy/main amd64 libdeflate0 amd64 1.10-2 [70.9 kB]
    +#8 8.796 Get:107 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libjbig0 amd64 2.1-3.1ubuntu0.22.04.1 [29.2 kB]
    +#8 8.797 Get:108 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwebp7 amd64 1.2.2-2ubuntu0.22.04.2 [206 kB]
    +#8 8.802 Get:109 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libtiff5 amd64 4.3.0-6ubuntu0.6 [183 kB]
    +#8 8.804 Get:110 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libxpm4 amd64 1:3.5.12-1ubuntu0.22.04.2 [36.7 kB]
    +#8 8.805 Get:111 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgd3 amd64 2.3.0-2ubuntu2 [129 kB]
    +#8 8.819 Get:112 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libc-devtools amd64 2.35-0ubuntu3.4 [28.9 kB]
    +#8 8.869 Get:113 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libexpat1-dev amd64 2.4.7-1ubuntu0.2 [147 kB]
    +
    +
    +
    #8 8.939 Get:114 http://archive.ubuntu.com/ubuntu jammy/main amd64 libfile-fcntllock-perl amd64 0.22-3build7 [33.9 kB]
    +#8 8.941 Get:115 http://archive.ubuntu.com/ubuntu jammy/main amd64 libjs-jquery all 3.6.0+dfsg+~3.5.13-1 [321 kB]
    +#8 8.968 Get:116 http://archive.ubuntu.com/ubuntu jammy/main amd64 libjs-underscore all 1.13.2~dfsg-2 [118 kB]
    +#8 8.973 Get:117 http://archive.ubuntu.com/ubuntu jammy/main amd64 libjs-sphinxdoc all 4.3.2-1 [139 kB]
    +#8 8.977 Get:118 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libldap-common all 2.5.16+dfsg-0ubuntu0.22.04.1 [15.8 kB]
    +#8 8.978 Get:119 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpython3.10 amd64 3.10.12-1~22.04.2 [1949 kB]
    +#8 9.010 Get:120 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 zlib1g-dev amd64 1:1.2.11.dfsg-2ubuntu9.2 [164 kB]
    +#8 9.013 Get:121 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpython3.10-dev amd64 3.10.12-1~22.04.2 [4764 kB]
    +#8 9.067 Get:122 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpython3-dev amd64 3.10.6-1~22.04 [7166 B]
    +#8 9.067 Get:123 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsasl2-modules amd64 2.1.27+dfsg2-3ubuntu1.2 [68.8 kB]
    +#8 9.069 Get:124 http://archive.ubuntu.com/ubuntu jammy/main amd64 manpages-dev all 5.10-1ubuntu1 [2309 kB]
    +#8 9.096 Get:125 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3.10-dev amd64 3.10.12-1~22.04.2 [507 kB]
    +
    +
    +
    #8 9.103 Get:126 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3-lib2to3 all 3.10.8-1~22.04 [77.6 kB]
    +#8 9.104 Get:127 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3-distutils all 3.10.8-1~22.04 [139 kB]
    +#8 9.106 Get:128 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3-dev amd64 3.10.6-1~22.04 [26.0 kB]
    +#8 9.107 Get:129 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3-setuptools all 59.6.0-1.2ubuntu0.22.04.1 [339 kB]
    +#8 9.111 Get:130 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 python3-wheel all 0.37.1-2ubuntu0.22.04.1 [32.0 kB]
    +#8 9.114 Get:131 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 python3-pip all 22.0.2+dfsg-1ubuntu0.3 [1305 kB]
    +#8 9.336 debconf: delaying package configuration, since apt-utils is not installed
    +#8 9.370 Fetched 101 MB in 3s (38.3 MB/s)
    +
    +
    +
    -
    (Reading database ... 95%
    +(Reading database ... 95%
     (Reading database ... 100%
     (Reading database ... 4395 files and directories currently installed.)
    -#8 10.77 Preparing to unpack .../liblocale-gettext-perl_1.07-4build3_amd64.deb ...
    -#8 10.77 Unpacking liblocale-gettext-perl (1.07-4build3) ...
    -#8 10.80 Selecting previously unselected package libpython3.10-minimal:amd64.
    -#8 10.80 Preparing to unpack .../libpython3.10-minimal_3.10.12-1~22.04.2_amd64.deb ...
    -#8 10.80 Unpacking libpython3.10-minimal:amd64 (3.10.12-1~22.04.2) ...
    -#8 10.86 Selecting previously unselected package libexpat1:amd64.
    -#8 10.86 Preparing to unpack .../libexpat1_2.4.7-1ubuntu0.2_amd64.deb ...
    -#8 10.86 Unpacking libexpat1:amd64 (2.4.7-1ubuntu0.2) ...
    -#8 10.88 Selecting previously unselected package python3.10-minimal.
    -#8 10.88 Preparing to unpack .../python3.10-minimal_3.10.12-1~22.04.2_amd64.deb ...
    -#8 10.95 Unpacking python3.10-minimal (3.10.12-1~22.04.2) ...
    -#8 11.00 Setting up libpython3.10-minimal:amd64 (3.10.12-1~22.04.2) ...
    -
    -
    -
    #8 11.00 Setting up libexpat1:amd64 (2.4.7-1ubuntu0.2) ...
    -#8 11.01 Setting up python3.10-minimal (3.10.12-1~22.04.2) ...
    -
    -
    -
    #8 11.78 Selecting previously unselected package python3-minimal.
    -#8 11.78 (Reading database ... 
    +#8 9.430 Preparing to unpack .../liblocale-gettext-perl_1.07-4build3_amd64.deb ...
    +#8 9.431 Unpacking liblocale-gettext-perl (1.07-4build3) ...
    +#8 9.458 Selecting previously unselected package libpython3.10-minimal:amd64.
    +#8 9.459 Preparing to unpack .../libpython3.10-minimal_3.10.12-1~22.04.2_amd64.deb ...
    +#8 9.460 Unpacking libpython3.10-minimal:amd64 (3.10.12-1~22.04.2) ...
    +#8 9.543 Selecting previously unselected package libexpat1:amd64.
    +#8 9.544 Preparing to unpack .../libexpat1_2.4.7-1ubuntu0.2_amd64.deb ...
    +#8 9.548 Unpacking libexpat1:amd64 (2.4.7-1ubuntu0.2) ...
    +#8 9.570 Selecting previously unselected package python3.10-minimal.
    +#8 9.571 Preparing to unpack .../python3.10-minimal_3.10.12-1~22.04.2_amd64.deb ...
    +#8 9.577 Unpacking python3.10-minimal (3.10.12-1~22.04.2) ...
    +#8 9.637 Setting up libpython3.10-minimal:amd64 (3.10.12-1~22.04.2) ...
    +
    +
    +
    #8 9.645 Setting up libexpat1:amd64 (2.4.7-1ubuntu0.2) ...
    +#8 9.649 Setting up python3.10-minimal (3.10.12-1~22.04.2) ...
    +
    +
    +
    -
    #8 11.98 Preparing to unpack .../7-python3.10_3.10.12-1~22.04.2_amd64.deb ...
    -#8 11.98 Unpacking python3.10 (3.10.12-1~22.04.2) ...
    -#8 12.00 Selecting previously unselected package libpython3-stdlib:amd64.
    -#8 12.00 Preparing to unpack .../8-libpython3-stdlib_3.10.6-1~22.04_amd64.deb ...
    -#8 12.00 Unpacking libpython3-stdlib:amd64 (3.10.6-1~22.04) ...
    -#8 12.02 Setting up python3-minimal (3.10.6-1~22.04) ...
    -#8 12.20 Selecting previously unselected package python3.
    -#8 12.20 (Reading database ... 
    +#8 10.47 Preparing to unpack .../0-python3-minimal_3.10.6-1~22.04_amd64.deb ...
    +#8 10.47 Unpacking python3-minimal (3.10.6-1~22.04) ...
    +#8 10.49 Selecting previously unselected package media-types.
    +#8 10.50 Preparing to unpack .../1-media-types_7.0.0_all.deb ...
    +#8 10.50 Unpacking media-types (7.0.0) ...
    +#8 10.52 Selecting previously unselected package libmpdec3:amd64.
    +#8 10.52 Preparing to unpack .../2-libmpdec3_2.5.1-2build2_amd64.deb ...
    +#8 10.52 Unpacking libmpdec3:amd64 (2.5.1-2build2) ...
    +#8 10.54 Selecting previously unselected package readline-common.
    +#8 10.54 Preparing to unpack .../3-readline-common_8.1.2-1_all.deb ...
    +#8 10.54 Unpacking readline-common (8.1.2-1) ...
    +#8 10.56 Selecting previously unselected package libreadline8:amd64.
    +#8 10.57 Preparing to unpack .../4-libreadline8_8.1.2-1_amd64.deb ...
    +#8 10.57 Unpacking libreadline8:amd64 (8.1.2-1) ...
    +#8 10.59 Selecting previously unselected package libsqlite3-0:amd64.
    +
    +
    +
    #8 10.60 Preparing to unpack .../5-libsqlite3-0_3.37.2-2ubuntu0.1_amd64.deb ...
    +#8 10.60 Unpacking libsqlite3-0:amd64 (3.37.2-2ubuntu0.1) ...
    +#8 10.64 Selecting previously unselected package libpython3.10-stdlib:amd64.
    +#8 10.64 Preparing to unpack .../6-libpython3.10-stdlib_3.10.12-1~22.04.2_amd64.deb ...
    +#8 10.64 Unpacking libpython3.10-stdlib:amd64 (3.10.12-1~22.04.2) ...
    +#8 10.76 Selecting previously unselected package python3.10.
    +#8 10.76 Preparing to unpack .../7-python3.10_3.10.12-1~22.04.2_amd64.deb ...
    +#8 10.76 Unpacking python3.10 (3.10.12-1~22.04.2) ...
    +#8 10.78 Selecting previously unselected package libpython3-stdlib:amd64.
    +#8 10.78 Preparing to unpack .../8-libpython3-stdlib_3.10.6-1~22.04_amd64.deb ...
    +#8 10.79 Unpacking libpython3-stdlib:amd64 (3.10.6-1~22.04) ...
    +#8 10.81 Setting up python3-minimal (3.10.6-1~22.04) ...
    +
    +
    +
    -
    #8 12.24 Preparing to unpack .../001-perl-modules-5.34_5.34.0-3ubuntu1.2_all.deb ...
    -#8 12.24 Unpacking perl-modules-5.34 (5.34.0-3ubuntu1.2) ...
    -#8 12.44 Selecting previously unselected package libgdbm6:amd64.
    -#8 12.45 Preparing to unpack .../002-libgdbm6_1.23-1_amd64.deb ...
    -#8 12.45 Unpacking libgdbm6:amd64 (1.23-1) ...
    -#8 12.46 Selecting previously unselected package libgdbm-compat4:amd64.
    -#8 12.46 Preparing to unpack .../003-libgdbm-compat4_1.23-1_amd64.deb ...
    -#8 12.46 Unpacking libgdbm-compat4:amd64 (1.23-1) ...
    -#8 12.48 Selecting previously unselected package libperl5.34:amd64.
    -#8 12.48 Preparing to unpack .../004-libperl5.34_5.34.0-3ubuntu1.2_amd64.deb ...
    -#8 12.48 Unpacking libperl5.34:amd64 (5.34.0-3ubuntu1.2) ...
    -
    -
    -
    #8 12.64 Selecting previously unselected package perl.
    -#8 12.64 Preparing to unpack .../005-perl_5.34.0-3ubuntu1.2_amd64.deb ...
    -#8 12.65 Unpacking perl (5.34.0-3ubuntu1.2) ...
    -#8 12.68 Selecting previously unselected package openssl.
    -#8 12.68 Preparing to unpack .../006-openssl_3.0.2-0ubuntu1.10_amd64.deb ...
    -#8 12.68 Unpacking openssl (3.0.2-0ubuntu1.10) ...
    -#8 12.71 Selecting previously unselected package ca-certificates.
    -#8 12.71 Preparing to unpack .../007-ca-certificates_20230311ubuntu0.22.04.1_all.deb ...
    -#8 12.71 Unpacking ca-certificates (20230311ubuntu0.22.04.1) ...
    -#8 12.75 Selecting previously unselected package libmd0:amd64.
    -
    -
    -
    #8 12.75 Preparing to unpack .../008-libmd0_1.0.4-1build1_amd64.deb ...
    -#8 12.75 Unpacking libmd0:amd64 (1.0.4-1build1) ...
    -#8 12.77 Selecting previously unselected package libbsd0:amd64.
    -#8 12.77 Preparing to unpack .../009-libbsd0_0.11.5-1_amd64.deb ...
    -#8 12.77 Unpacking libbsd0:amd64 (0.11.5-1) ...
    -#8 12.79 Selecting previously unselected package netbase.
    -#8 12.79 Preparing to unpack .../010-netbase_6.3_all.deb ...
    -#8 12.79 Unpacking netbase (6.3) ...
    -#8 12.80 Selecting previously unselected package python3-pkg-resources.
    -#8 12.81 Preparing to unpack .../011-python3-pkg-resources_59.6.0-1.2ubuntu0.22.04.1_all.deb ...
    -#8 12.81 Unpacking python3-pkg-resources (59.6.0-1.2ubuntu0.22.04.1) ...
    -#8 12.83 Selecting previously unselected package ucf.
    -#8 12.83 Preparing to unpack .../012-ucf_3.0043_all.deb ...
    -#8 12.83 Moving old data out of the way
    -#8 12.85 Unpacking ucf (3.0043) ...
    -#8 12.87 Selecting previously unselected package libpng16-16:amd64.
    -#8 12.87 Preparing to unpack .../013-libpng16-16_1.6.37-3build5_amd64.deb ...
    -#8 12.87 Unpacking libpng16-16:amd64 (1.6.37-3build5) ...
    -#8 12.89 Selecting previously unselected package libxau6:amd64.
    -#8 12.89 Preparing to unpack .../014-libxau6_1%3a1.0.9-1build5_amd64.deb ...
    -#8 12.89 Unpacking libxau6:amd64 (1:1.0.9-1build5) ...
    -#8 12.90 Selecting previously unselected package libxdmcp6:amd64.
    -#8 12.91 Preparing to unpack .../015-libxdmcp6_1%3a1.1.3-0ubuntu5_amd64.deb ...
    -#8 12.91 Unpacking libxdmcp6:amd64 (1:1.1.3-0ubuntu5) ...
    -#8 12.92 Selecting previously unselected package libxcb1:amd64.
    -#8 12.92 Preparing to unpack .../016-libxcb1_1.14-3ubuntu3_amd64.deb ...
    -#8 12.92 Unpacking libxcb1:amd64 (1.14-3ubuntu3) ...
    -#8 12.94 Selecting previously unselected package libx11-data.
    -#8 12.94 Preparing to unpack .../017-libx11-data_2%3a1.7.5-1ubuntu0.3_all.deb ...
    -#8 12.94 Unpacking libx11-data (2:1.7.5-1ubuntu0.3) ...
    -#8 12.98 Selecting previously unselected package libx11-6:amd64.
    -
    -
    -
    #8 12.99 Preparing to unpack .../018-libx11-6_2%3a1.7.5-1ubuntu0.3_amd64.deb ...
    -#8 12.99 Unpacking libx11-6:amd64 (2:1.7.5-1ubuntu0.3) ...
    -#8 13.01 Selecting previously unselected package manpages.
    -#8 13.01 Preparing to unpack .../019-manpages_5.10-1ubuntu1_all.deb ...
    -#8 13.01 Unpacking manpages (5.10-1ubuntu1) ...
    -#8 13.12 Selecting previously unselected package xz-utils.
    -#8 13.12 Preparing to unpack .../020-xz-utils_5.2.5-2ubuntu1_amd64.deb ...
    -#8 13.12 Unpacking xz-utils (5.2.5-2ubuntu1) ...
    -#8 13.14 Selecting previously unselected package binutils-common:amd64.
    -#8 13.14 Preparing to unpack .../021-binutils-common_2.38-4ubuntu2.3_amd64.deb ...
    -#8 13.14 Unpacking binutils-common:amd64 (2.38-4ubuntu2.3) ...
    -#8 13.15 Selecting previously unselected package libbinutils:amd64.
    -#8 13.15 Preparing to unpack .../022-libbinutils_2.38-4ubuntu2.3_amd64.deb ...
    -#8 13.16 Unpacking libbinutils:amd64 (2.38-4ubuntu2.3) ...
    -#8 13.18 Selecting previously unselected package libctf-nobfd0:amd64.
    -#8 13.18 Preparing to unpack .../023-libctf-nobfd0_2.38-4ubuntu2.3_amd64.deb ...
    -#8 13.18 Unpacking libctf-nobfd0:amd64 (2.38-4ubuntu2.3) ...
    -#8 13.20 Selecting previously unselected package libctf0:amd64.
    -#8 13.20 Preparing to unpack .../024-libctf0_2.38-4ubuntu2.3_amd64.deb ...
    -#8 13.20 Unpacking libctf0:amd64 (2.38-4ubuntu2.3) ...
    -#8 13.22 Selecting previously unselected package binutils-x86-64-linux-gnu.
    -#8 13.22 Preparing to unpack .../025-binutils-x86-64-linux-gnu_2.38-4ubuntu2.3_amd64.deb ...
    -#8 13.22 Unpacking binutils-x86-64-linux-gnu (2.38-4ubuntu2.3) ...
    -
    -
    -
    #8 13.29 Selecting previously unselected package binutils.
    -#8 13.29 Preparing to unpack .../026-binutils_2.38-4ubuntu2.3_amd64.deb ...
    -#8 13.29 Unpacking binutils (2.38-4ubuntu2.3) ...
    -#8 13.31 Selecting previously unselected package libc-dev-bin.
    -#8 13.31 Preparing to unpack .../027-libc-dev-bin_2.35-0ubuntu3.4_amd64.deb ...
    -#8 13.31 Unpacking libc-dev-bin (2.35-0ubuntu3.4) ...
    -#8 13.33 Selecting previously unselected package linux-libc-dev:amd64.
    -#8 13.33 Preparing to unpack .../028-linux-libc-dev_5.15.0-86.96_amd64.deb ...
    -#8 13.33 Unpacking linux-libc-dev:amd64 (5.15.0-86.96) ...
    -#8 13.46 Selecting previously unselected package libcrypt-dev:amd64.
    -
    -
    -
    #8 13.46 Preparing to unpack .../029-libcrypt-dev_1%3a4.4.27-1_amd64.deb ...
    -#8 13.46 Unpacking libcrypt-dev:amd64 (1:4.4.27-1) ...
    -#8 13.49 Selecting previously unselected package rpcsvc-proto.
    -#8 13.49 Preparing to unpack .../030-rpcsvc-proto_1.4.2-0ubuntu6_amd64.deb ...
    -#8 13.49 Unpacking rpcsvc-proto (1.4.2-0ubuntu6) ...
    -#8 13.51 Selecting previously unselected package libtirpc-dev:amd64.
    -#8 13.51 Preparing to unpack .../031-libtirpc-dev_1.3.2-2ubuntu0.1_amd64.deb ...
    -#8 13.51 Unpacking libtirpc-dev:amd64 (1.3.2-2ubuntu0.1) ...
    -#8 13.53 Selecting previously unselected package libnsl-dev:amd64.
    -#8 13.53 Preparing to unpack .../032-libnsl-dev_1.3.0-2build2_amd64.deb ...
    -#8 13.54 Unpacking libnsl-dev:amd64 (1.3.0-2build2) ...
    -#8 13.55 Selecting previously unselected package libc6-dev:amd64.
    -#8 13.55 Preparing to unpack .../033-libc6-dev_2.35-0ubuntu3.4_amd64.deb ...
    -#8 13.55 Unpacking libc6-dev:amd64 (2.35-0ubuntu3.4) ...
    -#8 13.66 Selecting previously unselected package gcc-11-base:amd64.
    -#8 13.67 Preparing to unpack .../034-gcc-11-base_11.4.0-1ubuntu1~22.04_amd64.deb ...
    -#8 13.67 Unpacking gcc-11-base:amd64 (11.4.0-1ubuntu1~22.04) ...
    -#8 13.68 Selecting previously unselected package libisl23:amd64.
    -#8 13.68 Preparing to unpack .../035-libisl23_0.24-2build1_amd64.deb ...
    -#8 13.69 Unpacking libisl23:amd64 (0.24-2build1) ...
    -#8 13.71 Selecting previously unselected package libmpfr6:amd64.
    -
    -
    -
    #8 13.72 Preparing to unpack .../036-libmpfr6_4.1.0-3build3_amd64.deb ...
    -#8 13.72 Unpacking libmpfr6:amd64 (4.1.0-3build3) ...
    -#8 13.75 Selecting previously unselected package libmpc3:amd64.
    -#8 13.75 Preparing to unpack .../037-libmpc3_1.2.1-2build1_amd64.deb ...
    -#8 13.75 Unpacking libmpc3:amd64 (1.2.1-2build1) ...
    -#8 13.77 Selecting previously unselected package cpp-11.
    -#8 13.77 Preparing to unpack .../038-cpp-11_11.4.0-1ubuntu1~22.04_amd64.deb ...
    -#8 13.77 Unpacking cpp-11 (11.4.0-1ubuntu1~22.04) ...
    -#8 13.91 Selecting previously unselected package cpp.
    -#8 13.91 Preparing to unpack .../039-cpp_4%3a11.2.0-1ubuntu1_amd64.deb ...
    -#8 13.91 Unpacking cpp (4:11.2.0-1ubuntu1) ...
    -#8 13.93 Selecting previously unselected package libcc1-0:amd64.
    -#8 13.93 Preparing to unpack .../040-libcc1-0_12.3.0-1ubuntu1~22.04_amd64.deb ...
    -#8 13.93 Unpacking libcc1-0:amd64 (12.3.0-1ubuntu1~22.04) ...
    -#8 13.95 Selecting previously unselected package libgomp1:amd64.
    -#8 13.95 Preparing to unpack .../041-libgomp1_12.3.0-1ubuntu1~22.04_amd64.deb ...
    -#8 13.95 Unpacking libgomp1:amd64 (12.3.0-1ubuntu1~22.04) ...
    -#8 13.97 Selecting previously unselected package libitm1:amd64.
    -#8 13.97 Preparing to unpack .../042-libitm1_12.3.0-1ubuntu1~22.04_amd64.deb ...
    -
    -
    -
    #8 13.97 Unpacking libitm1:amd64 (12.3.0-1ubuntu1~22.04) ...
    -#8 13.98 Selecting previously unselected package libatomic1:amd64.
    -#8 13.98 Preparing to unpack .../043-libatomic1_12.3.0-1ubuntu1~22.04_amd64.deb ...
    -#8 13.99 Unpacking libatomic1:amd64 (12.3.0-1ubuntu1~22.04) ...
    -#8 14.00 Selecting previously unselected package libasan6:amd64.
    -#8 14.00 Preparing to unpack .../044-libasan6_11.4.0-1ubuntu1~22.04_amd64.deb ...
    -#8 14.00 Unpacking libasan6:amd64 (11.4.0-1ubuntu1~22.04) ...
    -#8 14.05 Selecting previously unselected package liblsan0:amd64.
    -#8 14.05 Preparing to unpack .../045-liblsan0_12.3.0-1ubuntu1~22.04_amd64.deb ...
    -#8 14.05 Unpacking liblsan0:amd64 (12.3.0-1ubuntu1~22.04) ...
    -#8 14.08 Selecting previously unselected package libtsan0:amd64.
    -#8 14.09 Preparing to unpack .../046-libtsan0_11.4.0-1ubuntu1~22.04_amd64.deb ...
    -#8 14.09 Unpacking libtsan0:amd64 (11.4.0-1ubuntu1~22.04) ...
    -#8 14.13 Selecting previously unselected package libubsan1:amd64.
    -#8 14.13 Preparing to unpack .../047-libubsan1_12.3.0-1ubuntu1~22.04_amd64.deb ...
    -#8 14.13 Unpacking libubsan1:amd64 (12.3.0-1ubuntu1~22.04) ...
    -#8 14.17 Selecting previously unselected package libquadmath0:amd64.
    -#8 14.17 Preparing to unpack .../048-libquadmath0_12.3.0-1ubuntu1~22.04_amd64.deb ...
    -#8 14.17 Unpacking libquadmath0:amd64 (12.3.0-1ubuntu1~22.04) ...
    -#8 14.19 Selecting previously unselected package libgcc-11-dev:amd64.
    -#8 14.19 Preparing to unpack .../049-libgcc-11-dev_11.4.0-1ubuntu1~22.04_amd64.deb ...
    -
    -
    -
    #8 14.19 Unpacking libgcc-11-dev:amd64 (11.4.0-1ubuntu1~22.04) ...
    -#8 14.26 Selecting previously unselected package gcc-11.
    -#8 14.26 Preparing to unpack .../050-gcc-11_11.4.0-1ubuntu1~22.04_amd64.deb ...
    -#8 14.27 Unpacking gcc-11 (11.4.0-1ubuntu1~22.04) ...
    -
    -
    -
    #8 14.51 Selecting previously unselected package gcc.
    -#8 14.51 Preparing to unpack .../051-gcc_4%3a11.2.0-1ubuntu1_amd64.deb ...
    -#8 14.52 Unpacking gcc (4:11.2.0-1ubuntu1) ...
    -#8 14.53 Selecting previously unselected package libstdc++-11-dev:amd64.
    -#8 14.53 Preparing to unpack .../052-libstdc++-11-dev_11.4.0-1ubuntu1~22.04_amd64.deb ...
    -#8 14.53 Unpacking libstdc++-11-dev:amd64 (11.4.0-1ubuntu1~22.04) ...
    -#8 14.69 Selecting previously unselected package g++-11.
    -#8 14.69 Preparing to unpack .../053-g++-11_11.4.0-1ubuntu1~22.04_amd64.deb ...
    -#8 14.69 Unpacking g++-11 (11.4.0-1ubuntu1~22.04) ...
    -
    -
    -
    #8 14.85 Selecting previously unselected package g++.
    -#8 14.85 Preparing to unpack .../054-g++_4%3a11.2.0-1ubuntu1_amd64.deb ...
    -#8 14.85 Unpacking g++ (4:11.2.0-1ubuntu1) ...
    -#8 14.87 Selecting previously unselected package make.
    -#8 14.87 Preparing to unpack .../055-make_4.3-4.1build1_amd64.deb ...
    -#8 14.87 Unpacking make (4.3-4.1build1) ...
    -#8 14.89 Selecting previously unselected package libdpkg-perl.
    -#8 14.89 Preparing to unpack .../056-libdpkg-perl_1.21.1ubuntu2.2_all.deb ...
    -#8 14.89 Unpacking libdpkg-perl (1.21.1ubuntu2.2) ...
    -#8 14.91 Selecting previously unselected package bzip2.
    -#8 14.92 Preparing to unpack .../057-bzip2_1.0.8-5build1_amd64.deb ...
    -#8 14.92 Unpacking bzip2 (1.0.8-5build1) ...
    -#8 14.93 Selecting previously unselected package patch.
    -#8 14.93 Preparing to unpack .../058-patch_2.7.6-7build2_amd64.deb ...
    -#8 14.94 Unpacking patch (2.7.6-7build2) ...
    -#8 14.95 Selecting previously unselected package lto-disabled-list.
    -#8 14.95 Preparing to unpack .../059-lto-disabled-list_24_all.deb ...
    +#8 11.04 Preparing to unpack .../000-python3_3.10.6-1~22.04_amd64.deb ...
    +#8 11.04 Unpacking python3 (3.10.6-1~22.04) ...
    +#8 11.06 Selecting previously unselected package perl-modules-5.34.
    +#8 11.06 Preparing to unpack .../001-perl-modules-5.34_5.34.0-3ubuntu1.2_all.deb ...
    +#8 11.07 Unpacking perl-modules-5.34 (5.34.0-3ubuntu1.2) ...
    +
    +
    +
    #8 11.41 Selecting previously unselected package libgdbm6:amd64.
    +#8 11.41 Preparing to unpack .../002-libgdbm6_1.23-1_amd64.deb ...
    +#8 11.41 Unpacking libgdbm6:amd64 (1.23-1) ...
    +#8 11.44 Selecting previously unselected package libgdbm-compat4:amd64.
    +#8 11.44 Preparing to unpack .../003-libgdbm-compat4_1.23-1_amd64.deb ...
    +#8 11.45 Unpacking libgdbm-compat4:amd64 (1.23-1) ...
    +#8 11.47 Selecting previously unselected package libperl5.34:amd64.
    +#8 11.47 Preparing to unpack .../004-libperl5.34_5.34.0-3ubuntu1.2_amd64.deb ...
    +#8 11.47 Unpacking libperl5.34:amd64 (5.34.0-3ubuntu1.2) ...
    +
    +
    +
    #8 11.72 Selecting previously unselected package perl.
    +#8 11.72 Preparing to unpack .../005-perl_5.34.0-3ubuntu1.2_amd64.deb ...
    +#8 11.73 Unpacking perl (5.34.0-3ubuntu1.2) ...
    +#8 11.76 Selecting previously unselected package openssl.
    +#8 11.76 Preparing to unpack .../006-openssl_3.0.2-0ubuntu1.12_amd64.deb ...
    +#8 11.77 Unpacking openssl (3.0.2-0ubuntu1.12) ...
    +#8 11.81 Selecting previously unselected package ca-certificates.
    +#8 11.81 Preparing to unpack .../007-ca-certificates_20230311ubuntu0.22.04.1_all.deb ...
    +#8 11.81 Unpacking ca-certificates (20230311ubuntu0.22.04.1) ...
    +#8 11.86 Selecting previously unselected package libmd0:amd64.
    +
    +
    +
    #8 11.86 Preparing to unpack .../008-libmd0_1.0.4-1build1_amd64.deb ...
    +#8 11.86 Unpacking libmd0:amd64 (1.0.4-1build1) ...
    +#8 11.88 Selecting previously unselected package libbsd0:amd64.
    +#8 11.89 Preparing to unpack .../009-libbsd0_0.11.5-1_amd64.deb ...
    +#8 11.89 Unpacking libbsd0:amd64 (0.11.5-1) ...
    +#8 11.91 Selecting previously unselected package netbase.
    +#8 11.91 Preparing to unpack .../010-netbase_6.3_all.deb ...
    +#8 11.91 Unpacking netbase (6.3) ...
    +#8 11.93 Selecting previously unselected package python3-pkg-resources.
    +#8 11.93 Preparing to unpack .../011-python3-pkg-resources_59.6.0-1.2ubuntu0.22.04.1_all.deb ...
    +#8 11.93 Unpacking python3-pkg-resources (59.6.0-1.2ubuntu0.22.04.1) ...
    +#8 11.96 Selecting previously unselected package ucf.
    +#8 11.97 Preparing to unpack .../012-ucf_3.0043_all.deb ...
    +#8 11.97 Moving old data out of the way
    +#8 11.97 Unpacking ucf (3.0043) ...
    +#8 12.00 Selecting previously unselected package libpng16-16:amd64.
    +#8 12.00 Preparing to unpack .../013-libpng16-16_1.6.37-3build5_amd64.deb ...
    +#8 12.00 Unpacking libpng16-16:amd64 (1.6.37-3build5) ...
    +#8 12.02 Selecting previously unselected package libxau6:amd64.
    +#8 12.02 Preparing to unpack .../014-libxau6_1%3a1.0.9-1build5_amd64.deb ...
    +#8 12.02 Unpacking libxau6:amd64 (1:1.0.9-1build5) ...
    +#8 12.04 Selecting previously unselected package libxdmcp6:amd64.
    +#8 12.05 Preparing to unpack .../015-libxdmcp6_1%3a1.1.3-0ubuntu5_amd64.deb ...
    +#8 12.05 Unpacking libxdmcp6:amd64 (1:1.1.3-0ubuntu5) ...
    +#8 12.07 Selecting previously unselected package libxcb1:amd64.
    +
    +
    +
    #8 12.07 Preparing to unpack .../016-libxcb1_1.14-3ubuntu3_amd64.deb ...
    +#8 12.08 Unpacking libxcb1:amd64 (1.14-3ubuntu3) ...
    +#8 12.09 Selecting previously unselected package libx11-data.
    +#8 12.10 Preparing to unpack .../017-libx11-data_2%3a1.7.5-1ubuntu0.3_all.deb ...
    +#8 12.10 Unpacking libx11-data (2:1.7.5-1ubuntu0.3) ...
    +#8 12.17 Selecting previously unselected package libx11-6:amd64.
    +#8 12.17 Preparing to unpack .../018-libx11-6_2%3a1.7.5-1ubuntu0.3_amd64.deb ...
    +#8 12.17 Unpacking libx11-6:amd64 (2:1.7.5-1ubuntu0.3) ...
    +#8 12.20 Selecting previously unselected package manpages.
    +#8 12.20 Preparing to unpack .../019-manpages_5.10-1ubuntu1_all.deb ...
    +#8 12.20 Unpacking manpages (5.10-1ubuntu1) ...
    +#8 12.33 Selecting previously unselected package xz-utils.
    +
    +
    +
    #8 12.34 Preparing to unpack .../020-xz-utils_5.2.5-2ubuntu1_amd64.deb ...
    +#8 12.34 Unpacking xz-utils (5.2.5-2ubuntu1) ...
    +#8 12.36 Selecting previously unselected package binutils-common:amd64.
    +#8 12.37 Preparing to unpack .../021-binutils-common_2.38-4ubuntu2.3_amd64.deb ...
    +#8 12.37 Unpacking binutils-common:amd64 (2.38-4ubuntu2.3) ...
    +#8 12.39 Selecting previously unselected package libbinutils:amd64.
    +#8 12.39 Preparing to unpack .../022-libbinutils_2.38-4ubuntu2.3_amd64.deb ...
    +#8 12.40 Unpacking libbinutils:amd64 (2.38-4ubuntu2.3) ...
    +#8 12.44 Selecting previously unselected package libctf-nobfd0:amd64.
    +#8 12.44 Preparing to unpack .../023-libctf-nobfd0_2.38-4ubuntu2.3_amd64.deb ...
    +#8 12.44 Unpacking libctf-nobfd0:amd64 (2.38-4ubuntu2.3) ...
    +#8 12.46 Selecting previously unselected package libctf0:amd64.
    +#8 12.46 Preparing to unpack .../024-libctf0_2.38-4ubuntu2.3_amd64.deb ...
    +#8 12.47 Unpacking libctf0:amd64 (2.38-4ubuntu2.3) ...
    +#8 12.48 Selecting previously unselected package binutils-x86-64-linux-gnu.
    +#8 12.49 Preparing to unpack .../025-binutils-x86-64-linux-gnu_2.38-4ubuntu2.3_amd64.deb ...
    +#8 12.49 Unpacking binutils-x86-64-linux-gnu (2.38-4ubuntu2.3) ...
    +
    +
    +
    #8 12.61 Selecting previously unselected package binutils.
    +#8 12.61 Preparing to unpack .../026-binutils_2.38-4ubuntu2.3_amd64.deb ...
    +#8 12.61 Unpacking binutils (2.38-4ubuntu2.3) ...
    +#8 12.64 Selecting previously unselected package libc-dev-bin.
    +#8 12.65 Preparing to unpack .../027-libc-dev-bin_2.35-0ubuntu3.4_amd64.deb ...
    +#8 12.65 Unpacking libc-dev-bin (2.35-0ubuntu3.4) ...
    +#8 12.67 Selecting previously unselected package linux-libc-dev:amd64.
    +#8 12.67 Preparing to unpack .../028-linux-libc-dev_5.15.0-87.97_amd64.deb ...
    +#8 12.67 Unpacking linux-libc-dev:amd64 (5.15.0-87.97) ...
    +#8 12.87 Selecting previously unselected package libcrypt-dev:amd64.
    +
    +
    +
    #8 12.87 Preparing to unpack .../029-libcrypt-dev_1%3a4.4.27-1_amd64.deb ...
    +#8 12.87 Unpacking libcrypt-dev:amd64 (1:4.4.27-1) ...
    +#8 12.89 Selecting previously unselected package rpcsvc-proto.
    +#8 12.90 Preparing to unpack .../030-rpcsvc-proto_1.4.2-0ubuntu6_amd64.deb ...
    +#8 12.90 Unpacking rpcsvc-proto (1.4.2-0ubuntu6) ...
    +#8 12.92 Selecting previously unselected package libtirpc-dev:amd64.
    +#8 12.92 Preparing to unpack .../031-libtirpc-dev_1.3.2-2ubuntu0.1_amd64.deb ...
    +#8 12.92 Unpacking libtirpc-dev:amd64 (1.3.2-2ubuntu0.1) ...
    +#8 12.95 Selecting previously unselected package libnsl-dev:amd64.
    +#8 12.95 Preparing to unpack .../032-libnsl-dev_1.3.0-2build2_amd64.deb ...
    +#8 12.96 Unpacking libnsl-dev:amd64 (1.3.0-2build2) ...
    +#8 12.98 Selecting previously unselected package libc6-dev:amd64.
    +#8 12.98 Preparing to unpack .../033-libc6-dev_2.35-0ubuntu3.4_amd64.deb ...
    +#8 12.98 Unpacking libc6-dev:amd64 (2.35-0ubuntu3.4) ...
    +
    +
    +
    #8 13.13 Selecting previously unselected package gcc-11-base:amd64.
    +#8 13.13 Preparing to unpack .../034-gcc-11-base_11.4.0-1ubuntu1~22.04_amd64.deb ...
    +#8 13.13 Unpacking gcc-11-base:amd64 (11.4.0-1ubuntu1~22.04) ...
    +#8 13.16 Selecting previously unselected package libisl23:amd64.
    +#8 13.16 Preparing to unpack .../035-libisl23_0.24-2build1_amd64.deb ...
    +#8 13.16 Unpacking libisl23:amd64 (0.24-2build1) ...
    +#8 13.19 Selecting previously unselected package libmpfr6:amd64.
    +#8 13.20 Preparing to unpack .../036-libmpfr6_4.1.0-3build3_amd64.deb ...
    +#8 13.20 Unpacking libmpfr6:amd64 (4.1.0-3build3) ...
    +#8 13.23 Selecting previously unselected package libmpc3:amd64.
    +#8 13.24 Preparing to unpack .../037-libmpc3_1.2.1-2build1_amd64.deb ...
    +#8 13.24 Unpacking libmpc3:amd64 (1.2.1-2build1) ...
    +#8 13.26 Selecting previously unselected package cpp-11.
    +#8 13.26 Preparing to unpack .../038-cpp-11_11.4.0-1ubuntu1~22.04_amd64.deb ...
    +#8 13.26 Unpacking cpp-11 (11.4.0-1ubuntu1~22.04) ...
    +
    +
    +
    #8 13.44 Selecting previously unselected package cpp.
    +#8 13.44 Preparing to unpack .../039-cpp_4%3a11.2.0-1ubuntu1_amd64.deb ...
    +#8 13.44 Unpacking cpp (4:11.2.0-1ubuntu1) ...
    +#8 13.46 Selecting previously unselected package libcc1-0:amd64.
    +#8 13.47 Preparing to unpack .../040-libcc1-0_12.3.0-1ubuntu1~22.04_amd64.deb ...
    +#8 13.47 Unpacking libcc1-0:amd64 (12.3.0-1ubuntu1~22.04) ...
    +#8 13.49 Selecting previously unselected package libgomp1:amd64.
    +#8 13.49 Preparing to unpack .../041-libgomp1_12.3.0-1ubuntu1~22.04_amd64.deb ...
    +#8 13.49 Unpacking libgomp1:amd64 (12.3.0-1ubuntu1~22.04) ...
    +#8 13.52 Selecting previously unselected package libitm1:amd64.
    +#8 13.52 Preparing to unpack .../042-libitm1_12.3.0-1ubuntu1~22.04_amd64.deb ...
    +#8 13.52 Unpacking libitm1:amd64 (12.3.0-1ubuntu1~22.04) ...
    +#8 13.54 Selecting previously unselected package libatomic1:amd64.
    +#8 13.54 Preparing to unpack .../043-libatomic1_12.3.0-1ubuntu1~22.04_amd64.deb ...
    +#8 13.54 Unpacking libatomic1:amd64 (12.3.0-1ubuntu1~22.04) ...
    +#8 13.57 Selecting previously unselected package libasan6:amd64.
    +#8 13.57 Preparing to unpack .../044-libasan6_11.4.0-1ubuntu1~22.04_amd64.deb ...
    +#8 13.57 Unpacking libasan6:amd64 (11.4.0-1ubuntu1~22.04) ...
    +#8 13.64 Selecting previously unselected package liblsan0:amd64.
    +
    +
    +
    #8 13.64 Preparing to unpack .../045-liblsan0_12.3.0-1ubuntu1~22.04_amd64.deb ...
    +#8 13.64 Unpacking liblsan0:amd64 (12.3.0-1ubuntu1~22.04) ...
    +#8 13.68 Selecting previously unselected package libtsan0:amd64.
    +#8 13.68 Preparing to unpack .../046-libtsan0_11.4.0-1ubuntu1~22.04_amd64.deb ...
    +#8 13.69 Unpacking libtsan0:amd64 (11.4.0-1ubuntu1~22.04) ...
    +#8 13.75 Selecting previously unselected package libubsan1:amd64.
    +#8 13.75 Preparing to unpack .../047-libubsan1_12.3.0-1ubuntu1~22.04_amd64.deb ...
    +#8 13.75 Unpacking libubsan1:amd64 (12.3.0-1ubuntu1~22.04) ...
    +#8 13.79 Selecting previously unselected package libquadmath0:amd64.
    +#8 13.79 Preparing to unpack .../048-libquadmath0_12.3.0-1ubuntu1~22.04_amd64.deb ...
    +#8 13.79 Unpacking libquadmath0:amd64 (12.3.0-1ubuntu1~22.04) ...
    +#8 13.81 Selecting previously unselected package libgcc-11-dev:amd64.
    +#8 13.82 Preparing to unpack .../049-libgcc-11-dev_11.4.0-1ubuntu1~22.04_amd64.deb ...
    +#8 13.82 Unpacking libgcc-11-dev:amd64 (11.4.0-1ubuntu1~22.04) ...
    +
    +
    +
    #8 13.92 Selecting previously unselected package gcc-11.
    +#8 13.92 Preparing to unpack .../050-gcc-11_11.4.0-1ubuntu1~22.04_amd64.deb ...
    +#8 13.92 Unpacking gcc-11 (11.4.0-1ubuntu1~22.04) ...
    +
    +
    +
    #8 14.30 Selecting previously unselected package gcc.
    +#8 14.31 Preparing to unpack .../051-gcc_4%3a11.2.0-1ubuntu1_amd64.deb ...
    +#8 14.31 Unpacking gcc (4:11.2.0-1ubuntu1) ...
    +#8 14.33 Selecting previously unselected package libstdc++-11-dev:amd64.
    +#8 14.33 Preparing to unpack .../052-libstdc++-11-dev_11.4.0-1ubuntu1~22.04_amd64.deb ...
    +#8 14.33 Unpacking libstdc++-11-dev:amd64 (11.4.0-1ubuntu1~22.04) ...
    +
    +
    +
    #8 14.58 Selecting previously unselected package g++-11.
    +#8 14.59 Preparing to unpack .../053-g++-11_11.4.0-1ubuntu1~22.04_amd64.deb ...
    +#8 14.59 Unpacking g++-11 (11.4.0-1ubuntu1~22.04) ...
    +
    +
    +
    #8 14.79 Selecting previously unselected package g++.
    +#8 14.79 Preparing to unpack .../054-g++_4%3a11.2.0-1ubuntu1_amd64.deb ...
    +#8 14.79 Unpacking g++ (4:11.2.0-1ubuntu1) ...
    +#8 14.81 Selecting previously unselected package make.
    +#8 14.81 Preparing to unpack .../055-make_4.3-4.1build1_amd64.deb ...
    +#8 14.82 Unpacking make (4.3-4.1build1) ...
    +#8 14.84 Selecting previously unselected package libdpkg-perl.
    +#8 14.84 Preparing to unpack .../056-libdpkg-perl_1.21.1ubuntu2.2_all.deb ...
    +#8 14.84 Unpacking libdpkg-perl (1.21.1ubuntu2.2) ...
    +#8 14.88 Selecting previously unselected package bzip2.
    +#8 14.89 Preparing to unpack .../057-bzip2_1.0.8-5build1_amd64.deb ...
    +#8 14.89 Unpacking bzip2 (1.0.8-5build1) ...
    +#8 14.92 Selecting previously unselected package patch.
    +#8 14.92 Preparing to unpack .../058-patch_2.7.6-7build2_amd64.deb ...
    +#8 14.92 Unpacking patch (2.7.6-7build2) ...
    +#8 14.94 Selecting previously unselected package lto-disabled-list.
    +
    +
    +
    #8 14.95 Preparing to unpack .../059-lto-disabled-list_24_all.deb ...
     #8 14.95 Unpacking lto-disabled-list (24) ...
     #8 14.97 Selecting previously unselected package dpkg-dev.
     #8 14.97 Preparing to unpack .../060-dpkg-dev_1.21.1ubuntu2.2_all.deb ...
     #8 14.97 Unpacking dpkg-dev (1.21.1ubuntu2.2) ...
    -#8 15.03 Selecting previously unselected package build-essential.
    -
    -
    -
    #8 15.03 Preparing to unpack .../061-build-essential_12.9ubuntu3_amd64.deb ...
    -#8 15.03 Unpacking build-essential (12.9ubuntu3) ...
    -#8 15.05 Selecting previously unselected package libassuan0:amd64.
    +#8 15.02 Selecting previously unselected package build-essential.
    +#8 15.02 Preparing to unpack .../061-build-essential_12.9ubuntu3_amd64.deb ...
    +#8 15.02 Unpacking build-essential (12.9ubuntu3) ...
    +#8 15.04 Selecting previously unselected package libassuan0:amd64.
     #8 15.05 Preparing to unpack .../062-libassuan0_2.5.5-1build1_amd64.deb ...
     #8 15.05 Unpacking libassuan0:amd64 (2.5.5-1build1) ...
    -#8 15.06 Selecting previously unselected package gpgconf.
    -#8 15.06 Preparing to unpack .../063-gpgconf_2.2.27-3ubuntu2.1_amd64.deb ...
    +#8 15.07 Selecting previously unselected package gpgconf.
    +#8 15.07 Preparing to unpack .../063-gpgconf_2.2.27-3ubuntu2.1_amd64.deb ...
     #8 15.07 Unpacking gpgconf (2.2.27-3ubuntu2.1) ...
    -#8 15.08 Selecting previously unselected package libksba8:amd64.
    -#8 15.08 Preparing to unpack .../064-libksba8_1.6.0-2ubuntu0.2_amd64.deb ...
    -#8 15.09 Unpacking libksba8:amd64 (1.6.0-2ubuntu0.2) ...
    -#8 15.10 Selecting previously unselected package libsasl2-modules-db:amd64.
    -#8 15.10 Preparing to unpack .../065-libsasl2-modules-db_2.1.27+dfsg2-3ubuntu1.2_amd64.deb ...
    -#8 15.11 Unpacking libsasl2-modules-db:amd64 (2.1.27+dfsg2-3ubuntu1.2) ...
    -#8 15.12 Selecting previously unselected package libsasl2-2:amd64.
    -#8 15.12 Preparing to unpack .../066-libsasl2-2_2.1.27+dfsg2-3ubuntu1.2_amd64.deb ...
    -#8 15.12 Unpacking libsasl2-2:amd64 (2.1.27+dfsg2-3ubuntu1.2) ...
    -#8 15.14 Selecting previously unselected package libldap-2.5-0:amd64.
    -#8 15.14 Preparing to unpack .../067-libldap-2.5-0_2.5.16+dfsg-0ubuntu0.22.04.1_amd64.deb ...
    -#8 15.14 Unpacking libldap-2.5-0:amd64 (2.5.16+dfsg-0ubuntu0.22.04.1) ...
    -#8 15.16 Selecting previously unselected package libnpth0:amd64.
    -#8 15.16 Preparing to unpack .../068-libnpth0_1.6-3build2_amd64.deb ...
    -#8 15.17 Unpacking libnpth0:amd64 (1.6-3build2) ...
    -#8 15.18 Selecting previously unselected package dirmngr.
    -#8 15.18 Preparing to unpack .../069-dirmngr_2.2.27-3ubuntu2.1_amd64.deb ...
    -#8 15.19 Unpacking dirmngr (2.2.27-3ubuntu2.1) ...
    -#8 15.22 Selecting previously unselected package libfakeroot:amd64.
    -#8 15.22 Preparing to unpack .../070-libfakeroot_1.28-1ubuntu1_amd64.deb ...
    -#8 15.22 Unpacking libfakeroot:amd64 (1.28-1ubuntu1) ...
    -#8 15.24 Selecting previously unselected package fakeroot.
    -#8 15.24 Preparing to unpack .../071-fakeroot_1.28-1ubuntu1_amd64.deb ...
    -#8 15.24 Unpacking fakeroot (1.28-1ubuntu1) ...
    -#8 15.25 Selecting previously unselected package fonts-dejavu-core.
    -
    -
    -
    #8 15.26 Preparing to unpack .../072-fonts-dejavu-core_2.37-2build1_all.deb ...
    -#8 15.26 Unpacking fonts-dejavu-core (2.37-2build1) ...
    -#8 15.36 Selecting previously unselected package fontconfig-config.
    -#8 15.37 Preparing to unpack .../073-fontconfig-config_2.13.1-4.2ubuntu5_all.deb ...
    -#8 15.37 Unpacking fontconfig-config (2.13.1-4.2ubuntu5) ...
    -#8 15.39 Selecting previously unselected package gnupg-l10n.
    -#8 15.39 Preparing to unpack .../074-gnupg-l10n_2.2.27-3ubuntu2.1_all.deb ...
    -#8 15.39 Unpacking gnupg-l10n (2.2.27-3ubuntu2.1) ...
    -#8 15.41 Selecting previously unselected package gnupg-utils.
    -#8 15.41 Preparing to unpack .../075-gnupg-utils_2.2.27-3ubuntu2.1_amd64.deb ...
    -#8 15.41 Unpacking gnupg-utils (2.2.27-3ubuntu2.1) ...
    -#8 15.43 Selecting previously unselected package gpg.
    -#8 15.43 Preparing to unpack .../076-gpg_2.2.27-3ubuntu2.1_amd64.deb ...
    -#8 15.43 Unpacking gpg (2.2.27-3ubuntu2.1) ...
    -#8 15.45 Selecting previously unselected package pinentry-curses.
    -#8 15.46 Preparing to unpack .../077-pinentry-curses_1.1.1-1build2_amd64.deb ...
    -#8 15.46 Unpacking pinentry-curses (1.1.1-1build2) ...
    -#8 15.47 Selecting previously unselected package gpg-agent.
    -
    -
    -
    #8 15.48 Preparing to unpack .../078-gpg-agent_2.2.27-3ubuntu2.1_amd64.deb ...
    -#8 15.48 Unpacking gpg-agent (2.2.27-3ubuntu2.1) ...
    -#8 15.50 Selecting previously unselected package gpg-wks-client.
    -#8 15.50 Preparing to unpack .../079-gpg-wks-client_2.2.27-3ubuntu2.1_amd64.deb ...
    -#8 15.50 Unpacking gpg-wks-client (2.2.27-3ubuntu2.1) ...
    -#8 15.51 Selecting previously unselected package gpg-wks-server.
    -#8 15.51 Preparing to unpack .../080-gpg-wks-server_2.2.27-3ubuntu2.1_amd64.deb ...
    -#8 15.51 Unpacking gpg-wks-server (2.2.27-3ubuntu2.1) ...
    -#8 15.53 Selecting previously unselected package gpgsm.
    -#8 15.53 Preparing to unpack .../081-gpgsm_2.2.27-3ubuntu2.1_amd64.deb ...
    -#8 15.53 Unpacking gpgsm (2.2.27-3ubuntu2.1) ...
    -#8 15.55 Selecting previously unselected package gnupg.
    -#8 15.55 Preparing to unpack .../082-gnupg_2.2.27-3ubuntu2.1_all.deb ...
    -#8 15.55 Unpacking gnupg (2.2.27-3ubuntu2.1) ...
    -#8 15.57 Selecting previously unselected package javascript-common.
    -#8 15.58 Preparing to unpack .../083-javascript-common_11+nmu1_all.deb ...
    -#8 15.58 Unpacking javascript-common (11+nmu1) ...
    -#8 15.61 Selecting previously unselected package libalgorithm-diff-perl.
    -#8 15.61 Preparing to unpack .../084-libalgorithm-diff-perl_1.201-1_all.deb ...
    -#8 15.62 Unpacking libalgorithm-diff-perl (1.201-1) ...
    -#8 15.64 Selecting previously unselected package libalgorithm-diff-xs-perl.
    -#8 15.64 Preparing to unpack .../085-libalgorithm-diff-xs-perl_0.04-6build3_amd64.deb ...
    -#8 15.64 Unpacking libalgorithm-diff-xs-perl (0.04-6build3) ...
    -#8 15.66 Selecting previously unselected package libalgorithm-merge-perl.
    -#8 15.66 Preparing to unpack .../086-libalgorithm-merge-perl_0.08-3_all.deb ...
    -#8 15.66 Unpacking libalgorithm-merge-perl (0.08-3) ...
    -#8 15.67 Selecting previously unselected package libbrotli1:amd64.
    -
    -
    -
    #8 15.68 Preparing to unpack .../087-libbrotli1_1.0.9-2build6_amd64.deb ...
    -#8 15.68 Unpacking libbrotli1:amd64 (1.0.9-2build6) ...
    -#8 15.70 Selecting previously unselected package libfreetype6:amd64.
    -#8 15.70 Preparing to unpack .../088-libfreetype6_2.11.1+dfsg-1ubuntu0.2_amd64.deb ...
    -#8 15.70 Unpacking libfreetype6:amd64 (2.11.1+dfsg-1ubuntu0.2) ...
    -#8 15.72 Selecting previously unselected package libfontconfig1:amd64.
    -#8 15.73 Preparing to unpack .../089-libfontconfig1_2.13.1-4.2ubuntu5_amd64.deb ...
    -#8 15.73 Unpacking libfontconfig1:amd64 (2.13.1-4.2ubuntu5) ...
    -#8 15.75 Selecting previously unselected package libjpeg-turbo8:amd64.
    -#8 15.75 Preparing to unpack .../090-libjpeg-turbo8_2.1.2-0ubuntu1_amd64.deb ...
    -#8 15.75 Unpacking libjpeg-turbo8:amd64 (2.1.2-0ubuntu1) ...
    -#8 15.76 Selecting previously unselected package libjpeg8:amd64.
    -#8 15.77 Preparing to unpack .../091-libjpeg8_8c-2ubuntu10_amd64.deb ...
    -#8 15.77 Unpacking libjpeg8:amd64 (8c-2ubuntu10) ...
    -#8 15.78 Selecting previously unselected package libdeflate0:amd64.
    -#8 15.79 Preparing to unpack .../092-libdeflate0_1.10-2_amd64.deb ...
    -#8 15.79 Unpacking libdeflate0:amd64 (1.10-2) ...
    -#8 15.80 Selecting previously unselected package libjbig0:amd64.
    -#8 15.81 Preparing to unpack .../093-libjbig0_2.1-3.1ubuntu0.22.04.1_amd64.deb ...
    -#8 15.81 Unpacking libjbig0:amd64 (2.1-3.1ubuntu0.22.04.1) ...
    -#8 15.82 Selecting previously unselected package libwebp7:amd64.
    -#8 15.82 Preparing to unpack .../094-libwebp7_1.2.2-2ubuntu0.22.04.2_amd64.deb ...
    -#8 15.83 Unpacking libwebp7:amd64 (1.2.2-2ubuntu0.22.04.2) ...
    -#8 15.85 Selecting previously unselected package libtiff5:amd64.
    -#8 15.85 Preparing to unpack .../095-libtiff5_4.3.0-6ubuntu0.6_amd64.deb ...
    -#8 15.85 Unpacking libtiff5:amd64 (4.3.0-6ubuntu0.6) ...
    -#8 15.87 Selecting previously unselected package libxpm4:amd64.
    -#8 15.87 Preparing to unpack .../096-libxpm4_1%3a3.5.12-1ubuntu0.22.04.2_amd64.deb ...
    -#8 15.87 Unpacking libxpm4:amd64 (1:3.5.12-1ubuntu0.22.04.2) ...
    -#8 15.89 Selecting previously unselected package libgd3:amd64.
    -
    -
    -
    #8 15.89 Preparing to unpack .../097-libgd3_2.3.0-2ubuntu2_amd64.deb ...
    -#8 15.89 Unpacking libgd3:amd64 (2.3.0-2ubuntu2) ...
    -#8 15.91 Selecting previously unselected package libc-devtools.
    -#8 15.91 Preparing to unpack .../098-libc-devtools_2.35-0ubuntu3.4_amd64.deb ...
    -#8 15.91 Unpacking libc-devtools (2.35-0ubuntu3.4) ...
    -#8 15.93 Selecting previously unselected package libexpat1-dev:amd64.
    -#8 15.93 Preparing to unpack .../099-libexpat1-dev_2.4.7-1ubuntu0.2_amd64.deb ...
    -#8 15.93 Unpacking libexpat1-dev:amd64 (2.4.7-1ubuntu0.2) ...
    -#8 15.95 Selecting previously unselected package libfile-fcntllock-perl.
    -#8 15.95 Preparing to unpack .../100-libfile-fcntllock-perl_0.22-3build7_amd64.deb ...
    -#8 15.95 Unpacking libfile-fcntllock-perl (0.22-3build7) ...
    -#8 15.97 Selecting previously unselected package libjs-jquery.
    -#8 15.97 Preparing to unpack .../101-libjs-jquery_3.6.0+dfsg+~3.5.13-1_all.deb ...
    -#8 15.98 Unpacking libjs-jquery (3.6.0+dfsg+~3.5.13-1) ...
    -#8 16.00 Selecting previously unselected package libjs-underscore.
    -#8 16.00 Preparing to unpack .../102-libjs-underscore_1.13.2~dfsg-2_all.deb ...
    -#8 16.00 Unpacking libjs-underscore (1.13.2~dfsg-2) ...
    -#8 16.02 Selecting previously unselected package libjs-sphinxdoc.
    -#8 16.02 Preparing to unpack .../103-libjs-sphinxdoc_4.3.2-1_all.deb ...
    -#8 16.02 Unpacking libjs-sphinxdoc (4.3.2-1) ...
    -#8 16.04 Selecting previously unselected package libldap-common.
    -#8 16.04 Preparing to unpack .../104-libldap-common_2.5.16+dfsg-0ubuntu0.22.04.1_all.deb ...
    -#8 16.04 Unpacking libldap-common (2.5.16+dfsg-0ubuntu0.22.04.1) ...
    -#8 16.06 Selecting previously unselected package libpython3.10:amd64.
    -#8 16.06 Preparing to unpack .../105-libpython3.10_3.10.12-1~22.04.2_amd64.deb ...
    -#8 16.06 Unpacking libpython3.10:amd64 (3.10.12-1~22.04.2) ...
    -#8 16.10 Selecting previously unselected package zlib1g-dev:amd64.
    -
    -
    -
    #8 16.10 Preparing to unpack .../106-zlib1g-dev_1%3a1.2.11.dfsg-2ubuntu9.2_amd64.deb ...
    -#8 16.10 Unpacking zlib1g-dev:amd64 (1:1.2.11.dfsg-2ubuntu9.2) ...
    -#8 16.12 Selecting previously unselected package libpython3.10-dev:amd64.
    -#8 16.12 Preparing to unpack .../107-libpython3.10-dev_3.10.12-1~22.04.2_amd64.deb ...
    -#8 16.12 Unpacking libpython3.10-dev:amd64 (3.10.12-1~22.04.2) ...
    -#8 16.23 Selecting previously unselected package libpython3-dev:amd64.
    -#8 16.23 Preparing to unpack .../108-libpython3-dev_3.10.6-1~22.04_amd64.deb ...
    -#8 16.23 Unpacking libpython3-dev:amd64 (3.10.6-1~22.04) ...
    -#8 16.25 Selecting previously unselected package libsasl2-modules:amd64.
    -#8 16.25 Preparing to unpack .../109-libsasl2-modules_2.1.27+dfsg2-3ubuntu1.2_amd64.deb ...
    -#8 16.25 Unpacking libsasl2-modules:amd64 (2.1.27+dfsg2-3ubuntu1.2) ...
    -#8 16.27 Selecting previously unselected package manpages-dev.
    -#8 16.27 Preparing to unpack .../110-manpages-dev_5.10-1ubuntu1_all.deb ...
    -#8 16.27 Unpacking manpages-dev (5.10-1ubuntu1) ...
    -
    -
    -
    #8 16.51 Selecting previously unselected package python3.10-dev.
    -#8 16.51 Preparing to unpack .../111-python3.10-dev_3.10.12-1~22.04.2_amd64.deb ...
    -#8 16.51 Unpacking python3.10-dev (3.10.12-1~22.04.2) ...
    -#8 16.53 Selecting previously unselected package python3-lib2to3.
    -#8 16.53 Preparing to unpack .../112-python3-lib2to3_3.10.8-1~22.04_all.deb ...
    -#8 16.54 Unpacking python3-lib2to3 (3.10.8-1~22.04) ...
    -#8 16.57 Selecting previously unselected package python3-distutils.
    -#8 16.57 Preparing to unpack .../113-python3-distutils_3.10.8-1~22.04_all.deb ...
    -#8 16.57 Unpacking python3-distutils (3.10.8-1~22.04) ...
    -#8 16.60 Selecting previously unselected package python3-dev.
    -#8 16.60 Preparing to unpack .../114-python3-dev_3.10.6-1~22.04_amd64.deb ...
    -#8 16.60 Unpacking python3-dev (3.10.6-1~22.04) ...
    -#8 16.62 Selecting previously unselected package python3-setuptools.
    -
    -
    -
    #8 16.62 Preparing to unpack .../115-python3-setuptools_59.6.0-1.2ubuntu0.22.04.1_all.deb ...
    -#8 16.62 Unpacking python3-setuptools (59.6.0-1.2ubuntu0.22.04.1) ...
    -#8 16.66 Selecting previously unselected package python3-wheel.
    -#8 16.66 Preparing to unpack .../116-python3-wheel_0.37.1-2ubuntu0.22.04.1_all.deb ...
    -#8 16.66 Unpacking python3-wheel (0.37.1-2ubuntu0.22.04.1) ...
    -#8 16.67 Selecting previously unselected package python3-pip.
    -#8 16.68 Preparing to unpack .../117-python3-pip_22.0.2+dfsg-1ubuntu0.3_all.deb ...
    -#8 16.68 Unpacking python3-pip (22.0.2+dfsg-1ubuntu0.3) ...
    -#8 16.79 Setting up libksba8:amd64 (1.6.0-2ubuntu0.2) ...
    -#8 16.79 Setting up media-types (7.0.0) ...
    -#8 16.79 Setting up javascript-common (11+nmu1) ...
    -#8 16.82 Setting up gcc-11-base:amd64 (11.4.0-1ubuntu1~22.04) ...
    -#8 16.82 Setting up libxau6:amd64 (1:1.0.9-1build5) ...
    -#8 16.82 Setting up lto-disabled-list (24) ...
    -#8 16.83 Setting up manpages (5.10-1ubuntu1) ...
    -#8 16.83 Setting up libbrotli1:amd64 (1.0.9-2build6) ...
    -#8 16.83 Setting up libsqlite3-0:amd64 (3.37.2-2ubuntu0.1) ...
    -#8 16.84 Setting up libsasl2-modules:amd64 (2.1.27+dfsg2-3ubuntu1.2) ...
    -#8 16.84 Setting up binutils-common:amd64 (2.38-4ubuntu2.3) ...
    -#8 16.85 Setting up libdeflate0:amd64 (1.10-2) ...
    -#8 16.85 Setting up linux-libc-dev:amd64 (5.15.0-86.96) ...
    -#8 16.85 Setting up libctf-nobfd0:amd64 (2.38-4ubuntu2.3) ...
    -#8 16.86 Setting up libnpth0:amd64 (1.6-3build2) ...
    -#8 16.86 Setting up libassuan0:amd64 (2.5.5-1build1) ...
    -#8 16.86 Setting up libgomp1:amd64 (12.3.0-1ubuntu1~22.04) ...
    -#8 16.87 Setting up perl-modules-5.34 (5.34.0-3ubuntu1.2) ...
    -
    -
    -
    #8 16.87 Setting up bzip2 (1.0.8-5build1) ...
    -#8 16.87 Setting up libldap-common (2.5.16+dfsg-0ubuntu0.22.04.1) ...
    -#8 16.88 Setting up libjbig0:amd64 (2.1-3.1ubuntu0.22.04.1) ...
    -#8 16.88 Setting up libfakeroot:amd64 (1.28-1ubuntu1) ...
    -#8 16.88 Setting up libasan6:amd64 (11.4.0-1ubuntu1~22.04) ...
    -#8 16.89 Setting up libsasl2-modules-db:amd64 (2.1.27+dfsg2-3ubuntu1.2) ...
    -#8 16.89 Setting up fakeroot (1.28-1ubuntu1) ...
    -#8 16.89 update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode
    -#8 16.90 update-alternatives: warning: skip creation of /usr/share/man/man1/fakeroot.1.gz because associated file /usr/share/man/man1/fakeroot-sysv.1.gz (of link group fakeroot) doesn't exist
    -#8 16.90 update-alternatives: warning: skip creation of /usr/share/man/man1/faked.1.gz because associated file /usr/share/man/man1/faked-sysv.1.gz (of link group fakeroot) doesn't exist
    -#8 16.90 update-alternatives: warning: skip creation of /usr/share/man/es/man1/fakeroot.1.gz because associated file /usr/share/man/es/man1/fakeroot-sysv.1.gz (of link group fakeroot) doesn't exist
    -#8 16.90 update-alternatives: warning: skip creation of /usr/share/man/es/man1/faked.1.gz because associated file /usr/share/man/es/man1/faked-sysv.1.gz (of link group fakeroot) doesn't exist
    -#8 16.90 update-alternatives: warning: skip creation of /usr/share/man/fr/man1/fakeroot.1.gz because associated file /usr/share/man/fr/man1/fakeroot-sysv.1.gz (of link group fakeroot) doesn't exist
    -#8 16.90 update-alternatives: warning: skip creation of /usr/share/man/fr/man1/faked.1.gz because associated file /usr/share/man/fr/man1/faked-sysv.1.gz (of link group fakeroot) doesn't exist
    -#8 16.90 update-alternatives: warning: skip creation of /usr/share/man/sv/man1/fakeroot.1.gz because associated file /usr/share/man/sv/man1/fakeroot-sysv.1.gz (of link group fakeroot) doesn't exist
    -#8 16.90 update-alternatives: warning: skip creation of /usr/share/man/sv/man1/faked.1.gz because associated file /usr/share/man/sv/man1/faked-sysv.1.gz (of link group fakeroot) doesn't exist
    -#8 16.90 Setting up libtirpc-dev:amd64 (1.3.2-2ubuntu0.1) ...
    -#8 16.90 Setting up rpcsvc-proto (1.4.2-0ubuntu6) ...
    -#8 16.90 Setting up libx11-data (2:1.7.5-1ubuntu0.3) ...
    -#8 16.91 Setting up make (4.3-4.1build1) ...
    -#8 16.91 Setting up libmpfr6:amd64 (4.1.0-3build3) ...
    -#8 16.92 Setting up gnupg-l10n (2.2.27-3ubuntu2.1) ...
    -#8 16.92 Setting up xz-utils (5.2.5-2ubuntu1) ...
    -#8 16.92 update-alternatives: using /usr/bin/xz to provide /usr/bin/lzma (lzma) in auto mode
    -#8 16.92 update-alternatives: warning: skip creation of /usr/share/man/man1/lzma.1.gz because associated file /usr/share/man/man1/xz.1.gz (of link group lzma) doesn't exist
    -#8 16.92 update-alternatives: warning: skip creation of /usr/share/man/man1/unlzma.1.gz because associated file /usr/share/man/man1/unxz.1.gz (of link group lzma) doesn't exist
    -#8 16.92 update-alternatives: warning: skip creation of /usr/share/man/man1/lzcat.1.gz because associated file /usr/share/man/man1/xzcat.1.gz (of link group lzma) doesn't exist
    -#8 16.92 update-alternatives: warning: skip creation of /usr/share/man/man1/lzmore.1.gz because associated file /usr/share/man/man1/xzmore.1.gz (of link group lzma) doesn't exist
    -#8 16.92 update-alternatives: warning: skip creation of /usr/share/man/man1/lzless.1.gz because associated file /usr/share/man/man1/xzless.1.gz (of link group lzma) doesn't exist
    -#8 16.92 update-alternatives: warning: skip creation of /usr/share/man/man1/lzdiff.1.gz because associated file /usr/share/man/man1/xzdiff.1.gz (of link group lzma) doesn't exist
    -#8 16.92 update-alternatives: warning: skip creation of /usr/share/man/man1/lzcmp.1.gz because associated file /usr/share/man/man1/xzcmp.1.gz (of link group lzma) doesn't exist
    -#8 16.92 update-alternatives: warning: skip creation of /usr/share/man/man1/lzgrep.1.gz because associated file /usr/share/man/man1/xzgrep.1.gz (of link group lzma) doesn't exist
    -#8 16.92 update-alternatives: warning: skip creation of /usr/share/man/man1/lzegrep.1.gz because associated file /usr/share/man/man1/xzegrep.1.gz (of link group lzma) doesn't exist
    -#8 16.92 update-alternatives: warning: skip creation of /usr/share/man/man1/lzfgrep.1.gz because associated file /usr/share/man/man1/xzfgrep.1.gz (of link group lzma) doesn't exist
    -#8 16.93 Setting up libquadmath0:amd64 (12.3.0-1ubuntu1~22.04) ...
    -#8 16.93 Setting up libpng16-16:amd64 (1.6.37-3build5) ...
    -#8 16.93 Setting up libmpc3:amd64 (1.2.1-2build1) ...
    -#8 16.94 Setting up libatomic1:amd64 (12.3.0-1ubuntu1~22.04) ...
    -#8 16.94 Setting up patch (2.7.6-7build2) ...
    -#8 16.94 Setting up fonts-dejavu-core (2.37-2build1) ...
    -#8 16.96 Setting up ucf (3.0043) ...
    -#8 17.08 debconf: unable to initialize frontend: Dialog
    -#8 17.08 debconf: (TERM is not set, so the dialog frontend is not usable.)
    -#8 17.08 debconf: falling back to frontend: Readline
    -#8 17.11 Setting up libjpeg-turbo8:amd64 (2.1.2-0ubuntu1) ...
    -#8 17.11 Setting up libsasl2-2:amd64 (2.1.27+dfsg2-3ubuntu1.2) ...
    -#8 17.12 Setting up libwebp7:amd64 (1.2.2-2ubuntu0.22.04.2) ...
    -
    -
    -
    #8 17.12 Setting up libubsan1:amd64 (12.3.0-1ubuntu1~22.04) ...
    -#8 17.12 Setting up libmd0:amd64 (1.0.4-1build1) ...
    -#8 17.13 Setting up libnsl-dev:amd64 (1.3.0-2build2) ...
    -#8 17.13 Setting up libcrypt-dev:amd64 (1:4.4.27-1) ...
    -#8 17.13 Setting up libmpdec3:amd64 (2.5.1-2build2) ...
    -#8 17.14 Setting up netbase (6.3) ...
    -#8 17.15 Setting up libjs-jquery (3.6.0+dfsg+~3.5.13-1) ...
    -#8 17.15 Setting up libbinutils:amd64 (2.38-4ubuntu2.3) ...
    -#8 17.16 Setting up libisl23:amd64 (0.24-2build1) ...
    -#8 17.16 Setting up libc-dev-bin (2.35-0ubuntu3.4) ...
    -#8 17.16 Setting up openssl (3.0.2-0ubuntu1.10) ...
    -#8 17.17 Setting up libbsd0:amd64 (0.11.5-1) ...
    -#8 17.17 Setting up readline-common (8.1.2-1) ...
    -#8 17.18 Setting up libcc1-0:amd64 (12.3.0-1ubuntu1~22.04) ...
    -#8 17.18 Setting up liblocale-gettext-perl (1.07-4build3) ...
    -#8 17.18 Setting up liblsan0:amd64 (12.3.0-1ubuntu1~22.04) ...
    -#8 17.18 Setting up libitm1:amd64 (12.3.0-1ubuntu1~22.04) ...
    -#8 17.19 Setting up libgdbm6:amd64 (1.23-1) ...
    -#8 17.19 Setting up libjs-underscore (1.13.2~dfsg-2) ...
    -#8 17.19 Setting up libtsan0:amd64 (11.4.0-1ubuntu1~22.04) ...
    -#8 17.20 Setting up libctf0:amd64 (2.38-4ubuntu2.3) ...
    -#8 17.20 Setting up libjpeg8:amd64 (8c-2ubuntu10) ...
    -#8 17.20 Setting up pinentry-curses (1.1.1-1build2) ...
    -#8 17.21 Setting up cpp-11 (11.4.0-1ubuntu1~22.04) ...
    -#8 17.21 Setting up manpages-dev (5.10-1ubuntu1) ...
    -#8 17.21 Setting up libxdmcp6:amd64 (1:1.1.3-0ubuntu5) ...
    -#8 17.22 Setting up libxcb1:amd64 (1.14-3ubuntu3) ...
    -#8 17.22 Setting up fontconfig-config (2.13.1-4.2ubuntu5) ...
    -#8 17.28 Setting up libreadline8:amd64 (8.1.2-1) ...
    -#8 17.28 Setting up libldap-2.5-0:amd64 (2.5.16+dfsg-0ubuntu0.22.04.1) ...
    -#8 17.28 Setting up libpython3.10-stdlib:amd64 (3.10.12-1~22.04.2) ...
    -#8 17.28 Setting up ca-certificates (20230311ubuntu0.22.04.1) ...
    -
    -
    -
    #8 17.39 debconf: unable to initialize frontend: Dialog
    -#8 17.39 debconf: (TERM is not set, so the dialog frontend is not usable.)
    -#8 17.39 debconf: falling back to frontend: Readline
    -
    -
    -
    #8 17.81 Updating certificates in /etc/ssl/certs...
    -
    -
    -
    #8 18.90 137 added, 0 removed; done.
    -#8 18.92 Setting up libfreetype6:amd64 (2.11.1+dfsg-1ubuntu0.2) ...
    -#8 18.92 Setting up libgdbm-compat4:amd64 (1.23-1) ...
    -#8 18.93 Setting up libjs-sphinxdoc (4.3.2-1) ...
    -#8 18.93 Setting up libgcc-11-dev:amd64 (11.4.0-1ubuntu1~22.04) ...
    -#8 18.93 Setting up cpp (4:11.2.0-1ubuntu1) ...
    -#8 18.94 Setting up gpgconf (2.2.27-3ubuntu2.1) ...
    -#8 18.94 Setting up libc6-dev:amd64 (2.35-0ubuntu3.4) ...
    -#8 18.94 Setting up libx11-6:amd64 (2:1.7.5-1ubuntu0.3) ...
    -#8 18.95 Setting up libtiff5:amd64 (4.3.0-6ubuntu0.6) ...
    -#8 18.95 Setting up libfontconfig1:amd64 (2.13.1-4.2ubuntu5) ...
    -#8 18.95 Setting up gpg (2.2.27-3ubuntu2.1) ...
    -#8 18.96 Setting up libpython3-stdlib:amd64 (3.10.6-1~22.04) ...
    -#8 18.96 Setting up gnupg-utils (2.2.27-3ubuntu2.1) ...
    -#8 18.96 Setting up binutils-x86-64-linux-gnu (2.38-4ubuntu2.3) ...
    -#8 18.97 Setting up libpython3.10:amd64 (3.10.12-1~22.04.2) ...
    -#8 18.97 Setting up libperl5.34:amd64 (5.34.0-3ubuntu1.2) ...
    -#8 18.98 Setting up gpg-agent (2.2.27-3ubuntu2.1) ...
    -
    -
    -
    #8 19.47 Setting up python3.10 (3.10.12-1~22.04.2) ...
    -
    -
    -
    #8 20.14 Setting up libxpm4:amd64 (1:3.5.12-1ubuntu0.22.04.2) ...
    -#8 20.15 Setting up gpgsm (2.2.27-3ubuntu2.1) ...
    -#8 20.15 Setting up python3 (3.10.6-1~22.04) ...
    -#8 20.15 running python rtupdate hooks for python3.10...
    -#8 20.16 running python post-rtupdate hooks for python3.10...
    -#8 20.24 Setting up binutils (2.38-4ubuntu2.3) ...
    -#8 20.25 Setting up dirmngr (2.2.27-3ubuntu2.1) ...
    -
    -
    -
    #8 20.38 Setting up perl (5.34.0-3ubuntu1.2) ...
    -#8 20.39 Setting up libexpat1-dev:amd64 (2.4.7-1ubuntu0.2) ...
    -#8 20.39 Setting up libgd3:amd64 (2.3.0-2ubuntu2) ...
    -#8 20.40 Setting up libdpkg-perl (1.21.1ubuntu2.2) ...
    -#8 20.40 Setting up libstdc++-11-dev:amd64 (11.4.0-1ubuntu1~22.04) ...
    -#8 20.40 Setting up gpg-wks-server (2.2.27-3ubuntu2.1) ...
    -#8 20.41 Setting up zlib1g-dev:amd64 (1:1.2.11.dfsg-2ubuntu9.2) ...
    -#8 20.41 Setting up gcc-11 (11.4.0-1ubuntu1~22.04) ...
    -#8 20.41 Setting up python3-lib2to3 (3.10.8-1~22.04) ...
    -#8 20.51 Setting up libc-devtools (2.35-0ubuntu3.4) ...
    -
    -
    -
    #8 20.52 Setting up python3-pkg-resources (59.6.0-1.2ubuntu0.22.04.1) ...
    -#8 20.70 Setting up python3-distutils (3.10.8-1~22.04) ...
    -
    -
    -
    #8 20.82 Setting up python3-setuptools (59.6.0-1.2ubuntu0.22.04.1) ...
    -
    -
    -
    #8 21.15 Setting up gpg-wks-client (2.2.27-3ubuntu2.1) ...
    -#8 21.16 Setting up g++-11 (11.4.0-1ubuntu1~22.04) ...
    -#8 21.16 Setting up libfile-fcntllock-perl (0.22-3build7) ...
    -#8 21.17 Setting up libalgorithm-diff-perl (1.201-1) ...
    -#8 21.17 Setting up python3-wheel (0.37.1-2ubuntu0.22.04.1) ...
    -#8 21.30 Setting up gcc (4:11.2.0-1ubuntu1) ...
    -#8 21.31 Setting up dpkg-dev (1.21.1ubuntu2.2) ...
    -#8 21.32 Setting up libpython3.10-dev:amd64 (3.10.12-1~22.04.2) ...
    -#8 21.32 Setting up python3-pip (22.0.2+dfsg-1ubuntu0.3) ...
    -
    -
    -
    #8 22.39 Setting up python3.10-dev (3.10.12-1~22.04.2) ...
    -#8 22.40 Setting up g++ (4:11.2.0-1ubuntu1) ...
    -#8 22.45 update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode
    -#8 22.45 update-alternatives: warning: skip creation of /usr/share/man/man1/c++.1.gz because associated file /usr/share/man/man1/g++.1.gz (of link group c++) doesn't exist
    -#8 22.46 Setting up gnupg (2.2.27-3ubuntu2.1) ...
    -#8 22.46 Setting up build-essential (12.9ubuntu3) ...
    -#8 22.47 Setting up libalgorithm-diff-xs-perl (0.04-6build3) ...
    -#8 22.47 Setting up libalgorithm-merge-perl (0.08-3) ...
    -#8 22.47 Setting up libpython3-dev:amd64 (3.10.6-1~22.04) ...
    -#8 22.48 Setting up python3-dev (3.10.6-1~22.04) ...
    -#8 22.48 Processing triggers for libc-bin (2.35-0ubuntu3.4) ...
    -
    -
    -
    #8 22.95 Processing triggers for ca-certificates (20230311ubuntu0.22.04.1) ...
    -#8 22.95 Updating certificates in /etc/ssl/certs...
    -
    -
    -
    #8 23.37 0 added, 0 removed; done.
    -#8 23.37 Running hooks in /etc/ca-certificates/update.d...
    -#8 23.39 done.
    -
    +#8 15.10 Selecting previously unselected package libksba8:amd64. +#8 15.10 Preparing to unpack .../064-libksba8_1.6.0-2ubuntu0.2_amd64.deb ... +#8 15.10 Unpacking libksba8:amd64 (1.6.0-2ubuntu0.2) ... +#8 15.13 Selecting previously unselected package libsasl2-modules-db:amd64. +#8 15.13 Preparing to unpack .../065-libsasl2-modules-db_2.1.27+dfsg2-3ubuntu1.2_amd64.deb ... +#8 15.13 Unpacking libsasl2-modules-db:amd64 (2.1.27+dfsg2-3ubuntu1.2) ... +#8 15.15 Selecting previously unselected package libsasl2-2:amd64. +
    +
    +
    #8 15.16 Preparing to unpack .../066-libsasl2-2_2.1.27+dfsg2-3ubuntu1.2_amd64.deb ...
    +#8 15.16 Unpacking libsasl2-2:amd64 (2.1.27+dfsg2-3ubuntu1.2) ...
    +#8 15.18 Selecting previously unselected package libldap-2.5-0:amd64.
    +#8 15.19 Preparing to unpack .../067-libldap-2.5-0_2.5.16+dfsg-0ubuntu0.22.04.1_amd64.deb ...
    +#8 15.19 Unpacking libldap-2.5-0:amd64 (2.5.16+dfsg-0ubuntu0.22.04.1) ...
    +#8 15.21 Selecting previously unselected package libnpth0:amd64.
    +#8 15.21 Preparing to unpack .../068-libnpth0_1.6-3build2_amd64.deb ...
    +#8 15.22 Unpacking libnpth0:amd64 (1.6-3build2) ...
    +#8 15.24 Selecting previously unselected package dirmngr.
    +#8 15.24 Preparing to unpack .../069-dirmngr_2.2.27-3ubuntu2.1_amd64.deb ...
    +#8 15.26 Unpacking dirmngr (2.2.27-3ubuntu2.1) ...
    +#8 15.29 Selecting previously unselected package libfakeroot:amd64.
    +#8 15.29 Preparing to unpack .../070-libfakeroot_1.28-1ubuntu1_amd64.deb ...
    +#8 15.29 Unpacking libfakeroot:amd64 (1.28-1ubuntu1) ...
    +#8 15.32 Selecting previously unselected package fakeroot.
    +#8 15.32 Preparing to unpack .../071-fakeroot_1.28-1ubuntu1_amd64.deb ...
    +#8 15.32 Unpacking fakeroot (1.28-1ubuntu1) ...
    +#8 15.35 Selecting previously unselected package fonts-dejavu-core.
    +#8 15.35 Preparing to unpack .../072-fonts-dejavu-core_2.37-2build1_all.deb ...
    +#8 15.35 Unpacking fonts-dejavu-core (2.37-2build1) ...
    +
    +
    +
    #8 15.48 Selecting previously unselected package fontconfig-config.
    +#8 15.48 Preparing to unpack .../073-fontconfig-config_2.13.1-4.2ubuntu5_all.deb ...
    +#8 15.48 Unpacking fontconfig-config (2.13.1-4.2ubuntu5) ...
    +#8 15.51 Selecting previously unselected package gnupg-l10n.
    +#8 15.51 Preparing to unpack .../074-gnupg-l10n_2.2.27-3ubuntu2.1_all.deb ...
    +#8 15.51 Unpacking gnupg-l10n (2.2.27-3ubuntu2.1) ...
    +#8 15.54 Selecting previously unselected package gnupg-utils.
    +#8 15.54 Preparing to unpack .../075-gnupg-utils_2.2.27-3ubuntu2.1_amd64.deb ...
    +#8 15.54 Unpacking gnupg-utils (2.2.27-3ubuntu2.1) ...
    +#8 15.57 Selecting previously unselected package gpg.
    +#8 15.57 Preparing to unpack .../076-gpg_2.2.27-3ubuntu2.1_amd64.deb ...
    +#8 15.57 Unpacking gpg (2.2.27-3ubuntu2.1) ...
    +#8 15.60 Selecting previously unselected package pinentry-curses.
    +#8 15.60 Preparing to unpack .../077-pinentry-curses_1.1.1-1build2_amd64.deb ...
    +#8 15.60 Unpacking pinentry-curses (1.1.1-1build2) ...
    +#8 15.62 Selecting previously unselected package gpg-agent.
    +
    +
    +
    #8 15.63 Preparing to unpack .../078-gpg-agent_2.2.27-3ubuntu2.1_amd64.deb ...
    +#8 15.63 Unpacking gpg-agent (2.2.27-3ubuntu2.1) ...
    +#8 15.66 Selecting previously unselected package gpg-wks-client.
    +#8 15.66 Preparing to unpack .../079-gpg-wks-client_2.2.27-3ubuntu2.1_amd64.deb ...
    +#8 15.66 Unpacking gpg-wks-client (2.2.27-3ubuntu2.1) ...
    +#8 15.68 Selecting previously unselected package gpg-wks-server.
    +#8 15.69 Preparing to unpack .../080-gpg-wks-server_2.2.27-3ubuntu2.1_amd64.deb ...
    +#8 15.69 Unpacking gpg-wks-server (2.2.27-3ubuntu2.1) ...
    +#8 15.71 Selecting previously unselected package gpgsm.
    +#8 15.71 Preparing to unpack .../081-gpgsm_2.2.27-3ubuntu2.1_amd64.deb ...
    +#8 15.71 Unpacking gpgsm (2.2.27-3ubuntu2.1) ...
    +#8 15.74 Selecting previously unselected package gnupg.
    +#8 15.74 Preparing to unpack .../082-gnupg_2.2.27-3ubuntu2.1_all.deb ...
    +#8 15.74 Unpacking gnupg (2.2.27-3ubuntu2.1) ...
    +#8 15.77 Selecting previously unselected package javascript-common.
    +#8 15.77 Preparing to unpack .../083-javascript-common_11+nmu1_all.deb ...
    +#8 15.78 Unpacking javascript-common (11+nmu1) ...
    +#8 15.82 Selecting previously unselected package libalgorithm-diff-perl.
    +#8 15.82 Preparing to unpack .../084-libalgorithm-diff-perl_1.201-1_all.deb ...
    +#8 15.82 Unpacking libalgorithm-diff-perl (1.201-1) ...
    +#8 15.85 Selecting previously unselected package libalgorithm-diff-xs-perl.
    +
    +
    +
    #8 15.85 Preparing to unpack .../085-libalgorithm-diff-xs-perl_0.04-6build3_amd64.deb ...
    +#8 15.85 Unpacking libalgorithm-diff-xs-perl (0.04-6build3) ...
    +#8 15.87 Selecting previously unselected package libalgorithm-merge-perl.
    +#8 15.88 Preparing to unpack .../086-libalgorithm-merge-perl_0.08-3_all.deb ...
    +#8 15.88 Unpacking libalgorithm-merge-perl (0.08-3) ...
    +#8 15.90 Selecting previously unselected package libbrotli1:amd64.
    +#8 15.90 Preparing to unpack .../087-libbrotli1_1.0.9-2build6_amd64.deb ...
    +#8 15.90 Unpacking libbrotli1:amd64 (1.0.9-2build6) ...
    +#8 15.93 Selecting previously unselected package libfreetype6:amd64.
    +#8 15.94 Preparing to unpack .../088-libfreetype6_2.11.1+dfsg-1ubuntu0.2_amd64.deb ...
    +#8 15.94 Unpacking libfreetype6:amd64 (2.11.1+dfsg-1ubuntu0.2) ...
    +#8 15.98 Selecting previously unselected package libfontconfig1:amd64.
    +#8 15.98 Preparing to unpack .../089-libfontconfig1_2.13.1-4.2ubuntu5_amd64.deb ...
    +#8 15.98 Unpacking libfontconfig1:amd64 (2.13.1-4.2ubuntu5) ...
    +#8 16.01 Selecting previously unselected package libjpeg-turbo8:amd64.
    +#8 16.01 Preparing to unpack .../090-libjpeg-turbo8_2.1.2-0ubuntu1_amd64.deb ...
    +#8 16.01 Unpacking libjpeg-turbo8:amd64 (2.1.2-0ubuntu1) ...
    +#8 16.03 Selecting previously unselected package libjpeg8:amd64.
    +#8 16.04 Preparing to unpack .../091-libjpeg8_8c-2ubuntu10_amd64.deb ...
    +#8 16.04 Unpacking libjpeg8:amd64 (8c-2ubuntu10) ...
    +#8 16.06 Selecting previously unselected package libdeflate0:amd64.
    +#8 16.06 Preparing to unpack .../092-libdeflate0_1.10-2_amd64.deb ...
    +#8 16.06 Unpacking libdeflate0:amd64 (1.10-2) ...
    +#8 16.09 Selecting previously unselected package libjbig0:amd64.
    +
    +
    +
    #8 16.09 Preparing to unpack .../093-libjbig0_2.1-3.1ubuntu0.22.04.1_amd64.deb ...
    +#8 16.09 Unpacking libjbig0:amd64 (2.1-3.1ubuntu0.22.04.1) ...
    +#8 16.12 Selecting previously unselected package libwebp7:amd64.
    +#8 16.12 Preparing to unpack .../094-libwebp7_1.2.2-2ubuntu0.22.04.2_amd64.deb ...
    +#8 16.12 Unpacking libwebp7:amd64 (1.2.2-2ubuntu0.22.04.2) ...
    +#8 16.15 Selecting previously unselected package libtiff5:amd64.
    +#8 16.15 Preparing to unpack .../095-libtiff5_4.3.0-6ubuntu0.6_amd64.deb ...
    +#8 16.15 Unpacking libtiff5:amd64 (4.3.0-6ubuntu0.6) ...
    +#8 16.18 Selecting previously unselected package libxpm4:amd64.
    +#8 16.18 Preparing to unpack .../096-libxpm4_1%3a3.5.12-1ubuntu0.22.04.2_amd64.deb ...
    +#8 16.18 Unpacking libxpm4:amd64 (1:3.5.12-1ubuntu0.22.04.2) ...
    +#8 16.21 Selecting previously unselected package libgd3:amd64.
    +#8 16.21 Preparing to unpack .../097-libgd3_2.3.0-2ubuntu2_amd64.deb ...
    +#8 16.21 Unpacking libgd3:amd64 (2.3.0-2ubuntu2) ...
    +#8 16.23 Selecting previously unselected package libc-devtools.
    +#8 16.24 Preparing to unpack .../098-libc-devtools_2.35-0ubuntu3.4_amd64.deb ...
    +#8 16.24 Unpacking libc-devtools (2.35-0ubuntu3.4) ...
    +#8 16.26 Selecting previously unselected package libexpat1-dev:amd64.
    +#8 16.26 Preparing to unpack .../099-libexpat1-dev_2.4.7-1ubuntu0.2_amd64.deb ...
    +#8 16.27 Unpacking libexpat1-dev:amd64 (2.4.7-1ubuntu0.2) ...
    +#8 16.29 Selecting previously unselected package libfile-fcntllock-perl.
    +#8 16.30 Preparing to unpack .../100-libfile-fcntllock-perl_0.22-3build7_amd64.deb ...
    +#8 16.30 Unpacking libfile-fcntllock-perl (0.22-3build7) ...
    +#8 16.33 Selecting previously unselected package libjs-jquery.
    +
    +
    +
    #8 16.33 Preparing to unpack .../101-libjs-jquery_3.6.0+dfsg+~3.5.13-1_all.deb ...
    +#8 16.34 Unpacking libjs-jquery (3.6.0+dfsg+~3.5.13-1) ...
    +#8 16.36 Selecting previously unselected package libjs-underscore.
    +#8 16.37 Preparing to unpack .../102-libjs-underscore_1.13.2~dfsg-2_all.deb ...
    +#8 16.37 Unpacking libjs-underscore (1.13.2~dfsg-2) ...
    +#8 16.39 Selecting previously unselected package libjs-sphinxdoc.
    +#8 16.39 Preparing to unpack .../103-libjs-sphinxdoc_4.3.2-1_all.deb ...
    +#8 16.40 Unpacking libjs-sphinxdoc (4.3.2-1) ...
    +#8 16.42 Selecting previously unselected package libldap-common.
    +#8 16.42 Preparing to unpack .../104-libldap-common_2.5.16+dfsg-0ubuntu0.22.04.1_all.deb ...
    +#8 16.43 Unpacking libldap-common (2.5.16+dfsg-0ubuntu0.22.04.1) ...
    +#8 16.45 Selecting previously unselected package libpython3.10:amd64.
    +#8 16.45 Preparing to unpack .../105-libpython3.10_3.10.12-1~22.04.2_amd64.deb ...
    +#8 16.46 Unpacking libpython3.10:amd64 (3.10.12-1~22.04.2) ...
    +#8 16.51 Selecting previously unselected package zlib1g-dev:amd64.
    +#8 16.51 Preparing to unpack .../106-zlib1g-dev_1%3a1.2.11.dfsg-2ubuntu9.2_amd64.deb ...
    +#8 16.52 Unpacking zlib1g-dev:amd64 (1:1.2.11.dfsg-2ubuntu9.2) ...
    +#8 16.54 Selecting previously unselected package libpython3.10-dev:amd64.
    +#8 16.54 Preparing to unpack .../107-libpython3.10-dev_3.10.12-1~22.04.2_amd64.deb ...
    +#8 16.54 Unpacking libpython3.10-dev:amd64 (3.10.12-1~22.04.2) ...
    +
    +
    +
    #8 16.69 Selecting previously unselected package libpython3-dev:amd64.
    +#8 16.69 Preparing to unpack .../108-libpython3-dev_3.10.6-1~22.04_amd64.deb ...
    +#8 16.69 Unpacking libpython3-dev:amd64 (3.10.6-1~22.04) ...
    +#8 16.72 Selecting previously unselected package libsasl2-modules:amd64.
    +#8 16.72 Preparing to unpack .../109-libsasl2-modules_2.1.27+dfsg2-3ubuntu1.2_amd64.deb ...
    +#8 16.72 Unpacking libsasl2-modules:amd64 (2.1.27+dfsg2-3ubuntu1.2) ...
    +#8 16.75 Selecting previously unselected package manpages-dev.
    +#8 16.75 Preparing to unpack .../110-manpages-dev_5.10-1ubuntu1_all.deb ...
    +#8 16.75 Unpacking manpages-dev (5.10-1ubuntu1) ...
    +
    +
    +
    #8 17.03 Selecting previously unselected package python3.10-dev.
    +#8 17.04 Preparing to unpack .../111-python3.10-dev_3.10.12-1~22.04.2_amd64.deb ...
    +#8 17.04 Unpacking python3.10-dev (3.10.12-1~22.04.2) ...
    +#8 17.06 Selecting previously unselected package python3-lib2to3.
    +#8 17.07 Preparing to unpack .../112-python3-lib2to3_3.10.8-1~22.04_all.deb ...
    +#8 17.07 Unpacking python3-lib2to3 (3.10.8-1~22.04) ...
    +#8 17.11 Selecting previously unselected package python3-distutils.
    +#8 17.11 Preparing to unpack .../113-python3-distutils_3.10.8-1~22.04_all.deb ...
    +#8 17.12 Unpacking python3-distutils (3.10.8-1~22.04) ...
    +#8 17.15 Selecting previously unselected package python3-dev.
    +#8 17.15 Preparing to unpack .../114-python3-dev_3.10.6-1~22.04_amd64.deb ...
    +#8 17.16 Unpacking python3-dev (3.10.6-1~22.04) ...
    +#8 17.18 Selecting previously unselected package python3-setuptools.
    +#8 17.18 Preparing to unpack .../115-python3-setuptools_59.6.0-1.2ubuntu0.22.04.1_all.deb ...
    +#8 17.19 Unpacking python3-setuptools (59.6.0-1.2ubuntu0.22.04.1) ...
    +#8 17.24 Selecting previously unselected package python3-wheel.
    +#8 17.24 Preparing to unpack .../116-python3-wheel_0.37.1-2ubuntu0.22.04.1_all.deb ...
    +#8 17.25 Unpacking python3-wheel (0.37.1-2ubuntu0.22.04.1) ...
    +#8 17.27 Selecting previously unselected package python3-pip.
    +
    +
    +
    #8 17.28 Preparing to unpack .../117-python3-pip_22.0.2+dfsg-1ubuntu0.3_all.deb ...
    +#8 17.28 Unpacking python3-pip (22.0.2+dfsg-1ubuntu0.3) ...
    +#8 17.44 Setting up libksba8:amd64 (1.6.0-2ubuntu0.2) ...
    +#8 17.44 Setting up media-types (7.0.0) ...
    +#8 17.45 Setting up javascript-common (11+nmu1) ...
    +#8 17.47 Setting up gcc-11-base:amd64 (11.4.0-1ubuntu1~22.04) ...
    +#8 17.48 Setting up libxau6:amd64 (1:1.0.9-1build5) ...
    +#8 17.48 Setting up lto-disabled-list (24) ...
    +#8 17.49 Setting up manpages (5.10-1ubuntu1) ...
    +#8 17.49 Setting up libbrotli1:amd64 (1.0.9-2build6) ...
    +#8 17.50 Setting up libsqlite3-0:amd64 (3.37.2-2ubuntu0.1) ...
    +#8 17.50 Setting up libsasl2-modules:amd64 (2.1.27+dfsg2-3ubuntu1.2) ...
    +#8 17.51 Setting up binutils-common:amd64 (2.38-4ubuntu2.3) ...
    +#8 17.52 Setting up libdeflate0:amd64 (1.10-2) ...
    +#8 17.52 Setting up linux-libc-dev:amd64 (5.15.0-87.97) ...
    +#8 17.53 Setting up libctf-nobfd0:amd64 (2.38-4ubuntu2.3) ...
    +
    +
    +
    #8 17.53 Setting up libnpth0:amd64 (1.6-3build2) ...
    +#8 17.54 Setting up libassuan0:amd64 (2.5.5-1build1) ...
    +#8 17.54 Setting up libgomp1:amd64 (12.3.0-1ubuntu1~22.04) ...
    +#8 17.55 Setting up perl-modules-5.34 (5.34.0-3ubuntu1.2) ...
    +#8 17.55 Setting up bzip2 (1.0.8-5build1) ...
    +#8 17.56 Setting up libldap-common (2.5.16+dfsg-0ubuntu0.22.04.1) ...
    +#8 17.57 Setting up libjbig0:amd64 (2.1-3.1ubuntu0.22.04.1) ...
    +#8 17.57 Setting up libfakeroot:amd64 (1.28-1ubuntu1) ...
    +#8 17.58 Setting up libasan6:amd64 (11.4.0-1ubuntu1~22.04) ...
    +#8 17.59 Setting up libsasl2-modules-db:amd64 (2.1.27+dfsg2-3ubuntu1.2) ...
    +#8 17.59 Setting up fakeroot (1.28-1ubuntu1) ...
    +#8 17.60 update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode
    +#8 17.60 update-alternatives: warning: skip creation of /usr/share/man/man1/fakeroot.1.gz because associated file /usr/share/man/man1/fakeroot-sysv.1.gz (of link group fakeroot) doesn't exist
    +#8 17.60 update-alternatives: warning: skip creation of /usr/share/man/man1/faked.1.gz because associated file /usr/share/man/man1/faked-sysv.1.gz (of link group fakeroot) doesn't exist
    +#8 17.60 update-alternatives: warning: skip creation of /usr/share/man/es/man1/fakeroot.1.gz because associated file /usr/share/man/es/man1/fakeroot-sysv.1.gz (of link group fakeroot) doesn't exist
    +#8 17.60 update-alternatives: warning: skip creation of /usr/share/man/es/man1/faked.1.gz because associated file /usr/share/man/es/man1/faked-sysv.1.gz (of link group fakeroot) doesn't exist
    +#8 17.60 update-alternatives: warning: skip creation of /usr/share/man/fr/man1/fakeroot.1.gz because associated file /usr/share/man/fr/man1/fakeroot-sysv.1.gz (of link group fakeroot) doesn't exist
    +#8 17.60 update-alternatives: warning: skip creation of /usr/share/man/fr/man1/faked.1.gz because associated file /usr/share/man/fr/man1/faked-sysv.1.gz (of link group fakeroot) doesn't exist
    +#8 17.60 update-alternatives: warning: skip creation of /usr/share/man/sv/man1/fakeroot.1.gz because associated file /usr/share/man/sv/man1/fakeroot-sysv.1.gz (of link group fakeroot) doesn't exist
    +#8 17.60 update-alternatives: warning: skip creation of /usr/share/man/sv/man1/faked.1.gz because associated file /usr/share/man/sv/man1/faked-sysv.1.gz (of link group fakeroot) doesn't exist
    +#8 17.61 Setting up libtirpc-dev:amd64 (1.3.2-2ubuntu0.1) ...
    +#8 17.61 Setting up rpcsvc-proto (1.4.2-0ubuntu6) ...
    +#8 17.62 Setting up libx11-data (2:1.7.5-1ubuntu0.3) ...
    +#8 17.62 Setting up make (4.3-4.1build1) ...
    +#8 17.63 Setting up libmpfr6:amd64 (4.1.0-3build3) ...
    +#8 17.64 Setting up gnupg-l10n (2.2.27-3ubuntu2.1) ...
    +#8 17.64 Setting up xz-utils (5.2.5-2ubuntu1) ...
    +#8 17.65 update-alternatives: using /usr/bin/xz to provide /usr/bin/lzma (lzma) in auto mode
    +#8 17.65 update-alternatives: warning: skip creation of /usr/share/man/man1/lzma.1.gz because associated file /usr/share/man/man1/xz.1.gz (of link group lzma) doesn't exist
    +#8 17.65 update-alternatives: warning: skip creation of /usr/share/man/man1/unlzma.1.gz because associated file /usr/share/man/man1/unxz.1.gz (of link group lzma) doesn't exist
    +#8 17.65 update-alternatives: warning: skip creation of /usr/share/man/man1/lzcat.1.gz because associated file /usr/share/man/man1/xzcat.1.gz (of link group lzma) doesn't exist
    +#8 17.65 update-alternatives: warning: skip creation of /usr/share/man/man1/lzmore.1.gz because associated file /usr/share/man/man1/xzmore.1.gz (of link group lzma) doesn't exist
    +#8 17.65 update-alternatives: warning: skip creation of /usr/share/man/man1/lzless.1.gz because associated file /usr/share/man/man1/xzless.1.gz (of link group lzma) doesn't exist
    +#8 17.65 update-alternatives: warning: skip creation of /usr/share/man/man1/lzdiff.1.gz because associated file /usr/share/man/man1/xzdiff.1.gz (of link group lzma) doesn't exist
    +#8 17.65 update-alternatives: warning: skip creation of /usr/share/man/man1/lzcmp.1.gz because associated file /usr/share/man/man1/xzcmp.1.gz (of link group lzma) doesn't exist
    +#8 17.65 update-alternatives: warning: skip creation of /usr/share/man/man1/lzgrep.1.gz because associated file /usr/share/man/man1/xzgrep.1.gz (of link group lzma) doesn't exist
    +#8 17.65 update-alternatives: warning: skip creation of /usr/share/man/man1/lzegrep.1.gz because associated file /usr/share/man/man1/xzegrep.1.gz (of link group lzma) doesn't exist
    +#8 17.65 update-alternatives: warning: skip creation of /usr/share/man/man1/lzfgrep.1.gz because associated file /usr/share/man/man1/xzfgrep.1.gz (of link group lzma) doesn't exist
    +#8 17.66 Setting up libquadmath0:amd64 (12.3.0-1ubuntu1~22.04) ...
    +#8 17.66 Setting up libpng16-16:amd64 (1.6.37-3build5) ...
    +#8 17.67 Setting up libmpc3:amd64 (1.2.1-2build1) ...
    +#8 17.67 Setting up libatomic1:amd64 (12.3.0-1ubuntu1~22.04) ...
    +#8 17.68 Setting up patch (2.7.6-7build2) ...
    +#8 17.68 Setting up fonts-dejavu-core (2.37-2build1) ...
    +#8 17.71 Setting up ucf (3.0043) ...
    +
    +
    +
    #8 17.82 debconf: unable to initialize frontend: Dialog
    +#8 17.82 debconf: (TERM is not set, so the dialog frontend is not usable.)
    +#8 17.82 debconf: falling back to frontend: Readline
    +#8 17.86 Setting up libjpeg-turbo8:amd64 (2.1.2-0ubuntu1) ...
    +#8 17.86 Setting up libsasl2-2:amd64 (2.1.27+dfsg2-3ubuntu1.2) ...
    +#8 17.87 Setting up libwebp7:amd64 (1.2.2-2ubuntu0.22.04.2) ...
    +#8 17.88 Setting up libubsan1:amd64 (12.3.0-1ubuntu1~22.04) ...
    +#8 17.88 Setting up libmd0:amd64 (1.0.4-1build1) ...
    +#8 17.89 Setting up libnsl-dev:amd64 (1.3.0-2build2) ...
    +#8 17.90 Setting up libcrypt-dev:amd64 (1:4.4.27-1) ...
    +#8 17.90 Setting up libmpdec3:amd64 (2.5.1-2build2) ...
    +#8 17.91 Setting up netbase (6.3) ...
    +#8 17.92 Setting up libjs-jquery (3.6.0+dfsg+~3.5.13-1) ...
    +#8 17.93 Setting up libbinutils:amd64 (2.38-4ubuntu2.3) ...
    +#8 17.94 Setting up libisl23:amd64 (0.24-2build1) ...
    +#8 17.94 Setting up libc-dev-bin (2.35-0ubuntu3.4) ...
    +#8 17.94 Setting up openssl (3.0.2-0ubuntu1.12) ...
    +#8 17.95 Setting up libbsd0:amd64 (0.11.5-1) ...
    +#8 17.96 Setting up readline-common (8.1.2-1) ...
    +#8 17.97 Setting up libcc1-0:amd64 (12.3.0-1ubuntu1~22.04) ...
    +#8 17.97 Setting up liblocale-gettext-perl (1.07-4build3) ...
    +#8 17.98 Setting up liblsan0:amd64 (12.3.0-1ubuntu1~22.04) ...
    +#8 17.98 Setting up libitm1:amd64 (12.3.0-1ubuntu1~22.04) ...
    +#8 17.99 Setting up libgdbm6:amd64 (1.23-1) ...
    +
    +
    +
    #8 18.00 Setting up libjs-underscore (1.13.2~dfsg-2) ...
    +#8 18.00 Setting up libtsan0:amd64 (11.4.0-1ubuntu1~22.04) ...
    +#8 18.01 Setting up libctf0:amd64 (2.38-4ubuntu2.3) ...
    +#8 18.01 Setting up libjpeg8:amd64 (8c-2ubuntu10) ...
    +#8 18.02 Setting up pinentry-curses (1.1.1-1build2) ...
    +#8 18.03 Setting up cpp-11 (11.4.0-1ubuntu1~22.04) ...
    +#8 18.03 Setting up manpages-dev (5.10-1ubuntu1) ...
    +#8 18.04 Setting up libxdmcp6:amd64 (1:1.1.3-0ubuntu5) ...
    +#8 18.04 Setting up libxcb1:amd64 (1.14-3ubuntu3) ...
    +#8 18.05 Setting up fontconfig-config (2.13.1-4.2ubuntu5) ...
    +#8 18.13 Setting up libreadline8:amd64 (8.1.2-1) ...
    +#8 18.14 Setting up libldap-2.5-0:amd64 (2.5.16+dfsg-0ubuntu0.22.04.1) ...
    +#8 18.15 Setting up libpython3.10-stdlib:amd64 (3.10.12-1~22.04.2) ...
    +#8 18.15 Setting up ca-certificates (20230311ubuntu0.22.04.1) ...
    +#8 18.27 debconf: unable to initialize frontend: Dialog
    +#8 18.27 debconf: (TERM is not set, so the dialog frontend is not usable.)
    +#8 18.27 debconf: falling back to frontend: Readline
    +
    +
    +
    #8 18.79 Updating certificates in /etc/ssl/certs...
    +
    +
    +
    #8 19.56 137 added, 0 removed; done.
    +#8 19.59 Setting up libfreetype6:amd64 (2.11.1+dfsg-1ubuntu0.2) ...
    +#8 19.59 Setting up libgdbm-compat4:amd64 (1.23-1) ...
    +#8 19.60 Setting up libjs-sphinxdoc (4.3.2-1) ...
    +#8 19.60 Setting up libgcc-11-dev:amd64 (11.4.0-1ubuntu1~22.04) ...
    +#8 19.61 Setting up cpp (4:11.2.0-1ubuntu1) ...
    +#8 19.61 Setting up gpgconf (2.2.27-3ubuntu2.1) ...
    +#8 19.62 Setting up libc6-dev:amd64 (2.35-0ubuntu3.4) ...
    +#8 19.62 Setting up libx11-6:amd64 (2:1.7.5-1ubuntu0.3) ...
    +#8 19.63 Setting up libtiff5:amd64 (4.3.0-6ubuntu0.6) ...
    +#8 19.64 Setting up libfontconfig1:amd64 (2.13.1-4.2ubuntu5) ...
    +#8 19.64 Setting up gpg (2.2.27-3ubuntu2.1) ...
    +#8 19.65 Setting up libpython3-stdlib:amd64 (3.10.6-1~22.04) ...
    +#8 19.65 Setting up gnupg-utils (2.2.27-3ubuntu2.1) ...
    +#8 19.66 Setting up binutils-x86-64-linux-gnu (2.38-4ubuntu2.3) ...
    +#8 19.66 Setting up libpython3.10:amd64 (3.10.12-1~22.04.2) ...
    +#8 19.67 Setting up libperl5.34:amd64 (5.34.0-3ubuntu1.2) ...
    +#8 19.67 Setting up gpg-agent (2.2.27-3ubuntu2.1) ...
    +
    +
    +
    #8 20.29 Setting up python3.10 (3.10.12-1~22.04.2) ...
    +
    +
    +
    #8 21.13 Setting up libxpm4:amd64 (1:3.5.12-1ubuntu0.22.04.2) ...
    +#8 21.14 Setting up gpgsm (2.2.27-3ubuntu2.1) ...
    +#8 21.14 Setting up python3 (3.10.6-1~22.04) ...
    +#8 21.15 running python rtupdate hooks for python3.10...
    +#8 21.15 running python post-rtupdate hooks for python3.10...
    +#8 21.26 Setting up binutils (2.38-4ubuntu2.3) ...
    +
    +
    +
    #8 21.27 Setting up dirmngr (2.2.27-3ubuntu2.1) ...
    +#8 21.44 Setting up perl (5.34.0-3ubuntu1.2) ...
    +#8 21.46 Setting up libexpat1-dev:amd64 (2.4.7-1ubuntu0.2) ...
    +#8 21.46 Setting up libgd3:amd64 (2.3.0-2ubuntu2) ...
    +#8 21.47 Setting up libdpkg-perl (1.21.1ubuntu2.2) ...
    +#8 21.47 Setting up libstdc++-11-dev:amd64 (11.4.0-1ubuntu1~22.04) ...
    +#8 21.48 Setting up gpg-wks-server (2.2.27-3ubuntu2.1) ...
    +#8 21.48 Setting up zlib1g-dev:amd64 (1:1.2.11.dfsg-2ubuntu9.2) ...
    +#8 21.49 Setting up gcc-11 (11.4.0-1ubuntu1~22.04) ...
    +#8 21.49 Setting up python3-lib2to3 (3.10.8-1~22.04) ...
    +
    +
    +
    #8 21.62 Setting up libc-devtools (2.35-0ubuntu3.4) ...
    +#8 21.63 Setting up python3-pkg-resources (59.6.0-1.2ubuntu0.22.04.1) ...
    +#8 21.85 Setting up python3-distutils (3.10.8-1~22.04) ...
    +
    +
    +
    #8 22.01 Setting up python3-setuptools (59.6.0-1.2ubuntu0.22.04.1) ...
    +
    +
    +
    #8 22.42 Setting up gpg-wks-client (2.2.27-3ubuntu2.1) ...
    +#8 22.43 Setting up g++-11 (11.4.0-1ubuntu1~22.04) ...
    +#8 22.43 Setting up libfile-fcntllock-perl (0.22-3build7) ...
    +#8 22.44 Setting up libalgorithm-diff-perl (1.201-1) ...
    +#8 22.44 Setting up python3-wheel (0.37.1-2ubuntu0.22.04.1) ...
    +
    +
    +
    #8 22.61 Setting up gcc (4:11.2.0-1ubuntu1) ...
    +#8 22.62 Setting up dpkg-dev (1.21.1ubuntu2.2) ...
    +#8 22.63 Setting up libpython3.10-dev:amd64 (3.10.12-1~22.04.2) ...
    +#8 22.63 Setting up python3-pip (22.0.2+dfsg-1ubuntu0.3) ...
    +
    +
    +
    #8 23.98 Setting up python3.10-dev (3.10.12-1~22.04.2) ...
    +#8 23.99 Setting up g++ (4:11.2.0-1ubuntu1) ...
    +#8 24.01 update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode
    +#8 24.01 update-alternatives: warning: skip creation of /usr/share/man/man1/c++.1.gz because associated file /usr/share/man/man1/g++.1.gz (of link group c++) doesn't exist
    +#8 24.01 Setting up gnupg (2.2.27-3ubuntu2.1) ...
    +#8 24.02 Setting up build-essential (12.9ubuntu3) ...
    +#8 24.02 Setting up libalgorithm-diff-xs-perl (0.04-6build3) ...
    +#8 24.03 Setting up libalgorithm-merge-perl (0.08-3) ...
    +#8 24.03 Setting up libpython3-dev:amd64 (3.10.6-1~22.04) ...
    +#8 24.04 Setting up python3-dev (3.10.6-1~22.04) ...
    +#8 24.05 Processing triggers for libc-bin (2.35-0ubuntu3.4) ...
    +#8 24.10 Processing triggers for ca-certificates (20230311ubuntu0.22.04.1) ...
    +#8 24.11 Updating certificates in /etc/ssl/certs...
    +
    +
    +
    #8 24.66 0 added, 0 removed; done.
    +#8 24.66 Running hooks in /etc/ca-certificates/update.d...
    +#8 24.67 done.
    +
    -
    #8 DONE 25.0s
    +
    #8 DONE 26.3s
     
     #9 [device 4/6] RUN pip3 install BACpypes
     
    -
    #9 0.860 Collecting BACpypes
    -#9 0.941   Downloading bacpypes-0.18.7-py3-none-any.whl (191 kB)
    -#9 0.996      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 191.5/191.5 KB 3.5 MB/s eta 0:00:00
    +
    #9 0.908 Collecting BACpypes
    +#9 1.023   Downloading bacpypes-0.18.7-py3-none-any.whl (191 kB)
    +#9 1.073      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 191.5/191.5 KB 4.4 MB/s eta 0:00:00
    +#9 1.082 Installing collected packages: BACpypes
     
    -
    #9 1.002 Installing collected packages: BACpypes
    -#9 1.177 Successfully installed BACpypes-0.18.7
    -#9 1.177 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
    -#9 DONE 1.3s
    +
    #9 1.308 Successfully installed BACpypes-0.18.7
    +#9 1.309 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
    +#9 DONE 1.4s
     
    #10 [device 5/6] COPY virtual_bacnet.py virtual_bacnet.py
    @@ -1645,10 +1652,10 @@ 

    BACnet Network Setup

    -
    #12 exporting layers 3.1s done
    -#12 writing image sha256:72ea2e34ce76902c6974df8a9e35af3874a4f960ad0f2c4237405ad50e9bdd65 done
    +
    #12 exporting layers 3.8s done
    +#12 writing image sha256:0879472069656f3a553333dc0b5e36a8d95baa7758a2f5c6f77bdcc873caf5fa done
     #12 naming to docker.io/library/guides-device done
    -#12 DONE 3.1s
    +#12 DONE 3.8s
     
     Network guides_bacnet  Creating
    @@ -1710,7 +1717,7 @@ 

    Pulling in BACnet Metadata -
    2023-10-18 02:24:56,120 | root |  CRITICAL: Install the 'bacnet-ingress' module, e.g. 'pip install buildingmotif[bacnet-ingress]'
    +
    2023-10-25 17:58:37,050 | root |  CRITICAL: Install the 'bacnet-ingress' module, e.g. 'pip install buildingmotif[bacnet-ingress]'
     
    ---------------------------------------------------------------------------
    @@ -2012,8 +2019,8 @@ 

    Point Type Inference - - + +
    diff --git a/objects.inv b/objects.inv index c1b58cc44ef4770026daf3f04d58cf19f846f1ff..fd38438f9832c8e74358dd5636a5f40e030a537e 100644 GIT binary patch delta 3417 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 delta 3751 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 RtJkc=f2ya^{{fZ}1uc>)PVfK# diff --git a/py-modindex.html b/py-modindex.html index 91a86e08e..93856edf9 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -18,12 +18,12 @@ - - - + + + - + @@ -37,9 +37,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +

    @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -515,12 +514,7 @@

    Python Module Index

        - buildingmotif.ingresses.csvingress - - - -     - buildingmotif.ingresses.naming_convention + buildingmotif.ingresses.csv @@ -532,11 +526,6 @@

    Python Module Index

        buildingmotif.ingresses.xlsx - - -     - buildingmotif.label_parsing -     @@ -639,8 +628,8 @@

    Python Module Index

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.api.html b/reference/apidoc/_autosummary/buildingmotif.api.html index 6ee4c6fff..14da742dd 100644 --- a/reference/apidoc/_autosummary/buildingmotif.api.html +++ b/reference/apidoc/_autosummary/buildingmotif.api.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -552,8 +551,8 @@

    buildingmotif.api

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.api.views.html b/reference/apidoc/_autosummary/buildingmotif.api.views.html index e2a3f6503..3e976ed1e 100644 --- a/reference/apidoc/_autosummary/buildingmotif.api.views.html +++ b/reference/apidoc/_autosummary/buildingmotif.api.views.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +

    @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -549,8 +548,8 @@

    buildingmotif.api.views

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.building_motif.building_motif.html b/reference/apidoc/_autosummary/buildingmotif.building_motif.building_motif.html index 740b04c20..a1930f6c3 100644 --- a/reference/apidoc/_autosummary/buildingmotif.building_motif.building_motif.html +++ b/reference/apidoc/_autosummary/buildingmotif.building_motif.building_motif.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -642,8 +641,8 @@

    buildingmotif.building_motif.building_motif

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.building_motif.html b/reference/apidoc/_autosummary/buildingmotif.building_motif.html index cb578149a..75dcdb283 100644 --- a/reference/apidoc/_autosummary/buildingmotif.building_motif.html +++ b/reference/apidoc/_autosummary/buildingmotif.building_motif.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -555,8 +554,8 @@

    buildingmotif.building_motif

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.building_motif.singleton.html b/reference/apidoc/_autosummary/buildingmotif.building_motif.singleton.html index 009a4f132..891979207 100644 --- a/reference/apidoc/_autosummary/buildingmotif.building_motif.singleton.html +++ b/reference/apidoc/_autosummary/buildingmotif.building_motif.singleton.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -572,8 +571,8 @@

    buildingmotif.building_motif.singleton

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.database.graph_connection.html b/reference/apidoc/_autosummary/buildingmotif.database.graph_connection.html index 9c31b47bb..5ca57170f 100644 --- a/reference/apidoc/_autosummary/buildingmotif.database.graph_connection.html +++ b/reference/apidoc/_autosummary/buildingmotif.database.graph_connection.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -620,8 +619,8 @@

    buildingmotif.database.graph_connection

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.database.html b/reference/apidoc/_autosummary/buildingmotif.database.html index e4ed83d13..aa3ac894b 100644 --- a/reference/apidoc/_autosummary/buildingmotif.database.html +++ b/reference/apidoc/_autosummary/buildingmotif.database.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -561,8 +560,8 @@

    buildingmotif.database

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.database.table_connection.html b/reference/apidoc/_autosummary/buildingmotif.database.table_connection.html index 490f4d136..e2ac70ab6 100644 --- a/reference/apidoc/_autosummary/buildingmotif.database.table_connection.html +++ b/reference/apidoc/_autosummary/buildingmotif.database.table_connection.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -1047,8 +1046,8 @@

    buildingmotif.database.table_connection

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.database.tables.html b/reference/apidoc/_autosummary/buildingmotif.database.tables.html index a77221116..f40bad3fe 100644 --- a/reference/apidoc/_autosummary/buildingmotif.database.tables.html +++ b/reference/apidoc/_autosummary/buildingmotif.database.tables.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -720,8 +719,8 @@

    buildingmotif.database.tables

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.database.utils.html b/reference/apidoc/_autosummary/buildingmotif.database.utils.html index 55e20f6cc..bdf24d264 100644 --- a/reference/apidoc/_autosummary/buildingmotif.database.utils.html +++ b/reference/apidoc/_autosummary/buildingmotif.database.utils.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -723,8 +722,8 @@

    buildingmotif.database.utils

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.dataclasses.html b/reference/apidoc/_autosummary/buildingmotif.dataclasses.html index f1fd554a3..96a16c0db 100644 --- a/reference/apidoc/_autosummary/buildingmotif.dataclasses.html +++ b/reference/apidoc/_autosummary/buildingmotif.dataclasses.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -564,8 +563,8 @@

    buildingmotif.dataclasses

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.dataclasses.library.html b/reference/apidoc/_autosummary/buildingmotif.dataclasses.library.html index 5e927d510..d8ac1aec9 100644 --- a/reference/apidoc/_autosummary/buildingmotif.dataclasses.library.html +++ b/reference/apidoc/_autosummary/buildingmotif.dataclasses.library.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -709,8 +708,8 @@

    buildingmotif.dataclasses.library

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.dataclasses.model.html b/reference/apidoc/_autosummary/buildingmotif.dataclasses.model.html index 34eb2b3c4..079f24922 100644 --- a/reference/apidoc/_autosummary/buildingmotif.dataclasses.model.html +++ b/reference/apidoc/_autosummary/buildingmotif.dataclasses.model.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -740,8 +739,8 @@

    buildingmotif.dataclasses.model

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.dataclasses.shape_collection.html b/reference/apidoc/_autosummary/buildingmotif.dataclasses.shape_collection.html index bd0faa5d5..7ac6e4958 100644 --- a/reference/apidoc/_autosummary/buildingmotif.dataclasses.shape_collection.html +++ b/reference/apidoc/_autosummary/buildingmotif.dataclasses.shape_collection.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -711,8 +710,8 @@

    buildingmotif.dataclasses.shape_collection

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.dataclasses.template.html b/reference/apidoc/_autosummary/buildingmotif.dataclasses.template.html index 4ba7d06a8..2f0d5a180 100644 --- a/reference/apidoc/_autosummary/buildingmotif.dataclasses.template.html +++ b/reference/apidoc/_autosummary/buildingmotif.dataclasses.template.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -931,8 +930,8 @@

    buildingmotif.dataclasses.template

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.dataclasses.validation.html b/reference/apidoc/_autosummary/buildingmotif.dataclasses.validation.html index e2596d585..43b4cd285 100644 --- a/reference/apidoc/_autosummary/buildingmotif.dataclasses.validation.html +++ b/reference/apidoc/_autosummary/buildingmotif.dataclasses.validation.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -930,8 +929,8 @@

    buildingmotif.dataclasses.validation

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.html b/reference/apidoc/_autosummary/buildingmotif.html index 4ae03c552..aeb8db132 100644 --- a/reference/apidoc/_autosummary/buildingmotif.html +++ b/reference/apidoc/_autosummary/buildingmotif.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -463,28 +462,25 @@

    buildingmotif

    buildingmotif.ingresses

    -

    buildingmotif.label_parsing

    -

    - -

    buildingmotif.libraries

    +

    buildingmotif.libraries

    -

    buildingmotif.namespaces

    +

    buildingmotif.namespaces

    -

    buildingmotif.schemas

    +

    buildingmotif.schemas

    -

    buildingmotif.shape_builder

    +

    buildingmotif.shape_builder

    -

    buildingmotif.template_compilation

    +

    buildingmotif.template_compilation

    -

    buildingmotif.template_matcher

    +

    buildingmotif.template_matcher

    Using the VF2 algorithm to compute subgraph isomorphisms between a template T and a graph G.

    -

    buildingmotif.utils

    +

    buildingmotif.utils

    @@ -588,8 +584,8 @@

    buildingmotif

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.ingresses.bacnet.html b/reference/apidoc/_autosummary/buildingmotif.ingresses.bacnet.html index b7653030d..e69ad720f 100644 --- a/reference/apidoc/_autosummary/buildingmotif.ingresses.bacnet.html +++ b/reference/apidoc/_autosummary/buildingmotif.ingresses.bacnet.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -575,8 +574,8 @@

    buildingmotif.ingresses.bacnet

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.ingresses.base.html b/reference/apidoc/_autosummary/buildingmotif.ingresses.base.html index fcd7da71f..60c570f8b 100644 --- a/reference/apidoc/_autosummary/buildingmotif.ingresses.base.html +++ b/reference/apidoc/_autosummary/buildingmotif.ingresses.base.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -636,8 +635,8 @@

    buildingmotif.ingresses.base

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.ingresses.brick.html b/reference/apidoc/_autosummary/buildingmotif.ingresses.brick.html index c9e1b579d..22c1b1871 100644 --- a/reference/apidoc/_autosummary/buildingmotif.ingresses.brick.html +++ b/reference/apidoc/_autosummary/buildingmotif.ingresses.brick.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -66,7 +66,7 @@ - + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -524,11 +523,11 @@

    buildingmotif.ingresses.brick

    next

    -

    buildingmotif.ingresses.csvingress

    +

    buildingmotif.ingresses.csv

    @@ -581,8 +580,8 @@

    buildingmotif.ingresses.brick

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.ingresses.csvingress.html b/reference/apidoc/_autosummary/buildingmotif.ingresses.csv.html similarity index 89% rename from reference/apidoc/_autosummary/buildingmotif.ingresses.csvingress.html rename to reference/apidoc/_autosummary/buildingmotif.ingresses.csv.html index 9dc3d6d55..d181cc494 100644 --- a/reference/apidoc/_autosummary/buildingmotif.ingresses.csvingress.html +++ b/reference/apidoc/_autosummary/buildingmotif.ingresses.csv.html @@ -9,7 +9,7 @@ - buildingmotif.ingresses.csvingress — BuildingMOTIF Documentation + buildingmotif.ingresses.csv — BuildingMOTIF Documentation @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -62,11 +62,11 @@ const thebe_selector_output = ".output, .cell_output" - + - + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -319,7 +318,7 @@ -
  • -

    buildingmotif.ingresses.csvingress

    +

    buildingmotif.ingresses.csv

    @@ -443,24 +442,24 @@

    buildingmotif.ingresses.csvingress

    -
    -

    buildingmotif.ingresses.csvingress#

    +
    +

    buildingmotif.ingresses.csv#

    Classes

    - +

    CSVIngress([filename, data])

    CSVIngress([filename, data])

    Reads rows from a CSV file and exposes them as records.

    -
    -class CSVIngress(filename: Optional[Path] = None, data: Optional[Union[str, StringIO]] = None)[source]#
    +
    +class CSVIngress(filename: Optional[Path] = None, data: Optional[Union[str, StringIO]] = None)[source]#

    Reads rows from a CSV file and exposes them as records. The type of the record is the name of the CSV file

    -
    -property records: List[Record]#
    +
    +property records: List[Record]#

    Generates (then caches) a list of Records from an underlying data source

    @@ -508,11 +507,11 @@

    buildingmotif.ingresses.csvingress

    next

    -

    buildingmotif.ingresses.naming_convention

    +

    buildingmotif.ingresses.template

    @@ -565,8 +564,8 @@

    buildingmotif.ingresses.csvingress

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.ingresses.html b/reference/apidoc/_autosummary/buildingmotif.ingresses.html index 7f252ddfc..30b81b05d 100644 --- a/reference/apidoc/_autosummary/buildingmotif.ingresses.html +++ b/reference/apidoc/_autosummary/buildingmotif.ingresses.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -457,16 +456,13 @@

    buildingmotif.ingresses

    buildingmotif.ingresses.brick

    -

    buildingmotif.ingresses.csvingress

    -

    - -

    buildingmotif.ingresses.naming_convention

    +

    buildingmotif.ingresses.csv

    -

    buildingmotif.ingresses.template

    +

    buildingmotif.ingresses.template

    -

    buildingmotif.ingresses.xlsx

    +

    buildingmotif.ingresses.xlsx

    @@ -570,8 +566,8 @@

    buildingmotif.ingresses

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.ingresses.naming_convention.html b/reference/apidoc/_autosummary/buildingmotif.ingresses.naming_convention.html deleted file mode 100644 index 54576e79f..000000000 --- a/reference/apidoc/_autosummary/buildingmotif.ingresses.naming_convention.html +++ /dev/null @@ -1,577 +0,0 @@ - - - - - - - - - - - - buildingmotif.ingresses.naming_convention — BuildingMOTIF Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - -
    -
    -
    -
    -
    - - -
    -
    ⚠️ This is an BETA release for testing purposes only ⚠️
    -
    - - - - -
    -
    - -
    - - - - - - - - - - - - - -
    - -
    - - - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    - - -
    - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    -
    - - - -
    -

    buildingmotif.ingresses.naming_convention

    - -
    -
    - -
    -
    -
    - - - - -
    - -
    -

    buildingmotif.ingresses.naming_convention#

    -

    Classes

    - - - - - - -

    NamingConventionIngress(upstream, ...)

    -
    -
    -class NamingConventionIngress(upstream: RecordIngressHandler, naming_convention: Callable[[str], List[TokenResult]])[source]#
    -
    -
    -dump_failed_labels()[source]#
    -
    - -
    -
    -property records: List[Record]#
    -

    Generates (then caches) a list of Records from an underlying data source

    -
    - -
    - -
    - - - - -
    - - - - - - - - -
    - - - - -
    -
    - - -
    - - -
    -
    -
    - - - - - -
    -
    - - \ No newline at end of file diff --git a/reference/apidoc/_autosummary/buildingmotif.ingresses.template.html b/reference/apidoc/_autosummary/buildingmotif.ingresses.template.html index de6e34183..e36b370a1 100644 --- a/reference/apidoc/_autosummary/buildingmotif.ingresses.template.html +++ b/reference/apidoc/_autosummary/buildingmotif.ingresses.template.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -67,7 +67,7 @@ - + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -518,12 +517,12 @@

    buildingmotif.ingresses.template

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.ingresses.xlsx.html b/reference/apidoc/_autosummary/buildingmotif.ingresses.xlsx.html index 68f43e4c3..18c10bc9a 100644 --- a/reference/apidoc/_autosummary/buildingmotif.ingresses.xlsx.html +++ b/reference/apidoc/_autosummary/buildingmotif.ingresses.xlsx.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -66,7 +66,7 @@ - + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -519,11 +518,11 @@

    buildingmotif.ingresses.xlsx

    next

    -

    buildingmotif.label_parsing

    +

    buildingmotif.libraries

    @@ -576,8 +575,8 @@

    buildingmotif.ingresses.xlsx

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.label_parsing.html b/reference/apidoc/_autosummary/buildingmotif.label_parsing.html deleted file mode 100644 index 1ea61a232..000000000 --- a/reference/apidoc/_autosummary/buildingmotif.label_parsing.html +++ /dev/null @@ -1,808 +0,0 @@ - - - - - - - - - - - - buildingmotif.label_parsing — BuildingMOTIF Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - -
    -
    -
    -
    -
    - - -
    -
    ⚠️ This is an BETA release for testing purposes only ⚠️
    -
    - - - - -
    -
    - -
    - - - - - - - - - - - - - -
    - -
    - - - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    - - -
    - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    -
    - - - -
    -

    buildingmotif.label_parsing

    - -
    -
    - -
    -
    -
    - - - - -
    - -
    -

    buildingmotif.label_parsing#

    -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    COMMON_ABBREVIATIONS(target)

    abbreviations(patterns)

    Constructs a choice combinator of string matching based on a dictionary.

    analyze_failures(failures)

    Analyze the failures of a parser.

    choice(*parsers)

    Constructs a choice combinator of parsers.

    constant(type_name)

    Matches a constant token.

    ensure_token(token_or_constructor, value)

    Ensure a value is a token or constructs one from a given value.

    first_true(iterable[, default, pred])

    Returns the first true value in the iterable.

    many(seq_parser)

    Applies the given sequence parser repeatedly until it stops matching.

    parse(parser, target)

    Parse the given target string using the given parser.

    parse_list(parser, target_list)

    Parse a list of strings using the given parser.

    regex(r, type_name)

    Constructs a parser that matches a regular expression.

    results_to_tokens(results)

    sequence(*parsers)

    Applies parsers in sequence.

    string(s, type_name)

    Constructs a parser that matches a string.

    substring_n(length, type_name)

    Constructs a parser that matches a substring of length n.

    -

    Classes

    - - - - - - - - - - - - - - - - - - -

    Constant(value)

    A constant token.

    Delimiter(value)

    A delimiter token.

    Identifier(value)

    An identifier token.

    ParseResult(tokens, success)

    TokenResult(value, token, length)

    A token result.

    -
    -
    -ensure_token(token_or_constructor: Union[Identifier, Constant, Delimiter, type], value)[source]#
    -

    Ensure a value is a token or constructs one from a given value.

    -
    - -
    -
    -class Identifier(value: str)[source]#
    -

    An identifier token. Contains a string.

    -
    -
    -value: str#
    -
    - -
    - -
    -
    -class Constant(value: URIRef)[source]#
    -

    A constant token. Contains a URI, probably some sort of Class

    -
    -
    -value: URIRef#
    -
    - -
    - -
    -
    -class Delimiter(value: str)[source]#
    -

    A delimiter token.

    -
    -
    -value: str#
    -
    - -
    - -
    -
    -class TokenResult(value: Optional[str], token: Union[Identifier, Constant, Delimiter], length: int)[source]#
    -

    A token result. Contains a token, the type of the token, and the length of the token.

    -
    -
    -value: Optional[str]#
    -
    - -
    -
    -token: Union[Identifier, Constant, Delimiter]#
    -
    - -
    -
    -length: int#
    -
    - -
    - -
    -
    -class ParseResult(tokens: List[buildingmotif.label_parsing.TokenResult], success: bool)[source]#
    -
    -
    -tokens: List[TokenResult]#
    -
    - -
    -
    -success: bool#
    -
    - -
    - -
    -
    -string(s, type_name: Union[Identifier, Constant, Delimiter, type])[source]#
    -

    Constructs a parser that matches a string.

    -
    - -
    -
    -substring_n(length, type_name: Union[Identifier, Constant, Delimiter, type])[source]#
    -

    Constructs a parser that matches a substring of length n.

    -
    - -
    -
    -regex(r, type_name: Union[Identifier, Constant, Delimiter, type])[source]#
    -

    Constructs a parser that matches a regular expression.

    -
    - -
    -
    -choice(*parsers)[source]#
    -

    Constructs a choice combinator of parsers.

    -
    - -
    -
    -constant(type_name: Union[Identifier, Constant, Delimiter])[source]#
    -

    Matches a constant token.

    -
    - -
    -
    -abbreviations(patterns)[source]#
    -

    Constructs a choice combinator of string matching based on a dictionary.

    -
    - -
    -
    -sequence(*parsers)[source]#
    -

    Applies parsers in sequence. All parsers must match consecutively.

    -
    - -
    -
    -many(seq_parser)[source]#
    -

    Applies the given sequence parser repeatedly until it stops matching.

    -
    - -
    -
    -COMMON_ABBREVIATIONS(target: str) List[TokenResult]#
    -
    - -
    -
    -parse(parser: Callable[[str], List[TokenResult]], target: str) ParseResult[source]#
    -

    Parse the given target string using the given parser.

    -
    -
    Parameters:
    -
      -
    • parser (Parser) – the parsing combinator function

    • -
    • target (str) – the target string to parse

    • -
    -
    -
    Returns:
    -

    the result of the parser

    -
    -
    Return type:
    -

    ParseResult

    -
    -
    -
    - -
    -
    -parse_list(parser, target_list) Tuple[Dict[str, List[TokenResult]], Dict[str, List[TokenResult]]][source]#
    -

    Parse a list of strings using the given parser.

    -
    -
    Parameters:
    -
      -
    • parser (Parser) – the parsing combinator function

    • -
    • target_list (List[str]) – the list of strings to parse

    • -
    -
    -
    Returns:
    -

    a tuple of the results and failures

    -
    -
    -
    - -
    -
    -first_true(iterable, default=None, pred=None)[source]#
    -

    Returns the first true value in the iterable.

    -

    If no true value is found, returns default

    -

    If pred is not None, returns the first item -for which pred(item) is true.

    -
    - -
    -
    -results_to_tokens(results)[source]#
    -
    - -
    -
    -analyze_failures(failures: Dict[str, List[TokenResult]])[source]#
    -

    Analyze the failures of a parser.

    -
    - -
    - - - - -
    - - - - - - - - -
    - - - - -
    -
    - - -
    - - -
    -
    -
    - - - - - -
    -
    - - \ No newline at end of file diff --git a/reference/apidoc/_autosummary/buildingmotif.libraries.html b/reference/apidoc/_autosummary/buildingmotif.libraries.html index e9b6eaf1d..185019c5e 100644 --- a/reference/apidoc/_autosummary/buildingmotif.libraries.html +++ b/reference/apidoc/_autosummary/buildingmotif.libraries.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -67,7 +67,7 @@ - + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -478,12 +477,12 @@

    buildingmotif.libraries

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.namespaces.html b/reference/apidoc/_autosummary/buildingmotif.namespaces.html index 0b0d2bad9..94d591e9c 100644 --- a/reference/apidoc/_autosummary/buildingmotif.namespaces.html +++ b/reference/apidoc/_autosummary/buildingmotif.namespaces.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -563,8 +562,8 @@

    buildingmotif.namespaces

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.schemas.html b/reference/apidoc/_autosummary/buildingmotif.schemas.html index 238fd7384..544011b47 100644 --- a/reference/apidoc/_autosummary/buildingmotif.schemas.html +++ b/reference/apidoc/_autosummary/buildingmotif.schemas.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -564,8 +563,8 @@

    buildingmotif.schemas

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.shape_builder.html b/reference/apidoc/_autosummary/buildingmotif.shape_builder.html index 40f242f2f..9cc834c96 100644 --- a/reference/apidoc/_autosummary/buildingmotif.shape_builder.html +++ b/reference/apidoc/_autosummary/buildingmotif.shape_builder.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -552,8 +551,8 @@

    buildingmotif.shape_builder

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.shape_builder.shape.html b/reference/apidoc/_autosummary/buildingmotif.shape_builder.shape.html index c0c98bd92..0913b60a0 100644 --- a/reference/apidoc/_autosummary/buildingmotif.shape_builder.shape.html +++ b/reference/apidoc/_autosummary/buildingmotif.shape_builder.shape.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -827,8 +826,8 @@

    buildingmotif.shape_builder.shape

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.template_compilation.html b/reference/apidoc/_autosummary/buildingmotif.template_compilation.html index 5305751c1..186bad183 100644 --- a/reference/apidoc/_autosummary/buildingmotif.template_compilation.html +++ b/reference/apidoc/_autosummary/buildingmotif.template_compilation.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -738,8 +737,8 @@

    buildingmotif.template_compilation

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.template_matcher.html b/reference/apidoc/_autosummary/buildingmotif.template_matcher.html index 2548cae22..50824b13e 100644 --- a/reference/apidoc/_autosummary/buildingmotif.template_matcher.html +++ b/reference/apidoc/_autosummary/buildingmotif.template_matcher.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -803,8 +802,8 @@

    buildingmotif.template_matcher

    - - + +
    diff --git a/reference/apidoc/_autosummary/buildingmotif.utils.html b/reference/apidoc/_autosummary/buildingmotif.utils.html index 566cb03f1..aa589a609 100644 --- a/reference/apidoc/_autosummary/buildingmotif.utils.html +++ b/reference/apidoc/_autosummary/buildingmotif.utils.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -821,8 +820,8 @@

    buildingmotif.utils

    - - + +
    diff --git a/reference/apidoc/index.html b/reference/apidoc/index.html index 1f1f768f6..30c76e881 100644 --- a/reference/apidoc/index.html +++ b/reference/apidoc/index.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -551,8 +550,8 @@

    Code Documentation - + +
    diff --git a/reference/cli_tool.html b/reference/cli_tool.html index 75dfaac3c..f3eea32f6 100644 --- a/reference/cli_tool.html +++ b/reference/cli_tool.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -731,8 +730,8 @@

    BuildingMOTIF API Server - + +
    diff --git a/reference/developer_documentation.html b/reference/developer_documentation.html index 191fcd949..3e044cb2e 100644 --- a/reference/developer_documentation.html +++ b/reference/developer_documentation.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -719,8 +718,8 @@

    Running on Docker - + +
    diff --git a/search.html b/search.html index 51f3c2407..657675d77 100644 --- a/search.html +++ b/search.html @@ -17,12 +17,12 @@ - - - + + + - + @@ -36,9 +36,9 @@ - - - + + + @@ -152,13 +152,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +
    @@ -206,13 +207,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -471,8 +470,8 @@

    Search

    - - + +
    diff --git a/searchindex.js b/searchindex.js index 19b662d63..272cd8ec1 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["README", "bibliography", "explanations/ingresses", "guides/csv-import", "guides/ingress-bacnet-to-brick", "reference/apidoc/_autosummary/buildingmotif", "reference/apidoc/_autosummary/buildingmotif.api", "reference/apidoc/_autosummary/buildingmotif.api.views", "reference/apidoc/_autosummary/buildingmotif.building_motif", "reference/apidoc/_autosummary/buildingmotif.building_motif.building_motif", "reference/apidoc/_autosummary/buildingmotif.building_motif.singleton", "reference/apidoc/_autosummary/buildingmotif.database", "reference/apidoc/_autosummary/buildingmotif.database.graph_connection", "reference/apidoc/_autosummary/buildingmotif.database.table_connection", "reference/apidoc/_autosummary/buildingmotif.database.tables", "reference/apidoc/_autosummary/buildingmotif.database.utils", "reference/apidoc/_autosummary/buildingmotif.dataclasses", "reference/apidoc/_autosummary/buildingmotif.dataclasses.library", "reference/apidoc/_autosummary/buildingmotif.dataclasses.model", "reference/apidoc/_autosummary/buildingmotif.dataclasses.shape_collection", "reference/apidoc/_autosummary/buildingmotif.dataclasses.template", "reference/apidoc/_autosummary/buildingmotif.dataclasses.validation", "reference/apidoc/_autosummary/buildingmotif.ingresses", "reference/apidoc/_autosummary/buildingmotif.ingresses.bacnet", "reference/apidoc/_autosummary/buildingmotif.ingresses.base", "reference/apidoc/_autosummary/buildingmotif.ingresses.brick", "reference/apidoc/_autosummary/buildingmotif.ingresses.csvingress", "reference/apidoc/_autosummary/buildingmotif.ingresses.naming_convention", "reference/apidoc/_autosummary/buildingmotif.ingresses.template", "reference/apidoc/_autosummary/buildingmotif.ingresses.xlsx", "reference/apidoc/_autosummary/buildingmotif.label_parsing", "reference/apidoc/_autosummary/buildingmotif.libraries", "reference/apidoc/_autosummary/buildingmotif.namespaces", "reference/apidoc/_autosummary/buildingmotif.schemas", "reference/apidoc/_autosummary/buildingmotif.shape_builder", "reference/apidoc/_autosummary/buildingmotif.shape_builder.shape", "reference/apidoc/_autosummary/buildingmotif.template_compilation", "reference/apidoc/_autosummary/buildingmotif.template_matcher", "reference/apidoc/_autosummary/buildingmotif.utils", "reference/apidoc/index", "reference/cli_tool", "reference/developer_documentation", "tutorials/model_correction", "tutorials/model_creation", "tutorials/model_validation", "tutorials/template_writing"], "filenames": ["README.md", "bibliography.md", "explanations/ingresses.md", "guides/csv-import.md", "guides/ingress-bacnet-to-brick.md", "reference/apidoc/_autosummary/buildingmotif.rst", "reference/apidoc/_autosummary/buildingmotif.api.rst", "reference/apidoc/_autosummary/buildingmotif.api.views.rst", "reference/apidoc/_autosummary/buildingmotif.building_motif.rst", "reference/apidoc/_autosummary/buildingmotif.building_motif.building_motif.rst", "reference/apidoc/_autosummary/buildingmotif.building_motif.singleton.rst", "reference/apidoc/_autosummary/buildingmotif.database.rst", "reference/apidoc/_autosummary/buildingmotif.database.graph_connection.rst", "reference/apidoc/_autosummary/buildingmotif.database.table_connection.rst", "reference/apidoc/_autosummary/buildingmotif.database.tables.rst", "reference/apidoc/_autosummary/buildingmotif.database.utils.rst", "reference/apidoc/_autosummary/buildingmotif.dataclasses.rst", "reference/apidoc/_autosummary/buildingmotif.dataclasses.library.rst", "reference/apidoc/_autosummary/buildingmotif.dataclasses.model.rst", "reference/apidoc/_autosummary/buildingmotif.dataclasses.shape_collection.rst", "reference/apidoc/_autosummary/buildingmotif.dataclasses.template.rst", "reference/apidoc/_autosummary/buildingmotif.dataclasses.validation.rst", "reference/apidoc/_autosummary/buildingmotif.ingresses.rst", "reference/apidoc/_autosummary/buildingmotif.ingresses.bacnet.rst", "reference/apidoc/_autosummary/buildingmotif.ingresses.base.rst", "reference/apidoc/_autosummary/buildingmotif.ingresses.brick.rst", "reference/apidoc/_autosummary/buildingmotif.ingresses.csvingress.rst", "reference/apidoc/_autosummary/buildingmotif.ingresses.naming_convention.rst", "reference/apidoc/_autosummary/buildingmotif.ingresses.template.rst", "reference/apidoc/_autosummary/buildingmotif.ingresses.xlsx.rst", "reference/apidoc/_autosummary/buildingmotif.label_parsing.rst", "reference/apidoc/_autosummary/buildingmotif.libraries.rst", "reference/apidoc/_autosummary/buildingmotif.namespaces.rst", "reference/apidoc/_autosummary/buildingmotif.schemas.rst", "reference/apidoc/_autosummary/buildingmotif.shape_builder.rst", "reference/apidoc/_autosummary/buildingmotif.shape_builder.shape.rst", "reference/apidoc/_autosummary/buildingmotif.template_compilation.rst", "reference/apidoc/_autosummary/buildingmotif.template_matcher.rst", "reference/apidoc/_autosummary/buildingmotif.utils.rst", "reference/apidoc/index.rst", "reference/cli_tool.md", "reference/developer_documentation.md", "tutorials/model_correction.md", "tutorials/model_creation.md", "tutorials/model_validation.md", "tutorials/template_writing.ipynb"], "titles": ["BuildingMOTIF", "Bibliography", "Ingresses", "CSV Import", "BACnet to Brick", "buildingmotif", "buildingmotif.api", "buildingmotif.api.views", "buildingmotif.building_motif", "buildingmotif.building_motif.building_motif", "buildingmotif.building_motif.singleton", "buildingmotif.database", "buildingmotif.database.graph_connection", "buildingmotif.database.table_connection", "buildingmotif.database.tables", "buildingmotif.database.utils", "buildingmotif.dataclasses", "buildingmotif.dataclasses.library", "buildingmotif.dataclasses.model", "buildingmotif.dataclasses.shape_collection", "buildingmotif.dataclasses.template", "buildingmotif.dataclasses.validation", "buildingmotif.ingresses", "buildingmotif.ingresses.bacnet", "buildingmotif.ingresses.base", "buildingmotif.ingresses.brick", "buildingmotif.ingresses.csvingress", "buildingmotif.ingresses.naming_convention", "buildingmotif.ingresses.template", "buildingmotif.ingresses.xlsx", "buildingmotif.label_parsing", "buildingmotif.libraries", "buildingmotif.namespaces", "buildingmotif.schemas", "buildingmotif.shape_builder", "buildingmotif.shape_builder.shape", "buildingmotif.template_compilation", "buildingmotif.template_matcher", "buildingmotif.utils", "Code Documentation", "Command Line Interface", "Developer Documentation", "Model Correction", "Model Creation", "Model Validation", "Template Writing"], "terms": {"enabl": [0, 9, 44], "technolog": 0, "semant": [0, 1, 37, 43, 44], "interoper": 0, "build": [0, 1, 4, 14, 37, 42, 43, 44], "through": [0, 42, 43, 45], "standard": [0, 36, 44], "metadata": [0, 1, 2, 14, 24, 40, 43, 44], "crucial": 0, "unlock": 0, "valu": [0, 2, 4, 13, 15, 23, 29, 30, 33, 36, 40, 42, 43, 45], "abund": 0, "divers": 0, "network": [0, 23, 25, 40, 42], "data": [0, 2, 3, 4, 9, 24, 26, 27, 43], "avoid": [0, 20], "subsequ": 0, "incompat": 0, "issu": [0, 9, 13, 20], "pave": 0, "wai": [0, 4, 15, 40, 43], "advanc": 0, "like": [0, 2, 3, 4, 42, 43, 44, 45], "fault": 0, "detect": [0, 38], "diagnost": 0, "fdd": 0, "real": [0, 4, 42, 43], "time": [0, 15], "energi": [0, 1], "optim": 0, "other": [0, 2, 4, 13, 15, 36, 37, 43, 44, 45], "manag": [0, 4, 9, 12, 42], "inform": [0, 4, 21, 37, 40, 41, 42, 44], "system": [0, 1, 4, 42, 43, 44, 45], "emi": 0, "improv": 0, "hvac": [0, 44], "control": [0, 13, 44], "grid": 0, "integr": 0, "effici": [0, 1], "geb": 0, "all": [0, 2, 4, 9, 12, 13, 14, 15, 18, 19, 20, 24, 25, 28, 29, 30, 37, 38, 40, 43, 44, 45], "which": [0, 2, 3, 4, 14, 15, 18, 20, 28, 30, 35, 40, 41, 42, 43, 44, 45], "ar": [0, 2, 4, 9, 13, 14, 15, 18, 19, 20, 28, 29, 33, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45], "need": [0, 4, 13, 15, 17, 18, 19, 41, 42, 43, 44], "fulli": [0, 37], "de": 0, "carbon": 0, "util": [0, 4, 40], "capabl": 0, "web": 0, "possibl": [0, 41, 43], "structur": [0, 2, 4, 15, 19, 36, 38, 43, 44, 45], "express": [0, 4, 15, 23, 30], "machin": [0, 4], "readabl": [0, 21], "same": [0, 2, 4, 15, 37, 38, 40, 41, 42, 45], "veri": [0, 4, 44], "import": [0, 4, 13, 19, 38, 41, 42, 44, 45], "make": [0, 4, 10, 38, 40, 41, 42, 43, 44], "easier": [0, 4, 41, 42, 43, 44], "implement": [0, 4, 15], "field": [0, 2, 4, 23, 24, 29, 36], "practition": 0, "without": [0, 10, 12, 15, 20, 41, 43], "knowledg": [0, 4], "comput": [0, 1, 2, 37], "scienc": 0, "ontolog": [0, 17, 18, 19, 20, 37, 38, 42, 43, 45], "framework": [0, 43], "bridg": 0, "gap": 0, "between": [0, 2, 4, 13, 14, 21, 37, 42], "theori": 0, "practic": [0, 43], "offer": 0, "toolset": 0, "creation": [0, 1, 4], "storag": 0, "visual": 0, "valid": [0, 13, 14, 18, 20, 33, 38, 40, 43], "It": [0, 4, 15, 20, 42, 43, 44], "form": [0, 13], "sdk": 0, "easi": [0, 4, 43], "us": [0, 3, 4, 9, 13, 14, 15, 18, 20, 28, 30, 36, 37, 38, 40, 42, 43, 45], "api": [0, 2, 41], "abstract": [0, 2, 21, 24], "underli": [0, 2, 9, 24, 26, 27, 43], "complex": [0, 43], "rdf": [0, 2, 4, 17, 20, 24, 25, 28, 37, 38, 40, 44, 45], "graph": [0, 3, 4, 9, 12, 13, 17, 18, 19, 20, 21, 24, 25, 28, 32, 36, 37, 38, 40, 42, 44, 45], "databas": [0, 4, 9, 17, 18, 19, 20, 40, 43], "shacl": [0, 21, 38, 44], "differ": [0, 2, 4, 15, 21, 41, 44, 45], "schema": [0, 3, 4, 42, 43, 44, 45], "also": [0, 2, 4, 15, 42, 43, 44, 45], "support": [0, 4, 13, 17, 42, 43], "connector": 0, "exist": [0, 4, 13, 17, 19, 20, 42, 45], "sourc": [0, 2, 9, 10, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 35, 36, 37, 38, 41, 42, 43], "e": [0, 2, 4, 18, 19, 41, 42, 43], "g": [0, 2, 4, 37, 38, 41, 43], "autom": [0, 42, 43], "design": 0, "model": [0, 1, 3, 13, 14, 20, 21, 25, 40, 45], "etc": [0, 2, 4, 43, 44, 45], "avail": [0, 40, 42, 43, 44], "phase": 0, "life": 0, "cycl": 0, "The": [0, 2, 3, 4, 13, 15, 20, 21, 23, 26, 29, 37, 38, 40, 41, 42, 43, 44, 45], "object": [0, 2, 4, 13, 15, 17, 18, 20, 21, 23, 35, 38, 43, 44, 45], "1": [0, 2, 3, 4, 15, 19, 37, 40, 41, 42, 43, 44, 45], "lower": 0, "cost": 0, "reduc": 0, "instal": [0, 4, 40, 42, 43, 44], "deliv": 0, "qualiti": 0, "servic": [0, 4], "owner": 0, "occup": [0, 45], "2": [0, 4, 37, 40, 42, 43, 44, 45], "simpler": 0, "more": [0, 4, 35, 36, 38, 41, 44, 45], "easili": [0, 2], "verifi": [0, 13, 20], "procur": 0, "process": [0, 4, 13, 21, 37, 38, 40, 41, 42, 43, 44], "product": [0, 41], "3": [0, 3, 4, 40, 41, 43, 44, 45], "open": [0, 4, 44], "new": [0, 1, 2, 4, 13, 15, 17, 18, 19, 20, 24, 36, 38, 41, 42, 43, 44], "busi": 0, "opportun": 0, "provid": [0, 2, 4, 15, 18, 20, 37, 40, 43, 44, 45], "remov": [0, 4, 13, 20, 38, 45], "barrier": 0, "parti": 0, "current": [0, 4, 40, 42, 43, 44], "plan": 0, "brick": [0, 3, 40, 42, 43, 44, 45], "project": [0, 41], "haystack": 0, "upcom": 0, "ashra": [0, 4, 40, 42, 44, 45], "223p": [0, 40, 45], "both": [0, 15, 37, 44], "ui": 0, "level": [0, 9, 19, 45], "expertis": 0, "user": [0, 4, 15, 36, 41, 43], "maximum": 0, "adopt": 0, "diataxi": 0, "its": [0, 13, 15, 20, 44, 45], "organ": [0, 37, 44], "follow": [0, 3, 4, 37, 38, 41, 43, 44, 45], "section": [0, 4, 44, 45], "develop": 0, "command": [0, 4, 41, 45], "line": [0, 3, 4, 15, 44], "interfac": [0, 4], "code": [0, 4, 42, 43, 44], "correct": [0, 41, 43, 44], "templat": [0, 3, 4, 13, 14, 17, 21, 36, 37, 38, 40, 44], "write": [0, 4, 20, 24, 42, 43], "csv": [0, 20, 26], "from": [0, 2, 3, 4, 15, 17, 18, 19, 20, 21, 24, 25, 26, 27, 29, 30, 33, 36, 38, 40, 41, 42, 43, 44, 45], "bacnet": [0, 25, 36, 42], "ingress": [0, 3, 4, 20, 40, 43], "bibiographi": 0, "http": [0, 1, 3, 4, 40, 41, 42, 43, 44, 45], "fr": [0, 4], "gabe": 1, "fierro": 1, "avijit": 1, "saha": 1, "tobia": 1, "shapinski": 1, "matthew": 1, "steen": 1, "hannah": 1, "esling": 1, "applic": [1, 2, 4, 44, 45], "driven": 1, "suffici": [1, 44], "In": [1, 4, 40, 41, 42, 44], "proceed": 1, "9th": 1, "acm": 1, "intern": [1, 4, 44], "confer": 1, "citi": 1, "transport": 1, "buildsi": 1, "22": [1, 4], "228": [1, 4], "237": [1, 4], "york": 1, "ny": 1, "usa": 1, "2022": 1, "associ": [1, 4, 23, 32, 36, 42, 44, 45], "machineri": 1, "url": [1, 17, 40, 43], "doi": 1, "org": [1, 3, 4, 42, 43, 44, 45], "10": [1, 2, 4, 15, 43], "1145": 1, "3563357": 1, "3564083": 1, "buildingmotif": [2, 3, 41, 42, 43, 44, 45], "s": [2, 4, 13, 15, 17, 18, 20, 24, 30, 42, 43, 44, 45], "mechan": [2, 4, 40], "extern": [2, 17, 42], "deliber": 2, "gener": [2, 3, 4, 14, 15, 18, 20, 21, 24, 25, 26, 27, 28, 36, 37, 40, 41, 42, 43, 44, 45], "so": [2, 3, 4, 38, 41, 42, 44], "thei": [2, 15, 17, 18, 19, 28, 36, 37, 40, 42, 45], "can": [2, 3, 4, 13, 15, 19, 20, 21, 35, 36, 40, 41, 42, 43, 44, 45], "extend": [2, 4], "ingresshandl": [2, 24], "ha": [2, 4, 9, 12, 13, 18, 21, 35, 42, 43, 44, 45], "two": [2, 13, 15, 37, 40, 45], "subclass": [2, 37], "recordingresshandl": [2, 24, 25, 27, 28], "produc": [2, 4, 15, 20, 21, 28, 37, 45], "graphingresshandl": [2, 4, 24], "everi": [2, 15], "concret": 2, "should": [2, 15, 18, 21, 28, 35, 38, 40, 41, 43, 44, 45], "inherit": 2, "one": [2, 17, 19, 20, 30, 35, 37, 38, 44, 45], "class": [2, 3, 4, 9, 10, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 35, 37, 38, 40, 42, 43, 44], "defin": [2, 4, 13, 20, 36, 43, 44, 45], "method": [2, 4, 13, 15, 17, 18, 38, 43, 44], "list": [2, 4, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, 26, 27, 29, 30, 35, 36, 37, 38, 40, 42, 44, 45], "A": [2, 14, 29, 30, 43, 44, 45], "simpl": [2, 4, 42, 43, 44, 45], "python": [2, 4, 15, 36, 41, 42, 43, 44], "dataclass": [2, 3, 4, 13, 42, 43, 44, 45], "hint": 2, "identifi": [2, 12, 13, 20, 30, 35, 38, 42, 43, 45], "an": [2, 3, 9, 13, 15, 17, 18, 19, 20, 21, 24, 26, 27, 28, 30, 35, 37, 40, 42, 43, 44, 45], "categori": 2, "rtype": [2, 4, 23, 24, 29], "str": [2, 4, 12, 13, 14, 17, 18, 20, 21, 23, 24, 26, 27, 28, 30, 35, 36, 37, 38], "kei": [2, 4, 13, 15, 23, 29, 40, 43, 45], "pair": [2, 4, 29], "dict": [2, 13, 14, 15, 18, 20, 21, 24, 30, 36, 37, 38], "choic": [2, 15, 30], "up": [2, 4, 15, 19, 41, 45], "each": [2, 4, 13, 18, 20, 21, 23, 28, 29, 36, 38, 40, 42], "instanc": [2, 4, 9, 21, 24, 35, 37, 40, 42, 43, 44], "bacnetingresshandl": 2, "differenti": [2, 4], "devic": [2, 4, 23, 43], "contain": [2, 3, 4, 13, 15, 17, 18, 20, 23, 25, 29, 30, 36, 38, 40, 41, 43, 44, 45], "properti": [2, 9, 13, 17, 18, 19, 20, 21, 23, 24, 26, 27, 29, 35, 37, 38, 43, 45], "name": [2, 3, 4, 10, 13, 14, 15, 17, 18, 19, 20, 26, 29, 36, 38, 40, 42, 43, 44, 45], "unit": [2, 40, 41, 43, 45], "csvingresshandl": [2, 3], "denot": [2, 45], "filenam": [2, 17, 26, 29, 38, 40], "store": [2, 15, 29, 43], "column": [2, 3, 20, 29], "cell": [2, 3, 4, 29, 44], "row": [2, 26, 29, 42], "ns": [2, 4, 20, 24, 25, 28, 44], "rdflib": [2, 3, 4, 9, 17, 18, 19, 20, 32, 36, 37, 42, 43, 44, 45], "namespac": [2, 3, 4, 20, 24, 25, 28, 38, 42, 43, 44, 45], "return": [2, 4, 9, 12, 13, 15, 17, 18, 19, 20, 21, 23, 25, 29, 30, 36, 37, 38, 42, 43], "thi": [2, 4, 9, 13, 15, 17, 18, 19, 20, 21, 24, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45], "infer": [2, 25, 40], "translat": 2, "some": [2, 4, 15, 20, 24, 30, 42, 43, 44, 45], "either": [2, 19, 20, 23], "upstream": [2, 4, 25, 27, 28, 36], "ani": [2, 4, 13, 15, 17, 18, 19, 20, 33, 43, 44, 45], "entiti": [2, 4, 20, 21, 24, 25, 28, 35, 42, 43, 44], "uri": [2, 4, 18, 19, 20, 21, 30, 38, 40, 42, 43, 44], "creat": [2, 3, 4, 9, 12, 13, 17, 18, 19, 24, 38, 40, 41, 42, 44], "place": [2, 24, 25, 28, 38, 44, 45], "typic": [2, 43, 45], "end": [2, 15, 42, 43], "pipelin": 2, "sever": [2, 40, 42, 43, 45], "full": [2, 38, 45], "found": [2, 13, 20, 30, 33, 37, 40], "here": [2, 4, 15, 17, 41, 42, 44], "take": [2, 4, 24, 35, 40, 42, 43, 44], "ip": [2, 4, 23, 40], "subnet": [2, 4, 40], "argument": [2, 13, 15, 20, 36, 40, 41, 43], "0": [2, 4, 19, 40, 41, 42], "24": [2, 4, 40], "set": [2, 4, 15, 18, 20, 21, 29, 37, 38, 40, 41, 42, 44], "correspond": [2, 4, 15, 37, 40, 45], "repres": [2, 4, 21, 24, 29, 43, 44, 45], "els": [2, 4, 20], "base": [2, 4, 10, 30, 35, 41], "address": [2, 4, 20, 40, 45], "device_id": 2, "own": [2, 44], "mydata": 2, "given": [2, 13, 15, 18, 19, 20, 21, 24, 25, 28, 29, 30, 33, 37, 38, 40], "call": [2, 3, 4, 15, 20, 40, 42, 43, 44], "generate_csv": [2, 3, 20], "empti": [2, 3, 18], "header": [2, 3, 44], "csvingress": [2, 3], "made": [2, 15, 41, 45], "pass": [2, 4, 20, 36, 40, 42, 44], "templateingress": [2, 3, 28], "xlsxingresshandl": 2, "path": [2, 17, 20, 21, 24, 26, 29, 35, 38, 40, 42], "sheet": [2, 29], "requir": [2, 4, 9, 15, 20, 21, 37, 40, 41, 42, 43, 44, 45], "probabl": [2, 30, 42], "librari": [2, 3, 4, 13, 14, 20, 21, 33, 36, 41, 42, 44, 45], "option": [2, 4, 12, 13, 17, 18, 19, 20, 21, 23, 26, 28, 30, 35, 37, 38, 40], "mapper": [2, 3, 28], "function": [2, 4, 9, 20, 21, 28, 30, 32, 33, 35, 36, 37, 38, 40, 43, 44, 45], "map": [2, 13, 14, 20, 37, 38], "paramet": [2, 9, 12, 13, 15, 17, 18, 19, 20, 21, 24, 25, 30, 32, 33, 35, 36, 37, 38, 42, 43, 45], "If": [2, 9, 13, 15, 18, 20, 21, 28, 30, 35, 37, 38, 41, 42, 43, 45], "left": [2, 20], "none": [2, 3, 4, 9, 12, 13, 15, 17, 18, 19, 20, 21, 23, 26, 30, 35, 37, 38], "There": [2, 4, 40, 45], "templateingresswithchoos": [2, 28], "act": [2, 45], "essenti": [2, 4, 45], "addit": [2, 4, 18, 36, 37, 38, 41, 43, 44, 45], "dynam": [2, 41], "choos": [2, 4, 42], "see": [2, 4, 40, 41, 42, 43, 44], "guid": [2, 4], "assum": [3, 4, 15, 42, 43, 44], "we": [3, 4, 9, 15, 17, 37, 41, 42, 43, 44, 45], "have": [3, 4, 13, 15, 20, 36, 37, 42, 43, 44, 45], "tutori": [3, 4, 42, 43, 44, 45], "my": [3, 42, 45], "thermostat": 3, "bodi": [3, 17, 20, 36, 42, 43], "prefix": [3, 32, 42, 43, 44, 45], "p": [3, 4, 40, 42, 43, 45], "urn": [3, 4, 25, 38, 42, 43, 44, 45], "___param___": [3, 38, 42, 43, 45], "brickschema": [3, 4, 40, 42, 43, 44, 45], "hasloc": 3, "room": 3, "depend": [3, 4, 13, 14, 15, 18, 19, 20, 36, 41], "arg": [3, 4, 9, 13, 14, 15, 20, 36, 45], "tstat": 3, "point": [3, 36, 40, 42, 43, 44, 45], "haspoint": [3, 4, 36, 42, 45], "temp": [3, 45], "sp": 3, "co2": [3, 45], "temperature_sensor": [3, 43], "temperature_setpoint": 3, "co2_sensor": 3, "load": [3, 4, 17, 18, 19, 20, 24, 42, 44, 45], "memori": [3, 4, 38, 42, 43, 44], "bm": [3, 4, 13, 24, 25, 42, 43, 44], "sqlite": [3, 4, 41, 42, 43, 44], "our": [3, 15, 44], "get": [3, 4, 12, 13, 15, 17, 18, 19, 20, 36, 42, 43, 44], "lib": [3, 4, 21, 44, 45], "directori": [3, 4, 17, 38, 41, 42, 43, 44, 45], "tstat_templ": 3, "get_template_by_nam": [3, 17, 43, 44, 45], "file": [3, 4, 9, 15, 17, 20, 24, 26, 29, 33, 36, 38, 40, 41, 43, 44, 45], "approiat": 3, "give": [3, 29, 36, 44], "fill": [3, 20, 37, 42], "out": [3, 4, 20, 37, 42, 43], "tstat2": 3, "room345": 3, "345": [3, 4], "tstat3": 3, "room567": 3, "cow": 3, "567": 3, "handler": [3, 4, 9, 24], "built": [3, 41], "record": [3, 4, 23, 24, 26, 27, 28, 29], "bldg": [3, 4, 42, 43, 44], "my_sit": 3, "abov": [3, 4, 15, 41, 42, 44, 45], "inline_depend": [3, 20, 42], "print": [3, 4, 20, 41, 42, 43, 44], "serial": [3, 4, 15, 17, 42, 43, 44, 45], "result": [3, 4, 15, 18, 20, 21, 30, 36, 38, 42, 43], "final": [3, 43], "alreadi": [4, 42, 43, 44], "been": [4, 9, 18, 20, 37, 42, 43, 44], "local": [4, 40, 42, 43, 44], "environ": [4, 41, 42, 43, 44], "access": [4, 10, 36, 40, 43], "descript": [4, 13, 14, 18, 40, 41, 42, 43, 44, 45], "purpos": [4, 42, 43, 44], "how": [4, 19, 37, 42, 43, 44], "document": [4, 33, 40, 45], "demonstr": [4, 42], "accomplish": [4, 43], "basic": [4, 43, 44], "sure": [4, 13, 40, 41, 43], "you": [4, 13, 17, 40, 41, 42, 43, 44, 45], "awar": 4, "what": [4, 15, 21, 35, 40, 42, 43, 44, 45], "reach": [4, 41], "For": [4, 15, 38, 43, 44, 45], "docker": 4, "compos": [4, 41, 45], "run": [4, 13, 18, 40, 44], "virtual": [4, 41], "scan": 4, "sub": 4, "below": [4, 15, 40, 41, 42, 43, 44], "anoth": [4, 20, 41, 42, 43, 45], "try": [4, 43, 44, 45], "simul": 4, "digit": 4, "twin": 4, "repositori": [4, 41, 42, 43, 44], "rest": [4, 42], "work": [4, 13, 15, 43], "expect": [4, 13, 21, 37, 38], "do": [4, 42], "connect": [4, 9, 12, 43, 44], "subprocess": 4, "shlex": 4, "virtual_bacnet": 4, "py": [4, 13, 20, 40, 41, 44], "w": [4, 38, 44], "f": [4, 42, 43, 44], "random": [4, 42], "sy": 4, "bacpyp": 4, "app": 4, "bipsimpleappl": 4, "consolelog": 4, "configargumentpars": 4, "core": [4, 43], "debug": [4, 9, 41], "modulelogg": 4, "bacpypes_debug": 4, "localdeviceobject": 4, "analoginputobject": 4, "devicecommunicationcontrolservic": 4, "readwritepropertymultipleservic": 4, "_debug": 4, "_log": 4, "global": [4, 20], "virtualbacnetapp": 4, "virtualdevic": 4, "def": [4, 15, 36, 44], "__init__": [4, 15], "self": [4, 15, 35, 44], "host": [4, 40], "parser": [4, 30], "__doc__": 4, "parse_arg": 4, "ini": 4, "supplytempsensor": 4, "objectnam": 4, "vav": [4, 42, 44, 45], "sat": 4, "objectidentifi": 4, "analoginput": 4, "presentvalu": 4, "randint": 4, "100": 4, "heatingsetpoint": 4, "hsp": 4, "coolingsetpoint": 4, "csp": 4, "zonetempsensor": 4, "zone": [4, 42, 43, 44, 45], "add_object": 4, "__name__": 4, "__main__": [4, 15], "argv": 4, "len": [4, 42], "dockerfil": 4, "ubuntu": 4, "latest": 4, "workdir": 4, "opt": [4, 44], "apt": 4, "updat": [4, 13, 18, 44], "y": 4, "python3": [4, 41, 44], "pip": [4, 41], "rm": 4, "rf": 4, "var": 4, "pip3": 4, "copi": [4, 17, 18, 20, 38, 40, 44], "virtualbacnet": 4, "172": [4, 40], "17": 4, "599": 4, "maxapdulengthaccept": 4, "1024": 4, "segmentationsupport": 4, "segmentedboth": 4, "vendoridentifi": 4, "15": 4, "yml": [4, 17, 33, 40, 41, 43, 45], "version": [4, 15, 40], "4": [4, 15, 41, 42, 43, 44, 45], "ipv4_address": 4, "ipam": 4, "driver": 4, "default": [4, 12, 15, 17, 18, 19, 20, 30, 37, 38, 40, 44], "config": [4, 40, 41], "16": 4, "gatewai": 4, "docker_compose_start": 4, "split": 4, "d": [4, 40], "dockerignor": 4, "transfer": 4, "context": [4, 12, 19, 35], "2b": 4, "done": [4, 41, 42, 44], "0s": 4, "definit": [4, 19, 36, 43, 45], "276b": 4, "auth": 4, "token": [4, 30], "registri": 4, "io": [4, 20, 43], "3s": 4, "5": 4, "6": [4, 44], "sha256": 4, "2b7412e6465c3c7fc5bb21d3e6f1917c167358449fecac8176c6e496e5c1f05f": 4, "30kb": 4, "7": 4, "8": [4, 41, 42, 44], "916": 4, "warn": [4, 15, 20], "doe": [4, 15, 17, 41, 43], "stabl": 4, "cli": 4, "caution": 4, "script": 4, "382": 4, "secur": 4, "com": [4, 40], "jammi": 4, "inreleas": 4, "110": 4, "kb": 4, "517": 4, "archiv": 4, "270": 4, "795": 4, "multivers": 4, "amd64": 4, "packag": [4, 41, 42, 43, 44], "44": 4, "830": 4, "main": [4, 40], "1082": 4, "896": 4, "univers": [4, 35], "1005": 4, "912": 4, "restrict": 4, "1226": 4, "940": 4, "119": 4, "039": 4, "backport": 4, "109": 4, "138": 4, "9": 4, "266": 4, "194": 4, "164": 4, "11": [4, 44], "mb": 4, "820": 4, "12": 4, "1792": 4, "857": 4, "13": 4, "49": 4, "858": 4, "14": [4, 15], "1252": 4, "895": 4, "1270": 4, "930": 4, "1347": 4, "108": 4, "50": 4, "344": 4, "18": 4, "28": [4, 15], "944": 4, "fetch": [4, 43], "27": 4, "read": [4, 26, 28, 29, 41], "766": 4, "tree": [4, 45], "927": 4, "state": [4, 15, 44, 45], "938": 4, "date": 4, "946": 4, "983": 4, "808": 4, "977": 4, "141": 4, "binutil": 4, "common": [4, 32, 38, 44], "x86": 4, "64": 4, "linux": 4, "gnu": 4, "bzip2": 4, "ca": 4, "certif": 4, "cpp": 4, "dirmngr": 4, "dpkg": 4, "dev": [4, 41], "fakeroot": 4, "fontconfig": 4, "font": 4, "dejavu": 4, "gcc": 4, "gnupg": 4, "l10n": 4, "gpg": 4, "agent": 4, "wk": 4, "client": 4, "server": 4, "gpgconf": 4, "gpgsm": 4, "javascript": 4, "libalgorithm": 4, "diff": [4, 21, 42, 44], "perl": 4, "xs": 4, "merg": 4, "libasan6": 4, "libassuan0": 4, "libatomic1": 4, "libbinutil": 4, "libbrotli1": 4, "libbsd0": 4, "libc": 4, "bin": [4, 41], "devtool": 4, "libc6": 4, "libcc1": 4, "libcrypt": 4, "libctf": 4, "nobfd0": 4, "libctf0": 4, "libdeflate0": 4, "libdpkg": 4, "libexpat1": 4, "libfakeroot": 4, "libfil": 4, "fcntllock": 4, "libfontconfig1": 4, "libfreetype6": 4, "libgcc": 4, "libgd3": 4, "libgdbm": 4, "compat4": 4, "libgdbm6": 4, "libgomp1": 4, "libisl23": 4, "libitm1": 4, "libjbig0": 4, "libjpeg": 4, "turbo8": 4, "libjpeg8": 4, "libj": 4, "jqueri": 4, "sphinxdoc": 4, "underscor": 4, "libksba8": 4, "libldap": 4, "liblocal": 4, "gettext": 4, "liblsan0": 4, "libmd0": 4, "libmpc3": 4, "libmpdec3": 4, "libmpfr6": 4, "libnpth0": 4, "libnsl": 4, "libperl5": 4, "34": 4, "libpng16": 4, "libpython3": 4, "stdlib": 4, "minim": 4, "142": 4, "libquadmath0": 4, "libreadline8": 4, "libsasl2": 4, "modul": [4, 5, 6, 7, 8, 11, 15, 16, 17, 22, 34, 36], "db": [4, 20, 40, 41], "libsqlite3": 4, "libstdc": 4, "libtiff5": 4, "libtirpc": 4, "libtsan0": 4, "libubsan1": 4, "libwebp7": 4, "libx11": 4, "libxau6": 4, "libxcb1": 4, "libxdmcp6": 4, "libxpm4": 4, "lto": 4, "disabl": [4, 15], "manpag": 4, "media": 4, "netbas": 4, "openssl": 4, "patch": 4, "pinentri": 4, "curs": 4, "distutil": 4, "lib2to3": 4, "pkg": 4, "resourc": [4, 43, 44], "setuptool": 4, "wheel": 4, "readlin": 4, "rpcsvc": 4, "proto": 4, "ucf": 4, "xz": 4, "zlib1g": 4, "143": 4, "suggest": 4, "doc": [4, 33, 41], "dbu": 4, "session": [4, 9, 43], "libpam": 4, "systemd": 4, "gnome3": 4, "tor": 4, "debian": 4, "keyr": 4, "multilib": 4, "autoconf": 4, "automak": 4, "libtool": 4, "flex": 4, "bison": 4, "gdb": 4, "parcimoni": 4, "xloadimag": 4, "scdaemon": 4, "apache2": 4, "lighttpd": 4, "httpd": 4, "glibc": 4, "git": 4, "bzr": 4, "libgd": 4, "tool": [4, 17, 40], "gdbm": 4, "gssapi": 4, "mit": 4, "heimdal": 4, "ldap": 4, "otp": 4, "sql": [4, 15], "man": 4, "browser": 4, "ed": 4, "diffutil": 4, "libterm": 4, "libtap": 4, "har": 4, "tk": 4, "venv": [4, 41], "binfmt": 4, "346": 4, "404": 4, "upgrad": [4, 41], "131": 4, "newli": 4, "101": 4, "after": [4, 20, 41, 43], "oper": [4, 42, 44], "356": 4, "disk": [4, 43], "space": 4, "07": [4, 42, 43, 44], "4build3": 4, "428": 4, "04": 4, "811": 4, "491": 4, "1ubuntu0": 4, "91": 4, "493": 4, "2258": 4, "520": 4, "521": 4, "25": 4, "2build2": 4, "86": 4, "523": 4, "53": 4, "524": 4, "153": 4, "526": 4, "37": 4, "2ubuntu0": 4, "641": 4, "532": 4, "1849": 4, "551": 4, "509": 4, "556": 4, "6910": 4, "b": [4, 15, 40, 41], "557": 4, "3ubuntu1": 4, "2977": 4, "586": 4, "23": 4, "33": 4, "587": 4, "6606": 4, "588": 4, "4818": 4, "634": 4, "19": 4, "232": 4, "637": 4, "20": [4, 15], "0ubuntu1": 4, "1183": 4, "647": 4, "21": 4, "20230311ubuntu0": 4, "155": 4, "649": 4, "1build1": 4, "650": 4, "59": 4, "132": 4, "652": 4, "26": 4, "0043": 4, "56": 4, "3build5": 4, "191": 4, "655": 4, "1build5": 4, "7634": 4, "659": 4, "29": 4, "0ubuntu5": 4, "676": 4, "30": 4, "3ubuntu3": 4, "31": 4, "120": 4, "32": [4, 40], "667": 4, "681": 4, "1ubuntu1": 4, "1375": 4, "694": 4, "2ubuntu1": 4, "84": 4, "695": 4, "35": 4, "38": 4, "4ubuntu2": 4, "222": 4, "697": 4, "36": [4, 42, 44, 45], "662": 4, "703": 4, "107": 4, "705": 4, "103": 4, "706": 4, "39": 4, "2327": 4, "727": 4, "40": 4, "3190": 4, "728": 4, "41": 4, "0ubuntu3": 4, "729": 4, "42": 4, "96": 4, "1338": 4, "740": 4, "43": 4, "112": 4, "744": 4, "0ubuntu6": 4, "68": 4, "745": 4, "45": 4, "192": 4, "747": 4, "46": 4, "71": 4, "749": 4, "47": 4, "2100": 4, "769": 4, "48": 4, "2build1": 4, "777": 4, "3build3": 4, "1425": 4, "790": 4, "51": 4, "791": 4, "52": 4, "885": 4, "889": 4, "54": 4, "55": 4, "126": 4, "890": 4, "891": 4, "57": 4, "58": 4, "2282": 4, "1069": 4, "921": 4, "60": 4, "2260": 4, "941": 4, "61": 4, "976": 4, "950": 4, "62": 4, "154": 4, "952": 4, "63": 4, "2517": 4, "974": 4, "150": 4, "65": 4, "5112": 4, "66": 4, "2101": 4, "169": 4, "67": 4, "1412": 4, "271": 4, "69": 4, "180": 4, "272": 4, "70": 4, "1ubuntu2": 4, "274": 4, "5build1": 4, "275": 4, "72": 4, "7build2": 4, "276": 4, "73": 4, "74": 4, "922": 4, "285": 4, "75": 4, "9ubuntu3": 4, "4744": 4, "286": 4, "76": 4, "77": 4, "3ubuntu2": 4, "94": 4, "287": 4, "78": 4, "297": 4, "79": [4, 42, 44], "dfsg2": 4, "298": 4, "80": 4, "299": 4, "81": 4, "dfsg": 4, "0ubuntu0": 4, "183": 4, "301": 4, "82": 4, "3build2": 4, "8664": 4, "83": 4, "293": 4, "308": [4, 44], "309": [4, 44], "85": 4, "1041": 4, "319": 4, "87": 4, "2ubuntu5": 4, "88": 4, "324": 4, "89": 4, "325": 4, "90": 4, "519": 4, "330": 4, "1build2": 4, "92": 4, "209": 4, "331": 4, "93": 4, "332": 4, "333": 4, "95": 4, "197": 4, "343": 4, "315": [4, 44], "97": 4, "nmu1": 4, "5936": 4, "347": 4, "98": 4, "201": 4, "99": 4, "6build3": 4, "355": 4, "08": 4, "2build6": 4, "601": 4, "102": 4, "389": 4, "090": 4, "104": 4, "134": 4, "128": 4, "105": 4, "8c": 4, "2ubuntu10": 4, "2264": 4, "129": 4, "106": 4, "139": 4, "206": 4, "6ubuntu0": 4, "221": 4, "226": 4, "111": 4, "2ubuntu2": 4, "241": 4, "488": 4, "113": 4, "147": 4, "859": 4, "114": 4, "3build7": 4, "872": 4, "115": 4, "321": 4, "010": 4, "116": 4, "118": 4, "034": 4, "117": 4, "058": 4, "060": 4, "1949": 4, "219": 4, "2ubuntu9": 4, "121": 4, "4764": 4, "358": 4, "122": 4, "7166": 4, "123": 4, "477": 4, "124": 4, "2309": 4, "581": 4, "125": 4, "507": 4, "127": 4, "589": 4, "590": 4, "339": 4, "593": 4, "130": 4, "1305": 4, "debconf": 4, "delai": 4, "configur": [4, 15, 41, 45], "sinc": [4, 15], "select": [4, 15, 18, 42], "previous": [4, 15, 42, 44], "unselect": 4, "4395": 4, "prepar": 4, "unpack": 4, "perl_1": 4, "4build3_amd64": 4, "deb": 4, "minimal_3": 4, "2_amd64": 4, "libexpat1_2": 4, "00": 4, "01": 4, "4713": 4, "04_amd64": 4, "types_7": 4, "0_all": 4, "libmpdec3_2": 4, "2build2_amd64": 4, "common_8": 4, "1_all": 4, "libreadline8_8": 4, "1_amd64": 4, "0_3": 4, "stdlib_3": 4, "10_3": 4, "02": 4, "5143": 4, "000": 4, "python3_3": 4, "001": 4, "34_5": 4, "2_all": 4, "002": 4, "libgdbm6_1": 4, "003": 4, "compat4_1": 4, "004": 4, "005": 4, "perl_5": 4, "006": 4, "openssl_3": 4, "10_amd64": 4, "007": 4, "certificates_20230311ubuntu0": 4, "008": 4, "libmd0_1": 4, "1build1_amd64": 4, "009": 4, "libbsd0_0": 4, "netbase_6": 4, "3_all": 4, "011": 4, "resources_59": 4, "012": 4, "ucf_3": 4, "0043_all": 4, "move": 4, "old": [4, 38], "013": 4, "16_1": 4, "3build5_amd64": 4, "014": 4, "libxau6_1": 4, "3a1": 4, "1build5_amd64": 4, "015": 4, "libxdmcp6_1": 4, "0ubuntu5_amd64": 4, "016": 4, "libxcb1_1": 4, "3ubuntu3_amd64": 4, "017": 4, "data_2": 4, "018": 4, "6_2": 4, "3_amd64": 4, "019": 4, "manpages_5": 4, "1ubuntu1_al": 4, "020": 4, "utils_5": 4, "2ubuntu1_amd64": 4, "021": 4, "common_2": 4, "022": 4, "libbinutils_2": 4, "023": 4, "nobfd0_2": 4, "024": 4, "libctf0_2": 4, "025": 4, "gnu_2": 4, "026": 4, "binutils_2": 4, "027": 4, "bin_2": 4, "4_amd64": 4, "028": 4, "dev_5": 4, "96_amd64": 4, "029": 4, "dev_1": 4, "3a4": 4, "030": 4, "proto_1": 4, "0ubuntu6_amd64": 4, "031": 4, "032": 4, "033": 4, "dev_2": 4, "base_11": 4, "035": 4, "libisl23_0": 4, "2build1_amd64": 4, "036": 4, "libmpfr6_4": 4, "3build3_amd64": 4, "037": 4, "libmpc3_1": 4, "038": 4, "11_11": 4, "cpp_4": 4, "3a11": 4, "1ubuntu1_amd64": 4, "040": 4, "0_12": 4, "041": 4, "libgomp1_12": 4, "042": 4, "libitm1_12": 4, "043": 4, "libatomic1_12": 4, "044": 4, "libasan6_11": 4, "05": 4, "045": 4, "liblsan0_12": 4, "09": 4, "046": 4, "libtsan0_11": 4, "047": 4, "libubsan1_12": 4, "048": 4, "libquadmath0_12": 4, "049": 4, "dev_11": 4, "050": 4, "051": 4, "gcc_4": 4, "052": 4, "053": 4, "054": 4, "_4": 4, "055": 4, "make_4": 4, "056": 4, "057": 4, "bzip2_1": 4, "5build1_amd64": 4, "patch_2": 4, "7build2_amd64": 4, "059": 4, "list_24_al": 4, "03": 4, "061": 4, "essential_12": 4, "9ubuntu3_amd64": 4, "062": 4, "libassuan0_2": 4, "06": 4, "063": 4, "gpgconf_2": 4, "064": 4, "libksba8_1": 4, "065": 4, "db_2": 4, "066": 4, "2_2": 4, "067": 4, "0_2": 4, "068": 4, "libnpth0_1": 4, "3build2_amd64": 4, "069": 4, "dirmngr_2": 4, "070": 4, "libfakeroot_1": 4, "071": 4, "fakeroot_1": 4, "072": 4, "core_2": 4, "2build1_al": 4, "073": 4, "config_2": 4, "2ubuntu5_al": 4, "074": 4, "l10n_2": 4, "075": 4, "utils_2": 4, "076": 4, "gpg_2": 4, "077": 4, "curses_1": 4, "1build2_amd64": 4, "078": 4, "agent_2": 4, "079": 4, "client_2": 4, "080": 4, "server_2": 4, "081": 4, "gpgsm_2": 4, "082": 4, "gnupg_2": 4, "083": 4, "common_11": 4, "nmu1_al": 4, "084": 4, "085": 4, "perl_0": 4, "6build3_amd64": 4, "086": 4, "087": 4, "libbrotli1_1": 4, "2build6_amd64": 4, "088": 4, "libfreetype6_2": 4, "089": 4, "libfontconfig1_2": 4, "2ubuntu5_amd64": 4, "turbo8_2": 4, "0ubuntu1_amd64": 4, "091": 4, "libjpeg8_8c": 4, "2ubuntu10_amd64": 4, "092": 4, "libdeflate0_1": 4, "093": 4, "libjbig0_2": 4, "094": 4, "libwebp7_1": 4, "095": 4, "libtiff5_4": 4, "6_amd64": 4, "096": 4, "libxpm4_1": 4, "3a3": 4, "097": 4, "libgd3_2": 4, "2ubuntu2_amd64": 4, "098": 4, "devtools_2": 4, "099": 4, "3build7_amd64": 4, "jquery_3": 4, "underscore_1": 4, "sphinxdoc_4": 4, "dev_3": 4, "modules_2": 4, "lib2to3_3": 4, "04_all": 4, "distutils_3": 4, "setuptools_59": 4, "wheel_0": 4, "pip_22": 4, "altern": 4, "usr": 4, "sysv": 4, "auto": 4, "mode": 4, "skip": [4, 38, 42], "share": [4, 13], "man1": 4, "gz": 4, "becaus": [4, 13, 15, 37, 38, 42, 43, 44], "link": 4, "group": [4, 45], "doesn": [4, 42, 44], "t": [4, 9, 13, 15, 36, 37, 40, 42, 44, 45], "fake": 4, "es": 4, "sv": 4, "lzma": 4, "unlzma": 4, "unxz": 4, "lzcat": 4, "xzcat": 4, "lzmore": 4, "xzmore": 4, "lzless": 4, "xzless": 4, "lzdiff": 4, "xzdiff": 4, "lzcmp": 4, "xzcmp": 4, "lzgrep": 4, "xzgrep": 4, "lzegrep": 4, "xzegrep": 4, "lzfgrep": 4, "xzfgrep": 4, "unabl": 4, "frontend": 4, "dialog": 4, "term": [4, 20], "usabl": [4, 15], "fall": 4, "back": [4, 43], "ssl": 4, "cert": 4, "137": 4, "ad": [4, 12, 15, 18, 36, 42], "rtupdat": 4, "hook": [4, 15], "post": 4, "c": [4, 15], "trigger": 4, "860": 4, "collect": [4, 13, 14, 17, 18, 42, 43], "download": [4, 40, 41, 42, 43, 44], "py3": 4, "whl": 4, "996": 4, "eta": 4, "177": 4, "successfulli": 4, "root": [4, 45], "broken": 4, "permiss": 4, "conflict": 4, "behaviour": 4, "recommend": [4, 17, 20, 41, 42], "instead": [4, 43, 44], "pypa": 4, "export": 4, "imag": 4, "layer": 4, "1s": 4, "72ea2e34ce76902c6974df8a9e35af3874a4f960ad0f2c4237405ad50e9bdd65": 4, "guides_bacnet": 4, "start": [4, 43, 44, 45], "completedprocess": 4, "returncod": 4, "previou": [4, 42, 44], "ll": [4, 42, 43, 44], "log": [4, 9], "log_level": [4, 9], "error": [4, 18, 19, 20, 33, 41], "test": [4, 18, 41, 42, 43, 44], "later": [4, 40], "ontology_graph": [4, 17, 42, 43, 44], "github": [4, 40, 41], "releas": [4, 40], "nightli": [4, 40], "ttl": [4, 40, 42, 43, 44], "bacnetnetwork": [4, 23, 25, 40], "scrape": 4, "individu": [4, 41], "discov": [4, 23], "don": [4, 13, 36, 40, 44, 45], "chang": [4, 19, 41, 44], "rec": 4, "2023": 4, "critic": 4, "nameerror": 4, "traceback": [4, 15, 44], "most": [4, 15, 17, 37, 44], "recent": [4, 15, 44], "last": [4, 15, 44], "hostedtoolcach": [4, 44], "x64": [4, 44], "site": [4, 44], "therein": 4, "handl": [4, 19, 43], "Be": [4, 13], "good": 4, "net": 4, "citizen": 4, "ping": 4, "bac0": 4, "fals": [4, 15, 20, 28, 35, 38, 42], "discoveri": 4, "kind": [4, 43, 45], "attribut": [4, 15, 36, 38, 43, 44], "cotnain": 4, "arbitrari": [4, 42], "again": [4, 41, 42], "interpret": [4, 21, 44], "bacnettobrickingress": [4, 25], "turn": [4, 25, 37, 38, 43], "usual": [4, 35, 36], "just": [4, 38, 42, 43, 44], "i": [4, 18, 19, 41, 42], "brick2bacnet": 4, "bacnet_network_graph": 4, "add": [4, 12, 18, 19, 20, 35, 36, 37, 41, 42, 43, 44, 45], "add_graph": [4, 18, 19, 42, 43, 44], "now": [4, 41, 42, 43, 44, 45], "look": [4, 42, 43, 44, 45], "howev": [4, 15, 44], "next": [4, 43, 44, 45], "step": 4, "incorpor": [4, 20, 38], "about": [4, 21, 43, 44], "techniqu": 4, "label": 4, "show": [4, 40], "Then": [4, 43], "bigger": 4, "complet": [4, 37, 41], "squint": 4, "might": [4, 20, 44], "divid": [4, 45], "equip": [4, 42, 43, 44, 45], "let": [4, 42, 43, 44, 45], "uriref": [4, 18, 19, 21, 30, 35, 38], "parse_label": 4, "output": [4, 24, 40, 44], "pars": [4, 30, 42, 43, 44], "put": [4, 42, 43, 44], "tripl": [4, 12, 18, 19, 35, 38, 40, 42, 44], "part": [4, 13, 14, 15, 36, 37, 38, 41, 43, 44], "equip_nam": 4, "point_typ": 4, "brick_class": 4, "supply_air_temperature_sensor": [4, 45], "elif": 4, "zone_air_heating_temperature_setpoint": 4, "zone_air_cooling_temperature_setpoint": 4, "zone_air_temperature_sensor": [4, 45], "rais": [4, 9, 10, 13, 17, 18, 19, 20, 33, 36, 38, 43], "except": [4, 9, 10, 13, 17, 18, 20, 33, 38, 43], "unknown": [4, 36], "yet": [4, 44], "wrap": [4, 9], "reus": 4, "littl": 4, "bit": [4, 44], "around": [4, 43], "mypointpars": 4, "indic": [4, 15, 20, 40], "overrid": [4, 15], "output_graph": 4, "bacnet_graph": 4, "point_label": 4, "queri": [4, 42], "where": [4, 13, 15, 40, 42, 43], "ref": [4, 35], "hasexternalrefer": 4, "2020": 4, "invok": [4, 40], "point_ingress": 4, "augmented_graph": 4, "displai": 4, "relationship": [4, 14, 43, 45], "note": [4, 15, 36, 41], "particular": 4, "dvelop": 4, "specif": [4, 21, 36, 44], "idiosyncrat": 4, "within": [4, 17, 20, 44], "futur": [4, 42, 44], "sophist": 4, "consid": [4, 13, 20], "exampl": [4, 15, 38, 40, 41, 43, 45], "interact": [4, 13, 40, 41, 43], "teardown": 4, "docker_compose_stop": 4, "down": 4, "kwarg": [9, 14, 15, 36], "setup_t": 9, "tabl": [9, 17, 18, 19, 20, 41], "setup_log": 9, "stdout": 9, "specifi": [9, 17, 35, 40, 44], "int": [9, 13, 14, 17, 18, 19, 20, 21, 30, 35, 37, 38], "detail": [9, 44], "close": 9, "engin": [9, 12, 13], "clean": 9, "get_building_motif": 9, "singleton": 9, "instanti": [9, 28], "befor": [9, 13, 41, 42, 43], "otherwis": [9, 15, 19, 20, 38, 43], "singletonnotinstantiatedexcept": [9, 10], "hasn": 9, "type": [9, 12, 13, 15, 17, 18, 19, 20, 21, 23, 25, 26, 29, 30, 35, 36, 37, 38, 41, 43, 44], "buildingmotifengin": [9, 12], "sqlalchemi": [9, 15], "transact": 9, "experienc": 9, "weird": 9, "mai": [9, 15, 41, 43, 44], "caus": [9, 35, 42], "begin": [9, 38], "cls_dict": 10, "metaclass": 10, "when": [10, 15, 17, 20, 21, 28, 38, 41, 43, 44, 45], "singelton": 10, "being": [10, 15, 24, 28], "initi": [10, 41], "graphconnect": 12, "db_identifi": 12, "buildingmotif_stor": 12, "create_graph": 12, "get_all_graph_identifi": 12, "get_graph": 12, "delete_graph": 12, "delet": [12, 13, 43], "tableconnect": 13, "create_db_model": 13, "dbmodel": [13, 14, 18], "get_all_db_model": 13, "get_db_model": 13, "id": [13, 14, 17, 18, 19, 20], "get_db_model_by_nam": 13, "update_db_model_nam": 13, "update_db_model_descript": 13, "delete_db_model": 13, "create_db_shape_collect": 13, "dbshapecollect": [13, 14, 19], "shape": [13, 14, 17, 18, 19, 21, 38, 40, 42, 43], "get_all_db_shape_collect": 13, "get_db_shape_collect": 13, "delete_db_shape_collect": 13, "create_db_librari": 13, "dblibrari": [13, 14, 17], "get_all_db_librari": 13, "get_db_library_by_id": 13, "get_db_library_by_nam": 13, "update_db_library_nam": 13, "delete_db_librari": 13, "create_db_templ": 13, "library_id": [13, 14], "dbtemplat": [13, 14, 20], "get_all_db_templ": 13, "get_db_template_by_id": 13, "get_db_template_by_nam": 13, "get_library_defining_db_templ": 13, "get_db_template_depend": 13, "tupl": [13, 15, 18, 19, 20, 21, 30, 35, 37, 38], "depsassoci": [13, 14], "get_depend": [13, 20], "dependant_id": [13, 14], "update_db_template_nam": 13, "update_db_template_optional_arg": 13, "optional_arg": [13, 14, 17, 20], "add_template_dependency_preliminari": 13, "template_id": [13, 20], "dependency_id": 13, "preliminari": 13, "bind": [13, 20, 38, 40, 42, 43, 45], "serv": [13, 40], "popul": [13, 20, 21, 37], "direct": [13, 37], "acycl": 13, "check": [13, 37, 41, 44], "ensur": [13, 30, 36, 41, 44], "those": [13, 24, 42, 43, 44, 45], "upshot": 13, "refer": [13, 15, 20, 35, 36, 43, 44], "necessari": [13, 21, 43], "mani": [13, 14, 19, 30, 44, 45], "nest": [13, 38], "compon": [13, 21, 43, 44, 45], "s223": 13, "mapsto": 13, "check_all_template_depend": 13, "your": [13, 43, 44], "param": [13, 20, 36, 38, 43, 44], "valueerror": [13, 17, 36], "depende": 13, "required_param": 13, "recurs": [13, 19, 20, 38], "check_template_dependency_relationship": 13, "dep": 13, "well": [13, 43], "involv": 13, "seri": [13, 15], "perform": [13, 42, 44], "dure": [13, 20, 36, 38, 41], "template_connect": 13, "appear": [13, 42], "remove_template_depend": 13, "update_db_template_librari": 13, "delete_db_templ": 13, "graph_id": 14, "manifest_id": 14, "manifest": [14, 18, 42], "shapecollect": [14, 17, 18, 19, 21, 44], "distribut": [14, 36, 40], "shape_collection_id": 14, "shape_collect": [14, 18, 21, 42, 44], "dependee_id": 14, "content": [14, 18, 24, 40, 43, 44, 45], "body_id": 14, "jsontyp": 15, "custom": [15, 44], "json": [15, 24, 40], "jsonb": 15, "postgr": 15, "dialect": 15, "allow": [15, 43, 45], "enforc": 15, "uniqu": [15, 17, 20, 38, 43], "encod": [15, 40], "dictionari": [15, 18, 20, 30, 36, 43], "impl": 15, "alia": 15, "hashabl": 15, "flag": [15, 35, 40], "mean": [15, 37], "aren": [15, 44], "orm": 15, "cache_ok": 15, "true": [15, 17, 18, 19, 20, 28, 30, 37, 38, 41, 42, 44], "statement": 15, "externaltyp": 15, "safe": 15, "cach": [15, 24, 26, 27, 37], "emit": 15, "includ": [15, 18, 20, 35, 38, 40, 41, 42, 43, 44], "element": 15, "typedecor": 15, "mytyp": 15, "string": [15, 20, 24, 30, 40, 43], "internal_onli": 15, "would": [15, 38, 42, 43, 45], "equival": 15, "_static_cache_kei": 15, "scheme": 15, "extract": 15, "becom": 15, "cacheabl": 15, "render": 15, "To": [15, 40, 41, 43, 44, 45], "accommod": 15, "datatyp": 15, "unhash": 15, "assign": [15, 42], "whose": [15, 20], "accept": 15, "lookup": [15, 37], "publish": 15, "sort": [15, 30], "un": 15, "lookuptyp": 15, "userdefinedtyp": 15, "non": [15, 41], "get_col_spec": 15, "kw": 15, "varchar": 15, "255": 15, "bind_processor": 15, "abl": [15, 20], "type_": 15, "stdin": 15, "sawarn": 15, "symbol": 15, "no_cach": 15, "did": [15, 42], "wouldn": 15, "insid": [15, 17, 18, 44, 45], "cannot": [15, 17], "itself": [15, 21, 43], "fail": [15, 21, 35, 41, 42, 44], "some_cach": 15, "typeerror": 15, "privat": 15, "variabl": [15, 40, 42, 44, 45], "public": 15, "themselv": 15, "_lookup": 15, "convert": [15, 38], "mixin": 15, "sql_cach": 15, "load_dialect_impl": 15, "typeengin": 15, "type_engin": 15, "help": [15, 19, 40, 44], "determin": [15, 19, 28, 43, 45], "ultim": 15, "By": [15, 19, 44, 45], "_id": [17, 18, 19, 20], "_name": [17, 18, 20], "_bm": [17, 18, 19, 20], "mirror": [17, 18, 19, 20], "classmethod": [17, 18, 19, 20, 24], "overwrit": 17, "bool": [17, 18, 19, 20, 21, 28, 30, 35, 37, 38], "db_id": 17, "union": [17, 20, 26, 30, 35], "priorit": 17, "resolv": [17, 19, 21, 42], "remot": [17, 40], "replac": [17, 38, 43], "load_from_libraries_yml": 17, "multipl": [17, 40], "properli": 17, "format": [17, 41, 42, 44, 45], "order": [17, 36, 37], "directli": [17, 40, 43, 44], "case": [17, 42], "commandlin": 17, "yaml": [17, 36, 40, 41, 45], "create_templ": 17, "get_templ": [17, 42, 43], "get_shape_collect": [17, 42, 44], "_descript": 18, "_manifest_id": 18, "neither": 18, "nor": 18, "add_tripl": [18, 19], "node": [18, 19, 20, 21, 35, 37, 38, 41, 44], "sequenc": [18, 19, 30, 42, 44], "error_on_missing_import": [18, 19], "validationcontext": [18, 21], "against": [18, 33, 41, 44], "automat": [18, 40, 41, 45], "singl": [18, 42, 43, 44], "miss": [18, 19, 21, 41, 42, 44], "deal": 18, "compil": [18, 36], "test_model_against_shap": 18, "shapes_to_test": 18, "target_class": 18, "report": [18, 21, 38, 44], "upon": [18, 40, 41, 45], "relat": [18, 43], "get_manifest": [18, 44], "update_manifest": [18, 44], "graph_nam": 19, "subject": [19, 36, 42, 43], "owl": [19, 40, 42, 43, 44], "resolve_import": 19, "recursive_limit": 19, "request": 19, "limit": [19, 43], "suppress": 19, "n": [19, 30], "get_shapes_of_definition_typ": [19, 44], "definition_typ": 19, "present": 19, "desir": [19, 41, 44], "get_shapes_of_domain": 19, "domain": 19, "get_shapes_about_class": 19, "rdf_type": 19, "target": [19, 30, 35, 42], "superclass": [19, 24], "onli": [19, 41, 45], "appli": [19, 30, 36, 44, 45], "concern": 19, "in_memory_copi": 20, "add_depend": 20, "check_depend": 20, "remove_depend": 20, "all_paramet": 20, "exclud": [20, 42, 43, 44], "dependency_paramet": 20, "parameter_count": 20, "counter": 20, "histogram": 20, "count": [20, 35, 38, 44], "transit": 20, "dependency_for_paramet": 20, "search": [20, 37, 38, 44], "to_inlin": 20, "preserve_arg": 20, "inlin": [20, 28, 38], "suffix": 20, "collis": 20, "combin": [20, 21, 30, 38], "adjust": 20, "preserv": 20, "renam": 20, "confus": 20, "evalu": [20, 35, 42, 44, 45], "require_optional_arg": 20, "warn_unus": 20, "unbound": 20, "unless": 20, "bound": [20, 45], "even": 20, "substitut": 20, "whether": 20, "were": [20, 42, 43], "paramt": [20, 45], "ignor": [20, 41], "include_opt": 20, "autogener": [20, 41, 42], "invent": 20, "defining_librari": 20, "library_depend": 20, "find_subgraph": 20, "iter": [20, 30, 37], "subgraph": [20, 37], "partial": [20, 43], "entir": 20, "cover": [20, 43, 44], "yield": [20, 37], "pathlik": [20, 24], "stringio": [20, 26], "onc": 20, "bytesio": 20, "written": [20, 45], "sent": 20, "program": 20, "buffer": 20, "generate_spreadsheet": 20, "spreadsheet": 20, "byte": 20, "_template_id": 20, "graphdiff": 21, "focu": 21, "validation_result": [21, 42, 44], "actual": [21, 42], "rather": [21, 36], "than": [21, 36, 38], "hold": [21, 42, 43], "reconcil": 21, "reason": [21, 41, 42, 44], "human": 21, "explan": 21, "failed_shap": 21, "failed_compon": 21, "constraint": [21, 35, 42, 44], "pathclasscount": 21, "minc": 21, "maxc": 21, "classnam": 21, "pathshapecount": 21, "shapenam": 21, "extra_bodi": 21, "extra_dep": 21, "match": [21, 30, 35, 37, 44], "requiredpath": 21, "requiredclass": 21, "graphclasscardin": 21, "expectedcount": 21, "number": [21, 35, 38, 42, 44], "report_str": [21, 44], "diffset": [21, 42, 44], "unord": 21, "input": [21, 37, 38, 40, 42, 43], "as_templ": 21, "diffset_to_templ": 21, "grouped_diffset": 21, "wrong": 21, "respect": [21, 42, 43, 44], "_report_to_diffset": 21, "violat": 21, "piec": 24, "dump": 24, "them": [24, 26, 29], "bn": 25, "brick_bacnet_scan": 25, "expos": [26, 29], "namingconventioningress": 27, "callabl": [27, 28, 30, 36, 37], "tokenresult": [27, 30], "dump_failed_label": 27, "attempt": [28, 41], "chooser": 28, "xlsxingress": 29, "sheetnam": 29, "ensure_token": 30, "token_or_constructor": 30, "constant": 30, "delimit": 30, "construct": [30, 35], "length": 30, "parseresult": 30, "success": [30, 41, 42, 44], "type_nam": 30, "substring_n": 30, "substr": 30, "regex": 30, "r": 30, "regular": 30, "abbrevi": 30, "pattern": [30, 45], "must": [30, 37, 41, 44], "consecut": 30, "seq_pars": 30, "repeatedli": 30, "until": 30, "stop": 30, "common_abbrevi": 30, "parse_list": 30, "target_list": 30, "failur": [30, 42, 44], "first_tru": 30, "pred": 30, "first": [30, 36, 37, 42, 43, 44, 45], "item": [30, 42], "results_to_token": 30, "analyze_failur": 30, "analyz": 30, "bind_prefix": 32, "validate_libraries_yaml": 33, "jsonschema": 33, "validationerror": 33, "retriev": [33, 44], "deseri": 33, "messag": [35, 40, 44], "programat": 35, "add_properti": 35, "add_list_properti": 35, "OR": 35, "AND": 35, "NOT": 35, "xone": 35, "nodeshap": [35, 38, 44], "of_class": 35, "class_": 35, "activ": [35, 41], "much": [35, 41], "certain": [35, 44], "always_run": 35, "blank": [35, 38], "insur": 35, "alwai": [35, 44], "exactli": [35, 44], "exact": 35, "has_properti": 35, "propertyshap": 35, "has_path": 35, "zero_or_on": 35, "zero_or_mor": 35, "one_or_mor": 35, "mutual": 35, "exclus": 35, "zero": 35, "min": [35, 38], "max": 35, "qualifi": 35, "sh": [35, 38, 44], "precid": 35, "over": [35, 37, 41], "Is": 35, "matches_class": 35, "matches_shap": 35, "rule": [36, 43, 44], "downstream": 36, "feed": [36, 45], "haspart": [36, 42, 43, 44, 45], "hastyp": 36, "isfedbi": 36, "mayb": 36, "author": 36, "introduc": [36, 45], "macro": 36, "signatur": 36, "foo": 36, "hardcod": 36, "decor": 36, "regist": 36, "execut": [36, 44], "_summary_": 36, "_description_": 36, "compile_template_spec": 36, "spec": [36, 40], "decod": 36, "vf2": 37, "algorithm": 37, "isomorph": 37, "get_semantic_feas": 37, "g1": 37, "g2": 37, "_cach": 37, "_ontology_lookup_cach": 37, "feasibl": 37, "generate_all_subgraph": 37, "induc": 37, "decreas": 37, "size": 37, "want": [37, 42, 43, 44, 45], "find": [37, 38, 41], "largest": 37, "monomorph": 37, "digraph_to_rdflib": 37, "digraph": 37, "nx": 37, "rdflib_to_networkx_digraph": 37, "templatematch": 37, "graph_target": 37, "template_bind": 37, "template_graph": 37, "add_map": 37, "largest_mapping_s": 37, "building_subgraph_from_map": 37, "template_subgraph_from_map": 37, "remaining_template_graph": 37, "remain": [37, 38], "remaining_templ": 37, "mappings_it": 37, "descend": 37, "building_mapping_subgraphs_it": 37, "copy_graph": 38, "preserve_blank_nod": 38, "boolean": 38, "keep": 38, "inline_sh_nod": 38, "edit": 38, "combine_graph": 38, "graph_siz": 38, "measur": 38, "remove_triples_with_nod": 38, "replace_nod": 38, "get_ontology_fil": 38, "travers": 38, "get_template_parts_from_shap": 38, "shape_nam": 38, "shape_graph": 38, "mincount": 38, "qualifiedmincount": 38, "template_to_shap": 38, "new_temporary_graph": 38, "more_namespac": 38, "get_paramet": 38, "abc": [38, 43], "rewrite_shape_graph": 38, "rewrit": 38, "origin": [38, 45], "rewritten": 38, "skip_uri": 38, "axiomat": 38, "xsd": 38, "forget": [40, 44], "db_uri": 40, "suppli": [40, 42], "right": 40, "recal": [40, 45], "programmat": 40, "h": 40, "dir": 40, "o": [40, 41], "ont": 40, "l": 40, "library_manifest_fil": 40, "exit": 40, "describ": [40, 45], "three": 40, "get_default_libraries_yml": 40, "immedi": 40, "enclos": 40, "zonepac": 40, "pull": [40, 42], "branch": 40, "temporarili": 40, "clone": [40, 41, 42, 43, 44], "repo": 40, "nrel": [40, 42, 43, 44], "chiller": 40, "plant": 40, "invidu": 40, "diretori": 40, "output_fil": 40, "scanner": 40, "subcommand": 40, "save": [40, 42, 43, 44], "port": 40, "listen": 40, "prerequisit": 41, "poetri": 41, "m": 41, "pre": 41, "commit": [41, 43], "env": 41, "migrat": 41, "window": 41, "unix": 41, "shell": 41, "bash": 41, "allexport": 41, "alemb": 41, "head": 41, "revis": 41, "localhost": 41, "5000": 41, "while": 41, "backend": 41, "psycopg2": 41, "binari": 41, "deploy": 41, "featur": [41, 42, 43, 44], "ci": 41, "reproduc": 41, "slight": 41, "comit": 41, "static": 41, "stage": 41, "fix": [41, 42], "inspect": 41, "isort": 41, "black": 41, "mypi": 41, "pyproject": 41, "toml": 41, "flake8": 41, "manual": 41, "log_cli": 41, "pytest": 41, "action": 41, "workflow": 41, "html": 41, "jupyt": 41, "book": 41, "sphinx": 41, "_build": 41, "dry": 41, "js": 41, "angular": 41, "readm": 41, "md": 41, "4200": 41, "learn": [42, 43, 44, 45], "fork": [42, 43, 44], "133": [42, 43, 44], "tutorial2_model": [42, 44], "tutorial2_manifest": [42, 44], "subset": [42, 43, 44], "g36": [42, 44, 45], "guideline36": [42, 44], "gather": [42, 44], "eas": [42, 44], "supply_fan": [42, 43, 44], "core_zn": [42, 43, 44], "psc_ac": [42, 43, 44], "sz": [42, 44], "ahu": [42, 43, 44], "sa": [42, 45], "fan": [42, 43, 44], "minimum": [42, 44], "could": [42, 44, 45], "explicitli": [42, 44], "ve": [42, 44], "ask": [42, 43, 44], "prompt": [42, 44], "closer": 42, "generated_templ": 42, "templ": [42, 45], "resolvef843bc3f": 42, "resolve340d587": 42, "p3": 42, "p1": 42, "p2": 42, "default5": 42, "frequency_command": 42, "start_stop_command": 42, "fan_statu": 42, "fairli": 42, "loop": 42, "challeng": 42, "fact": 42, "advantag": [42, 43], "wtih": 42, "postfix": 42, "signific": 42, "highli": 42, "continu": 42, "ahu_nam": [42, 43, 44], "sensibl": 42, "supply_fan_nam": 42, "know": [42, 43, 44, 45], "explor": 42, "high": [42, 44], "guidelin": [42, 44, 45], "destin": [42, 43, 44], "tutorial3_model": 42, "www": [42, 43, 44], "w3": [42, 43, 44], "2002": [42, 43, 44], "clg_coil": [42, 43], "damper": [42, 43, 44, 45], "htg_coil": [42, 43, 44], "cooling_coil": [42, 43, 44], "fanp1": 42, "fanp2": 42, "fanp3": 42, "heating_coil": [42, 43, 44, 45], "60b1a3e1": 42, "ce4b": 42, "43b5": 42, "921f": 42, "1a1642eb139": 42, "few": [43, 45], "similar": 43, "small": [43, 44], "offic": [43, 44], "commerci": [43, 44], "prototyp": [43, 44], "reader": 43, "familiar": 43, "turtl": [43, 45], "syntax": [43, 45], "persist": 43, "simplic": 43, "tell": 43, "syntact": 43, "reveal": 43, "coupl": [43, 44], "annot": 43, "predic": 43, "soon": 43, "simpli": 43, "ten": 43, "enthalpy_sensor": 43, "unoccupied_heating_temperature_setpoint": 43, "radiant_panel_temperature_setpoint": 43, "discharge_air_humidity_sensor": 43, "particulate_matter_sensor": 43, "entering_chilled_water_temperature_sensor": 43, "discharge_air_flow_reset_setpoint": 43, "water_temperature_alarm": 43, "supply_air_temperature_setpoint": 43, "air_flow_loss_alarm": 43, "wrapper": 43, "manipul": 43, "whole": 43, "via": 43, "b0893a8b": 43, "3bdb": 43, "4b47": 43, "a738": 43, "7091dc50511f": 43, "These": [43, 44], "belong": 43, "my_graph": 43, "my_external_fil": 43, "raw": 43, "ex": 43, "a1": 43, "air_handler_unit": 43, "touch": 43, "chill": 43, "water": 43, "air": [43, 44, 45], "ahu_templ": 43, "mandatori": 43, "understand": [43, 44], "psz_ac": 43, "condition": 43, "schedul": 43, "ahu_binding_dict": 43, "ahu_graph": 43, "cool": [43, 44], "coil": [43, 44, 45], "oa_ra_damper_templ": 43, "fan_templ": 43, "clg_coil_templ": 43, "fan_nam": 43, "fan_binding_dict": 43, "fan_graph": 43, "outdoor": 43, "oa_ra_damper_nam": 43, "oa_ra_damper_binding_dict": 43, "oa_ra_damper_graph": 43, "clg": [43, 44], "clg_coil_nam": 43, "clg_coil_binding_dict": 43, "clg_coil_graph": 43, "confirm": [43, 44], "htg_coil_templ": [43, 44], "htg": [43, 44, 45], "htg_coil_nam": [43, 44], "htg_coil_bind": [43, 44], "htg_coil_graph": [43, 44], "wa": [43, 44], "tutorial1_model": [43, 44], "energycod": 43, "gov": [43, 44], "tr": [43, 44], "readthedoc": 43, "feedback": 44, "thing": [44, 45], "correctli": 44, "languag": 44, "special": 44, "accord": 44, "suffic": 44, "my_site_constraint": 44, "targetnod": 44, "exactcount": 44, "past": 44, "As": 44, "exercis": 44, "heat": 44, "targetclass": 44, "block": 44, "treat": [44, 45], "attributeerror": 44, "310": 44, "311": 44, "312": 44, "313": 44, "314": 44, "complain": 44, "why": 44, "care": 44, "top": [44, 45], "forgot": 44, "longer": 44, "bmotif": 44, "system_specif": 44, "re": 44, "interest": 44, "volum": [44, 45], "append": 44, "shown": 44, "offici": 44, "text": 44, "separ": 44, "invalid": 44, "technic": 44, "indivdu": 45, "termin": 45, "reheat": 45, "variable_air_volume_box_with_reheat": 45, "flow": 45, "za": 45, "occ": 45, "supply_air_flow_sensor": 45, "hvac_zon": 45, "occupancy_sensor": 45, "co2_level_sensor": 45, "short": 45, "sensor": 45, "co": 45, "topolog": 45, "further": 45, "zoom": 45, "second": 45, "problem": 45, "dependeci": 45, "posit": 45, "dmppo": 45, "damper_position_command": 45, "sugar": 45, "togeth": 45, "cmd": 45, "position_command": 45, "among": 45, "principl": 45, "manufactur": 45, "profil": 45, "organiz": 45, "subsystem": 45}, "objects": {"": [[5, 0, 0, "-", "buildingmotif"]], "buildingmotif": [[6, 0, 0, "-", "api"], [8, 0, 0, "-", "building_motif"], [11, 0, 0, "-", "database"], [16, 0, 0, "-", "dataclasses"], [22, 0, 0, "-", "ingresses"], [30, 0, 0, "-", "label_parsing"], [31, 0, 0, "-", "libraries"], [32, 0, 0, "-", "namespaces"], [33, 0, 0, "-", "schemas"], [34, 0, 0, "-", "shape_builder"], [36, 0, 0, "-", "template_compilation"], [37, 0, 0, "-", "template_matcher"], [38, 0, 0, "-", "utils"]], "buildingmotif.api": [[7, 0, 0, "-", "views"]], "buildingmotif.building_motif": [[9, 0, 0, "-", "building_motif"], [10, 0, 0, "-", "singleton"]], "buildingmotif.building_motif.building_motif": [[9, 1, 1, "", "BuildingMOTIF"], [9, 1, 1, "", "BuildingMotifEngine"], [9, 4, 1, "", "get_building_motif"]], "buildingmotif.building_motif.building_motif.BuildingMOTIF": [[9, 2, 1, "", "clean"], [9, 2, 1, "", "close"], [9, 3, 1, "", "session"], [9, 2, 1, "", "setup_logging"], [9, 2, 1, "", "setup_tables"]], "buildingmotif.building_motif.building_motif.BuildingMotifEngine": [[9, 2, 1, "", "begin"], [9, 2, 1, "", "connect"]], "buildingmotif.building_motif.singleton": [[10, 1, 1, "", "Singleton"], [10, 5, 1, "", "SingletonNotInstantiatedException"]], "buildingmotif.database": [[12, 0, 0, "-", "graph_connection"], [13, 0, 0, "-", "table_connection"], [14, 0, 0, "-", "tables"], [15, 0, 0, "-", "utils"]], "buildingmotif.database.graph_connection": [[12, 1, 1, "", "GraphConnection"]], "buildingmotif.database.graph_connection.GraphConnection": [[12, 2, 1, "", "create_graph"], [12, 2, 1, "", "delete_graph"], [12, 2, 1, "", "get_all_graph_identifiers"], [12, 2, 1, "", "get_graph"]], "buildingmotif.database.table_connection": [[13, 1, 1, "", "TableConnection"]], "buildingmotif.database.table_connection.TableConnection": [[13, 2, 1, "", "add_template_dependency_preliminary"], [13, 2, 1, "", "check_all_template_dependencies"], [13, 2, 1, "", "check_template_dependency_relationship"], [13, 2, 1, "", "create_db_library"], [13, 2, 1, "", "create_db_model"], [13, 2, 1, "", "create_db_shape_collection"], [13, 2, 1, "", "create_db_template"], [13, 2, 1, "", "delete_db_library"], [13, 2, 1, "", "delete_db_model"], [13, 2, 1, "", "delete_db_shape_collection"], [13, 2, 1, "", "delete_db_template"], [13, 2, 1, "", "get_all_db_libraries"], [13, 2, 1, "", "get_all_db_models"], [13, 2, 1, "", "get_all_db_shape_collections"], [13, 2, 1, "", "get_all_db_templates"], [13, 2, 1, "", "get_db_library_by_id"], [13, 2, 1, "", "get_db_library_by_name"], [13, 2, 1, "", "get_db_model"], [13, 2, 1, "", "get_db_model_by_name"], [13, 2, 1, "", "get_db_shape_collection"], [13, 2, 1, "", "get_db_template_by_id"], [13, 2, 1, "", "get_db_template_by_name"], [13, 2, 1, "", "get_db_template_dependencies"], [13, 2, 1, "", "get_library_defining_db_template"], [13, 2, 1, "", "remove_template_dependency"], [13, 2, 1, "", "update_db_library_name"], [13, 2, 1, "", "update_db_model_description"], [13, 2, 1, "", "update_db_model_name"], [13, 2, 1, "", "update_db_template_library"], [13, 2, 1, "", "update_db_template_name"], [13, 2, 1, "", "update_db_template_optional_args"]], "buildingmotif.database.tables": [[14, 1, 1, "", "DBLibrary"], [14, 1, 1, "", "DBModel"], [14, 1, 1, "", "DBShapeCollection"], [14, 1, 1, "", "DBTemplate"], [14, 1, 1, "", "DepsAssociation"]], "buildingmotif.database.tables.DBLibrary": [[14, 6, 1, "", "id"], [14, 6, 1, "", "name"], [14, 6, 1, "", "shape_collection"], [14, 6, 1, "", "shape_collection_id"], [14, 6, 1, "", "templates"]], "buildingmotif.database.tables.DBModel": [[14, 6, 1, "", "description"], [14, 6, 1, "", "graph_id"], [14, 6, 1, "", "id"], [14, 6, 1, "", "manifest"], [14, 6, 1, "", "manifest_id"], [14, 6, 1, "", "name"]], "buildingmotif.database.tables.DBShapeCollection": [[14, 6, 1, "", "graph_id"], [14, 6, 1, "", "id"]], "buildingmotif.database.tables.DBTemplate": [[14, 6, 1, "", "body_id"], [14, 6, 1, "", "dependants"], [14, 6, 1, "", "dependencies"], [14, 6, 1, "", "id"], [14, 6, 1, "", "library"], [14, 6, 1, "", "library_id"], [14, 6, 1, "", "name"], [14, 6, 1, "", "optional_args"]], "buildingmotif.database.tables.DepsAssociation": [[14, 6, 1, "", "args"], [14, 6, 1, "", "dependant_id"], [14, 6, 1, "", "dependee_id"], [14, 6, 1, "", "id"]], "buildingmotif.database.utils": [[15, 1, 1, "", "JSONType"]], "buildingmotif.database.utils.JSONType": [[15, 6, 1, "", "cache_ok"], [15, 6, 1, "", "hashable"], [15, 6, 1, "", "impl"], [15, 2, 1, "", "load_dialect_impl"]], "buildingmotif.dataclasses": [[17, 0, 0, "-", "library"], [18, 0, 0, "-", "model"], [19, 0, 0, "-", "shape_collection"], [20, 0, 0, "-", "template"], [21, 0, 0, "-", "validation"]], "buildingmotif.dataclasses.library": [[17, 1, 1, "", "Library"]], "buildingmotif.dataclasses.library.Library": [[17, 2, 1, "", "create"], [17, 2, 1, "", "create_template"], [17, 2, 1, "", "get_shape_collection"], [17, 2, 1, "", "get_template_by_name"], [17, 2, 1, "", "get_templates"], [17, 3, 1, "", "id"], [17, 2, 1, "", "load"], [17, 2, 1, "", "load_from_libraries_yml"], [17, 3, 1, "", "name"]], "buildingmotif.dataclasses.model": [[18, 1, 1, "", "Model"]], "buildingmotif.dataclasses.model.Model": [[18, 2, 1, "", "add_graph"], [18, 2, 1, "", "add_triples"], [18, 2, 1, "", "compile"], [18, 2, 1, "", "create"], [18, 3, 1, "", "description"], [18, 2, 1, "", "get_manifest"], [18, 6, 1, "", "graph"], [18, 3, 1, "", "id"], [18, 2, 1, "", "load"], [18, 3, 1, "", "name"], [18, 2, 1, "", "test_model_against_shapes"], [18, 2, 1, "", "update_manifest"], [18, 2, 1, "", "validate"]], "buildingmotif.dataclasses.shape_collection": [[19, 1, 1, "", "ShapeCollection"]], "buildingmotif.dataclasses.shape_collection.ShapeCollection": [[19, 2, 1, "", "add_graph"], [19, 2, 1, "", "add_triples"], [19, 2, 1, "", "create"], [19, 2, 1, "", "get_shapes_about_class"], [19, 2, 1, "", "get_shapes_of_definition_type"], [19, 2, 1, "", "get_shapes_of_domain"], [19, 6, 1, "", "graph"], [19, 3, 1, "", "graph_name"], [19, 3, 1, "", "id"], [19, 2, 1, "", "load"], [19, 2, 1, "", "resolve_imports"]], "buildingmotif.dataclasses.template": [[20, 1, 1, "", "Dependency"], [20, 1, 1, "", "Template"]], "buildingmotif.dataclasses.template.Dependency": [[20, 6, 1, "", "args"], [20, 3, 1, "", "template"], [20, 3, 1, "", "template_id"]], "buildingmotif.dataclasses.template.Template": [[20, 2, 1, "", "add_dependency"], [20, 3, 1, "", "all_parameters"], [20, 6, 1, "", "body"], [20, 2, 1, "", "check_dependencies"], [20, 3, 1, "", "defining_library"], [20, 2, 1, "", "dependency_for_parameter"], [20, 3, 1, "", "dependency_parameters"], [20, 2, 1, "", "evaluate"], [20, 2, 1, "", "fill"], [20, 2, 1, "", "find_subgraphs"], [20, 2, 1, "", "generate_csv"], [20, 2, 1, "", "generate_spreadsheet"], [20, 2, 1, "", "get_dependencies"], [20, 3, 1, "", "id"], [20, 2, 1, "", "in_memory_copy"], [20, 2, 1, "", "inline_dependencies"], [20, 2, 1, "", "library_dependencies"], [20, 2, 1, "", "load"], [20, 3, 1, "", "name"], [20, 6, 1, "", "optional_args"], [20, 3, 1, "", "parameter_counts"], [20, 3, 1, "", "parameters"], [20, 2, 1, "", "remove_dependency"], [20, 2, 1, "", "to_inline"]], "buildingmotif.dataclasses.validation": [[21, 1, 1, "", "GraphClassCardinality"], [21, 1, 1, "", "GraphDiff"], [21, 1, 1, "", "PathClassCount"], [21, 1, 1, "", "PathShapeCount"], [21, 1, 1, "", "RequiredClass"], [21, 1, 1, "", "RequiredPath"], [21, 1, 1, "", "ValidationContext"], [21, 4, 1, "", "diffset_to_templates"]], "buildingmotif.dataclasses.validation.GraphClassCardinality": [[21, 6, 1, "", "classname"], [21, 6, 1, "", "expectedCount"], [21, 2, 1, "", "reason"], [21, 2, 1, "", "resolve"]], "buildingmotif.dataclasses.validation.GraphDiff": [[21, 3, 1, "", "failed_component"], [21, 3, 1, "", "failed_shape"], [21, 6, 1, "", "focus"], [21, 6, 1, "", "graph"], [21, 2, 1, "", "reason"], [21, 2, 1, "", "resolve"], [21, 6, 1, "", "validation_result"]], "buildingmotif.dataclasses.validation.PathClassCount": [[21, 6, 1, "", "classname"], [21, 6, 1, "", "maxc"], [21, 6, 1, "", "minc"], [21, 6, 1, "", "path"], [21, 2, 1, "", "reason"], [21, 2, 1, "", "resolve"]], "buildingmotif.dataclasses.validation.PathShapeCount": [[21, 6, 1, "", "extra_body"], [21, 6, 1, "", "extra_deps"], [21, 6, 1, "", "maxc"], [21, 6, 1, "", "minc"], [21, 6, 1, "", "path"], [21, 2, 1, "", "reason"], [21, 2, 1, "", "resolve"], [21, 6, 1, "", "shapename"]], "buildingmotif.dataclasses.validation.RequiredClass": [[21, 6, 1, "", "classname"], [21, 2, 1, "", "reason"], [21, 2, 1, "", "resolve"]], "buildingmotif.dataclasses.validation.RequiredPath": [[21, 6, 1, "", "maxc"], [21, 6, 1, "", "minc"], [21, 6, 1, "", "path"], [21, 2, 1, "", "reason"], [21, 2, 1, "", "resolve"]], "buildingmotif.dataclasses.validation.ValidationContext": [[21, 2, 1, "", "as_templates"], [21, 3, 1, "", "diffset"], [21, 6, 1, "", "model"], [21, 6, 1, "", "report"], [21, 6, 1, "", "report_string"], [21, 6, 1, "", "shape_collections"], [21, 6, 1, "", "valid"]], "buildingmotif.ingresses": [[23, 0, 0, "-", "bacnet"], [24, 0, 0, "-", "base"], [25, 0, 0, "-", "brick"], [26, 0, 0, "-", "csvingress"], [27, 0, 0, "-", "naming_convention"], [28, 0, 0, "-", "template"], [29, 0, 0, "-", "xlsx"]], "buildingmotif.ingresses.bacnet": [[23, 1, 1, "", "BACnetNetwork"]], "buildingmotif.ingresses.bacnet.BACnetNetwork": [[23, 3, 1, "", "records"]], "buildingmotif.ingresses.base": [[24, 1, 1, "", "GraphIngressHandler"], [24, 1, 1, "", "IngressHandler"], [24, 1, 1, "", "Record"], [24, 1, 1, "", "RecordIngressHandler"]], "buildingmotif.ingresses.base.GraphIngressHandler": [[24, 2, 1, "", "graph"]], "buildingmotif.ingresses.base.Record": [[24, 6, 1, "", "fields"], [24, 6, 1, "", "rtype"]], "buildingmotif.ingresses.base.RecordIngressHandler": [[24, 2, 1, "", "dump"], [24, 2, 1, "", "dumps"], [24, 2, 1, "", "load"], [24, 2, 1, "", "loads"], [24, 3, 1, "", "records"]], "buildingmotif.ingresses.brick": [[25, 1, 1, "", "BACnetToBrickIngress"]], "buildingmotif.ingresses.brick.BACnetToBrickIngress": [[25, 6, 1, "", "BNS"], [25, 2, 1, "", "graph"]], "buildingmotif.ingresses.csvingress": [[26, 1, 1, "", "CSVIngress"]], "buildingmotif.ingresses.csvingress.CSVIngress": [[26, 3, 1, "", "records"]], "buildingmotif.ingresses.naming_convention": [[27, 1, 1, "", "NamingConventionIngress"]], "buildingmotif.ingresses.naming_convention.NamingConventionIngress": [[27, 2, 1, "", "dump_failed_labels"], [27, 3, 1, "", "records"]], "buildingmotif.ingresses.template": [[28, 1, 1, "", "TemplateIngress"], [28, 1, 1, "", "TemplateIngressWithChooser"]], "buildingmotif.ingresses.template.TemplateIngress": [[28, 2, 1, "", "graph"]], "buildingmotif.ingresses.template.TemplateIngressWithChooser": [[28, 2, 1, "", "graph"]], "buildingmotif.ingresses.xlsx": [[29, 1, 1, "", "XLSXIngress"]], "buildingmotif.ingresses.xlsx.XLSXIngress": [[29, 3, 1, "", "records"]], "buildingmotif.label_parsing": [[30, 4, 1, "", "COMMON_ABBREVIATIONS"], [30, 1, 1, "", "Constant"], [30, 1, 1, "", "Delimiter"], [30, 1, 1, "", "Identifier"], [30, 1, 1, "", "ParseResult"], [30, 1, 1, "", "TokenResult"], [30, 4, 1, "", "abbreviations"], [30, 4, 1, "", "analyze_failures"], [30, 4, 1, "", "choice"], [30, 4, 1, "", "constant"], [30, 4, 1, "", "ensure_token"], [30, 4, 1, "", "first_true"], [30, 4, 1, "", "many"], [30, 4, 1, "", "parse"], [30, 4, 1, "", "parse_list"], [30, 4, 1, "", "regex"], [30, 4, 1, "", "results_to_tokens"], [30, 4, 1, "", "sequence"], [30, 4, 1, "", "string"], [30, 4, 1, "", "substring_n"]], "buildingmotif.label_parsing.Constant": [[30, 6, 1, "", "value"]], "buildingmotif.label_parsing.Delimiter": [[30, 6, 1, "", "value"]], "buildingmotif.label_parsing.Identifier": [[30, 6, 1, "", "value"]], "buildingmotif.label_parsing.ParseResult": [[30, 6, 1, "", "success"], [30, 6, 1, "", "tokens"]], "buildingmotif.label_parsing.TokenResult": [[30, 6, 1, "", "length"], [30, 6, 1, "", "token"], [30, 6, 1, "", "value"]], "buildingmotif.namespaces": [[32, 4, 1, "", "bind_prefixes"]], "buildingmotif.schemas": [[33, 4, 1, "", "validate_libraries_yaml"]], "buildingmotif.shape_builder": [[35, 0, 0, "-", "shape"]], "buildingmotif.shape_builder.shape": [[35, 4, 1, "", "AND"], [35, 4, 1, "", "NOT"], [35, 1, 1, "", "NodeShape"], [35, 4, 1, "", "OR"], [35, 1, 1, "", "PropertyShape"], [35, 1, 1, "", "Shape"], [35, 4, 1, "", "XONE"]], "buildingmotif.shape_builder.shape.NodeShape": [[35, 2, 1, "", "always_run"], [35, 2, 1, "", "count"], [35, 2, 1, "", "has_property"], [35, 2, 1, "", "of_class"]], "buildingmotif.shape_builder.shape.PropertyShape": [[35, 2, 1, "", "has_path"], [35, 2, 1, "", "matches"], [35, 2, 1, "", "matches_class"], [35, 2, 1, "", "matches_shape"]], "buildingmotif.shape_builder.shape.Shape": [[35, 2, 1, "", "AND"], [35, 2, 1, "", "NOT"], [35, 2, 1, "", "OR"], [35, 2, 1, "", "XONE"], [35, 2, 1, "", "add"], [35, 2, 1, "", "add_list_property"], [35, 2, 1, "", "add_property"]], "buildingmotif.template_compilation": [[36, 7, 1, "", "RULES"], [36, 4, 1, "", "bacnet"], [36, 4, 1, "", "body"], [36, 4, 1, "", "compile_template_spec"], [36, 4, 1, "", "feeds"], [36, 4, 1, "", "hasType"], [36, 4, 1, "", "isFedBy"], [36, 4, 1, "", "parts"], [36, 4, 1, "", "points"], [36, 4, 1, "", "rule"]], "buildingmotif.template_matcher": [[37, 1, 1, "", "TemplateMatcher"], [37, 4, 1, "", "digraph_to_rdflib"], [37, 4, 1, "", "generate_all_subgraphs"], [37, 4, 1, "", "get_semantic_feasibility"]], "buildingmotif.template_matcher.TemplateMatcher": [[37, 2, 1, "", "add_mapping"], [37, 6, 1, "", "building"], [37, 2, 1, "", "building_mapping_subgraphs_iter"], [37, 2, 1, "", "building_subgraph_from_mapping"], [37, 3, 1, "", "largest_mapping_size"], [37, 6, 1, "", "mappings"], [37, 2, 1, "", "mappings_iter"], [37, 2, 1, "", "remaining_template"], [37, 2, 1, "", "remaining_template_graph"], [37, 6, 1, "", "template"], [37, 6, 1, "", "template_bindings"], [37, 6, 1, "", "template_graph"], [37, 2, 1, "", "template_subgraph_from_mapping"]], "buildingmotif.utils": [[38, 4, 1, "", "combine_graphs"], [38, 4, 1, "", "copy_graph"], [38, 4, 1, "", "get_ontology_files"], [38, 4, 1, "", "get_parameters"], [38, 4, 1, "", "get_template_parts_from_shape"], [38, 4, 1, "", "graph_size"], [38, 4, 1, "", "inline_sh_nodes"], [38, 4, 1, "", "new_temporary_graph"], [38, 4, 1, "", "remove_triples_with_node"], [38, 4, 1, "", "replace_nodes"], [38, 4, 1, "", "rewrite_shape_graph"], [38, 4, 1, "", "skip_uri"], [38, 4, 1, "", "template_to_shape"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:property", "4": "py:function", "5": "py:exception", "6": "py:attribute", "7": "py:data"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "property", "Python property"], "4": ["py", "function", "Python function"], "5": ["py", "exception", "Python exception"], "6": ["py", "attribute", "Python attribute"], "7": ["py", "data", "Python data"]}, "titleterms": {"buildingmotif": [0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40], "document": [0, 39, 41], "refer": 0, "tutori": 0, "guid": 0, "explan": 0, "appendix": 0, "bibliographi": 1, "ingress": [2, 22, 23, 24, 25, 26, 27, 28, 29], "type": [2, 4], "record": 2, "handler": 2, "graph": [2, 43], "us": [2, 41, 44], "built": 2, "bacnet": [2, 4, 23, 40], "network": [2, 4], "csv": [2, 3], "file": 2, "xlsx": [2, 29], "spreadsheet": 2, "templat": [2, 20, 28, 42, 43, 45], "instanti": 2, "exampl": 2, "brick": [2, 4, 25], "import": [2, 3, 43], "extern": 4, "setup": [4, 42, 44], "pull": 4, "metadata": 4, "an": 4, "initi": 4, "model": [4, 18, 42, 43, 44], "augment": 4, "our": 4, "strategi": 4, "point": 4, "infer": 4, "api": [6, 7, 40], "view": 7, "building_motif": [8, 9, 10], "singleton": 10, "databas": [11, 12, 13, 14, 15, 41], "graph_connect": 12, "table_connect": 13, "tabl": 14, "util": [15, 38], "dataclass": [16, 17, 18, 19, 20, 21], "librari": [17, 31, 40, 43], "shape_collect": 19, "valid": [21, 42, 44], "base": 24, "csvingress": 26, "naming_convent": 27, "label_pars": 30, "namespac": 32, "schema": 33, "shape_build": [34, 35], "shape": [35, 44], "template_compil": 36, "template_match": 37, "code": 39, "command": 40, "line": 40, "interfac": 40, "load": [40, 43], "cli": 40, "usag": 40, "bulk": 40, "directori": 40, "ontolog": [40, 44], "git": 40, "repositori": 40, "individu": [40, 43], "scan": 40, "server": 40, "develop": 41, "instal": 41, "postgr": 41, "continu": 41, "integr": 41, "local": 41, "remot": 41, "build": 41, "publish": 41, "web": 41, "app": 41, "run": 41, "docker": 41, "correct": 42, "creation": 43, "creat": 43, "ad": [43, 44, 45], "manual": 43, "rdf": 43, "tripl": 43, "Into": 43, "explor": 43, "evalu": 43, "manifest": 44, "write": [44, 45], "tip": 44, "suppli": 44, "extra": 44, "collect": 44, "fix": 44, "case": 44, "find": 44, "part": 45, "bodi": 45, "option": 45, "depend": 45, "save": 45, "organ": 45}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1, "sphinxcontrib.bibtex": 9, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["README", "bibliography", "explanations/ingresses", "guides/csv-import", "guides/ingress-bacnet-to-brick", "reference/apidoc/_autosummary/buildingmotif", "reference/apidoc/_autosummary/buildingmotif.api", "reference/apidoc/_autosummary/buildingmotif.api.views", "reference/apidoc/_autosummary/buildingmotif.building_motif", "reference/apidoc/_autosummary/buildingmotif.building_motif.building_motif", "reference/apidoc/_autosummary/buildingmotif.building_motif.singleton", "reference/apidoc/_autosummary/buildingmotif.database", "reference/apidoc/_autosummary/buildingmotif.database.graph_connection", "reference/apidoc/_autosummary/buildingmotif.database.table_connection", "reference/apidoc/_autosummary/buildingmotif.database.tables", "reference/apidoc/_autosummary/buildingmotif.database.utils", "reference/apidoc/_autosummary/buildingmotif.dataclasses", "reference/apidoc/_autosummary/buildingmotif.dataclasses.library", "reference/apidoc/_autosummary/buildingmotif.dataclasses.model", "reference/apidoc/_autosummary/buildingmotif.dataclasses.shape_collection", "reference/apidoc/_autosummary/buildingmotif.dataclasses.template", "reference/apidoc/_autosummary/buildingmotif.dataclasses.validation", "reference/apidoc/_autosummary/buildingmotif.ingresses", "reference/apidoc/_autosummary/buildingmotif.ingresses.bacnet", "reference/apidoc/_autosummary/buildingmotif.ingresses.base", "reference/apidoc/_autosummary/buildingmotif.ingresses.brick", "reference/apidoc/_autosummary/buildingmotif.ingresses.csv", "reference/apidoc/_autosummary/buildingmotif.ingresses.template", "reference/apidoc/_autosummary/buildingmotif.ingresses.xlsx", "reference/apidoc/_autosummary/buildingmotif.libraries", "reference/apidoc/_autosummary/buildingmotif.namespaces", "reference/apidoc/_autosummary/buildingmotif.schemas", "reference/apidoc/_autosummary/buildingmotif.shape_builder", "reference/apidoc/_autosummary/buildingmotif.shape_builder.shape", "reference/apidoc/_autosummary/buildingmotif.template_compilation", "reference/apidoc/_autosummary/buildingmotif.template_matcher", "reference/apidoc/_autosummary/buildingmotif.utils", "reference/apidoc/index", "reference/cli_tool", "reference/developer_documentation", "tutorials/model_correction", "tutorials/model_creation", "tutorials/model_validation", "tutorials/template_writing"], "filenames": ["README.md", "bibliography.md", "explanations/ingresses.md", "guides/csv-import.md", "guides/ingress-bacnet-to-brick.md", "reference/apidoc/_autosummary/buildingmotif.rst", "reference/apidoc/_autosummary/buildingmotif.api.rst", "reference/apidoc/_autosummary/buildingmotif.api.views.rst", "reference/apidoc/_autosummary/buildingmotif.building_motif.rst", "reference/apidoc/_autosummary/buildingmotif.building_motif.building_motif.rst", "reference/apidoc/_autosummary/buildingmotif.building_motif.singleton.rst", "reference/apidoc/_autosummary/buildingmotif.database.rst", "reference/apidoc/_autosummary/buildingmotif.database.graph_connection.rst", "reference/apidoc/_autosummary/buildingmotif.database.table_connection.rst", "reference/apidoc/_autosummary/buildingmotif.database.tables.rst", "reference/apidoc/_autosummary/buildingmotif.database.utils.rst", "reference/apidoc/_autosummary/buildingmotif.dataclasses.rst", "reference/apidoc/_autosummary/buildingmotif.dataclasses.library.rst", "reference/apidoc/_autosummary/buildingmotif.dataclasses.model.rst", "reference/apidoc/_autosummary/buildingmotif.dataclasses.shape_collection.rst", "reference/apidoc/_autosummary/buildingmotif.dataclasses.template.rst", "reference/apidoc/_autosummary/buildingmotif.dataclasses.validation.rst", "reference/apidoc/_autosummary/buildingmotif.ingresses.rst", "reference/apidoc/_autosummary/buildingmotif.ingresses.bacnet.rst", "reference/apidoc/_autosummary/buildingmotif.ingresses.base.rst", "reference/apidoc/_autosummary/buildingmotif.ingresses.brick.rst", "reference/apidoc/_autosummary/buildingmotif.ingresses.csv.rst", "reference/apidoc/_autosummary/buildingmotif.ingresses.template.rst", "reference/apidoc/_autosummary/buildingmotif.ingresses.xlsx.rst", "reference/apidoc/_autosummary/buildingmotif.libraries.rst", "reference/apidoc/_autosummary/buildingmotif.namespaces.rst", "reference/apidoc/_autosummary/buildingmotif.schemas.rst", "reference/apidoc/_autosummary/buildingmotif.shape_builder.rst", "reference/apidoc/_autosummary/buildingmotif.shape_builder.shape.rst", "reference/apidoc/_autosummary/buildingmotif.template_compilation.rst", "reference/apidoc/_autosummary/buildingmotif.template_matcher.rst", "reference/apidoc/_autosummary/buildingmotif.utils.rst", "reference/apidoc/index.rst", "reference/cli_tool.md", "reference/developer_documentation.md", "tutorials/model_correction.md", "tutorials/model_creation.md", "tutorials/model_validation.md", "tutorials/template_writing.ipynb"], "titles": ["BuildingMOTIF", "Bibliography", "Ingresses", "CSV Import", "BACnet to Brick", "buildingmotif", "buildingmotif.api", "buildingmotif.api.views", "buildingmotif.building_motif", "buildingmotif.building_motif.building_motif", "buildingmotif.building_motif.singleton", "buildingmotif.database", "buildingmotif.database.graph_connection", "buildingmotif.database.table_connection", "buildingmotif.database.tables", "buildingmotif.database.utils", "buildingmotif.dataclasses", "buildingmotif.dataclasses.library", "buildingmotif.dataclasses.model", "buildingmotif.dataclasses.shape_collection", "buildingmotif.dataclasses.template", "buildingmotif.dataclasses.validation", "buildingmotif.ingresses", "buildingmotif.ingresses.bacnet", "buildingmotif.ingresses.base", "buildingmotif.ingresses.brick", "buildingmotif.ingresses.csv", "buildingmotif.ingresses.template", "buildingmotif.ingresses.xlsx", "buildingmotif.libraries", "buildingmotif.namespaces", "buildingmotif.schemas", "buildingmotif.shape_builder", "buildingmotif.shape_builder.shape", "buildingmotif.template_compilation", "buildingmotif.template_matcher", "buildingmotif.utils", "Code Documentation", "Command Line Interface", "Developer Documentation", "Model Correction", "Model Creation", "Model Validation", "Template Writing"], "terms": {"enabl": [0, 9, 42], "technolog": 0, "semant": [0, 1, 35, 41, 42], "interoper": 0, "build": [0, 1, 4, 14, 35, 40, 41, 42], "through": [0, 40, 41, 43], "standard": [0, 34, 42], "metadata": [0, 1, 2, 14, 24, 38, 41, 42], "crucial": 0, "unlock": 0, "valu": [0, 2, 4, 13, 15, 23, 28, 31, 34, 38, 40, 41, 43], "abund": 0, "divers": 0, "network": [0, 23, 25, 38, 40], "data": [0, 2, 3, 4, 9, 24, 26, 41], "avoid": [0, 20], "subsequ": 0, "incompat": 0, "issu": [0, 9, 13, 20], "pave": 0, "wai": [0, 4, 15, 38, 41], "advanc": 0, "like": [0, 2, 3, 4, 40, 41, 42, 43], "fault": 0, "detect": [0, 36], "diagnost": 0, "fdd": 0, "real": [0, 4, 40, 41], "time": [0, 15], "energi": [0, 1], "optim": 0, "other": [0, 2, 4, 13, 15, 34, 35, 41, 42, 43], "manag": [0, 4, 9, 12, 40], "inform": [0, 4, 21, 35, 38, 39, 40, 42], "system": [0, 1, 4, 40, 41, 42, 43], "emi": 0, "improv": 0, "hvac": [0, 42], "control": [0, 13, 42], "grid": 0, "integr": 0, "effici": [0, 1], "geb": 0, "all": [0, 2, 4, 9, 12, 13, 14, 15, 18, 19, 20, 24, 25, 27, 28, 35, 36, 38, 41, 42, 43], "which": [0, 2, 3, 4, 14, 15, 18, 20, 27, 33, 38, 39, 40, 41, 42, 43], "ar": [0, 2, 4, 9, 13, 14, 15, 18, 19, 20, 27, 28, 31, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43], "need": [0, 4, 13, 15, 17, 18, 19, 39, 40, 41, 42], "fulli": [0, 35], "de": 0, "carbon": 0, "util": [0, 4, 38], "capabl": 0, "web": 0, "possibl": [0, 39, 41], "structur": [0, 2, 4, 15, 19, 34, 36, 41, 42, 43], "express": [0, 4, 15, 23], "machin": [0, 4], "readabl": [0, 21], "same": [0, 2, 4, 15, 35, 36, 38, 39, 40, 43], "veri": [0, 4, 42], "import": [0, 4, 13, 19, 36, 39, 40, 42, 43], "make": [0, 4, 10, 36, 38, 39, 40, 41, 42], "easier": [0, 4, 39, 40, 41, 42], "implement": [0, 4, 15], "field": [0, 2, 4, 23, 24, 28, 34], "practition": 0, "without": [0, 10, 12, 15, 20, 39, 41], "knowledg": [0, 4], "comput": [0, 1, 2, 35], "scienc": 0, "ontolog": [0, 17, 18, 19, 20, 35, 36, 40, 41, 43], "framework": [0, 41], "bridg": 0, "gap": 0, "between": [0, 2, 4, 13, 14, 21, 35, 40], "theori": 0, "practic": [0, 41], "offer": 0, "toolset": 0, "creation": [0, 1, 4], "storag": 0, "visual": 0, "valid": [0, 13, 14, 18, 20, 31, 36, 38, 41], "It": [0, 4, 15, 20, 40, 41, 42], "form": [0, 13], "sdk": 0, "easi": [0, 4, 41], "us": [0, 3, 4, 9, 13, 14, 15, 18, 20, 27, 34, 35, 36, 38, 40, 41, 43], "api": [0, 2, 39], "abstract": [0, 2, 21, 24], "underli": [0, 2, 9, 24, 26, 41], "complex": [0, 41], "rdf": [0, 2, 4, 17, 20, 24, 25, 27, 35, 36, 38, 42, 43], "graph": [0, 3, 4, 9, 12, 13, 17, 18, 19, 20, 21, 24, 25, 27, 30, 34, 35, 36, 38, 40, 42, 43], "databas": [0, 4, 9, 17, 18, 19, 20, 38, 41], "shacl": [0, 21, 36, 42], "differ": [0, 2, 4, 15, 21, 39, 42, 43], "schema": [0, 3, 4, 40, 41, 42, 43], "also": [0, 2, 4, 15, 40, 41, 42, 43], "support": [0, 4, 13, 17, 40, 41], "connector": 0, "exist": [0, 4, 13, 17, 19, 20, 40, 43], "sourc": [0, 2, 9, 10, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 30, 31, 33, 34, 35, 36, 39, 40, 41], "e": [0, 2, 4, 18, 19, 39, 40, 41], "g": [0, 2, 4, 35, 36, 39, 41], "autom": [0, 40, 41], "design": 0, "model": [0, 1, 3, 13, 14, 20, 21, 25, 38, 43], "etc": [0, 2, 4, 41, 42, 43], "avail": [0, 38, 40, 41, 42], "phase": 0, "life": 0, "cycl": 0, "The": [0, 2, 3, 4, 13, 15, 20, 21, 23, 26, 28, 35, 36, 38, 39, 40, 41, 42, 43], "object": [0, 2, 4, 13, 15, 17, 18, 20, 21, 23, 33, 36, 41, 42, 43], "1": [0, 2, 3, 4, 15, 19, 35, 38, 39, 40, 41, 42, 43], "lower": 0, "cost": 0, "reduc": 0, "instal": [0, 4, 38, 40, 41, 42], "deliv": 0, "qualiti": 0, "servic": [0, 4], "owner": 0, "occup": [0, 43], "2": [0, 4, 35, 38, 40, 41, 42, 43], "simpler": 0, "more": [0, 4, 33, 34, 36, 39, 42, 43], "easili": [0, 2], "verifi": [0, 13, 20], "procur": 0, "process": [0, 4, 13, 21, 35, 36, 38, 39, 40, 41, 42], "product": [0, 39], "3": [0, 3, 4, 38, 39, 41, 42, 43], "open": [0, 4, 42], "new": [0, 1, 2, 4, 13, 15, 17, 18, 19, 20, 24, 34, 36, 39, 40, 41, 42], "busi": 0, "opportun": 0, "provid": [0, 2, 4, 15, 18, 20, 35, 38, 41, 42, 43], "remov": [0, 4, 13, 20, 36, 43], "barrier": 0, "parti": 0, "current": [0, 4, 38, 40, 41, 42], "plan": 0, "brick": [0, 3, 38, 40, 41, 42, 43], "project": [0, 39], "haystack": 0, "upcom": 0, "ashra": [0, 4, 38, 40, 42, 43], "223p": [0, 38, 43], "both": [0, 15, 35, 42], "ui": 0, "level": [0, 9, 19, 43], "expertis": 0, "user": [0, 4, 15, 34, 39, 41], "maximum": 0, "adopt": 0, "diataxi": 0, "its": [0, 13, 15, 20, 42, 43], "organ": [0, 35, 42], "follow": [0, 3, 4, 35, 36, 39, 41, 42, 43], "section": [0, 4, 42, 43], "develop": 0, "command": [0, 4, 39, 43], "line": [0, 3, 4, 15, 42], "interfac": [0, 4], "code": [0, 4, 40, 41, 42], "correct": [0, 39, 41, 42], "templat": [0, 3, 4, 13, 14, 17, 21, 34, 35, 36, 38, 42], "write": [0, 4, 20, 24, 40, 41], "csv": [0, 20], "from": [0, 2, 3, 4, 15, 17, 18, 19, 20, 21, 24, 25, 26, 28, 31, 34, 36, 38, 39, 40, 41, 42, 43], "bacnet": [0, 25, 34, 40], "ingress": [0, 3, 4, 20, 38, 41], "bibiographi": 0, "http": [0, 1, 3, 4, 38, 39, 40, 41, 42, 43], "fr": [0, 4], "gabe": 1, "fierro": 1, "avijit": 1, "saha": 1, "tobia": 1, "shapinski": 1, "matthew": 1, "steen": 1, "hannah": 1, "esling": 1, "applic": [1, 2, 4, 42, 43], "driven": 1, "suffici": [1, 42], "In": [1, 4, 38, 39, 40, 42], "proceed": 1, "9th": 1, "acm": 1, "intern": [1, 4, 42], "confer": 1, "citi": 1, "transport": 1, "buildsi": 1, "22": [1, 4], "228": 1, "237": [1, 4], "york": 1, "ny": 1, "usa": 1, "2022": 1, "associ": [1, 4, 23, 30, 34, 40, 42, 43], "machineri": 1, "url": [1, 17, 38, 41], "doi": 1, "org": [1, 3, 4, 40, 41, 42, 43], "10": [1, 2, 4, 15, 41], "1145": 1, "3563357": 1, "3564083": 1, "buildingmotif": [2, 3, 39, 40, 41, 42, 43], "s": [2, 4, 13, 15, 17, 18, 20, 24, 40, 41, 42, 43], "mechan": [2, 4, 38], "extern": [2, 17, 40], "deliber": 2, "gener": [2, 3, 4, 14, 15, 18, 20, 21, 24, 25, 26, 27, 34, 35, 38, 39, 40, 41, 42, 43], "so": [2, 3, 4, 36, 39, 40, 42], "thei": [2, 15, 17, 18, 19, 27, 34, 35, 38, 40, 43], "can": [2, 3, 4, 13, 15, 19, 20, 21, 33, 34, 38, 39, 40, 41, 42, 43], "extend": [2, 4], "ingresshandl": [2, 24], "ha": [2, 4, 9, 12, 13, 18, 21, 33, 40, 41, 42, 43], "two": [2, 13, 15, 35, 38, 43], "subclass": [2, 35], "recordingresshandl": [2, 24, 25, 27], "produc": [2, 4, 15, 20, 21, 27, 35, 43], "graphingresshandl": [2, 4, 24], "everi": [2, 15], "concret": 2, "should": [2, 15, 18, 21, 27, 33, 36, 38, 39, 41, 42, 43], "inherit": 2, "one": [2, 17, 19, 20, 33, 35, 36, 42, 43], "class": [2, 3, 4, 9, 10, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 33, 35, 36, 38, 40, 41, 42], "defin": [2, 4, 13, 20, 34, 41, 42, 43], "method": [2, 4, 13, 15, 17, 18, 36, 41, 42], "list": [2, 4, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, 26, 28, 33, 34, 35, 36, 38, 40, 42, 43], "A": [2, 14, 28, 41, 42, 43], "simpl": [2, 4, 40, 41, 42, 43], "python": [2, 4, 15, 34, 39, 40, 41, 42], "dataclass": [2, 3, 4, 13, 40, 41, 42, 43], "hint": 2, "identifi": [2, 12, 13, 20, 33, 36, 40, 41, 43], "an": [2, 3, 9, 13, 15, 17, 18, 19, 20, 21, 24, 26, 27, 33, 35, 38, 40, 41, 42, 43], "categori": 2, "rtype": [2, 4, 23, 24, 28], "str": [2, 4, 12, 13, 14, 17, 18, 20, 21, 23, 24, 26, 27, 33, 34, 35, 36], "kei": [2, 4, 13, 15, 23, 28, 38, 41, 43], "pair": [2, 4, 28], "dict": [2, 13, 14, 15, 18, 20, 21, 24, 34, 35, 36], "choic": [2, 15], "up": [2, 4, 15, 19, 39, 43], "each": [2, 4, 13, 18, 20, 21, 23, 27, 28, 34, 36, 38, 40], "instanc": [2, 4, 9, 21, 24, 33, 35, 38, 40, 41, 42], "bacnetingresshandl": 2, "differenti": [2, 4], "devic": [2, 4, 23, 41], "contain": [2, 3, 4, 13, 15, 17, 18, 20, 23, 25, 28, 34, 36, 38, 39, 41, 42, 43], "properti": [2, 9, 13, 17, 18, 19, 20, 21, 23, 24, 26, 28, 33, 35, 36, 41, 43], "name": [2, 3, 4, 10, 13, 14, 15, 17, 18, 19, 20, 26, 28, 34, 36, 38, 40, 41, 42, 43], "unit": [2, 38, 39, 41, 43], "csvingresshandl": [2, 3], "denot": [2, 43], "filenam": [2, 17, 26, 28, 36, 38], "store": [2, 15, 28, 41], "column": [2, 3, 20, 28], "cell": [2, 3, 4, 28, 42], "row": [2, 26, 28, 40], "ns": [2, 4, 20, 24, 25, 27, 42], "rdflib": [2, 3, 4, 9, 17, 18, 19, 20, 30, 34, 35, 40, 41, 42, 43], "namespac": [2, 3, 4, 20, 24, 25, 27, 36, 40, 41, 42, 43], "return": [2, 4, 9, 12, 13, 15, 17, 18, 19, 20, 21, 23, 25, 28, 34, 35, 36, 40, 41], "thi": [2, 4, 9, 13, 15, 17, 18, 19, 20, 21, 24, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43], "infer": [2, 25, 38], "translat": 2, "some": [2, 4, 15, 20, 24, 40, 41, 42, 43], "either": [2, 19, 20, 23], "upstream": [2, 4, 25, 27, 34], "ani": [2, 4, 13, 15, 17, 18, 19, 20, 31, 41, 42, 43], "entiti": [2, 4, 20, 21, 24, 25, 27, 33, 40, 41, 42], "uri": [2, 4, 18, 19, 20, 21, 36, 38, 40, 41, 42], "creat": [2, 3, 4, 9, 12, 13, 17, 18, 19, 24, 36, 38, 39, 40, 42], "place": [2, 24, 25, 27, 36, 42, 43], "typic": [2, 41, 43], "end": [2, 15, 40, 41], "pipelin": 2, "sever": [2, 38, 40, 41, 43], "full": [2, 36, 43], "found": [2, 13, 20, 31, 35, 38], "here": [2, 4, 15, 17, 39, 40, 42], "take": [2, 4, 24, 33, 38, 40, 41, 42], "ip": [2, 4, 23, 38], "subnet": [2, 4, 38], "argument": [2, 13, 15, 20, 34, 38, 39, 41], "0": [2, 4, 19, 38, 39, 40], "24": [2, 4, 38], "set": [2, 4, 15, 18, 20, 21, 28, 35, 36, 38, 39, 40, 42], "correspond": [2, 4, 15, 35, 38, 43], "repres": [2, 4, 21, 24, 28, 41, 42, 43], "els": [2, 4, 20], "base": [2, 4, 10, 33, 39], "address": [2, 4, 20, 38, 43], "device_id": 2, "own": [2, 42], "mydata": 2, "given": [2, 13, 15, 18, 19, 20, 21, 24, 25, 27, 28, 31, 35, 36, 38], "call": [2, 3, 4, 15, 20, 38, 40, 41, 42], "generate_csv": [2, 3, 20], "empti": [2, 3, 18], "header": [2, 3, 42], "csvingress": [2, 3, 26], "made": [2, 15, 39, 43], "pass": [2, 4, 20, 34, 38, 40, 42], "templateingress": [2, 3, 27], "xlsxingresshandl": 2, "path": [2, 17, 20, 21, 24, 26, 28, 33, 36, 38, 40], "sheet": [2, 28], "requir": [2, 4, 9, 15, 20, 21, 35, 38, 39, 40, 41, 42, 43], "probabl": [2, 40], "librari": [2, 3, 4, 13, 14, 20, 21, 31, 34, 39, 40, 42, 43], "option": [2, 4, 12, 13, 17, 18, 19, 20, 21, 23, 26, 27, 33, 35, 36, 38], "mapper": [2, 3, 27], "function": [2, 4, 9, 20, 21, 27, 30, 31, 33, 34, 35, 36, 38, 41, 42, 43], "map": [2, 13, 14, 20, 35, 36], "paramet": [2, 9, 12, 13, 15, 17, 18, 19, 20, 21, 24, 25, 30, 31, 33, 34, 35, 36, 40, 41, 43], "If": [2, 9, 13, 15, 18, 20, 21, 27, 33, 35, 36, 39, 40, 41, 43], "left": [2, 20], "none": [2, 3, 4, 9, 12, 13, 15, 17, 18, 19, 20, 21, 23, 26, 33, 35, 36], "There": [2, 4, 38, 43], "templateingresswithchoos": [2, 27], "act": [2, 43], "essenti": [2, 4, 43], "addit": [2, 4, 18, 34, 35, 36, 39, 41, 42, 43], "dynam": [2, 39], "choos": [2, 4, 40], "see": [2, 4, 38, 39, 40, 41, 42], "guid": [2, 4], "assum": [3, 4, 15, 40, 41, 42], "we": [3, 4, 9, 15, 17, 35, 39, 40, 41, 42, 43], "have": [3, 4, 13, 15, 20, 34, 35, 40, 41, 42, 43], "tutori": [3, 4, 40, 41, 42, 43], "my": [3, 40, 43], "thermostat": 3, "bodi": [3, 17, 20, 34, 40, 41], "prefix": [3, 30, 40, 41, 42, 43], "p": [3, 4, 38, 40, 41, 43], "urn": [3, 4, 25, 36, 40, 41, 42, 43], "___param___": [3, 36, 40, 41, 43], "brickschema": [3, 4, 38, 40, 41, 42, 43], "hasloc": 3, "room": 3, "depend": [3, 4, 13, 14, 15, 18, 19, 20, 34, 39], "arg": [3, 4, 9, 13, 14, 15, 20, 34, 43], "tstat": 3, "point": [3, 34, 38, 40, 41, 42, 43], "haspoint": [3, 4, 34, 40, 43], "temp": [3, 43], "sp": 3, "co2": [3, 43], "temperature_sensor": [3, 41], "temperature_setpoint": 3, "co2_sensor": 3, "load": [3, 4, 17, 18, 19, 20, 24, 40, 42, 43], "memori": [3, 4, 36, 40, 41, 42], "bm": [3, 4, 13, 24, 25, 40, 41, 42], "sqlite": [3, 4, 39, 40, 41, 42], "our": [3, 15, 42], "get": [3, 4, 12, 13, 15, 17, 18, 19, 20, 34, 40, 41, 42], "lib": [3, 4, 21, 42, 43], "directori": [3, 4, 17, 36, 39, 40, 41, 42, 43], "tstat_templ": 3, "get_template_by_nam": [3, 17, 41, 42, 43], "file": [3, 4, 9, 15, 17, 20, 24, 26, 28, 31, 34, 36, 38, 39, 41, 42, 43], "approiat": 3, "give": [3, 28, 34, 42], "fill": [3, 20, 35, 40], "out": [3, 4, 20, 35, 40, 41], "tstat2": 3, "room345": 3, "345": 3, "tstat3": 3, "room567": 3, "cow": 3, "567": 3, "handler": [3, 4, 9, 24], "built": [3, 39], "record": [3, 4, 23, 24, 26, 27, 28], "bldg": [3, 4, 40, 41, 42], "my_sit": 3, "abov": [3, 4, 15, 39, 40, 42, 43], "inline_depend": [3, 20, 40], "print": [3, 4, 20, 39, 40, 41, 42], "serial": [3, 4, 15, 17, 40, 41, 42, 43], "result": [3, 4, 15, 18, 20, 21, 34, 36, 40, 41], "final": [3, 41], "alreadi": [4, 40, 41, 42], "been": [4, 9, 18, 20, 35, 40, 41, 42], "local": [4, 38, 40, 41, 42], "environ": [4, 39, 40, 41, 42], "access": [4, 10, 34, 38, 41], "descript": [4, 13, 14, 18, 38, 39, 40, 41, 42, 43], "purpos": [4, 40, 41, 42], "how": [4, 19, 35, 40, 41, 42], "document": [4, 31, 38, 43], "demonstr": [4, 40], "accomplish": [4, 41], "basic": [4, 41, 42], "sure": [4, 13, 38, 39, 41], "you": [4, 13, 17, 38, 39, 40, 41, 42, 43], "awar": 4, "what": [4, 15, 21, 33, 38, 40, 41, 42, 43], "reach": [4, 39], "For": [4, 15, 36, 41, 42, 43], "docker": 4, "compos": [4, 39, 43], "run": [4, 13, 18, 38, 42], "virtual": [4, 39], "scan": 4, "sub": 4, "below": [4, 15, 38, 39, 40, 41, 42], "anoth": [4, 20, 39, 40, 41, 43], "try": [4, 41, 42, 43], "simul": 4, "digit": 4, "twin": 4, "repositori": [4, 39, 40, 41, 42], "rest": [4, 40], "work": [4, 13, 15, 41], "expect": [4, 13, 21, 35, 36], "do": [4, 40], "connect": [4, 9, 12, 41, 42], "subprocess": 4, "shlex": 4, "virtual_bacnet": 4, "py": [4, 13, 20, 38, 39, 42], "w": [4, 36, 42], "f": [4, 40, 41, 42], "random": [4, 40], "sy": 4, "bacpyp": 4, "app": 4, "bipsimpleappl": 4, "consolelog": 4, "configargumentpars": 4, "core": [4, 41], "debug": [4, 9, 39], "modulelogg": 4, "bacpypes_debug": 4, "localdeviceobject": 4, "analoginputobject": 4, "devicecommunicationcontrolservic": 4, "readwritepropertymultipleservic": 4, "_debug": 4, "_log": 4, "global": [4, 20], "virtualbacnetapp": 4, "virtualdevic": 4, "def": [4, 15, 34, 42], "__init__": [4, 15], "self": [4, 15, 33, 42], "host": [4, 38], "parser": 4, "__doc__": 4, "parse_arg": 4, "ini": 4, "supplytempsensor": 4, "objectnam": 4, "vav": [4, 40, 42, 43], "sat": 4, "objectidentifi": 4, "analoginput": 4, "presentvalu": 4, "randint": 4, "100": 4, "heatingsetpoint": 4, "hsp": 4, "coolingsetpoint": 4, "csp": 4, "zonetempsensor": 4, "zone": [4, 40, 41, 42, 43], "add_object": 4, "__name__": 4, "__main__": [4, 15], "argv": 4, "len": [4, 40], "dockerfil": 4, "ubuntu": 4, "latest": 4, "workdir": 4, "opt": [4, 42], "apt": 4, "updat": [4, 13, 18, 42], "y": 4, "python3": [4, 39, 42], "pip": [4, 39], "rm": 4, "rf": 4, "var": 4, "pip3": 4, "copi": [4, 17, 18, 20, 36, 38, 42], "virtualbacnet": 4, "172": [4, 38], "17": 4, "599": 4, "maxapdulengthaccept": 4, "1024": 4, "segmentationsupport": 4, "segmentedboth": 4, "vendoridentifi": 4, "15": 4, "yml": [4, 17, 31, 38, 39, 41, 43], "version": [4, 15, 38], "4": [4, 15, 39, 40, 41, 42, 43], "ipv4_address": 4, "ipam": 4, "driver": 4, "default": [4, 12, 15, 17, 18, 19, 20, 35, 36, 38, 42], "config": [4, 38, 39], "16": 4, "gatewai": 4, "docker_compose_start": 4, "split": 4, "d": [4, 38], "definit": [4, 19, 34, 41, 43], "transfer": 4, "276b": 4, "done": [4, 39, 40, 42], "0s": 4, "dockerignor": 4, "context": [4, 12, 19, 33], "2b": 4, "auth": 4, "token": 4, "registri": 4, "io": [4, 20, 41], "5s": 4, "5": 4, "6": [4, 42], "sha256": 4, "2b7412e6465c3c7fc5bb21d3e6f1917c167358449fecac8176c6e496e5c1f05f": 4, "30kb": 4, "7": 4, "8": [4, 39, 40, 42], "324": 4, "warn": [4, 15, 20], "doe": [4, 15, 17, 39, 41], "stabl": 4, "cli": 4, "caution": 4, "script": 4, "421": 4, "secur": 4, "com": [4, 38], "jammi": 4, "inreleas": 4, "110": 4, "kb": 4, "612": 4, "main": [4, 38], "amd64": 4, "packag": [4, 39, 40, 41, 42], "1131": 4, "627": 4, "archiv": 4, "270": 4, "699": 4, "restrict": 4, "1305": 4, "713": 4, "univers": [4, 33], "1009": 4, "724": 4, "multivers": 4, "44": 4, "075": 4, "119": 4, "181": 4, "backport": 4, "109": 4, "285": 4, "9": 4, "mb": 4, "976": 4, "1792": 4, "046": 4, "11": [4, 42], "266": 4, "050": 4, "12": 4, "164": 4, "057": 4, "13": 4, "1398": 4, "084": 4, "14": [4, 15], "49": 4, "087": 4, "1274": 4, "129": 4, "1330": 4, "214": 4, "32": [4, 38], "253": 4, "18": 4, "78": 4, "339": 4, "fetch": [4, 41], "28": [4, 15], "3s": 4, "9444": 4, "read": [4, 26, 27, 28, 39], "404": 4, "tree": [4, 43], "626": 4, "state": [4, 15, 42, 43], "643": 4, "upgrad": [4, 39], "649": 4, "698": 4, "819": 4, "036": 4, "230": 4, "binutil": 4, "common": [4, 30, 36, 42], "x86": 4, "64": 4, "linux": 4, "gnu": 4, "bzip2": 4, "ca": 4, "certif": 4, "cpp": 4, "dirmngr": 4, "dpkg": 4, "dev": [4, 39], "fakeroot": 4, "fontconfig": 4, "font": 4, "dejavu": 4, "gcc": 4, "gnupg": 4, "l10n": 4, "gpg": 4, "agent": 4, "wk": 4, "client": 4, "server": 4, "gpgconf": 4, "gpgsm": 4, "javascript": 4, "libalgorithm": 4, "diff": [4, 21, 40, 42], "perl": 4, "xs": 4, "merg": 4, "libasan6": 4, "libassuan0": 4, "libatomic1": 4, "libbinutil": 4, "libbrotli1": 4, "libbsd0": 4, "libc": 4, "bin": [4, 39], "devtool": 4, "libc6": 4, "libcc1": 4, "231": 4, "libcrypt": 4, "libctf": 4, "nobfd0": 4, "libctf0": 4, "libdeflate0": 4, "libdpkg": 4, "libexpat1": 4, "libfakeroot": 4, "libfil": 4, "fcntllock": 4, "libfontconfig1": 4, "libfreetype6": 4, "libgcc": 4, "libgd3": 4, "libgdbm": 4, "compat4": 4, "libgdbm6": 4, "libgomp1": 4, "libisl23": 4, "libitm1": 4, "libjbig0": 4, "libjpeg": 4, "turbo8": 4, "libjpeg8": 4, "libj": 4, "jqueri": 4, "sphinxdoc": 4, "underscor": 4, "libksba8": 4, "libldap": 4, "liblocal": 4, "gettext": 4, "liblsan0": 4, "libmd0": 4, "libmpc3": 4, "libmpdec3": 4, "libmpfr6": 4, "libnpth0": 4, "libnsl": 4, "libperl5": 4, "34": 4, "libpng16": 4, "libpython3": 4, "stdlib": 4, "minim": 4, "libquadmath0": 4, "libreadline8": 4, "libsasl2": 4, "modul": [4, 5, 6, 7, 8, 11, 15, 16, 17, 22, 32, 34], "db": [4, 20, 38, 39], "libsqlite3": 4, "libstdc": 4, "libtiff5": 4, "libtirpc": 4, "libtsan0": 4, "libubsan1": 4, "libwebp7": 4, "libx11": 4, "libxau6": 4, "libxcb1": 4, "libxdmcp6": 4, "libxpm4": 4, "lto": 4, "disabl": [4, 15], "manpag": 4, "media": 4, "232": 4, "netbas": 4, "openssl": 4, "patch": 4, "pinentri": 4, "curs": 4, "distutil": 4, "lib2to3": 4, "pkg": 4, "resourc": [4, 41, 42], "setuptool": 4, "wheel": 4, "readlin": 4, "rpcsvc": 4, "proto": 4, "ucf": 4, "xz": 4, "zlib1g": 4, "233": 4, "suggest": 4, "doc": [4, 31, 39], "dbu": 4, "session": [4, 9, 41], "libpam": 4, "systemd": 4, "gnome3": 4, "tor": 4, "debian": 4, "keyr": 4, "multilib": 4, "autoconf": 4, "automak": 4, "libtool": 4, "flex": 4, "bison": 4, "gdb": 4, "parcimoni": 4, "xloadimag": 4, "scdaemon": 4, "apache2": 4, "lighttpd": 4, "httpd": 4, "glibc": 4, "git": 4, "bzr": 4, "libgd": 4, "tool": [4, 17, 38], "gdbm": 4, "gssapi": 4, "mit": 4, "heimdal": 4, "ldap": 4, "otp": 4, "sql": [4, 15], "man": 4, "browser": 4, "ed": 4, "diffutil": 4, "libterm": 4, "libtap": 4, "har": 4, "tk": 4, "venv": [4, 39], "binfmt": 4, "482": 4, "483": 4, "484": 4, "751": 4, "131": 4, "newli": 4, "101": 4, "after": [4, 20, 39, 41], "oper": [4, 40, 42], "356": 4, "disk": [4, 41], "space": 4, "07": [4, 40, 41, 42], "4build3": 4, "913": 4, "04": 4, "811": 4, "331": 4, "1ubuntu0": 4, "91": 4, "342": 4, "2258": 4, "486": 4, "25": 4, "2build2": 4, "86": 4, "489": 4, "53": 4, "491": 4, "153": 4, "497": 4, "37": 4, "2ubuntu0": 4, "641": 4, "515": 4, "1849": 4, "617": 4, "509": 4, "729": 4, "6910": 4, "b": [4, 15, 38, 39], "731": 4, "732": 4, "3ubuntu1": 4, "2977": 4, "785": 4, "23": 4, "33": 4, "786": 4, "6606": 4, "788": 4, "4818": 4, "841": 4, "19": 4, "844": 4, "20": [4, 15], "0ubuntu1": 4, "1182": 4, "859": 4, "21": 4, "20230311ubuntu0": 4, "155": 4, "862": 4, "1build1": 4, "863": 4, "864": 4, "59": 4, "132": 4, "866": 4, "26": 4, "0043": 4, "56": 4, "867": 4, "27": 4, "3build5": 4, "191": 4, "869": 4, "1build5": 4, "7634": 4, "878": 4, "29": 4, "0ubuntu5": 4, "895": 4, "30": 4, "3ubuntu3": 4, "897": 4, "31": 4, "120": 4, "899": 4, "667": 4, "910": 4, "1ubuntu1": 4, "1375": 4, "927": 4, "2ubuntu1": 4, "84": 4, "929": 4, "35": 4, "38": 4, "4ubuntu2": 4, "222": 4, "932": 4, "36": [4, 40, 42, 43], "662": 4, "942": 4, "107": 4, "944": 4, "103": 4, "947": 4, "39": 4, "2327": 4, "972": 4, "40": 4, "3190": 4, "41": 4, "0ubuntu3": 4, "973": 4, "42": 4, "87": 4, "97": 4, "1339": 4, "988": 4, "43": 4, "112": 4, "990": 4, "0ubuntu6": 4, "68": 4, "991": 4, "45": 4, "192": 4, "994": 4, "46": 4, "71": 4, "995": 4, "47": 4, "2100": 4, "018": 4, "48": 4, "019": 4, "2build1": 4, "727": 4, "027": 4, "50": 4, "3build3": 4, "1425": 4, "044": 4, "51": 4, "045": 4, "52": 4, "161": 4, "165": 4, "54": 4, "55": 4, "126": 4, "57": 4, "58": 4, "2282": 4, "193": 4, "1069": 4, "207": 4, "60": 4, "2260": 4, "236": 4, "61": 4, "248": 4, "62": 4, "154": 4, "250": 4, "63": 4, "2517": 4, "278": 4, "65": 4, "5112": 4, "66": 4, "2101": 4, "534": 4, "67": 4, "663": 4, "1412": 4, "69": 4, "180": 4, "666": 4, "70": 4, "1ubuntu2": 4, "668": 4, "5build1": 4, "669": 4, "72": 4, "7build2": 4, "671": 4, "73": 4, "74": 4, "922": 4, "682": 4, "75": 4, "9ubuntu3": 4, "4744": 4, "76": 4, "683": 4, "77": 4, "3ubuntu2": 4, "94": 4, "685": 4, "700": 4, "79": [4, 40, 42], "dfsg2": 4, "701": 4, "80": 4, "702": 4, "81": 4, "dfsg": 4, "0ubuntu0": 4, "183": 4, "705": 4, "82": 4, "3build2": 4, "8664": 4, "706": 4, "83": 4, "293": 4, "709": 4, "710": 4, "85": 4, "712": 4, "1041": 4, "725": 4, "2ubuntu5": 4, "726": 4, "88": 4, "734": 4, "89": 4, "308": [4, 42], "739": 4, "90": 4, "519": 4, "746": 4, "1build2": 4, "747": 4, "92": 4, "209": 4, "749": 4, "93": 4, "750": 4, "752": 4, "95": 4, "197": 4, "755": 4, "96": 4, "315": [4, 42], "758": 4, "nmu1": 4, "5936": 4, "759": 4, "98": 4, "201": 4, "768": 4, "99": 4, "6build3": 4, "774": 4, "08": 4, "775": 4, "2build6": 4, "102": 4, "389": 4, "790": 4, "793": 4, "104": 4, "134": 4, "795": 4, "105": 4, "8c": 4, "2ubuntu10": 4, "2264": 4, "106": 4, "796": 4, "797": 4, "108": 4, "206": 4, "802": 4, "6ubuntu0": 4, "804": 4, "805": 4, "111": 4, "2ubuntu2": 4, "113": 4, "147": 4, "939": 4, "114": 4, "3build7": 4, "941": 4, "115": 4, "321": 4, "968": 4, "116": 4, "118": 4, "117": 4, "139": 4, "977": 4, "978": 4, "1949": 4, "010": 4, "2ubuntu9": 4, "013": 4, "121": 4, "4764": 4, "067": 4, "122": 4, "7166": 4, "123": 4, "069": 4, "124": 4, "2309": 4, "096": 4, "125": 4, "507": 4, "127": 4, "128": 4, "130": 4, "336": 4, "debconf": 4, "delai": 4, "configur": [4, 15, 39, 43], "sinc": [4, 15], "370": 4, "395": 4, "select": [4, 15, 18, 40], "previous": [4, 15, 40, 42], "unselect": 4, "4395": 4, "430": 4, "prepar": 4, "unpack": 4, "perl_1": 4, "4build3_amd64": 4, "deb": 4, "431": 4, "458": 4, "459": 4, "minimal_3": 4, "2_amd64": 4, "460": 4, "543": 4, "544": 4, "libexpat1_2": 4, "548": 4, "570": 4, "571": 4, "577": 4, "637": 4, "645": 4, "4713": 4, "04_amd64": 4, "types_7": 4, "0_all": 4, "libmpdec3_2": 4, "2build2_amd64": 4, "common_8": 4, "1_all": 4, "libreadline8_8": 4, "1_amd64": 4, "0_3": 4, "stdlib_3": 4, "10_3": 4, "03": 4, "5143": 4, "000": 4, "python3_3": 4, "06": 4, "001": 4, "34_5": 4, "2_all": 4, "002": 4, "libgdbm6_1": 4, "003": 4, "compat4_1": 4, "004": 4, "005": 4, "perl_5": 4, "006": 4, "openssl_3": 4, "12_amd64": 4, "007": 4, "certificates_20230311ubuntu0": 4, "008": 4, "libmd0_1": 4, "1build1_amd64": 4, "009": 4, "libbsd0_0": 4, "netbase_6": 4, "3_all": 4, "011": 4, "resources_59": 4, "012": 4, "ucf_3": 4, "0043_all": 4, "move": 4, "old": [4, 36], "00": 4, "16_1": 4, "3build5_amd64": 4, "02": 4, "014": 4, "libxau6_1": 4, "3a1": 4, "1build5_amd64": 4, "05": 4, "015": 4, "libxdmcp6_1": 4, "0ubuntu5_amd64": 4, "016": 4, "libxcb1_1": 4, "3ubuntu3_amd64": 4, "09": 4, "017": 4, "data_2": 4, "6_2": 4, "3_amd64": 4, "manpages_5": 4, "1ubuntu1_al": 4, "020": 4, "utils_5": 4, "2ubuntu1_amd64": 4, "021": 4, "common_2": 4, "022": 4, "libbinutils_2": 4, "023": 4, "nobfd0_2": 4, "024": 4, "libctf0_2": 4, "025": 4, "gnu_2": 4, "026": 4, "binutils_2": 4, "bin_2": 4, "4_amd64": 4, "028": 4, "dev_5": 4, "97_amd64": 4, "029": 4, "dev_1": 4, "3a4": 4, "030": 4, "proto_1": 4, "0ubuntu6_amd64": 4, "031": 4, "032": 4, "033": 4, "dev_2": 4, "034": 4, "base_11": 4, "035": 4, "libisl23_0": 4, "2build1_amd64": 4, "libmpfr6_4": 4, "3build3_amd64": 4, "037": 4, "libmpc3_1": 4, "038": 4, "11_11": 4, "039": 4, "cpp_4": 4, "3a11": 4, "1ubuntu1_amd64": 4, "040": 4, "0_12": 4, "041": 4, "libgomp1_12": 4, "042": 4, "libitm1_12": 4, "043": 4, "libatomic1_12": 4, "libasan6_11": 4, "liblsan0_12": 4, "libtsan0_11": 4, "047": 4, "libubsan1_12": 4, "048": 4, "libquadmath0_12": 4, "049": 4, "dev_11": 4, "051": 4, "gcc_4": 4, "052": 4, "053": 4, "054": 4, "_4": 4, "055": 4, "make_4": 4, "056": 4, "bzip2_1": 4, "5build1_amd64": 4, "058": 4, "patch_2": 4, "7build2_amd64": 4, "059": 4, "list_24_al": 4, "060": 4, "061": 4, "essential_12": 4, "9ubuntu3_amd64": 4, "062": 4, "libassuan0_2": 4, "063": 4, "gpgconf_2": 4, "064": 4, "libksba8_1": 4, "065": 4, "db_2": 4, "066": 4, "2_2": 4, "0_2": 4, "068": 4, "libnpth0_1": 4, "3build2_amd64": 4, "dirmngr_2": 4, "070": 4, "libfakeroot_1": 4, "071": 4, "fakeroot_1": 4, "072": 4, "core_2": 4, "2build1_al": 4, "073": 4, "config_2": 4, "2ubuntu5_al": 4, "074": 4, "l10n_2": 4, "utils_2": 4, "076": 4, "gpg_2": 4, "077": 4, "curses_1": 4, "1build2_amd64": 4, "078": 4, "agent_2": 4, "079": 4, "client_2": 4, "080": 4, "server_2": 4, "081": 4, "gpgsm_2": 4, "082": 4, "gnupg_2": 4, "083": 4, "common_11": 4, "nmu1_al": 4, "085": 4, "perl_0": 4, "6build3_amd64": 4, "086": 4, "libbrotli1_1": 4, "2build6_amd64": 4, "088": 4, "libfreetype6_2": 4, "089": 4, "libfontconfig1_2": 4, "2ubuntu5_amd64": 4, "01": 4, "090": 4, "turbo8_2": 4, "0ubuntu1_amd64": 4, "091": 4, "libjpeg8_8c": 4, "2ubuntu10_amd64": 4, "092": 4, "libdeflate0_1": 4, "093": 4, "libjbig0_2": 4, "094": 4, "libwebp7_1": 4, "095": 4, "libtiff5_4": 4, "6_amd64": 4, "libxpm4_1": 4, "3a3": 4, "097": 4, "libgd3_2": 4, "2ubuntu2_amd64": 4, "098": 4, "devtools_2": 4, "099": 4, "3build7_amd64": 4, "jquery_3": 4, "underscore_1": 4, "sphinxdoc_4": 4, "dev_3": 4, "modules_2": 4, "lib2to3_3": 4, "04_all": 4, "distutils_3": 4, "setuptools_59": 4, "wheel_0": 4, "pip_22": 4, "altern": 4, "usr": 4, "sysv": 4, "auto": 4, "mode": 4, "skip": [4, 36, 40], "share": [4, 13], "man1": 4, "gz": 4, "becaus": [4, 13, 15, 35, 36, 40, 41, 42], "link": 4, "group": [4, 43], "doesn": [4, 40, 42], "t": [4, 9, 13, 15, 34, 35, 38, 40, 42, 43], "fake": 4, "es": 4, "sv": 4, "lzma": 4, "unlzma": 4, "unxz": 4, "lzcat": 4, "xzcat": 4, "lzmore": 4, "xzmore": 4, "lzless": 4, "xzless": 4, "lzdiff": 4, "xzdiff": 4, "lzcmp": 4, "xzcmp": 4, "lzgrep": 4, "xzgrep": 4, "lzegrep": 4, "xzegrep": 4, "lzfgrep": 4, "xzfgrep": 4, "unabl": 4, "frontend": 4, "dialog": 4, "term": [4, 20], "usabl": [4, 15], "fall": 4, "back": [4, 41], "ssl": 4, "cert": 4, "137": 4, "ad": [4, 12, 15, 18, 34, 40], "rtupdat": 4, "hook": [4, 15], "post": 4, "c": [4, 15], "trigger": 4, "908": 4, "collect": [4, 13, 14, 17, 18, 40, 41], "download": [4, 38, 39, 40, 41, 42], "py3": 4, "whl": 4, "eta": 4, "successfulli": 4, "309": [4, 42], "root": [4, 43], "broken": 4, "permiss": 4, "conflict": 4, "behaviour": 4, "recommend": [4, 17, 20, 39, 40], "instead": [4, 41, 42], "pypa": 4, "4s": 4, "export": 4, "imag": 4, "layer": 4, "8s": 4, "0879472069656f3a553333dc0b5e36a8d95baa7758a2f5c6f77bdcc873caf5fa": 4, "guides_bacnet": 4, "start": [4, 41, 42, 43], "completedprocess": 4, "returncod": 4, "previou": [4, 40, 42], "ll": [4, 40, 41, 42], "log": [4, 9], "log_level": [4, 9], "error": [4, 18, 19, 20, 31, 39], "test": [4, 18, 39, 40, 41, 42], "later": [4, 38], "ontology_graph": [4, 17, 40, 41, 42], "github": [4, 38, 39], "releas": [4, 38], "nightli": [4, 38], "ttl": [4, 38, 40, 41, 42], "bacnetnetwork": [4, 23, 25, 38], "scrape": 4, "individu": [4, 39], "discov": [4, 23], "don": [4, 13, 34, 38, 42, 43], "chang": [4, 19, 39, 42], "rec": 4, "2023": 4, "critic": 4, "nameerror": 4, "traceback": [4, 15, 42], "most": [4, 15, 17, 35, 42], "recent": [4, 15, 42], "last": [4, 15, 42], "hostedtoolcach": [4, 42], "x64": [4, 42], "site": [4, 42], "therein": 4, "handl": [4, 19, 41], "Be": [4, 13], "good": 4, "net": 4, "citizen": 4, "ping": 4, "bac0": 4, "fals": [4, 15, 20, 27, 33, 36, 40], "discoveri": 4, "kind": [4, 41, 43], "attribut": [4, 15, 34, 36, 41, 42], "cotnain": 4, "arbitrari": [4, 40], "again": [4, 39, 40], "interpret": [4, 21, 42], "bacnettobrickingress": [4, 25], "turn": [4, 25, 35, 36, 41], "usual": [4, 33, 34], "just": [4, 36, 40, 41, 42], "i": [4, 18, 19, 39, 40], "brick2bacnet": 4, "bacnet_network_graph": 4, "add": [4, 12, 18, 19, 20, 33, 34, 35, 39, 40, 41, 42, 43], "add_graph": [4, 18, 19, 40, 41, 42], "now": [4, 39, 40, 41, 42, 43], "look": [4, 40, 41, 42, 43], "howev": [4, 15, 42], "next": [4, 41, 42, 43], "step": 4, "incorpor": [4, 20, 36], "about": [4, 21, 41, 42], "techniqu": 4, "label": 4, "show": [4, 38], "Then": [4, 41], "bigger": 4, "complet": [4, 35, 39], "squint": 4, "might": [4, 20, 42], "divid": [4, 43], "equip": [4, 40, 41, 42, 43], "let": [4, 40, 41, 42, 43], "uriref": [4, 18, 19, 21, 33, 36], "parse_label": 4, "output": [4, 24, 38, 42], "pars": [4, 40, 41, 42], "put": [4, 40, 41, 42], "tripl": [4, 12, 18, 19, 33, 36, 38, 40, 42], "part": [4, 13, 14, 15, 34, 35, 36, 39, 41, 42], "equip_nam": 4, "point_typ": 4, "brick_class": 4, "supply_air_temperature_sensor": [4, 43], "elif": 4, "zone_air_heating_temperature_setpoint": 4, "zone_air_cooling_temperature_setpoint": 4, "zone_air_temperature_sensor": [4, 43], "rais": [4, 9, 10, 13, 17, 18, 19, 20, 31, 34, 36, 41], "except": [4, 9, 10, 13, 17, 18, 20, 31, 36, 41], "unknown": [4, 34], "yet": [4, 42], "wrap": [4, 9], "reus": 4, "littl": 4, "bit": [4, 42], "around": [4, 41], "mypointpars": 4, "indic": [4, 15, 20, 38], "overrid": [4, 15], "output_graph": 4, "bacnet_graph": 4, "point_label": 4, "queri": [4, 40], "where": [4, 13, 15, 38, 40, 41], "ref": [4, 33], "hasexternalrefer": 4, "2020": 4, "invok": [4, 38], "point_ingress": 4, "augmented_graph": 4, "displai": 4, "relationship": [4, 14, 41, 43], "note": [4, 15, 34, 39], "particular": 4, "dvelop": 4, "specif": [4, 21, 34, 42], "idiosyncrat": 4, "within": [4, 17, 20, 42], "futur": [4, 40, 42], "sophist": 4, "consid": [4, 13, 20], "exampl": [4, 15, 36, 38, 39, 41, 43], "interact": [4, 13, 38, 39, 41], "teardown": 4, "docker_compose_stop": 4, "down": 4, "kwarg": [9, 14, 15, 34], "setup_t": 9, "tabl": [9, 17, 18, 19, 20, 39], "setup_log": 9, "stdout": 9, "specifi": [9, 17, 33, 38, 42], "int": [9, 13, 14, 17, 18, 19, 20, 21, 33, 35, 36], "detail": [9, 42], "close": 9, "engin": [9, 12, 13], "clean": 9, "get_building_motif": 9, "singleton": 9, "instanti": [9, 27], "befor": [9, 13, 39, 40, 41], "otherwis": [9, 15, 19, 20, 36, 41], "singletonnotinstantiatedexcept": [9, 10], "hasn": 9, "type": [9, 12, 13, 15, 17, 18, 19, 20, 21, 23, 25, 26, 28, 33, 34, 35, 36, 39, 41, 42], "buildingmotifengin": [9, 12], "sqlalchemi": [9, 15], "transact": 9, "experienc": 9, "weird": 9, "mai": [9, 15, 39, 41, 42], "caus": [9, 33, 40], "begin": [9, 36], "cls_dict": 10, "metaclass": 10, "when": [10, 15, 17, 20, 21, 27, 36, 39, 41, 42, 43], "singelton": 10, "being": [10, 15, 24, 27], "initi": [10, 39], "graphconnect": 12, "db_identifi": 12, "buildingmotif_stor": 12, "create_graph": 12, "get_all_graph_identifi": 12, "get_graph": 12, "delete_graph": 12, "delet": [12, 13, 41], "tableconnect": 13, "create_db_model": 13, "dbmodel": [13, 14, 18], "get_all_db_model": 13, "get_db_model": 13, "id": [13, 14, 17, 18, 19, 20], "get_db_model_by_nam": 13, "update_db_model_nam": 13, "update_db_model_descript": 13, "delete_db_model": 13, "create_db_shape_collect": 13, "dbshapecollect": [13, 14, 19], "shape": [13, 14, 17, 18, 19, 21, 36, 38, 40, 41], "get_all_db_shape_collect": 13, "get_db_shape_collect": 13, "delete_db_shape_collect": 13, "create_db_librari": 13, "dblibrari": [13, 14, 17], "get_all_db_librari": 13, "get_db_library_by_id": 13, "get_db_library_by_nam": 13, "update_db_library_nam": 13, "delete_db_librari": 13, "create_db_templ": 13, "library_id": [13, 14], "dbtemplat": [13, 14, 20], "get_all_db_templ": 13, "get_db_template_by_id": 13, "get_db_template_by_nam": 13, "get_library_defining_db_templ": 13, "get_db_template_depend": 13, "tupl": [13, 15, 18, 19, 20, 21, 33, 35, 36], "depsassoci": [13, 14], "get_depend": [13, 20], "dependant_id": [13, 14], "update_db_template_nam": 13, "update_db_template_optional_arg": 13, "optional_arg": [13, 14, 17, 20], "add_template_dependency_preliminari": 13, "template_id": [13, 20], "dependency_id": 13, "preliminari": 13, "bind": [13, 20, 36, 38, 40, 41, 43], "serv": [13, 38], "popul": [13, 20, 21, 35], "direct": [13, 35], "acycl": 13, "check": [13, 35, 39, 42], "ensur": [13, 34, 39, 42], "those": [13, 24, 40, 41, 42, 43], "upshot": 13, "refer": [13, 15, 20, 33, 34, 41, 42], "necessari": [13, 21, 41], "mani": [13, 14, 19, 42, 43], "nest": [13, 36], "compon": [13, 21, 41, 42, 43], "s223": 13, "mapsto": 13, "check_all_template_depend": 13, "your": [13, 41, 42], "param": [13, 20, 34, 36, 41, 42], "valueerror": [13, 17, 34], "depende": 13, "required_param": 13, "recurs": [13, 19, 20, 36], "check_template_dependency_relationship": 13, "dep": 13, "well": [13, 41], "involv": 13, "seri": [13, 15], "perform": [13, 40, 42], "dure": [13, 20, 34, 36, 39], "template_connect": 13, "appear": [13, 40], "remove_template_depend": 13, "update_db_template_librari": 13, "delete_db_templ": 13, "graph_id": 14, "manifest_id": 14, "manifest": [14, 18, 40], "shapecollect": [14, 17, 18, 19, 21, 42], "distribut": [14, 34, 38], "shape_collection_id": 14, "shape_collect": [14, 18, 21, 40, 42], "dependee_id": 14, "content": [14, 18, 24, 38, 41, 42, 43], "body_id": 14, "jsontyp": 15, "custom": [15, 42], "json": [15, 24, 38], "jsonb": 15, "postgr": 15, "dialect": 15, "allow": [15, 41, 43], "enforc": 15, "uniqu": [15, 17, 20, 36, 41], "encod": [15, 38], "dictionari": [15, 18, 20, 34, 41], "impl": 15, "alia": 15, "hashabl": 15, "flag": [15, 33, 38], "mean": [15, 35], "aren": [15, 42], "orm": 15, "cache_ok": 15, "true": [15, 17, 18, 19, 20, 27, 35, 36, 39, 40, 42], "statement": 15, "externaltyp": 15, "safe": 15, "cach": [15, 24, 26, 35], "emit": 15, "includ": [15, 18, 20, 33, 36, 38, 39, 40, 41, 42], "element": 15, "typedecor": 15, "mytyp": 15, "string": [15, 20, 24, 38, 41], "internal_onli": 15, "would": [15, 36, 40, 41, 43], "equival": 15, "_static_cache_kei": 15, "scheme": 15, "extract": 15, "becom": 15, "cacheabl": 15, "render": 15, "To": [15, 38, 39, 41, 42, 43], "accommod": 15, "datatyp": 15, "unhash": 15, "assign": [15, 40], "whose": [15, 20], "accept": 15, "lookup": [15, 35], "publish": 15, "sort": 15, "un": 15, "lookuptyp": 15, "userdefinedtyp": 15, "non": [15, 39], "get_col_spec": 15, "kw": 15, "varchar": 15, "255": 15, "bind_processor": 15, "abl": [15, 20], "type_": 15, "stdin": 15, "sawarn": 15, "symbol": 15, "no_cach": 15, "did": [15, 40], "wouldn": 15, "insid": [15, 17, 18, 42, 43], "cannot": [15, 17], "itself": [15, 21, 41], "fail": [15, 21, 33, 39, 40, 42], "some_cach": 15, "typeerror": 15, "privat": 15, "variabl": [15, 38, 40, 42, 43], "public": 15, "themselv": 15, "_lookup": 15, "convert": [15, 36], "mixin": 15, "sql_cach": 15, "load_dialect_impl": 15, "typeengin": 15, "type_engin": 15, "help": [15, 19, 38, 42], "determin": [15, 19, 27, 41, 43], "ultim": 15, "By": [15, 19, 42, 43], "_id": [17, 18, 19, 20], "_name": [17, 18, 20], "_bm": [17, 18, 19, 20], "mirror": [17, 18, 19, 20], "classmethod": [17, 18, 19, 20, 24], "overwrit": 17, "bool": [17, 18, 19, 20, 21, 27, 33, 35, 36], "db_id": 17, "union": [17, 20, 26, 33], "priorit": 17, "resolv": [17, 19, 21, 40], "remot": [17, 38], "replac": [17, 36, 41], "load_from_libraries_yml": 17, "multipl": [17, 38], "properli": 17, "format": [17, 39, 40, 42, 43], "order": [17, 34, 35], "directli": [17, 38, 41, 42], "case": [17, 40], "commandlin": 17, "yaml": [17, 34, 38, 39, 43], "create_templ": 17, "get_templ": [17, 40, 41], "get_shape_collect": [17, 40, 42], "_descript": 18, "_manifest_id": 18, "neither": 18, "nor": 18, "add_tripl": [18, 19], "node": [18, 19, 20, 21, 33, 35, 36, 39, 42], "sequenc": [18, 19, 40, 42], "error_on_missing_import": [18, 19], "validationcontext": [18, 21], "against": [18, 31, 39, 42], "automat": [18, 38, 39, 43], "singl": [18, 40, 41, 42], "miss": [18, 19, 21, 39, 40, 42], "deal": 18, "compil": [18, 34], "test_model_against_shap": 18, "shapes_to_test": 18, "target_class": 18, "report": [18, 21, 36, 42], "upon": [18, 38, 39, 43], "relat": [18, 41], "get_manifest": [18, 42], "update_manifest": [18, 42], "graph_nam": 19, "subject": [19, 34, 40, 41], "owl": [19, 38, 40, 41, 42], "resolve_import": 19, "recursive_limit": 19, "request": 19, "limit": [19, 41], "suppress": 19, "n": 19, "get_shapes_of_definition_typ": [19, 42], "definition_typ": 19, "present": 19, "desir": [19, 39, 42], "get_shapes_of_domain": 19, "domain": 19, "get_shapes_about_class": 19, "rdf_type": 19, "target": [19, 33, 40], "superclass": [19, 24], "onli": [19, 39, 43], "appli": [19, 34, 42, 43], "concern": 19, "in_memory_copi": 20, "add_depend": 20, "check_depend": 20, "remove_depend": 20, "all_paramet": 20, "exclud": [20, 40, 41, 42], "dependency_paramet": 20, "parameter_count": 20, "counter": 20, "histogram": 20, "count": [20, 33, 36, 42], "transit": 20, "dependency_for_paramet": 20, "search": [20, 35, 36, 42], "to_inlin": 20, "preserve_arg": 20, "inlin": [20, 27, 36], "suffix": 20, "collis": 20, "combin": [20, 21, 36], "adjust": 20, "preserv": 20, "renam": 20, "confus": 20, "evalu": [20, 33, 40, 42, 43], "require_optional_arg": 20, "warn_unus": 20, "unbound": 20, "unless": 20, "bound": [20, 43], "even": 20, "substitut": 20, "whether": 20, "were": [20, 40, 41], "paramt": [20, 43], "ignor": [20, 39], "include_opt": 20, "autogener": [20, 39, 40], "invent": 20, "defining_librari": 20, "library_depend": 20, "find_subgraph": 20, "iter": [20, 35], "subgraph": [20, 35], "partial": [20, 41], "entir": 20, "cover": [20, 41, 42], "yield": [20, 35], "pathlik": [20, 24], "stringio": [20, 26], "onc": 20, "bytesio": 20, "written": [20, 43], "sent": 20, "program": 20, "buffer": 20, "generate_spreadsheet": 20, "spreadsheet": 20, "byte": 20, "_template_id": 20, "graphdiff": 21, "focu": 21, "validation_result": [21, 40, 42], "actual": [21, 40], "rather": [21, 34], "than": [21, 34, 36], "hold": [21, 40, 41], "reconcil": 21, "reason": [21, 39, 40, 42], "human": 21, "explan": 21, "failed_shap": 21, "failed_compon": 21, "constraint": [21, 33, 40, 42], "pathclasscount": 21, "minc": 21, "maxc": 21, "classnam": 21, "pathshapecount": 21, "shapenam": 21, "extra_bodi": 21, "extra_dep": 21, "match": [21, 33, 35, 42], "requiredpath": 21, "requiredclass": 21, "graphclasscardin": 21, "expectedcount": 21, "number": [21, 33, 36, 40, 42], "report_str": [21, 42], "diffset": [21, 40, 42], "unord": 21, "input": [21, 35, 36, 38, 40, 41], "as_templ": 21, "diffset_to_templ": 21, "grouped_diffset": 21, "wrong": 21, "respect": [21, 40, 41, 42], "_report_to_diffset": 21, "violat": 21, "piec": 24, "dump": 24, "them": [24, 26, 28], "bn": 25, "brick_bacnet_scan": 25, "expos": [26, 28], "callabl": [27, 34, 35], "attempt": [27, 39], "chooser": 27, "xlsxingress": 28, "sheetnam": 28, "bind_prefix": 30, "validate_libraries_yaml": 31, "jsonschema": 31, "validationerror": 31, "retriev": [31, 42], "deseri": 31, "messag": [33, 38, 42], "construct": 33, "programat": 33, "add_properti": 33, "add_list_properti": 33, "OR": 33, "AND": 33, "NOT": 33, "xone": 33, "nodeshap": [33, 36, 42], "of_class": 33, "class_": 33, "activ": [33, 39], "much": [33, 39], "certain": [33, 42], "always_run": 33, "blank": [33, 36], "insur": 33, "alwai": [33, 42], "exactli": [33, 42], "exact": 33, "has_properti": 33, "propertyshap": 33, "has_path": 33, "zero_or_on": 33, "zero_or_mor": 33, "one_or_mor": 33, "mutual": 33, "exclus": 33, "zero": 33, "min": [33, 36], "max": 33, "qualifi": 33, "sh": [33, 36, 42], "precid": 33, "over": [33, 35, 39], "Is": 33, "matches_class": 33, "matches_shap": 33, "rule": [34, 41, 42], "downstream": 34, "feed": [34, 43], "haspart": [34, 40, 41, 42, 43], "hastyp": 34, "isfedbi": 34, "mayb": 34, "author": 34, "introduc": [34, 43], "macro": 34, "signatur": 34, "foo": 34, "hardcod": 34, "decor": 34, "regist": 34, "execut": [34, 42], "first": [34, 35, 40, 41, 42, 43], "_summary_": 34, "_description_": 34, "compile_template_spec": 34, "spec": [34, 38], "decod": 34, "vf2": 35, "algorithm": 35, "isomorph": 35, "get_semantic_feas": 35, "g1": 35, "g2": 35, "_cach": 35, "_ontology_lookup_cach": 35, "feasibl": 35, "must": [35, 39, 42], "generate_all_subgraph": 35, "induc": 35, "decreas": 35, "size": 35, "want": [35, 40, 41, 42, 43], "find": [35, 36, 39], "largest": 35, "monomorph": 35, "digraph_to_rdflib": 35, "digraph": 35, "nx": 35, "rdflib_to_networkx_digraph": 35, "templatematch": 35, "graph_target": 35, "template_bind": 35, "template_graph": 35, "add_map": 35, "largest_mapping_s": 35, "building_subgraph_from_map": 35, "template_subgraph_from_map": 35, "remaining_template_graph": 35, "remain": [35, 36], "remaining_templ": 35, "mappings_it": 35, "descend": 35, "building_mapping_subgraphs_it": 35, "copy_graph": 36, "preserve_blank_nod": 36, "boolean": 36, "keep": 36, "inline_sh_nod": 36, "edit": 36, "combine_graph": 36, "graph_siz": 36, "measur": 36, "remove_triples_with_nod": 36, "replace_nod": 36, "get_ontology_fil": 36, "travers": 36, "get_template_parts_from_shap": 36, "shape_nam": 36, "shape_graph": 36, "mincount": 36, "qualifiedmincount": 36, "template_to_shap": 36, "new_temporary_graph": 36, "more_namespac": 36, "get_paramet": 36, "abc": [36, 41], "rewrite_shape_graph": 36, "rewrit": 36, "origin": [36, 43], "rewritten": 36, "skip_uri": 36, "axiomat": 36, "xsd": 36, "forget": [38, 42], "db_uri": 38, "suppli": [38, 40], "right": 38, "recal": [38, 43], "programmat": 38, "h": 38, "dir": 38, "o": [38, 39], "ont": 38, "l": 38, "library_manifest_fil": 38, "exit": 38, "describ": [38, 43], "three": 38, "get_default_libraries_yml": 38, "immedi": 38, "enclos": 38, "zonepac": 38, "pull": [38, 40], "branch": 38, "temporarili": 38, "clone": [38, 39, 40, 41, 42], "repo": 38, "nrel": [38, 40, 41, 42], "chiller": 38, "plant": 38, "invidu": 38, "diretori": 38, "output_fil": 38, "scanner": 38, "subcommand": 38, "save": [38, 40, 41, 42], "port": 38, "listen": 38, "prerequisit": 39, "poetri": 39, "m": 39, "pre": 39, "commit": [39, 41], "env": 39, "migrat": 39, "window": 39, "unix": 39, "shell": 39, "bash": 39, "allexport": 39, "alemb": 39, "head": 39, "revis": 39, "localhost": 39, "5000": 39, "while": 39, "backend": 39, "psycopg2": 39, "binari": 39, "deploy": 39, "featur": [39, 40, 41, 42], "ci": 39, "reproduc": 39, "slight": 39, "comit": 39, "static": 39, "stage": 39, "fix": [39, 40], "inspect": 39, "success": [39, 40, 42], "isort": 39, "black": 39, "mypi": 39, "pyproject": 39, "toml": 39, "flake8": 39, "manual": 39, "log_cli": 39, "pytest": 39, "action": 39, "workflow": 39, "html": 39, "jupyt": 39, "book": 39, "sphinx": 39, "_build": 39, "dry": 39, "js": 39, "angular": 39, "readm": 39, "md": 39, "4200": 39, "learn": [40, 41, 42, 43], "fork": [40, 41, 42], "133": [40, 41, 42], "tutorial2_model": [40, 42], "tutorial2_manifest": [40, 42], "subset": [40, 41, 42], "g36": [40, 42, 43], "guideline36": [40, 42], "failur": [40, 42], "gather": [40, 42], "eas": [40, 42], "item": 40, "core_zn": [40, 41, 42], "psc_ac": [40, 41, 42], "sz": [40, 42], "ahu": [40, 41, 42], "sa": [40, 43], "fan": [40, 41, 42], "supply_fan": [40, 41, 42], "minimum": [40, 42], "could": [40, 42, 43], "explicitli": [40, 42], "ve": [40, 42], "ask": [40, 41, 42], "prompt": [40, 42], "closer": 40, "generated_templ": 40, "templ": [40, 43], "resolvefd68e295": 40, "p3": 40, "p1": 40, "p2": 40, "default5": 40, "start_stop_command": 40, "fan_statu": 40, "frequency_command": 40, "resolve9732f419": 40, "fairli": 40, "loop": 40, "challeng": 40, "fact": 40, "advantag": [40, 41], "wtih": 40, "postfix": 40, "signific": 40, "highli": 40, "continu": 40, "ahu_nam": [40, 41, 42], "sensibl": 40, "supply_fan_nam": 40, "know": [40, 41, 42, 43], "explor": 40, "high": [40, 42], "guidelin": [40, 42, 43], "destin": [40, 41, 42], "tutorial3_model": 40, "www": [40, 41, 42], "w3": [40, 41, 42], "2002": [40, 41, 42], "clg_coil": [40, 41], "damper": [40, 41, 42, 43], "htg_coil": [40, 41, 42], "cooling_coil": [40, 41, 42], "fanp1": 40, "fanp2": 40, "fanp3": 40, "heating_coil": [40, 41, 42, 43], "b04f6768": 40, "e1b8": 40, "4b53": 40, "a352": 40, "9909fb15e61c": 40, "few": [41, 43], "similar": 41, "small": [41, 42], "offic": [41, 42], "commerci": [41, 42], "prototyp": [41, 42], "reader": 41, "familiar": 41, "turtl": [41, 43], "syntax": [41, 43], "persist": 41, "simplic": 41, "tell": 41, "syntact": 41, "reveal": 41, "coupl": [41, 42], "annot": 41, "predic": 41, "soon": 41, "simpli": 41, "ten": 41, "supply_water_temperature_integral_time_paramet": 41, "zone_air_humidity_setpoint": 41, "tvoc_level_sensor": 41, "leaving_water_temperature_setpoint": 41, "heating_supply_air_temperature_deadband_setpoint": 41, "speed_setpoint": 41, "air_temperature_step_paramet": 41, "low_discharge_air_temperature_alarm": 41, "hot_water_differential_pressure_proportional_band_paramet": 41, "bypass_air_flow_sensor": 41, "wrapper": 41, "manipul": 41, "whole": 41, "via": 41, "436f177a": 41, "c9ea": 41, "4d38": 41, "a826": 41, "5e898a720592": 41, "These": [41, 42], "belong": 41, "my_graph": 41, "my_external_fil": 41, "raw": 41, "ex": 41, "a1": 41, "air_handler_unit": 41, "touch": 41, "chill": 41, "water": 41, "air": [41, 42, 43], "ahu_templ": 41, "mandatori": 41, "understand": [41, 42], "psz_ac": 41, "condition": 41, "schedul": 41, "ahu_binding_dict": 41, "ahu_graph": 41, "cool": [41, 42], "coil": [41, 42, 43], "oa_ra_damper_templ": 41, "fan_templ": 41, "clg_coil_templ": 41, "fan_nam": 41, "fan_binding_dict": 41, "fan_graph": 41, "outdoor": 41, "oa_ra_damper_nam": 41, "oa_ra_damper_binding_dict": 41, "oa_ra_damper_graph": 41, "clg": [41, 42], "clg_coil_nam": 41, "clg_coil_binding_dict": 41, "clg_coil_graph": 41, "confirm": [41, 42], "htg_coil_templ": [41, 42], "htg": [41, 42, 43], "htg_coil_nam": [41, 42], "htg_coil_bind": [41, 42], "htg_coil_graph": [41, 42], "wa": [41, 42], "tutorial1_model": [41, 42], "energycod": 41, "gov": [41, 42], "tr": [41, 42], "readthedoc": 41, "feedback": 42, "thing": [42, 43], "correctli": 42, "languag": 42, "special": 42, "accord": 42, "suffic": 42, "my_site_constraint": 42, "targetnod": 42, "exactcount": 42, "past": 42, "As": 42, "exercis": 42, "heat": 42, "targetclass": 42, "block": 42, "treat": [42, 43], "attributeerror": 42, "310": 42, "311": 42, "312": 42, "313": 42, "314": 42, "complain": 42, "why": 42, "care": 42, "top": [42, 43], "forgot": 42, "longer": 42, "bmotif": 42, "system_specif": 42, "re": 42, "interest": 42, "volum": [42, 43], "append": 42, "shown": 42, "offici": 42, "text": 42, "separ": 42, "invalid": 42, "technic": 42, "indivdu": 43, "termin": 43, "reheat": 43, "variable_air_volume_box_with_reheat": 43, "flow": 43, "za": 43, "occ": 43, "supply_air_flow_sensor": 43, "hvac_zon": 43, "occupancy_sensor": 43, "co2_level_sensor": 43, "short": 43, "sensor": 43, "co": 43, "topolog": 43, "further": 43, "zoom": 43, "second": 43, "problem": 43, "dependeci": 43, "posit": 43, "dmppo": 43, "damper_position_command": 43, "sugar": 43, "pattern": 43, "togeth": 43, "cmd": 43, "position_command": 43, "among": 43, "principl": 43, "manufactur": 43, "profil": 43, "organiz": 43, "subsystem": 43}, "objects": {"": [[5, 0, 0, "-", "buildingmotif"]], "buildingmotif": [[6, 0, 0, "-", "api"], [8, 0, 0, "-", "building_motif"], [11, 0, 0, "-", "database"], [16, 0, 0, "-", "dataclasses"], [22, 0, 0, "-", "ingresses"], [29, 0, 0, "-", "libraries"], [30, 0, 0, "-", "namespaces"], [31, 0, 0, "-", "schemas"], [32, 0, 0, "-", "shape_builder"], [34, 0, 0, "-", "template_compilation"], [35, 0, 0, "-", "template_matcher"], [36, 0, 0, "-", "utils"]], "buildingmotif.api": [[7, 0, 0, "-", "views"]], "buildingmotif.building_motif": [[9, 0, 0, "-", "building_motif"], [10, 0, 0, "-", "singleton"]], "buildingmotif.building_motif.building_motif": [[9, 1, 1, "", "BuildingMOTIF"], [9, 1, 1, "", "BuildingMotifEngine"], [9, 4, 1, "", "get_building_motif"]], "buildingmotif.building_motif.building_motif.BuildingMOTIF": [[9, 2, 1, "", "clean"], [9, 2, 1, "", "close"], [9, 3, 1, "", "session"], [9, 2, 1, "", "setup_logging"], [9, 2, 1, "", "setup_tables"]], "buildingmotif.building_motif.building_motif.BuildingMotifEngine": [[9, 2, 1, "", "begin"], [9, 2, 1, "", "connect"]], "buildingmotif.building_motif.singleton": [[10, 1, 1, "", "Singleton"], [10, 5, 1, "", "SingletonNotInstantiatedException"]], "buildingmotif.database": [[12, 0, 0, "-", "graph_connection"], [13, 0, 0, "-", "table_connection"], [14, 0, 0, "-", "tables"], [15, 0, 0, "-", "utils"]], "buildingmotif.database.graph_connection": [[12, 1, 1, "", "GraphConnection"]], "buildingmotif.database.graph_connection.GraphConnection": [[12, 2, 1, "", "create_graph"], [12, 2, 1, "", "delete_graph"], [12, 2, 1, "", "get_all_graph_identifiers"], [12, 2, 1, "", "get_graph"]], "buildingmotif.database.table_connection": [[13, 1, 1, "", "TableConnection"]], "buildingmotif.database.table_connection.TableConnection": [[13, 2, 1, "", "add_template_dependency_preliminary"], [13, 2, 1, "", "check_all_template_dependencies"], [13, 2, 1, "", "check_template_dependency_relationship"], [13, 2, 1, "", "create_db_library"], [13, 2, 1, "", "create_db_model"], [13, 2, 1, "", "create_db_shape_collection"], [13, 2, 1, "", "create_db_template"], [13, 2, 1, "", "delete_db_library"], [13, 2, 1, "", "delete_db_model"], [13, 2, 1, "", "delete_db_shape_collection"], [13, 2, 1, "", "delete_db_template"], [13, 2, 1, "", "get_all_db_libraries"], [13, 2, 1, "", "get_all_db_models"], [13, 2, 1, "", "get_all_db_shape_collections"], [13, 2, 1, "", "get_all_db_templates"], [13, 2, 1, "", "get_db_library_by_id"], [13, 2, 1, "", "get_db_library_by_name"], [13, 2, 1, "", "get_db_model"], [13, 2, 1, "", "get_db_model_by_name"], [13, 2, 1, "", "get_db_shape_collection"], [13, 2, 1, "", "get_db_template_by_id"], [13, 2, 1, "", "get_db_template_by_name"], [13, 2, 1, "", "get_db_template_dependencies"], [13, 2, 1, "", "get_library_defining_db_template"], [13, 2, 1, "", "remove_template_dependency"], [13, 2, 1, "", "update_db_library_name"], [13, 2, 1, "", "update_db_model_description"], [13, 2, 1, "", "update_db_model_name"], [13, 2, 1, "", "update_db_template_library"], [13, 2, 1, "", "update_db_template_name"], [13, 2, 1, "", "update_db_template_optional_args"]], "buildingmotif.database.tables": [[14, 1, 1, "", "DBLibrary"], [14, 1, 1, "", "DBModel"], [14, 1, 1, "", "DBShapeCollection"], [14, 1, 1, "", "DBTemplate"], [14, 1, 1, "", "DepsAssociation"]], "buildingmotif.database.tables.DBLibrary": [[14, 6, 1, "", "id"], [14, 6, 1, "", "name"], [14, 6, 1, "", "shape_collection"], [14, 6, 1, "", "shape_collection_id"], [14, 6, 1, "", "templates"]], "buildingmotif.database.tables.DBModel": [[14, 6, 1, "", "description"], [14, 6, 1, "", "graph_id"], [14, 6, 1, "", "id"], [14, 6, 1, "", "manifest"], [14, 6, 1, "", "manifest_id"], [14, 6, 1, "", "name"]], "buildingmotif.database.tables.DBShapeCollection": [[14, 6, 1, "", "graph_id"], [14, 6, 1, "", "id"]], "buildingmotif.database.tables.DBTemplate": [[14, 6, 1, "", "body_id"], [14, 6, 1, "", "dependants"], [14, 6, 1, "", "dependencies"], [14, 6, 1, "", "id"], [14, 6, 1, "", "library"], [14, 6, 1, "", "library_id"], [14, 6, 1, "", "name"], [14, 6, 1, "", "optional_args"]], "buildingmotif.database.tables.DepsAssociation": [[14, 6, 1, "", "args"], [14, 6, 1, "", "dependant_id"], [14, 6, 1, "", "dependee_id"], [14, 6, 1, "", "id"]], "buildingmotif.database.utils": [[15, 1, 1, "", "JSONType"]], "buildingmotif.database.utils.JSONType": [[15, 6, 1, "", "cache_ok"], [15, 6, 1, "", "hashable"], [15, 6, 1, "", "impl"], [15, 2, 1, "", "load_dialect_impl"]], "buildingmotif.dataclasses": [[17, 0, 0, "-", "library"], [18, 0, 0, "-", "model"], [19, 0, 0, "-", "shape_collection"], [20, 0, 0, "-", "template"], [21, 0, 0, "-", "validation"]], "buildingmotif.dataclasses.library": [[17, 1, 1, "", "Library"]], "buildingmotif.dataclasses.library.Library": [[17, 2, 1, "", "create"], [17, 2, 1, "", "create_template"], [17, 2, 1, "", "get_shape_collection"], [17, 2, 1, "", "get_template_by_name"], [17, 2, 1, "", "get_templates"], [17, 3, 1, "", "id"], [17, 2, 1, "", "load"], [17, 2, 1, "", "load_from_libraries_yml"], [17, 3, 1, "", "name"]], "buildingmotif.dataclasses.model": [[18, 1, 1, "", "Model"]], "buildingmotif.dataclasses.model.Model": [[18, 2, 1, "", "add_graph"], [18, 2, 1, "", "add_triples"], [18, 2, 1, "", "compile"], [18, 2, 1, "", "create"], [18, 3, 1, "", "description"], [18, 2, 1, "", "get_manifest"], [18, 6, 1, "", "graph"], [18, 3, 1, "", "id"], [18, 2, 1, "", "load"], [18, 3, 1, "", "name"], [18, 2, 1, "", "test_model_against_shapes"], [18, 2, 1, "", "update_manifest"], [18, 2, 1, "", "validate"]], "buildingmotif.dataclasses.shape_collection": [[19, 1, 1, "", "ShapeCollection"]], "buildingmotif.dataclasses.shape_collection.ShapeCollection": [[19, 2, 1, "", "add_graph"], [19, 2, 1, "", "add_triples"], [19, 2, 1, "", "create"], [19, 2, 1, "", "get_shapes_about_class"], [19, 2, 1, "", "get_shapes_of_definition_type"], [19, 2, 1, "", "get_shapes_of_domain"], [19, 6, 1, "", "graph"], [19, 3, 1, "", "graph_name"], [19, 3, 1, "", "id"], [19, 2, 1, "", "load"], [19, 2, 1, "", "resolve_imports"]], "buildingmotif.dataclasses.template": [[20, 1, 1, "", "Dependency"], [20, 1, 1, "", "Template"]], "buildingmotif.dataclasses.template.Dependency": [[20, 6, 1, "", "args"], [20, 3, 1, "", "template"], [20, 3, 1, "", "template_id"]], "buildingmotif.dataclasses.template.Template": [[20, 2, 1, "", "add_dependency"], [20, 3, 1, "", "all_parameters"], [20, 6, 1, "", "body"], [20, 2, 1, "", "check_dependencies"], [20, 3, 1, "", "defining_library"], [20, 2, 1, "", "dependency_for_parameter"], [20, 3, 1, "", "dependency_parameters"], [20, 2, 1, "", "evaluate"], [20, 2, 1, "", "fill"], [20, 2, 1, "", "find_subgraphs"], [20, 2, 1, "", "generate_csv"], [20, 2, 1, "", "generate_spreadsheet"], [20, 2, 1, "", "get_dependencies"], [20, 3, 1, "", "id"], [20, 2, 1, "", "in_memory_copy"], [20, 2, 1, "", "inline_dependencies"], [20, 2, 1, "", "library_dependencies"], [20, 2, 1, "", "load"], [20, 3, 1, "", "name"], [20, 6, 1, "", "optional_args"], [20, 3, 1, "", "parameter_counts"], [20, 3, 1, "", "parameters"], [20, 2, 1, "", "remove_dependency"], [20, 2, 1, "", "to_inline"]], "buildingmotif.dataclasses.validation": [[21, 1, 1, "", "GraphClassCardinality"], [21, 1, 1, "", "GraphDiff"], [21, 1, 1, "", "PathClassCount"], [21, 1, 1, "", "PathShapeCount"], [21, 1, 1, "", "RequiredClass"], [21, 1, 1, "", "RequiredPath"], [21, 1, 1, "", "ValidationContext"], [21, 4, 1, "", "diffset_to_templates"]], "buildingmotif.dataclasses.validation.GraphClassCardinality": [[21, 6, 1, "", "classname"], [21, 6, 1, "", "expectedCount"], [21, 2, 1, "", "reason"], [21, 2, 1, "", "resolve"]], "buildingmotif.dataclasses.validation.GraphDiff": [[21, 3, 1, "", "failed_component"], [21, 3, 1, "", "failed_shape"], [21, 6, 1, "", "focus"], [21, 6, 1, "", "graph"], [21, 2, 1, "", "reason"], [21, 2, 1, "", "resolve"], [21, 6, 1, "", "validation_result"]], "buildingmotif.dataclasses.validation.PathClassCount": [[21, 6, 1, "", "classname"], [21, 6, 1, "", "maxc"], [21, 6, 1, "", "minc"], [21, 6, 1, "", "path"], [21, 2, 1, "", "reason"], [21, 2, 1, "", "resolve"]], "buildingmotif.dataclasses.validation.PathShapeCount": [[21, 6, 1, "", "extra_body"], [21, 6, 1, "", "extra_deps"], [21, 6, 1, "", "maxc"], [21, 6, 1, "", "minc"], [21, 6, 1, "", "path"], [21, 2, 1, "", "reason"], [21, 2, 1, "", "resolve"], [21, 6, 1, "", "shapename"]], "buildingmotif.dataclasses.validation.RequiredClass": [[21, 6, 1, "", "classname"], [21, 2, 1, "", "reason"], [21, 2, 1, "", "resolve"]], "buildingmotif.dataclasses.validation.RequiredPath": [[21, 6, 1, "", "maxc"], [21, 6, 1, "", "minc"], [21, 6, 1, "", "path"], [21, 2, 1, "", "reason"], [21, 2, 1, "", "resolve"]], "buildingmotif.dataclasses.validation.ValidationContext": [[21, 2, 1, "", "as_templates"], [21, 3, 1, "", "diffset"], [21, 6, 1, "", "model"], [21, 6, 1, "", "report"], [21, 6, 1, "", "report_string"], [21, 6, 1, "", "shape_collections"], [21, 6, 1, "", "valid"]], "buildingmotif.ingresses": [[23, 0, 0, "-", "bacnet"], [24, 0, 0, "-", "base"], [25, 0, 0, "-", "brick"], [26, 0, 0, "-", "csv"], [27, 0, 0, "-", "template"], [28, 0, 0, "-", "xlsx"]], "buildingmotif.ingresses.bacnet": [[23, 1, 1, "", "BACnetNetwork"]], "buildingmotif.ingresses.bacnet.BACnetNetwork": [[23, 3, 1, "", "records"]], "buildingmotif.ingresses.base": [[24, 1, 1, "", "GraphIngressHandler"], [24, 1, 1, "", "IngressHandler"], [24, 1, 1, "", "Record"], [24, 1, 1, "", "RecordIngressHandler"]], "buildingmotif.ingresses.base.GraphIngressHandler": [[24, 2, 1, "", "graph"]], "buildingmotif.ingresses.base.Record": [[24, 6, 1, "", "fields"], [24, 6, 1, "", "rtype"]], "buildingmotif.ingresses.base.RecordIngressHandler": [[24, 2, 1, "", "dump"], [24, 2, 1, "", "dumps"], [24, 2, 1, "", "load"], [24, 2, 1, "", "loads"], [24, 3, 1, "", "records"]], "buildingmotif.ingresses.brick": [[25, 1, 1, "", "BACnetToBrickIngress"]], "buildingmotif.ingresses.brick.BACnetToBrickIngress": [[25, 6, 1, "", "BNS"], [25, 2, 1, "", "graph"]], "buildingmotif.ingresses.csv": [[26, 1, 1, "", "CSVIngress"]], "buildingmotif.ingresses.csv.CSVIngress": [[26, 3, 1, "", "records"]], "buildingmotif.ingresses.template": [[27, 1, 1, "", "TemplateIngress"], [27, 1, 1, "", "TemplateIngressWithChooser"]], "buildingmotif.ingresses.template.TemplateIngress": [[27, 2, 1, "", "graph"]], "buildingmotif.ingresses.template.TemplateIngressWithChooser": [[27, 2, 1, "", "graph"]], "buildingmotif.ingresses.xlsx": [[28, 1, 1, "", "XLSXIngress"]], "buildingmotif.ingresses.xlsx.XLSXIngress": [[28, 3, 1, "", "records"]], "buildingmotif.namespaces": [[30, 4, 1, "", "bind_prefixes"]], "buildingmotif.schemas": [[31, 4, 1, "", "validate_libraries_yaml"]], "buildingmotif.shape_builder": [[33, 0, 0, "-", "shape"]], "buildingmotif.shape_builder.shape": [[33, 4, 1, "", "AND"], [33, 4, 1, "", "NOT"], [33, 1, 1, "", "NodeShape"], [33, 4, 1, "", "OR"], [33, 1, 1, "", "PropertyShape"], [33, 1, 1, "", "Shape"], [33, 4, 1, "", "XONE"]], "buildingmotif.shape_builder.shape.NodeShape": [[33, 2, 1, "", "always_run"], [33, 2, 1, "", "count"], [33, 2, 1, "", "has_property"], [33, 2, 1, "", "of_class"]], "buildingmotif.shape_builder.shape.PropertyShape": [[33, 2, 1, "", "has_path"], [33, 2, 1, "", "matches"], [33, 2, 1, "", "matches_class"], [33, 2, 1, "", "matches_shape"]], "buildingmotif.shape_builder.shape.Shape": [[33, 2, 1, "", "AND"], [33, 2, 1, "", "NOT"], [33, 2, 1, "", "OR"], [33, 2, 1, "", "XONE"], [33, 2, 1, "", "add"], [33, 2, 1, "", "add_list_property"], [33, 2, 1, "", "add_property"]], "buildingmotif.template_compilation": [[34, 7, 1, "", "RULES"], [34, 4, 1, "", "bacnet"], [34, 4, 1, "", "body"], [34, 4, 1, "", "compile_template_spec"], [34, 4, 1, "", "feeds"], [34, 4, 1, "", "hasType"], [34, 4, 1, "", "isFedBy"], [34, 4, 1, "", "parts"], [34, 4, 1, "", "points"], [34, 4, 1, "", "rule"]], "buildingmotif.template_matcher": [[35, 1, 1, "", "TemplateMatcher"], [35, 4, 1, "", "digraph_to_rdflib"], [35, 4, 1, "", "generate_all_subgraphs"], [35, 4, 1, "", "get_semantic_feasibility"]], "buildingmotif.template_matcher.TemplateMatcher": [[35, 2, 1, "", "add_mapping"], [35, 6, 1, "", "building"], [35, 2, 1, "", "building_mapping_subgraphs_iter"], [35, 2, 1, "", "building_subgraph_from_mapping"], [35, 3, 1, "", "largest_mapping_size"], [35, 6, 1, "", "mappings"], [35, 2, 1, "", "mappings_iter"], [35, 2, 1, "", "remaining_template"], [35, 2, 1, "", "remaining_template_graph"], [35, 6, 1, "", "template"], [35, 6, 1, "", "template_bindings"], [35, 6, 1, "", "template_graph"], [35, 2, 1, "", "template_subgraph_from_mapping"]], "buildingmotif.utils": [[36, 4, 1, "", "combine_graphs"], [36, 4, 1, "", "copy_graph"], [36, 4, 1, "", "get_ontology_files"], [36, 4, 1, "", "get_parameters"], [36, 4, 1, "", "get_template_parts_from_shape"], [36, 4, 1, "", "graph_size"], [36, 4, 1, "", "inline_sh_nodes"], [36, 4, 1, "", "new_temporary_graph"], [36, 4, 1, "", "remove_triples_with_node"], [36, 4, 1, "", "replace_nodes"], [36, 4, 1, "", "rewrite_shape_graph"], [36, 4, 1, "", "skip_uri"], [36, 4, 1, "", "template_to_shape"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:property", "4": "py:function", "5": "py:exception", "6": "py:attribute", "7": "py:data"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "property", "Python property"], "4": ["py", "function", "Python function"], "5": ["py", "exception", "Python exception"], "6": ["py", "attribute", "Python attribute"], "7": ["py", "data", "Python data"]}, "titleterms": {"buildingmotif": [0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38], "document": [0, 37, 39], "refer": 0, "tutori": 0, "guid": 0, "explan": 0, "appendix": 0, "bibliographi": 1, "ingress": [2, 22, 23, 24, 25, 26, 27, 28], "type": [2, 4], "record": 2, "handler": 2, "graph": [2, 41], "us": [2, 39, 42], "built": 2, "bacnet": [2, 4, 23, 38], "network": [2, 4], "csv": [2, 3, 26], "file": 2, "xlsx": [2, 28], "spreadsheet": 2, "templat": [2, 20, 27, 40, 41, 43], "instanti": 2, "exampl": 2, "brick": [2, 4, 25], "import": [2, 3, 41], "extern": 4, "setup": [4, 40, 42], "pull": 4, "metadata": 4, "an": 4, "initi": 4, "model": [4, 18, 40, 41, 42], "augment": 4, "our": 4, "strategi": 4, "point": 4, "infer": 4, "api": [6, 7, 38], "view": 7, "building_motif": [8, 9, 10], "singleton": 10, "databas": [11, 12, 13, 14, 15, 39], "graph_connect": 12, "table_connect": 13, "tabl": 14, "util": [15, 36], "dataclass": [16, 17, 18, 19, 20, 21], "librari": [17, 29, 38, 41], "shape_collect": 19, "valid": [21, 40, 42], "base": 24, "namespac": 30, "schema": 31, "shape_build": [32, 33], "shape": [33, 42], "template_compil": 34, "template_match": 35, "code": 37, "command": 38, "line": 38, "interfac": 38, "load": [38, 41], "cli": 38, "usag": 38, "bulk": 38, "directori": 38, "ontolog": [38, 42], "git": 38, "repositori": 38, "individu": [38, 41], "scan": 38, "server": 38, "develop": 39, "instal": 39, "postgr": 39, "continu": 39, "integr": 39, "local": 39, "remot": 39, "build": 39, "publish": 39, "web": 39, "app": 39, "run": 39, "docker": 39, "correct": 40, "creation": 41, "creat": 41, "ad": [41, 42, 43], "manual": 41, "rdf": 41, "tripl": 41, "Into": 41, "explor": 41, "evalu": 41, "manifest": 42, "write": [42, 43], "tip": 42, "suppli": 42, "extra": 42, "collect": 42, "fix": 42, "case": 42, "find": 42, "part": 43, "bodi": 43, "option": 43, "depend": 43, "save": 43, "organ": 43}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1, "sphinxcontrib.bibtex": 9, "sphinx": 56}}) \ No newline at end of file diff --git a/tutorials/model_correction.html b/tutorials/model_correction.html index 6e9f33ce9..7a00faeb4 100644 --- a/tutorials/model_correction.html +++ b/tutorials/model_correction.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home + @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -534,8 +533,8 @@

    Model Validation
    Model is valid? False
     
    -
     - Graph did not have 1 instances of https://brickschema.org/schema/Brick#Supply_Fan
    - - urn:bldg/Core_ZN-PSC_AC needs between 1 and 1 instances of urn:ashrae/g36/4.8/sz-vav-ahu/sa-fan on path https://brickschema.org/schema/Brick#hasPart
    +
     - urn:bldg/Core_ZN-PSC_AC needs between 1 and 1 instances of urn:ashrae/g36/4.8/sz-vav-ahu/sa-fan on path https://brickschema.org/schema/Brick#hasPart
    + - Graph did not have 1 instances of https://brickschema.org/schema/Brick#Supply_Fan
     
    @@ -564,16 +563,7 @@

    Model Correction with Templates -
    Name (autogenerated): resolvef843bc3f
    -Parameters (autogenerated): {'name'}
    -Template body (autogenerated):
    -@prefix brick: <https://brickschema.org/schema/Brick#> .
    -
    -<urn:___param___#name> a brick:Supply_Fan .
    -
    -
    --------------------------------------------------------------------------------
    -Name (autogenerated): resolve340d587e
    +
    -
      - https://brickschema.org/schema/Brick#Enthalpy_Sensor
    -  - https://brickschema.org/schema/Brick#Unoccupied_Heating_Temperature_Setpoint
    -  - https://brickschema.org/schema/Brick#Radiant_Panel_Temperature_Setpoint
    -  - https://brickschema.org/schema/Brick#Discharge_Air_Humidity_Sensor
    -  - https://brickschema.org/schema/Brick#Particulate_Matter_Sensor
    -  - https://brickschema.org/schema/Brick#Entering_Chilled_Water_Temperature_Sensor
    -  - https://brickschema.org/schema/Brick#Discharge_Air_Flow_Reset_Setpoint
    -  - https://brickschema.org/schema/Brick#Water_Temperature_Alarm
    -  - https://brickschema.org/schema/Brick#Supply_Air_Temperature_Setpoint
    -  - https://brickschema.org/schema/Brick#Air_Flow_Loss_Alarm
    +
      - https://brickschema.org/schema/Brick#Supply_Water_Temperature_Integral_Time_Parameter
    +  - https://brickschema.org/schema/Brick#Zone_Air_Humidity_Setpoint
    +  - https://brickschema.org/schema/Brick#TVOC_Level_Sensor
    +  - https://brickschema.org/schema/Brick#Leaving_Water_Temperature_Setpoint
    +  - https://brickschema.org/schema/Brick#Heating_Supply_Air_Temperature_Deadband_Setpoint
    +  - https://brickschema.org/schema/Brick#Speed_Setpoint
    +  - https://brickschema.org/schema/Brick#Air_Temperature_Step_Parameter
    +  - https://brickschema.org/schema/Brick#Low_Discharge_Air_Temperature_Alarm
    +  - https://brickschema.org/schema/Brick#Hot_Water_Differential_Pressure_Proportional_Band_Parameter
    +  - https://brickschema.org/schema/Brick#Bypass_Air_Flow_Sensor
     
    @@ -601,7 +600,7 @@

    Adding Individual RDF Triples to a Model -
    <Graph identifier=b0893a8b-3bdb-4b47-a738-7091dc50511f (<class 'rdflib.graph.Graph'>)>
    +
    <Graph identifier=436f177a-c9ea-4d38-a826-5e898a720592 (<class 'rdflib.graph.Graph'>)>
     
    @@ -647,7 +646,7 @@

    Importing RDF Graphs Into a Model -
    <Graph identifier=b0893a8b-3bdb-4b47-a738-7091dc50511f (<class 'rdflib.graph.Graph'>)>
    +
    <Graph identifier=436f177a-c9ea-4d38-a826-5e898a720592 (<class 'rdflib.graph.Graph'>)>
     
    @@ -869,7 +868,7 @@

    Adding Evaluated Templates to the Model - @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -1025,8 +1024,8 @@

    Validating the Model - + +
    diff --git a/tutorials/template_writing.html b/tutorials/template_writing.html index 3d0b88f3a..b7fd625d6 100644 --- a/tutorials/template_writing.html +++ b/tutorials/template_writing.html @@ -19,12 +19,12 @@ - - - + + + - + @@ -38,9 +38,9 @@ - - - + + + @@ -153,13 +153,14 @@ + - Logo image - + BuildingMOTIF Documentation - Home +

    @@ -207,13 +208,11 @@
  • buildingmotif.ingresses.bacnet
  • buildingmotif.ingresses.base
  • buildingmotif.ingresses.brick
  • -
  • buildingmotif.ingresses.csvingress
  • -
  • buildingmotif.ingresses.naming_convention
  • +
  • buildingmotif.ingresses.csv
  • buildingmotif.ingresses.template
  • buildingmotif.ingresses.xlsx
  • -
  • buildingmotif.label_parsing
  • buildingmotif.libraries
  • buildingmotif.namespaces
  • buildingmotif.schemas
  • @@ -847,8 +846,8 @@

    Saving and Organizing Templates - + +