diff --git a/README.md b/README.md index 44178070f..ec988f4ca 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ [![NPM Version](https://img.shields.io/npm/v/solid-server.svg?style=flat-square)](https://npm.im/solid-server) [![Gitter chat](https://img.shields.io/badge/gitter-join%20chat%20%E2%86%92-brightgreen.svg?style=flat-square)](http://gitter.im/solid/node-solid-server) + > [Solid](https://github.com/solid) server in [NodeJS](https://nodejs.org/) `solid-server` lets you run a Solid server on top of the file-system. You can use it as a [command-line tool](https://github.com/solid/node-solid-server/blob/master/README.md#command-line-usage) (easy) or as a [library](https://github.com/solid/node-solid-server/blob/master/README.md#library-usage) (advanced). diff --git a/bin/solid-test b/bin/solid-test index aad096e73..2d3f5f692 100755 --- a/bin/solid-test +++ b/bin/solid-test @@ -3,9 +3,15 @@ COMMAND=$1 ADD_FLAGS= shift +# +export DEBUG="solid:*" +#export DEBUG="*" + +export NODE_OPTIONS="--tls-max-v1.2 " + # Disable rejectUnauthorized when starting the server if [ "$COMMAND" == "start" ]; then - ADD_FLAGS="--no-reject-unauthorized" + ADD_FLAGS="--no-reject-unauthorized " export NODE_TLS_REJECT_UNAUTHORIZED=0 fi diff --git a/common/css/minus.png b/common/css/minus.png new file mode 100644 index 000000000..9e3dfc013 Binary files /dev/null and b/common/css/minus.png differ diff --git a/common/css/plus.png b/common/css/plus.png new file mode 100644 index 000000000..0fb3529e0 Binary files /dev/null and b/common/css/plus.png differ diff --git a/common/css/tabbedtab.css b/common/css/tabbedtab.css new file mode 100644 index 000000000..a06de4c93 --- /dev/null +++ b/common/css/tabbedtab.css @@ -0,0 +1,1080 @@ +/* Some style for the tabulator +** +** +** Do NOT use physical measures, but font-relative measures. +** 2006-10-21 timbl cconverted px to em at approx 1em = 12px +** +*/ + +/* If you need style in a pane, insert it in the dom (2016)*/ + +/* @import url("js/panes/microblogPane/mbStyle.css"); /*microblog pane */ +/* @import url("js/panes/social/style.css"); /*social pane*/ +/* @import url("chrome://tabulator/content/js/panes/microblogPane/mbStyle.css"); /*microblog pane*/ +/* @import url("chrome://tabulator/content/js/panes/social/style.css"); /*social pane*/ + +/* I couldn't find the code for the collapse image. this is a quick work around +to make the collapsing easier to use ( the triangles dont jump 20 pixels). ~cm2 +*/ +img[title="Hide details."]{ + float:left; +} +body {background-color: white ; font-family: sans-serif} /* was: font-size: 80%; */ + +.warning { color: red; } +.selected {background-color: #8F3} + +.licOkay {background-color: #dfd} + +/* +** other potential colors for CC: +** #C4FF55. "faded" version of CC +** #486d00, actual CC +** #ccff99, mit page color +*/ + +strong { font-size: 120%; color: #333 } +div.Outliner { margin-top: 2em; padding: 0.8em; } +form#TabulateForm { padding: 0.8em } +div#addViewForm { padding: 0.8em } +iframe { background: white } + +/* Map */ + +img.pic { max-height: 20em } + +/* Sources */ + +.fetched { background-color: #eeffee } +.requested { background-color: yellow } +.failed { color: red; background-color: white } +.unparseable { background-color: #ffcc00; } + +pre#status { font-size: 100% } + +/* Panes */ +/* +td.internal { } + +/* Moved into code: +div.internalPane { background-color: #ddddff; padding: 0.5em; + -moz-border-radius: 1em; border-radius: .4em; } + +div.instancePane { + border-top: solid 1px #777; border-bottom: solid 1px #777; + margin-top: 0.5em; margin-bottom: 0.5em } +*/ +/* ***************** For the Justification UI Panes **********/ + +div.container { + border-top: solid 5px black; + border-left: solid 5px black; + border-bottom: solid 5px black; + border-right: solid 5px black; + margin-top: 0.5em; + margin-bottom: 0.5em; + -moz-border-radius: 0.75em; +} +/* +div.nonCompliantPane { + border-top: solid 1px red; + border-left: solid 1px red; + border-bottom: solid 1px red; + border-right: solid 1px red; + padding: 0.5em; + background-color: #fbf0f7; + margin-top: 0.5em; margin-bottom: 0.5em; + -moz-border-radius: 1em; +} + +div.compliantPane { + border-top: solid 1px green; + border-left: solid 1px green; + border-bottom: solid 1px green; + border-right: solid 1px green; + padding: 0.5em; + background-color: #def8e0; + margin-top: 0.5em; margin-bottom: 0.5em; + -moz-border-radius: 1em; +} +*/ +div.justification { + font-size: 100%; + padding: 0 5px; + width: 80%; /* @@ Don't use pixels -- use em */ + background-color: white; + margin-top: 0.5em; margin-bottom: 0.5em; +} + + +div.description { + font-size: 120%; + border-top: solid 1px yellow; + border-left: solid 1px yellow; + border-bottom: solid 1px yellow; + border-right: solid 1px yellow; + padding: 15px; + width: 100%; + background-color: #ffffdd; + margin-top: 0.5em; + margin-bottom: 0.5em; + margin-left: 0.5em; + margin-right: 0.5em; + -moz-border-radius: 0.75em; + position:relative; + left:0% +} + +div.premises { + font-size: 100%; + border-top: solid 1px #3399ff; + border-left: solid 1px #3399ff; + border-bottom: solid 1px #3399ff; + border-right: solid 1px #3399ff; + padding: 0.5px; + width: 100%; + background-color: #ccccff; + margin-top: 0.5em; + margin-bottom: 0.5em; + margin-left: 0.5em; + margin-right: 0.5em; + -moz-border-radius: 0.75em; + position:relative; + left:0% /*May be we could shift the left margin a bit?*/ +} + +/* ***************** Social Pane **********/ + +div.socialPane { + border-top: solid 1px #777; border-bottom: solid 1px #777; + padding-top: 0.5em; padding-bottom: 0.5em; + margin: 0 } + +img.foafPic { width: 100% ; border: none; margin: 0; padding: 0; + /*float:right; */} + + +div.mildNotice { + border: dashed 0.1em #777; margin: 1em; padding: 1em; + width: 80%; /* float: right; */ + background-color: #ffe; } + +.friendBox { /* height: 4em; */ border-top: solid 0.01em #ccc; margin: 0; padding: 0.3em; + /* float: left; */} +.friendBoxBig { height: 20em; border-top: solid 0.01em #202; /* float: left; */} + +.socialPane a { color: #3B5998; text-decoration: none; font-weight: bold} +.socialPane a:link { color: #3B5998; text-decoration: none; font-weight: bold} +.socialPane a:visited { color: #3B5998; text-decoration: none; font-weight: bold} +.socialPane a:hover { color: #3B5998; text-decoration: underline; font-weight: bold} +.socialPane a:active { color: #888; text-decoration: none; } + +img.foafThumb { height: 3em ; border: 0px; margin: 0.1em; padding: 0.1em; + vertical-align: middle; + } /* Thumbnail of a fiend etc */ + +.friendBox .confirmed { font-weight: bold; } + +table.inputForm { font-size: 100% } + +.mainBlock { + background: #fff; + color: #000; + float: left; + width: 46%; + margin: 0; + border-left: 1px solid #ccc; + border-right: 1px solid #ccc; + border-bottom: 1px solid #ccc; + padding: 0; +} + +.navBlock { + background-color: #eee; + float: left; + width: 25%; + border: 0; + padding: 0.5em; + margin: 0; +} + +.navBlock .navSection { + border: solid 0.05em gray; + padding: 0.5em; + -moz-border-radius: 0.5em; /* CSS3: border-radius: .4em; */ +} + +div.socialPane h2 { color: #202 } +div.socialPane h3 { color: #202 } + +div.social_linkButton { + width: 80%; + background-color: #fff; + border: solid 0.05em #ccc; + margin-top: 0.1em; margin-bottom: 0.1em; + padding: 0.1em; + text-align: center; +} + +/* For question-and-answer stuff for new web id but quite reusable. +*/ + .answer { font-style: italic; color: #00c; text-decoration: underline; } + .tip { font-style: normal; color: #333; margin: 1em;} + .task { font-style: normal; color: #333; margin: 1em; + background-color: #ffe; padding: 1em; + -moz-border-radius: 1em; /* CSS3: border-radius: 1em; */ + } + .success {background-color: #efe } + .failure {background-color: white ; border: 0.5em red} + div.unknown { display:none } + div.yes > div.negative { display: none } + div.no > div.affirmative { display: none } + +/******************* Exception Pane ******** +** +** A pane created when the loading of a pane +** throws an exception +**/ + +div.exceptionPane pre { background-color: #fee; } + + + +/******************* Category Pane *********/ + +.categoryPane a { color: #3B5998; text-decoration: none; font-weight: bold} +.categoryPane a:link { color: #3B5998; text-decoration: none; font-weight: bold} +.categoryPane a:visited { color: #3B5998; text-decoration: none; font-weight: bold} +.categoryPane a:hover { color: #3B5998; text-decoration: underline; font-weight: bold} +.categoryPane a:active { color: #888; text-decoration: none; } + +.categoryBottomClass { background-color: #efe ; border: 0.1em solid green } + +.categoryTable { padding-left: 2em;} +.categoryPane { background-color: #f8fff8; padding: 0.5em; + border-width: 0.1em; border-color: #777777; + -moz-border-radius: 1em; /* CSS3: border-radius: .4em; */ } + +.categoryPane a.categoryWhy { color: #ddd} +.categoryPane a.categoryWhy:link { color: #ddd; text-decoration: none; font-weight: bold} +.categoryPane a.categoryWhy:visited { color: #ddd; text-decoration: none; font-weight: bold} +.categoryPane a.categoryWhy:hover { color: #3B5998; text-decoration: underline; font-weight: bold} +.categoryPane a.categoryWhy:active { color: #ddd; text-decoration: none; } + +.categoryPane a.categoryWhy { color:grey } +/* a.categoryWhy:hover { color: #3B5998 } */ + + +/******************* PubsPane *********/ + +.pubsPane { + background-color: #F2F6DA; + border-width: 0.1em; + border-color: #777777; + -moz-border-radius: 1em; /* CSS3: border-radius: .4em; */ + padding: 1em; + + text-decoration: none; + font-weight: bold; +} + +.pubsPane h2 { + margin: 0; + padding: 0; +} + +.pubsPane form { + padding-left: 1em; +} + +/*Clear both - start things on individula lines */ +.pubsRow { + margin: 0.5em 3em 0.5em 0em; + clear: both; +} + +/*inputs float right to line up */ +.pubsRow input { + float: right; + width: 20em; + height: 1em; +} +#inpid_book_description { + float: right; + height: 8em; + width: 17em; +} + +.pubsRow button { + float: left; + height: 2em; + padding: 0.5em; + margin: 0.5em; +} + +.hideit +{ + display: none; +} + +.active { + /* display: visible; */ +} + +.submitRow { + clear: both; + height: 5em; +} + +.submitRow button { + width: 7em; + height: 100%; +} + +#buttonid { + display: none; +} + +#buttonid.active{ + display: inline; +} + + + + +/******************* CV Pane *****************/ + +.CVclass { + background-color: LightSkyBlue; +} + +/******************* Data Content Pane *****************/ + +div.dataContentPane { + border-top: solid 1px black; + border-left: solid 1px black; + border-bottom: solid 1px #777; + border-right: solid 1px #777; + padding: 0.5em; /* color: #404; */ + margin-top: 0.5em; margin-bottom: 0.5em; +} + +.nestedFormula { + border-top: solid 1px black; + border-left: solid 1px black; + border-bottom: solid 1px #777; + border-right: solid 1px #777; + padding: 0.5em; + -moz-border-radius: 0.5em; +} + +div.dataContentPane td { + padding-left: 0.2em; + padding-top: 0.1em; + padding-right: 0.2em; + padding-bottom: 0.05em; +/* vertical-align: middle; /*@@ Lalana's request*/ + vertical-align: top; /*@@ Tims's request*/ + /* With middel, you can't tell what is with what */ + /* background-color: white; */ + } + +div.dataContentPane tr { + margin-bottom: 0.6em; + padding-top: 1em; + padding-bottom: 1em; + +} + +.dataContentPane a { color: #3B5998; text-decoration: none; font-weight: bold} +.dataContentPane a:link { color: #3B5998; text-decoration: none; font-weight: bold} +.dataContentPane a:visited { color: #3B5998; text-decoration: none; font-weight: bold} +.dataContentPane a:hover { color: #3B5998; text-decoration: underline; font-weight: bold} +.dataContentPane a:active { color: #888; text-decoration: none; } + +.dataContentPane.embeddedText { white-space: pre-wrap;} +.dataContentPane.embeddedXHTML {} + +/* div.dataContentPane a { text-decoration: none; color: #006} /* Only very slightly blue */ +div.dataContentPane td.pred { min-width: 12em } /* Keep aligned with others better */ +div.dataContentPane td.pred a { color: #444 } /* Greyish as form field names have less info value */ + +/* .collectionAsTables {border-right: green 1px; margin: 0.2em;} */ + + + +div.n3Pane { + padding: 1em; + border-top: solid 1px black; + border-left: solid 1px black; + border-bottom: solid 1px #777; + border-right: solid 1px #777; + color: #004; +} + +.imageView { border: 1em white; margin: 1em; } + +.n3Pane pre { font-size: 120%; } +div.n3Pane { } + +.RDFXMLPane pre { font-size: 120%; } +div.RDFXMLPane { } + +div.RDFXMLPane { + padding: 1em; + border-top: solid 2px black; + border-left: solid 2px black; + border-bottom: solid 2px #777; + border-right: solid 2px #777; + color: #440; +} + +/* Generic things useful anywhere */ + + +img.hideTillHover { + visibility:hidden; +} +img.hideTillHover:hover { + visibility:visible; +} +.hideTillHover img{ + visibility:hidden; +} +.hideTillHover:hover img { + visibility:visible; +} +.hideTillHover a{ + visibility:hidden; +} +.hideTillHover:hover a { + visibility:visible; +} +.hoverControl .hoverControlHide{ + visibility:hidden; +} +.hoverControl:hover .hoverControlHide { + visibility:visible; +} + + +/* Pane icons: */ + + +.hoverControl .paneShown{ border-radius: 0.5em; + border-top: solid #222 1px; + border-left: solid #222 0.1em; border-bottom: solid #eee 0.1em; + border-right: solid #eee 0.1em; + margin-left: 1em; padding: 3px; + background-color: #ffd; + visibility: hidden;} + +.hoverControl:hover .paneShown{ border-radius: 0.5em; + border-top: solid #222 1px; + border-left: solid #222 0.1em; border-bottom: solid #eee 0.1em; + border-right: solid #eee 0.1em; + margin-left: 1em; padding: 3px; + background-color: #ffd; + visibility:visible; } + +.paneHidden { border-radius: 0.5em; margin-left: 1em; padding: 3px} + +.hoverControl .paneHidden { -moz-border-radius: 0.5em; margin-left: 1em; padding: 3px; visibility:hidden;} +.hoverControl:hover .paneHidden { -moz-border-radius: 0.5em; margin-left: 1em; padding: 3px; visibility:visible; } + +/* outline object view */ +img.outlineImage { max-height: 20em; max-width: 30em } /* save vertical space */ +/* Compare facebook which only limits width -> lots of tall images! */ + +img.phoneIcon { border: 0; margin-left: 1em} + +table#sources { width: 100% } + +table { border-spacing: 0} + +table { margin: 0em } + +td { font-size: 100%; + border-left: none; + border-top: none; + border-right: none; + border-bottom: none; + margin: 0.2em; +/* border-right: solid purple 0.1em ; + border-bottom: solid purple 0.1em; +*/ + vertical-align: top; +/* display: compact; Causes console errors in ffox */ + } + +td.pred { padding-left: 0.5em } +/*td.optButton { display: none } +tr[parentOfSelected] > td.pred td.optButton { display: block } +*/ + +table.results { width: 100% } + +table.results td { font-size: 100%; + background-color:#fff; + border-left: none; + border-top: none; + border-right: none; + border-bottom: none; + margin: 0.1em; + border-right: solid #777 0.1em ; + border-bottom: solid #777 0.1em; + + vertical-align: top } + + +table.results th { font-size: 100%; + background-color: #ddf; + border-left: none; + border-top: none; + border-right: solid #777 0.1em; + border-bottom: solid #777 0.1em; + margin: 0.3em; + padding-top: 0.5em; padding-right: 0.5em; + border-right: solid #777 0.1em ; + border-bottom: solid #777 0.1em; + + vertical-align: top } + +/* Hide sections of the display. +Collpase not actually in CSS1 except for table row and col. +Supposed to leave layoutunchanged. So we float it too. */ + +.collapse { display: none } +.expand { display: block } + +/* log classes */ +.nrml { color: black; } +.info { color: black; } +.warn { color: black; background-color: #ffd; } +.eror { color: black; background-color: #fdd; } +.mesg { color: green; } +.dbug { color: black; background-color: #ddf;} /* Blue */ + +/* Try to get the icons to flush right in the cell */ + +.sortheader { + color: black; + text-decoration: none; + position: relative; + border:none; /* Jim's commented out */ +} + +.colclose { float: right; color: #aaa } /* Should be 67% transp black */ +.sortarrow { float: left; color: #aaa; border: none;} + + +/* CSS Stuff for tabbed Views.. */ +table.viewTable { + padding: 0; + margin: 0; + border-style: none; + border-width: 0; + height: 40em; + width: 100%; + border-spacing: 0; +} + +div.viewTabs { + background-color: #fff; + padding:0; +} + +div.viewWindows { + width: 100%; + height:100%; + overflow: auto; + margin: 0em; + padding:0em; + border-right: solid #aaa 0.1em; /* was 2px */ + border-left: solid #aaa 0.1em; + border-bottom: solid #aaa 0.1em; + background-color: #ccc; +} + +div.querySelect { + background-color: #ccc; + width:100%; + height:100%; + border-left: solid #aaa 0.1em; + border-bottom: solid #aaa 0.1em; + overflow:auto; + margin: 0em; + padding:0em; +} + +td.viewTableData { + padding: 0em; + margin: 0em; + height:100%; + width:80%; +} + +td.queryTableData { + padding: 0em; + margin: 0em; + border-width: 0em; + height:100%; + width:20%; + border-style:none; +} + +table.viewTable tr { + height: 100%; + margin: 0em; + padding: 0em; + border-style:none; +} + + +a { + color: #3B5998; + text-decoration: none; + cursor: pointer; +} +a.inactive{ + background-color: #eee; + border-right:solid #ddd 0.1em; + border-top:solid #aaa 0.1em; + border-left:solid #aaa 0.1em; + padding-top: 0.3em; + padding-left: 0.8em; + padding-right: 0.8em; + padding-bottom: 0em; + margin-right: 0.1em; + color: #99f; + text-decoration:none; +} + +a.active{ + background-color: #ccc; + border-right:solid #ddd 0.1em; + border-top:solid #aaa 0.1em; + border-left:solid #aaa 0.1em; + padding-top: 0.3em; + padding-left: 0.8em; + padding-right: 0.8em; + padding-bottom:0em; + margin-right:0.1em; + color: #22f; + text-decoration:none; +} + +input.tabQueryName { + border: solid #aaa 0.1em; + width:100%; + padding:0em; +} + +input.delQueryButton { + border:none; + color:#c00; + background-color:#ccc; + cursor:pointer; + padding:0em; +} + +td.checkboxTD { + padding-right:0.5em; +} + +.sourceHighlight { + background-color:yellow; +} + +#MenuBar { + padding: 0.5em; + position: fixed; + top: 0; + bottom: auto; + left: 0; + right: 0; + background-color: #eee; + border: 0.1em solid #aaa; +} + +#TabulatorStatusWidget { + position: fixed; + top: 0; + bottom: auto; + left: auto; + right: 0; +} + +div.mapKeyDiv { + position:relative; + float:right; + margin: 0.3em; + color: #777; + background:#fff; + border:solid #777 0.1em; + padding:0.1em; +} + +span.closeQuerySpan { + float:right; + text-align:right; + height: 0.1em; + overflow:visible; +} + +span.openQuerySpan { + float:left; + overflow:visible; + height:0em; + text-align:left; + position:relative; + top:0em; + z-index:1; +} + +input.textinput{ + width: 100%; + border: none; + font-size:95%; + padding: 0em; + margin: 0; +} + +textarea.textinput{ + border: none; +} + +.pendingedit { + color: #bbb; +} + +td.undetermined{ + color: gray; + font-style: italic; +} + +/*revert back*/ +td.undetermined table{ + color: black; + font-style: normal; +} + +/*color style from http://developer.yahoo.com/yui/docs/module_menu.html*/ +.outlineMenu{ + position:absolute; + /*width:10em;*/ + height:10em; /* Jim's commented out */ + background: #FFFFFF none repeat scroll 0%; + overflow-x: hidden; + overflow-y: auto; + border: 1px solid; + /*padding:.2em;*/ +} +.outlineMenu table{cursor:default;width:100%;text-align:left;padding:5px 5px;} +.outlineMenu div{/*width:6em;*/ overflow:auto; white-space:nowrap;} +.outlineMenu td{color:#654d6c;} +.outlineMenu .activeItem{background: #D1C6DA;} /* @@ Jim's: #f4e8fc; */ +.outlineMenu input{margin: 0.2em;} + +div.bottom-border{ + border: .2em solid transparent; + width: 100%; +} + +div.bottom-border-active{ + cursor: copy; + border: .2em solid; + border-color: rgb(100%,65%,0%); +} + +/* The thing below was for the kenny's orange bar*/ +/* @@@ This is not specific enough +td{ + margin: 0; + padding: 0; +} +*/ + +.deleteIcon { + margin-left: 0.1em; +} + +.deleteCol { + float: right; + display: inline; +} + + .suggestion_list + { + background: white; + border: 1px solid; + padding: 4px; + } + + .suggestion_list ul + { + padding: 0; + margin: 0; + list-style-type: none; + } + + .suggestion_list a + { + text-decoration: none; + color: navy; + } + + .suggestion_list .selected + { + background: navy; + color: white; + } + + .suggestion_list .selected a + { + color: white; + } + + #autosuggest + { + display: none; + } + + + +/* +Start of styles for the photoPane, by albert08@csail.mit.edu +*/ +div.PhotoContentPane { + float: left; + width: 900px; + border: 1px solid #AAAAAA; + padding: 10px; +} +div.PhotoListPanel { + float: left; + padding: 5px ; + border: 1px solid #AAAAAA; + width: 540px; + min-height: 300px; +} +div.PhotoInfoPanel { + float: left; + padding: 10px; + border: 1px solid #AAAAAA; + width: 300px; + text-align: center; + margin: 0px 0px 10px 10px; +} +div.TagMenu { + float: left; + padding: 10px; + border: 1px solid #AAAAAA; + width: 300px; + margin: 0px 0px 0px 10px; + text-align: justify; +} +.tagItem { + float: left; + padding: 2px; + margin: 2px; + cursor:pointer; +} +.tagItem_h { + float: left; + padding: 2px; + margin: 1px; + border: 1px solid #DDBB99; + background-color: #DDEEFF; + cursor:pointer; +} +div.photoItem { + float: left; + width: 100%; +} +div.photoFrame { + border-right: 1px solid #AAAAAA; + width: 260px; + padding: 10px; + margin: 10px 10px 10px 10px; + text-align: center; + float: left; +} +img.photoThumbnail { + border: 1px solid #CCCCCC; + margin: auto auto auto auto; +} +.photoListTags { + width:200px; + margin-top: 10px; + padding-top: 10px; + float: left; +} +.photoList_tag { + background: transparent url(icons/tag_tiny.png) 0px 1px no-repeat; + padding: 1px 0px 1px 18px; + margin-left: 5px; +} +.TagMenu_tag { + background: transparent url(icons/tag_tiny.png) 0px 1px no-repeat; + padding: 1px 0px 1px 18px; + margin-left: 5px; +} +div.photoImportContentPane { + float: left; + padding: 0px; + width: 930px; + border: 1px solid #AAAAAA; + padding: 10px; +} +.photoImportTitle { + font-size: 16px; + font-weight: bold; +} +.photoItemPanel { + width: 260px; + height: 300px; + float: left; + padding: 10px; + border: 1px solid #AAAAAA; + margin: 0px 10px 10px 0px; +} +.photoControlImg { + border: 0px; + cursor: pointer; +} +.photoControlImgInactive { + opacity: .5; + border: 0px; +} +#photoPageInfo { + font-family: Arial; + font-size: 14px; + font-weight: bold; +} +.controls { + clear: both; + text-align: right; + margin: 15px 15px 0px 0px; +} +.controlButton { + margin: 0px 0px 0px 10px; +} +div.TagPane { + min-width: 500px; + border: 1px solid #AAAAAA; + padding: 10px; +} +div.TagSemanticsPanel { + margin: 5px 0px 20px 0px; +} +div.TagSemanticsTable { + width: 100%; + font-family: Arial; + font-size: 12px; +} +div.AddTagSemantics { + margin: 50px 0px 10px 0px; +} +.controlSelect { + margin: 5px; + font-family: Arial; + font-size: 12px; +} +.tagURIInput { + margin: 5px; + font-family: Arial; + font-size: 12px; + width: 300px; +} +div.TagPane hr{ + border: 1px solid #AAAAAA; +} +/* +End of styles for the photoPane +*/ + +/* +Styles for tableViewPane +*/ + +.tableViewPane table th { + background-color: #eee; + color: black; +} + +.tableViewPane table th a { + color: #555; +} + +.tableViewPane table .selectors td { + background-color: #ccc; +} + +.tableViewPane table td { + border-bottom: 1px solid black; + border-right: 1px solid black; +} + +.tableViewPane .toolbar td { + border: none; +} + +.tableViewPane .sparqlButton { + width: 16px; + height: 16px; + border: 1px solid black; +} + +.tableViewPane .sparqlDialog { + position: fixed; + top: 40px; + left: 100px; + width: 600px; + background: white; + border: 1px solid black; + padding: 5px; +} + +.tableViewPane .sparqlDialog textarea { + width: 590px; + height: 250px; +} + +/* These should be the same as with hthe dataContentPane */ +.tableViewPane a { color: #3B5998; text-decoration: none; font-weight: bold} +.tableViewPane a:link { color: #3B5998; text-decoration: none; font-weight: bold} +.tableViewPane a:visited { color: #3B5998; text-decoration: none; font-weight: bold} +.tableViewPane a:hover { color: #3B5998; text-decoration: underline; font-weight: bold} +.tableViewPane a:active { color: #888; text-decoration: none; } + +.tableViewPane tr {border-color: #444; padding-left: 0.3em; padding-right: 0.3em } + + + +/*The 'display explanation' feature*/ +.inquiry { + padding-left: 0.2em; + color: red; + font-family: Arial; + font-weight: bold; +} + +/* +End of styles for tableViewPane +*/ + + + +/* Styles for FORM PANE +** +** Colors from data cotent pane +*/ + +.formPane a { color: #3B5998; text-decoration: none; } +.formPane a:link { color: #3B5998; text-decoration: none; } +.formPane a:visited { color: #3B5998; text-decoration: none; } +.formPane a:hover { color: #3B5998; font-weight: bold} /* was text-decoration: underline; */ +.formPane a:active { color: #888; text-decoration: none; } + +/* ends */ diff --git a/common/css/throbber.gif b/common/css/throbber.gif new file mode 100644 index 000000000..6ec34d417 Binary files /dev/null and b/common/css/throbber.gif differ diff --git a/common/js/forge.min.js b/common/js/forge.min.js new file mode 100644 index 000000000..cba2db35b --- /dev/null +++ b/common/js/forge.min.js @@ -0,0 +1 @@ +(function(e,t){typeof define=="function"&&define.amd?define([],t):e.forge=t()})(this,function(){var e,t,n;return function(r){function v(e,t){return h.call(e,t)}function m(e,t){var n,r,i,s,o,u,a,f,c,h,p,v=t&&t.split("/"),m=l.map,g=m&&m["*"]||{};if(e&&e.charAt(0)===".")if(t){v=v.slice(0,v.length-1),e=e.split("/"),o=e.length-1,l.nodeIdCompat&&d.test(e[o])&&(e[o]=e[o].replace(d,"")),e=v.concat(e);for(c=0;c0&&(e.splice(c-1,2),c-=2)}}e=e.join("/")}else e.indexOf("./")===0&&(e=e.substring(2));if((v||g)&&m){n=e.split("/");for(c=n.length;c>0;c-=1){r=n.slice(0,c).join("/");if(v)for(h=v.length;h>0;h-=1){i=m[v.slice(0,h).join("/")];if(i){i=i[r];if(i){s=i,u=c;break}}}if(s)break;!a&&g&&g[r]&&(a=g[r],f=c)}!s&&a&&(s=a,u=f),s&&(n.splice(0,u,s),e=n.join("/"))}return e}function g(e,t){return function(){return s.apply(r,p.call(arguments,0).concat([e,t]))}}function y(e){return function(t){return m(t,e)}}function b(e){return function(t){a[e]=t}}function w(e){if(v(f,e)){var t=f[e];delete f[e],c[e]=!0,i.apply(r,t)}if(!v(a,e)&&!v(c,e))throw new Error("No "+e);return a[e]}function E(e){var t,n=e?e.indexOf("!"):-1;return n>-1&&(t=e.substring(0,n),e=e.substring(n+1,e.length)),[t,e]}function S(e){return function(){return l&&l.config&&l.config[e]||{}}}var i,s,o,u,a={},f={},l={},c={},h=Object.prototype.hasOwnProperty,p=[].slice,d=/\.js$/;o=function(e,t){var n,r=E(e),i=r[0];return e=r[1],i&&(i=m(i,t),n=w(i)),i?n&&n.normalize?e=n.normalize(e,y(t)):e=m(e,t):(e=m(e,t),r=E(e),i=r[0],e=r[1],i&&(n=w(i))),{f:i?i+"!"+e:e,n:e,pr:i,p:n}},u={require:function(e){return g(e)},exports:function(e){var t=a[e];return typeof t!="undefined"?t:a[e]={}},module:function(e){return{id:e,uri:"",exports:a[e],config:S(e)}}},i=function(e,t,n,i){var s,l,h,p,d,m=[],y=typeof n,E;i=i||e;if(y==="undefined"||y==="function"){t=!t.length&&n.length?["require","exports","module"]:t;for(d=0;d15?(i=Date.now(),u(e)):(n.push(e),n.length===1&&o.setAttribute("a",s=!s))}}t.nextTick=t.setImmediate})(),t.isArray=Array.isArray||function(e){return Object.prototype.toString.call(e)==="[object Array]"},t.isArrayBuffer=function(e){return typeof ArrayBuffer!="undefined"&&e instanceof ArrayBuffer},t.isArrayBufferView=function(e){return e&&t.isArrayBuffer(e.buffer)&&e.byteLength!==undefined},t.ByteBuffer=r,t.ByteStringBuffer=r;var i=4096;t.ByteStringBuffer.prototype._optimizeConstructedString=function(e){this._constructedStringLength+=e,this._constructedStringLength>i&&(this.data.substr(0,1),this._constructedStringLength=0)},t.ByteStringBuffer.prototype.length=function(){return this.data.length-this.read},t.ByteStringBuffer.prototype.isEmpty=function(){return this.length()<=0},t.ByteStringBuffer.prototype.putByte=function(e){return this.putBytes(String.fromCharCode(e))},t.ByteStringBuffer.prototype.fillWithByte=function(e,t){e=String.fromCharCode(e);var n=this.data;while(t>0)t&1&&(n+=e),t>>>=1,t>0&&(e+=e);return this.data=n,this._optimizeConstructedString(t),this},t.ByteStringBuffer.prototype.putBytes=function(e){return this.data+=e,this._optimizeConstructedString(e.length),this},t.ByteStringBuffer.prototype.putString=function(e){return this.putBytes(t.encodeUtf8(e))},t.ByteStringBuffer.prototype.putInt16=function(e){return this.putBytes(String.fromCharCode(e>>8&255)+String.fromCharCode(e&255))},t.ByteStringBuffer.prototype.putInt24=function(e){return this.putBytes(String.fromCharCode(e>>16&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(e&255))},t.ByteStringBuffer.prototype.putInt32=function(e){return this.putBytes(String.fromCharCode(e>>24&255)+String.fromCharCode(e>>16&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(e&255))},t.ByteStringBuffer.prototype.putInt16Le=function(e){return this.putBytes(String.fromCharCode(e&255)+String.fromCharCode(e>>8&255))},t.ByteStringBuffer.prototype.putInt24Le=function(e){return this.putBytes(String.fromCharCode(e&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(e>>16&255))},t.ByteStringBuffer.prototype.putInt32Le=function(e){return this.putBytes(String.fromCharCode(e&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(e>>16&255)+String.fromCharCode(e>>24&255))},t.ByteStringBuffer.prototype.putInt=function(e,t){n(t);var r="";do t-=8,r+=String.fromCharCode(e>>t&255);while(t>0);return this.putBytes(r)},t.ByteStringBuffer.prototype.putSignedInt=function(e,t){return e<0&&(e+=2<0);return t},t.ByteStringBuffer.prototype.getSignedInt=function(e){var t=this.getInt(e),n=2<=n&&(t-=n<<1),t},t.ByteStringBuffer.prototype.getBytes=function(e){var t;return e?(e=Math.min(this.length(),e),t=this.data.slice(this.read,this.read+e),this.read+=e):e===0?t="":(t=this.read===0?this.data:this.data.slice(this.read),this.clear()),t},t.ByteStringBuffer.prototype.bytes=function(e){return typeof e=="undefined"?this.data.slice(this.read):this.data.slice(this.read,this.read+e)},t.ByteStringBuffer.prototype.at=function(e){return this.data.charCodeAt(this.read+e)},t.ByteStringBuffer.prototype.setAt=function(e,t){return this.data=this.data.substr(0,this.read+e)+String.fromCharCode(t)+this.data.substr(this.read+e+1),this},t.ByteStringBuffer.prototype.last=function(){return this.data.charCodeAt(this.data.length-1)},t.ByteStringBuffer.prototype.copy=function(){var e=t.createBuffer(this.data);return e.read=this.read,e},t.ByteStringBuffer.prototype.compact=function(){return this.read>0&&(this.data=this.data.slice(this.read),this.read=0),this},t.ByteStringBuffer.prototype.clear=function(){return this.data="",this.read=0,this},t.ByteStringBuffer.prototype.truncate=function(e){var t=Math.max(0,this.length()-e);return this.data=this.data.substr(this.read,t),this.read=0,this},t.ByteStringBuffer.prototype.toHex=function(){var e="";for(var t=this.read;t=e)return this;t=Math.max(t||this.growSize,e);var n=new Uint8Array(this.data.buffer,this.data.byteOffset,this.data.byteLength),r=new Uint8Array(this.length()+t);return r.set(n),this.data=new DataView(r.buffer),this},t.DataBuffer.prototype.putByte=function(e){return this.accommodate(1),this.data.setUint8(this.write++,e),this},t.DataBuffer.prototype.fillWithByte=function(e,t){this.accommodate(t);for(var n=0;n>8&65535),this.data.setInt8(this.write,e>>16&255),this.write+=3,this},t.DataBuffer.prototype.putInt32=function(e){return this.accommodate(4),this.data.setInt32(this.write,e),this.write+=4,this},t.DataBuffer.prototype.putInt16Le=function(e){return this.accommodate(2),this.data.setInt16(this.write,e,!0),this.write+=2,this},t.DataBuffer.prototype.putInt24Le=function(e){return this.accommodate(3),this.data.setInt8(this.write,e>>16&255),this.data.setInt16(this.write,e>>8&65535,!0),this.write+=3,this},t.DataBuffer.prototype.putInt32Le=function(e){return this.accommodate(4),this.data.setInt32(this.write,e,!0),this.write+=4,this},t.DataBuffer.prototype.putInt=function(e,t){n(t),this.accommodate(t/8);do t-=8,this.data.setInt8(this.write++,e>>t&255);while(t>0);return this},t.DataBuffer.prototype.putSignedInt=function(e,t){return n(t),this.accommodate(t/8),e<0&&(e+=2<0);return t},t.DataBuffer.prototype.getSignedInt=function(e){var t=this.getInt(e),n=2<=n&&(t-=n<<1),t},t.DataBuffer.prototype.getBytes=function(e){var t;return e?(e=Math.min(this.length(),e),t=this.data.slice(this.read,this.read+e),this.read+=e):e===0?t="":(t=this.read===0?this.data:this.data.slice(this.read),this.clear()),t},t.DataBuffer.prototype.bytes=function(e){return typeof e=="undefined"?this.data.slice(this.read):this.data.slice(this.read,this.read+e)},t.DataBuffer.prototype.at=function(e){return this.data.getUint8(this.read+e)},t.DataBuffer.prototype.setAt=function(e,t){return this.data.setUint8(e,t),this},t.DataBuffer.prototype.last=function(){return this.data.getUint8(this.write-1)},t.DataBuffer.prototype.copy=function(){return new t.DataBuffer(this)},t.DataBuffer.prototype.compact=function(){if(this.read>0){var e=new Uint8Array(this.data.buffer,this.read),t=new Uint8Array(e.byteLength);t.set(e),this.data=new DataView(t),this.write-=this.read,this.read=0}return this},t.DataBuffer.prototype.clear=function(){return this.data=new DataView(new ArrayBuffer(0)),this.read=this.write=0,this},t.DataBuffer.prototype.truncate=function(e){return this.write=Math.max(0,this.length()-e),this.read=Math.min(this.read,this.write),this},t.DataBuffer.prototype.toHex=function(){var e="";for(var t=this.read;t0)t&1&&(n+=e),t>>>=1,t>0&&(e+=e);return n},t.xorBytes=function(e,t,n){var r="",i="",s="",o=0,u=0;for(;n>0;--n,++o)i=e.charCodeAt(o)^t.charCodeAt(o),u>=10&&(r+=s,s="",u=0),s+=String.fromCharCode(i),++u;return r+=s,r},t.hexToBytes=function(e){var t="",n=0;e.length&!0&&(n=1,t+=String.fromCharCode(parseInt(e[0],16)));for(;n>24&255)+String.fromCharCode(e>>16&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(e&255)};var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",u=[62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,64,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51];t.encode64=function(e,t){var n="",r="",i,s,u,a=0;while(a>2),n+=o.charAt((i&3)<<4|s>>4),isNaN(s)?n+="==":(n+=o.charAt((s&15)<<2|u>>6),n+=isNaN(u)?"=":o.charAt(u&63)),t&&n.length>t&&(r+=n.substr(0,t)+"\r\n",n=n.substr(t));return r+=n,r},t.decode64=function(e){e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");var t="",n,r,i,s,o=0;while(o>4),i!==64&&(t+=String.fromCharCode((r&15)<<4|i>>2),s!==64&&(t+=String.fromCharCode((i&3)<<6|s)));return t},t.encodeUtf8=function(e){return unescape(encodeURIComponent(e))},t.decodeUtf8=function(e){return decodeURIComponent(escape(e))},t.binary={raw:{},hex:{},base64:{}},t.binary.raw.encode=function(e){return String.fromCharCode.apply(null,e)},t.binary.raw.decode=function(e,t,n){var r=t;r||(r=new Uint8Array(e.length)),n=n||0;var i=n;for(var s=0;s>2),n+=o.charAt((i&3)<<4|s>>4),isNaN(s)?n+="==":(n+=o.charAt((s&15)<<2|u>>6),n+=isNaN(u)?"=":o.charAt(u&63)),t&&n.length>t&&(r+=n.substr(0,t)+"\r\n",n=n.substr(t));return r+=n,r},t.binary.base64.decode=function(e,t,n){var r=t;r||(r=new Uint8Array(Math.ceil(e.length/4)*3)),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,""),n=n||0;var i,s,o,a,f=0,l=n;while(f>4,o!==64&&(r[l++]=(s&15)<<4|o>>2,a!==64&&(r[l++]=(o&3)<<6|a));return t?l-n:r.subarray(0,l)},t.text={utf8:{},utf16:{}},t.text.utf8.encode=function(e,n,r){e=t.encodeUtf8(e);var i=n;i||(i=new Uint8Array(e.length)),r=r||0;var s=r;for(var o=0;o0?(s=n[r].substring(0,i),o=n[r].substring(i+1)):(s=n[r],o=null),s in t||(t[s]=[]),!(s in Object.prototype)&&o!==null&&t[s].push(unescape(o))}return t},n;return typeof e=="undefined"?(v===null&&(typeof window!="undefined"&&window.location&&window.location.search?v=t(window.location.search.substring(1)):v={}),n=v):n=t(e),n},t.parseFragment=function(e){var n=e,r="",i=e.indexOf("?");i>0&&(n=e.substring(0,i),r=e.substring(i+1));var s=n.split("/");s.length>0&&s[0]===""&&s.shift();var o=r===""?{}:t.getQueryVariables(r);return{pathString:n,queryString:r,path:s,query:o}},t.makeRequest=function(e){var n=t.parseFragment(e),r={path:n.pathString,query:n.queryString,getPath:function(e){return typeof e=="undefined"?n.path:n.path[e]},getQuery:function(e,t){var r;return typeof e=="undefined"?r=n.query:(r=n.query[e],r&&typeof t!="undefined"&&(r=r[t])),r},getQueryLast:function(e,t){var n,i=r.getQuery(e);return i?n=i[i.length-1]:n=t,n}};return r},t.makeLink=function(e,t,n){e=jQuery.isArray(e)?e.join("/"):e;var r=jQuery.param(t||{});return n=n||"",e+(r.length>0?"?"+r:"")+(n.length>0?"#"+n:"")},t.setPath=function(e,t,n){if(typeof e=="object"&&e!==null){var r=0,i=t.length;while(r0&&s.push(r),o=t.lastIndex;var u=n[0][1];switch(u){case"s":case"o":i");break;case"%":s.push("%");break;default:s.push("<%"+u+"?>")}}return s.push(e.substring(o)),s.join("")},t.formatNumber=function(e,t,n,r){var i=e,s=isNaN(t=Math.abs(t))?2:t,o=n===undefined?",":n,u=r===undefined?".":r,a=i<0?"-":"",f=parseInt(i=Math.abs(+i||0).toFixed(s),10)+"",l=f.length>3?f.length%3:0;return a+(l?f.substr(0,l)+u:"")+f.substr(l).replace(/(\d{3})(?=\d)/g,"$1"+u)+(s?o+Math.abs(i-f).toFixed(s).slice(2):"")},t.formatSize=function(e){return e>=1073741824?e=t.formatNumber(e/1073741824,2,".","")+" GiB":e>=1048576?e=t.formatNumber(e/1048576,2,".","")+" MiB":e>=1024?e=t.formatNumber(e/1024,0)+" KiB":e=t.formatNumber(e,0)+" bytes",e},t.bytesFromIP=function(e){return e.indexOf(".")!==-1?t.bytesFromIPv4(e):e.indexOf(":")!==-1?t.bytesFromIPv6(e):null},t.bytesFromIPv4=function(e){e=e.split(".");if(e.length!==4)return null;var n=t.createBuffer();for(var r=0;rr[i].end-r[i].start&&(i=r.length-1))}n.push(o)}if(r.length>0){var f=r[i];f.end-f.start>0&&(n.splice(f.start,f.end-f.start+1,""),f.start===0&&n.unshift(""),f.end===7&&n.push(""))}return n.join(":")},t.estimateCores=function(e,n){function i(e,u,a){if(u===0){var f=Math.floor(e.reduce(function(e,t){return e+t},0)/e.length);return t.cores=Math.max(1,f),URL.revokeObjectURL(r),n(null,t.cores)}s(a,function(t,n){e.push(o(a,n)),i(e,u-1,a)})}function s(e,t){var n=[],i=[];for(var s=0;su.st&&i.sti.st&&u.st0)return t.cores=navigator.hardwareConcurrency,n(null,t.cores);if(typeof Worker=="undefined")return t.cores=1,n(null,t.cores);if(typeof Blob=="undefined")return t.cores=2,n(null,t.cores);var r=URL.createObjectURL(new Blob(["(",function(){self.addEventListener("message",function(e){var t=Date.now(),n=t+4;while(Date.now()4){var n=t;t=e.util.createBuffer();for(var r=0;r0))return!0;for(var r=0;r0))return!0;for(var r=0;r0)return!1;var n=e.length(),r=e.at(n-1);return r>this.blockSize<<2?!1:(e.truncate(r),!0)},t.cbc=function(e){e=e||{},this.name="CBC",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=new Array(this._ints),this._outBlock=new Array(this._ints)},t.cbc.prototype.start=function(e){if(e.iv===null){if(!this._prev)throw new Error("Invalid IV parameter.");this._iv=this._prev.slice(0)}else{if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=n(e.iv),this._prev=this._iv.slice(0)}},t.cbc.prototype.encrypt=function(e,t,n){if(e.length()0))return!0;for(var r=0;r0))return!0;for(var r=0;r0)return!1;var n=e.length(),r=e.at(n-1);return r>this.blockSize<<2?!1:(e.truncate(r),!0)},t.cfb=function(t){t=t||{},this.name="CFB",this.cipher=t.cipher,this.blockSize=t.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialBlock=new Array(this._ints),this._partialOutput=e.util.createBuffer(),this._partialBytes=0},t.cfb.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=n(e.iv),this._inBlock=this._iv.slice(0),this._partialBytes=0},t.cfb.prototype.encrypt=function(e,t,n){var r=e.length();if(r===0)return!0;this.cipher.encrypt(this._inBlock,this._outBlock);if(this._partialBytes===0&&r>=this.blockSize){for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(var i=0;i0)e.read-=this.blockSize;else for(var i=0;i0&&this._partialOutput.getBytes(this._partialBytes);if(s>0&&!n)return t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(r-this._partialBytes)),this._partialBytes=0},t.cfb.prototype.decrypt=function(e,t,n){var r=e.length();if(r===0)return!0;this.cipher.encrypt(this._inBlock,this._outBlock);if(this._partialBytes===0&&r>=this.blockSize){for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(var i=0;i0)e.read-=this.blockSize;else for(var i=0;i0&&this._partialOutput.getBytes(this._partialBytes);if(s>0&&!n)return t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(r-this._partialBytes)),this._partialBytes=0},t.ofb=function(t){t=t||{},this.name="OFB",this.cipher=t.cipher,this.blockSize=t.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialOutput=e.util.createBuffer(),this._partialBytes=0},t.ofb.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=n(e.iv),this._inBlock=this._iv.slice(0),this._partialBytes=0},t.ofb.prototype.encrypt=function(e,t,n){var r=e.length();if(e.length()===0)return!0;this.cipher.encrypt(this._inBlock,this._outBlock);if(this._partialBytes===0&&r>=this.blockSize){for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(var i=0;i0)e.read-=this.blockSize;else for(var i=0;i0&&this._partialOutput.getBytes(this._partialBytes);if(s>0&&!n)return t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(r-this._partialBytes)),this._partialBytes=0},t.ofb.prototype.decrypt=t.ofb.prototype.encrypt,t.ctr=function(t){t=t||{},this.name="CTR",this.cipher=t.cipher,this.blockSize=t.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialOutput=e.util.createBuffer(),this._partialBytes=0},t.ctr.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=n(e.iv),this._inBlock=this._iv.slice(0),this._partialBytes=0},t.ctr.prototype.encrypt=function(e,t,n){var i=e.length();if(i===0)return!0;this.cipher.encrypt(this._inBlock,this._outBlock);if(this._partialBytes===0&&i>=this.blockSize)for(var s=0;s0&&(o=this.blockSize-o),this._partialOutput.clear();for(var s=0;s0&&(e.read-=this.blockSize),this._partialBytes>0&&this._partialOutput.getBytes(this._partialBytes);if(o>0&&!n)return t.putBytes(this._partialOutput.getBytes(o-this._partialBytes)),this._partialBytes=o,!0;t.putBytes(this._partialOutput.getBytes(i-this._partialBytes)),this._partialBytes=0}r(this._inBlock)},t.ctr.prototype.decrypt=t.ctr.prototype.encrypt,t.gcm=function(t){t=t||{},this.name="GCM",this.cipher=t.cipher,this.blockSize=t.blockSize||16,this._ints=this.blockSize/4,this._inBlock=new Array(this._ints),this._outBlock=new Array(this._ints),this._partialOutput=e.util.createBuffer(),this._partialBytes=0,this._R=3774873600},t.gcm.prototype.start=function(t){if(!("iv"in t))throw new Error("Invalid IV parameter.");var n=e.util.createBuffer(t.iv);this._cipherLength=0;var s;"additionalData"in t?s=e.util.createBuffer(t.additionalData):s=e.util.createBuffer(),"tagLength"in t?this._tagLength=t.tagLength:this._tagLength=128,this._tag=null;if(t.decrypt){this._tag=e.util.createBuffer(t.tag).getBytes();if(this._tag.length!==this._tagLength/8)throw new Error("Authentication tag does not match tag length.")}this._hashBlock=new Array(this._ints),this.tag=null,this._hashSubkey=new Array(this._ints),this.cipher.encrypt([0,0,0,0],this._hashSubkey),this.componentBits=4,this._m=this.generateHashTable(this._hashSubkey,this.componentBits);var o=n.length();if(o===12)this._j0=[n.getInt32(),n.getInt32(),n.getInt32(),1];else{this._j0=[0,0,0,0];while(n.length()>0)this._j0=this.ghash(this._hashSubkey,this._j0,[n.getInt32(),n.getInt32(),n.getInt32(),n.getInt32()]);this._j0=this.ghash(this._hashSubkey,this._j0,[0,0].concat(i(o*8)))}this._inBlock=this._j0.slice(0),r(this._inBlock),this._partialBytes=0,s=e.util.createBuffer(s),this._aDataLength=i(s.length()*8);var u=s.length()%this.blockSize;u&&s.fillWithByte(0,this.blockSize-u),this._s=[0,0,0,0];while(s.length()>0)this._s=this.ghash(this._hashSubkey,this._s,[s.getInt32(),s.getInt32(),s.getInt32(),s.getInt32()])},t.gcm.prototype.encrypt=function(e,t,n){var i=e.length();if(i===0)return!0;this.cipher.encrypt(this._inBlock,this._outBlock);if(this._partialBytes===0&&i>=this.blockSize){for(var s=0;s0&&(o=this.blockSize-o),this._partialOutput.clear();for(var s=0;s0&&this._partialOutput.getBytes(this._partialBytes);if(o>0&&!n)return e.read-=this.blockSize,t.putBytes(this._partialOutput.getBytes(o-this._partialBytes)),this._partialBytes=o,!0;t.putBytes(this._partialOutput.getBytes(i-this._partialBytes)),this._partialBytes=0}this._s=this.ghash(this._hashSubkey,this._s,this._outBlock),r(this._inBlock)},t.gcm.prototype.decrypt=function(e,t,n){var i=e.length();if(i0))return!0;this.cipher.encrypt(this._inBlock,this._outBlock),r(this._inBlock),this._hashBlock[0]=e.getInt32(),this._hashBlock[1]=e.getInt32(),this._hashBlock[2]=e.getInt32(),this._hashBlock[3]=e.getInt32(),this._s=this.ghash(this._hashSubkey,this._s,this._hashBlock);for(var s=0;s0;--r)t[r]=e[r]>>>1|(e[r-1]&1)<<31;t[0]=e[0]>>>1,n&&(t[0]^=this._R)},t.gcm.prototype.tableMultiply=function(e){var t=[0,0,0,0];for(var n=0;n<32;++n){var r=n/8|0,i=e[r]>>>(7-n%8)*4&15,s=this._m[n][i];t[0]^=s[0],t[1]^=s[1],t[2]^=s[2],t[3]^=s[3]}return t},t.gcm.prototype.ghash=function(e,t,n){return t[0]^=n[0],t[1]^=n[1],t[2]^=n[2],t[3]^=n[3],this.tableMultiply(t)},t.gcm.prototype.generateHashTable=function(e,t){var n=8/t,r=4*n,i=16*n,s=new Array(i);for(var o=0;o>>1,i=new Array(n);i[r]=e.slice(0);var s=r>>>1;while(s>0)this.pow(i[2*s],i[s]=[]),s>>=1;s=2;while(s>8^p&255^99,i[r]=p,s[p]=r,d=e[p],l=e[r],c=e[l],h=e[c],v=d<<24^p<<16^p<<8^(p^d),m=(l^c^h)<<24^(r^h)<<16^(r^c^h)<<8^(r^l^h);for(var g=0;g<4;++g)u[g][r]=v,a[g][p]=m,v=v<<24|v>>>8,m=m<<24|m>>>8;r===0?r=f=1:(r=l^e[e[e[l^h]]],f^=e[e[f]])}}function l(e,t){var n=e.slice(0),s,u=1,f=n.length,l=f+6+1,c=r*l;for(var h=f;h>>16&255]<<24^i[s>>>8&255]<<16^i[s&255]<<8^i[s>>>24]^o[u]<<24,u++):f>6&&h%f===4&&(s=i[s>>>24]<<24^i[s>>>16&255]<<16^i[s>>>8&255]<<8^i[s&255]),n[h]=n[h-f]^s;if(t){var p,d=a[0],v=a[1],m=a[2],g=a[3],y=n.slice(0);c=n.length;for(var h=0,b=c-r;h>>24]]^v[i[p>>>16&255]]^m[i[p>>>8&255]]^g[i[p&255]];n=y}return n}function c(e,t,n,r){var o=e.length/4-1,f,l,c,h,p;r?(f=a[0],l=a[1],c=a[2],h=a[3],p=s):(f=u[0],l=u[1],c=u[2],h=u[3],p=i);var d,v,m,g,y,b,w;d=t[0]^e[0],v=t[r?3:1]^e[1],m=t[2]^e[2],g=t[r?1:3]^e[3];var E=3;for(var S=1;S>>24]^l[v>>>16&255]^c[m>>>8&255]^h[g&255]^e[++E],b=f[v>>>24]^l[m>>>16&255]^c[g>>>8&255]^h[d&255]^e[++E],w=f[m>>>24]^l[g>>>16&255]^c[d>>>8&255]^h[v&255]^e[++E],g=f[g>>>24]^l[d>>>16&255]^c[v>>>8&255]^h[m&255]^e[++E],d=y,v=b,m=w;n[0]=p[d>>>24]<<24^p[v>>>16&255]<<16^p[m>>>8&255]<<8^p[g&255]^e[++E],n[r?3:1]=p[v>>>24]<<24^p[m>>>16&255]<<16^p[g>>>8&255]<<8^p[d&255]^e[++E],n[2]=p[m>>>24]<<24^p[g>>>16&255]<<16^p[d>>>8&255]<<8^p[v&255]^e[++E],n[r?1:3]=p[g>>>24]<<24^p[d>>>16&255]<<16^p[v>>>8&255]<<8^p[m&255]^e[++E]}function h(t){t=t||{};var n=(t.mode||"CBC").toUpperCase(),r="AES-"+n,i;t.decrypt?i=e.cipher.createDecipher(r,t.key):i=e.cipher.createCipher(r,t.key);var s=i.start;return i.start=function(t,n){var r=null;n instanceof e.util.ByteBuffer&&(r=n,n={}),n=n||{},n.output=r,n.iv=t,s.call(i,n)},i}e.aes=e.aes||{},e.aes.startEncrypting=function(e,t,n,r){var i=h({key:e,output:n,decrypt:!1,mode:r});return i.start(t),i},e.aes.createEncryptionCipher=function(e,t){return h({key:e,output:null,decrypt:!1,mode:t})},e.aes.startDecrypting=function(e,t,n,r){var i=h({key:e,output:n,decrypt:!0,mode:r});return i.start(t),i},e.aes.createDecryptionCipher=function(e,t){return h({key:e,output:null,decrypt:!0,mode:t})},e.aes.Algorithm=function(e,t){n||f();var r=this;r.name=e,r.mode=new t({blockSize:16,cipher:{encrypt:function(e,t){return c(r._w,e,t,!1)},decrypt:function(e,t){return c(r._w,e,t,!0)}}}),r._init=!1},e.aes.Algorithm.prototype.initialize=function(t){if(this._init)return;var n=t.key,r;if(typeof n!="string"||n.length!==16&&n.length!==24&&n.length!==32){if(e.util.isArray(n)&&(n.length===16||n.length===24||n.length===32)){r=n,n=e.util.createBuffer();for(var i=0;i>>=2;for(var i=0;it){var r=new Error("Too few bytes to parse DER.");throw r.available=e.length(),r.remaining=t,r.requested=n,r}}function i(e,s,o,u){var a;n(e,s,2);var f=e.getByte();s--;var l=f&192,c=f&31;a=e.length();var h=r(e,s);s-=a-e.length();if(h!==undefined&&h>s){if(u.strict){var p=new Error("Too few bytes to read ASN.1 value.");throw p.available=e.length(),p.remaining=s,p.requested=h,p}h=s}var d,v,m=(f&32)===32;if(m){d=[];if(h===undefined)for(;;){n(e,s,2);if(e.bytes(2)===String.fromCharCode(0,0)){e.getBytes(2),s-=2;break}a=e.length(),d.push(i(e,s,o+1,u)),s-=a-e.length()}else while(h>0)a=e.length(),d.push(i(e,h,o+1,u)),s-=a-e.length(),h-=a-e.length()}d===undefined&&l===t.Class.UNIVERSAL&&c===t.Type.BITSTRING&&(v=e.bytes(h));if(d===undefined&&u.decodeBitStrings&&l===t.Class.UNIVERSAL&&c===t.Type.BITSTRING&&h>1){var g=e.read,y=s,b=0;c===t.Type.BITSTRING&&(n(e,s,1),b=e.getByte(),s--);if(b===0)try{a=e.length();var w={verbose:u.verbose,strict:!0,decodeBitStrings:!0},E=i(e,s,o+1,w),S=a-e.length();s-=S,c==t.Type.BITSTRING&&S++;var x=E.tagClass;S===h&&(x===t.Class.UNIVERSAL||x===t.Class.CONTEXT_SPECIFIC)&&(d=[E])}catch(T){}d===undefined&&(e.read=g,s=y)}if(d===undefined){if(h===undefined){if(u.strict)throw new Error("Non-constructed ASN.1 object of indefinite length.");h=s}if(c===t.Type.BMPSTRING){d="";for(;h>0;h-=2)n(e,s,2),d+=String.fromCharCode(e.getInt16()),s-=2}else d=e.getBytes(h)}var N=v===undefined?null:{bitStringContents:v};return t.create(l,c,m,d,N)}var t=e.asn1=e.asn1||{};t.Class={UNIVERSAL:0,APPLICATION:64,CONTEXT_SPECIFIC:128,PRIVATE:192},t.Type={NONE:0,BOOLEAN:1,INTEGER:2,BITSTRING:3,OCTETSTRING:4,NULL:5,OID:6,ODESC:7,EXTERNAL:8,REAL:9,ENUMERATED:10,EMBEDDED:11,UTF8:12,ROID:13,SEQUENCE:16,SET:17,PRINTABLESTRING:19,IA5STRING:22,UTCTIME:23,GENERALIZEDTIME:24,BMPSTRING:30},t.create=function(n,r,i,s,o){if(e.util.isArray(s)){var u=[];for(var a=0;a1&&(n.value.charCodeAt(0)===0&&(n.value.charCodeAt(1)&128)===0||n.value.charCodeAt(0)===255&&(n.value.charCodeAt(1)&128)===128)?s.putBytes(n.value.substr(1)):s.putBytes(n.value);r.putByte(i);if(s.length()<=127)r.putByte(s.length()&127);else{var a=s.length(),f="";do f+=String.fromCharCode(a&255),a>>>=8;while(a>0);r.putByte(f.length|128);for(var u=f.length-1;u>=0;--u)r.putByte(f.charCodeAt(u))}return r.putBuffer(s),r},t.oidToDer=function(t){var n=t.split("."),r=e.util.createBuffer();r.putByte(40*parseInt(n[0],10)+parseInt(n[1],10));var i,s,o,u;for(var a=2;a>>=7,i||(u|=128),s.push(u),i=!1;while(o>0);for(var f=s.length-1;f>=0;--f)r.putByte(s[f])}return r},t.derToOid=function(t){var n;typeof t=="string"&&(t=e.util.createBuffer(t));var r=t.getByte();n=Math.floor(r/40)+"."+r%40;var i=0;while(t.length()>0)r=t.getByte(),i<<=7,r&128?i+=r&127:(n+="."+(i+r),i=0);return n},t.utcTimeToDate=function(e){var t=new Date,n=parseInt(e.substr(0,2),10);n=n>=50?1900+n:2e3+n;var r=parseInt(e.substr(2,2),10)-1,i=parseInt(e.substr(4,2),10),s=parseInt(e.substr(6,2),10),o=parseInt(e.substr(8,2),10),u=0;if(e.length>11){var a=e.charAt(10),f=10;a!=="+"&&a!=="-"&&(u=parseInt(e.substr(10,2),10),f+=2)}t.setUTCFullYear(n,r,i),t.setUTCHours(s,o,u,0);if(f){a=e.charAt(f);if(a==="+"||a==="-"){var l=parseInt(e.substr(f+1,2),10),c=parseInt(e.substr(f+4,2),10),h=l*60+c;h*=6e4,a==="+"?t.setTime(+t-h):t.setTime(+t+h)}}return t},t.generalizedTimeToDate=function(e){var t=new Date,n=parseInt(e.substr(0,4),10),r=parseInt(e.substr(4,2),10)-1,i=parseInt(e.substr(6,2),10),s=parseInt(e.substr(8,2),10),o=parseInt(e.substr(10,2),10),u=parseInt(e.substr(12,2),10),a=0,f=0,l=!1;e.charAt(e.length-1)==="Z"&&(l=!0);var c=e.length-5,h=e.charAt(c);if(h==="+"||h==="-"){var p=parseInt(e.substr(c+1,2),10),d=parseInt(e.substr(c+4,2),10);f=p*60+d,f*=6e4,h==="+"&&(f*=-1),l=!0}return e.charAt(14)==="."&&(a=parseFloat(e.substr(14),10)*1e3),l?(t.setUTCFullYear(n,r,i),t.setUTCHours(s,o,u,a),t.setTime(+t+f)):(t.setFullYear(n,r,i),t.setHours(s,o,u,a)),t},t.dateToUtcTime=function(e){if(typeof e=="string")return e;var t="",n=[];n.push((""+e.getUTCFullYear()).substr(2)),n.push(""+(e.getUTCMonth()+1)),n.push(""+e.getUTCDate()),n.push(""+e.getUTCHours()),n.push(""+e.getUTCMinutes()),n.push(""+e.getUTCSeconds());for(var r=0;r=-128&&t<128)return n.putSignedInt(t,8);if(t>=-32768&&t<32768)return n.putSignedInt(t,16);if(t>=-8388608&&t<8388608)return n.putSignedInt(t,24);if(t>=-2147483648&&t<2147483648)return n.putSignedInt(t,32);var r=new Error("Integer too large; max is 32-bits.");throw r.integer=t,r},t.derToInteger=function(t){typeof t=="string"&&(t=e.util.createBuffer(t));var n=t.length()*8;if(n>32)throw new Error("Integer too large; max is 32-bits.");return t.getSignedInt(n)},t.validate=function(n,r,i,s){var o=!1;if(n.tagClass!==r.tagClass&&typeof r.tagClass!="undefined"||n.type!==r.type&&typeof r.type!="undefined")s&&(n.tagClass!==r.tagClass&&s.push("["+r.name+"] "+'Expected tag class "'+r.tagClass+'", got "'+n.tagClass+'"'),n.type!==r.type&&s.push("["+r.name+"] "+'Expected type "'+r.type+'", got "'+n.type+'"'));else if(n.constructed===r.constructed||typeof r.constructed=="undefined"){o=!0;if(r.value&&e.util.isArray(r.value)){var u=0;for(var a=0;o&&a0&&(o+="\n");var u="";for(var a=0;a1?o+="0x"+e.util.bytesToHex(n.value.slice(1)):o+="(none)";if(n.value.length>0){var p=n.value.charCodeAt(0);p==1?o+=" (1 unused bit shown)":p>1&&(o+=" ("+p+" unused bits shown)")}}else n.type===t.Type.OCTETSTRING?(s.test(n.value)||(o+="("+n.value+") "),o+="0x"+e.util.bytesToHex(n.value)):n.type===t.Type.UTF8?o+=e.util.decodeUtf8(n.value):n.type===t.Type.PRINTABLESTRING||n.type===t.Type.IA5String?o+=n.value:s.test(n.value)?o+="0x"+e.util.bytesToHex(n.value):n.value.length===0?o+="[null]":o+=n.value}return o}}var r="asn1";if(typeof n!="function"){if(typeof module!="object"||!module.exports)return typeof forge=="undefined"&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);n=n||{},n.defined=n.defined||{};if(n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o=64){u=e.h0,a=e.h1,f=e.h2,l=e.h3;for(p=0;p<16;++p)t[p]=n.getInt32Le(),c=l^a&(f^l),o=u+c+s[p]+t[p],h=i[p],u=l,l=f,f=a,a+=o<>>32-h;for(;p<32;++p)c=f^l&(a^f),o=u+c+s[p]+t[r[p]],h=i[p],u=l,l=f,f=a,a+=o<>>32-h;for(;p<48;++p)c=a^f^l,o=u+c+s[p]+t[r[p]],h=i[p],u=l,l=f,f=a,a+=o<>>32-h;for(;p<64;++p)c=f^(a|~l),o=u+c+s[p]+t[r[p]],h=i[p],u=l,l=f,f=a,a+=o<>>32-h;e.h0=e.h0+u|0,e.h1=e.h1+a|0,e.h2=e.h2+f|0,e.h3=e.h3+l|0,d-=64}}var t=e.md5=e.md5||{};e.md=e.md||{},e.md.algorithms=e.md.algorithms||{},e.md.md5=e.md.algorithms.md5=t,t.create=function(){o||u();var t=null,r=e.util.createBuffer(),i=new Array(16),s={algorithm:"md5",blockLength:64,digestLength:16,messageLength:0,fullMessageLength:null,messageLengthSize:8};return s.start=function(){s.messageLength=0,s.fullMessageLength=s.messageLength64=[];var n=s.messageLengthSize/4;for(var i=0;i>>0,u>>>0];for(var f=s.fullMessageLength.length-1;f>=0;--f)s.fullMessageLength[f]+=u[1],u[1]=u[0]+(s.fullMessageLength[f]/4294967296>>>0),s.fullMessageLength[f]=s.fullMessageLength[f]>>>0,u[0]=u[1]/4294967296>>>0;return r.putBytes(n),a(t,i,r),(r.read>2048||r.length()===0)&&r.compact(),s},s.digest=function(){var o=e.util.createBuffer();o.putBytes(r.bytes());var u=s.fullMessageLength[s.fullMessageLength.length-1]+s.messageLengthSize,f=u&s.blockLength-1;o.putBytes(n.substr(0,s.blockLength-f));var l,c=0;for(var h=s.fullMessageLength.length-1;h>=0;--h)l=s.fullMessageLength[h]*8+c,c=l/4294967296>>>0,o.putInt32Le(l>>>0);var p={h0:t.h0,h1:t.h1,h2:t.h2,h3:t.h3};a(p,i,o);var d=e.util.createBuffer();return d.putInt32Le(p.h0),d.putInt32Le(p.h1),d.putInt32Le(p.h2),d.putInt32Le(p.h3),d},s};var n=null,r=null,i=null,s=null,o=!1}var r="md5";if(typeof n!="function"){if(typeof module!="object"||!module.exports)return typeof forge=="undefined"&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);n=n||{},n.defined=n.defined||{};if(n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o=64){i=e.h0,s=e.h1,o=e.h2,u=e.h3,a=e.h4;for(l=0;l<16;++l)r=n.getInt32(),t[l]=r,f=u^s&(o^u),r=(i<<5|i>>>27)+f+a+1518500249+r,a=u,u=o,o=(s<<30|s>>>2)>>>0,s=i,i=r;for(;l<20;++l)r=t[l-3]^t[l-8]^t[l-14]^t[l-16],r=r<<1|r>>>31,t[l]=r,f=u^s&(o^u),r=(i<<5|i>>>27)+f+a+1518500249+r,a=u,u=o,o=(s<<30|s>>>2)>>>0,s=i,i=r;for(;l<32;++l)r=t[l-3]^t[l-8]^t[l-14]^t[l-16],r=r<<1|r>>>31,t[l]=r,f=s^o^u,r=(i<<5|i>>>27)+f+a+1859775393+r,a=u,u=o,o=(s<<30|s>>>2)>>>0,s=i,i=r;for(;l<40;++l)r=t[l-6]^t[l-16]^t[l-28]^t[l-32],r=r<<2|r>>>30,t[l]=r,f=s^o^u,r=(i<<5|i>>>27)+f+a+1859775393+r,a=u,u=o,o=(s<<30|s>>>2)>>>0,s=i,i=r;for(;l<60;++l)r=t[l-6]^t[l-16]^t[l-28]^t[l-32],r=r<<2|r>>>30,t[l]=r,f=s&o|u&(s^o),r=(i<<5|i>>>27)+f+a+2400959708+r,a=u,u=o,o=(s<<30|s>>>2)>>>0,s=i,i=r;for(;l<80;++l)r=t[l-6]^t[l-16]^t[l-28]^t[l-32],r=r<<2|r>>>30,t[l]=r,f=s^o^u,r=(i<<5|i>>>27)+f+a+3395469782+r,a=u,u=o,o=(s<<30|s>>>2)>>>0,s=i,i=r;e.h0=e.h0+i|0,e.h1=e.h1+s|0,e.h2=e.h2+o|0,e.h3=e.h3+u|0,e.h4=e.h4+a|0,c-=64}}var t=e.sha1=e.sha1||{};e.md=e.md||{},e.md.algorithms=e.md.algorithms||{},e.md.sha1=e.md.algorithms.sha1=t,t.create=function(){r||i();var t=null,o=e.util.createBuffer(),u=new Array(80),a={algorithm:"sha1",blockLength:64,digestLength:20,messageLength:0,fullMessageLength:null,messageLengthSize:8};return a.start=function(){a.messageLength=0,a.fullMessageLength=a.messageLength64=[];var n=a.messageLengthSize/4;for(var r=0;r>>0,i>>>0];for(var f=a.fullMessageLength.length-1;f>=0;--f)a.fullMessageLength[f]+=i[1],i[1]=i[0]+(a.fullMessageLength[f]/4294967296>>>0),a.fullMessageLength[f]=a.fullMessageLength[f]>>>0,i[0]=i[1]/4294967296>>>0;return o.putBytes(n),s(t,u,o),(o.read>2048||o.length()===0)&&o.compact(),a},a.digest=function(){var r=e.util.createBuffer();r.putBytes(o.bytes());var i=a.fullMessageLength[a.fullMessageLength.length-1]+a.messageLengthSize,f=i&a.blockLength-1;r.putBytes(n.substr(0,a.blockLength-f));var l,c,h=a.fullMessageLength[0]*8;for(var p=0;p>>0,h+=c,r.putInt32(h>>>0),h=l>>>0;r.putInt32(h);var d={h0:t.h0,h1:t.h1,h2:t.h2,h3:t.h3,h4:t.h4};s(d,u,r);var v=e.util.createBuffer();return v.putInt32(d.h0),v.putInt32(d.h1),v.putInt32(d.h2),v.putInt32(d.h3),v.putInt32(d.h4),v},a};var n=null,r=!1}var r="sha1";if(typeof n!="function"){if(typeof module!="object"||!module.exports)return typeof forge=="undefined"&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);n=n||{},n.defined=n.defined||{};if(n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o=64){for(l=0;l<16;++l)t[l]=n.getInt32();for(;l<64;++l)r=t[l-2],r=(r>>>17|r<<15)^(r>>>19|r<<13)^r>>>10,s=t[l-15],s=(s>>>7|s<<25)^(s>>>18|s<<14)^s>>>3,t[l]=r+t[l-7]+s+t[l-16]|0;c=e.h0,h=e.h1,p=e.h2,d=e.h3,v=e.h4,m=e.h5,g=e.h6,y=e.h7;for(l=0;l<64;++l)u=(v>>>6|v<<26)^(v>>>11|v<<21)^(v>>>25|v<<7),a=g^v&(m^g),o=(c>>>2|c<<30)^(c>>>13|c<<19)^(c>>>22|c<<10),f=c&h|p&(c^h),r=y+u+a+i[l]+t[l],s=o+f,y=g,g=m,m=v,v=d+r>>>0,d=p,p=h,h=c,c=r+s>>>0;e.h0=e.h0+c|0,e.h1=e.h1+h|0,e.h2=e.h2+p|0,e.h3=e.h3+d|0,e.h4=e.h4+v|0,e.h5=e.h5+m|0,e.h6=e.h6+g|0,e.h7=e.h7+y|0,b-=64}}var t=e.sha256=e.sha256||{};e.md=e.md||{},e.md.algorithms=e.md.algorithms||{},e.md.sha256=e.md.algorithms.sha256=t,t.create=function(){r||s();var t=null,i=e.util.createBuffer(),u=new Array(64),a={algorithm:"sha256",blockLength:64,digestLength:32,messageLength:0,fullMessageLength:null,messageLengthSize:8};return a.start=function(){a.messageLength=0,a.fullMessageLength=a.messageLength64=[];var n=a.messageLengthSize/4;for(var r=0;r>>0,s>>>0];for(var f=a.fullMessageLength.length-1;f>=0;--f)a.fullMessageLength[f]+=s[1],s[1]=s[0]+(a.fullMessageLength[f]/4294967296>>>0),a.fullMessageLength[f]=a.fullMessageLength[f]>>>0,s[0]=s[1]/4294967296>>>0;return i.putBytes(n),o(t,u,i),(i.read>2048||i.length()===0)&&i.compact(),a},a.digest=function(){var r=e.util.createBuffer();r.putBytes(i.bytes());var s=a.fullMessageLength[a.fullMessageLength.length-1]+a.messageLengthSize,f=s&a.blockLength-1;r.putBytes(n.substr(0,a.blockLength-f));var l,c,h=a.fullMessageLength[0]*8;for(var p=0;p>>0,h+=c,r.putInt32(h>>>0),h=l>>>0;r.putInt32(h);var d={h0:t.h0,h1:t.h1,h2:t.h2,h3:t.h3,h4:t.h4,h5:t.h5,h6:t.h6,h7:t.h7};o(d,u,r);var v=e.util.createBuffer();return v.putInt32(d.h0),v.putInt32(d.h1),v.putInt32(d.h2),v.putInt32(d.h3),v.putInt32(d.h4),v.putInt32(d.h5),v.putInt32(d.h6),v.putInt32(d.h7),v},a};var n=null,r=!1,i=null}var r="sha256";if(typeof n!="function"){if(typeof module!="object"||!module.exports)return typeof forge=="undefined"&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);n=n||{},n.defined=n.defined||{};if(n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o=128){for(_=0;_<16;++_)t[_][0]=n.getInt32()>>>0,t[_][1]=n.getInt32()>>>0;for(;_<80;++_)H=t[_-2],D=H[0],P=H[1],r=((D>>>19|P<<13)^(P>>>29|D<<3)^D>>>6)>>>0,i=((D<<13|P>>>19)^(P<<3|D>>>29)^(D<<26|P>>>6))>>>0,j=t[_-15],D=j[0],P=j[1],o=((D>>>1|P<<31)^(D>>>8|P<<24)^D>>>7)>>>0,u=((D<<31|P>>>1)^(D<<24|P>>>8)^(D<<25|P>>>7))>>>0,B=t[_-7],F=t[_-16],P=i+B[1]+u+F[1],t[_][0]=r+B[0]+o+F[0]+(P/4294967296>>>0)>>>0,t[_][1]=P>>>0;m=e[0][0],g=e[0][1],y=e[1][0],b=e[1][1],w=e[2][0],E=e[2][1],S=e[3][0],x=e[3][1],T=e[4][0],N=e[4][1],C=e[5][0],k=e[5][1],L=e[6][0],A=e[6][1],O=e[7][0],M=e[7][1];for(_=0;_<80;++_)l=((T>>>14|N<<18)^(T>>>18|N<<14)^(N>>>9|T<<23))>>>0,c=((T<<18|N>>>14)^(T<<14|N>>>18)^(N<<23|T>>>9))>>>0,h=(L^T&(C^L))>>>0,p=(A^N&(k^A))>>>0,a=((m>>>28|g<<4)^(g>>>2|m<<30)^(g>>>7|m<<25))>>>0,f=((m<<4|g>>>28)^(g<<30|m>>>2)^(g<<25|m>>>7))>>>0,d=(m&y|w&(m^y))>>>0,v=(g&b|E&(g^b))>>>0,P=M+c+p+s[_][1]+t[_][1],r=O+l+h+s[_][0]+t[_][0]+(P/4294967296>>>0)>>>0,i=P>>>0,P=f+v,o=a+d+(P/4294967296>>>0)>>>0,u=P>>>0,O=L,M=A,L=C,A=k,C=T,k=N,P=x+i,T=S+r+(P/4294967296>>>0)>>>0,N=P>>>0,S=w,x=E,w=y,E=b,y=m,b=g,P=i+u,m=r+o+(P/4294967296>>>0)>>>0,g=P>>>0;P=e[0][1]+g,e[0][0]=e[0][0]+m+(P/4294967296>>>0)>>>0,e[0][1]=P>>>0,P=e[1][1]+b,e[1][0]=e[1][0]+y+(P/4294967296>>>0)>>>0,e[1][1]=P>>>0,P=e[2][1]+E,e[2][0]=e[2][0]+w+(P/4294967296>>>0)>>>0,e[2][1]=P>>>0,P=e[3][1]+x,e[3][0]=e[3][0]+S+(P/4294967296>>>0)>>>0,e[3][1]=P>>>0,P=e[4][1]+N,e[4][0]=e[4][0]+T+(P/4294967296>>>0)>>>0,e[4][1]=P>>>0,P=e[5][1]+k,e[5][0]=e[5][0]+C+(P/4294967296>>>0)>>>0,e[5][1]=P>>>0,P=e[6][1]+A,e[6][0]=e[6][0]+L+(P/4294967296>>>0)>>>0,e[6][1]=P>>>0,P=e[7][1]+M,e[7][0]=e[7][0]+O+(P/4294967296>>>0)>>>0,e[7][1]=P>>>0,I-=128}}var t=e.sha512=e.sha512||{};e.md=e.md||{},e.md.algorithms=e.md.algorithms||{},e.md.sha512=e.md.algorithms.sha512=t;var n=e.sha384=e.sha512.sha384=e.sha512.sha384||{};n.create=function(){return t.create("SHA-384")},e.md.sha384=e.md.algorithms.sha384=n,e.sha512.sha256=e.sha512.sha256||{create:function(){return t.create("SHA-512/256")}},e.md["sha512/256"]=e.md.algorithms["sha512/256"]=e.sha512.sha256,e.sha512.sha224=e.sha512.sha224||{create:function(){return t.create("SHA-512/224")}},e.md["sha512/224"]=e.md.algorithms["sha512/224"]=e.sha512.sha224,t.create=function(t){i||u(),typeof t=="undefined"&&(t="SHA-512");if(t in o){var n=o[t],s=null,f=e.util.createBuffer(),l=new Array(80);for(var c=0;c<80;++c)l[c]=new Array(2);var h={algorithm:t.replace("-","").toLowerCase(),blockLength:128,digestLength:64,messageLength:0,fullMessageLength:null,messageLengthSize:16};return h.start=function(){h.messageLength=0,h.fullMessageLength=h.messageLength128=[];var t=h.messageLengthSize/4;for(var r=0;r>>0,r>>>0];for(var i=h.fullMessageLength.length-1;i>=0;--i)h.fullMessageLength[i]+=r[1],r[1]=r[0]+(h.fullMessageLength[i]/4294967296>>>0),h.fullMessageLength[i]=h.fullMessageLength[i]>>>0,r[0]=r[1]/4294967296>>>0;return f.putBytes(t),a(s,l,f),(f.read>2048||f.length()===0)&&f.compact(),h},h.digest=function(){var n=e.util.createBuffer();n.putBytes(f.bytes());var i=h.fullMessageLength[h.fullMessageLength.length-1]+h.messageLengthSize,o=i&h.blockLength-1;n.putBytes(r.substr(0,h.blockLength-o));var u,c,p=h.fullMessageLength[0]*8;for(var d=0;d>>0,p+=c,n.putInt32(p>>>0),p=u>>>0;n.putInt32(p);var v=new Array(s.length);for(var d=0;dn.blockLength&&(n.start(),n.update(o.bytes()),o=n.digest()),r=e.util.createBuffer(),i=e.util.createBuffer(),f=o.length();for(var a=0;a65&&o!==-1){var u=t[o];u===","?(++o,t=t.substr(0,o)+"\r\n "+t.substr(o)):t=t.substr(0,o)+"\r\n"+u+t.substr(o+1),s=i-o-1,o=-1,++i}else if(t[i]===" "||t[i]===" "||t[i]===",")o=i;return t}function r(e){return e.replace(/^\s+/,"")}var t=e.pem=e.pem||{};t.encode=function(t,r){r=r||{};var i="-----BEGIN "+t.type+"-----\r\n",s;t.procType&&(s={name:"Proc-Type",values:[String(t.procType.version),t.procType.type]},i+=n(s)),t.contentDomain&&(s={name:"Content-Domain",values:[t.contentDomain]},i+=n(s)),t.dekInfo&&(s={name:"DEK-Info",values:[t.dekInfo.algorithm]},t.dekInfo.parameters&&s.values.push(t.dekInfo.parameters),i+=n(s));if(t.headers)for(var o=0;o8?3:1,m=[],g=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],y=0,b;for(var w=0;w>>4^S)&252645135,S^=b,E^=b<<4,b=(S>>>-16^E)&65535,E^=b,S^=b<<-16,b=(E>>>2^S)&858993459,S^=b,E^=b<<2,b=(S>>>-16^E)&65535,E^=b,S^=b<<-16,b=(E>>>1^S)&1431655765,S^=b,E^=b<<1,b=(S>>>8^E)&16711935,E^=b,S^=b<<8,b=(E>>>1^S)&1431655765,S^=b,E^=b<<1,b=E<<8|S>>>20&240,E=S<<24|S<<8&16711680|S>>>8&65280|S>>>24&240,S=b;for(var x=0;x>>26,S=S<<2|S>>>26):(E=E<<1|E>>>27,S=S<<1|S>>>27),E&=-15,S&=-15;var T=t[E>>>28]|n[E>>>24&15]|r[E>>>20&15]|i[E>>>16&15]|s[E>>>12&15]|o[E>>>8&15]|u[E>>>4&15],N=a[S>>>28]|f[S>>>24&15]|l[S>>>20&15]|c[S>>>16&15]|h[S>>>12&15]|p[S>>>8&15]|d[S>>>4&15];b=(N>>>16^T)&65535,m[y++]=T^b,m[y++]=N^b<<16}}return m}function c(e,t,l,c){var h=e.length===32?3:9,p;h===3?p=c?[30,-2,-2]:[0,32,2]:p=c?[94,62,-2,32,64,2,30,-2,-2]:[0,32,2,62,30,-2,64,96,2];var d,v=t[0],m=t[1];d=(v>>>4^m)&252645135,m^=d,v^=d<<4,d=(v>>>16^m)&65535,m^=d,v^=d<<16,d=(m>>>2^v)&858993459,v^=d,m^=d<<2,d=(m>>>8^v)&16711935,v^=d,m^=d<<8,d=(v>>>1^m)&1431655765,m^=d,v^=d<<1,v=v<<1|v>>>31,m=m<<1|m>>>31;for(var g=0;g>>4|m<<28)^e[w+1];d=v,v=m,m=d^(r[E>>>24&63]|s[E>>>16&63]|u[E>>>8&63]|f[E&63]|n[S>>>24&63]|i[S>>>16&63]|o[S>>>8&63]|a[S&63])}d=v,v=m,m=d}v=v>>>1|v<<31,m=m>>>1|m<<31,d=(v>>>1^m)&1431655765,m^=d,v^=d<<1,d=(m>>>8^v)&16711935,v^=d,m^=d<<8,d=(m>>>2^v)&858993459,v^=d,m^=d<<2,d=(v>>>16^m)&65535,m^=d,v^=d<<16,d=(v>>>4^m)&252645135,m^=d,v^=d<<4,l[0]=v,l[1]=m}function h(t){t=t||{};var n=(t.mode||"CBC").toUpperCase(),r="DES-"+n,i;t.decrypt?i=e.cipher.createDecipher(r,t.key):i=e.cipher.createCipher(r,t.key);var s=i.start;return i.start=function(t,n){var r=null;n instanceof e.util.ByteBuffer&&(r=n,n={}),n=n||{},n.output=r,n.iv=t,s.call(i,n)},i}e.des=e.des||{},e.des.startEncrypting=function(e,t,n,r){var i=h({key:e,output:n,decrypt:!1,mode:r||(t===null?"ECB":"CBC")});return i.start(t),i},e.des.createEncryptionCipher=function(e,t){return h({key:e,output:null,decrypt:!1,mode:t})},e.des.startDecrypting=function(e,t,n,r){var i=h({key:e,output:n,decrypt:!0,mode:r||(t===null?"ECB":"CBC")});return i.start(t),i},e.des.createDecryptionCipher=function(e,t){return h({key:e,output:null,decrypt:!0,mode:t})},e.des.Algorithm=function(e,t){var n=this;n.name=e,n.mode=new t({blockSize:8,cipher:{encrypt:function(e,t){return c(n._keys,e,t,!1)},decrypt:function(e,t){return c(n._keys,e,t,!0)}}}),n._init=!1},e.des.Algorithm.prototype.initialize=function(t){if(this._init)return;var n=e.util.createBuffer(t.key);if(this.name.indexOf("3DES")===0&&n.length()!==24)throw new Error("Invalid Triple-DES key size: "+n.length()*8);this._keys=l(n),this._init=!0},t("DES-ECB",e.cipher.modes.ecb),t("DES-CBC",e.cipher.modes.cbc),t("DES-CFB",e.cipher.modes.cfb),t("DES-OFB",e.cipher.modes.ofb),t("DES-CTR",e.cipher.modes.ctr),t("3DES-ECB",e.cipher.modes.ecb),t("3DES-CBC",e.cipher.modes.cbc),t("3DES-CFB",e.cipher.modes.cfb),t("3DES-OFB",e.cipher.modes.ofb),t("3DES-CTR",e.cipher.modes.ctr);var n=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],r=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],i=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],s=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],o=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],u=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],a=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],f=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696]}var r="des";if(typeof n!="function"){if(typeof module!="object"||!module.exports)return typeof forge=="undefined"&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);n=n||{},n.defined=n.defined||{};if(n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;oc)return a(null,d);p.start(null,null),p.update(n),p.update(e.util.int32ToBytes(y)),v=g=p.digest().getBytes(),b=2,E()}function E(){if(b<=s)return p.start(null,null),p.update(g),m=p.digest().getBytes(),v=e.util.xorBytes(v,m,f),g=m,++b,e.util.setImmediate(E);d+=y4||!u||u==="sha1"))return typeof u!="string"&&(u="sha1"),t=new Buffer(t,"binary"),n=new Buffer(n,"binary"),a?i.pbkdf2Sync.length===4?i.pbkdf2(t,n,s,o,function(e,t){if(e)return a(e);a(null,t.toString("binary"))}):i.pbkdf2(t,n,s,o,u,function(e,t){if(e)return a(e);a(null,t.toString("binary"))}):i.pbkdf2Sync.length===4?i.pbkdf2Sync(t,n,s,o).toString("binary"):i.pbkdf2Sync(t,n,s,o,u).toString("binary");if(typeof u=="undefined"||u===null)u=e.md.sha1.create();if(typeof u=="string"){if(!(u in e.md.algorithms))throw new Error("Unknown hash algorithm: "+u);u=e.md[u].create()}var f=u.digestLength;if(o>4294967295*f){var l=new Error("Derived key is too long.");if(a)return a(l);throw l}var c=Math.ceil(o/f),h=o-(c-1)*f,p=e.hmac.create();p.start(u,t);var d="",v,m,g;if(!a){for(var y=1;y<=c;++y){p.start(null,null),p.update(n),p.update(e.util.int32ToBytes(y)),v=g=p.digest().getBytes();for(var b=2;b<=s;++b)p.start(null,null),p.update(g),m=p.digest().getBytes(),v=e.util.xorBytes(v,m,f),g=m;d+=y=32)return f(),e();var t=32-n.pools[0].messageLength<<5;n.seedFile(t,function(t,r){if(t)return e(t);n.collect(r),f(),e()})}function a(){if(n.pools[0].messageLength>=32)return f();var e=32-n.pools[0].messageLength<<5;n.collect(n.seedFileSync(e)),f()}function f(){var e=n.plugin.md.create();e.update(n.pools[0].digest().getBytes()),n.pools[0].start();var t=1;for(var r=1;r<32;++r)t=t===31?2147483648:t<<2,t%n.reseeds===0&&(e.update(n.pools[r].digest().getBytes()),n.pools[r].start());var i=e.digest().getBytes();e.start(),e.update(i);var s=e.digest().getBytes();n.key=n.plugin.formatKey(i),n.seed=n.plugin.formatSeed(s),n.reseeds=n.reseeds===4294967295?0:n.reseeds+1,n.generated=0}function l(t){var n=null;if(typeof window!="undefined"){var r=window.crypto||window.msCrypto;r&&r.getRandomValues&&(n=function(e){return r.getRandomValues(e)})}var i=e.util.createBuffer();if(n)while(i.length()>16),l+=(f&32767)<<16,l+=f>>15,l=(l&2147483647)+(l>>31),h=l&4294967295;for(var u=0;u<3;++u)c=h>>>(u<<3),c^=Math.floor(Math.random()*256),i.putByte(String.fromCharCode(c&255))}}return i.getBytes(t)}var n={plugin:t,key:null,seed:null,time:null,reseeds:0,generated:0},i=t.md,s=new Array(32);for(var o=0;o<32;++o)s[o]=i.create();return n.pools=s,n.pool=0,n.generate=function(t,r){function l(c){if(c)return r(c);if(f.length()>=t)return r(null,f.getBytes(t));n.generated>1048575&&(n.key=null);if(n.key===null)return e.util.nextTick(function(){u(l)});var h=i(n.key,n.seed);n.generated+=h.length,f.putBytes(h),n.key=o(i(n.key,s(n.seed))),n.seed=a(i(n.key,n.seed)),e.util.setImmediate(l)}if(!r)return n.generateSync(t);var i=n.plugin.cipher,s=n.plugin.increment,o=n.plugin.formatKey,a=n.plugin.formatSeed,f=e.util.createBuffer();n.key=null,l()},n.generateSync=function(t){var r=n.plugin.cipher,i=n.plugin.increment,s=n.plugin.formatKey,o=n.plugin.formatSeed;n.key=null;var u=e.util.createBuffer();while(u.length()1048575&&(n.key=null),n.key===null&&a();var f=r(n.key,n.seed);n.generated+=f.length,u.putBytes(f),n.key=s(r(n.key,i(n.seed))),n.seed=o(r(n.key,n.seed))}return u.getBytes(t)},r?(n.seedFile=function(e,t){r.randomBytes(e,function(e,n){if(e)return t(e);t(null,n.toString())})},n.seedFileSync=function(e){return r.randomBytes(e).toString()}):(n.seedFile=function(e,t){try{t(null,l(e))}catch(n){t(n)}},n.seedFileSync=l),n.collect=function(e){var t=e.length;for(var r=0;r>i&255);n.collect(r)},n.registerWorker=function(e){if(e===self)n.seedFile=function(e,t){function n(e){var r=e.data;r.forge&&r.forge.prng&&(self.removeEventListener("message",n),t(r.forge.prng.err,r.forge.prng.bytes))}self.addEventListener("message",n),self.postMessage({forge:{prng:{needed:e}}})};else{var t=function(t){var r=t.data;r.forge&&r.forge.prng&&n.seedFile(r.forge.prng.needed,function(t,n){e.postMessage({forge:{prng:{err:t,bytes:n}}})})};e.addEventListener("message",t)}},n}}var r="prng";if(typeof n!="function"){if(typeof module!="object"||!module.exports)return typeof forge=="undefined"&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);n=n||{},n.defined=n.defined||{};if(n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o>16-t},i=function(e,t){return(e&65535)>>t|e<<16-t&65535};e.rc2=e.rc2||{},e.rc2.expandKey=function(n,r){typeof n=="string"&&(n=e.util.createBuffer(n)),r=r||128;var i=n,s=n.length(),o=r,u=Math.ceil(o/8),a=255>>(o&7),f;for(f=s;f<128;f++)i.putByte(t[i.at(f-1)+i.at(f-s)&255]);i.setAt(128-u,t[i.at(128-u)&a]);for(f=127-u;f>=0;f--)i.setAt(f,t[i.at(f+1)^i.at(f+u)]);return i};var s=function(t,s,o){var u=!1,a=null,f=null,l=null,c,h,p,d,v=[];t=e.rc2.expandKey(t,s);for(p=0;p<64;p++)v.push(t.getInt16Le());o?(c=function(e){for(p=0;p<4;p++)e[p]+=v[d]+(e[(p+3)%4]&e[(p+2)%4])+(~e[(p+3)%4]&e[(p+1)%4]),e[p]=r(e[p],n[p]),d++},h=function(e){for(p=0;p<4;p++)e[p]+=v[e[(p+3)%4]&63]}):(c=function(e){for(p=3;p>=0;p--)e[p]=i(e[p],n[p]),e[p]-=v[d]+(e[(p+3)%4]&e[(p+2)%4])+(~e[(p+3)%4]&e[(p+1)%4]),d--},h=function(e){for(p=3;p>=0;p--)e[p]-=v[e[(p+3)%4]&63]});var m=function(e){var t=[];for(p=0;p<4;p++){var n=a.getInt16Le();l!==null&&(o?n^=l.getInt16Le():l.putInt16Le(n)),t.push(n&65535)}d=o?0:63;for(var r=0;r=8)m([[5,c],[1,h],[6,c],[1,h],[5,c]])},finish:function(e){var t=!0;if(o)if(e)t=e(8,a,!o);else{var n=a.length()===8?8:8-a.length();a.fillWithByte(n,n)}t&&(u=!0,g.update());if(!o){t=a.length()===0;if(t)if(e)t=e(8,f,!o);else{var r=f.length(),i=f.at(r-1);i>r?t=!1:f.truncate(i)}}return t}},g};e.rc2.startEncrypting=function(t,n,r){var i=e.rc2.createEncryptionCipher(t,128);return i.start(n,r),i},e.rc2.createEncryptionCipher=function(e,t){return s(e,t,!0)},e.rc2.startDecrypting=function(t,n,r){var i=e.rc2.createDecryptionCipher(t,128);return i.start(n,r),i},e.rc2.createDecryptionCipher=function(e,t){return s(e,t,!1)}}var r="rc2";if(typeof n!="function"){if(typeof module!="object"||!module.exports)return typeof forge=="undefined"&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);n=n||{},n.defined=n.defined||{};if(n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o=0){var o=t*this.data[e++]+n.data[r]+i;i=Math.floor(o/67108864),n.data[r++]=o&67108863}return i}function u(e,t,n,r,i,s){var o=t&32767,u=t>>15;while(--s>=0){var a=this.data[e]&32767,f=this.data[e++]>>15,l=u*a+f*o;a=o*a+((l&32767)<<15)+n.data[r]+(i&1073741823),i=(a>>>30)+(l>>>15)+u*f+(i>>>30),n.data[r++]=a&1073741823}return i}function a(e,t,n,r,i,s){var o=t&16383,u=t>>14;while(--s>=0){var a=this.data[e]&16383,f=this.data[e++]>>14,l=u*a+f*o;a=o*a+((l&16383)<<14)+n.data[r]+i,i=(a>>28)+(l>>14)+u*f,n.data[r++]=a&268435455}return i}function d(e){return l.charAt(e)}function v(e,t){var n=c[e.charCodeAt(t)];return n==null?-1:n}function m(e){for(var t=this.t-1;t>=0;--t)e.data[t]=this.data[t];e.t=this.t,e.s=this.s}function g(e){this.t=1,this.s=e<0?-1:0,e>0?this.data[0]=e:e<-1?this.data[0]=e+this.DV:this.t=0}function y(e){var t=s();return t.fromInt(e),t}function b(e,t){var n;if(t==16)n=4;else if(t==8)n=3;else if(t==256)n=8;else if(t==2)n=1;else if(t==32)n=5;else{if(t!=4){this.fromRadix(e,t);return}n=2}this.t=0,this.s=0;var r=e.length,s=!1,o=0;while(--r>=0){var u=n==8?e[r]&255:v(e,r);if(u<0){e.charAt(r)=="-"&&(s=!0);continue}s=!1,o==0?this.data[this.t++]=u:o+n>this.DB?(this.data[this.t-1]|=(u&(1<>this.DB-o):this.data[this.t-1]|=u<=this.DB&&(o-=this.DB)}n==8&&(e[0]&128)!=0&&(this.s=-1,o>0&&(this.data[this.t-1]|=(1<0&&this.data[this.t-1]==e)--this.t}function E(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(e==16)t=4;else if(e==8)t=3;else if(e==2)t=1;else if(e==32)t=5;else{if(e!=4)return this.toRadix(e);t=2}var n=(1<0){u>u)>0&&(i=!0,s=d(r));while(o>=0)u>(u+=this.DB-t)):(r=this.data[o]>>(u-=t)&n,u<=0&&(u+=this.DB,--o)),r>0&&(i=!0),i&&(s+=d(r))}return i?s:"0"}function S(){var e=s();return i.ZERO.subTo(this,e),e}function x(){return this.s<0?this.negate():this}function T(e){var t=this.s-e.s;if(t!=0)return t;var n=this.t;t=n-e.t;if(t!=0)return this.s<0?-t:t;while(--n>=0)if((t=this.data[n]-e.data[n])!=0)return t;return 0}function N(e){var t=1,n;return(n=e>>>16)!=0&&(e=n,t+=16),(n=e>>8)!=0&&(e=n,t+=8),(n=e>>4)!=0&&(e=n,t+=4),(n=e>>2)!=0&&(e=n,t+=2),(n=e>>1)!=0&&(e=n,t+=1),t}function C(){return this.t<=0?0:this.DB*(this.t-1)+N(this.data[this.t-1]^this.s&this.DM)}function k(e,t){var n;for(n=this.t-1;n>=0;--n)t.data[n+e]=this.data[n];for(n=e-1;n>=0;--n)t.data[n]=0;t.t=this.t+e,t.s=this.s}function L(e,t){for(var n=e;n=0;--u)t.data[u+s+1]=this.data[u]>>r|o,o=(this.data[u]&i)<=0;--u)t.data[u]=0;t.data[s]=o,t.t=this.t+s+1,t.s=this.s,t.clamp()}function O(e,t){t.s=this.s;var n=Math.floor(e/this.DB);if(n>=this.t){t.t=0;return}var r=e%this.DB,i=this.DB-r,s=(1<>r;for(var o=n+1;o>r;r>0&&(t.data[this.t-n-1]|=(this.s&s)<>=this.DB;if(e.t>=this.DB;r+=this.s}else{r+=this.s;while(n>=this.DB;r-=e.s}t.s=r<0?-1:0,r<-1?t.data[n++]=this.DV+r:r>0&&(t.data[n++]=r),t.t=n,t.clamp()}function _(e,t){var n=this.abs(),r=e.abs(),s=n.t;t.t=s+r.t;while(--s>=0)t.data[s]=0;for(s=0;s=0)e.data[n]=0;for(n=0;n=t.DV&&(e.data[n+t.t]-=t.DV,e.data[n+t.t+1]=1)}e.t>0&&(e.data[e.t-1]+=t.am(n,t.data[n],e,2*n,0,1)),e.s=0,e.clamp()}function P(e,t,n){var r=e.abs();if(r.t<=0)return;var o=this.abs();if(o.t0?(r.lShiftTo(l,u),o.lShiftTo(l,n)):(r.copyTo(u),o.copyTo(n));var c=u.t,h=u.data[c-1];if(h==0)return;var p=h*(1<1?u.data[c-2]>>this.F2:0),d=this.FV/p,v=(1<=0&&(n.data[n.t++]=1,n.subTo(b,n)),i.ONE.dlShiftTo(c,b),b.subTo(u,u);while(u.t=0){var w=n.data[--g]==h?this.DM:Math.floor(n.data[g]*d+(n.data[g-1]+m)*v);if((n.data[g]+=u.am(0,w,n,y,0,c))0&&n.rShiftTo(l,n),a<0&&i.ZERO.subTo(n,n)}function H(e){var t=s();return this.abs().divRemTo(e,null,t),this.s<0&&t.compareTo(i.ZERO)>0&&e.subTo(t,t),t}function B(e){this.m=e}function j(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e}function F(e){return e}function I(e){e.divRemTo(this.m,null,e)}function q(e,t,n){e.multiplyTo(t,n),this.reduce(n)}function R(e,t){e.squareTo(t),this.reduce(t)}function U(){if(this.t<1)return 0;var e=this.data[0];if((e&1)==0)return 0;var t=e&3;return t=t*(2-(e&15)*t)&15,t=t*(2-(e&255)*t)&255,t=t*(2-((e&65535)*t&65535))&65535,t=t*(2-e*t%this.DV)%this.DV,t>0?this.DV-t:-t}function z(e){this.m=e,this.mp=e.invDigit(),this.mpl=this.mp&32767,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(t,t),t}function X(e){var t=s();return e.copyTo(t),this.reduce(t),t}function V(e){while(e.t<=this.mt2)e.data[e.t++]=0;for(var t=0;t>15)*this.mpl&this.um)<<15)&e.DM;n=t+this.m.t,e.data[n]+=this.m.am(0,r,e,t,0,this.m.t);while(e.data[n]>=e.DV)e.data[n]-=e.DV,e.data[++n]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)}function $(e,t){e.squareTo(t),this.reduce(t)}function J(e,t,n){e.multiplyTo(t,n),this.reduce(n)}function K(){return(this.t>0?this.data[0]&1:this.s)==0}function Q(e,t){if(e>4294967295||e<1)return i.ONE;var n=s(),r=s(),o=t.convert(this),u=N(e)-1;o.copyTo(n);while(--u>=0){t.sqrTo(n,r);if((e&1<0)t.mulTo(r,o,n);else{var a=n;n=r,r=a}}return t.revert(n)}function G(e,t){var n;return e<256||t.isEven()?n=new B(t):n=new z(t),this.exp(e,n)}function Y(){var e=s();return this.copyTo(e),e}function Z(){if(this.s<0){if(this.t==1)return this.data[0]-this.DV;if(this.t==0)return-1}else{if(this.t==1)return this.data[0];if(this.t==0)return 0}return(this.data[1]&(1<<32-this.DB)-1)<>24}function tt(){return this.t==0?this.s:this.data[0]<<16>>16}function nt(e){return Math.floor(Math.LN2*this.DB/Math.log(e))}function rt(){return this.s<0?-1:this.t<=0||this.t==1&&this.data[0]<=0?0:1}function it(e){e==null&&(e=10);if(this.signum()==0||e<2||e>36)return"0";var t=this.chunkSize(e),n=Math.pow(e,t),r=y(n),i=s(),o=s(),u="";this.divRemTo(r,i,o);while(i.signum()>0)u=(n+o.intValue()).toString(e).substr(1)+u,i.divRemTo(r,i,o);return o.intValue().toString(e)+u}function st(e,t){this.fromInt(0),t==null&&(t=10);var n=this.chunkSize(t),r=Math.pow(t,n),s=!1,o=0,u=0;for(var a=0;a=n&&(this.dMultiply(r),this.dAddOffset(u,0),o=0,u=0)}o>0&&(this.dMultiply(Math.pow(t,o)),this.dAddOffset(u,0)),s&&i.ZERO.subTo(this,this)}function ot(e,t,n){if("number"==typeof t)if(e<2)this.fromInt(1);else{this.fromNumber(e,n),this.testBit(e-1)||this.bitwiseTo(i.ONE.shiftLeft(e-1),dt,this),this.isEven()&&this.dAddOffset(1,0);while(!this.isProbablePrime(t))this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(i.ONE.shiftLeft(e-1),this)}else{var r=new Array,s=e&7;r.length=(e>>3)+1,t.nextBytes(r),s>0?r[0]&=(1<0){n>n)!=(this.s&this.DM)>>n&&(t[i++]=r|this.s<=0){n<8?(r=(this.data[e]&(1<>(n+=this.DB-8)):(r=this.data[e]>>(n-=8)&255,n<=0&&(n+=this.DB,--e)),(r&128)!=0&&(r|=-256),i==0&&(this.s&128)!=(r&128)&&++i;if(i>0||r!=this.s)t[i++]=r}}return t}function at(e){return this.compareTo(e)==0}function ft(e){return this.compareTo(e)<0?this:e}function lt(e){return this.compareTo(e)>0?this:e}function ct(e,t,n){var r,i,s=Math.min(e.t,this.t);for(r=0;r>=16,t+=16),(e&255)==0&&(e>>=8,t+=8),(e&15)==0&&(e>>=4,t+=4),(e&3)==0&&(e>>=2,t+=2),(e&1)==0&&++t,t}function Tt(){for(var e=0;e=this.t?this.s!=0:(this.data[t]&1<>=this.DB;if(e.t>=this.DB;r+=this.s}else{r+=this.s;while(n>=this.DB;r+=e.s}t.s=r<0?-1:0,r>0?t.data[n++]=r:r<-1&&(t.data[n++]=this.DV+r),t.t=n,t.clamp()}function Dt(e){var t=s();return this.addTo(e,t),t}function Pt(e){var t=s();return this.subTo(e,t),t}function Ht(e){var t=s();return this.multiplyTo(e,t),t}function Bt(e){var t=s();return this.divRemTo(e,t,null),t}function jt(e){var t=s();return this.divRemTo(e,null,t),t}function Ft(e){var t=s(),n=s();return this.divRemTo(e,t,n),new Array(t,n)}function It(e){this.data[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()}function qt(e,t){if(e==0)return;while(this.t<=t)this.data[this.t++]=0;this.data[t]+=e;while(this.data[t]>=this.DV)this.data[t]-=this.DV,++t>=this.t&&(this.data[this.t++]=0),++this.data[t]}function Rt(){}function Ut(e){return e}function zt(e,t,n){e.multiplyTo(t,n)}function Wt(e,t){e.squareTo(t)}function Xt(e){return this.exp(e,new Rt)}function Vt(e,t,n){var r=Math.min(this.t+e.t,t);n.s=0,n.t=r;while(r>0)n.data[--r]=0;var i;for(i=n.t-this.t;r=0)n.data[r]=0;for(r=Math.max(t-this.t,0);r2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=s();return e.copyTo(t),this.reduce(t),t}function Qt(e){return e}function Gt(e){e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);while(e.compareTo(this.r2)<0)e.dAddOffset(1,this.m.t+1);e.subTo(this.r2,e);while(e.compareTo(this.m)>=0)e.subTo(this.m,e)}function Yt(e,t){e.squareTo(t),this.reduce(t)}function Zt(e,t,n){e.multiplyTo(t,n),this.reduce(n)}function en(e,t){var n=e.bitLength(),r,i=y(1),o;if(n<=0)return i;n<18?r=1:n<48?r=3:n<144?r=4:n<768?r=5:r=6,n<8?o=new B(t):t.isEven()?o=new Jt(t):o=new z(t);var u=new Array,a=3,f=r-1,l=(1<1){var c=s();o.sqrTo(u[1],c);while(a<=l)u[a]=s(),o.mulTo(c,u[a-2],u[a]),a+=2}var h=e.t-1,p,d=!0,v=s(),m;n=N(e.data[h])-1;while(h>=0){n>=f?p=e.data[h]>>n-f&l:(p=(e.data[h]&(1<0&&(p|=e.data[h-1]>>this.DB+n-f)),a=r;while((p&1)==0)p>>=1,--a;(n-=a)<0&&(n+=this.DB,--h);if(d)u[p].copyTo(i),d=!1;else{while(a>1)o.sqrTo(i,v),o.sqrTo(v,i),a-=2;a>0?o.sqrTo(i,v):(m=i,i=v,v=m),o.mulTo(v,u[p],i)}while(h>=0&&(e.data[h]&1<0&&(t.rShiftTo(s,t),n.rShiftTo(s,n));while(t.signum()>0)(i=t.getLowestSetBit())>0&&t.rShiftTo(i,t),(i=n.getLowestSetBit())>0&&n.rShiftTo(i,n),t.compareTo(n)>=0?(t.subTo(n,t),t.rShiftTo(1,t)):(n.subTo(t,n),n.rShiftTo(1,n));return s>0&&n.lShiftTo(s,n),n}function nn(e){if(e<=0)return 0;var t=this.DV%e,n=this.s<0?e-1:0;if(this.t>0)if(t==0)n=this.data[0]%e;else for(var r=this.t-1;r>=0;--r)n=(t*n+this.data[r])%e;return n}function rn(e){var t=e.isEven();if(this.isEven()&&t||e.signum()==0)return i.ZERO;var n=e.clone(),r=this.clone(),s=y(1),o=y(0),u=y(0),a=y(1);while(n.signum()!=0){while(n.isEven()){n.rShiftTo(1,n);if(t){if(!s.isEven()||!o.isEven())s.addTo(this,s),o.subTo(e,o);s.rShiftTo(1,s)}else o.isEven()||o.subTo(e,o);o.rShiftTo(1,o)}while(r.isEven()){r.rShiftTo(1,r);if(t){if(!u.isEven()||!a.isEven())u.addTo(this,u),a.subTo(e,a);u.rShiftTo(1,u)}else a.isEven()||a.subTo(e,a);a.rShiftTo(1,a)}n.compareTo(r)>=0?(n.subTo(r,n),t&&s.subTo(u,s),o.subTo(a,o)):(r.subTo(n,r),t&&u.subTo(s,u),a.subTo(o,a))}return r.compareTo(i.ONE)!=0?i.ZERO:a.compareTo(e)>=0?a.subtract(e):a.signum()<0?(a.addTo(e,a),a.signum()<0?a.add(e):a):a}function un(e){var t,n=this.abs();if(n.t==1&&n.data[0]<=sn[sn.length-1]){for(t=0;t=0);var a=o.modPow(r,this);if(a.compareTo(i.ONE)!=0&&a.compareTo(t)!=0){var f=1;while(f++>24&255,o>>16&255,o>>8&255,o&255);r.start(),r.update(t+u),i+=r.digest().getBytes()}return i.substring(0,n)}var t=e.pkcs1=e.pkcs1||{};t.encode_rsa_oaep=function(t,r,i){var s,o,u,a;typeof i=="string"?(s=i,o=arguments[3]||undefined,u=arguments[4]||undefined):i&&(s=i.label||undefined,o=i.seed||undefined,u=i.md||undefined,i.mgf1&&i.mgf1.md&&(a=i.mgf1.md)),u?u.start():u=e.md.sha1.create(),a||(a=u);var f=Math.ceil(t.n.bitLength()/8),l=f-2*u.digestLength-2;if(r.length>l){var c=new Error("RSAES-OAEP input message length is too long.");throw c.length=r.length,c.maxLength=l,c}s||(s=""),u.update(s,"raw");var h=u.digest(),p="",d=l-r.length;for(var v=0;vt&&(o=f(t,n));if(o.isProbablePrime(c))return s(null,o);o.dAddOffset(r[a++%8],0)}while(h<0||+(new Date)-pt&&(o=f(t,r));var d=o.toString(16);i.target.postMessage({hex:d,workLoad:l}),o.dAddOffset(c,0)}a=Math.max(1,a);var e=[];for(var i=0;is-11){var o=new Error("Message is too long for PKCS#1 v1.5 padding.");throw o.length=t.length,o.max=s-11,o}i.putByte(0),i.putByte(r);var u=s-3-t.length,a;if(r===0||r===1){a=r===0?0:255;for(var f=0;f0){var l=0,c=e.random.getBytes(u);for(var f=0;f1){if(o.getByte()!==255){--o.read;break}++f}}else if(a===2){f=0;while(o.length()>1){if(o.getByte()===0){--o.read;break}++f}}var c=o.getByte();if(c!==0||f!==s-3-o.length())throw new Error("Encryption block is invalid.");return o.getBytes()}function p(n,i,s){function u(){a(n.pBits,function(e,t){if(e)return s(e);n.p=t;if(n.q!==null)return f(e,n.q);a(n.qBits,f)})}function a(t,n){e.prime.generateProbablePrime(t,o,n)}function f(e,i){if(e)return s(e);n.q=i;if(n.p.compareTo(n.q)<0){var o=n.p;n.p=n.q,n.q=o}if(n.p.subtract(t.ONE).gcd(n.e).compareTo(t.ONE)!==0){n.p=null,u();return}if(n.q.subtract(t.ONE).gcd(n.e).compareTo(t.ONE)!==0){n.q=null,a(n.qBits,f);return}n.p1=n.p.subtract(t.ONE),n.q1=n.q.subtract(t.ONE),n.phi=n.p1.multiply(n.q1);if(n.phi.gcd(n.e).compareTo(t.ONE)!==0){n.p=n.q=null,u();return}n.n=n.p.multiply(n.q);if(n.n.bitLength()!==n.bits){n.q=null,a(n.qBits,f);return}var l=n.e.modInverse(n.phi);n.keys={privateKey:r.rsa.setPrivateKey(n.n,n.e,l,n.p,n.q,l.mod(n.p1),l.mod(n.q1),n.q.modInverse(n.p)),publicKey:r.rsa.setPublicKey(n.n,n.e)},s(null,n.keys)}typeof i=="function"&&(s=i,i={}),i=i||{};var o={algorithm:{name:i.algorithm||"PRIMEINC",options:{workers:i.workers||2,workLoad:i.workLoad||100,workerScript:i.workerScript}}};"prng"in i&&(o.prng=i.prng),u()}function d(t){var n=t.toString(16);n[0]>="8"&&(n="00"+n);var r=e.util.hexToBytes(n);return r.length>1&&(r.charCodeAt(0)===0&&(r.charCodeAt(1)&128)===0||r.charCodeAt(0)===255&&(r.charCodeAt(1)&128)===128)?r.substr(1):r}function v(e){return e<=100?27:e<=150?18:e<=200?15:e<=250?12:e<=300?9:e<=350?8:e<=400?7:e<=500?6:e<=600?5:e<=800?4:e<=1250?3:2}function m(e){return typeof window!="undefined"&&typeof window.crypto=="object"&&typeof window.crypto.subtle=="object"&&typeof window.crypto.subtle[e]=="function"}function g(e){return typeof window!="undefined"&&typeof window.msCrypto=="object"&&typeof window.msCrypto.subtle=="object"&&typeof window.msCrypto.subtle[e]=="function"}function y(t){var n=e.util.hexToBytes(t.toString(16)),r=new Uint8Array(n.length);for(var i=0;i=0||!s.gcd(r.n).equals(t.ONE));n=n.multiply(s.modPow(r.e,r.n)).mod(r.n);var o=n.mod(r.p).modPow(r.dP,r.p),u=n.mod(r.q).modPow(r.dQ,r.q);while(o.compareTo(u)<0)o=o.add(r.p);var a=o.subtract(u).multiply(r.qInv).mod(r.p).multiply(r.q).add(u);return a=a.multiply(s.modInverse(r.n)).mod(r.n),a};r.rsa.encrypt=function(n,r,i){var s=i,o,u=Math.ceil(r.n.bitLength()/8);i!==!1&&i!==!0?(s=i===2,o=c(n,r,i)):(o=e.util.createBuffer(),o.putBytes(n));var a=new t(o.toHex(),16),f=l(a,r,s),h=f.toString(16),p=e.util.createBuffer(),d=u-Math.ceil(h.length/2);while(d>0)p.putByte(0),--d;return p.putBytes(e.util.hexToBytes(h)),p.getBytes()},r.rsa.decrypt=function(n,r,i,s){var o=Math.ceil(r.n.bitLength()/8);if(n.length!==o){var u=new Error("Encrypted message length is invalid.");throw u.length=n.length,u.expected=o,u}var a=new t(e.util.createBuffer(n).toHex(),16);if(a.compareTo(r.n)>=0)throw new Error("Encrypted message is invalid.");var f=l(a,r,i),c=f.toString(16),p=e.util.createBuffer(),d=o-Math.ceil(c.length/2);while(d>0)p.putByte(0),--d;return p.putBytes(e.util.hexToBytes(c)),s!==!1?h(p.getBytes(),r,i):p.getBytes()},r.rsa.createKeyPairGenerationState=function(n,r,i){typeof n=="string"&&(n=parseInt(n,10)),n=n||2048,i=i||{};var s=i.prng||e.random,o={nextBytes:function(e){var t=s.getBytesSync(e.length);for(var n=0;n>1,pBits:n-(n>>1),pqState:0,num:null,keys:null},a.e.fromInt(a.eInt),a},r.rsa.stepKeyPairGenerationState=function(e,n){"algorithm"in e||(e.algorithm="PRIMEINC");var s=new t(null);s.fromInt(30);var o=0,u=function(e,t){return e|t},a=+(new Date),f,l=0;while(e.keys===null&&(n<=0||lc?e.pqState=0:e.num.isProbablePrime(v(e.num.bitLength()))?++e.pqState:e.num.dAddOffset(i[o++%8],0):e.pqState===2?e.pqState=e.num.subtract(t.ONE).gcd(e.e).compareTo(t.ONE)===0?3:0:e.pqState===3&&(e.pqState=0,e.p===null?e.p=e.num:e.q=e.num,e.p!==null&&e.q!==null&&++e.state,e.num=null)}else if(e.state===1)e.p.compareTo(e.q)<0&&(e.num=e.p,e.p=e.q,e.q=e.num),++e.state;else if(e.state===2)e.p1=e.p.subtract(t.ONE),e.q1=e.q.subtract(t.ONE),e.phi=e.p1.multiply(e.q1),++e.state;else if(e.state===3)e.phi.gcd(e.e).compareTo(t.ONE)===0?++e.state:(e.p=null,e.q=null,e.state=0);else if(e.state===4)e.n=e.p.multiply(e.q),e.n.bitLength()===e.bits?++e.state:(e.q=null,e.state=0);else if(e.state===5){var p=e.e.modInverse(e.phi);e.keys={privateKey:r.rsa.setPrivateKey(e.n,e.e,p,e.p,e.q,p.mod(e.p1),p.mod(e.q1),e.q.modInverse(e.p)),publicKey:r.rsa.setPublicKey(e.n,e.e)}}f=+(new Date),l+=f-a,a=f}return e.keys!==null},r.rsa.generateKeyPair=function(t,i,s,o){arguments.length===1?typeof t=="object"?(s=t,t=undefined):typeof t=="function"&&(o=t,t=undefined):arguments.length===2?typeof t=="number"?typeof i=="function"?(o=i,i=undefined):typeof i!="number"&&(s=i,i=undefined):(s=t,o=i,t=undefined,i=undefined):arguments.length===3&&(typeof i=="number"?typeof s=="function"&&(o=s,s=undefined):(o=s,s=i,i=undefined)),s=s||{},t===undefined&&(t=s.bits||2048),i===undefined&&(i=s.e||65537);if(!e.disableNativeCode&&o&&t>=256&&t<=16384&&(i===65537||i===3)){if(m("generateKey")&&m("exportKey"))return window.crypto.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:t,publicExponent:y(i),hash:{name:"SHA-256"}},!0,["sign","verify"]).then(function(e){return window.crypto.subtle.exportKey("pkcs8",e.privateKey)}).catch(function(e){o(e)}).then(function(t){if(t){var i=r.privateKeyFromAsn1(n.fromDer(e.util.createBuffer(t)));o(null,{privateKey:i,publicKey:r.setRsaPublicKey(i.n,i.e)})}});if(g("generateKey")&&g("exportKey")){var u=window.msCrypto.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:t,publicExponent:y(i),hash:{name:"SHA-256"}},!0,["sign","verify"]);u.oncomplete=function(t){var i=t.target.result,s=window.msCrypto.subtle.exportKey("pkcs8",i.privateKey);s.oncomplete=function(t){var i=t.target.result,s=r.privateKeyFromAsn1(n.fromDer(e.util.createBuffer(i)));o(null,{privateKey:s,publicKey:r.setRsaPublicKey(s.n,s.e)})},s.onerror=function(e){o(e)}},u.onerror=function(e){o(e)};return}}var a=r.rsa.createKeyPairGenerationState(t,i,s);if(!o)return r.rsa.stepKeyPairGenerationState(a,0),a.keys;p(a,s,o)},r.setRsaPublicKey=r.rsa.setPublicKey=function(t,i){var s={n:t,e:i};return s.encrypt=function(t,n,i){typeof n=="string"?n=n.toUpperCase():n===undefined&&(n="RSAES-PKCS1-V1_5");if(n==="RSAES-PKCS1-V1_5")n={encode:function(e,t,n){return c(e,t,2).getBytes()}};else if(n==="RSA-OAEP"||n==="RSAES-OAEP")n={encode:function(t,n){return e.pkcs1.encode_rsa_oaep(n,t,i)}};else if(["RAW","NONE","NULL",null].indexOf(n)!==-1)n={encode:function(e){return e}};else if(typeof n=="string")throw new Error('Unsupported encryption scheme: "'+n+'".');var o=n.encode(t,s,!0);return r.rsa.encrypt(o,s,!0)},s.verify=function(e,t,i){typeof i=="string"?i=i.toUpperCase():i===undefined&&(i="RSASSA-PKCS1-V1_5");if(i==="RSASSA-PKCS1-V1_5")i={verify:function(e,t){t=h(t,s,!0);var r=n.fromDer(t);return e===r.value[1].value}};else if(i==="NONE"||i==="NULL"||i===null)i={verify:function(e,t){return t=h(t,s,!0),e===t}};var o=r.rsa.decrypt(t,s,!0,!1);return i.verify(e,o,s.n.bitLength())},s},r.setRsaPrivateKey=r.rsa.setPrivateKey=function(t,n,i,s,o,u,a,l){var c={n:t,e:n,d:i,p:s,q:o,dP:u,dQ:a,qInv:l};return c.decrypt=function(t,n,i){typeof n=="string"?n=n.toUpperCase():n===undefined&&(n="RSAES-PKCS1-V1_5");var s=r.rsa.decrypt(t,c,!1,!1);if(n==="RSAES-PKCS1-V1_5")n={decode:h};else if(n==="RSA-OAEP"||n==="RSAES-OAEP")n={decode:function(t,n){return e.pkcs1.decode_rsa_oaep(n,t,i)}};else{if(["RAW","NONE","NULL",null].indexOf(n)===-1)throw new Error('Unsupported encryption scheme: "'+n+'".');n={decode:function(e){return e}}}return n.decode(s,c,!1)},c.sign=function(e,t){var n=!1;typeof t=="string"&&(t=t.toUpperCase());if(t===undefined||t==="RSASSA-PKCS1-V1_5")t={encode:f},n=1;else if(t==="NONE"||t==="NULL"||t===null)t={encode:function(){return e}},n=1;var i=t.encode(e,c.n.bitLength());return r.rsa.encrypt(i,c,n)},c},r.wrapRsaPrivateKey=function(e){return n.create(n.Class.UNIVERSAL,n.Type.SEQUENCE,!0,[n.create(n.Class.UNIVERSAL,n.Type.INTEGER,!1,n.integerToDer(0).getBytes()),n.create(n.Class.UNIVERSAL,n.Type.SEQUENCE,!0,[n.create(n.Class.UNIVERSAL,n.Type.OID,!1,n.oidToDer(r.oids.rsaEncryption).getBytes()),n.create(n.Class.UNIVERSAL,n.Type.NULL,!1,"")]),n.create(n.Class.UNIVERSAL,n.Type.OCTETSTRING,!1,n.toDer(e).getBytes())])},r.privateKeyFromAsn1=function(i){var u={},a=[];n.validate(i,s,u,a)&&(i=n.fromDer(e.util.createBuffer(u.privateKey))),u={},a=[];if(!n.validate(i,o,u,a)){var f=new Error("Cannot read private key. ASN.1 object does not contain an RSAPrivateKey.");throw f.errors=a,f}var l,c,h,p,d,v,m,g;return l=e.util.createBuffer(u.privateKeyModulus).toHex(),c=e.util.createBuffer(u.privateKeyPublicExponent).toHex(),h=e.util.createBuffer(u.privateKeyPrivateExponent).toHex(),p=e.util.createBuffer(u.privateKeyPrime1).toHex(),d=e.util.createBuffer(u.privateKeyPrime2).toHex(),v=e.util.createBuffer(u.privateKeyExponent1).toHex(),m=e.util.createBuffer(u.privateKeyExponent2).toHex(),g=e.util.createBuffer(u.privateKeyCoefficient).toHex(),r.setRsaPrivateKey(new t(l,16),new t(c,16),new t(h,16),new t(p,16),new t(d,16),new t(v,16),new t(m,16),new t(g,16))},r.privateKeyToAsn1=r.privateKeyToRSAPrivateKey=function(e){return n.create(n.Class.UNIVERSAL,n.Type.SEQUENCE,!0,[n.create(n.Class.UNIVERSAL,n.Type.INTEGER,!1,n.integerToDer(0).getBytes()),n.create(n.Class.UNIVERSAL,n.Type.INTEGER,!1,d(e.n)),n.create(n.Class.UNIVERSAL,n.Type.INTEGER,!1,d(e.e)),n.create(n.Class.UNIVERSAL,n.Type.INTEGER,!1,d(e.d)),n.create(n.Class.UNIVERSAL,n.Type.INTEGER,!1,d(e.p)),n.create(n.Class.UNIVERSAL,n.Type.INTEGER,!1,d(e.q)),n.create(n.Class.UNIVERSAL,n.Type.INTEGER,!1,d(e.dP)),n.create(n.Class.UNIVERSAL,n.Type.INTEGER,!1,d(e.dQ)),n.create(n.Class.UNIVERSAL,n.Type.INTEGER,!1,d(e.qInv))])},r.publicKeyFromAsn1=function(i){var s={},o=[];if(n.validate(i,a,s,o)){var f=n.derToOid(s.publicKeyOid);if(f!==r.oids.rsaEncryption){var l=new Error("Cannot read public key. Unknown OID.");throw l.oid=f,l}i=s.rsaPublicKey}o=[];if(!n.validate(i,u,s,o)){var l=new Error("Cannot read public key. ASN.1 object does not contain an RSAPublicKey.");throw l.errors=o,l}var c=e.util.createBuffer(s.publicKeyModulus).toHex(),h=e.util.createBuffer(s.publicKeyExponent).toHex();return r.setRsaPublicKey(new t(c,16),new t(h,16))},r.publicKeyToAsn1=r.publicKeyToSubjectPublicKeyInfo=function(e){return n.create(n.Class.UNIVERSAL,n.Type.SEQUENCE,!0,[n.create(n.Class.UNIVERSAL,n.Type.SEQUENCE,!0,[n.create(n.Class.UNIVERSAL,n.Type.OID,!1,n.oidToDer(r.oids.rsaEncryption).getBytes()),n.create(n.Class.UNIVERSAL,n.Type.NULL,!1,"")]),n.create(n.Class.UNIVERSAL,n.Type.BITSTRING,!1,[r.publicKeyToRSAPublicKey(e)])])},r.publicKeyToRSAPublicKey=function(e){return n.create(n.Class.UNIVERSAL,n.Type.SEQUENCE,!0,[n.create(n.Class.UNIVERSAL,n.Type.INTEGER,!1,d(e.n)),n.create(n.Class.UNIVERSAL,n.Type.INTEGER,!1,d(e.e))])}}var r="rsa";if(typeof n!="function"){if(typeof module!="object"||!module.exports)return typeof forge=="undefined"&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);n=n||{},n.defined=n.defined||{};if(n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o=0;a--)A>>=8,A+=N.at(a)+L.at(a),L.setAt(a,A&255);k.putBuffer(L)}w=k,c.putBuffer(x)}return c.truncate(c.length()-s),c},r.pbe.getCipher=function(e,t,n){switch(e){case r.oids.pkcs5PBES2:return r.pbe.getCipherForPBES2(e,t,n);case r.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:case r.oids["pbewithSHAAnd40BitRC2-CBC"]:return r.pbe.getCipherForPKCS12PBE(e,t,n);default:var i=new Error("Cannot read encrypted PBE data block. Unsupported OID.");throw i.oid=e,i.supportedOids=["pkcs5PBES2","pbeWithSHAAnd3-KeyTripleDES-CBC","pbewithSHAAnd40BitRC2-CBC"],i}},r.pbe.getCipherForPBES2=function(t,i,s){var u={},a=[];if(!n.validate(i,o,u,a)){var l=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw l.errors=a,l}t=n.derToOid(u.kdfOid);if(t!==r.oids.pkcs5PBKDF2){var l=new Error("Cannot read encrypted private key. Unsupported key derivation function OID.");throw l.oid=t,l.supportedOids=["pkcs5PBKDF2"],l}t=n.derToOid(u.encOid);if(t!==r.oids["aes128-CBC"]&&t!==r.oids["aes192-CBC"]&&t!==r.oids["aes256-CBC"]&&t!==r.oids["des-EDE3-CBC"]&&t!==r.oids.desCBC){var l=new Error("Cannot read encrypted private key. Unsupported encryption scheme OID.");throw l.oid=t,l.supportedOids=["aes128-CBC","aes192-CBC","aes256-CBC","des-EDE3-CBC","desCBC"],l}var c=u.kdfSalt,h=e.util.createBuffer(u.kdfIterationCount);h=h.getInt(h.length()<<3);var p,d;switch(r.oids[t]){case"aes128-CBC":p=16,d=e.aes.createDecryptionCipher;break;case"aes192-CBC":p=24,d=e.aes.createDecryptionCipher;break;case"aes256-CBC":p=32,d=e.aes.createDecryptionCipher;break;case"des-EDE3-CBC":p=24,d=e.des.createDecryptionCipher;break;case"desCBC":p=8,d=e.des.createDecryptionCipher}var v=f(u.prfOid),m=e.pkcs5.pbkdf2(s,c,h,p,v),g=u.encIv,y=d(m);return y.start(g),y},r.pbe.getCipherForPKCS12PBE=function(t,i,s){var o={},a=[];if(!n.validate(i,u,o,a)){var l=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw l.errors=a,l}var c=e.util.createBuffer(o.salt),h=e.util.createBuffer(o.iterations);h=h.getInt(h.length()<<3);var p,d,v;switch(t){case r.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:p=24,d=8,v=e.des.startDecrypting;break;case r.oids["pbewithSHAAnd40BitRC2-CBC"]:p=5,d=8,v=function(t,n){var r=e.rc2.createDecryptionCipher(t,40);return r.start(n,null),r};break;default:var l=new Error("Cannot read PKCS #12 PBE data block. Unsupported OID.");throw l.oid=t,l}var m=f(o.prfOid),g=r.pbe.generatePkcs12Key(s,c,1,h,p,m);m.start();var y=r.pbe.generatePkcs12Key(s,c,2,h,d,m);return v(g,y)},r.pbe.opensslDeriveBytes=function(t,n,r,i){if(typeof i=="undefined"||i===null)i=e.md.md5.create();n===null&&(n="");var s=[a(i,t+n)];for(var o=16,u=1;o>8*c-l&255;return w=String.fromCharCode(w.charCodeAt(0)&~E)+w.substr(1),w+v+String.fromCharCode(188)},a.verify=function(t,s,u){var a,f=u-1,l=Math.ceil(f/8);s=s.substr(-l);if(l>8*l-f&255;if((h.charCodeAt(0)&d)!==0)throw new Error("Bits beyond keysize not zero as expected.");var v=r.generate(p,c),m="";for(a=0;a2)throw new Error("Cannot read notBefore/notAfter validity times; more than two times were provided in the certificate.");if(m.length<2)throw new Error("Cannot read notBefore/notAfter validity times; they were not provided as either UTCTime or GeneralizedTime.");p.validity.notBefore=m[0],p.validity.notAfter=m[1],p.tbsCertificate=u.tbsCertificate;if(s){p.md=null;if(p.signatureOid in r){var h=r[p.signatureOid];switch(h){case"sha1WithRSAEncryption":p.md=e.md.sha1.create();break;case"md5WithRSAEncryption":p.md=e.md.md5.create();break;case"sha256WithRSAEncryption":p.md=e.md.sha256.create();break;case"sha512WithRSAEncryption":p.md=e.md.sha512.create();break;case"RSASSA-PSS":p.md=e.md.sha256.create()}}if(p.md===null){var f=new Error("Could not compute certificate digest. Unknown signature OID.");throw f.signatureOid=p.signatureOid,f}var g=t.toDer(p.tbsCertificate);p.md.update(g.getBytes())}var y=e.md.sha1.create();p.issuer.getField=function(e){return l(p.issuer,e)},p.issuer.addField=function(e){d([e]),p.issuer.attributes.push(e)},p.issuer.attributes=n.RDNAttributesAsArray(u.certIssuer,y),u.certIssuerUniqueId&&(p.issuer.uniqueId=u.certIssuerUniqueId),p.issuer.hash=y.digest().toHex();var b=e.md.sha1.create();return p.subject.getField=function(e){return l(p.subject,e)},p.subject.addField=function(e){d([e]),p.subject.attributes.push(e)},p.subject.attributes=n.RDNAttributesAsArray(u.certSubject,b),u.certSubjectUniqueId&&(p.subject.uniqueId=u.certSubjectUniqueId),p.subject.hash=b.digest().toHex(),u.certExtensions?p.extensions=n.certificateExtensionsFromAsn1(u.certExtensions):p.extensions=[],p.publicKey=n.publicKeyFromAsn1(u.subjectPublicKeyInfo),p},n.certificateExtensionsFromAsn1=function(e){var t=[];for(var r=0;r1&&(o=s.value.charCodeAt(1),u=s.value.length>2?s.value.charCodeAt(2):0),i.digitalSignature=(o&128)===128,i.nonRepudiation=(o&64)===64,i.keyEncipherment=(o&32)===32,i.dataEncipherment=(o&16)===16,i.keyAgreement=(o&8)===8,i.keyCertSign=(o&4)===4,i.cRLSign=(o&2)===2,i.encipherOnly=(o&1)===1,i.decipherOnly=(u&128)===128}else if(i.name==="basicConstraints"){var s=t.fromDer(i.value);s.value.length>0&&s.value[0].type===t.Type.BOOLEAN?i.cA=s.value[0].value.charCodeAt(0)!==0:i.cA=!1;var a=null;s.value.length>0&&s.value[0].type===t.Type.INTEGER?a=s.value[0].value:s.value.length>1&&(a=s.value[1].value),a!==null&&(i.pathLenConstraint=t.derToInteger(a))}else if(i.name==="extKeyUsage"){var s=t.fromDer(i.value);for(var f=0;f1&&(o=s.value.charCodeAt(1)),i.client=(o&128)===128,i.server=(o&64)===64,i.email=(o&32)===32,i.objsign=(o&16)===16,i.reserved=(o&8)===8,i.sslCA=(o&4)===4,i.emailCA=(o&2)===2,i.objCA=(o&1)===1}else if(i.name==="subjectAltName"||i.name==="issuerAltName"){i.altNames=[];var c,s=t.fromDer(i.value);for(var h=0;h0&&i.value.push(n.certificateExtensionsToAsn1(r.extensions)),i},n.getCertificationRequestInfo=function(e){var r=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.INTEGER,!1,t.integerToDer(e.version).getBytes()),h(e.subject),n.publicKeyToAsn1(e.publicKey),g(e)]);return r},n.distinguishedNameToAsn1=function(e){return h(e)},n.certificateToAsn1=function(e){var r=e.tbsCertificate||n.getTBSCertificate(e);return t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[r,t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(e.signatureOid).getBytes()),m(e.signatureOid,e.signatureParameters)]),t.create(t.Class.UNIVERSAL,t.Type.BITSTRING,!1,String.fromCharCode(0)+e.signature)])},n.certificateExtensionsToAsn1=function(e){var r=t.create(t.Class.CONTEXT_SPECIFIC,3,!0,[]),i=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[]);r.value.push(i);for(var s=0;sl.validity.notAfter)a={message:"Certificate is not valid yet or has expired.",error:n.certificateError.certificate_expired,notBefore:l.validity.notBefore,notAfter:l.validity.notAfter,now:o};if(a===null){c=r[0]||t.getIssuer(l),c===null&&l.isIssuer(l)&&(h=!0,c=l);if(c){var p=c;e.util.isArray(p)||(p=[p]);var d=!1;while(!d&&p.length>0){c=p.shift();try{d=c.verify(l)}catch(v){}}d||(a={message:"Certificate signature is invalid.",error:n.certificateError.bad_certificate})}a===null&&(!c||h)&&!t.hasCertificate(l)&&(a={message:"Certificate is not trusted.",error:n.certificateError.unknown_ca})}a===null&&c&&!l.isIssuer(c)&&(a={message:"Certificate issuer is invalid.",error:n.certificateError.bad_certificate});if(a===null){var m={keyUsage:!0,basicConstraints:!0};for(var g=0;a===null&&gb.pathLenConstraint&&(a={message:"Certificate basicConstraints pathLenConstraint violated.",error:n.certificateError.bad_certificate})}}var S=a===null?!0:a.error,x=i?i(S,f,s):S;if(x!==!0){S===!0&&(a={message:"The application rejected the certificate.",error:n.certificateError.bad_certificate});if(x||x===0)typeof x=="object"&&!e.util.isArray(x)?(x.message&&(a.message=x.message),x.error&&(a.error=x.error)):typeof x=="string"&&(a.error=x);throw a}a=null,u=!1,++f}while(r.length>0);return!0}}var r="x509";if(typeof n!="function"){if(typeof module!="object"||!module.exports)return typeof forge=="undefined"&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);n=n||{},n.defined=n.defined||{};if(n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o=0&&i.push(u)}return i}function l(t){if(t.composed||t.constructed){var n=e.util.createBuffer();for(var r=0;r0&&(f=t.create(t.Class.UNIVERSAL,t.Type.SET,!0,h));var p=[],d=[];s!==null&&(e.util.isArray(s)?d=s:d=[s]);var v=[];for(var m=0;m0){var w=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,v),E=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.oids.data).getBytes()),t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,t.toDer(w).getBytes())])]);p.push(E)}var S=null;if(i!==null){var x=n.wrapRsaPrivateKey(n.privateKeyToAsn1(i));o===null?S=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.oids.keyBag).getBytes()),t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[x]),f]):S=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.oids.pkcs8ShroudedKeyBag).getBytes()),t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[n.encryptPrivateKeyInfo(x,o,u)]),f]);var T=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[S]),N=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.oids.data).getBytes()),t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,t.toDer(T).getBytes())])]);p.push(N)}var C=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,p),k;if(u.useMac){var c=e.md.sha1.create(),L=new e.util.ByteBuffer(e.random.getBytes(u.saltSize)),A=u.count,i=r.generateKey(o,L,3,A,20),O=e.hmac.create();O.start(c,i),O.update(t.toDer(C).getBytes());var M=O.getMac();k=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.oids.sha1).getBytes()),t.create(t.Class.UNIVERSAL,t.Type.NULL,!1,"")]),t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,M.getBytes())]),t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,L.getBytes()),t.create(t.Class.UNIVERSAL,t.Type.INTEGER,!1,t.integerToDer(A).getBytes())])}return t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.INTEGER,!1,t.integerToDer(3).getBytes()),t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.oids.data).getBytes()),t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,t.toDer(C).getBytes())])]),k])},r.generateKey=e.pbe.generatePkcs12Key}var r="pkcs12";if(typeof n!="function"){if(typeof module!="object"||!module.exports)return typeof forge=="undefined"&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);n=n||{},n.defined=n.defined||{};if(n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o>1,u=o+(t.length&1),a=t.substr(0,u),f=t.substr(o,u),l=e.util.createBuffer(),c=e.hmac.create();r=n+r;var h=Math.ceil(i/16),p=Math.ceil(i/20);c.start("MD5",a);var d=e.util.createBuffer();l.putBytes(r);for(var v=0;v0&&(a.queue(e,a.createAlert(e,{level:a.Alert.Level.warning,description:a.Alert.Description.no_renegotiation})),a.flush(e)),e.process()},a.parseHelloMessage=function(t,n,r){var i=null,s=t.entity===a.ConnectionEnd.client;if(r<38)t.error(t,{message:s?"Invalid ServerHello message. Message too short.":"Invalid ClientHello message. Message too short.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.illegal_parameter}});else{var u=n.fragment,f=u.length();i={version:{major:u.getByte(),minor:u.getByte()},random:e.util.createBuffer(u.getBytes(32)),session_id:o(u,1),extensions:[]},s?(i.cipher_suite=u.getBytes(2),i.compression_method=u.getByte()):(i.cipher_suites=o(u,2),i.compression_methods=o(u,1)),f=r-(f-u.length());if(f>0){var l=o(u,2);while(l.length()>0)i.extensions.push({type:[l.getByte(),l.getByte()],data:o(l,2)});if(!s)for(var c=0;c0){var d=p.getByte();if(d!==0)break;t.session.extensions.server_name.serverNameList.push(o(p,2).getBytes())}}}}if(t.session.version)if(i.version.major!==t.session.version.major||i.version.minor!==t.session.version.minor)return t.error(t,{message:"TLS version change is disallowed during renegotiation.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.protocol_version}});if(s)t.session.cipherSuite=a.getCipherSuite(i.cipher_suite);else{var v=e.util.createBuffer(i.cipher_suites.bytes());while(v.length()>0){t.session.cipherSuite=a.getCipherSuite(v.getBytes(2));if(t.session.cipherSuite!==null)break}}if(t.session.cipherSuite===null)return t.error(t,{message:"No cipher suites in common.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.handshake_failure},cipherSuite:e.util.bytesToHex(i.cipher_suite)});s?t.session.compressionMethod=i.compression_method:t.session.compressionMethod=a.CompressionMethod.none}return i},a.createSecurityParameters=function(e,t){var n=e.entity===a.ConnectionEnd.client,r=t.random.bytes(),i=n?e.session.sp.client_random:r,s=n?r:a.createRandom().getBytes();e.session.sp={entity:e.entity,prf_algorithm:a.PRFAlgorithm.tls_prf_sha256,bulk_cipher_algorithm:null,cipher_type:null,enc_key_length:null,block_length:null,fixed_iv_length:null,record_iv_length:null,mac_algorithm:null,mac_length:null,mac_key_length:null,compression_algorithm:e.session.compressionMethod,pre_master_secret:null,master_secret:null,client_random:i,server_random:s}},a.handleServerHello=function(e,t,n){var r=a.parseHelloMessage(e,t,n);if(e.fail)return;if(!(r.version.minor<=e.version.minor))return e.error(e,{message:"Incompatible TLS version.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.protocol_version}});e.version.minor=r.version.minor,e.session.version=e.version;var i=r.session_id.bytes();i.length>0&&i===e.session.id?(e.expect=d,e.session.resuming=!0,e.session.sp.server_random=r.random.bytes()):(e.expect=l,e.session.resuming=!1,a.createSecurityParameters(e,r)),e.session.id=i,e.process()},a.handleClientHello=function(t,n,r){var i=a.parseHelloMessage(t,n,r);if(t.fail)return;var s=i.session_id.bytes(),o=null;if(t.sessionCache){o=t.sessionCache.getSession(s);if(o===null)s="";else if(o.version.major!==i.version.major||o.version.minor>i.version.minor)o=null,s=""}s.length===0&&(s=e.random.getBytes(32)),t.session.id=s,t.session.clientHelloVersion=i.version,t.session.sp={};if(o)t.version=t.session.version=o.version,t.session.sp=o.sp;else{var u;for(var f=1;f0)u=o(s.certificate_list,3),f=e.asn1.fromDer(u),u=e.pki.certificateFromAsn1(f,!0),l.push(u)}catch(h){return t.error(t,{message:"Could not parse certificate list.",cause:h,send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.bad_certificate}})}var p=t.entity===a.ConnectionEnd.client;!p&&t.verifyClient!==!0||l.length!==0?l.length===0?t.expect=p?c:w:(p?t.session.serverCertificate=l[0]:t.session.clientCertificate=l[0],a.verifyCertificateChain(t,l)&&(t.expect=p?c:w)):t.error(t,{message:p?"No server certificate provided.":"No client certificate provided.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.illegal_parameter}}),t.process()},a.handleServerKeyExchange=function(e,t,n){if(n>0)return e.error(e,{message:"Invalid key parameters. Only RSA is supported.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.unsupported_certificate}});e.expect=h,e.process()},a.handleClientKeyExchange=function(t,n,r){if(r<48)return t.error(t,{message:"Invalid key parameters. Only RSA is supported.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.unsupported_certificate}});var i=n.fragment,s={enc_pre_master_secret:o(i,2).getBytes()},u=null;if(t.getPrivateKey)try{u=t.getPrivateKey(t,t.session.serverCertificate),u=e.pki.privateKeyFromPem(u)}catch(f){t.error(t,{message:"Could not get private key.",cause:f,send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.internal_error}})}if(u===null)return t.error(t,{message:"No private key set.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.internal_error}});try{var l=t.session.sp;l.pre_master_secret=u.decrypt(s.enc_pre_master_secret);var c=t.session.clientHelloVersion;if(c.major!==l.pre_master_secret.charCodeAt(0)||c.minor!==l.pre_master_secret.charCodeAt(1))throw new Error("TLS version rollback attack detected.")}catch(f){l.pre_master_secret=e.random.getBytes(48)}t.expect=S,t.session.clientCertificate!==null&&(t.expect=E),t.process()},a.handleCertificateRequest=function(e,t,n){if(n<3)return e.error(e,{message:"Invalid CertificateRequest. Message too short.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.illegal_parameter}});var r=t.fragment,i={certificate_types:o(r,1),certificate_authorities:o(r,2)};e.session.certificateRequest=i,e.expect=p,e.process()},a.handleCertificateVerify=function(t,n,r){if(r<2)return t.error(t,{message:"Invalid CertificateVerify. Message too short.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.illegal_parameter}});var i=n.fragment;i.read-=4;var s=i.bytes();i.read+=4;var u={signature:o(i,2).getBytes()},f=e.util.createBuffer();f.putBuffer(t.session.md5.digest()),f.putBuffer(t.session.sha1.digest()),f=f.getBytes();try{var l=t.session.clientCertificate;if(!l.publicKey.verify(f,u.signature,"NONE"))throw new Error("CertificateVerify signature does not match.");t.session.md5.update(s),t.session.sha1.update(s)}catch(c){return t.error(t,{message:"Bad signature in CertificateVerify.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.handshake_failure}})}t.expect=S,t.process()},a.handleServerHelloDone=function(t,n,r){if(r>0)return t.error(t,{message:"Invalid ServerHelloDone message. Invalid length.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.record_overflow}});if(t.serverCertificate===null){var i={message:"No server certificate provided. Not enough security.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.insufficient_security}},s=0,o=t.verify(t,i.alert.description,s,[]);if(o!==!0){if(o||o===0)typeof o=="object"&&!e.util.isArray(o)?(o.message&&(i.message=o.message),o.alert&&(i.alert.description=o.alert)):typeof o=="number"&&(i.alert.description=o);return t.error(t,i)}}t.session.certificateRequest!==null&&(n=a.createRecord(t,{type:a.ContentType.handshake,data:a.createCertificate(t)}),a.queue(t,n)),n=a.createRecord(t,{type:a.ContentType.handshake,data:a.createClientKeyExchange(t)}),a.queue(t,n),t.expect=g;var u=function(e,t){e.session.certificateRequest!==null&&e.session.clientCertificate!==null&&a.queue(e,a.createRecord(e,{type:a.ContentType.handshake,data:a.createCertificateVerify(e,t)})),a.queue(e,a.createRecord(e,{type:a.ContentType.change_cipher_spec,data:a.createChangeCipherSpec()})),e.state.pending=a.createConnectionState(e),e.state.current.write=e.state.pending.write,a.queue(e,a.createRecord(e,{type:a.ContentType.handshake,data:a.createFinished(e)})),e.expect=d,a.flush(e),e.process()};if(t.session.certificateRequest===null||t.session.clientCertificate===null)return u(t,null);a.getClientSignature(t,u)},a.handleChangeCipherSpec=function(e,t){if(t.fragment.getByte()!==1)return e.error(e,{message:"Invalid ChangeCipherSpec message received.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.illegal_parameter}});var n=e.entity===a.ConnectionEnd.client;if(e.session.resuming&&n||!e.session.resuming&&!n)e.state.pending=a.createConnectionState(e);e.state.current.read=e.state.pending.read;if(!e.session.resuming&&n||e.session.resuming&&!n)e.state.pending=null;e.expect=n?v:x,e.process()},a.handleFinished=function(n,r,i){var s=r.fragment;s.read-=4;var o=s.bytes();s.read+=4;var u=r.fragment.getBytes();s=e.util.createBuffer(),s.putBuffer(n.session.md5.digest()),s.putBuffer(n.session.sha1.digest());var f=n.entity===a.ConnectionEnd.client,l=f?"server finished":"client finished",c=n.session.sp,h=12,p=t;s=p(c.master_secret,l,s.getBytes(),h);if(s.getBytes()!==u)return n.error(n,{message:"Invalid verify_data in Finished message.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.decrypt_error}});n.session.md5.update(o),n.session.sha1.update(o);if(n.session.resuming&&f||!n.session.resuming&&!f)a.queue(n,a.createRecord(n,{type:a.ContentType.change_cipher_spec,data:a.createChangeCipherSpec()})),n.state.current.write=n.state.pending.write,n.state.pending=null,a.queue(n,a.createRecord(n,{type:a.ContentType.handshake,data:a.createFinished(n)}));n.expect=f?m:T,n.handshaking=!1,++n.handshakes,n.peerCertificate=f?n.session.serverCertificate:n.session.clientCertificate,a.flush(n),n.isConnected=!0,n.connected(n),n.process()},a.handleAlert=function(e,t){var n=t.fragment,r={level:n.getByte(),description:n.getByte()},i;switch(r.description){case a.Alert.Description.close_notify:i="Connection closed.";break;case a.Alert.Description.unexpected_message:i="Unexpected message.";break;case a.Alert.Description.bad_record_mac:i="Bad record MAC.";break;case a.Alert.Description.decryption_failed:i="Decryption failed.";break;case a.Alert.Description.record_overflow:i="Record overflow.";break;case a.Alert.Description.decompression_failure:i="Decompression failed.";break;case a.Alert.Description.handshake_failure:i="Handshake failure.";break;case a.Alert.Description.bad_certificate:i="Bad certificate.";break;case a.Alert.Description.unsupported_certificate:i="Unsupported certificate.";break;case a.Alert.Description.certificate_revoked:i="Certificate revoked.";break;case a.Alert.Description.certificate_expired:i="Certificate expired.";break;case a.Alert.Description.certificate_unknown:i="Certificate unknown.";break;case a.Alert.Description.illegal_parameter:i="Illegal parameter.";break;case a.Alert.Description.unknown_ca:i="Unknown certificate authority.";break;case a.Alert.Description.access_denied:i="Access denied.";break;case a.Alert.Description.decode_error:i="Decode error.";break;case a.Alert.Description.decrypt_error:i="Decrypt error.";break;case a.Alert.Description.export_restriction:i="Export restriction.";break;case a.Alert.Description.protocol_version:i="Unsupported protocol version.";break;case a.Alert.Description.insufficient_security:i="Insufficient security.";break;case a.Alert.Description.internal_error:i="Internal error.";break;case a.Alert.Description.user_canceled:i="User canceled.";break;case a.Alert.Description.no_renegotiation:i="Renegotiation not supported.";break;default:i="Unknown error."}if(r.description===a.Alert.Description.close_notify)return e.close();e.error(e,{message:i,send:!1,origin:e.entity===a.ConnectionEnd.client?"server":"client",alert:r}),e.process()},a.handleHandshake=function(t,n){var r=n.fragment,i=r.getByte(),s=r.getInt24();if(s>r.length())return t.fragmented=n,n.fragment=e.util.createBuffer(),r.read-=4,t.process();t.fragmented=null,r.read-=4;var o=r.bytes(s+4);r.read+=4,i in q[t.entity][t.expect]?(t.entity===a.ConnectionEnd.server&&!t.open&&!t.fail&&(t.handshaking=!0,t.session={version:null,extensions:{server_name:{serverNameList:[]}},cipherSuite:null,compressionMethod:null,serverCertificate:null,clientCertificate:null,md5:e.md.md5.create(),sha1:e.md.sha1.create()}),i!==a.HandshakeType.hello_request&&i!==a.HandshakeType.certificate_verify&&i!==a.HandshakeType.finished&&(t.session.md5.update(o),t.session.sha1.update(o)),q[t.entity][t.expect][i](t,n,s)):a.handleUnexpected(t,n)},a.handleApplicationData=function(e,t){e.data.putBuffer(t.fragment),e.dataReady(e),e.process()},a.handleHeartbeat=function(t,n){var r=n.fragment,i=r.getByte(),s=r.getInt16(),o=r.getBytes(s);if(i===a.HeartbeatMessageType.heartbeat_request){if(t.handshaking||s>o.length)return t.process();a.queue(t,a.createRecord(t,{type:a.ContentType.heartbeat,data:a.createHeartbeat(a.HeartbeatMessageType.heartbeat_response,o)})),a.flush(t)}else if(i===a.HeartbeatMessageType.heartbeat_response){if(o!==t.expectedHeartbeatPayload)return t.process();t.heartbeatReceived&&t.heartbeatReceived(t,e.util.createBuffer(o))}t.process()};var f=0,l=1,c=2,h=3,p=4,d=5,v=6,m=7,g=8,y=0,b=1,w=2,E=3,S=4,x=5,T=6,N=7,C=a.handleUnexpected,k=a.handleChangeCipherSpec,L=a.handleAlert,A=a.handleHandshake,O=a.handleApplicationData,M=a.handleHeartbeat,_=[];_[a.ConnectionEnd.client]=[[C,L,A,C,M],[C,L,A,C,M],[C,L,A,C,M],[C,L,A,C,M],[C,L,A,C,M],[k,L,C,C,M],[C,L,A,C,M],[C,L,A,O,M],[C,L,A,C,M]],_[a.ConnectionEnd.server]=[[C,L,A,C,M],[C,L,A,C,M],[C,L,A,C,M],[C,L,A,C,M],[k,L,C,C,M],[C,L,A,C,M],[C,L,A,O,M],[C,L,A,C,M]];var D=a.handleHelloRequest,P=a.handleServerHello,H=a.handleCertificate,B=a.handleServerKeyExchange,j=a.handleCertificateRequest,F=a.handleServerHelloDone,I=a.handleFinished,q=[];q[a.ConnectionEnd.client]=[[C,C,P,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C],[D,C,C,C,C,C,C,C,C,C,C,H,B,j,F,C,C,C,C,C,C],[D,C,C,C,C,C,C,C,C,C,C,C,B,j,F,C,C,C,C,C,C],[D,C,C,C,C,C,C,C,C,C,C,C,C,j,F,C,C,C,C,C,C],[D,C,C,C,C,C,C,C,C,C,C,C,C,C,F,C,C,C,C,C,C],[D,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C],[D,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,I],[D,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C],[D,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C]];var R=a.handleClientHello,U=a.handleClientKeyExchange,z=a.handleCertificateVerify;q[a.ConnectionEnd.server]=[[C,R,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C],[C,C,C,C,C,C,C,C,C,C,C,H,C,C,C,C,C,C,C,C,C],[C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,U,C,C,C,C],[C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,z,C,C,C,C,C],[C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C],[C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,I],[C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C],[C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C]],a.generateKeys=function(e,n){var r=t,i=n.client_random+n.server_random;e.session.resuming||(n.master_secret=r(n.pre_master_secret,"master secret",i,48).bytes(),n.pre_master_secret=null),i=n.server_random+n.client_random;var s=2*n.mac_key_length+2*n.enc_key_length,o=e.version.major===a.Versions.TLS_1_0.major&&e.version.minor===a.Versions.TLS_1_0.minor;o&&(s+=2*n.fixed_iv_length);var u=r(n.master_secret,"key expansion",i,s),f={client_write_MAC_key:u.getBytes(n.mac_key_length),server_write_MAC_key:u.getBytes(n.mac_key_length),client_write_key:u.getBytes(n.enc_key_length),server_write_key:u.getBytes(n.enc_key_length)};return o&&(f.client_write_IV=u.getBytes(n.fixed_iv_length),f.server_write_IV=u.getBytes(n.fixed_iv_length)),f},a.createConnectionState=function(e){var t=e.entity===a.ConnectionEnd.client,n=function(){var e={sequenceNumber:[0,0],macKey:null,macLength:0,macFunction:null,cipherState:null,cipherFunction:function(e){return!0},compressionState:null,compressFunction:function(e){return!0},updateSequenceNumber:function(){e.sequenceNumber[1]===4294967295?(e.sequenceNumber[1]=0,++e.sequenceNumber[0]):++e.sequenceNumber[1]}};return e},r={read:n(),write:n()};r.read.update=function(e,t){return r.read.cipherFunction(t,r.read)?r.read.compressFunction(e,t,r.read)||e.error(e,{message:"Could not decompress record.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.decompression_failure}}):e.error(e,{message:"Could not decrypt record or bad MAC.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.bad_record_mac}}),!e.fail},r.write.update=function(e,t){return r.write.compressFunction(e,t,r.write)?r.write.cipherFunction(t,r.write)||e.error(e,{message:"Could not encrypt record.",send:!1,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.internal_error}}):e.error(e,{message:"Could not compress record.",send:!1,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.internal_error}}),!e.fail};if(e.session){var o=e.session.sp;e.session.cipherSuite.initSecurityParameters(o),o.keys=a.generateKeys(e,o),r.read.macKey=t?o.keys.server_write_MAC_key:o.keys.client_write_MAC_key,r.write.macKey=t?o.keys.client_write_MAC_key:o.keys.server_write_MAC_key,e.session.cipherSuite.initConnectionState(r,e,o);switch(o.compression_algorithm){case a.CompressionMethod.none:break;case a.CompressionMethod.deflate:r.read.compressFunction=s,r.write.compressFunction=i;break;default:throw new Error("Unsupported compression algorithm.")}}return r},a.createRandom=function(){var t=new Date,n=+t+t.getTimezoneOffset()*6e4,r=e.util.createBuffer();return r.putInt32(n),r.putBytes(e.random.getBytes(28)),r},a.createRecord=function(e,t){if(!t.data)return null;var n={type:t.type,version:{major:e.version.major,minor:e.version.minor},length:t.data.length(),fragment:t.data};return n},a.createAlert=function(t,n){var r=e.util.createBuffer();return r.putByte(n.level),r.putByte(n.description),a.createRecord(t,{type:a.ContentType.alert,data:r})},a.createClientHello=function(t){t.session.clientHelloVersion={major:t.version.major,minor:t.version.minor};var n=e.util.createBuffer();for(var r=0;r0&&(d+=2);var v=t.session.id,m=v.length+1+2+4+28+2+s+1+f+d,g=e.util.createBuffer();return g.putByte(a.HandshakeType.client_hello),g.putInt24(m),g.putByte(t.version.major),g.putByte(t.version.minor),g.putBytes(t.session.sp.client_random),u(g,1,e.util.createBuffer(v)),u(g,2,n),u(g,1,o),d>0&&u(g,2,l),g},a.createServerHello=function(t){var n=t.session.id,r=n.length+1+2+4+28+2+1,i=e.util.createBuffer();return i.putByte(a.HandshakeType.server_hello),i.putInt24(r),i.putByte(t.version.major),i.putByte(t.version.minor),i.putBytes(t.session.sp.server_random),u(i,1,e.util.createBuffer(n)),i.putByte(t.session.cipherSuite.id[0]),i.putByte(t.session.cipherSuite.id[1]),i.putByte(t.session.compressionMethod),i},a.createCertificate=function(t){var n=t.entity===a.ConnectionEnd.client,r=null;if(t.getCertificate){var i;n?i=t.session.certificateRequest:i=t.session.extensions.server_name.serverNameList,r=t.getCertificate(t,i)}var s=e.util.createBuffer();if(r!==null)try{e.util.isArray(r)||(r=[r]);var o=null;for(var f=0;f0&&(r.putByte(a.HandshakeType.server_key_exchange),r.putInt24(n)),r},a.getClientSignature=function(t,n){var r=e.util.createBuffer();r.putBuffer(t.session.md5.digest()),r.putBuffer(t.session.sha1.digest()),r=r.getBytes(),t.getSignature=t.getSignature||function(t,n,r){var i=null;if(t.getPrivateKey)try{i=t.getPrivateKey(t,t.session.clientCertificate),i=e.pki.privateKeyFromPem(i)}catch(s){t.error(t,{message:"Could not get private key.",cause:s,send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.internal_error}})}i===null?t.error(t,{message:"No private key set.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.internal_error}}):n=i.sign(n,null),r(t,n)},t.getSignature(t,r,n)},a.createCertificateVerify=function(t,n){var r=n.length+2,i=e.util.createBuffer();return i.putByte(a.HandshakeType.certificate_verify),i.putInt24(r),i.putInt16(n.length),i.putBytes(n),i},a.createCertificateRequest=function(t){var n=e.util.createBuffer();n.putByte(1);var r=e.util.createBuffer();for(var i in t.caStore.certs){var s=t.caStore.certs[i],o=e.pki.distinguishedNameToAsn1(s.subject),f=e.asn1.toDer(o);r.putInt16(f.length()),r.putBuffer(f)}var l=1+n.length()+2+r.length(),c=e.util.createBuffer();return c.putByte(a.HandshakeType.certificate_request),c.putInt24(l),u(c,1,n),u(c,2,r),c},a.createServerHelloDone=function(t){var n=e.util.createBuffer();return n.putByte(a.HandshakeType.server_hello_done),n.putInt24(0),n},a.createChangeCipherSpec=function(){var t=e.util.createBuffer();return t.putByte(1),t},a.createFinished=function(n){var r=e.util.createBuffer();r.putBuffer(n.session.md5.digest()),r.putBuffer(n.session.sha1.digest());var i=n.entity===a.ConnectionEnd.client,s=n.session.sp,o=12,u=t,f=i?"client finished":"server finished";r=u(s.master_secret,f,r.getBytes(),o);var l=e.util.createBuffer();return l.putByte(a.HandshakeType.finished),l.putInt24(r.length()),l.putBuffer(r),l},a.createHeartbeat=function(t,n,r){typeof r=="undefined"&&(r=n.length);var i=e.util.createBuffer();i.putByte(t),i.putInt16(r),i.putBytes(n);var s=i.length(),o=Math.max(16,s-r-3);return i.putBytes(e.random.getBytes(o)),i},a.queue=function(t,n){if(!n)return;if(n.fragment.length()===0)if(n.type===a.ContentType.handshake||n.type===a.ContentType.alert||n.type===a.ContentType.change_cipher_spec)return;if(n.type===a.ContentType.handshake){var r=n.fragment.bytes();t.session.md5.update(r),t.session.sha1.update(r),r=null}var i;if(n.fragment.length()<=a.MaxFragment)i=[n];else{i=[];var s=n.fragment.bytes();while(s.length>a.MaxFragment)i.push(a.createRecord(t,{type:n.type,data:e.util.createBuffer(s.slice(0,a.MaxFragment))})),s=s.slice(a.MaxFragment);s.length>0&&i.push(a.createRecord(t,{type:n.type,data:e.util.createBuffer(s)}))}for(var o=0;o0&&(i=r.order[0]);if(i!==null&&i in r.cache){n=r.cache[i],delete r.cache[i];for(var s in r.order)if(r.order[s]===i){r.order.splice(s,1);break}}return n},r.setSession=function(t,n){if(r.order.length===r.capacity){var i=r.order.shift();delete r.cache[i]}var i=e.util.bytesToHex(t);r.order.push(i),r.cache[i]=n}}return r},a.createConnection=function(t){var n=null;t.caStore?e.util.isArray(t.caStore)?n=e.pki.createCaStore(t.caStore):n=t.caStore:n=e.pki.createCaStore();var r=t.cipherSuites||null;if(r===null){r=[];for(var i in a.CipherSuites)r.push(a.CipherSuites[i])}var s=t.server||!1?a.ConnectionEnd.server:a.ConnectionEnd.client,o=t.sessionCache?a.createSessionCache(t.sessionCache):null,u={version:{major:a.Version.major,minor:a.Version.minor},entity:s,sessionId:t.sessionId,caStore:n,sessionCache:o,cipherSuites:r,connected:t.connected,virtualHost:t.virtualHost||null,verifyClient:t.verifyClient||!1,verify:t.verify||function(e,t,n,r){return t},getCertificate:t.getCertificate||null,getPrivateKey:t.getPrivateKey||null,getSignature:t.getSignature||null,input:e.util.createBuffer(),tlsData:e.util.createBuffer(),data:e.util.createBuffer(),tlsDataReady:t.tlsDataReady,dataReady:t.dataReady,heartbeatReceived:t.heartbeatReceived,closed:t.closed,error:function(e,n){n.origin=n.origin||(e.entity===a.ConnectionEnd.client?"client":"server"),n.send&&(a.queue(e,a.createAlert(e,n.alert)),a.flush(e));var r=n.fatal!==!1;r&&(e.fail=!0),t.error(e,n),r&&e.close(!1)},deflate:t.deflate||null,inflate:t.inflate||null};u.reset=function(e){u.version={major:a.Version.major,minor:a.Version.minor},u.record=null,u.session=null,u.peerCertificate=null,u.state={pending:null,current:null},u.expect=u.entity===a.ConnectionEnd.client?f:y,u.fragmented=null,u.records=[],u.open=!1,u.handshakes=0,u.handshaking=!1,u.isConnected=!1,u.fail=!e&&typeof e!="undefined",u.input.clear(),u.tlsData.clear(),u.data.clear(),u.state.current=a.createConnectionState(u)},u.reset();var l=function(e,t){var n=t.type-a.ContentType.change_cipher_spec,r=_[e.entity][e.expect];n in r?r[n](e,t):a.handleUnexpected(e,t)},c=function(t){var n=0,r=t.input,i=r.length();if(i<5)n=5-i;else{t.record={type:r.getByte(),version:{major:r.getByte(),minor:r.getByte()},length:r.getInt16(),fragment:e.util.createBuffer(),ready:!1};var s=t.record.version.major===t.version.major;s&&t.session&&t.session.version&&(s=t.record.version.minor===t.version.minor),s||t.error(t,{message:"Incompatible TLS version.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.protocol_version}})}return n},h=function(e){var t=0,n=e.input,r=n.length();if(r0&&(u.sessionCache&&(n=u.sessionCache.getSession(t)),n===null&&(t="")),t.length===0&&u.sessionCache&&(n=u.sessionCache.getSession(),n!==null&&(t=n.id)),u.session={id:t,version:null,cipherSuite:null,compressionMethod:null,serverCertificate:null,certificateRequest:null,clientCertificate:null,sp:{},md5:e.md.md5.create(),sha1:e.md.sha1.create()},n&&(u.version=n.version,u.session.sp=n.sp),u.session.sp.client_random=a.createRandom().getBytes(),u.open=!0,a.queue(u,a.createRecord(u,{type:a.ContentType.handshake,data:a.createClientHello(u)})),a.flush(u)}},u.process=function(e){var t=0;return e&&u.input.putBytes(e),u.fail||(u.record!==null&&u.record.ready&&u.record.fragment.isEmpty()&&(u.record=null),u.record===null&&(t=c(u)),!u.fail&&u.record!==null&&!u.record.ready&&(t=h(u)),!u.fail&&u.record!==null&&u.record.ready&&l(u,u.record)),t},u.prepare=function(t){return a.queue(u,a.createRecord(u,{type:a.ContentType.application_data,data:e.util.createBuffer(t)})),a.flush(u)},u.prepareHeartbeatRequest=function(t,n){return t instanceof e.util.ByteBuffer&&(t=t.bytes()),typeof n=="undefined"&&(n=t.length),u.expectedHeartbeatPayload=t,a.queue(u,a.createRecord(u,{type:a.ContentType.heartbeat,data:a.createHeartbeat(a.HeartbeatMessageType.heartbeat_request,t,n)})),a.flush(u)},u.close=function(e){if(!u.fail&&u.sessionCache&&u.session){var t={id:u.session.id,version:u.session.version,sp:u.session.sp};t.sp.keys=null,u.sessionCache.setSession(t.id,t)}if(u.open){u.open=!1,u.input.clear();if(u.isConnected||u.handshaking)u.isConnected=u.handshaking=!1,a.queue(u,a.createAlert(u,{level:a.Alert.Level.warning,description:a.Alert.Description.close_notify})),a.flush(u);u.closed(u)}u.reset(e)},u},e.tls=e.tls||{};for(var V in a)typeof a[V]!="function"&&(e.tls[V]=a[V]);e.tls.prf_tls1=t,e.tls.hmac_sha1=r,e.tls.createSessionCache=a.createSessionCache,e.tls.createConnection=a.createConnection}var r="tls";if(typeof n!="function"){if(typeof module!="object"||!module.exports)return typeof forge=="undefined"&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);n=n||{},n.defined=n.defined||{};if(n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o=t.Versions.TLS_1_1.minor&&a.output.putBytes(u),a.update(n.fragment),a.finish(i)&&(n.fragment=a.output,n.length=n.fragment.length(),s=!0),s}function i(e,t,n){if(!n){var r=e-t.length()%e;t.fillWithByte(r-1,r)}return!0}function s(e,t,n){var r=!0;if(n){var i=t.length(),s=t.last();for(var o=i-1-s;o=l?(n.fragment=f.output.getBytes(h-l),c=f.output.getBytes(l)):n.fragment=f.output.getBytes(),n.fragment=e.util.createBuffer(n.fragment),n.length=n.fragment.length();var p=r.macFunction(r.macKey,r.sequenceNumber,n);return r.updateSequenceNumber(),i=a(r.macKey,c,p)&&i,i}function a(t,n,r){var i=e.hmac.create();return i.start("SHA1",t),i.update(n),n=i.digest().getBytes(),i.start(null,null),i.update(r),r=i.digest().getBytes(),n===r}var t=e.tls;t.CipherSuites.TLS_RSA_WITH_AES_128_CBC_SHA={id:[0,47],name:"TLS_RSA_WITH_AES_128_CBC_SHA",initSecurityParameters:function(e){e.bulk_cipher_algorithm=t.BulkCipherAlgorithm.aes,e.cipher_type=t.CipherType.block,e.enc_key_length=16,e.block_length=16,e.fixed_iv_length=16,e.record_iv_length=16,e.mac_algorithm=t.MACAlgorithm.hmac_sha1,e.mac_length=20,e.mac_key_length=20},initConnectionState:n},t.CipherSuites.TLS_RSA_WITH_AES_256_CBC_SHA={id:[0,53],name:"TLS_RSA_WITH_AES_256_CBC_SHA",initSecurityParameters:function(e){e.bulk_cipher_algorithm=t.BulkCipherAlgorithm.aes,e.cipher_type=t.CipherType.block,e.enc_key_length=32,e.block_length=16,e.fixed_iv_length=16,e.record_iv_length=16,e.mac_algorithm=t.MACAlgorithm.hmac_sha1,e.mac_length=20,e.mac_key_length=20},initConnectionState:n};var o=0}var r="aesCipherSuites";if(typeof n!="function"){if(typeof module!="object"||!module.exports)return typeof forge=="undefined"&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);n=n||{},n.defined=n.defined||{};if(n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o0&&(u=e.util.fillString(String.fromCharCode(0),a)+u);var f=r.encrypt(u,"NONE"),l=n.generate(u,s);return{encapsulation:f,key:l}},s.decrypt=function(e,t,r){var i=e.decrypt(t,"NONE");return n.generate(i,r)},s},e.kem.kdf1=function(e,t){n(this,e,0,t||e.digestLength)},e.kem.kdf2=function(e,t){n(this,e,1,t||e.digestLength)}}var r="kem";if(typeof n!="function"){if(typeof module!="object"||!module.exports)return typeof forge=="undefined"&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);n=n||{},n.defined=n.defined||{};if(n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o0){var i=t.create(t.Class.CONTEXT_SPECIFIC,1,!0,[]);for(var s=0;s=i&&o0&&o.value[0].value.push(t.create(t.Class.CONTEXT_SPECIFIC,0,!0,n)),s.length>0&&o.value[0].value.push(t.create(t.Class.CONTEXT_SPECIFIC,1,!0,s)),o.value[0].value.push(t.create(t.Class.UNIVERSAL,t.Type.SET,!0,r.signerInfos)),t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(r.type).getBytes()),o])},addSigner:function(t){var n=t.issuer,i=t.serialNumber;if(t.certificate){var s=t.certificate;typeof s=="string"&&(s=e.pki.certificateFromPem(s)),n=s.issuer.attributes,i=s.serialNumber}var o=t.key;if(!o)throw new Error("Could not add PKCS#7 signer; no private key specified.");typeof o=="string"&&(o=e.pki.privateKeyFromPem(o));var u=t.digestAlgorithm||e.pki.oids.sha1;switch(u){case e.pki.oids.sha1:case e.pki.oids.sha256:case e.pki.oids.sha384:case e.pki.oids.sha512:case e.pki.oids.md5:break;default:throw new Error("Could not add PKCS#7 signer; unknown message digest algorithm: "+u)}var a=t.authenticatedAttributes||[];if(a.length>0){var f=!1,l=!1;for(var c=0;c="8"&&(r="00"+r);var i=e.util.hexToBytes(r);t.putInt32(i.length),t.putBytes(i)}function r(e,t){e.putInt32(t.length),e.putString(t)}function i(){var t=e.md.sha1.create(),n=arguments.length;for(var r=0;r=1&&e.log.verbose(t,"[%s][%s] init",this.id,this.name,this)};T.prototype.debug=function(n){n=n||"",e.log.debug(t,n,"[%s][%s] task:",this.id,this.name,this,"subtasks:",this.subtasks.length,"queue:",s)},T.prototype.next=function(e,t){typeof e=="function"&&(t=e,e=this.name);var n=new T({run:t,name:e,parent:this});return n.state=l,n.type=this.type,n.successCallback=this.successCallback||null,n.failureCallback=this.failureCallback||null,this.subtasks.push(n),this},T.prototype.parallel=function(t,n){return e.util.isArray(t)&&(n=t,t=this.name),this.next(t,function(r){var i=r;i.block(n.length);var s=function(t,r){e.task.start({type:t,run:function(e){n[r](e)},success:function(e){i.unblock()},failure:function(e){i.unblock()}})};for(var o=0;o0&&(this.state=x[this.state][g])},T.prototype.unblock=function(e){return e=typeof e=="undefined"?1:e,this.blocks-=e,this.blocks===0&&this.state!==p&&(this.state=l,C(this,0)),this.blocks},T.prototype.sleep=function(e){e=typeof e=="undefined"?0:e,this.state=x[this.state][b];var t=this;this.timeoutId=setTimeout(function(){t.timeoutId=null,t.state=l,C(t,0)},e)},T.prototype.wait=function(e){e.wait(this)},T.prototype.wakeup=function(){this.state===h&&(cancelTimeout(this.timeoutId),this.timeoutId=null,this.state=l,C(this,0))},T.prototype.cancel=function(){this.state=x[this.state][E],this.permitsNeeded=0,this.timeoutId!==null&&(cancelTimeout(this.timeoutId),this.timeoutId=null),this.subtasks=[]},T.prototype.fail=function(e){this.error=!0,k(this,!0);if(e)e.error=this.error,e.swapTime=this.swapTime,e.userData=this.userData,C(e,0);else{if(this.parent!==null){var t=this.parent;while(t.parent!==null)t.error=this.error,t.swapTime=this.swapTime,t.userData=this.userData,t=t.parent;k(t,!0)}this.failureCallback&&this.failureCallback(this)}};var N=function(e){e.error=!1,e.state=x[e.state][m],setTimeout(function(){e.state===l&&(e.swapTime=+(new Date),e.run(e),C(e,0))},0)},C=function(e,t){var n=t>u||+(new Date)-e.swapTime>a,r=function(t){t++;if(e.state===l){n&&(e.swapTime=+(new Date));if(e.subtasks.length>0){var r=e.subtasks.shift();r.error=e.error,r.swapTime=e.swapTime,r.userData=e.userData,r.run(r),r.error||C(r,t)}else k(e),e.error||e.parent!==null&&(e.parent.error=e.error,e.parent.swapTime=e.swapTime,e.parent.userData=e.userData,C(e.parent,t))}};n?setTimeout(r,0):r(t)},k=function(i,o){i.state=p,delete r[i.id],n>=1&&e.log.verbose(t,"[%s][%s] finish",i.id,i.name,i),i.parent===null&&(i.type in s?s[i.type].length===0?e.log.error(t,"[%s][%s] task queue empty [%s]",i.id,i.name,i.type):s[i.type][0]!==i?e.log.error(t,"[%s][%s] task not first in queue [%s]",i.id,i.name,i.type):(s[i.type].shift(),s[i.type].length===0?(n>=1&&e.log.verbose(t,"[%s][%s] delete queue [%s]",i.id,i.name,i.type),delete s[i.type]):(n>=1&&e.log.verbose(t,"[%s][%s] queue start next [%s] remain:%s",i.id,i.name,i.type,s[i.type].length),s[i.type][0].start())):e.log.error(t,"[%s][%s] task queue missing [%s]",i.id,i.name,i.type),o||(i.error&&i.failureCallback?i.failureCallback(i):!i.error&&i.successCallback&&i.successCallback(i)))};e.task=e.task||{},e.task.start=function(r){var i=new T({run:r.run,name:r.name||o});i.type=r.type,i.successCallback=r.success||null,i.failureCallback=r.failure||null,i.type in s?s[r.type].push(i):(n>=1&&e.log.verbose(t,"[%s][%s] create queue [%s]",i.id,i.name,i.type),s[i.type]=[i],N(i))},e.task.cancel=function(e){e in s&&(s[e]=[s[e][0]])},e.task.createCondition=function(){var e={tasks:{}};return e.wait=function(t){t.id in e.tasks||(t.block(),e.tasks[t.id]=t)},e.notify=function(){var t=e.tasks;e.tasks={};for(var n in t)t[n].unblock()},e}}var r="task";if(typeof n!="function"){if(typeof module!="object"||!module.exports)return typeof forge=="undefined"&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);n=n||{},n.defined=n.defined||{};if(n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a); +}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S),a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}}),r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var _a,ab=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return T(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?_a:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),_a={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ab[b]||r.find.attr;ab[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=ab[g],ab[g]=e,e=null!=c(a,b,d)?g:null,ab[g]=f),e}});var bb=/^(?:input|select|textarea|button)$/i,cb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function db(a){var b=a.match(L)||[];return b.join(" ")}function eb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,eb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=eb(c),d=1===c.nodeType&&" "+db(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=db(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,eb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=eb(c),d=1===c.nodeType&&" "+db(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=db(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,eb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=eb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+db(eb(c))+" ").indexOf(b)>-1)return!0;return!1}});var fb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(fb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:db(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var gb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!gb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,gb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var hb=/\[\]$/,ib=/\r?\n/g,jb=/^(?:submit|button|image|reset|file)$/i,kb=/^(?:input|select|textarea|keygen)/i;function lb(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||hb.test(a)?d(a,e):lb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d); +});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)lb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)lb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&kb.test(this.nodeName)&&!jb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ib,"\r\n")}}):{name:b.name,value:c.replace(ib,"\r\n")}}).get()}}),r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="
",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=C.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=qa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),b=f.ownerDocument,c=b.documentElement,e=b.defaultView,{top:d.top+e.pageYOffset-c.clientTop,left:d.left+e.pageXOffset-c.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),B(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||ra})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return T(this,function(a,d,e){var f;return r.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView),void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Pa(o.pixelPosition,function(a,c){if(c)return c=Oa(a,b),Ma.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return T(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.holdReady=function(a){a?r.readyWait++:r.ready(!0)},r.isArray=Array.isArray,r.parseJSON=JSON.parse,r.nodeName=B,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var mb=a.jQuery,nb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=nb),b&&a.jQuery===r&&(a.jQuery=mb),r},b||(a.jQuery=a.$=r),r}); diff --git a/common/js/mashlib.js b/common/js/mashlib.js new file mode 100644 index 000000000..86c4b42d4 --- /dev/null +++ b/common/js/mashlib.js @@ -0,0 +1,92454 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(require("window")); + else if(typeof define === 'function' && define.amd) + define(["window"], factory); + else if(typeof exports === 'object') + exports["Mashlib"] = factory(require("window")); + else + root["Mashlib"] = factory(root["window"]); +})(window, function(__WEBPACK_EXTERNAL_MODULE_xmldom__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = "/dist/"; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./index.js": +/*!******************!*\ + !*** ./index.js ***! + \******************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {/** + * + * MASHLIB Data Mashup library + * + * Solid-compatible User Interface library + * for the databrowser, etc + */ +function dump(msg) { + console.log(msg.slice(0, -1)); +} + +global.dump = dump; + +var panes = __webpack_require__(/*! solid-panes */ "./node_modules/solid-panes/index.js"); // applets +// const UI = require('solid-ui') // widgets etc + + +var $rdf = __webpack_require__(/*! rdflib */ "./node_modules/rdflib/lib/index.js"); + +global.$rdf = $rdf; // $rdf.log = UI.log + +if (typeof window !== 'undefined') { + // window.UI = UI + window.panes = panes; +} + +window.onpopstate = function (event) { + window.document.outline.GotoSubject($rdf.sym(window.document.location.href), true, undefined, true, undefined); +}; // panes.UI = UI +// Allow require('mashlib') in the databrowser + + +global.require = function require(lib) { + if (lib === 'mashlib') { + return panes; + } else { + throw new Error('Cannot require (this is a Mashlib-specific require stub)'); + } +}; + +module.exports = panes; // ends +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) + +/***/ }), + +/***/ "./node_modules/@solid/better-simple-slideshow/js/better-simple-slideshow.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@solid/better-simple-slideshow/js/better-simple-slideshow.js ***! + \***********************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + + +var makeBSS = function (el, options) { + if (typeof document === 'undefined') { + var document = options.dom; + } + var $slideshows = document.querySelectorAll(el), // a collection of all of the slideshow + $slideshow = {}, + Slideshow = { + init: function (el, options) { + this.counter = 0; // to keep track of current slide + this.el = el; // current slideshow container + this.$items = el.querySelectorAll('figure'); // a collection of all of the slides, caching for performance + this.numItems = this.$items.length; // total number of slides + options = options || {}; // if options object not passed in, then set to empty object + options.auto = options.auto || false; // if options.auto object not passed in, then set to false + this.opts = { + auto: (typeof options.auto === "undefined") ? false : options.auto, + speed: (typeof options.auto.speed === "undefined") ? 1500 : options.auto.speed, + pauseOnHover: (typeof options.auto.pauseOnHover === "undefined") ? false : options.auto.pauseOnHover, + fullScreen: (typeof options.fullScreen === "undefined") ? false : options.fullScreen, + swipe: (typeof options.swipe === "undefined") ? false : options.swipe + }; + + this.$items[0].classList.add('bss-show'); // add show class to first figure + this.injectControls(el); + this.addEventListeners(el); + if (this.opts.auto) { + this.autoCycle(this.el, this.opts.speed, this.opts.pauseOnHover); + } + if (this.opts.fullScreen) { + this.addFullScreen(this.el); + } + if (this.opts.swipe) { + this.addSwipe(this.el); + } + }, + showCurrent: function (i) { + // increment or decrement this.counter depending on whether i === 1 or i === -1 + if (i > 0) { + this.counter = (this.counter + 1 === this.numItems) ? 0 : this.counter + 1; + } else { + this.counter = (this.counter - 1 < 0) ? this.numItems - 1 : this.counter - 1; + } + + // remove .show from whichever element currently has it + // http://stackoverflow.com/a/16053538/2006057 + [].forEach.call(this.$items, function (el) { + el.classList.remove('bss-show'); + }); + + // add .show to the one item that's supposed to have it + this.$items[this.counter].classList.add('bss-show'); + }, + injectControls: function (el) { + // build and inject prev/next controls + // first create all the new elements + var spanPrev = document.createElement("span"), + spanNext = document.createElement("span"), + docFrag = document.createDocumentFragment(); + + // add classes + spanPrev.classList.add('bss-prev'); + spanNext.classList.add('bss-next'); + + // add contents + spanPrev.innerHTML = '«'; + spanNext.innerHTML = '»'; + + // append elements to fragment, then append fragment to DOM + docFrag.appendChild(spanPrev); + docFrag.appendChild(spanNext); + el.appendChild(docFrag); + }, + addEventListeners: function (el) { + var that = this; + el.querySelector('.bss-next').addEventListener('click', function () { + that.showCurrent(1); // increment & show + }, false); + + el.querySelector('.bss-prev').addEventListener('click', function () { + that.showCurrent(-1); // decrement & show + }, false); + + el.onkeydown = function (e) { + e = e || window.event; + if (e.keyCode === 37) { + that.showCurrent(-1); // decrement & show + } else if (e.keyCode === 39) { + that.showCurrent(1); // increment & show + } + }; + }, + autoCycle: function (el, speed, pauseOnHover) { + var that = this, + interval = window.setInterval(function () { + that.showCurrent(1); // increment & show + }, speed); + + if (pauseOnHover) { + el.addEventListener('mouseover', function () { + interval = clearInterval(interval); + }, false); + el.addEventListener('mouseout', function () { + interval = window.setInterval(function () { + that.showCurrent(1); // increment & show + }, speed); + }, false); + } // end pauseonhover + + }, + addFullScreen: function(el){ + var that = this, + fsControl = document.createElement("span"); + + fsControl.classList.add('bss-fullscreen'); + el.appendChild(fsControl); + el.querySelector('.bss-fullscreen').addEventListener('click', function () { + that.toggleFullScreen(el); + }, false); + }, + addSwipe: function(el){ + var that = this, + ht = new Hammer(el); + ht.on('swiperight', function(e) { + that.showCurrent(-1); // decrement & show + }); + ht.on('swipeleft', function(e) { + that.showCurrent(1); // increment & show + }); + }, + toggleFullScreen: function(el){ + // https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode + if (!document.fullscreenElement && // alternative standard method + !document.mozFullScreenElement && !document.webkitFullscreenElement && + !document.msFullscreenElement ) { // current working methods + if (document.documentElement.requestFullscreen) { + el.requestFullscreen(); + } else if (document.documentElement.msRequestFullscreen) { + el.msRequestFullscreen(); + } else if (document.documentElement.mozRequestFullScreen) { + el.mozRequestFullScreen(); + } else if (document.documentElement.webkitRequestFullscreen) { + el.webkitRequestFullscreen(el.ALLOW_KEYBOARD_INPUT); + } + } else { + if (document.exitFullscreen) { + document.exitFullscreen(); + } else if (document.msExitFullscreen) { + document.msExitFullscreen(); + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } + } + } // end toggleFullScreen + + }; // end Slideshow object ..... + + // make instances of Slideshow as needed + [].forEach.call($slideshows, function (el) { + $slideshow = Object.create(Slideshow); + $slideshow.init(el, options); + }); +}; + +if ( true && module.exports) { + module.exports = makeBSS +} + + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1.js": +/*!******************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var asn1 = exports; + +asn1.bignum = __webpack_require__(/*! bn.js */ "./node_modules/bn.js/lib/bn.js"); + +asn1.define = __webpack_require__(/*! ./asn1/api */ "./node_modules/asn1.js/lib/asn1/api.js").define; +asn1.base = __webpack_require__(/*! ./asn1/base */ "./node_modules/asn1.js/lib/asn1/base/index.js"); +asn1.constants = __webpack_require__(/*! ./asn1/constants */ "./node_modules/asn1.js/lib/asn1/constants/index.js"); +asn1.decoders = __webpack_require__(/*! ./asn1/decoders */ "./node_modules/asn1.js/lib/asn1/decoders/index.js"); +asn1.encoders = __webpack_require__(/*! ./asn1/encoders */ "./node_modules/asn1.js/lib/asn1/encoders/index.js"); + + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/api.js": +/*!**********************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/api.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var asn1 = __webpack_require__(/*! ../asn1 */ "./node_modules/asn1.js/lib/asn1.js"); +var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"); + +var api = exports; + +api.define = function define(name, body) { + return new Entity(name, body); +}; + +function Entity(name, body) { + this.name = name; + this.body = body; + + this.decoders = {}; + this.encoders = {}; +}; + +Entity.prototype._createNamed = function createNamed(base) { + var named; + try { + named = __webpack_require__(/*! vm */ "./node_modules/vm-browserify/index.js").runInThisContext( + '(function ' + this.name + '(entity) {\n' + + ' this._initNamed(entity);\n' + + '})' + ); + } catch (e) { + named = function (entity) { + this._initNamed(entity); + }; + } + inherits(named, base); + named.prototype._initNamed = function initnamed(entity) { + base.call(this, entity); + }; + + return new named(this); +}; + +Entity.prototype._getDecoder = function _getDecoder(enc) { + enc = enc || 'der'; + // Lazily create decoder + if (!this.decoders.hasOwnProperty(enc)) + this.decoders[enc] = this._createNamed(asn1.decoders[enc]); + return this.decoders[enc]; +}; + +Entity.prototype.decode = function decode(data, enc, options) { + return this._getDecoder(enc).decode(data, options); +}; + +Entity.prototype._getEncoder = function _getEncoder(enc) { + enc = enc || 'der'; + // Lazily create encoder + if (!this.encoders.hasOwnProperty(enc)) + this.encoders[enc] = this._createNamed(asn1.encoders[enc]); + return this.encoders[enc]; +}; + +Entity.prototype.encode = function encode(data, enc, /* internal */ reporter) { + return this._getEncoder(enc).encode(data, reporter); +}; + + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/base/buffer.js": +/*!******************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/base/buffer.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"); +var Reporter = __webpack_require__(/*! ../base */ "./node_modules/asn1.js/lib/asn1/base/index.js").Reporter; +var Buffer = __webpack_require__(/*! buffer */ "./node_modules/buffer/index.js").Buffer; + +function DecoderBuffer(base, options) { + Reporter.call(this, options); + if (!Buffer.isBuffer(base)) { + this.error('Input not Buffer'); + return; + } + + this.base = base; + this.offset = 0; + this.length = base.length; +} +inherits(DecoderBuffer, Reporter); +exports.DecoderBuffer = DecoderBuffer; + +DecoderBuffer.prototype.save = function save() { + return { offset: this.offset, reporter: Reporter.prototype.save.call(this) }; +}; + +DecoderBuffer.prototype.restore = function restore(save) { + // Return skipped data + var res = new DecoderBuffer(this.base); + res.offset = save.offset; + res.length = this.offset; + + this.offset = save.offset; + Reporter.prototype.restore.call(this, save.reporter); + + return res; +}; + +DecoderBuffer.prototype.isEmpty = function isEmpty() { + return this.offset === this.length; +}; + +DecoderBuffer.prototype.readUInt8 = function readUInt8(fail) { + if (this.offset + 1 <= this.length) + return this.base.readUInt8(this.offset++, true); + else + return this.error(fail || 'DecoderBuffer overrun'); +} + +DecoderBuffer.prototype.skip = function skip(bytes, fail) { + if (!(this.offset + bytes <= this.length)) + return this.error(fail || 'DecoderBuffer overrun'); + + var res = new DecoderBuffer(this.base); + + // Share reporter state + res._reporterState = this._reporterState; + + res.offset = this.offset; + res.length = this.offset + bytes; + this.offset += bytes; + return res; +} + +DecoderBuffer.prototype.raw = function raw(save) { + return this.base.slice(save ? save.offset : this.offset, this.length); +} + +function EncoderBuffer(value, reporter) { + if (Array.isArray(value)) { + this.length = 0; + this.value = value.map(function(item) { + if (!(item instanceof EncoderBuffer)) + item = new EncoderBuffer(item, reporter); + this.length += item.length; + return item; + }, this); + } else if (typeof value === 'number') { + if (!(0 <= value && value <= 0xff)) + return reporter.error('non-byte EncoderBuffer value'); + this.value = value; + this.length = 1; + } else if (typeof value === 'string') { + this.value = value; + this.length = Buffer.byteLength(value); + } else if (Buffer.isBuffer(value)) { + this.value = value; + this.length = value.length; + } else { + return reporter.error('Unsupported type: ' + typeof value); + } +} +exports.EncoderBuffer = EncoderBuffer; + +EncoderBuffer.prototype.join = function join(out, offset) { + if (!out) + out = new Buffer(this.length); + if (!offset) + offset = 0; + + if (this.length === 0) + return out; + + if (Array.isArray(this.value)) { + this.value.forEach(function(item) { + item.join(out, offset); + offset += item.length; + }); + } else { + if (typeof this.value === 'number') + out[offset] = this.value; + else if (typeof this.value === 'string') + out.write(this.value, offset); + else if (Buffer.isBuffer(this.value)) + this.value.copy(out, offset); + offset += this.length; + } + + return out; +}; + + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/base/index.js": +/*!*****************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/base/index.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var base = exports; + +base.Reporter = __webpack_require__(/*! ./reporter */ "./node_modules/asn1.js/lib/asn1/base/reporter.js").Reporter; +base.DecoderBuffer = __webpack_require__(/*! ./buffer */ "./node_modules/asn1.js/lib/asn1/base/buffer.js").DecoderBuffer; +base.EncoderBuffer = __webpack_require__(/*! ./buffer */ "./node_modules/asn1.js/lib/asn1/base/buffer.js").EncoderBuffer; +base.Node = __webpack_require__(/*! ./node */ "./node_modules/asn1.js/lib/asn1/base/node.js"); + + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/base/node.js": +/*!****************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/base/node.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var Reporter = __webpack_require__(/*! ../base */ "./node_modules/asn1.js/lib/asn1/base/index.js").Reporter; +var EncoderBuffer = __webpack_require__(/*! ../base */ "./node_modules/asn1.js/lib/asn1/base/index.js").EncoderBuffer; +var DecoderBuffer = __webpack_require__(/*! ../base */ "./node_modules/asn1.js/lib/asn1/base/index.js").DecoderBuffer; +var assert = __webpack_require__(/*! minimalistic-assert */ "./node_modules/minimalistic-assert/index.js"); + +// Supported tags +var tags = [ + 'seq', 'seqof', 'set', 'setof', 'objid', 'bool', + 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc', + 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str', + 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr' +]; + +// Public methods list +var methods = [ + 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice', + 'any', 'contains' +].concat(tags); + +// Overrided methods list +var overrided = [ + '_peekTag', '_decodeTag', '_use', + '_decodeStr', '_decodeObjid', '_decodeTime', + '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList', + + '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime', + '_encodeNull', '_encodeInt', '_encodeBool' +]; + +function Node(enc, parent) { + var state = {}; + this._baseState = state; + + state.enc = enc; + + state.parent = parent || null; + state.children = null; + + // State + state.tag = null; + state.args = null; + state.reverseArgs = null; + state.choice = null; + state.optional = false; + state.any = false; + state.obj = false; + state.use = null; + state.useDecoder = null; + state.key = null; + state['default'] = null; + state.explicit = null; + state.implicit = null; + state.contains = null; + + // Should create new instance on each method + if (!state.parent) { + state.children = []; + this._wrap(); + } +} +module.exports = Node; + +var stateProps = [ + 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice', + 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit', + 'implicit', 'contains' +]; + +Node.prototype.clone = function clone() { + var state = this._baseState; + var cstate = {}; + stateProps.forEach(function(prop) { + cstate[prop] = state[prop]; + }); + var res = new this.constructor(cstate.parent); + res._baseState = cstate; + return res; +}; + +Node.prototype._wrap = function wrap() { + var state = this._baseState; + methods.forEach(function(method) { + this[method] = function _wrappedMethod() { + var clone = new this.constructor(this); + state.children.push(clone); + return clone[method].apply(clone, arguments); + }; + }, this); +}; + +Node.prototype._init = function init(body) { + var state = this._baseState; + + assert(state.parent === null); + body.call(this); + + // Filter children + state.children = state.children.filter(function(child) { + return child._baseState.parent === this; + }, this); + assert.equal(state.children.length, 1, 'Root node can have only one child'); +}; + +Node.prototype._useArgs = function useArgs(args) { + var state = this._baseState; + + // Filter children and args + var children = args.filter(function(arg) { + return arg instanceof this.constructor; + }, this); + args = args.filter(function(arg) { + return !(arg instanceof this.constructor); + }, this); + + if (children.length !== 0) { + assert(state.children === null); + state.children = children; + + // Replace parent to maintain backward link + children.forEach(function(child) { + child._baseState.parent = this; + }, this); + } + if (args.length !== 0) { + assert(state.args === null); + state.args = args; + state.reverseArgs = args.map(function(arg) { + if (typeof arg !== 'object' || arg.constructor !== Object) + return arg; + + var res = {}; + Object.keys(arg).forEach(function(key) { + if (key == (key | 0)) + key |= 0; + var value = arg[key]; + res[value] = key; + }); + return res; + }); + } +}; + +// +// Overrided methods +// + +overrided.forEach(function(method) { + Node.prototype[method] = function _overrided() { + var state = this._baseState; + throw new Error(method + ' not implemented for encoding: ' + state.enc); + }; +}); + +// +// Public methods +// + +tags.forEach(function(tag) { + Node.prototype[tag] = function _tagMethod() { + var state = this._baseState; + var args = Array.prototype.slice.call(arguments); + + assert(state.tag === null); + state.tag = tag; + + this._useArgs(args); + + return this; + }; +}); + +Node.prototype.use = function use(item) { + assert(item); + var state = this._baseState; + + assert(state.use === null); + state.use = item; + + return this; +}; + +Node.prototype.optional = function optional() { + var state = this._baseState; + + state.optional = true; + + return this; +}; + +Node.prototype.def = function def(val) { + var state = this._baseState; + + assert(state['default'] === null); + state['default'] = val; + state.optional = true; + + return this; +}; + +Node.prototype.explicit = function explicit(num) { + var state = this._baseState; + + assert(state.explicit === null && state.implicit === null); + state.explicit = num; + + return this; +}; + +Node.prototype.implicit = function implicit(num) { + var state = this._baseState; + + assert(state.explicit === null && state.implicit === null); + state.implicit = num; + + return this; +}; + +Node.prototype.obj = function obj() { + var state = this._baseState; + var args = Array.prototype.slice.call(arguments); + + state.obj = true; + + if (args.length !== 0) + this._useArgs(args); + + return this; +}; + +Node.prototype.key = function key(newKey) { + var state = this._baseState; + + assert(state.key === null); + state.key = newKey; + + return this; +}; + +Node.prototype.any = function any() { + var state = this._baseState; + + state.any = true; + + return this; +}; + +Node.prototype.choice = function choice(obj) { + var state = this._baseState; + + assert(state.choice === null); + state.choice = obj; + this._useArgs(Object.keys(obj).map(function(key) { + return obj[key]; + })); + + return this; +}; + +Node.prototype.contains = function contains(item) { + var state = this._baseState; + + assert(state.use === null); + state.contains = item; + + return this; +}; + +// +// Decoding +// + +Node.prototype._decode = function decode(input, options) { + var state = this._baseState; + + // Decode root node + if (state.parent === null) + return input.wrapResult(state.children[0]._decode(input, options)); + + var result = state['default']; + var present = true; + + var prevKey = null; + if (state.key !== null) + prevKey = input.enterKey(state.key); + + // Check if tag is there + if (state.optional) { + var tag = null; + if (state.explicit !== null) + tag = state.explicit; + else if (state.implicit !== null) + tag = state.implicit; + else if (state.tag !== null) + tag = state.tag; + + if (tag === null && !state.any) { + // Trial and Error + var save = input.save(); + try { + if (state.choice === null) + this._decodeGeneric(state.tag, input, options); + else + this._decodeChoice(input, options); + present = true; + } catch (e) { + present = false; + } + input.restore(save); + } else { + present = this._peekTag(input, tag, state.any); + + if (input.isError(present)) + return present; + } + } + + // Push object on stack + var prevObj; + if (state.obj && present) + prevObj = input.enterObject(); + + if (present) { + // Unwrap explicit values + if (state.explicit !== null) { + var explicit = this._decodeTag(input, state.explicit); + if (input.isError(explicit)) + return explicit; + input = explicit; + } + + var start = input.offset; + + // Unwrap implicit and normal values + if (state.use === null && state.choice === null) { + if (state.any) + var save = input.save(); + var body = this._decodeTag( + input, + state.implicit !== null ? state.implicit : state.tag, + state.any + ); + if (input.isError(body)) + return body; + + if (state.any) + result = input.raw(save); + else + input = body; + } + + if (options && options.track && state.tag !== null) + options.track(input.path(), start, input.length, 'tagged'); + + if (options && options.track && state.tag !== null) + options.track(input.path(), input.offset, input.length, 'content'); + + // Select proper method for tag + if (state.any) + result = result; + else if (state.choice === null) + result = this._decodeGeneric(state.tag, input, options); + else + result = this._decodeChoice(input, options); + + if (input.isError(result)) + return result; + + // Decode children + if (!state.any && state.choice === null && state.children !== null) { + state.children.forEach(function decodeChildren(child) { + // NOTE: We are ignoring errors here, to let parser continue with other + // parts of encoded data + child._decode(input, options); + }); + } + + // Decode contained/encoded by schema, only in bit or octet strings + if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) { + var data = new DecoderBuffer(result); + result = this._getUse(state.contains, input._reporterState.obj) + ._decode(data, options); + } + } + + // Pop object + if (state.obj && present) + result = input.leaveObject(prevObj); + + // Set key + if (state.key !== null && (result !== null || present === true)) + input.leaveKey(prevKey, state.key, result); + else if (prevKey !== null) + input.exitKey(prevKey); + + return result; +}; + +Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) { + var state = this._baseState; + + if (tag === 'seq' || tag === 'set') + return null; + if (tag === 'seqof' || tag === 'setof') + return this._decodeList(input, tag, state.args[0], options); + else if (/str$/.test(tag)) + return this._decodeStr(input, tag, options); + else if (tag === 'objid' && state.args) + return this._decodeObjid(input, state.args[0], state.args[1], options); + else if (tag === 'objid') + return this._decodeObjid(input, null, null, options); + else if (tag === 'gentime' || tag === 'utctime') + return this._decodeTime(input, tag, options); + else if (tag === 'null_') + return this._decodeNull(input, options); + else if (tag === 'bool') + return this._decodeBool(input, options); + else if (tag === 'objDesc') + return this._decodeStr(input, tag, options); + else if (tag === 'int' || tag === 'enum') + return this._decodeInt(input, state.args && state.args[0], options); + + if (state.use !== null) { + return this._getUse(state.use, input._reporterState.obj) + ._decode(input, options); + } else { + return input.error('unknown tag: ' + tag); + } +}; + +Node.prototype._getUse = function _getUse(entity, obj) { + + var state = this._baseState; + // Create altered use decoder if implicit is set + state.useDecoder = this._use(entity, obj); + assert(state.useDecoder._baseState.parent === null); + state.useDecoder = state.useDecoder._baseState.children[0]; + if (state.implicit !== state.useDecoder._baseState.implicit) { + state.useDecoder = state.useDecoder.clone(); + state.useDecoder._baseState.implicit = state.implicit; + } + return state.useDecoder; +}; + +Node.prototype._decodeChoice = function decodeChoice(input, options) { + var state = this._baseState; + var result = null; + var match = false; + + Object.keys(state.choice).some(function(key) { + var save = input.save(); + var node = state.choice[key]; + try { + var value = node._decode(input, options); + if (input.isError(value)) + return false; + + result = { type: key, value: value }; + match = true; + } catch (e) { + input.restore(save); + return false; + } + return true; + }, this); + + if (!match) + return input.error('Choice not matched'); + + return result; +}; + +// +// Encoding +// + +Node.prototype._createEncoderBuffer = function createEncoderBuffer(data) { + return new EncoderBuffer(data, this.reporter); +}; + +Node.prototype._encode = function encode(data, reporter, parent) { + var state = this._baseState; + if (state['default'] !== null && state['default'] === data) + return; + + var result = this._encodeValue(data, reporter, parent); + if (result === undefined) + return; + + if (this._skipDefault(result, reporter, parent)) + return; + + return result; +}; + +Node.prototype._encodeValue = function encode(data, reporter, parent) { + var state = this._baseState; + + // Decode root node + if (state.parent === null) + return state.children[0]._encode(data, reporter || new Reporter()); + + var result = null; + + // Set reporter to share it with a child class + this.reporter = reporter; + + // Check if data is there + if (state.optional && data === undefined) { + if (state['default'] !== null) + data = state['default'] + else + return; + } + + // Encode children first + var content = null; + var primitive = false; + if (state.any) { + // Anything that was given is translated to buffer + result = this._createEncoderBuffer(data); + } else if (state.choice) { + result = this._encodeChoice(data, reporter); + } else if (state.contains) { + content = this._getUse(state.contains, parent)._encode(data, reporter); + primitive = true; + } else if (state.children) { + content = state.children.map(function(child) { + if (child._baseState.tag === 'null_') + return child._encode(null, reporter, data); + + if (child._baseState.key === null) + return reporter.error('Child should have a key'); + var prevKey = reporter.enterKey(child._baseState.key); + + if (typeof data !== 'object') + return reporter.error('Child expected, but input is not object'); + + var res = child._encode(data[child._baseState.key], reporter, data); + reporter.leaveKey(prevKey); + + return res; + }, this).filter(function(child) { + return child; + }); + content = this._createEncoderBuffer(content); + } else { + if (state.tag === 'seqof' || state.tag === 'setof') { + // TODO(indutny): this should be thrown on DSL level + if (!(state.args && state.args.length === 1)) + return reporter.error('Too many args for : ' + state.tag); + + if (!Array.isArray(data)) + return reporter.error('seqof/setof, but data is not Array'); + + var child = this.clone(); + child._baseState.implicit = null; + content = this._createEncoderBuffer(data.map(function(item) { + var state = this._baseState; + + return this._getUse(state.args[0], data)._encode(item, reporter); + }, child)); + } else if (state.use !== null) { + result = this._getUse(state.use, parent)._encode(data, reporter); + } else { + content = this._encodePrimitive(state.tag, data); + primitive = true; + } + } + + // Encode data itself + var result; + if (!state.any && state.choice === null) { + var tag = state.implicit !== null ? state.implicit : state.tag; + var cls = state.implicit === null ? 'universal' : 'context'; + + if (tag === null) { + if (state.use === null) + reporter.error('Tag could be omitted only for .use()'); + } else { + if (state.use === null) + result = this._encodeComposite(tag, primitive, cls, content); + } + } + + // Wrap in explicit + if (state.explicit !== null) + result = this._encodeComposite(state.explicit, false, 'context', result); + + return result; +}; + +Node.prototype._encodeChoice = function encodeChoice(data, reporter) { + var state = this._baseState; + + var node = state.choice[data.type]; + if (!node) { + assert( + false, + data.type + ' not found in ' + + JSON.stringify(Object.keys(state.choice))); + } + return node._encode(data.value, reporter); +}; + +Node.prototype._encodePrimitive = function encodePrimitive(tag, data) { + var state = this._baseState; + + if (/str$/.test(tag)) + return this._encodeStr(data, tag); + else if (tag === 'objid' && state.args) + return this._encodeObjid(data, state.reverseArgs[0], state.args[1]); + else if (tag === 'objid') + return this._encodeObjid(data, null, null); + else if (tag === 'gentime' || tag === 'utctime') + return this._encodeTime(data, tag); + else if (tag === 'null_') + return this._encodeNull(); + else if (tag === 'int' || tag === 'enum') + return this._encodeInt(data, state.args && state.reverseArgs[0]); + else if (tag === 'bool') + return this._encodeBool(data); + else if (tag === 'objDesc') + return this._encodeStr(data, tag); + else + throw new Error('Unsupported tag: ' + tag); +}; + +Node.prototype._isNumstr = function isNumstr(str) { + return /^[0-9 ]*$/.test(str); +}; + +Node.prototype._isPrintstr = function isPrintstr(str) { + return /^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(str); +}; + + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/base/reporter.js": +/*!********************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/base/reporter.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"); + +function Reporter(options) { + this._reporterState = { + obj: null, + path: [], + options: options || {}, + errors: [] + }; +} +exports.Reporter = Reporter; + +Reporter.prototype.isError = function isError(obj) { + return obj instanceof ReporterError; +}; + +Reporter.prototype.save = function save() { + var state = this._reporterState; + + return { obj: state.obj, pathLen: state.path.length }; +}; + +Reporter.prototype.restore = function restore(data) { + var state = this._reporterState; + + state.obj = data.obj; + state.path = state.path.slice(0, data.pathLen); +}; + +Reporter.prototype.enterKey = function enterKey(key) { + return this._reporterState.path.push(key); +}; + +Reporter.prototype.exitKey = function exitKey(index) { + var state = this._reporterState; + + state.path = state.path.slice(0, index - 1); +}; + +Reporter.prototype.leaveKey = function leaveKey(index, key, value) { + var state = this._reporterState; + + this.exitKey(index); + if (state.obj !== null) + state.obj[key] = value; +}; + +Reporter.prototype.path = function path() { + return this._reporterState.path.join('/'); +}; + +Reporter.prototype.enterObject = function enterObject() { + var state = this._reporterState; + + var prev = state.obj; + state.obj = {}; + return prev; +}; + +Reporter.prototype.leaveObject = function leaveObject(prev) { + var state = this._reporterState; + + var now = state.obj; + state.obj = prev; + return now; +}; + +Reporter.prototype.error = function error(msg) { + var err; + var state = this._reporterState; + + var inherited = msg instanceof ReporterError; + if (inherited) { + err = msg; + } else { + err = new ReporterError(state.path.map(function(elem) { + return '[' + JSON.stringify(elem) + ']'; + }).join(''), msg.message || msg, msg.stack); + } + + if (!state.options.partial) + throw err; + + if (!inherited) + state.errors.push(err); + + return err; +}; + +Reporter.prototype.wrapResult = function wrapResult(result) { + var state = this._reporterState; + if (!state.options.partial) + return result; + + return { + result: this.isError(result) ? null : result, + errors: state.errors + }; +}; + +function ReporterError(path, msg) { + this.path = path; + this.rethrow(msg); +}; +inherits(ReporterError, Error); + +ReporterError.prototype.rethrow = function rethrow(msg) { + this.message = msg + ' at: ' + (this.path || '(shallow)'); + if (Error.captureStackTrace) + Error.captureStackTrace(this, ReporterError); + + if (!this.stack) { + try { + // IE only adds stack when thrown + throw new Error(this.message); + } catch (e) { + this.stack = e.stack; + } + } + return this; +}; + + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/constants/der.js": +/*!********************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/constants/der.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var constants = __webpack_require__(/*! ../constants */ "./node_modules/asn1.js/lib/asn1/constants/index.js"); + +exports.tagClass = { + 0: 'universal', + 1: 'application', + 2: 'context', + 3: 'private' +}; +exports.tagClassByName = constants._reverse(exports.tagClass); + +exports.tag = { + 0x00: 'end', + 0x01: 'bool', + 0x02: 'int', + 0x03: 'bitstr', + 0x04: 'octstr', + 0x05: 'null_', + 0x06: 'objid', + 0x07: 'objDesc', + 0x08: 'external', + 0x09: 'real', + 0x0a: 'enum', + 0x0b: 'embed', + 0x0c: 'utf8str', + 0x0d: 'relativeOid', + 0x10: 'seq', + 0x11: 'set', + 0x12: 'numstr', + 0x13: 'printstr', + 0x14: 't61str', + 0x15: 'videostr', + 0x16: 'ia5str', + 0x17: 'utctime', + 0x18: 'gentime', + 0x19: 'graphstr', + 0x1a: 'iso646str', + 0x1b: 'genstr', + 0x1c: 'unistr', + 0x1d: 'charstr', + 0x1e: 'bmpstr' +}; +exports.tagByName = constants._reverse(exports.tag); + + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/constants/index.js": +/*!**********************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/constants/index.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var constants = exports; + +// Helper +constants._reverse = function reverse(map) { + var res = {}; + + Object.keys(map).forEach(function(key) { + // Convert key to integer if it is stringified + if ((key | 0) == key) + key = key | 0; + + var value = map[key]; + res[value] = key; + }); + + return res; +}; + +constants.der = __webpack_require__(/*! ./der */ "./node_modules/asn1.js/lib/asn1/constants/der.js"); + + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/decoders/der.js": +/*!*******************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/decoders/der.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"); + +var asn1 = __webpack_require__(/*! ../../asn1 */ "./node_modules/asn1.js/lib/asn1.js"); +var base = asn1.base; +var bignum = asn1.bignum; + +// Import DER constants +var der = asn1.constants.der; + +function DERDecoder(entity) { + this.enc = 'der'; + this.name = entity.name; + this.entity = entity; + + // Construct base tree + this.tree = new DERNode(); + this.tree._init(entity.body); +}; +module.exports = DERDecoder; + +DERDecoder.prototype.decode = function decode(data, options) { + if (!(data instanceof base.DecoderBuffer)) + data = new base.DecoderBuffer(data, options); + + return this.tree._decode(data, options); +}; + +// Tree methods + +function DERNode(parent) { + base.Node.call(this, 'der', parent); +} +inherits(DERNode, base.Node); + +DERNode.prototype._peekTag = function peekTag(buffer, tag, any) { + if (buffer.isEmpty()) + return false; + + var state = buffer.save(); + var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: "' + tag + '"'); + if (buffer.isError(decodedTag)) + return decodedTag; + + buffer.restore(state); + + return decodedTag.tag === tag || decodedTag.tagStr === tag || + (decodedTag.tagStr + 'of') === tag || any; +}; + +DERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) { + var decodedTag = derDecodeTag(buffer, + 'Failed to decode tag of "' + tag + '"'); + if (buffer.isError(decodedTag)) + return decodedTag; + + var len = derDecodeLen(buffer, + decodedTag.primitive, + 'Failed to get length of "' + tag + '"'); + + // Failure + if (buffer.isError(len)) + return len; + + if (!any && + decodedTag.tag !== tag && + decodedTag.tagStr !== tag && + decodedTag.tagStr + 'of' !== tag) { + return buffer.error('Failed to match tag: "' + tag + '"'); + } + + if (decodedTag.primitive || len !== null) + return buffer.skip(len, 'Failed to match body of: "' + tag + '"'); + + // Indefinite length... find END tag + var state = buffer.save(); + var res = this._skipUntilEnd( + buffer, + 'Failed to skip indefinite length body: "' + this.tag + '"'); + if (buffer.isError(res)) + return res; + + len = buffer.offset - state.offset; + buffer.restore(state); + return buffer.skip(len, 'Failed to match body of: "' + tag + '"'); +}; + +DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) { + while (true) { + var tag = derDecodeTag(buffer, fail); + if (buffer.isError(tag)) + return tag; + var len = derDecodeLen(buffer, tag.primitive, fail); + if (buffer.isError(len)) + return len; + + var res; + if (tag.primitive || len !== null) + res = buffer.skip(len) + else + res = this._skipUntilEnd(buffer, fail); + + // Failure + if (buffer.isError(res)) + return res; + + if (tag.tagStr === 'end') + break; + } +}; + +DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder, + options) { + var result = []; + while (!buffer.isEmpty()) { + var possibleEnd = this._peekTag(buffer, 'end'); + if (buffer.isError(possibleEnd)) + return possibleEnd; + + var res = decoder.decode(buffer, 'der', options); + if (buffer.isError(res) && possibleEnd) + break; + result.push(res); + } + return result; +}; + +DERNode.prototype._decodeStr = function decodeStr(buffer, tag) { + if (tag === 'bitstr') { + var unused = buffer.readUInt8(); + if (buffer.isError(unused)) + return unused; + return { unused: unused, data: buffer.raw() }; + } else if (tag === 'bmpstr') { + var raw = buffer.raw(); + if (raw.length % 2 === 1) + return buffer.error('Decoding of string type: bmpstr length mismatch'); + + var str = ''; + for (var i = 0; i < raw.length / 2; i++) { + str += String.fromCharCode(raw.readUInt16BE(i * 2)); + } + return str; + } else if (tag === 'numstr') { + var numstr = buffer.raw().toString('ascii'); + if (!this._isNumstr(numstr)) { + return buffer.error('Decoding of string type: ' + + 'numstr unsupported characters'); + } + return numstr; + } else if (tag === 'octstr') { + return buffer.raw(); + } else if (tag === 'objDesc') { + return buffer.raw(); + } else if (tag === 'printstr') { + var printstr = buffer.raw().toString('ascii'); + if (!this._isPrintstr(printstr)) { + return buffer.error('Decoding of string type: ' + + 'printstr unsupported characters'); + } + return printstr; + } else if (/str$/.test(tag)) { + return buffer.raw().toString(); + } else { + return buffer.error('Decoding of string type: ' + tag + ' unsupported'); + } +}; + +DERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) { + var result; + var identifiers = []; + var ident = 0; + while (!buffer.isEmpty()) { + var subident = buffer.readUInt8(); + ident <<= 7; + ident |= subident & 0x7f; + if ((subident & 0x80) === 0) { + identifiers.push(ident); + ident = 0; + } + } + if (subident & 0x80) + identifiers.push(ident); + + var first = (identifiers[0] / 40) | 0; + var second = identifiers[0] % 40; + + if (relative) + result = identifiers; + else + result = [first, second].concat(identifiers.slice(1)); + + if (values) { + var tmp = values[result.join(' ')]; + if (tmp === undefined) + tmp = values[result.join('.')]; + if (tmp !== undefined) + result = tmp; + } + + return result; +}; + +DERNode.prototype._decodeTime = function decodeTime(buffer, tag) { + var str = buffer.raw().toString(); + if (tag === 'gentime') { + var year = str.slice(0, 4) | 0; + var mon = str.slice(4, 6) | 0; + var day = str.slice(6, 8) | 0; + var hour = str.slice(8, 10) | 0; + var min = str.slice(10, 12) | 0; + var sec = str.slice(12, 14) | 0; + } else if (tag === 'utctime') { + var year = str.slice(0, 2) | 0; + var mon = str.slice(2, 4) | 0; + var day = str.slice(4, 6) | 0; + var hour = str.slice(6, 8) | 0; + var min = str.slice(8, 10) | 0; + var sec = str.slice(10, 12) | 0; + if (year < 70) + year = 2000 + year; + else + year = 1900 + year; + } else { + return buffer.error('Decoding ' + tag + ' time is not supported yet'); + } + + return Date.UTC(year, mon - 1, day, hour, min, sec, 0); +}; + +DERNode.prototype._decodeNull = function decodeNull(buffer) { + return null; +}; + +DERNode.prototype._decodeBool = function decodeBool(buffer) { + var res = buffer.readUInt8(); + if (buffer.isError(res)) + return res; + else + return res !== 0; +}; + +DERNode.prototype._decodeInt = function decodeInt(buffer, values) { + // Bigint, return as it is (assume big endian) + var raw = buffer.raw(); + var res = new bignum(raw); + + if (values) + res = values[res.toString(10)] || res; + + return res; +}; + +DERNode.prototype._use = function use(entity, obj) { + if (typeof entity === 'function') + entity = entity(obj); + return entity._getDecoder('der').tree; +}; + +// Utility methods + +function derDecodeTag(buf, fail) { + var tag = buf.readUInt8(fail); + if (buf.isError(tag)) + return tag; + + var cls = der.tagClass[tag >> 6]; + var primitive = (tag & 0x20) === 0; + + // Multi-octet tag - load + if ((tag & 0x1f) === 0x1f) { + var oct = tag; + tag = 0; + while ((oct & 0x80) === 0x80) { + oct = buf.readUInt8(fail); + if (buf.isError(oct)) + return oct; + + tag <<= 7; + tag |= oct & 0x7f; + } + } else { + tag &= 0x1f; + } + var tagStr = der.tag[tag]; + + return { + cls: cls, + primitive: primitive, + tag: tag, + tagStr: tagStr + }; +} + +function derDecodeLen(buf, primitive, fail) { + var len = buf.readUInt8(fail); + if (buf.isError(len)) + return len; + + // Indefinite form + if (!primitive && len === 0x80) + return null; + + // Definite form + if ((len & 0x80) === 0) { + // Short form + return len; + } + + // Long form + var num = len & 0x7f; + if (num > 4) + return buf.error('length octect is too long'); + + len = 0; + for (var i = 0; i < num; i++) { + len <<= 8; + var j = buf.readUInt8(fail); + if (buf.isError(j)) + return j; + len |= j; + } + + return len; +} + + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/decoders/index.js": +/*!*********************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/decoders/index.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var decoders = exports; + +decoders.der = __webpack_require__(/*! ./der */ "./node_modules/asn1.js/lib/asn1/decoders/der.js"); +decoders.pem = __webpack_require__(/*! ./pem */ "./node_modules/asn1.js/lib/asn1/decoders/pem.js"); + + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/decoders/pem.js": +/*!*******************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/decoders/pem.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"); +var Buffer = __webpack_require__(/*! buffer */ "./node_modules/buffer/index.js").Buffer; + +var DERDecoder = __webpack_require__(/*! ./der */ "./node_modules/asn1.js/lib/asn1/decoders/der.js"); + +function PEMDecoder(entity) { + DERDecoder.call(this, entity); + this.enc = 'pem'; +}; +inherits(PEMDecoder, DERDecoder); +module.exports = PEMDecoder; + +PEMDecoder.prototype.decode = function decode(data, options) { + var lines = data.toString().split(/[\r\n]+/g); + + var label = options.label.toUpperCase(); + + var re = /^-----(BEGIN|END) ([^-]+)-----$/; + var start = -1; + var end = -1; + for (var i = 0; i < lines.length; i++) { + var match = lines[i].match(re); + if (match === null) + continue; + + if (match[2] !== label) + continue; + + if (start === -1) { + if (match[1] !== 'BEGIN') + break; + start = i; + } else { + if (match[1] !== 'END') + break; + end = i; + break; + } + } + if (start === -1 || end === -1) + throw new Error('PEM section not found for: ' + label); + + var base64 = lines.slice(start + 1, end).join(''); + // Remove excessive symbols + base64.replace(/[^a-z0-9\+\/=]+/gi, ''); + + var input = new Buffer(base64, 'base64'); + return DERDecoder.prototype.decode.call(this, input, options); +}; + + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/encoders/der.js": +/*!*******************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/encoders/der.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"); +var Buffer = __webpack_require__(/*! buffer */ "./node_modules/buffer/index.js").Buffer; + +var asn1 = __webpack_require__(/*! ../../asn1 */ "./node_modules/asn1.js/lib/asn1.js"); +var base = asn1.base; + +// Import DER constants +var der = asn1.constants.der; + +function DEREncoder(entity) { + this.enc = 'der'; + this.name = entity.name; + this.entity = entity; + + // Construct base tree + this.tree = new DERNode(); + this.tree._init(entity.body); +}; +module.exports = DEREncoder; + +DEREncoder.prototype.encode = function encode(data, reporter) { + return this.tree._encode(data, reporter).join(); +}; + +// Tree methods + +function DERNode(parent) { + base.Node.call(this, 'der', parent); +} +inherits(DERNode, base.Node); + +DERNode.prototype._encodeComposite = function encodeComposite(tag, + primitive, + cls, + content) { + var encodedTag = encodeTag(tag, primitive, cls, this.reporter); + + // Short form + if (content.length < 0x80) { + var header = new Buffer(2); + header[0] = encodedTag; + header[1] = content.length; + return this._createEncoderBuffer([ header, content ]); + } + + // Long form + // Count octets required to store length + var lenOctets = 1; + for (var i = content.length; i >= 0x100; i >>= 8) + lenOctets++; + + var header = new Buffer(1 + 1 + lenOctets); + header[0] = encodedTag; + header[1] = 0x80 | lenOctets; + + for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8) + header[i] = j & 0xff; + + return this._createEncoderBuffer([ header, content ]); +}; + +DERNode.prototype._encodeStr = function encodeStr(str, tag) { + if (tag === 'bitstr') { + return this._createEncoderBuffer([ str.unused | 0, str.data ]); + } else if (tag === 'bmpstr') { + var buf = new Buffer(str.length * 2); + for (var i = 0; i < str.length; i++) { + buf.writeUInt16BE(str.charCodeAt(i), i * 2); + } + return this._createEncoderBuffer(buf); + } else if (tag === 'numstr') { + if (!this._isNumstr(str)) { + return this.reporter.error('Encoding of string type: numstr supports ' + + 'only digits and space'); + } + return this._createEncoderBuffer(str); + } else if (tag === 'printstr') { + if (!this._isPrintstr(str)) { + return this.reporter.error('Encoding of string type: printstr supports ' + + 'only latin upper and lower case letters, ' + + 'digits, space, apostrophe, left and rigth ' + + 'parenthesis, plus sign, comma, hyphen, ' + + 'dot, slash, colon, equal sign, ' + + 'question mark'); + } + return this._createEncoderBuffer(str); + } else if (/str$/.test(tag)) { + return this._createEncoderBuffer(str); + } else if (tag === 'objDesc') { + return this._createEncoderBuffer(str); + } else { + return this.reporter.error('Encoding of string type: ' + tag + + ' unsupported'); + } +}; + +DERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) { + if (typeof id === 'string') { + if (!values) + return this.reporter.error('string objid given, but no values map found'); + if (!values.hasOwnProperty(id)) + return this.reporter.error('objid not found in values map'); + id = values[id].split(/[\s\.]+/g); + for (var i = 0; i < id.length; i++) + id[i] |= 0; + } else if (Array.isArray(id)) { + id = id.slice(); + for (var i = 0; i < id.length; i++) + id[i] |= 0; + } + + if (!Array.isArray(id)) { + return this.reporter.error('objid() should be either array or string, ' + + 'got: ' + JSON.stringify(id)); + } + + if (!relative) { + if (id[1] >= 40) + return this.reporter.error('Second objid identifier OOB'); + id.splice(0, 2, id[0] * 40 + id[1]); + } + + // Count number of octets + var size = 0; + for (var i = 0; i < id.length; i++) { + var ident = id[i]; + for (size++; ident >= 0x80; ident >>= 7) + size++; + } + + var objid = new Buffer(size); + var offset = objid.length - 1; + for (var i = id.length - 1; i >= 0; i--) { + var ident = id[i]; + objid[offset--] = ident & 0x7f; + while ((ident >>= 7) > 0) + objid[offset--] = 0x80 | (ident & 0x7f); + } + + return this._createEncoderBuffer(objid); +}; + +function two(num) { + if (num < 10) + return '0' + num; + else + return num; +} + +DERNode.prototype._encodeTime = function encodeTime(time, tag) { + var str; + var date = new Date(time); + + if (tag === 'gentime') { + str = [ + two(date.getFullYear()), + two(date.getUTCMonth() + 1), + two(date.getUTCDate()), + two(date.getUTCHours()), + two(date.getUTCMinutes()), + two(date.getUTCSeconds()), + 'Z' + ].join(''); + } else if (tag === 'utctime') { + str = [ + two(date.getFullYear() % 100), + two(date.getUTCMonth() + 1), + two(date.getUTCDate()), + two(date.getUTCHours()), + two(date.getUTCMinutes()), + two(date.getUTCSeconds()), + 'Z' + ].join(''); + } else { + this.reporter.error('Encoding ' + tag + ' time is not supported yet'); + } + + return this._encodeStr(str, 'octstr'); +}; + +DERNode.prototype._encodeNull = function encodeNull() { + return this._createEncoderBuffer(''); +}; + +DERNode.prototype._encodeInt = function encodeInt(num, values) { + if (typeof num === 'string') { + if (!values) + return this.reporter.error('String int or enum given, but no values map'); + if (!values.hasOwnProperty(num)) { + return this.reporter.error('Values map doesn\'t contain: ' + + JSON.stringify(num)); + } + num = values[num]; + } + + // Bignum, assume big endian + if (typeof num !== 'number' && !Buffer.isBuffer(num)) { + var numArray = num.toArray(); + if (!num.sign && numArray[0] & 0x80) { + numArray.unshift(0); + } + num = new Buffer(numArray); + } + + if (Buffer.isBuffer(num)) { + var size = num.length; + if (num.length === 0) + size++; + + var out = new Buffer(size); + num.copy(out); + if (num.length === 0) + out[0] = 0 + return this._createEncoderBuffer(out); + } + + if (num < 0x80) + return this._createEncoderBuffer(num); + + if (num < 0x100) + return this._createEncoderBuffer([0, num]); + + var size = 1; + for (var i = num; i >= 0x100; i >>= 8) + size++; + + var out = new Array(size); + for (var i = out.length - 1; i >= 0; i--) { + out[i] = num & 0xff; + num >>= 8; + } + if(out[0] & 0x80) { + out.unshift(0); + } + + return this._createEncoderBuffer(new Buffer(out)); +}; + +DERNode.prototype._encodeBool = function encodeBool(value) { + return this._createEncoderBuffer(value ? 0xff : 0); +}; + +DERNode.prototype._use = function use(entity, obj) { + if (typeof entity === 'function') + entity = entity(obj); + return entity._getEncoder('der').tree; +}; + +DERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) { + var state = this._baseState; + var i; + if (state['default'] === null) + return false; + + var data = dataBuffer.join(); + if (state.defaultBuffer === undefined) + state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join(); + + if (data.length !== state.defaultBuffer.length) + return false; + + for (i=0; i < data.length; i++) + if (data[i] !== state.defaultBuffer[i]) + return false; + + return true; +}; + +// Utility methods + +function encodeTag(tag, primitive, cls, reporter) { + var res; + + if (tag === 'seqof') + tag = 'seq'; + else if (tag === 'setof') + tag = 'set'; + + if (der.tagByName.hasOwnProperty(tag)) + res = der.tagByName[tag]; + else if (typeof tag === 'number' && (tag | 0) === tag) + res = tag; + else + return reporter.error('Unknown tag: ' + tag); + + if (res >= 0x1f) + return reporter.error('Multi-octet tag encoding unsupported'); + + if (!primitive) + res |= 0x20; + + res |= (der.tagClassByName[cls || 'universal'] << 6); + + return res; +} + + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/encoders/index.js": +/*!*********************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/encoders/index.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var encoders = exports; + +encoders.der = __webpack_require__(/*! ./der */ "./node_modules/asn1.js/lib/asn1/encoders/der.js"); +encoders.pem = __webpack_require__(/*! ./pem */ "./node_modules/asn1.js/lib/asn1/encoders/pem.js"); + + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/encoders/pem.js": +/*!*******************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/encoders/pem.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"); + +var DEREncoder = __webpack_require__(/*! ./der */ "./node_modules/asn1.js/lib/asn1/encoders/der.js"); + +function PEMEncoder(entity) { + DEREncoder.call(this, entity); + this.enc = 'pem'; +}; +inherits(PEMEncoder, DEREncoder); +module.exports = PEMEncoder; + +PEMEncoder.prototype.encode = function encode(data, options) { + var buf = DEREncoder.prototype.encode.call(this, data); + + var p = buf.toString('base64'); + var out = [ '-----BEGIN ' + options.label + '-----' ]; + for (var i = 0; i < p.length; i += 64) + out.push(p.slice(i, i + 64)); + out.push('-----END ' + options.label + '-----'); + return out.join('\n'); +}; + + +/***/ }), + +/***/ "./node_modules/async/lib/async.js": +/*!*****************************************!*\ + !*** ./node_modules/async/lib/async.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(process, setImmediate) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! + * async + * https://github.com/caolan/async + * + * Copyright 2010-2014 Caolan McMahon + * Released under the MIT license + */ +/*jshint onevar: false, indent:4 */ +/*global setImmediate: false, setTimeout: false, console: false */ +(function () { + + var async = {}; + + // global on the server, window in the browser + var root, previous_async; + + root = this; + if (root != null) { + previous_async = root.async; + } + + async.noConflict = function () { + root.async = previous_async; + return async; + }; + + function only_once(fn) { + var called = false; + return function() { + if (called) throw new Error("Callback was already called."); + called = true; + fn.apply(root, arguments); + } + } + + //// cross-browser compatiblity functions //// + + var _toString = Object.prototype.toString; + + var _isArray = Array.isArray || function (obj) { + return _toString.call(obj) === '[object Array]'; + }; + + var _each = function (arr, iterator) { + for (var i = 0; i < arr.length; i += 1) { + iterator(arr[i], i, arr); + } + }; + + var _map = function (arr, iterator) { + if (arr.map) { + return arr.map(iterator); + } + var results = []; + _each(arr, function (x, i, a) { + results.push(iterator(x, i, a)); + }); + return results; + }; + + var _reduce = function (arr, iterator, memo) { + if (arr.reduce) { + return arr.reduce(iterator, memo); + } + _each(arr, function (x, i, a) { + memo = iterator(memo, x, i, a); + }); + return memo; + }; + + var _keys = function (obj) { + if (Object.keys) { + return Object.keys(obj); + } + var keys = []; + for (var k in obj) { + if (obj.hasOwnProperty(k)) { + keys.push(k); + } + } + return keys; + }; + + //// exported async module functions //// + + //// nextTick implementation with browser-compatible fallback //// + if (typeof process === 'undefined' || !(process.nextTick)) { + if (typeof setImmediate === 'function') { + async.nextTick = function (fn) { + // not a direct alias for IE10 compatibility + setImmediate(fn); + }; + async.setImmediate = async.nextTick; + } + else { + async.nextTick = function (fn) { + setTimeout(fn, 0); + }; + async.setImmediate = async.nextTick; + } + } + else { + async.nextTick = process.nextTick; + if (typeof setImmediate !== 'undefined') { + async.setImmediate = function (fn) { + // not a direct alias for IE10 compatibility + setImmediate(fn); + }; + } + else { + async.setImmediate = async.nextTick; + } + } + + async.each = function (arr, iterator, callback) { + callback = callback || function () {}; + if (!arr.length) { + return callback(); + } + var completed = 0; + _each(arr, function (x) { + iterator(x, only_once(done) ); + }); + function done(err) { + if (err) { + callback(err); + callback = function () {}; + } + else { + completed += 1; + if (completed >= arr.length) { + callback(); + } + } + } + }; + async.forEach = async.each; + + async.eachSeries = function (arr, iterator, callback) { + callback = callback || function () {}; + if (!arr.length) { + return callback(); + } + var completed = 0; + var iterate = function () { + iterator(arr[completed], function (err) { + if (err) { + callback(err); + callback = function () {}; + } + else { + completed += 1; + if (completed >= arr.length) { + callback(); + } + else { + iterate(); + } + } + }); + }; + iterate(); + }; + async.forEachSeries = async.eachSeries; + + async.eachLimit = function (arr, limit, iterator, callback) { + var fn = _eachLimit(limit); + fn.apply(null, [arr, iterator, callback]); + }; + async.forEachLimit = async.eachLimit; + + var _eachLimit = function (limit) { + + return function (arr, iterator, callback) { + callback = callback || function () {}; + if (!arr.length || limit <= 0) { + return callback(); + } + var completed = 0; + var started = 0; + var running = 0; + + (function replenish () { + if (completed >= arr.length) { + return callback(); + } + + while (running < limit && started < arr.length) { + started += 1; + running += 1; + iterator(arr[started - 1], function (err) { + if (err) { + callback(err); + callback = function () {}; + } + else { + completed += 1; + running -= 1; + if (completed >= arr.length) { + callback(); + } + else { + replenish(); + } + } + }); + } + })(); + }; + }; + + + var doParallel = function (fn) { + return function () { + var args = Array.prototype.slice.call(arguments); + return fn.apply(null, [async.each].concat(args)); + }; + }; + var doParallelLimit = function(limit, fn) { + return function () { + var args = Array.prototype.slice.call(arguments); + return fn.apply(null, [_eachLimit(limit)].concat(args)); + }; + }; + var doSeries = function (fn) { + return function () { + var args = Array.prototype.slice.call(arguments); + return fn.apply(null, [async.eachSeries].concat(args)); + }; + }; + + + var _asyncMap = function (eachfn, arr, iterator, callback) { + arr = _map(arr, function (x, i) { + return {index: i, value: x}; + }); + if (!callback) { + eachfn(arr, function (x, callback) { + iterator(x.value, function (err) { + callback(err); + }); + }); + } else { + var results = []; + eachfn(arr, function (x, callback) { + iterator(x.value, function (err, v) { + results[x.index] = v; + callback(err); + }); + }, function (err) { + callback(err, results); + }); + } + }; + async.map = doParallel(_asyncMap); + async.mapSeries = doSeries(_asyncMap); + async.mapLimit = function (arr, limit, iterator, callback) { + return _mapLimit(limit)(arr, iterator, callback); + }; + + var _mapLimit = function(limit) { + return doParallelLimit(limit, _asyncMap); + }; + + // reduce only has a series version, as doing reduce in parallel won't + // work in many situations. + async.reduce = function (arr, memo, iterator, callback) { + async.eachSeries(arr, function (x, callback) { + iterator(memo, x, function (err, v) { + memo = v; + callback(err); + }); + }, function (err) { + callback(err, memo); + }); + }; + // inject alias + async.inject = async.reduce; + // foldl alias + async.foldl = async.reduce; + + async.reduceRight = function (arr, memo, iterator, callback) { + var reversed = _map(arr, function (x) { + return x; + }).reverse(); + async.reduce(reversed, memo, iterator, callback); + }; + // foldr alias + async.foldr = async.reduceRight; + + var _filter = function (eachfn, arr, iterator, callback) { + var results = []; + arr = _map(arr, function (x, i) { + return {index: i, value: x}; + }); + eachfn(arr, function (x, callback) { + iterator(x.value, function (v) { + if (v) { + results.push(x); + } + callback(); + }); + }, function (err) { + callback(_map(results.sort(function (a, b) { + return a.index - b.index; + }), function (x) { + return x.value; + })); + }); + }; + async.filter = doParallel(_filter); + async.filterSeries = doSeries(_filter); + // select alias + async.select = async.filter; + async.selectSeries = async.filterSeries; + + var _reject = function (eachfn, arr, iterator, callback) { + var results = []; + arr = _map(arr, function (x, i) { + return {index: i, value: x}; + }); + eachfn(arr, function (x, callback) { + iterator(x.value, function (v) { + if (!v) { + results.push(x); + } + callback(); + }); + }, function (err) { + callback(_map(results.sort(function (a, b) { + return a.index - b.index; + }), function (x) { + return x.value; + })); + }); + }; + async.reject = doParallel(_reject); + async.rejectSeries = doSeries(_reject); + + var _detect = function (eachfn, arr, iterator, main_callback) { + eachfn(arr, function (x, callback) { + iterator(x, function (result) { + if (result) { + main_callback(x); + main_callback = function () {}; + } + else { + callback(); + } + }); + }, function (err) { + main_callback(); + }); + }; + async.detect = doParallel(_detect); + async.detectSeries = doSeries(_detect); + + async.some = function (arr, iterator, main_callback) { + async.each(arr, function (x, callback) { + iterator(x, function (v) { + if (v) { + main_callback(true); + main_callback = function () {}; + } + callback(); + }); + }, function (err) { + main_callback(false); + }); + }; + // any alias + async.any = async.some; + + async.every = function (arr, iterator, main_callback) { + async.each(arr, function (x, callback) { + iterator(x, function (v) { + if (!v) { + main_callback(false); + main_callback = function () {}; + } + callback(); + }); + }, function (err) { + main_callback(true); + }); + }; + // all alias + async.all = async.every; + + async.sortBy = function (arr, iterator, callback) { + async.map(arr, function (x, callback) { + iterator(x, function (err, criteria) { + if (err) { + callback(err); + } + else { + callback(null, {value: x, criteria: criteria}); + } + }); + }, function (err, results) { + if (err) { + return callback(err); + } + else { + var fn = function (left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + }; + callback(null, _map(results.sort(fn), function (x) { + return x.value; + })); + } + }); + }; + + async.auto = function (tasks, callback) { + callback = callback || function () {}; + var keys = _keys(tasks); + var remainingTasks = keys.length + if (!remainingTasks) { + return callback(); + } + + var results = {}; + + var listeners = []; + var addListener = function (fn) { + listeners.unshift(fn); + }; + var removeListener = function (fn) { + for (var i = 0; i < listeners.length; i += 1) { + if (listeners[i] === fn) { + listeners.splice(i, 1); + return; + } + } + }; + var taskComplete = function () { + remainingTasks-- + _each(listeners.slice(0), function (fn) { + fn(); + }); + }; + + addListener(function () { + if (!remainingTasks) { + var theCallback = callback; + // prevent final callback from calling itself if it errors + callback = function () {}; + + theCallback(null, results); + } + }); + + _each(keys, function (k) { + var task = _isArray(tasks[k]) ? tasks[k]: [tasks[k]]; + var taskCallback = function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + if (err) { + var safeResults = {}; + _each(_keys(results), function(rkey) { + safeResults[rkey] = results[rkey]; + }); + safeResults[k] = args; + callback(err, safeResults); + // stop subsequent errors hitting callback multiple times + callback = function () {}; + } + else { + results[k] = args; + async.setImmediate(taskComplete); + } + }; + var requires = task.slice(0, Math.abs(task.length - 1)) || []; + var ready = function () { + return _reduce(requires, function (a, x) { + return (a && results.hasOwnProperty(x)); + }, true) && !results.hasOwnProperty(k); + }; + if (ready()) { + task[task.length - 1](taskCallback, results); + } + else { + var listener = function () { + if (ready()) { + removeListener(listener); + task[task.length - 1](taskCallback, results); + } + }; + addListener(listener); + } + }); + }; + + async.retry = function(times, task, callback) { + var DEFAULT_TIMES = 5; + var attempts = []; + // Use defaults if times not passed + if (typeof times === 'function') { + callback = task; + task = times; + times = DEFAULT_TIMES; + } + // Make sure times is a number + times = parseInt(times, 10) || DEFAULT_TIMES; + var wrappedTask = function(wrappedCallback, wrappedResults) { + var retryAttempt = function(task, finalAttempt) { + return function(seriesCallback) { + task(function(err, result){ + seriesCallback(!err || finalAttempt, {err: err, result: result}); + }, wrappedResults); + }; + }; + while (times) { + attempts.push(retryAttempt(task, !(times-=1))); + } + async.series(attempts, function(done, data){ + data = data[data.length - 1]; + (wrappedCallback || callback)(data.err, data.result); + }); + } + // If a callback is passed, run this as a controll flow + return callback ? wrappedTask() : wrappedTask + }; + + async.waterfall = function (tasks, callback) { + callback = callback || function () {}; + if (!_isArray(tasks)) { + var err = new Error('First argument to waterfall must be an array of functions'); + return callback(err); + } + if (!tasks.length) { + return callback(); + } + var wrapIterator = function (iterator) { + return function (err) { + if (err) { + callback.apply(null, arguments); + callback = function () {}; + } + else { + var args = Array.prototype.slice.call(arguments, 1); + var next = iterator.next(); + if (next) { + args.push(wrapIterator(next)); + } + else { + args.push(callback); + } + async.setImmediate(function () { + iterator.apply(null, args); + }); + } + }; + }; + wrapIterator(async.iterator(tasks))(); + }; + + var _parallel = function(eachfn, tasks, callback) { + callback = callback || function () {}; + if (_isArray(tasks)) { + eachfn.map(tasks, function (fn, callback) { + if (fn) { + fn(function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + callback.call(null, err, args); + }); + } + }, callback); + } + else { + var results = {}; + eachfn.each(_keys(tasks), function (k, callback) { + tasks[k](function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + results[k] = args; + callback(err); + }); + }, function (err) { + callback(err, results); + }); + } + }; + + async.parallel = function (tasks, callback) { + _parallel({ map: async.map, each: async.each }, tasks, callback); + }; + + async.parallelLimit = function(tasks, limit, callback) { + _parallel({ map: _mapLimit(limit), each: _eachLimit(limit) }, tasks, callback); + }; + + async.series = function (tasks, callback) { + callback = callback || function () {}; + if (_isArray(tasks)) { + async.mapSeries(tasks, function (fn, callback) { + if (fn) { + fn(function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + callback.call(null, err, args); + }); + } + }, callback); + } + else { + var results = {}; + async.eachSeries(_keys(tasks), function (k, callback) { + tasks[k](function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + results[k] = args; + callback(err); + }); + }, function (err) { + callback(err, results); + }); + } + }; + + async.iterator = function (tasks) { + var makeCallback = function (index) { + var fn = function () { + if (tasks.length) { + tasks[index].apply(null, arguments); + } + return fn.next(); + }; + fn.next = function () { + return (index < tasks.length - 1) ? makeCallback(index + 1): null; + }; + return fn; + }; + return makeCallback(0); + }; + + async.apply = function (fn) { + var args = Array.prototype.slice.call(arguments, 1); + return function () { + return fn.apply( + null, args.concat(Array.prototype.slice.call(arguments)) + ); + }; + }; + + var _concat = function (eachfn, arr, fn, callback) { + var r = []; + eachfn(arr, function (x, cb) { + fn(x, function (err, y) { + r = r.concat(y || []); + cb(err); + }); + }, function (err) { + callback(err, r); + }); + }; + async.concat = doParallel(_concat); + async.concatSeries = doSeries(_concat); + + async.whilst = function (test, iterator, callback) { + if (test()) { + iterator(function (err) { + if (err) { + return callback(err); + } + async.whilst(test, iterator, callback); + }); + } + else { + callback(); + } + }; + + async.doWhilst = function (iterator, test, callback) { + iterator(function (err) { + if (err) { + return callback(err); + } + var args = Array.prototype.slice.call(arguments, 1); + if (test.apply(null, args)) { + async.doWhilst(iterator, test, callback); + } + else { + callback(); + } + }); + }; + + async.until = function (test, iterator, callback) { + if (!test()) { + iterator(function (err) { + if (err) { + return callback(err); + } + async.until(test, iterator, callback); + }); + } + else { + callback(); + } + }; + + async.doUntil = function (iterator, test, callback) { + iterator(function (err) { + if (err) { + return callback(err); + } + var args = Array.prototype.slice.call(arguments, 1); + if (!test.apply(null, args)) { + async.doUntil(iterator, test, callback); + } + else { + callback(); + } + }); + }; + + async.queue = function (worker, concurrency) { + if (concurrency === undefined) { + concurrency = 1; + } + function _insert(q, data, pos, callback) { + if (!q.started){ + q.started = true; + } + if (!_isArray(data)) { + data = [data]; + } + if(data.length == 0) { + // call drain immediately if there are no tasks + return async.setImmediate(function() { + if (q.drain) { + q.drain(); + } + }); + } + _each(data, function(task) { + var item = { + data: task, + callback: typeof callback === 'function' ? callback : null + }; + + if (pos) { + q.tasks.unshift(item); + } else { + q.tasks.push(item); + } + + if (q.saturated && q.tasks.length === q.concurrency) { + q.saturated(); + } + async.setImmediate(q.process); + }); + } + + var workers = 0; + var q = { + tasks: [], + concurrency: concurrency, + saturated: null, + empty: null, + drain: null, + started: false, + paused: false, + push: function (data, callback) { + _insert(q, data, false, callback); + }, + kill: function () { + q.drain = null; + q.tasks = []; + }, + unshift: function (data, callback) { + _insert(q, data, true, callback); + }, + process: function () { + if (!q.paused && workers < q.concurrency && q.tasks.length) { + var task = q.tasks.shift(); + if (q.empty && q.tasks.length === 0) { + q.empty(); + } + workers += 1; + var next = function () { + workers -= 1; + if (task.callback) { + task.callback.apply(task, arguments); + } + if (q.drain && q.tasks.length + workers === 0) { + q.drain(); + } + q.process(); + }; + var cb = only_once(next); + worker(task.data, cb); + } + }, + length: function () { + return q.tasks.length; + }, + running: function () { + return workers; + }, + idle: function() { + return q.tasks.length + workers === 0; + }, + pause: function () { + if (q.paused === true) { return; } + q.paused = true; + }, + resume: function () { + if (q.paused === false) { return; } + q.paused = false; + // Need to call q.process once per concurrent + // worker to preserve full concurrency after pause + for (var w = 1; w <= q.concurrency; w++) { + async.setImmediate(q.process); + } + } + }; + return q; + }; + + async.priorityQueue = function (worker, concurrency) { + + function _compareTasks(a, b){ + return a.priority - b.priority; + }; + + function _binarySearch(sequence, item, compare) { + var beg = -1, + end = sequence.length - 1; + while (beg < end) { + var mid = beg + ((end - beg + 1) >>> 1); + if (compare(item, sequence[mid]) >= 0) { + beg = mid; + } else { + end = mid - 1; + } + } + return beg; + } + + function _insert(q, data, priority, callback) { + if (!q.started){ + q.started = true; + } + if (!_isArray(data)) { + data = [data]; + } + if(data.length == 0) { + // call drain immediately if there are no tasks + return async.setImmediate(function() { + if (q.drain) { + q.drain(); + } + }); + } + _each(data, function(task) { + var item = { + data: task, + priority: priority, + callback: typeof callback === 'function' ? callback : null + }; + + q.tasks.splice(_binarySearch(q.tasks, item, _compareTasks) + 1, 0, item); + + if (q.saturated && q.tasks.length === q.concurrency) { + q.saturated(); + } + async.setImmediate(q.process); + }); + } + + // Start with a normal queue + var q = async.queue(worker, concurrency); + + // Override push to accept second parameter representing priority + q.push = function (data, priority, callback) { + _insert(q, data, priority, callback); + }; + + // Remove unshift function + delete q.unshift; + + return q; + }; + + async.cargo = function (worker, payload) { + var working = false, + tasks = []; + + var cargo = { + tasks: tasks, + payload: payload, + saturated: null, + empty: null, + drain: null, + drained: true, + push: function (data, callback) { + if (!_isArray(data)) { + data = [data]; + } + _each(data, function(task) { + tasks.push({ + data: task, + callback: typeof callback === 'function' ? callback : null + }); + cargo.drained = false; + if (cargo.saturated && tasks.length === payload) { + cargo.saturated(); + } + }); + async.setImmediate(cargo.process); + }, + process: function process() { + if (working) return; + if (tasks.length === 0) { + if(cargo.drain && !cargo.drained) cargo.drain(); + cargo.drained = true; + return; + } + + var ts = typeof payload === 'number' + ? tasks.splice(0, payload) + : tasks.splice(0, tasks.length); + + var ds = _map(ts, function (task) { + return task.data; + }); + + if(cargo.empty) cargo.empty(); + working = true; + worker(ds, function () { + working = false; + + var args = arguments; + _each(ts, function (data) { + if (data.callback) { + data.callback.apply(null, args); + } + }); + + process(); + }); + }, + length: function () { + return tasks.length; + }, + running: function () { + return working; + } + }; + return cargo; + }; + + var _console_fn = function (name) { + return function (fn) { + var args = Array.prototype.slice.call(arguments, 1); + fn.apply(null, args.concat([function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (typeof console !== 'undefined') { + if (err) { + if (console.error) { + console.error(err); + } + } + else if (console[name]) { + _each(args, function (x) { + console[name](x); + }); + } + } + }])); + }; + }; + async.log = _console_fn('log'); + async.dir = _console_fn('dir'); + /*async.info = _console_fn('info'); + async.warn = _console_fn('warn'); + async.error = _console_fn('error');*/ + + async.memoize = function (fn, hasher) { + var memo = {}; + var queues = {}; + hasher = hasher || function (x) { + return x; + }; + var memoized = function () { + var args = Array.prototype.slice.call(arguments); + var callback = args.pop(); + var key = hasher.apply(null, args); + if (key in memo) { + async.nextTick(function () { + callback.apply(null, memo[key]); + }); + } + else if (key in queues) { + queues[key].push(callback); + } + else { + queues[key] = [callback]; + fn.apply(null, args.concat([function () { + memo[key] = arguments; + var q = queues[key]; + delete queues[key]; + for (var i = 0, l = q.length; i < l; i++) { + q[i].apply(null, arguments); + } + }])); + } + }; + memoized.memo = memo; + memoized.unmemoized = fn; + return memoized; + }; + + async.unmemoize = function (fn) { + return function () { + return (fn.unmemoized || fn).apply(null, arguments); + }; + }; + + async.times = function (count, iterator, callback) { + var counter = []; + for (var i = 0; i < count; i++) { + counter.push(i); + } + return async.map(counter, iterator, callback); + }; + + async.timesSeries = function (count, iterator, callback) { + var counter = []; + for (var i = 0; i < count; i++) { + counter.push(i); + } + return async.mapSeries(counter, iterator, callback); + }; + + async.seq = function (/* functions... */) { + var fns = arguments; + return function () { + var that = this; + var args = Array.prototype.slice.call(arguments); + var callback = args.pop(); + async.reduce(fns, args, function (newargs, fn, cb) { + fn.apply(that, newargs.concat([function () { + var err = arguments[0]; + var nextargs = Array.prototype.slice.call(arguments, 1); + cb(err, nextargs); + }])) + }, + function (err, results) { + callback.apply(that, [err].concat(results)); + }); + }; + }; + + async.compose = function (/* functions... */) { + return async.seq.apply(null, Array.prototype.reverse.call(arguments)); + }; + + var _applyEach = function (eachfn, fns /*args...*/) { + var go = function () { + var that = this; + var args = Array.prototype.slice.call(arguments); + var callback = args.pop(); + return eachfn(fns, function (fn, cb) { + fn.apply(that, args.concat([cb])); + }, + callback); + }; + if (arguments.length > 2) { + var args = Array.prototype.slice.call(arguments, 2); + return go.apply(this, args); + } + else { + return go; + } + }; + async.applyEach = doParallel(_applyEach); + async.applyEachSeries = doSeries(_applyEach); + + async.forever = function (fn, callback) { + function next(err) { + if (err) { + if (callback) { + return callback(err); + } + throw err; + } + fn(next); + } + next(); + }; + + // Node.js + if ( true && module.exports) { + module.exports = async; + } + // AMD / RequireJS + else if (true) { + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () { + return async; + }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } + // included directly via + + + +
+
+ +
+
+ + +` + + +/***/ }), + +/***/ "./node_modules/solid-panes/folderPane.js": +/*!************************************************!*\ + !*** ./node_modules/solid-panes/folderPane.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* Folder pane +** +** This outline pane lists the members of a folder +*/ + +var UI = __webpack_require__(/*! solid-ui */ "./node_modules/solid-ui/lib/index.js") +var panes = __webpack_require__(/*! ./paneRegistry */ "./node_modules/solid-panes/paneRegistry.js") + +var ns = UI.ns + +module.exports = { + icon: UI.icons.iconBase + 'noun_973694_expanded.svg', + + name: 'folder', + + // Create a new folder in a Solid system, + mintNew: function (newPaneOptions) { + var kb = UI.store + var newInstance = newPaneOptions.newInstance || kb.sym(newPaneOptions.newBase) + var u = newInstance.uri + if (u.endsWith('/')) { + u = u.slice(0, -1) // chop off trailer + }// { throw new Error('URI of new folder must end in "/" :' + u) } + newPaneOptions.newInstance = kb.sym(u + '/') + + // @@@@ kludge until we can get the solid-client version working + // Force the folder by saving a dummy file insie it + return kb.fetcher.webOperation('PUT', newInstance.uri + '.dummy') + .then(function () { + console.log('New folder created: ' + newInstance.uri) + + return kb.fetcher.delete(newInstance.uri + '.dummy') + }) + .then(function () { + console.log('Dummy file deleted : ' + newInstance.uri + '.dummy') +/* + return kb.fetcher.createContainer(parentURI, folderName) // Not BOTH ways + }) + .then(function () { +*/ + console.log('New container created: ' + newInstance.uri) + return newPaneOptions + }) + }, + + label: function (subject) { + var kb = UI.store + var n = kb.each(subject, ns.ldp('contains')).length + if (n > 0) { + return 'Contents (' + n + ')' // Show how many in hover text + } + if (kb.holds(subject, ns.rdf('type'), ns.ldp('Container'))) { // It is declared as being a container + return 'Container (0)' + } + return null // Suppress pane otherwise + }, + + // Render a file folder in a LDP/solid system + + render: function (subject, dom) { + var outliner = panes.getOutliner(dom) + var kb = UI.store + var mainTable // This is a live synced table +/* + var complain = function complain (message, color) { + var pre = dom.createElement('pre') + console.log(message) + pre.setAttribute('style', 'background-color: ' + color || '#eed' + ';') + div.appendChild(pre) + pre.appendChild(dom.createTextNode(message)) + } +*/ + var div = dom.createElement('div') + div.setAttribute('class', 'instancePane') + div.setAttribute('style', ' border-top: solid 1px #777; border-bottom: solid 1px #777; margin-top: 0.5em; margin-bottom: 0.5em ') + + // If this is an LDP container just list the directory + + var noHiddenFiles = function (obj) { // @@ This hiddenness should actually be server defined + var pathEnd = obj.uri.slice(obj.dir().uri.length) + return !(pathEnd.startsWith('.') || pathEnd.endsWith('.acl') || pathEnd.endsWith('~')) + } + let thisDir = subject.uri.endsWith('/') ? subject.uri : subject.uri + '/' + let indexThing = kb.sym(thisDir + 'index.ttl#this') + if (kb.holds(subject, ns.ldp('contains'), indexThing.doc())) { + console.log('View of folder with be view of indexThing. Loading ' + indexThing) + let packageDiv = div.appendChild(dom.createElement('div')) + packageDiv.style.cssText = 'border-top: 0.2em solid #ccc;' // Separate folder views above from package views below + kb.fetcher.load(indexThing.doc()).then(function () { + mainTable = packageDiv.appendChild(dom.createElement('table')) + panes.getOutliner(dom).GotoSubject(indexThing, true, undefined, false, undefined, mainTable) + }) + + return div + } else { + mainTable = div.appendChild(dom.createElement('table')) + var refresh = function () { + var objs = kb.each(subject, ns.ldp('contains')).filter(noHiddenFiles) + objs = objs.map(obj => [ UI.utils.label(obj).toLowerCase(), obj ]) + objs.sort() // Sort by label case-insensitive + objs = objs.map(pair => pair[1]) + UI.utils.syncTableToArray(mainTable, objs, function (obj) { + let st = kb.statementsMatching(subject, ns.ldp('contains'), obj)[0] + let defaultpropview = outliner.VIEWAS_boring_default + let tr = outliner.propertyTR(dom, + st, false) + tr.firstChild.textContent = '' // Was initialized to 'Contains' + tr.firstChild.style.cssText += 'min-width: 3em;' + tr.appendChild(outliner.outlineObjectTD(obj, defaultpropview, undefined, st)) + // UI.widgets.makeDraggable(tr, obj) + return tr + }) + } + mainTable.refresh = refresh + refresh() + } + + // Allow user to create new things within the folder + var creationDiv = div.appendChild(dom.createElement('div')) + var me = UI.authn.currentUser() + var creationContext = {folder: subject, div: creationDiv, dom: dom, statusArea: creationDiv, me: me} + creationContext.refreshTarget = mainTable + UI.create.newThingUI(creationContext, panes) // Have to pass panes down newUI + + // /////////// Allow new file to be Uploaded + var droppedFileHandler = function (files) { + UI.widgets.uploadFiles(kb.fetcher, files, subject.uri, subject.uri, function (file, uri) { + // A file has been uploaded + let destination = kb.sym(uri) + console.log(' Upload: put OK: ' + destination) + kb.add(subject, ns.ldp('contains'), destination, subject.doc()) + mainTable.refresh() + }) + } + + UI.aclControl.preventBrowserDropEvents(dom) + + const explictDropIcon = false + var target + if (explictDropIcon) { + let iconStyleFound = creationDiv.firstChild.style.cssText + target = creationDiv.insertBefore(dom.createElement('img'), creationDiv.firstChild) + target.style.cssText = iconStyleFound + target.setAttribute('src', UI.icons.iconBase + 'noun_748003.svg') + target.setAttribute('style', 'width: 2em; height: 2em') // Safari says target.style is read-only + } else { + target = creationDiv.firstChild // Overload drop target semantics onto the plus sign + } + + UI.widgets.makeDropTarget(target, null, droppedFileHandler) + + return div + } +} +// ends + + +/***/ }), + +/***/ "./node_modules/solid-panes/form/pane.js": +/*!***********************************************!*\ + !*** ./node_modules/solid-panes/form/pane.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* +** Pane for running existing forms for any object +** +*/ + +var UI = __webpack_require__(/*! solid-ui */ "./node_modules/solid-ui/lib/index.js") +module.exports = { + + icon: UI.icons.iconBase + 'noun_122196.svg', + + name: 'form', + + // Does the subject deserve this pane? + label: function (subject) { + var n = UI.widgets.formsFor(subject).length + UI.log.debug('Form pane: forms for ' + subject + ': ' + n) + if (!n) return null + return '' + n + ' forms' + }, + + render: function (subject, dom) { + var kb = UI.store + var ns = UI.ns + + var mention = function complain (message, style) { + var pre = dom.createElement('p') + pre.setAttribute('style', style || 'color: grey; background-color: white') + box.appendChild(pre).textContent = message + return pre + } + + var complain = function complain (message, style) { + mention(message, 'style', style || 'color: grey; background-color: #fdd;') + } + + var complainIfBad = function (ok, body) { + if (ok) { + // setModifiedDate(store, kb, store); + // rerender(box); // Deleted forms at the moment + } else complain('Sorry, failed to save your change:\n' + body) + } + + // The question of where to store this data about subject + // This in general needs a whole lot more thought + // and it connects to the discoverbility through links + + // var t = kb.findTypeURIs(subject) + + var me = UI.authn.currentUser() + + var box = dom.createElement('div') + box.setAttribute('class', 'formPane') + + if (!me) { + mention('You are not logged in. If you log in and have ' + + 'workspaces then you would be able to select workspace in which ' + + 'to put this new information') + } else { + var ws = kb.each(me, ns.ui('workspace')) + if (ws.length === 0) { + mention('You don\'t seem to have any workspaces defined. ' + + 'A workspace is a place on the web (http://..) or in ' + + 'the file system (file:///) to store application data.\n') + } else { + // @@ + } + } + + // Render forms using a given store + + var renderFormsFor = function (store, subject) { + kb.fetcher.nowOrWhenFetched(store.uri, subject, function (ok, body) { + if (!ok) return complain('Cannot load store ' + store.uri + ': ' + body) + + // Render the forms + + var forms = UI.widgets.formsFor(subject) + + // complain('Form for editing this form:'); + for (var i = 0; i < forms.length; i++) { + var form = forms[i] + var heading = dom.createElement('h4') + box.appendChild(heading) + if (form.uri) { + var formStore = $rdf.Util.uri.document(form) + if (formStore.uri !== form.uri) { // The form is a hash-type URI + var e = box.appendChild(UI.widgets.editFormButton( + dom, box, form, formStore, complainIfBad)) + e.setAttribute('style', 'float: right;') + } + } + var anchor = dom.createElement('a') + anchor.setAttribute('href', form.uri) + heading.appendChild(anchor) + anchor.textContent = UI.utils.label(form, true) + + /* Keep tis as a reminder to let a New one have its URI given by user + mention("Where will this information be stored?") + var ele = dom.createElement('input'); + box.appendChild(ele); + ele.setAttribute('type', 'text'); + ele.setAttribute('size', '72'); + ele.setAttribute('maxlength', '1024'); + ele.setAttribute('style', 'font-size: 80%; color:#222;'); + ele.value = store.uri + */ + + UI.widgets.appendForm(dom, box, {}, subject, form, store, complainIfBad) + } + }) // end: when store loded + } // renderFormsFor + + // Figure out what store + + // Which places are editable and have stuff about the subject? + + var store = null + + // 1. The document URI of the subject itself + var docuri = $rdf.Util.uri.docpart(subject.uri) + if (subject.uri !== docuri && kb.updater.editable(docuri, kb)) { + store = subject.doc() + } // an editable data file with hash + + store = store || kb.any(kb.sym(docuri), ns.link('annotationStore')) + + // 2. where stuff is already stored + if (!store) { + var docs = {} + var docList = [] + kb.statementsMatching(subject).map(function (st) { docs[st.why.uri] = 1 }) + kb.statementsMatching(undefined, undefined, subject).map(function (st) { docs[st.why.uri] = 2 }) + for (var d in docs) docList.push(docs[d], d) + docList.sort() + for (var i = 0; i < docList.length; i++) { + var uri = docList[i][1] + if (uri && kb.updater.editable(uri)) { + store = kb.sym(uri) + break + } + } + } + + // 3. In a workspace store + + var followeach = function (kb, subject, path) { + if (path.length === 0) return [ subject ] + var oo = kb.each(subject, path[0]) + var res = [] + for (var i = 0; i < oo.length; i++) { + res = res.concat(followeach(kb, oo[i], path.slice(1))) + } + return res + } + + var date = '2014' // @@@@@@@@@@@@ pass as parameter + + if (store) { + // mention("@@ Ok, we have a store <" + store.uri + ">."); + renderFormsFor(store, subject) + } else { + complain('No suitable store is known, to edit <' + subject.uri + '>.') + var foobarbaz = UI.authn.selectWorkspace(dom, + function (ws) { + mention('Workspace selected OK: ' + ws) + + var activities = kb.each(undefined, ns.space('workspace'), ws) + for (var j = 0; j < activities.length; i++) { + var act = activities[j] + + var s = kb.any(ws, ns.space('store')) + var start = kb.any(ws, ns.cal('dtstart')).value() + var end = kb.any(ws, ns.cal('dtend')).value() + if (s && start && end && start <= date && end > date) { + renderFormsFor(s, subject) + break + } else { + complain('Note no suitable annotation store in activity: ' + act) + } + } + }) + box.appendChild(foobarbaz) + } + + return box + } +} + + +/***/ }), + +/***/ "./node_modules/solid-panes/home/homePane.js": +/*!***************************************************!*\ + !*** ./node_modules/solid-panes/home/homePane.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* Home Pane +** +** The home pane is avaiable everywhere and allows a user +** to +** - keep track of their stuff +** - make new things, and possibly +** - keep track of accounts and workspaces etc +** +*/ + +var UI = __webpack_require__(/*! solid-ui */ "./node_modules/solid-ui/lib/index.js") +var panes = __webpack_require__(/*! ../paneRegistry */ "./node_modules/solid-panes/paneRegistry.js") + +module.exports = { + icon: UI.icons.iconBase + 'noun_547570.svg', // noun_25830 + + name: 'home', + + // Does the subject deserve an home pane? + // + // yes, always! + // + label: function (subject) { + return 'home' + }, + + render: function (subject, dom) { + var showContent = function () { + var context = {div: div, dom: dom, statusArea: div, me: me} + + div.appendChild(dom.createElement('h4')).textContent = 'Login status' + var loginStatusDiv = div.appendChild(dom.createElement('div')) + loginStatusDiv.appendChild(UI.authn.loginStatusBox(dom, uri => { + // Here we know new log in status + })) + + div.appendChild(dom.createElement('h4')).textContent = 'Create new thing somewhere' + var creationDiv = div.appendChild(dom.createElement('div')) + var creationContext = {div: creationDiv, dom: dom, statusArea: div, me: me} + UI.create.newThingUI(creationContext, panes) // newUI Have to pass panes down + + div.appendChild(dom.createElement('h4')).textContent = 'Private things' + UI.authn.registrationList(context, {private: true}).then(function (context) { + div.appendChild(dom.createElement('h4')).textContent = 'Public things' + UI.authn.registrationList(context, {public: true}).then(function (context) { + // done + }) + }) + } + + var div = dom.createElement('div') + var me = UI.authn.currentUser() + + showContent() + + return div + } +} // pane object + +// ends + + +/***/ }), + +/***/ "./node_modules/solid-panes/humanReadablePane.js": +/*!*******************************************************!*\ + !*** ./node_modules/solid-panes/humanReadablePane.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* Human-readable Pane +** +** This outline pane contains the document contents for an HTML document +** This is for peeking at a page, because the user might not want to leave the data browser. +*/ +var UI = __webpack_require__(/*! solid-ui */ "./node_modules/solid-ui/lib/index.js") + +module.exports = { + icon: UI.icons.originalIconBase + 'tango/22-text-x-generic.png', + + name: 'humanReadable', + + label: function (subject, myDocument) { + var kb = UI.store + var ns = UI.ns + + // See aslo tthe source pane, which has lower precedence. + + var allowed = ['text/plain', + 'text/html', 'application/xhtml+xml', + 'image/png', 'image/jpeg', 'application/pdf', + 'video/mp4'] + + var hasContentTypeIn = function (kb, x, displayables) { + var cts = kb.fetcher.getHeader(x, 'content-type') + if (cts) { + for (var j = 0; j < cts.length; j++) { + for (var k = 0; k < displayables.length; k++) { + if (cts[j].indexOf(displayables[k]) >= 0) { + return true + } + } + } + } + return false + } + + // This data coul d come from a fetch OR from ldp comtaimner + var hasContentTypeIn2 = function (kb, x, displayables) { + var t = kb.findTypeURIs(subject) + for (var k = 0; k < displayables.length; k++) { + if ($rdf.Util.mediaTypeClass(displayables[k]).uri in t) { + return true + } + } + return false + } + + if (!subject.uri) return null // no bnodes + + var t = kb.findTypeURIs(subject) + if (t[ns.link('WebPage').uri]) return 'view' + + if (hasContentTypeIn(kb, subject, allowed) || + hasContentTypeIn2(kb, subject, allowed)) return 'View' + + return null + }, + + render: function (subject, myDocument) { + var div = myDocument.createElement('div') + var kb = UI.store + + // @@ When we can, use CSP to turn off scripts within the iframe + div.setAttribute('class', 'docView') + var iframe = myDocument.createElement('IFRAME') + iframe.setAttribute('src', subject.uri) // allow-same-origin + iframe.setAttribute('class', 'doc') + + var cts = kb.fetcher.getHeader(subject.doc(), 'content-type') + var ct = cts ? cts[0] : null + if (ct) { + console.log('humanReadablePane: c-t:' + ct) + } else { + console.log('humanReadablePane: unknown content-type?') + } + + // @@ NOte beflow - if we set ANY sandbox, then Chrome and Safari won't display it if it is PDF. + // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe + // You can;'t have any sandbox and allow plugins. + // We could sandbox only HTML files I suppose. + // HTML5 bug: https://lists.w3.org/Archives/Public/public-html/2011Jun/0330.html + + // iframe.setAttribute('sandbox', 'allow-same-origin allow-forms'); // allow-scripts ?? no documents should be static + + iframe.setAttribute('style', 'resize = both; height: 120em; width:80em;') + // iframe.setAttribute('height', '480') + // iframe.setAttribute('width', '640') + var tr = myDocument.createElement('TR') + tr.appendChild(iframe) + div.appendChild(tr) + return div + } +} +// ends + + +/***/ }), + +/***/ "./node_modules/solid-panes/imagePane.js": +/*!***********************************************!*\ + !*** ./node_modules/solid-panes/imagePane.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* Image Pane +** +** This outline pane contains the document contents for an Image document +*/ +var UI = __webpack_require__(/*! solid-ui */ "./node_modules/solid-ui/lib/index.js") + +module.exports = { + icon: UI.icons.originalIconBase + 'tango/22-image-x-generic.png', + + name: 'image', + + label: function (subject) { + var kb = UI.store + if (!kb.anyStatementMatching( + subject, UI.ns.rdf('type'), + kb.sym('http://purl.org/dc/terms/Image'))) { // NB: Not dc: namespace! + return null + } + + // See aslo the source pane, which has lower precedence. + + var contentTypeMatch = function (kb, x, contentTypes) { + var cts = kb.fetcher.getHeader(x, 'content-type') + if (cts) { + for (var j = 0; j < cts.length; j++) { + for (var k = 0; k < contentTypes.length; k++) { + if (cts[j].indexOf(contentTypes[k]) >= 0) { + return true + } + } + } + } + return false + } + + var suppressed = ['application/pdf'] + if (contentTypeMatch(kb, subject, suppressed)) { + return null + } + return 'view' + }, + + render: function (subject, myDocument) { + var div = myDocument.createElement('div') + div.setAttribute('class', 'imageView') + var img = myDocument.createElement('IMG') + img.setAttribute('src', subject.uri) // w640 h480 + img.setAttribute('style', 'max-width: 100%; max-height: 100%;') + // div.style['max-width'] = '640' + // div.style['max-height'] = '480' + var tr = myDocument.createElement('TR') // why need tr? + tr.appendChild(img) + div.appendChild(tr) + return div + } +} + +// ends + + +/***/ }), + +/***/ "./node_modules/solid-panes/index.js": +/*!*******************************************!*\ + !*** ./node_modules/solid-panes/index.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* SOLID PANES +** +** Panes are regions of the outline view in which a particular subject is +** displayed in a particular way. +** Different panes about the same subject are typically stacked vertically. +** Panes may be used naked or with a pane selection header. +** +** The label() method has two functions: it determines whether the pane is +** relevant to a given subhect, returning null if not. +** If it is relevant, then it returns a suitable tooltip for a control which selects the pane +*/ + +// create the unique UI module on which to attach panes (no, don't attach as UI dot panes any more) +// var UI = require('solid-ui') // Note we will add the panes register to this. + +const panes = __webpack_require__(/*! ./paneRegistry */ "./node_modules/solid-panes/paneRegistry.js") + +module.exports = panes + +// We attach the solid-UI lower-level system for convenience +// Currently most panes ar ebuilt using it anyway. +// It also gives access to rdflib as panes.UI.rdf + +panes.UI = __webpack_require__(/*! solid-ui */ "./node_modules/solid-ui/lib/index.js") // Pass on directly to any who needs it + +// This has common outline mode functionality for the default and other other panes +// A separate outline manager is requires per DOM in cases like a browser extension +// where ther are many occurences of window, and of window.document +// But each DOM should have just one outline manager. + +panes.OutlineManager = __webpack_require__(/*! ./outline/manager.js */ "./node_modules/solid-panes/outline/manager.js") +panes.getOutliner = function (dom) { + if (!dom.outlineManager) { + dom.outlineManager = panes.OutlineManager(dom) + } + return dom.outlineManager +} +if (typeof window !== 'undefined') { + var dom = window.document + panes.getOutliner(dom) +} + +/* Note that the earliest panes have priority. So the most specific ones are first. +** +*/ +// Developer designed: + +let register = panes.register + +register(__webpack_require__(/*! ./issue/pane.js */ "./node_modules/solid-panes/issue/pane.js")) +register(__webpack_require__(/*! ./contact/contactPane.js */ "./node_modules/solid-panes/contact/contactPane.js")) + +register(__webpack_require__(/*! ./pad/padPane.js */ "./node_modules/solid-panes/pad/padPane.js")) +// register(require('./argument/argumentPane.js')) // A posistion in an argumnent tree + +register(__webpack_require__(/*! ./transaction/pane.js */ "./node_modules/solid-panes/transaction/pane.js")) +register(__webpack_require__(/*! ./transaction/period.js */ "./node_modules/solid-panes/transaction/period.js")) +register(__webpack_require__(/*! ./chat/chatPane.js */ "./node_modules/solid-panes/chat/chatPane.js")) +register(__webpack_require__(/*! ./chat/longChatPane.js */ "./node_modules/solid-panes/chat/longChatPane.js")) +// register(require('./publication/publicationPane.js')) +register(__webpack_require__(/*! ./meeting/meetingPane.js */ "./node_modules/solid-panes/meeting/meetingPane.js")) +register(__webpack_require__(/*! ./tabbed/tabbedPane.js */ "./node_modules/solid-panes/tabbed/tabbedPane.js")) +register(__webpack_require__(/*! ./schedule/schedulePane.js */ "./node_modules/solid-panes/schedule/schedulePane.js")) +register(__webpack_require__(/*! ./links/linksPane.js */ "./node_modules/solid-panes/links/linksPane.js")) + +register(__webpack_require__(/*! ./trip/tripPane.js */ "./node_modules/solid-panes/trip/tripPane.js")) +// register(require('./airPane.js')) + +// Content views + +register(__webpack_require__(/*! ./imagePane.js */ "./node_modules/solid-panes/imagePane.js")) // Basic image view +register(__webpack_require__(/*! ./playlist/playlistPane.js */ "./node_modules/solid-panes/playlist/playlistPane.js")) // Basic playlist view + +register(__webpack_require__(/*! ./video/videoPane.js */ "./node_modules/solid-panes/video/videoPane.js")) // Video clip player +register(__webpack_require__(/*! ./audio/audioPane.js */ "./node_modules/solid-panes/audio/audioPane.js")) // Audio clip player + +register(__webpack_require__(/*! ./dokieli/dokieliPane.js */ "./node_modules/solid-panes/dokieli/dokieliPane.js")) // Should be above dataContentPane +register(__webpack_require__(/*! ./folderPane.js */ "./node_modules/solid-panes/folderPane.js")) // Should be above dataContentPane +register(__webpack_require__(/*! ./classInstancePane.js */ "./node_modules/solid-panes/classInstancePane.js")) // Should be above dataContentPane +// register(require('./dynamic/dynamicPanes.js')) // warp etc warp broken 2017/8 +register(__webpack_require__(/*! ./slideshow/slideshowPane.js */ "./node_modules/solid-panes/slideshow/slideshowPane.js")) + +register(__webpack_require__(/*! ./socialPane.js */ "./node_modules/solid-panes/socialPane.js")) + +register(__webpack_require__(/*! ./humanReadablePane.js */ "./node_modules/solid-panes/humanReadablePane.js")) // A web page as a web page -- how to escape to tabr? +register(__webpack_require__(/*! ./dataContentPane.js */ "./node_modules/solid-panes/dataContentPane.js")) // Prefered for a data file + +register(__webpack_require__(/*! ./source/sourcePane.js */ "./node_modules/solid-panes/source/sourcePane.js")) // edit source +register(__webpack_require__(/*! ./n3Pane.js */ "./node_modules/solid-panes/n3Pane.js")) +register(__webpack_require__(/*! ./RDFXMLPane.js */ "./node_modules/solid-panes/RDFXMLPane.js")) + +// User configured - data driven +register(__webpack_require__(/*! ./form/pane.js */ "./node_modules/solid-panes/form/pane.js")) + +// Generic: + +register(__webpack_require__(/*! ./attach/attachPane.js */ "./node_modules/solid-panes/attach/attachPane.js")) +register(__webpack_require__(/*! ./tableViewPane.js */ "./node_modules/solid-panes/tableViewPane.js")) + +// Fallback totally generic: +register(__webpack_require__(/*! ./defaultPane.js */ "./node_modules/solid-panes/defaultPane.js")) + +register(__webpack_require__(/*! ./ui/pane.js */ "./node_modules/solid-panes/ui/pane.js")) + +// register(require("categoryPane.js")) // Not useful enough +// register(require("pubsPane.js")) // not finished + +// @@ jambo commented these things out to pare things down temporarily. +// Note must use // not /* to comment out to make sure expander sees it +// register(require("lawPane.js")) + +register(__webpack_require__(/*! ./microblogPane/microblogPane.js */ "./node_modules/solid-panes/microblogPane/microblogPane.js")) + +// register(require("./social/pane.js")) // competitor to other social +// register(require("./airPane.js")) +// register(require("./lawPane.js")) +// register(require("pushbackPane.js")) +// register(require("CVPane.js")) +// register(require("photoPane.js")) +// register(require("tagPane.js")) +// register(require("photoImportPane.js")) + +// The sharing pane is fairly generic and administrative 201 +register(__webpack_require__(/*! ./sharing/sharingPane.js */ "./node_modules/solid-panes/sharing/sharingPane.js")) + +// The internals pane is always (almost?) the last as it is the least user-friendly +register(__webpack_require__(/*! ./internalPane.js */ "./node_modules/solid-panes/internalPane.js")) +// The home pame is a 2016 experiment. Always there. + +register(__webpack_require__(/*! ./profile/profilePane.js */ "./node_modules/solid-panes/profile/profilePane.js")) // edit your public profile +register(__webpack_require__(/*! ./home/homePane.js */ "./node_modules/solid-panes/home/homePane.js")) + +// ENDS + + +/***/ }), + +/***/ "./node_modules/solid-panes/internalPane.js": +/*!**************************************************!*\ + !*** ./node_modules/solid-panes/internalPane.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* Internal Pane +** +** This outline pane contains the properties which are +** internal to the user's interaction with the web, and are not normaly displayed +*/ +/* global alert confirm */ + +const UI = __webpack_require__(/*! solid-ui */ "./node_modules/solid-ui/lib/index.js") +const panes = __webpack_require__(/*! ./paneRegistry */ "./node_modules/solid-panes/paneRegistry.js") + +const ns = UI.ns + +module.exports = { + icon: UI.icons.originalIconBase + 'tango/22-emblem-system.png', + + name: 'internal', + + label: function (subject) { + // if (subject.uri) + return 'under the hood' // There is often a URI even of no statements + }, + + render: function (subject, dom) { + var $r = UI.rdf + var kb = UI.store + subject = kb.canon(subject) + var types = kb.findTypeURIs(subject) + function filter (pred, inverse) { + if (types['http://www.w3.org/2007/ont/link#ProtocolEvent']) return true // display everything for them + return !!(typeof panes.internal.predicates[pred.uri] !== 'undefined') + } + var div = dom.createElement('div') + div.setAttribute('class', 'internalPane') + div.setAttribute('style', 'background-color: #ddddff; padding: 0.5em; border-radius: 1em;') + + function deleteRecursive (kb, folder) { + return new Promise(function (resolve, reject) { + kb.fetcher.load(folder).then(function () { + let promises = kb.each(folder, ns.ldp('contains')).map(file => { + if (kb.holds(file, ns.rdf('type'), ns.ldp('BasicContainer'))) { + return deleteRecursive(kb, file) + } else { + console.log('deleteRecursive leaf file: ' + file) + return kb.fetcher.webOperation('DELETE', file.uri) + } + }) + Promise.all(promises).then(res => { + console.log('deleteRecursive empty folder: ' + folder) + kb.fetcher.webOperation('DELETE', folder.uri).then(res => { + console.log('Deleted Ok: ' + folder) + resolve() + }, err => { + var str = 'Unable to delete ' + folder + ': ' + err + console.log(str) + reject(new Error(str)) + }) + resolve() + }, err => { + alert(err) + reject(err) + }) + }) + }) + } + + const isDocument = subject.uri && !subject.uri.includes('#') + if (isDocument) { + const controls = div.appendChild(dom.createElement('table')) + controls.style = 'width: 100%; margin: 1em;' + const controlRow = controls.appendChild(dom.createElement('tr')) + + const deleteCell = controlRow.appendChild(dom.createElement('td')) + const isFolder = ((subject.uri && subject.uri.endsWith('/')) || + kb.holds(subject, ns.rdf('type'), ns.ldp('Container'))) + const noun = isFolder ? 'folder' : 'file' + var deleteButton = UI.widgets.deleteButtonWithCheck(dom, deleteCell, noun, function () { + if (!confirm('Are you sure you want to delete ' + subject + '? This cannot be undone.')) return + var promise = isFolder ? deleteRecursive(kb, subject) + : kb.fetcher.webOperation('DELETE', subject.uri) + promise.then(response => { + var str = 'Deleted: ' + subject + console.log(str) + }, err => { + var str = 'Unable to delete ' + subject + ': ' + err + console.log(str) + alert(str) + }) + }) + deleteButton.style = 'height: 2em;' + deleteButton.class = '' // Remove hovver hide + deleteCell.appendChild(deleteButton) + + const refreshCell = controlRow.appendChild(dom.createElement('td')) + const refreshButton = UI.widgets.button(dom, UI.icons.iconBase + 'noun_479395.svg', 'refresh') + refreshCell.appendChild(refreshButton) + refreshButton.addEventListener('click', event => { + kb.fetcher.refresh(subject, function (ok, errm, res) { + let str + if (ok) { + str = 'Refreshed OK: ' + subject + } else { + str = 'Error refreshing: ' + subject + ': ' + errm + } + console.log(str) + alert(str) + }) + }) + } + + var plist = kb.statementsMatching(subject) + var docURI = null + if (subject.uri) { + plist.push($r.st(subject, + kb.sym('http://www.w3.org/2007/ont/link#uri'), subject.uri, UI.store.fetcher.appNode)) + if (subject.uri.indexOf('#') >= 0) { + docURI = subject.uri.split('#')[0] + plist.push($r.st(subject, + kb.sym('http://www.w3.org/2007/ont/link#documentURI'), + subject.uri.split('#')[0], UI.store.fetcher.appNode)) + plist.push($r.st(subject, + kb.sym('http://www.w3.org/2007/ont/link#document'), + kb.sym(subject.uri.split('#')[0]), UI.store.fetcher.appNode)) + } else { + docURI = subject.uri + } + } + if (docURI) { + var ed = UI.store.updater.editable(docURI) + if (ed) { + plist.push($r.st(subject, + kb.sym('http://www.w3.org/ns/rww#editable'), + kb.literal(ed), UI.store.fetcher.appNode)) + } + } + var outliner = panes.getOutliner(dom) + outliner.appendPropertyTRs(div, plist, false, filter) + plist = kb.statementsMatching(undefined, undefined, subject) + outliner.appendPropertyTRs(div, plist, true, filter) + return div + }, + + predicates: { // Predicates used for inner workings. Under the hood + 'http://www.w3.org/2007/ont/link#request': 1, + 'http://www.w3.org/2007/ont/link#requestedBy': 1, + 'http://www.w3.org/2007/ont/link#source': 1, + 'http://www.w3.org/2007/ont/link#session': 2, // 2= test neg but display + 'http://www.w3.org/2007/ont/link#uri': 1, + 'http://www.w3.org/2007/ont/link#documentURI': 1, + 'http://www.w3.org/2007/ont/link#document': 1, + 'http://www.w3.org/2007/ont/link#all': 1, // From userinput.js + 'http://www.w3.org/2007/ont/link#Document': 1, + 'http://www.w3.org/ns/rww#editable': 1, + 'http://www.w3.org/2000/01/rdf-schema#seeAlso': 1, + 'http://www.w3.org/2002/07/owl#': 1 + }, + classes: { // Things which are inherently already undercover + 'http://www.w3.org/2007/ont/link#ProtocolEvent': 1 + } +} + +// ends + + +/***/ }), + +/***/ "./node_modules/solid-panes/issue/pane.js": +/*!************************************************!*\ + !*** ./node_modules/solid-panes/issue/pane.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* Issue Tracker Pane +** +** This outline pane allows a user to interact with an issue, +** to change its state according to an ontology, comment on it, etc. +** +** +** I am using in places single quotes strings like 'this' +** where internationalization ("i18n") is not a problem, and double quoted +** like "this" where the string is seen by the user and so I18n is an issue. +** +*/ +/* global confirm */ + +var UI = __webpack_require__(/*! solid-ui */ "./node_modules/solid-ui/lib/index.js") +var panes = __webpack_require__(/*! ../paneRegistry */ "./node_modules/solid-panes/paneRegistry.js") + +const SET_MODIFIED_DATES = false + +module.exports = { + icon: UI.icons.iconBase + 'noun_97839.svg', // was: js/panes/issue/tbl-bug-22.png + + name: 'issue', + + // Does the subject deserve an issue pane? + label: function (subject) { + var kb = UI.store + var t = kb.findTypeURIs(subject) + if (t['http://www.w3.org/2005/01/wf/flow#Task'] || + kb.holds(subject, UI.ns.wf('tracker'))) return 'issue' // in case ontology not available + if (t['http://www.w3.org/2005/01/wf/flow#Tracker']) return 'tracker' + // Later: Person. For a list of things assigned to them, + // open bugs on projects they are developer on, etc + return null // No under other circumstances (while testing at least!) + }, + + render: function (subject, dom) { + var kb = UI.store + var ns = UI.ns + var WF = $rdf.Namespace('http://www.w3.org/2005/01/wf/flow#') + var DC = $rdf.Namespace('http://purl.org/dc/elements/1.1/') + var DCT = $rdf.Namespace('http://purl.org/dc/terms/') + var outliner = panes.getOutliner(dom) + + var div = dom.createElement('div') + div.setAttribute('class', 'issuePane') + + // Don't bother changing the last modified dates of things: save time + function setModifiedDate (subj, kb, doc) { + if (SET_MODIFIED_DATES) { + if (!getOption(tracker, 'trackLastModified')) return + var deletions = kb.statementsMatching(subject, DCT('modified')) + deletions = deletions.concat(kb.statementsMatching(subject, WF('modifiedBy'))) + var insertions = [ $rdf.st(subject, DCT('modified'), new Date(), doc) ] + if (me) insertions.push($rdf.st(subject, WF('modifiedBy'), me, doc)) + updater.update(deletions, insertions, function (uri, ok, body) {}) + } + } + + function say (message, style) { + var pre = dom.createElement('pre') + pre.setAttribute('style', style || 'color: grey') + div.appendChild(pre) + pre.appendChild(dom.createTextNode(message)) + return pre + } + + function complain (message) { + console.warn(message) + div.appendChild(UI.widgets.errorMessageBlock(dom, message)) + } + + function complainIfBad (ok, body) { + if (!ok) { + complain('Sorry, failed to save your change:\n' + body, 'background-color: pink;') + } + } + + var getOption = function (tracker, option) { // eg 'allowSubIssues' + var opt = kb.any(tracker, ns.ui(option)) + return !!(opt && opt.value) + } + + var thisPane = this + var rerender = function (div) { + var parent = div.parentNode + var div2 = thisPane.render(subject, dom) + parent.replaceChild(div2, div) + } + + var timestring = function () { + var now = new Date() + return '' + now.getTime() + // http://www.w3schools.com/jsref/jsref_obj_date.asp + } + + // Form to collect data about a New Issue + // + var newIssueForm = function (dom, kb, tracker, superIssue) { + var form = dom.createElement('div') // form is broken as HTML behaviour can resurface on js error + var stateStore = kb.any(tracker, WF('stateStore')) + + var sendNewIssue = function () { + titlefield.setAttribute('class', 'pendingedit') + titlefield.disabled = true + var sts = [] + var issue + + var expandTemplate = function (template) { + const now = new $rdf.Literal(new Date()) + const nnnn = '' + (new Date()).getTime() + let YYYY = now.value.slice(0, 4) + var MM = now.value.slice(5, 7) + var DD = now.value.slice(8, 10) + return template.replace('{N}', nnnn).replace('{YYYY}', YYYY).replace('{MM}', MM).replace('{DD}', DD) + } + // Where to store the new issue? + var template = kb.anyValue(tracker, WF('issueURITemplate')) + var issueDoc + if (template) { // Does each issue do in its own file? + template = $rdf.uri.join(template, stateStore.uri) // Template is relative + issue = kb.sym(expandTemplate(template)) + } else { + issue = kb.sym(stateStore.uri + '#' + 'Iss' + timestring()) + } + issueDoc = issue.doc() + + // Basic 9 core predicates are stored in the main stateStore + + var title = kb.literal(titlefield.value) + sts.push(new $rdf.Statement(issue, WF('tracker'), tracker, stateStore)) + sts.push(new $rdf.Statement(issue, DC('title'), title, stateStore)) + sts.push(new $rdf.Statement(issue, DCT('created'), new Date(), stateStore)) + var initialStates = kb.each(tracker, WF('initialState')) + if (initialStates.length === 0) console.log('This tracker has no initialState') + for (var i = 0; i < initialStates.length; i++) { + sts.push(new $rdf.Statement(issue, ns.rdf('type'), initialStates[i], stateStore)) + } + if (superIssue) sts.push(new $rdf.Statement(superIssue, WF('dependent'), issue, stateStore)) + + // Other things are stores in the individual + if (template) { + sts.push(new $rdf.Statement(issue, WF('tracker'), tracker, issueDoc)) + sts.push(new $rdf.Statement(issue, ns.rdfs('seeAlso'), stateStore, issueDoc)) + } + + var sendComplete = function (uri, success, body) { + if (!success) { + console.log("Error: can't save new issue:" + body) + } else { + form.parentNode.removeChild(form) + rerender(div) + outliner.GotoSubject(issue, true, undefined, true, undefined) + } + } + updater.update([], sts, sendComplete) + } + // form.addEventListener('submit', function() {try {sendNewIssue} catch(e){console.log('sendNewIssue: '+e)}}, false) + // form.setAttribute('onsubmit', "function xx(){return false;}") + + UI.store.fetcher.removeCallback('done', 'expand') // @@ experimental -- does this kill the re-paint? no + UI.store.fetcher.removeCallback('fail', 'expand') + + var states = kb.any(tracker, WF('issueClass')) + var classLabel = UI.utils.label(states) + form.innerHTML = '

Add new ' + (superIssue ? 'sub ' : '') + + classLabel + '

Title of new ' + classLabel + ':

' + var titlefield = dom.createElement('input') + titlefield.setAttribute('type', 'text') + titlefield.setAttribute('style', 'margin: 0.5em; font-size: 100%; padding: 0.3em;') + titlefield.setAttribute('size', '100') + titlefield.setAttribute('maxLength', '2048') // No arbitrary limits + titlefield.select() // focus next user input + titlefield.addEventListener('keyup', function (e) { + if (e.keyCode === 13) { + sendNewIssue() + } + }, false) + form.appendChild(titlefield) + return form + } + + // ///////////////////// Reproduction: Spawn a new instance of this app + + var newTrackerButton = function (thisTracker) { + var button = UI.authn.newAppInstance(dom, { noun: 'tracker' }, function (ws, base) { + var appPathSegment = 'issuetracker.w3.org' // how to allocate this string and connect to + // console.log("Ready to make new instance at "+ws) + var sp = UI.ns.space + var kb = UI.store + + if (!base) { + base = kb.any(ws, sp('uriPrefix')).value + if (base.slice(-1) !== '/') { + $rdf.log.error(appPathSegment + ': No / at end of uriPrefix ' + base) + base = base + '/' + } + base += appPathSegment + '/' + timestring() + '/' // unique id + if (!confirm('Make new tracker at ' + base + '?')) { + return + } + } + + var stateStore = kb.any(tracker, WF('stateStore')) + var newStore = kb.sym(base + 'store.ttl') + + var here = thisTracker.doc() + + var oldBase = here.uri.slice(0, here.uri.lastIndexOf('/') + 1) + + var morph = function (x) { // Move any URIs in this space into that space + if (x.elements !== undefined) return x.elements.map(morph) // Morph within lists + if (x.uri === undefined) return x + var u = x.uri + if (u === stateStore.uri) return newStore // special case + if (u.slice(0, oldBase.length) === oldBase) { + u = base + u.slice(oldBase.length) + $rdf.log.debug(' Map ' + x.uri + ' to ' + u) + } + return kb.sym(u) + } + var there = morph(here) + var newTracker = morph(thisTracker) + + var myConfig = kb.statementsMatching(undefined, undefined, undefined, here) + for (var i = 0; i < myConfig.length; i++) { + var st = myConfig[i] + kb.add(morph(st.subject), morph(st.predicate), morph(st.object), there) + } + + // Keep a paper trail @@ Revisit when we have non-public ones @@ Privacy + // + kb.add(newTracker, UI.ns.space('inspiration'), thisTracker, stateStore) + + kb.add(newTracker, UI.ns.space('inspiration'), thisTracker, there) + + // $rdf.log.debug("\n Ready to put " + kb.statementsMatching(undefined, undefined, undefined, there)); //@@ + + updater.put( + there, + kb.statementsMatching(undefined, undefined, undefined, there), + 'text/turtle', + function (uri2, ok, message) { + if (ok) { + updater.put(newStore, [], 'text/turtle', function (uri3, ok, message) { + if (ok) { + console.info('Ok The tracker created OK at: ' + newTracker.uri + + '\nMake a note of it, bookmark it. ') + } else { + console.log('FAILED to set up new store at: ' + newStore.uri + ' : ' + message) + } + }) + } else { + console.log('FAILED to save new tracker at: ' + there.uri + ' : ' + message) + } + } + ) + + // Created new data files. + // @@ Now create initial files - html skin, (Copy of mashlib, css?) + // @@ Now create form to edit configuation parameters + // @@ Optionally link new instance to list of instances -- both ways? and to child/parent? + // @@ Set up access control for new config and store. + }) // callback to newAppInstance + + button.setAttribute('style', 'margin: 0.5em 1em;') + return button + } // newTrackerButton + + // ///////////////////////////////////////////////////////////////////////////// + + var updater = kb.updater + var t = kb.findTypeURIs(subject) + var me = UI.authn.currentUser() + var tracker + + // Refresh the DOM tree + + var refreshTree = function (root) { + if (root.refresh) { + root.refresh() + return + } + for (var i = 0; i < root.children.length; i++) { + refreshTree(root.children[i]) + } + } + + // All the UI for a single issue, without store load or listening for changes + // + function singleIssueUI (subject, div) { + var ns = UI.ns + var predicateURIsDone = {} + var donePredicate = function (pred) { predicateURIsDone[pred.uri] = true } + donePredicate(ns.rdf('type')) + donePredicate(ns.dc('title')) + + var setPaneStyle = function () { + var types = kb.findTypeURIs(subject) + var mystyle = 'padding: 0.5em 1.5em 1em 1.5em; ' + var backgroundColor = null + for (var uri in types) { + backgroundColor = kb.any(kb.sym(uri), kb.sym('http://www.w3.org/ns/ui#backgroundColor')) + if (backgroundColor) break + } + backgroundColor = backgroundColor ? backgroundColor.value : '#eee' // default grey + mystyle += 'background-color: ' + backgroundColor + '; ' + div.setAttribute('style', mystyle) + } + setPaneStyle() + + var stateStore = kb.any(tracker, WF('stateStore')) + var store = kb.sym(subject.uri.split('#')[0]) + + UI.authn.checkUser() // kick off async operation + + var states = kb.any(tracker, WF('issueClass')) + if (!states) throw new Error('This tracker ' + tracker + ' has no issueClass') + var select = UI.widgets.makeSelectForCategory(dom, kb, subject, states, stateStore, function (ok, body) { + if (ok) { + setModifiedDate(store, kb, store) + refreshTree(div) + } else { + console.log('Failed to change state:\n' + body) + } + }) + div.appendChild(select) + + var cats = kb.each(tracker, WF('issueCategory')) // zero or more + for (var i = 0; i < cats.length; i++) { + div.appendChild(UI.widgets.makeSelectForCategory(dom, + kb, subject, cats[i], stateStore, function (ok, body) { + if (ok) { + setModifiedDate(store, kb, store) + refreshTree(div) + } else { + console.log('Failed to change category:\n' + body) + } + })) + } + + let a = dom.createElement('a') + a.setAttribute('href', tracker.uri) + a.setAttribute('style', 'float:right') + div.appendChild(a).textContent = UI.utils.label(tracker) + a.addEventListener('click', UI.widgets.openHrefInOutlineMode, true) + donePredicate(ns.wf('tracker')) + // Descriptions can be long and are stored local to the issue + div.appendChild(UI.widgets.makeDescription(dom, kb, subject, WF('description'), + store, function (ok, body) { + if (ok) setModifiedDate(store, kb, store) + else console.log('Failed to change description:\n' + body) + })) + donePredicate(WF('description')) + + // Assigned to whom? + + var assignments = kb.statementsMatching(subject, ns.wf('assignee')) + if (assignments.length > 1) { + say('Weird, was assigned to more than one person. Fixing ..') + var deletions = assignments.slice(1) + updater.update(deletions, [], function (uri, ok, body) { + if (ok) { + say('Now fixed.') + } else { + complain('Fixed failed: ' + body) + } + }) + } + + // Remaining properties + var plist = kb.statementsMatching(subject) + var qlist = kb.statementsMatching(undefined, undefined, subject) + + // Who could be assigned to this? + // Anyone assigned to any issue we know about + + async function getPossibleAssignees () { + var devs = [] + var devGroups = kb.each(subject, ns.wf('assigneeGroup')) + for (let i = 0; i < devGroups.length; i++) { + let group = devGroups[i] + await kb.fetcher.load() + devs = devs.concat(kb.each(group, ns.vcard('member'))) + } + // Anyone who is a developer of any project which uses this tracker + var proj = kb.any(null, ns.doap('bug-database'), tracker) // What project? + if (proj) { + await kb.fetcher.load(proj) + devs = devs.concat(kb.each(proj, ns.doap('developer'))) + } + return devs + } + + getPossibleAssignees.then(devs => { + if (devs.length) { + devs.map(function (person) { kb.fetcher.lookUpThing(person) }) // best effort async for names etc + var opts = { // 'mint': '** Add new person **', + 'nullLabel': '(unassigned)' + /* 'mintStatementsFun': function (newDev) { + var sts = [ $rdf.st(newDev, ns.rdf('type'), ns.foaf('Person')) ] + if (proj) sts.push($rdf.st(proj, ns.doap('developer'), newDev)) + return sts + } + */ + } + div.appendChild(UI.widgets.makeSelectForOptions(dom, kb, + subject, ns.wf('assignee'), devs, opts, store, + function (ok, body) { + if (ok) setModifiedDate(store, kb, store) + else console.log('Failed to change assignee:\n' + body) + })) + } + }) + + donePredicate(ns.wf('assignee')) + + if (getOption(tracker, 'allowSubIssues')) { + // Sub issues + outliner.appendPropertyTRs(div, plist, false, + function (pred, inverse) { + if (!inverse && pred.sameTerm(WF('dependent'))) return true + return false + }) + + // Super issues + outliner.appendPropertyTRs(div, qlist, true, + function (pred, inverse) { + if (inverse && pred.sameTerm(WF('dependent'))) return true + return false + }) + donePredicate(WF('dependent')) + } + + div.appendChild(dom.createElement('br')) + + if (getOption(tracker, 'allowSubIssues')) { + var b = dom.createElement('button') + b.setAttribute('type', 'button') + div.appendChild(b) + var classLabel = UI.utils.label(states) + b.innerHTML = 'New sub ' + classLabel + b.setAttribute('style', 'float: right; margin: 0.5em 1em;') + b.addEventListener('click', function (e) { + div.appendChild(newIssueForm(dom, kb, tracker, subject)) + }, false) + } + + // Extras are stored centrally to the tracker + var extrasForm = kb.any(tracker, ns.wf('extrasEntryForm')) + if (extrasForm) { + UI.widgets.appendForm(dom, div, {}, + subject, extrasForm, stateStore, complainIfBad) + var fields = kb.each(extrasForm, ns.ui('part')) + fields.map(function (field) { + var p = kb.any(field, ns.ui('property')) + if (p) { + donePredicate(p) // Check that one off + } + }) + } + + // Comment/discussion area + + var spacer = div.appendChild(dom.createElement('tr')) + spacer.setAttribute('style', 'height: 1em') // spacer and placeHolder + + var template = kb.anyValue(tracker, WF('issueURITemplate')) + /* + var chatDocURITemplate = kb.anyValue(tracker, WF('chatDocURITemplate')) // relaive to issue + var chat + if (chatDocURITemplate) { + let template = $rdf.uri.join(chatDocURITemplate, issue.uri) // Template is relative to issue + chat = kb.sym(expandTemplate(template)) + } else + */ + var messageStore + if (template) { + messageStore = subject.doc() // for now. Could go deeper + } else { + messageStore = kb.any(tracker, ns.wf('messageStore')) + if (!messageStore) messageStore = kb.any(tracker, WF('stateStore')) + kb.sym(messageStore.uri + '#' + 'Chat' + timestring()) // var chat = + } + + kb.fetcher.nowOrWhenFetched(messageStore, function (ok, body, xhr) { + if (!ok) { + var er = dom.createElement('p') + er.textContent = body // @@ use nice error message + div.insertBefore(er, spacer) + } else { + var discussion = UI.messageArea( + dom, kb, subject, messageStore) + div.insertBefore(discussion, spacer) + } + }) + donePredicate(ns.wf('message')) + + // Draggable attachment list + UI.widgets.attachmentList(dom, subject, div, { + doc: stateStore, + promptIcon: UI.icons.iconBase + 'noun_25830.svg', + predicate: ns.wf('attachment') + }) + donePredicate(ns.wf('attachment')) + + outliner.appendPropertyTRs(div, plist, false, + function (pred, inverse) { + return !(pred.uri in predicateURIsDone) + }) + outliner.appendPropertyTRs(div, qlist, true, + function (pred, inverse) { + return !(pred.uri in predicateURIsDone) + }) + + var refreshButton = dom.createElement('button') + refreshButton.textContent = 'refresh' + refreshButton.addEventListener('click', function (e) { + UI.store.fetcher.unload(messageStore) + UI.store.fetcher.nowOrWhenFetched(messageStore.uri, undefined, function (ok, body) { + if (!ok) { + console.log('Cant refresh messages' + body) + } else { + refreshTree(div) + // syncMessages(subject, messageTable) + } + }) + }, false) + refreshButton.setAttribute('style', 'margin: 0.5em 1em;') + div.appendChild(refreshButton) + } // singleIssueUI + + // Whatever we are rendering, lets load the ontology + var flowOntology = UI.ns.wf('').doc() + if (!kb.holds(undefined, undefined, undefined, flowOntology)) { // If not loaded already + $rdf.parse(__webpack_require__(/*! ./wf.js */ "./node_modules/solid-panes/issue/wf.js"), kb, flowOntology.uri, 'text/turtle') // Load ontology directly + } + + // Render a single issue + if (t['http://www.w3.org/2005/01/wf/flow#Task'] || + kb.holds(subject, UI.ns.wf('tracker'))) { + tracker = kb.any(subject, WF('tracker')) + if (!tracker) throw new Error('This issue ' + subject + 'has no tracker') + + var trackerURI = tracker.uri.split('#')[0] + // Much data is in the tracker instance, so wait for the data from it + + UI.store.fetcher.load(tracker.doc()).then(function (xhrs) { + var stateStore = kb.any(tracker, WF('stateStore')) + UI.store.fetcher.nowOrWhenFetched(stateStore, subject, function drawIssuePane2 (ok, body) { + if (!ok) return console.log('Failed to load state ' + stateStore + ' ' + body) + singleIssueUI(subject, div) + updater.addDownstreamChangeListener(stateStore, function () { refreshTree(div) }) // Live update + }) + }).catch(err => { + let msg = 'Failed to load config ' + trackerURI + ' ' + err + return complain(msg) + }) + UI.store.fetcher.nowOrWhenFetched(trackerURI, subject, function drawIssuePane1 (ok, body) { + if (!ok) return console.log('Failed to load config ' + trackerURI + ' ' + body) + }) // End nowOrWhenFetched tracker + + // ///////////////////////////////////////////////////////// + // + // Render a Tracker instance + // + } else if (t['http://www.w3.org/2005/01/wf/flow#Tracker']) { + tracker = subject + var overlayPane + + var states = kb.any(subject, WF('issueClass')) + if (!states) throw new Error('This tracker has no issueClass') + var stateStore = kb.any(subject, WF('stateStore')) + if (!stateStore) throw new Error('This tracker has no stateStore') + + UI.authn.checkUser() // kick off async operation + + var h = dom.createElement('h2') + h.setAttribute('style', 'font-size: 150%') + div.appendChild(h) + var classLabel = UI.utils.label(states) + h.appendChild(dom.createTextNode(classLabel + ' list')) // Use class label @@I18n + + // New Issue button + var b = dom.createElement('button') + var container = dom.createElement('div') + b.setAttribute('type', 'button') + b.setAttribute('style', 'padding: 0.3em; font-size: 100%; margin: 0.5em;') + // if (!me) b.setAttribute('disabled', 'true') + container.appendChild(b) + div.appendChild(container) + var img = dom.createElement('img') + img.setAttribute('src', UI.icons.iconBase + 'noun_19460_green.svg') + img.setAttribute('style', 'width: 1em; height: 1em; margin: 0.2em;') + b.appendChild(img) + var span = dom.createElement('span') + span.innerHTML = 'New ' + classLabel + b.appendChild(span) + b.addEventListener('click', function (e) { + b.setAttribute('disabled', 'true') + container.appendChild(newIssueForm(dom, kb, subject)) + }, false) + + // Table of issues - when we have the main issue list + // We also need the ontology loaded + // + UI.store.fetcher.load([stateStore]).then(function (xhrs) { + var query = new $rdf.Query(UI.utils.label(subject)) + var cats = kb.each(tracker, WF('issueCategory')) // zero or more + var vars = ['issue', 'state', 'created'] + for (let i = 0; i < cats.length; i++) { vars.push('_cat_' + i) } + var v = {} // The RDF variable objects for each variable name + vars.map(function (x) { query.vars.push(v[x] = $rdf.variable(x)) }) + query.pat.add(v['issue'], WF('tracker'), tracker) + // query.pat.add(v['issue'], ns.dc('title'), v['title']) + query.pat.add(v['issue'], ns.dct('created'), v['created']) + query.pat.add(v['issue'], ns.rdf('type'), v['state']) + query.pat.add(v['state'], ns.rdfs('subClassOf'), states) + for (let i = 0; i < cats.length; i++) { + query.pat.add(v['issue'], ns.rdf('type'), v['_cat_' + i]) + query.pat.add(v['_cat_' + i], ns.rdfs('subClassOf'), cats[i]) + } + + query.pat.optional = [] + + var propertyList = kb.any(tracker, WF('propertyList')) // List of extra properties + // console.log('Property list: '+propertyList) // + if (propertyList) { + var properties = propertyList.elements + for (var p = 0; p < properties.length; p++) { + var prop = properties[p] + var vname = '_prop_' + p + if (prop.uri.indexOf('#') >= 0) { + vname = prop.uri.split('#')[1] + } + var oneOpt = new $rdf.IndexedFormula() + query.pat.optional.push(oneOpt) + query.vars.push(v[vname] = $rdf.variable(vname)) + oneOpt.add(v['issue'], prop, v[vname]) + } + } + + // console.log('Query pattern is:\n'+query.pat) + // console.log('Query pattern optional is:\n'+opts) + + var selectedStates = {} + var possible = kb.each(undefined, ns.rdfs('subClassOf'), states) + possible.map(function (s) { + if (kb.holds(s, ns.rdfs('subClassOf'), WF('Open')) || s.sameTerm(WF('Open'))) { + selectedStates[s.uri] = true + // console.log('on '+s.uri); // @@ + } + }) + + var overlay + + function bringUpInOverlay (href) { + overlayPane.innerHTML = '' // clear existing + var button = overlayPane.appendChild(dom.createElement('button')) + button.textContent = 'X' + button.addEventListener('click', function (event) { + overlayPane.innerHTML = '' // clear overlay + }) + singleIssueUI(kb.sym(href), overlayPane) + } + + var tableDiv = UI.table(dom, { + query: query, + keyVariable: '?issue', // Charactersic of row + hints: { + '?issue': { linkFunction: bringUpInOverlay }, + '?created': {cellFormat: 'shortDate'}, + '?state': { initialSelection: selectedStates }}}) + div.appendChild(tableDiv) + + overlay = div.appendChild(dom.createElement('div')) + overlay.setAttribute('style', ' position: absolute; top: 100px; right: 20px; margin: 1em white;') + overlayPane = overlay.appendChild(dom.createElement('div')) // avoid stomping on style by pane + + if (tableDiv.refresh) { // Refresh function + var refreshButton = dom.createElement('button') + refreshButton.textContent = 'refresh' + refreshButton.addEventListener('click', function (e) { + UI.store.fetcher.unload(stateStore) + UI.store.fetcher.nowOrWhenFetched(stateStore.uri, undefined, function (ok, body) { + if (!ok) { + console.log('Cant refresh data:' + body) + } else { + tableDiv.refresh() + } + }) + }, false) + div.appendChild(refreshButton) + } else { + console.log('No refresh function?!') + } + div.appendChild(newTrackerButton(subject)) + updater.addDownstreamChangeListener(stateStore, tableDiv.refresh) // Live update + }).catch(function (err) { + return console.log('Cannot load state store: ' + err) + }) + // end of Tracker instance + } else { + console.log('Error: Issue pane: No evidence that ' + subject + ' is either a bug or a tracker.') + } + + var loginOutButton + + UI.authn.checkUser() + .then(webId => { + if (webId) { + console.log('Web ID set already: ' + webId) + me = webId + // @@ enable things + return + } + + loginOutButton = UI.authn.loginStatusBox(dom, (webIdUri) => { + if (webIdUri) { + me = kb.sym(webIdUri) + console.log('Web ID set from login button: ' + webIdUri) + div.removeChild(loginOutButton) + // enable things + } else { + me = null + } + }) + + loginOutButton.setAttribute('style', 'margin: 0.5em 1em;') + div.appendChild(loginOutButton) + }) + + return div + } +} + +// ends + + +/***/ }), + +/***/ "./node_modules/solid-panes/issue/wf.js": +/*!**********************************************!*\ + !*** ./node_modules/solid-panes/issue/wf.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = ` +# Issue tracking - Worksflow application definiion ontology +# +# Finite state automaton ontology +# +# See requirements for tracking tools http://www.w3.org/2005/01/06-tool-req.html +# +@keywords a, is, of. + +@prefix : . +@prefix wf: . + +@prefix rdf: . +@prefix s: . +@prefix owl: . +@prefix xsd: . + +@prefix doc: . +@prefix log: . +@prefix foaf: . +@prefix contact: . +@prefix doap: . +@prefix dc: . +@prefix dct: . + +<> dc:title "Issue Tracking Ontology"; + + dct:creator ; + + s:comment """This ontology defines a very general class (Task) + which can used for any kind of bug tracking, issue tracking, + to-do-list management, action items, goal depednency, and so on. + It captures the state of a task as a subclass, so that + subsumption can be used. + It captures a discussion thread about a task. + It captures subtasks structure if necessary. + A "Tracker" defines actual set of states, categories, etc., + which a task can be in. The data about the tracker + guides the software managing the task. + + There is some workflow modeling finite state machine + terms which are optional for more complex definition + of the transitions allowed. + """. + +Task a s:Class; + s:label "task"@en; owl:disjointUnionOf (Open Closed); + s:comment """Something to be done in a wide sense, + an agenda item at a meeting is one example, but any + issue, task, action item, goal, product, deliverable, milestone, can such a thing. + The requirement for this framework was that it would allow + one to customize ontologies for things such as agenda items, + action items, working group issues with a spec, w3c Last Call issues, + software bugs and administrative requests. + In π-calculus, a process. + Make your type of issue a subclass of Task. + """. + +Open a s:Class; s:subClassOf Task; + s:label "open"@en, "ouvert"@fr; + s:comment """A task which needs attention. The very crude states of Open and Closed all + interoperatbility between different systems if the states for a given + application are made subclasses of either Open or Closed. This allows + tasks from different systems to be mixed and treatd together with + limited but valuable functionality. + """. + +Closed a s:Class; s:subClassOf Task; + s:label "closed"@en, "fermé"@fr; + s:comment """A task which does not neeed attention. It may be closed because + has been abandonned or completed, for example. + """. + + + +description a rdf:Property; + s:label "description"; + s:comment """The description, definition, + or abstract. Information explaining what this is. + Not arbitrary comment about anything, only about the subject. + (Use this property for anything. There is no domain restriction.).""". + +dependent a rdf:Property; + s:label "how"; owl:inverseOf [ s:label "why"]; + s:domain Task; s:range Task; + s:comment """Another task upon which this depends, in the sense that + this task cannot be completed without that task being done. + You can't use this for dependencies on anything other than other tasks. + (Note the US spelling of the URI. In the UK, a dependant is a something + which is dependent on somehing else.)""". + +assignee a rdf:Property; + s:label "assigned to"; owl:inverseOf [s:label "assignment"]; +# s:domain Task; + s:range foaf:Agent; + s:comment """The person or group to whom this has been assigned.""". + +# use dct:modified +#modified a rdf:Property; +# s:label "last changed". + +modifiedBy a rdf:Property; + s:range foaf:Agent; + s:label "changed by". + +# use dct:created instead +#created a rdf:Property; +# s:range xsd:dateTime; +# +# Use foaf:maker instead +#creator a rdf:Property; +# s:range foaf:Agent; +# s:label "changed by". + +subscriber a rdf:Property; + s:label "subscriber"; + s:range foaf:Agent. + + +################## Products +# +# +# History: The Tracker system included a cocept of a product, +# such that an action could be associated with *either* an issue *or* a product. +# Noah Mendelsohn for the TAG needed to be able make +# and to give products: Goals, scuuess criteria, +# deliverables with dates, schedules, TAG members assigned, related issues. +# + + +Product a s:Class; s:subClassOf Task; + s:label "product"; + s:comment """A product is a task which monitors something + which must be produced.""". + +deliverable a rdf:Property; s:subPropertyOf dependent; + s:range Product; + s:label "deliverable"@en; + s:comment """Something which must be deliverered to accomplish this""". + + +goalDescription a rdf:Property, owl:DatatypeProperty; + s:domain Task; s:range xsd:string; + s:label "goals"; + s:comment """A textual description of the goals of this product, etc.""". + +successCriteria a rdf:Property, owl:DatatypeProperty; + s:domain Task; s:range xsd:string; + s:label "success criteria"; + s:comment """A textual description of the successs critera. + How when we know this is done?""". + +dateDue a rdf:Property, owl:DatatypeProperty; + s:domain Task; s:range xsd:date; + s:label "due"@en; + s:comment """The date this task is due. + """. + +################## Attachments + +attachment a rdf:Property; + s:label "attachment"; + s:comment """Something related is attached for information.""". + +screenShot a rdf:Property; s:subPropertyOf attachment; + s:label "screen shot"@en; + s:comment """An image taken by capturing the state of a + computer screen, for example to demonstrate a problem""". + +testData a rdf:Property; s:subPropertyOf attachment; + s:label "test data"@en; + s:comment """A file which can be used as inpiut to a test + or to demonstrate a problem. """. + + +terminalOutput a rdf:Property; s:subPropertyOf attachment; + s:label "terminal output"@en; + s:comment """A file showing user interaction from a + text terminal or console etc. """. + + +message a rdf:Property; s:subPropertyOf attachment; + s:label "message"@en; + s:comment """A message about this. Attached for information.""". + + +Message a s:Class; s:label "message"@en. +recipent a rdf:Property; s:label "to"; s:domain Message; s:range foaf:Agent. +sender a rdf:Property; s:label "from"; s:domain Message; s:range foaf:Agent. + +############################# A Tracker connects and manages issues + +tracker a rdf:Property; + s:label "tracker"; + owl:inverseOf [ s:label "issue"]; + s:domain Task; + s:range Tracker. + +Tracker a s:Class; + s:label "tracker"; + s:comment """A set of issues and + the constraints on how they evolve. + To use this ontology, craete a new tracker. + Copy an existing one or make up your own.""". + +issueClass a rdf:Property; + s:label "all issues must be in"; + s:domain Tracker; + s:range s:Class, State; + s:comment """The class of issues which are allowed in this tracker. + This is essemtial to the operation of the tracker, + as it defines which states an issue can be in. + (The issueClass must be a disjointUnionOf the state classes)""". + +issueCategory a rdf:Property; + s:label "issue category"; + s:domain Tracker; + s:range s:Class; + s:comment """Issues may be categorized according to the + subclasses of this class""". + +stateStore a rdf:Property; + s:label "state store"; + s:domain Tracker; + s:range doc:Document; + s:comment """A read-write document. + The state of the issues is modified here. + When you set up a trcaker, thgis must be set to point + to a writeble data resource on the web.""". + +transactionStore + a rdf:Property; + s:label "transaction store"; + s:domain Tracker; + s:range doc:Document; + s:comment """An appendable document. Transactions and messsages + can be written into here""". + +asigneeClass + a rdf:Property; + s:label "assignees must be"; + s:domain Tracker; + s:range s:Class; # Subclass of foaf:Agent + s:comment """When an issue is assigned, the assignee must be from this class""". + +initialState + a rdf:Property; + s:label "initial state"@en; + s:label "état initial"@fr; + s:domain Tracker; + s:range State; + s:comment """The initial state for a new issue""". + +# Use this to link a project to a tracker +doap:bug-database owl:inverseOf [ s:label "project"@en ]. + + + + +############################################################ +# +# Finite state machines +# +Change a s:Class; + s:label "change"; + s:comment """The universal class of things which +change the state of a task. +Included now: Creation, Transition. (Maybe in the future +more π-calculus constructions such as splitting & merging tasks, +and import/export of obligations to a foreign opaque system.) +""". + +Transition a s:Class; s:subClassOf Change; + s:label "transition"; + s:comment """A transition is a change of state of +a task. Typical properties include date and/or source +(a document causing the transition), and a final state.""". + +Creation a s:Class; s:subClassOf Change; + s:label "creation"; + s:comment """A creation is a change from existence +to non-existence +a task. Typical properties include date and/or source +(a document causing the transition), and a final state.""". + + +date s:range DateTime. + +final a rdf:Property; + s:label "to"; + s:domain Transition; + s:range State. + +task a rdf:Property; + s:range Task; + s:label "task". + +requires a rdf:Property; + s:label "requires"; + s:domain Transition; + s:range rdf:List; # Of properties for validation + s:comment """To be a valid transition, + a necessary (but not necessarily sufficuent) condition + is that there be recorded these properties for the record""". + +affects a rdf:Property; + s:label "affects"; + s:domain doc:Work; + s:range Task. + + +# { ?x a Transition; task ?t; source ?doc } => { ?doc affects ?t }. + + +creates a rdf:Property; + s:label "creates"; + s:domain doc:Work; + s:range Task. + + +allowedTransitions a rdf:Property; + s:domain State; + s:range rdf:List; # @@@ of Action + s:label "allowed transitions"; + s:comment """The state machine is defined + by these lists of transition allowed for each issue. + (An interesting option in the Web is to make an allowed transition + to a state in soemone else's ontology, which in turn allows + transitions into many ontologies. So a finite state maxchine + may become very large. In practice this means that a task handed + off to another organization may be processed on all kinds of ways.)""". + +# { ?x a TerminalState} => { ?x allowedTransitions () }. + +final a rdf:Property; + s:label "to"; + s:range State. + +issue a rdf:Property; + s:label "issue"; + s:comment + """A transition changes the state of the given issue.""". + +source a rdf:Property; + s:label "source"; + s:comment """The source of a transition is + the document by which it happened"""; + s:range doc:Work. +TerminalState a s:Class; + s:subClassOf State; + s:label "terminal state"; + s:comment """A state from which there are no transisions.""". + +NonTerminalState a s:Class; + s:label "non-terminal state"; + owl:disjointWith TerminalState; + s:comment """A state from which there are transisions.""". + +###################################################### + +#ends +` + + +/***/ }), + +/***/ "./node_modules/solid-panes/links/linksPane.js": +/*!*****************************************************!*\ + !*** ./node_modules/solid-panes/links/linksPane.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* Simple pane for links to related material +** +** Uses the attachmentList widget +*/ +const UI = __webpack_require__(/*! solid-ui */ "./node_modules/solid-ui/lib/index.js") +const ns = UI.ns +const kb = UI.store + +const predicate = ns.wf('attachment') + +module.exports = { + icon: UI.icons.iconBase + 'noun_160581.svg', // right arrow noun_160581.svg + + name: 'link', + + // Does the subject deserve a link list pane? + label: function (subject) { + var target = kb.any(subject, ns.meeting('target')) || subject + var count = kb.each(target, predicate).length + if (count > 0) { + return UI.utils.label(predicate) + ' ' + count + } + return null + }, + + mintNew: function (options) { + return new Promise(function (resolve, reject) { + resolve(options) + }) + }, + + render: function (subject, dom) { + const div = dom.createElement('div') + var options = {} + UI.widgets.attachmentList(dom, subject, div, options) + + const p = div.appendChild(dom.createElement('p')) + p.textContent = 'Drag web pages or things onto the target to add to list of links.' + p.setAttribute('style', 'color: #888; padding: 2em;') + + return div + } +} + +// ends + + +/***/ }), + +/***/ "./node_modules/solid-panes/meeting/meetingDetailsForm.js": +/*!****************************************************************!*\ + !*** ./node_modules/solid-panes/meeting/meetingDetailsForm.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = `@prefix : . +@prefix f: <#> . +@prefix dc: . +@prefix cal: . +@prefix meeting: . +@prefix ns: . +@prefix rdf: . +@prefix rdfs: . +@prefix te: . +@prefix dc: . +@prefix xsd: . +@prefix ui: . + + f:main a :Form; + cal:summary "Meeting Details"; + :part f:titleField, f:locationField, f:startField, + f:endField, f:eventComment, f:colorField . + + f:titleField a :SingleLineTextField; + :maxLength 256; + :property cal:summary; + :label "Name of meeting"; + :size 80 . + + f:locationField a :SingleLineTextField; + :maxLength 128; + :property cal:location; + :size 40 . + + f:startField a :DateField; + :label "Start"; + :property cal:dtstart . + + f:endField a :DateField; + :label "End"; + :property cal:dtend . + + f:colorField a :ColorField; + :label "Tab color"; + # :default "#ddddcc"^^xsd:color; + :property ui:backgroundColor . + + f:eventComment + a ui:MultiLineTextField; + # ui:maxLength + # "1048"; + # ui:size + # "40". + ui:property + cal:comment. + +################################################### + +f:settings a :Form; + dc:title "Tab settings"; + :part f:labelField, f:targetField, f:viewField. + + f:labelField a :SingleLineTextField; + :maxLength 128; + :property rdfs:label; + :label "Label on tab"; + :size 40 . + + f:targetField a :NamedNodeURIField; + :maxLength 1024; # Longer? + :property meeting:target; + :label "URL of resource"; + :size 80 . + + f:colorField2 a :ColorField; + :label "Tab color"; + # :default "#ddddcc"^^xsd:color; + :property ui:backgroundColor . + + f:viewField a :SingleLineTextField; + :maxLength 128; + :property meeting:view; + :label "View mode (experts only)"; + :size 40 . + +# +` + + +/***/ }), + +/***/ "./node_modules/solid-panes/meeting/meetingPane.js": +/*!*********************************************************!*\ + !*** ./node_modules/solid-panes/meeting/meetingPane.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* Meeting materials and tools Pane +** +** Putting together some of the tools we have to manage a Meeting +*/ + +// const VideoRoomPrefix = 'https://appear.in/' +const VideoRoomPrefix = 'https://meet.jit.si/' + +var UI = __webpack_require__(/*! solid-ui */ "./node_modules/solid-ui/lib/index.js") +var panes = __webpack_require__(/*! ../paneRegistry */ "./node_modules/solid-panes/paneRegistry.js") + +var meetingDetailsFormText = __webpack_require__(/*! ./meetingDetailsForm.js */ "./node_modules/solid-panes/meeting/meetingDetailsForm.js") + +module.exports = { + icon: UI.icons.iconBase + 'noun_66617.svg', + + name: 'meeting', + + label: function (subject) { + var kb = UI.store + var ns = UI.ns + if (kb.holds(subject, ns.rdf('type'), ns.meeting('Meeting'))) { + return 'Meeting' + } + return null // Suppress pane otherwise + }, + + // Create a new Meeting thing + // + // returns: A promise of a meeting object + // + + mintClass: UI.ns.meeting('Meeting'), + + mintNew: function (options) { + return new Promise(function (resolve, reject) { + var kb = UI.store + var ns = UI.ns + options.newInstance = options.newInstance || kb.sym(options.newBase + 'index.ttl#this') + var meeting = options.newInstance + var meetingDoc = meeting.doc() + + var me = UI.authn.currentUser() + + if (me) { + kb.add(meeting, ns.dc('author'), me, meetingDoc) + } + + kb.add(meeting, ns.rdf('type'), ns.meeting('Meeting'), meetingDoc) + kb.add(meeting, ns.dc('created'), new Date(), meetingDoc) + kb.add(meeting, ns.ui('backgroundColor'), new $rdf.Literal('#ddddcc', undefined, ns.xsd('color')), meetingDoc) + var toolList = new $rdf.Collection() + kb.add(meeting, ns.meeting('toolList'), toolList, meetingDoc) + + toolList.elements.push(meeting) // Add the meeting itself - see renderMain() + + kb.updater.put( + meetingDoc, + kb.statementsMatching(undefined, undefined, undefined, meetingDoc), + 'text/turtle', + function (uri2, ok, message) { + if (ok) { + resolve(options) + } else { + reject(new Error('Error writing meeting configuration: ' + message)) + } + }) + }) + }, + + // Returns a div + + render: function (subject, dom) { + var kb = UI.store + var ns = UI.ns + var updater = kb.updater + var thisPane = this + + var complain = function complain (message, color) { + console.log(message) + var pre = dom.createElement('pre') + pre.setAttribute('style', 'background-color: ' + color || false) + div.appendChild(pre) + pre.appendChild(dom.createTextNode(message)) + } + + var complainIfBad = function (ok, message) { + if (!ok) complain(message) + } + + var meeting = subject + var meetingDoc = subject.doc() + var meetingBase = subject.dir().uri + var div = dom.createElement('div') + var table = div.appendChild(dom.createElement('table')) + var topTR = table.appendChild(dom.createElement('tr')) + topTR.appendChild(dom.createElement('div')) // topDiv + var mainTR = table.appendChild(dom.createElement('tr')) + + var toolBar0 = table.appendChild(dom.createElement('td')) + var toolBar1 = toolBar0.appendChild(dom.createElement('table')) + var toolBar = toolBar1.appendChild(dom.createElement('tr')) + + topTR.setAttribute('style', 'height: 2em;') // spacer if notthing else + + var me = null // @@ Put code to find out logged in person + + var saveBackMeetingDoc = function () { + updater.put( + meetingDoc, + kb.statementsMatching(undefined, undefined, undefined, meetingDoc), + 'text/turtle', + function (uri2, ok, message) { + if (ok) { + tabs.refresh() + resetTools() + } else { + message = 'FAILED to save new thing at: ' + meetingDoc + ' : ' + message + complain(message) + } + }) + } + + var saveAppDocumentLinkAndAddNewThing = function (tool, thing, pred) { + var appDoc = thing.doc() + if (pred) { + kb.add(meeting, pred, thing, appDoc) // Specific Link back to meeting + } + kb.add(thing, ns.meeting('parentMeeting'), meeting, appDoc) // Generic link back to meeting + updater.put( + appDoc, + kb.statementsMatching(undefined, undefined, undefined, appDoc), + 'text/turtle', + function (uri2, ok, message) { + if (ok) { + saveBackMeetingDoc() + } else { + complain('FAILED to save new tool at: ' + thing + ' : ' + message) + } + }) + } + + var makeToolNode = function (target, pred, label, iconURI) { + if (pred) { + kb.add(meeting, pred, target, meetingDoc) + } + var x = UI.widgets.newThing(meetingDoc) + if (label) kb.add(x, ns.rdfs('label'), label, meetingDoc) + if (iconURI) kb.add(x, ns.meeting('icon'), kb.sym(iconURI), meetingDoc) + kb.add(x, ns.rdf('type'), ns.meeting('Tool'), meetingDoc) + kb.add(x, ns.meeting('target'), target, meetingDoc) + var toolList = kb.the(meeting, ns.meeting('toolList')) + toolList.elements.push(x) + return x + } + + // Map from end-user non-iframeable Google maps URI to G Maps API + // Input: like https://www.google.co.uk/maps/place/Mastercard/@53.2717971,-6.2042699,17z/... + // Output: + function googleMapsSpecial (page) { + const initialPrefix = /https:\/\/www\.google\..*\/maps\// + const finalPrefix = 'https://www.google.com/maps/embed/v1/' + const myPersonalApiKEY = 'AIzaSyB8aaT6bY9tcLCmc2oPCkdUYLmTOWM8R54' // Get your own key! + // GET YOUR KEY AT https://developers.google.com/maps/documentation/javascript/ + const uri = page.uri + if (!uri.match(initialPrefix)) return page + if (uri.startsWith(finalPrefix)) return page // Already done + const map = uri.replace(initialPrefix, finalPrefix) + '&key=' + myPersonalApiKEY + console.log('Converted Google Map URI! ' + map) + return $rdf.sym(map) + } + + // //////////////////// DRAG and Drop + + var handleDroppedThing = function (target) { // @@ idea: look + return new Promise(function (resolve, reject) { + // Add a meeting tab for a web resource. Alas many resource canot be framed + // as they block framing, or are insecure. + var addIframeTool = function (target) { + var tool = makeToolNode(target, UI.ns.wf('attachment'), UI.utils.label(target), null) + kb.add(tool, UI.ns.meeting('view'), 'iframe', meetingDoc) + } + + var addLink = function (target) { + const pred = ns.wf('attachment') + kb.add(subject, pred, target, subject.doc()) + var toolObject = { + icon: 'noun_160581.svg', // right arrow "link" + limit: 1, + shareTab: true // but many things behind it + } + var newPaneOptions = { + newInstance: subject, // kb.sym(subject.doc().uri + '#LinkListTool'), + pane: panes.link, // the pane to be used to mint a new thing + predicate: ns.meeting('attachmentTool'), + tabTitle: 'Links', + view: 'link', // The pane to be used when it is viewed + noIndexHTML: true} + return makeNewPaneTool(toolObject, newPaneOptions) + } + + // When paerson added to he meeting, make an ad hoc group + // of meeting participants is one does not already exist, and add them + var addParticipant = function (target) { + var pref = kb.any(target, ns.foaf('preferredURI')) + var obj = pref ? kb.sym(pref) : target + var group = kb.any(meeting, ns.meeting('attendeeGroup')) + var addPersonToGroup = function (obj, group) { + var ins = [$rdf.st(group, UI.ns.vcard('hasMember'), obj, group.doc())] // @@@ Complex rules about webid? + var name = kb.any(obj, ns.vcard('fn')) || kb.any(obj, ns.foaf('name')) + if (name) { + ins.push($rdf.st(obj, UI.ns.vcard('fn'), name, group.doc())) + } + kb.fetcher.nowOrWhenFetched(group.doc(), undefined, function (ok, body) { + if (!ok) { + complain('Can\'t read group to add person' + group) + return + } + kb.updater.update([], ins, function (uri, ok, body) { + complainIfBad(ok, body) + if (ok) { + console.log('Addded to particpants OK: ' + obj) + } + }) + }) + } + if (group) { + addPersonToGroup(obj, group) + return + } + makeParticipantsGroup().then(function (options) { + var group = options.newInstance + addPersonToGroup(obj, group) + kb.fetcher.putBack(meetingDoc, {contentType: 'text/turtle'}).then(function (xhr) { + console.log('Particiants Group created: ' + group) + }) + }).catch(function (err) { + complain(err) + }) + } + + console.log('Dropped on thing ' + target) // icon was: UI.icons.iconBase + 'noun_25830.svg' + var u = target.uri + if (u.startsWith('http:') && u.indexOf('#') < 0) { // insecure Plain document + addLink(target) + return resolve(target) + } + kb.fetcher.nowOrWhenFetched(target, function (ok, mess) { + function addAttachmentTab (target) { + target = googleMapsSpecial(target) + console.log('make web page attachement tab ' + target) // icon was: UI.icons.iconBase + 'noun_25830.svg' + var tool = makeToolNode(target, UI.ns.wf('attachment'), UI.utils.label(target), null) + kb.add(tool, UI.ns.meeting('view'), 'iframe', meetingDoc) + return resolve(target) + } + if (!ok) { + console.log('Error looking up dropped thing, will just add it anyway. ' + target + ': ' + mess) + return addAttachmentTab(target) // You can still try iframing it. (Could also add to list of links in PersonTR widgets) + } else { + var obj = target + var types = kb.findTypeURIs(obj) + for (var ty in types) { + console.log(' drop object type includes: ' + ty) + } + if (ns.vcard('Individual').uri in types || ns.foaf('Person').uri in types || ns.foaf('Agent').uri in types) { + addParticipant(target) + return resolve(target) + } + if (u.startsWith('https:') && u.indexOf('#') < 0) { // Plain secure document + // can we iframe it? + var hh = kb.fetcher.getHeader(target, 'x-frame-options') + var ok2 = true + if (hh) { + for (var j = 0; j < hh.length; j++) { + console.log('x-frame-options: ' + hh[j]) + if (hh[j].indexOf('sameorigin') < 0) { // (and diff origin @@) + ok2 = false + } + if (hh[j].indexOf('deny') < 0) { + ok2 = false + } + } + } + if (ok2) { + target = googleMapsSpecial(target) // tweak Google maps to embed OK + addIframeTool(target) // Something we can maybe iframe + return resolve(target) + } + } // Something we cannot iframe, and must link to: + console.log('Default: assume web page attachement ' + target) // icon was: UI.icons.iconBase + 'noun_25830.svg' + return addAttachmentTab(target) + } + }) + }) // promise + } + + // When a set of URIs are dropped on the tabs + var droppedURIHandler = function (uris) { + Promise.all(uris.map(function (u) { + var target = $rdf.sym(u) // Attachment needs text label to disinguish I think not icon. + return handleDroppedThing(target) // can add to meetingDoc but must be sync + })).then(function (a) { + saveBackMeetingDoc() + }) + } + + var droppedFileHandler = function (files) { + UI.widgets.uploadFiles(kb.fetcher, files, meeting.dir().uri + 'Files', meeting.dir().uri + 'Pictures', + function (theFile, destURI) { + if (theFile.type.startsWith('image/')) { + makePicturesFolder('Files') // If necessary + } else { + makeMaterialsFolder('Pictures') + } + }) + } + + // ////////////////////////////////////////////////////// end of drag drop + + var makeGroup = function (toolObject) { + var newBase = meetingBase + 'Group/' + var kb = UI.store + var group = kb.any(meeting, ns.meeting('particpants')) + if (!group) { + group = $rdf.sym(newBase + 'index.ttl#this') + } + console.log('Participant group: ' + group) + + var tool = makeToolNode(group, ns.meeting('particpants'), 'Particpants', UI.icons.iconBase + 'noun_339237.svg') // group: noun_339237.svg 'noun_15695.svg' + kb.add(tool, UI.ns.meeting('view'), 'peoplePicker', meetingDoc) + saveBackMeetingDoc() + } + /* + var makeAddressBook = function (toolObject) { + var newBase = meetingBase + 'Group/' + var kb = UI.store + var group = kb.any(meeting, ns.meeting('addressBook')) + if (!group) { + group = $rdf.sym(newBase + 'index.ttl#this') + } + + // Create a tab for the addressbook + var div = dom.createElement('div') + var context = { dom: dom, div: div } + var book + UI.authn.findAppInstances(context, ns.vcard('AddressBook')).then( + function (context) { + if (context.instances.length === 0) { + complain('You have no solid address book. It is really handy to have one to keep track of people and groups') + } else if (context.instances.length > 1) { + var s = context.instances.map(function (x) { return '' + x }).join(', ') + complain('You have more than one solid address book: ' + s + ' Not supported yet.') + } else { // addressbook + book = context.instances[0] + var tool = makeToolNode(book, ns.meeting('addressBook'), 'Address Book', UI.icons.iconBase + 'noun_15695.svg') // group: noun_339237.svg + kb.add(tool, UI.ns.meeting('view'), 'contact', meetingDoc) + saveBackMeetingDoc() + } + } + ) + } + */ + var makePoll = function (toolObject) { + var newPaneOptions = { + useExisting: meeting, // Regard the meeting as being the schedulable event itself. + // newInstance: meeting, + pane: panes.schedule, + view: 'schedule', + // predicate: ns.meeting('schedulingPoll'), + // newBase: meetingBase + 'Schedule/', Not needed as uses existing meeting + tabTitle: 'Schedule poll', + noIndexHTML: true + } + return makeNewPaneTool(toolObject, newPaneOptions) + } + + var makePicturesFolder = function (folderName) { + var toolObject = { + icon: 'noun_598334.svg', // Slideshow @@ find a "picture" icon? + limit: 1, + shareTab: true // but many things behind it + } + var newPaneOptions = { + newInstance: kb.sym(meeting.dir().uri + folderName + '/'), + pane: panes.folder, // @@ slideshow?? + predicate: ns.meeting('pictures'), + shareTab: true, + tabTitle: folderName, + view: 'slideshow', + noIndexHTML: true + } + return makeNewPaneTool(toolObject, newPaneOptions) + } + + var makeMaterialsFolder = function (folderName) { + var toolObject = { + icon: 'noun_681601.svg', // Document + limit: 1, + shareTab: true // but many things behind it + } + var options = { + newInstance: kb.sym(meeting.dir().uri + 'Files/'), + pane: panes.folder, + predicate: ns.meeting('materialsFolder'), + tabTitle: 'Materials', + noIndexHTML: true + } + return makeNewPaneTool(toolObject, options) + } + + var makeParticipantsGroup = function () { + var toolObject = { + icon: 'noun_339237.svg', // Group of people + limit: 1, // Only one tab + shareTab: true // but many things behind it + } + var options = { + newInstance: kb.sym(meeting.dir().uri + 'Attendees/index.ttl#this'), + pane: panes.contact, + predicate: ns.meeting('attendeeGroup'), + tabTitle: 'Attendees', + instanceClass: ns.vcard('Group'), + instanceName: UI.utils.label(subject) + ' attendees', + noIndexHTML: true + } + + return makeNewPaneTool(toolObject, options) + } + + // Make Pad for notes of meeting + + var makePad = function (toolObject) { + var newPaneOptions = { + newBase: meetingBase + 'SharedNotes/', + predicate: UI.ns.meeting('sharedNotes'), + tabTitle: 'Shared Notes', + pane: panes.pad + } + return makeNewPaneTool(toolObject, newPaneOptions) + } + + // Make Sub-meeting of meeting + + var makeMeeting = function (toolObject) { + UI.widgets.askName(dom, kb, parameterCell, ns.foaf('name'), UI.ns.meeting('Meeting')) + .then(function (name) { + if (!name) { + return resetTools() + } + var URIsegment = encodeURIComponent(name) + var options = { + newBase: meetingBase + URIsegment + '/', // @@@ sanitize + predicate: UI.ns.meeting('subMeeting'), + tabTitle: name, + pane: panes.meeting } + return makeNewPaneTool(toolObject, options) + }) + .catch(function (e) { + complain('Error making new sub-meeting: ' + e) + }) + } + + // Returns promise of newPaneOptions + // In: options. + // me?, predicate, newInstance ?, newBase, instanceClass + // out: options. the above plus + // me, newInstance + + function makeNewPaneTool (toolObject, options) { + return new Promise(function (resolve, reject) { + var kb = UI.store + if (!options.useExisting) { // useExisting means use existing object in new role + var existing = kb.any(meeting, options.predicate) + if (existing) { + if (toolObject.limit && toolObject.limit === 1 && !toolObject.shareTab) { + complain('Already have ' + existing + ' as ' + UI.utils.label(options.predicate)) + complain('Cant have two') + return resolve(null) + } if (toolObject.shareTab) { // return existing one + console.log('Using existing ' + existing + ' as ' + UI.utils.label(options.predicate)) + return resolve({ me: me, newInstance: existing, instanceClass: options.instanceClass }) + } + } + } + if (!me && !options.me) reject(new Error('Username not defined for new tool')) + options.me = options.me || me + options.newInstance = options.useExisting || options.newInstance || kb.sym(options.newBase + 'index.ttl#this') + + options.pane.mintNew(options) + .then(function (options) { + var tool = makeToolNode(options.newInstance, options.predicate, + options.tabTitle, options.pane.icon) + if (options.view) { + kb.add(tool, UI.ns.meeting('view'), options.view, meetingDoc) + } + saveBackMeetingDoc() + kb.fetcher.putBack(meetingDoc, {contentType: 'text/turtle'}).then(function (xhr) { + resolve(options) + }).catch(function (err) { + reject(err) + }) + }) + .catch(function (err) { + complain(err) + reject(err) + }) + }) + } + + var makeAgenda = function (toolObject) { + // selectTool(icon) + } + + var makeActions = function (toolObject) { + var newBase = meetingBase + 'Actions/' + var kb = UI.store + if (kb.holds(meeting, ns.meeting('actions'))) { + console.log('Ignored - already have actions') + return // already got one + } + var appDoc = kb.sym(newBase + 'config.ttl') + var newInstance = kb.sym(newBase + 'config.ttl#this') + var stateStore = kb.sym(newBase + 'state.ttl') + + kb.add(newInstance, ns.dc('title'), (kb.anyValue(meeting, + ns.cal('summary')) || 'Meeting ') + ' actions', appDoc) + kb.add(newInstance, ns.wf('issueClass'), ns.wf('Task'), appDoc) + kb.add(newInstance, ns.wf('initialState'), ns.wf('Open'), appDoc) + kb.add(newInstance, ns.wf('stateStore'), stateStore, appDoc) + kb.add(newInstance, ns.wf('assigneeClass'), ns.foaf('Person'), appDoc) // @@ set to people in the meeting? + + kb.add(newInstance, ns.rdf('type'), ns.wf('Tracker'), appDoc) + + // Flag its type in the chat itself as well as in the master meeting config file + kb.add(newInstance, ns.rdf('type'), ns.wf('Tracker'), appDoc) + var tool = makeToolNode(newInstance, ns.meeting('actions'), 'Actions', UI.icons.iconBase + 'noun_17020.svg') + saveAppDocumentLinkAndAddNewThing(tool, newInstance, ns.meeting('actions')) + } + + var makeChat = function (toolObject) { + var newBase = meetingBase + 'Chat/' + var kb = UI.store + if (kb.holds(meeting, ns.meeting('chat'))) { + console.log('Ignored - already have chat') + return // already got one + } + var messageStore = kb.sym(newBase + 'chat.ttl') + + kb.add(messageStore, ns.rdf('type'), ns.meeting('Chat'), messageStore) + + var tool = makeToolNode(messageStore, ns.meeting('chat'), 'Chat', + UI.icons.iconBase + 'noun_346319.svg') + saveAppDocumentLinkAndAddNewThing(tool, messageStore, ns.meeting('chat')) + } + + var makeVideoCall = function (toolObject) { + var kb = UI.store + var newInstance = $rdf.sym(VideoRoomPrefix + UI.utils.genUuid()) + + if (kb.holds(meeting, ns.meeting('videoCallPage'))) { + console.log('Ignored - already have a videoCallPage') + return // already got one + } + kb.add(newInstance, ns.rdf('type'), ns.meeting('VideoCallPage'), meetingDoc) + var tool = makeToolNode(newInstance, ns.meeting('videoCallPage'), 'Video call', UI.icons.iconBase + 'noun_260227.svg') + kb.add(tool, ns.meeting('view'), 'iframe', meetingDoc) + saveBackMeetingDoc() + } + + var makeAttachment = function (toolObject) { + UI.widgets.askName(dom, kb, parameterCell, ns.log('uri'), UI.ns.rdf('Resource')) + .then(function (uri) { + if (!uri) { + return resetTools() + } + var kb = UI.store + var ns = UI.ns + var target = kb.sym(uri) + var tool = makeToolNode(target, ns.wf('attachment'), UI.utils.label(target), null) + kb.add(tool, ns.meeting('view'), 'iframe', meetingDoc) + saveBackMeetingDoc() + }) + .catch(function (e) { + complain('Error making new sub-meeting: ' + e) + }) + } + + var makeSharing = function (toolObject) { + var kb = UI.store + var ns = UI.ns + var target = meeting.dir() + if (toolObject.limit && toolObject.limit === 1 && kb.holds(meeting, ns.wf('sharingControl'))) { + complain('Ignored - already have ' + UI.utils.label(options.predicate)) + return + } + var tool = makeToolNode(target, ns.wf('sharingControl'), 'Sharing', UI.icons.iconBase + 'noun_123691.svg') + kb.add(tool, ns.meeting('view'), 'sharing', meetingDoc) + saveBackMeetingDoc() + } + + var makeNewMeeting = function () { // @@@ make option of continuing series + var appDetails = {noun: 'meeting'} + var gotWS = function (ws, base) { + thisPane.mintNew({newBase: base}) + .then(function (options) { + var newInstance = options.newInstance + parameterCell.removeChild(mintUI) + var p = parameterCell.appendChild(dom.createElement('p')) + p.setAttribute('style', 'font-size: 140%;') + p.innerHTML = + "Your new meeting is ready to be set up. " + + "

Go to your new meeting." + }) + .catch(function (err) { + parameterCell.removeChild(mintUI) + parameterCell.appendChild(UI.widgets.errorMessageBlock(dom, err)) + }) + } + var mintUI = UI.authn.selectWorkspace(dom, appDetails, gotWS) + parameterCell.appendChild(mintUI) + } + + // //////////////////////////////////////////////////////////// end of new tab creation functions + + var toolIcons = [ + {icon: 'noun_339237.svg', maker: makeGroup, hint: 'Make a group of people', limit: 1}, + {icon: 'noun_346777.svg', maker: makePoll, hint: 'Make a poll to schedule the meeting'}, // When meet THIS or NEXT time + {icon: 'noun_48218.svg', maker: makeAgenda, limit: 1, hint: 'Add an agenda list', disabled: true}, // When meet THIS or NEXT time + {icon: 'noun_79217.svg', maker: makePad, hint: 'Add a shared notepad'}, + {icon: 'noun_346319.svg', maker: makeChat, limit: 1, hint: 'Add a chat channel for the meeting'}, + {icon: 'noun_17020.svg', maker: makeActions, limit: 1, hint: 'Add a list of action items'}, // When meet THIS or NEXT time + {icon: 'noun_260227.svg', maker: makeVideoCall, limit: 1, hint: 'Add a video call for the meeting'}, + {icon: 'noun_25830.svg', maker: makeAttachment, hint: 'Attach meeting materials', disabled: false}, + {icon: 'noun_123691.svg', maker: makeSharing, limit: 1, hint: 'Control Sharing', disabled: false}, + {icon: 'noun_66617.svg', maker: makeMeeting, hint: 'Make a sub meeting', disabled: false} + ] // 'noun_66617.svg' + + var settingsForm = $rdf.sym('https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#settings') + $rdf.parse(meetingDetailsFormText, kb, settingsForm.doc().uri, 'text/turtle') // Load form directly + + var iconStyle = 'padding: 1em; width: 3em; height: 3em;' + var iconCell = toolBar.appendChild(dom.createElement('td')) + var parameterCell = toolBar.appendChild(dom.createElement('td')) + var star = iconCell.appendChild(dom.createElement('img')) + var visible = false // the inividual tools tools + + star.setAttribute('src', UI.icons.iconBase + 'noun_19460_green.svg') // noun_272948.svg + star.setAttribute('style', iconStyle + 'opacity: 50%;') + star.setAttribute('title', 'Add another tool to the meeting') + + var selectNewTool = function (event) { + visible = !visible + star.setAttribute('style', iconStyle + (visible ? 'background-color: yellow;' : '')) + styleTheIcons(visible ? '' : 'display: none;') + } + + var loginOutButton + UI.authn.checkUser() + .then(webId => { + if (webId) { + me = webId + star.addEventListener('click', selectNewTool) + star.setAttribute('style', iconStyle) + return + } + + loginOutButton = UI.authn.loginStatusBox(dom, (webIdUri) => { + if (webIdUri) { + me = kb.sym(webIdUri) + parameterCell.removeChild(loginOutButton) + // loginOutButton.setAttribute('',iconStyle) // make it match the icons + star.addEventListener('click', selectNewTool) + star.setAttribute('style', iconStyle) + } else { + console.log('(Logged out)') + me = null + } + }) + loginOutButton.setAttribute('style', 'margin: 0.5em 1em;') + parameterCell.appendChild(loginOutButton) + }) + + var iconArray = [] + for (var i = 0; i < toolIcons.length; i++) { + var foo = function () { + var toolObject = toolIcons[i] + var icon = iconCell.appendChild(dom.createElement('img')) + icon.setAttribute('src', UI.icons.iconBase + toolObject.icon) + icon.setAttribute('style', iconStyle + 'display: none;') + iconArray.push(icon) + icon.tool = toolObject + var maker = toolObject.maker + if (!toolObject.disabled) { + icon.addEventListener('click', function (e) { + selectTool(icon) + maker(toolObject) + }) + } + } + foo() + } + + var styleTheIcons = function (style) { + for (var i = 0; i < iconArray.length; i++) { + var st = iconStyle + style + if (toolIcons[i].disabled) { + st += 'opacity: 0.3;' + } + iconArray[i].setAttribute('style', st) // eg 'background-color: #ccc;' + } + } + var resetTools = function () { + styleTheIcons('display: none;') + star.setAttribute('style', iconStyle) + } + + var selectTool = function (icon) { + styleTheIcons('display: none;') // 'background-color: #ccc;' + icon.setAttribute('style', iconStyle + 'background-color: yellow;') + } + + // ////////////////////////////// + + var renderTab = function (div, item) { + if (kb.holds(item, ns.rdf('type'), ns.meeting('Tool'))) { + var target = kb.any(item, ns.meeting('target')) + var label = kb.any(item, ns.rdfs('label')) + label = label ? label.value : UI.utils.label(target) + var s = div.appendChild(dom.createElement('div')) + s.textContent = label + s.setAttribute('style', 'margin-left: 0.7em') + var icon = kb.any(item, ns.meeting('icon')) + if (icon) { // Make sure the icon is cleanly on the left of the label + var table = div.appendChild(dom.createElement('table')) + var tr = table.appendChild(dom.createElement('tr')) + var left = tr.appendChild(dom.createElement('td')) + var right = tr.appendChild(dom.createElement('td')) + // var img = div.appendChild(dom.createElement('img')) + var img = left.appendChild(dom.createElement('img')) + img.setAttribute('src', icon.uri) + // img.setAttribute('style', 'max-width: 1.5em; max-height: 1.5em;') // @@ SVG shrinks to 0 + img.setAttribute('style', 'width: 1.5em; height: 1.5em;') // @ + img.setAttribute('title', label) + right.appendChild(s) + } else { + div.appendChild(s) + } + } else { + div.textContent = UI.utils.label(item) + } + } + + var tipDiv = function (text) { + var d = dom.createElement('div') + var p = d.appendChild(dom.createElement('p')) + p.setAttribute('style', 'margin: 0em; padding:3em; color: #888;') + p.textContent = 'Tip: ' + text + return d + } + + var renderTabSettings = function (containerDiv, subject) { + containerDiv.innerHTML = '' + containerDiv.style += 'border-color: #eed;' + containerDiv.appendChild(dom.createElement('h3')).textContent = 'Adjust this tab' + if (kb.holds(subject, ns.rdf('type'), ns.meeting('Tool'))) { + var form = $rdf.sym('https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#settings') + UI.widgets.appendForm(document, containerDiv, {}, subject, form, meeting.doc(), complainIfBad) + var delButton = UI.widgets.deleteButtonWithCheck(dom, containerDiv, 'tab', function () { + var toolList = kb.the(meeting, ns.meeting('toolList')) + for (var i = 0; i < toolList.elements.length; i++) { + if (toolList.elements[i].sameTerm(subject)) { + toolList.elements.splice(i, 1) + break + } + } + var target = kb.any(subject, ns.meeting('target')) + var ds = kb.statementsMatching(subject) + .concat(kb.statementsMatching(undefined, undefined, subject)) + .concat(kb.statementsMatching(meeting, undefined, target)) + kb.remove(ds) // Remove all links to and from the tab node + saveBackMeetingDoc() + }) + delButton.setAttribute('style', 'width: 1.5em; height: 1.5em;') + // delButton.setAttribute('class', '') + // delButton.setAttribute('style', 'height: 2em; width: 2em; margin: 1em; border-radius: 0.5em; padding: 1em; font-size: 120%; background-color: red; color: white;') + // delButton.textContent = 'Delete this tab' + } else { + containerDiv.appendChild(dom.createElement('h4')).textContent = '(No adjustments available)' + } + } + + var renderMain = function (containerDiv, subject) { + var pane = null + var table + var selectedGroup = null + containerDiv.innerHTML = '' + var complainIfBad = function (ok, message) { + if (!ok) { + containerDiv.textContent = '' + message + } + } + var showIframe = function (target) { + var iframe = containerDiv.appendChild(dom.createElement('iframe')) + // iframe.setAttribute('sandbox', '') // All restrictions + iframe.setAttribute('src', target.uri) + // iframe.setAttribute('style', 'height: 350px; border: 0; margin: 0; padding: 0; resize:both; width: 100%;') + iframe.setAttribute('style', 'border: none; margin: 0; padding: 0; height: 100%; width: 100%; resize: both; overflow:scroll;') + containerDiv.style.resize = 'none' // Remove scroll bars on outer div - don't seem to work so well + containerDiv.style.padding = 0 + } + var renderPeoplePicker = function () { + var context = {div: containerDiv, dom: dom} + containerDiv.appendChild(dom.createElement('h4')).textContent = 'Meeting Participants' + var groupPickedCb = function (group) { + var toIns = [$rdf.st(meeting, ns.meeting('particpantGroup'), group, meeting.doc())] + kb.updater.update([], toIns, function (uri, ok, message) { + if (ok) { + selectedGroup = group + } else { + complain('Cant save participants group: ' + message) + } + }) + } + selectedGroup = kb.any(meeting, ns.meeting('particpantGroup')) + + UI.authn.loadTypeIndexes(context).then(function (context) { + // Assumes that the type index has an entry for addressbook + var options = { defaultNewGroupName: 'Meeting Participants', selectedGroup: selectedGroup } + var picker = new UI.widgets.PeoplePicker(context.div, context.index.private[0], groupPickedCb, options) + picker.render() + }) + } + + var renderDetails = function () { + containerDiv.appendChild(dom.createElement('h3')).textContent = 'Details of meeting' + var form = $rdf.sym('https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#main') + UI.widgets.appendForm(document, containerDiv, {}, meeting, form, meeting.doc(), complainIfBad) + containerDiv.appendChild(tipDiv( + 'Drag URL-bar icons of web pages into the tab bar on the left to add new meeting materials.')) + me = UI.authn.currentUser() + if (me) { + kb.add(meeting, ns.dc('author'), me, meetingDoc) // @@ should nly be on initial creation? + } + var context = {noun: 'meeting', me: me, statusArea: containerDiv, div: containerDiv, dom: dom} + UI.authn.registrationControl(context, meeting, ns.meeting('Meeting')).then(function (context) { + console.log('Registration control finsished.') + }) + var options = {} + UI.pad.manageParticipation(dom, containerDiv, meetingDoc, meeting, me, options) + + // "Make a new meeting" button + var imageStyle = 'height: 2em; width: 2em; margin:0.5em;' + var detailsBottom = containerDiv.appendChild(dom.createElement('div')) + var spawn = detailsBottom.appendChild(dom.createElement('img')) + spawn.setAttribute('src', UI.icons.iconBase + 'noun_145978.svg') + spawn.setAttribute('title', 'Make a fresh new meeting') + spawn.addEventListener('click', makeNewMeeting) + spawn.setAttribute('style', imageStyle) + + // "Fork me on Github" button + var forka = detailsBottom.appendChild(dom.createElement('a')) + forka.setAttribute('href', 'https://github.com/solid/solid-panes') // @@ Move when code moves + forka.setAttribute('target', '_blank') + var fork = forka.appendChild(dom.createElement('img')) + fork.setAttribute('src', UI.icons.iconBase + 'noun_368567.svg') + fork.setAttribute('title', 'Fork me on github') + fork.setAttribute('style', imageStyle + 'opacity: 50%;') + } + + if (kb.holds(subject, ns.rdf('type'), ns.meeting('Tool'))) { + var target = kb.any(subject, ns.meeting('target')) + if (target.sameTerm(meeting) && !kb.any(subject, ns.meeting('view'))) { // self reference? force details form + renderDetails() // Legacy meeting instances + } else { + var view = kb.any(subject, ns.meeting('view')) + view = view ? view.value : null + if (view === 'details') { + renderDetails() + } else if (view === 'peoplePicker') { + renderPeoplePicker() + } else if (view === 'iframe') { + showIframe(target) + } else { + pane = view ? panes.byName(view) : null + table = containerDiv.appendChild(dom.createElement('table')) + table.style.width = '100%' + panes.getOutliner(dom).GotoSubject(target, true, pane, false, undefined, table) + } + } + } else if (subject.sameTerm(meeting)) { // self reference? force details form + renderDetails() + } else if (subject.sameTerm(subject.doc()) && + !kb.holds(subject, UI.ns.rdf('type'), UI.ns.meeting('Chat')) && + !kb.holds(subject, UI.ns.rdf('type'), UI.ns.meeting('PaneView'))) { + } else { + table = containerDiv.appendChild(dom.createElement('table')) + panes.getOutliner(dom).GotoSubject(subject, true, undefined, false, undefined, table) + } + } + + var options = {dom: dom} + options.predicate = ns.meeting('toolList') + options.subject = subject + options.ordered = true + options.orientation = 1 // tabs on LHS + options.renderMain = renderMain + options.renderTab = renderTab + options.renderTabSettings = renderTabSettings + options.backgroundColor = kb.anyValue(subject, ns.ui('backgroundColor')) || '#ddddcc' + var tabs = mainTR.appendChild(UI.tabs.tabWidget(options)) + + UI.aclControl.preventBrowserDropEvents(dom) + + UI.widgets.makeDropTarget(tabs.tabContainer, droppedURIHandler, droppedFileHandler) + UI.widgets.makeDropTarget(iconCell, droppedURIHandler, droppedFileHandler) + + return div + } +} +// ends + + +/***/ }), + +/***/ "./node_modules/solid-panes/microblogPane/microblogPane.js": +/*!*****************************************************************!*\ + !*** ./node_modules/solid-panes/microblogPane/microblogPane.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* + Microblog pane + Charles McKenzie +*/ +/* global alert */ +var UI = __webpack_require__(/*! solid-ui */ "./node_modules/solid-ui/lib/index.js") + +module.exports = { + + icon: UI.icons.originalIconBase + 'microblog/microblog.png', + name: 'microblogPane', + label: function (subject) { + if (UI.store.whether(subject, UI.ns.rdf('type'), UI.ns.foaf('Person'))) { + return 'Microblog' + } else { + return null + } + }, + render: function (s, doc) { + //* ********************************************** + // NAMESPACES SECTION + //* ********************************************** + var SIOC = UI.rdf.Namespace('http://rdfs.org/sioc/ns#') + var SIOCt = UI.rdf.Namespace('http://rdfs.org/sioc/types#') + var FOAF = UI.rdf.Namespace('http://xmlns.com/foaf/0.1/') + var terms = UI.rdf.Namespace('http://purl.org/dc/terms/') + var RDF = UI.ns.rdf + + var kb = UI.store + var charCount = 140 + var sf = UI.store.fetcher + //* ********************************************** + // BACK END + //* ********************************************** + var sparqlUpdater = kb.updater + // ---------------------------------------------- + // FOLLOW LIST + // store the URIs of followed users for + // dereferencing the @replies + // ---------------------------------------------- + var FollowList = function (user) { + this.userlist = {} + this.uris = {} + var myFollows = kb.each(kb.sym(user), SIOC('follows')) + for (var mf in myFollows) { + this.add(kb.any(myFollows[mf], SIOC('id')), myFollows[mf].uri) + } + } + FollowList.prototype.add = function (user, uri) { + // add a user to the follows store + if (this.userlist[user]) { + if (!(uri in this.uris)) { + this.userlist[user].push(uri) + this.uris[uri] = '' + } + } else { + this.userlist[user] = [uri] + } + } + FollowList.prototype.selectUser = function (user) { + // check if a user is in the follows list. + if (this.userlist[user]) { + return [(this.userlist[user].length === 1), this.userlist[user]] + } else { + // user does not follow any users with this nick + return [false, []] + } + } + // ---------------------------------------------- + // FAVORITES + // controls the list of favorites. + // constructor expects a user as uri. + // ---------------------------------------------- + var Favorites = function (user) { + this.favorites = {} + this.favoritesURI = '' + if (!user) { // TODO is this even useful? + return + } + this.user = user.split('#')[0] + let created = kb.each(kb.sym(user), SIOC('creator_of')) + for (let c in created) { + if (kb.whether(created[c], RDF('type'), SIOCt('FavouriteThings'))) { + this.favoritesURI = created[c] + var favs = kb.each(created[c], SIOC('container_of')) + for (var f in favs) { + this.favorites[favs[f]] = '' + } + break + } + } + } + Favorites.prototype.favorited = function (post) { + /* Favorited- returns true if the post is a favorite + false otherwise */ + return (kb.sym(post) in this.favorites) + } + Favorites.prototype.add = function (post, callback) { + var batch = new UI.rdf.Statement(this.favoritesURI, SIOC('container_of'), kb.sym(post), kb.sym(this.user)) + sparqlUpdater.insert_statement(batch, + function (a, success, c) { + if (success) { + kb.add(batch.subject, batch.predicate, batch.object, batch.why) + } + callback(a, success, c) + }) + } + Favorites.prototype.remove = function (post, callback) { + var batch = new UI.rdf.Statement(this.favoritesURI, SIOC('container_of'), kb.sym(post), kb.sym(this.user)) + sparqlUpdater.delete_statement(batch, + function (a, success, c) { + if (success) { + kb.add(batch.subject, batch.predicate, batch.object, batch.why) + } + callback(a, success, c) + }) + } + // ---------------------------------------------- + // MICROBLOG + // store the uri's of followed users for + // dereferencing the @replies. + // ---------------------------------------------- + var Microblog = function (kb) { + this.kb = kb + + // attempt to fetch user account from local preferences if just + // in case the user's foaf was not writable. add it to the store + // this will probably need to change. + var theUser = UI.authn.currentUser() + + if (theUser) { + var theAccount = UI.preferences.get('acct') + + if (theAccount) { + theAccount = kb.sym(theAccount) + } + + if (theUser && theAccount) { + kb.add(theUser, FOAF('holdsAccount'), theAccount, theUser.uri.split('#')[0]) + } + } + } + Microblog.prototype.getUser = function (uri) { + let User = {} + User.name = (kb.any(uri, SIOC('name'))) ? kb.any(uri, SIOC('name')) : '' + User.avatar = (kb.any(uri, SIOC('avatar'))) ? kb.any(uri, SIOC('avatar')) : '' + User.id = kb.any(uri, SIOC('id')) + User.sym = uri + return User + } + + Microblog.prototype.getPost = function (uri) { + var Post = {} + // date ---------- + var postLink = new Date(kb.anyValue(uri, terms('created'))) + var h = postLink.getHours() + var a = (h > 12) ? ' PM' : ' AM' + h = (h > 12) ? (h - 12) : h + var m = postLink.getMinutes() + m = (m < 10) ? '0' + m : m + var mo = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] + var da = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] + var ds = da[postLink.getDay()] + ' ' + postLink.getDate() + ' ' + mo[postLink.getMonth()] + ' ' + postLink.getFullYear() + postLink = h + ':' + m + a + ' on ' + ds + Post.date = postLink + // --------- + Post.mentions = '' + Post.message = String(kb.any(uri, SIOC('content'))) + Post.creator = kb.any(uri, SIOC('has_creator')) + Post.uri = '' + return Post + } + Microblog.prototype.gen_random_uri = function (base) { + // generate random uri + var uriNonce = base + '#n' + Math.floor(Math.random() * 10e+9) + return kb.sym(uriNonce) + } + Microblog.prototype.statusUpdate = function (statusMsg, callback, replyTo, meta) { + var myUserURI = this.getMyURI() + let myUser = kb.sym(myUserURI.split('#')[0]) + var newPost = this.gen_random_uri(myUser.uri) + var microlist = kb.each(kb.sym(myUserURI), SIOC('creator_of')) + var micro + for (var microlistelement in microlist) { + if (kb.whether(microlist[microlistelement], RDF('type'), SIOCt('Microblog')) && + !kb.whether(microlist[microlistelement], SIOC('topic'), kb.sym(this.getMyURI()))) { + micro = microlist[microlistelement] + break + } + } + + // generate new post + var batch = [ + new UI.rdf.Statement(newPost, RDF('type'), SIOCt('MicroblogPost'), myUser), + new UI.rdf.Statement(newPost, SIOC('has_creator'), kb.sym(myUserURI), myUser), + new UI.rdf.Statement(newPost, SIOC('content'), statusMsg, myUser), + new UI.rdf.Statement(newPost, terms('created'), new Date(), myUser), + new UI.rdf.Statement(micro, SIOC('container_of'), newPost, myUser) + ] + + // message replies + if (replyTo) { + batch.push(new UI.rdf.Statement(newPost, SIOC('reply_of'), kb.sym(replyTo), myUser)) + } + + // @replies, #hashtags, !groupReplies + for (var r in meta.recipients) { + batch.push(new UI.rdf.Statement(newPost, SIOC('topic'), kb.sym(meta.recipients[r]), myUser)) + batch.push(new UI.rdf.Statement(kb.any(), SIOC('container_of'), newPost, myUser)) + var mblogs = kb.each(kb.sym(meta.recipients[r]), SIOC('creator_of')) + for (var mbl in mblogs) { + if (kb.whether(mblogs[mbl], SIOC('topic'), kb.sym(meta.recipients[r]))) { + var replyBatch = new UI.rdf.Statement( + mblogs[mbl], + SIOC('container_of'), + newPost, + kb.sym(meta.recipients[r].split('#')[0])) + sparqlUpdater.insert_statement(replyBatch) + } + } + } + + sparqlUpdater.insert_statement(batch, + function (a, b, c) { + callback(a, b, c, batch) + }) + } + Microblog.prototype.getMyURI = function () { + var me = UI.authn.currentUser() + console.log(me) + var myMicroblog = kb.any(kb.sym(me), FOAF('holdsAccount')) + console.log('\n\n' + myMicroblog) + return (myMicroblog) ? myMicroblog.uri : false + } + Microblog.prototype.generateNewMB = function (id, name, avatar, loc) { + var host = loc + '/' + id + var rememberMicroblog = function () { + UI.preferences.set('acct', host + '#' + id) + } + var cbgenUserMB = function (a, success, c, d) { + if (success) { + alert('Microblog generated at ' + host + '#' + id + + 'please add ' + host + ' to your foaf.') + // mbCancelNewMB() @@TBD + // assume the foaf is not writable and store the microblog to the + // preferences for later retrieval. + // this will probably need to change. + rememberMicroblog() + for (var triple in d) { + kb.add(d[triple].subject, d[triple].predicate, d[triple].object, d[triple].why) + } + } + } + + var genUserMB = [ + // user + new UI.rdf.Statement(kb.sym(host + '#' + id), RDF('type'), SIOC('User'), kb.sym(host)), + new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('creator_of'), kb.sym(host + '#mb'), kb.sym(host)), + new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('creator_of'), kb.sym(host + '#mbn'), kb.sym(host)), + new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('creator_of'), kb.sym(host + '#fav'), kb.sym(host)), + new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('name'), name, kb.sym(host)), + new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('id'), id, kb.sym(host)), + new UI.rdf.Statement(kb.sym(host + '#' + id), RDF('label'), id, kb.sym(host)), + new UI.rdf.Statement(s, FOAF('holdsAccount'), kb.sym(host + '#' + id), kb.sym(host)), + // microblog + new UI.rdf.Statement(kb.sym(host + '#mb'), RDF('type'), SIOCt('Microblog'), kb.sym(host)), + new UI.rdf.Statement(kb.sym(host + '#mb'), SIOC('has_creator'), kb.sym(host + '#' + id), kb.sym(host)), + // notification microblog + new UI.rdf.Statement(kb.sym(host + '#mbn'), RDF('type'), SIOCt('Microblog'), kb.sym(host)), + new UI.rdf.Statement(kb.sym(host + '#mbn'), SIOC('topic'), kb.sym(host + '#' + id), kb.sym(host)), + new UI.rdf.Statement(kb.sym(host + '#mbn'), SIOC('has_creator'), kb.sym(host + '#' + id), kb.sym(host)), + // favorites container + new UI.rdf.Statement(kb.sym(host + '#fav'), RDF('type'), SIOCt('FavouriteThings'), kb.sym(host)), + new UI.rdf.Statement(kb.sym(host + '#fav'), SIOC('has_creator'), kb.sym(host + '#' + id), kb.sym(host)) + ] + if (avatar) { + // avatar optional + genUserMB.push(new UI.rdf.Statement(kb.sym(host + '#' + id), SIOC('avatar'), kb.sym(avatar), kb.sym(host))) + } + sparqlUpdater.insert_statement(genUserMB, cbgenUserMB) + } + var mb = new Microblog(kb) + var myFavorites = new Favorites(mb.getMyURI()) + var myFollowList = new FollowList(mb.getMyURI()) + + //* ********************************************** + // FRONT END FUNCTIONALITY + //* ********************************************** + // ---------------------------------------------- + // PANE + // User Interface for the Microblog Pane + // ---------------------------------------------- + var Pane = function (s, doc, microblogPane) { + var TabManager = function (doc) { + this.tablist = {} + this.doc = doc + this.tabView = doc.createElement('ul') + this.tabView.className = 'tabslist' + } + TabManager.prototype.create = function (id, caption, view, isDefault) { + var tab = this.doc.createElement('li') + tab.innerHTML = caption + if (isDefault) { tab.className = 'active' } + tab.id = id + let change = this.change + let tablist = this.tablist + tab.addEventListener('click', function (evt) { change(evt.target.id, tablist, doc) }, false) + + this.tablist[id] = {'view': view.id, 'tab': tab} + this.tabView.appendChild(tab) + } + TabManager.prototype.getTabView = function () { + return this.tabView + } + TabManager.prototype.change = function (id, tablist, doc) { + for (var tab in tablist) { + if (tab === id) { + tablist[id]['tab'].className = 'active' + doc.getElementById(tablist[id]['view']).className += ' active' + } else { + var view = doc.getElementById(tablist[tab].view) + view.className = view.className.replace(/\w*active\w*/, '') + tablist[tab].tab.className = tablist[id].tab.className.replace(/\w*active\w*/, '') + } + } + } + this.microblogPane = microblogPane + var accounts = kb.each(s, FOAF('holdsAccount')) + for (var a in accounts) { + if (kb.whether(accounts[a], RDF('type'), SIOC('User')) && + kb.whether(kb.any(accounts[a], SIOC('creator_of')), RDF('type'), SIOCt('Microblog'))) { + var account = accounts[a] + break + } + } + this.Ifollow = kb.whether(kb.sym(mb.getMyURI()), SIOC('follows'), account) + var resourceType = kb.any(s, RDF('type')) + if (resourceType.uri === SIOCt('Microblog').uri || resourceType.uri === SIOCt('MicroblogPost').uri) { + this.thisIsMe = (kb.any(s, SIOC('has_creator')).uri === mb.getMyURI()) + } else if (resourceType.uri === SIOC('User').uri) { + this.thisIsMe = (s.uri === mb.getMyURI()) + } else if (resourceType.uri === FOAF('Person').uri) { + let me = UI.authn.currentUser() + let meUri = me && me.uri + this.thisIsMe = (s.uri === meUri) + } else { + this.thisIsMe = false + } + + this.Tab = new TabManager(doc) + } + + Pane.prototype.notify = function (messageString) { + var xmsg = doc.createElement('li') + xmsg.className = 'notify' + xmsg.innerHTML = messageString + doc.getElementById('notify-container').appendChild(xmsg) + setTimeout(function () { + doc.getElementById('notify-container').removeChild(xmsg) + // delete xmsg; + }, + 4000) + } + + Pane.prototype.header = function (s, doc) { + var that = this + function lsFollowUser () { + var myUser = kb.sym(mb.getMyURI()) + // var Ifollow = that.Ifollow + var username = that.creator.name + var mbconfirmFollow = function (uri, success, msg) { + if (success === true) { + if (!that.Ifollow) { + // prevent duplicate entries from being added to kb (because that was happening) + if (!kb.whether(followMe.subject, followMe.predicate, followMe.object, followMe.why)) { + kb.add(followMe.subject, followMe.predicate, followMe.object, followMe.why) + } + } else { + kb.removeMany(followMe.subject, followMe.predicate, followMe.object, followMe.why) + } + console.log(that.Ifollow) + that.Ifollow = !that.Ifollow + xfollowButton.disabled = false + console.log(that.Ifollow) + var followButtonLabel = (that.Ifollow) ? 'Unfollow ' : 'Follow ' + var doFollow = (that.Ifollow) ? 'now follow ' : 'no longer follow ' + xfollowButton.value = followButtonLabel + username + that.notify('You ' + doFollow + username + '.') + } + } + var followMe = new UI.rdf.Statement(myUser, SIOC('follows'), that.creator.sym, myUser) + xfollowButton.disabled = true + xfollowButton.value = 'Updating...' + if (!that.Ifollow) { + sparqlUpdater.insert_statement(followMe, mbconfirmFollow) + } else { + sparqlUpdater.delete_statement(followMe, mbconfirmFollow) + } + } + var notify = function (messageString) { + var xmsg = doc.createElement('li') + xmsg.className = 'notify' + xmsg.innerHTML = messageString + doc.getElementById('notify-container').appendChild(xmsg) + setTimeout(function () { + doc.getElementById('notify-container').removeChild(xmsg) + // delete xmsg; + }, + 4000) + } + var mbCancelNewMB = function (evt) { + xupdateContainer.removeChild(xupdateContainer.childNodes[xupdateContainer.childNodes.length - 1]) + xcreateNewMB.disabled = false + } + var lsCreateNewMB = function (evt) { + // disable the create new microblog button. + // then prefills the information. + xcreateNewMB.disabled = true + var xcmb = doc.createElement('div') + var xcmbName = doc.createElement('input') + if (kb.whether(s, FOAF('name'))) { + // handle use of FOAF:NAME + xcmbName.value = kb.any(s, FOAF('name')) + } else { + // handle use of family and given name + xcmbName.value = (kb.any(s, FOAF('givenname'))) + ? kb.any(s, FOAF('givenname')) + ' ' : '' + xcmbName.value += (kb.any(s, FOAF('family_name'))) + ? kb.any(s, FOAF('givenname')) : '' + xcmbName.value = kb.any(s, FOAF('givenname')) + ' ' + + kb.any(s, FOAF('family_name')) + } + var xcmbId = doc.createElement('input') + xcmbId.value = (kb.any(s, FOAF('nick'))) ? kb.any(s, FOAF('nick')) : '' + var xcmbAvatar = doc.createElement('input') + if (kb.whether(s, FOAF('img'))) { + // handle use of img + xcmbAvatar.value = kb.any(s, FOAF('img')).uri + } else { + // otherwise try depiction + xcmbAvatar.value = (kb.any(s, FOAF('depiction'))) + ? kb.any(s, FOAF('depiction')).uri : '' + } + var workspace + // = kb.any(s,WORKSPACE) //TODO - ADD URI FOR WORKSPACE DEFINITION + var xcmbWritable = doc.createElement('input') + xcmbWritable.value = workspace || 'http://dig.csail.mit.edu/2007/wiki/sandbox' // @@@ + xcmb.innerHTML = ` +
+

Name:

+

Id:

+

Avatar:

+

Host my microblog at:

+ + +
+ ` + xupdateContainer.appendChild(xcmb) + doc.getElementById('xcmbname').appendChild(xcmbName) + doc.getElementById('xcmbid').appendChild(xcmbId) + doc.getElementById('xcmbavatar').appendChild(xcmbAvatar) + doc.getElementById('xcmbwritable').appendChild(xcmbWritable) + doc.getElementById('mbCancel').addEventListener('click', mbCancelNewMB, false) + doc.getElementById('createNewMB').addEventListener('submit', function () { + mb.generateNewMB(xcmbId.value, xcmbName.value, xcmbAvatar.value, xcmbWritable.value) + }, false) + xcmbName.focus() + } + var mbSubmitPost = function () { + var meta = { + recipients: [] + } + // user has selected a microblog to post to + if (mb.getMyURI()) { + // let myUser = kb.sym(mb.getMyURI()) + // submission callback + var cbconfirmSubmit = function (uri, success, responseText, d) { + if (success === true) { + for (var triple in d) { + kb.add(d[triple].subject, d[triple].predicate, d[triple].object, d[triple].why) + } + xupdateSubmit.disabled = false + xupdateStatus.value = '' + mbLetterCount() + notify('Microblog Updated.') + if (that.thisIsMe) { + doc.getElementById('postNotificationList').insertBefore(that.generatePost(d[0].subject), doc.getElementById('postNotificationList').childNodes[0]) + } + } else { + notify('There was a problem submitting your post.') + } + } + var words = xupdateStatus.value.split(' ') + var mbUpdateWithReplies = function () { + xupdateSubmit.disabled = true + xupdateSubmit.value = 'Updating...' + mb.statusUpdate(xupdateStatus.value, cbconfirmSubmit, xinReplyToContainer.value, meta) + } + for (var word in words) { + if (words[word].match(/@\w+/)) { + var atUser = words[word].replace(/\W/g, '') + var recipient = myFollowList.selectUser(atUser) + if (recipient[0] === true) { + meta.recipients.push(recipient[1][0]) + } else if (recipient[1].length > 1) { + // if multiple users allow the user to choose + var xrecipients = doc.createElement('select') + var xrecipientsSubmit = doc.createElement('input') + xrecipientsSubmit.type = 'button' + xrecipientsSubmit.value = 'Continue' + xrecipientsSubmit.addEventListener('click', + function () { + meta.recipients.push(recipient[1][xrecipients.value]) + mbUpdateWithReplies() + xrecipients.parentNode.removeChild(xrecipientsSubmit) + xrecipients.parentNode.removeChild(xrecipients) + }, + false) + var recipChoice = function (recip, c) { + var name = kb.any(kb.sym(recip), SIOC('name')) + var choice = doc.createElement('option') + choice.value = c + choice.innerHTML = name + return choice + } + for (var r in recipient[1]) { + xrecipients.appendChild(recipChoice(recipient[1][r], r)) + } + xupdateContainer.appendChild(xrecipients) + xupdateContainer.appendChild(xrecipientsSubmit) + return + } else { + // no users known or self reference. + if (String(kb.any(kb.sym(mb.getMyURI()), SIOC('id'))).toLowerCase() === atUser.toLowerCase()) { + meta.recipients.push(mb.getMyURI()) + } else { + notify('You do not follow ' + atUser + '. Try following ' + atUser + ' before mentioning them.') + return + } + } + } + /* else if(words[word].match(/\#\w+/)){ + //hashtag + } else if(words[word].match(/\!\w+/)){ + //usergroup + } */ + } + mbUpdateWithReplies() + } else { + notify('Please set your microblog first.') + } + } + var mbLetterCount = function () { + xupdateStatusCounter.innerHTML = charCount - xupdateStatus.value.length + xupdateStatusCounter.style.color = (charCount - xupdateStatus.value.length < 0) ? '#c33' : '' + if (xupdateStatus.value.length === 0) { + xinReplyToContainer.value = '' + xupdateSubmit.value = 'Send' + } + } + // reply viewer + var xviewReply = doc.createElement('ul') + xviewReply.className = 'replyView' + xviewReply.addEventListener('click', function () { + xviewReply.className = 'replyView' + }, false) + this.xviewReply = xviewReply + var headerContainer = doc.createElement('div') + headerContainer.className = 'header-container' + + // ---create status update box--- + var xnotify = doc.createElement('ul') + xnotify.id = 'notify-container' + xnotify.className = 'notify-container' + this.xnotify = xnotify + var xupdateContainer = doc.createElement('form') + xupdateContainer.className = 'update-container' + xupdateContainer.innerHTML = '

What are you up to?

' + if (mb.getMyURI()) { + var xinReplyToContainer = doc.createElement('input') + xinReplyToContainer.id = 'xinReplyToContainer' + xinReplyToContainer.type = 'hidden' + + var xupdateStatus = doc.createElement('textarea') + xupdateStatus.id = 'xupdateStatus' + + var xupdateStatusCounter = doc.createElement('span') + xupdateStatusCounter.appendChild(doc.createTextNode(charCount)) + xupdateStatus.cols = 30 + xupdateStatus.addEventListener('keyup', mbLetterCount, false) + xupdateStatus.addEventListener('focus', mbLetterCount, false) + + var xupdateSubmit = doc.createElement('input') + xupdateSubmit.id = 'xupdateSubmit' + xupdateSubmit.type = 'submit' + xupdateSubmit.value = 'Send' + + xupdateContainer.appendChild(xinReplyToContainer) + xupdateContainer.appendChild(xupdateStatusCounter) + xupdateContainer.appendChild(xupdateStatus) + xupdateContainer.appendChild(xupdateSubmit) + xupdateContainer.addEventListener('submit', mbSubmitPost, false) + } else { + var xnewUser = doc.createTextNode( + 'Hi, it looks like you don\'t have a microblog, ' + + ' would you like to create one? ') + var xcreateNewMB = doc.createElement('input') + xcreateNewMB.type = 'button' + xcreateNewMB.value = 'Create a new Microblog' + xcreateNewMB.addEventListener('click', lsCreateNewMB, false) + xupdateContainer.appendChild(xnewUser) + xupdateContainer.appendChild(xcreateNewMB) + } + + headerContainer.appendChild(xupdateContainer) + + var subheaderContainer = doc.createElement('div') + subheaderContainer.className = 'subheader-container' + + // user header + // this.creator + var creators = kb.each(s, FOAF('holdsAccount')) + for (var c in creators) { + if (kb.whether(creators[c], RDF('type'), SIOC('User')) && + kb.whether(kb.any(creators[c], SIOC('creator_of')), RDF('type'), SIOCt('Microblog'))) { + var creator = creators[c] + // var mb = kb.sym(creator.uri.split("#")[0]); + // UI.store.fetcher.refresh(mb); + break + // TODO add support for more than one microblog in same foaf + } + } + if (creator) { + this.creator = mb.getUser(creator) + // ---display avatar, if available --- + if (this.creator.avatar !== '') { + var avatar = doc.createElement('img') + avatar.src = this.creator.avatar.uri + subheaderContainer.appendChild(avatar) + } + // ---generate name --- + var userName = doc.createElement('h1') + userName.className = 'fn' + userName.appendChild(doc.createTextNode(this.creator.name + ' (' + this.creator.id + ')')) + subheaderContainer.appendChild(userName) + // ---display follow button--- + if (!this.thisIsMe && mb.getMyURI()) { + var xfollowButton = doc.createElement('input') + xfollowButton.setAttribute('type', 'button') + let followButtonLabel = (this.Ifollow) ? 'Unfollow ' : 'Follow ' + xfollowButton.value = followButtonLabel + this.creator.name + xfollowButton.addEventListener('click', lsFollowUser, false) + subheaderContainer.appendChild(xfollowButton) + } + // user header end + // header tabs + var xtabsList = this.Tab.getTabView() + headerContainer.appendChild(subheaderContainer) + headerContainer.appendChild(xtabsList) + } + return headerContainer + } + Pane.prototype.generatePost = function (post, me) { + /* + generatePost - Creates and formats microblog posts + post - symbol of the uri the post in question + */ + var that = this + var viewPost = function (uris) { + let xviewReply = that.xviewReply + for (let i = 0; i < xviewReply.childNodes.length; i++) { + xviewReply.removeChild(xviewReply.childNodes[0]) + } + var xcloseContainer = doc.createElement('li') + xcloseContainer.className = 'closeContainer' + var xcloseButton = doc.createElement('span') + xcloseButton.innerHTML = '×' + xcloseButton.className = 'closeButton' + xcloseContainer.appendChild(xcloseButton) + xviewReply.appendChild(xcloseContainer) + for (var uri in uris) { + xviewReply.appendChild(that.generatePost(kb.sym(uris[uri]), this.thisIsMe, 'view')) + } + xviewReply.className = 'replyView-active' + that.microblogPane.appendChild(xviewReply) + } + // container for post + var xpost = doc.createElement('li') + xpost.className = 'post' + xpost.setAttribute('id', String(post.uri).split('#')[1]) + var Post = mb.getPost(post) + // username text + // var uname = kb.any(kb.any(post, SIOC('has_creator')), SIOC('id')) + var uholdsaccount = kb.any(undefined, FOAF('holdsAccount'), kb.any(post, SIOC('has_creator'))) + var xuname = doc.createElement('a') + xuname.href = uholdsaccount.uri + xuname.className = 'userLink' + var xunameText = doc.createTextNode(mb.getUser(Post.creator).id) + xuname.appendChild(xunameText) + // user image + var xuavatar = doc.createElement('img') + xuavatar.src = mb.getUser(Post.creator).avatar.uri + xuavatar.className = 'postAvatar' + // post content + var xpostContent = doc.createElement('blockquote') + var postText = Post.message + // post date + var xpostLink = doc.createElement('a') + xpostLink.className = 'postLink' + xpostLink.addEventListener('click', + function () { + viewPost([post.uri]) + }, + false) + xpostLink.id = 'post_' + String(post.uri).split('#')[1] + xpostLink.setAttribute('content', post.uri) + xpostLink.setAttribute('property', 'permalink') + let postLink = doc.createTextNode((Post.date) ? Post.date : 'post date unknown') + xpostLink.appendChild(postLink) + + // LINK META DATA (MENTIONS, HASHTAGS, GROUPS) + var mentions = kb.each(post, SIOC('topic')) + let tags = {} + + for (var mention in mentions) { + sf.lookUpThing(mentions[mention]) + let id = kb.any(mentions[mention], SIOC('id')) + tags['@' + id] = mentions[mention] + } + var postTags = postText.match(/(@|#|!)\w+/g) + var postFunction = function () { + let p = postTags.pop() + return (tags[p]) ? kb.any(undefined, FOAF('holdsAccount'), tags[p]).uri : p + } + for (var t in tags) { + var person = t.replace(/@/, '') + var replacePerson = RegExp('(@|!|#)(' + person + ')') + postText = postText.replace(replacePerson, '$1$2') + } + xpostContent.innerHTML = postText + + // in reply to logic + // This has the potential to support a post that replies to many messages. + var inReplyTo = kb.each(post, SIOC('reply_of')) + var xreplyTo = doc.createElement('span') + for (var reply in inReplyTo) { + var theReply + theReply = String(inReplyTo[reply]).replace(/<|>/g, '') + var genReplyTo = function () { + var reply = doc.createElement('a') + reply.innerHTML = ', in reply to' + reply.addEventListener('click', + function () { + viewPost([post.uri, theReply]) + return false + }, + false) + return reply + } + xreplyTo.appendChild(genReplyTo()) + } + + // END LINK META DATA + // add the reply to and delete buttons to the interface + var mbReplyTo = function () { + var id = mb.getUser(Post.creator).id + var xupdateStatus = doc.getElementById('xupdateStatus') + var xinReplyToContainer = doc.getElementById('xinReplyToContainer') + var xupdateSubmit = doc.getElementById('xupdateSubmit') + xupdateStatus.value = '@' + id + ' ' + xupdateStatus.focus() + xinReplyToContainer.value = post.uri + xupdateSubmit.value = 'Reply' + } + var mbDeletePost = function (evt) { + var lsconfirmNo = function () { + doc.getElementById('notify-container').removeChild(xconfirmDeletionDialog) + evt.target.disabled = false + } + var lsconfirmYes = function () { + reallyDelete() + doc.getElementById('notify-container').removeChild(xconfirmDeletionDialog) + } + evt.target.disabled = true + var xconfirmDeletionDialog = doc.createElement('li') + xconfirmDeletionDialog.className = 'notify conf' + xconfirmDeletionDialog.innerHTML += '

Are you sure you want to delete this post?

' + xconfirmDeletionDialog.addEventListener('keyup', + function (evt) { + if (evt.keyCode === 27) { + lsconfirmNo() + } + }, + false) + var confirmyes = doc.createElement('input') + confirmyes.type = 'button' + confirmyes.className = 'confirm' + confirmyes.value = 'Delete' + confirmyes.addEventListener('click', lsconfirmYes, false) + var confirmno = doc.createElement('input') + confirmno.type = 'button' + confirmno.className = 'confirm' + confirmno.value = 'Cancel' + confirmno.addEventListener('click', lsconfirmNo, false) + xconfirmDeletionDialog.appendChild(confirmno) + xconfirmDeletionDialog.appendChild(confirmyes) + doc.getElementById('notify-container').appendChild(xconfirmDeletionDialog) + confirmno.focus() + + var reallyDelete = function () { + // callback after deletion + var mbconfirmDeletePost = function (a, success) { + if (success) { + that.notify('Post deleted.') + // update the ui to reflect model changes. + var deleteThisNode = evt.target.parentNode + deleteThisNode.parentNode.removeChild(deleteThisNode) + kb.removeMany(deleteMe) + } else { + that.notify('Oops, there was a problem, please try again') + evt.target.disabled = true + } + } + // delete references to post + var deleteContainerOf = function (a, success) { + if (success) { + var deleteContainer = kb.statementsMatching( + undefined, SIOC('container_of'), kb.sym(doc.getElementById( + 'post_' + evt.target.parentNode.id).getAttribute('content'))) + sparqlUpdater.batch_delete_statement(deleteContainer, mbconfirmDeletePost) + } else { + that.notify('Oops, there was a problem, please try again') + evt.target.disabled = false + } + } + // delete attributes of post + evt.target.disabled = true + let deleteMe = kb.statementsMatching(kb.sym(doc.getElementById( + 'post_' + evt.target.parentNode.id).getAttribute('content'))) + sparqlUpdater.batch_delete_statement(deleteMe, deleteContainerOf) + } + } + if (mb.getMyURI()) { + // If the microblog in question does not belong to the user, + // display the delete post and reply to post buttons. + var themaker = kb.any(post, SIOC('has_creator')) + if (mb.getMyURI() !== themaker.uri) { + var xreplyButton = doc.createElement('input') + xreplyButton.type = 'button' + xreplyButton.value = 'reply' + xreplyButton.className = 'reply' + xreplyButton.addEventListener('click', mbReplyTo, false) + } else { + var xdeleteButton = doc.createElement('input') + xdeleteButton.type = 'button' + xdeleteButton.value = 'Delete' + xdeleteButton.className = 'reply' + xdeleteButton.addEventListener('click', mbDeletePost, false) + } + } + + var mbFavorite = function (evt) { + var nid = evt.target.parentNode.id + var favpost = doc.getElementById('post_' + nid).getAttribute('content') + xfavorite.className += ' ing' + var cbFavorite = function (a, success, c, d) { + if (success) { + xfavorite.className = (xfavorite.className.split(' ')[1] === 'ed') + ? 'favorit' : 'favorit ed' + } + } + if (!myFavorites.favorited(favpost)) { + myFavorites.add(favpost, cbFavorite) + } else { + myFavorites.remove(favpost, cbFavorite) + } + } + var xfavorite = doc.createElement('a') + xfavorite.innerHTML = '★' + xfavorite.addEventListener('click', mbFavorite, false) + if (myFavorites.favorited(post.uri)) { + xfavorite.className = 'favorit ed' + } else { + xfavorite.className = 'favorit' + } + // build + xpost.appendChild(xuavatar) + xpost.appendChild(xpostContent) + if (mb.getMyURI()) { + xpost.appendChild(xfavorite) + if (mb.getMyURI() !== themaker.uri) { + xpost.appendChild(xreplyButton) + } else { + xpost.appendChild(xdeleteButton) + } + } + xpost.appendChild(xuname) + xpost.appendChild(xpostLink) + if (inReplyTo !== '') { + xpost.appendChild(xreplyTo) + } + return xpost + } + Pane.prototype.generatePostList = function (gmbPosts) { + /* + generatePostList - Generate the posts and + display their results on the interface. + */ + var postList = doc.createElement('ul') + var postlist = {} + var datelist = [] + for (var post in gmbPosts) { + var postDate = kb.any(gmbPosts[post], terms('created')) + if (postDate) { + datelist.push(postDate) + postlist[postDate] = this.generatePost(gmbPosts[post], this.thisIsMe) + } + } + datelist.sort().reverse() + for (var d in datelist) { + postList.appendChild(postlist[datelist[d]]) + } + return postList + } + Pane.prototype.followsView = function () { + var getFollowed = function (user) { + var userid = kb.any(user, SIOC('id')) + var follow = doc.createElement('li') + follow.className = 'follow' + userid = userid || user.uri + var fol = kb.any(undefined, FOAF('holdsAccount'), user) + fol = (fol) ? fol.uri : user.uri + follow.innerHTML = '' + + userid + '' + return follow + } + var xfollows = doc.createElement('div') + xfollows.id = 'xfollows' + xfollows.className = 'followlist-container view-container' + if (this.creator && kb.whether(this.creator.sym, SIOC('follows'))) { + var creatorFollows = kb.each(this.creator.sym, SIOC('follows')) + var xfollowsList = doc.createElement('ul') + for (var thisPerson in creatorFollows) { + xfollowsList.appendChild(getFollowed(creatorFollows[thisPerson])) + } + xfollows.appendChild(xfollowsList) + } + this.Tab.create('tab-follows', 'Follows', xfollows, false) + return xfollows + } + Pane.prototype.streamView = function (s, doc) { + var postContainer = doc.createElement('div') + postContainer.id = 'postContainer' + postContainer.className = 'post-container view-container active' + var mbPosts = [] + if (kb.whether(s, FOAF('name')) && kb.whether(s, FOAF('holdsAccount'))) { + sf.lookUpThing(kb.any(s, FOAF('holdsAccount'))) + var follows = kb.each(kb.any(s, FOAF('holdsAccount')), SIOC('follows')) + for (var f in follows) { + sf.lookUpThing(follows[f]) + // look up people user follows + var smicroblogs = kb.each(follows[f], SIOC('creator_of')) + // get the follows microblogs + for (var smb in smicroblogs) { + sf.lookUpThing(smicroblogs[smb]) + if (kb.whether(smicroblogs[smb], SIOC('topic'), follows[f])) { + continue + } else { + mbPosts = mbPosts.concat(kb.each(smicroblogs[smb], SIOC('container_of'))) + } + } + } + } + if (mbPosts.length > 0) { + var postList = this.generatePostList(mbPosts) + // generate stream + postList.id = 'postList' + postList.className = 'postList' + postContainer.appendChild(postList) + } + this.Tab.create('tab-stream', 'By Follows', postContainer, true) + return postContainer + } + Pane.prototype.notificationsView = function (s, doc) { + var postNotificationContainer = doc.createElement('div') + postNotificationContainer.id = 'postNotificationContainer' + postNotificationContainer.className = 'notification-container view-container' + var postMentionContainer = doc.createElement('div') + postMentionContainer.id = 'postMentionContainer' + postMentionContainer.className = 'mention-container view-container' + var mbnPosts = [] + var mbmPosts = [] + // get mbs that I am the creator of. + var theUser = kb.any(s, FOAF('holdsAccount')) + var user = kb.any(theUser, SIOC('id')) + var microblogs = kb.each(theUser, SIOC('creator_of')) + for (var mbm in microblogs) { + sf.lookUpThing(microblogs[mbm]) + if (kb.whether(microblogs[mbm], SIOC('topic'), theUser)) { + mbmPosts = mbmPosts.concat(kb.each(microblogs[mbm], SIOC('container_of'))) + } else { + if (kb.whether(microblogs[mbm], RDF('type'), SIOCt('Microblog'))) { + mbnPosts = mbnPosts.concat(kb.each(microblogs[mbm], SIOC('container_of'))) + } + } + } + var postNotificationList = this.generatePostList(mbnPosts) + postNotificationList.id = 'postNotificationList' + postNotificationList.className = 'postList' + postNotificationContainer.appendChild(postNotificationList) + + var postMentionList = this.generatePostList(mbmPosts) + postMentionList.id = 'postMentionList' + postMentionList.className = 'postList' + postMentionContainer.appendChild(postMentionList) + this.postMentionContainer = postMentionContainer + this.postNotificationContainer = postNotificationContainer + this.Tab.create('tab-by-user', 'By ' + user, postNotificationContainer, false) + this.Tab.create('tab-at-user', '@' + user, postMentionContainer, false) + } + Pane.prototype.build = function () { + var microblogPane = this.microblogPane + this.headerContainer = this.header(s, doc) + this.postContainer = this.streamView(s, doc) + this.notificationsView(s, doc) + this.xfollows = this.followsView() + microblogPane.className = 'ppane' + microblogPane.appendChild(this.xviewReply) + microblogPane.appendChild(this.xnotify) + microblogPane.appendChild(this.headerContainer) + if (this.xfollows !== undefined) { microblogPane.appendChild(this.xfollows) } + microblogPane.appendChild(this.postContainer) + microblogPane.appendChild(this.postNotificationContainer) + microblogPane.appendChild(this.postMentionContainer) + } + + var microblogpane = doc.createElement('div') +// var getusersfollows = function(uri){ +// var follows = new Object(); +// var followsa = {follows:0, matches:0}; +// var accounts = kb.each(s, FOAF("holdsAccount")); +// //get all of the accounts that a person holds +// for (var acct in accounts){ +// var account = accounts[acct].uri; +// var act = kb.each(kb.sym(account),SIOC("follows")); +// for (var a in act){ +// var thisuri = act[a].uri.split("#")[0]; +// if (!follows[thisuri]){followsa.follows+=1;} +// follows[thisuri] =true; +// } +// } +// +// var buildPaneUI = function(uri){ +// followsa.matches = (follows[uri]) ? followsa.matches+1: followsa.matches; +// console.log(follows.toSource()); +// if(followsa.follows == followsa.matches ){ + var ppane = new Pane(s, doc, microblogpane) + ppane.build() +// return false; +// } +// else{ +// return true; +// } +// } +// sf.addCallback('done',buildPaneUI); +// sf.addCallback('fail',buildPaneUI); +// //fetch each of the followers +// for (var f in follows){ +// sf.refresh(kb.sym(f)); +// } +// }(s); + return microblogpane + } +} + + +/***/ }), + +/***/ "./node_modules/solid-panes/n3Pane.js": +/*!********************************************!*\ + !*** ./node_modules/solid-panes/n3Pane.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* Notation3 content Pane +** +** This pane shows the content of a particular RDF resource +** or at least the RDF semantics we attribute to that resource, +** in generated N3 syntax. +*/ +var UI = __webpack_require__(/*! solid-ui */ "./node_modules/solid-ui/lib/index.js") + +module.exports = { + icon: UI.icons.originalIconBase + 'w3c/n3_smaller.png', + + name: 'n3', + + label: function (subject) { + if ('http://www.w3.org/2007/ont/link#ProtocolEvent' in UI.store.findTypeURIs(subject)) return null + var n = UI.store.statementsMatching( + undefined, undefined, undefined, subject).length + if (n === 0) return null + return 'Data (' + n + ') as N3' + }, + + render: function (subject, myDocument) { + var kb = UI.store + var div = myDocument.createElement('div') + div.setAttribute('class', 'n3Pane') + // Because of smushing etc, this will not be a copy of the original source + // We could instead either fetch and re-parse the source, + // or we could keep all the pre-smushed triples. + var sts = kb.statementsMatching(undefined, undefined, undefined, subject) // @@ slow with current store! + /* + var kludge = kb.formula([]) // No features + for (var i=0; i< sts.length; i++) { + s = sts[i] + kludge.add(s.subject, s.predicate, s.object) + } + */ + var sz = UI.rdf.Serializer(kb) + sz.suggestNamespaces(kb.namespaces) + sz.setBase(subject.uri) + var str = sz.statementsToN3(sts) + var pre = myDocument.createElement('PRE') + pre.appendChild(myDocument.createTextNode(str)) + div.appendChild(pre) + return div + } +} + + +/***/ }), + +/***/ "./node_modules/solid-panes/outline/dragDrop.js": +/*!******************************************************!*\ + !*** ./node_modules/solid-panes/outline/dragDrop.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/** + This is for outliner features that only work in the extension version, say drag and drop. + I am always happy creating new files. + 2007.07.11 kennyluck + 2017: Todo: Repace the old Firefox specific code with HTML5 standard code - timbl +**/ +// Firefox internals: +/* global Components TransferData TransferDataSet FlavourSet nsTransferable transferUtils */ + +// #includedIn chrome://tabulator/tabulator.xul +// #require_once chrome://global/nsDragAndDrop.js + +/* alert(gBrowser);alert(gBrowser.tagName) +if (!tabulator_gBrowser) { + var tabulator_wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] + .getService(Components.interfaces.nsIWindowMediator) + var tabulator_gBrowser = tabulator_wm.getMostRecentWindow("navigator:browser") +} +*/ + +/* 2007: adapted from dragAndDrop UI Library */ + +var UI = __webpack_require__(/*! solid-ui */ "./node_modules/solid-ui/lib/index.js") +var dragAndDrop = module.exports = {} + +dragAndDrop.util = {} +dragAndDrop.util.Event = (function () { + var listeners = [] + return { + on: function (el, sType, fn, obj, fnId /* ,override */) { + var wrappedFn = function (e) { return fn.call(obj, e, obj) } + el.addEventListener(sType, wrappedFn, false) + var li = [el, sType, fnId, wrappedFn] + listeners.push(li) + }, + off: function (el, sType, fnId) { // removeListener, fnId to identify a function + var index = this._getCacheIndex(el, sType, fnId) + if (index === -1) return false + var cacheItem = listeners[index] + el.removeEventListener(sType, cacheItem[this.WFN], false) + + delete listeners[index][this.WFN] + delete listeners[index][this.FN] + listeners.splice(index, 1) + return true + }, + EL: 0, + TYPE: 1, + FNID: 2, + WFN: 3, + _getCacheIndex: function (el, sType, fnId) { + for (var i = 0, len = listeners.length; i < len; ++i) { + var li = listeners[i] + if (li && + li[this.FNID] === fnId && + li[this.EL] === el && + li[this.TYPE] === sType) { + return i + } + } + + return -1 + } + } +})() +dragAndDrop.util.DDExternalProxy = + function DDExternalProxy (el) { + this.initTarget(el) + // dragAndDrop.util.Event.on(this.el, "mousedown", this.handleMouseDown, this, 'dragMouseDown'/*, true*/) + } + // dragAndDrop.util.DDExternalProxy extends dragAndDrop.utilDDProxy +dragAndDrop.util.DDExternalProxy.prototype = { + initTarget: function (el) { + // create a local reference to the drag and drop manager + this.DDM = dragAndDrop.util.DDM + + // set the el + this.el = el + + /* + // We don't want to register this as the handle with the manager + // so we just set the id rather than calling the setter. + this.handleElId = id + + Event.onAvailable(id, this.handleOnAvailable, this, true) + */ + + // the linked element is the element that gets dragged by default + // this.setDragElId(id) + + // by default, clicked anchors will not start drag operations. + // @TODO what else should be here? Probably form fields. + // this.invalidHandleTypes = { A: "A" } + // this.invalidHandleIds = {} + // this.invalidHandleClasses = [] + + // this.applyConfig() + }, + b4StartDrag: function (x, y) { + // show the drag frame + // this.logger.log("start drag show frame, x: " + x + ", y: " + y) + // alert("test startDrag") + TabulatorOutlinerObserver.onDragStart(x, y, this.el) + // this.showFrame(x, y) + }, + b4Drag: function (e) { + // this.setDragElPos(dragAndDrop.util.Event.getPageX(e), + // dragAndDrop.util.Event.getPageY(e)) + }, + handleMouseDown: function (e, oDD) { + var button = e.which || e.button + if (button > 1) return + + // firing the mousedown events prior to calculating positions + // this.b4MouseDown(e) + // this.onMouseDown(e) + + // this.DDM.refreshCache(this.groups) + // var self = this + // setTimeout( function() { self.DDM.refreshCache(self.groups); }, 0) + + // Only process the event if we really clicked within the linked + // element. The reason we make this check is that in the case that + // another element was moved between the clicked element and the + // cursor in the time between the mousedown and mouseup events. When + // this happens, the element gets the next mousedown event + // regardless of where on the screen it happened. + // var pt = new dragAndDrop.util.Point(Event.getPageX(e), Event.getPageY(e)) + // if (!this.hasOuterHandles && !this.DDM.isOverTarget(pt, this) ) { + // this.logger.log("Click was not over the element: " + this.id) + // } else { + // if (this.clickValidator(e)) { + + // set the initial element position + // this.setStartPosition() + + // start tracking mousemove distance and mousedown time to + // determine when to start the actual drag + this.DDM.handleMouseDown(e, this) + + // this mousedown is mine + // this.DDM.stopEvent(e) + // } else { + + // this.logger.log("clickValidator returned false, drag not initiated") + + // } + // } + } +} + +dragAndDrop.util.DDM = (function DDM () { + return { + handleMouseDown: function (e, oDD) { + // this.currentTarget = dragAndDrop.util.Event.getTarget(e) + + this.dragCurrent = oDD + + var el = oDD.el + + // track start position + this.startX = e.pageX + this.startY = e.pageY + + this.deltaX = this.startX - el.offsetLeft + this.deltaY = this.startY - el.offsetTop + + this.dragThreshMet = false + + // this.clickTimeout = setTimeout( + // function() { + // var DDM = dragAndDrop.util.DDM + // DDM.startDrag(DDM.startX, DDM.startY) + // }, + // this.clickTimeThresh ) + // dragAndDrop.util.Event.on(el,'mousemove',this.handleMouseMove,this,'dragMouseMove') + // dragAndDrop.util.Event.on(el,'mouseup' ,this.handleMouseUp ,this,'dragMouseUp') + }, + + handleMouseMove: function (e) { + // dragAndDrop.log("handlemousemove") + if (!this.dragCurrent) { + // dragAndDrop.log("no current drag obj") + return true + } + // var button = e.which || e.button + // dragAndDrop.log("which: " + e.which + ", button: "+ e.button) + + // check for IE mouseup outside of page boundary + if (dragAndDrop.util.Event.isIE && !e.button) { + dragAndDrop.log('button failure', 'info', 'DragDropMgr') + this.stopEvent(e) + return this.handleMouseUp(e) + } + + if (!this.dragThreshMet) { + var diffX = Math.abs(this.startX - e.pageX) + var diffY = Math.abs(this.startY - e.pageY) + // dragAndDrop.log("diffX: " + diffX + "diffY: " + diffY) + if (diffX > this.clickPixelThresh || + diffY > this.clickPixelThresh) { + // dragAndDrop.log("pixel threshold met", "info", "DragDropMgr") + this.startDrag(this.startX, this.startY) + } + } + + if (this.dragThreshMet) { + // this.dragCurrent.b4Drag(e) + // this.dragCurrent.onDrag(e) + // this.fireEvents(e, false) + } + + e.preventDefault() + // this.stopEvent(e) + + return true + }, + handleMouseUp: function (e) { + if (!this.dragCurrent) return // Error... + dragAndDrop.util.Event.off(this.dragCurrent.el, 'mousemove', 'dragMouseMove') + // there are two mouseup for unknown reason... + dragAndDrop.util.Event.off(this.dragCurrent.el, 'mouseup', 'dragMouseUp') + dragAndDrop.util.Event.off(this.dragCurrent.el, 'mouseup', 'dragMouseUp') + // have to do this as attribute ondragdrop does not recognize any dragdrop event + // initialized inside (strange, I think) + if (this.dragThreshMet) { + TabulatorOutlinerObserver.onDropInside(e.target) + this.dragThreshMet = false + } + this.dragCurrent = null + }, + startDrag: function (x, y) { + // dragAndDrop.log("firing drag start events", "info", "DragDropMgr") + // clearTimeout(this.clickTimeout) + if (this.dragCurrent) { + this.dragCurrent.b4StartDrag(x, y) + // this.dragCurrent.startDrag(x, y) + } + this.dragThreshMet = true + }, + clickPixelThresh: 3 + } +})() + +// ToDos +// 1.Recover normal funtionality +// 2.Investigate into Gecko drag and drop +// 3.Cross Tag Drag And Drop +// 4.Firefox native rdf store +var TabulatorOutlinerObserver = { + onDrop: function (e, aXferData, dragSession) { + var selection = UI.utils.ancestor(UI.utils.ancestor(e.originalTarget, 'TABLE').parentNode, 'TABLE').outline.selection + var contentType = aXferData.flavour.contentType + var url = transferUtils.retrieveURLFromData(aXferData.data, contentType) + if (!url) return + if (contentType === 'application/x-moz-file') { + if (aXferData.data.fileSize === 0) { + var templateDoc = $rdf.sym('chrome://tabulator/content/internalKnowledge.n3#defaultNew') + UI.store.copyTo(templateDoc, $rdf.sym(url)) + /* + function WriteToFileRepresentedBy (subject){ + var outputFormulaTerm=kb.any(subject,OWL('unionOf')) + var theClass = kb.constructor.SuperClass + var outputFormula= theClass.instances[kb.the(outputFormulaTerm,tabont('accesskey')).value] + } + */ + } + } + var targetTd = selection[0] + var table = UI.utils.ancestor(UI.utils.ancestor(targetTd, 'TABLE').parentNode, 'TABLE') + var thisOutline = table.outline + thisOutline.UserInput.insertTermTo(targetTd, $rdf.sym(url)) + }, + + onDragEnter: function (e, dragSession) { // enter or exit something + try { + var selection = UI.utils.ancestor( + UI.utils.ancestor(e.originalTarget, 'TABLE').parentNode, 'TABLE') + .outline.selection + } catch (e) { /* because e.orginalTarget is not defined */ return } + for (var targetTd = e.originalTarget; targetTd; targetTd = targetTd.parentNode) { + if (targetTd.tabulatorSelect) { + if (selection[0]) { + try { selection[0].tabulatorDeselect() } catch (e) { + throw new Error(selection[0] + ' causes ' + e) + } + dragAndDrop.util.Event.off(targetTd, 'mouseup', 'dragMouseUp') + } + targetTd.tabulatorSelect() + // dragAndDrop.util.Event.on(targetTd,'mouseup',this.DDM.handleMouseUp,this.DDM,'dragMouseUp') + break + } + } + }, + + onDragExit: function (e, dragSession) { + // if (e.originalTarget.tabulatorDeselect) e.originalTarget.tabulatorDeselect() + }, + onDropInside: function (targetTd) { // a special case that you draganddrop totally inside a + // var selection = ancestor(ancestor(targetTd,'TABLE').parentNode,'TABLE').outline.selection + // var targetTd=selection[0] + var table = targetTd.ownerDocument.getElementById('outline') + // var table=ancestor(ancestor(targetTd,'TABLE').parentNode,'TABLE') + var thisOutline = table.outline + thisOutline.UserInput.insertTermTo(targetTd, UI.utils.getAbout(UI.store, this.dragTarget)) + }, + onDragStart: function (x, y, td) { + /* seeAlso nsDragAndDrop.js::nsDragAndDrop.startDrag */ + // ToDo for myself: understand the connections in firefox, x, screenX + + this.dragTarget = td + var kDSIID = Components.interfaces.nsIDragService + var dragAction = { action: kDSIID.DRAGDROP_ACTION_COPY + kDSIID.DRAGDROP_ACTION_MOVE + kDSIID.DRAGDROP_ACTION_LINK } + + // alert(td.ownerDocument.getBoxObjectFor(td)) + // alert(td.ownerDocument.getBoxObjectFor(td).screenX) + var tdBox = td.ownerDocument.getBoxObjectFor(td) // nsIBoxObject + var region = Components.classes['@mozilla.org/gfx/region;1'] + .createInstance(Components.interfaces.nsIScriptableRegion) + region.init() // this is important + region.unionRect(tdBox.screenX, tdBox.screenY, tdBox.width, tdBox.height) + var transferDataSet = {data: null} + var term = UI.Util.getTerm(td) + switch (term.termType) { + case 'NamedNode': + transferDataSet.data = this.URItoTransferDataSet(term.uri) + break + case 'BlankNode': + transferDataSet.data = this.URItoTransferDataSet(term.toNT()) + break + case 'Literal': + transferDataSet.data = this.URItoTransferDataSet(term.value) + break + } + + transferDataSet = transferDataSet.data // quite confusing, anyway... + var transArray = Components.classes['@mozilla.org/supports-array;1'] + .createInstance(Components.interfaces.nsISupportsArray) + var trans = nsTransferable.set(transferDataSet.dataList[0]) + transArray.AppendElement(trans.QueryInterface(Components.interfaces.nsISupports)) + this.mDragService.invokeDragSession(td, transArray, region, dragAction.action) + }, + /* + onDragStart: function(aEvent,aXferData,aDragAction){ + var dragTarget=ancestor(aEvent.target,'TD') + //var nt=dragTarget.getAttribute('about') + //ToDo:text terms + var term=getAbout(kb,dragTarget) + aXferData.data = this.URItoTransferDataSet(term.uri) + alert("start") + }, + */ + + getSupportedFlavours: function () { + var flavourSet = new FlavourSet() + // flavourSet.appendFlavour("text/rdfitem") + // flavourSet.appendFlavour("moz/rdfitem") + flavourSet.appendFlavour('text/x-moz-url') + flavourSet.appendFlavour('text/unicode') + flavourSet.appendFlavour('application/x-moz-file', 'nsIFile') + return flavourSet + }, + + URItoTransferDataSet: function (uri) { + var dataSet = new TransferDataSet() + var data = new TransferData() + data.addDataForFlavour('text/x-moz-url', uri) + data.addDataForFlavour('text/unicode', uri) + dataSet.push(data) + return dataSet + }, + _mDS: null, + get_mDragService: function () { // some syntax I don't understand -- was get mDragService() + if (!this._mDS) { + var kDSContractID = '@mozilla.org/widget/dragservice;1' + var kDSIID = Components.interfaces.nsIDragService + this._mDS = Components.classes[kDSContractID].getService(kDSIID) + } + return this._mDS + }, + DDM: dragAndDrop.util.DDM +} +/* +var ondraging=false; //global variable indicating whether ondraging (better choice?) +var testGlobal = function test(e){alert(e.originalTarget);e.originalTarget.className='selected';e.preventDefault();} +var activateDrag = function (e){ + if (!ondraging){ + alert('activate test') + ondraging=true + } +} +*/ +// tabulator_gBrowser.setAttribute('ondragdrop','testGlobal(event)') +// tabulator_gBrowser.setAttribute('ondragenter','activateDrag(event)') + +// gBrowser.addEventListener('dragdrop',test,true) + + +/***/ }), + +/***/ "./node_modules/solid-panes/outline/manager.js": +/*!*****************************************************!*\ + !*** ./node_modules/solid-panes/outline/manager.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {/* -*- coding: utf-8-dos -*- + Outline Mode Manager +*/ +var panes = __webpack_require__(/*! ../paneRegistry */ "./node_modules/solid-panes/paneRegistry.js") + +var YAHOO = __webpack_require__(/*! ./dragDrop.js */ "./node_modules/solid-panes/outline/dragDrop.js") +var outlineIcons = __webpack_require__(/*! ./outlineIcons.js */ "./node_modules/solid-panes/outline/outlineIcons.js") +var UserInput = __webpack_require__(/*! ./userInput.js */ "./node_modules/solid-panes/outline/userInput.js") +var UI = __webpack_require__(/*! solid-ui */ "./node_modules/solid-ui/lib/index.js") +var queryByExample = __webpack_require__(/*! ./queryByExample.js */ "./node_modules/solid-panes/outline/queryByExample.js") + +/* global Components, alert XPathResult sourceWidget */ +// XPathResult? + +module.exports = function (doc) { + var dom + if (UI.isExtension) { + var wm = Components.classes['@mozilla.org/appshell/window-mediator;1'] + .getService(Components.interfaces.nsIWindowMediator) + var window = wm.getMostRecentWindow('navigator:browser') + var gBrowser = window.getBrowser() + dom = doc || window.document + } else { + // window = document.window; + dom = doc + } + + this.document = doc + this.outlineIcons = outlineIcons + this.labeller = this.labeller || {} + this.labeller.LanguagePreference = '' // for now + var outline = this // Kenny: do we need this? + var thisOutline = this + var selection = [] + this.selection = selection + this.ancestor = UI.utils.ancestor // make available as outline.ancestor in callbacks + this.sparql = UI.rdf.UpdateManager + this.kb = UI.store + var kb = UI.store + var sf = UI.store.fetcher + dom.outline = this + this.qs = new queryByExample.QuerySource() // Track queries in queryByExample + + // var selection = [] // Array of statements which have been selected + // this.focusTd // the that is being observed + this.UserInput = new UserInput(this) + this.clipboardAddress = 'tabulator:clipboard' // Weird + this.UserInput.clipboardInit(this.clipboardAddress) + var outlineElement = this.outlineElement + + this.init = function () { + var table = dom.getElementById('outline') + table.outline = this + } + + /** benchmark a function **/ + benchmark.lastkbsize = 0 + + function benchmark (f) { + var args = [] + for (var i = arguments.length - 1; i > 0; i--) args[i - 1] = arguments[i] + // UI.log.debug('BENCHMARK: args=' + args.join()); + var begin = new Date().getTime() + var returnValue = f.apply(f, args) + var end = new Date().getTime() + UI.log.info('BENCHMARK: kb delta: ' + (kb.statements.length - benchmark.lastkbsize) + ', time elapsed for ' + f + ' was ' + (end - begin) + 'ms') + benchmark.lastkbsize = kb.statements.length + return returnValue + } // benchmark + + // / ////////////////////// Representing data + + // Represent an object in summary form as a table cell + + function appendRemoveIcon (node, subject, removeNode) { + var image = UI.utils.AJARImage(outlineIcons.src.icon_remove_node, 'remove', undefined, dom) + image.addEventListener('click', removeNodeIconMouseDownListener) + // image.setAttribute('align', 'right') Causes icon to be moved down + image.node = removeNode + image.setAttribute('about', subject.toNT()) + image.style.marginLeft = '5px' + image.style.marginRight = '10px' + // image.style.border='solid #777 1px'; + node.appendChild(image) + return image + } + + this.appendAccessIcons = function (kb, node, obj) { + if (obj.termType !== 'NamedNode') return + var uris = kb.uris(obj) + uris.sort() + var last = null + for (var i = 0; i < uris.length; i++) { + if (uris[i] === last) continue + last = uris[i] + thisOutline.appendAccessIcon(node, last) + } + } + + this.appendAccessIcon = function (node, uri) { + if (!uri) return '' + var docuri = UI.rdf.uri.docpart(uri) + if (docuri.slice(0, 5) !== 'http:') return '' + var state = sf.getState(docuri) + var icon, alt, listener + switch (state) { + case 'unrequested': + icon = outlineIcons.src.icon_unrequested + alt = 'fetch' + listener = unrequestedIconMouseDownListener + break + case 'requested': + icon = outlineIcons.src.icon_requested + alt = 'fetching' + listener = failedIconMouseDownListener // new: can retry yello blob + break + case 'fetched': + icon = outlineIcons.src.icon_fetched + listener = fetchedIconMouseDownListener + alt = 'loaded' + break + case 'failed': + icon = outlineIcons.src.icon_failed + alt = 'failed' + listener = failedIconMouseDownListener + break + case 'unpermitted': + icon = outlineIcons.src.icon_failed + listener = failedIconMouseDownListener + alt = 'no perm' + break + case 'unfetchable': + icon = outlineIcons.src.icon_failed + listener = failedIconMouseDownListener + alt = 'cannot fetch' + break + default: + UI.log.error('?? state = ' + state) + break + } // switch + var img = UI.utils.AJARImage(icon, alt, + outlineIcons.tooltips[icon].replace(/[Tt]his resource/, docuri), dom) + img.setAttribute('uri', uri) + img.addEventListener('click', listener) // @@ seemed to be missing 2017-08 + addButtonCallbacks(img, docuri) + node.appendChild(img) + return img + } // appendAccessIcon + + // Six different Creative Commons Licenses: + // 1. http://creativecommons.org/licenses/by-nc-nd/3.0/ + // 2. http://creativecommons.org/licenses/by-nc-sa/3.0/ + // 3. http://creativecommons.org/licenses/by-nc/3.0/ + // 4. http://creativecommons.org/licenses/by-nd/3.0/ + // 5. http://creativecommons.org/licenses/by-sa/3.0/ + // 6. http://creativecommons.org/licenses/by/3.0/ + + /** make the td for an object (grammatical object) + * @param obj - an RDF term + * @param view - a VIEW function (rather than a bool asImage) + **/ + + this.outlineObjectTD = function outlineObjectTD (obj, view, deleteNode, statement) { + var td = dom.createElement('td') + td.setAttribute('style', 'margin: 0.2em; border: none; padding: 0; vertical-align: top;') + td.setAttribute('notSelectable', 'false') + var theClass = 'obj' + + // check the IPR on the data. Ok if there is any checked license which is one the document has. + if (statement && statement.why) { + if (UI.licenceOptions && (UI.licenceOptions.checkLicence())) { + theClass += ' licOkay' // flag as light green etc .licOkay {background-color: #dfd} + } + } + + // set about and put 'expand' icon + if ((obj.termType === 'NamedNode') || (obj.termType === 'BlankNode') || + (obj.termType === 'Literal' && obj.value.slice && ( + obj.value.slice(0, 6) === 'ftp://' || + obj.value.slice(0, 8) === 'https://' || + obj.value.slice(0, 7) === 'http://'))) { + td.setAttribute('about', obj.toNT()) + td.appendChild(UI.utils.AJARImage( + (UI.icons.originalIconBase + 'tbl-expand-trans.png'), 'expand', undefined, dom)).addEventListener('click', expandMouseDownListener) + } + td.setAttribute('class', theClass) // this is how you find an object + // @@ TAKE CSS OUT OF STYLE SHEET + if (kb.whether(obj, UI.ns.rdf('type'), UI.ns.link('Request'))) { td.className = 'undetermined' } // @@? why-timbl + + if (!view) { // view should be a function pointer + view = viewAsBoringDefault + } + td.appendChild(view(obj)) + if (deleteNode) { + appendRemoveIcon(td, obj, deleteNode) + } + + try { + // new YAHOO.util.DDExternalProxy(td) + } catch (e) { + UI.log.error('YAHOO Drag and drop not supported:\n' + e) + } + + // set DOM methods + td.tabulatorSelect = function () { + setSelected(this, true) + } + td.tabulatorDeselect = function () { + setSelected(this, false) + } + // td.appendChild( iconBox.construct(document.createTextNode('bla')) ); + + // Create an inquiry icon if there is proof about this triple + if (statement) { + var oneStatementFormula = new UI.rdf.IndexedFormula() + oneStatementFormula.statements.push(statement) // st.asFormula() + // The following works because Formula.hashString works fine for + // one statement formula + var reasons = kb.each(oneStatementFormula, + kb.sym('http://dig.csail.mit.edu/TAMI/2007/amord/tms#justification')) + if (reasons.length) { + var inquirySpan = dom.createElement('span') + if (reasons.length > 1) { inquirySpan.innerHTML = ' × ' + reasons.length } + inquirySpan.setAttribute('class', 'inquiry') + inquirySpan.insertBefore(UI.utils.AJARImage(outlineIcons.src.icon_display_reasons, 'explain', undefined, dom), inquirySpan.firstChild) + td.appendChild(inquirySpan) + } + } + td.addEventListener('click', selectableTDClickListener) + return td + } // outlineObjectTD + + this.outlinePredicateTD = function outlinePredicateTD (predicate, newTr, inverse, internal) { + var predicateTD = dom.createElement('TD') + predicateTD.setAttribute('about', predicate.toNT()) + predicateTD.setAttribute('class', internal ? 'pred internal' : 'pred') + + switch (predicate.termType) { + case 'BlankNode': // TBD + predicateTD.className = 'undetermined' + break + case 'NamedNode': + var lab = UI.utils.predicateLabelForXML(predicate, inverse) + break + case 'Collection': // some choices of predicate + lab = UI.utils.predicateLabelForXML(predicate.elements[0], inverse) + } + lab = lab.slice(0, 1).toUpperCase() + lab.slice(1) + // if (kb.statementsMatching(predicate,rdf('type'), UI.ns.link('Request')).length) predicateTD.className='undetermined'; + + var labelTD = dom.createElement('TD') + labelTD.setAttribute('style', 'margin: 0.2em; border: none; padding: 0; vertical-align: top;') + labelTD.setAttribute('notSelectable', 'true') + labelTD.appendChild(dom.createTextNode(lab)) + predicateTD.appendChild(labelTD) + labelTD.style.width = '100%' + predicateTD.appendChild(termWidget.construct(dom)) // termWidget is global??? + for (var w in outlineIcons.termWidgets) { + if (!newTr || !newTr.AJAR_statement) break // case for TBD as predicate + // alert(Icon.termWidgets[w]+' '+Icon.termWidgets[w].filter) + if (outlineIcons.termWidgets[w].filter && outlineIcons.termWidgets[w].filter(newTr.AJAR_statement, 'pred', + inverse)) { termWidget.addIcon(predicateTD, outlineIcons.termWidgets[w]) } + } + + try { + // new YAHOO.util.DDExternalProxy(predicateTD) + } catch (e) { + UI.log.error('drag and drop not supported') + } + // set DOM methods + predicateTD.tabulatorSelect = function () { + setSelected(this, true) + } + predicateTD.tabulatorDeselect = function () { + setSelected(this, false) + } + predicateTD.addEventListener('click', selectableTDClickListener) + return predicateTD + } // outlinePredicateTD + + function expandedHeaderTR (subject, requiredPane, options) { + var tr = dom.createElement('tr') + tr.setAttribute('class', 'hoverControl') + var td = tr.appendChild(dom.createElement('td')) + td.setAttribute('style', 'margin: 0.2em; border: none; padding: 0; vertical-align: top;') + td.setAttribute('notSelectable', 'false') + td.setAttribute('about', subject.toNT()) + td.setAttribute('colspan', '2') + + var icon = td.appendChild(UI.utils.AJARImage(UI.icons.originalIconBase + + 'tbl-collapse.png', 'collapse', undefined, dom)) + icon.addEventListener('click', collapseMouseDownListener) + + var strong = td.appendChild(dom.createElement('strong')) + strong.appendChild(dom.createTextNode(UI.utils.label(subject))) + UI.widgets.makeDraggable(strong, subject) // 2017 + + tr.firstPane = null + var paneNumber = 0 + var relevantPanes = [] + var labels = [] + + if (requiredPane) { + tr.firstPane = requiredPane + }; + for (var i = 0; i < panes.list.length; i++) { + let pane = panes.list[i] + var lab = pane.label(subject, dom) + if (!lab) continue + + relevantPanes.push(pane) + if (pane === requiredPane) { + paneNumber = relevantPanes.length - 1 // point to this one + } + labels.push(lab) + // steal the focus + if (!tr.firstPane && pane.shouldGetFocus && pane.shouldGetFocus(subject)) { + tr.firstPane = pane + paneNumber = relevantPanes.length - 1 + UI.log.info('the ' + i + 'th pane steals the focus') + } + } + if (!relevantPanes.length) relevantPanes.push(panes.internalPane) + tr.firstPane = tr.firstPane || relevantPanes[0] + if (relevantPanes.length !== 1) { // if only one, simplify interface + for (let i = 0; i < relevantPanes.length; i++) { + let pane = relevantPanes[i] + var ico = UI.utils.AJARImage(pane.icon, labels[i], labels[i], dom) + // ico.setAttribute('align','right'); @@ Should be better, but ffox bug pushes them down + ico.style.maxWidth = '24px' + ico.style.maxHeight = '24px' + var listen = function (ico, pane) { // Freeze scope for event time + ico.addEventListener('click', function (event) { + // Find the containing table for this subject + for (var t = td; t.parentNode; t = t.parentNode) { + if (t.nodeName === 'TABLE') break + } + if (t.nodeName !== 'TABLE') throw new Error('outline: internal error.') + var removePanes = function (specific) { + for (var d = t.firstChild; d; d = d.nextSibling) { + if (typeof d.pane !== 'undefined') { + if (!specific || d.pane === specific) { + if (d.paneButton) { + d.paneButton.setAttribute('class', 'paneHidden') + } + removeAndRefresh(d) + // If we just delete the node d, ffox doesn't refresh the display properly. + // state = 'paneHidden'; + if (d.pane.requireQueryButton && t.parentNode.className /* outer table */ && + numberOfPanesRequiringQueryButton === 1 && dom.getElementById('queryButton')) { + dom.getElementById('queryButton').setAttribute('style', 'display:none;') + } + } + } + } + } + var renderPane = function (pane) { + var paneDiv + UI.log.info('outline: Rendering pane (2): ' + pane.name) + if (UI.no_catch_pane_errors) { // for debugging + paneDiv = pane.render(subject, dom, options) + } else { + try { + paneDiv = pane.render(subject, dom, options) + } catch (e) { // Easier debugging for pane developers + paneDiv = dom.createElement('div') + paneDiv.setAttribute('class', 'exceptionPane') + var pre = dom.createElement('pre') + paneDiv.appendChild(pre) + pre.appendChild(dom.createTextNode(UI.utils.stackString(e))) + } + } + if (pane.requireQueryButton && dom.getElementById('queryButton')) { + dom.getElementById('queryButton').removeAttribute('style') + } + var second = t.firstChild.nextSibling + if (second) t.insertBefore(paneDiv, second) + else t.appendChild(paneDiv) + paneDiv.pane = pane + paneDiv.paneButton = ico + } + var state + state = ico.getAttribute('class') + if (state === 'paneHidden') { + if (!event.shiftKey) { // shift means multiple select + removePanes() + } + renderPane(pane) + ico.setAttribute('class', 'paneShown') + } else { + removePanes(pane) + ico.setAttribute('class', 'paneHidden') + } + + // If the view already exists, remove it + state = 'paneShown' + var numberOfPanesRequiringQueryButton = 0 + for (var d = t.firstChild; d; d = d.nextSibling) { + if (d.pane && d.pane.requireQueryButton) numberOfPanesRequiringQueryButton++ + } + + // paneEventClick(); + }, false) + } // listen + + listen(ico, pane) + ico.setAttribute('class', (i !== paneNumber) ? 'paneHidden' : 'paneShown') + if (i === paneNumber) tr.paneButton = ico + tr.firstChild.childNodes[1].appendChild(ico) + } + } + + // set DOM methods + tr.firstChild.tabulatorSelect = function () { + setSelected(this, true) + } + tr.firstChild.tabulatorDeselect = function () { + setSelected(this, false) + } + return tr + } // expandedHeaderTR + + // / ////////////////////////////////////////////////////////////////////////// + + /* PANES + ** + ** Panes are regions of the outline view in which a particular subject is + ** displayed in a particular way. They are like views but views are for query results. + ** subject panes are currently stacked vertically. + */ + + // / //////////////////// Specific panes are in panes/*.js + // + // The defaultPaneis the first one registerd for which the label + // method + // Those registered first take priority as a default pane. + // That is, those earlier in this file + + /** + * Pane registration + */ + + // the second argument indicates whether the query button is required + + // / /////////////////////////////////////////////////////////////////////////// + + // Remove a node from the DOM so that Firefox refreshes the screen OK + // Just deleting it cause whitespace to accumulate. + function removeAndRefresh (d) { + var table = d.parentNode + var par = table.parentNode + var placeholder = dom.createElement('table') + placeholder.setAttribute('style', 'width: 100%;') + par.replaceChild(placeholder, table) + table.removeChild(d) + par.replaceChild(table, placeholder) // Attempt to + } + + var propertyTable = this.propertyTable = function propertyTable (subject, table, pane, options) { + UI.log.debug('Property table for: ' + subject) + subject = kb.canon(subject) + // if (!pane) pane = panes.defaultPane; + + if (!table) { // Create a new property table + table = dom.createElement('table') + table.setAttribute('style', 'width: 100%;') + var tr1 = expandedHeaderTR(subject, pane, options) + table.appendChild(tr1) + + if (tr1.firstPane) { + var paneDiv + try { + UI.log.info('outline: Rendering pane (1): ' + tr1.firstPane.name) + paneDiv = tr1.firstPane.render(subject, dom, options) + } catch (e) { // Easier debugging for pane developers + paneDiv = dom.createElement('div') + paneDiv.setAttribute('class', 'exceptionPane') + var pre = dom.createElement('pre') + paneDiv.appendChild(pre) + pre.appendChild(dom.createTextNode(UI.utils.stackString(e))) + } + + if (tr1.firstPane.requireQueryButton && dom.getElementById('queryButton')) { + dom.getElementById('queryButton').removeAttribute('style') + } + table.appendChild(paneDiv) + paneDiv.pane = tr1.firstPane + paneDiv.paneButton = tr1.paneButton + } + + return table + } else { // New display of existing table, keeping expanded bits + UI.log.info('Re-expand: ' + table) + // do some other stuff here + return table + } + } /* propertyTable */ + + function propertyTR (doc, st, inverse) { + var tr = doc.createElement('TR') + tr.AJAR_statement = st + tr.AJAR_inverse = inverse + // tr.AJAR_variable = null; // @@ ?? was just 'tr.AJAR_variable' + tr.setAttribute('predTR', 'true') + var predicateTD = thisOutline.outlinePredicateTD(st.predicate, tr, inverse) + tr.appendChild(predicateTD) // @@ add 'internal' to predicateTD's class for style? mno + return tr + } + this.propertyTR = propertyTR + + // / ////////// Property list + function appendPropertyTRs (parent, plist, inverse, predicateFilter) { + // UI.log.info('@appendPropertyTRs, 'this' is %s, dom is %s, '+ // Gives 'can't access dead object' + // 'thisOutline.document is %s', this, dom.location, thisOutline.document.location); + // UI.log.info('@appendPropertyTRs, dom is now ' + this.document.location); + // UI.log.info('@appendPropertyTRs, dom is now ' + thisOutline.document.location); + UI.log.debug('Property list length = ' + plist.length) + if (plist.length === 0) return '' + var sel, j, k + if (inverse) { + sel = function (x) { + return x.subject + } + plist = plist.sort(UI.utils.RDFComparePredicateSubject) + } else { + sel = function (x) { + return x.object + } + plist = plist.sort(UI.utils.RDFComparePredicateObject) + } + + var max = plist.length + for (j = 0; j < max; j++) { // squishing together equivalent properties I think + var s = plist[j] + // if (s.object == parentSubject) continue; // that we knew + + // Avoid predicates from other panes + if (predicateFilter && !predicateFilter(s.predicate, inverse)) continue + + var tr = propertyTR(dom, s, inverse) + parent.appendChild(tr) + var predicateTD = tr.firstChild // we need to kludge the rowspan later + + var defaultpropview = views.defaults[s.predicate.uri] + + // LANGUAGE PREFERENCES WAS AVAILABLE WITH FF EXTENSION - get from elsewhere? + + var dups = 0 // How many rows have the same predicate, -1? + var langTagged = 0 // how many objects have language tags? + var myLang = 0 // Is there one I like? + + for (k = 0; + (k + j < max) && (plist[j + k].predicate.sameTerm(s.predicate)); k++) { + if (k > 0 && (sel(plist[j + k]).sameTerm(sel(plist[j + k - 1])))) dups++ + if (sel(plist[j + k]).lang && outline.labeller.LanguagePreference) { + langTagged += 1 + if (sel(plist[j + k]).lang.indexOf(outline.labeller.LanguagePreference) >= 0) myLang++ + } + } + + /* Display only the one in the preferred language + ONLY in the case (currently) when all the values are tagged. + Then we treat them as alternatives. */ + + if (myLang > 0 && langTagged === dups + 1) { + for (let k = j; k <= j + dups; k++) { + if (outline.labeller.LanguagePreference && sel(plist[k]).lang.indexOf(outline.labeller.LanguagePreference) >= 0) { + tr.appendChild(thisOutline.outlineObjectTD(sel(plist[k]), defaultpropview, undefined, s)) + break + } + } + j += dups // extra push + continue + } + + tr.appendChild(thisOutline.outlineObjectTD(sel(s), defaultpropview, undefined, s)) + + /* Note: showNobj shows between n to 2n objects. + * This is to prevent the case where you have a long list of objects + * shown, and dangling at the end is '1 more' (which is easily ignored) + * Therefore more objects are shown than hidden. + */ + + tr.showNobj = function (n) { + var predDups = k - dups + var show = ((2 * n) < predDups) ? n : predDups + var showLaterArray = [] + if (predDups !== 1) { + predicateTD.setAttribute('rowspan', (show === predDups) ? predDups : n + 1) + var l + if ((show < predDups) && (show === 1)) { // what case is this... + predicateTD.setAttribute('rowspan', 2) + } + var displayed = 0 // The number of cells generated-1, + // all duplicate thing removed + for (l = 1; l < k; l++) { + // This detects the same things + if (!kb.canon(sel(plist[j + l])).sameTerm(kb.canon(sel(plist[j + l - 1])))) { + displayed++ + s = plist[j + l] + defaultpropview = views.defaults[s.predicate.uri] + var trObj = dom.createElement('tr') + trObj.style.colspan = '1' + trObj.appendChild(thisOutline.outlineObjectTD( + sel(plist[j + l]), defaultpropview, undefined, s)) + trObj.AJAR_statement = s + trObj.AJAR_inverse = inverse + parent.appendChild(trObj) + if (displayed >= show) { + trObj.style.display = 'none' + showLaterArray.push(trObj) + } + } else { + // ToDo: show all the data sources of this statement + UI.log.info('there are duplicates here: %s', plist[j + l - 1]) + } + } + // @@a quick fix on the messing problem. + if (show === predDups) { predicateTD.setAttribute('rowspan', displayed + 1) } + } // end of if (predDups!==1) + + if (show < predDups) { // Add the x more here + var moreTR = dom.createElement('tr') + var moreTD = moreTR.appendChild(dom.createElement('td')) + moreTD.setAttribute('style', 'margin: 0.2em; border: none; padding: 0; vertical-align: top;') + moreTD.setAttribute('notSelectable', 'false') + if (predDups > n) { // what is this for?? + var small = dom.createElement('a') + moreTD.appendChild(small) + + var predToggle = (function (f) { + return f(predicateTD, k, dups, n) + })(function (predicateTD, k, dups, n) { + return function (display) { + small.innerHTML = '' + if (display === 'none') { + small.appendChild(UI.utils.AJARImage(UI.icons.originalIconBase + 'tbl-more-trans.png', 'more', 'See all', dom)) + small.appendChild(dom.createTextNode((predDups - n) + ' more...')) + predicateTD.setAttribute('rowspan', n + 1) + } else { + small.appendChild(UI.utils.AJARImage(UI.icons.originalIconBase + 'tbl-shrink.png', '(less)', undefined, dom)) + predicateTD.setAttribute('rowspan', predDups + 1) + } + for (var i = 0; i < showLaterArray.length; i++) { + var trObj = showLaterArray[i] + trObj.style.display = display + } + } + }) // ??? + var current = 'none' + var toggleObj = function (event) { + predToggle(current) + current = (current === 'none') ? '' : 'none' + if (event) event.stopPropagation() + return false // what is this for? + } + toggleObj() + small.addEventListener('click', toggleObj, false) + } // if(predDups>n) + parent.appendChild(moreTR) + } // if + } // tr.showNobj + + tr.showAllobj = function () { + tr.showNobj(k - dups) + } + + tr.showNobj(10) + + j += k - 1 // extra push + } + } // appendPropertyTRs + + this.appendPropertyTRs = appendPropertyTRs + + /* termWidget + ** + */ + var termWidget = {} // @@@@@@ global + global.termWidget = termWidget + termWidget.construct = function (dom) { + dom = dom || document + var td = dom.createElement('TD') + td.setAttribute('style', 'margin: 0.2em; border: none; padding: 0; vertical-align: top;') + td.setAttribute('class', 'iconTD') + td.setAttribute('notSelectable', 'true') + td.style.width = '0px' + return td + } + termWidget.addIcon = function (td, icon, listener) { + var iconTD = td.childNodes[1] + if (!iconTD) return + var width = iconTD.style.width + var img = UI.utils.AJARImage(icon.src, icon.alt, icon.tooltip, dom) + width = parseInt(width) + width = width + icon.width + iconTD.style.width = width + 'px' + iconTD.appendChild(img) + if (listener) { + img.addEventListener('click', listener) + } + } + termWidget.removeIcon = function (td, icon) { + var iconTD = td.childNodes[1] + var baseURI + if (!iconTD) return + var width = iconTD.style.width + width = parseInt(width) + width = width - icon.width + iconTD.style.width = width + 'px' + for (var x = 0; x < iconTD.childNodes.length; x++) { + var elt = iconTD.childNodes[x] + var eltSrc = elt.src + + // ignore first '?' and everything after it //Kenny doesn't know what this is for + try { + baseURI = dom.location.href.split('?')[0] + } catch (e) { + console.log(e) + baseURI = '' + } + var relativeIconSrc = UI.rdf.uri.join(icon.src, baseURI) + if (eltSrc === relativeIconSrc) { + iconTD.removeChild(elt) + } + } + } + termWidget.replaceIcon = function (td, oldIcon, newIcon, listener) { + termWidget.removeIcon(td, oldIcon) + termWidget.addIcon(td, newIcon, listener) + } + + // / /////////////////////////////////////////////////// VALUE BROWSER VIEW + + // / /////////////////////////////////////////////////////// TABLE VIEW + + // Summarize a thing as a table cell + + /********************** + + query global vars + + ***********************/ + + // const doesn't work in Opera + // const BLANK_QUERY = { pat: kb.formula(), vars: [], orderBy: [] }; + // @ pat: the query pattern in an RDFIndexedFormula. Statements are in pat.statements + // @ vars: the free variables in the query + // @ orderBy: the variables to order the table + + function QueryObj () { + this.pat = kb.formula() + this.vars = [] + // this.orderBy = [] + } + + var queries = [] + queries[0] = new QueryObj() +/* + function querySave () { + queries.push(queries[0]) + var choices = dom.getElementById('queryChoices') + var next = dom.createElement('option') + var box = dom.createElement('input') + var index = queries.length - 1 + box.setAttribute('type', 'checkBox') + box.setAttribute('value', index) + choices.appendChild(box) + choices.appendChild(dom.createTextNode('Saved query #' + index)) + choices.appendChild(dom.createElement('br')) + next.setAttribute('value', index) + next.appendChild(dom.createTextNode('Saved query #' + index)) + dom.getElementById('queryJump').appendChild(next) + } +*/ +/* + function resetQuery () { + function resetOutliner (pat) { + var n = pat.statements.length + var pattern, tr + for (let i = 0; i < n; i++) { + pattern = pat.statements[i] + tr = pattern.tr + // UI.log.debug('tr: ' + tr.AJAR_statement); + if (typeof tr !== 'undefined') { + delete tr.AJAR_pattern + delete tr.AJAR_variable + } + } + for (let x in pat.optional) { resetOutliner(pat.optional[x]) } + } + resetOutliner(myQuery.pat) + UI.utils.clearVariableNames() + queries[0] = myQuery = new QueryObj() + } +*/ + function addButtonCallbacks (target, fireOn) { + UI.log.debug('Button callbacks for ' + fireOn + ' added') + var makeIconCallback = function (icon) { + return function IconCallback (req) { + if (req.indexOf('#') >= 0) { + console.log('@@ makeIconCallback: Not expecting # in URI whose state changed: ' + req) + // alert('Should have no hash in '+req) + } + if (!target) { + return false + } + if (!outline.ancestor(target, 'DIV')) return false + // if (term.termType != 'symbol') { return true } // should always ve + if (req === fireOn) { + target.src = icon + target.title = outlineIcons.tooltips[icon] + } + return true + } + } + sf.addCallback('request', makeIconCallback(outlineIcons.src.icon_requested)) + sf.addCallback('done', makeIconCallback(outlineIcons.src.icon_fetched)) + sf.addCallback('fail', makeIconCallback(outlineIcons.src.icon_failed)) + } + + // Selection support + + function selected (node) { + var a = node.getAttribute('class') + if (a && (a.indexOf('selected') >= 0)) return true + return false + } + + // These woulkd be simpler using closer variables below + function optOnIconMouseDownListener (e) { // outlineIcons.src.icon_opton needed? + var target = thisOutline.targetOf(e) + var p = target.parentNode + termWidget.replaceIcon(p.parentNode, + outlineIcons.termWidgets.optOn, + outlineIcons.termWidgets.optOff, optOffIconMouseDownListener) + p.parentNode.parentNode.removeAttribute('optional') + } + + function optOffIconMouseDownListener (e) { // outlineIcons.src.icon_optoff needed? + var target = thisOutline.targetOf(e) + var p = target.parentNode + termWidget.replaceIcon(p.parentNode, + outlineIcons.termWidgets.optOff, + outlineIcons.termWidgets.optOn, optOnIconMouseDownListener) + p.parentNode.parentNode.setAttribute('optional', 'true') + } + + function setSelectedParent (node, inc) { + var onIcon = outlineIcons.termWidgets.optOn + var offIcon = outlineIcons.termWidgets.optOff + for (var n = node; n.parentNode; n = n.parentNode) { + while (true) { + if (n.getAttribute('predTR')) { + var num = n.getAttribute('parentOfSelected') + if (!num) num = 0 + else num = parseInt(num) + if (num === 0 && inc > 0) { + termWidget.addIcon(n.childNodes[0], + n.getAttribute('optional') ? onIcon : offIcon, + n.getAttribute('optional') ? optOnIconMouseDownListener : optOffIconMouseDownListener) + } + num = num + inc + n.setAttribute('parentOfSelected', num) + if (num === 0) { + n.removeAttribute('parentOfSelected') + termWidget.removeIcon(n.childNodes[0], n.getAttribute('optional') ? onIcon : offIcon) + } + break + } else if (n.previousSibling && n.previousSibling.nodeName === 'TR') { n = n.previousSibling } else break + } + } + } + + this.statusBarClick = function (event) { + var target = UI.utils.getTarget(event) + if (target.label) { + window.content.location = target.label + // The following alternative does not work in the extension. + // var s = UI.store.sym(target.label); + // outline.GotoSubject(s, true); + } + } + + this.showURI = function showURI (about) { + if (about && dom.getElementById('UserURI')) { + dom.getElementById('UserURI').value = + (about.termType === 'NamedNode') ? about.uri : '' // blank if no URI + } else if (about && UI.isExtension) { + var tabStatusBar = gBrowser.ownerDocument.getElementById('tabulator-display') + tabStatusBar.setAttribute('style', 'display:block') + tabStatusBar.label = (about.termType === 'NamedNode') ? about.uri : '' // blank if no URI + if (tabStatusBar.label === '') { + tabStatusBar.setAttribute('style', 'display:none') + } else { + tabStatusBar.addEventListener('click', this.statusBarClick, false) + } + } + } + + this.showSource = function showSource () { + if (typeof sourceWidget === 'undefined') return + // deselect all before going on, this is necessary because you would switch tab, + // close tab or so on... + for (var uri in sourceWidget.sources) { sourceWidget.sources[uri].setAttribute('class', '') } // .class doesn't work. Be careful! + for (var i = 0; i < selection.length; i++) { + if (!selection[i].parentNode) { + console.log('showSource: EH? no parentNode? ' + selection[i] + '\n') + continue + } + var st = selection[i].parentNode.AJAR_statement + if (!st) continue // for root TD + var source = st.why + if (source && source.uri) { + sourceWidget.highlight(source, true) + } else if (UI.isExtension && source.termType === 'BlankNode') { + sourceWidget.highlight(kb.sym('resource://tabulator/'), true) // see extension + } + } + } + + this.getSelection = function getSelection () { + return selection + } + + function setSelected (node, newValue) { + // UI.log.info('selection has ' +selection.map(function(item){return item.textContent;}).join(', ')); + // UI.log.debug('@outline setSelected, intended to '+(newValue?'select ':'deselect ')+node+node.textContent); + // if (newValue === selected(node)) return; //we might not need this anymore... + if (node.nodeName !== 'TD') { + UI.log.debug('down' + node.nodeName) + throw new Error('Expected TD in setSelected: ' + node.nodeName + ' : ' + node.textContent) + } + UI.log.debug('pass') + var cla = node.getAttribute('class') + if (!cla) cla = '' + if (newValue) { + cla += ' selected' + if (cla.indexOf('pred') >= 0 || cla.indexOf('obj') >= 0) setSelectedParent(node, 1) + selection.push(node) + // UI.log.info('Selecting '+node.textContent) + + var about = UI.utils.getTerm(node) // show uri for a newly selectedTd + thisOutline.showURI(about) + // if(UI.isExtension && about && about.termType=='NamedNode') gURLBar.value = about.uri; + // about==null when node is a TBD + + var st = node.AJAR_statement // show blue cross when the why of that triple is editable + if (typeof st === 'undefined') st = node.parentNode.AJAR_statement + // if (typeof st === 'undefined') return; // @@ Kludge? Click in the middle of nowhere + if (st) { // don't do these for headers or base nodes + var source = st.why + // var target = st.why + var editable = UI.store.updater.editable(source.uri, kb) + if (!editable) { + // let target = node.parentNode.AJAR_inverse ? st.object : st.subject + } // left hand side + // think about this later. Because we update to the why for now. + // alert('Target='+target+', editable='+editable+'\nselected statement:' + st) + if (editable && (cla.indexOf('pred') >= 0)) { termWidget.addIcon(node, outlineIcons.termWidgets.addTri) } // Add blue plus + } + } else { + UI.log.debug('cla=$' + cla + '$') + if (cla === 'selected') cla = '' // for header + cla = cla.replace(' selected', '') + if (cla.indexOf('pred') >= 0 || cla.indexOf('obj') >= 0) setSelectedParent(node, -1) + if (cla.indexOf('pred') >= 0) { termWidget.removeIcon(node, outlineIcons.termWidgets.addTri) } + + selection = selection.filter(function (x) { + return x === node + }) + + UI.log.info('Deselecting ' + node.textContent) + } + if (typeof sourceWidget !== 'undefined') thisOutline.showSource() // Update the data sources display + // UI.log.info('selection becomes [' +selection.map(function(item){return item.textContent;}).join(', ')+']'); + // UI.log.info('Setting className ' + cla); + node.setAttribute('class', cla) + } + + function deselectAll () { + var n = selection.length + for (let i = n - 1; i >= 0; i--) setSelected(selection[i], false) + selection = [] + } + + /** Get the target of an event **/ + this.targetOf = function (e) { + var target + if (!e) e = window.event + if (e.target) { target = e.target } else if (e.srcElement) { target = e.srcElement } else { + UI.log.error('can\'t get target for event ' + e) + return false + } // fail + if (target.nodeType === 3) { // defeat Safari bug [sic] + target = target.parentNode + } + return target + } // targetOf + + this.walk = function walk (directionCode, inputTd) { + var selectedTd = inputTd || selection[0] + var newSelTd + switch (directionCode) { + case 'down': + try { + newSelTd = selectedTd.parentNode.nextSibling.lastChild + } catch (e) { + this.walk('up') + return + } // end + deselectAll() + setSelected(newSelTd, true) + break + case 'up': + try { + newSelTd = selectedTd.parentNode.previousSibling.lastChild + } catch (e) { + return + } // top + deselectAll() + setSelected(newSelTd, true) + break + case 'right': + deselectAll() + if (selectedTd.nextSibling || selectedTd.lastChild.tagName === 'strong') { setSelected(selectedTd.nextSibling, true) } else { + var newSelected = dom.evaluate('table/div/tr/td[2]', selectedTd, + null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue + setSelected(newSelected, true) + } + break + case 'left': + deselectAll() + if (selectedTd.previousSibling && selectedTd.previousSibling.className === 'undetermined') { + setSelected(selectedTd.previousSibling, true) + return true // do not shrink signal + } else { setSelected(UI.utils.ancestor(selectedTd.parentNode, 'TD'), true) } // supplied by thieOutline.focusTd + break + case 'moveTo': + // UI.log.info(selection[0].textContent+'->'+inputTd.textContent); + deselectAll() + setSelected(inputTd, true) + break + } + if (directionCode === 'down' || directionCode === 'up') { if (!newSelTd.tabulatorSelect) this.walk(directionCode) } + // return newSelTd; + } + + // Keyboard Input: we can consider this as... + // 1. a fast way to modify data - enter will go to next predicate + // 2. an alternative way to input - enter at the end of a predicate will create a new statement + this.OutlinerKeypressPanel = function OutlinerKeypressPanel (e) { + UI.log.info('Key ' + e.keyCode + ' pressed') + + function showURI (about) { + if (about && dom.getElementById('UserURI')) { + dom.getElementById('UserURI').value = + (about.termType === 'NamedNode') ? about.uri : '' // blank if no URI + } + } + + function setSelectedAfterward (uri) { + if (arguments[3]) return true + walk('right', selectedTd) + showURI(UI.utils.getAbout(kb, selection[0])) + return true + } + var target, editable + + if (UI.utils.getTarget(e).tagName === 'TEXTAREA') return + if (UI.utils.getTarget(e).id === 'UserURI') return + if (selection.length > 1) return + if (selection.length === 0) { + if (e.keyCode === 13 || e.keyCode === 38 || e.keyCode === 40 || e.keyCode === 37 || e.keyCode === 39) { + this.walk('right', thisOutline.focusTd) + showURI(UI.utils.getAbout(kb, selection[0])) + } + return + } + var selectedTd = selection[0] + // if not done, Have to deal with redraw... + sf.removeCallback('done', 'setSelectedAfterward') + sf.removeCallback('fail', 'setSelectedAfterward') + + switch (e.keyCode) { + case 13: // enter + if (UI.utils.getTarget(e).tagName === 'HTML') { // I don't know why 'HTML' + var object = UI.utils.getAbout(kb, selectedTd) + target = selectedTd.parentNode.AJAR_statement.why + editable = UI.store.updater.editable(target.uri, kb) + if (object) { + // + outline.GotoSubject(object, true) + /* //deal with this later + deselectAll(); + var newTr=dom.getElementById('outline').lastChild; + setSelected(newTr.firstChild.firstChild.childNodes[1].lastChild,true); + function setSelectedAfterward(uri){ + deselectAll(); + setSelected(newTr.firstChild.firstChild.childNodes[1].lastChild,true); + showURI(getAbout(kb,selection[0])); + return true; + } + sf.insertCallback('done',setSelectedAfterward); + sf.insertCallback('fail',setSelectedAfterward); + */ + // + } else if (editable) { // this is a text node and editable + thisOutline.UserInput.Enter(selectedTd) + } + } else { + // var newSelTd=thisOutline.UserInput.lastModified.parentNode.parentNode.nextSibling.lastChild; + this.UserInput.Keypress(e) + this.walk('down') // bug with input at the end + // dom.getElementById('docHTML').focus(); //have to set this or focus blurs + e.stopPropagation() + } + return + case 38: // up + // thisOutline.UserInput.clearInputAndSave(); + // ^^^ does not work because up and down not captured... + this.walk('up') + e.stopPropagation() + e.preventDefault() + break + case 40: // down + // thisOutline.UserInput.clearInputAndSave(); + this.walk('down') + e.stopPropagation() + e.preventDefault() + } // switch + + if (UI.utils.getTarget(e).tagName === 'INPUT') return + + switch (e.keyCode) { + case 46: // delete + case 8: // backspace + target = selectedTd.parentNode.AJAR_statement.why + editable = UI.store.updater.editable(target.uri, kb) + if (editable) { + e.preventDefault() // prevent from going back + this.UserInput.Delete(selectedTd) + } + break + case 37: // left + if (this.walk('left')) return + var titleTd = UI.utils.ancestor(selectedTd.parentNode, 'TD') + outlineCollapse(selectedTd, UI.utils.getAbout(kb, titleTd)) + break + case 39: // right + let obj = UI.utils.getAbout(kb, selectedTd) + if (obj) { + var walk = this.walk + + if (selectedTd.nextSibling) { // when selectedTd is a predicate + this.walk('right') + return + } + if (selectedTd.firstChild.tagName !== 'TABLE') { // not expanded + sf.addCallback('done', setSelectedAfterward) + sf.addCallback('fail', setSelectedAfterward) + outlineExpand(selectedTd, obj, { + 'pane': panes.defaultPane + }) + } + setSelectedAfterward() + } + break + case 38: // up + case 40: // down + break + default: + switch (e.charCode) { + case 99: // c for Copy + if (e.ctrlKey) { + thisOutline.UserInput.copyToClipboard(thisOutline.clipboardAddress, selectedTd) + break + } + break + case 118: // v + case 112: // p for Paste + if (e.ctrlKey) { + thisOutline.UserInput.pasteFromClipboard(thisOutline.clipboardAddress, selectedTd) + // dom.getElementById('docHTML').focus(); //have to set this or focus blurs + // window.focus(); + // e.stopPropagation(); + break + } + break + default: + if (UI.utils.getTarget(e).tagName === 'HTML') { + /* + // + thisOutline.UserInput.Click(e,selectedTd); + thisOutline.UserInput.lastModified.value=String.fromCharCode(e.charCode); + if (selectedTd.className==='undetermined selected') thisOutline.UserInput.AutoComplete(e.charCode) + // + */ + // Events are not reliable... + // var e2=document.createEvent('KeyboardEvent'); + // e2.initKeyEvent('keypress',true,true,null,false,false,false,false,e.keyCode,0); + // UserInput.lastModified.dispatchEvent(e2); + } + } + } // end of switch + + showURI(UI.utils.getAbout(kb, selection[0])) + // alert(window);alert(doc); + /* + var wm = Components.classes['@mozilla.org/appshell/window-mediator;1'] + .getService(Components.interfaces.nsIWindowMediator); + var gBrowser = wm.getMostRecentWindow('navigator:browser') */ + // gBrowser.addTab('http://www.w3.org/'); + // alert(gBrowser.addTab);alert(gBrowser.scroll);alert(gBrowser.scrollBy) + // gBrowser.scrollBy(0,100); + + // var thisHtml=selection[0].owner + if (selection[0]) { + var PosY = UI.utils.findPos(selection[0])[1] + if (PosY + selection[0].clientHeight > window.scrollY + window.innerHeight) UI.utils.getEyeFocus(selection[0], true, true, window) + if (PosY < window.scrollY + 54) UI.utils.getEyeFocus(selection[0], true, undefined, window) + } + } + this.OutlinerMouseclickPanel = function (e) { + switch (thisOutline.UserInput._tabulatorMode) { + case 0: + TabulatorMousedown(e) + break + case 1: + thisOutline.UserInput.Click(e) + break + default: + } + } + + /** things to do onmousedown in outline view **/ + /* + ** To Do: This big event hander needs to be replaced by lots + ** of little ones individually connected to each icon. This horrible + ** switch below isn't modular. (Sorry!) - Tim + */ + // expand + // collapse + // refocus + // select + // visit/open a page + + function expandMouseDownListener (e) { // For icon (UI.icons.originalIconBase + 'tbl-expand-trans.png') + var target = thisOutline.targetOf(e) + var p = target.parentNode + var subject = UI.utils.getAbout(kb, target) + var pane = e.altKey ? panes.internalPane : undefined // set later: was panes.defaultPane + + if (e.shiftKey) { // Shift forces a refocuss - bring this to the top + outlineRefocus(p, subject, pane) + } else { + if (e.altKey) { // To investigate screwups, dont wait show internals + outlineExpand(p, subject, { + 'pane': panes.internalPane, + 'immediate': true + }) + } else { + outlineExpand(p, subject) + } + } + } + + function collapseMouseDownListener (e) { // for icon UI.icons.originalIconBase + 'tbl-collapse.png' + var target = thisOutline.targetOf(e) + var subject = UI.utils.getAbout(kb, target) + var pane = e.altKey ? panes.internalPane : undefined + var p = target.parentNode + outlineCollapse(p, subject, pane) + } + + function failedIconMouseDownListener (e) { // outlineIcons.src.icon_failed + var target = thisOutline.targetOf(e) + var uri = target.getAttribute('uri') // Put on access buttons + if (e.altKey) { + sf.fetch(UI.rdf.uri.docpart(uri), { + 'force': true + }) // Add 'force' bit? + } else { + sf.refresh(kb.sym(UI.rdf.uri.docpart(uri))) // just one + } + } + + function fetchedIconMouseDownListener (e) { // outlineIcons.src.icon_fetched + var target = thisOutline.targetOf(e) + var uri = target.getAttribute('uri') // Put on access buttons + if (e.altKey) { + sf.fetch(UI.rdf.uri.docpart(uri), { + 'force': true + }) + } else { + sf.refresh(kb.sym(UI.rdf.uri.docpart(uri))) // just one + } + } + + function unrequestedIconMouseDownListener (e) { + var target = thisOutline.targetOf(e) + var uri = target.getAttribute('uri') // Put on access buttons + sf.fetch(UI.rdf.uri.docpart(uri)) + } + + function removeNodeIconMouseDownListener (e) { // icon_remove_node + var target = thisOutline.targetOf(e) + var node = target.node + if (node.childNodes.length > 1) node = target.parentNode // parallel outline view @@ Hack + removeAndRefresh(node) // @@ update icons for pane? + } + + function selectableTDClickListener (e) { + // Is we are in editing mode already + if (thisOutline.UserInput._tabulatorMode) { + return thisOutline.UserInput.Click(e) + } + + var target = thisOutline.targetOf(e) + // Originallt this was set on the whole tree and could happen anywhere + // var p = target.parentNode + var node + for (node = UI.utils.ancestor(target, 'TD'); node && !(node.getAttribute('notSelectable') === 'false'); // Default now is not selectable + node = UI.utils.ancestor(node.parentNode, 'TD')) {} + if (!node) return + + // var node = target; + + var sel = selected(node) + // var cla = node.getAttribute('class') + UI.log.debug('Was node selected before: ' + sel) + if (e.altKey) { + setSelected(node, !selected(node)) + } else if (e.shiftKey) { + setSelected(node, true) + } else { + // setSelected(node, !selected(node)) + deselectAll() + thisOutline.UserInput.clearInputAndSave(e) + setSelected(node, true) + + if (e.detail === 2) { // dobule click -> quit TabulatorMousedown() + e.stopPropagation() + return + } + // if the node is already selected and the correspoding statement is editable, + // go to UserInput + var st = node.parentNode.AJAR_statement + if (!st) return // For example in the title TD of an expanded pane + let target = st.why + var editable = UI.store.updater.editable(target.uri, kb) + if (sel && editable) thisOutline.UserInput.Click(e, selection[0]) // was next 2 lines + // var text='TabulatorMouseDown@Outline()'; + // HCIoptions['able to edit in Discovery Mode by mouse'].setupHere([sel,e,thisOutline,selection[0]],text); + } + UI.log.debug('Was node selected after: ' + selected(node) + ', count=' + selection.length) + // var tr = node.parentNode + /* + if (tr.AJAR_statement) { + // var why = tr.AJAR_statement.why + // UI.log.info('Information from '+why); + } + */ + e.stopPropagation() + // this is important or conflict between deslect and userinput happens + } + + function TabulatorMousedown (e) { + UI.log.info('@TabulatorMousedown, dom.location is now ' + dom.location) + var target = thisOutline.targetOf(e) + if (!target) return + var tname = target.tagName + // UI.log.debug('TabulatorMousedown: ' + tname + ' shift='+e.shiftKey+' alt='+e.altKey+' ctrl='+e.ctrlKey); + // var p = target.parentNode + // var about = UI.utils.getAbout(kb, target) + // var source = null + if (tname === 'INPUT' || tname === 'TEXTAREA') { + return + } + + // not input then clear + thisOutline.UserInput.clearMenu() + + // ToDo:remove this and recover X + if (thisOutline.UserInput.lastModified && + thisOutline.UserInput.lastModified.parentNode.nextSibling) thisOutline.UserInput.backOut() + + // if (typeof rav=='undefined') //uncommnet this for javascript2rdf + // have to put this here or this conflicts with deselectAll() + + if (!target.src || (target.src.slice(target.src.indexOf('/icons/') + 1) !== outlineIcons.src.icon_show_choices && target.src.slice(target.src.indexOf('/icons/') + 1) !== outlineIcons.src.icon_add_triple)) { thisOutline.UserInput.clearInputAndSave(e) } + + if (!target.src || target.src.slice(target.src.indexOf('/icons/') + 1) !== outlineIcons.src.icon_show_choices) { thisOutline.UserInput.clearMenu() } + + if (e) e.stopPropagation() + } // function TabulatorMousedown + + function outlineExpand (p, subject1, options) { + options = options || {} + var pane = options.pane + var already = !!options.already + var immediate = options.immediate + + UI.log.info('@outlineExpand, dom is now ' + dom.location) + // remove callback to prevent unexpected repaint + sf.removeCallback('done', 'expand') + sf.removeCallback('fail', 'expand') + + var subject = kb.canon(subject1) + // var requTerm = subject.uri ? kb.sym(UI.rdf.uri.docpart(subject.uri)) : subject + + function render () { + subject = kb.canon(subject) + if (!p || !p.parentNode || !p.parentNode.parentNode) return false + + var newTable + UI.log.info('@@ REPAINTING ') + if (!already) { // first expand + newTable = propertyTable(subject, undefined, pane, options) + } else { + UI.log.info(' ... p is ' + p) + for (newTable = p.firstChild; newTable.nextSibling; newTable = newTable.nextSibling) { + UI.log.info(' ... checking node ' + newTable) + if (newTable.nodeName === 'table') break + } + newTable = propertyTable(subject, newTable, pane, options) + } + already = true + if (UI.utils.ancestor(p, 'TABLE') && UI.utils.ancestor(p, 'TABLE').style.backgroundColor === 'white') { + newTable.style.backgroundColor = '#eee' + } else { + newTable.style.backgroundColor = 'white' + } + try { + if (YAHOO.util.Event.off) YAHOO.util.Event.off(p, 'mousedown', 'dragMouseDown') + } catch (e) { + console.log('YAHOO ' + e) + } + UI.utils.emptyNode(p).appendChild(newTable) + thisOutline.focusTd = p // I don't know why I couldn't use 'this'...because not defined in callbacks + UI.log.debug('expand: Node for ' + subject + ' expanded') + // fetch seeAlso when render() + // var seeAlsoStats = sf.store.statementsMatching(subject, UI.ns.rdfs('seeAlso')) + // seeAlsoStats.map(function (x) {sf.lookUpThing(x.object, subject,false);}) + var seeAlsoWhat = kb.each(subject, UI.ns.rdfs('seeAlso')) + for (var i = 0; i < seeAlsoWhat.length; i++) { + if (i === 25) { + UI.log.warn('expand: Warning: many (' + + seeAlsoWhat.length + ') seeAlso links for ' + subject) + // break; Not sure what limits the AJAX system has here + } + sf.lookUpThing(seeAlsoWhat[i], subject) + } + } + + function expand (uri) { + if (arguments[3]) return true // already fetched indicator + var cursubj = kb.canon(subject) // canonical identifier may have changed + UI.log.info('@@ expand: relevant subject=' + cursubj + ', uri=' + uri + ', already=' + already) + // var term = kb.sym(uri) + var docTerm = kb.sym(UI.rdf.uri.docpart(uri)) + if (uri.indexOf('#') >= 0) { throw new Error('Internal error: hash in ' + uri) } + + var relevant = function () { // Is the loading of this URI relevam to the display of subject? + if (!cursubj.uri) return true // bnode should expand() + var as = kb.uris(cursubj) + if (!as) return false + for (var i = 0; i < as.length; i++) { // canon'l uri or any alias + for (var rd = UI.rdf.uri.docpart(as[i]); rd; rd = kb.HTTPRedirects[rd]) { + if (uri === rd) return true + } + } + if (kb.anyStatementMatching(cursubj, undefined, undefined, docTerm)) return true // Kenny: inverse? + return false + } + if (relevant()) { + UI.log.success('@@ expand OK: relevant subject=' + cursubj + ', uri=' + uri + ', source=' + + already) + + render() + return false // @@@@@@@@@@@ Will this allow just the first + } + return true + } + // Body of outlineExpand + + if (options.solo) { + dom.title = UI.utils.label(subject) + } + UI.log.debug('outlineExpand: dereferencing ' + subject) + var status = dom.createElement('span') + p.appendChild(status) + sf.addCallback('done', expand) // @@@@@@@ This can really mess up existing work + sf.addCallback('fail', expand) // Need to do if there s one a gentle resync of page with store + + var returnConditions = [] // this is quite a general way to do cut and paste programming + // I might make a class for this + if (subject.uri && subject.uri.split(':')[0] === 'rdf') { // what is this? -tim + render() + return + } + + for (var i = 0; i < returnConditions.length; i++) { + var returnCode + if (returnCode === returnConditions[i](subject)) { + render() + UI.log.debug('outline 1815') + if (returnCode[1]) outlineElement.removeChild(outlineElement.lastChild) + return + } + } + if (subject.uri && !immediate && !UI.widgets.isAudio(subject) && + !UI.widgets.isVideo(subject) && // Never parse videos as data + !kb.holds(subject, UI.ns.rdf('type'), $rdf.Util.mediaTypeClass('application/pdf'))) { // or PDF + // Wait till at least the main URI is loaded before expanding: + sf.nowOrWhenFetched(subject.doc(), undefined, function (ok, body) { + if (ok) { + sf.lookUpThing(subject) + render() // inital open, or else full if re-open + if (options.solo) { // Update window title with new information + dom.title = UI.utils.label(subject) + } + } else { + var message = dom.createElement('pre') + message.textContent = body + message.setAttribute('style', 'background-color: #fee;') + message.textContent = 'Outline.expand: Unable to fetch ' + subject.doc() + ': ' + body + p.appendChild(message) + } + }) + } else { + render() + }; + } // outlineExpand + + function outlineCollapse (p, subject) { + var row = UI.utils.ancestor(p, 'TR') + row = UI.utils.ancestor(row.parentNode, 'TR') // two levels up + if (row) var statement = row.AJAR_statement + var level // find level (the enclosing TD) + for (level = p.parentNode; level.tagName !== 'TD'; level = level.parentNode) { + if (typeof level === 'undefined') { + alert('Not enclosed in TD!') + return + } + } + + UI.log.debug('Collapsing subject ' + subject) + var myview + if (statement) { + UI.log.debug('looking up pred ' + statement.predicate.uri + 'in defaults') + myview = views.defaults[statement.predicate.uri] + } + UI.log.debug('view= ' + myview) + if (level.parentNode.parentNode.id === 'outline') { + var deleteNode = level.parentNode + } + thisOutline.replaceTD(thisOutline.outlineObjectTD(subject, myview, deleteNode, statement), level) + } // outlineCollapse + + this.replaceTD = function replaceTD (newTd, replacedTd) { + var reselect + if (selected(replacedTd)) reselect = true + + // deselects everything being collapsed. This goes backwards because + // deselecting an element decreases selection.length + for (var x = selection.length - 1; x > -1; x--) { + for (var elt = selection[x]; elt.parentNode; elt = elt.parentNode) { + if (elt === replacedTd) { setSelected(selection[x], false) } + } + } + + replacedTd.parentNode.replaceChild(newTd, replacedTd) + if (reselect) setSelected(newTd, true) + } + + function outlineRefocus (p, subject) { // Shift-expand or shift-collapse: Maximize + if (UI.isExtension && subject.termType === 'symbol' && subject.uri.indexOf('#') < 0) { + gBrowser.selectedBrowser.loadURI(subject.uri) + return + } + var outer = null + for (var level = p.parentNode; level; level = level.parentNode) { + UI.log.debug('level ' + level.tagName) + if (level.tagName === 'TD') outer = level + } // find outermost td + UI.utils.emptyNode(outer).appendChild(propertyTable(subject)) + dom.title = UI.utils.label(subject) + outer.setAttribute('about', subject.toNT()) + } // outlineRefocus + + outline.outlineRefocus = outlineRefocus + + // Inversion is turning the outline view inside-out + // It may be called eversion + /* + function outlineInversion (p, subject) { // re-root at subject + function move_root (rootTR, childTR) { // swap root with child + // @@ + } + } +*/ + this.GotoFormURI_enterKey = function (e) { + if (e.keyCode === 13) outline.GotoFormURI(e) + } + this.GotoFormURI = function (e) { + GotoURI(dom.getElementById('UserURI').value) + } + + function GotoURI (uri) { + var subject = kb.sym(uri) + this.GotoSubject(subject, true) + } + this.GotoURIinit = function (uri) { + var subject = kb.sym(uri) + this.GotoSubject(subject) + } + + // Display the subject in an outline view + // + // subject -- RDF term for teh thing to be presented + // expand -- flag -- open the subject rather tahn keep folded closed + // pane -- optional -- pane to be used for exanded display + // solo -- optional -- the window will be cleared out and only the subject displayed + // referer -- optional -- where did we hear about this from anyway? + // table -- option -- a table element in which to put the outline. + + this.GotoSubject = function (subject, expand, pane, solo, referrer, table) { + if (!table) table = dom.getElementById('outline') // @@ if does not exist just add one + if (solo) UI.utils.emptyNode(table) + + function GotoSubjectDefault () { + var tr = dom.createElement('TR') + tr.style.verticalAlign = 'top' + table.appendChild(tr) + var td = thisOutline.outlineObjectTD(subject, undefined, tr) + tr.appendChild(td) + return td + } + + if (UI.isExtension) { + var newURI = function (spec) { + // e.g. see http://www.nexgenmedia.net/docs/protocol/ + const MozillaSimpoleURIContactId = '@mozilla.org/network/simple-uri;1' + var nsIURI = Components.interfaces.nsIURI + var uri = Components.classes[MozillaSimpoleURIContactId].createInstance(nsIURI) + uri.spec = spec + return uri + } + } + + var td = GotoSubjectDefault() + // if (!td) td = GotoSubjectDefault(); //the first tr is required // eh? + + if (solo) dom.title = UI.utils.label(subject) // 'Tabulator: '+ No need to advertize + + if (expand) { + outlineExpand(td, subject, { + 'pane': pane, + solo: solo + }) + var tr = td.parentNode + UI.utils.getEyeFocus(tr, false, undefined, window) // instantly: false + } + + if (solo && dom && dom.defaultView && dom.defaultView.history) { + let stateObj = pane ? { paneName: pane.name } : {} + try { // can fail if different origin + dom.defaultView.history.pushState(stateObj, subject.uri, subject.uri) + } catch (e) { + console.log(e) + } + } + + if (solo && UI.isExtension) { + // See https://developer.mozilla.org/en/NsIGlobalHistory2 + // See + var ghist2 = Components.classes['@mozilla.org/browser/global-history;2'] + .getService(Components.interfaces.nsIGlobalHistory2) + ghist2.addURI(newURI(subject.uri), false, true, referrer) + /* + var historyService = Components.classes['@mozilla.org/browser/nav-history-service;1'] + .getService(Components.interfaces.nsINavHistoryService); + // See http://people.mozilla.com/~dietrich/places/interfacens_i_nav_history_service.html + // and https://developer.mozilla.org/en/NSPR_API_Reference/Date_and_Time and + // https://developer.mozilla.org/en/Using_the_Places_history_service + historyService.addVisit(newURI(subject.uri), + undefined, @@ + undefined, // in nsIURI aReferringUR + historyService.TRANSITION_LINK, // = 1 + false, // True if the given visit redirects to somewhere else. (hides it) + 0) // @@ Should be the session ID + */ + } + return subject + } + +/* + this.GotoURIAndOpen = function (uri) { + GotoURI(uri) + } +*/ + // / ///////////////////////////////////////////////////// + // + // + // VIEWS + // + // + // / ///////////////////////////////////////////////////// + + var views = { + properties: [], + defaults: [], + classes: [] + } // views + + /** add a property view function **/ + function viewsAddPropertyView (property, pviewfunc, isDefault) { + if (!views.properties[property]) { views.properties[property] = [] } + views.properties[property].push(pviewfunc) + if (isDefault) { // will override an existing default! + views.defaults[property] = pviewfunc + } + } // addPropertyView + + var ns = UI.ns + // view that applies to items that are objects of certain properties. + // viewsAddPropertyView(property, viewjsfile, default?) + viewsAddPropertyView(ns.foaf('depiction').uri, viewAsImage, true) + viewsAddPropertyView(ns.foaf('img').uri, viewAsImage, true) + viewsAddPropertyView(ns.foaf('thumbnail').uri, viewAsImage, true) + viewsAddPropertyView(ns.foaf('logo').uri, viewAsImage, true) + viewsAddPropertyView(ns.foaf('mbox').uri, viewAsMbox, true) + // viewsAddPropertyView(ns.foaf('based_near').uri, VIEWAS_map, true); + // viewsAddPropertyView(ns.foaf('birthday').uri, VIEWAS_cal, true); + + // var thisOutline = this dup + /** some builtin simple views **/ + + function viewAsBoringDefault (obj) { + // UI.log.debug('entered viewAsBoringDefault...'); + var rep // representation in html + + if (obj.termType === 'Literal') { + var styles = { + 'integer': 'text-align: right;', + 'decimal': 'text-align: \'.\';', + 'double': 'text-align: \'.\';' + } + rep = dom.createElement('span') + rep.textContent = obj.value + // Newlines have effect and overlong lines wrapped automatically + var style = '' + if (obj.datatype && obj.datatype.uri) { + var xsd = UI.ns.xsd('').uri + if (obj.datatype.uri.slice(0, xsd.length) === xsd) { style = styles[obj.datatype.uri.slice(xsd.length)] } + } + rep.setAttribute('style', style || 'white-space: pre-wrap;') + } else if (obj.termType === 'NamedNode' || obj.termType === 'BlankNode') { + rep = dom.createElement('span') + rep.setAttribute('about', obj.toNT()) + thisOutline.appendAccessIcons(kb, rep, obj) + + if (obj.termType === 'NamedNode') { + if (obj.uri.slice(0, 4) === 'tel:') { + var num = obj.uri.slice(4) + var anchor = dom.createElement('a') + rep.appendChild(dom.createTextNode(num)) + anchor.setAttribute('href', obj.uri) + anchor.appendChild(UI.utils.AJARImage(outlineIcons.src.icon_telephone, + 'phone', 'phone ' + num, dom)) + rep.appendChild(anchor) + anchor.firstChild.setAttribute('class', 'phoneIcon') + } else { // not tel: + rep.appendChild(dom.createTextNode(UI.utils.label(obj))) + UI.widgets.makeDraggable(rep, obj) // 2017 + } + } else { // bnode + rep.appendChild(dom.createTextNode(UI.utils.label(obj))) + } + } else if (obj.termType === 'Collection') { + // obj.elements is an array of the elements in the collection + rep = dom.createElement('table') + rep.setAttribute('style', 'width: 100%;') + rep.setAttribute('about', obj.toNT()) + /* Not sure which looks best -- with or without. I think without + + var tr = rep.appendChild(document.createElement('tr')); + tr.appendChild(document.createTextNode( + obj.elements.length ? '(' + obj.elements.length+')' : '(none)')); + */ + for (var i = 0; i < obj.elements.length; i++) { + var elt = obj.elements[i] + var row = rep.appendChild(dom.createElement('tr')) + var numcell = row.appendChild(dom.createElement('td')) + numcell.setAttribute('style', 'margin: 0.2em; border: none; padding: 0; vertical-align: top;') + numcell.setAttribute('notSelectable', 'false') + numcell.setAttribute('about', obj.toNT()) + numcell.innerHTML = (i + 1) + ')' + row.appendChild(thisOutline.outlineObjectTD(elt)) + } + } else if (obj.termType === 'Graph') { + rep = panes.dataContentPane.statementsAsTables(obj.statements, dom) + rep.setAttribute('class', 'nestedFormula') + } else { + UI.log.error('Object ' + obj + ' has unknown term type: ' + obj.termType) + rep = dom.createTextNode('[unknownTermType:' + obj.termType + ']') + } // boring defaults. + UI.log.debug('contents: ' + rep.innerHTML) + return rep + } // boring_default + + function viewAsImage (obj) { + var img = UI.utils.AJARImage(obj.uri, UI.utils.label(obj), UI.utils.label(obj), dom) + img.setAttribute('class', 'outlineImage') + return img + } + + function viewAsMbox (obj) { + var anchor = dom.createElement('a') + // previous implementation assumed email address was Literal. fixed. + + // FOAF mboxs must NOT be literals -- must be mailto: URIs. + + var address = (obj.termType === 'NamedNode') ? obj.uri : obj.value // this way for now + if (!address) return viewAsBoringDefault(obj) + var index = address.indexOf('mailto:') + address = (index >= 0) ? address.slice(index + 7) : address + anchor.setAttribute('href', 'mailto:' + address) + anchor.appendChild(dom.createTextNode(address)) + return anchor + } + /* need to make unique calendar containers and names + * YAHOO.namespace(namespace) returns the namespace specified + * and creates it if it doesn't exist + * function 'uni' creates a unique namespace for a calendar and + * returns number ending + * ex: uni('cal') may create namespace YAHOO.cal1 and return 1 + * + * YAHOO.namespace('foo.bar') makes YAHOO.foo.bar defined as an object, + * which can then have properties + */ + /* + function uni (prefix) { + var n = counter() + var name = prefix + n + YAHOO.namespace(name) + return n + } + */ + // counter for calendar ids, + /* + var counter = (function () { + var n = 0 + return function () { + n += 1 + return n + } + }()) + */ // *note* those ending parens! I'm using function scope + /* + var renderHoliday = function (workingDate, cell) { + YAHOO.util.Dom.addClass(cell, 'holiday') + } + */ + /* toggles whether element is displayed + * if elt.getAttribute('display') returns null, + * it will be assigned 'block' + */ + /* + function toggle (eltname) { + var elt = dom.getElementById(eltname) + elt.style.display = (elt.style.display === 'none') ? 'block' : 'none' + } + */ + /* Example of calendar Id: cal1 + * 42 cells in one calendar. from top left counting, each table cell has + * ID: YAHOO.cal1_cell0 ... YAHOO.cal.1_cell41 + * name: YAHOO.cal1__2006_3_2 for anchor inside calendar cell + * of date 3/02/2006 + * + */ + /* unused + function VIEWAS_cal (obj) { + var prefix = 'cal' + var cal = prefix + uni(prefix) + + var containerId = cal + 'Container' + var table = dom.createElement('table') + table.setAttribute('style', 'width: 100%;') + + // create link to hide/show calendar + var a = dom.createElement('a') + // a.appendChild(document.createTextNode('[toggle]')) + a.innerHTML = 'mm-dd: ' + obj.value + '[toggle]' + // a.setAttribute('href',':toggle(''+containerId+'')'); + a.onclick = function () { + toggle(containerId) + } + table.appendChild(a) + + var dateArray = obj.value.split('-') + var m = dateArray[0] + var d = dateArray[1] + var yr = (dateArray.length > 2) ? dateArray[2] : (new Date()).getFullYear() + + // hack: calendar will be appended to divCal at first, but will + // be moved to new location + dom.getElementById('divCal').appendChild(table) + var div = table.appendChild(dom.createElement('DIV')) + div.setAttribute('id', containerId) + // default hide calendar + div.style.display = 'none' + div.setAttribute('tag', 'calendar') + YAHOO[cal] = new YAHOO.widget.Calendar('YAHOO.' + cal, containerId, m + '/' + yr) + + YAHOO[cal].addRenderer(m + '/' + d, renderHoliday) + + YAHOO[cal].render() + // document.childNodes.removeChild(table); + return table + } +*/ + // VIEWAS_cal ends + + this.createTabURI = function () { + dom.getElementById('UserURI').value = + dom.URL + '?uri=' + dom.getElementById('UserURI').value + } + + // a way to expose variables to UserInput without making them propeties/methods + this.UserInput.setSelected = setSelected + this.UserInput.deselectAll = deselectAll + this.UserInput.views = views + this.outlineExpand = outlineExpand + + if (UI.isExtension) { + window.addEventListener('unload', function () { + var tabStatusBar = gBrowser.ownerDocument.getElementById('tabulator-display') + tabStatusBar.label = '' + tabStatusBar.setAttribute('style', 'display:none') + }, true) + + gBrowser.mPanelContainer.addEventListener('select', function () { + var tabStatusBar = gBrowser.ownerDocument.getElementById('tabulator-display') + tabStatusBar.label = '' + tabStatusBar.setAttribute('style', 'display:none') + }, true) + } + + // this.panes = panes; // Allow external panes to register + + return this +} // END OF OUTLINE + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) + +/***/ }), + +/***/ "./node_modules/solid-panes/outline/outlineIcons.js": +/*!**********************************************************!*\ + !*** ./node_modules/solid-panes/outline/outlineIcons.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + + +// This is a system of tracking tooltip phrases used by the tabulator outliner + +var outlineIcons = module.exports = {} // was tabulator.Icon +var UI = __webpack_require__(/*! solid-ui */ "./node_modules/solid-ui/lib/index.js") + +outlineIcons.src = [] // collect the URIs of the icon filterColumns +outlineIcons.tooltips = [] // look up tool tips from URL + +/// /////////////////////// Common icons + +outlineIcons.src.icon_expand = UI.icons.originalIconBase + 'tbl-expand-trans.png' +outlineIcons.src.icon_more = UI.icons.originalIconBase + 'tbl-more-trans.png' // looks just like expand, diff semantics +// Icon.src.icon_expand = UI.icons.originalIconBase + 'clean/Icon.src.Icon.src.icon_expand.png'; +outlineIcons.src.icon_collapse = UI.icons.originalIconBase + 'tbl-collapse.png' +outlineIcons.src.icon_internals = UI.icons.originalIconBase + 'tango/22-emblem-system.png' +outlineIcons.src.icon_instances = UI.icons.originalIconBase + 'tango/22-folder-open.png' +outlineIcons.src.icon_foaf = UI.icons.originalIconBase + 'foaf/foafTiny.gif' +outlineIcons.src.icon_social = UI.icons.originalIconBase + 'social/social.gif' +outlineIcons.src.icon_mb = UI.icons.originalIconBase + 'microblog/microblog.png' +outlineIcons.src.icon_shrink = UI.icons.originalIconBase + 'tbl-shrink.png' // shrink list back up +outlineIcons.src.icon_rows = UI.icons.originalIconBase + 'tbl-rows.png' +// Icon.src.Icon.src.icon_columns = 'icons/tbl-columns.png'; + +// Status balls: + +outlineIcons.src.icon_unrequested = UI.icons.originalIconBase + '16dot-blue.gif' +// outlineIcons.src.Icon.src.icon_parse = UI.icons.originalIconBase + '18x18-white.gif'; +outlineIcons.src.icon_fetched = UI.icons.originalIconBase + '16dot-green.gif' +outlineIcons.src.icon_failed = UI.icons.originalIconBase + '16dot-red.gif' +outlineIcons.src.icon_requested = UI.icons.originalIconBase + '16dot-yellow.gif' +// Icon.src.icon_maximize = UI.icons.originalIconBase + 'clean/Icon.src.Icon.src.icon_con_max.png'; + +// Panes: +outlineIcons.src.icon_CVPane = UI.icons.originalIconBase + 'CV.png' +outlineIcons.src.icon_defaultPane = UI.icons.originalIconBase + 'about.png' +outlineIcons.src.icon_visit = UI.icons.originalIconBase + 'tango/22-text-x-generic.png' +outlineIcons.src.icon_dataContents = UI.icons.originalIconBase + 'rdf_flyer.24.gif' // @@ Bad .. find better +outlineIcons.src.icon_n3Pane = UI.icons.originalIconBase + 'w3c/n3_smaller.png' // @@ Bad .. find better +outlineIcons.src.icon_RDFXMLPane = UI.icons.originalIconBase + '22-text-xml4.png' // @@ Bad .. find better +outlineIcons.src.icon_imageContents = UI.icons.originalIconBase + 'tango/22-image-x-generic.png' +outlineIcons.src.icon_airPane = UI.icons.originalIconBase + '1pt5a.gif' +outlineIcons.src.icon_LawPane = UI.icons.originalIconBase + 'law.jpg' +outlineIcons.src.icon_pushbackPane = UI.icons.originalIconBase + 'pb-logo.png' + +// For photo albums (By albert08@csail.mit.edu) +outlineIcons.src.icon_photoPane = UI.icons.originalIconBase + 'photo_small.png' +outlineIcons.src.icon_tagPane = UI.icons.originalIconBase + 'tag_small.png' +outlineIcons.src.icon_TinyTag = UI.icons.originalIconBase + 'tag_tiny.png' +outlineIcons.src.icon_photoBegin = UI.icons.originalIconBase + 'photo_begin.png' +outlineIcons.src.icon_photoNext = UI.icons.originalIconBase + 'photo_next.png' +outlineIcons.src.icon_photoBack = UI.icons.originalIconBase + 'photo_back.png' +outlineIcons.src.icon_photoEnd = UI.icons.originalIconBase + 'photo_end.png' +outlineIcons.src.icon_photoImportPane = UI.icons.originalIconBase + 'flickr_small.png' +// Icon.src.icon_CloseButton = UI.icons.originalIconBase + 'close_tiny.png'; +// Icon.src.icon_AddButton = UI.icons.originalIconBase + 'addphoto_tiny.png'; + +// For that one we need a document with grid lines. Make data-x-generix maybe + +// actions for sources; +outlineIcons.src.icon_retract = UI.icons.originalIconBase + 'retract.gif' +outlineIcons.src.icon_refresh = UI.icons.originalIconBase + 'refresh.gif' +outlineIcons.src.icon_optoff = UI.icons.originalIconBase + 'optional_off.PNG' +outlineIcons.src.icon_opton = UI.icons.originalIconBase + 'optional_on.PNG' +outlineIcons.src.icon_map = UI.icons.originalIconBase + 'compassrose.png' +outlineIcons.src.icon_retracted = outlineIcons.src.icon_unrequested +outlineIcons.src.icon_retracted = outlineIcons.src.icon_unrequested + +outlineIcons.src.icon_time = UI.icons.originalIconBase + 'icons/Wclocksmall.png' + +// Within outline mode: + +outlineIcons.src.icon_telephone = UI.icons.originalIconBase + 'silk/telephone.png' +outlineIcons.src.icon_time = UI.icons.originalIconBase + 'Wclocksmall.png' +outlineIcons.src.icon_remove_node = UI.icons.originalIconBase + 'tbl-x-small.png' +outlineIcons.src.icon_add_triple = UI.icons.originalIconBase + 'tango/22-list-add.png' +outlineIcons.src.icon_add_new_triple = UI.icons.originalIconBase + 'tango/22-list-add-new.png' +outlineIcons.src.icon_show_choices = UI.icons.originalIconBase + 'userinput_show_choices_temp.png' // looks just like collapse, diff smmantics + +// Inline Justification +outlineIcons.src.icon_display_reasons = UI.icons.originalIconBase + 'tango/22-help-browser.png' +outlineIcons.tooltips[outlineIcons.src.icon_display_reasons] = 'Display explanations' + +// Other tooltips +outlineIcons.tooltips[outlineIcons.src.icon_add_triple] = 'Add more' +outlineIcons.tooltips[outlineIcons.src.icon_add_new_triple] = 'Add one' +outlineIcons.tooltips[outlineIcons.src.icon_remove_node] = 'Remove' +outlineIcons.tooltips[outlineIcons.src.icon_expand] = 'View details.' +outlineIcons.tooltips[outlineIcons.src.icon_collapse] = 'Hide details.' +outlineIcons.tooltips[outlineIcons.src.icon_shrink] = 'Shrink list.' +outlineIcons.tooltips[outlineIcons.src.icon_internals] = 'Under the hood' +outlineIcons.tooltips[outlineIcons.src.icon_instances] = 'List' +outlineIcons.tooltips[outlineIcons.src.icon_foaf] = 'Friends' +outlineIcons.tooltips[outlineIcons.src.icon_rows] = 'Make a table of data like this' +// Note the string '[Tt]his resource' can be replaced with an actual URI by the code +outlineIcons.tooltips[outlineIcons.src.icon_unrequested] = 'Fetch this.' +outlineIcons.tooltips[outlineIcons.src.icon_fetched] = 'Fetched successfully.' +outlineIcons.tooltips[outlineIcons.src.icon_failed] = 'Failed to load. Click to retry.' +outlineIcons.tooltips[outlineIcons.src.icon_requested] = 'This is being fetched. Please wait...' + +outlineIcons.tooltips[outlineIcons.src.icon_visit] = 'View document' +outlineIcons.tooltips[outlineIcons.src.icon_retract] = 'Remove this source and all its data from tabulator.' +outlineIcons.tooltips[outlineIcons.src.icon_refresh] = 'Refresh this source and reload its triples.' + +/// ////////////////////////////// End comon area + +outlineIcons.OutlinerIcon = function (src, width, alt, tooltip, filter) { + this.src = src + this.alt = alt + this.width = width + this.tooltip = tooltip + this.filter = filter + // filter: RDFStatement,('subj'|'pred'|'obj')->boolean, inverse->boolean (whether the statement is an inverse). + // Filter on whether to show this icon for a term; optional property. + // If filter is not passed, this icon will never AUTOMATICALLY be shown. + // You can show it with termWidget.addIcon + return this +} + +outlineIcons.termWidgets = {} +outlineIcons.termWidgets.optOn = new outlineIcons.OutlinerIcon(outlineIcons.src.icon_opton, 20, 'opt on', 'Make this branch of your query mandatory.') +outlineIcons.termWidgets.optOff = new outlineIcons.OutlinerIcon(outlineIcons.src.icon_optoff, 20, 'opt off', 'Make this branch of your query optional.') +outlineIcons.termWidgets.addTri = new outlineIcons.OutlinerIcon(outlineIcons.src.icon_add_triple, 18, 'add tri', 'Add one') +// Ideally: "New "+label(subject) + + +/***/ }), + +/***/ "./node_modules/solid-panes/outline/queryByExample.js": +/*!************************************************************!*\ + !*** ./node_modules/solid-panes/outline/queryByExample.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +// The query-by-example functionality in the tabulator +// was the ability to expore a bit of the web in outline mode, +// select a ceratain set of fields in the tree, +// then pres "find all" which would then generte a SPARQL query +// to find all other places which had the same pattern. +// Fields could be optional by pressing th ewhite optoional button + +var UI = __webpack_require__(/*! solid-ui */ "./node_modules/solid-ui/lib/index.js") + +module.exports = { + makeQueryRow, + QuerySource, + viewAndSaveQuery // Main function to generate and use the query +} + +var optionalSubqueriesIndex = [] + +function predParentOf (node) { + var n = node + while (true) { + if (n.getAttribute('predTR')) { + return n + } else if (n.previousSibling && n.previousSibling.nodeName === 'TR') { + n = n.previousSibling + } else { + console.log('Could not find predParent') + return node + } + } +} + +function makeQueryRow (q, tr, constraint) { + var kb = UI.store + // predtr = predParentOf(tr) + // var nodes = tr.childNodes + // var n = tr.childNodes.length + var inverse = tr.AJAR_inverse + // var hasVar = 0 + let pattern, v, parentVar, level, pat + + function makeRDFStatement (freeVar, parent) { + if (inverse) { + return new UI.rdf.Statement(freeVar, st.predicate, parent) + } else { + return new UI.rdf.Statement(parent, st.predicate, freeVar) + } + } + + var optionalSubqueryIndex = null + + for (level = tr.parentNode; level; level = level.parentNode) { + if (typeof level.AJAR_statement !== 'undefined') { // level.AJAR_statement + level.setAttribute('bla', level.AJAR_statement) // @@? -timbl + // UI.log.debug("Parent TR statement="+level.AJAR_statement + ", var=" + level.AJAR_variable) + /* for(let c=0;c= 0) { + UI.log.info(' We have a predicate') + makeQueryRow(q, tr) + } + if (sel.getAttribute('class').indexOf('obj') >= 0) { + UI.log.info(' We have an object') + makeQueryRow(q, tr, true) + } + } + qs.addQuery(q) + + function resetOutliner (pat) { + var n = pat.statements.length + var pattern, tr + for (let i = 0; i < n; i++) { + pattern = pat.statements[i] + tr = pattern.tr + // UI.log.debug('tr: ' + tr.AJAR_statement); + if (typeof tr !== 'undefined') { + tr.AJAR_pattern = null // TODO: is this == to whats in current version? + tr.AJAR_variable = null + } + } + for (let x in pat.optional) { resetOutliner(pat.optional[x]) } + } + resetOutliner(q.pat) + // NextVariable=0; + return q +} // saveQuery + +// When the user asks for all list of all matching parts of the data +// +function viewAndSaveQuery (outline, selection) { + var qs = outline.qs + UI.log.info('outline.doucment is now ' + outline.document.location) + var q = saveQuery(selection, qs) + /* + if (tabulator.isExtension) { + // tabulator.drawInBestView(q) + } else + */ + + for (let i = 0; i < qs.listeners.length; i++) { + qs.listeners[i].getActiveView().view.drawQuery(q) + qs.listeners[i].updateQueryControls(qs.listeners[i].getActiveView()) + } +} + +/** + * The QuerySource object stores a set of listeners and a set of queries. + * It keeps the listeners aware of those queries that the source currently + * contains, and it is then up to the listeners to decide what to do with + * those queries in terms of displays. + * Not used 2010-08 -- TimBL + * @class QuerySource + * @author jambo + */ + +function QuerySource () { + /** + * stores all of the queries currently held by this source, + * indexed by ID number. + */ + this.queries = [] + /** + * stores the listeners for a query object. + * @see TabbedContainer + */ + this.listeners = [] + + /** + * add a Query object to the query source--It will be given an ID number + * and a name, if it doesn't already have one. This subsequently adds the + * query to all of the listeners the QuerySource knows about. + */ + this.addQuery = function (q) { + var i + if (q.name === null || q.name === '') { + q.name = 'Query #' + (this.queries.length + 1) + } + q.id = this.queries.length + this.queries.push(q) + for (i = 0; i < this.listeners.length; i++) { + if (this.listeners[i] !== null) { + this.listeners[i].addQuery(q) + } + } + } + + /** + * Remove a Query object from the source. Tells all listeners to also + * remove the query. + */ + this.removeQuery = function (q) { + var i + for (i = 0; i < this.listeners.length; i++) { + if (this.listeners[i] !== null) { + this.listeners[i].removeQuery(q) + } + } + if (this.queries[q.id] !== null) { + delete this.queries[q.id] + } + } + + /** + * adds a "Listener" to this QuerySource - that is, an object + * which is capable of both adding and removing queries. + * Currently, only the TabbedContainer class is added. + * also puts all current queries into the listener to be used. + */ + this.addListener = function (listener) { + var i + this.listeners.push(listener) + for (i = 0; i < this.queries.length; i++) { + if (this.queries[i] !== null) { + listener.addQuery(this.queries[i]) + } + } + } + /** + * removes listener from the array of listeners, if it exists! Also takes + * all of the queries from this source out of the listener. + */ + this.removeListener = function (listener) { + var i + for (i = 0; i < this.queries.length; i++) { + if (this.queries[i] !== null) { + listener.removeQuery(this.queries[i]) + } + } + + for (i = 0; i < this.listeners.length; i++) { + if (this.listeners[i] === listener) { + delete this.listeners[i] + } + } + } +} + + +/***/ }), + +/***/ "./node_modules/solid-panes/outline/userInput.js": +/*!*******************************************************!*\ + !*** ./node_modules/solid-panes/outline/userInput.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +// Original author: kennyluck +// +// Kenny's Notes: +/* places to generate SPARQL update: clearInputAndSave() pasteFromClipboard()->insertTermTo(); + undetermined statement generated formUndetStat() + ->fillInRequest() + ontological issues + temporarily using the tabont namespace + clipboard: 'predicates' 'objects' 'all'(internal) + request: 'from' 'to' 'message' 'Request' +*/ + +var UI = __webpack_require__(/*! solid-ui */ "./node_modules/solid-ui/lib/index.js") +var panes = __webpack_require__(/*! ../paneRegistry */ "./node_modules/solid-panes/paneRegistry.js") + +var UserInputFormula // Formula to store references of user's work +var TempFormula // Formula to store incomplete tripes (Requests), + // temporarily disjoint with kb to avoid bugs + +module.exports = function UserInput (outline) { + var kb = UI.store + + var myDocument = outline.document // is this ok? + // UI.log.warn("myDocument when it's set is "+myDocument.location); + this.menuId = 'predicateMenu1' + + /* //namespace information, as a subgraph of the knowledge base, is built in showMenu + this.namespaces={}; + + for (var name in UI.ns) { + this.namespaces[name] = UI.ns[name]('').uri; + } + var NameSpaces=this.namespaces; + */ + + // hq, print and trim functions + var qp = function qp (str) { + console.log(str + '\n') + } + + // var tabont = UI.ns.tabont; + // var foaf = UI.ns.foaf + const rdf = UI.ns.rdf + // var RDFS = UI.ns.rdfs + // var OWL = UI.ns.owl + // var dc = UI.ns.dc + // var rss = UI.ns.rss + // var contact = UI.ns.contact + // var mo = UI.ns.mo + var bibo = UI.rdf.Namespace('http://purl.org/ontology/bibo/') // hql for pubsPane + // var dcterms = UI.rdf.Namespace('http://purl.org/dc/terms/') + var dcelems = UI.rdf.Namespace('http://purl.org/dc/elements/1.1/') + + var movedArrow = false // hq + + // var updateService=new updateCenter(kb); + + if (!UserInputFormula) { + UserInputFormula = new UI.rdf.Formula() + UserInputFormula.superFormula = kb + // UserInputFormula.registerFormula("Your Work"); + } + if (!TempFormula) TempFormula = new UI.rdf.IndexedFormula() + // Use RDFIndexedFormula so add returns the statement + TempFormula.name = 'TempFormula' + if (!UI.store.updater) UI.store.updater = new UI.rdf.UpdateManager(kb) + + return { + + // updateService: updateService, + + sparqler: UI.store.updater, + lastModified: null, // the last being modified, .isNew indicates whether it's a new input + lastModifiedStat: null, // the last statement being modified + statIsInverse: false, // whether the statement is an inverse + +/** + * Triggering Events: event entry points, should be called only from outline.js but not anywhere else + * in userinput.js, should be as short as possible, function names to be discussed + */ + + // Called when the blue cross under the default pane is clicked. + // Add a new row to a property list ( P and O) + addNewPredicateObject: function addNewPredicateObject (e) { + if (UI.utils.getTarget(e).className !== 'bottom-border-active') return + var This = outline.UserInput + var target = UI.utils.getTarget(e) + + // UI.log.warn(ancestor(target,'TABLE').textContent); + var insertTr = myDocument.createElement('tr') + UI.utils.ancestor(target, 'DIV').insertBefore(insertTr, UI.utils.ancestor(target, 'TR')) + var tempTr = myDocument.createElement('tr') + var reqTerm1 = This.generateRequest('(TBD)', tempTr, true) + insertTr.appendChild(tempTr.firstChild) + var reqTerm2 = This.generateRequest('(Enter text or drag an object onto this field)', tempTr, false) + insertTr.appendChild(tempTr.firstChild) + // there should be an elegant way of doing this + + // Take the why of the last TR and write to it. + if (UI.utils.ancestor(target, 'TR').previousSibling && // there is a previous predicate/object line + UI.utils.ancestor(target, 'TR').previousSibling.AJAR_statement) { + let preStat = UI.utils.ancestor(target, 'TR').previousSibling.AJAR_statement + // This should always(?) input a non-inverse statement + This.formUndetStat(insertTr, preStat.subject, reqTerm1, reqTerm2, preStat.why, false) + } else { // no previous row: write to the document defining the subject + var subject = UI.utils.getAbout(kb, UI.utils.ancestor(target.parentNode.parentNode, 'TD')) + var doc = kb.sym(UI.rdf.Util.uri.docpart(subject.uri)) + This.formUndetStat(insertTr, subject, reqTerm1, reqTerm2, doc, false) + } + + outline.walk('moveTo', insertTr.firstChild) + UI.log.info('addNewPredicateObject: selection = ' + outline.getSelection().map(function (item) { return item.textContent }).join(', ')) + this.startFillInText(outline.getSelection()[0]) + }, + + // Called when a blue cross on a predicate is clicked + // tr.AJAR_inverse stores whether the clicked predicate is an inverse one + // tr.AJAR_statement (an incomplete statement in TempFormula) stores the destination(why), now + // determined by the preceding one (is this good?) + addNewObject: function addNewObject (e) { + var predicateTd = UI.utils.getTarget(e).parentNode.parentNode + // var predicateTerm = UI.utils.getAbout(kb, predicateTd) + var isInverse = predicateTd.parentNode.AJAR_inverse + // var titleTerm=UI.utils.getAbout(kb,UI.utils.ancestor(predicateTd.parentNode,'TD')); + // set pseudo lastModifiedStat here + this.lastModifiedStat = predicateTd.parentNode.AJAR_statement + + var insertTr = this.appendToPredicate(predicateTd) + var reqTerm = this.generateRequest(' (Error) ', insertTr, false) + let preStat = insertTr.previousSibling.AJAR_statement + if (!isInverse) { this.formUndetStat(insertTr, preStat.subject, preStat.predicate, reqTerm, preStat.why, false) } else { this.formUndetStat(insertTr, reqTerm, preStat.predicate, preStat.object, preStat.why, true) } + + outline.walk('moveTo', insertTr.lastChild) + this.startFillInText(insertTr.lastChild) + // this.statIsInverse=false; + }, + + // Called when delete is pressed + Delete: function Delete (selectedTd) { + this.deleteTriple(selectedTd, false) + }, + // Called when enter is pressed + Enter: function Enter (selectedTd) { + this.literalModification(selectedTd) + }, + // Called when a selected cell is clicked again + Click: function Click (e) { + var target = UI.utils.getTarget(e) + if (UI.utils.getTerm(target).termType !== 'Literal') return + this.literalModification(target) + // this prevents the generated inputbox to be clicked again + e.preventDefault() + e.stopPropagation() + }, + // Called when paste is called (Ctrl+v) + pasteFromClipboard: function pasteFromClipboard (address, selectedTd) { + function termFrom (fromCode) { + var term = outline.clipboard[fromCode].shift() + if (term === null) { + UI.log.warn('no more element in clipboard!') + return + } + switch (fromCode) { + case 'predicates': + case 'objects': + var allArray = outline.clipboard.all + for (var i = 0; true; i++) { + if (term.sameTerm(allArray[i])) { + allArray.splice(i, 1) + break + } + } + break + case 'all': + throw new Error('hostorical code not understood - what is theCollection?') + /* + var isObject = term.sameTerm(theCollection('objects').elements[0]) + isObject ? outline.clipboard.objecs.shift() : outline.clipboard.predicates.shift() // drop the corresponding term + return [term, isObject] + break + */ + } + return term + } + var term + switch (selectedTd.className) { + case 'undetermined selected': + term = selectedTd.nextSibling ? termFrom('predicates') : termFrom('objects') + if (!term) return + break + case 'pred selected': // paste objects into this predicate + term = termFrom('objects') + if (!term) return + break + case 'selected': // header , undetermined generated + var returnArray = termFrom('all') + if (!returnArray) return + term = returnArray[0] + this.insertTermTo(selectedTd, term, returnArray[1]) + return + } + this.insertTermTo(selectedTd, term) + }, + +/** + * Intermediate Processing: + */ + + // a general entry point for any event except Click&Enter(goes to literalModification) + // do a little inference to pick the right inputbox + startFillInText: function startFillInText (selectedTd) { + switch (this.whatSortOfEditCell(selectedTd)) { + case 'DatatypeProperty-like': + // this.clearMenu(); + // selectedTd.className=''; + UI.utils.emptyNode(selectedTd) + this.lastModified = this.createInputBoxIn(selectedTd, ' (Please Input) ') + this.lastModified.isNew = false + + this.lastModified.select() + break + case 'predicate': + // the goal is to bring back all the menus (with autocomplete functionality + // this.performAutoCompleteEdit(selectedTd,['PredicateAutoComplete', + // this.choiceQuery('SuggestPredicateByDomain')]); + this.performAutoCompleteEdit(selectedTd, 'PredicateAutoComplete') + break + case 'ObjectProperty-like': + case 'no-idea': + // menu should be either function that + this.performAutoCompleteEdit(selectedTd, 'GeneralAutoComplete') + + /* + // + emptyNode(selectedTd); + this.lastModified=this.createInputBoxIn(selectedTd,""); + this.lastModified.select(); + this.lastModified.addEventListener('keypress',this.AutoComplete,false); + //this pops up the autocomplete menu + this.AutoComplete(1); + // + */ + } + }, + + literalModification: function literalModification (selectedTd) { + UI.log.debug('entering literal Modification with ' + selectedTd + selectedTd.textContent) + // var This=outline.UserInput; + if (selectedTd.className.indexOf(' pendingedit') !== -1) { + UI.log.warn('The node you attempted to edit has a request still pending.\n' + + 'Please wait for the request to finish (the text will turn black)\n' + + 'before editing this node again.') + return true + } + + var target = selectedTd + var about = this.getStatementAbout(target) // timbl - to avoid alert from random clicks + if (!about) return + try { + var obj = UI.utils.getTerm(target) + var trNode = UI.utils.ancestor(target, 'TR') + } catch (e) { + UI.log.warn('userinput.js: ' + e + UI.utils.getAbout(kb, selectedTd)) + UI.log.error(target + ' getStatement Error:' + e) + } + + try { var tdNode = trNode.lastChild } catch (e) { UI.log.error(e + '@' + target) } + // seems to be a event handling problem of firefox3 + /* + if (e.type!='keypress'&&(selectedTd.className=='undetermined selected'||selectedTd.className=='undetermined')){ + this.Refill(e,selectedTd); + return; + } + */ + // ignore clicking trNode.firstChild (be careful for
or ) + // if (e.type!='keypress'&&target!=tdNode && UI.utils.ancestor(target,'TD')!=tdNode) return; + + if (obj.termType === 'Literal') { + tdNode.removeChild(tdNode.firstChild) // remove the text + + if (obj.value.match('\n')) { // match a line feed and require + +
+ + + +
+
+ + +
+ + +
+ + + + + + + + + + + + + + + +
+
+

What is a WebID?

+

+ A WebID is a URL for you. It allows you to set up a reusable identity + and a profile, with friends, pictures and all kinds of things. +

+

+ Unlike social networks, with WebID you reuse your identity and personal + data in a decentralized, privacy-friendly way, across multiple applications + and services on the Web. It works like having an account on a social + networking site, but it isn't restricted to just that site. It is very + open because the information can connect to other people, apps, projects + and so on, without everyone having to join the same social networking site. + (more information) +

+

+ When you create a WebID account, you may also get storage space on the + selected server. The amount of available space can vary from server to + server. Additionally, a common list of workspaces (i.e. dedicated folders) + maye be created by default, such as Public, Private, + Family, Work, etc. +

+ +
+
+ + + + + + + + + + + diff --git a/common/plume/js/dropdown.js b/common/plume/js/dropdown.js new file mode 100644 index 000000000..3172361b1 --- /dev/null +++ b/common/plume/js/dropdown.js @@ -0,0 +1,172 @@ +(function (window, document) { + 'use strict'; + + // Enable drop-down menus in Pure + // Inspired by YUI3 gallery-simple-menu by Julien LeComte + // [https://github.com/yui/yui3-gallery/blob/master/src/gallery-simple-menu/js/simple-menu.js] + + function PureDropdown(dropdownParent) { + + var PREFIX = 'pure-', + ACTIVE_CLASS_NAME = PREFIX + 'menu-active', + ARIA_ROLE = 'role', + ARIA_HIDDEN = 'aria-hidden', + MENU_OPEN = 0, + MENU_CLOSED = 1, + MENU_PARENT_CLASS_NAME = 'pure-menu-has-children', + MENU_ACTIVE_SELECTOR = '.pure-menu-active', + MENU_LINK_SELECTOR = '.pure-menu-link', + MENU_SELECTOR = '.pure-menu-children', + DISMISS_EVENT = (window.hasOwnProperty && + window.hasOwnProperty('ontouchstart')) ? + 'touchstart' : 'mousedown', + + ARROW_KEYS_ENABLED = true, + + ddm = this; // drop down menu + + this._state = MENU_CLOSED; + + this.show = function () { + if (this._state !== MENU_OPEN) { + this._dropdownParent.classList.add(ACTIVE_CLASS_NAME); + this._menu.setAttribute(ARIA_HIDDEN, false); + this._state = MENU_OPEN; + } + }; + + this.hide = function () { + if (this._state !== MENU_CLOSED) { + this._dropdownParent.classList.remove(ACTIVE_CLASS_NAME); + this._menu.setAttribute(ARIA_HIDDEN, true); + this._link.focus(); + this._state = MENU_CLOSED; + } + }; + + this.toggle = function () { + this[this._state === MENU_CLOSED ? 'show' : 'hide'](); + }; + + this.halt = function (e) { + e.stopPropagation(); + e.preventDefault(); + }; + + this._dropdownParent = dropdownParent; + this._link = this._dropdownParent.querySelector(MENU_LINK_SELECTOR); + this._menu = this._dropdownParent.querySelector(MENU_SELECTOR); + this._firstMenuLink = this._menu.querySelector(MENU_LINK_SELECTOR); + + // Set ARIA attributes + this._link.setAttribute('aria-haspopup', 'true'); + this._menu.setAttribute(ARIA_ROLE, 'menu'); + this._menu.setAttribute('aria-labelledby', this._link.getAttribute('id')); + this._menu.setAttribute('aria-hidden', 'true'); + [].forEach.call( + this._menu.querySelectorAll('li'), + function(el){ + el.setAttribute(ARIA_ROLE, 'presentation'); + } + ); + [].forEach.call( + this._menu.querySelectorAll('a'), + function(el){ + el.setAttribute(ARIA_ROLE, 'menuitem'); + } + ); + + // Toggle on click + this._link.addEventListener('click', function (e) { + e.stopPropagation(); + e.preventDefault(); + ddm.toggle(); + }); + + // Keyboard navigation + document.addEventListener('keydown', function (e) { + var currentLink, + previousSibling, + nextSibling, + previousLink, + nextLink; + + // if the menu isn't active, ignore + if (ddm._state !== MENU_OPEN) { + return; + } + + // if the menu is the parent of an open, active submenu, ignore + if (ddm._menu.querySelector(MENU_ACTIVE_SELECTOR)) { + return; + } + + currentLink = ddm._menu.querySelector(':focus'); + + // Dismiss an open menu on ESC + if (e.keyCode === 27) { + /* Esc */ + ddm.halt(e); + ddm.hide(); + } + // Go to the next link on down arrow + else if (ARROW_KEYS_ENABLED && e.keyCode === 40) { + /* Down arrow */ + ddm.halt(e); + // get the nextSibling (an LI) of the current link's LI + nextSibling = (currentLink) ? currentLink.parentNode.nextSibling : null; + // if the nextSibling is a text node (not an element), go to the next one + while (nextSibling && nextSibling.nodeType !== 1) { + nextSibling = nextSibling.nextSibling; + } + nextLink = (nextSibling) ? nextSibling.querySelector('.pure-menu-link') : null; + // if there is no currently focused link, focus the first one + if (!currentLink) { + ddm._menu.querySelector('.pure-menu-link').focus(); + } + else if (nextLink) { + nextLink.focus(); + } + } + // Go to the previous link on up arrow + else if (ARROW_KEYS_ENABLED && e.keyCode === 38) { + /* Up arrow */ + ddm.halt(e); + // get the currently focused link + previousSibling = (currentLink) ? currentLink.parentNode.previousSibling : null; + while (previousSibling && previousSibling.nodeType !== 1) { + previousSibling = previousSibling.previousSibling; + } + previousLink = (previousSibling) ? previousSibling.querySelector('.pure-menu-link') : null; + // if there is no currently focused link, focus the last link + if (!currentLink) { + ddm._menu.querySelector('.pure-menu-item:last-child .pure-menu-link').focus(); + } + // else if there is a previous item, go to the previous item + else if (previousLink) { + previousLink.focus(); + } + } + }); + + // Dismiss an open menu on outside event + document.addEventListener(DISMISS_EVENT, function (e) { + var target = e.target; + if (target !== ddm._link && !ddm._menu.contains(target)) { + ddm.hide(); + ddm._link.blur(); + } + }); + + } + + function initDropdowns() { + var dropdownParents = document.querySelectorAll('.pure-menu-has-children'); + for (var i = 0; i < dropdownParents.length; i++) { + var ddm = new PureDropdown(dropdownParents[i]); + } + } + + initDropdowns(); + +}(this, this.document)); \ No newline at end of file diff --git a/common/plume/js/moment.min.js b/common/plume/js/moment.min.js new file mode 100644 index 000000000..8e6866af0 --- /dev/null +++ b/common/plume/js/moment.min.js @@ -0,0 +1,7 @@ +//! moment.js +//! version : 2.10.6 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return Hc.apply(null,arguments)}function b(a){Hc=a}function c(a){return"[object Array]"===Object.prototype.toString.call(a)}function d(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function e(a,b){var c,d=[];for(c=0;c0)for(c in Jc)d=Jc[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function n(b){m(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),Kc===!1&&(Kc=!0,a.updateOffset(this),Kc=!1)}function o(a){return a instanceof n||null!=a&&null!=a._isAMomentObject}function p(a){return 0>a?Math.ceil(a):Math.floor(a)}function q(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=p(b)),c}function r(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&q(a[d])!==q(b[d]))&&g++;return g+f}function s(){}function t(a){return a?a.toLowerCase().replace("_","-"):a}function u(a){for(var b,c,d,e,f=0;f0;){if(d=v(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&r(e,c,!0)>=b-1)break;b--}f++}return null}function v(a){var b=null;if(!Lc[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=Ic._abbr,require("./locale/"+a),w(b)}catch(c){}return Lc[a]}function w(a,b){var c;return a&&(c="undefined"==typeof b?y(a):x(a,b),c&&(Ic=c)),Ic._abbr}function x(a,b){return null!==b?(b.abbr=a,Lc[a]=Lc[a]||new s,Lc[a].set(b),w(a),Lc[a]):(delete Lc[a],null)}function y(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return Ic;if(!c(a)){if(b=v(a))return b;a=[a]}return u(a)}function z(a,b){var c=a.toLowerCase();Mc[c]=Mc[c+"s"]=Mc[b]=a}function A(a){return"string"==typeof a?Mc[a]||Mc[a.toLowerCase()]:void 0}function B(a){var b,c,d={};for(c in a)f(a,c)&&(b=A(c),b&&(d[b]=a[c]));return d}function C(b,c){return function(d){return null!=d?(E(this,b,d),a.updateOffset(this,c),this):D(this,b)}}function D(a,b){return a._d["get"+(a._isUTC?"UTC":"")+b]()}function E(a,b,c){return a._d["set"+(a._isUTC?"UTC":"")+b](c)}function F(a,b){var c;if("object"==typeof a)for(c in a)this.set(c,a[c]);else if(a=A(a),"function"==typeof this[a])return this[a](b);return this}function G(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function H(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Qc[a]=e),b&&(Qc[b[0]]=function(){return G(e.apply(this,arguments),b[1],b[2])}),c&&(Qc[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function I(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function J(a){var b,c,d=a.match(Nc);for(b=0,c=d.length;c>b;b++)Qc[d[b]]?d[b]=Qc[d[b]]:d[b]=I(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function K(a,b){return a.isValid()?(b=L(b,a.localeData()),Pc[b]=Pc[b]||J(b),Pc[b](a)):a.localeData().invalidDate()}function L(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Oc.lastIndex=0;d>=0&&Oc.test(a);)a=a.replace(Oc,c),Oc.lastIndex=0,d-=1;return a}function M(a){return"function"==typeof a&&"[object Function]"===Object.prototype.toString.call(a)}function N(a,b,c){dd[a]=M(b)?b:function(a){return a&&c?c:b}}function O(a,b){return f(dd,a)?dd[a](b._strict,b._locale):new RegExp(P(a))}function P(a){return a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Q(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),"number"==typeof b&&(d=function(a,c){c[b]=q(a)}),c=0;cd;d++){if(e=h([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function X(a,b){var c;return"string"==typeof b&&(b=a.localeData().monthsParse(b),"number"!=typeof b)?a:(c=Math.min(a.date(),T(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a)}function Y(b){return null!=b?(X(this,b),a.updateOffset(this,!0),this):D(this,"Month")}function Z(){return T(this.year(),this.month())}function $(a){var b,c=a._a;return c&&-2===j(a).overflow&&(b=c[gd]<0||c[gd]>11?gd:c[hd]<1||c[hd]>T(c[fd],c[gd])?hd:c[id]<0||c[id]>24||24===c[id]&&(0!==c[jd]||0!==c[kd]||0!==c[ld])?id:c[jd]<0||c[jd]>59?jd:c[kd]<0||c[kd]>59?kd:c[ld]<0||c[ld]>999?ld:-1,j(a)._overflowDayOfYear&&(fd>b||b>hd)&&(b=hd),j(a).overflow=b),a}function _(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function aa(a,b){var c=!0;return g(function(){return c&&(_(a+"\n"+(new Error).stack),c=!1),b.apply(this,arguments)},b)}function ba(a,b){od[a]||(_(b),od[a]=!0)}function ca(a){var b,c,d=a._i,e=pd.exec(d);if(e){for(j(a).iso=!0,b=0,c=qd.length;c>b;b++)if(qd[b][1].exec(d)){a._f=qd[b][0];break}for(b=0,c=rd.length;c>b;b++)if(rd[b][1].exec(d)){a._f+=(e[6]||" ")+rd[b][0];break}d.match(ad)&&(a._f+="Z"),va(a)}else a._isValid=!1}function da(b){var c=sd.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(ca(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}function ea(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function fa(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function ga(a){return ha(a)?366:365}function ha(a){return a%4===0&&a%100!==0||a%400===0}function ia(){return ha(this.year())}function ja(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=Da(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function ka(a){return ja(a,this._week.dow,this._week.doy).week}function la(){return this._week.dow}function ma(){return this._week.doy}function na(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function oa(a){var b=ja(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function pa(a,b,c,d,e){var f,g=6+e-d,h=fa(a,0,1+g),i=h.getUTCDay();return e>i&&(i+=7),c=null!=c?1*c:e,f=1+g+7*(b-1)-i+c,{year:f>0?a:a-1,dayOfYear:f>0?f:ga(a-1)+f}}function qa(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function ra(a,b,c){return null!=a?a:null!=b?b:c}function sa(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function ta(a){var b,c,d,e,f=[];if(!a._d){for(d=sa(a),a._w&&null==a._a[hd]&&null==a._a[gd]&&ua(a),a._dayOfYear&&(e=ra(a._a[fd],d[fd]),a._dayOfYear>ga(e)&&(j(a)._overflowDayOfYear=!0),c=fa(e,0,a._dayOfYear),a._a[gd]=c.getUTCMonth(),a._a[hd]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[id]&&0===a._a[jd]&&0===a._a[kd]&&0===a._a[ld]&&(a._nextDay=!0,a._a[id]=0),a._d=(a._useUTC?fa:ea).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[id]=24)}}function ua(a){var b,c,d,e,f,g,h;b=a._w,null!=b.GG||null!=b.W||null!=b.E?(f=1,g=4,c=ra(b.GG,a._a[fd],ja(Da(),1,4).year),d=ra(b.W,1),e=ra(b.E,1)):(f=a._locale._week.dow,g=a._locale._week.doy,c=ra(b.gg,a._a[fd],ja(Da(),f,g).year),d=ra(b.w,1),null!=b.d?(e=b.d,f>e&&++d):e=null!=b.e?b.e+f:f),h=pa(c,d,e,g,f),a._a[fd]=h.year,a._dayOfYear=h.dayOfYear}function va(b){if(b._f===a.ISO_8601)return void ca(b);b._a=[],j(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,k=0;for(e=L(b._f,b._locale).match(Nc)||[],c=0;c0&&j(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),k+=d.length),Qc[f]?(d?j(b).empty=!1:j(b).unusedTokens.push(f),S(f,d,b)):b._strict&&!d&&j(b).unusedTokens.push(f);j(b).charsLeftOver=i-k,h.length>0&&j(b).unusedInput.push(h),j(b).bigHour===!0&&b._a[id]<=12&&b._a[id]>0&&(j(b).bigHour=void 0),b._a[id]=wa(b._locale,b._a[id],b._meridiem),ta(b),$(b)}function wa(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function xa(a){var b,c,d,e,f;if(0===a._f.length)return j(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;ef)&&(d=f,c=b));g(a,c||b)}function ya(a){if(!a._d){var b=B(a._i);a._a=[b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],ta(a)}}function za(a){var b=new n($(Aa(a)));return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function Aa(a){var b=a._i,e=a._f;return a._locale=a._locale||y(a._l),null===b||void 0===e&&""===b?l({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),o(b)?new n($(b)):(c(e)?xa(a):e?va(a):d(b)?a._d=b:Ba(a),a))}function Ba(b){var f=b._i;void 0===f?b._d=new Date:d(f)?b._d=new Date(+f):"string"==typeof f?da(b):c(f)?(b._a=e(f.slice(0),function(a){return parseInt(a,10)}),ta(b)):"object"==typeof f?ya(b):"number"==typeof f?b._d=new Date(f):a.createFromInputFallback(b)}function Ca(a,b,c,d,e){var f={};return"boolean"==typeof c&&(d=c,c=void 0),f._isAMomentObject=!0,f._useUTC=f._isUTC=e,f._l=c,f._i=a,f._f=b,f._strict=d,za(f)}function Da(a,b,c,d){return Ca(a,b,c,d,!1)}function Ea(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return Da();for(d=b[0],e=1;ea&&(a=-a,c="-"),c+G(~~(a/60),2)+b+G(~~a%60,2)})}function Ka(a){var b=(a||"").match(ad)||[],c=b[b.length-1]||[],d=(c+"").match(xd)||["-",0,0],e=+(60*d[1])+q(d[2]);return"+"===d[0]?e:-e}function La(b,c){var e,f;return c._isUTC?(e=c.clone(),f=(o(b)||d(b)?+b:+Da(b))-+e,e._d.setTime(+e._d+f),a.updateOffset(e,!1),e):Da(b).local()}function Ma(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Na(b,c){var d,e=this._offset||0;return null!=b?("string"==typeof b&&(b=Ka(b)),Math.abs(b)<16&&(b=60*b),!this._isUTC&&c&&(d=Ma(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,"m"),e!==b&&(!c||this._changeInProgress?bb(this,Ya(b-e,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?e:Ma(this)}function Oa(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Pa(a){return this.utcOffset(0,a)}function Qa(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Ma(this),"m")),this}function Ra(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Ka(this._i)),this}function Sa(a){return a=a?Da(a).utcOffset():0,(this.utcOffset()-a)%60===0}function Ta(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ua(){if("undefined"!=typeof this._isDSTShifted)return this._isDSTShifted;var a={};if(m(a,this),a=Aa(a),a._a){var b=a._isUTC?h(a._a):Da(a._a);this._isDSTShifted=this.isValid()&&r(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Va(){return!this._isUTC}function Wa(){return this._isUTC}function Xa(){return this._isUTC&&0===this._offset}function Ya(a,b){var c,d,e,g=a,h=null;return Ia(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=yd.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:q(h[hd])*c,h:q(h[id])*c,m:q(h[jd])*c,s:q(h[kd])*c,ms:q(h[ld])*c}):(h=zd.exec(a))?(c="-"===h[1]?-1:1,g={y:Za(h[2],c),M:Za(h[3],c),d:Za(h[4],c),h:Za(h[5],c),m:Za(h[6],c),s:Za(h[7],c),w:Za(h[8],c)}):null==g?g={}:"object"==typeof g&&("from"in g||"to"in g)&&(e=_a(Da(g.from),Da(g.to)),g={},g.ms=e.milliseconds,g.M=e.months),d=new Ha(g),Ia(a)&&f(a,"_locale")&&(d._locale=a._locale),d}function Za(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function $a(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function _a(a,b){var c;return b=La(b,a),a.isBefore(b)?c=$a(a,b):(c=$a(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c}function ab(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(ba(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Ya(c,d),bb(this,e,a),this}}function bb(b,c,d,e){var f=c._milliseconds,g=c._days,h=c._months;e=null==e?!0:e,f&&b._d.setTime(+b._d+f*d),g&&E(b,"Date",D(b,"Date")+g*d),h&&X(b,D(b,"Month")+h*d),e&&a.updateOffset(b,g||h)}function cb(a,b){var c=a||Da(),d=La(c,this).startOf("day"),e=this.diff(d,"days",!0),f=-6>e?"sameElse":-1>e?"lastWeek":0>e?"lastDay":1>e?"sameDay":2>e?"nextDay":7>e?"nextWeek":"sameElse";return this.format(b&&b[f]||this.localeData().calendar(f,this,Da(c)))}function db(){return new n(this)}function eb(a,b){var c;return b=A("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=o(a)?a:Da(a),+this>+a):(c=o(a)?+a:+Da(a),c<+this.clone().startOf(b))}function fb(a,b){var c;return b=A("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=o(a)?a:Da(a),+a>+this):(c=o(a)?+a:+Da(a),+this.clone().endOf(b)b-f?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)}function kb(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function lb(){var a=this.clone().utc();return 0b;b++)if(this._weekdaysParse[b]||(c=Da([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b}function Pb(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Kb(a,this.localeData()),this.add(a-b,"d")):b}function Qb(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function Rb(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)}function Sb(a,b){H(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function Tb(a,b){return b._meridiemParse}function Ub(a){return"p"===(a+"").toLowerCase().charAt(0)}function Vb(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Wb(a,b){b[ld]=q(1e3*("0."+a))}function Xb(){return this._isUTC?"UTC":""}function Yb(){return this._isUTC?"Coordinated Universal Time":""}function Zb(a){return Da(1e3*a)}function $b(){return Da.apply(null,arguments).parseZone()}function _b(a,b,c){var d=this._calendar[a];return"function"==typeof d?d.call(b,c):d}function ac(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function bc(){return this._invalidDate}function cc(a){return this._ordinal.replace("%d",a)}function dc(a){return a}function ec(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)}function fc(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)}function gc(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function hc(a,b,c,d){var e=y(),f=h().set(d,b);return e[c](f,a)}function ic(a,b,c,d,e){if("number"==typeof a&&(b=a,a=void 0),a=a||"",null!=b)return hc(a,b,c,e);var f,g=[];for(f=0;d>f;f++)g[f]=hc(a,f,c,e);return g}function jc(a,b){return ic(a,b,"months",12,"month")}function kc(a,b){return ic(a,b,"monthsShort",12,"month")}function lc(a,b){return ic(a,b,"weekdays",7,"day")}function mc(a,b){return ic(a,b,"weekdaysShort",7,"day")}function nc(a,b){return ic(a,b,"weekdaysMin",7,"day")}function oc(){var a=this._data;return this._milliseconds=Wd(this._milliseconds),this._days=Wd(this._days),this._months=Wd(this._months),a.milliseconds=Wd(a.milliseconds),a.seconds=Wd(a.seconds),a.minutes=Wd(a.minutes),a.hours=Wd(a.hours),a.months=Wd(a.months),a.years=Wd(a.years),this}function pc(a,b,c,d){var e=Ya(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function qc(a,b){return pc(this,a,b,1)}function rc(a,b){return pc(this,a,b,-1)}function sc(a){return 0>a?Math.floor(a):Math.ceil(a)}function tc(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||0>=f&&0>=g&&0>=h||(f+=864e5*sc(vc(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=p(f/1e3),i.seconds=a%60,b=p(a/60),i.minutes=b%60,c=p(b/60),i.hours=c%24,g+=p(c/24),e=p(uc(g)),h+=e,g-=sc(vc(e)),d=p(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function uc(a){return 4800*a/146097}function vc(a){return 146097*a/4800}function wc(a){var b,c,d=this._milliseconds;if(a=A(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+uc(b),"month"===a?c:c/12;switch(b=this._days+Math.round(vc(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function xc(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*q(this._months/12)}function yc(a){return function(){return this.as(a)}}function zc(a){return a=A(a),this[a+"s"]()}function Ac(a){return function(){return this._data[a]}}function Bc(){return p(this.days()/7)}function Cc(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function Dc(a,b,c){var d=Ya(a).abs(),e=ke(d.as("s")),f=ke(d.as("m")),g=ke(d.as("h")),h=ke(d.as("d")),i=ke(d.as("M")),j=ke(d.as("y")),k=e0,k[4]=c,Cc.apply(null,k)}function Ec(a,b){return void 0===le[a]?!1:void 0===b?le[a]:(le[a]=b,!0)}function Fc(a){var b=this.localeData(),c=Dc(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function Gc(){var a,b,c,d=me(this._milliseconds)/1e3,e=me(this._days),f=me(this._months);a=p(d/60),b=p(a/60),d%=60,a%=60,c=p(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(0>m?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"}var Hc,Ic,Jc=a.momentProperties=[],Kc=!1,Lc={},Mc={},Nc=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Oc=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Pc={},Qc={},Rc=/\d/,Sc=/\d\d/,Tc=/\d{3}/,Uc=/\d{4}/,Vc=/[+-]?\d{6}/,Wc=/\d\d?/,Xc=/\d{1,3}/,Yc=/\d{1,4}/,Zc=/[+-]?\d{1,6}/,$c=/\d+/,_c=/[+-]?\d+/,ad=/Z|[+-]\d\d:?\d\d/gi,bd=/[+-]?\d+(\.\d{1,3})?/,cd=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,dd={},ed={},fd=0,gd=1,hd=2,id=3,jd=4,kd=5,ld=6;H("M",["MM",2],"Mo",function(){return this.month()+1}),H("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),H("MMMM",0,0,function(a){return this.localeData().months(this,a)}),z("month","M"),N("M",Wc),N("MM",Wc,Sc),N("MMM",cd),N("MMMM",cd),Q(["M","MM"],function(a,b){b[gd]=q(a)-1}),Q(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[gd]=e:j(c).invalidMonth=a});var md="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),nd="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),od={};a.suppressDeprecationWarnings=!1;var pd=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,qd=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],rd=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],sd=/^\/?Date\((\-?\d+)/i;a.createFromInputFallback=aa("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),H(0,["YY",2],0,function(){return this.year()%100}),H(0,["YYYY",4],0,"year"),H(0,["YYYYY",5],0,"year"),H(0,["YYYYYY",6,!0],0,"year"),z("year","y"),N("Y",_c),N("YY",Wc,Sc),N("YYYY",Yc,Uc),N("YYYYY",Zc,Vc),N("YYYYYY",Zc,Vc),Q(["YYYYY","YYYYYY"],fd),Q("YYYY",function(b,c){c[fd]=2===b.length?a.parseTwoDigitYear(b):q(b)}),Q("YY",function(b,c){c[fd]=a.parseTwoDigitYear(b)}),a.parseTwoDigitYear=function(a){return q(a)+(q(a)>68?1900:2e3)};var td=C("FullYear",!1);H("w",["ww",2],"wo","week"),H("W",["WW",2],"Wo","isoWeek"),z("week","w"),z("isoWeek","W"),N("w",Wc),N("ww",Wc,Sc),N("W",Wc),N("WW",Wc,Sc),R(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=q(a)});var ud={dow:0,doy:6};H("DDD",["DDDD",3],"DDDo","dayOfYear"),z("dayOfYear","DDD"),N("DDD",Xc),N("DDDD",Tc),Q(["DDD","DDDD"],function(a,b,c){c._dayOfYear=q(a)}),a.ISO_8601=function(){};var vd=aa("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var a=Da.apply(null,arguments);return this>a?this:a}),wd=aa("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var a=Da.apply(null,arguments);return a>this?this:a});Ja("Z",":"),Ja("ZZ",""),N("Z",ad),N("ZZ",ad),Q(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Ka(a)});var xd=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var yd=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,zd=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;Ya.fn=Ha.prototype;var Ad=ab(1,"add"),Bd=ab(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var Cd=aa("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});H(0,["gg",2],0,function(){return this.weekYear()%100}),H(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Db("gggg","weekYear"),Db("ggggg","weekYear"),Db("GGGG","isoWeekYear"),Db("GGGGG","isoWeekYear"),z("weekYear","gg"),z("isoWeekYear","GG"),N("G",_c),N("g",_c),N("GG",Wc,Sc),N("gg",Wc,Sc),N("GGGG",Yc,Uc),N("gggg",Yc,Uc),N("GGGGG",Zc,Vc),N("ggggg",Zc,Vc),R(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=q(a)}),R(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),H("Q",0,0,"quarter"),z("quarter","Q"),N("Q",Rc),Q("Q",function(a,b){b[gd]=3*(q(a)-1)}),H("D",["DD",2],"Do","date"),z("date","D"),N("D",Wc),N("DD",Wc,Sc),N("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),Q(["D","DD"],hd),Q("Do",function(a,b){b[hd]=q(a.match(Wc)[0],10)});var Dd=C("Date",!0);H("d",0,"do","day"),H("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),H("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),H("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),H("e",0,0,"weekday"),H("E",0,0,"isoWeekday"),z("day","d"),z("weekday","e"),z("isoWeekday","E"),N("d",Wc),N("e",Wc),N("E",Wc),N("dd",cd),N("ddd",cd),N("dddd",cd),R(["dd","ddd","dddd"],function(a,b,c){var d=c._locale.weekdaysParse(a);null!=d?b.d=d:j(c).invalidWeekday=a}),R(["d","e","E"],function(a,b,c,d){b[d]=q(a)});var Ed="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Fd="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Gd="Su_Mo_Tu_We_Th_Fr_Sa".split("_");H("H",["HH",2],0,"hour"),H("h",["hh",2],0,function(){return this.hours()%12||12}),Sb("a",!0),Sb("A",!1),z("hour","h"),N("a",Tb),N("A",Tb),N("H",Wc),N("h",Wc),N("HH",Wc,Sc),N("hh",Wc,Sc),Q(["H","HH"],id),Q(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),Q(["h","hh"],function(a,b,c){b[id]=q(a),j(c).bigHour=!0});var Hd=/[ap]\.?m?\.?/i,Id=C("Hours",!0);H("m",["mm",2],0,"minute"),z("minute","m"),N("m",Wc),N("mm",Wc,Sc),Q(["m","mm"],jd);var Jd=C("Minutes",!1);H("s",["ss",2],0,"second"),z("second","s"),N("s",Wc),N("ss",Wc,Sc),Q(["s","ss"],kd);var Kd=C("Seconds",!1);H("S",0,0,function(){return~~(this.millisecond()/100)}),H(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),H(0,["SSS",3],0,"millisecond"),H(0,["SSSS",4],0,function(){return 10*this.millisecond()}),H(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),H(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),H(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),H(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),H(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),z("millisecond","ms"),N("S",Xc,Rc),N("SS",Xc,Sc),N("SSS",Xc,Tc);var Ld;for(Ld="SSSS";Ld.length<=9;Ld+="S")N(Ld,$c);for(Ld="S";Ld.length<=9;Ld+="S")Q(Ld,Wb);var Md=C("Milliseconds",!1);H("z",0,0,"zoneAbbr"),H("zz",0,0,"zoneName");var Nd=n.prototype;Nd.add=Ad,Nd.calendar=cb,Nd.clone=db,Nd.diff=ib,Nd.endOf=ub,Nd.format=mb,Nd.from=nb,Nd.fromNow=ob,Nd.to=pb,Nd.toNow=qb,Nd.get=F,Nd.invalidAt=Cb,Nd.isAfter=eb,Nd.isBefore=fb,Nd.isBetween=gb,Nd.isSame=hb,Nd.isValid=Ab,Nd.lang=Cd,Nd.locale=rb,Nd.localeData=sb,Nd.max=wd,Nd.min=vd,Nd.parsingFlags=Bb,Nd.set=F,Nd.startOf=tb,Nd.subtract=Bd,Nd.toArray=yb,Nd.toObject=zb,Nd.toDate=xb,Nd.toISOString=lb,Nd.toJSON=lb,Nd.toString=kb,Nd.unix=wb,Nd.valueOf=vb,Nd.year=td,Nd.isLeapYear=ia,Nd.weekYear=Fb,Nd.isoWeekYear=Gb,Nd.quarter=Nd.quarters=Jb,Nd.month=Y,Nd.daysInMonth=Z,Nd.week=Nd.weeks=na,Nd.isoWeek=Nd.isoWeeks=oa,Nd.weeksInYear=Ib,Nd.isoWeeksInYear=Hb,Nd.date=Dd,Nd.day=Nd.days=Pb,Nd.weekday=Qb,Nd.isoWeekday=Rb,Nd.dayOfYear=qa,Nd.hour=Nd.hours=Id,Nd.minute=Nd.minutes=Jd,Nd.second=Nd.seconds=Kd, +Nd.millisecond=Nd.milliseconds=Md,Nd.utcOffset=Na,Nd.utc=Pa,Nd.local=Qa,Nd.parseZone=Ra,Nd.hasAlignedHourOffset=Sa,Nd.isDST=Ta,Nd.isDSTShifted=Ua,Nd.isLocal=Va,Nd.isUtcOffset=Wa,Nd.isUtc=Xa,Nd.isUTC=Xa,Nd.zoneAbbr=Xb,Nd.zoneName=Yb,Nd.dates=aa("dates accessor is deprecated. Use date instead.",Dd),Nd.months=aa("months accessor is deprecated. Use month instead",Y),Nd.years=aa("years accessor is deprecated. Use year instead",td),Nd.zone=aa("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Oa);var Od=Nd,Pd={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Qd={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Rd="Invalid date",Sd="%d",Td=/\d{1,2}/,Ud={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Vd=s.prototype;Vd._calendar=Pd,Vd.calendar=_b,Vd._longDateFormat=Qd,Vd.longDateFormat=ac,Vd._invalidDate=Rd,Vd.invalidDate=bc,Vd._ordinal=Sd,Vd.ordinal=cc,Vd._ordinalParse=Td,Vd.preparse=dc,Vd.postformat=dc,Vd._relativeTime=Ud,Vd.relativeTime=ec,Vd.pastFuture=fc,Vd.set=gc,Vd.months=U,Vd._months=md,Vd.monthsShort=V,Vd._monthsShort=nd,Vd.monthsParse=W,Vd.week=ka,Vd._week=ud,Vd.firstDayOfYear=ma,Vd.firstDayOfWeek=la,Vd.weekdays=Lb,Vd._weekdays=Ed,Vd.weekdaysMin=Nb,Vd._weekdaysMin=Gd,Vd.weekdaysShort=Mb,Vd._weekdaysShort=Fd,Vd.weekdaysParse=Ob,Vd.isPM=Ub,Vd._meridiemParse=Hd,Vd.meridiem=Vb,w("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===q(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.lang=aa("moment.lang is deprecated. Use moment.locale instead.",w),a.langData=aa("moment.langData is deprecated. Use moment.localeData instead.",y);var Wd=Math.abs,Xd=yc("ms"),Yd=yc("s"),Zd=yc("m"),$d=yc("h"),_d=yc("d"),ae=yc("w"),be=yc("M"),ce=yc("y"),de=Ac("milliseconds"),ee=Ac("seconds"),fe=Ac("minutes"),ge=Ac("hours"),he=Ac("days"),ie=Ac("months"),je=Ac("years"),ke=Math.round,le={s:45,m:45,h:22,d:26,M:11},me=Math.abs,ne=Ha.prototype;ne.abs=oc,ne.add=qc,ne.subtract=rc,ne.as=wc,ne.asMilliseconds=Xd,ne.asSeconds=Yd,ne.asMinutes=Zd,ne.asHours=$d,ne.asDays=_d,ne.asWeeks=ae,ne.asMonths=be,ne.asYears=ce,ne.valueOf=xc,ne._bubble=tc,ne.get=zc,ne.milliseconds=de,ne.seconds=ee,ne.minutes=fe,ne.hours=ge,ne.days=he,ne.weeks=Bc,ne.months=ie,ne.years=je,ne.humanize=Fc,ne.toISOString=Gc,ne.toString=Gc,ne.toJSON=Gc,ne.locale=rb,ne.localeData=sb,ne.toIsoString=aa("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Gc),ne.lang=Cd,H("X",0,0,"unix"),H("x",0,0,"valueOf"),N("x",_c),N("X",bd),Q("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),Q("x",function(a,b,c){c._d=new Date(q(a))}),a.version="2.10.6",b(Da),a.fn=Od,a.min=Fa,a.max=Ga,a.utc=h,a.unix=Zb,a.months=jc,a.isDate=d,a.locale=w,a.invalid=l,a.duration=Ya,a.isMoment=o,a.weekdays=lc,a.parseZone=$b,a.localeData=y,a.isDuration=Ia,a.monthsShort=kc,a.weekdaysMin=nc,a.defineLocale=x,a.weekdaysShort=mc,a.normalizeUnits=A,a.relativeTimeThreshold=Ec;var oe=a;return oe}); \ No newline at end of file diff --git a/common/plume/js/rdflib.min.js b/common/plume/js/rdflib.min.js new file mode 100644 index 000000000..ec0c54cb9 --- /dev/null +++ b/common/plume/js/rdflib.min.js @@ -0,0 +1,69 @@ +(function e(d,n){'object'==typeof exports&&'object'==typeof module?module.exports=n(require('crypto'),require('fetch'),require('window')):'function'==typeof define&&define.amd?define(['crypto','fetch','window'],n):'object'==typeof exports?exports.$rdf=n(require('crypto'),require('fetch'),require('window')):d.$rdf=n(d.crypto,d.fetch,d.window)})(this,function(e,d,n){var i=Math.max,a=Math.abs,u=String.fromCodePoint,p=Math.floor,t=Math.pow,f=String.fromCharCode,r=Math.min;return function(e){function d(i){if(n[i])return n[i].exports;var a=n[i]={i:i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,d),a.l=!0,a.exports}var n={};return d.m=e,d.c=n,d.i=function(e){return e},d.d=function(e,n,i){d.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},d.n=function(e){var n=e&&e.__esModule?function d(){return e['default']}:function d(){return e};return d.d(n,'a',n),n},d.o=function(e,d){return Object.prototype.hasOwnProperty.call(e,d)},d.p='',d(d.s=300)}([function(e,d){var n=e.exports={version:'2.5.5'};'number'==typeof __e&&(__e=n)},function(e,d){var n;n=function(){return this}();try{n=n||Function('return this')()||(1,eval)('this')}catch(d){'object'==typeof window&&(n=window)}e.exports=n},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}function a(e,d){if(!e)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return d&&('object'==typeof d||'function'==typeof d)?d:e}function u(e,d){if('function'!=typeof d&&null!==d)throw new TypeError('Super expression must either be null or a function, not '+typeof d);e.prototype=Object.create(d&&d.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),d&&(Object.setPrototypeOf?Object.setPrototypeOf(e,d):e.__proto__=d)}var p=function(){function e(e,d){for(var n=0,i;ni?null:new d(n.slice(0,i+1))}},{key:'site',value:function e(){var n=this.uri.split('#')[0],i=n.indexOf('//');if(0>i)throw new Error('This URI does not have a web site part (origin)');var a=n.indexOf('/',i+2);if(0>a)throw new Error('This URI does not have a web site part. (origin)');return new d(n.slice(0,a+1))}},{key:'doc',value:function e(){return 0>this.uri.indexOf('#')?this:new d(this.uri.split('#')[0])}},{key:'toString',value:function e(){return'<'+this.uri+'>'}},{key:'uri',get:function e(){return this.value},set:function e(d){this.value=d}}],[{key:'fromValue',value:function e(n){if('undefined'==typeof n||null===n)return n;var i=n&&n.termType;return i?n:new d(n)}}]),d}(f);r.termType='NamedNode',r.prototype.classOrder=t.NamedNode,r.prototype.isVar=0,e.exports=r},function(e,d){var n=e.exports='undefined'!=typeof window&&window.Math==Math?window:'undefined'!=typeof self&&self.Math==Math?self:Function('return this')();'number'==typeof __g&&(__g=n)},function(e,d,n){var i=n(82)('wks'),a=n(56),u=n(3).Symbol,p='function'==typeof u,t=e.exports=function(e){return i[e]||(i[e]=p&&u[e]||(p?u:a)('Symbol.'+e))};t.store=i},function(e,d,n){'use strict';e.exports={Formats:n(112),Initializer:n(113),JSONDocument:n(185),JSONMapping:n(186),JSONPatch:n(114),JSONPointer:n(67),JSONSchema:n(187),Validator:n(115)}},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var a=function(){function e(e,d){for(var n=0,i;nd.classOrder?1:this.valued.value?1:0}},{key:'equals',value:function e(d){return!!d&&this.termType===d.termType&&this.value===d.value}},{key:'hashString',value:function e(){return this.toCanonical()}},{key:'sameTerm',value:function e(d){return this.equals(d)}},{key:'toCanonical',value:function e(){return this.toNT()}},{key:'toNT',value:function e(){return this.toString()}},{key:'toString',value:function e(){throw new Error('Node.toString() is abstract - see the subclasses instead')}}]),e}();e.exports=u,u.fromValue=function e(d){var i=n(41),a=n(27),u=n(2);if('undefined'==typeof d||null===d)return d;var p=d&&d.termType;return p?d:Array.isArray(d)?new i(d):a.fromValue(d)},u.toJS=function e(d){return d.elements?d.elements.map(u.toJS):d.datatype?d.datatype.equals(ns.xsd('boolean'))?'1'===d.value:d.datatype.equals(ns.xsd('dateTime'))||d.datatype.equals(ns.xsd('date'))?new Date(d.value):d.datatype.equals(ns.xsd('integer'))||d.datatype.equals(ns.xsd('float'))||d.datatype.equals(ns.xsd('decimal'))?+d.value:d.value:d}},function(e,d,n){'use strict';function i(e){var d;return d=e.indexOf('#'),0>d?e:e.slice(0,d)}function a(e){return new o(i(e.uri))}function u(e){var d=/[^\/]*\/\/([^\/]*)\//.exec(e);return d?d[1]:''}function p(e,d){var n=d.indexOf('#'),i,a,u,p,t,f;if(0i)return r('Invalid base: '+d+' in join with given: '+e),e;if(a=d.slice(0,+i+1||9e9),0===e.indexOf('//'))return a+e;if(d.indexOf('//',i)===i+1){if(u=d.indexOf('/',i+3),0>u)return 0u)return 0t)return a+e;for(0<=t&&td?null:e.slice(0,d)}function f(e,d){var a=/^[-_a-zA-Z0-9.]+:(\/\/[^\/]*)?\/[^\/]*$/,u,t,i,f,r,l,m,n,o,p,c,h,g;if(!e)return d;if(e===d)return'';for(t=n=0,r=d.length;ni&&(i=-2),f=d.indexOf('/',i+2),'/'!==d[f+1]&&'/'!==e[f+1]&&d.slice(0,f)===e.slice(0,f)))return d.slice(f);if('#'===d[t]&&e.length===t)return d.slice(t);for(;0t)return d;if(0=h;1<=h?++p:--p)g+='../';return g+d.slice(t)}var r=r||console.log;e.exports.docpart=i,e.exports.document=a,e.exports.hostpart=u,e.exports.join=p,e.exports.protocol=t,e.exports.refTo=f;var o=n(2)},function(e,d,n){'use strict';(function(e){function i(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&'function'==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(d){return!1}}function a(){return o.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function u(e,d){if(a()e)throw new RangeError('"size" argument must not be negative')}function m(e,d,n,i){return s(d),0>=d?u(e,d):void 0===n?u(e,d):'string'==typeof i?u(e,d).fill(n,i):u(e,d).fill(n)}function c(e,d){if(s(d),e=u(e,0>d?0:0|b(d)),!o.TYPED_ARRAY_SUPPORT)for(var n=0;nd.length?0:0|b(d.length);e=u(e,n);for(var a=0;an||d.byteLength=a())throw new RangeError('Attempt to allocate Buffer larger than maximum size: 0x'+a().toString(16)+' bytes');return 0|e}function _(e){return+e!=e&&(e=0),o.alloc(+e)}function w(e,d){if(o.isBuffer(e))return e.length;if('undefined'!=typeof ArrayBuffer&&'function'==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;'string'!=typeof e&&(e=''+e);var n=e.length;if(0===n)return 0;for(var i=!1;;)switch(d){case'ascii':case'latin1':case'binary':return n;case'utf8':case'utf-8':case void 0:return Y(e).length;case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return 2*n;case'hex':return n>>>1;case'base64':return Z(e).length;default:if(i)return Y(e).length;d=(''+d).toLowerCase(),i=!0;}}function x(e,d,n){var i=!1;if((void 0===d||0>d)&&(d=0),d>this.length)return'';if((void 0===n||n>this.length)&&(n=this.length),0>=n)return'';if(n>>>=0,d>>>=0,n<=d)return'';for(e||(e='utf8');!0;)switch(e){case'hex':return V(this,d,n);case'utf8':case'utf-8':return P(this,d,n);case'ascii':return L(this,d,n);case'latin1':case'binary':return A(this,d,n);case'base64':return E(this,d,n);case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return U(this,d,n);default:if(i)throw new TypeError('Unknown encoding: '+e);e=(e+'').toLowerCase(),i=!0;}}function k(e,d,n){var a=e[d];e[d]=e[n],e[n]=a}function S(e,d,n,i,a){if(0===e.length)return-1;if('string'==typeof n?(i=n,n=0):2147483647n&&(n=-2147483648),n=+n,isNaN(n)&&(n=a?0:e.length-1),0>n&&(n=e.length+n),n>=e.length){if(a)return-1;n=e.length-1}else if(0>n)if(a)n=0;else return-1;if('string'==typeof d&&(d=o.from(d,i)),o.isBuffer(d))return 0===d.length?-1:T(e,d,n,i,a);if('number'==typeof d)return d&=255,o.TYPED_ARRAY_SUPPORT&&'function'==typeof Uint8Array.prototype.indexOf?a?Uint8Array.prototype.indexOf.call(e,d,n):Uint8Array.prototype.lastIndexOf.call(e,d,n):T(e,[d],n,i,a);throw new TypeError('val must be string, number or Buffer')}function T(e,d,n,a,u){function p(e,d){return 1==t?e[d]:e.readUInt16BE(d*t)}var t=1,f=e.length,r=d.length;if(void 0!==a&&(a=(a+'').toLowerCase(),'ucs2'===a||'ucs-2'===a||'utf16le'===a||'utf-16le'===a)){if(2>e.length||2>d.length)return-1;t=2,f/=2,r/=2,n/=2}var o;if(u){var i=-1;for(o=n;of&&(n=f-r),o=n;0<=o;o--){for(var l=!0,s=0;su&&(a=u)):a=u;var p=d.length;if(0!=p%2)throw new TypeError('Invalid hex string');a>p/2&&(a=p/2);for(var t=0,i;ti&&(p=i):2==t?(f=e[u+1],128==(192&f)&&(s=(31&i)<<6|63&f,127s||57343s&&(p=s))):void 0}null===p?(p=65533,t=1):65535>>10),p=56320|1023&p),a.push(p),u+=t}return C(a)}function C(e){var d=e.length;if(d<=ue)return f.apply(String,e);for(var n='',a=0;ad)&&(d=0),(!n||0>n||n>a)&&(n=a);for(var u='',p=d;pe)throw new RangeError('offset is not uint');if(e+d>n)throw new RangeError('Trying to access beyond buffer length')}function F(e,d,n,i,a,u){if(!o.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(d>a||de.length)throw new RangeError('Index out of range')}function q(e,d,n,a){0>d&&(d=65535+d+1);for(var u=0,i=r(e.length-n,2);u>>8*(a?u:1-u)}function B(e,d,n,a){0>d&&(d=4294967295+d+1);for(var u=0,i=r(e.length-n,4);u>>8*(a?u:3-u)}function H(e,d,n,i,a,u){if(n+i>e.length)throw new RangeError('Index out of range');if(0>n)throw new RangeError('Index out of range')}function z(e,d,n,i,a){return a||H(e,d,n,4,3.4028234663852886e38,-3.4028234663852886e38),ie.write(e,d,n,i,23,4),n+4}function W(e,d,n,i,a){return a||H(e,d,n,8,1.7976931348623157e308,-1.7976931348623157e308),ie.write(e,d,n,i,52,8),n+8}function J(e){if(e=X(e).replace(pe,''),2>e.length)return'';for(;0!=e.length%4;)e+='=';return e}function X(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,'')}function K(e){return 16>e?'0'+e.toString(16):e.toString(16)}function Y(e,d){d=d||Infinity;for(var n=e.length,a=null,u=[],p=0,i;pi){if(!a){if(56319i){-1<(d-=3)&&u.push(239,191,189),a=i;continue}i=(a-55296<<10|i-56320)+65536}else a&&-1<(d-=3)&&u.push(239,191,189);if(a=null,128>i){if(0>(d-=1))break;u.push(i)}else if(2048>i){if(0>(d-=2))break;u.push(192|i>>6,128|63&i)}else if(65536>i){if(0>(d-=3))break;u.push(224|i>>12,128|63&i>>6,128|63&i)}else if(1114112>i){if(0>(d-=4))break;u.push(240|i>>18,128|63&i>>12,128|63&i>>6,128|63&i)}else throw new Error('Invalid code point')}return u}function G(e){for(var d=[],n=0;n(d-=2));++a)i=e.charCodeAt(a),u=i>>8,p=i%256,n.push(p),n.push(u);return n}function Z(e){return ne.toByteArray(J(e))}function ee(e,d,n,a){for(var u=0;u=d.length||u>=e.length);++u)d[u+n]=e[u];return u}function de(e){return e!==e}/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */var ne=n(212),ie=n(259),ae=n(148);d.Buffer=o,d.SlowBuffer=_,d.INSPECT_MAX_BYTES=50,o.TYPED_ARRAY_SUPPORT=e.TYPED_ARRAY_SUPPORT===void 0?i():e.TYPED_ARRAY_SUPPORT,d.kMaxLength=a(),o.poolSize=8192,o._augment=function(e){return e.__proto__=o.prototype,e},o.from=function(e,d,n){return l(null,e,d,n)},o.TYPED_ARRAY_SUPPORT&&(o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,'undefined'!=typeof Symbol&&Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0})),o.alloc=function(e,d,n){return m(null,e,d,n)},o.allocUnsafe=function(e){return c(null,e)},o.allocUnsafeSlow=function(e){return c(null,e)},o.isBuffer=function e(d){return!!(null!=d&&d._isBuffer)},o.compare=function e(d,n){if(!o.isBuffer(d)||!o.isBuffer(n))throw new TypeError('Arguments must be Buffers');if(d===n)return 0;for(var a=d.length,u=n.length,p=0,i=r(a,u);pi&&(n+=' ... ')),''},o.prototype.compare=function e(d,n,a,u,p){if(!o.isBuffer(d))throw new TypeError('Argument must be a Buffer');if(void 0===n&&(n=0),void 0===a&&(a=d?d.length:0),void 0===u&&(u=0),void 0===p&&(p=this.length),0>n||a>d.length||0>u||p>this.length)throw new RangeError('out of range index');if(u>=p&&n>=a)return 0;if(u>=p)return-1;if(n>=a)return 1;if(n>>>=0,a>>>=0,u>>>=0,p>>>=0,this===d)return 0;for(var t=p-u,f=a-n,l=r(t,f),s=this.slice(u,p),m=d.slice(n,a),c=0;cu)&&(i=u),0i||0>n)||n>this.length)throw new RangeError('Attempt to write outside buffer bounds');a||(a='utf8');for(var p=!1;;)switch(a){case'hex':return N(this,d,n,i);case'utf8':case'utf-8':return I(this,d,n,i);case'ascii':return j(this,d,n,i);case'latin1':case'binary':return O(this,d,n,i);case'base64':return R(this,d,n,i);case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return D(this,d,n,i);default:if(p)throw new TypeError('Unknown encoding: '+a);a=(''+a).toLowerCase(),p=!0;}},o.prototype.toJSON=function e(){return{type:'Buffer',data:Array.prototype.slice.call(this._arr||this,0)}};var ue=4096;o.prototype.slice=function e(d,n){var a=this.length;d=~~d,n=n===void 0?a:~~n,0>d?(d+=a,0>d&&(d=0)):d>a&&(d=a),0>n?(n+=a,0>n&&(n=0)):n>a&&(n=a),n=p&&(u-=t(2,8*n)),u},o.prototype.readIntBE=function e(d,n,a){d|=0,n|=0,a||M(d,n,this.length);for(var u=n,i=1,p=this[d+--u];0=i&&(p-=t(2,8*n)),p},o.prototype.readInt8=function e(d,n){return n||M(d,1,this.length),128&this[d]?-1*(255-this[d]+1):this[d]},o.prototype.readInt16LE=function e(d,n){n||M(d,2,this.length);var i=this[d]|this[d+1]<<8;return 32768&i?4294901760|i:i},o.prototype.readInt16BE=function e(d,n){n||M(d,2,this.length);var i=this[d+1]|this[d]<<8;return 32768&i?4294901760|i:i},o.prototype.readInt32LE=function e(d,n){return n||M(d,4,this.length),this[d]|this[d+1]<<8|this[d+2]<<16|this[d+3]<<24},o.prototype.readInt32BE=function e(d,n){return n||M(d,4,this.length),this[d]<<24|this[d+1]<<16|this[d+2]<<8|this[d+3]},o.prototype.readFloatLE=function e(d,n){return n||M(d,4,this.length),ie.read(this,d,!0,23,4)},o.prototype.readFloatBE=function e(d,n){return n||M(d,4,this.length),ie.read(this,d,!1,23,4)},o.prototype.readDoubleLE=function e(d,n){return n||M(d,8,this.length),ie.read(this,d,!0,52,8)},o.prototype.readDoubleBE=function e(d,n){return n||M(d,8,this.length),ie.read(this,d,!1,52,8)},o.prototype.writeUIntLE=function e(d,n,a,u){if(d=+d,n|=0,a|=0,!u){var p=t(2,8*a)-1;F(this,d,n,a,p,0)}var f=1,r=0;for(this[n]=255&d;++r>>8):q(this,d,n,!0),n+2},o.prototype.writeUInt16BE=function e(d,n,i){return d=+d,n|=0,i||F(this,d,n,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[n]=d>>>8,this[n+1]=255&d):q(this,d,n,!1),n+2},o.prototype.writeUInt32LE=function e(d,n,i){return d=+d,n|=0,i||F(this,d,n,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[n+3]=d>>>24,this[n+2]=d>>>16,this[n+1]=d>>>8,this[n]=255&d):B(this,d,n,!0),n+4},o.prototype.writeUInt32BE=function e(d,n,i){return d=+d,n|=0,i||F(this,d,n,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[n]=d>>>24,this[n+1]=d>>>16,this[n+2]=d>>>8,this[n+3]=255&d):B(this,d,n,!1),n+4},o.prototype.writeIntLE=function e(d,n,a,u){if(d=+d,n|=0,!u){var p=t(2,8*a-1);F(this,d,n,a,p-1,-p)}var f=0,i=1,r=0;for(this[n]=255&d;++fd&&0==r&&0!==this[n+f-1]&&(r=1),this[n+f]=255&(d/i>>0)-r;return n+a},o.prototype.writeIntBE=function e(d,n,a,u){if(d=+d,n|=0,!u){var p=t(2,8*a-1);F(this,d,n,a,p-1,-p)}var f=a-1,i=1,r=0;for(this[n+f]=255&d;0<=--f&&(i*=256);)0>d&&0==r&&0!==this[n+f+1]&&(r=1),this[n+f]=255&(d/i>>0)-r;return n+a},o.prototype.writeInt8=function e(d,n,i){return d=+d,n|=0,i||F(this,d,n,1,127,-128),o.TYPED_ARRAY_SUPPORT||(d=p(d)),0>d&&(d=255+d+1),this[n]=255&d,n+1},o.prototype.writeInt16LE=function e(d,n,i){return d=+d,n|=0,i||F(this,d,n,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[n]=255&d,this[n+1]=d>>>8):q(this,d,n,!0),n+2},o.prototype.writeInt16BE=function e(d,n,i){return d=+d,n|=0,i||F(this,d,n,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[n]=d>>>8,this[n+1]=255&d):q(this,d,n,!1),n+2},o.prototype.writeInt32LE=function e(d,n,i){return d=+d,n|=0,i||F(this,d,n,4,2147483647,-2147483648),o.TYPED_ARRAY_SUPPORT?(this[n]=255&d,this[n+1]=d>>>8,this[n+2]=d>>>16,this[n+3]=d>>>24):B(this,d,n,!0),n+4},o.prototype.writeInt32BE=function e(d,n,i){return d=+d,n|=0,i||F(this,d,n,4,2147483647,-2147483648),0>d&&(d=4294967295+d+1),o.TYPED_ARRAY_SUPPORT?(this[n]=d>>>24,this[n+1]=d>>>16,this[n+2]=d>>>8,this[n+3]=255&d):B(this,d,n,!1),n+4},o.prototype.writeFloatLE=function e(d,n,i){return z(this,d,n,!0,i)},o.prototype.writeFloatBE=function e(d,n,i){return z(this,d,n,!1,i)},o.prototype.writeDoubleLE=function e(d,n,i){return W(this,d,n,!0,i)},o.prototype.writeDoubleBE=function e(d,n,i){return W(this,d,n,!1,i)},o.prototype.copy=function e(d,n,a,u){if(a||(a=0),u||0===u||(u=this.length),n>=d.length&&(n=d.length),n||(n=0),0n)throw new RangeError('targetStart out of bounds');if(0>a||a>=this.length)throw new RangeError('sourceStart out of bounds');if(0>u)throw new RangeError('sourceEnd out of bounds');u>this.length&&(u=this.length),d.length-np||!o.TYPED_ARRAY_SUPPORT)for(t=0;tp&&(d=p)}if(void 0!==u&&'string'!=typeof u)throw new TypeError('encoding must be a string');if('string'==typeof u&&!o.isEncoding(u))throw new TypeError('Unknown encoding: '+u)}else'number'==typeof d&&(d&=255);if(0>n||this.length>>=0,a=a===void 0?this.length:a>>>0,d||(d=0);var t;if('number'==typeof d)for(t=n;t=e||126=t(256,5-a.length))return Q;let i=a.pop(),u=0;for(const d of a)i+=d*t(256,3-u),++u;return i}function I(e){let d='',a=e;for(let n=1;4>=n;++n)d=a%256+''+d,4!==n&&(d='.'+d),a=p(a/256);return d}function j(e){const d=[0,0,0,0,0,0,0,0];let n=0,i=null,u=0;if(e=W.ucs2.decode(e),58===e[u]){if(58!==e[u+1])return Q;u+=2,++n,i=n}for(;ut&&X.isASCIIHex(e[u]);)p=16*p+parseInt(a(e,u),16),++u,++t;if(46===e[u]){if(0==t)return Q;if(u-=t,6i)++u;else return Q;if(!X.isASCIIDigit(e[u]))return Q;for(;X.isASCIIDigit(e[u]);){const d=parseInt(a(e,u));if(null==p)p=d;else{if(0===p)return Q;p=10*p+d}if(255=n;++n){if(a&&0===e[n])continue;else a&&(a=!1);if(i===n){const e=0===n?'::':':';d+=e,a=!0;continue}d+=e[n].toString(16),7!==n&&(d+=':')}return d}function R(e,n=!1){if('['===e[0])return']'===e[e.length-1]?j(e.substring(1,e.length-1)):Q;if(n)return D(e);const i=Y(d.from(e)).toString(),a=C(i);if(a===Q)return Q;if(m(a))return Q;const u=N(a);return'number'==typeof u||u===Q?u:a}function D(e){if(c(e))return Q;let d='';const n=W.ucs2.decode(e);for(let a=0;an&&(d=a,n=u),a=null,u=0);return u>n&&(d=a,n=u),{idx:d,len:n}}function P(e){return'number'==typeof e?I(e):e instanceof Array?'['+O(e)+']':e}function C(e,d=!1){const n=J.toASCII(e,{checkBidi:!0,checkHyphens:!1,checkJoiners:!0,useSTD3ASCIIRules:d,verifyDNSLength:d});return null===n?Q:n}function L(e){return e.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g,'')}function A(e){return e.replace(/\u0009|\u000A|\u000D/g,'')}function V(e){const{path:d}=e;0===d.length||'file'===e.scheme&&1===d.length&&F(d[0])||d.pop()}function U(e){return''!==e.username||''!==e.password}function M(e){return null===e.host||''===e.host||e.cannotBeABaseURL||'file'===e.scheme}function F(e){return /^[A-Za-z]:$/.test(e)}function q(e,d,n,i,a){if(this.pointer=0,this.input=e,this.base=d||null,this.encodingOverride=n||'utf-8',this.stateOverride=a,this.url=i,this.failure=!1,this.parseError=!1,!this.url){this.url={scheme:'',username:'',password:'',host:null,port:null,path:[],query:null,fragment:null,cannotBeABaseURL:!1};const e=L(this.input);e!==this.input&&(this.parseError=!0),this.input=e}const p=A(this.input);for(p!==this.input&&(this.parseError=!0),this.input=p,this.state=a||'scheme start',this.buffer='',this.atFlag=!1,this.arrFlag=!1,this.passwordTokenSeenFlag=!1,this.input=W.ucs2.decode(this.input);this.pointer<=this.input.length;++this.pointer){const e=this.input[this.pointer],d=isNaN(e)?void 0:u(e),n=this['parse '+this.state](e,d);if(!n)break;else if(n===Q){this.failure=!0;break}}}function B(e,d){const n=e.length-d;return 2<=n&&o(e[d],e[d+1])&&(2==n||ne.has(e[d+2]))}function H(e,d){let n=e.scheme+':';if(null===e.host?null===e.host&&'file'===e.scheme&&(n+='//'):(n+='//',(''!==e.username||''!==e.password)&&(n+=e.username,''!==e.password&&(n+=':'+e.password),n+='@'),n+=P(e.host),null!==e.port&&(n+=':'+e.port)),e.cannotBeABaseURL)n+=e.path[0];else for(const d of e.path)n+='/'+d;return null!==e.query&&(n+='?'+e.query),d||null===e.fragment||(n+='#'+e.fragment),n}function z(e){let d=e.scheme+'://';return d+=P(e.host),null!==e.port&&(d+=':'+e.port),d}const W=n(154),J=n(283),X=n(164),{percentEncode:K,percentDecode:Y}=n(62),G={ftp:21,file:null,gopher:70,http:80,https:443,ws:80,wss:443},Q=Symbol('failure'),Z=new Set([47,58,59,61,64,91,92,93,94,124]),ee=new Set([32,34,60,62,96]),de=new Set([35,63,123,125]);q.prototype['parse scheme start']=function e(d,n){if(X.isASCIIAlpha(d))this.buffer+=n.toLowerCase(),this.state='scheme';else if(!this.stateOverride)this.state='no scheme',--this.pointer;else return this.parseError=!0,Q;return!0},q.prototype['parse scheme']=function e(d,n){if(X.isASCIIAlphanumeric(d)||43===d||45===d||46===d)this.buffer+=n.toLowerCase();else if(58===d){if(this.stateOverride){if(g(this.url)&&!h(this.buffer))return!1;if(!g(this.url)&&h(this.buffer))return!1;if((U(this.url)||null!==this.url.port)&&'file'===this.buffer)return!1;if('file'===this.url.scheme&&(''===this.url.host||null===this.url.host))return!1}if(this.url.scheme=this.buffer,this.stateOverride)return this.url.port===v(this.url.scheme)&&(this.url.port=null),!1;this.buffer='','file'===this.url.scheme?((47!==this.input[this.pointer+1]||47!==this.input[this.pointer+2])&&(this.parseError=!0),this.state='file'):g(this.url)&&null!==this.base&&this.base.scheme===this.url.scheme?this.state='special relative or authority':g(this.url)?this.state='special authority slashes':47===this.input[this.pointer+1]?(this.state='path or authority',++this.pointer):(this.url.cannotBeABaseURL=!0,this.url.path.push(''),this.state='cannot-be-a-base-URL path')}else if(!this.stateOverride)this.buffer='',this.state='no scheme',this.pointer=-1;else return this.parseError=!0,Q;return!0},q.prototype['parse no scheme']=function e(d){return null===this.base||this.base.cannotBeABaseURL&&35!==d?Q:(this.base.cannotBeABaseURL&&35===d?(this.url.scheme=this.base.scheme,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment='',this.url.cannotBeABaseURL=!0,this.state='fragment'):'file'===this.base.scheme?(this.state='file',--this.pointer):(this.state='relative',--this.pointer),!0)},q.prototype['parse special relative or authority']=function e(d){return 47===d&&47===this.input[this.pointer+1]?(this.state='special authority ignore slashes',++this.pointer):(this.parseError=!0,this.state='relative',--this.pointer),!0},q.prototype['parse path or authority']=function e(d){return 47===d?this.state='authority':(this.state='path',--this.pointer),!0},q.prototype['parse relative']=function e(d){return this.url.scheme=this.base.scheme,isNaN(d)?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query):47===d?this.state='relative slash':63===d?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query='',this.state='query'):35===d?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment='',this.state='fragment'):g(this.url)&&92===d?(this.parseError=!0,this.state='relative slash'):(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(0,this.base.path.length-1),this.state='path',--this.pointer),!0},q.prototype['parse relative slash']=function e(d){return g(this.url)&&(47===d||92===d)?(92===d&&(this.parseError=!0),this.state='special authority ignore slashes'):47===d?this.state='authority':(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.state='path',--this.pointer),!0},q.prototype['parse special authority slashes']=function e(d){return 47===d&&47===this.input[this.pointer+1]?(this.state='special authority ignore slashes',++this.pointer):(this.parseError=!0,this.state='special authority ignore slashes',--this.pointer),!0},q.prototype['parse special authority ignore slashes']=function e(d){return 47!==d&&92!==d?(this.state='authority',--this.pointer):this.parseError=!0,!0},q.prototype['parse authority']=function e(d,n){if(64===d){this.parseError=!0,this.atFlag&&(this.buffer='%40'+this.buffer),this.atFlag=!0;const e=i(this.buffer);for(let d=0;de[d]||126d.uri.indexOf('#')){if(c(d.uri,'http://dbpedia.org/resource/Category:'))return;c(d.uri,'http://purl.org/dc/elements/1.1/')||c(d.uri,'http://purl.org/dc/terms/')?u='http://dublincore.org/2005/06/13/dcq':c(d.uri,'http://xmlns.com/wot/0.1/')?u='http://xmlns.com/wot/0.1/index.rdf':c(d.uri,'http://web.resource.org/cc/')&&(u='http://web.resource.org/cc/schema.rdf')}return(u&&(a=u),!(i&&'unrequested'!==i.getState(a)))?(u&&v.warn('Assuming server still broken, faking redirect of <'+d.uri+'> to <'+a+'>'),i.fetch(a,{referringTerm:n})):void 0}}function i(e,d,n){n||(n=0);var i=e.length;for(0>n&&(n=i+n);n/g,'>').replace(/'/g,'"')+'\'')}}if(0\n':''}}}else if(8===e.nodeType)u+='';else if(3===e.nodeType||4===e.nodeType){var s=e.nodeValue.replace(/\n+$/,'');u+=p[p.length-1]?s:s.replace(/&/g,'&').replace(//g,'>')}else console.log('Warning; Cannot handle serialising nodes of type: '+e.nodeType),console.log(e);return u}function f(){var e=new Date,d=e.getYear()+1900,n=e.getMonth()+1,i=e.getDate(),a=e.getUTCHours(),u=e.getUTCMinutes(),p=e.getSeconds();return 10>n&&(n='0'+n),10>i&&(i='0'+i),10>a&&(a='0'+a),10>u&&(u='0'+u),10>p&&(p='0'+p),d+'-'+n+'-'+i+'T'+a+':'+u+':'+p+'Z'}function r(e,d,n,i){var a=function e(d){return'BlankNode'===d.termType?null:d},u=function e(d){var i=n.statementsMatching(d).map(function(e){return''+a(e.subject)+' '+a(e.predicate)+' '+a(e.object)}).concat(n.statementsMatching(void 0,void 0,d).map(function(e){return''+a(e.subject)+' '+a(e.predicate)+' '+a(e.object)}));return i.sort(),i.join('\n')};return'BlankNode'===e.termType&&'BlankNode'===d.termType?0===e.compareTerm(d)?0:u(e)>u(d)?1:u(e)d.classOrder?1:this.idd.id?1:0}},{key:'copy',value:function e(n){var i=new d;return n.copyTo(this,i),i}},{key:'toCanonical',value:function e(){return'_:'+this.value}},{key:'toString',value:function e(){return d.NTAnonymousNodePrefix+this.id}}]),d}(f);r.nextId=0,r.termType='BlankNode',r.NTAnonymousNodePrefix='_:',r.prototype.classOrder=t.BlankNode,r.prototype.isBlank=1,r.prototype.isVar=1,e.exports=r},function(e,d,n){'use strict';e.exports={debug:function e(d){},warn:function e(d){},info:function e(d){},error:function e(d){},success:function e(d){},msg:function e(d){}}},function(e,d,n){'use strict';function i(e){return e&&e.__esModule?e:{default:e}}d.__esModule=!0;var a=n(48),u=i(a);d.default=function(e){return function(){var d=e.apply(this,arguments);return new u.default(function(e,n){function i(a,p){try{var t=d[a](p),f=t.value}catch(e){return void n(e)}return t.done?void e(f):u.default.resolve(f).then(function(e){i('next',e)},function(e){i('throw',e)})}return i('next')})}}},function(e,d,n){e.exports=n(269)},function(e,d,n){e.exports=n(213).default,e.exports.default=e.exports},function(e,d){var n={}.hasOwnProperty;e.exports=function(e,d){return n.call(e,d)}},function(e,d,n){var i=n(13),a=n(36);e.exports=n(14)?function(e,d,n){return i.f(e,d,a(1,n))}:function(e,d,n){return e[d]=n,e}},function(e,d,n){'use strict';function i(e){return this instanceof i?void(r.call(this,e),o.call(this,e),e&&!1===e.readable&&(this.readable=!1),e&&!1===e.writable&&(this.writable=!1),this.allowHalfOpen=!0,e&&!1===e.allowHalfOpen&&(this.allowHalfOpen=!1),this.once('end',a)):new i(e)}function a(){this.allowHalfOpen||this._writableState.ended||p.nextTick(u,this)}function u(e){e.end()}var p=n(58),t=Object.keys||function(e){var d=[];for(var n in e)d.push(n);return d};e.exports=i;var f=n(37);f.inherits=n(31);var r=n(155),o=n(93);f.inherits(i,r);for(var l=t(o.prototype),s=0,m;si.indexOf('e')&&a(n)<=Number.MAX_SAFE_INTEGER?Number.isInteger(n)?s.integer:s.decimal:s.double,new d(i,null,u)}},{key:'fromValue',value:function e(n){if('undefined'==typeof n||null===n)return n;if('object'===('undefined'==typeof n?'undefined':t(n))&&n.termType)return n;switch('undefined'==typeof n?'undefined':t(n)){case'object':if(n instanceof Date)return d.fromDate(n);case'boolean':return d.fromBoolean(n);case'number':return d.fromNumber(n);case'string':return new d(n);}throw new Error('Can\'t make literal from '+n+' of type '+('undefined'==typeof n?'undefined':t(n)))}}]),d}(l);m.termType='Literal',m.prototype.classOrder=r.Literal,m.prototype.datatype=s.string,m.prototype.lang='',m.prototype.isVar=0,e.exports=m},function(e,d,n){var i=n(50);e.exports=function(e,d,n){return(i(e),void 0===d)?e:1===n?function(n){return e.call(d,n)}:2===n?function(n,i){return e.call(d,n,i)}:3===n?function(n,i,a){return e.call(d,n,i,a)}:function(){return e.apply(d,arguments)}}},function(e,d){e.exports=function(e){try{return!!e()}catch(d){return!0}}},function(e,d,n){var i=n(128),a=n(75);e.exports=function(e){return i(a(e))}},function(e,d){e.exports='function'==typeof Object.create?function e(d,n){d.super_=n,d.prototype=Object.create(n.prototype,{constructor:{value:d,enumerable:!1,writable:!0,configurable:!0}})}:function e(d,n){d.super_=n;var i=function(){};i.prototype=n.prototype,d.prototype=new i,d.prototype.constructor=d}},function(e,d){},function(e,d,n){'use strict';function i(e){return function(d){return new a(e+(d||''))}}var a=n(2);e.exports=i},function(e,d){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,d){e.exports={}},function(e,d){e.exports=function(e,d){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:d}}},function(e,d,n){(function(e){function n(e){return Array.isArray?Array.isArray(e):'[object Array]'===g(e)}function i(e){return'boolean'==typeof e}function a(e){return null===e}function u(e){return null==e}function p(e){return'number'==typeof e}function t(e){return'string'==typeof e}function f(e){return'symbol'==typeof e}function r(e){return void 0===e}function o(e){return'[object RegExp]'===g(e)}function l(e){return'object'==typeof e&&null!==e}function s(e){return'[object Date]'===g(e)}function m(d){return'[object Error]'===g(d)||d instanceof Error}function c(e){return'function'==typeof e}function h(e){return null===e||'boolean'==typeof e||'number'==typeof e||'string'==typeof e||'symbol'==typeof e||'undefined'==typeof e}function g(e){return Object.prototype.toString.call(e)}d.isArray=n,d.isBoolean=i,d.isNull=a,d.isNullOrUndefined=u,d.isNumber=p,d.isString=t,d.isSymbol=f,d.isUndefined=r,d.isRegExp=o,d.isObject=l,d.isDate=s,d.isError=m,d.isFunction=c,d.isPrimitive=h,d.isBuffer=e.isBuffer}).call(d,n(8).Buffer)},function(e,d,n){(function(e){function i(e,d){this._id=e,this._clearFn=d}var a=Function.prototype.apply;d.setTimeout=function(){return new i(a.call(setTimeout,window,arguments),clearTimeout)},d.setInterval=function(){return new i(a.call(setInterval,window,arguments),clearInterval)},d.clearTimeout=d.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(window,this._id)},d.enroll=function(e,d){clearTimeout(e._idleTimeoutId),e._idleTimeout=d},d.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},d._unrefActive=d.active=function(e){clearTimeout(e._idleTimeoutId);var d=e._idleTimeout;0<=d&&(e._idleTimeoutId=setTimeout(function d(){e._onTimeout&&e._onTimeout()},d))},n(271),d.setImmediate='undefined'!=typeof self&&self.setImmediate||'undefined'!=typeof e&&e.setImmediate||this&&this.setImmediate,d.clearImmediate='undefined'!=typeof self&&self.clearImmediate||'undefined'!=typeof e&&e.clearImmediate||this&&this.clearImmediate}).call(d,n(1))},function(e,d,n){'use strict';d.URL=n(295).interface,d.URLSearchParams=n(163).interface,d.parseURL=n(10).parseURL,d.basicURLParse=n(10).basicURLParse,d.serializeURL=n(10).serializeURL,d.serializeHost=n(10).serializeHost,d.serializeInteger=n(10).serializeInteger,d.serializeURLOrigin=n(10).serializeURLOrigin,d.setTheUsername=n(10).setTheUsername,d.setThePassword=n(10).setThePassword,d.cannotHaveAUsernamePasswordPort=n(10).cannotHaveAUsernamePasswordPort,d.percentDecode=n(62).percentDecode},function(e,d,n){'use strict';var i=n(5),a=i.JSONSchema,u=n(173),p=u.BASE64_REGEXP,t=new a({type:'object',properties:{kty:{type:'string',enum:['RSA','EC','oct']},use:{type:'string',enum:['sig','enc']},key_ops:{type:'array',items:{enum:['sign','verify','encrypt','decrypt','wrapKey','unwrapKey','deriveKey','deriveBits']}},alg:{type:'string',enum:['HS256','HS384','HS512','RS256','RS384','RS512','ES256','ES384','ES512','PS256','PS384','PS512','none']},kid:{type:'string'},x5u:{type:'string'},x5c:{type:'array'},x5t:{type:'string'}}});e.exports=t},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}function a(e,d){if(!e)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return d&&('object'==typeof d||'function'==typeof d)?d:e}function u(e,d){if('function'!=typeof d&&null!==d)throw new TypeError('Super expression must either be null or a function, not '+typeof d);e.prototype=Object.create(d&&d.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),d&&(Object.setPrototypeOf?Object.setPrototypeOf(e,d):e.__proto__=d)}var p=function(){function e(e,d){for(var n=0,i;n']=[f],0<=o(d,'sameAs')&&(this.propertyActions['']=[function(e,d,n,i,a){return e.equate(d,i),!0}]),0<=o(d,'InverseFunctionalProperty')&&(this.classActions['<'+g+'InverseFunctionalProperty>']=[function(e,d,n,i,a){return e.newPropertyAction(d,t)}]),0<=o(d,'FunctionalProperty')&&(this.classActions['<'+g+'FunctionalProperty>']=[function(e,d,n,i,a){return e.newPropertyAction(d,p)}])}},{key:'add',value:function e(n,a,u,p){var t;if(1===arguments.length){if(n instanceof Array)for(t=0;tt;t++){var s=this.index[t],g=l[t];s[g]||(s[g]=[]),s[g].push(f)}return this.statements.push(f),f}},{key:'addAll',value:function e(d){var n=this;d.forEach(function(e){n.add(e.subject,e.predicate,e.object,e.graph)})}},{key:'any',value:function e(d,n,i,a){var u=this.anyStatementMatching(d,n,i,a);if(null!=u)return null==d?u.subject:null==n?u.predicate:null==i?u.object:void 0}},{key:'anyValue',value:function e(d,n,i,a){var u=this.any(d,n,i,a);return u?u.value:void 0}},{key:'anyStatementMatching',value:function e(d,n,i,a){var u=this.statementsMatching(d,n,i,a,!0);return u&&0!==u.length?u[0]:void 0}},{key:'canon',value:function e(d){if(!d)return d;var n=this.redirections[d.hashString()];return n?n:d}},{key:'check',value:function e(){this.checkStatementList(this.statements);for(var d=0,n;4>d;d++)for(var i in n=this.index[d],n)n.hasOwnProperty(i)&&this.checkStatementList(n[i],d)}},{key:'checkStatementList',value:function e(d,n){for(var i=['subject','predicate','object','why'],a=' found in '+i[n]+' index.',u=0,t;uo;o++){var p=this.canon(f[o]),l=p.hashString();this.index[o][l]&&r(this.index[o][l],t)}if(!r(this.statements,t))throw new Error('Statement list does not statement '+t+'@'+t.why+a)}}},{key:'close',value:function e(){return this}},{key:'copyTo',value:function e(d,n,a){a||(a=[]);var u=this.statementsMatching(d);-1!==o(a,'two-direction')&&u.concat(this.statementsMatching(void 0,void 0,d));for(var p=0,i;pa?this.replaceWith(i,n):this.replaceWith(n,i))}},{key:'formula',value:function e(n){return new d(n)}},{key:'match',value:function e(d,n,i,a){return this.statementsMatching(c.fromValue(d),c.fromValue(n),c.fromValue(i),c.fromValue(a))}},{key:'mentionsURI',value:function e(d){var n='<'+d+'>';return!!this.subjectIndex[n]||!!this.objectIndex[n]||!!this.predicateIndex[n]}},{key:'newExistential',value:function e(d){if(!d)return this.bnode();var n=this.sym(d);return this.declareExistential(n)}},{key:'newPropertyAction',value:function e(d,n){var a=d.hashString();this.propertyActions[a]||(this.propertyActions[a]=[]),this.propertyActions[a].push(n);for(var u=this.statementsMatching(void 0,d,void 0),p=!1,t=0;ti;i++){var a=this.canon(n[i]),u=a.hashString();this.index[i][u]&&s(this.index[i][u],d)}return s(this.statements,d),this}},{key:'removeStatements',value:function e(d){for(var n=0;nt;t++)p(this.index[t]);if(this.redirections[a]=n,d.uri){if(this.aliases[u]||(this.aliases[u]=[]),this.aliases[u].push(d),this.aliases[a])for(t=0;tm;m++)r[m]=this.canon(c.fromValue(f[m])),r[m]?(s.push(m),o[m]=r[m].hashString()):l.push(m);if(0===s.length)return this.statements;if(1===s.length)return m=s[0],p=this.index[m][o[m]],p&&t&&1: Bad syntax: '+i+'\nat: "'+x(n,a,a+30)+'"'}function l(e){var d='',n=new S(e);try{for(;!0;){var i=n.next();if('\r'!=i)var d=d+i}}catch(d){if(d!=k)throw d}return d}function s(e){}var m=String.prototype,c={encode:function e(d){d=d.replace(/\r\n/g,'\n');for(var i='',a=0,n;an?i+=f(n):127n?(i+=f(192|n>>6),i+=f(128|63&n)):(i+=f(224|n>>12),i+=f(128|63&n>>6),i+=f(128|63&n));return i},decode:function e(d){for(var n='',a=0,i;ai?(n+=f(i),a++):191i?(n+=f((31&i)<<6|63&d.charCodeAt(a+1)),a+=2):(n+=f((15&i)<<12|(63&d.charCodeAt(a+1))<<6|63&d.charCodeAt(a+2)),a+=3);return n}},h='http://www.w3.org/2000/10/swap/log#forSome',g='http://www.w3.org/2000/10/swap/log#forAll',y='http://www.w3.org/2000/10/swap/log#',b=function e(d){return d},_=function e(d){return d},v=function e(d){if(0?@[\\]^`{|}~',J=W+':',X='http://www.w3.org/1999/02/22-rdf-syntax-ns#',K='#',Y=/^[ \t]*(#[^\n]*)?\r?\n/g,G=/^[ \t]*(#[^\n]*)?$/g,Q=/^[ \t]*/g,Z=/^[-+]?[0-9]+/g,ee=/^([-+]?[0-9]+)(\.[0-9]+)?(e[-+]?[0-9]+)?/g,de=/^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9](T[0-9][0-9]:[0-9][0-9](:[0-9][0-9](\.[0-9]*)?)?)?Z?/,ne=/^[0-9]+/g,ie=/[\\\r\n\"]/g,ae=/^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*/g;return p.prototype.here=function(e){return this._genPrefix+'_L'+this.lines+'C'+(e-this.startOfLine+1)},p.prototype.formula=function(){return this._formula},p.prototype.loadStream=function(e){return this.loadBuf(e.read())},p.prototype.loadBuf=function(e){return this.startDoc(),this.feed(e),this.endDoc()},p.prototype.feed=function(e){for(var d=e.decode('utf-8'),n=0,i;0<=n;){if(i=this.skipSpace(d,n),0>i)return;var n=this.directiveOrStatement(d,i);if(0>n)throw o(this._thisDoc,this.lines,d,i,'expected directive or statement')}},p.prototype.directiveOrStatement=function(e,d){var n=this.skipSpace(e,d);if(0>n)return n;var i=this.directive(e,n);if(0<=i)return this.checkDot(e,i);var i=this.statement(e,n);return 0<=i?this.checkDot(e,i):i},p.prototype.tok=function(e,d,n){var i='\t\n\x0B\f\r ';if('@'==x(d,n,n+1))var n=n+1;else if(0>u(this.keywords,e))return-1;var a=n+w(e);return x(d,n,a)==e&&0<=W.indexOf(d.charAt(a))?a:-1},p.prototype.directive=function(d,n){var i=this.skipSpace(d,n);if(0>i)return i;var a=new _([]),i=this.tok('bind',d,n);if(0n)throw o(this._thisDoc,this.lines,d,n,'\'@keywords\' needs comma separated list of words');return this.setKeywords(x(a,null,null)),80n)throw o(this._thisDoc,this.lines,d,n,'Bad variable list after @forAll');var p=new S(a);try{for(;!0;){var f=p.next();(0>u(this._variables,f)||0<=u(this._parentVariables,f))&&(this._variables[f]=this._context.newUniversal(f))}}catch(d){if(d!=k)throw d}return n}var i=this.tok('forSome',d,n);if(0n)throw o(this._thisDoc,this.lines,d,n,'Bad variable list after @forSome');var p=new S(a);try{for(;!0;){var f=p.next();this._context.declareExistential(f)}}catch(d){if(d!=k)throw d}return n}var i=this.tok('prefix',d,n);if(0<=i){var r=new _([]),n=this.qname(d,i,r);if(0>n)throw o(this._thisDoc,this.lines,d,i,'expected qname after @prefix');var i=this.uri_ref2(d,n,r);if(0>i)throw o(this._thisDoc,this.lines,d,n,'expected after @prefix _qname_');var t=r[1].uri;if(this._baseURI)var t=R(this._baseURI,t);else I(0<=t.indexOf(':'),'With no base URI, cannot handle relative URI for NS');return I(0<=t.indexOf(':')),this._bindings[r[0][0]]=t,this.bind(r[0][0],e(t)),i}var i=this.tok('base',d,n);if(0<=i){var r=new _([]),n=this.uri_ref2(d,i,r);if(0>n)throw o(this._thisDoc,this.lines,d,i,'expected after @base ');var t=r[0].uri;if(this._baseURI)var t=R(this._baseURI,t);else throw o(this._thisDoc,this.lines,d,i,'With no previous base URI, cannot use relative URI in @base <'+t+'>');return I(0<=t.indexOf(':')),this._baseURI=t,n}return-1},p.prototype.bind=function(e,d){''==e||this._store.setPrefixForURI(e,d)},p.prototype.setKeywords=function(e){null==e?this.keywordsSet=0:(this.keywords=e,this.keywordsSet=1)},p.prototype.startDoc=function(){},p.prototype.endDoc=function(){return this._formula},p.prototype.makeStatement=function(e){e[0].add(e[2],e[1],e[3],this.source),this.statementCount+=1},p.prototype.statement=function(e,d){var n=new _([]),d=this.object(e,d,n);if(0>d)return d;var i=this.property_list(e,d,n[0]);if(0>i)throw o(this._thisDoc,this.lines,e,d,'expected propertylist');return i},p.prototype.subject=function(e,d,n){return this.item(e,d,n)},p.prototype.verb=function(e,d,n){var i=this.skipSpace(e,d);if(0>i)return i;var a=new _([]),i=this.tok('has',e,d);if(0<=i){var d=this.prop(e,i,a);if(0>d)throw o(this._thisDoc,this.lines,e,i,'expected property after \'has\'');return n.push(new b(['->',a[0]])),d}var i=this.tok('is',e,d);if(0<=i){var d=this.prop(e,i,a);if(0>d)throw o(this._thisDoc,this.lines,e,i,'expected after \'is\'');var i=this.skipSpace(e,d);if(0>i){throw o(this._thisDoc,this.lines,e,d,'End of file found, expected property after \'is\'');return i}var d=i,i=this.tok('of',e,d);if(0>i)throw o(this._thisDoc,this.lines,e,d,'expected \'of\' after \'is\' ');return n.push(new b(['<-',a[0]])),i}var i=this.tok('a',e,d);if(0<=i)return n.push(new b(['->',this._store.sym(C)])),i;if('<='==x(e,d,d+2))return n.push(new b(['<-',this._store.sym(y+'implies')])),d+2;if('='==x(e,d,d+1))return'>'==x(e,d+1,d+2)?(n.push(new b(['->',this._store.sym(y+'implies')])),d+2):(n.push(new b(['->',this._store.sym(L)])),d+1);if(':='==x(e,d,d+2))return n.push(new b(['->',y+'becomes'])),d+2;var i=this.prop(e,d,a);if(0<=i)return n.push(new b(['->',a[0]])),i;if('>-'==x(e,d,d+2)||'<-'==x(e,d,d+2))throw o(this._thisDoc,this.lines,e,i,'>- ... -> syntax is obsolete.');return-1},p.prototype.prop=function(e,d,n){return this.item(e,d,n)},p.prototype.item=function(e,d,n){return this.path(e,d,n)},p.prototype.blankNode=function(e){return this._context.bnode(e,this._reason2)},p.prototype.path=function(e,d,n){var i=this.nodeOrLiteral(e,d,n);if(0>i)return i;for(;0<='!^.'.indexOf(x(e,i,i+1));){var a=x(e,i,i+1);if('.'==a){var u=x(e,i+1,i+2);if(!u||0<=J.indexOf(u)&&0>':?<[{('.indexOf(u))break}var p=n.pop(),t=this.blankNode(this.here(i)),i=this.node(e,i+1,n);if(0>i)throw o(this._thisDoc,this.lines,e,i,'EOF found in middle of path syntax');var f=n.pop();'^'==a?this.makeStatement(new b([this._context,f,t,p])):this.makeStatement(new b([this._context,f,p,t])),n.push(t)}return i},p.prototype.anonymousNode=function(e){var d=this._anonymousNodes[e];if(d)return d;var d=this._store.bnode(e);return this._anonymousNodes[e]=d,d},p.prototype.node=function(e,d,n,i){'undefined'==typeof i&&(i=null);var a=i,u=this.skipSpace(e,d);if(0>u)return u;var d=u,p=x(e,d,d+1);if('['==p){var t=this.here(d),u=this.skipSpace(e,d+1);if(0>u)throw o(this._thisDoc,this.lines,e,d,'EOF after \'[\'');if('='==x(e,u,u+1)){var d=u+1,f=new _([]),u=this.objectList(e,d,f);if(0<=u){var a=f[0];if(1u)throw o(this._thisDoc,this.lines,e,d,'EOF when objectList expected after [ = ');if(';'==x(e,u,u+1))var u=u+1}else throw o(this._thisDoc,this.lines,e,d,'objectList expected after [= ')}if(null==a)var a=this.blankNode(t);var d=this.property_list(e,u,a);if(0>d)throw o(this._thisDoc,this.lines,e,u,'property_list expected');var u=this.skipSpace(e,d);if(0>u)throw o(this._thisDoc,this.lines,e,d,'EOF when \']\' expected after [ ');if(']'!=x(e,u,u+1))throw o(this._thisDoc,this.lines,e,u,'\']\' expected');return n.push(a),u+1}if('{'==p){var s=x(e,d+1,d+2);if('$'==s){d+=1;for(var u=d+1,m=new _([]),c=!0,d;1;){if(d=this.skipSpace(e,u),0>d)throw o(this._thisDoc,this.lines,e,d,'needed \'$}\', found end.');if('$}'==x(e,d,d+2)){var u=d+2;break}if(!!c)var c=!1;else if(','==x(e,d,d+1))d+=1;else throw o(this._thisDoc,this.lines,e,d,'expected: \',\'');var h=new _([]),u=this.item(e,d,h);if(0>u)throw o(this._thisDoc,this.lines,e,d,'expected item in set or \'$}\'');m.push(h[0])}return n.push(this._store.newSet(m,this._context)),u}var u=d+1,g=this._parentContext;this._parentContext=this._context;var y=this._anonymousNodes,T=this._parentVariables;this._parentVariables=this._variables,this._anonymousNodes=new v([]),this._variables=this._variables.slice();var N=this._reason2;if(this._reason2=D,null==a)var a=this._store.formula();for(this._context=a;1;){var d=this.skipSpace(e,u);if(0>d)throw o(this._thisDoc,this.lines,e,d,'needed \'}\', found end.');if('}'==x(e,d,d+1)){var u=d+1;break}var u=this.directiveOrStatement(e,d);if(0>u)throw o(this._thisDoc,this.lines,e,d,'expected statement or \'}\'')}return this._anonymousNodes=y,this._variables=this._parentVariables,this._parentVariables=T,this._context=this._parentContext,this._reason2=N,this._parentContext=g,n.push(a.close()),u}if('('==p){var I=this._store.list,s=x(e,d+1,d+2);if('$'==s){var I=this._store.newSet;d+=1}for(var u=d+1,m=new _([]),d;1;){if(d=this.skipSpace(e,u),0>d)throw o(this._thisDoc,this.lines,e,d,'needed \')\', found end.');if(')'==x(e,d,d+1)){var u=d+1;break}var h=new _([]),u=this.item(e,d,h);if(0>u)throw o(this._thisDoc,this.lines,e,d,'expected item in list or \')\'');m.push(h[0])}return n.push(I(m,this._context)),u}var u=this.tok('this',e,d);if(0<=u){throw o(this._thisDoc,this.lines,e,d,'Keyword \'this\' was ancient N3. Now use @forSome and @forAll keywords.');return n.push(this._context),u}var u=this.tok('true',e,d);if(0<=u)return n.push(!0),u;var u=this.tok('false',e,d);if(0<=u)return n.push(!1),u;if(null==a){var u=this.uri_ref2(e,d,n);if(0<=u)return u}return-1},p.prototype.property_list=function(e,d,n){for(;1;){var i=this.skipSpace(e,d);if(0>i){throw o(this._thisDoc,this.lines,e,d,'EOF found when expected verb in property list');return i}if(':-'==x(e,i,i+2)){var d=i+2,a=new _([]),i=this.node(e,d,a,n);if(0>i)throw o(this._thisDoc,this.lines,e,d,'bad {} or () or [] node after :- ');var d=i;continue}var d=i,u=new _([]),i=this.verb(e,d,u);if(0>=i)return d;var p=new _([]),d=this.objectList(e,i,p);if(0>d)throw o(this._thisDoc,this.lines,e,i,'objectList expected');var t=new S(p);try{for(;!0;){var f=t.next(),r=u[0],l=r[0],s=r[1];'->'==l?this.makeStatement(new b([this._context,s,n,f])):this.makeStatement(new b([this._context,s,f,n]))}}catch(d){if(d!=k)throw d}var i=this.skipSpace(e,d);if(0>i){throw o(this._thisDoc,this.lines,e,i,'EOF found in list of objects');return i}if(';'!=x(e,d,d+1))return d;var d=d+1}},p.prototype.commaSeparatedList=function(e,d,n,a){var u=this.skipSpace(e,d);if(0>u){throw o(this._thisDoc,this.lines,e,u,'EOF found expecting comma sep list');return u}if('.'==e.charAt(u))return d;if(a)var u=this.uri_ref2(e,u,n);else var u=this.bareWord(e,u,n);if(0>u)return-1;for(;1;){var d=this.skipSpace(e,u);if(0>d)return d;var i=x(e,d,d+1);if(','!=i)return'.'==i?d:-1;if(a)var u=this.uri_ref2(e,d+1,n);else var u=this.bareWord(e,d+1,n);if(0>u){throw o(this._thisDoc,this.lines,e,u,'bad list content');return u}}},p.prototype.objectList=function(e,d,n){var d=this.object(e,d,n);if(0>d)return-1;for(;1;){var i=this.skipSpace(e,d);if(0>i){throw o(this._thisDoc,this.lines,e,i,'EOF found after object');return i}if(','!=x(e,i,i+1))return i;var d=this.object(e,i+1,n);if(0>d)return d}},p.prototype.checkDot=function(e,d){var n=this.skipSpace(e,d);if(0>n)return n;if('.'==x(e,n,n+1))return n+1;if('}'==x(e,n,n+1))return n;if(']'==x(e,n,n+1))return n;throw o(this._thisDoc,this.lines,e,n,'expected \'.\' or \'}\' or \']\' at end of statement');return d},p.prototype.uri_ref2=function(e,d,n){var i=new _([]),a=this.qname(e,d,i);if(0<=a){var p=i[0],t=p[0],f=p[1];if(null==t){I(0,'not used?');var r=this._baseURI+A}else{var r=this._bindings[t];if(!r){if('_'==t)return n.push(this.anonymousNode(f)),a;throw o(this._thisDoc,this.lines,e,d,'Prefix '+t+' not bound.')}}var l=this._store.sym(r+f);return 0<=u(this._variables,l)?n.push(this._variables[l]):n.push(l),a}var d=this.skipSpace(e,d);if(0>d)return-1;if('?'==e.charAt(d)){var s=new _([]),a=this.variable(e,d,s);return 0'==e.charAt(d)){var c=x(e,m,d);if(this._baseURI)var c=R(this._baseURI,c);else I(0<=c.indexOf(':'),'With no base URI, cannot deal with relative URIs');if('#'==x(e,d-1,d)&&'#'!=x(c,-1,null))var c=c+'#';var l=this._store.sym(c);return 0<=u(this._variables,l)?n.push(this._variables[l]):n.push(l),d+1}var d=d+1}throw o(this._thisDoc,this.lines,e,a,'unterminated URI reference')}else{if(this.keywordsSet){var s=new _([]),a=this.bareWord(e,d,s);if(0>a)return-1;if(0<=u(this.keywords,s[0]))throw o(this._thisDoc,this.lines,e,d,'Keyword "'+s[0]+'" not allowed here.');return n.push(this._store.sym(this._bindings['']+s[0])),a}return-1}},p.prototype.skipSpace=function(e,d){for(var n=' \n\r\t\f\x0B\xA0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u200B\u2028\u2029\u3000',i=d?d:0,a;in.indexOf(a)))'\n'===e.charAt(i)&&++this.lines;else if('#'===e.charAt(i)){for(;;i++){if(i===e.length)return-1;if('\n'===e.charAt(i)){++this.lines;break}};}else return i;return-1},p.prototype.variable=function(e,d,n){var i=this.skipSpace(e,d);if(0>i)return-1;if('?'!=x(e,i,i+1))return-1;var i=i+1,d=i;if(0<='0123456789-'.indexOf(e.charAt(i))){throw o(this._thisDoc,this.lines,e,i,'Varible name can\'t start with \''+e.charAt(i)+'s\'');return-1}for(;dJ.indexOf(e.charAt(d));)var d=d+1;if(null==this._parentContext)throw o(this._thisDoc,this.lines,e,i,'Can\'t use ?xxx syntax for variable in outermost level: '+x(e,i-1,d));return n.push(this._store.variable(x(e,i,d))),d},p.prototype.bareWord=function(e,d,n){var i=this.skipSpace(e,d);if(0>i)return-1;var a=e.charAt(i);if(0<='0123456789-'.indexOf(a))return-1;if(0<=J.indexOf(a))return-1;for(var d=i,d;dJ.indexOf(e.charAt(d));)++d;return n.push(x(e,i,d)),d},p.prototype.qname=function(e,d,n){var d=this.skipSpace(e,d);if(0>d)return-1;var i=e.charAt(d);if(0<='0123456789-+'.indexOf(i))return-1;if(0>J.indexOf(i))for(var a=i,d=d+1,i;dJ.indexOf(i));)var a=a+i,d=d+1;else var a='';if(dJ.indexOf(i));)var a=a+i,d=d+1;return n.push(new b([p,a])),d}return a&&this.keywordsSet&&0>u(this.keywords,a)?(n.push(new b(['',a])),d):-1},p.prototype.object=function(e,d,n){var i=this.subject(e,d,n);if(0<=i)return i;var i=this.skipSpace(e,d);if(0>i)return-1;var d=i,a=null,u=e.charAt(d);if('"'==u||'\''==u){a=e.slice(d,d+3==u+u)?u+u+u:u;var d=d+w(a),p=this.strconst(e,d,a),i=p[0],t=p[1];return n.push(this._store.literal(t)),P('New string const ',t,i),i}return-1},p.prototype.nodeOrLiteral=function(e,d,n){var i=this.node(e,d,n);if(0<=i)return i;var i=this.skipSpace(e,d);if(0>i)return-1;var d=i,a=e.charAt(d);if(0<='-+0987654321'.indexOf(a)){de.lastIndex=0;var u=de.exec(e.slice(d));if(null!=u){var p=u[0];i=d+p.length,0<=p.indexOf('T')?n.push(this._store.literal(p,void 0,this._store.sym(B))):n.push(this._store.literal(p,void 0,this._store.sym(q)))}else{ee.lastIndex=0;var u=ee.exec(e.slice(d));if(null==u)throw o(this._thisDoc,this.lines,e,d,'Bad number or date syntax');i=d+ee.lastIndex;var p=x(e,d,i);0<=p.indexOf('e')?n.push(this._store.literal(parseFloat(p),void 0,this._store.sym(M))):0<=x(e,d,i).indexOf('.')?n.push(this._store.literal(parseFloat(p),void 0,this._store.sym(F))):n.push(this._store.literal(parseInt(p),void 0,this._store.sym(U)))};return i}if('"'==e.charAt(d)){if('"""'==x(e,d,d+3))var t='"""';else var t='"';var d=d+w(t),f=null,r=this.strconst(e,d,t),i=r[0],l=r[1],s=null;if('@'==x(e,i,i+1)){ae.lastIndex=0;var u=ae.exec(e.slice(i+1));if(null==u)throw o(this._thisDoc,startline,e,d,'Bad language code syntax on string literal, after @');var d=ae.lastIndex+i+1,s=x(e,i+1,d),i=d}if('^^'==x(e,i,i+2))var m=new _([]),i=this.uri_ref2(e,i+2,m),f=m[0];return n.push(this._store.literal(l,s,f)),i}return-1},p.prototype.strconst=function(e,d,n){for(var i=d,a='',u=this.lines,d;ia;){var p=x(e,i,i+1),t=p.toLowerCase(),i=i+1;if(''==t)throw o(this._thisDoc,n,e,d,'unterminated string literal(3)');var r=N('0123456789abcdef',t);if(0>r)throw o(this._thisDoc,n,e,d,'bad string literal hex escape');var u=16*u+r,a=a+1}var l=f(u);return new b([i,l])},p.prototype.UEscape=function(e,d,n){for(var i=d,a=0,u='\\U';8>a;){var p=x(e,i,i+1),t=p.toLowerCase(),i=i+1;if(''==t)throw o(this._thisDoc,n,e,d,'unterminated string literal(3)');var f=N('0123456789abcdef',t);if(0>f)throw o(this._thisDoc,n,e,d,'bad string literal hex escape');var u=u+t,a=a+1}var r=O('0x'+x(u,2,10)-0);return new b([i,r])},r.prototype.toString=function(){var e=this._str,d=this._i,n=0;if(60: Bad syntax (%s) at ^ in:\n"%s%s^%s%s"'%new b([this.lines+1,this._uri,this._why,i,x(e,n,d),x(e,d,d+60),a])},n}();e.exports=p},function(e,d,n){'use strict';function i(e){return e&&e.__esModule?e:{default:e}}function a(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}function u(e,d,n,i){function a(e,d){return e.nvars===d.nvars?e.index.length-d.index.length:e.nvars-d.nvars}var u=function e(d){var n='',i;for(i in d)d.hasOwnProperty(i)&&(n+=' '+i+' -> '+d[i]);return n},p=function e(d){var a='Bindings: ',p=d.length,n;for(n=0;ne)return this.originalCallback(d);for(n=0;nf;f++){var r=u[f];if(r.uri&&r.uri===o);else if(r.isVar&&void 0===a[r])n.nvars++;else{if(r=s(u[f],a),d.redirections[r.hashString()]&&(r=d.redirections[r.hashString()]),p=i[f][r.hashString()],!p)return n.index=[],!1;(null===n.index||n.index.length>p.length)&&(n.index=p)}}return null===n.index&&(n.index=d.statements),!0},v=0,b=function e(a,p,t,o,l,s,m){r.debug('Match begins, Branch count now: '+m.count+' for '+m.pattern_debug);var h=a.fetcher?a.fetcher:null,g=p.statements;if(0===g.length){if(r.debug('FOUND MATCH WITH BINDINGS:'+u(t)),0===p.optional.length)m.reportMatch(t);else{r.debug('OPTIONAL: '+p.optional);var _=new c(d,t),x=[],k;for(k=0;k in query: '+i),e(a,p,t,o,l,s,m)})};for(S=0;Se||isNaN(e))throw TypeError('n must be a positive number');return this._maxListeners=e,this},n.prototype.emit=function(e){var d,n,t,f,r,i;if(this._events||(this._events={}),'error'===e&&(!this._events.error||u(this._events.error)&&!this._events.error.length))if(d=arguments[1],d instanceof Error)throw d;else{var o=new Error('Uncaught, unspecified "error" event. ('+d+')');throw o.context=d,o}if(n=this._events[e],p(n))return!1;if(a(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:f=Array.prototype.slice.call(arguments,1),n.apply(this,f);}else if(u(n))for(f=Array.prototype.slice.call(arguments,1),i=n.slice(),t=i.length,r=0;ri&&(this._events[e].warned=!0,console.error('(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.',this._events[e].length),'function'==typeof console.trace&&console.trace())),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(e,d){function n(){this.removeListener(e,n),i||(i=!0,d.apply(this,arguments))}if(!a(d))throw TypeError('listener must be a function');var i=!1;return n.listener=d,this.on(e,n),this},n.prototype.removeListener=function(e,d){var n,p,t,f;if(!a(d))throw TypeError('listener must be a function');if(!this._events||!this._events[e])return this;if(n=this._events[e],t=n.length,p=-1,n===d||a(n.listener)&&n.listener===d)delete this._events[e],this._events.removeListener&&this.emit('removeListener',e,d);else if(u(n)){for(f=t;0p)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(p,1),this._events.removeListener&&this.emit('removeListener',e,d)}return this},n.prototype.removeAllListeners=function(e){var d,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(d in this._events)'removeListener'!==d&&this.removeAllListeners(d);return this.removeAllListeners('removeListener'),this._events={},this}if(n=this._events[e],a(n))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},n.prototype.listeners=function(e){var d;return d=this._events&&this._events[e]?a(this._events[e])?[this._events[e]]:this._events[e].slice():[],d},n.prototype.listenerCount=function(e){if(this._events){var d=this._events[e];if(a(d))return 1;if(d)return d.length}return 0},n.listenerCount=function(e,d){return e.listenerCount(d)}},function(e,d,n){'use strict';(function(d){function n(e,n,a,u){if('function'!=typeof e)throw new TypeError('"callback" argument must be a function');var p=arguments.length,t,f;switch(p){case 0:case 1:return d.nextTick(e);case 2:return d.nextTick(function d(){e.call(null,n)});case 3:return d.nextTick(function d(){e.call(null,n,a)});case 4:return d.nextTick(function d(){e.call(null,n,a,u)});default:for(t=Array(p-1),f=0;f=n||65<=n&&90>=n||95===n||97<=n&&122>=n?u(n):p(n);return d}function o(e,n=void 0){let a='utf-8';n!==void 0&&(a=n);let u='';for(const[p,i]of e.entries()){const e=r(d.from(i[0]));let n=i[1];2{if(200<=d.status&&300>d.status)return d;let n=`${e}: ${d.status} ${d.statusText}`,i=new Error(n);throw i.response=d,i.statusCode=d.status,i}}e.exports=i},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var a=function(){function e(e,d){for(var n=0,i;n + * @license MIT + */function i(e,d){if(e===d)return 0;for(var n=e.length,a=d.length,u=0,i=r(n,a);u]+\?>/)){d.addStatus(i.req,'Has an XML declaration. We\'ll assume it\'s XHTML as the content-type was text/html.\n');var p=new k(this.response);return p.parse(d,n,i,a)}if(n.match(/.*/)){d.addStatus(i.req,'Has XHTML DOCTYPE. Switching to XHTMLHandler.\n');var t=new k(this.response);return t.parse(d,n,i,a)}if(n.match(/[^(/)){d.addStatus(i.req,'Has default namespace for XHTML, so switching to XHTMLHandler.\n');var f=new k(this.response);return f.parse(d,n,i,a)}var r=/([\s\S]+?)<\/title>/im.exec(n);return r&&u.add(i.resource,_.dc('title'),u.literal(r[1]),i.resource),u.add(i.resource,_.rdf('type'),_.link('WebPage'),d.appNode),d.addStatus(i.req,'non-XML HTML document, not parsed for data.'),d.doneFetch(i,this.response)}}],[{key:'toString',value:function e(){return'HTMLHandler'}},{key:'register',value:function e(d){d.mediatypes['text/html']={q:0.9}}}]),d}(w);T.pattern=/text\/html/;var N=function(e){function d(){return u(this,d),i(this,(d.__proto__||Object.getPrototypeOf(d)).apply(this,arguments))}return a(d,e),p(d,[{key:'parse',value:function e(d,n,i,a){if(n.match(/\s*<\?xml\s+version\s*=[^<>]+\?>/)){d.addStatus(i.req,'Warning: '+i.resource+' has an XML declaration. We\'ll assume it\'s XML but its content-type wasn\'t XML.\n');var u=new S(this.response);return u.parse(d,n,i,a)}if(n.slice(0,500).match(/xmlns:/)){d.addStatus(i.req,'May have an XML namespace. We\'ll assume it\'s XML but its content-type wasn\'t XML.\n');var p=new S(this.response);return p.parse(d,n,i,a)}return d.addStatus(i.req,'Plain text document, no known RDF semantics.'),d.doneFetch(i,this.response)}}],[{key:'toString',value:function e(){return'TextHandler'}},{key:'register',value:function e(d){d.mediatypes['text/plain']={q:0.5}}}]),d}(w);N.pattern=/text\/plain/;var I=function(e){function d(){return u(this,d),i(this,(d.__proto__||Object.getPrototypeOf(d)).apply(this,arguments))}return a(d,e),p(d,[{key:'parse',value:function e(d,n,i,a){var u=d.store,t=f(u,u,i.original.uri,i.original.uri,null,null,'',null);try{t.loadBuf(n)}catch(e){var p='Error trying to parse '+i.resource+' as Notation3:\n'+e+':\n'+e.stack;return d.failFetch(i,p,'parse_error',a)}return d.addStatus(i.req,'N3 parsed: '+t.statementCount+' triples in '+t.lines+' lines.'),d.store.add(i.original,_.rdf('type'),_.link('RDFDocument'),d.appNode),d.doneFetch(i,this.response)}}],[{key:'toString',value:function e(){return'N3Handler'}},{key:'register',value:function e(d){d.mediatypes['text/n3']={q:'1.0'},d.mediatypes['text/turtle']={q:1}}}]),d}(w);I.pattern=/(application|text)\/(x-)?(rdf\+)?(n3|turtle)/;var j={RDFXMLHandler:x,XHTMLHandler:k,XMLHandler:S,HTMLHandler:T,TextHandler:N,N3Handler:I},O=function(){function e(d){var n=this,i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if(u(this,e),this.store=d,this.timeout=i.timeout||3e4,this._fetch=i.fetch||y,!this._fetch)throw new Error('No _fetch function availble for Fetcher');this.appNode=this.store.bnode(),this.store.fetcher=this,this.requested={},this.timeouts={},this.redirectedTo={},this.fetchQueue={},this.fetchCallbacks={},this.nonexistent={},this.lookedUp={},this.handlers=[],this.mediatypes={"image/*":{q:0.9},"*/*":{q:0.1}},h.callbackify(this,['request','fail','refresh','retract','done']),Object.keys(j).map(function(e){return n.addHandler(j[e])})}return p(e,[{key:'load',value:function e(d){var n=this,i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if(d instanceof Array)return Promise.all(d.map(function(e){return n.load(e,Object.assign({},i))}));var a=d.uri||d;return a=a.split('#')[0],i=this.initFetchOptions(a,i),this.pendingFetchPromise(a,i.baseURI,i)}},{key:'pendingFetchPromise',value:function e(d,n,i){var a=this,u;return!i.force&&this.fetchQueue[n]?u=this.fetchQueue[n]:(u=Promise.race([this.setRequestTimeout(d,i),this.fetchUri(d,i)]),this.fetchQueue[n]=u,this.cleanupFetchRequest(n,i,this.timeout)),u.then(function(e){return d in a.timeouts&&(a.timeouts[d].forEach(clearTimeout),delete a.timeouts[d]),e})}},{key:'cleanupFetchRequest',value:function e(d,n,i){var a=this;this.timeouts[d]=(this.timeouts[d]||[]).concat(setTimeout(function(){a.isPending(d)||delete a.fetchQueue[d]},i))}},{key:'initFetchOptions',value:function d(n,i){var a=this.store,u=!i.method||'GET'===i.method.toUpperCase();u||(i.force=!0),i.resource=a.sym(n),i.baseURI=i.baseURI||n,i.original=a.sym(i.baseURI),i.req=a.bnode(),i.headers=i.headers||{},i.contentType&&(i.headers['content-type']=i.contentType),i.force&&(i.cache='no-cache');var p=this.acceptString();i.headers.accept=p;var t=e.offlineOverride(n);i.requestedURI=t,e.withCredentials(t,i)&&(i.credentials='include');var f=e.proxyIfNecessary(t);return t!==f&&(i.proxyUsed=!0),i.actualProxyURI=f,i}},{key:'fetchUri',value:function d(n,i){var a=this;if(!n)return Promise.reject(new Error('Cannot fetch an empty uri'));if(e.unsupportedProtocol(n))return this.failFetch(i,'fetcher: Unsupported protocol','unsupported_protocol');var u=this.getState(n);if(!i.force){if('fetched'===u)return Promise.resolve(this.doneFetch(i,{status:200,ok:!0,statusText:'Already loaded into quadstore.'}));if('failed'===u){var p='Previously failed: '+this.requested[n],t={url:n,status:this.requested[n],statusText:p,responseText:p,headers:{},ok:!1,body:null,bodyUsed:!1,size:0,timeout:0};return this.failFetch(i,p,this.requested[n],t)}}else delete this.nonexistent[n];this.fireCallbacks('request',[n]),this.requested[n]=!0,i.noMeta||this.saveRequestMetadata(n,i);var f=i.actualProxyURI;return this._fetch(f,i).then(function(e){return a.handleResponse(e,n,i)},function(e){var d={url:f,status:999,statusText:(e.name||'network failure')+': '+(e.errno||e.code||e.type),responseText:e.message,headers:{},ok:!1,body:null,bodyUsed:!1,size:0,timeout:0};return console.log('Fetcher: <'+f+'> Non-HTTP fetch error: '+e),a.failFetch(i,'fetch failed: '+e,999,d)})}},{key:'nowOrWhenFetched',value:function e(d,n,i){var a=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{};d=d.uri||d,'function'==typeof n?i=n:'undefined'==typeof n||(n instanceof r?a.referringTerm=n:a=n),this.load(d,a).then(function(e){if(i)if(!e){var n='@@ nowOrWhenFetched: no response object!';console.log(n),i(!1,n)}else if(e.ok)i(!0,'OK',e);else{console.log('@@@ fetcher.js Should not take this path !!!!!!!!!!!!');var a='HTTP error: Status '+e.status+' ('+e.statusText+')';e.responseText&&(a+=' '+e.responseText),console.log(a+' fetching '+d),i(!1,a,e)}},function(e){var n=e.message||e.statusText;n='Failed to load <'+d+'> '+n,console.log(n),e.response&&e.response.status&&(n+=' status: '+e.response.status),i(!1,n,e.response)})}},{key:'addStatus',value:function e(d,n){var i=new Date;n='['+i.getHours()+':'+i.getMinutes()+':'+i.getSeconds()+'.'+i.getMilliseconds()+'] '+n;var a=this.store,u=a.the(d,_.link('status'));u&&u.append?u.append(a.literal(n)):t.warn('web.js: No list to add to: '+u+','+n)}},{key:'failFetch',value:function e(d,n,i,a){this.addStatus(d.req,n),d.noMeta||this.store.add(d.original,_.link('error'),n);var u=(d.method||'GET').toUpperCase(),p='GET'===u||'HEAD'===u;p&&(d.resource.sameTerm(d.original)?console.log('@@ Recording '+u+' failure for '+d.original+': '+i):console.log('@@ Recording failure '+u+' original '+d.original+'( as '+d.resource+') : '+i),this.requested[c.docpart(d.original.uri)]=i,this.fireCallbacks('fail',[d.original.uri,n]));var t=new Error('Fetcher: '+n);return t.status=i,t.statusText=n,t.response=a,Promise.reject(t)}},{key:'linkData',value:function e(d,n,i,a,u){if(i){var p=this.store,t=p.sym(c.join(i,d.uri)),f;if('alternate'===n||'seeAlso'===n||'meta'===n||'describedby'===n){if(t.uri===d.uri)return;f=_.rdfs('seeAlso')}else f='type'===n?p.sym('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'):p.sym(c.join(encodeURIComponent(n),'http://www.iana.org/assignments/link-relations/'));u?p.add(t,f,d,a):p.add(d,f,t,a)}}},{key:'parseLinkHeader',value:function e(d,n,a){if(d)for(var u=/<[^>]*>\s*(\s*;\s*[^()<>@,;:"/[\]?={} \t]+=(([^\(\)<>@,;:"\/\[\]\?={} \t]+)|("[^"]*")))*(,|$)/g,t=/[^\(\)<>@,;:"\/\[\]\?={} \t]+=(([^\(\)<>@,;:"\/\[\]\?={} \t]+)|("[^"]*"))/g,f=d.match(u),r=0;r<f.length;r++)for(var i=f[r].split('>'),o=i[0].substring(1),l=i[1],m=l.match(t),s=0;s<m.length;s++){var c=m[s],p=c.split('='),h=p[1].replace(/["']/g,'');this.linkData(n,h,o,a)}}},{key:'doneFetch',value:function e(d,n){return this.addStatus(d.req,'Done.'),this.requested[d.original.uri]='done',this.fireCallbacks('done',[d.original.uri]),n.req=d.req,n}},{key:'nowKnownAs',value:function e(d,n){this.lookedUp[d.uri]?!this.lookedUp[n.uri]&&this.lookUpThing(n,d):this.lookedUp[n.uri]&&!this.lookedUp[d.uri]&&this.lookUpThing(d,n)}},{key:'putBack',value:function e(d){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};d=d.uri||d;var i=new r(d).doc();return n.contentType=n.contentType||'text/turtle',n.data=g(i,this.store,i.uri,n.contentType),this.webOperation('PUT',d,n)}},{key:'webCopy',value:function e(d,n,i){var a=this;return this.webOperation('GET',d).then(function(e){return a.webOperation('PUT',n,{data:e.responseText,contentType:i})})}},{key:'delete',value:function e(d,n){var i=this;return this.webOperation('DELETE',d,n).then(function(e){return i.requested[d]=404,i.nonexistent[d]=!0,i.unload(i.store.sym(d)),e})}},{key:'createContainer',value:function e(d,n,i){var a={"content-type":'text/turtle',link:_.ldp('BasicContainer')+'; rel="type"'};n&&(a.slug=n);var u={headers:a};return i&&(u.body=i),this.webOperation('POST',d,u)}},{key:'webOperation',value:function d(n,i){var a=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};a.method=n,a.body=a.data||a.body,a.force=!0;var u=this;if(a.body&&!a.contentType)throw new Error('Web operation sending data must have a defined contentType.');return a.contentType&&(a.headers=a.headers||{},a.headers['content-type']=a.contentType),e.withCredentials(i,a)&&(a.credentials='include'),new Promise(function(e,d){u._fetch(i,a).then(function(a){if(a.ok)a.body?a.text().then(function(d){a.responseText=d,e(a)}):e(a);else{var u='Web error: '+a.status;a.statusText&&(u+=' ('+a.statusText+')'),u+=' on '+n+' of <'+i+'>',a.responseText&&(u+=': '+a.responseText);var p=new Error(u);p.response=a,d(p)}},function(e){var a='Fetch error for '+n+' of <'+i+'>:'+e;d(new Error(a))})})}},{key:'lookUpThing',value:function e(d,n){var i=this,a=this.store.uris(d);return a=a.map(function(e){return c.docpart(e)}),a.forEach(function(e){i.lookedUp[e]=!0}),this.load(a,{referringTerm:n})}},{key:'getHeader',value:function e(d,n){for(var i=this.store,a=i.each(void 0,_.link('requestedURI'),d.uri),u=0,p;u<a.length;u++)if(p=a[u],void 0!==p){var t=i.any(p,_.link('response'));if(void 0!==t){var f=i.each(t,_.httph(n.toLowerCase()));return f.length?f.map(function(e){return e.value}):[]}}}},{key:'saveRequestMetadata',value:function e(d,n){var i=n.req,a=this.store,u=n.referringTerm;this.addStatus(n.req,'Accept: '+n.headers.accept),u&&u.uri&&a.add(d,_.link('requestedBy'),u.uri,this.appNode),n.original&&n.original.uri!==d&&a.add(i,_.link('orginalURI'),a.literal(n.original.uri),this.appNode);var p=new Date,t='['+p.getHours()+':'+p.getMinutes()+':'+p.getSeconds()+'] ';a.add(i,_.rdfs('label'),a.literal(t+' Request for '+d),this.appNode),a.add(i,_.link('requestedURI'),a.literal(d),this.appNode),a.add(i,_.link('status'),a.collection(),this.appNode)}},{key:'saveResponseMetadata',value:function e(d,n){var i=this.store,a=i.bnode();return(i.add(n.req,_.link('response'),a,a),i.add(a,_.http('status'),i.literal(d.status),a),i.add(a,_.http('statusText'),i.literal(d.statusText),a),!n.resource.uri.startsWith('http'))?a:(d.headers.forEach(function(e,d){i.add(a,_.httph(d),e,a),'content-type'===d&&i.add(n.resource,_.rdf('type'),h.mediaTypeClass(e),a)}),a)}},{key:'objectRefresh',value:function e(d){var n=this.store.uris(d);if('undefined'!=typeof n)for(var a=0;a<n.length;a++)this.refresh(this.store.sym(c.docpart(n[a])))}},{key:'refresh',value:function e(d,n){this.fireCallbacks('refresh',arguments),this.nowOrWhenFetched(d,{force:!0,clearPreviousData:!0},n)}},{key:'retract',value:function e(d){this.store.removeMany(void 0,void 0,void 0,d),d.uri&&delete this.requested[c.docpart(d.uri)],this.fireCallbacks('retract',arguments)}},{key:'getState',value:function e(d){return'undefined'==typeof this.requested[d]?'unrequested':!0===this.requested[d]?'requested':'done'===this.requested[d]?'fetched':'redirected'===this.requested[d]?this.getState(this.redirectedTo[d]):'failed'}},{key:'isPending',value:function e(d){return!0===this.requested[d]}},{key:'unload',value:function e(d){this.store.removeDocument(d),delete this.requested[d.uri]}},{key:'addHandler',value:function e(d){this.handlers.push(d),d.register(this)}},{key:'retryNoCredentials',value:function e(d,n){console.log('web: Retrying with no credentials for '+n.resource),n.retriedWithNoCredentials=!0,delete this.requested[d];var i=Object.assign({},n,{withCredentials:!1});return this.addStatus(n.req,'Abort: Will retry with credentials SUPPRESSED to see if that helps'),this.load(d,i)}},{key:'isCrossSite',value:function e(d){if('undefined'==typeof document||!document.location)return!1;var n=c.hostpart,i=''+document.location;return n(i)&&n(d)&&n(i)!==n(d)}},{key:'handleError',value:function d(n,i,a){if(this.isCrossSite(i)){if(a.withCredentials&&!a.retriedWithNoCredentials)return this.retryNoCredentials(i,a);var u=e.crossSiteProxy(i);if(u&&!a.proxyUsed)return console.log('web: Direct failed so trying proxy '+u),this.redirectToProxy(u,a)}var p;return n.message?p='Fetch error: '+n.message:(p=n.statusText,n.responseText&&(p+=' '+n.responseText)),this.failFetch(a,p,n.status||998,n)}},{key:'addType',value:function e(d,n,i,a){var u=n;if(a){var p=i.any(u,_.link('requestedURI'));p&&p!==a&&i.add(i.sym(a),_.rdf('type'),d,this.appNode)}for(;;){var t=i.any(u,_.link('requestedURI'));if(t&&t.value&&i.add(i.sym(t.value),_.rdf('type'),d,this.appNode),u=i.any(void 0,i.sym('http://www.w3.org/2007/ont/link#redirectedRequest'),u),!u)break;var f=i.any(u,i.sym('http://www.w3.org/2007/ont/link#response'));if(!f)break;var r=i.any(f,i.sym('http://www.w3.org/2007/ont/http#status'));if(!r)break;if('301'!==r&&'302'!==r)break}}},{key:'handleResponse',value:function e(d,n,i){var a=this,u=this.store,p=d.headers,t=i.req,f=this.saveResponseMetadata(d,i),r=this.normalizedContentType(i,p)||'',o=p.get('content-location');if(0===d.status)return console.log('Masked error - status 0 for '+n),this.handleError(d,n,i);if(400<=d.status)return 404===d.status&&(this.nonexistent[i.original.uri]=!0,this.nonexistent[n]=!0),this.saveErrorResponse(d,f).then(function(){var e=i.resource+' '+d.statusText;return a.failFetch(i,e,d.status,d)});var l=null,s=null;if(o&&(s=c.join(o,n),s!==n&&(l=s)),200===d.status){this.addType(_.link('Document'),t,u,n),l&&this.addType(_.link('Document'),t,u,l),i.clearPreviousData&&u.removeDocument(i.resource);var m=r.includes('image/')||r.includes('application/pdf');r&&m&&(this.addType(u.sym('http://purl.org/dc/terms/Image'),t,u,n),l&&this.addType(u.sym('http://purl.org/dc/terms/Image'),t,u,l))}if(o){if(!i.force&&l&&'done'===this.requested[s])return this.doneFetch(i,d);this.requested[s]=!0}this.parseLinkHeader(p.get('link'),i.original,t);var h=this.handlerForContentType(r,d);return h?d.text().then(function(e){return d.responseText=e,h.parse(a,e,i,d)}):(this.addStatus(t,'Fetch over. No data handled.'),this.doneFetch(i,d))}},{key:'saveErrorResponse',value:function e(d,n){var i=this.store;return d.text().then(function(e){10<e.length&&i.add(n,_.http('content'),i.literal(e),n)})}},{key:'handlerForContentType',value:function e(d,n){if(!d)return null;var i=this.handlers.find(function(e){return d.match(e.pattern)});return i?new i(n):null}},{key:'guessContentType',value:function e(d){return b[d.split('.').pop()]}},{key:'normalizedContentType',value:function e(d,n){if(d.forceContentType)return d.forceContentType;var i=n.get('content-type');if(!i||i.includes('application/octet-stream')){var a=this.guessContentType(d.resource.uri);if(a)return a}var u=c.protocol(d.resource.uri);return!i&&['file','chrome'].includes(u)?'text/xml':i}},{key:'redirectToProxy',value:function e(d,n){var i=this;this.addStatus(n.req,'BLOCKED -> Cross-site Proxy to <'+d+'>'),n.proxyUsed=!0;var a=this.store,u=n.req;n.noMeta||(a.add(u,_.link('redirectedTo'),a.sym(d),u),this.addStatus(u,'redirected to new request')),this.requested[n.resource.uri]='redirected',this.redirectedTo[n.resource.uri]=d;var p=Object.assign({},n);return p.baseURI=n.resource.uri,this.fetchUri(d,p).then(function(e){return p.noMeta||a.add(u,_.link('redirectedRequest'),p.req,i.appNode),e})}},{key:'setRequestTimeout',value:function e(d,n){var i=this;return new Promise(function(e){i.timeouts[d]=(i.timeouts[d]||[]).concat(setTimeout(function(){!i.isPending(d)||n.retriedWithNoCredentials||n.proxyUsed||e(i.failFetch(n,'Request to '+d+' timed out','timeout'))},i.timeout))})}},{key:'addFetchCallback',value:function e(d,n){this.fetchCallbacks[d]?this.fetchCallbacks[d].push(n):this.fetchCallbacks[d]=[n]}},{key:'acceptString',value:function e(){var d='';for(var n in this.mediatypes)for(var i in''!=d&&(d+=', '),d+=n,this.mediatypes[n])d+=';'+i+'='+this.mediatypes[n][i];return d}}],[{key:'crossSiteProxy',value:function d(n){return e.crossSiteProxyTemplate?e.crossSiteProxyTemplate.replace('{uri}',encodeURIComponent(n)):void 0}},{key:'offlineOverride',value:function e(d){var n=d,i;return'undefined'!=typeof window&&window.panes&&(i=window.panes.UI)&&i.preferences&&i.preferences.get('offlineModeUsingLocalhost')&&'http://'===n.slice(0,7)&&'localhost/'!==n.slice(7,17)&&(n='http://localhost/'+n.slice(7),t.warn('Localhost kludge for offline use: actually getting <'+n+'>')),n}},{key:'proxyIfNecessary',value:function d(n){var i;if('undefined'!=typeof window&&window.panes&&(i=window.panes.UI)&&i.isExtension)return n;if('undefined'!=typeof $SolidTestEnvironment&&$SolidTestEnvironment.localSiteMap){var a=n.split('/').slice(2),u=function e(d,n){var i=n[d.shift()];return i?'string'==typeof i?i+d.join('/'):d?e(d,i):null:null},p=u(a,$SolidTestEnvironment.localSiteMap);if(p)return p}return e.crossSiteProxyTemplate&&'undefined'!=typeof document&&document.location&&'https:'===(''+document.location).slice(0,6)&&'http:'===n.slice(0,5)?e.crossSiteProxyTemplate.replace('{uri}',encodeURIComponent(n)):n}},{key:'unsupportedProtocol',value:function e(d){var n=c.protocol(d);return'tel'===n||'mailto'===n||'urn'===n}},{key:'withCredentials',value:function e(d){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=d.startsWith('https:');return void 0!==n.withCredentials&&(e=n.withCredentials),e}}]),e}();e.exports=O,e.exports.HANDLERS=j,e.exports.CONTENT_TYPE_BY_EXT=b},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var a=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),u=n(17),p=n(27),t=n(42),f=n(2),r=n(7),o=n(11);if('undefined'==typeof l)var l={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12};var s=function(){function e(d,n){i(this,e),this.options=n||{},this.kb=d,this.target=n.target||{graph:{subjects:{},prefixes:{},terms:{}}},this.blankNodes=[],this.htmlOptions={selfClosing:'br img input area base basefont col colgroup source wbr isindex link meta param hr'},this.theOne='_:'+new Date().getTime(),this.language=null,this.vocabulary=null,this.blankCounter=0,this.langAttributes=[{namespaceURI:'http://www.w3.org/XML/1998/namespace',localName:'lang'}],this.inXHTMLMode=!1,this.absURIRE=/[\w\_\-]+:\S+/,this.finishedHandlers=[],this.init()}return a(e,[{key:'addTriple',value:function e(d,n,i,a){var u,p,f,r;u='undefined'==typeof n?t.namedNode(this.options.base):this.toRDFNodeObject(n),f=this.toRDFNodeObject(i),p=this.toRDFNodeObject(a),r=t.namedNode(this.options.base),this.kb.add(u,f,p,r)}},{key:'ancestorPath',value:function e(d){for(var n='';d&&d.nodeType!==l.DOCUMENT_NODE;)n='/'+d.localName+n,d=d.parentNode;return n}},{key:'copyMappings',value:function e(d){var n={};for(var i in d)n[i]=d[i];return n}},{key:'copyProperties',value:function e(){}},{key:'deriveDateTimeType',value:function d(n){for(var a=0,i;a<e.dateTimeTypes.length;a++)if(i=e.dateTimeTypes[a].pattern.exec(n),i&&i[0].length===n.length)return e.dateTimeTypes[a].type;return null}},{key:'init',value:function e(){}},{key:'newBlankNode',value:function e(){return this.blankCounter++,'_:'+this.blankCounter}},{key:'newSubjectOrigin',value:function e(d,n){}},{key:'parseCURIE',value:function d(n,i,a){var u=n.indexOf(':'),p;if(0<=u){var t=n.substring(0,u);if(''===t)return p=i[''],p?p+n.substring(u+1):null;if('_'===t)return'_:'+n.substring(u+1);if(e.NCNAME.test(t)&&(p=i[t],p))return p+n.substring(u+1)}return null}},{key:'parseCURIEOrURI',value:function e(d,n,i){var a=this.parseCURIE(d,n,i);return a?a:this.resolveAndNormalize(i,d)}},{key:'parsePredicate',value:function e(d,n,i,a,u,p){if(''===d)return null;var t=this.parseTermOrCURIEOrAbsURI(d,n,p?null:i,a,u);return t&&0===t.indexOf('_:')?null:t}},{key:'parsePrefixMappings',value:function e(d,n){for(var a=this.tokenize(d),u=null,p=0;p<a.length;p++)':'===a[p][a[p].length-1]?u=a[p].substring(0,a[p].length-1):u&&(n[u]=this.options.base?r.join(a[p],this.options.base):a[p],u=null)}},{key:'parseSafeCURIEOrCURIEOrURI',value:function e(d,n,i){return d=this.trim(d),'['===d.charAt(0)&&']'===d.charAt(d.length-1)?(d=d.substring(1,d.length-1),d=d.trim(d),0===d.length?null:'_:'===d?this.theOne:this.parseCURIE(d,n,i)):this.parseCURIEOrURI(d,n,i)}},{key:'parseTermOrCURIEOrAbsURI',value:function e(d,n,i,a,u){d=this.trim(d);var p=this.parseCURIE(d,a,u);if(p)return p;if(i){if(n&&!this.absURIRE.exec(d))return n+d;var t=i[d];if(t)return t;var f=d.toLowerCase();if(t=i[f],t)return t}return this.absURIRE.exec(d)?this.resolveAndNormalize(u,d):null}},{key:'parseTermOrCURIEOrURI',value:function e(d,n,i,a,u){d=this.trim(d);var p=this.parseCURIE(d,a,u);if(p)return p;var t=i[d];if(t)return t;var f=d.toLowerCase();return(t=i[f],t)?t:n&&!this.absURIRE.exec(d)?n+d:this.resolveAndNormalize(u,d)}},{key:'parseURI',value:function e(d){return d}},{key:'process',value:function d(n,a){var u;n.nodeType===l.DOCUMENT_NODE?(u=n.baseURI,n=n.documentElement,n.baseURI=u,this.setContext(n)):n.parentNode.nodeType===l.DOCUMENT_NODE&&this.setContext(n);var p=[],t=function e(d){if(!d&&a&&a.baseURI)return a.baseURI;var n=d.indexOf('#');return 0<=n&&(d=d.substring(0,n)),a&&a.baseURIMap&&(d=a.baseURIMap(d)),d};for(p.push({current:n,context:this.push(null,t(n.baseURI))});0<p.length;){var f=p.shift();if(f.parent){if(f.context.parent&&f.context.parent.listMapping===f.listMapping)continue;for(var o in f.listMapping){var s=f.listMapping[o];if(0===s.length){this.addTriple(f.parent,f.subject,o,{type:e.objectURI,value:'http://www.w3.org/1999/02/22-rdf-syntax-ns#nil'});continue}for(var m=[],c=0;c<s.length;c++)m.push(this.newBlankNode());for(var h=0;h<m.length;h++)this.addTriple(f.parent,m[h],'http://www.w3.org/1999/02/22-rdf-syntax-ns#first',s[h]),this.addTriple(f.parent,m[h],'http://www.w3.org/1999/02/22-rdf-syntax-ns#rest',{type:e.objectURI,value:h+1<m.length?m[h+1]:'http://www.w3.org/1999/02/22-rdf-syntax-ns#nil'});this.addTriple(f.parent,f.subject,o,{type:e.objectURI,value:m[0]})}continue}var g=f.current,y=f.context,v=!1,b=null,_=null,w=null,x=y.prefixes,k=!1,S=[],T=y.listMapping,N=!y.parent,I=y.language,j=y.vocabulary;u=this.parseURI(t(g.baseURI)),g.item=null;var O=g.getAttributeNode('vocab');if(O){var R=this.trim(O.value);if(0<R.length){j=R;var D=u.spec;this.addTriple(g,D,'http://www.w3.org/ns/rdfa#usesVocabulary',{type:e.objectURI,value:j})}else j=this.vocabulary}for(var E=0,i;E<g.attributes.length;E++)if(i=g.attributes[E],'x'===i.nodeName.charAt(0)&&0===i.nodeName.indexOf('xmlns:')){k||(x=this.copyMappings(x),k=!0);var P=i.nodeName.substring(6),C=e.trim(i.value);x[P]=this.options.base?r.join(C,this.options.base):C}var L=g.getAttributeNode('prefix');L&&(!k&&(x=this.copyMappings(x),k=!0),this.parsePrefixMappings(L.value,x));for(var A=null,V=0;!A&&V<this.langAttributes.length;V++)A=g.getAttributeNodeNS(this.langAttributes[V].namespaceURI,this.langAttributes[V].localName);if(A){var U=e.trim(A.value);I=0<U.length?U:null}var M=g.getAttributeNode('rel'),F=g.getAttributeNode('rev'),q=g.getAttributeNode('typeof'),B=g.getAttributeNode('property'),H=g.getAttributeNode('datatype'),z=this.inHTMLMode?g.getAttributeNode('datetime'):null,W=g.getAttributeNode('content'),J=g.getAttributeNode('about'),X=g.getAttributeNode('src'),K=g.getAttributeNode('resource'),Y=g.getAttributeNode('href'),G=g.getAttributeNode('inlist'),Q=[],Z,ee;if(M){ee=this.tokenize(M.value);for(var de=0;de<ee.length;de++)Z=this.parsePredicate(ee[de],j,y.terms,x,u,this.inHTMLMode&&null!==B),Z&&Q.push(Z)}var ne=[];if(F){ee=this.tokenize(F.value);for(var ie=0;ie<ee.length;ie++)Z=this.parsePredicate(ee[ie],j,y.terms,x,u,this.inHTMLMode&&B),Z&&ne.push(Z)}if(this.inHTMLMode&&(M||F)&&B&&(0===Q.length&&(M=null),0===ne.length&&(F=null)),M||F?(J&&(b=this.parseSafeCURIEOrCURIEOrURI(J.value,x,u)),q&&(w=b),!b&&(g.parentNode.nodeType===l.DOCUMENT_NODE?b=t(g.baseURI):y.parentObject&&(b=t(g.parentNode.baseURI)===y.parentObject?t(g.baseURI):y.parentObject)),K&&(_=this.parseSafeCURIEOrCURIEOrURI(K.value,x,u)),!_&&(Y?_=this.resolveAndNormalize(u,encodeURI(Y.value)):X?_=this.resolveAndNormalize(u,encodeURI(X.value)):q&&!J&&!(this.inXHTMLMode&&('head'===g.localName||'body'===g.localName))&&(_=this.newBlankNode())),q&&!J&&this.inXHTMLMode&&('head'===g.localName||'body'===g.localName)?w=b:q&&!J&&(w=_)):!B||W||H?(J&&(b=this.parseSafeCURIEOrCURIEOrURI(J.value,x,u)),!b&&K&&(b=this.parseSafeCURIEOrCURIEOrURI(K.value,x,u)),!b&&Y&&(b=this.resolveAndNormalize(u,encodeURI(Y.value))),!b&&X&&(b=this.resolveAndNormalize(u,encodeURI(X.value))),!b&&(g.parentNode.nodeType===l.DOCUMENT_NODE?b=t(g.baseURI):(this.inXHTMLMode||this.inHTMLMode)&&('head'===g.localName||'body'===g.localName)?b=t(g.parentNode.baseURI)===y.parentObject?t(g.baseURI):y.parentObject:q?b=this.newBlankNode():y.parentObject&&(b=t(g.parentNode.baseURI)===y.parentObject?t(g.baseURI):y.parentObject,!B&&(v=!0))),q&&(w=b)):(J&&(b=this.parseSafeCURIEOrCURIEOrURI(J.value,x,u),q&&(w=b)),b||g.parentNode.nodeType!==l.DOCUMENT_NODE?!b&&y.parentObject&&(b=t(g.parentNode.baseURI)===y.parentObject?t(g.baseURI):y.parentObject):(b=t(g.baseURI),q&&(w=b)),q&&!w&&(K&&(w=this.parseSafeCURIEOrCURIEOrURI(K.value,x,u)),!w&&Y&&(w=this.resolveAndNormalize(u,encodeURI(Y.value))),!w&&X&&(w=this.resolveAndNormalize(u,encodeURI(X.value))),!w&&(this.inXHTMLMode||this.inHTMLMode)&&('head'===g.localName||'body'===g.localName)&&(w=b),!w&&(w=this.newBlankNode()),_=w)),b&&(J||K||w)){var ae=b;q&&!J&&!K&&_&&(ae=_),this.newSubjectOrigin(g,ae)}if(w){ee=this.tokenize(q.value);for(var ue=0,pe;ue<ee.length;ue++)pe=this.parseTermOrCURIEOrAbsURI(ee[ue],j,y.terms,x,u),pe&&this.addTriple(g,w,e.typeURI,{type:e.objectURI,value:pe})}if(b&&b!==y.parentObject&&(T={},N=!0),_){if(M&&G)for(var te=0,fe;te<Q.length;te++)fe=T[Q[te]],fe||(fe=[],T[Q[te]]=fe),fe.push({type:e.objectURI,value:_});else if(M)for(var re=0;re<Q.length;re++)this.addTriple(g,b,Q[re],{type:e.objectURI,value:_});if(F)for(var oe=0;oe<ne.length;oe++)this.addTriple(g,_,ne[oe],{type:e.objectURI,value:b})}else{if(b&&!_&&(M||F)&&(_=this.newBlankNode()),M&&G)for(var le=0,se;le<Q.length;le++)se=T[Q[le]],se||(se=[],T[Z]=se),S.push({predicate:Q[le],list:se});else if(M)for(var me=0;me<Q.length;me++)S.push({predicate:Q[me],forward:!0});if(F)for(var ce=0;ce<ne.length;ce++)S.push({predicate:ne[ce],forward:!1})}if(B){var he=null,ge=null;H?(he=''===H.value?e.PlainLiteralURI:this.parseTermOrCURIEOrAbsURI(H.value,j,y.terms,x,u),ge=z&&!W?z.value:he===e.XMLLiteralURI||he===e.HTMLLiteralURI?null:W?W.value:g.textContent):W?(he=e.PlainLiteralURI,ge=W.value):z?(ge=z.value,he=e.deriveDateTimeType(ge),!he&&(he=e.PlainLiteralURI)):!M&&!F&&(K&&(ge=this.parseSafeCURIEOrCURIEOrURI(K.value,x,u)),!ge&&Y?ge=this.resolveAndNormalize(u,encodeURI(Y.value)):!ge&&X&&(ge=this.resolveAndNormalize(u,encodeURI(X.value))),ge&&(he=e.objectURI)),he||(q&&!J?(he=e.objectURI,ge=w):(ge=g.textContent,this.inHTMLMode&&'time'===g.localName&&(he=e.deriveDateTimeType(ge)),!he&&(he=e.PlainLiteralURI))),ee=this.tokenize(B.value);for(var ye=0,ve;ye<ee.length;ye++)if(ve=this.parsePredicate(ee[ye],j,y.terms,x,u),ve)if(G){var be=T[ve];be||(be=[],T[ve]=be),be.push(he===e.XMLLiteralURI||he===e.HTMLLiteralURI?{type:he,value:g.childNodes}:{type:he?he:e.PlainLiteralURI,value:ge,language:I})}else he===e.XMLLiteralURI||he===e.HTMLLiteralURI?this.addTriple(g,b,ve,{type:he,value:g.childNodes}):this.addTriple(g,b,ve,{type:he?he:e.PlainLiteralURI,value:ge,language:I})}if(b&&!v)for(var _e=0;_e<y.incomplete.length;_e++)y.incomplete[_e].list?y.incomplete[_e].list.push({type:e.objectURI,value:b}):y.incomplete[_e].forward?this.addTriple(g,y.subject,y.incomplete[_e].predicate,{type:e.objectURI,value:b}):this.addTriple(g,b,y.incomplete[_e].predicate,{type:e.objectURI,value:y.subject});var we=null,xe=b;v?(we=this.push(y,y.subject),we.parentObject=t(g.parentNode.baseURI)===y.parentObject?t(g.baseURI):y.parentObject,we.incomplete=y.incomplete,we.language=I,we.prefixes=x,we.vocabulary=j):(we=this.push(y,b),we.parentObject=_?_:b?b:y.subject,we.prefixes=x,we.incomplete=S,_&&(xe=_,T={},N=!0),we.listMapping=T,we.language=I,we.vocabulary=j),N&&p.unshift({parent:g,context:y,subject:xe,listMapping:T});for(var ke=g.lastChild;ke;ke=ke.previousSibling)ke.nodeType===l.ELEMENT_NODE&&(ke.baseURI=g.baseURI,p.unshift({current:ke,context:we}))}this.inHTMLMode&&this.copyProperties();for(var Se=0;Se<this.finishedHandlers.length;Se++)this.finishedHandlers[Se](n)}},{key:'push',value:function e(d,n){return{parent:d,subject:n?n:d?d.subject:null,parentObject:null,incomplete:[],listMapping:d?d.listMapping:{},language:d?d.language:this.language,prefixes:d?d.prefixes:this.target.graph.prefixes,terms:d?d.terms:this.target.graph.terms,vocabulary:d?d.vocabulary:this.vocabulary}}},{key:'resolveAndNormalize',value:function e(d,n){return r.join(n,d)}},{key:'setContext',value:function e(d){'html'===d.localName&&'XHTML+RDFa 1.1'===d.getAttribute('version')?this.setXHTMLContext():'html'===d.localName||'http://www.w3.org/1999/xhtml'===d.namespaceURI?'undefined'!=typeof document&&document.doctype?'-//W3C//DTD XHTML+RDFa 1.0//EN'===document.doctype.publicId&&'http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd'===document.doctype.systemId?(console.log('WARNING: RDF 1.0 is not supported. Defaulting to HTML5 mode.'),this.setHTMLContext()):'-//W3C//DTD XHTML+RDFa 1.1//EN'===document.doctype.publicId&&'http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd'===document.doctype.systemId?this.setXHTMLContext():this.setHTMLContext():this.setHTMLContext():this.setXMLContext()}},{key:'setHTMLContext',value:function e(){this.setInitialContext(),this.langAttributes=[{namespaceURI:'http://www.w3.org/XML/1998/namespace',localName:'lang'},{namespaceURI:null,localName:'lang'}],this.inXHTMLMode=!1,this.inHTMLMode=!0}},{key:'setInitialContext',value:function e(){this.vocabulary=null,this.langAttributes=[{namespaceURI:'http://www.w3.org/XML/1998/namespace',localName:'lang'}]}},{key:'setXHTMLContext',value:function e(){this.setInitialContext(),this.inXHTMLMode=!0,this.inHTMLMode=!1,this.langAttributes=[{namespaceURI:'http://www.w3.org/XML/1998/namespace',localName:'lang'},{namespaceURI:null,localName:'lang'}],this.target.graph.terms.alternate='http://www.w3.org/1999/xhtml/vocab#alternate',this.target.graph.terms.appendix='http://www.w3.org/1999/xhtml/vocab#appendix',this.target.graph.terms.bookmark='http://www.w3.org/1999/xhtml/vocab#bookmark',this.target.graph.terms.cite='http://www.w3.org/1999/xhtml/vocab#cite',this.target.graph.terms.chapter='http://www.w3.org/1999/xhtml/vocab#chapter',this.target.graph.terms.contents='http://www.w3.org/1999/xhtml/vocab#contents',this.target.graph.terms.copyright='http://www.w3.org/1999/xhtml/vocab#copyright',this.target.graph.terms.first='http://www.w3.org/1999/xhtml/vocab#first',this.target.graph.terms.glossary='http://www.w3.org/1999/xhtml/vocab#glossary',this.target.graph.terms.help='http://www.w3.org/1999/xhtml/vocab#help',this.target.graph.terms.icon='http://www.w3.org/1999/xhtml/vocab#icon',this.target.graph.terms.index='http://www.w3.org/1999/xhtml/vocab#index',this.target.graph.terms.last='http://www.w3.org/1999/xhtml/vocab#last',this.target.graph.terms.license='http://www.w3.org/1999/xhtml/vocab#license',this.target.graph.terms.meta='http://www.w3.org/1999/xhtml/vocab#meta',this.target.graph.terms.next='http://www.w3.org/1999/xhtml/vocab#next',this.target.graph.terms.prev='http://www.w3.org/1999/xhtml/vocab#prev',this.target.graph.terms.previous='http://www.w3.org/1999/xhtml/vocab#previous',this.target.graph.terms.section='http://www.w3.org/1999/xhtml/vocab#section',this.target.graph.terms.stylesheet='http://www.w3.org/1999/xhtml/vocab#stylesheet',this.target.graph.terms.subsection='http://www.w3.org/1999/xhtml/vocab#subsection',this.target.graph.terms.start='http://www.w3.org/1999/xhtml/vocab#start',this.target.graph.terms.top='http://www.w3.org/1999/xhtml/vocab#top',this.target.graph.terms.up='http://www.w3.org/1999/xhtml/vocab#up',this.target.graph.terms.p3pv1='http://www.w3.org/1999/xhtml/vocab#p3pv1',this.target.graph.terms.related='http://www.w3.org/1999/xhtml/vocab#related',this.target.graph.terms.role='http://www.w3.org/1999/xhtml/vocab#role',this.target.graph.terms.transformation='http://www.w3.org/1999/xhtml/vocab#transformation'}},{key:'setXMLContext',value:function e(){this.setInitialContext(),this.inXHTMLMode=!1,this.inHTMLMode=!1}},{key:'tokenize',value:function e(d){return this.trim(d).split(/\s+/)}},{key:'toRDFNodeObject',value:function d(n){if('undefined'!=typeof n){if('string'==typeof n)return'_:'===n.substring(0,2)?('undefined'==typeof this.blankNodes[n.substring(2)]&&(this.blankNodes[n.substring(2)]=new u(n.substring(2))),this.blankNodes[n.substring(2)]):t.namedNode(n);switch(n.type){case e.objectURI:return'_:'===n.value.substring(0,2)?('undefined'==typeof this.blankNodes[n.value.substring(2)]&&(this.blankNodes[n.value.substring(2)]=new u(n.value.substring(2))),this.blankNodes[n.value.substring(2)]):t.namedNode(n.value);case e.PlainLiteralURI:return new p(n.value,n.language||'');case e.XMLLiteralURI:case e.HTMLLiteralURI:var a='';return Object.keys(n.value).forEach(function(e){a+=o.domToString(n.value[e],this.htmlOptions)}),new p(a,'',new f(n.type));default:return new p(n.value,'',new f(n.type));}}}},{key:'trim',value:function e(d){return d.replace(/^\s\s*/,'').replace(/\s\s*$/,'')}}],[{key:'parseRDFaDOM',value:function d(n,i,a){var u=new e(i,{base:a});n.baseURI=a,u.process(n)}}]),e}();s.XMLLiteralURI='http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral',s.HTMLLiteralURI='http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML',s.PlainLiteralURI='http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral',s.objectURI='http://www.w3.org/1999/02/22-rdf-syntax-ns#object',s.typeURI='http://www.w3.org/1999/02/22-rdf-syntax-ns#type',s.nameChar='[-A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u10000-\uEFFFF.0-9\xB7\u0300-\u036F\u203F-\u2040]',s.nameStartChar='[A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\xFF\u0100-\u0131\u0134-\u013E\u0141-\u0148\u014A-\u017E\u0180-\u01C3\u01CD-\u01F0\u01F4-\u01F5\u01FA-\u0217\u0250-\u02A8\u02BB-\u02C1\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03CE\u03D0-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2-\u03F3\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E-\u0481\u0490-\u04C4\u04C7-\u04C8\u04CB-\u04CC\u04D0-\u04EB\u04EE-\u04F5\u04F8-\u04F9\u0531-\u0556\u0559\u0561-\u0586\u05D0-\u05EA\u05F0-\u05F2\u0621-\u063A\u0641-\u064A\u0671-\u06B7\u06BA-\u06BE\u06C0-\u06CE\u06D0-\u06D3\u06D5\u06E5-\u06E6\u0905-\u0939\u093D\u0958-\u0961\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8B\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AE0\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B36-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB5\u0BB7-\u0BB9\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C60-\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CDE\u0CE0-\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D60-\u0D61\u0E01-\u0E2E\u0E30\u0E32-\u0E33\u0E40-\u0E45\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EAE\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0F40-\u0F47\u0F49-\u0F69\u10A0-\u10C5\u10D0-\u10F6\u1100\u1102-\u1103\u1105-\u1107\u1109\u110B-\u110C\u110E-\u1112\u113C\u113E\u1140\u114C\u114E\u1150\u1154-\u1155\u1159\u115F-\u1161\u1163\u1165\u1167\u1169\u116D-\u116E\u1172-\u1173\u1175\u119E\u11A8\u11AB\u11AE-\u11AF\u11B7-\u11B8\u11BA\u11BC-\u11C2\u11EB\u11F0\u11F9\u1E00-\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2126\u212A-\u212B\u212E\u2180-\u2182\u3041-\u3094\u30A1-\u30FA\u3105-\u312C\uAC00-\uD7A3\u4E00-\u9FA5\u3007\u3021-\u3029_]',s.NCNAME=new RegExp('^'+s.nameStartChar+s.nameChar+'*$'),s.dateTimeTypes=[{pattern:/-?P(?:[0-9]+Y)?(?:[0-9]+M)?(?:[0-9]+D)?(?:T(?:[0-9]+H)?(?:[0-9]+M)?(?:[0-9]+(?:\.[0-9]+)?S)?)?/,type:'http://www.w3.org/2001/XMLSchema#duration'},{pattern:/-?(?:[1-9][0-9][0-9][0-9]|0[1-9][0-9][0-9]|00[1-9][0-9]|000[1-9])-[0-9][0-9]-[0-9][0-9]T(?:[0-1][0-9]|2[0-4]):[0-5][0-9]:[0-5][0-9](?:\.[0-9]+)?(?:Z|[+\-][0-9][0-9]:[0-9][0-9])?/,type:'http://www.w3.org/2001/XMLSchema#dateTime'},{pattern:/-?(?:[1-9][0-9][0-9][0-9]|0[1-9][0-9][0-9]|00[1-9][0-9]|000[1-9])-[0-9][0-9]-[0-9][0-9](?:Z|[+\-][0-9][0-9]:[0-9][0-9])?/,type:'http://www.w3.org/2001/XMLSchema#date'},{pattern:/(?:[0-1][0-9]|2[0-4]):[0-5][0-9]:[0-5][0-9](?:\.[0-9]+)?(?:Z|[+\-][0-9][0-9]:[0-9][0-9])?/,type:'http://www.w3.org/2001/XMLSchema#time'},{pattern:/-?(?:[1-9][0-9][0-9][0-9]|0[1-9][0-9][0-9]|00[1-9][0-9]|000[1-9])-[0-9][0-9]/,type:'http://www.w3.org/2001/XMLSchema#gYearMonth'},{pattern:/-?[1-9][0-9][0-9][0-9]|0[1-9][0-9][0-9]|00[1-9][0-9]|000[1-9]/,type:'http://www.w3.org/2001/XMLSchema#gYear'}],e.exports=s},function(e,d,n){'use strict';var i=n(7),a=function e(d){var e={};e.ns={RDF:'http://www.w3.org/1999/02/22-rdf-syntax-ns#',RDFS:'http://www.w3.org/2000/01/rdf-schema#'},e.nodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12},this.frameFactory=function(d,n,a){return{NODE:1,ARC:2,parent:n,parser:d,store:d.store,element:a,lastChild:0,base:null,lang:null,node:null,nodeType:null,listIndex:1,rdfid:null,datatype:null,collection:!1,terminateFrame:function e(){this.collection&&this.node.close()},addSymbol:function e(d,n){n=i.join(n,this.base),this.node=this.store.sym(n),this.nodeType=d},loadTriple:function d(){if(this.parent.parent.collection?this.parent.parent.node.append(this.node):this.store.add(this.parent.parent.node,this.parent.node,this.node,this.parser.why),null!=this.parent.rdfid){var n=this.store.sym(i.join('#'+this.parent.rdfid,this.base));this.store.add(n,this.store.sym(e.ns.RDF+'type'),this.store.sym(e.ns.RDF+'Statement'),this.parser.why),this.store.add(n,this.store.sym(e.ns.RDF+'subject'),this.parent.parent.node,this.parser.why),this.store.add(n,this.store.sym(e.ns.RDF+'predicate'),this.parent.node,this.parser.why),this.store.add(n,this.store.sym(e.ns.RDF+'object'),this.node,this.parser.why)}},isTripleToLoad:function e(){return null!=this.parent&&null!=this.parent.parent&&this.nodeType===this.NODE&&this.parent.nodeType===this.ARC&&this.parent.parent.nodeType===this.NODE},addNode:function e(d){this.addSymbol(this.NODE,d),this.isTripleToLoad()&&this.loadTriple()},addCollection:function e(){this.nodeType=this.NODE,this.node=this.store.collection(),this.collection=!0,this.isTripleToLoad()&&this.loadTriple()},addCollectionArc:function e(){this.nodeType=this.ARC},addBNode:function e(d){this.node=null==d?this.store.bnode():null==this.parser.bnodes[d]?this.parser.bnodes[d]=this.store.bnode():this.parser.bnodes[d],this.nodeType=this.NODE,this.isTripleToLoad()&&this.loadTriple()},addArc:function d(n){n===e.ns.RDF+'li'&&(n=e.ns.RDF+'_'+this.parent.listIndex,this.parent.listIndex++),this.addSymbol(this.ARC,n)},addLiteral:function e(d){this.node=this.parent.datatype?this.store.literal(d,'',this.store.sym(this.parent.datatype)):this.store.literal(d,this.lang),this.nodeType=this.NODE,this.isTripleToLoad()&&this.loadTriple()}}},this.getAttributeNodeNS=function(e,d,n){var a=null;if(e.getAttributeNodeNS)a=e.getAttributeNodeNS(d,n);else for(var u=e.attributes,p=0,i,t;p<u.length;++p)if(i=u[p],i.namespaceURI===d&&(t=i.prefix?i.prefix+':'+n:n,t===i.nodeName)){a=i;break}return a},this.store=d,this.bnodes={},this.why=null,this.reify=!1,this.parse=function(d,n,i){var a=d.childNodes;this.cleanParser();var u;if(d.nodeType===e.nodeType.DOCUMENT){for(var p=0;p<a.length;p++)if(a[p].nodeType===e.nodeType.ELEMENT){u=a[p];break}}else if(d.nodeType===e.nodeType.ELEMENT)u=d;else throw new Error('RDFParser: can\'t find root in '+n+'. Halting. ');this.why=i;var t=this.frameFactory(this);return this.base=n,t.base=n,t.lang=null,this.parseDOM(this.buildFrame(t,u)),!0},this.parseDOM=function(d){for(var n=function(e){var d='';if(null==e.namespaceURI)throw new Error('RDF/XML syntax error: No namespace for '+e.localName+' in '+this.base);return e.namespaceURI&&(d+=e.namespaceURI),e.localName?d+=e.localName:e.nodeName&&(0<=e.nodeName.indexOf(':')?d+=e.nodeName.split(':')[1]:d+=e.nodeName),d}.bind(this),a=!0,u;d.parent;){var p=d.element,t=p.attributes;if(p.nodeType===e.nodeType.TEXT||p.nodeType===e.nodeType.CDATA_SECTION)d.parent.nodeType===d.NODE&&(d.addArc(e.ns.RDF+'value'),d=this.buildFrame(d)),d.addLiteral(p.nodeValue);else if(n(p)!==e.ns.RDF+'RDF')if(d.parent&&d.parent.collection&&(d.addCollectionArc(),d=this.buildFrame(d,d.element),d.parent.element=null),!d.parent||!d.parent.nodeType||d.parent.nodeType===d.ARC){var r=this.getAttributeNodeNS(p,e.ns.RDF,'about');if(u=this.getAttributeNodeNS(p,e.ns.RDF,'ID'),r&&u)throw new Error('RDFParser: '+p.nodeName+' has both rdf:id and rdf:about. Halting. Only one of these properties may be specified on a node.');if(!r&&u)d.addNode('#'+u.nodeValue),p.removeAttributeNode(u);else if(null==r&&null==u){var o=this.getAttributeNodeNS(p,e.ns.RDF,'nodeID');o?(d.addBNode(o.nodeValue),p.removeAttributeNode(o)):d.addBNode()}else d.addNode(r.nodeValue),p.removeAttributeNode(r);var l=this.getAttributeNodeNS(p,e.ns.RDF,'type');e.ns.RDF+'Description'!==n(p)&&(l={nodeValue:n(p)}),null!=l&&(this.store.add(d.node,this.store.sym(e.ns.RDF+'type'),this.store.sym(i.join(l.nodeValue,d.base)),this.why),l.nodeName&&p.removeAttributeNode(l));for(var s=t.length-1;0<=s;s--)this.store.add(d.node,this.store.sym(n(t[s])),this.store.literal(t[s].nodeValue,d.lang),this.why)}else{d.addArc(n(p)),this.reify&&(u=this.getAttributeNodeNS(p,e.ns.RDF,'ID'),u&&(d.rdfid=u.nodeValue,p.removeAttributeNode(u)));var m=this.getAttributeNodeNS(p,e.ns.RDF,'parseType'),c=this.getAttributeNodeNS(p,e.ns.RDF,'datatype');if(c&&(d.datatype=c.nodeValue,p.removeAttributeNode(c)),m){var h=m.nodeValue;'Literal'===h?(d.datatype=e.ns.RDF+'XMLLiteral',d=this.buildFrame(d),d.addLiteral(p.childNodes),a=!1):'Resource'===h?(d=this.buildFrame(d,d.element),d.parent.element=null,d.addBNode()):'Collection'===h&&(d=this.buildFrame(d,d.element),d.parent.element=null,d.addCollection()),p.removeAttributeNode(m)}if(0!==t.length){var g=this.getAttributeNodeNS(p,e.ns.RDF,'resource'),y=this.getAttributeNodeNS(p,e.ns.RDF,'nodeID');d=this.buildFrame(d),g?(d.addNode(g.nodeValue),p.removeAttributeNode(g)):y?(d.addBNode(y.nodeValue),p.removeAttributeNode(y)):d.addBNode();for(var v=t.length-1,b;0<=v;v--)b=this.buildFrame(d),b.addArc(n(t[v])),n(t[v])===e.ns.RDF+'type'?this.buildFrame(b).addNode(t[v].nodeValue):this.buildFrame(b).addLiteral(t[v].nodeValue)}else 0===p.childNodes.length&&this.buildFrame(d).addLiteral('')}for(p=d.element;d.parent;){for(var f=d;null==p;)d=d.parent,p=d.element;var _=p.childNodes&&p.childNodes[d.lastChild];if(!_||!a){if(d.terminateFrame(),!(d=d.parent))break;p=d.element,a=!0}else if(_.nodeType!==e.nodeType.ELEMENT&&_.nodeType!==e.nodeType.TEXT&&_.nodeType!==e.nodeType.CDATA_SECTION||(_.nodeType===e.nodeType.TEXT||_.nodeType===e.nodeType.CDATA_SECTION)&&1!==p.childNodes.length)d.lastChild++;else{d.lastChild++,d=this.buildFrame(f,p.childNodes[d.lastChild-1]);break}}}},this.cleanParser=function(){this.bnodes={},this.why=null},this.buildFrame=function(d,n){var a=this.frameFactory(this,d,n);if(d&&(a.base=d.base,a.lang=d.lang),!n||n.nodeType===e.nodeType.TEXT||n.nodeType===e.nodeType.CDATA_SECTION)return a;var u=n.attributes,p=n.getAttributeNode('xml:base');null!=p&&(a.base=p.nodeValue,n.removeAttribute('xml:base'));var t=n.getAttributeNode('xml:lang');null!=t&&(a.lang=t.nodeValue,n.removeAttribute('xml:lang'));for(var f=u.length-1;0<=f;f--)if('xml'===u[f].nodeName.substr(0,3)){if('xmlns:'===u[f].name.slice(0,6)){var r=u[f].nodeValue;this.base&&(r=i.join(r,this.base)),this.store.setPrefixForURI(u[f].name.slice(6),r)}n.removeAttributeNode(u[f])}return a}};e.exports=a},function(e,d,n){'use strict';function i(e,d,n,i,p,t){function f(e,d){return p?void p(e,d):d}n=n||e.uri,t=t||{},i=i||'text/turtle';var r=null;try{var o=u(d);t.flags&&o.setFlags(t.flags);var l=d.statementsMatching(void 0,void 0,void 0,e),s;switch(o.suggestNamespaces(d.namespaces),o.setBase(n),i){case'application/rdf+xml':return r=o.statementsToXML(l),f(null,r);case'text/n3':case'application/n3':return r=o.statementsToN3(l),f(null,r);case'text/turtle':case'application/x-turtle':return o.setFlags('si'),r=o.statementsToN3(l),f(null,r);case'application/n-triples':return o.setFlags('deinprstux'),r=o.statementsToNTriples(l),f(null,r);case'application/ld+json':o.setFlags('deinprstux'),s=o.statementsToNTriples(l),a.convertToJson(s,p);break;case'application/n-quads':case'application/nquads':return o.setFlags('deinprstux q'),r=o.statementsToNTriples(l),f(null,r);break;default:throw new Error('Serialize: Content-type '+i+' not supported for data write.');}}catch(e){if(p)return p(e);throw e}}e.exports=i;var a=n(117),u=n(73)},function(e,d,n){'use strict';var i=n(2),a=n(17),u=n(7),p=n(11),f=n(122),t=function(){function e(e){return encodeURI(e)}function d(e){for(var d='',n=0,i;n<e.length;n++)i=e.charCodeAt(n),d+=65535<i?'\\U'+('00000000'+i.toString(16)).slice(-8):126<i?'\\u'+('0000'+i.toString(16)).slice(-4):e[n];return d}var n=function e(d){this.flags='',this.base=null,this.prefixes=[],this.namespaces=[],this.suggestPrefix('rdf','http://www.w3.org/1999/02/22-rdf-syntax-ns#'),this.suggestPrefix('xml','reserved:reservedForFutureUse'),this.namespacesUsed=[],this.keywords=['a'],this.prefixchars='abcdefghijklmnopqustuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',this.incoming=null,this.formulas=[],this.store=d};n.prototype.setBase=function(e){return this.base=e,this},n.prototype.setFlags=function(e){return this.flags=e||'',this},n.prototype.toStr=function(e){var d=e.toNT();return'Graph'===e.termType&&(this.formulas[d]=e),d},n.prototype.fromStr=function(e){if('{'===e[0]){var d=this.formulas[e];return d||console.log('No formula object for '+e),d}return this.store.fromNT(e)},n.prototype.suggestPrefix=function(e,d){'default'===e.slice(0,7)||'ns'===e.slice(0,2)||!e||!d||e in this.namespaces||d in this.prefixes||(this.prefixes[d]=e,this.namespaces[e]=d)},n.prototype.suggestNamespaces=function(e){for(var d in e)return this.suggestPrefix(d,e[d]),this},n.prototype.checkIntegrity=function(){var e,d;for(e in this.namespaces)if(this.prefixes[this.namespaces[e]]!==e)throw new Error('Serializer integity error 1: '+e+', '+this.namespaces[e]+', '+this.prefixes[this.namespaces[e]]+'!');for(d in this.prefixes)if(this.namespaces[this.prefixes[d]]!==d)throw new Error('Serializer integity error 2: '+d+', '+this.prefixs[d]+', '+this.namespaces[this.prefixes[d]]+'!')},n.prototype.makeUpPrefix=function(e){function d(d){return!!n.prototype.validPrefix.test(d)&&'ns'!==d&&!(d in this.namespaces)&&(this.prefixes[e]=d,this.namespaces[d]=e,d)}var a=e,u=d.bind(this);0<='#/'.indexOf(a[a.length-1])&&(a=a.slice(0,-1));var p=a.lastIndexOf('/');0<=p&&(a=a.slice(p+1));for(var t=0;t<a.length&&this.prefixchars.indexOf(a[t]);)t++;if(a=a.slice(0,t),6>a.length&&u(a))return a;if(u(a.slice(0,3)))return a.slice(0,3);if(u(a.slice(0,2)))return a.slice(0,2);if(u(a.slice(0,4)))return a.slice(0,4);if(u(a.slice(0,1)))return a.slice(0,1);if(u(a.slice(0,5)))return a.slice(0,5);n.prototype.validPrefix.test(a)||(a='n');for(var i=0;;i++)if(u(a.slice(0,3)+i))return a.slice(0,3)+i},n.prototype.rootSubjects=function(e){for(var d={},n={},a={},u=0;u<e.length;u++){var i=e[u],p=function e(n){d.hasOwnProperty(n)||(d[n]=[]),d[n].push(i.subject)},t=[i.subject,i.predicate,i.object];t.map(function(e){'BlankNode'===e.termType?a[e.toNT()]=!0:'Collection'===e.termType&&e.elements.forEach(function(e){p(e)})}),p(e[u].object);var f=n[this.toStr(i.subject)];f||(f=[]),f.push(i),n[this.toStr(i.subject)]=f}var r=[];for(var o in n)if(n.hasOwnProperty(o)){var l=this.fromStr(o);if('BlankNode'!==l.termType||!d[l]||1!==d[l].length){r.push(l);continue}}this.incoming=d;for(var s={},m=0;m<r.length;m++)s[r[m].toNT()]=!0;return{roots:r,subjects:n,rootsHash:s,incoming:d}},n.prototype.toN3=function(e){return this.statementsToN3(e.statements)},n.prototype._notQNameChars='\t\r\n !"#$%&\'()*.,+/;<=>?@[\\]^`{|}~',n.prototype._notNameChars=n.prototype._notQNameChars+':',n.prototype.explicitURI=function(n){return n=0>this.flags.indexOf('r')&&this.base?u.refTo(this.base,n):0<=this.flags.indexOf('u')?d(n):e(n),'<'+n+'>'},n.prototype.statementsToNTriples=function(e){var d=e.slice();d.sort();for(var n='',u='http://www.w3.org/1999/02/22-rdf-syntax-ns#',p=this,t=this.store,f=function e(d){if('Collection'!==d.termType)return p.atomicTermToN3(d);for(var f=d.elements,r=t.sym(u+'nill'),o=f.length-1,i;0<=o;o--)i=new a,n+=e(i)+' '+e(t.sym(u+'first'))+' '+e(f[o])+'.\n',n+=e(i)+' '+e(t.sym(u+'rest'))+' '+e(r)+'.\n',r=i;return p.atomicTermToN3(r)},r=0;r<d.length;r++){var i=d[r],o='';o+=f(i.subject)+' ',o+=f(i.predicate)+' ',o+=f(i.object)+' ',0<=this.flags.indexOf('q')&&(o+=f(i.why)+' '),o+='.\n',n+=o}return n},n.prototype.statementsToN3=function(e){function d(e){for(var d=this.rootSubjects(e),n=d.roots,u=[],p=0,i;p<n.length;p++)i=n[p],u.push(a(i,d));return u}function a(e,d){return'BlankNode'!==e.termType||d.incoming[e]?[w(e,d)].concat([b(e,d)]).concat(['.']):_(e,d,!0).concat(['.'])}function i(e,d){var n=[],a=null,u=d.subjects[this.toStr(e)]||[];if('undefined'==typeof u)throw new Error('Cant find statements for '+e);for(var p=[],t=0,i;t<u.length;t++)i=u[t],i.predicate.uri===a?p.push(','):(a&&(n=n.concat([p]).concat([';']),p=[]),n.push(c[i.predicate.uri]?c[i.predicate.uri]:w(i.predicate,d))),a=i.predicate.uri,p.push(_(i.object,d));return n=n.concat([p]),n}function u(e,d,n){return'BlankNode'===e.termType&&(n||void 0===d.rootsHash[e.toNT()])?d.subjects[this.toStr(e)]?['[',b(e,d),']']:'[]':w(e,d)}function t(e,d){var n,i;switch(e.termType){case'Graph':return i=['{'],i=i.concat(v(e.statements)),i.concat(['}']);case'Collection':for(i=['('],n=0;n<e.elements.length;n++)i.push([_(e.elements[n],d)]);return i.push(')'),i;default:return this.atomicTermToN3(e);}}function f(){var e='';for(var d in this.defaultNamespace&&(e+='@prefix : '+this.explicitURI(this.defaultNamespace)+'.\n'),this.prefixes)this.prefixes.hasOwnProperty(d)&&this.namespacesUsed[d]&&(e+='@prefix '+this.prefixes[d]+': '+this.explicitURI(d)+'.\n');return e+'\n'}var r=4,o=80,l=this.store,s={"http://www.w3.org/1999/02/22-rdf-syntax-ns#type":'aaa:00'},m=function e(d,n){return p.heavyCompareSPO(d,n,l,s)};e.sort(m),this.base&&!this.defaultNamespace&&(this.defaultNamespace=this.base+'#');var c={};0>this.flags.indexOf('s')&&(c['http://www.w3.org/2002/07/owl#sameAs']='='),0>this.flags.indexOf('t')&&(c['http://www.w3.org/1999/02/22-rdf-syntax-ns#type']='a'),0>this.flags.indexOf('i')&&(c['http://www.w3.org/2000/10/swap/log#implies']='=>');var h=function e(d){for(var n='',a=0;a<d;a++)n+=' ';return n},g=function e(d){for(var n='',a=0;a<d.length;a++){var i=d[a],u='string'==typeof i?i:e(i);if(0!==a){var p=n.slice(-1)||' ';','!==u&&';'!==u&&('.'!==u||'0123456789.'.includes(p))&&(n+=' ')}n+=u}return n},y=function e(d,n){var a='',u=1e5;n===void 0&&(n=-1);for(var p=0,i;p<d.length;p++){if(i=d[p],'string'!=typeof i){var t=e(i,n+1);if(t.length<10*(o-r*n)&&0>t.indexOf('"""')){var f=g(i);f.length<o-r*n&&(i=f,t='')}t&&(u=1e4),a+=t}if('string'==typeof i){if(1===i.length&&'\n'===a.slice(-1)&&0<=',.;'.indexOf(i)){a=a.slice(0,-1)+i+'\n',u+=1;continue}if(u<r*n+4||u+i.length+1<o&&0>';.'.indexOf(a[a.length-2]))a=a.slice(0,-1)+' '+i+'\n',u+=i.length+1;else{var l=h(r*n)+i;a+=l+'\n',u=l.length,0>n&&(a+='\n',u=1e5)}}}return a},v=d.bind(this),b=i.bind(this),_=u.bind(this);n.prototype.termToN3=w;var w=t.bind(this),x=f.bind(this),k=v(e);return x()+y(k)},n.prototype.atomicTermToN3=function e(d,n){switch(d.termType){case'BlankNode':case'Variable':return d.toNT();case'Literal':var i=d.value;if('string'!=typeof i)throw new TypeError('Value of RDF literal node must be a string');if(d.datatype&&0>this.flags.indexOf('x'))switch(d.datatype.uri){case'http://www.w3.org/2001/XMLSchema#integer':return i;case'http://www.w3.org/2001/XMLSchema#decimal':return 0>i.indexOf('.')&&(i+='.0'),i;case'http://www.w3.org/2001/XMLSchema#double':return 0>i.indexOf('.')&&(i+='.0'),0>i.indexOf('e')&&(i+='e0'),i;case'http://www.w3.org/2001/XMLSchema#boolean':return'1'===d.value?'true':'false';}var a=this.stringToN3(d.value);return d.language?a+='@'+d.language:!d.datatype.equals(f.string)&&(a+='^^'+this.atomicTermToN3(d.datatype,n)),a;case'NamedNode':return this.symbolToN3(d);default:throw new Error('Internal: atomicTermToN3 cannot handle '+d+' of termType: '+d.termType);}},n.prototype.validPrefix=new RegExp(/^[a-zA-Z][a-zA-Z0-9]*$/),n.prototype.forbidden1=new RegExp(/[\\"\b\f\r\v\t\n\u0080-\uffff]/gm),n.prototype.forbidden3=new RegExp(/[\\"\b\f\r\v\u0080-\uffff]/gm),n.prototype.stringToN3=function e(d,a){a||(a='e');var u='',p,i,t,f,r;for(20<d.length&&'"'!==d.slice(-1)&&0>a.indexOf('n')&&(0<d.indexOf('\n')||0<d.indexOf('"'))?(f='"""',r=n.prototype.forbidden3):(f='"',r=n.prototype.forbidden1),p=0;p<d.length;){r.lastIndex=0;var o=r.exec(d.slice(p));if(null==o)break;i=p+r.lastIndex-1,u+=d.slice(p,i);var l=d[i];'"'===l&&'"""'===f&&'"""'!==d.slice(i,i+3)?u+=l:(t='\b\f\r\t\x0B\n\\"'.indexOf(l),u+=0<=t?'\\'+'bfrtvn\\"'[t]:0<=a.indexOf('e')?'\\u'+('000'+l.charCodeAt(0).toString(16).toLowerCase()).slice(-4):l),p=i+1}return f+u+d.slice(p)+f},n.prototype.symbolToN3=function e(d){var i=d.uri,a=i.indexOf('#');if(0>a&&0>this.flags.indexOf('/')&&(a=i.lastIndexOf('/')),0<=a&&0>this.flags.indexOf('p')&&(0===i.indexOf('http')||0===i.indexOf('ws')||0===i.indexOf('file'))){for(var u=!0,p=a+1;p<i.length;p++)if(0<=n.prototype._notNameChars.indexOf(i[p])){u=!1;break}if(u){var t=i.slice(a+1),f=i.slice(0,a+1);if(this.defaultNamespace&&this.defaultNamespace===f&&0>this.flags.indexOf('d'))return 0<=this.flags.indexOf('k')&&0>this.keyords.indexOf(t)?t:':'+t;var r=this.prefixes[f];if(r||(r=this.makeUpPrefix(f)),r)return this.namespacesUsed[f]=!0,r+':'+t}}return this.explicitURI(i)},n.prototype.writeStore=function(e){var d=this.store,n=d.fetcher,i=n&&n.appNode,a=this.store.index[3];for(var u in a){var p=d.fromNT(u);i&&p.sameTerm(i)||e('\n'+this.atomicTermToN3(p)+' '+this.atomicTermToN3(d.sym('http://www.w3.org/2000/10/swap/log#semantics'))+' { '+this.statementsToN3(d.statementsMatching(void 0,void 0,void 0,p))+' }.\n')}d.statementsMatching(void 0,d.sym('http://www.w3.org/2007/ont/link#requestedURI')).map(function(n){e('\n<'+n.object.value+'> log:metadata {\n');var i=d.statementsMatching(void 0,void 0,void 0,n.subject);e(this.statementsToN3(this.statementsToN3(i))),e('}.\n')});var t=[];i&&t.push(i);var f=[];t.map(function(e){f=f.concat(d.statementsMatching(void 0,void 0,void 0,e))}),e(this.statementsToN3(f))},n.prototype.statementsToXML=function(e){function d(e){this.suggestPrefix('rdf','http://www.w3.org/1999/02/22-rdf-syntax-ns#');for(var d=this.rootSubjects(e),n=d.roots,a=[],u=0,i;u<n.length;u++)i=n[u],a.push(w(i,d));return a}function a(e){return'undefined'==typeof e?'@@@undefined@@@@':e.replace(/[&<"]/g,function(e){switch(e[0]){case'&':return'&';case'<':return'<';case'"':return'"';}})}function u(e){return a(this.base?p.uri.refTo(this.base,e.uri):e.uri)}function t(e,d){var n=[],u=d.subjects[this.toStr(e)],p,o,t,l;if('undefined'==typeof u)return x(e,d);u.sort(function(e,d){var n=e.predicate.uri,i=d.predicate.uri;if(n.substring(0,h.length)===h||i.substring(0,h.length)===h)return n.localeCompare(i);var a=n.substring(h.length),u=i.substring(h.length),p=parseInt(a,10),t=parseInt(u,10);return isNaN(p)||isNaN(t)||p!==a||t!==u?n.localeCompare(i):p-t});for(var s=0;s<u.length;s++){if(t=u[s],'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'===t.predicate.uri&&!p&&'symbol'===t.object.termType){p=t.object;continue}if(l=t.predicate,l.uri.substr(0,h.length)===h){var m=l.uri.substr(h.length),c=parseInt(m,10);m===c.toString()&&(l=new i('http://www.w3.org/1999/02/22-rdf-syntax-ns#li'))}switch(o=k(l),t.object.termType){case'BlankNode':n=1===d.incoming[t.object].length?n.concat(['<'+o+' rdf:parseType="Resource">',w(t.object,d),'</'+o+'>']):n.concat(['<'+o+' rdf:nodeID="'+t.object.toNT().slice(2)+'"/>']);break;case'NamedNode':n=n.concat(['<'+o+' rdf:resource="'+_(t.object)+'"/>']);break;case'Literal':n=n.concat(['<'+o+(t.object.datatype.equals(f.string)?'':' rdf:datatype="'+a(t.object.datatype.uri)+'"')+(t.object.language?' xml:lang="'+t.object.language+'"':'')+'>'+a(t.object.value)+'</'+o+'>']);break;case'Collection':n=n.concat(['<'+o+' rdf:parseType="Collection">',r(t.object,d),'</'+o+'>']);break;default:throw new Error('Can\'t serialize object of type '+t.object.termType+' into XML');}}var g=p?k(p):'rdf:Description',y='';return'BlankNode'===e.termType?(!d.incoming[e]||1!==d.incoming[e].length)&&(y=' rdf:nodeID="'+e.toNT().slice(2)+'"'):y=' rdf:about="'+_(e)+'"',['<'+g+y+'>'].concat([n]).concat(['</'+g+'>'])}function r(e,d){for(var n=[],a=0;a<e.elements.length;a++)n.push(w(e.elements[a],d));return n}function o(e,d){var n=[],u=d.subjects[this.toStr(e)];if(!u)return n;u.sort();for(var p=0,i;p<u.length;p++)switch(i=u[p],i.object.termType){case'BlankNode':n=d.rootsHash[i.object.toNT()]?n.concat(['<'+k(i.predicate)+' rdf:nodeID="'+i.object.toNT().slice(2)+'">','</'+k(i.predicate)+'>']):n.concat(['<'+k(i.predicate)+' rdf:parseType="Resource">',x(i.object,d),'</'+k(i.predicate)+'>']);break;case'NamedNode':n=n.concat(['<'+k(i.predicate)+' rdf:resource="'+_(i.object)+'"/>']);break;case'Literal':n=n.concat(['<'+k(i.predicate)+(i.object.datatype.equals(f.string)?'':' rdf:datatype="'+a(i.object.datatype.value)+'"')+(i.object.language?' xml:lang="'+i.object.language+'"':'')+'>'+a(i.object.value)+'</'+k(i.predicate)+'>']);break;case'Collection':n=n.concat(['<'+k(i.predicate)+' rdf:parseType="Collection">',r(i.object,d),'</'+k(i.predicate)+'>']);break;default:throw new Error('Can\'t serialize object of type '+i.object.termType+' into XML');}return n}function l(e){var d=e.uri,i=d.indexOf('#');if(0>i&&0>this.flags.indexOf('/')&&(i=d.lastIndexOf('/')),0>i)throw new Error('Cannot make qname out of <'+d+'>');for(var a=i+1;a<d.length;a++)if(0<=n.prototype._notNameChars.indexOf(d[a]))throw new Error('Invalid character "'+d[a]+'" cannot be in XML qname for URI: '+d);var u=d.slice(i+1),p=d.slice(0,i+1);if(this.defaultNamespace&&this.defaultNamespace===p&&0>this.flags.indexOf('d'))return u;var t=this.prefixes[p];return t||(t=this.makeUpPrefix(p)),c[p]=!0,t+':'+u}var s=4,m=80,c=[];c['http://www.w3.org/1999/02/22-rdf-syntax-ns#']=!0;var h='http://www.w3.org/1999/02/22-rdf-syntax-ns#_',g=function e(d){for(var n='',a=0;a<d;a++)n+=' ';return n},y=function e(d){for(var n='',a=0;a<d.length;a++){var i=d[a],u='string'==typeof i?i:e(i);n+=u}return n},v=function e(d,n){var a='',u=1e5,p;n||(n=0);for(var t=0,i;t<d.length;t++){if(i=d[t],'string'!=typeof i){var f=e(i,n+1);f.length<10*(m-s*n)&&0>f.indexOf('"""')&&(p=y(i),p.length<m-s*n&&(i=' '+p,f='')),f&&(u=1e4),a+=f}'string'==typeof i&&(u<s*n+4?(a=a.slice(0,-1)+' '+i+'\n',u+=i.length+1):(p=g(s*n)+i,a+=p+'\n',u=p.length))}return a},b=d.bind(this),_=u.bind(this),w=t.bind(this),x=o.bind(this),k=l.bind(this),S=b(e),T='<rdf:RDF';for(var N in this.defaultNamespace&&(T+=' xmlns="'+a(this.defaultNamespace)+'"'),c)if(c.hasOwnProperty(N)){var I=this.base&&this.flags.includes('z')?p.uri.refTo(this.base,N):N;T+='\n xmlns:'+this.prefixes[N]+'="'+a(I)+'"'}T+='>';var j=[T,S,'</rdf:RDF>'];return v(j,-1)};var t=function e(d){return new n(d)};return t}();e.exports=t},function(e,d,n){'use strict';function i(e){return e&&e.__esModule?e:{default:e}}d.__esModule=!0;var a=n(206),u=i(a),p=n(205),t=i(p),f='function'==typeof t.default&&'symbol'==typeof u.default?function(e){return typeof e}:function(e){return e&&'function'==typeof t.default&&e.constructor===t.default&&e!==t.default.prototype?'symbol':typeof e};d.default='function'==typeof t.default&&'symbol'===f(u.default)?function(e){return'undefined'==typeof e?'undefined':f(e)}:function(e){return e&&'function'==typeof t.default&&e.constructor===t.default&&e!==t.default.prototype?'symbol':'undefined'==typeof e?'undefined':f(e)}},function(e,d){e.exports=function(e){if(e==void 0)throw TypeError('Can\'t call method on '+e);return e}},function(e,d,n){var i=n(15),a=n(3).document,u=i(a)&&i(a.createElement);e.exports=function(e){return u?a.createElement(e):{}}},function(e,d){e.exports=['constructor','hasOwnProperty','isPrototypeOf','propertyIsEnumerable','toLocaleString','toString','valueOf']},function(e,d,n){'use strict';function i(e){var d,n;this.promise=new e(function(e,i){if(d!=void 0||n!=void 0)throw TypeError('Bad Promise constructor');d=e,n=i}),this.resolve=a(d),this.reject=a(n)}var a=n(50);e.exports.f=function(e){return new i(e)}},function(e,d,n){var i=n(12),a=n(239),u=n(77),p=n(81)('IE_PROTO'),t=function(){},f='prototype',r=function(){var e=n(76)('iframe'),d=u.length,i='<',a='>',p;for(e.style.display='none',n(126).appendChild(e),e.src='javascript:',p=e.contentWindow.document,p.open(),p.write(i+'script'+a+'document.F=Object'+i+'/script'+a),p.close(),r=p.F;d--;)delete r[f][u[d]];return r()};e.exports=Object.create||function e(d,n){var u;return null===d?u=r():(t[f]=i(d),u=new t,t[f]=null,u[p]=d),void 0===n?u:a(u,n)}},function(e,d){d.f=Object.getOwnPropertySymbols},function(e,d,n){var i=n(82)('keys'),a=n(56);e.exports=function(e){return i[e]||(i[e]=a(e))}},function(e,d,n){var i=n(3),a='__core-js_shared__',u=i[a]||(i[a]={});e.exports=function(e){return u[e]||(u[e]={})}},function(e,d){var n=Math.ceil,i=p;e.exports=function(e){return isNaN(e=+e)?0:(0<e?i:n)(e)}},function(e,d,n){var i=n(83),a=r;e.exports=function(e){return 0<e?a(i(e),9007199254740991):0}},function(e,d,n){var i=n(15);e.exports=function(e,d){if(!i(e))return e;var n,a;if(d&&'function'==typeof(n=e.toString)&&!i(a=n.call(e)))return a;if('function'==typeof(n=e.valueOf)&&!i(a=n.call(e)))return a;if(!d&&'function'==typeof(n=e.toString)&&!i(a=n.call(e)))return a;throw TypeError('Can\'t convert object to primitive value')}},function(e,d,n){var i=n(3),a=n(0),u=n(51),p=n(87),t=n(13).f;e.exports=function(e){var d=a.Symbol||(a.Symbol=u?{}:i.Symbol||{});'_'==e.charAt(0)||e in d||t(d,e,{value:p.f(e)})}},function(e,d,n){d.f=n(4)},function(e,d,n){'use strict';var i=n(243)(!0);n(131)(String,'String',function(e){this._t=e+'',this._i=0},function(){var e=this._t,d=this._i,n;return d>=e.length?{value:void 0,done:!0}:(n=i(e,d),this._i+=n.length,{value:n,done:!1})})},function(e,d,n){(function(d){function n(e){if(!(this instanceof n))return new n(e);if(e&&e.lineMode){this._tripleQuotedString=this._number=this._boolean=/$0^/;var d=this;this._tokenize=this.tokenize,this.tokenize=function(e,n){this._tokenize(e,function(e,i){!e&&/^(?:IRI|prefixed|literal|langcode|type|\.|eof)$/.test(i.type)?n&&n(e,i):n&&n(e||d._syntaxError(i.type,n=null))})}}}var i=f,a='function'==typeof d?d:function e(d){setTimeout(d,0)},u=/\\u([a-fA-F0-9]{4})|\\U([a-fA-F0-9]{8})|\\[uU]|\\(.)/g,p={"\\":'\\',"'":'\'','"':'"',n:'\n',r:'\r',t:'\t',f:'\f',b:'\b',_:'_',"~":'~',".":'.',"-":'-',"!":'!',$:'$',"&":'&',"(":'(',")":')',"*":'*',"+":'+',",":',',";":';',"=":'=',"/":'/',"?":'?',"#":'#',"@":'@',"%":'%'},t=/[\x00-\x20<>\\"\{\}\|\^\`]/;n.prototype={_iri:/^<((?:[^>\\]|\\[uU])+)>/,_unescapedIri:/^<([^\x00-\x20<>\\"\{\}\|\^\`]*)>/,_unescapedString:/^"[^"\\]+"(?=[^"\\])/,_singleQuotedString:/^"[^"\\]*(?:\\.[^"\\]*)*"(?=[^"\\])|^'[^'\\]*(?:\\.[^'\\]*)*'(?=[^'\\])/,_tripleQuotedString:/^""("[^"\\]*(?:(?:\\.|"(?!""))[^"\\]*)*")""|^''('[^'\\]*(?:(?:\\.|'(?!''))[^'\\]*)*')''/,_langcode:/^@([a-z]+(?:-[a-z0-9]+)*)(?=[^a-z0-9\-])/i,_prefix:/^((?:[A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])(?:\.?[\-0-9A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])*)?:(?=[#\s<])/,_prefixed:/^((?:[A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])(?:\.?[\-0-9A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])*)?:((?:(?:[0-:A-Z_a-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff]|%[0-9a-fA-F]{2}|\\[!#-\/;=?\-@_~])(?:(?:[\.\-0-:A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff]|%[0-9a-fA-F]{2}|\\[!#-\/;=?\-@_~])*(?:[\-0-:A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff]|%[0-9a-fA-F]{2}|\\[!#-\/;=?\-@_~]))?)?)(?=\.?[,;\s#()\[\]\{\}"'<])/,_blank:/^_:((?:[0-9A-Z_a-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])(?:\.?[\-0-9A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])*)(?=\.?[,;:\s#()\[\]\{\}"'<])/,_number:/^[\-+]?(?:\d+\.?\d*([eE](?:[\-\+])?\d+)|\d*\.?\d+)(?=[.,;:\s#()\[\]\{\}"'<])/,_boolean:/^(?:true|false)(?=[.,;:\s#()\[\]\{\}"'<])/,_keyword:/^@[a-z]+(?=[\s#<:])/,_sparqlKeyword:/^(?:PREFIX|BASE|GRAPH)(?=[\s#<:])/i,_shortPredicates:/^a(?=\s+|<)/,_newline:/^[ \t]*(?:#[^\n\r]*)?(?:\r\n|\n|\r)[ \t]*/,_whitespace:/^[ \t]+/,_endOfFile:/^(?:#[^\n\r]*)?$/,_tokenizeToEnd:function(e,d){function n(d){e(d._syntaxError(/^\S*/.exec(i)[0]))}for(var i=this._input;!0;){for(var a;a=this._newline.exec(i);)i=i.substr(a[0].length,i.length),this._line++;if((a=this._whitespace.exec(i))&&(i=i.substr(a[0].length,i.length)),this._endOfFile.test(i))return d&&e(i=null,{line:this._line,type:'eof',value:'',prefix:''}),this._input=i;var u=this._line,p='',f='',r='',o=i[0],l=null,s=0,m=!1,c;switch(o){case'^':if(1===i.length)break;else if('^'!==i[1])return n(this);if(this._prevTokenType='^',i=i.substr(2),'<'!==i[0]){m=!0;break}case'<':if(l=this._unescapedIri.exec(i))p='IRI',f=l[1];else if(l=this._iri.exec(i)){if(c=this._unescape(l[1]),null===c||t.test(c))return n(this);p='IRI',f=c}break;case'_':((l=this._blank.exec(i))||d&&(l=this._blank.exec(i+' ')))&&(p='prefixed',r='_',f=l[1]);break;case'"':case'\'':if(l=this._unescapedString.exec(i))p='literal',f=l[0];else if(l=this._singleQuotedString.exec(i)){if(c=this._unescape(l[0]),null===c)return n(this);p='literal',f=c.replace(/^'|'$/g,'"')}else if(l=this._tripleQuotedString.exec(i)){if(c=l[1]||l[2],this._line+=c.split(/\r\n|\r|\n/).length-1,c=this._unescape(c),null===c)return n(this);p='literal',f=c.replace(/^'|'$/g,'"')}break;case'@':'literal'===this._prevTokenType&&(l=this._langcode.exec(i))?(p='langcode',f=l[1]):(l=this._keyword.exec(i))&&(p=l[0]);break;case'.':if(1===i.length?d:'0'>i[1]||'9'<i[1]){p='.',s=1;break}case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':case'+':case'-':(l=this._number.exec(i))&&(p='literal',f='"'+l[0]+'"^^http://www.w3.org/2001/XMLSchema#'+(l[1]?'double':/^[+\-]?\d+$/.test(l[0])?'integer':'decimal'));break;case'B':case'b':case'p':case'P':case'G':case'g':(l=this._sparqlKeyword.exec(i))?p=l[0].toUpperCase():m=!0;break;case'f':case't':(l=this._boolean.exec(i))?(p='literal',f='"'+l[0]+'"^^http://www.w3.org/2001/XMLSchema#boolean'):m=!0;break;case'a':(l=this._shortPredicates.exec(i))?(p='abbreviation',f='http://www.w3.org/1999/02/22-rdf-syntax-ns#type'):m=!0;break;case',':case';':case'[':case']':case'(':case')':case'{':case'}':s=1,p=o;break;default:m=!0;}if(m&&(('@prefix'===this._prevTokenType||'PREFIX'===this._prevTokenType)&&(l=this._prefix.exec(i))?(p='prefix',f=l[1]||''):((l=this._prefixed.exec(i))||d&&(l=this._prefixed.exec(i+' ')))&&(p='prefixed',r=l[1]||'',f=this._unescape(l[2]))),'^'===this._prevTokenType&&(p='IRI'===p||'prefixed'===p?'type':''),!p)return d||!/^'''|^"""/.test(i)&&/\n|\r/.test(i)?n(this):this._input=i;e(null,{line:u,type:p,value:f,prefix:r}),this._prevTokenType=p,i=i.substr(s||l[0].length,i.length)}},_unescape:function(e){try{return e.replace(u,function(e,d,n,a){var u;if(d){if(u=parseInt(d,16),isNaN(u))throw new Error;return i(u)}if(n){if(u=parseInt(n,16),isNaN(u))throw new Error;return 65535>=u?i(u):i(55296+(u-=65536)/1024,56320+(1023&u))}var t=p[a];if(!t)throw new Error;return t})}catch(e){return null}},_syntaxError:function(e){return this._input=null,new Error('Syntax error: unexpected "'+e+'" on line '+this._line+'.')},tokenize:function(e,d){function n(e){null!==u._input&&(u._input+=e,u._tokenizeToEnd(d,!1))}function i(){null!==u._input&&u._tokenizeToEnd(d,!0)}var u=this;this._line=1,'string'==typeof e?(this._input=e,a(function(){u._tokenizeToEnd(d,!0)})):(this._input='',e&&'function'!=typeof e?('function'==typeof e.setEncoding&&e.setEncoding('utf8'),e.on('data',n),e.on('end',i)):(this.addChunk=n,this.end=i,!d&&(d=e)))}},e.exports=n}).call(d,n(38).setImmediate)},function(e,d,n){function i(e){if(!(this instanceof i))return new i(e);this._tripleStack=[],this._graph=null,e=e||{},this._setBase(e.documentIRI);var d='string'==typeof e.format&&e.format.match(/\w*$/)[0].toLowerCase(),n='turtle'===d,p='trig'===d,t=/triple/.test(d),f=/quad/.test(d),r=t||f;(this._supportsNamedGraphs=!n)||(this._readPredicateOrNamedGraph=this._readPredicate),this._supportsQuads=!(n||p||t),r&&(this._base='',this._resolveIRI=function(e){return this._error('Disallowed relative IRI',e),this._callback=a,this._subject=null}),this._blankNodePrefix='string'==typeof e.blankNodePrefix?'_:'+e.blankNodePrefix.replace(/^_:/,''):'',this._lexer=e.lexer||new u({lineMode:r})}function a(){}var u=n(89),p='http://www.w3.org/1999/02/22-rdf-syntax-ns#',t=p+'nil',f=p+'first',r=p+'rest',o=/^[a-z][a-z0-9+.-]*:/i,l=/^(?:([a-z][a-z0-9+.-]*:))?(?:\/\/[^\/]*)?/i,s=/(?:^|\/)\.\.?(?:$|[\/#?])/,m=0,c=0;i._resetBlankNodeIds=function(){m=c=0},i.prototype={_setBase:function(e){if(!e)e=null;else if(0<=e.indexOf('#'))throw new Error('Invalid base IRI '+e);(this._base=e)&&(this._basePath=e.replace(/[^\/?]*(?:\?.*)?$/,''),e=e.match(l),this._baseRoot=e[0],this._baseScheme=e[1])},_readInTopContext:function(e){switch(e.type){case'eof':return null===this._graph?(delete this._prefixes._,this._callback(null,null,this._prefixes)):this._error('Unclosed graph',e);case'@prefix':return this._sparqlStyle=!1,this._readPrefix;case'PREFIX':return this._sparqlStyle=!0,this._readPrefix;case'@base':return this._sparqlStyle=!1,this._readBaseIRI;case'BASE':return this._sparqlStyle=!0,this._readBaseIRI;case'{':if(this._supportsNamedGraphs)return this._graph='',this._subject=null,this._readSubject;case'GRAPH':if(this._supportsNamedGraphs)return this._readNamedGraphLabel;default:return this._readSubject(e);}},_readSubject:function(e){switch(this._predicate=null,e.type){case'IRI':this._subject=null===this._base||o.test(e.value)?e.value:this._resolveIRI(e);break;case'prefixed':var d=this._prefixes[e.prefix];if(void 0===d)return this._error('Undefined prefix "'+e.prefix+':"',e);this._subject=d+e.value;break;case'[':return this._subject='_:b'+c++,this._tripleStack.push({subject:this._subject,predicate:null,object:null,type:'blank'}),this._readBlankNodeHead;case'(':return this._tripleStack.push({subject:t,predicate:null,object:null,type:'list'}),this._subject=null,this._readListItem;case'}':return this._readPunctuation(e);default:return this._error('Expected subject but got '+e.type,e);}return this._readPredicateOrNamedGraph},_readPredicate:function(e){var d=e.type;switch(d){case'IRI':case'abbreviation':this._predicate=null===this._base||o.test(e.value)?e.value:this._resolveIRI(e);break;case'prefixed':if('_'===e.prefix)return this._error('Disallowed blank node as predicate',e);var n=this._prefixes[e.prefix];if(void 0===n)return this._error('Undefined prefix "'+e.prefix+':"',e);this._predicate=n+e.value;break;case'.':case']':case'}':return null===this._predicate?this._error('Unexpected '+d,e):(this._subject=null,']'===d?this._readBlankNodeTail(e):this._readPunctuation(e));case';':return this._readPredicate;default:return this._error('Expected predicate to follow "'+this._subject+'"',e);}return this._readObject},_readObject:function(e){switch(e.type){case'IRI':this._object=null===this._base||o.test(e.value)?e.value:this._resolveIRI(e);break;case'prefixed':var d=this._prefixes[e.prefix];if(void 0===d)return this._error('Undefined prefix "'+e.prefix+':"',e);this._object=d+e.value;break;case'literal':return this._object=e.value,this._readDataTypeOrLang;case'[':var n='_:b'+c++;return this._tripleStack.push({subject:this._subject,predicate:this._predicate,object:n,type:'blank'}),this._subject=n,this._readBlankNodeHead;case'(':return this._tripleStack.push({subject:this._subject,predicate:this._predicate,object:t,type:'list'}),this._subject=null,this._readListItem;default:return this._error('Expected object to follow "'+this._predicate+'"',e);}return this._getTripleEndReader()},_readPredicateOrNamedGraph:function(e){return'{'===e.type?this._readGraph(e):this._readPredicate(e)},_readGraph:function(e){return'{'===e.type?(this._graph=this._subject,this._subject=null,this._readSubject):this._error('Expected graph but got '+e.type,e)},_readBlankNodeHead:function(e){return']'===e.type?(this._subject=null,this._readBlankNodeTail(e)):(this._predicate=null,this._readPredicate(e))},_readBlankNodeTail:function(e){if(']'!==e.type)return this._readBlankNodePunctuation(e);null!==this._subject&&this._callback(null,{subject:this._subject,predicate:this._predicate,object:this._object,graph:this._graph||''});var d=this._tripleStack.pop();return this._subject=d.subject,null===d.object?null===this._predicate?this._readPredicateOrNamedGraph:this._readPredicate:(this._predicate=d.predicate,this._object=d.object,this._getTripleEndReader())},_readDataTypeOrLang:function(e){switch(e.type){case'type':var d;if(''===e.prefix)d=null===this._base||o.test(e.value)?e.value:this._resolveIRI(e);else{var n=this._prefixes[e.prefix];if(void 0===n)return this._error('Undefined prefix "'+e.prefix+':"',e);d=n+e.value}return this._object+='^^'+d,this._getTripleEndReader();case'langcode':return this._object+='@'+e.value.toLowerCase(),this._getTripleEndReader();default:return this._getTripleEndReader().call(this,e);}},_readListItem:function(e){var d=null,n=null,i=this._subject,a=this._tripleStack,u=a[a.length-1],p=this._readListItem;switch(e.type){case'IRI':d=null===this._base||o.test(e.value)?e.value:this._resolveIRI(e);break;case'prefixed':var l=this._prefixes[e.prefix];if(void 0===l)return this._error('Undefined prefix "'+e.prefix+':"',e);d=l+e.value;break;case'literal':d=e.value,p=this._readDataTypeOrLang;break;case'[':n='_:b'+c++,d='_:b'+c++,a.push({subject:n,predicate:f,object:d,type:'blank'}),this._subject=d,p=this._readBlankNodeHead;break;case'(':n='_:b'+c++,a.push({subject:n,predicate:f,object:t,type:'list'}),this._subject=null,p=this._readListItem;break;case')':if(a.pop(),0!==a.length&&'list'===a[a.length-1].type&&this._callback(null,{subject:u.subject,predicate:u.predicate,object:u.object,graph:this._graph||''}),this._subject=u.subject,null===u.predicate){if(p=this._readPredicate,u.subject===t)return p;}else if(this._predicate=u.predicate,this._object=u.object,p=this._getTripleEndReader(),u.object===t)return p;n=t;break;default:return this._error('Expected list item instead of "'+e.type+'"',e);}return null===n&&(this._subject=n='_:b'+c++),null===i?u.object===t?u.object=n:u.subject=n:this._callback(null,{subject:i,predicate:r,object:n,graph:this._graph||''}),null!==d&&this._callback(null,{subject:n,predicate:f,object:d,graph:this._graph||''}),p},_readPunctuation:function(e){var d=this._subject,n=this._graph,i;switch(e.type){case'}':if(null===this._graph)return this._error('Unexpected graph closing',e);this._graph=null;case'.':this._subject=null,i=this._readInTopContext;break;case';':i=this._readPredicate;break;case',':i=this._readObject;break;case'IRI':if(this._supportsQuads&&null===this._graph){n=null===this._base||o.test(e.value)?e.value:this._resolveIRI(e),d=this._subject,i=this._readQuadPunctuation;break}case'prefixed':if(this._supportsQuads&&null===this._graph){var a=this._prefixes[e.prefix];if(void 0===a)return this._error('Undefined prefix "'+e.prefix+':"',e);n=a+e.value,i=this._readQuadPunctuation;break}default:return this._error('Expected punctuation to follow "'+this._object+'"',e);}return null!==d&&this._callback(null,{subject:d,predicate:this._predicate,object:this._object,graph:n||''}),i},_readBlankNodePunctuation:function(e){var d;switch(e.type){case';':d=this._readPredicate;break;case',':d=this._readObject;break;default:return this._error('Expected punctuation to follow "'+this._object+'"',e);}return this._callback(null,{subject:this._subject,predicate:this._predicate,object:this._object,graph:this._graph||''}),d},_readQuadPunctuation:function(e){return'.'===e.type?this._readInTopContext:this._error('Expected dot to follow quad',e)},_readPrefix:function(e){return'prefix'===e.type?(this._prefix=e.value,this._readPrefixIRI):this._error('Expected prefix to follow @prefix',e)},_readPrefixIRI:function(e){if('IRI'!==e.type)return this._error('Expected IRI to follow prefix "'+this._prefix+':"',e);var d;return d=null===this._base||o.test(e.value)?e.value:this._resolveIRI(e),this._prefixes[this._prefix]=d,this._prefixCallback(this._prefix,d),this._readDeclarationPunctuation},_readBaseIRI:function(e){if('IRI'!==e.type)return this._error('Expected IRI to follow base declaration',e);try{this._setBase(null===this._base||o.test(e.value)?e.value:this._resolveIRI(e))}catch(d){this._error(d.message,e)}return this._readDeclarationPunctuation},_readNamedGraphLabel:function(e){switch(e.type){case'IRI':case'prefixed':return this._readSubject(e),this._readGraph;case'[':return this._readNamedGraphBlankLabel;default:return this._error('Invalid graph label',e);}},_readNamedGraphBlankLabel:function(e){return']'===e.type?(this._subject='_:b'+c++,this._readGraph):this._error('Invalid graph label',e)},_readDeclarationPunctuation:function(e){return this._sparqlStyle?this._readInTopContext(e):'.'===e.type?this._readInTopContext:this._error('Expected declaration to end with a dot',e)},_getTripleEndReader:function(){var e=this._tripleStack;if(0===e.length)return this._readPunctuation;switch(e[e.length-1].type){case'blank':return this._readBlankNodeTail;case'list':return this._readListItem;}},_error:function(e,d){this._callback(new Error(e+' at line '+d.line+'.'))},_resolveIRI:function(e){var d=e.value;switch(d[0]){case void 0:return this._base;case'#':return this._base+d;case'?':return this._base.replace(/(?:\?.*)?$/,d);case'/':return('/'===d[1]?this._baseScheme:this._baseRoot)+this._removeDotSegments(d);default:return this._removeDotSegments(this._basePath+d);}},_removeDotSegments:function(e){if(!s.test(e))return e;for(var d='',n=e.length,a=-1,i=-1,u=0,p='/';a<n;){switch(p){case':':if(0>i&&'/'===e[++a]&&'/'===e[++a])for(;(i=a+1)<n&&'/'!==e[i];)a=i;break;case'?':case'#':a=n;break;case'/':if('.'===e[a+1])switch(p=e[++a+1],p){case'/':d+=e.substring(u,a-1),u=a+1;break;case void 0:case'?':case'#':return d+e.substring(u,a)+e.substr(a+1);case'.':if(p=e[++a+1],void 0===p||'/'===p||'?'===p||'#'===p){if(d+=e.substring(u,a-2),(u=d.lastIndexOf('/'))>=i&&(d=d.substr(0,u)),'/'!==p)return d+'/'+e.substr(a+1);u=a+1}}}p=e[++a]}return d+e.substring(u)},parse:function(e,d,n){this._readCallback=this._readInTopContext,this._prefixes=Object.create(null),this._prefixes._=this._blankNodePrefix||'_:b'+m++ +'_','function'==typeof e&&(n=d,d=e,e=null),this._callback=d||a,this._prefixCallback=n||a;var i=this;this._lexer.tokenize(e,function(e,d){null===e?i._readCallback!==void 0&&(i._readCallback=i._readCallback(d)):(i._callback(e),i._callback=a)}),e||(this.addChunk=this._lexer.addChunk,this.end=this._lexer.end)}},e.exports=i},function(e,d){function n(e,d){for(var n in o)d?e.prototype[n]=i(o[n]):e[n]=o[n];return e}function i(e){return function(d){return e(this,d)}}var a='http://www.w3.org/2001/XMLSchema#',u=a+'string',p=a+'integer',t=a+'decimal',f=a+'boolean',r='http://www.w3.org/1999/02/22-rdf-syntax-ns#langString',o={isIRI:function(e){if(!e)return e;var d=e[0];return'"'!==d&&'_'!==d},isLiteral:function(e){return e&&'"'===e[0]},isBlank:function(e){return e&&'_:'===e.substr(0,2)},getLiteralValue:function(e){var d=/^"([^]*)"/.exec(e);if(!d)throw new Error(e+' is not a literal');return d[1]},getLiteralType:function(e){var d=/^"[^]*"(?:\^\^([^"]+)|(@)[^@"]+)?$/.exec(e);if(!d)throw new Error(e+' is not a literal');return d[1]||(d[2]?r:u)},getLiteralLanguage:function(e){var d=/^"[^]*"(?:@([^@"]+)|\^\^[^"]+)?$/.exec(e);if(!d)throw new Error(e+' is not a literal');return d[1]?d[1].toLowerCase():''},isPrefixedName:function(e){return e&&/^[^:\/"']*:[^:\/"']+$/.test(e)},expandPrefixedName:function(e,d){var n=/(?:^|"\^\^)([^:\/#"'\^_]*):[^\/]*$/.exec(e),i,a,u;return n&&(i=n[1],a=d[i],u=n.index),void 0===a?e:0===u?a+e.substr(i.length+1):e.substr(0,u+3)+a+e.substr(u+i.length+4)},createIRI:function(e){return e&&'"'===e[0]?o.getLiteralValue(e):e},createLiteral:function(e,d){if(!d)switch(typeof e){case'boolean':d=f;break;case'number':if(isFinite(e)){d=0==e%1?p:t;break}default:return'"'+e+'"';}return'"'+e+(/^[a-z]+(-[a-z0-9]+)*$/i.test(d)?'"@'+d.toLowerCase():'"^^'+d)}};e.exports=n(n)},function(e,d){function n(e,d){if(!(this instanceof n))return new n(e,d);if(e&&'function'!=typeof e.write&&(d=e,e=null),d=d||{},!e){var i='';this._outputStream={write:function(e,d,n){i+=e,n&&n()},end:function(e){e&&e(null,i)}},this._endStream=!0}else this._outputStream=e,this._endStream=void 0===d.end||!!d.end;this._subject=null,/triple|quad/i.test(d.format)?this._writeTriple=this._writeTripleLine:(this._graph='',this._prefixIRIs=Object.create(null),d.prefixes&&this.addPrefixes(d.prefixes))}function i(e){var d=r[e];return void 0===d&&(1===e.length?(d=e.charCodeAt(0).toString(16),d='\\u0000'.substr(0,6-d.length)+d):(d=(1024*(e.charCodeAt(0)-55296)+e.charCodeAt(1)+9216).toString(16),d='\\U00000000'.substr(0,10-d.length)+d)),d}var a=/^"([^]*)"(?:\^\^(.+)|@([\-a-z]+))?$/i,u='http://www.w3.org/1999/02/22-rdf-syntax-ns#',p=u+'type',t=/["\\\t\n\r\b\f\u0000-\u0019\ud800-\udbff]/,f=/["\\\t\n\r\b\f\u0000-\u0019]|[\ud800-\udbff][\udc00-\udfff]/g,r={"\\":'\\\\','"':'\\"'," ":'\\t',"\n":'\\n',"\r":'\\r',"":'\\b'," ":'\\f'};n.prototype={_write:function(e,d){this._outputStream.write(e,'utf8',d)},_writeTriple:function(e,d,n,i,a){try{this._graph!==i&&(this._write((null===this._subject?'':this._graph?'\n}\n':'.\n')+(i?this._encodeIriOrBlankNode(i)+' {\n':'')),this._subject=null,this._graph='['===i[0]?']':i),this._subject===e?this._predicate===d?this._write(', '+this._encodeObject(n),a):this._write(';\n '+this._encodePredicate(this._predicate=d)+' '+this._encodeObject(n),a):this._write((null===this._subject?'':'.\n')+this._encodeSubject(this._subject=e)+' '+this._encodePredicate(this._predicate=d)+' '+this._encodeObject(n),a)}catch(e){a&&a(e)}},_writeTripleLine:function(e,d,n,i,a){delete this._prefixMatch;try{this._write(this._encodeIriOrBlankNode(e)+' '+this._encodeIriOrBlankNode(d)+' '+this._encodeObject(n)+(i?' '+this._encodeIriOrBlankNode(i)+'.\n':'.\n'),a)}catch(e){a&&a(e)}},_encodeIriOrBlankNode:function(e){var d=e[0];if('['===d||'('===d||'_'===d&&':'===e[1])return e;t.test(e)&&(e=e.replace(f,i));var n=this._prefixRegex.exec(e);return n?n[1]?this._prefixIRIs[n[1]]+n[2]:e:'<'+e+'>'},_encodeLiteral:function(e,d,n){return t.test(e)&&(e=e.replace(f,i)),n?'"'+e+'"@'+n:d?'"'+e+'"^^'+this._encodeIriOrBlankNode(d):'"'+e+'"'},_encodeSubject:function(e){if('"'===e[0])throw new Error('A literal as subject is not allowed: '+e);return'['===e[0]&&(this._subject=']'),this._encodeIriOrBlankNode(e)},_encodePredicate:function(e){if('"'===e[0])throw new Error('A literal as predicate is not allowed: '+e);return e===p?'a':this._encodeIriOrBlankNode(e)},_encodeObject:function(e){if('"'!==e[0])return this._encodeIriOrBlankNode(e);var d=a.exec(e);if(!d)throw new Error('Invalid literal: '+e);return this._encodeLiteral(d[1],d[2],d[3])},_blockedWrite:function(){throw new Error('Cannot write because the writer has been closed.')},addTriple:function(e,d,n,i,a){n===void 0?this._writeTriple(e.subject,e.predicate,e.object,e.graph||'',d):'string'==typeof i?this._writeTriple(e,d,n,i,a):this._writeTriple(e,d,n,'',i)},addTriples:function(e){for(var d=0;d<e.length;d++)this.addTriple(e[d])},addPrefix:function(e,d,n){var i={};i[e]=d,this.addPrefixes(i,n)},addPrefixes:function(e,d){var n=this._prefixIRIs,i=!1;for(var a in e){var u=e[a];/[#\/]$/.test(u)&&n[u]!==(a+=':')&&(i=!0,n[u]=a,null!==this._subject&&(this._write(this._graph?'\n}\n':'.\n'),this._subject=null,this._graph=''),this._write('@prefix '+a+' <'+u+'>.\n'))}if(i){var p='',t='';for(var f in n)p+=p?'|'+f:f,t+=(t?'|':'')+n[f];p=p.replace(/[\]\/\(\)\*\+\?\.\\\$]/g,'\\$&'),this._prefixRegex=new RegExp('^(?:'+t+')[^/]*$|^('+p+')([a-zA-Z][\\-_a-zA-Z0-9]*)$')}this._write(i?'\n':'',d)},blank:function(e,d){var n=e,a,u;switch(void 0===e?n=[]:'string'==typeof e?n=[{predicate:e,object:d}]:!('length'in e)&&(n=[e]),u=n.length){case 0:return'[]';case 1:if(a=n[0],'['!==a.object[0])return'[ '+this._encodePredicate(a.predicate)+' '+this._encodeObject(a.object)+' ]';default:for(var p='[',t=0;t<u;t++)a=n[t],a.predicate===e?p+=', '+this._encodeObject(a.object):(p+=(t?';\n ':'\n ')+this._encodePredicate(a.predicate)+' '+this._encodeObject(a.object),e=a.predicate);return p+'\n]';}},list:function(e){for(var d=e&&e.length||0,n=Array(d),a=0;a<d;a++)n[a]=this._encodeObject(e[a]);return'('+n.join(' ')+')'},_prefixRegex:/$0^/,end:function(e){null!==this._subject&&(this._write(this._graph?'\n}\n':'.\n'),this._subject=null),this._write=this._blockedWrite;var d=e&&function(n,i){d=null,e(n,i)};if(this._endStream)try{return this._outputStream.end(d)}catch(e){}d&&d()}},e.exports=n},function(e,d,n){'use strict';(function(d,i,a){function u(e,d,n){this.chunk=e,this.encoding=d,this.callback=n,this.next=null}function t(e){var d=this;this.next=null,this.entry=null,this.finish=function(){O(d,e)}}function f(e){return A.from(e)}function r(e){return A.isBuffer(e)||e instanceof V}function o(){}function l(e,d){E=E||n(24),e=e||{};var i=d instanceof E;this.objectMode=!!e.objectMode,i&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var a=e.highWaterMark,u=e.writableHighWaterMark,f=this.objectMode?16:16384;this.highWaterMark=a||0===a?a:i&&(u||0===u)?u:f,this.highWaterMark=p(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var r=!1===e.decodeStrings;this.decodeStrings=!r,this.defaultEncoding=e.defaultEncoding||'utf8',this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){_(d,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new t(this)}function s(e){return E=E||n(24),M.call(s,this)||this instanceof E?void(this._writableState=new l(e,this),this.writable=!0,e&&('function'==typeof e.write&&(this._write=e.write),'function'==typeof e.writev&&(this._writev=e.writev),'function'==typeof e.destroy&&(this._destroy=e.destroy),'function'==typeof e.final&&(this._final=e.final)),L.call(this)):new s(e)}function m(e,d){var n=new Error('write after end');e.emit('error',n),R.nextTick(d,n)}function c(e,d,n,i){var a=!0,u=!1;return null===n?u=new TypeError('May not write null values to stream'):'string'!=typeof n&&void 0!==n&&!d.objectMode&&(u=new TypeError('Invalid non-string/buffer chunk')),u&&(e.emit('error',u),R.nextTick(i,u),a=!1),a}function h(e,d,n){return e.objectMode||!1===e.decodeStrings||'string'!=typeof d||(d=A.from(d,n)),d}function g(e,d,n,i,a,u){if(!n){var p=h(d,i,a);i!==p&&(n=!0,a='buffer',i=p)}var t=d.objectMode?1:i.length;d.length+=t;var f=d.length<d.highWaterMark;if(f||(d.needDrain=!0),d.writing||d.corked){var r=d.lastBufferedRequest;d.lastBufferedRequest={chunk:i,encoding:a,isBuf:n,callback:u,next:null},r?r.next=d.lastBufferedRequest:d.bufferedRequest=d.lastBufferedRequest,d.bufferedRequestCount+=1}else y(e,d,!1,t,i,a,u);return f}function y(e,d,n,i,a,u,p){d.writelen=i,d.writecb=p,d.writing=!0,d.sync=!0,n?e._writev(a,d.onwrite):e._write(a,u,d.onwrite),d.sync=!1}function v(e,d,n,i,a){--d.pendingcb,n?(R.nextTick(a,i),R.nextTick(I,e,d),e._writableState.errorEmitted=!0,e.emit('error',i)):(a(i),e._writableState.errorEmitted=!0,e.emit('error',i),I(e,d))}function b(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}function _(e,d){var n=e._writableState,i=n.sync,a=n.writecb;if(b(n),d)v(e,n,i,d,a);else{var u=S(n);u||n.corked||n.bufferProcessing||!n.bufferedRequest||k(e,n),i?D(w,e,n,u,a):w(e,n,u,a)}}function w(e,d,n,i){n||x(e,d),d.pendingcb--,i(),I(e,d)}function x(e,d){0===d.length&&d.needDrain&&(d.needDrain=!1,e.emit('drain'))}function k(e,d){d.bufferProcessing=!0;var n=d.bufferedRequest;if(e._writev&&n&&n.next){var i=d.bufferedRequestCount,a=Array(i),u=d.corkedRequestsFree;u.entry=n;for(var p=0,f=!0;n;)a[p]=n,n.isBuf||(f=!1),n=n.next,p+=1;a.allBuffers=f,y(e,d,!0,d.length,a,'',u.finish),d.pendingcb++,d.lastBufferedRequest=null,u.next?(d.corkedRequestsFree=u.next,u.next=null):d.corkedRequestsFree=new t(d),d.bufferedRequestCount=0}else{for(;n;){var r=n.chunk,o=n.encoding,l=n.callback,s=d.objectMode?1:r.length;if(y(e,d,!1,s,r,o,l),n=n.next,d.bufferedRequestCount--,d.writing)break}null===n&&(d.lastBufferedRequest=null)}d.bufferedRequest=n,d.bufferProcessing=!1}function S(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function T(e,d){e._final(function(n){d.pendingcb--,n&&e.emit('error',n),d.prefinished=!0,e.emit('prefinish'),I(e,d)})}function N(e,d){d.prefinished||d.finalCalled||('function'==typeof e._final?(d.pendingcb++,d.finalCalled=!0,R.nextTick(T,e,d)):(d.prefinished=!0,e.emit('prefinish')))}function I(e,d){var n=S(d);return n&&(N(e,d),0===d.pendingcb&&(d.finished=!0,e.emit('finish'))),n}function j(e,d,n){d.ending=!0,I(e,d),n&&(d.finished?R.nextTick(n):e.once('finish',n)),d.ended=!0,e.writable=!1}function O(e,d,n){var i=e.entry;for(e.entry=null;i;){var a=i.callback;d.pendingcb--,a(n),i=i.next}d.corkedRequestsFree?d.corkedRequestsFree.next=e:d.corkedRequestsFree=e}var R=n(58);e.exports=s;var D=!d.browser&&-1<['v0.10','v0.9.'].indexOf(d.version.slice(0,5))?i:R.nextTick,E;s.WritableState=l;var P=n(37);P.inherits=n(31);var C={deprecate:n(286)},L=n(158),A=n(59).Buffer,V=a.Uint8Array||function(){},U=n(157);P.inherits(s,L),l.prototype.getBuffer=function e(){for(var d=this.bufferedRequest,n=[];d;)n.push(d),d=d.next;return n},function(){try{Object.defineProperty(l.prototype,'buffer',{get:C.deprecate(function(){return this.getBuffer()},'_writableState.buffer is deprecated. Use _writableState.getBuffer instead.','DEP0003')})}catch(e){}}();var M;'function'==typeof Symbol&&Symbol.hasInstance&&'function'==typeof Function.prototype[Symbol.hasInstance]?(M=Function.prototype[Symbol.hasInstance],Object.defineProperty(s,Symbol.hasInstance,{value:function(e){return!!M.call(this,e)||!(this!==s)&&e&&e._writableState instanceof l}})):M=function(e){return e instanceof this},s.prototype.pipe=function(){this.emit('error',new Error('Cannot pipe, not readable'))},s.prototype.write=function(e,d,n){var i=this._writableState,a=!1,u=!i.objectMode&&r(e);return u&&!A.isBuffer(e)&&(e=f(e)),'function'==typeof d&&(n=d,d=null),u?d='buffer':!d&&(d=i.defaultEncoding),'function'!=typeof n&&(n=o),i.ended?m(this,n):(u||c(this,i,e,n))&&(i.pendingcb++,a=g(this,i,u,e,d,n)),a},s.prototype.cork=function(){var e=this._writableState;e.corked++},s.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.finished&&!e.bufferProcessing&&e.bufferedRequest&&k(this,e))},s.prototype.setDefaultEncoding=function e(d){if('string'==typeof d&&(d=d.toLowerCase()),!(-1<['hex','utf8','utf-8','ascii','binary','base64','ucs2','ucs-2','utf16le','utf-16le','raw'].indexOf((d+'').toLowerCase())))throw new TypeError('Unknown encoding: '+d);return this._writableState.defaultEncoding=d,this},Object.defineProperty(s.prototype,'writableHighWaterMark',{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),s.prototype._write=function(e,d,n){n(new Error('_write() is not implemented'))},s.prototype._writev=null,s.prototype.end=function(e,d,n){var i=this._writableState;'function'==typeof e?(n=e,e=null,d=null):'function'==typeof d&&(n=d,d=null),null!==e&&e!==void 0&&this.write(e,d),i.corked&&(i.corked=1,this.uncork()),i.ending||i.finished||j(this,i,n)},Object.defineProperty(s.prototype,'destroyed',{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),s.prototype.destroy=U.destroy,s.prototype._undestroy=U.undestroy,s.prototype._destroy=function(e,d){this.end(),d(e)}}).call(d,n(16),n(38).setImmediate,n(1))},function(e,d,n){d=e.exports=n(155),d.Stream=d,d.Readable=d,d.Writable=n(93),d.Duplex=n(24),d.Transform=n(156),d.PassThrough=n(264)},function(e,d,n){'use strict';function i(e){return e&&e.__esModule?e:{default:e}}function a(e){var d=this;return function(){var n=(0,o.default)(f.default.mark(function n(i){var a;return f.default.wrap(function d(n){for(;1;)switch(n.prev=n.next){case 0:return n.next=2,(0,m.updateStorage)(e,function(e){return(0,p.default)({},e,{session:i})});case 2:return a=n.sent,n.abrupt('return',a.session);case 4:case'end':return n.stop();}},n,d)}));return function(e){return n.apply(this,arguments)}}()}Object.defineProperty(d,'__esModule',{value:!0}),d.clearSession=d.getSession=void 0;var u=n(49),p=i(u),t=n(20),f=i(t),r=n(19),o=i(r),l=d.getSession=function(){var e=(0,o.default)(f.default.mark(function e(d){var n;return f.default.wrap(function e(i){for(;1;)switch(i.prev=i.next){case 0:return i.next=2,(0,m.getData)(d);case 2:return n=i.sent,i.abrupt('return',n.session||null);case 4:case'end':return i.stop();}},e,this)}));return function d(n){return e.apply(this,arguments)}}(),s=d.clearSession=function(){var e=(0,o.default)(f.default.mark(function e(d){return f.default.wrap(function e(n){for(;1;)switch(n.prev=n.next){case 0:return n.next=2,(0,m.updateStorage)(d,function(e){return(0,p.default)({},e,{session:null})});case 2:case'end':return n.stop();}},e,this)}));return function d(n){return e.apply(this,arguments)}}();d.saveSession=a;var m=n(60)},function(e,d,n){'use strict';function i(e){if(e&&e.__esModule)return e;var d={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(d[n]=e[n]);return d.default=e,d}function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(d,'__esModule',{value:!0}),d.fetchWithCredentials=d.requiresAuth=d.getRegisteredRp=d.logout=d.currentSession=d.login=void 0;var u=n(49),p=a(u),t=n(20),f=a(t),r=n(19),o=a(r),l=function(){var e=(0,o.default)(f.default.mark(function e(d){var n,i;return f.default.wrap(function e(a){for(;1;)switch(a.prev=a.next){case 0:return a.next=2,(0,_.getData)(d);case 2:if(n=a.sent,i=n.rpConfig,!i){a.next=9;break}return i.store=d,a.abrupt('return',g.default.from(i));case 9:return a.abrupt('return',null);case 10:case'end':return a.stop();}},e,this)}));return function d(n){return e.apply(this,arguments)}}(),s=function(){var e=(0,o.default)(f.default.mark(function e(d,n,i){return f.default.wrap(function e(n){for(;1;)switch(n.prev=n.next){case 0:return n.next=2,(0,_.updateStorage)(d,function(e){return(0,p.default)({},e,{rpConfig:i})});case 2:return n.abrupt('return',i);case 3:case'end':return n.stop();}},e,this)}));return function d(n,i,a){return e.apply(this,arguments)}}(),m=n(190),c=i(m),h=n(184),g=a(h),y=n(176),v=a(y),b=n(61),_=n(60),w=d.login=function(){var e=(0,o.default)(f.default.mark(function e(d,n){var i;return f.default.wrap(function e(a){for(;1;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,S(d,n);case 3:return i=a.sent,a.next=6,I(n.storage);case 6:return a.abrupt('return',N(i,n));case 9:return a.prev=9,a.t0=a['catch'](0),console.warn('Error logging in with WebID-OIDC'),console.error(a.t0),a.abrupt('return',null);case 14:case'end':return a.stop();}},e,void 0,[[0,9]])}));return function d(n,i){return e.apply(this,arguments)}}(),x=d.currentSession=function(){var e=(0,o.default)(f.default.mark(function e(){var d=0<arguments.length&&arguments[0]!==void 0?arguments[0]:(0,_.defaultStorage)(),n,i,a,u;return f.default.wrap(function e(t){for(;1;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,l(d);case 3:if(n=t.sent,n){t.next=6;break}return t.abrupt('return',null);case 6:if(i=(0,b.currentUrl)(),i&&i.includes('#access_token=')){t.next=9;break}return t.abrupt('return',null);case 9:return t.next=11,(0,_.getData)(d);case 11:return a=t.sent,t.next=14,n.validateResponse(i,a);case 14:if(u=t.sent,u){t.next=17;break}return t.abrupt('return',null);case 17:return t.next=19,j(d);case 19:return t.abrupt('return',(0,p.default)({},u,{webId:u.idClaims.sub,idp:u.issuer}));case 22:return t.prev=22,t.t0=t['catch'](0),console.warn('Error finding a WebID-OIDC session'),console.error(t.t0),t.abrupt('return',null);case 27:case'end':return t.stop();}},e,void 0,[[0,22]])}));return function d(){return e.apply(this,arguments)}}(),k=d.logout=function e(d){return l(d).then(function(e){return e?e.logout():void 0}).catch(function(e){console.warn('Error logging out of the WebID-OIDC session'),console.error(e)})},S=d.getRegisteredRp=function e(d,n){return l(n.storage).then(function(e){return e&&e.provider.url===d?e:T(d,n).then(function(e){return s(n.storage,d,e)})})},T=function e(d,n){var i=n.storage,a=n.callbackUri,u='id_token token',p={issuer:d,grant_types:['implicit'],redirect_uris:[a],response_types:[u],scope:'openid profile'},t={defaults:{authenticate:{redirect_uri:a,response_type:u}},store:i};return g.default.register(d,p,t)},N=function(){var e=(0,o.default)(f.default.mark(function e(d,n){var i=n.callbackUri,a=n.storage,u,p;return f.default.wrap(function e(n){for(;1;)switch(n.prev=n.next){case 0:return n.next=2,(0,_.getData)(a);case 2:return u=n.sent,n.next=5,d.createRequest({redirect_uri:i},u);case 5:return p=n.sent,n.next=8,(0,_.updateStorage)(a,function(){return u});case 8:return n.abrupt('return',(0,b.navigateTo)(p));case 9:case'end':return n.stop();}},e,void 0)}));return function d(n,i){return e.apply(this,arguments)}}(),I=function e(d){return(0,_.updateStorage)(d,function(e){return(0,p.default)({},e,{appHashFragment:window.location.hash})})},j=function e(d){return(0,_.updateStorage)(d,function(e){return window.location.hash=e.appHashFragment,delete e.appHashFragment,e})},O=d.requiresAuth=function e(d){if(401!==d.status)return!1;var n=d.headers.get('www-authenticate');if(!n)return!1;var i=c.parse(n);return'Bearer'===i.scheme&&i.params&&'openid webid'===i.params.scope},R=d.fetchWithCredentials=function e(d){return function(){var e=(0,o.default)(f.default.mark(function e(n,i,a){var u,t;return f.default.wrap(function e(f){for(;1;)switch(f.prev=f.next){case 0:return f.next=2,v.default.issueFor((0,b.toUrlString)(i),d);case 2:return u=f.sent,t=(0,p.default)({},a,{credentials:'include',headers:(0,p.default)({},a&&a.headers?a.headers:{},{authorization:'Bearer '+u})}),f.abrupt('return',n(i,t));case 5:case'end':return f.stop();}},e,void 0)}));return function(d,n,i){return e.apply(this,arguments)}}()}},function(e,d,n){(function(e,i){function a(e,n){var i={seen:[],stylize:p};return 3<=arguments.length&&(i.depth=arguments[2]),4<=arguments.length&&(i.colors=arguments[3]),h(n)?i.showHidden=n:n&&d._extend(i,n),w(i.showHidden)&&(i.showHidden=!1),w(i.depth)&&(i.depth=2),w(i.colors)&&(i.colors=!1),w(i.customInspect)&&(i.customInspect=!0),i.colors&&(i.stylize=u),f(i,e,i.depth)}function u(e,d){var n=a.styles[d];return n?'\x1B['+a.colors[n][0]+'m'+e+'\x1B['+a.colors[n][1]+'m':e}function p(e,d){return e}function t(e){var d={};return e.forEach(function(e,n){d[e]=!0}),d}function f(e,i,a){if(e.customInspect&&i&&N(i.inspect)&&i.inspect!==d.inspect&&!(i.constructor&&i.constructor.prototype===i)){var u=i.inspect(a,e);return b(u)||(u=f(e,u,a)),u}var p=r(e,i);if(p)return p;var h=Object.keys(i),g=t(h);if(e.showHidden&&(h=Object.getOwnPropertyNames(i)),T(i)&&(0<=h.indexOf('message')||0<=h.indexOf('description')))return o(i);if(0===h.length){if(N(i)){var y=i.name?': '+i.name:'';return e.stylize('[Function'+y+']','special')}if(x(i))return e.stylize(RegExp.prototype.toString.call(i),'regexp');if(S(i))return e.stylize(Date.prototype.toString.call(i),'date');if(T(i))return o(i)}var v='',_=!1,w=['{','}'];if(c(i)&&(_=!0,w=['[',']']),N(i)){var k=i.name?': '+i.name:'';v=' [Function'+k+']'}if(x(i)&&(v=' '+RegExp.prototype.toString.call(i)),S(i)&&(v=' '+Date.prototype.toUTCString.call(i)),T(i)&&(v=' '+o(i)),0===h.length&&(!_||0==i.length))return w[0]+v+w[1];if(0>a)return x(i)?e.stylize(RegExp.prototype.toString.call(i),'regexp'):e.stylize('[Object]','special');e.seen.push(i);var n;return n=_?l(e,i,a,g,h):h.map(function(d){return s(e,i,a,g,d,_)}),e.seen.pop(),m(n,v,w)}function r(e,d){if(w(d))return e.stylize('undefined','undefined');if(b(d)){var n='\''+JSON.stringify(d).replace(/^"|"$/g,'').replace(/'/g,'\\\'').replace(/\\"/g,'"')+'\'';return e.stylize(n,'string')}return v(d)?e.stylize(''+d,'number'):h(d)?e.stylize(''+d,'boolean'):g(d)?e.stylize('null','null'):void 0}function o(e){return'['+Error.prototype.toString.call(e)+']'}function l(e,d,n,a,u){for(var p=[],t=0,i=d.length;t<i;++t)D(d,t+'')?p.push(s(e,d,n,a,t+'',!0)):p.push('');return u.forEach(function(i){i.match(/^\d+$/)||p.push(s(e,d,n,a,i,!0))}),p}function s(e,d,n,i,a,u){var p,t,r;if(r=Object.getOwnPropertyDescriptor(d,a)||{value:d[a]},r.get?r.set?t=e.stylize('[Getter/Setter]','special'):t=e.stylize('[Getter]','special'):r.set&&(t=e.stylize('[Setter]','special')),D(i,a)||(p='['+a+']'),t||(0>e.seen.indexOf(r.value)?(t=g(n)?f(e,r.value,null):f(e,r.value,n-1),-1<t.indexOf('\n')&&(u?t=t.split('\n').map(function(e){return' '+e}).join('\n').substr(2):t='\n'+t.split('\n').map(function(e){return' '+e}).join('\n'))):t=e.stylize('[Circular]','special')),w(p)){if(u&&a.match(/^\d+$/))return t;p=JSON.stringify(''+a),p.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(p=p.substr(1,p.length-2),p=e.stylize(p,'name')):(p=p.replace(/'/g,'\\\'').replace(/\\"/g,'"').replace(/(^"|"$)/g,'\''),p=e.stylize(p,'string'))}return p+': '+t}function m(e,d,n){var i=0,a=e.reduce(function(e,d){return i++,0<=d.indexOf('\n')&&i++,e+d.replace(/\u001b\[\d\d?m/g,'').length+1},0);return 60<a?n[0]+(''===d?'':d+'\n ')+' '+e.join(',\n ')+' '+n[1]:n[0]+d+' '+e.join(', ')+' '+n[1]}function c(e){return Array.isArray(e)}function h(e){return'boolean'==typeof e}function g(e){return null===e}function y(e){return null==e}function v(e){return'number'==typeof e}function b(e){return'string'==typeof e}function _(e){return'symbol'==typeof e}function w(e){return void 0===e}function x(e){return k(e)&&'[object RegExp]'===j(e)}function k(e){return'object'==typeof e&&null!==e}function S(e){return k(e)&&'[object Date]'===j(e)}function T(d){return k(d)&&('[object Error]'===j(d)||d instanceof Error)}function N(e){return'function'==typeof e}function I(e){return null===e||'boolean'==typeof e||'number'==typeof e||'string'==typeof e||'symbol'==typeof e||'undefined'==typeof e}function j(e){return Object.prototype.toString.call(e)}function O(e){return 10>e?'0'+e.toString(10):e.toString(10)}function R(){var e=new Date,d=[O(e.getHours()),O(e.getMinutes()),O(e.getSeconds())].join(':');return[e.getDate(),L[e.getMonth()],d].join(' ')}function D(e,d){return Object.prototype.hasOwnProperty.call(e,d)}var E=/%[sdj%]/g;d.format=function(e){if(!b(e)){for(var d=[],n=0;n<arguments.length;n++)d.push(a(arguments[n]));return d.join(' ')}for(var n=1,i=arguments,u=i.length,p=(e+'').replace(E,function(e){if('%%'===e)return'%';if(n>=u)return e;switch(e){case'%s':return i[n++]+'';case'%d':return+i[n++];case'%j':try{return JSON.stringify(i[n++])}catch(e){return'[Circular]'}default:return e;}}),t=i[n];n<u;t=i[++n])p+=g(t)||!k(t)?' '+t:' '+a(t);return p},d.deprecate=function(n,a){function u(){if(!p){if(i.throwDeprecation)throw new Error(a);else i.traceDeprecation?console.trace(a):console.error(a);p=!0}return n.apply(this,arguments)}if(w(e.process))return function(){return d.deprecate(n,a).apply(this,arguments)};if(!0===i.noDeprecation)return n;var p=!1;return u};var P={},C;d.debuglog=function(e){if(w(C)&&(C=i.env.NODE_DEBUG||''),e=e.toUpperCase(),!P[e])if(new RegExp('\\b'+e+'\\b','i').test(C)){var n=i.pid;P[e]=function(){var i=d.format.apply(d,arguments);console.error('%s %d: %s',e,n,i)}}else P[e]=function(){};return P[e]},d.inspect=a,a.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},a.styles={special:'cyan',number:'yellow',boolean:'yellow',undefined:'grey',null:'bold',string:'green',date:'magenta',regexp:'red'},d.isArray=c,d.isBoolean=h,d.isNull=g,d.isNullOrUndefined=y,d.isNumber=v,d.isString=b,d.isSymbol=_,d.isUndefined=w,d.isRegExp=x,d.isObject=k,d.isDate=S,d.isError=T,d.isFunction=N,d.isPrimitive=I,d.isBuffer=n(288);var L=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];d.log=function(){console.log('%s - %s',R(),d.format.apply(d,arguments))},d.inherits=n(287),d._extend=function(e,d){if(!d||!k(d))return e;for(var n=Object.keys(d),a=n.length;a--;)e[n[a]]=d[n[a]];return e}}).call(d,n(1),n(16))},function(e,d){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],!e.children&&(e.children=[]),Object.defineProperty(e,'loaded',{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,'id',{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,n){e.exports=d},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}function a(e,d){if(!e)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return d&&('object'==typeof d||'function'==typeof d)?d:e}function u(e,d){if('function'!=typeof d&&null!==d)throw new TypeError('Super expression must either be null or a function, not '+typeof d);e.prototype=Object.create(d&&d.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),d&&(Object.setPrototypeOf?Object.setPrototypeOf(e,d):e.__proto__=d)}var p=function(e){function d(e){return i(this,d),a(this,(d.__proto__||Object.getPrototypeOf(d)).call(this,e))}return u(d,e),d}(Error);e.exports=p},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}function a(e,d){if(!e)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return d&&('object'==typeof d||'function'==typeof d)?d:e}function u(e,d){if('function'!=typeof d&&null!==d)throw new TypeError('Super expression must either be null or a function, not '+typeof d);e.prototype=Object.create(d&&d.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),d&&(Object.setPrototypeOf?Object.setPrototypeOf(e,d):e.__proto__=d)}var p=function(e){function d(e){i(this,d);var n=a(this,(d.__proto__||Object.getPrototypeOf(d)).call(this));return n.message=e+' is not a supported algorithm',n}return u(d,e),d}(Error);e.exports=p},function(e,d,n){'use strict';e.exports={DataError:n(100),NotSupportedError:n(101)}},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}function a(e,d){if(!e)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return d&&('object'==typeof d||'function'==typeof d)?d:e}function u(e,d){if('function'!=typeof d&&null!==d)throw new TypeError('Super expression must either be null or a function, not '+typeof d);e.prototype=Object.create(d&&d.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),d&&(Object.setPrototypeOf?Object.setPrototypeOf(e,d):e.__proto__=d)}var p=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),t=n(5),f=t.JSONDocument,r=n(40),o=n(64),l=function(e){function d(){return i(this,d),a(this,(d.__proto__||Object.getPrototypeOf(d)).apply(this,arguments))}return u(d,e),p(d,null,[{key:'importKey',value:function e(d){return o.importKey(d)}},{key:'schema',get:function e(){return r}}]),d}(f);e.exports=l},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var a=function(){function e(e,d){var n=[],i=!0,a=!1,u;try{for(var p=e[Symbol.iterator](),t;!(i=(t=p.next()).done)&&(n.push(t.value),!(d&&n.length===d));i=!0);}catch(e){a=!0,u=e}finally{try{!i&&p['return']&&p['return']()}finally{if(a)throw u}}return n}return function(d,n){if(Array.isArray(d))return d;if(Symbol.iterator in Object(d))return e(d,n);throw new TypeError('Invalid attempt to destructure non-iterable instance')}}(),u=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),p=n(21),t=n(64),f=n(102),r=f.DataError,o=function(){function e(){i(this,e)}return u(e,null,[{key:'sign',value:function e(d){var n=p(JSON.stringify(d.payload));if('compact'===d.serialization){var i=d.key,a=d.header.alg,u=p(JSON.stringify(d.header)),f=u+'.'+n;return t.sign(a,i,f).then(function(e){return f+'.'+e})}return'json'===d.serialization,'flattened'===d.serialization,Promise.reject(new r('Unsupported serialization'))}},{key:'verify',value:function e(d){d.signatures;var n=d.key,i=d.signature,u=d.header.alg;if(d.signature){var p=a(d.segments,2),f=p[0],o=p[1],l=f+'.'+o;return'none'===u?Promise.reject(new r('Signature provided to verify with alg: none')):t.verify(u,n,i,l).then(function(e){return d.verified=e,e})}if('none'===u){if(!n&&!i)return d.verified=!0,Promise.resolve(!0);if(n)return Promise.reject(new r('Key provided to verify signature with alg: none'))}return Promise.reject(new r('Missing signature(s)'))}}]),e}();e.exports=o},function(e,d,n){'use strict';var i=n(5),a=i.JSONSchema,u=new a({type:'string',format:'base64url'});e.exports=u},function(e,d,n){'use strict';var i=n(40),a=n(5),u=a.JSONSchema,p=new u({type:'object',properties:{typ:{type:'string'},cty:{type:'string',enum:['JWT']},alg:{type:'string',format:'StringOrURI'},jku:{type:'string',format:'URI'},kid:{type:'string'},x5u:{type:'string',format:'URI'},x5c:{type:'array',items:{type:'string',format:'base64'}},x5t:{type:'string',format:'base64url'},crit:{type:'array',items:{type:'string'},minItems:1},enc:{type:'string',format:'StringOrURI'},zip:{type:'string'}}});e.exports=p},function(e,d,n){'use strict';var i=n(5),a=i.JSONSchema,u=n(40),p=new a({type:'object',properties:{keys:{type:'array',items:u}}});e.exports=p},function(e,d,n){'use strict';var i=n(5),a=i.JSONSchema,u=new a({properties:{iss:{type:'string',format:'StringOrURI'},sub:{type:'string',format:'StringOrURI'},aud:{type:['array','string'],format:'StringOrURI',items:{format:'StringOrURI'}},exp:{type:'number',format:'NumericDate'},nbf:{type:'number',format:'NumericDate'},iat:{type:'number',format:'NumericDate'},jti:{type:'string'}}});e.exports=u},function(e,d,n){'use strict';var i=n(105),a=n(108),u=n(106),p=n(5),t=p.JSONSchema,f=new t({type:'object',properties:{type:{type:'string',enum:['JWS','JWE']},segments:{type:'array'},header:u,protected:u,unprotected:u,iv:i,aad:i,ciphertext:i,tag:i,recipients:{type:'array',items:{type:'object',properties:{header:u,encrypted_key:i}}},payload:a,signatures:{type:'array',items:{type:'object',properties:{protected:u,header:u,signature:i,key:{type:'object'}}}},signature:i,verified:{type:'boolean',default:!1},key:{type:'object'},serialization:{type:'string',enum:['compact','json','flattened'],default:'compact'}}});e.exports=f},function(e,d,n){'use strict';(function(d){var i=d.TextEncoder?d.TextEncoder:n(280).TextEncoder;e.exports=i}).call(d,n(1))},function(e,d,n){(function(d){const i=n(68),a=n(99),{URL:u}=n(39),p=a.Headers?a.Headers:d.Headers,{JSONDocument:t}=n(5),{JWKSet:f}=n(25),r=n(177),o=n(178),l=n(182),s=n(66),m=n(65);class c extends t{static get schema(){return l}static from(e){let d=new c(e),n=d.validate();if(!n.valid)return Promise.reject(new Error(JSON.stringify(n)));let i=d.provider.jwks;return i?f.importKeys(i).then((e)=>(d.provider.jwks=e,d)):d.jwks().then(()=>d)}static register(e,d,n){let i=new c({provider:{url:e},defaults:Object.assign({},n.defaults),store:n.store});return Promise.resolve().then(()=>i.discover()).then(()=>i.jwks()).then(()=>i.register(d)).then(()=>i)}discover(){try{let e=this.provider.url;i(e,'RelyingParty provider must define "url"');let d=new u(e);return d.pathname='.well-known/openid-configuration',a(d.toString()).then(s('Error fetching openid configuration')).then((e)=>e.json().then((e)=>this.provider.configuration=e))}catch(e){return Promise.reject(e)}}register(e){try{let d=this.provider.configuration;i(d,'OpenID Configuration is not initialized.'),i(d.registration_endpoint,'OpenID Configuration is missing registration_endpoint.');let n=d.registration_endpoint,u='post',t=new p({"Content-Type":'application/json'}),f=this.defaults.register,r=JSON.stringify(Object.assign({},f,e));return a(n,{method:u,headers:t,body:r}).then(s('Error registering client')).then((e)=>e.json().then((e)=>this.registration=e))}catch(e){return Promise.reject(e)}}serialize(){return JSON.stringify(this)}jwks(){try{let e=this.provider.configuration;i(e,'OpenID Configuration is not initialized.'),i(e.jwks_uri,'OpenID Configuration is missing jwks_uri.');let d=e.jwks_uri;return a(d).then(s('Error resolving provider keys')).then((e)=>e.json().then((e)=>f.importKeys(e)).then((e)=>this.provider.jwks=e))}catch(e){return Promise.reject(e)}}createRequest(e,d){return r.create(this,e,d||this.store)}validateResponse(e,d=this.store){let n;n=e.match(/^http(s?):\/\//)?{rp:this,redirect:e,session:d}:{rp:this,body:e,session:d};const i=new o(n);return o.validateResponse(i)}userinfo(){try{let e=this.provider.configuration;i(e,'OpenID Configuration is not initialized.'),i(e.userinfo_endpoint,'OpenID Configuration is missing userinfo_endpoint.');let d=e.userinfo_endpoint,n=this.store.access_token;i(n,'Missing access token.');let u=new p({"Content-Type":'application/json',Authorization:`Bearer ${n}`});return a(d,{headers:u}).then(s('Error fetching userinfo')).then((e)=>e.json())}catch(e){return Promise.reject(e)}}logoutRequest(e={}){const{id_token_hint:d,post_logout_redirect_uri:n,state:a}=e;let p;if(i(this.provider,'OpenID Configuration is not initialized'),p=this.provider.configuration,i(p,'OpenID Configuration is not initialized'),!p.end_session_endpoint)return console.log(`OpenId Configuration for `+`${p.issuer} is missing end_session_endpoint`),null;if(n&&!d)throw new Error('id_token_hint is required when using post_logout_redirect_uri');const t={};d&&(t.id_token_hint=d),n&&(t.post_logout_redirect_uri=n),a&&(t.state=a);const f=new u(p.end_session_endpoint);return f.search=m.encode(t),f.href}logout(){let e;try{i(this.provider,'OpenID Configuration is not initialized.'),e=this.provider.configuration,i(e,'OpenID Configuration is not initialized.'),i(e.end_session_endpoint,'OpenID Configuration is missing end_session_endpoint.')}catch(e){return Promise.reject(e)}if(!e.end_session_endpoint)return this.clearSession(),Promise.resolve(void 0);let d=e.end_session_endpoint,n='get';return a(d,{method:n,credentials:'include'}).then(s('Error logging out')).then(()=>this.clearSession())}clearSession(){let e=this.store;e&&delete e[h]}popTokenFor(e,d){return PoPToken.issueFor(e,d)}}const h='oidc.session.privateKey';c.SESSION_PRIVATE_KEY=h,e.exports=c}).call(d,n(1))},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var a=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),u=/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,p=/^(?:[a-z][a-z0-9+-.]*)?(?:\:|\/)\/?[^\s]*$/i,t=/^[a-z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,f=/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,r=/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,o=/^[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?(\.[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?)*$/i,l=function(){function e(){i(this,e)}return a(e,[{key:'register',value:function e(d,n){if('string'!=typeof d)throw new Error('Format name must be a string');return'string'==typeof n&&(n=new RegExp(n)),this[d]=n}},{key:'resolve',value:function e(d){var n=this[d];if(!n)throw new Error('Unknown JSON Schema format.');return n}},{key:'test',value:function e(d,n){var i=this.resolve(d);return i.test(n)}}],[{key:'initialize',value:function d(){var n=new e;return n.register('date-time',u),n.register('uri',p),n.register('email',t),n.register('ipv4',f),n.register('ipv6',r),n.register('hostname',o),n}}]),e}();e.exports=l.initialize()},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var a='function'==typeof Symbol&&'symbol'==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&'function'==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?'symbol':typeof e},u=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),p=function(){function e(d,n){i(this,e),Object.assign(this,n||{}),this.root=this.root||this,this.root.depth=this.root.depth||1,this.level>this.root.depth&&(this.root.depth=this.level),this.level=this.level||0,this.schema=d}return u(e,[{key:'compile',value:function e(){var d=this.root,n=this.depth,a=this.level,u='',p='';if(p+=this.default(),p+=this.properties(),p+=this.items(),p+=this.member(),p+=this.item(),d===this){for(var t=1;t<=this.root.depth;t++)u+=this.declaration(t);return'\n options = options || {}\n\n if (options.filter === false) {\n Object.assign(target, JSON.parse(JSON.stringify(source)))\n }\n\n '+u+'\n '+p+'\n '}return p}},{key:'declaration',value:function e(d){return'\n var target'+d+'\n var source'+d+'\n var count'+d+'\n '}},{key:'default',value:function e(){var d=this.schema,n=this.level,i=this.key,a=this.index,u=d.default,p='';return d.hasOwnProperty('default')&&(i&&(p+='\n target'+n+'[\''+i+'\'] = '+JSON.stringify(u)+'\n '),a&&(p+='\n target'+n+'['+a+'] = '+JSON.stringify(u)+'\n '),1<n&&(p+='\n count'+n+'++\n '),p='\n if (options.defaults !== false) {\n '+p+'\n }\n '),p}},{key:'member',value:function e(){var d=this.schema,n=this.root,i=this.level,a=this.key,u=d.properties,p=d.additionalProperties,t=d.items,f=d.additionalItems,r='';return!a||u||p||t||f||(r+='\n target'+i+'[\''+a+'\'] = source'+i+'[\''+a+'\']\n ',1<i&&(r+='\n count'+i+'++\n '),r='\n if (source'+i+'.hasOwnProperty(\''+a+'\')) {\n '+r+'\n }\n '),r}},{key:'item',value:function e(){var d=this.schema,n=this.root,i=this.level,a=this.index,u=d.properties,p=d.additionalProperties,t=d.items,f=d.additionalItems,r='';return!a||u||p||t||f||(r+='\n target'+i+'['+a+'] = source'+i+'['+a+']\n ',1<i&&(r+='\n count'+i+'++\n '),r='\n if ('+a+' < len) {\n '+r+'\n }\n '),r}},{key:'properties',value:function d(){var n=this.schema,i=this.root,a=this.level,u=this.key,p=this.index,d=n.properties,t='';return d&&(Object.keys(d).forEach(function(n){var u=d[n],p=new e(u,{key:n,root:i,level:a+1});t+=p.compile()}),i===this?t='\n if (typeof source === \'object\' && source !== null && !Array.isArray(source)) {\n if (typeof target !== \'object\') {\n throw new Error(\'?\')\n }\n\n source1 = source\n target1 = target\n count1 = 0\n\n '+t+'\n }\n ':(p&&(t='\n if ('+p+' < source'+a+'.length || typeof source'+a+'['+p+'] === \'object\') {\n\n source'+(a+1)+' = source'+a+'['+p+'] || {}\n count'+(a+1)+' = 0\n\n if ('+p+' < target'+a+'.length || typeof target'+a+'['+p+'] !== \'object\') {\n target'+(a+1)+' = {}\n if ('+p+' < source'+a+'.length) {\n count'+(a+1)+'++\n }\n } else {\n target'+(a+1)+' = target'+a+'['+p+']\n }\n\n '+t+'\n\n if (count'+(a+1)+' > 0) {\n target'+a+'['+p+'] = target'+(a+1)+'\n count'+a+'++\n }\n\n } else {\n target'+a+'['+p+'] = source'+a+'['+p+']\n count'+a+'++\n }\n '),u&&(t='\n if ((typeof source'+a+'[\''+u+'\'] === \'object\'\n && source'+a+'[\''+u+'\'] !== null\n && !Array.isArray(source'+a+'[\''+u+'\']))\n || !source'+a+'.hasOwnProperty(\''+u+'\')) {\n\n source'+(a+1)+' = source'+a+'[\''+u+'\'] || {}\n count'+(a+1)+' = 0\n\n if (!target'+a+'.hasOwnProperty(\''+u+'\')\n || typeof target'+a+'[\''+u+'\'] !== \'object\'\n || target'+a+'[\''+u+'\'] === null\n || Array.isArray(target'+a+'[\''+u+'\'])) {\n target'+(a+1)+' = {}\n if (source'+a+'.hasOwnProperty(\''+u+'\')) {\n count'+(a+1)+'++\n }\n } else {\n target'+(a+1)+' = target'+a+'[\''+u+'\']\n count'+(a+1)+'++\n }\n\n '+t+'\n\n if (count'+(a+1)+' > 0) {\n target'+a+'[\''+u+'\'] = target'+(a+1)+'\n count'+a+'++\n }\n\n } else {\n target'+a+'[\''+u+'\'] = source'+a+'[\''+u+'\']\n count'+a+'++\n }\n '))),t}},{key:'additionalProperties',value:function e(){}},{key:'items',value:function d(){var n=this.schema,i=this.root,u=this.level,p=this.key,t=this.index,d=n.items,f='';if(d){if(Array.isArray(d));else if('object'===('undefined'==typeof d?'undefined':a(d))&&null!==d){var r='i'+(u+1),o=new e(d,{index:r,root:i,level:u+1});f+='\n var sLen = source'+(u+1)+'.length || 0\n var tLen = target'+(u+1)+'.length || 0\n var len = 0\n\n if (sLen > len) { len = sLen }\n // THIS IS WRONG, CAUSED SIMPLE ARRAY INIT TO FAIL (OVERWRITE\n // EXISTING TARGET VALUES WITH UNDEFINED WHEN SOURCE IS SHORTER THAN\n // TARGET). LEAVING HERE UNTIL WE FINISH TESTING AND SEE WHY IT MIGHT\n // HAVE BEEN HERE IN THE FIRST PLACE.\n //\n // if (tLen > len) { len = tLen }\n\n for (var '+r+' = 0; '+r+' < len; '+r+'++) {\n '+o.compile()+'\n }\n '}f=i===this?'\n if (Array.isArray(source)) {\n if (!Array.isArray(target)) {\n throw new Error(\'?\')\n }\n\n source1 = source\n target1 = target\n\n '+f+'\n }\n ':'\n if (Array.isArray(source'+u+'[\''+p+'\']) || !source'+u+'.hasOwnProperty(\''+p+'\')) {\n\n source'+(u+1)+' = source'+u+'[\''+p+'\'] || []\n count'+(u+1)+' = 0\n\n if (!target'+u+'.hasOwnProperty(\''+p+'\') || !Array.isArray(target'+u+'[\''+p+'\'])) {\n target'+(u+1)+' = []\n if (source'+u+'.hasOwnProperty(\''+p+'\')) {\n count'+(u+1)+'++\n }\n\n } else {\n target'+(u+1)+' = target'+u+'[\''+p+'\']\n count'+(u+1)+'++\n }\n\n '+f+'\n\n if (count'+(u+1)+' > 0) {\n target'+u+'[\''+p+'\'] = target'+(u+1)+'\n count'+u+'++\n }\n\n } else {\n target'+u+'[\''+p+'\'] = source'+u+'[\''+p+'\']\n count'+u+'++\n }\n '}return f}},{key:'additionalItems',value:function e(){}}],[{key:'compile',value:function d(n){var i=new e(n),a=i.compile();try{return new Function('target','source','options',a)}catch(d){console.log(d,d.stack)}}}]),e}();e.exports=p},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var a='function'==typeof Symbol&&'symbol'==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&'function'==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?'symbol':typeof e},u=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),p=n(67),t=0,f=1,r=2,o=['add','remove','replace','move','copy','test'],l=function(){function e(d){i(this,e),this.ops=d||[]}return u(e,[{key:'apply',value:function e(d){var n=this;this.ops.forEach(function(e){var i=e.op;if(!i)throw new Error('Missing "op" in JSON Patch operation');if(-1===o.indexOf(i))throw new Error('Invalid "op" in JSON Patch operation');if(!e.path)throw new Error('Missing "path" in JSON Patch operation');n[i](e,d)})}},{key:'add',value:function e(d,n){if(void 0===d.value)throw new Error('Missing "value" in JSON Patch add operation');var i=new p(d.path,r);i.add(n,d.value)}},{key:'remove',value:function e(d,n){var i=new p(d.path);i.remove(n)}},{key:'replace',value:function e(d,n){if(void 0===d.value)throw new Error('Missing "value" in JSON Patch replace operation');var i=new p(d.path);i.replace(n,d.value)}},{key:'move',value:function e(d,n){if(void 0===d.from)throw new Error('Missing "from" in JSON Patch move operation');if(d.path.match(new RegExp('^'+d.from)))throw new Error('Invalid "from" in JSON Patch move operation');var i=new p(d.path),a=new p(d.from),u=a.get(n);a.remove(n),i.add(n,u)}},{key:'copy',value:function e(d,n){if(void 0===d.from)throw new Error('Missing "from" in JSON Patch copy operation');var i=new p(d.path),a=new p(d.from),u=a.get(n);i.add(n,u)}},{key:'test',value:function e(d,n){if(void 0===d.value)throw new Error('Missing "value" in JSON Patch test operation');var i=new p(d.path),u=i.get(n);switch(a(d.value)){default:if(u!==d.value)throw new Error('Mismatching JSON Patch test value');}}}]),e}();e.exports=l},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var a='function'==typeof Symbol&&'symbol'==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&'function'==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?'symbol':typeof e},u=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),p=n(112),f=0,r=function(){function e(d){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};i(this,e),this.schema=d,Object.assign(this,n),this.address||(this.address=''),!0!==this.require&&(this.require=!1)}return u(e,null,[{key:'compile',value:function d(n){var i=new e(n),a='\n // "cursor"\n let value = data\n let container\n let stack = []\n let top = -1\n\n // error state\n let valid = true\n let errors = []\n\n // complex schema state\n let initialValidity\n let anyValid\n let notValid\n let countOfValid\n let initialErrorCount\n let accumulatedErrorCount\n\n // validation code\n '+i.compile()+'\n\n // validation result\n return {\n valid,\n errors\n }\n ';return new Function('data',a)}},{key:'counter',get:function e(){return f++}}]),u(e,[{key:'compile',value:function e(){var d='';return this.require&&(d+=this.required()),d+=this.type(),d+=this.array(),d+=this.number(),d+=this.object(),d+=this.string(),d+=this.enum(),d+=this.anyOf(),d+=this.allOf(),d+=this.not(),d+=this.oneOf(),d}},{key:'push',value:function e(){return'\n stack.push(value)\n container = value\n top++\n '}},{key:'pop',value:function e(){return'\n if (stack.length > 1) {\n top--\n stack.pop()\n }\n\n value = container = stack[top]\n '}},{key:'type',value:function e(){var e=this.schema.type,d=this.address,n='';if(e){var i=Array.isArray(e)?e:[e],a=i.map(function(e){return'array'===e?'!Array.isArray(value)':'boolean'===e?'typeof value !== \'boolean\'':'integer'===e?'!Number.isInteger(value)':'null'===e?'value !== null':'number'===e?'typeof value !== \'number\'':'object'===e?'(typeof value !== \'object\' || Array.isArray(value) || value === null)':'string'===e?'typeof value !== \'string\'':void 0}).join(' && ');n+='\n // '+d+' type checking\n if (value !== undefined && '+a+') {\n valid = false\n errors.push({\n keyword: \'type\',\n message: \'invalid type\'\n })\n }\n '}return n}},{key:'array',value:function e(){var d=['additionalItems','items','minItems','maxItems','uniqueItems'],n=this.validations(d),i='';return 0<n.length&&(i+='\n /**\n * Array validations\n */\n if (Array.isArray(value)) {\n '+n+'\n }\n '),i}},{key:'number',value:function e(){var d=['minimum','maximum','multipleOf'],n=this.validations(d),i='';return 0<n.length&&(i+='\n /**\n * Number validations\n */\n if (typeof value === \'number\') {\n '+n+'\n }\n '),i}},{key:'object',value:function e(){var d=['maxProperties','minProperties','additionalProperties','properties','patternProperties','dependencies','schemaDependencies','propertyDependencies'],n=this.validations(d),i='';return 0<n.length&&(i+='\n /**\n * Object validations\n */\n if (typeof value === \'object\' && value !== null && !Array.isArray(value)) {\n '+n+'\n }\n '),i}},{key:'string',value:function e(){var d=['maxLength','minLength','pattern','format'],n=this.validations(d),i='';return 0<n.length&&(i+='\n /**\n * String validations\n */\n if (typeof value === \'string\') {\n '+n+'\n }\n '),i}},{key:'validations',value:function e(d){var n=this,i=this.schema,a='',u=Object.keys(i).filter(function(e){return-1!==d.indexOf(e)});return u.forEach(function(e){a+=n[e]()}),a}},{key:'enum',value:function e(){var d=this.schema.enum,n=this.address,i=['value !== undefined'],u='';return d&&(d.forEach(function(e){switch('undefined'==typeof e?'undefined':a(e)){case'boolean':i.push('value !== '+e);break;case'number':i.push('value !== '+e);break;case'string':i.push('value !== "'+e+'"');break;case'object':null===e?i.push('value !== null'):i.push('\''+JSON.stringify(e)+'\' !== JSON.stringify(value)');break;default:throw new Error('Things are not well in the land of enum');}}),u+='\n /**\n * Validate "'+n+'" enum\n */\n if ('+i.join(' && ')+') {\n valid = false\n errors.push({\n keyword: \'enum\',\n message: JSON.stringify(value) + \' is not an enumerated value\'\n })\n }\n '),u}},{key:'anyOf',value:function d(){var d=this.schema.anyOf,n=this.address,i='';return Array.isArray(d)&&(i+='\n initialValidity = valid\n initialErrorCount = errors.length\n anyValid = false\n ',d.forEach(function(d){var a=new e(d,{address:n});i+='\n accumulatedErrorCount = errors.length\n '+a.compile()+'\n if (accumulatedErrorCount === errors.length) {\n anyValid = true\n }\n '}),i+='\n if (anyValid === true) {\n valid = initialValidity\n errors = errors.slice(0, initialErrorCount)\n }\n '),i}},{key:'allOf',value:function d(){var d=this.schema.allOf,n=this.address,i='';return Array.isArray(d)&&d.forEach(function(d){var a=new e(d,{address:n});i+='\n '+a.compile()+'\n '}),i}},{key:'oneOf',value:function d(){var d=this.schema.oneOf,n=this.address,i='';return Array.isArray(d)&&(i+='\n /**\n * Validate '+n+' oneOf\n */\n initialValidity = valid\n initialErrorCount = errors.length\n countOfValid = 0\n ',d.forEach(function(d){var a=new e(d,{address:n});i+='\n accumulatedErrorCount = errors.length\n '+a.compile()+'\n if (accumulatedErrorCount === errors.length) {\n countOfValid += 1\n }\n '}),i+='\n if (countOfValid === 1) {\n valid = initialValidity\n errors = errors.slice(0, initialErrorCount)\n } else {\n valid = false\n errors.push({\n keyword: \'oneOf\',\n message: \'what is a reasonable error message for this case?\'\n })\n }\n '),i}},{key:'not',value:function d(){var d=this.schema.not,n=this.address,i='';if('object'===('undefined'==typeof d?'undefined':a(d))&&null!==d&&!Array.isArray(d)){var u=d,p=new e(u,{address:n});i+='\n /**\n * NOT\n */\n if (value !== undefined) {\n initialValidity = valid\n initialErrorCount = errors.length\n notValid = true\n\n accumulatedErrorCount = errors.length\n\n '+p.compile()+'\n\n if (accumulatedErrorCount === errors.length) {\n notValid = false\n }\n\n if (notValid === true) {\n valid = initialValidity\n errors = errors.slice(0, initialErrorCount)\n } else {\n valid = false\n errors = errors.slice(0, initialErrorCount)\n errors.push({\n keyword: \'not\',\n message: \'hmm...\'\n })\n }\n }\n '}return i}},{key:'properties',value:function d(){var n=this.schema,i=this.address,d=n.properties,u=n.required,p=this.push();return u=Array.isArray(u)?u:[],'object'===('undefined'==typeof d?'undefined':a(d))&&Object.keys(d).forEach(function(n){var a=d[n],t=-1!==u.indexOf(n),f=[i,n].filter(function(e){return!!e}).join('.'),r=new e(a,{address:f,require:t});p+='\n value = container[\''+n+'\']\n ',p+=r.compile()}),p+=this.pop(),p}},{key:'otherProperties',value:function e(){return'\n /**\n * Validate Other Properties\n */\n '+this.push()+'\n\n for (let key in container) {\n value = container[key]\n matched = false\n\n '+this.patternValidations()+'\n '+this.additionalValidations()+'\n }\n\n '+this.pop()+'\n '}},{key:'patternValidations',value:function d(){var n=this.schema.patternProperties,i='';return'object'===('undefined'==typeof n?'undefined':a(n))&&Object.keys(n).forEach(function(d){var a=n[d],u=new e(a);i+='\n if (key.match(\''+d+'\')) {\n matched = true\n '+u.compile()+'\n }\n '}),i}},{key:'additionalValidations',value:function d(){var n=this.schema,i=n.properties,u=n.additionalProperties,p=this.address,t='',f='',r=['matched !== true'];if(Object.keys(i||{}).forEach(function(e){r.push('key !== \''+e+'\'')}),'object'===('undefined'==typeof u?'undefined':a(u))){var o=u,l=new e(o,{address:p+'[APKey]'});f+='\n // validate additional properties\n if ('+r.join(' && ')+') {\n '+l.compile()+'\n }\n '}return!1===u&&(f+='\n // validate non-presence of additional properties\n if ('+r.join(' && ')+') {\n valid = false\n errors.push({\n keyword: \'additionalProperties\',\n message: key + \' is not a defined property\'\n })\n }\n '),f}},{key:'patternProperties',value:function e(){var d='';return this.otherPropertiesCalled||(this.otherPropertiesCalled=!0,d+=this.otherProperties()),d}},{key:'additionalProperties',value:function e(){var d='';return this.otherPropertiesCalled||(this.otherPropertiesCalled=!0,d+=this.otherProperties()),d}},{key:'minProperties',value:function e(){var e=this.schema.minProperties,d=this.address;return'\n // '+d+' min properties\n if (Object.keys(value).length < '+e+') {\n valid = false\n errors.push({\n keyword: \'minProperties\',\n message: \'too few properties\'\n })\n }\n '}},{key:'maxProperties',value:function e(){var e=this.schema.maxProperties,d=this.address;return'\n // '+d+' max properties\n if (Object.keys(value).length > '+e+') {\n valid = false\n errors.push({\n keyword: \'maxProperties\',\n message: \'too many properties\'\n })\n }\n '}},{key:'dependencies',value:function d(){var d=this.schema.dependencies,n=this.address,i=this.push();return'object'===('undefined'==typeof d?'undefined':a(d))&&Object.keys(d).forEach(function(u){var p=d[u],t=[];if(Array.isArray(p))p.forEach(function(e){t.push('container[\''+e+'\'] === undefined')}),i+='\n if (container[\''+u+'\'] !== undefined && ('+t.join(' || ')+')) {\n valid = false\n errors.push({\n keyword: \'dependencies\',\n message: \'unmet dependencies\'\n })\n }\n ';else if('object'===('undefined'==typeof p?'undefined':a(p))){var f=p,r=new e(f,{address:n});i+='\n if (container[\''+u+'\'] !== undefined) {\n '+r.compile()+'\n }\n '}}),i+=this.pop(),i}},{key:'required',value:function e(){var d=this.schema.properties,n=this.address,i='';return i+='\n // validate '+n+' presence\n if (value === undefined) {\n valid = false\n errors.push({\n keyword: \'required\',\n message: \'is required\'\n })\n }\n ',i}},{key:'additionalItems',value:function d(){var n=this.schema,i=n.items,d=n.additionalItems,u=this.address,p='';if(!1===d&&Array.isArray(i)&&(p+='\n // don\'t allow additional items\n if (value.length > '+i.length+') {\n valid = false\n errors.push({\n keyword: \'additionalItems\',\n message: \'additional items not allowed\'\n })\n }\n '),'object'===('undefined'==typeof d?'undefined':a(d))&&null!==d&&Array.isArray(i)){var t=d,f=new e(t),r=e.counter;p+='\n // additional items\n '+this.push()+'\n\n for (var i'+r+' = '+i.length+'; i'+r+' <= container.length; i'+r+'++) {\n value = container[i'+r+']\n '+f.compile()+'\n }\n\n '+this.pop()+'\n '}return p}},{key:'items',value:function d(){var d=this.schema.items,n=this.address,i='';if(Array.isArray(d))i+=this.push(),d.forEach(function(d,a){var u=d,p=new e(u,{address:n+'['+a+']'});i+='\n // item #'+a+'\n value = container['+a+']\n '+p.compile()+'\n '}),i+=this.pop();else if('object'===('undefined'==typeof d?'undefined':a(d))&&null!==d){var u=d,p=new e(u),t=e.counter;i+='\n // items\n '+this.push()+'\n\n for (var i'+t+' = 0; i'+t+' < container.length; i'+t+'++) {\n // read array element\n value = container[i'+t+']\n '+p.compile()+'\n }\n\n '+this.pop()+'\n '}return i}},{key:'minItems',value:function e(){var e=this.schema.minItems,d=this.address;return'\n // '+d+' min items\n if (value.length < '+e+') {\n valid = false\n errors.push({\n keyword: \'minItems\',\n message: \'too few properties\'\n })\n }\n '}},{key:'maxItems',value:function e(){var e=this.schema.maxItems,d=this.address;return'\n // '+d+' max items\n if (value.length > '+e+') {\n valid = false\n errors.push({\n keyword: \'maxItems\',\n message: \'too many properties\'\n })\n }\n '}},{key:'uniqueItems',value:function e(){var e=this.schema.uniqueItems,d=this.address,n='';return!0===e&&(n+='\n // validate '+d+' unique items\n let values = value.map(v => JSON.stringify(v)) // TODO: optimize\n let set = new Set(values)\n if (values.length !== set.size) {\n valid = false\n errors.push({\n keyword: \'uniqueItems\',\n message: \'items must be unique\'\n })\n }\n '),n}},{key:'minLength',value:function e(){var e=this.schema.minLength,d=this.address;return'\n // '+d+' validate minLength\n if (Array.from(value).length < '+e+') {\n valid = false\n errors.push({\n keyword: \'minLength\',\n message: \'too short\'\n })\n }\n '}},{key:'maxLength',value:function e(){var e=this.schema.maxLength,d=this.address;return'\n // '+d+' validate maxLength\n if (Array.from(value).length > '+e+') {\n valid = false\n errors.push({\n keyword: \'maxLength\',\n message: \'too long\'\n })\n }\n '}},{key:'pattern',value:function e(){var e=this.schema.pattern,d=this.address;if(e)return'\n // '+d+' validate pattern\n if (!value.match(new RegExp(\''+e+'\'))) {\n valid = false\n errors.push({\n keyword: \'pattern\',\n message: \'does not match the required pattern\'\n })\n }\n '}},{key:'format',value:function e(){var e=this.schema.format,d=this.address,n=p.resolve(e);if(n)return'\n // '+d+' validate format\n if (!value.match('+n+')) {\n valid = false\n errors.push({\n keyword: \'format\',\n message: \'is not "'+e+'" format\'\n })\n }\n '}},{key:'minimum',value:function e(){var d=this.schema,e=d.minimum,n=d.exclusiveMinimum,i=this.address,a=!0===n?'<=':'<';return'\n // '+i+' validate minimum\n if (value '+a+' '+e+') {\n valid = false\n errors.push({\n keyword: \'minimum\',\n message: \'too small\'\n })\n }\n '}},{key:'maximum',value:function e(){var d=this.schema,e=d.maximum,n=d.exclusiveMaximum,i=this.address,a=!0===n?'>=':'>';return'\n // '+i+' validate maximum\n if (value '+a+' '+e+') {\n valid = false\n errors.push({\n keyword: \'maximum\',\n message: \'too large\'\n })\n }\n '}},{key:'multipleOf',value:function e(){var e=this.schema.multipleOf,d='';if('number'==typeof e){var n=e.toString().length,i=n-e.toFixed(0).length-1,a=0<i?t(10,i):1,u;u=0<i?'(value * '+a+') % '+e*a+' !== 0':'value % '+e+' !== 0',d+='\n if ('+u+') {\n valid = false\n errors.push({\n keyword: \'multipleOf\',\n message: \'must be a multiple of '+e+'\'\n })\n }\n '}return d}}]),e}();e.exports=r},function(e,d,n){'use strict';Object.defineProperty(d,'__esModule',{value:!0});var i=/^[^\u0000-\u001F\u007F()<>@,;:\\"/?={}\[\]\u0020\u0009]+$/,a=d.isToken=function e(d){return'string'==typeof d&&i.test(d)},u=d.isScheme=a,p=d.quote=function e(d){return'"'+d.replace(/"/g,'\\"')+'"'},t=d.unquote=function e(d){return d.substr(1,d.length-2).replace(/\\"/g,'"')}},function(e,d,n){'use strict';function i(e,d){var n=t.Parser(),i=t.Writer({format:'N-Quads'}),a;u.waterfall([function(d){n.parse(e,d)},function(e,d,n){null!==e&&i.addTriple(e),'function'==typeof n&&i.end(n)},function(e,d){try{p.fromRDF(e,{format:'application/nquads'},d)}catch(e){d(e)}},function(e,n){a=JSON.stringify(e),d(null,a)}],function(e,n){d(e,a)})}function a(e,d){var n=t.Parser(),i=t.Writer({format:'N-Quads'}),a;u.waterfall([function(d){n.parse(e,d)},function(e,d,n){null!==e&&i.addTriple(e),'function'==typeof n&&i.end(n)},function(e,n){a=e,d(null,a)}],function(e,n){d(e,a)})}e.exports.convertToJson=i,e.exports.convertToNQuads=a;var u=n(188),p=n(149),t=n(150)},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}function a(e,d){if(!e)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return d&&('object'==typeof d||'function'==typeof d)?d:e}function u(e,d){if('function'!=typeof d&&null!==d)throw new TypeError('Super expression must either be null or a function, not '+typeof d);e.prototype=Object.create(d&&d.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),d&&(Object.setPrototypeOf?Object.setPrototypeOf(e,d):e.__proto__=d)}var p=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),t=n(17),f=n(26),r=n(41),o=n(27),l=n(18),s=n(2),m=n(6),c=n(72),h=n(46),g=n(47),y=function(e){function d(e,n,u,p){i(this,d);var t=a(this,(d.__proto__||Object.getPrototypeOf(d)).call(this));return t.termType=d.termType,t.statements=e||[],t.constraints=n||[],t.initBindings=u||[],t.optional=p||[],t}return u(d,e),p(d,[{key:'add',value:function e(d,n,i,a){return this.statements.push(new h(d,n,i,a))}},{key:'addStatement',value:function e(d){return this.statements.push(d)}},{key:'bnode',value:function e(d){return new t(d)}},{key:'bottomTypeURIs',value:function e(d){var n,a,u,p,i,t,f,r,o;for(i in n=[],d)if(d.hasOwnProperty(i)){for(o=d[i],r=this.each(void 0,this.sym('http://www.w3.org/2000/01/rdf-schema#subClassOf'),this.sym(i)),a=!0,p=0,t=r.length;p<t;p++)if(u=r[p],f=u.uri,f in d){a=!1;break}a&&(n[i]=o)}return n}},{key:'collection',value:function e(){return new r}},{key:'each',value:function e(d,n,a,u){var p=[],t=this.statementsMatching(d,n,a,u,!1),f,r,i,o,l,s,m,c,h;if(null==d)for(r=0,s=t.length;r<s;r++)f=t[r],p.push(f.subject);else if(null==n)for(i=0,m=t.length;i<m;i++)f=t[i],p.push(f.predicate);else if(null==a)for(o=0,c=t.length;o<c;o++)f=t[o],p.push(f.object);else if(null==u)for(l=0,h=t.length;l<h;l++)f=t[l],p.push(f.why);return p}},{key:'equals',value:function e(d){return!!d&&this.hashString()===d.hashString()}},{key:'findMembersNT',value:function e(d){var n,i,a,p,f,r,o,l,s,m,c,h,g,y,v,b,_,w,x,k,t;for(k in w={},w[d.toNT()]=!0,s={},h=this.transitiveClosure(w,this.sym('http://www.w3.org/2000/01/rdf-schema#subClassOf'),!0),h)if(h.hasOwnProperty(k)){for(g=this.statementsMatching(void 0,this.sym('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),this.fromNT(k)),n=0,a=g.length;n<a;n++)x=g[n],s[x.subject.toNT()]=x;for(y=this.each(void 0,this.sym('http://www.w3.org/2000/01/rdf-schema#domain'),this.fromNT(k)),i=0,p=y.length;i<p;i++)for(m=y[i],v=this.statementsMatching(void 0,m),(l=0,f=v.length);l<f;l++)x=v[l],s[x.subject.toNT()]=x;for(b=this.each(void 0,this.sym('http://www.w3.org/2000/01/rdf-schema#range'),this.fromNT(k)),c=0,r=b.length;c<r;c++)for(m=b[c],_=this.statementsMatching(void 0,m),(t=0,o=_.length);t<o;t++)x=_[t],s[x.object.toNT()]=x}return s}},{key:'findMemberURIs',value:function e(d){return this.NTtoURI(this.findMembersNT(d))}},{key:'findSubClassesNT',value:function e(d){var n={};return n[d.toNT()]=!0,this.transitiveClosure(n,this.sym('http://www.w3.org/2000/01/rdf-schema#subClassOf'),!0)}},{key:'findSuperClassesNT',value:function e(d){var n={};return n[d.toNT()]=!0,this.transitiveClosure(n,this.sym('http://www.w3.org/2000/01/rdf-schema#subClassOf'),!1)}},{key:'findTypesNT',value:function e(d){var n,a,i,u,p,t,f,r,o,l,s,m,c,h,g,y,v;for(s='http://www.w3.org/1999/02/22-rdf-syntax-ns#type',v=[],m=this.statementsMatching(d,void 0,void 0),(a=0,u=m.length);a<u;a++)if(y=m[a],y.predicate.uri===s)v[y.object.toNT()]=y;else for(c=this.each(y.predicate,this.sym('http://www.w3.org/2000/01/rdf-schema#domain')),i=0,p=c.length;i<p;i++)l=c[i],v[l.toNT()]=y;for(h=this.statementsMatching(void 0,void 0,d),r=0,t=h.length;r<t;r++)for(y=h[r],g=this.each(y.predicate,this.sym('http://www.w3.org/2000/01/rdf-schema#range')),(o=0,f=g.length);o<f;o++)n=g[o],v[n.toNT()]=y;return this.transitiveClosure(v,this.sym('http://www.w3.org/2000/01/rdf-schema#subClassOf'),!1)}},{key:'findTypeURIs',value:function e(d){return this.NTtoURI(this.findTypesNT(d))}},{key:'connectedStatements',value:function e(d,n,i){i=i||[];for(var a=[d],u=[],p=[],t=[],f=this,r=function e(d){var r=function e(d){'BlankNode'!==d.termType||u[d.value]||(u[d.value]=!0,a.push(d))},o=f.statementsMatching(null,null,d,n).concat(f.statementsMatching(d,null,null,n));o=o.filter(function(e){if(i[e.predicate.uri])return!1;var d=e.toNT();return!p[d]&&(p[d]=!0,!0)}),o.forEach(function(e,d){r(e.subject),r(e.object)}),t=t.concat(o)};a.length;)r(a.shift());return t}},{key:'formula',value:function e(){return new d}},{key:'fromNT',value:function e(d){var n,i,a,u;switch(d[0]){case'<':return this.sym(d.slice(1,-1));case'"':if(a=void 0,n=void 0,i=d.lastIndexOf('"'),i<d.length-1)if('@'===d[i+1])a=d.slice(i+2);else if('^^'===d.slice(i+1,i+3))n=this.fromNT(d.slice(i+3));else throw new Error('Can\'t convert string from NT: '+d);return d=d.slice(1,i),d=d.replace(/\\"/g,'"'),d=d.replace(/\\n/g,'\n'),d=d.replace(/\\\\/g,'\\'),this.literal(d,a,n);case'_':return new t(d.slice(2));case'?':return new g(d.slice(1));}throw new Error('Can\'t convert from NT: '+d)}},{key:'holds',value:function e(d,n,a,u){var p;if(1===arguments.length){if(!d)return!0;if(d instanceof Array){for(p=0;p<d.length;p++)if(!this.holds(d[p]))return!1;return!0}if(d instanceof h)return this.holds(d.subject,d.predicate,d.object,d.why);if(d.statements)return this.holds(d.statements)}var i=this.anyStatementMatching(d,n,a,u);return null!=i}},{key:'holdsStatement',value:function e(d){return this.holds(d.subject,d.predicate,d.object,d.why)}},{key:'list',value:function e(d){var n=new r;return d.forEach(function(e){n.append(e)}),n}},{key:'literal',value:function e(d,n,i){return new o(''+d,n,i)}},{key:'NTtoURI',value:function e(d){var n={},i,a;for(i in d)d.hasOwnProperty(i)&&(a=d[i],'<'===i[0]&&(n[i.slice(1,-1)]=a));return n}},{key:'serialize',value:function e(d,n,i){var a,u,p;switch(p=c(this),p.suggestNamespaces(this.namespaces),p.setBase(d),u=i?this.statementsMatching(void 0,void 0,void 0,i):this.statements,null==n?'text/n3':n){case'application/rdf+xml':a=p.statementsToXML(u);break;case'text/n3':case'text/turtle':a=p.statementsToN3(u);break;default:throw new Error('serialize: Content-type '+n+' not supported.');}return a}},{key:'substitute',value:function e(n){var i=this.statements.map(function(e){return e.substitute(n)});console.log('Formula subs statmnts:'+i);var a=new d;return a.add(i),console.log('indexed-form subs formula:'+a),a}},{key:'sym',value:function e(d,n){if(n)throw new Error('This feature (kb.sym with 2 args) is removed. Do not assume prefix mappings.');return new s(d)}},{key:'the',value:function e(d,n,i,a){var u=this.any(d,n,i,a);return null==u&&l.error('No value found for the() {'+d+' '+n+' '+i+'}.'),u}},{key:'transitiveClosure',value:function e(d,n,a){var u={},p,f,i,r,o,l;Object.assign(u,d);for(var t={};!0;){if(l=function(){for(var e in u)if(u.hasOwnProperty(e))return e}(),null==l)return t;for(o=a?this.each(void 0,n,this.fromNT(l)):this.each(this.fromNT(l),n),f=0,i=o.length;f<i;f++)(p=o[f],r=p.toNT(),!(r in t))&&(r in u||(u[r]=u[l]));t[l]=u[l],delete u[l]}}},{key:'topTypeURIs',value:function e(d){var a,i,u,p,t,n,f,r;for(u in f=[],d)if(d.hasOwnProperty(u)){for(r=d[u],t=0,n=this.each(this.sym(u),this.sym('http://www.w3.org/2000/01/rdf-schema#subClassOf')),(a=0,p=n.length);a<p;a++)if(i=n[a],'http://www.w3.org/2000/01/rdf-schema#Resource'!==i.uri){t++;break}t||(f[u]=r)}return f['http://www.w3.org/2000/01/rdf-schema#Resource']&&delete f['http://www.w3.org/2000/01/rdf-schema#Resource'],f['http://www.w3.org/2002/07/owl#Thing']&&delete f['http://www.w3.org/2002/07/owl#Thing'],f}},{key:'toString',value:function e(){return'{'+this.statements.join('\n')+'}'}},{key:'whether',value:function e(d,n,i,a){return this.statementsMatching(d,n,i,a,!1).length}}]),d}(m);y.termType='Graph',y.prototype.classOrder=f.Graph,y.prototype.isVar=0,y.prototype.ns=n(33),y.prototype.variable=function(e){return new g(e)},e.exports=y},function(e,d,n){'use strict';function i(e,d,n,i,c){function h(){c&&c(null,d)}function g(a){if('application/ld+json'!==i||'application/nquads'!==i||'application/n-quads'!==i)if(c)c(a,d);else throw new Error('Error trying to parse <'+n+'> as '+i+':\n'+a+':\n'+a.stack)}function y(e,n){e&&c(e,d);try{k.parse(n,v)}catch(e){c(e,d)}}function v(e,n,a){if(e&&c(e,d),n)S.push(n);else{for(var u=0;u<S.length;u++)b(d,S[u]);c(null,d)}}function b(e,d){var n=_(d.subject),i=_(d.predicate),a=_(d.object),u=null;d.graph&&(u=_(d.graph)),e.add(n,i,a,u)}function _(e){var d;if(t.Util.isLiteral(e)){d=t.Util.getLiteralValue(e);var n=t.Util.getLiteralLanguage(e),i=new r(t.Util.getLiteralType(e));return new p(d,n,i)}return t.Util.isIRI(e)?new r(e):t.Util.isBlank(e)?(d=e.substring(2,e.length),new a(d)):null}i=i||'text/turtle',i=i.split(';')[0];try{if('text/n3'===i||'text/turtle'===i){var w=f(d,d,n,n,null,null,'',null);w.loadBuf(e),h()}else if('application/rdf+xml'===i){var x=new l(d);x.parse(m.parseXML(e),n,d.sym(n)),h()}else if('application/xhtml+xml'===i)o(m.parseXML(e,{contentType:'application/xhtml+xml'}),d,n),h();else if('text/html'===i)o(m.parseXML(e,{contentType:'text/html'}),d,n),h();else if('application/sparql-update'===i)s(e,d,n),h();else if('application/ld+json'===i||'application/nquads'===i||'application/n-quads'===i){var k=t.Parser(),S=[];if('application/ld+json'===i){var T;try{T=JSON.parse(e)}catch(e){return c(e,null)}u.toRDF(T,{format:'application/nquads',base:n},y)}else y(null,e)}else throw new Error('Don\'t know how to parse '+i+' yet')}catch(d){g(d)}}e.exports=i;var a=n(17),u=n(149),p=n(27),t=n(150),f=n(44),r=n(2),o=n(70).parseRDFaDOM,l=n(71),s=n(120),m=n(11)},function(e,d,n){'use strict';function i(e,d,n){var t=['INSERT','DELETE','WHERE'],f=u('http://www.w3.org/ns/pim/patch#'),r=a(d,d,n,n,null,null,'',null),p={},o=function e(d,n,a,u,i){return'Line '+(n+1)+' of <'+d+'>: Bad syntax:\n '+i+'\n at: "'+a.slice(u,u+30)+'"'},l,i,s;l=0;var m=d.sym(n+'#query');for(p.query=m;!0;){if(i=r.skipSpace(e,l),0>i)return p;if(';'===e[i]){if(l=r.skipSpace(e,i+1),0>l)return p;i=l}var c=!1;for(s=0;s<t.length;s++){var h=t[s];if(e.slice(i,i+h.length)===h){if(l=r.skipSpace(e,i+h.length),0>l)throw o(r._thisDoc,r.lines,e,i+h.length,'found EOF, needed {...} after '+h);if(('INSERT'===h||'DELETE'===h)&&'DATA'===e.slice(l,l+4)){if(i=r.skipSpace(e,l+4),0>i)throw o(r._thisDoc,r.lines,e,l+4,'needed {...} after INSERT DATA '+h);l=i}var g=[];if(i=r.node(e,l,g),0>i)throw o(r._thisDoc,r.lines,e,l,'bad syntax or EOF in {...} after '+h);p[h.toLowerCase()]=g[0],d.add(m,f(h.toLowerCase()),g[0]),c=!0,l=i}}if(!c&&'@prefix'===e.slice(i,i+7)){if(l=r.directive(e,i),0>l)throw o(r._thisDoc,r.lines,e,l,'bad syntax or EOF after @prefix ');l=r.checkDot(e,l),c=!0}if(!c)throw o(r._thisDoc,r.lines,e,i,'Unknown syntax at start of statememt: \''+e.slice(i).slice(0,20)+'\'')}}e.exports=i;var a=n(44),u=n(33)},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var a=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),u=n(42).namedNode,p=function(){function e(d,n){i(this,e),this.parent=d,this.via=n,this.connected=!1,this.pending={},this.subscribed={},this.socket={};try{this.socket=new WebSocket(n),this.socket.onopen=this.onOpen,this.socket.onclose=this.onClose,this.socket.onmessage=this.onMessage,this.socket.onerror=this.onError}catch(e){this.onError(e)}}return a(e,[{key:'_decode',value:function e(d){var n,a,i,u,p,t,f;for(a in u={},p=function(){var e,i,a,u;for(a=d.split('&'),u=[],(e=0,i=a.length);e<i;e++)n=a[e],u.push(n.split('='));return u}(),p)n=p[a],t=[decodeURIComponent(n[0]),decodeURIComponent(n[1])],i=t[0],f=t[1],null==u[i]&&(u[i]=[]),u[i].push(f);return u}},{key:'_send',value:function e(d,n,i){var a,u;return u=[d,n,i].join(' '),'function'==typeof(a=this.socket).send?a.send(u):void 0}},{key:'_subscribe',value:function e(d){return this._send('sub',d,''),this.subscribed[d]=!0,this.subscribed[d]}},{key:'onClose',value:function d(n){var e;for(e in this.connected=!1,this.subscribed)this.pending[e]=!0;return this.subscribed={},this.subscribed}},{key:'onError',value:function d(n){throw new Error('onError'+n)}},{key:'onMessage',value:function d(n){var e,i;return(i=n.data.split(' '),'ping'===i[0])?'function'==typeof(e=this.socket).send?e.send('pong '+i.slice(1).join(' ')):void 0:'pub'===i[0]?this.parent.onUpdate(i[1],this._decode(i[2])):void 0}},{key:'onOpen',value:function d(n){var e,i;for(i in this.connected=!0,e=[],this.pending)delete this.pending[i],e.push(this._subscribe(i));return e}},{key:'subscribe',value:function e(d){return this.connected?this._subscribe(d):(this.pending[d]=!0,this.pending[d])}}]),e}(),t=function(){function e(d){i(this,e),this.fetcher=d,this.graph={},this.via={},this.fetcher.addCallback('headers',this.onHeaders)}return a(e,[{key:'onHeaders',value:function e(n){var d,i,a;return null==n.headers||'undefined'==typeof WebSocket||null===WebSocket||(d=n.headers.etag,a=n.headers['updates-via'],i=n.uri,d&&a&&(this.graph[i]={etag:d,via:a},this.register(a,i)),!0)}},{key:'onUpdate',value:function e(n,i){return this.fetcher.refresh(u(n))}},{key:'register',value:function e(d,n){return null==this.via[d]&&(this.via[d]=new p(this,d)),this.via[d].subscribe(n)}}]),e}();e.exports.UpdatesSocket=p,e.exports.UpdatesVia=t},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var a=n(2),u=function e(){i(this,e)};u.boolean=new a('http://www.w3.org/2001/XMLSchema#boolean'),u.dateTime=new a('http://www.w3.org/2001/XMLSchema#dateTime'),u.decimal=new a('http://www.w3.org/2001/XMLSchema#decimal'),u.double=new a('http://www.w3.org/2001/XMLSchema#double'),u.integer=new a('http://www.w3.org/2001/XMLSchema#integer'),u.langString=new a('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString'),u.string=new a('http://www.w3.org/2001/XMLSchema#string'),e.exports=u},function(e,d,n){e.exports={default:n(219),__esModule:!0}},function(e,d,n){'use strict';function i(e){return e&&e.__esModule?e:{default:e}}d.__esModule=!0;var a=n(123),u=i(a);d.default=function(e,d,n){return d in e?(0,u.default)(e,d,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[d]=n,e}},function(e,d,n){var i=n(34),a=n(4)('toStringTag'),u='Arguments'==i(function(){return arguments}()),p=function(e,d){try{return e[d]}catch(d){}};e.exports=function(e){var d,n,t;return e===void 0?'Undefined':null===e?'Null':'string'==typeof(n=p(d=Object(e),a))?n:u?i(d):'Object'==(t=i(d))&&'function'==typeof d.callee?'Arguments':t}},function(e,d,n){var i=n(3).document;e.exports=i&&i.documentElement},function(e,d,n){e.exports=!n(14)&&!n(29)(function(){return 7!=Object.defineProperty(n(76)('div'),'a',{get:function(){return 7}}).a})},function(e,d,n){var i=n(34);e.exports=Object('z').propertyIsEnumerable(0)?Object:function(e){return'String'==i(e)?e.split(''):Object(e)}},function(e,d,n){var i=n(35),a=n(4)('iterator'),u=Array.prototype;e.exports=function(e){return e!==void 0&&(i.Array===e||u[a]===e)}},function(e,d,n){var i=n(12);e.exports=function(d,e,n,a){try{return a?e(i(n)[0],n[1]):e(n)}catch(n){var u=d['return'];throw void 0!==u&&i(u.call(d)),n}}},function(e,d,n){'use strict';var i=n(51),a=n(9),u=n(141),p=n(23),t=n(35),f=n(234),r=n(54),o=n(136),l=n(4)('iterator'),s=!([].keys&&'next'in[].keys()),m='@@iterator',c='keys',h='values',g=function(){return this};e.exports=function(e,d,n,y,v,b,_){f(n,d,y);var w=function(e){return!s&&e in T?T[e]:e===c?function d(){return new n(this,e)}:e===h?function d(){return new n(this,e)}:function d(){return new n(this,e)}},x=d+' Iterator',k=v==h,S=!1,T=e.prototype,N=T[l]||T[m]||v&&T[v],I=N||w(v),j=v?k?w('entries'):I:void 0,O='Array'==d?T.entries||N:N,R,D,E;if(O&&(E=o(O.call(new e)),E!==Object.prototype&&E.next&&(r(E,x,!0),!i&&'function'!=typeof E[l]&&p(E,l,g))),k&&N&&N.name!==h&&(S=!0,I=function e(){return N.call(this)}),(!i||_)&&(s||S||!T[l])&&p(T,l,I),t[d]=I,t[x]=g,v)if(R={values:k?I:w(h),keys:b?I:w(c),entries:j},_)for(D in R)D in T||u(T,D,R[D]);else a(a.P+a.F*(s||S),d,R);return R}},function(e,d,n){var i=n(4)('iterator'),a=!1;try{var u=[7][i]();u['return']=function(){a=!0},Array.from(u,function(){throw 2})}catch(d){}e.exports=function(e,d){if(!d&&!a)return!1;var n=!1;try{var u=[7],p=u[i]();p.next=function(){return{done:n=!0}},u[i]=function(){return p},e(u)}catch(d){}return n}},function(e,d,n){var i=n(53),a=n(36),u=n(30),p=n(85),t=n(22),f=n(127),r=Object.getOwnPropertyDescriptor;d.f=n(14)?r:function e(d,n){if(d=u(d),n=p(n,!0),f)try{return r(d,n)}catch(d){}return t(d,n)?a(!i.f.call(d,n),d[n]):void 0}},function(e,d,n){var i=n(30),a=n(135).f,u={}.toString,p='object'==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],t=function(e){try{return a(e)}catch(d){return p.slice()}};e.exports.f=function e(d){return p&&'[object Window]'==u.call(d)?t(d):a(i(d))}},function(e,d,n){var i=n(137),a=n(77).concat('length','prototype');d.f=Object.getOwnPropertyNames||function e(d){return i(d,a)}},function(e,d,n){var i=n(22),a=n(55),u=n(81)('IE_PROTO'),p=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=a(e),i(e,u)?e[u]:'function'==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?p:null}},function(e,d,n){var a=n(22),u=n(30),p=n(228)(!1),i=n(81)('IE_PROTO');e.exports=function(e,d){var n=u(e),t=0,f=[],r;for(r in n)r!=i&&a(n,r)&&f.push(r);for(;d.length>t;)a(n,r=d[t++])&&(~p(f,r)||f.push(r));return f}},function(e,d,n){var i=n(9),a=n(0),u=n(29);e.exports=function(e,d){var n=(a.Object||{})[e]||Object[e],p={};p[e]=d(n),i(i.S+i.F*u(function(){n(1)}),'Object',p)}},function(e,d){e.exports=function(e){try{return{e:!1,v:e()}}catch(d){return{e:!0,v:d}}}},function(e,d,n){var i=n(12),a=n(15),u=n(78);e.exports=function(e,d){if(i(e),a(d)&&d.constructor===e)return d;var n=u.f(e),p=n.resolve;return p(d),n.promise}},function(e,d,n){e.exports=n(23)},function(e,d,n){var i=n(12),a=n(50),u=n(4)('species');e.exports=function(e,d){var n=i(e).constructor,p;return n===void 0||(p=i(n)[u])==void 0?d:a(p)}},function(e,d,n){var i=n(28),a=n(232),u=n(126),p=n(76),t=n(3),f=t.process,r=t.setImmediate,o=t.clearImmediate,l=t.MessageChannel,s=t.Dispatch,m=0,c={},h='onreadystatechange',g=function(){var e=+this;if(c.hasOwnProperty(e)){var d=c[e];delete c[e],d()}},y=function(e){g.call(e.data)},v,b,_;r&&o||(r=function e(d){for(var n=[],u=1;arguments.length>u;)n.push(arguments[u++]);return c[++m]=function(){a('function'==typeof d?d:Function(d),n)},v(m),m},o=function e(d){delete c[d]},'process'==n(34)(f)?v=function(e){f.nextTick(i(g,e,1))}:s&&s.now?v=function(e){s.now(i(g,e,1))}:l?(b=new l,_=b.port2,b.port1.onmessage=y,v=i(_.postMessage,_,1)):t.addEventListener&&'function'==typeof postMessage&&!t.importScripts?(v=function(e){t.postMessage(e+'','*')},t.addEventListener('message',y,!1)):h in p('script')?v=function(e){u.appendChild(p('script'))[h]=function(){u.removeChild(this),g.call(e)}}:v=function(e){setTimeout(i(g,e,1),0)}),e.exports={set:r,clear:o}},function(e,d,n){var i=n(125),a=n(4)('iterator'),u=n(35);e.exports=n(0).getIteratorMethod=function(e){if(e!=void 0)return e[a]||e['@@iterator']||u[i(e)]}},function(e,d){},function(e,d,n){n(246);for(var a=n(3),u=n(23),p=n(35),t=n(4)('toStringTag'),f='CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList'.split(','),r=0;r<f.length;r++){var i=f[r],o=a[i],l=o&&o.prototype;l&&!l[t]&&u(l,t,i),p[i]=p.Array}},function(e,d,n){(function(i,a,u){var p,t;/*! + * @overview es6-promise - a tiny implementation of Promises/A+. + * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) + * @license Licensed under MIT license + * See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE + * @version 2.3.0 + */(function(){'use strict';function f(e){return'function'==typeof e||'object'==typeof e&&null!==e}function r(e){return'function'==typeof e}function o(e){return'object'==typeof e&&null!==e}function l(e){pe=e}function s(e){Q=e}function m(){var e=i.nextTick,d=i.versions.node.match(/^(?:(\d+)\.)?(?:(\d+)\.)?(\*|\d+)$/);return Array.isArray(d)&&'0'===d[1]&&'10'===d[2]&&(e=a),function(){e(v)}}function c(){return function(){ue(v)}}function h(){var e=0,d=new de(v),n=document.createTextNode('');return d.observe(n,{characterData:!0}),function(){n.data=e=++e%2}}function g(){var e=new MessageChannel;return e.port1.onmessage=v,function(){e.port2.postMessage(0)}}function y(){return function(){setTimeout(v,1)}}function v(){for(var e=0;e<Y;e+=2){var d=ae[e],n=ae[e+1];d(n),ae[e]=void 0,ae[e+1]=void 0}Y=0}function b(){try{var e=p,d=n(297);return ue=d.runOnLoop||d.runOnContext,c()}catch(d){return y()}}function _(){}function w(){return new TypeError('You cannot resolve a promise with itself')}function x(){return new TypeError('A promises callback cannot return that same promise.')}function k(e){try{return e.then}catch(e){return oe.error=e,oe}}function S(e,d,n,i){try{e.call(d,n,i)}catch(d){return d}}function T(e,d,n){Q(function(e){var i=!1,a=S(n,d,function(n){i||(i=!0,d===n?R(e,n):j(e,n))},function(d){i||(i=!0,D(e,d))},'Settle: '+(e._label||' unknown promise'));!i&&a&&(i=!0,D(e,a))},e)}function N(e,d){d._state===fe?R(e,d._result):d._state===re?D(e,d._result):E(d,void 0,function(d){j(e,d)},function(d){D(e,d)})}function I(e,d){if(d.constructor===e.constructor)N(e,d);else{var n=k(d);n===oe?D(e,oe.error):n===void 0?R(e,d):r(n)?T(e,d,n):R(e,d)}}function j(e,d){e===d?D(e,w()):f(d)?I(e,d):R(e,d)}function O(e){e._onerror&&e._onerror(e._result),P(e)}function R(e,d){e._state!==se||(e._result=d,e._state=fe,0!==e._subscribers.length&&Q(P,e))}function D(e,d){e._state!==se||(e._state=re,e._result=d,Q(O,e))}function E(e,d,n,i){var a=e._subscribers,u=a.length;e._onerror=null,a[u]=d,a[u+fe]=n,a[u+re]=i,0===u&&e._state&&Q(P,e)}function P(e){var d=e._subscribers,n=e._state;if(0!==d.length){for(var a=e._result,u=0,i,p;u<d.length;u+=3)i=d[u],p=d[u+n],i?A(n,i,p,a):p(a);e._subscribers.length=0}}function C(){this.error=null}function L(e,d){try{return e(d)}catch(d){return le.error=d,le}}function A(e,d,n,i){var a=r(n),u,p,t,f;if(!a)u=i,t=!0;else if(u=L(n,i),u===le?(f=!0,p=u.error,u=null):t=!0,d===u)return void D(d,x());d._state!==se||(a&&t?j(d,u):f?D(d,p):e===fe?R(d,u):e===re&&D(d,u))}function V(d,e){try{e(function e(n){j(d,n)},function e(n){D(d,n)})}catch(n){D(d,n)}}function U(e,d){var n=this;n._instanceConstructor=e,n.promise=new e(_),n._validateInput(d)?(n._input=d,n.length=d.length,n._remaining=d.length,n._init(),0===n.length?R(n.promise,n._result):(n.length=n.length||0,n._enumerate(),0===n._remaining&&R(n.promise,n._result))):D(n.promise,n._validationError())}function M(e){return new me(this,e).promise}function F(e){function d(e){j(u,e)}function n(e){D(u,e)}var a=this,u=new a(_);if(!K(e))return D(u,new TypeError('You must pass an array to race.')),u;for(var p=e.length,t=0;u._state===se&&t<p;t++)E(a.resolve(e[t]),void 0,d,n);return u}function q(e){var d=this;if(e&&'object'==typeof e&&e.constructor===d)return e;var n=new d(_);return j(n,e),n}function B(e){var d=this,n=new d(_);return D(n,e),n}function H(){throw new TypeError('You must pass a resolver function as the first argument to the promise constructor')}function z(){throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.')}function W(e){this._id=ve++,this._state=void 0,this._result=void 0,this._subscribers=[],_!==e&&(!r(e)&&H(),!(this instanceof W)&&z(),V(this,e))}function J(){var e;if('undefined'!=typeof u)e=u;else if('undefined'!=typeof self)e=self;else try{e=Function('return this')()}catch(d){throw new Error('polyfill failed because global object is unavailable in this environment')}var d=e.Promise;d&&'[object Promise]'===Object.prototype.toString.call(d.resolve())&&!d.cast||(e.Promise=be)}var X;X=Array.isArray?Array.isArray:function(e){return'[object Array]'===Object.prototype.toString.call(e)};var K=X,Y=0,G={}.toString,Q=function e(d,n){ae[Y]=d,ae[Y+1]=n,Y+=2,2==Y&&(pe?pe(v):te())},Z='undefined'==typeof window?void 0:window,ee=Z||{},de=ee.MutationObserver||ee.WebKitMutationObserver,ne='undefined'!=typeof i&&'[object process]'==={}.toString.call(i),ie='undefined'!=typeof Uint8ClampedArray&&'undefined'!=typeof importScripts&&'undefined'!=typeof MessageChannel,ae=Array(1e3),ue,pe,te;te=ne?m():de?h():ie?g():void 0!==Z||0?y():b();var fe=1,re=2,oe=new C,le=new C,se;U.prototype._validateInput=function(e){return K(e)},U.prototype._validationError=function(){return new Error('Array Methods must be provided an Array')},U.prototype._init=function(){this._result=Array(this.length)};var me=U;U.prototype._enumerate=function(){for(var e=this,d=e.length,n=e.promise,a=e._input,u=0;n._state===se&&u<d;u++)e._eachEntry(a[u],u)},U.prototype._eachEntry=function(e,d){var n=this,i=n._instanceConstructor;o(e)?e.constructor===i&&e._state!==se?(e._onerror=null,n._settledAt(e._state,d,e._result)):n._willSettleAt(i.resolve(e),d):(n._remaining--,n._result[d]=e)},U.prototype._settledAt=function(e,d,n){var i=this,a=i.promise;a._state===se&&(i._remaining--,e===re?D(a,n):i._result[d]=n),0===i._remaining&&R(a,i._result)},U.prototype._willSettleAt=function(e,d){var n=this;E(e,void 0,function(e){n._settledAt(fe,d,e)},function(e){n._settledAt(re,d,e)})};var ce=M,he=F,ge=q,ye=B,ve=0,be=W;W.all=ce,W.race=he,W.resolve=ge,W.reject=ye,W._setScheduler=l,W._setAsap=s,W._asap=Q,W.prototype={constructor:W,then:function(e,d){var n=this,i=n._state;if(i===fe&&!e||i===re&&!d)return this;var a=new this.constructor(_),u=n._result;if(i){var p=arguments[i-1];Q(function(){A(i,a,p,u)})}else E(n,a,e,d);return a},catch:function(e){return this.then(null,e)}};var _e=J,we={Promise:be,polyfill:_e};!0?(t=function(){return we}.call(d,n,d,e),!(t!==void 0&&(e.exports=t))):'undefined'!=typeof e&&e.exports?e.exports=we:'undefined'!=typeof this&&(this.ES6Promise=we),_e()}).call(this)}).call(d,n(16),n(38).setImmediate,n(1))},function(e,d){var n={}.toString;e.exports=Array.isArray||function(e){return'[object Array]'==n.call(e)}},function(e,d,n){(function(i,a,u,p){var t,r;/** + * A JavaScript implementation of the JSON-LD API. + * + * @author Dave Longley + * + * @license BSD 3-Clause License + * Copyright (c) 2011-2015 Digital Bazaar, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the Digital Bazaar, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */(function(){var o='undefined'!=typeof i&&i.versions&&i.versions.node,l=!o&&('undefined'!=typeof window||'undefined'!=typeof self);l&&'undefined'==typeof a&&('undefined'==typeof window?'undefined'==typeof self?'undefined'!=typeof $&&(a=$):a=self:a=window);var s=function(d){function e(){}function t(e){for(var d=[],n=Object.keys(e).sort(),i=0;i<n.length;++i){var a=n[i],u=e[a];B(u)||(u=[u]);for(var p=0,t;p<u.length;++p)if(t=u[p],null!==t){if(!z(t))throw new Ce('Invalid JSON-LD syntax; language map values must be strings.','jsonld.SyntaxError',{code:'invalid language map value',languageMap:e});d.push({"@value":t,"@language":a.toLowerCase()})}}return d}function r(e,d){if(B(d))for(var n=0;n<d.length;++n)d[n]=r(e,d[n]);else if(ee(d))d['@list']=r(e,d['@list']);else if(F(d)){de(d)&&(d['@id']=e.getId(d['@id']));for(var i=Object.keys(d).sort(),a=0,u;a<i.length;++a)u=i[a],'@id'!==u&&(d[u]=r(e,d[u]))}return d}function s(e,n,i){if(null===i||void 0===i)return null;var a=L(e,n,{vocab:!0});if('@id'===a)return L(e,i,{base:!0});if('@type'===a)return L(e,i,{vocab:!0,base:!0});var u=d.getContextValue(e,n,'@type');if('@id'===u||'@graph'===a&&z(i))return{"@id":L(e,i,{base:!0})};if('@vocab'===u)return{"@id":L(e,i,{vocab:!0,base:!0})};if(M(a))return i;var p={};if(null!==u)p['@type']=u;else if(z(i)){var t=d.getContextValue(e,n,'@language');null!==t&&(p['@language']=t)}return-1===['boolean','number','string'].indexOf(typeof i)&&(i=i.toString()),p['@value']=i,p}function m(e,d,n){for(var a=[],u=Object.keys(e).sort(),p=0;p<u.length;++p)for(var i=u[p],t=e[i],f=Object.keys(t).sort(),r=0;r<f.length;++r){var o=f[r],l=t[o];if('@type'===o)o=Ie;else if(M(o))continue;for(var s=0;s<l.length;++s){var m=l[s],g={};if(g.type=0===i.indexOf('_:')?'blank node':'IRI',g.value=i,!!ne(i)){var y={type:0===o.indexOf('_:')?'blank node':'IRI',value:o};if(ne(o)&&('blank node'!==y.type||n.produceGeneralizedRdf))if(ee(m))c(m['@list'],d,g,y,a);else{var v=h(m);v&&a.push({subject:g,predicate:y,object:v})}}}}return a}function c(e,d,n,a,u){for(var p={type:'IRI',value:Se},t={type:'IRI',value:Te},f={type:'IRI',value:Ne},r=0;r<e.length;++r){var i=e[r],o={type:'blank node',value:d.getId()};u.push({subject:n,predicate:a,object:o}),n=o,a=p;var l=h(i);l&&u.push({subject:n,predicate:a,object:l}),a=t}u.push({subject:n,predicate:a,object:f})}function h(e){var d={};if(Z(e)){d.type='literal';var n=e['@value'],i=e['@type']||null;K(n)?(d.value=n.toString(),d.datatype=i||ve):J(n)||i===be?(!J(n)&&(n=parseFloat(n)),d.value=n.toExponential(15).replace(/(\d)0*e\+?/,'$1E'),d.datatype=i||be):W(n)?(d.value=n.toFixed(0),d.datatype=i||_e):'@language'in e?(d.value=n,d.datatype=i||De,d.language=e['@language']):(d.value=n,d.datatype=i||we)}else{var a=F(e)?e['@id']:e;d.type=0===a.indexOf('_:')?'blank node':'IRI',d.value=a}return'IRI'!==d.type||ne(d.value)?d:null}function g(e,d){if('IRI'===e.type||'blank node'===e.type)return{"@id":e.value};var n={"@value":e.value};if(e.language)n['@language']=e.language;else{var a=e.datatype;if(a||(a=we),d){if(a===ve)'true'===n['@value']?n['@value']=!0:'false'===n['@value']&&(n['@value']=!1);else if(X(n['@value']))if(a===_e){var u=parseInt(n['@value'],10);u.toFixed(0)===n['@value']&&(n['@value']=u)}else a===be&&(n['@value']=parseFloat(n['@value']));-1===[ve,_e,be,we].indexOf(a)&&(n['@type']=a)}else a!==we&&(n['@type']=a)}return n}function y(e,d){for(var n=['subject','predicate','object'],a=0,i;a<n.length;++a)if(i=n[a],e[i].type!==d[i].type||e[i].value!==d[i].value)return!1;return e.object.language===d.object.language&&e.object.datatype===d.object.datatype}function v(e,n,a,u,p,t){if(B(e)){for(var f=0;f<e.length;++f)v(e[f],n,a,u,void 0,t);return}if(!F(e))return void(t&&t.push(e));if(Z(e)){if('@type'in e){var i=e['@type'];0===i.indexOf('_:')&&(e['@type']=i=u.getId(i))}return void(t&&t.push(e))}if('@type'in e)for(var r=e['@type'],f=0,i;f<r.length;++f)i=r[f],0===i.indexOf('_:')&&u.getId(i);Y(p)&&(p=de(e)?u.getId(e['@id']):e['@id']),t&&t.push({"@id":p});var l=n[a],s=l[p]=l[p]||{};s['@id']=p;for(var m=Object.keys(e).sort(),c=0,h;c<m.length;++c)if(h=m[c],'@id'!==h){if('@reverse'===h){var y={"@id":p},b=e['@reverse'];for(var _ in b)for(var w=b[_],x=0;x<w.length;++x){var k=w[x],S=k['@id'];de(k)&&(S=u.getId(S)),v(k,n,a,u,S),d.addValue(l[S],_,y,{propertyIsArray:!0,allowDuplicate:!1})}continue}if('@graph'===h){p in n||(n[p]={});var T='@merged'===a?a:p;v(e[h],n,T,u);continue}if('@type'!==h&&M(h)){if('@index'===h&&h in s&&(e[h]!==s[h]||e[h]['@id']!==s[h]['@id']))throw new Ce('Invalid JSON-LD syntax; conflicting @index property detected.','jsonld.SyntaxError',{code:'conflicting indexes',subject:s});s[h]=e[h];continue}var g=e[h];if(0===h.indexOf('_:')&&(h=u.getId(h)),0===g.length){d.addValue(s,h,[],{propertyIsArray:!0});continue}for(var N=0,I;N<g.length;++N)if(I=g[N],'@type'===h&&(I=0===I.indexOf('_:')?u.getId(I):I),G(I)||Q(I)){var o=de(I)?u.getId(I['@id']):I['@id'];d.addValue(s,h,{"@id":o},{propertyIsArray:!0,allowDuplicate:!1}),v(I,n,a,u,o)}else if(ee(I)){var j=[];v(I['@list'],n,a,u,p,j),I={"@list":j},d.addValue(s,h,I,{propertyIsArray:!0,allowDuplicate:!1})}else v(I,n,a,u,p),d.addValue(s,h,I,{propertyIsArray:!0,allowDuplicate:!1})}}function b(e){for(var d=e['@default'],n=Object.keys(e).sort(),a=0,i;a<n.length;++a)if(i=n[a],'@default'!==i){var u=e[i],p=d[i];p?!('@graph'in p)&&(p['@graph']=[]):d[i]=p={"@id":i,"@graph":[]};for(var t=p['@graph'],f=Object.keys(u).sort(),r=0,o;r<f.length;++r)o=u[f[r]],Q(o)||t.push(o)}return d}function _(e,d,a,u,p){S(a),a=a[0];for(var t=e.options,f={embed:k(a,t,'embed'),explicit:k(a,t,'explicit'),requireAll:k(a,t,'requireAll')},r=T(e,d,a,f),l=Object.keys(r).sort(),s=0;s<l.length;++s){var m=l[s],c=r[m];if('@link'===f.embed&&m in e.link){j(u,p,e.link[m]);continue}null===p&&(e.uniqueEmbeds={});var h={};if(h['@id']=m,e.link[m]=h,'@never'===f.embed||x(c,e.subjectStack)){j(u,p,h);continue}'@last'===f.embed&&(m in e.uniqueEmbeds&&I(e,m),e.uniqueEmbeds[m]={parent:u,property:p}),e.subjectStack.push(c);for(var g=Object.keys(c).sort(),y=0,i;y<g.length;y++){if(i=g[y],M(i)){h[i]=ie(c[i]);continue}if(!f.explicit||i in a)for(var v=c[i],b=0,N;b<v.length;++b){if(N=v[b],ee(N)){var o={"@list":[]};j(h,i,o);var O=N['@list'];for(var R in O)if(N=O[R],Q(N)){var n=i in a?a[i][0]['@list']:w(f);_(e,[N['@id']],n,o,'@list')}else j(o,'@list',ie(N));continue}if(Q(N)){var n=i in a?a[i]:w(f);_(e,[N['@id']],n,h,i)}else j(h,i,ie(N))}}for(var g=Object.keys(a).sort(),y=0,i;y<g.length;++y)if(i=g[y],!M(i)){var D=a[i][0],E=k(D,t,'omitDefault');if(!E&&!(i in h)){var P='@null';'@default'in D&&(P=ie(D['@default'])),B(P)||(P=[P]),h[i]=[{"@preserve":P}]}}j(u,p,h),e.subjectStack.pop()}}function w(e){var d={};for(var n in e)void 0!==e[n]&&(d['@'+n]=[e[n]]);return[d]}function x(e,d){for(var n=d.length-1;0<=n;--n)if(d[n]['@id']===e['@id'])return!0;return!1}function k(e,d,n){var i='@'+n,a=i in e?e[i][0]:d[n];return'embed'===n&&(!0===a?a='@last':!1===a?a='@never':'@always'!==a&&'@never'!==a&&'@link'!==a&&(a='@last')),a}function S(e){if(!B(e)||1!==e.length||!F(e[0]))throw new Ce('Invalid JSON-LD syntax; a JSON-LD frame must be a single object.','jsonld.SyntaxError',{frame:e})}function T(e,d,n,a){for(var u={},p=0;p<d.length;++p){var i=d[p],t=e.subjects[i];N(t,n,a)&&(u[i]=t)}return u}function N(e,n,a){if('@type'in n&&!(1===n['@type'].length&&F(n['@type'][0]))){for(var u=n['@type'],p=0;p<u.length;++p)if(d.hasValue(e,'@type',u[p]))return!0;return!1}var i=!0,t=!1;for(var f in n){if(M(f)){if('@id'!=f&&'@type'!=f)continue;if(i=!1,'@id'==f&&z(n[f])){if(e[f]!==n[f])return!1;t=!0;continue}}if(i=!1,f in e){if(B(n[f])&&0===n[f].length&&void 0!==e[f])return!1;t=!0;continue}var r=B(n[f])&&F(n[f][0])&&'@default'in n[f][0];if(a.requireAll&&!r)return!1}return i||t}function I(e,n){var a=e.uniqueEmbeds,u=a[n],p=u.parent,t=u.property,f={"@id":n};if(B(p)){for(var r=0;r<p.length;++r)if(d.compareValues(p[r],f)){p[r]=f;break}}else{var i=B(p[t]);d.removeValue(p,t,f,{propertyIsArray:i}),d.addValue(p,t,f,{propertyIsArray:i})}var o=function(e){for(var d=Object.keys(a),n=0,i;n<d.length;++n)i=d[n],i in a&&F(a[i].parent)&&a[i].parent['@id']===e&&(delete a[i],o(i))};o(n)}function j(e,n,i){F(e)?d.addValue(e,n,i,{propertyIsArray:!0}):e.push(i)}/** + * Removes the @preserve keywords as the last step of the framing algorithm. + * + * @param ctx the active context used to compact the input. + * @param input the framed, compacted output. + * @param options the compaction options used. + * + * @return the resulting output. + */function O(e,n,a){if(B(n)){for(var u=[],p=0,i;p<n.length;++p)i=O(e,n[p],a),null!==i&&u.push(i);n=u}else if(F(n)){// remove @preserve +if('@preserve'in n)return'@null'===n['@preserve']?null:n['@preserve'];if(Z(n))return n;if(ee(n))return n['@list']=O(e,n['@list'],a),n;var t=E(e,'@id');if(t in n){var f=n[t];if(f in a.link){var r=a.link[f].indexOf(n);if(-1===r)a.link[f].push(n);else return a.link[f][r]}else a.link[f]=[n]}for(var o in n){var i=O(e,n[o],a),l=d.getContextValue(e,o,'@container');a.compactArrays&&B(i)&&1===i.length&&null===l&&(i=i[0]),n[o]=i}}return n}function R(e,d){return e.length<d.length?-1:d.length<e.length?1:e===d?0:e<d?-1:1}function D(e,d,n,i,a,u){null===u&&(u='@null');var p=[];if(('@id'===u||'@reverse'===u)&&Q(n)){'@reverse'===u&&p.push('@reverse');var t=E(e,n['@id'],null,{vocab:!0});t in e.mappings&&e.mappings[t]&&e.mappings[t]['@id']===n['@id']?p.push.apply(p,['@vocab','@id']):p.push.apply(p,['@id','@vocab'])}else p.push(u);p.push('@none');for(var f=e.inverse[d],r=0,o;r<i.length;++r)if(o=i[r],!!(o in f))for(var l=f[o][a],s=0,m;s<p.length;++s)if(m=p[s],!!(m in l))return l[m];return null}function E(e,d,n,a,u){if(null===d)return d;Y(n)&&(n=null),Y(u)&&(u=!1),a=a||{};var p=e.getInverse();if(M(d))return d in p?p[d]['@none']['@type']['@none']:d;if(a.vocab&&d in p){var t=e['@language']||'@none',f=[];F(n)&&'@index'in n&&f.push('@index');var r='@language',o='@null';if(u)r='@type',o='@reverse',f.push('@set');else if(ee(n)){'@index'in n||f.push('@list');for(var l=n['@list'],s=0===l.length?t:null,m=null,c=0;c<l.length;++c){var i=l[c],h='@none',g='@none';if(Z(i)?'@language'in i?h=i['@language']:'@type'in i?g=i['@type']:h='@null':g='@id',null===s?s=h:h!==s&&Z(i)&&(s='@none'),null==m?m=g:g!==m&&(m='@none'),'@none'===s&&'@none'===m)break}s=s||'@none',m=m||'@none','@none'===m?o=s:(r='@type',o=m)}else Z(n)?'@language'in n&&!('@index'in n)?(f.push('@language'),o=n['@language']):'@type'in n&&(r='@type',o=n['@type']):(r='@type',o='@id'),f.push('@set');f.push('@none');var y=D(e,d,n,f,r,o);if(null!==y)return y}if(a.vocab&&'@vocab'in e){var v=e['@vocab'];if(0===d.indexOf(v)&&d!==v){var b=d.substr(v.length);if(!(b in e.mappings))return b}}for(var _=null,w=0,x=[],k=e.fastCurieMap,S=d.length-1;w<S&&d[w]in k;++w)k=k[d[w]],''in k&&x.push(k[''][0]);for(var c=x.length-1;0<=c;--c)for(var T=x[c],N=T.terms,I=0;I<N.length;++I){var j=N[I]+':'+d.substr(T.iri.length),O=!(j in e.mappings)||null===n&&e.mappings[j]['@id']===d;O&&(null==_||0>R(j,_))&&(_=j)}return null===_?a.vocab?d:V(e['@base'],d):_}function P(e,n,i){if(Z(i)){var a=d.getContextValue(e,n,'@type'),u=d.getContextValue(e,n,'@language'),p=d.getContextValue(e,n,'@container'),t='@index'in i&&'@index'!==p;if(!t&&(i['@type']===a||i['@language']===u))return i['@value'];var f=Object.keys(i).length,r=1===f||2===f&&'@index'in i&&!t,o='@language'in e,l=z(i['@value']),s=e.mappings[n]&&null===e.mappings[n]['@language'];if(r&&(!o||!l||s))return i['@value'];var m={};return t&&(m[E(e,'@index')]=i['@index']),'@type'in i?m[E(e,'@type')]=E(e,i['@type'],null,{vocab:!0}):'@language'in i&&(m[E(e,'@language')]=i['@language']),m[E(e,'@value')]=i['@value'],m}var c=L(e,n,{vocab:!0}),a=d.getContextValue(e,n,'@type'),h=E(e,i['@id'],null,{vocab:'@vocab'===a});if('@id'===a||'@vocab'===a||'@graph'===c)return h;var m={};return m[E(e,'@id')]=h,m}function C(e,d,n,i){if(n in i){if(i[n])return;throw new Ce('Cyclical context definition detected.','jsonld.CyclicalContext',{code:'cyclic IRI mapping',context:d,term:n})}if(i[n]=!1,M(n))throw new Ce('Invalid JSON-LD syntax; keywords cannot be overridden.','jsonld.SyntaxError',{code:'keyword redefinition',context:d,term:n});if(''===n)throw new Ce('Invalid JSON-LD syntax; a term cannot be an empty string.','jsonld.SyntaxError',{code:'invalid term definition',context:d});e.mappings[n]&&delete e.mappings[n];var a=d[n];if(null===a||F(a)&&null===a['@id'])return e.mappings[n]=null,void(i[n]=!0);if(z(a)&&(a={"@id":a}),!F(a))throw new Ce('Invalid JSON-LD syntax; @context property values must be strings or objects.','jsonld.SyntaxError',{code:'invalid term definition',context:d});var u=e.mappings[n]={};if(u.reverse=!1,'@reverse'in a){if('@id'in a)throw new Ce('Invalid JSON-LD syntax; a @reverse term definition must not contain @id.','jsonld.SyntaxError',{code:'invalid reverse property',context:d});var p=a['@reverse'];if(!z(p))throw new Ce('Invalid JSON-LD syntax; a @context @reverse value must be a string.','jsonld.SyntaxError',{code:'invalid IRI mapping',context:d});var t=L(e,p,{vocab:!0,base:!1},d,i);if(!ne(t))throw new Ce('Invalid JSON-LD syntax; a @context @reverse value must be an absolute IRI or a blank node identifier.','jsonld.SyntaxError',{code:'invalid IRI mapping',context:d});u['@id']=t,u.reverse=!0}else if('@id'in a){var t=a['@id'];if(!z(t))throw new Ce('Invalid JSON-LD syntax; a @context @id value must be an array of strings or a string.','jsonld.SyntaxError',{code:'invalid IRI mapping',context:d});if(t!==n){if(t=L(e,t,{vocab:!0,base:!1},d,i),!ne(t)&&!M(t))throw new Ce('Invalid JSON-LD syntax; a @context @id value must be an absolute IRI, a blank node identifier, or a keyword.','jsonld.SyntaxError',{code:'invalid IRI mapping',context:d});u['@id']=t}}var f=n.indexOf(':');if(u._termHasColon=-1!==f,!('@id'in u))if(u._termHasColon){var r=n.substr(0,f);if(r in d&&C(e,d,r,i),e.mappings[r]){var o=n.substr(f+1);u['@id']=e.mappings[r]['@id']+o}else u['@id']=n}else{if(!('@vocab'in e))throw new Ce('Invalid JSON-LD syntax; @context terms must define an @id.','jsonld.SyntaxError',{code:'invalid IRI mapping',context:d,term:n});u['@id']=e['@vocab']+n}if(i[n]=!0,'@type'in a){var l=a['@type'];if(!z(l))throw new Ce('Invalid JSON-LD syntax; an @context @type values must be a string.','jsonld.SyntaxError',{code:'invalid type mapping',context:d});if('@id'!==l&&'@vocab'!==l){if(l=L(e,l,{vocab:!0,base:!1},d,i),!ne(l))throw new Ce('Invalid JSON-LD syntax; an @context @type value must be an absolute IRI.','jsonld.SyntaxError',{code:'invalid type mapping',context:d});if(0===l.indexOf('_:'))throw new Ce('Invalid JSON-LD syntax; an @context @type values must be an IRI, not a blank node identifier.','jsonld.SyntaxError',{code:'invalid type mapping',context:d})}u['@type']=l}if('@container'in a){var s=a['@container'];if('@list'!==s&&'@set'!==s&&'@index'!==s&&'@language'!==s)throw new Ce('Invalid JSON-LD syntax; @context @container value must be one of the following: @list, @set, @index, or @language.','jsonld.SyntaxError',{code:'invalid container mapping',context:d});if(u.reverse&&'@index'!==s&&'@set'!==s&&null!==s)throw new Ce('Invalid JSON-LD syntax; @context @container value for a @reverse type definition must be @index or @set.','jsonld.SyntaxError',{code:'invalid reverse property',context:d});u['@container']=s}if('@language'in a&&!('@type'in a)){var m=a['@language'];if(null!==m&&!z(m))throw new Ce('Invalid JSON-LD syntax; @context @language value must be a string or null.','jsonld.SyntaxError',{code:'invalid language mapping',context:d});null!==m&&(m=m.toLowerCase()),u['@language']=m}// disallow aliasing @context and @preserve +var t=u['@id'];if('@context'===t||'@preserve'===t)throw new Ce('Invalid JSON-LD syntax; @context and @preserve cannot be aliased.','jsonld.SyntaxError',{code:'invalid keyword alias',context:d})}function L(e,n,i,a,u){if(null===n||M(n))return n;if(n+='',a&&n in a&&!0!==u[n]&&C(e,a,n,u),i=i||{},i.vocab){var p=e.mappings[n];if(null===p)return null;if(p)return p['@id']}var t=n.indexOf(':');if(-1!==t){var f=n.substr(0,t),r=n.substr(t+1);if('_'===f||0===r.indexOf('//'))return n;a&&f in a&&C(e,a,f,u);var p=e.mappings[f];return p?p['@id']+r:n}if(i.vocab&&'@vocab'in e)return e['@vocab']+n;var o=n;return i.base&&(o=d.prependBase(e['@base'],o)),o}function A(e,n){if(null===e)return n;if(-1!==n.indexOf(':'))return n;z(e)&&(e=d.url.parse(e||''));var i=d.url.parse(n),a={protocol:e.protocol||''};if(null!==i.authority)a.authority=i.authority,a.path=i.path,a.query=i.query;else if(a.authority=e.authority,''===i.path)a.path=e.path,a.query=null===i.query?e.query:i.query;else{if(0===i.path.indexOf('/'))a.path=i.path;else{var u=e.path;''!==i.path&&(u=u.substr(0,u.lastIndexOf('/')+1),0<u.length&&'/'!==u.substr(-1)&&(u+='/'),u+=i.path),a.path=u}a.query=i.query}a.path=le(a.path,!!a.authority);var p=a.protocol;return null!==a.authority&&(p+='//'+a.authority),p+=a.path,null!==a.query&&(p+='?'+a.query),null!==i.fragment&&(p+='#'+i.fragment),''===p&&(p='./'),p}function V(e,n){if(null===e)return n;z(e)&&(e=d.url.parse(e||''));var a='';if(''===e.href?n.indexOf('//')&&(a+='//'):a+=(e.protocol||'')+'//'+(e.authority||''),0!==n.indexOf(a))return n;for(var u=d.url.parse(n.substr(a.length)),p=e.normalizedPath.split('/'),t=u.normalizedPath.split('/'),f=u.fragment||u.query?0:1;0<p.length&&t.length>f&&p[0]===t[0];)p.shift(),t.shift();var r='';if(0<p.length){p.pop();for(var o=0;o<p.length;++o)r+='../'}return r+=t.join('/'),null!==u.query&&(r+='?'+u.query),null!==u.fragment&&(r+='#'+u.fragment),''===r&&(r='./'),r}function U(e){function n(){var e=this;if(e.inverse)return e.inverse;for(var d=e.inverse={},n=e.fastCurieMap={},u={},p=e['@language']||'@none',t=e.mappings,f=Object.keys(t).sort(R),r=0;r<f.length;++r){var o=f[r],l=t[o];if(null!==l){var s=l['@container']||'@none',m=l['@id'];B(m)||(m=[m]);for(var c=0;c<m.length;++c){var h=m[c],g=d[h],y=M(h);if(!!g)y||l._termHasColon||u[h].push(o);else if(d[h]=g={},!y&&!l._termHasColon){u[h]=[o];var v={iri:h,terms:u[h]};h[0]in n?n[h[0]].push(v):n[h[0]]=[v]}if(g[s]||(g[s]={"@language":{},"@type":{}}),g=g[s],l.reverse)a(l,o,g['@type'],'@reverse');else if('@type'in l)a(l,o,g['@type'],l['@type']);else if('@language'in l){var b=l['@language']||'@null';a(l,o,g['@language'],b)}else a(l,o,g['@language'],p),a(l,o,g['@type'],'@none'),a(l,o,g['@language'],'@none')}}}for(var _ in n)i(n,_,1);return d}function i(e,d,n){for(var a=e[d],u=e[d]={},p=0,t,f;p<a.length;++p)t=a[p].iri,f=n>=t.length?'':t[n],f in u?u[f].push(a[p]):u[f]=[a[p]];for(var d in u)''!==d&&i(u,d,n+1)}function a(e,d,n,i){i in n||(n[i]=d)}function u(){var e={};return e['@base']=this['@base'],e.mappings=ie(this.mappings),e.clone=this.clone,e.inverse=null,e.getInverse=this.getInverse,'@language'in this&&(e['@language']=this['@language']),'@vocab'in this&&(e['@vocab']=this['@vocab']),e}var p=d.url.parse(e.base||'');return{"@base":p,mappings:{},inverse:null,getInverse:n,clone:u}}function M(e){return!!z(e)&&('@base'===e||'@context'===e||'@container'===e||'@default'===e||'@embed'===e||'@explicit'===e||'@graph'===e||'@id'===e||'@index'===e||'@language'===e||'@list'===e||'@omitDefault'===e||'@preserve'===e||'@requireAll'===e||'@reverse'===e||'@set'===e||'@type'===e||'@value'===e||'@vocab'===e)}function F(e){return'[object Object]'===Object.prototype.toString.call(e)}function q(e){return F(e)&&0===Object.keys(e).length}function B(e){return Array.isArray(e)}function H(e){if(!(z(e)||q(e))){var d=!1;if(B(e)){d=!0;for(var n=0;n<e.length;++n)if(!z(e[n])){d=!1;break}}if(!d)throw new Ce('Invalid JSON-LD syntax; "@type" value must a string, an array of strings, or an empty object.','jsonld.SyntaxError',{code:'invalid type value',value:e})}}function z(e){return'string'==typeof e||'[object String]'===Object.prototype.toString.call(e)}function W(e){return'number'==typeof e||'[object Number]'===Object.prototype.toString.call(e)}function J(e){return W(e)&&-1!==(e+'').indexOf('.')}function X(e){return!isNaN(parseFloat(e))&&isFinite(e)}function K(e){return'boolean'==typeof e||'[object Boolean]'===Object.prototype.toString.call(e)}function Y(e){return'undefined'==typeof e}function G(e){var d=!1;if(F(e)&&!('@value'in e||'@set'in e||'@list'in e)){var n=Object.keys(e).length;d=1<n||!('@id'in e)}return d}function Q(e){return F(e)&&1===Object.keys(e).length&&'@id'in e}function Z(e){return F(e)&&'@value'in e}function ee(e){return F(e)&&'@list'in e}function de(e){var d=!1;return F(e)&&('@id'in e?d=0===e['@id'].indexOf('_:'):d=0===Object.keys(e).length||!('@value'in e||'@set'in e||'@list'in e)),d}function ne(e){return z(e)&&-1!==e.indexOf(':')}function ie(e){if(e&&'object'==typeof e){var d;if(B(e)){d=[];for(var n=0;n<e.length;++n)d[n]=ie(e[n])}else if(F(e))for(var i in d={},e)d[i]=ie(e[i]);else d=e.toString();return d}return e}function ae(e,n,a,u){var p=Object.keys(n).length;if(B(e)){for(var t=0;t<e.length;++t)ae(e[t],n,a,u);return p<Object.keys(n).length}if(F(e)){for(var i in e){if('@context'!=i){ae(e[i],n,a,u);continue}var f=e[i];if(B(f))for(var r=f.length,t=0,o;t<r;++t)o=f[t],z(o)&&(o=d.prependBase(u,o),a?(o=n[o],B(o)?(Array.prototype.splice.apply(f,[t,1].concat(o)),t+=o.length-1,r=f.length):f[t]=o):!(o in n)&&(n[o]=!1));else z(f)&&(f=d.prependBase(u,f),a?e[i]=n[f]:!(f in n)&&(n[f]=!1))}return p<Object.keys(n).length}return!1}function ue(e,d,n){var a=null,i=d.documentLoader,u=function(e,d,n,p,t){if(Object.keys(d).length>Pe)return a=new Ce('Maximum number of @context URLs exceeded.','jsonld.ContextUrlError',{code:'loading remote context failed',max:Pe}),t(a);var f={},r=function(){ae(e,f,!0,p),t(null,e)};if(!ae(e,f,!1,p))return r();var o=[];for(var l in f)!1===f[l]&&o.push(l);for(var s=o.length,m=0;m<o.length;++m)(function(e){if(e in d)return a=new Ce('Cyclical @context URLs detected.','jsonld.ContextUrlError',{code:'recursive context inclusion',url:e}),t(a);var i=ie(d);i[e]=!0;var p=function(d,p){if(!a){var o=p?p.document:null;if(!d&&z(o))try{o=JSON.parse(o)}catch(e){d=e}return d?d=new Ce('Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.','jsonld.InvalidUrl',{code:'loading remote context failed',url:e,cause:d}):!F(o)&&(d=new Ce('Dereferencing a URL did not result in a JSON object. The response was valid JSON, but it was not a JSON object.','jsonld.InvalidUrl',{code:'invalid remote context',url:e,cause:d})),d?(a=d,t(a)):void(o='@context'in o?{"@context":o['@context']}:{"@context":{}},p.contextUrl&&(!B(o['@context'])&&(o['@context']=[o['@context']]),o['@context'].push(p.contextUrl)),u(o,i,n,e,function(d,n){return d?t(d):void(f[e]=n['@context'],s-=1,0===s&&r())}))}},o=n(e,p);o&&'then'in o&&o.then(p.bind(null,null),p)})(o[m])};u(e,{},i,d.base,n)}function pe(e){for(var d='(?:<([^:]+:[^>]*)>)',n='(_:(?:[A-Za-z0-9]+))',i='"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"',a='(?:\\^\\^'+d+')',u='(?:@([a-z]+(?:-[a-z0-9]+)*))',p='(?:'+i+'(?:'+a+'|'+u+')?)',t='(?:#.*)?',f='[ \\t]+',r='[ \\t]*',o=/(?:\r\n)|(?:\n)|(?:\r)/g,l=/^[ \t]*(?:#.*)?$/,s='(?:'+d+'|'+n+')'+f,m=d+f,c='(?:'+d+'|'+n+'|'+p+')'+r,h='(?:\\.|(?:(?:'+d+'|'+n+')'+r+'\\.))',g=/^[ \t]*(?:(?:<([^:]+:[^>]*)>)|(_:(?:[A-Za-z0-9]+)))[ \t]+(?:<([^:]+:[^>]*)>)[ \t]+(?:(?:<([^:]+:[^>]*)>)|(_:(?:[A-Za-z0-9]+))|(?:"([^"\\]*(?:\\.[^"\\]*)*)"(?:(?:\^\^(?:<([^:]+:[^>]*)>))|(?:@([a-z]+(?:-[a-z0-9]+)*)))?))[ \t]*(?:\.|(?:(?:(?:<([^:]+:[^>]*)>)|(_:(?:[A-Za-z0-9]+)))[ \t]*\.))[ \t]*(?:#.*)?$/,v={},b=e.split(o),_=0,w=0,x;w<b.length;++w)if(x=b[w],_++,!l.test(x)){var k=x.match(g);if(null===k)throw new Ce('Error while parsing N-Quads; invalid quad.','jsonld.ParseError',{line:_});var S={};if(S.subject=Y(k[1])?{type:'blank node',value:k[2]}:{type:'IRI',value:k[1]},S.predicate={type:'IRI',value:k[3]},!Y(k[4]))S.object={type:'IRI',value:k[4]};else if(!Y(k[5]))S.object={type:'blank node',value:k[5]};else{S.object={type:'literal'},Y(k[7])?Y(k[8])?S.object.datatype=we:(S.object.datatype=De,S.object.language=k[8]):S.object.datatype=k[7];var T=k[6].replace(/\\"/g,'"').replace(/\\t/g,'\t').replace(/\\n/g,'\n').replace(/\\r/g,'\r').replace(/\\\\/g,'\\');S.object.value=T}var N='@default';if(Y(k[9])?!Y(k[10])&&(N=k[10]):N=k[9],!(N in v))v[N]=[S];else{for(var I=!0,j=v[N],O=0;I&&O<j.length;++O)y(j[O],S)&&(I=!1);I&&j.push(S)}}return v}function te(e){var d=[];for(var n in e)for(var i=e[n],a=0,u;a<i.length;++a)u=i[a],'@default'==n&&(n=null),d.push(fe(u,n));return d.sort().join('')}function fe(e,d){var n=e.subject,i=e.predicate,a=e.object,u=d||null;'name'in e&&e.name&&(u=e.name.value);var p='';if(p+='IRI'===n.type?'<'+n.value+'>':n.value,p+=' ',p+='IRI'===i.type?'<'+i.value+'>':i.value,p+=' ','IRI'===a.type)p+='<'+a.value+'>';else if('blank node'===a.type)p+=a.value;else{var t=a.value.replace(/\\/g,'\\\\').replace(/\t/g,'\\t').replace(/\n/g,'\\n').replace(/\r/g,'\\r').replace(/\"/g,'\\"');p+='"'+t+'"',a.datatype===De?a.language&&(p+='@'+a.language):a.datatype!==we&&(p+='^^<'+a.datatype+'>')}return null!==u&&void 0!==u&&(0===u.indexOf('_:')?p+=' '+u:p+=' <'+u+'>'),p+=' .\n',p}function re(e){for(var d={"@default":[]},n=e.getSubjects(),i=0,a;i<n.length;++i)if(a=n[i],null!==a){var u=e.getSubjectTriples(a);if(null!==u){var p=u.predicates;for(var t in p)for(var f=p[t].objects,r=0;r<f.length;++r){var o=f[r],l={};l.subject=0===a.indexOf('_:')?{type:'blank node',value:a}:{type:'IRI',value:a},l.predicate=0===t.indexOf('_:')?{type:'blank node',value:t}:{type:'IRI',value:t};var s=o.value;if(o.type===Oe){ge||Fe();var m=new ge;s='';for(var c=0;c<o.value.length;c++)o.value[c].nodeType===ye.ELEMENT_NODE?s+=m.serializeToString(o.value[c]):o.value[c].nodeType===ye.TEXT_NODE&&(s+=o.value[c].nodeValue)}l.object={},o.type===Re?0===o.value.indexOf('_:')?l.object.type='blank node':l.object.type='IRI':(l.object.type='literal',o.type===je?o.language?(l.object.datatype=De,l.object.language=o.language):l.object.datatype=we:l.object.datatype=o.type),l.object.value=s,d['@default'].push(l)}}}return d}function oe(e){this.prefix=e,this.counter=0,this.existing={}}function le(e,d){var n='';0===e.indexOf('/')&&(n='/');for(var i=e.split('/'),a=[];0<i.length;){if('.'===i[0]||''===i[0]&&1<i.length){i.shift();continue}if('..'===i[0]){i.shift(),d||0<a.length&&'..'!==a[a.length-1]?a.pop():a.push('..');continue}a.push(i.shift())}return n+a.join('/')}d.compact=function(e,n,i,a){function u(e,d,u,p){if(e)return a(e);p.compactArrays&&!p.graph&&B(d)?1===d.length?d=d[0]:0===d.length&&(d={}):p.graph&&F(d)&&(d=[d]),F(n)&&'@context'in n&&(n=n['@context']),n=ie(n),B(n)||(n=[n]);var t=n;n=[];for(var f=0;f<t.length;++f)(!F(t[f])||0<Object.keys(t[f]).length)&&n.push(t[f]);var i=0<n.length;if(1===n.length&&(n=n[0]),B(d)){var r=E(u,'@graph'),o=d;d={},i&&(d['@context']=n),d[r]=o}else if(F(d)&&i){var o=d;for(var l in d={"@context":n},o)d[l]=o[l]}a(null,d,u)}if(2>arguments.length)return d.nextTick(function(){a(new TypeError('Could not compact, too few arguments.'))});if('function'==typeof i&&(a=i,i={}),i=i||{},null===n)return d.nextTick(function(){a(new Ce('The compaction context must not be null.','jsonld.CompactError',{code:'invalid local context'}))});if(null===e)return d.nextTick(function(){a(null,null)});'base'in i||(i.base='string'==typeof e?e:''),'compactArrays'in i||(i.compactArrays=!0),'graph'in i||(i.graph=!1),'skipExpansion'in i||(i.skipExpansion=!1),'documentLoader'in i||(i.documentLoader=d.loadDocument),'link'in i||(i.link=!1),i.link&&(i.skipExpansion=!0);var p=function(e,n,i){return n.skipExpansion?d.nextTick(function(){i(null,e)}):void d.expand(e,n,i)};p(e,i,function(e,p){if(e)return a(new Ce('Could not expand input before compaction.','jsonld.CompactError',{cause:e}));var t=U(i);d.processContext(t,n,i,function(e,d){if(e)return a(new Ce('Could not process context before compaction.','jsonld.CompactError',{cause:e}));var n;try{n=new Le().compact(d,null,p,i)}catch(e){return a(e)}u(null,n,d,i)})})},d.expand=function(e,n,i){function a(e){'base'in n||(n.base=e.documentUrl||'');var d={document:ie(e.document),remoteContext:{"@context":e.contextUrl}};if('expandContext'in n){var a=ie(n.expandContext);d.expandContext='object'==typeof a&&'@context'in a?a:{"@context":a}}ue(d,n,function(e,d){if(e)return i(e);var a;try{var u=new Le,p=U(n),t=d.document,f=d.remoteContext['@context'];d.expandContext&&(p=u.processContext(p,d.expandContext['@context'],n)),f&&(p=u.processContext(p,f,n)),a=u.expand(p,null,t,n,!1),F(a)&&'@graph'in a&&1===Object.keys(a).length?a=a['@graph']:null===a&&(a=[]),B(a)||(a=[a])}catch(e){return i(e)}i(null,a)})}return 1>arguments.length?d.nextTick(function(){i(new TypeError('Could not expand, too few arguments.'))}):void('function'==typeof n&&(i=n,n={}),n=n||{},!('documentLoader'in n)&&(n.documentLoader=d.loadDocument),!('keepFreeFloatingNodes'in n)&&(n.keepFreeFloatingNodes=!1),d.nextTick(function(){if('string'==typeof e){var d=function(e,d){if(e)return i(e);try{if(!d.document)throw new Ce('No remote document found at the given URL.','jsonld.NullRemoteDocument');'string'==typeof d.document&&(d.document=JSON.parse(d.document))}catch(e){return i(new Ce('Could not retrieve a JSON-LD document from the URL. URL dereferencing not implemented.','jsonld.LoadDocumentError',{code:'loading document failed',cause:e,remoteDoc:d}))}a(d)},u=n.documentLoader(e,d);return void(u&&'then'in u&&u.then(d.bind(null,null),d))}a({contextUrl:null,documentUrl:null,document:e})}))},d.flatten=function(e,n,i,a){return 1>arguments.length?d.nextTick(function(){a(new TypeError('Could not flatten, too few arguments.'))}):void('function'==typeof i?(a=i,i={}):'function'==typeof n&&(a=n,n=null,i={}),i=i||{},!('base'in i)&&(i.base='string'==typeof e?e:''),!('documentLoader'in i)&&(i.documentLoader=d.loadDocument),d.expand(e,i,function(e,u){if(e)return a(new Ce('Could not expand input before flattening.','jsonld.FlattenError',{cause:e}));var p;try{p=new Le().flatten(u)}catch(e){return a(e)}return null===n?a(null,p):void(i.graph=!0,i.skipExpansion=!0,d.compact(p,n,i,function(e,d){return e?a(new Ce('Could not compact flattened output.','jsonld.FlattenError',{cause:e})):void a(null,d)}))}))},d.frame=function(e,n,i,a){function u(n){var u=n.document,p;u?(p=u['@context'],n.contextUrl?(p?B(p)?p.push(n.contextUrl):p=[p,n.contextUrl]:p=n.contextUrl,u['@context']=p):p=p||{}):p={},d.expand(e,i,function(e,n){if(e)return a(new Ce('Could not expand input before framing.','jsonld.FrameError',{cause:e}));var t=ie(i);t.isFrame=!0,t.keepFreeFloatingNodes=!0,d.expand(u,t,function(e,i){if(e)return a(new Ce('Could not expand frame before framing.','jsonld.FrameError',{cause:e}));var u;try{u=new Le().frame(n,i,t)}catch(e){return a(e)}t.graph=!0,t.skipExpansion=!0,t.link={},d.compact(u,p,t,function(e,d,n){if(e)return a(new Ce('Could not compact framed output.','jsonld.FrameError',{cause:e}));var i=E(n,'@graph');// remove @preserve from results +t.link={},d[i]=O(n,d[i],t),a(null,d)})})})}return 2>arguments.length?d.nextTick(function(){a(new TypeError('Could not frame, too few arguments.'))}):void('function'==typeof i&&(a=i,i={}),i=i||{},!('base'in i)&&(i.base='string'==typeof e?e:''),!('documentLoader'in i)&&(i.documentLoader=d.loadDocument),!('embed'in i)&&(i.embed='@last'),i.explicit=i.explicit||!1,!('requireAll'in i)&&(i.requireAll=!0),i.omitDefault=i.omitDefault||!1,d.nextTick(function(){if('string'==typeof n){var e=function(e,d){if(e)return a(e);try{if(!d.document)throw new Ce('No remote document found at the given URL.','jsonld.NullRemoteDocument');'string'==typeof d.document&&(d.document=JSON.parse(d.document))}catch(e){return a(new Ce('Could not retrieve a JSON-LD document from the URL. URL dereferencing not implemented.','jsonld.LoadDocumentError',{code:'loading document failed',cause:e,remoteDoc:d}))}u(d)},d=i.documentLoader(n,e);return void(d&&'then'in d&&d.then(e.bind(null,null),e))}u({contextUrl:null,documentUrl:null,document:n})}))},d.link=function(e,n,i,a){var u={};n&&(u['@context']=n),u['@embed']='@link',d.frame(e,u,i,a)},d.objectify=function(e,n,i,a){'function'==typeof i&&(a=i,i={}),i=i||{},'base'in i||(i.base='string'==typeof e?e:''),'documentLoader'in i||(i.documentLoader=d.loadDocument),d.expand(e,i,function(e,u){if(e)return a(new Ce('Could not expand input before linking.','jsonld.LinkError',{cause:e}));var p;try{p=new Le().flatten(u)}catch(e){return a(e)}i.graph=!0,i.skipExpansion=!0,d.compact(p,n,i,function(e,n,u){if(e)return a(new Ce('Could not compact flattened output before linking.','jsonld.LinkError',{cause:e}));var i=E(u,'@graph'),p=n[i][0],f=function(e){if(F(e)||B(e)){if(F(e)){if(f.visited[e['@id']])return;f.visited[e['@id']]=!0}for(var n in e){var a=e[n],t='@id'===d.getContextValue(u,n,'@type');if(B(a)||F(a)||t)if(z(a)&&t)e[n]=a=p[a],f(a);else if(B(a))for(var r=0;r<a.length;++r)z(a[r])&&t?a[r]=p[a[r]]:F(a[r])&&'@id'in a[r]&&(a[r]=p[a[r]['@id']]),f(a[r]);else if(F(a)){var i=a['@id'];e[n]=a=p[i],f(a)}}}};for(var r in f.visited={},f(p),n.of_type={},p)if('@type'in p[r]){var o=p[r]['@type'];B(o)||(o=[o]);for(var l=0;l<o.length;++l)o[l]in n.of_type||(n.of_type[o[l]]=[]),n.of_type[o[l]].push(p[r])}a(null,n)})})},d.normalize=function(e,n,i){if(1>arguments.length)return d.nextTick(function(){i(new TypeError('Could not normalize, too few arguments.'))});if('function'==typeof n&&(i=n,n={}),n=n||{},'algorithm'in n||(n.algorithm='URGNA2012'),'base'in n||(n.base='string'==typeof e?e:''),'documentLoader'in n||(n.documentLoader=d.loadDocument),'inputFormat'in n){if('application/nquads'!==n.inputFormat)return i(new Ce('Unknown normalization input format.','jsonld.NormalizeError'));var a=pe(e);new Le().normalize(a,n,i)}else{var u=ie(n);delete u.format,u.produceGeneralizedRdf=!1,d.toRDF(e,u,function(e,d){return e?i(new Ce('Could not convert input to RDF dataset before normalization.','jsonld.NormalizeError',{cause:e})):void new Le().normalize(d,n,i)})}},d.fromRDF=function(e,n,i){return 1>arguments.length?d.nextTick(function(){i(new TypeError('Could not convert from RDF, too few arguments.'))}):void('function'==typeof n&&(i=n,n={}),n=n||{},!('useRdfType'in n)&&(n.useRdfType=!1),!('useNativeTypes'in n)&&(n.useNativeTypes=!1),!('format'in n)&&z(e)&&!('format'in n)&&(n.format='application/nquads'),d.nextTick(function(){function d(e,d,n){new Le().fromRDF(e,d,n)}var a;if(!n.format)a=function(){return e};else if(a=n.rdfParser||he[n.format],!a)return i(new Ce('Unknown input format.','jsonld.UnknownFormat',{format:n.format}));var u=!1;try{e=a(e,function(e,a){return u=!0,e?i(e):void d(a,n,i)})}catch(d){if(!u)return i(d);throw d}if(e){if('then'in e)return e.then(function(e){d(e,n,i)},i);d(e,n,i)}}))},d.toRDF=function(e,n,i){return 1>arguments.length?d.nextTick(function(){i(new TypeError('Could not convert to RDF, too few arguments.'))}):void('function'==typeof n&&(i=n,n={}),n=n||{},!('base'in n)&&(n.base='string'==typeof e?e:''),!('documentLoader'in n)&&(n.documentLoader=d.loadDocument),d.expand(e,n,function(e,d){if(e)return i(new Ce('Could not expand input before serialization to RDF.','jsonld.RdfError',{cause:e}));var a;try{if(a=Le.prototype.toRDF(d,n),n.format){if('application/nquads'===n.format)return i(null,te(a));throw new Ce('Unknown output format.','jsonld.UnknownFormat',{format:n.format})}}catch(e){return i(e)}i(null,a)}))},d.createNodeMap=function(e,n,i){return 1>arguments.length?d.nextTick(function(){i(new TypeError('Could not create node map, too few arguments.'))}):void('function'==typeof n&&(i=n,n={}),n=n||{},!('base'in n)&&(n.base='string'==typeof e?e:''),!('documentLoader'in n)&&(n.documentLoader=d.loadDocument),d.expand(e,n,function(e,d){if(e)return i(new Ce('Could not expand input before creating node map.','jsonld.CreateNodeMapError',{cause:e}));var a;try{a=new Le().createNodeMap(d,n)}catch(e){return i(e)}i(null,a)}))},d.merge=function(e,n,a,u){function p(e,d){return r?void 0:e?(r=e,u(new Ce('Could not expand input before flattening.','jsonld.FlattenError',{cause:e}))):void(f.push(d),0==--o&&t(f))}function t(e){var p=!0;'mergeNodes'in a&&(p=a.mergeNodes);var t=a.namer||a.issuer||new oe('_:b'),f={"@default":{}},r;try{for(var o=0,i;o<e.length;++o){i=e[o],i=d.relabelBlankNodes(i,{issuer:new oe('_:b'+o+'-')});var l=p||0===o?f:{"@default":{}};if(v(i,l,'@default',t),l!==f)for(var s in l){var m=l[s];if(!(s in f)){f[s]=m;continue}var c=f[s];for(var h in m)h in c||(c[h]=m[h])}}r=b(f)}catch(e){return u(e)}for(var g=[],y=Object.keys(r).sort(),_=0,w;_<y.length;++_)w=r[y[_]],Q(w)||g.push(w);return null===n?u(null,g):void(a.graph=!0,a.skipExpansion=!0,d.compact(g,n,a,function(e,d){return e?u(new Ce('Could not compact merged output.','jsonld.MergeError',{cause:e})):void u(null,d)}))}if(1>arguments.length)return d.nextTick(function(){u(new TypeError('Could not merge, too few arguments.'))});if(!B(e))return d.nextTick(function(){u(new TypeError('Could not merge, "docs" must be an array.'))});'function'==typeof a?(u=a,a={}):'function'==typeof n&&(u=n,n=null,a={}),a=a||{};for(var f=[],r=null,o=e.length,l=0,i;l<e.length;++l){for(var s in i={},a)i[s]=a[s];d.expand(e[l],i,p)}},d.relabelBlankNodes=function(e,d){d=d||{};var n=d.namer||d.issuer||new oe('_:b');return r(n,e)},d.prependBase=function(e,d){return A(e,d)},d.documentLoader=function(e,n){var i=new Ce('Could not retrieve a JSON-LD document from the URL. URL dereferencing not implemented.','jsonld.LoadDocumentError',{code:'loading document failed'});return o?n(i,{contextUrl:null,documentUrl:e,document:null}):d.promisify(function(e){e(i)})},d.loadDocument=function(e,n){var i=d.documentLoader(e,n);i&&'then'in i&&i.then(n.bind(null,null),n)},d.promises=function(e){e=e||{};var i=Array.prototype.slice,u=d.promisify,p=e.api||{},t=e.version||'jsonld.js';'string'==typeof e.api&&(!e.version&&(t=e.api),p={}),p.expand=function(e){if(1>arguments.length)throw new TypeError('Could not expand, too few arguments.');return u.apply(null,[d.expand].concat(i.call(arguments)))},p.compact=function(e,n){if(2>arguments.length)throw new TypeError('Could not compact, too few arguments.');var a=function(e,n,i,a){'function'==typeof i&&(a=i,i={}),i=i||{},d.compact(e,n,i,function(e,d){a(e,d)})};return u.apply(null,[a].concat(i.call(arguments)))},p.flatten=function(e){if(1>arguments.length)throw new TypeError('Could not flatten, too few arguments.');return u.apply(null,[d.flatten].concat(i.call(arguments)))},p.frame=function(e,n){if(2>arguments.length)throw new TypeError('Could not frame, too few arguments.');return u.apply(null,[d.frame].concat(i.call(arguments)))},p.fromRDF=function(e){if(1>arguments.length)throw new TypeError('Could not convert from RDF, too few arguments.');return u.apply(null,[d.fromRDF].concat(i.call(arguments)))},p.toRDF=function(e){if(1>arguments.length)throw new TypeError('Could not convert to RDF, too few arguments.');return u.apply(null,[d.toRDF].concat(i.call(arguments)))},p.normalize=function(e){if(1>arguments.length)throw new TypeError('Could not normalize, too few arguments.');return u.apply(null,[d.normalize].concat(i.call(arguments)))},'jsonld.js'===t&&(p.link=function(e,n){if(2>arguments.length)throw new TypeError('Could not link, too few arguments.');return u.apply(null,[d.link].concat(i.call(arguments)))},p.objectify=function(e){return u.apply(null,[d.objectify].concat(i.call(arguments)))},p.createNodeMap=function(e){return u.apply(null,[d.createNodeMap].concat(i.call(arguments)))},p.merge=function(e){return u.apply(null,[d.merge].concat(i.call(arguments)))});try{d.Promise=a.Promise||n(147).Promise}catch(d){var r=function(){throw new Error('Unable to find a Promise implementation.')};for(var f in p)p[f]=r}return p},d.promisify=function(e){if(!d.Promise)try{d.Promise=a.Promise||n(147).Promise}catch(d){throw new Error('Unable to find a Promise implementation.')}var i=Array.prototype.slice.call(arguments,1);return new d.Promise(function(d,n){e.apply(null,i.concat(function(e,i){e?n(e):d(i)}))})},d.promises({api:d.promises}),e.prototype=d.promises({version:'json-ld-1.0'}),e.prototype.toString=function(){return this instanceof e?'[object JsonLdProcessor]':'[object JsonLdProcessorPrototype]'},d.JsonLdProcessor=e;var se=!!Object.defineProperty;if(se)try{Object.defineProperty({},'x',{})}catch(d){se=!1}se&&(Object.defineProperty(e,'prototype',{writable:!1,enumerable:!1}),Object.defineProperty(e.prototype,'constructor',{writable:!0,enumerable:!1,configurable:!0,value:e})),l&&'undefined'==typeof a.JsonLdProcessor&&(se?Object.defineProperty(a,'JsonLdProcessor',{writable:!0,enumerable:!1,configurable:!0,value:e}):a.JsonLdProcessor=e);var me='function'==typeof u&&u,ce=me?function(e){me(e)}:function(e){setTimeout(e,0)};d.nextTick='object'==typeof i&&'function'==typeof i.nextTick?i.nextTick:ce,d.setImmediate=me?ce:d.nextTick,d.parseLinkHeader=function(e){for(var d={},n=e.match(/(?:<[^>]*?>|"[^"]*?"|[^,])+/g),a=/\s*<([^>]*?)>\s*(?:;\s*(.*))?/,u=0,i;u<n.length;++u)if(i=n[u].match(a),!!i){for(var p={target:i[1]},t=i[2],f=/(.*?)=(?:(?:"([^"]*?)")|([^"]*?))\s*(?:(?:;\s*)|$)/g;i=f.exec(t);)p[i[1]]=void 0===i[2]?i[3]:i[2];var r=p.rel||'';B(d[r])?d[r].push(p):r in d?d[r]=[d[r],p]:d[r]=p}return d},d.RequestQueue=function(){this._requests={}},d.RequestQueue.prototype.wrapLoader=function(e){return this._loader=e,this._usePromise=1===e.length,this.add.bind(this)},d.RequestQueue.prototype.add=function(e,n){var a=this;if(!n&&!a._usePromise)throw new Error('callback must be specified.');return a._usePromise?new d.Promise(function(d,n){var i=a._requests[e];i||(i=a._requests[e]=a._loader(e).then(function(d){return delete a._requests[e],d}).catch(function(d){throw delete a._requests[e],d})),i.then(function(e){d(e)}).catch(function(e){n(e)})}):void(e in a._requests?a._requests[e].push(n):(a._requests[e]=[n],a._loader(e,function(d,n){var u=a._requests[e];delete a._requests[e];for(var p=0;p<u.length;++p)u[p](d,n)})))},d.DocumentCache=function(e){this.order=[],this.cache={},this.size=e||50,this.expires=30000},d.DocumentCache.prototype.get=function(e){if(e in this.cache){var d=this.cache[e];if(d.expires>=+new Date)return d.ctx;delete this.cache[e],this.order.splice(this.order.indexOf(e),1)}return null},d.DocumentCache.prototype.set=function(e,d){this.order.length===this.size&&delete this.cache[this.order.shift()],this.order.push(e),this.cache[e]={ctx:d,expires:+new Date+this.expires}},d.ActiveContextCache=function(e){this.order=[],this.cache={},this.size=e||100},d.ActiveContextCache.prototype.get=function(e,d){var n=JSON.stringify(e),i=JSON.stringify(d),a=this.cache[n];return a&&i in a?a[i]:null},d.ActiveContextCache.prototype.set=function(e,d,n){if(this.order.length===this.size){var i=this.order.shift();delete this.cache[i.activeCtx][i.localCtx]}var a=JSON.stringify(e),u=JSON.stringify(d);this.order.push({activeCtx:a,localCtx:u}),a in this.cache||(this.cache[a]={}),this.cache[a][u]=ie(n)},d.cache={activeCtx:new d.ActiveContextCache},d.documentLoaders={},d.documentLoaders.jquery=function(e,n){function i(i,a){return 0!==i.indexOf('http:')&&0!==i.indexOf('https:')?a(new Ce('URL could not be dereferenced; only "http" and "https" URLs are supported.','jsonld.InvalidUrl',{code:'loading document failed',url:i}),{contextUrl:null,documentUrl:i,document:null}):n.secure&&0!==i.indexOf('https')?a(new Ce('URL could not be dereferenced; secure mode is enabled and the URL\'s scheme is not "https".','jsonld.InvalidUrl',{code:'loading document failed',url:i}),{contextUrl:null,documentUrl:i,document:null}):void e.ajax({url:i,accepts:{json:'application/ld+json, application/json'},headers:{Accept:'application/ld+json, application/json'},dataType:'json',crossDomain:!0,success:function(e,n,u){var p={contextUrl:null,documentUrl:i,document:e},t=u.getResponseHeader('Content-Type'),f=u.getResponseHeader('Link');if(f&&'application/ld+json'!==t){if(f=d.parseLinkHeader(f)[Ee],B(f))return a(new Ce('URL could not be dereferenced, it has more than one associated HTTP Link Header.','jsonld.InvalidUrl',{code:'multiple context link headers',url:i}),p);f&&(p.contextUrl=f.target)}a(null,p)},error:function(e,d,n){a(new Ce('URL could not be dereferenced, an error occurred.','jsonld.LoadDocumentError',{code:'loading document failed',url:i,cause:n}),{contextUrl:null,documentUrl:i,document:null})}})}n=n||{};var a=new d.RequestQueue,u='usePromise'in n?n.usePromise:'undefined'!=typeof Promise;return u?a.wrapLoader(function(e){return d.promisify(i,e)}):a.wrapLoader(i)},d.documentLoaders.node=function(e){function i(n,r,o){function l(e,a,p){if(s={contextUrl:null,documentUrl:n,document:p||null},e)return o(new Ce('URL could not be dereferenced, an error occurred.','jsonld.LoadDocumentError',{code:'loading document failed',url:n,cause:e}),s);var t=f.STATUS_CODES[a.statusCode];if(400<=a.statusCode)return o(new Ce('URL could not be dereferenced: '+t,'jsonld.InvalidUrl',{code:'loading document failed',url:n,httpStatusCode:a.statusCode}),s);if(a.headers.link&&'application/ld+json'!==a.headers['content-type']){var l=d.parseLinkHeader(a.headers.link)[Ee];if(B(l))return o(new Ce('URL could not be dereferenced, it has more than one associated HTTP Link Header.','jsonld.InvalidUrl',{code:'multiple context link headers',url:n}),s);l&&(s.contextUrl=l.target)}return 300<=a.statusCode&&400>a.statusCode&&a.headers.location?r.length===u?o(new Ce('URL could not be dereferenced; there were too many redirects.','jsonld.TooManyRedirects',{code:'loading document failed',url:n,httpStatusCode:a.statusCode,redirects:r}),s):-1===r.indexOf(n)?(r.push(n),i(a.headers.location,r,o)):o(new Ce('URL could not be dereferenced; infinite redirection was detected.','jsonld.InfiniteRedirectDetected',{code:'recursive context inclusion',url:n,httpStatusCode:a.statusCode,redirects:r}),s):void(r.push(n),o(e,s))}if(0!==n.indexOf('http:')&&0!==n.indexOf('https:'))return o(new Ce('URL could not be dereferenced; only "http" and "https" URLs are supported.','jsonld.InvalidUrl',{code:'loading document failed',url:n}),{contextUrl:null,documentUrl:n,document:null});if(e.secure&&0!==n.indexOf('https'))return o(new Ce('URL could not be dereferenced; secure mode is enabled and the URL\'s scheme is not "https".','jsonld.InvalidUrl',{code:'loading document failed',url:n}),{contextUrl:null,documentUrl:n,document:null});var s=null;if(null!=s)return o(null,s);var m={Accept:t};for(var c in e.headers)m[c]=e.headers[c];p({url:n,headers:m,strictSSL:a,followRedirect:!1},l)}e=e||{};var a=!('strictSSL'in e)||e.strictSSL,u='maxRedirects'in e?e.maxRedirects:-1,p='request'in e?e.request:n(32),t='application/ld+json, application/json',f=n(32),r=new d.RequestQueue;if(e.usePromise)return r.wrapLoader(function(e){return d.promisify(i,e,[])});var o=e.headers||{};if('Accept'in o||'accept'in o)throw new RangeError('Accept header may not be specified as an option; only "'+t+'" is supported.');return r.wrapLoader(function(e,d){i(e,[],d)})},d.documentLoaders.xhr=function(e){function n(n,a){if(0!==n.indexOf('http:')&&0!==n.indexOf('https:'))return a(new Ce('URL could not be dereferenced; only "http" and "https" URLs are supported.','jsonld.InvalidUrl',{code:'loading document failed',url:n}),{contextUrl:null,documentUrl:n,document:null});if(e.secure&&0!==n.indexOf('https'))return a(new Ce('URL could not be dereferenced; secure mode is enabled and the URL\'s scheme is not "https".','jsonld.InvalidUrl',{code:'loading document failed',url:n}),{contextUrl:null,documentUrl:n,document:null});var u=e.xhr||XMLHttpRequest,p=new u;p.onload=function(){if(400<=p.status)return a(new Ce('URL could not be dereferenced: '+p.statusText,'jsonld.LoadDocumentError',{code:'loading document failed',url:n,httpStatusCode:p.status}),{contextUrl:null,documentUrl:n,document:null});var e={contextUrl:null,documentUrl:n,document:p.response},u=p.getResponseHeader('Content-Type'),t;if(i.test(p.getAllResponseHeaders())&&(t=p.getResponseHeader('Link')),t&&'application/ld+json'!==u){if(t=d.parseLinkHeader(t)[Ee],B(t))return a(new Ce('URL could not be dereferenced, it has more than one associated HTTP Link Header.','jsonld.InvalidUrl',{code:'multiple context link headers',url:n}),e);t&&(e.contextUrl=t.target)}a(null,e)},p.onerror=function(){a(new Ce('URL could not be dereferenced, an error occurred.','jsonld.LoadDocumentError',{code:'loading document failed',url:n}),{contextUrl:null,documentUrl:n,document:null})},p.open('GET',n,!0),p.setRequestHeader('Accept','application/ld+json, application/json'),p.send()}e=e||{};var i=/(^|(\r\n))link:/i,a=new d.RequestQueue,u='usePromise'in e?e.usePromise:'undefined'!=typeof Promise;return u?a.wrapLoader(function(e){return d.promisify(n,e)}):a.wrapLoader(n)},d.useDocumentLoader=function(e){if(!(e in d.documentLoaders))throw new Ce('Unknown document loader type: "'+e+'"','jsonld.UnknownDocumentLoader',{type:e});d.documentLoader=d.documentLoaders[e].apply(d,Array.prototype.slice.call(arguments,1))},d.processContext=function(e,n){var i={},a=2;3<arguments.length&&(i=arguments[2]||{},a+=1);var u=arguments[a];return'base'in i||(i.base=''),'documentLoader'in i||(i.documentLoader=d.loadDocument),null===n?u(null,U(i)):void(n=ie(n),!(F(n)&&'@context'in n)&&(n={"@context":n}),ue(n,i,function(d,n){if(d)return u(d);try{n=new Le().processContext(e,n,i)}catch(e){return u(e)}u(null,n)}))},d.hasProperty=function(e,d){var n=!1;if(d in e){var i=e[d];n=!B(i)||0<i.length}return n},d.hasValue=function(e,n,a){var u=!1;if(d.hasProperty(e,n)){var p=e[n],t=ee(p);if(B(p)||t){t&&(p=p['@list']);for(var f=0;f<p.length;++f)if(d.compareValues(a,p[f])){u=!0;break}}else B(a)||(u=d.compareValues(a,p))}return u},d.addValue=function(e,n,a,u){if(u=u||{},'propertyIsArray'in u||(u.propertyIsArray=!1),'allowDuplicate'in u||(u.allowDuplicate=!0),B(a)){0===a.length&&u.propertyIsArray&&!(n in e)&&(e[n]=[]);for(var p=0;p<a.length;++p)d.addValue(e,n,a[p],u)}else if(n in e){var i=!u.allowDuplicate&&d.hasValue(e,n,a);B(e[n])||i&&!u.propertyIsArray||(e[n]=[e[n]]),i||e[n].push(a)}else e[n]=u.propertyIsArray?[a]:a},d.getValues=function(e,d){var n=e[d]||[];return B(n)||(n=[n]),n},d.removeProperty=function(e,d){delete e[d]},d.removeValue=function(e,n,i,a){a=a||{},'propertyIsArray'in a||(a.propertyIsArray=!1);var u=d.getValues(e,n).filter(function(n){return!d.compareValues(n,i)});0===u.length?d.removeProperty(e,n):1!==u.length||a.propertyIsArray?e[n]=u:e[n]=u[0]},d.compareValues=function(e,d){return e===d||Z(e)&&Z(d)&&e['@value']===d['@value']&&e['@type']===d['@type']&&e['@language']===d['@language']&&e['@index']===d['@index']||F(e)&&'@id'in e&&F(d)&&'@id'in d&&e['@id']===d['@id']},d.getContextValue=function(e,d,n){var i=null;if(null===d)return i;if('@language'===n&&n in e&&(i=e[n]),e.mappings[d]){var a=e.mappings[d];Y(n)?i=a:n in a&&(i=a[n])}return i};var he={};if(d.registerRDFParser=function(e,d){he[e]=d},d.unregisterRDFParser=function(e){delete he[e]},o){if('undefined'==typeof ge)var ge=null;if('undefined'==typeof ye)var ye={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12}}var ve='http://www.w3.org/2001/XMLSchema#boolean',be='http://www.w3.org/2001/XMLSchema#double',_e='http://www.w3.org/2001/XMLSchema#integer',we='http://www.w3.org/2001/XMLSchema#string',xe='http://www.w3.org/1999/02/22-rdf-syntax-ns#',ke=xe+'List',Se=xe+'first',Te=xe+'rest',Ne=xe+'nil',Ie=xe+'type',je=xe+'PlainLiteral',Oe=xe+'XMLLiteral',Re=xe+'object',De=xe+'langString',Ee='http://www.w3.org/ns/json-ld#context',Pe=10,Ce=function(e,d,n){o?(Error.call(this),Error.captureStackTrace(this,this.constructor)):'undefined'!=typeof Error&&(this.stack=new Error().stack),this.name=d||'jsonld.Error',this.message=e||'An unspecified JSON-LD error occurred.',this.details=n||{}};o?n(32).inherits(Ce,Error):'undefined'!=typeof Error&&(Ce.prototype=new Error);var Le=function(){};Le.prototype.compact=function(e,n,a,u){if(B(a)){for(var p=[],t=0,i;t<a.length;++t)i=this.compact(e,n,a[t],u),null!==i&&p.push(i);if(u.compactArrays&&1===p.length){var f=d.getContextValue(e,n,'@container');null===f&&(p=p[0])}return p}if(F(a)){if(u.link&&'@id'in a&&a['@id']in u.link)for(var r=u.link[a['@id']],t=0;t<r.length;++t)if(r[t].expanded===a)return r[t].compacted;if(Z(a)||Q(a)){var p=P(e,n,a);return u.link&&Q(a)&&(!(a['@id']in u.link)&&(u.link[a['@id']]=[]),u.link[a['@id']].push({expanded:a,compacted:p})),p}var o='@reverse'===n,p={};u.link&&'@id'in a&&(!(a['@id']in u.link)&&(u.link[a['@id']]=[]),u.link[a['@id']].push({expanded:a,compacted:p}));for(var l=Object.keys(a).sort(),s=0;s<l.length;++s){var m=l[s],c=a[m];if('@id'===m||'@type'===m){var h;if(z(c))h=E(e,c,null,{vocab:'@type'===m});else{h=[];for(var g=0;g<c.length;++g)h.push(E(e,c[g],null,{vocab:!0}))}var y=E(e,m),v=B(h)&&0===c.length;d.addValue(p,y,h,{propertyIsArray:v});continue}if('@reverse'===m){var h=this.compact(e,'@reverse',c,u);for(var b in h)if(e.mappings[b]&&e.mappings[b].reverse){var _=h[b],f=d.getContextValue(e,b,'@container'),w='@set'===f||!u.compactArrays;d.addValue(p,b,_,{propertyIsArray:w}),delete h[b]}if(0<Object.keys(h).length){var y=E(e,m);d.addValue(p,y,h)}continue}if('@index'===m){var f=d.getContextValue(e,n,'@container');if('@index'===f)continue;var y=E(e,m);d.addValue(p,y,c);continue}if('@graph'!==m&&'@list'!==m&&M(m)){var y=E(e,m);d.addValue(p,y,c);continue}if(0===c.length){var x=E(e,m,c,{vocab:!0},o);d.addValue(p,x,c,{propertyIsArray:!0})}for(var g=0;g<c.length;++g){var k=c[g],x=E(e,m,k,{vocab:!0},o),f=d.getContextValue(e,x,'@container'),S=ee(k),T=null;S&&(T=k['@list']);var N=this.compact(e,x,S?T:k,u);if(S)if(B(N)||(N=[N]),'@list'!==f){var I={};I[E(e,'@list')]=N,N=I,'@index'in k&&(N[E(e,'@index')]=k['@index'])}else if(x in p)throw new Ce('JSON-LD compact error; property has a "@list" @container rule but there is more than a single @list that matches the compacted term in the document. Compaction might mix unwanted items into the list.','jsonld.SyntaxError',{code:'compaction to list of lists'});if('@language'===f||'@index'===f){var j;x in p?j=p[x]:p[x]=j={},'@language'===f&&Z(N)&&(N=N['@value']),d.addValue(j,k[f],N)}else{var v=!u.compactArrays||'@set'===f||'@list'===f||B(N)&&0===N.length||'@list'===m||'@graph'===m;d.addValue(p,x,N,{propertyIsArray:v})}}}return p}return a},Le.prototype.expand=function(n,a,u,p,f){var r=this;if(null===u||void 0===u)return null;if(!B(u)&&!F(u))return f||null!==a&&'@graph'!==L(n,a,{vocab:!0})?s(n,a,u):null;if(B(u)){var o=[],l=d.getContextValue(n,a,'@container');f=f||'@list'===l;for(var m=0,i;m<u.length;++m){if(i=r.expand(n,a,u[m],p),f&&(B(i)||ee(i)))throw new Ce('Invalid JSON-LD syntax; lists of lists are not permitted.','jsonld.SyntaxError',{code:'list of lists'});null!==i&&(B(i)?o=o.concat(i):o.push(i))}return o}'@context'in u&&(n=r.processContext(n,u['@context'],p));for(var e=L(n,a,{vocab:!0}),o={},c=Object.keys(u).sort(),h=0;h<c.length;++h){var g=c[h],y=u[g],v;if('@context'!==g){var b=L(n,g,{vocab:!0});if(null!==b&&(ne(b)||M(b))){if(M(b)){if('@reverse'===e)throw new Ce('Invalid JSON-LD syntax; a keyword cannot be used as a @reverse property.','jsonld.SyntaxError',{code:'invalid reverse property map',value:y});if(b in o)throw new Ce('Invalid JSON-LD syntax; colliding keywords detected.','jsonld.SyntaxError',{code:'colliding keywords',keyword:b})}if('@id'===b&&!z(y)){if(!p.isFrame)throw new Ce('Invalid JSON-LD syntax; "@id" value must a string.','jsonld.SyntaxError',{code:'invalid @id value',value:y});if(!F(y))throw new Ce('Invalid JSON-LD syntax; "@id" value must be a string or an object.','jsonld.SyntaxError',{code:'invalid @id value',value:y})}if('@type'===b&&H(y),'@graph'===b&&!(F(y)||B(y)))throw new Ce('Invalid JSON-LD syntax; "@graph" value must not be an object or an array.','jsonld.SyntaxError',{code:'invalid @graph value',value:y});if('@value'===b&&(F(y)||B(y)))throw new Ce('Invalid JSON-LD syntax; "@value" value must not be an object or an array.','jsonld.SyntaxError',{code:'invalid value object value',value:y});if('@language'===b){if(null===y)continue;if(!z(y))throw new Ce('Invalid JSON-LD syntax; "@language" value must be a string.','jsonld.SyntaxError',{code:'invalid language-tagged string',value:y});y=y.toLowerCase()}if('@index'===b&&!z(y))throw new Ce('Invalid JSON-LD syntax; "@index" value must be a string.','jsonld.SyntaxError',{code:'invalid @index value',value:y});if('@reverse'===b){if(!F(y))throw new Ce('Invalid JSON-LD syntax; "@reverse" value must be an object.','jsonld.SyntaxError',{code:'invalid @reverse value',value:y});if(v=r.expand(n,'@reverse',y,p),'@reverse'in v)for(var _ in v['@reverse'])d.addValue(o,_,v['@reverse'][_],{propertyIsArray:!0});var w=o['@reverse']||null;for(var _ in v)if('@reverse'!=_){null===w&&(w=o['@reverse']={}),d.addValue(w,_,[],{propertyIsArray:!0});for(var x=v[_],k=0,S;k<x.length;++k){if(S=x[k],Z(S)||ee(S))throw new Ce('Invalid JSON-LD syntax; "@reverse" value must not be a @value or an @list.','jsonld.SyntaxError',{code:'invalid reverse property value',value:v});d.addValue(w,_,S,{propertyIsArray:!0})}}continue}var l=d.getContextValue(n,g,'@container');if('@language'===l&&F(y))v=t(y);else if('@index'===l&&F(y))v=function e(d){for(var i=[],a=Object.keys(y).sort(),u=0;u<a.length;++u){var t=a[u],f=y[t];B(f)||(f=[f]),f=r.expand(n,d,f,p,!1);for(var o=0,l;o<f.length;++o)l=f[o],'@index'in l||(l['@index']=t),i.push(l)}return i}(g);else{var T='@list'===b;if(T||'@set'===b){var N=a;if(T&&'@graph'===e&&(N=null),v=r.expand(n,N,y,p,T),T&&ee(v))throw new Ce('Invalid JSON-LD syntax; lists of lists are not permitted.','jsonld.SyntaxError',{code:'list of lists'})}else v=r.expand(n,g,y,p,!1)}if(null!==v||'@value'===b){if('@list'===b||ee(v)||'@list'!==l||(v=B(v)?v:[v],v={"@list":v}),n.mappings[g]&&n.mappings[g].reverse){var w=o['@reverse']=o['@reverse']||{};B(v)||(v=[v]);for(var k=0,S;k<v.length;++k){if(S=v[k],Z(S)||ee(S))throw new Ce('Invalid JSON-LD syntax; "@reverse" value must not be a @value or an @list.','jsonld.SyntaxError',{code:'invalid reverse property value',value:v});d.addValue(w,b,S,{propertyIsArray:!0})}continue}var I=-1===['@index','@id','@type','@value','@language'].indexOf(b);d.addValue(o,b,v,{propertyIsArray:I})}}}}c=Object.keys(o);var j=c.length;if('@value'in o){if('@type'in o&&'@language'in o)throw new Ce('Invalid JSON-LD syntax; an element containing "@value" may not contain both "@type" and "@language".','jsonld.SyntaxError',{code:'invalid value object',element:o});var O=j-1;if('@type'in o&&(O-=1),'@index'in o&&(O-=1),'@language'in o&&(O-=1),0!=O)throw new Ce('Invalid JSON-LD syntax; an element containing "@value" may only have an "@index" property and at most one other property which can be "@type" or "@language".','jsonld.SyntaxError',{code:'invalid value object',element:o});if(null===o['@value'])o=null;else if('@language'in o&&!z(o['@value']))throw new Ce('Invalid JSON-LD syntax; only strings may be language-tagged.','jsonld.SyntaxError',{code:'invalid language-tagged value',element:o});else if('@type'in o&&(!ne(o['@type'])||0===o['@type'].indexOf('_:')))throw new Ce('Invalid JSON-LD syntax; an element containing "@value" and "@type" must have an absolute IRI for the value of "@type".','jsonld.SyntaxError',{code:'invalid typed value',element:o})}else if('@type'in o&&!B(o['@type']))o['@type']=[o['@type']];else if('@set'in o||'@list'in o){if(1<j&&!(2===j&&'@index'in o))throw new Ce('Invalid JSON-LD syntax; if an element has the property "@set" or "@list", then it can have at most one other property that is "@index".','jsonld.SyntaxError',{code:'invalid set or list object',element:o});'@set'in o&&(o=o['@set'],c=Object.keys(o),j=c.length)}else 1===j&&'@language'in o&&(o=null);return F(o)&&!p.keepFreeFloatingNodes&&!f&&(null===a||'@graph'===e)&&(0===j||'@value'in o||'@list'in o||1===j&&'@id'in o)&&(o=null),o},Le.prototype.createNodeMap=function(e,d){d=d||{};var n=d.namer||d.issuer||new oe('_:b'),i={"@default":{}};return v(e,i,'@default',n),b(i)},Le.prototype.flatten=function(e){for(var d=this.createNodeMap(e),n=[],i=Object.keys(d).sort(),a=0,u;a<i.length;++a)u=d[i[a]],Q(u)||n.push(u);return n},Le.prototype.frame=function(e,d,n){var i={options:n,graphs:{"@default":{},"@merged":{}},subjectStack:[],link:{}},a=new oe('_:b');v(e,i.graphs,'@merged',a),i.subjects=i.graphs['@merged'];var u=[];return _(i,Object.keys(i.subjects).sort(),d,u,null),u},Le.prototype.normalize=function(e,d,n){return'URDNA2015'===d.algorithm?new Ae(d).main(e,n):'URGNA2012'===d.algorithm?new Ve(d).main(e,n):void n(new Error('Invalid RDF Dataset Normalization algorithm: '+d.algorithm))},Le.prototype.fromRDF=function(e,n,a){var u={},t={"@default":u},f={};for(var r in e){var l=e[r];r in t||(t[r]={}),'@default'==r||r in u||(u[r]={"@id":r});for(var m=t[r],c=0;c<l.length;++c){var h=l[c],y=h.subject.value,v=h.predicate.value,b=h.object;y in m||(m[y]={"@id":y});var o=m[y],_='IRI'===b.type||'blank node'===b.type;if(_&&!(b.value in m)&&(m[b.value]={"@id":b.value}),v===Ie&&!n.useRdfType&&_){d.addValue(o,'@type',b.value,{propertyIsArray:!0});continue}var w=g(b,n.useNativeTypes);if(d.addValue(o,v,w,{propertyIsArray:!0}),_)if(b.value===Ne){var x=m[b.value];'usages'in x||(x.usages=[]),x.usages.push({node:o,property:v,value:w})}else f[b.value]=!(b.value in f)&&{node:o,property:v,value:w}}}for(var r in t){var k=t[r];if(Ne in k){for(var S=k[Ne],T=0;T<S.usages.length;++T){for(var i=S.usages[T],o=i.node,N=i.property,I=i.value,O=[],R=[],D=Object.keys(o).length;N===Te&&F(f[o['@id']])&&B(o[Se])&&1===o[Se].length&&B(o[Te])&&1===o[Te].length&&(3===D||4===D&&B(o['@type'])&&1===o['@type'].length&&o['@type'][0]===ke)&&(O.push(o[Se][0]),R.push(o['@id']),i=f[o['@id']],o=i.node,N=i.property,I=i.value,D=Object.keys(o).length,0===o['@id'].indexOf('_:')););if(N===Se){if(o['@id']===Ne)continue;I=k[I['@id']][Te][0],O.pop(),R.pop()}delete I['@id'],I['@list']=O.reverse();for(var E=0;E<R.length;++E)delete k[R[E]]}delete S.usages}}for(var j=[],P=Object.keys(u).sort(),T=0;T<P.length;++T){var C=P[T],o=u[C];if(C in t)for(var l=o['@graph']=[],k=t[C],L=Object.keys(k).sort(),A=0,V;A<L.length;++A)V=k[L[A]],Q(V)||l.push(V);Q(o)||j.push(o)}a(null,j)},Le.prototype.toRDF=function(e,d){var n=new oe('_:b'),a={"@default":{}};v(e,a,'@default',n);for(var u={},p=Object.keys(a).sort(),t=0,i;t<p.length;++t)i=p[t],('@default'===i||ne(i))&&(u[i]=m(a[i],n,d));return u},Le.prototype.processContext=function(e,n,a){F(n)&&'@context'in n&&B(n['@context'])&&(n=n['@context']);var u=B(n)?n:[n];if(0===u.length)return e.clone();for(var p=e,t=0,i;t<u.length;++t){if(i=u[t],null===i){p=e=U(a);continue}if(F(i)&&'@context'in i&&(i=i['@context']),!F(i))throw new Ce('Invalid JSON-LD syntax; @context must be an object.','jsonld.SyntaxError',{code:'invalid local context',context:i});if(d.cache.activeCtx){var f=d.cache.activeCtx.get(e,i);if(f){p=e=f;continue}}e=p,p=p.clone();var r={};if('@base'in i){var o=i['@base'];if(null===o)o=null;else if(!z(o))throw new Ce('Invalid JSON-LD syntax; the value of "@base" in a @context must be a string or null.','jsonld.SyntaxError',{code:'invalid base IRI',context:i});else if(''!==o&&!ne(o))throw new Ce('Invalid JSON-LD syntax; the value of "@base" in a @context must be an absolute IRI or the empty string.','jsonld.SyntaxError',{code:'invalid base IRI',context:i});null!==o&&(o=d.url.parse(o||'')),p['@base']=o,r['@base']=!0}if('@vocab'in i){var l=i['@vocab'];if(null===l)delete p['@vocab'];else if(!z(l))throw new Ce('Invalid JSON-LD syntax; the value of "@vocab" in a @context must be a string or null.','jsonld.SyntaxError',{code:'invalid vocab mapping',context:i});else if(!ne(l))throw new Ce('Invalid JSON-LD syntax; the value of "@vocab" in a @context must be an absolute IRI.','jsonld.SyntaxError',{code:'invalid vocab mapping',context:i});else p['@vocab']=l;r['@vocab']=!0}if('@language'in i){var l=i['@language'];if(null===l)delete p['@language'];else if(!z(l))throw new Ce('Invalid JSON-LD syntax; the value of "@language" in a @context must be a string or null.','jsonld.SyntaxError',{code:'invalid default language',context:i});else p['@language']=l.toLowerCase();r['@language']=!0}for(var s in i)C(p,i,s,r);d.cache.activeCtx&&d.cache.activeCtx.set(e,i,p)}return p};var Ae=function(){var e={subject:'s',object:'o',name:'g'},n=function(e){e=e||{},this.name='URDNA2015',this.options=e,this.blankNodeInfo={},this.hashToBlankNodes={},this.canonicalIssuer=new oe('_:c14n'),this.quads=[],this.schedule={},this.schedule.MAX_DEPTH='maxCallStackDepth'in e?e.maxCallStackDepth:500,this.schedule.MAX_TOTAL_DEPTH='maxTotalCallStackDepth'in e?e.maxCallStackDepth:4294967295,this.schedule.depth=0,this.schedule.totalDepth=0,this.schedule.timeSlice='timeSlice'in e?e.timeSlice:10};return n.prototype.doWork=function(e,n){var i=this.schedule;return i.totalDepth>=i.MAX_TOTAL_DEPTH?n(new Error('Maximum total call stack depth exceeded; normalization aborting.')):void function a(){if(i.depth===i.MAX_DEPTH)return i.depth=0,i.running=!1,d.nextTick(a);var u=new Date().getTime();return i.running||(i.start=new Date().getTime(),i.deadline=i.start+i.timeSlice),u<i.deadline?(i.running=!0,i.depth++,i.totalDepth++,e(function(e,d){i.depth--,i.totalDepth--,n(e,d)})):void(i.depth=0,i.running=!1,d.setImmediate(a))}()},n.prototype.forEach=function(e,d,n){var i=this,a=0,u,p;if(B(e))p=e.length,u=function(){return a!==p&&(u.value=e[a++],u.key=a,!0)};else{var t=Object.keys(e);p=t.length,u=function(){return a!==p&&(u.key=t[a++],u.value=e[u.key],!0)}}(function e(a,p){return a?n(a):u()?i.doWork(function(){d(u.value,u.key,e)}):void n()})()},n.prototype.waterfall=function(e,d){var n=this;n.forEach(e,function(e,d,i){n.doWork(e,i)},d)},n.prototype.whilst=function(e,d,n){var i=this;(function a(u){return u?n(u):e()?void i.doWork(d,a):n()})()},n.prototype.main=function(e,d){var n=this;n.schedule.start=new Date().getTime();var i;if(n.options.format&&'application/nquads'!==n.options.format)return d(new Ce('Unknown output format.','jsonld.UnknownFormat',{format:n.options.format}));var a={};n.waterfall([function(d){n.forEach(e,function(e,d,i){'@default'===d&&(d=null),n.forEach(e,function(e,i,u){null!==d&&(0===d.indexOf('_:')?e.name={type:'blank node',value:d}:e.name={type:'IRI',value:d}),n.quads.push(e),n.forEachComponent(e,function(d){if('blank node'===d.type){var i=d.value;i in n.blankNodeInfo?n.blankNodeInfo[i].quads.push(e):(a[i]=!0,n.blankNodeInfo[i]={quads:[e]})}}),u()},i)},d)},function(e){var d=!0;n.whilst(function(){return d},function(e){d=!1,n.hashToBlankNodes={},n.waterfall([function(e){n.forEach(a,function(e,d,i){n.hashFirstDegreeQuads(d,function(e,a){return e?i(e):void(a in n.hashToBlankNodes?n.hashToBlankNodes[a].push(d):n.hashToBlankNodes[a]=[d],i())})},e)},function(e){var i=Object.keys(n.hashToBlankNodes).sort();n.forEach(i,function(e,u,i){var p=n.hashToBlankNodes[e];if(1<p.length)return i();var t=p[0];n.canonicalIssuer.getId(t),delete a[t],delete n.hashToBlankNodes[e],d=!0,i()},e)}],e)},e)},function(e){var d=Object.keys(n.hashToBlankNodes).sort();n.forEach(d,function(e,d,i){var a=[],u=n.hashToBlankNodes[e];n.waterfall([function(e){n.forEach(u,function(e,d,i){if(n.canonicalIssuer.hasId(e))return i();var u=new oe('_:b');u.getId(e),n.hashNDegreeQuads(e,u,function(e,d){return e?i(e):void(a.push(d),i())})},e)},function(e){a.sort(function(e,d){return e.hash<d.hash?-1:e.hash>d.hash?1:0}),n.forEach(a,function(e,d,i){for(var a in e.issuer.existing)n.canonicalIssuer.getId(a);i()},e)}],i)},e)},function(e){var d=[];n.waterfall([function(e){n.forEach(n.quads,function(e,i,a){n.forEachComponent(e,function(e){'blank node'===e.type&&0!==e.value.indexOf(n.canonicalIssuer.prefix)&&(e.value=n.canonicalIssuer.getId(e.value))}),d.push(fe(e)),a()},e)},function(e){return d.sort(),'application/nquads'===n.options.format?(i=d.join(''),e()):void(i=pe(d.join('')),e())}],e)}],function(e){d(e,i)})},n.prototype.hashFirstDegreeQuads=function(e,d){var n=this,i=n.blankNodeInfo[e];if('hash'in i)return d(null,i.hash);var a=[],u=i.quads;n.forEach(u,function(d,i,u){var p={predicate:d.predicate};n.forEachComponent(d,function(d,i){p[i]=n.modifyFirstDegreeComponent(e,d,i)}),a.push(fe(p)),u()},function(e){return e?d(e):void(a.sort(),i.hash=Me.hashNQuads(n.name,a),d(null,i.hash))})},n.prototype.modifyFirstDegreeComponent=function(e,d){return'blank node'===d.type?(d=ie(d),d.value=d.value===e?'_:a':'_:z',d):d},n.prototype.hashRelatedBlankNode=function(e,d,n,i,a){var u=this,p;u.waterfall([function(d){return u.canonicalIssuer.hasId(e)?(p=u.canonicalIssuer.getId(e),d()):n.hasId(e)?(p=n.getId(e),d()):void u.hashFirstDegreeQuads(e,function(e,n){return e?d(e):void(p=n,d())})}],function(e){if(e)return a(e);var n=new Me(u.name);return n.update(i),'g'!==i&&n.update(u.getRelatedPredicate(d)),n.update(p),a(null,n.digest())})},n.prototype.getRelatedPredicate=function(e){return'<'+e.predicate.value+'>'},n.prototype.hashNDegreeQuads=function(e,d,n){var i=this,a=new Me(i.name),u;i.waterfall([function(n){i.createHashToRelated(e,d,function(e,d){return e?n(e):void(u=d,n())})},function(e){var n=Object.keys(u).sort();i.forEach(n,function(e,n,p){a.update(e);var t='',f=new Ue(u[e]),r;i.whilst(function(){return f.hasNext()},function(e){var n=f.next(),a=d.clone(),u='',p=[];i.waterfall([function(d){i.forEach(n,function(d,n,f){return i.canonicalIssuer.hasId(d)?u+=i.canonicalIssuer.getId(d):(!a.hasId(d)&&p.push(d),u+=a.getId(d)),0!==t.length&&u.length>=t.length&&u>t?e():void f()},d)},function(d){i.forEach(p,function(d,n,p){i.hashNDegreeQuads(d,a,function(n,i){return n?p(n):(u+=a.getId(d),u+='<'+i.hash+'>',a=i.issuer,0!==t.length&&u.length>=t.length&&u>t?e():void p())})},d)},function(e){(0===t.length||u<t)&&(t=u,r=a),e()}],e)},function(e){return e?p(e):void(a.update(t),d=r,p())})},e)}],function(e){n(e,{hash:a.digest(),issuer:d})})},n.prototype.createHashToRelated=function(d,n,i){var a=this,u={},p=a.blankNodeInfo[d].quads;a.forEach(p,function(i,p,t){a.forEach(i,function(p,t,f){if('predicate'===t||'blank node'!==p.type||p.value===d)return f();var r=p.value,o=e[t];a.hashRelatedBlankNode(r,i,n,o,function(e,d){return e?f(e):void(d in u?u[d].push(r):u[d]=[r],f())})},t)},function(e){i(e,u)})},n.prototype.forEachComponent=function(e,d){for(var n in e)'predicate'!=n&&d(e[n],n,e)},n}(),Ve=function(){var e=function(e){Ae.call(this,e),this.name='URGNA2012'};return e.prototype=new Ae,e.prototype.modifyFirstDegreeComponent=function(e,d,n){return'blank node'===d.type?(d=ie(d),d.value='name'===n?'_:g':d.value===e?'_:a':'_:z',d):d},e.prototype.getRelatedPredicate=function(e){return e.predicate.value},e.prototype.createHashToRelated=function(e,d,n){var i=this,a={},u=i.blankNodeInfo[e].quads;i.forEach(u,function(n,u,p){var t,f;if('blank node'===n.subject.type&&n.subject.value!==e)f=n.subject.value,t='p';else if('blank node'===n.object.type&&n.object.value!==e)f=n.object.value,t='r';else return p();i.hashRelatedBlankNode(f,n,d,t,function(e,d){d in a?a[d].push(f):a[d]=[f],p()})},function(e){n(e,a)})},e}();Object.keys||(Object.keys=function(e){if(e!==Object(e))throw new TypeError('Object.keys called on non-object');var d=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&d.push(n);return d}),d.registerRDFParser('application/nquads',pe),d.registerRDFParser('rdfa-api',re),d.IdentifierIssuer=oe,d.UniqueNamer=oe,oe.prototype.clone=function(){var e=new oe(this.prefix);return e.counter=this.counter,e.existing=ie(this.existing),e},oe.prototype.getId=function(e){if(e&&e in this.existing)return this.existing[e];var d=this.prefix+this.counter;return this.counter+=1,e&&(this.existing[e]=d),d},oe.prototype.getName=oe.prototype.getName,oe.prototype.hasId=function(e){return e in this.existing},oe.prototype.isNamed=oe.prototype.hasId;var Ue=function(e){this.list=e.sort(),this.done=!1,this.left={};for(var d=0;d<e.length;++d)this.left[e[d]]=!0};Ue.prototype.hasNext=function(){return!this.done},Ue.prototype.next=function(){for(var e=this.list.slice(),d=null,n=0,a=this.list.length,u=0;u<a;++u){var i=this.list[u],p=this.left[i];(null==d||i>d)&&(p&&0<u&&i>this.list[u-1]||!p&&u<a-1&&i>this.list[u+1])&&(d=i,n=u)}if(null===d)this.done=!0;else{var t=this.left[d]?n-1:n+1;this.list[n]=this.list[t],this.list[t]=d;for(var u=0;u<a;++u)this.list[u]>d&&(this.left[this.list[u]]=!this.left[this.list[u]])}return e};var Me=function(e){if(!(this instanceof Me))return new Me(e);if(-1===['URDNA2015','URGNA2012'].indexOf(e))throw new Error('Invalid RDF Dataset Normalization algorithm: '+e);Me._init.call(this,e)};if(Me.hashNQuads=function(e,d){for(var n=new Me(e),a=0;a<d.length;++a)n.update(d[a]);return n.digest()},function(e){if(e){var d=n(32);return Me._init=function(e){e='URDNA2015'===e?'sha256':'sha1',this.md=d.createHash(e)},Me.prototype.update=function(e){return this.md.update(e,'utf8')},void(Me.prototype.digest=function(){return this.md.digest('hex')})}Me._init=function(e){e='URDNA2015'===e?new p.Algorithm:new u.Algorithm,this.md=new a(e)},Me.prototype.update=function(e){return this.md.update(e)},Me.prototype.digest=function(){return this.md.digest().toHex()};var a=function(e){if(!(this instanceof a))return new a(e);if(this._algorithm=e,!a._padding||a._padding.length<this._algorithm.blockSize){a._padding='\x80';for(var d='\0',i=64;0<i;)1&i&&(a._padding+=d),i>>>=1,0<i&&(d+=d)}this.start()};a.prototype.start=function(){this.messageLength=0,this.fullMessageLength=[];for(var e=this._algorithm.messageLengthSize/4,d=0;d<e;++d)this.fullMessageLength.push(0);return this._input=new a.ByteBuffer,this.state=this._algorithm.start(),this},a.prototype.update=function(e){e=new a.ByteBuffer(unescape(encodeURIComponent(e))),this.messageLength+=e.length();var d=e.length();d=[d/4294967296>>>0,d>>>0];for(var n=this.fullMessageLength.length-1;0<=n;--n)this.fullMessageLength[n]+=d[1],d[1]=d[0]+(this.fullMessageLength[n]/4294967296>>>0),this.fullMessageLength[n]>>>=0,d[0]=d[1]/4294967296>>>0;for(this._input.putBytes(e.bytes());this._input.length()>=this._algorithm.blockSize;)this.state=this._algorithm.digest(this.state,this._input);return(2048<this._input.read||0===this._input.length())&&this._input.compact(),this},a.prototype.digest=function(){var e=new a.ByteBuffer;e.putBytes(this._input.bytes());var d=this.fullMessageLength[this.fullMessageLength.length-1]+this._algorithm.messageLengthSize,n=d&this._algorithm.blockSize-1;e.putBytes(a._padding.substr(0,this._algorithm.blockSize-n));for(var u=new a.ByteBuffer,p=0;p<this.fullMessageLength.length;++p)u.putInt32(this.fullMessageLength[p]<<3|this.fullMessageLength[p+1]>>>28);this._algorithm.writeMessageLength(e,u);var i=this._algorithm.digest(this.state.copy(),e),t=new a.ByteBuffer;return i.write(t),t},a.ByteBuffer=function(e){this.data='string'==typeof e?e:'',this.read=0},a.ByteBuffer.prototype.putInt32=function(e){this.data+=f(255&e>>24)+f(255&e>>16)+f(255&e>>8)+f(255&e)},a.ByteBuffer.prototype.getInt32=function(){var e=this.data.charCodeAt(this.read)<<24^this.data.charCodeAt(this.read+1)<<16^this.data.charCodeAt(this.read+2)<<8^this.data.charCodeAt(this.read+3);return this.read+=4,e},a.ByteBuffer.prototype.putBytes=function(e){this.data+=e},a.ByteBuffer.prototype.bytes=function(){return this.data.slice(this.read)},a.ByteBuffer.prototype.length=function(){return this.data.length-this.read},a.ByteBuffer.prototype.compact=function(){this.data=this.data.slice(this.read),this.read=0},a.ByteBuffer.prototype.toHex=function(){for(var e='',d=this.read,n;d<this.data.length;++d)n=this.data.charCodeAt(d),16>n&&(e+='0'),e+=n.toString(16);return e};var u={_w:null};u.Algorithm=function(){this.name='sha1',this.blockSize=64,this.digestLength=20,this.messageLengthSize=8},u.Algorithm.prototype.start=function(){return u._w||(u._w=Array(80)),u._createState()},u.Algorithm.prototype.writeMessageLength=function(e,d){e.putBytes(d.bytes())},u.Algorithm.prototype.digest=function(n,p){for(var r=p.length(),o=u._w,l,t,a,s,m,d,e,f;64<=r;){for(t=n.h0,a=n.h1,s=n.h2,m=n.h3,d=n.h4,f=0;16>f;++f)l=p.getInt32(),o[f]=l,e=m^a&(s^m),l=(t<<5|t>>>27)+e+d+1518500249+l,d=m,m=s,s=a<<30|a>>>2,a=t,t=l;for(;20>f;++f)l=o[f-3]^o[f-8]^o[f-14]^o[f-16],l=l<<1|l>>>31,o[f]=l,e=m^a&(s^m),l=(t<<5|t>>>27)+e+d+1518500249+l,d=m,m=s,s=a<<30|a>>>2,a=t,t=l;for(;32>f;++f)l=o[f-3]^o[f-8]^o[f-14]^o[f-16],l=l<<1|l>>>31,o[f]=l,e=a^s^m,l=(t<<5|t>>>27)+e+d+1859775393+l,d=m,m=s,s=a<<30|a>>>2,a=t,t=l;for(;40>f;++f)l=o[f-6]^o[f-16]^o[f-28]^o[f-32],l=l<<2|l>>>30,o[f]=l,e=a^s^m,l=(t<<5|t>>>27)+e+d+1859775393+l,d=m,m=s,s=a<<30|a>>>2,a=t,t=l;for(;60>f;++f)l=o[f-6]^o[f-16]^o[f-28]^o[f-32],l=l<<2|l>>>30,o[f]=l,e=a&s|m&(a^s),l=(t<<5|t>>>27)+e+d+2400959708+l,d=m,m=s,s=a<<30|a>>>2,a=t,t=l;for(;80>f;++f)l=o[f-6]^o[f-16]^o[f-28]^o[f-32],l=l<<2|l>>>30,o[f]=l,e=a^s^m,l=(t<<5|t>>>27)+e+d+3395469782+l,d=m,m=s,s=a<<30|a>>>2,a=t,t=l;n.h0=0|n.h0+t,n.h1=0|n.h1+a,n.h2=0|n.h2+s,n.h3=0|n.h3+m,n.h4=0|n.h4+d,r-=64}return n},u._createState=function(){var e={h0:1732584193,h1:4023233417,h2:2562383102,h3:271733878,h4:3285377520};return e.copy=function(){var d=u._createState();return d.h0=e.h0,d.h1=e.h1,d.h2=e.h2,d.h3=e.h3,d.h4=e.h4,d},e.write=function(d){d.putInt32(e.h0),d.putInt32(e.h1),d.putInt32(e.h2),d.putInt32(e.h3),d.putInt32(e.h4)},e};var p={_k:null,_w:null};p.Algorithm=function(){this.name='sha256',this.blockSize=64,this.digestLength=32,this.messageLengthSize=8},p.Algorithm.prototype.start=function(){return p._k||p._init(),p._createState()},p.Algorithm.prototype.writeMessageLength=function(e,d){e.putBytes(d.bytes())},p.Algorithm.prototype.digest=function(n,u){for(var t=u.length(),r=p._k,o=p._w,l,s,m,y,v,_,w,i,a,b,c,d,e,f,g;64<=t;){for(w=0;16>w;++w)o[w]=u.getInt32();for(;64>w;++w)l=o[w-2],l=(l>>>17|l<<15)^(l>>>19|l<<13)^l>>>10,s=o[w-15],s=(s>>>7|s<<25)^(s>>>18|s<<14)^s>>>3,o[w]=0|l+o[w-7]+s+o[w-16];for(i=n.h0,a=n.h1,b=n.h2,c=n.h3,d=n.h4,e=n.h5,f=n.h6,g=n.h7,w=0;64>w;++w)y=(d>>>6|d<<26)^(d>>>11|d<<21)^(d>>>25|d<<7),v=f^d&(e^f),m=(i>>>2|i<<30)^(i>>>13|i<<19)^(i>>>22|i<<10),_=i&a|b&(i^a),l=g+y+v+r[w]+o[w],s=m+_,g=f,f=e,e=d,d=0|c+l,c=b,b=a,a=i,i=0|l+s;n.h0=0|n.h0+i,n.h1=0|n.h1+a,n.h2=0|n.h2+b,n.h3=0|n.h3+c,n.h4=0|n.h4+d,n.h5=0|n.h5+e,n.h6=0|n.h6+f,n.h7=0|n.h7+g,t-=64}return n},p._createState=function(){var e={h0:1779033703,h1:3144134277,h2:1013904242,h3:2773480762,h4:1359893119,h5:2600822924,h6:528734635,h7:1541459225};return e.copy=function(){var d=p._createState();return d.h0=e.h0,d.h1=e.h1,d.h2=e.h2,d.h3=e.h3,d.h4=e.h4,d.h5=e.h5,d.h6=e.h6,d.h7=e.h7,d},e.write=function(d){d.putInt32(e.h0),d.putInt32(e.h1),d.putInt32(e.h2),d.putInt32(e.h3),d.putInt32(e.h4),d.putInt32(e.h5),d.putInt32(e.h6),d.putInt32(e.h7)},e},p._init=function(){p._k=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],p._w=Array(64)}}(o),!ge)var Fe=function(){ge=n(166).XMLSerializer};if(d.url={},d.url.parsers={simple:{keys:['href','scheme','authority','path','query','fragment'],regex:/^(?:([^:\/?#]+):)?(?:\/\/([^\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/},full:{keys:['href','protocol','scheme','authority','auth','user','password','hostname','port','path','directory','file','query','fragment'],regex:/^(([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?(?:(((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/}},d.url.parse=function(e,n){for(var a={},u=d.url.parsers[n||'full'],p=u.regex.exec(e),t=u.keys.length;t--;)a[u.keys[t]]=void 0===p[t]?null:p[t];return a.normalizedPath=le(a.path,!!a.authority),a},o?d.useDocumentLoader('node'):'undefined'!=typeof XMLHttpRequest&&d.useDocumentLoader('xhr'),o){d.use=function(e){switch(e){case'request':d.request=n(32);break;default:throw new Ce('Unknown extension.','jsonld.UnknownExtension',{extension:e});}};var qe={exports:{},filename:p};n(32)(qe,'version'),d.version=qe.exports.version}return d},m=function(){return s(function(){return m()})};return!o&&n(292)?(t=[],r=function(){return s(m),m}.apply(d,t),!(void 0!==r&&(e.exports=r))):(s(m),'undefined'!=typeof e&&e.exports&&(e.exports=m),l&&('undefined'==typeof jsonld?jsonld=jsonldjs=m:jsonldjs=m)),m})()}).call(d,n(16),n(1),n(38).setImmediate,'/')},function(e,d,n){var i=a,a,a;a=function(){};var d=e.exports={Lexer:a('./lib/N3Lexer'),Parser:a('./lib/N3Parser'),Writer:a('./lib/N3Writer'),Store:a('./lib/N3Store'),StreamParser:a('./lib/N3StreamParser'),StreamWriter:a('./lib/N3StreamWriter'),Util:a('./lib/N3Util')};Object.keys(d).forEach(function(e){Object.defineProperty(d,e,{configurable:!0,enumerable:!0,get:function(){return delete d[e],d[e]=n(262)('./N3'+e)}})})},function(e,d,n){function i(e,d){return this instanceof i?void(this._size=0,this._graphs=Object.create(null),this._entities=Object.create(null),this._entities['><']=0,this._entityCount=0,this._blankNodeIndex=0,!d&&e&&!e[0]&&(d=e,e=null),this._prefixes=Object.create(null),d&&d.prefixes&&this.addPrefixes(d.prefixes),e&&this.addTriples(e)):new i(e,d)}var a=n(91).expandPrefixedName;i.prototype={get size(){var e=this._size;if(null!==e)return e;var d=this._graphs,n,i;for(var a in d)for(var u in n=d[a].subjects)for(var p in i=n[u])e+=Object.keys(i[p]).length;return this._size=e},_addToIndex:function(e,d,n,i){var a=e[d]||(e[d]={}),u=a[n]||(a[n]={});u[i]=null},_removeFromIndex:function(e,d,n,i){var a=e[d],u=a[n],p;for(p in delete u[i],u)return;for(p in delete a[n],a)return;delete e[d]},_findInIndex:function(e,d,n,i,a,u,p,t){var f=[],r=Object.keys(this._entities),o,s,m;for(var c in d&&((o=e,e={})[d]=o[d]),e){var h=r[c];if(s=e[c])for(var g in n&&((o=s,s={})[n]=o[n]),s){var y=r[g];if(m=s[g])for(var v=i?(i in m)?[i]:[]:Object.keys(m),b=v.length-1,l;0<=b;b--)l={subject:'',predicate:'',object:'',graph:t},l[a]=h,l[u]=y,l[p]=r[v[b]],f.push(l)}}return f},_countInIndex:function(e,d,n,i){var a=0,u,p,t;for(var f in d&&((u=e,e={})[d]=u[d]),e)if(p=e[f])for(var r in n&&((u=p,p={})[n]=u[n]),p)(t=p[r])&&(i?i in t&&a++:a+=Object.keys(t).length);return a},addTriple:function(e,d,n,i){d||(i=e.graph,n=e.object,d=e.predicate,e=e.subject),i=i||'';var a=this._graphs[i];a||(a=this._graphs[i]={subjects:{},predicates:{},objects:{}},Object.freeze(a));var u=this._entities;e=u[e]||(u[e]=++this._entityCount),d=u[d]||(u[d]=++this._entityCount),n=u[n]||(u[n]=++this._entityCount),this._addToIndex(a.subjects,e,d,n),this._addToIndex(a.predicates,d,n,e),this._addToIndex(a.objects,n,e,d),this._size=null},addTriples:function(e){for(var d=e.length-1;0<=d;d--)this.addTriple(e[d])},addPrefix:function(e,d){this._prefixes[e]=d},addPrefixes:function(e){for(var d in e)this.addPrefix(d,e[d])},removeTriple:function(e,d,n,i){d||(i=e.graph,n=e.object,d=e.predicate,e=e.subject),i=i||'';var a=this._entities,u=this._graphs,p;if((e=a[e])&&(d=a[d])&&(n=a[n])&&(p=u[i])){var t,f;if((t=p.subjects[e])&&(f=t[d])&&n in f){for(e in this._removeFromIndex(p.subjects,e,d,n),this._removeFromIndex(p.predicates,d,n,e),this._removeFromIndex(p.objects,n,e,d),null!==this._size&&this._size--,p.subjects)return;delete u[i]}}},removeTriples:function(e){for(var d=e.length-1;0<=d;d--)this.removeTriple(e[d])},find:function(e,d,n,i){var u=this._prefixes;return this.findByIRI(a(e,u),a(d,u),a(n,u),a(i,u))},findByIRI:function(e,d,n,i){i=i||'';var a=this._graphs[i],u=this._entities;return a?e&&!(e=u[e])?[]:d&&!(d=u[d])?[]:n&&!(n=u[n])?[]:e?n?this._findInIndex(a.objects,n,e,d,'object','subject','predicate',i):this._findInIndex(a.subjects,e,d,null,'subject','predicate','object',i):d?this._findInIndex(a.predicates,d,n,null,'predicate','object','subject',i):n?this._findInIndex(a.objects,n,null,null,'object','subject','predicate',i):this._findInIndex(a.subjects,null,null,null,'subject','predicate','object',i):[]},count:function(e,d,n,i){var u=this._prefixes;return this.countByIRI(a(e,u),a(d,u),a(n,u),a(i,u))},countByIRI:function(e,d,n,i){i=i||'';var a=this._graphs[i],u=this._entities;return a?e&&!(e=u[e])?0:d&&!(d=u[d])?0:n&&!(n=u[n])?0:e?n?this._countInIndex(a.objects,n,e,d):this._countInIndex(a.subjects,e,d,n):d?this._countInIndex(a.predicates,d,n,e):this._countInIndex(a.objects,n,e,d):0},createBlankNode:function(e){var d,n;if(e)for(d=e='_:'+e,n=1;this._entities[d];)d=e+n++;else do d='_:b'+this._blankNodeIndex++;while(this._entities[d]);return this._entities[d]=++this._entityCount,d}},e.exports=i},function(e,d,n){function i(e){if(!(this instanceof i))return new i(e);a.call(this,{decodeStrings:!0}),this._readableState.objectMode=!0;var d=this,n=new p(e);n.parse(function(e,n){n&&d.push(n)||e&&d.emit('error',e)},this.emit.bind(this,'prefix')),this._transform=function(e,d,i){n.addChunk(e),i()},this._flush=function(e){n.end(),e()}}var a=n(160).Transform,u=n(97),p=n(90);u.inherits(i,a),e.exports=i},function(e,d,n){function i(e){if(!(this instanceof i))return new i(e);a.call(this,{encoding:'utf8'}),this._writableState.objectMode=!0;var d=this,n=new p({write:function(e,n,i){d.push(e),i&&i()},end:function(e){d.push(null),e&&e()}},e);this._transform=function(e,d,i){n.addTriple(e,i)},this._flush=function(e){n.end(e)}}var a=n(160).Transform,u=n(97),p=n(92);u.inherits(i,a),e.exports=i},function(e,d,n){(function(e,i){var a;/*! https://mths.be/punycode v1.4.1 by @mathias */;(function(u){function r(e){throw new RangeError(L[e])}function t(e,d){for(var n=e.length,i=[];n--;)i[n]=d(e[n]);return i}function o(e,d){var n=e.split('@'),i='';1<n.length&&(i=n[0]+'@',e=n[1]),e=e.replace(C,'.');var a=e.split('.'),u=t(a,d).join('.');return i+u}function l(e){for(var d=[],n=0,i=e.length,a,u;n<i;)a=e.charCodeAt(n++),55296<=a&&56319>=a&&n<i?(u=e.charCodeAt(n++),56320==(64512&u)?d.push(((1023&a)<<10)+(1023&u)+65536):(d.push(a),n--)):d.push(a);return d}function s(e){return t(e,function(e){var d='';return 65535<e&&(e-=65536,d+=U(55296|1023&e>>>10),e=56320|1023&e),d+=U(e),d}).join('')}function m(e){return 10>e-48?e-22:26>e-65?e-65:26>e-97?e-97:T}function c(e,d){return e+22+75*(26>e)-((0!=d)<<5)}function h(e,d,n){var i=0;for(e=n?V(e/O):e>>1,e+=V(e/d);e>A*I>>1;i+=T)e=V(e/A);return V(i+(A+1)*e/(e+j))}function g(e){var d=[],a=e.length,u=0,i=D,n=R,p,f,o,l,c,g,y,v,b,t;for(f=e.lastIndexOf(E),0>f&&(f=0),o=0;o<f;++o)128<=e.charCodeAt(o)&&r('not-basic'),d.push(e.charCodeAt(o));for(l=0<f?f+1:0;l<a;){for(c=u,g=1,y=T;;y+=T){if(l>=a&&r('invalid-input'),v=m(e.charCodeAt(l++)),(v>=T||v>V((S-u)/g))&&r('overflow'),u+=v*g,b=y<=n?N:y>=n+I?I:y-n,v<b)break;t=T-b,g>V(S/t)&&r('overflow'),g*=t}p=d.length+1,n=h(u-c,p,0==c),V(u/p)>S-i&&r('overflow'),i+=V(u/p),u%=p,d.splice(u++,0,i)}return s(d)}function y(e){var d=[],i,n,a,u,p,f,o,s,m,g,t,y,v,b,_;for(e=l(e),y=e.length,i=D,n=0,p=R,f=0;f<y;++f)t=e[f],128>t&&d.push(U(t));for(a=u=d.length,u&&d.push(E);a<y;){for(o=S,f=0;f<y;++f)t=e[f],t>=i&&t<o&&(o=t);for(v=a+1,o-i>V((S-n)/v)&&r('overflow'),n+=(o-i)*v,i=o,f=0;f<y;++f)if(t=e[f],t<i&&++n>S&&r('overflow'),t==i){for(s=n,m=T;;m+=T){if(g=m<=p?N:m>=p+I?I:m-p,s<g)break;_=s-g,b=T-g,d.push(U(c(g+_%b,0))),s=V(_/b)}d.push(U(c(s,0))),p=h(n,v,a==u),n=0,++a}++n,++i}return d.join('')}function v(e){return o(e,function(e){return k.test(e)?g(e.slice(4).toLowerCase()):e})}function b(e){return o(e,function(e){return P.test(e)?'xn--'+y(e):e})}var _='object'==typeof d&&d&&!d.nodeType&&d,w='object'==typeof e&&e&&!e.nodeType&&e,x='object'==typeof i&&i;(x.global===x||x.window===x||x.self===x)&&(u=x);var S=2147483647,T=36,N=1,I=26,j=38,O=700,R=72,D=128,E='-',k=/^xn--/,P=/[^\x20-\x7E]/,C=/[\x2E\u3002\uFF0E\uFF61]/g,L={overflow:'Overflow: input needs wider integers to process',"not-basic":'Illegal input >= 0x80 (not a basic code point)',"invalid-input":'Invalid input'},A=T-N,V=p,U=f,M,F;if(M={version:'1.4.1',ucs2:{decode:l,encode:s},decode:g,encode:y,toASCII:b,toUnicode:v},!0)a=function(){return M}.call(d,n,d,e),!(void 0!==a&&(e.exports=a));else if(!(_&&w))u.punycode=M;else if(e.exports==_)w.exports=M;else for(F in M)M.hasOwnProperty(F)&&(_[F]=M[F])})(this)}).call(d,n(98)(e),n(1))},function(e,d,n){'use strict';(function(d,i){function a(e){return M.from(e)}function u(e){return M.isBuffer(e)||e instanceof F}function t(e,d,n){return'function'==typeof e.prependListener?e.prependListener(d,n):void(e._events&&e._events[d]?C(e._events[d])?e._events[d].unshift(n):e._events[d]=[n,e._events[d]]:e.on(d,n))}function f(e,d){L=L||n(24),e=e||{};var i=d instanceof L;this.objectMode=!!e.objectMode,i&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var a=e.highWaterMark,u=e.readableHighWaterMark,t=this.objectMode?16:16384;this.highWaterMark=a||0===a?a:i&&(u||0===u)?u:t,this.highWaterMark=p(this.highWaterMark),this.buffer=new z,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||'utf8',this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(!J&&(J=n(161).StringDecoder),this.decoder=new J(e.encoding),this.encoding=e.encoding)}function r(e){return L=L||n(24),this instanceof r?void(this._readableState=new f(e,this),this.readable=!0,e&&('function'==typeof e.read&&(this._read=e.read),'function'==typeof e.destroy&&(this._destroy=e.destroy)),U.call(this)):new r(e)}function o(e,d,n,i,u){var p=e._readableState;if(null===d)p.reading=!1,g(e,p);else{var t;u||(t=s(p,d)),t?e.emit('error',t):p.objectMode||d&&0<d.length?('string'!=typeof d&&!p.objectMode&&Object.getPrototypeOf(d)!==M.prototype&&(d=a(d)),i?p.endEmitted?e.emit('error',new Error('stream.unshift() after end event')):l(e,p,d,!0):p.ended?e.emit('error',new Error('stream.push() after EOF')):(p.reading=!1,p.decoder&&!n?(d=p.decoder.write(d),p.objectMode||0!==d.length?l(e,p,d,!1):b(e,p)):l(e,p,d,!1))):!i&&(p.reading=!1)}return m(p)}function l(e,d,n,i){d.flowing&&0===d.length&&!d.sync?(e.emit('data',n),e.read(0)):(d.length+=d.objectMode?1:n.length,i?d.buffer.unshift(n):d.buffer.push(n),d.needReadable&&y(e)),b(e,d)}function s(e,d){var n;return u(d)||'string'==typeof d||void 0===d||e.objectMode||(n=new TypeError('Invalid non-string/buffer chunk')),n}function m(e){return!e.ended&&(e.needReadable||e.length<e.highWaterMark||0===e.length)}function c(e){return e>=K?e=K:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function h(e,d){return 0>=e||0===d.length&&d.ended?0:d.objectMode?1:e===e?(e>d.highWaterMark&&(d.highWaterMark=c(e)),e<=d.length?e:d.ended?d.length:(d.needReadable=!0,0)):d.flowing&&d.length?d.buffer.head.data.length:d.length}function g(e,d){if(!d.ended){if(d.decoder){var n=d.decoder.end();n&&n.length&&(d.buffer.push(n),d.length+=d.objectMode?1:n.length)}d.ended=!0,y(e)}}function y(e){var d=e._readableState;d.needReadable=!1,d.emittedReadable||(H('emitReadable',d.flowing),d.emittedReadable=!0,d.sync?P.nextTick(v,e):v(e))}function v(e){H('emit readable'),e.emit('readable'),T(e)}function b(e,d){d.readingMore||(d.readingMore=!0,P.nextTick(_,e,d))}function _(e,d){for(var n=d.length;!d.reading&&!d.flowing&&!d.ended&&d.length<d.highWaterMark&&(H('maybeReadMore read 0'),e.read(0),n!==d.length);)n=d.length;d.readingMore=!1}function w(e){return function(){var d=e._readableState;H('pipeOnDrain',d.awaitDrain),d.awaitDrain&&d.awaitDrain--,0===d.awaitDrain&&V(e,'data')&&(d.flowing=!0,T(e))}}function x(e){H('readable nexttick read 0'),e.read(0)}function k(e,d){d.resumeScheduled||(d.resumeScheduled=!0,P.nextTick(S,e,d))}function S(e,d){d.reading||(H('resume read 0'),e.read(0)),d.resumeScheduled=!1,d.awaitDrain=0,e.emit('resume'),T(e),d.flowing&&!d.reading&&e.read(0)}function T(e){var d=e._readableState;for(H('flow',d.flowing);d.flowing&&null!==e.read(););}function N(e,d){if(0===d.length)return null;var i;return d.objectMode?i=d.buffer.shift():!e||e>=d.length?(i=d.decoder?d.buffer.join(''):1===d.buffer.length?d.buffer.head.data:d.buffer.concat(d.length),d.buffer.clear()):i=I(e,d.buffer,d.decoder),i}function I(e,d,n){var i;return e<d.head.data.length?(i=d.head.data.slice(0,e),d.head.data=d.head.data.slice(e)):e===d.head.data.length?i=d.shift():i=n?j(e,d):O(e,d),i}function j(e,d){var n=d.head,i=1,a=n.data;for(e-=a.length;n=n.next;){var u=n.data,p=e>u.length?u.length:e;if(a+=p===u.length?u:u.slice(0,e),e-=p,0===e){p===u.length?(++i,d.head=n.next?n.next:d.tail=null):(d.head=n,n.data=u.slice(p));break}++i}return d.length-=i,a}function O(e,d){var n=M.allocUnsafe(e),i=d.head,a=1;for(i.data.copy(n),e-=i.data.length;i=i.next;){var u=i.data,p=e>u.length?u.length:e;if(u.copy(n,n.length-e,0,p),e-=p,0===e){p===u.length?(++a,d.head=i.next?i.next:d.tail=null):(d.head=i,i.data=u.slice(p));break}++a}return d.length-=a,n}function R(e){var d=e._readableState;if(0<d.length)throw new Error('"endReadable()" called on non-empty stream');d.endEmitted||(d.ended=!0,P.nextTick(D,d,e))}function D(e,d){e.endEmitted||0!==e.length||(e.endEmitted=!0,d.readable=!1,d.emit('end'))}function E(e,d){for(var n=0,i=e.length;n<i;n++)if(e[n]===d)return n;return-1}var P=n(58);e.exports=r;var C=n(148),L;r.ReadableState=f;var A=n(57).EventEmitter,V=function(e,d){return e.listeners(d).length},U=n(158),M=n(59).Buffer,F=d.Uint8Array||function(){},q=n(37);q.inherits=n(31);var B=n(298),H;H=B&&B.debuglog?B.debuglog('stream'):function(){};var z=n(265),W=n(157),J;q.inherits(r,U);var X=['error','close','destroy','pause','resume'];Object.defineProperty(r.prototype,'destroyed',{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}}),r.prototype.destroy=W.destroy,r.prototype._undestroy=W.undestroy,r.prototype._destroy=function(e,d){this.push(null),d(e)},r.prototype.push=function(e,d){var n=this._readableState,i;return n.objectMode?i=!0:'string'==typeof e&&(d=d||n.defaultEncoding,d!==n.encoding&&(e=M.from(e,d),d=''),i=!0),o(this,e,d,!1,i)},r.prototype.unshift=function(e){return o(this,e,null,!0,!1)},r.prototype.isPaused=function(){return!1===this._readableState.flowing},r.prototype.setEncoding=function(e){return J||(J=n(161).StringDecoder),this._readableState.decoder=new J(e),this._readableState.encoding=e,this};var K=8388608;r.prototype.read=function(e){H('read',e),e=parseInt(e,10);var d=this._readableState,n=e;if(0!==e&&(d.emittedReadable=!1),0===e&&d.needReadable&&(d.length>=d.highWaterMark||d.ended))return H('read: emitReadable',d.length,d.ended),0===d.length&&d.ended?R(this):y(this),null;if(e=h(e,d),0===e&&d.ended)return 0===d.length&&R(this),null;var i=d.needReadable;H('need readable',i),(0===d.length||d.length-e<d.highWaterMark)&&(i=!0,H('length less than watermark',i)),d.ended||d.reading?(i=!1,H('reading or ended',i)):i&&(H('do read'),d.reading=!0,d.sync=!0,0===d.length&&(d.needReadable=!0),this._read(d.highWaterMark),d.sync=!1,!d.reading&&(e=h(n,d)));var a;return a=0<e?N(e,d):null,null===a?(d.needReadable=!0,e=0):d.length-=e,0===d.length&&(!d.ended&&(d.needReadable=!0),n!==e&&d.ended&&R(this)),null!==a&&this.emit('data',a),a},r.prototype._read=function(e){this.emit('error',new Error('_read() is not implemented'))},r.prototype.pipe=function(e,d){function n(e,d){H('onunpipe'),e===s&&d&&!1===d.hasUnpiped&&(d.hasUnpiped=!0,u())}function a(){H('onend'),e.end()}function u(){H('cleanup'),e.removeListener('close',r),e.removeListener('finish',o),e.removeListener('drain',g),e.removeListener('error',f),e.removeListener('unpipe',n),s.removeListener('end',a),s.removeListener('end',l),s.removeListener('data',p),y=!0,m.awaitDrain&&(!e._writableState||e._writableState.needDrain)&&g()}function p(d){H('ondata'),v=!1;var n=e.write(d);!1!==n||v||((1===m.pipesCount&&m.pipes===e||1<m.pipesCount&&-1!==E(m.pipes,e))&&!y&&(H('false write response, pause',s._readableState.awaitDrain),s._readableState.awaitDrain++,v=!0),s.pause())}function f(d){H('onerror',d),l(),e.removeListener('error',f),0===V(e,'error')&&e.emit('error',d)}function r(){e.removeListener('finish',o),l()}function o(){H('onfinish'),e.removeListener('close',r),l()}function l(){H('unpipe'),s.unpipe(e)}var s=this,m=this._readableState;switch(m.pipesCount){case 0:m.pipes=e;break;case 1:m.pipes=[m.pipes,e];break;default:m.pipes.push(e);}m.pipesCount+=1,H('pipe count=%d opts=%j',m.pipesCount,d);var c=(!d||!1!==d.end)&&e!==i.stdout&&e!==i.stderr,h=c?a:l;m.endEmitted?P.nextTick(h):s.once('end',h),e.on('unpipe',n);var g=w(s);e.on('drain',g);var y=!1,v=!1;return s.on('data',p),t(e,'error',f),e.once('close',r),e.once('finish',o),e.emit('pipe',s),m.flowing||(H('pipe resume'),s.resume()),e},r.prototype.unpipe=function(e){var d=this._readableState,n={hasUnpiped:!1};if(0===d.pipesCount)return this;if(1===d.pipesCount)return e&&e!==d.pipes?this:(e||(e=d.pipes),d.pipes=null,d.pipesCount=0,d.flowing=!1,e&&e.emit('unpipe',this,n),this);if(!e){var a=d.pipes,u=d.pipesCount;d.pipes=null,d.pipesCount=0,d.flowing=!1;for(var p=0;p<u;p++)a[p].emit('unpipe',this,n);return this}var i=E(d.pipes,e);return-1===i?this:(d.pipes.splice(i,1),d.pipesCount-=1,1===d.pipesCount&&(d.pipes=d.pipes[0]),e.emit('unpipe',this,n),this)},r.prototype.on=function(e,d){var n=U.prototype.on.call(this,e,d);if('data'===e)!1!==this._readableState.flowing&&this.resume();else if('readable'===e){var i=this._readableState;i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.emittedReadable=!1,i.reading?i.length&&y(this):P.nextTick(x,this))}return n},r.prototype.addListener=r.prototype.on,r.prototype.resume=function(){var e=this._readableState;return e.flowing||(H('resume'),e.flowing=!0,k(this,e)),this},r.prototype.pause=function(){return H('call pause flowing=%j',this._readableState.flowing),!1!==this._readableState.flowing&&(H('pause'),this._readableState.flowing=!1,this.emit('pause')),this},r.prototype.wrap=function(e){var d=this,a=this._readableState,u=!1;for(var p in e.on('end',function(){if(H('wrapped end'),a.decoder&&!a.ended){var e=a.decoder.end();e&&e.length&&d.push(e)}d.push(null)}),e.on('data',function(n){if((H('wrapped data'),a.decoder&&(n=a.decoder.write(n)),!(a.objectMode&&(null===n||void 0===n)))&&(a.objectMode||n&&n.length)){var i=d.push(n);i||(u=!0,e.pause())}}),e)void 0===this[p]&&'function'==typeof e[p]&&(this[p]=function(d){return function(){return e[d].apply(e,arguments)}}(p));for(var i=0;i<X.length;i++)e.on(X[i],this.emit.bind(this,X[i]));return this._read=function(d){H('wrapped _read',d),u&&(u=!1,e.resume())},this},Object.defineProperty(r.prototype,'readableHighWaterMark',{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),r._fromList=N}).call(d,n(1),n(16))},function(e,d,n){'use strict';function i(e,d){var n=this._transformState;n.transforming=!1;var i=n.writecb;if(!i)return this.emit('error',new Error('write callback called multiple times'));n.writechunk=null,n.writecb=null,null!=d&&this.push(d),i(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function a(e){return this instanceof a?void(t.call(this,e),this._transformState={afterTransform:i.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&('function'==typeof e.transform&&(this._transform=e.transform),'function'==typeof e.flush&&(this._flush=e.flush)),this.on('prefinish',u)):new a(e)}function u(){var e=this;'function'==typeof this._flush?this._flush(function(d,n){p(e,d,n)}):p(this,null,null)}function p(e,d,n){if(d)return e.emit('error',d);if(null!=n&&e.push(n),e._writableState.length)throw new Error('Calling transform done when ws.length != 0');if(e._transformState.transforming)throw new Error('Calling transform done when still transforming');return e.push(null)}e.exports=a;var t=n(24),f=n(37);f.inherits=n(31),f.inherits(a,t),a.prototype.push=function(e,d){return this._transformState.needTransform=!1,t.prototype.push.call(this,e,d)},a.prototype._transform=function(e,d,n){throw new Error('_transform() is not implemented')},a.prototype._write=function(e,d,n){var i=this._transformState;if(i.writecb=n,i.writechunk=e,i.writeencoding=d,!i.transforming){var a=this._readableState;(i.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}},a.prototype._read=function(e){var d=this._transformState;null!==d.writechunk&&d.writecb&&!d.transforming?(d.transforming=!0,this._transform(d.writechunk,d.writeencoding,d.afterTransform)):d.needTransform=!0},a.prototype._destroy=function(e,d){var n=this;t.prototype._destroy.call(this,e,function(e){d(e),n.emit('close')})}},function(e,d,n){'use strict';function i(e,d){var n=this,i=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return i||a?(d?d(e):e&&(!this._writableState||!this._writableState.errorEmitted)&&p.nextTick(u,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!d&&e?(p.nextTick(u,n,e),n._writableState&&(n._writableState.errorEmitted=!0)):d&&d(e)}),this)}function a(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function u(e,d){e.emit('error',d)}var p=n(58);e.exports={destroy:i,undestroy:a}},function(e,d,n){e.exports=n(57).EventEmitter},function(e,d,n){'use strict';function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(d,'__esModule',{value:!0}),d.combineHandlers=d.server=d.client=void 0;var a=n(20),u=i(a),p=n(19),t=i(p),f=n(48),r=i(f),o=n(74),l=i(o),s=n(124),m=i(s),c=n(291),h=i(c),g='solid-auth-client',y=function e(d){return(0,m.default)({},g,d)},v=function e(d){if(!d||'object'!==('undefined'==typeof d?'undefined':(0,l.default)(d)))return null;var n=d[g];return n&&'object'===('undefined'==typeof n?'undefined':(0,l.default)(n))?n:null},b=function e(d){var n=v(d);if(!n)return null;var i=n.id,a=n.ret;return null!=i&&'string'==typeof i&&n.hasOwnProperty('ret')?{id:i,ret:a}:null},_=function e(d){var n=v(d);if(!n)return null;var i=n.id,a=n.method,u=n.args;return null!=i&&'string'==typeof i&&'string'==typeof a&&Array.isArray(u)?{id:i,method:a,args:u}:null},w=d.client=function e(d,n){return function(e){return new r.default(function(i,a){var u=(0,h.default)(),p=function e(d){var a=d.data,p=d.origin,t=b(a);('*'===n||p===n)&&t&&t.id===u&&(i(t.ret),window.removeEventListener('message',e))};window.addEventListener('message',p),d.postMessage({"solid-auth-client":{id:u,method:e.method,args:e.args}},n)})}},x=d.server=function e(d,n){return function(e){var i=function(){var i=(0,t.default)(u.default.mark(function i(a){var p,t,f,r;return u.default.wrap(function i(u){for(;1;)switch(u.prev=u.next){case 0:if(p=a.data,t=a.origin,f=_(p),f){u.next=4;break}return u.abrupt('return');case 4:if(t===n){u.next=7;break}return console.warn('SECURITY WARNING: solid-auth-client is listening for messages from '+n+', '+('but received a message from '+t+'. Ignoring the message.')),u.abrupt('return');case 7:return u.next=9,e(f);case 9:r=u.sent,r&&d.postMessage(y(r),n);case 11:case'end':return u.stop();}},i,void 0)}));return function e(d){return i.apply(this,arguments)}}(),a={start:function e(){return window.addEventListener('message',i),a},stop:function e(){return window.removeEventListener('message',i),a}};return a}},k=d.combineHandlers=function e(){for(var d=arguments.length,n=Array(d),i=0;i<d;i++)n[i]=arguments[i];return function(e){return n.map(function(d){return d(e)}).find(function(e){return null!==e})}}},function(e,d,n){function i(){a.call(this)}e.exports=i;var a=n(57).EventEmitter,u=n(31);u(i,a),i.Readable=n(94),i.Writable=n(268),i.Duplex=n(263),i.Transform=n(267),i.PassThrough=n(266),i.Stream=i,i.prototype.pipe=function(e,d){function n(d){e.writable&&!1===e.write(d)&&r.pause&&r.pause()}function i(){r.readable&&r.resume&&r.resume()}function u(){o||(o=!0,e.end())}function p(){o||(o=!0,'function'==typeof e.destroy&&e.destroy())}function t(e){if(f(),0===a.listenerCount(this,'error'))throw e}function f(){r.removeListener('data',n),e.removeListener('drain',i),r.removeListener('end',u),r.removeListener('close',p),r.removeListener('error',t),e.removeListener('error',t),r.removeListener('end',f),r.removeListener('close',f),e.removeListener('close',f)}var r=this;r.on('data',n),e.on('drain',i),e._isStdio||d&&!1===d.end||(r.on('end',u),r.on('close',p));var o=!1;return r.on('error',t),e.on('error',t),r.on('end',f),r.on('close',f),e.on('close',f),e.emit('pipe',r),e}},function(e,d,n){'use strict';function i(e){if(!e)return'utf8';for(var d;!0;)switch(e){case'utf8':case'utf-8':return'utf8';case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return'utf16le';case'latin1':case'binary':return'latin1';case'base64':case'ascii':case'hex':return e;default:if(d)return;e=(''+e).toLowerCase(),d=!0;}}function a(e){var d=i(e);if('string'!=typeof d&&(v.isEncoding===b||!b(e)))throw new Error('Unknown encoding: '+e);return d||e}function u(e){this.encoding=a(e);var d;switch(this.encoding){case'utf16le':this.text=s,this.end=m,d=4;break;case'utf8':this.fillLast=r,d=4;break;case'base64':this.text=c,this.end=h,d=3;break;default:return this.write=g,void(this.end=y);}this.lastNeed=0,this.lastTotal=0,this.lastChar=v.allocUnsafe(d)}function p(e){if(127>=e)return 0;return 6==e>>5?2:14==e>>4?3:30==e>>3?4:2==e>>6?-1:-2}function t(e,d,n){var i=d.length-1;if(i<n)return 0;var a=p(d[i]);return 0<=a?(0<a&&(e.lastNeed=a-1),a):--i<n||-2===a?0:(a=p(d[i]),0<=a)?(0<a&&(e.lastNeed=a-2),a):--i<n||-2===a?0:(a=p(d[i]),0<=a?(0<a&&(2===a?a=0:e.lastNeed=a-3),a):0)}function f(e,d,n){if(128!=(192&d[0]))return e.lastNeed=0,'\uFFFD';if(1<e.lastNeed&&1<d.length){if(128!=(192&d[1]))return e.lastNeed=1,'\uFFFD';if(2<e.lastNeed&&2<d.length&&128!=(192&d[2]))return e.lastNeed=2,'\uFFFD'}}function r(e){var d=this.lastTotal-this.lastNeed,n=f(this,e,d);return void 0===n?this.lastNeed<=e.length?(e.copy(this.lastChar,d,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):void(e.copy(this.lastChar,d,0,e.length),this.lastNeed-=e.length):n}function o(e,d){var n=t(this,e,d);if(!this.lastNeed)return e.toString('utf8',d);this.lastTotal=n;var i=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,i),e.toString('utf8',d,i)}function l(e){var d=e&&e.length?this.write(e):'';return this.lastNeed?d+'\uFFFD':d}function s(e,d){if(0==(e.length-d)%2){var n=e.toString('utf16le',d);if(n){var i=n.charCodeAt(n.length-1);if(55296<=i&&56319>=i)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString('utf16le',d,e.length-1)}function m(e){var d=e&&e.length?this.write(e):'';if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return d+this.lastChar.toString('utf16le',0,n)}return d}function c(e,d){var i=(e.length-d)%3;return 0==i?e.toString('base64',d):(this.lastNeed=3-i,this.lastTotal=3,1==i?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString('base64',d,e.length-i))}function h(e){var d=e&&e.length?this.write(e):'';return this.lastNeed?d+this.lastChar.toString('base64',0,3-this.lastNeed):d}function g(e){return e.toString(this.encoding)}function y(e){return e&&e.length?this.write(e):''}var v=n(59).Buffer,b=v.isEncoding||function(e){switch(e=''+e,e&&e.toLowerCase()){case'hex':case'utf8':case'utf-8':case'ascii':case'binary':case'base64':case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':case'raw':return!0;default:return!1;}};;d.StringDecoder=u,u.prototype.write=function(e){if(0===e.length)return'';var d,n;if(this.lastNeed){if(d=this.fillLast(e),void 0===d)return'';n=this.lastNeed,this.lastNeed=0}else n=0;return n<e.length?d?d+this.text(e,n):this.text(e,n):d||''},u.prototype.end=l,u.prototype.text=o,u.prototype.fillLast=function(e){return this.lastNeed<=e.length?(e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):void(e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length)}},function(e,d,n){'use strict';function a(e,d){return`${d&&d.context?d.context:'Value'} ${e}.`}function f(e){if(null===e)return'Null';switch(typeof e){case'undefined':return'Undefined';case'boolean':return'Boolean';case'number':return'Number';case'string':return'String';case'symbol':return'Symbol';case'object':case'function':default:return'Object';}}function o(e){return 0<e&&+0.5==e%1&&0==(1&e)||0>e&&-0.5==e%1&&1==(1&e)?c(p(e)):c(Math.round(e))}function l(e){return c(Math.trunc(e))}function s(e){return 0>e?-1:1}function m(e,d){const n=e%d;return s(d)===s(n)?n:n+d}function c(e){return 0===e?0:e}function h(e,d){const n=!d.unsigned;let u,p;64===e?(p=9007199254740991,u=n?-9007199254740991:0):n?(u=-t(2,e-1),p=t(2,e-1)-1):(u=0,p=t(2,e)-1);const f=t(2,e),s=t(2,e-1);return(e,d)=>{void 0===d&&(d={});let t=+e;if(t=c(t),d.enforceRange){if(!b(t))throw new TypeError(a('is not a finite number',d));if(t=l(t),t<u||t>p)throw new TypeError(a(`is outside the accepted range of ${u} to ${p}, inclusive`,d));return t}return!Number.isNaN(t)&&d.clamp?(t=r(i(t,u),p),t=o(t),t):b(t)&&0!==t?(t=l(t),t>=u&&t<=p)?t:(t=m(t,f),n&&t>=s?t-f:t):0}}function g(e,d){if('function'!=typeof e)throw new TypeError(a('is not a function',d));return e}var v=Math.fround,b=Number.isFinite;d.any=(e)=>e,d.void=function(){},d.boolean=function(e){return!!e},d.byte=h(8,{unsigned:!1}),d.octet=h(8,{unsigned:!0}),d.short=h(16,{unsigned:!1}),d['unsigned short']=h(16,{unsigned:!0}),d.long=h(32,{unsigned:!1}),d['unsigned long']=h(32,{unsigned:!0}),d['long long']=h(64,{unsigned:!1}),d['unsigned long long']=h(64,{unsigned:!0}),d.double=(e,d)=>{const n=+e;if(!b(n))throw new TypeError(a('is not a finite floating-point value',d));return n},d['unrestricted double']=(e)=>{const d=+e;return d},d.float=(e,d)=>{const n=+e;if(!b(n))throw new TypeError(a('is not a finite floating-point value',d));if(Object.is(n,-0))return n;const i=v(n);if(!b(i))throw new TypeError(a('is outside the range of a single-precision floating-point value',d));return i},d['unrestricted float']=(e)=>{const d=+e;return isNaN(d)?d:Object.is(d,-0)?d:v(d)},d.DOMString=function(e,d){if(void 0===d&&(d={}),d.treatNullAsEmptyString&&null===e)return'';if('symbol'==typeof e)throw new TypeError(a('is a symbol, which cannot be converted to a string',d));return e+''},d.ByteString=(e,n)=>{const u=d.DOMString(e,n);let p;for(let d=0;(p=u.codePointAt(d))!==void 0;++d)if(255<p)throw new TypeError(a('is not a valid ByteString',n));return u},d.USVString=(e,i)=>{const a=d.DOMString(e,i),p=a.length,n=[];for(let t=0;t<p;++t){const e=a.charCodeAt(t);if(55296>e||57343<e)n.push(u(e));else if(56320<=e&&57343>=e)n.push('\uFFFD');else if(t===p-1)n.push('\uFFFD');else{const i=a.charCodeAt(t+1);if(56320<=i&&57343>=i){const d=1023&e,a=1023&i;n.push(u(65536+1024*d+a)),++t}else n.push('\uFFFD')}}return n.join('')},d.object=(e,d)=>{if('Object'!==f(e))throw new TypeError(a('is not an object',d));return e},[Error,ArrayBuffer,DataView,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Uint8ClampedArray,Float32Array,Float64Array].forEach((e)=>{const n=e.name,i=/^[AEIOU]/.test(n)?'an':'a';d[n]=(d,u)=>{if(!(d instanceof e))throw new TypeError(a(`is not ${i} ${n} object`,u));return d}}),d.ArrayBufferView=(e,d)=>{if(!ArrayBuffer.isView(e))throw new TypeError(a('is not a view on an ArrayBuffer object',d));return e},d.BufferSource=(e,d)=>{if(!(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))throw new TypeError(a('is not an ArrayBuffer object or a view on one',d));return e},d.DOMTimeStamp=d['unsigned long long'],d.Function=g,d.VoidFunction=g},function(e,d,n){'use strict';function i(){const e=[];for(let d=0;d<arguments.length&&1>d;++d)e[d]=arguments[d];if(!(e[0]!==void 0))e[0]='';else if(!u.isObject(e[0]))e[0]=a.USVString(e[0],{context:'Failed to construct \'URLSearchParams\': parameter 1'});else if(void 0!==e[0][Symbol.iterator]){if(!u.isObject(e[0]))throw new TypeError('Failed to construct \'URLSearchParams\': parameter 1 sequence is not an iterable object.');else{const d=[],n=e[0];for(let e of n){if(!u.isObject(e))throw new TypeError('Failed to construct \'URLSearchParams\': parameter 1 sequence\'s element is not an iterable object.');else{const d=[],n=e;for(let e of n)e=a.USVString(e,{context:'Failed to construct \'URLSearchParams\': parameter 1 sequence\'s element\'s element'}),d.push(e);e=d}d.push(e)}e[0]=d}}else if(!u.isObject(e[0]))throw new TypeError('Failed to construct \'URLSearchParams\': parameter 1 record is not an object.');else{const d=Object.create(null);for(const n of Reflect.ownKeys(e[0])){const i=Object.getOwnPropertyDescriptor(e[0],n);if(i&&i.enumerable){let i=n,u=e[0][n];i=a.USVString(i,{context:'Failed to construct \'URLSearchParams\': parameter 1 record\'s key'}),u=a.USVString(u,{context:'Failed to construct \'URLSearchParams\': parameter 1 record\'s value'}),d[i]=u}}e[0]=d}f.setup(this,e)}const a=n(162),u=n(165),p=u.implSymbol,t=Object.create(u.IteratorPrototype,{next:{value:function e(){const d=this[u.iterInternalSymbol],{target:n,kind:i,index:a}=d,t=Array.from(n[p]),f=t.length;if(a>=f)return{value:void 0,done:!0};const r=t[a];d.index=a+1;const[o,l]=r.map(u.tryWrapperForImpl);let s;return'key'===i?s=o:'value'===i?s=l:'key+value'===i?s=[o,l]:void 0,{value:s,done:!1}},writable:!0,enumerable:!0,configurable:!0},[Symbol.toStringTag]:{value:'URLSearchParamsIterator',writable:!1,enumerable:!1,configurable:!0}});Object.defineProperty(i,'prototype',{value:i.prototype,writable:!1,enumerable:!1,configurable:!1}),Object.defineProperty(i.prototype,Symbol.iterator,{writable:!0,enumerable:!1,configurable:!0,value:function d(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return e.exports.createDefaultIterator(this,'key+value')}}),i.prototype.forEach=function d(n){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');if(1>arguments.length)throw new TypeError('Failed to execute \'forEach\' on \'URLSearchParams\': 1 argument required, but only 0 present.');if('function'!=typeof n)throw new TypeError('Failed to execute \'forEach\' on \'URLSearchParams\': The callback provided as parameter 1 is not a function.');const a=arguments[1];for(let e=Array.from(this[p]),d=0;d<e.length;){const[i,t]=e[d].map(u.tryWrapperForImpl);n.call(a,t,i,this),e=Array.from(this[p]),d++}},i.prototype.append=function d(n,i){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');if(2>arguments.length)throw new TypeError('Failed to execute \'append\' on \'URLSearchParams\': 2 arguments required, but only '+arguments.length+' present.');const u=[];for(let e=0;e<arguments.length&&2>e;++e)u[e]=arguments[e];return u[0]=a.USVString(u[0],{context:'Failed to execute \'append\' on \'URLSearchParams\': parameter 1'}),u[1]=a.USVString(u[1],{context:'Failed to execute \'append\' on \'URLSearchParams\': parameter 2'}),this[p].append(...u)},i.prototype.delete=function d(n){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');if(1>arguments.length)throw new TypeError('Failed to execute \'delete\' on \'URLSearchParams\': 1 argument required, but only '+arguments.length+' present.');const u=[];for(let e=0;e<arguments.length&&1>e;++e)u[e]=arguments[e];return u[0]=a.USVString(u[0],{context:'Failed to execute \'delete\' on \'URLSearchParams\': parameter 1'}),this[p].delete(...u)},i.prototype.get=function d(n){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');if(1>arguments.length)throw new TypeError('Failed to execute \'get\' on \'URLSearchParams\': 1 argument required, but only '+arguments.length+' present.');const u=[];for(let e=0;e<arguments.length&&1>e;++e)u[e]=arguments[e];return u[0]=a.USVString(u[0],{context:'Failed to execute \'get\' on \'URLSearchParams\': parameter 1'}),this[p].get(...u)},i.prototype.getAll=function d(n){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');if(1>arguments.length)throw new TypeError('Failed to execute \'getAll\' on \'URLSearchParams\': 1 argument required, but only '+arguments.length+' present.');const t=[];for(let e=0;e<arguments.length&&1>e;++e)t[e]=arguments[e];return t[0]=a.USVString(t[0],{context:'Failed to execute \'getAll\' on \'URLSearchParams\': parameter 1'}),u.tryWrapperForImpl(this[p].getAll(...t))},i.prototype.has=function d(n){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');if(1>arguments.length)throw new TypeError('Failed to execute \'has\' on \'URLSearchParams\': 1 argument required, but only '+arguments.length+' present.');const u=[];for(let e=0;e<arguments.length&&1>e;++e)u[e]=arguments[e];return u[0]=a.USVString(u[0],{context:'Failed to execute \'has\' on \'URLSearchParams\': parameter 1'}),this[p].has(...u)},i.prototype.set=function d(n,i){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');if(2>arguments.length)throw new TypeError('Failed to execute \'set\' on \'URLSearchParams\': 2 arguments required, but only '+arguments.length+' present.');const u=[];for(let e=0;e<arguments.length&&2>e;++e)u[e]=arguments[e];return u[0]=a.USVString(u[0],{context:'Failed to execute \'set\' on \'URLSearchParams\': parameter 1'}),u[1]=a.USVString(u[1],{context:'Failed to execute \'set\' on \'URLSearchParams\': parameter 2'}),this[p].set(...u)},i.prototype.sort=function d(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return this[p].sort()},i.prototype.toString=function d(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return this[p].toString()},i.prototype.entries=i.prototype[Symbol.iterator],i.prototype.keys=function d(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return e.exports.createDefaultIterator(this,'key')},i.prototype.values=function d(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return e.exports.createDefaultIterator(this,'value')},Object.defineProperty(i.prototype,Symbol.toStringTag,{value:'URLSearchParams',writable:!1,enumerable:!1,configurable:!0});const f={mixedInto:[],is(d){if(d){if(d[p]instanceof r.implementation)return!0;for(let n=0;n<e.exports.mixedInto.length;++n)if(d instanceof e.exports.mixedInto[n])return!0}return!1},isImpl(d){if(d){if(d instanceof r.implementation)return!0;const n=u.wrapperForImpl(d);for(let d=0;d<e.exports.mixedInto.length;++d)if(n instanceof e.exports.mixedInto[d])return!0}return!1},convert(d,{context:n='The provided value'}={}){if(e.exports.is(d))return u.implForWrapper(d);throw new TypeError(`${n} is not of type 'URLSearchParams'.`)},createDefaultIterator(e,d){const n=Object.create(t);return Object.defineProperty(n,u.iterInternalSymbol,{value:{target:e,kind:d,index:0},writable:!1,enumerable:!1,configurable:!0}),n},create(e,d){let n=Object.create(i.prototype);return n=this.setup(n,e,d),n},createImpl(e,d){let n=Object.create(i.prototype);return n=this.setup(n,e,d),u.implForWrapper(n)},_internalSetup(e){},setup(e,d,n){return n||(n={}),n.wrapper=e,this._internalSetup(e),Object.defineProperty(e,p,{value:new r.implementation(d,n),writable:!1,enumerable:!1,configurable:!0}),e[p][u.wrapperSymbol]=e,r.init&&r.init(e[p],n),e},interface:i,expose:{Window:{URLSearchParams:i},Worker:{URLSearchParams:i}}};e.exports=f;const r=n(296)},function(e,d,n){'use strict';function i(e){return 48<=e&&57>=e}function a(e){return 65<=e&&90>=e||97<=e&&122>=e}function u(e){return a(e)||i(e)}function p(e){return i(e)||65<=e&&70>=e||97<=e&&102>=e}e.exports={isASCIIDigit:i,isASCIIAlpha:a,isASCIIAlphanumeric:u,isASCIIHex:p}},function(e,d,n){'use strict';(function(n){function i(e){return'object'==typeof e&&null!==e||'function'==typeof e}function a(e){return Object.getPrototypeOf(e)===n.prototype?e:e instanceof ArrayBuffer?n.from(e):n.from(e.buffer,e.byteOffset,e.byteLength)}function u(e){return n.from(a(e))}function p(e,d){const n=Object.getOwnPropertyNames(d);for(let a=0;a<n.length;++a)n[a]in e||Object.defineProperty(e,n[a],Object.getOwnPropertyDescriptor(d,n[a]))}function t(e,d,n){return(e[h]||(e[h]=Object.create(null)),d in e[h])?e[h][d]:(e[h][d]=n(),e[h][d])}function f(e){return e?e[m]:null}function r(e){return e?e[c]:null}function o(e){const d=f(e);return d?d:e}function l(e){const d=r(e);return d?d:e}function s(e){if('string'!=typeof e)return!1;const d=e>>>0;if(d==4294967295)return!1;const n=`${d}`;return!(e!==n)}const m=Symbol('wrapper'),c=Symbol('impl'),h=Symbol('SameObject caches'),g=Symbol('internal'),y=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())),v=Symbol('supports property index'),b=Symbol('supported property indices'),_=Symbol('supports property name'),w=Symbol('supported property names'),x=Symbol('indexed property get'),k=Symbol('indexed property set new'),S=Symbol('indexed property set existing'),T=Symbol('named property get'),N=Symbol('named property set new'),I=Symbol('named property set existing'),j=Symbol('named property delete');e.exports=d={isObject:i,getReferenceToBytes:a,getCopyToBytes:u,mixin:p,wrapperSymbol:m,implSymbol:c,getSameObject:t,wrapperForImpl:f,implForWrapper:r,tryWrapperForImpl:o,tryImplForWrapper:l,iterInternalSymbol:g,IteratorPrototype:y,isArrayIndexPropName:s,supportsPropertyIndex:v,supportedPropertyIndices:b,supportsPropertyName:_,supportedPropertyNames:w,indexedGet:x,indexedSetNew:k,indexedSetExisting:S,namedGet:T,namedSetNew:N,namedSetExisting:I,namedDelete:j}}).call(d,n(8).Buffer)},function(e,d){e.exports=n},function(e,d,n){'use strict';function i(e){return e&&e.__esModule?e:{default:e}}var a=n(43),u=i(a),p={BlankNode:n(17),Collection:n(41),convert:n(117),DataFactory:n(42),Empty:n(193),Fetcher:n(69),Formula:n(118),IndexedFormula:u.default,jsonParser:n(194),Literal:n(27),log:n(18),N3Parser:n(44),NamedNode:n(2),Namespace:n(33),Node:n(6),parse:n(119),Query:n(45).Query,queryToSPARQL:n(195),RDFaProcessor:n(70),RDFParser:n(71),serialize:n(72),Serializer:n(73),SPARQLToQuery:n(196),sparqlUpdateParser:n(120),Statement:n(46),term:n(6).fromValue,UpdateManager:n(197),UpdatesSocket:n(121).UpdatesSocket,UpdatesVia:n(121).UpdatesVia,uri:n(7),Util:n(11),Variable:n(47)};p.NextId=p.BlankNode.nextId,p.fromNT=p.Formula.prototype.fromNT,p.fetcher=p.DataFactory.fetcher,p.graph=p.DataFactory.graph,p.lit=p.DataFactory.lit,p.st=p.DataFactory.st,p.sym=p.DataFactory.namedNode,p.variable=p.DataFactory.variable,p.blankNode=p.DataFactory.blankNode,p.defaultGraph=p.DataFactory.defaultGraph,p.literal=p.DataFactory.literal,p.namedNode=p.DataFactory.namedNode,p.quad=p.DataFactory.quad,p.triple=p.DataFactory.triple,e.exports=p},function(e,d,n){'use strict';(function(d){function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var a=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),u=n(21),p=n(63),t=n(110),f=function(){function e(d){i(this,e),this.params=d}return a(e,[{key:'sign',value:function e(n,i){var a=this.params;return i=new t().encode(i),p.subtle.sign(a,n,i).then(function(e){return u(d.from(e))})}},{key:'verify',value:function e(d,n,i){var a=this.params;return'string'==typeof n&&(n=Uint8Array.from(u.toBuffer(n))),'string'==typeof i&&(i=new t().encode(i)),p.subtle.verify(a,d,n,i)}},{key:'assertSufficientKeyLength',value:function e(d){if(d.length<this.bitlength)throw new Error('The key is too short.')}}]),e}();e.exports=f}).call(d,n(8).Buffer)},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var a=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),u=function(){function e(){i(this,e)}return a(e,[{key:'sign',value:function e(){return Promise.resolve('')}},{key:'verify',value:function e(){}}]),e}();e.exports=u},function(e,d,n){'use strict';(function(d){function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var a=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),u=n(21),p=n(63),t=n(110),f=function(){function e(d){i(this,e),this.params=d}return a(e,[{key:'sign',value:function e(n,i){var a=this.params;return i=new t().encode(i),p.subtle.sign(a,n,i).then(function(e){return u(d.from(e))})}},{key:'verify',value:function e(d,n,i){var a=this.params;return'string'==typeof n&&(n=Uint8Array.from(u.toBuffer(n))),'string'==typeof i&&(i=new t().encode(i)),p.subtle.verify(a,d,n,i)}},{key:'importKey',value:function e(d){var n=Object.assign({},d),i=this.params,a=d.key_ops||[];return('sig'===d.use&&a.push('verify'),'enc'===d.use)?Promise.resolve(d):(d.key_ops&&(a=d.key_ops),p.subtle.importKey('jwk',n,i,!0,a).then(function(e){return Object.defineProperty(n,'cryptoKey',{enumerable:!1,value:e}),n}))}}]),e}();e.exports=f}).call(d,n(8).Buffer)},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var a=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),u=n(101),p=['sign','verify','encrypt','decrypt','importKey'],t=function(){function e(){var d=this;i(this,e),p.forEach(function(e){d[e]={}})}return a(e,[{key:'define',value:function e(d,n,i){var a=this[n];a[d]=i}},{key:'normalize',value:function e(d,n){var i=this[d];if(!i)return new SyntaxError;var a=i[n];return a?a:new u(n)}}],[{key:'operations',get:function e(){return p}}]),e}();e.exports=t},function(e,d,n){'use strict';var i=n(169),a=n(168),u=n(170),p=n(171),t=new p;t.define('HS256','sign',new a({name:'HMAC',hash:{name:'SHA-256'}})),t.define('HS384','sign',new a({name:'HMAC',hash:{name:'SHA-384'}})),t.define('HS512','sign',new a({name:'HMAC',hash:{name:'SHA-512'}})),t.define('RS256','sign',new u({name:'RSASSA-PKCS1-v1_5',hash:{name:'SHA-256'}})),t.define('RS384','sign',new u({name:'RSASSA-PKCS1-v1_5',hash:{name:'SHA-384'}})),t.define('RS512','sign',new u({name:'RSASSA-PKCS1-v1_5',hash:{name:'SHA-512'}})),t.define('none','sign',new i({})),t.define('HS256','verify',new a({name:'HMAC',hash:{name:'SHA-256'}})),t.define('HS384','verify',new a({name:'HMAC',hash:{name:'SHA-384'}})),t.define('HS512','verify',new a({name:'HMAC',hash:{name:'SHA-512'}})),t.define('RS256','verify',new u({name:'RSASSA-PKCS1-v1_5',hash:{name:'SHA-256'}})),t.define('RS384','verify',new u({name:'RSASSA-PKCS1-v1_5',hash:{name:'SHA-384'}})),t.define('RS512','verify',new u({name:'RSASSA-PKCS1-v1_5',hash:{name:'SHA-512'}})),t.define('none','verify',new i({})),t.define('RS256','importKey',new u({name:'RSASSA-PKCS1-v1_5',hash:{name:'SHA-256'}})),t.define('RS384','importKey',new u({name:'RSASSA-PKCS1-v1_5',hash:{name:'SHA-384'}})),t.define('RS512','importKey',new u({name:'RSASSA-PKCS1-v1_5',hash:{name:'SHA-512'}})),e.exports=t},function(e,d,n){'use strict';var i=n(5),a=i.Formats;a.register('StringOrURI',/(?:)/),a.register('NumericDate',/(?:)/),a.register('URI',/(?:)/),a.register('url',/(?:)/),a.register('base64',/(?:)/),a.register('base64url',/(?:)/),a.register('MediaType',/(?:)/)},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}function a(e,d){if(!e)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return d&&('object'==typeof d||'function'==typeof d)?d:e}function u(e,d){if('function'!=typeof d&&null!==d)throw new TypeError('Super expression must either be null or a function, not '+typeof d);e.prototype=Object.create(d&&d.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),d&&(Object.setPrototypeOf?Object.setPrototypeOf(e,d):e.__proto__=d)}var p=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),t=n(5),f=t.JSONDocument,r=n(107),o=n(103),l=function(e){function d(){return i(this,d),a(this,(d.__proto__||Object.getPrototypeOf(d)).apply(this,arguments))}return u(d,e),p(d,null,[{key:'importKeys',value:function e(n){var i=this.schema.validate(n);if(!i.valid)return Promise.reject(new Error('Invalid JWKSet: '+JSON.stringify(i,null,2)));if(!n.keys)return Promise.reject(new Error('Cannot import JWKSet: keys property is empty'));var a,u;try{a=new d(n),u=n.keys.map(function(e){return o.importKey(e)})}catch(e){return Promise.reject(e)}return Promise.all(u).then(function(e){return a.keys=e,a})}},{key:'schema',get:function e(){return r}}]),d}(f);e.exports=l},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}function a(e,d){if(!e)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return d&&('object'==typeof d||'function'==typeof d)?d:e}function u(e,d){if('function'!=typeof d&&null!==d)throw new TypeError('Super expression must either be null or a function, not '+typeof d);e.prototype=Object.create(d&&d.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),d&&(Object.setPrototypeOf?Object.setPrototypeOf(e,d):e.__proto__=d)}var p='function'==typeof Symbol&&'symbol'==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&'function'==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?'symbol':typeof e},t=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),f=n(21),r=n(5),o=r.JSONDocument,l=n(109),s=n(104),m=n(100),c=function(e){function d(){return i(this,d),a(this,(d.__proto__||Object.getPrototypeOf(d)).apply(this,arguments))}return u(d,e),t(d,[{key:'isJWE',value:function e(){return!!this.header.enc}},{key:'resolveKeys',value:function e(d){var n=this.header.kid,i,a;if(Array.isArray(d)&&(i=d),d.keys&&(i=d.keys),d.keys||'object'!==('undefined'==typeof d?'undefined':p(d))||(i=[d]),!i)throw new m('Invalid JWK argument');return a=n?i.find(function(e){return e.kid===n}):i.find(function(e){return'sig'===e.use}),!!a&&(this.key=a.cryptoKey,!0)}},{key:'encode',value:function e(){var d=this.validate();if(!d.valid)return Promise.reject(d);var n=this;return this.isJWE()?JWE.encrypt(n):s.sign(n)}},{key:'verify',value:function e(){var d=this.validate();return d.valid?s.verify(this):Promise.reject(d)}}],[{key:'decode',value:function e(d){var n=this,i;if('string'!=typeof d)throw new m('JWT must be a string');if(d.startsWith('{')){try{d=JSON.parse(d,function(){})}catch(e){throw new m('Invalid JWT serialization')}d.serialization=d.signatures||d.recipients?'json':'flattened',i=new n(d,{filter:!1})}else try{var a='compact',u=d.split('.'),p=u.length;if(3!==p&&5!==p)throw new Error('Malformed JWT');var t=JSON.parse(f.decode(u[0]));if(3===p){var r='JWS',o=JSON.parse(f.decode(u[1])),l=u[2];i=new n({type:r,segments:u,header:t,payload:o,signature:l,serialization:a},{filter:!1})}5===p}catch(e){throw new m('Invalid JWT compact serialization')}return i}},{key:'encode',value:function e(n,i,a){var u=new d(n,i);return u.encode(a)}},{key:'verify',value:function e(n,i){var a=d.decode(i);return a.key=n,a.verify().then(function(e){return a})}},{key:'schema',get:function e(){return l}}]),d}(o);e.exports=c},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}function a(e,d){if(!e)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return d&&('object'==typeof d||'function'==typeof d)?d:e}function u(e,d){if('function'!=typeof d&&null!==d)throw new TypeError('Super expression must either be null or a function, not '+typeof d);e.prototype=Object.create(d&&d.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),d&&(Object.setPrototypeOf?Object.setPrototypeOf(e,d):e.__proto__=d)}var t=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),f=n(39),r=f.URL,o=n(25),l=o.JWT,s=o.JWK,m=3600,c=function(e){function d(){return i(this,d),a(this,(d.__proto__||Object.getPrototypeOf(d)).apply(this,arguments))}return u(d,e),t(d,null,[{key:'issueFor',value:function e(n,i){if(!n)throw new Error('Cannot issue PoPToken - missing resource server URI');if(!i.sessionKey)throw new Error('Cannot issue PoPToken - missing session key');if(!i.authorization.id_token)throw new Error('Cannot issue PoPToken - missing id token');var a=JSON.parse(i.sessionKey);return s.importKey(a).then(function(e){var a={aud:new r(n).origin,key:e,iss:i.authorization.client_id,id_token:i.authorization.id_token};return d.issue(a)}).then(function(e){return e.encode()})}},{key:'issue',value:function e(n){var i=n.aud,a=n.iss,u=n.key,t=u.alg,f=n.iat||p(Date.now()/1e3),r=n.max||m,o=f+r,l={alg:t},s={iss:a,aud:i,exp:o,iat:f,id_token:n.id_token,token_type:'pop'},c=new d({header:l,payload:s,key:u.cryptoKey},{filter:!1});return c}}]),d}(l);e.exports=c},function(e,d,n){(function(d){const i=n(68),a=n(21),u=n(63),{JWT:p}=n(25),t=n(65),{URL:f}=n(39);class r{static create(e,n,p){const{provider:o,defaults:l,registration:s}=e;let m,c,h,g;return Promise.resolve().then(()=>(i(o.configuration,'RelyingParty provider OpenID Configuration is missing'),i(l.authenticate,'RelyingParty default authentication parameters are missing'),i(s,'RelyingParty client registration is missing'),m=o.configuration.issuer,c=o.configuration.authorization_endpoint,h={client_id:s.client_id},g=Object.assign(l.authenticate,h,n),i(m,'Missing issuer in provider OpenID Configuration'),i(c,'Missing authorization_endpoint in provider OpenID Configuration'),i(g.scope,'Missing scope parameter in authentication request'),i(g.response_type,'Missing response_type parameter in authentication request'),i(g.client_id,'Missing client_id parameter in authentication request'),i(g.redirect_uri,'Missing redirect_uri parameter in authentication request'),g.state=Array.from(u.getRandomValues(new Uint8Array(16))),g.nonce=Array.from(u.getRandomValues(new Uint8Array(16))),Promise.all([u.subtle.digest({name:'SHA-256'},new Uint8Array(g.state)),u.subtle.digest({name:'SHA-256'},new Uint8Array(g.nonce))]))).then((e)=>{let n=a(d.from(e[0])),i=a(d.from(e[1])),u=`${m}/requestHistory/${n}`;p[u]=JSON.stringify(g),g.state=n,g.nonce=i}).then(()=>r.generateSessionKeys()).then((e)=>{r.storeSessionKeys(e,g,p)}).then(()=>{if(o.configuration.request_parameter_supported)return r.encodeRequestParams(g).then((e)=>{g=e})}).then(()=>{let e=new f(c);return e.search=t.encode(g),e.href})}static generateSessionKeys(){return u.subtle.generateKey({name:'RSASSA-PKCS1-v1_5',modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:{name:'SHA-256'}},!0,['sign','verify']).then((e)=>Promise.all([u.subtle.exportKey('jwk',e.publicKey),u.subtle.exportKey('jwk',e.privateKey)])).then((e)=>{let[d,n]=e;return{public:d,private:n}})}static storeSessionKeys(e,d,n){n['oidc.session.privateKey']=JSON.stringify(e.private),d.key=e.public}static encodeRequestParams(e){const d=['scope','client_id','response_type','state'],n=Object.keys(e).filter((e)=>!d.includes(e));let i={};n.forEach((d)=>{i[d]=e[d]});let a=new p({header:{alg:'none'},payload:i},{filter:!1});return a.encode().then((d)=>{let n={scope:e.scope,client_id:e.client_id,response_type:e.response_type,request:d,state:e.state};return n})}}e.exports=r}).call(d,n(8).Buffer)},function(e,d,n){(function(d,i){const{URL:a}=n(39),u=n(68),t=n(63),f=n(21),r=n(99),o=r.Headers?r.Headers:d.Headers,l=n(65),s=n(179),m=n(183),c=n(66),h=n(279);class g{constructor({rp:e,redirect:d,body:n,session:i,mode:a,params:u={}}){this.rp=e,this.redirect=d,this.body=n,this.session=i,this.mode=a,this.params=u}static validateResponse(e){return Promise.resolve(e).then(this.parseResponse).then(this.errorResponse).then(this.matchRequest).then(this.validateStateParam).then(this.validateResponseMode).then(this.validateResponseParams).then(this.exchangeAuthorizationCode).then(this.validateIDToken).then(m.fromAuthResponse)}static parseResponse(e){let{redirect:d,body:n}=e;if(d&&n||!d&&!n)throw new h(400,'Invalid response mode');if(d){let n=new a(d),{search:i,hash:u}=n;if(i&&u||!i&&!u)throw new h(400,'Invalid response mode');i&&(e.params=l.decode(i.substring(1)),e.mode='query'),u&&(e.params=l.decode(u.substring(1)),e.mode='fragment')}return n&&(e.params=l.decode(n),e.mode='form_post'),e}static errorResponse(e){const d=e.params.error;if(d){const n={error:d,error_description:e.params.error_description,error_uri:e.params.error_uri,state:e.params.state},i=new Error(`AuthenticationResponse error: ${d}`);throw i.info=n,i}return e}static matchRequest(e){let{rp:d,params:n,session:i}=e,a=n.state,u=d.provider.configuration.issuer;if(!a)throw new Error('Missing state parameter in authentication response');let p=`${u}/requestHistory/${a}`,t=i[p];if(!t)throw new Error('Mismatching state parameter in authentication response');return e.request=JSON.parse(t),e}static validateStateParam(e){let d=new Uint8Array(e.request.state),n=e.params.state;return t.subtle.digest({name:'SHA-256'},d).then((d)=>{if(n!==f(i.from(d)))throw new Error('Mismatching state parameter in authentication response');return e})}static validateResponseMode(e){if('code'!==e.request.response_type&&'query'===e.mode)throw new Error('Invalid response mode');return e}static validateResponseParams(e){let{request:d,params:n}=e,i=d.response_type.split(' ');return i.includes('code')&&u(n.code,'Missing authorization code in authentication response'),i.includes('id_token')&&u(n.id_token,'Missing id_token in authentication response'),i.includes('token')&&(u(n.access_token,'Missing access_token in authentication response'),u(n.token_type,'Missing token_type in authentication response')),e}static exchangeAuthorizationCode(e){let{rp:d,params:n,request:a}=e,p=n.code;if(!p||'code'!==a.response_type)return Promise.resolve(e);let{provider:t,registration:f}=d,s=f.client_id,m=f.client_secret;if(!m)return Promise.reject(new Error('Client cannot exchange authorization code because it is not a confidential client'));let h=t.configuration.token_endpoint,g='POST',y=new o({"Content-Type":'application/x-www-form-urlencoded'}),v={grant_type:'authorization_code',code:p,redirect_uri:a.redirect_uri},b=f.token_endpoint_auth_method||'client_secret_basic';if('client_secret_basic'===b){let e=new i(`${s}:${m}`).toString('base64');y.set('Authorization',`Basic ${e}`)}'client_secret_post'===b&&(v.client_id=s,v.client_secret=m);let _=l.encode(v);return r(h,{method:g,headers:y,body:_}).then(c('Error exchanging authorization code')).then((e)=>e.json()).then((d)=>(u(d.access_token,'Missing access_token in token response'),u(d.token_type,'Missing token_type in token response'),u(d.id_token,'Missing id_token in token response'),e.params=Object.assign(e.params,d),e))}static validateIDToken(e){return e.params.id_token?Promise.resolve(e).then(g.decryptIDToken).then(g.decodeIDToken).then(g.validateIssuer).then(g.validateAudience).then(g.resolveKeys).then(g.verifySignature).then(g.validateExpires).then(g.verifyNonce).then(g.validateAcr).then(g.validateAuthTime).then(g.validateAccessTokenHash).then(g.validateAuthorizationCodeHash):Promise.resolve(e)}static decryptIDToken(e){return Promise.resolve(e)}static decodeIDToken(e){let d=e.params.id_token;try{e.decoded=s.decode(d)}catch(e){const n=new h(400,'Error decoding ID Token');throw n.cause=e,n.info={id_token:d},n}return e}static validateIssuer(e){let d=e.rp.provider.configuration,n=e.decoded.payload;if(n.iss!==d.issuer)throw new Error('Mismatching issuer in ID Token');return e}static validateAudience(e){let d=e.rp.registration,{aud:n,azp:i}=e.decoded.payload;if('string'==typeof n&&n!==d.client_id)throw new Error('Mismatching audience in id_token');if(Array.isArray(n)&&!n.includes(d.client_id))throw new Error('Mismatching audience in id_token');if(Array.isArray(n)&&!i)throw new Error('Missing azp claim in id_token');if(i&&i!==d.client_id)throw new Error('Mismatching azp claim in id_token');return e}static resolveKeys(e){let d=e.rp,n=d.provider,i=e.decoded;return Promise.resolve(n.jwks).then((e)=>e?e:d.jwks()).then((d)=>{if(i.resolveKeys(d))return Promise.resolve(e);throw new Error('Cannot resolve signing key for ID Token')})}static verifySignature(e){let d=e.decoded.header.alg,n=e.rp.registration,i=n.id_token_signed_response_alg||'RS256';if(d!==i)throw new Error(`Expected ID Token to be signed with ${i}`);return e.decoded.verify().then((d)=>{if(!d)throw new Error('Invalid ID Token signature');return e})}static validateExpires(e){let d=e.decoded.payload.exp;if(d<=p(Date.now()/1e3))throw new Error('Expired ID Token');return e}static verifyNonce(e){let d=new Uint8Array(e.request.nonce),n=e.decoded.payload.nonce;if(!n)throw new Error('Missing nonce in ID Token');return t.subtle.digest({name:'SHA-256'},d).then((d)=>{if(n!==f(i.from(d)))throw new Error('Mismatching nonce in ID Token');return e})}static validateAcr(e){return e}static validateAuthTime(e){return e}static validateAccessTokenHash(e){return e}static validateAuthorizationCodeHash(e){return e}}e.exports=g}).call(d,n(1),n(8).Buffer)},function(e,d,n){const{JWT:i}=n(25),a=n(180);class u extends i{static get schema(){return a}}e.exports=u},function(e,d,n){const{JWTSchema:i}=n(25),a=i.extend({properties:{header:{},payload:{properties:{iss:{type:'string',format:'url'},sub:{type:'string',maxLength:255},auth_time:{type:'integer',format:'NumericDate'},nonce:{type:'string'},acr:{type:'string'},amr:{type:'array',items:{type:'string'}},azp:{type:'string',format:'StringOrURI'}},required:['iss','sub','aud','exp','iat']}}});e.exports=a},function(e,d,n){'use strict';const{URL:i}=n(39),{JWT:a,JWK:u}=n(25),t=3600;class f extends a{static issueFor(e,d){if(!e)throw new Error('Cannot issue PoPToken - missing resource server URI');if(!d.sessionKey)throw new Error('Cannot issue PoPToken - missing session key');if(!d.authorization.id_token)throw new Error('Cannot issue PoPToken - missing id token');let n=JSON.parse(d.sessionKey);return u.importKey(n).then((n)=>{let a={aud:new i(e).origin,key:n,iss:d.authorization.client_id,id_token:d.authorization.id_token};return f.issue(a)}).then((e)=>e.encode())}static issue(e){let{aud:d,iss:n,key:i}=e,a=i.alg,u=e.iat||p(Date.now()/1e3),r=e.max||t,o=u+r,l={alg:a},s={iss:n,aud:d,exp:o,iat:u,id_token:e.id_token,token_type:'pop'},m=new f({header:l,payload:s,key:i.cryptoKey},{filter:!1});return m}}e.exports=f},function(e,d,n){const{JSONSchema:i}=n(5),a=new i({type:'object',properties:{provider:{type:'object',properties:{name:{type:'string'},url:{type:'string',format:'uri'},configuration:{},jwks:{}},required:['url']},defaults:{type:'object',properties:{popToken:{type:'boolean',default:!1},authenticate:{type:'object',properties:{redirect_uri:{type:'string',format:'uri'},response_type:{type:'string',default:'id_token token',enum:['code','token','id_token token','id_token token code']},display:{type:'string',default:'page',enum:['page','popup']},scope:{type:['string','array'],default:['openid']}}},register:{}}},registration:{},store:{type:'object',default:{}}}});e.exports=a},function(e,d,n){'use strict';const i=n(99),a=n(66),u=n(181);class p{constructor(e){this.credentialType=e.credentialType||'access_token',this.issuer=e.issuer,this.authorization=e.authorization||{},this.sessionKey=e.sessionKey,this.idClaims=e.idClaims,this.accessClaims=e.accessClaims}static from(e){return new p(e)}static fromAuthResponse(e){const d=n(111);let i=e.decoded&&e.decoded.payload||{},{rp:a}=e,u=a.registration,t=a.defaults.authenticate||{},f=t.credential_type||a.defaults.popToken?'pop_token':'access_token',r=e.session[d.SESSION_PRIVATE_KEY],o={credentialType:f,sessionKey:r,issuer:i.iss,idClaims:i,authorization:{client_id:u.client_id,access_token:e.params.access_token,id_token:e.params.id_token,refresh_token:e.params.refresh_token}};return p.from(o)}get fetch(){return(e,d)=>Promise.resolve().then(()=>this.hasCredentials()?this.fetchWithCredentials(e,d):i(e,d)).then(a('Error while fetching resource'))}bearerTokenFor(e){switch(this.credentialType){case'pop_token':return u.issueFor(e,this);default:return Promise.resolve(this.authorization[this.credentialType]);}}hasCredentials(){switch(this.credentialType){case'pop_token':return!!this.authorization.id_token;default:return!!this.authorization[this.credentialType];}}fetchWithCredentials(e,d={}){return d.headers=d.headers||{},this.bearerTokenFor(e).then((n)=>(d.headers.authorization=`Bearer ${n}`,i(e,d)))}}e.exports=p},function(e,d,n){'use strict';e.exports=n(111)},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var a=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),u=n(114),p=function(){function e(){var d=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};i(this,e),this.initialize(d,n)}return a(e,null,[{key:'schema',get:function e(){throw new Error('Schema must be defined by classes extending JSONDocument')}}]),a(e,[{key:'initialize',value:function e(){var d=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=this.constructor.schema;i.initialize(this,d,n)}},{key:'validate',value:function e(d){var n=this.constructor.schema;return(d||n).validate(this)}},{key:'patch',value:function e(d){var e=new u(d);e.apply(this)}},{key:'select',value:function e(){}},{key:'project',value:function e(d){return d.project(this)}}],[{key:'serialize',value:function e(d){return JSON.stringify(d)}},{key:'deserialize',value:function e(d){try{return JSON.parse(d)}catch(d){throw new Error('Failed to parse JSON')}}}]),e}();e.exports=p},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var a=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),u=n(67),p=1,t=function(){function e(d){var n=this;i(this,e),Object.defineProperty(this,'mapping',{enumerable:!1,value:new Map}),Object.keys(d).forEach(function(e){var i=d[e];n.mapping.set(new u(e,p),new u(i,p))})}return a(e,[{key:'map',value:function e(d,n){this.mapping.forEach(function(e,i){i.add(d,e.get(n))})}},{key:'project',value:function e(d,n){this.mapping.forEach(function(e,i){e.add(n,i.get(d))})}}]),e}();e.exports=t},function(e,d,n){'use strict';function i(e,d,n){return d in e?Object.defineProperty(e,d,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[d]=n,e}function a(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var u='function'==typeof Symbol&&'symbol'==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&'function'==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?'symbol':typeof e},p=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),t=n(113),f=n(115),r=function(){function e(d){a(this,e),Object.assign(this,d),Object.defineProperties(this,{initialize:{enumerable:!1,writeable:!1,value:t.compile(d)},validate:{enumerable:!1,writeable:!1,value:f.compile(d)}})}return p(e,[{key:'extend',value:function d(n){function a(e){return e&&'object'===('undefined'==typeof e?'undefined':u(e))&&null!==e&&!Array.isArray(e)}function p(e,d){var n=Object.assign({},e);return a(e)&&a(d)&&Object.keys(d).forEach(function(u){a(d[u])?u in e?n[u]=p(e[u],d[u]):Object.assign(n,i({},u,d[u])):Object.assign(n,i({},u,d[u]))}),n}var t=p(this,n);return new e(t)}}]),e}();e.exports=r},function(e,d,n){(function(n,i){var u,p;/*! + * async + * https://github.com/caolan/async + * + * Copyright 2010-2014 Caolan McMahon + * Released under the MIT license + */(function(){function t(e){var d=!1;return function(){if(d)throw new Error('Callback was already called.');d=!0,e.apply(r,arguments)}}var f={},r,o;r=this,null!=r&&(o=r.async),f.noConflict=function(){return r.async=o,f};var l=Object.prototype.toString,s=Array.isArray||function(e){return'[object Array]'===l.call(e)},m=function(e,d){for(var n=0;n<e.length;n+=1)d(e[n],n,e)},c=function(e,d){if(e.map)return e.map(d);var n=[];return m(e,function(e,u,i){n.push(d(e,u,i))}),n},h=function(e,d,n){return e.reduce?e.reduce(d,n):(m(e,function(e,u,i){n=d(n,e,u,i)}),n)},g=function(e){if(Object.keys)return Object.keys(e);var d=[];for(var n in e)e.hasOwnProperty(n)&&d.push(n);return d};'undefined'!=typeof n&&n.nextTick?(f.nextTick=n.nextTick,f.setImmediate='undefined'==typeof i?f.nextTick:function(e){i(e)}):'function'==typeof i?(f.nextTick=function(e){i(e)},f.setImmediate=f.nextTick):(f.nextTick=function(e){setTimeout(e,0)},f.setImmediate=f.nextTick),f.each=function(e,d,n){function i(d){d?(n(d),n=function(){}):(a+=1,a>=e.length&&n())}if(n=n||function(){},!e.length)return n();var a=0;m(e,function(e){d(e,t(i))})},f.forEach=f.each,f.eachSeries=function(e,d,n){if(n=n||function(){},!e.length)return n();var i=0,a=function(){d(e[i],function(d){d?(n(d),n=function(){}):(i+=1,i>=e.length?n():a())})};a()},f.forEachSeries=f.eachSeries,f.eachLimit=function(e,d,n,i){var a=y(d);a.apply(null,[e,n,i])},f.forEachLimit=f.eachLimit;var y=function(e){return function(d,n,i){if(i=i||function(){},!d.length||0>=e)return i();var a=0,u=0,p=0;(function t(){if(a>=d.length)return i();for(;p<e&&u<d.length;)u+=1,p+=1,n(d[u-1],function(e){e?(i(e),i=function(){}):(a+=1,p-=1,a>=d.length?i():t())})})()}},v=function(e){return function(){var d=Array.prototype.slice.call(arguments);return e.apply(null,[f.each].concat(d))}},b=function(e,d){return function(){var n=Array.prototype.slice.call(arguments);return d.apply(null,[y(e)].concat(n))}},_=function(e){return function(){var d=Array.prototype.slice.call(arguments);return e.apply(null,[f.eachSeries].concat(d))}},w=function(e,d,n,i){if(d=c(d,function(e,d){return{index:d,value:e}}),!i)e(d,function(e,d){n(e.value,function(e){d(e)})});else{var a=[];e(d,function(e,d){n(e.value,function(n,i){a[e.index]=i,d(n)})},function(e){i(e,a)})}};f.map=v(w),f.mapSeries=_(w),f.mapLimit=function(e,d,n,i){return x(d)(e,n,i)};var x=function(e){return b(e,w)};f.reduce=function(e,d,n,i){f.eachSeries(e,function(e,i){n(d,e,function(e,n){d=n,i(e)})},function(e){i(e,d)})},f.inject=f.reduce,f.foldl=f.reduce,f.reduceRight=function(e,d,n,i){var a=c(e,function(e){return e}).reverse();f.reduce(a,d,n,i)},f.foldr=f.reduceRight;var k=function(e,d,n,i){var a=[];d=c(d,function(e,d){return{index:d,value:e}}),e(d,function(e,d){n(e.value,function(n){n&&a.push(e),d()})},function(e){i(c(a.sort(function(e,d){return e.index-d.index}),function(e){return e.value}))})};f.filter=v(k),f.filterSeries=_(k),f.select=f.filter,f.selectSeries=f.filterSeries;var S=function(e,d,n,i){var a=[];d=c(d,function(e,d){return{index:d,value:e}}),e(d,function(e,d){n(e.value,function(n){n||a.push(e),d()})},function(e){i(c(a.sort(function(e,d){return e.index-d.index}),function(e){return e.value}))})};f.reject=v(S),f.rejectSeries=_(S);var T=function(e,d,n,i){e(d,function(e,d){n(e,function(n){n?(i(e),i=function(){}):d()})},function(e){i()})};f.detect=v(T),f.detectSeries=_(T),f.some=function(e,d,n){f.each(e,function(e,i){d(e,function(e){e&&(n(!0),n=function(){}),i()})},function(e){n(!1)})},f.any=f.some,f.every=function(e,d,n){f.each(e,function(e,i){d(e,function(e){e||(n(!1),n=function(){}),i()})},function(e){n(!0)})},f.all=f.every,f.sortBy=function(e,d,n){f.map(e,function(e,n){d(e,function(d,i){d?n(d):n(null,{value:e,criteria:i})})},function(e,d){if(e)return n(e);var i=function(e,d){var n=e.criteria,i=d.criteria;return n<i?-1:n>i?1:0};n(null,c(d.sort(i),function(e){return e.value}))})},f.auto=function(e,d){d=d||function(){};var n=g(e),i=n.length;if(!i)return d();var u={},p=[],t=function(e){p.unshift(e)},r=function(e){for(var d=0;d<p.length;d+=1)if(p[d]===e)return void p.splice(d,1)},o=function(){i--,m(p.slice(0),function(e){e()})};t(function(){if(!i){var e=d;d=function(){},e(null,u)}}),m(n,function(n){var i=s(e[n])?e[n]:[e[n]],p=function(e){var i=Array.prototype.slice.call(arguments,1);if(1>=i.length&&(i=i[0]),e){var a={};m(g(u),function(e){a[e]=u[e]}),a[n]=i,d(e,a),d=function(){}}else u[n]=i,f.setImmediate(o)},l=i.slice(0,a(i.length-1))||[],c=function(){return h(l,function(e,d){return e&&u.hasOwnProperty(d)},!0)&&!u.hasOwnProperty(n)};if(c())i[i.length-1](p,u);else{var y=function(){c()&&(r(y),i[i.length-1](p,u))};t(y)}})},f.retry=function(e,d,n){var i=5,a=[];'function'==typeof e&&(n=d,d=e,e=i),e=parseInt(e,10)||i;var u=function(i,u){for(var p=function(e,d){return function(n){e(function(e,i){n(!e||d,{err:e,result:i})},u)}};e;)a.push(p(d,!(e-=1)));f.series(a,function(e,d){d=d[d.length-1],(i||n)(d.err,d.result)})};return n?u():u},f.waterfall=function(e,d){if(d=d||function(){},!s(e)){var n=new Error('First argument to waterfall must be an array of functions');return d(n)}if(!e.length)return d();var i=function(e){return function(n){if(n)d.apply(null,arguments),d=function(){};else{var a=Array.prototype.slice.call(arguments,1),u=e.next();u?a.push(i(u)):a.push(d),f.setImmediate(function(){e.apply(null,a)})}}};i(f.iterator(e))()};var N=function(e,d,n){if(n=n||function(){},s(d))e.map(d,function(e,d){e&&e(function(e){var n=Array.prototype.slice.call(arguments,1);1>=n.length&&(n=n[0]),d.call(null,e,n)})},n);else{var i={};e.each(g(d),function(e,n){d[e](function(d){var a=Array.prototype.slice.call(arguments,1);1>=a.length&&(a=a[0]),i[e]=a,n(d)})},function(e){n(e,i)})}};f.parallel=function(e,d){N({map:f.map,each:f.each},e,d)},f.parallelLimit=function(e,d,n){N({map:x(d),each:y(d)},e,n)},f.series=function(e,d){if(d=d||function(){},s(e))f.mapSeries(e,function(e,d){e&&e(function(e){var n=Array.prototype.slice.call(arguments,1);1>=n.length&&(n=n[0]),d.call(null,e,n)})},d);else{var n={};f.eachSeries(g(e),function(d,i){e[d](function(e){var a=Array.prototype.slice.call(arguments,1);1>=a.length&&(a=a[0]),n[d]=a,i(e)})},function(e){d(e,n)})}},f.iterator=function(e){var d=function(n){var i=function(){return e.length&&e[n].apply(null,arguments),i.next()};return i.next=function(){return n<e.length-1?d(n+1):null},i};return d(0)},f.apply=function(e){var d=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,d.concat(Array.prototype.slice.call(arguments)))}};var I=function(e,d,n,i){var a=[];e(d,function(e,d){n(e,function(e,n){a=a.concat(n||[]),d(e)})},function(e){i(e,a)})};f.concat=v(I),f.concatSeries=_(I),f.whilst=function(e,d,n){e()?d(function(i){return i?n(i):void f.whilst(e,d,n)}):n()},f.doWhilst=function(e,d,n){e(function(i){if(i)return n(i);var a=Array.prototype.slice.call(arguments,1);d.apply(null,a)?f.doWhilst(e,d,n):n()})},f.until=function(e,d,n){e()?n():d(function(i){return i?n(i):void f.until(e,d,n)})},f.doUntil=function(e,d,n){e(function(i){if(i)return n(i);var a=Array.prototype.slice.call(arguments,1);d.apply(null,a)?n():f.doUntil(e,d,n)})},f.queue=function(e,d){function n(e,d,n,i){return e.started||(e.started=!0),s(d)||(d=[d]),0==d.length?f.setImmediate(function(){e.drain&&e.drain()}):void m(d,function(d){var a={data:d,callback:'function'==typeof i?i:null};n?e.tasks.unshift(a):e.tasks.push(a),e.saturated&&e.tasks.length===e.concurrency&&e.saturated(),f.setImmediate(e.process)})}d===void 0&&(d=1);var i=0,a={tasks:[],concurrency:d,saturated:null,empty:null,drain:null,started:!1,paused:!1,push:function(e,d){n(a,e,!1,d)},kill:function(){a.drain=null,a.tasks=[]},unshift:function(e,d){n(a,e,!0,d)},process:function(){if(!a.paused&&i<a.concurrency&&a.tasks.length){var d=a.tasks.shift();a.empty&&0===a.tasks.length&&a.empty(),i+=1;var n=function(){i-=1,d.callback&&d.callback.apply(d,arguments),a.drain&&0===a.tasks.length+i&&a.drain(),a.process()},u=t(n);e(d.data,u)}},length:function(){return a.tasks.length},running:function(){return i},idle:function(){return 0===a.tasks.length+i},pause:function(){!0===a.paused||(a.paused=!0)},resume:function(){if(!1!==a.paused){a.paused=!1;for(var e=1;e<=a.concurrency;e++)f.setImmediate(a.process)}}};return a},f.priorityQueue=function(e,d){function n(e,d){return e.priority-d.priority}function i(e,d,n){for(var i=-1,a=e.length-1,u;i<a;)u=i+(a-i+1>>>1),0<=n(d,e[u])?i=u:a=u-1;return i}function a(e,d,a,u){return e.started||(e.started=!0),s(d)||(d=[d]),0==d.length?f.setImmediate(function(){e.drain&&e.drain()}):void m(d,function(d){var p={data:d,priority:a,callback:'function'==typeof u?u:null};e.tasks.splice(i(e.tasks,p,n)+1,0,p),e.saturated&&e.tasks.length===e.concurrency&&e.saturated(),f.setImmediate(e.process)})};var u=f.queue(e,d);return u.push=function(e,d,n){a(u,e,d,n)},delete u.unshift,u},f.cargo=function(e,d){var n=!1,i=[],a={tasks:i,payload:d,saturated:null,empty:null,drain:null,drained:!0,push:function(e,n){s(e)||(e=[e]),m(e,function(e){i.push({data:e,callback:'function'==typeof n?n:null}),a.drained=!1,a.saturated&&i.length===d&&a.saturated()}),f.setImmediate(a.process)},process:function u(){if(!n){if(0===i.length)return a.drain&&!a.drained&&a.drain(),void(a.drained=!0);var p='number'==typeof d?i.splice(0,d):i.splice(0,i.length),t=c(p,function(e){return e.data});a.empty&&a.empty(),n=!0,e(t,function(){n=!1;var e=arguments;m(p,function(d){d.callback&&d.callback.apply(null,e)}),u()})}},length:function(){return i.length},running:function(){return n}};return a};var j=function(e){return function(d){var n=Array.prototype.slice.call(arguments,1);d.apply(null,n.concat([function(d){var n=Array.prototype.slice.call(arguments,1);'undefined'!=typeof console&&(d?console.error&&console.error(d):console[e]&&m(n,function(d){console[e](d)}))}]))}};f.log=j('log'),f.dir=j('dir'),f.memoize=function(e,d){var n={},a={};d=d||function(e){return e};var i=function(){var i=Array.prototype.slice.call(arguments),u=i.pop(),p=d.apply(null,i);p in n?f.nextTick(function(){u.apply(null,n[p])}):p in a?a[p].push(u):(a[p]=[u],e.apply(null,i.concat([function(){n[p]=arguments;var e=a[p];delete a[p];for(var d=0,i=e.length;d<i;d++)e[d].apply(null,arguments)}])))};return i.memo=n,i.unmemoized=e,i},f.unmemoize=function(e){return function(){return(e.unmemoized||e).apply(null,arguments)}},f.times=function(e,d,n){for(var a=[],u=0;u<e;u++)a.push(u);return f.map(a,d,n)},f.timesSeries=function(e,d,n){for(var a=[],u=0;u<e;u++)a.push(u);return f.mapSeries(a,d,n)},f.seq=function(){var e=arguments;return function(){var d=this,n=Array.prototype.slice.call(arguments),i=n.pop();f.reduce(e,n,function(e,n,i){n.apply(d,e.concat([function(){var e=arguments[0],d=Array.prototype.slice.call(arguments,1);i(e,d)}]))},function(e,n){i.apply(d,[e].concat(n))})}},f.compose=function(){return f.seq.apply(null,Array.prototype.reverse.call(arguments))};var O=function(e,d){var n=function(){var n=this,i=Array.prototype.slice.call(arguments),a=i.pop();return e(d,function(e,d){e.apply(n,i.concat([d]))},a)};if(2<arguments.length){var i=Array.prototype.slice.call(arguments,2);return n.apply(this,i)}return n};f.applyEach=v(O),f.applyEachSeries=_(O),f.forever=function(e,d){function n(i){if(i){if(d)return d(i);throw i}e(n)}n()},'undefined'!=typeof e&&e.exports?e.exports=f:!0?(u=[],p=function(){return f}.apply(d,u),!(p!==void 0&&(e.exports=p))):r.async=f})()}).call(d,n(16),n(38).setImmediate)},function(e,d,n){'use strict';function i(e){if(Array.isArray(e)){for(var d=0,n=Array(e.length);d<e.length;d++)n[d]=e[d];return n}return Array.from(e)}var a='function'==typeof Symbol&&'symbol'==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&'function'==typeof Symbol&&e.constructor===Symbol?'symbol':typeof e},u=function(){function e(e,d){var n=[],i=!0,a=!1,u;try{for(var p=e[Symbol.iterator](),t;!(i=(t=p.next()).done)&&(n.push(t.value),!(d&&n.length===d));i=!0);}catch(e){a=!0,u=e}finally{try{!i&&p['return']&&p['return']()}finally{if(a)throw u}}return n}return function(d,n){if(Array.isArray(d))return d;if(Symbol.iterator in Object(d))return e(d,n);throw new TypeError('Invalid attempt to destructure non-iterable instance')}}();Object.defineProperty(d,'__esModule',{value:!0});var p=n(116),t=function e(d){return function(e){return d+'='+(e&&!(0,p.isToken)(e)?(0,p.quote)(e):e)}},f=function e(d){return d.reduce(function(e,d){var n=u(d,2),a=n[0],f=n[1],r=t(a);if(!(0,p.isToken)(a))throw new TypeError;return Array.isArray(f)?[].concat(i(e),i(f.map(r))):[].concat(i(e),[r(f)])},[])},r=function e(d,n){if(Array.isArray(d))return f(d);if('object'===('undefined'==typeof d?'undefined':a(d)))return e(Object.keys(d).map(function(e){return[e,d[e]]}),n);throw new TypeError};d.default=function(e,d,n){var u='string'==typeof e?{scheme:e,token:d,params:n}:e;if('object'!==('undefined'==typeof u?'undefined':a(u)))throw new TypeError;else if(!(0,p.isScheme)(u.scheme))throw new TypeError('Invalid scheme.');return[u.scheme].concat(i('undefined'==typeof u.token?[]:[u.token]),i('undefined'==typeof u.params?[]:r(u.params))).join(' ')}},function(e,d,n){'use strict';function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(d,'__esModule',{value:!0}),d.parse=d.format=void 0;var a=n(189),u=i(a),p=n(191),t=i(p);d.format=u.default,d.parse=t.default},function(e,d,n){'use strict';Object.defineProperty(d,'__esModule',{value:!0});var i=n(116),a=/((?:[a-zA-Z0-9._~+\/-]+=*(?:\s+|$))|[^\u0000-\u001F\u007F()<>@,;:\\"/?={}\[\]\u0020\u0009]+)(?:=([^\\"=\s,]+|"(?:[^"\\]|\\.)*"))?/g,u=function e(d,n){var a='"'===n.charAt(0)?(0,i.unquote)(n):n.trim();if(Array.isArray(d))return d.concat(a);return d?[d,a]:a},p=function e(d,n){for(var i=null,p=null,t={};null!==(i=a.exec(n));)i[2]?t[i[1]]=u(t[i[1]],i[2]):p=u(p,i[1]);return{scheme:d,params:t,token:p}};d.default=function(e){if('string'!=typeof e)throw new TypeError('Header value must be a string.');var d=e.indexOf(' '),n=e.substr(0,d);if(!(0,i.isScheme)(n))throw new TypeError('Invalid scheme '+n);return p(n,e.substr(d))}},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}function a(e,d){if(!e)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return d&&('object'==typeof d||'function'==typeof d)?d:e}function u(e,d){if('function'!=typeof d&&null!==d)throw new TypeError('Super expression must either be null or a function, not '+typeof d);e.prototype=Object.create(d&&d.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),d&&(Object.setPrototypeOf?Object.setPrototypeOf(e,d):e.__proto__=d)}var p=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),t=n(6),f=function(e){function d(){i(this,d);var e=a(this,(d.__proto__||Object.getPrototypeOf(d)).call(this));return e.termType='DefaultGraph',e.value='',e}return u(d,e),p(d,[{key:'toCanonical',value:function e(){return this.value}}]),d}(t);e.exports=f},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}function a(e,d){if(!e)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return d&&('object'==typeof d||'function'==typeof d)?d:e}function u(e,d){if('function'!=typeof d&&null!==d)throw new TypeError('Super expression must either be null or a function, not '+typeof d);e.prototype=Object.create(d&&d.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),d&&(Object.setPrototypeOf?Object.setPrototypeOf(e,d):e.__proto__=d)}var p=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),t=n(6),f=function(e){function d(){i(this,d);var e=a(this,(d.__proto__||Object.getPrototypeOf(d)).call(this));return e.termType=d.termType,e}return u(d,e),p(d,[{key:'toString',value:function e(){return'()'}}]),d}(t);f.termType='empty',e.exports=f},function(e,d,n){'use strict';var i=function(){return{parseJSON:function e(d,n,i){var a={},u=i.sym(n),p,t,f;for(var r in d){0===r.indexOf('_:')?a[r]?p=a[r]:(p=i.bnode(r),a[r]=p):p=i.sym(r);var o=d[r];for(var l in o){var s=o[l];for(var m in t=i.sym(l),s){var c=s[m];if('uri'===c.type)f=i.sym(c.value),i.add(p,t,f,u);else if('BlankNode'===c.type)a[c.value]?f=a[c.value]:(f=i.bnode(c.value),a[c.value]=f),i.add(p,t,f,u);else if('Literal'===c.type)f=c.datatype?i.literal(c.value,void 0,i.sym(c.datatype)):c.lang?i.literal(c.value,c.lang):i.literal(c.value),i.add(p,t,f,u);else throw new Error('error: unexpected termtype: '+m.type)}}}}}}();e.exports=i},function(e,d,n){'use strict';function i(e){function d(e){for(var d=t()+'SELECT ',n=0;n<e.vars.length;n++)d+=e.vars[n]+' ';return d+='\n',d}function n(e){var d='',n=e.statements;for(var i in n)a.debug('Found statement: '+n),d+=t()+n[i]+'\n';return d}function i(e){var d='';for(var n in e.constraints){var i=e.constraints[n];d+=t()+'FILTER ( '+i.describe(n)+' ) \n'}return d}function u(e){for(var d='',p=0;p<e.optional.length;p++)a.debug('Found optional query'),d+=t()+'OPTIONAL { \n',r++,d+=n(e.optional[p]),d+=i(e.optional[p]),d+=u(e.optional[p]),r--,d+=t()+'}\n';return d}function p(e){var d=t()+'WHERE \n{ \n';return r++,d+=n(e),d+=i(e),d+=u(e),r--,d+='}',d}function t(){for(var e='',d=0;d<r;d++)e+=' ';return e}function f(e){return d(e)+p(e.pat)}var r=0;return f(e)}var a=n(18);e.exports=i},function(e,d,n){'use strict';function i(e,d,n){function i(e){if(L[e])return L[e];var d=n.variable(e);return L[e]=d,d}function p(e){return'string'==typeof e&&e.match(/[^ \n\t]/)}function t(e){return'string'==typeof e&&e.match(/^[\?\$]/)}function f(e){return'string'==typeof e?e.replace(/^</,'<').replace(/>$/,'>'):e}function r(e){return'string'==typeof e&&e.match(/^<[^>]*>$/)}function o(e){return'string'==typeof e&&(e.match(/^_:/)||e.match(/^$/))}function l(e){return'string'==typeof e&&e.match(/:$/)}function s(e){return'string'==typeof e&&e.match(/^:|^[^_][^:]*:/)}function m(e){var d=e.split(':');return d[0]}function c(e){var d=e.split(':');return d[1]}function h(e){return r(e)?e.slice(1,e.length-1):e}function g(e){var d=-1===e.indexOf('\'')?null:e.indexOf('\''),i=-1===e.indexOf('"')?null:e.indexOf('"');if(!d&&!i){var p=[,];return p[0]=e,p}var a=[,,],t,f;if(!d||i&&i<d)t='"',f=i;else if(!i||d&&d<i)t='\'',f=d;else return u.error('SQARQL QUERY OOPS!'),a;a[0]=e.slice(0,f);var r=e.slice(f+1).indexOf(t);if(-1===r)return u.error('SPARQL parsing error: no matching parentheses in literal '+e),e;var o;return e.slice(r+f+2).match(/^\^\^/)?(o=e.slice(r+f+2).indexOf(' '),a[1]=n.literal(e.slice(f+1,f+1+r),'',n.sym(h(e.slice(f+4+r,f+2+r+o)))),a=a.concat(g(e.slice(r+f+3+o)))):e.slice(r+f+2).match(/^@/)?(o=e.slice(r+f+2).indexOf(' '),a[1]=n.literal(e.slice(f+1,f+1+r),e.slice(f+3+r,f+2+r+o),null),a=a.concat(g(e.slice(r+f+2+o)))):(a[1]=n.literal(e.slice(f+1,f+1+r),'',null),u.info('Literal found: '+a[1]),a=a.concat(g(e.slice(r+f+2)))),a}function y(e){e=e.replace(/\(/g,' ( ').replace(/\)/g,' ) ').replace(/</g,' <').replace(/>/g,'> ').replace(/{/g,' { ').replace(/}/g,' } ').replace(/[\t\n\r]/g,' ').replace(/; /g,' ; ').replace(/\. /g,' . ').replace(/, /g,' , '),u.info('New str into spaceDelimit: \n'+e);var d=[],n=e.split(' ');for(var i in n)p(n[i])&&(d=d.concat(n[i]));return d}function v(e){for(var d=e,n=0;n<d.length;n++)if('a'===d[n]&&(d[n]='<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>'),'is'===d[n]&&'of'===d[n+2]){d.splice(n,1),d.splice(n+1,1);var i=d[n-1];d[n-1]=d[n+1],d[n+1]=i}return d}function b(e){for(var d=[],a=0;a<e.length;a++){if('string'!=typeof e[a]){d[a]=e[a];continue}e[a]=f(e[a]),t(e[a])?d[a]=i(e[a].slice(1)):o(e[a])?(u.info(e[a]+' was identified as a bnode.'),d[a]=n.bnode()):r(e[a])?(u.info(e[a]+' was identified as a symbol.'),d[a]=n.sym(h(e[a]))):s(e[a])?(u.info(e[a]+' was identified as a prefixed symbol'),U[m(e[a])]?d[a]=n.sym(e[a]=U[m(e[a])]+c(e[a])):(u.error('SPARQL error: '+e[a]+' with prefix '+m(e[a])+' does not have a correct prefix entry.'),d[a]=e[a])):d[a]=e[a]}return d}function _(e){var d=g(e),n=[];for(var i in d)n='string'==typeof d[i]?n.concat(y(d[i])):n.concat(d[i]);return n=v(n),u.info('SPARQL Tokens: '+n),n}function w(e,d){for(var n=0;n<d.length;n++)if('string'==typeof d[n]&&d[n].toLowerCase()===e.toLowerCase())return n;return null}function k(e,d){for(var n=[],a=0;a<d.length;a++)'string'==typeof d[a]&&d[a].toLowerCase()===e.toLowerCase()&&n.push(a);return n}function S(e,d){for(var n in u.info('SPARQL vars: '+e),e)if(t(e[n])){u.info('Added '+e[n]+' to query variables from SPARQL');var a=i(e[n].slice(1));d.vars.push(a),a.label=e[n].slice(1)}else u.warn('Incorrect SPARQL variable in SELECT: '+e[n])}function T(e){var d=k('PREFIX',e),n=[];for(var p in d){var i=e[d[p]+1],a=e[d[p]+2];if(!l(i))u.error('Invalid SPARQL prefix: '+i);else if(!r(a))u.error('Invalid SPARQL symbol: '+a);else{u.info('Prefix found: '+i+' -> '+a);var t=m(i),f=h(a);n[t]=f}}return n}function N(e,d,n){u.info('Looking for a close bracket of type '+n+' in '+e);for(var a=0,p=0;p<e.length;p++)if(e[p]===d&&a++,e[p]===n&&a--,0>a)return p;return u.error('Statement had no close parenthesis in SPARQL query'),0}function I(e){return this.describe=function(d){return d+' > '+e.toNT()},this.test=function(d){return d.value.match(/[0-9]+(\.[0-9]+)?([eE][+-]?[0-9]+)?/)?parseFloat(d.value)>parseFloat(e):d.toNT()>e.toNT()},this}function j(e){return this.describe=function(d){return d+' < '+e.toNT()},this.test=function(d){return d.value.match(/[0-9]+(\.[0-9]+)?([eE][+-]?[0-9]+)?/)?parseFloat(d.value)<parseFloat(e):d.toNT()<e.toNT()},this}function O(e){return this.describe=function(d){return d+' = '+e.toNT()},this.test=function(d){return e.sameTerm(d)},this}function R(e){this.describe=function(d){return'REGEXP( \''+e+'\' , '+d+' )'},this.test=function(d){var n=e,i=new RegExp(n);return!!d.value&&i.test(d.value)}}function D(e,d){3===e.length&&'Variable'===e[0].termType&&('NamedNode'===e[2].termType||'Literal'===e[2].termType)?'='===e[1]?(u.debug('Constraint added: '+e),d.constraints[e[0]]=new O(e[2])):'>'===e[1]?(u.debug('Constraint added: '+e),d.constraints[e[0]]=new O(e[2])):'<'===e[1]?(u.debug('Constraint added: '+e),d.constraints[e[0]]=new O(e[2])):u.warn('I don\'t know how to handle the constraint: '+e):6===e.length&&'string'==typeof e[0]&&'regexp'===e[0].toLowerCase()&&'('===e[1]&&')'===e[5]&&','===e[3]&&'Variable'===e[4].termType&&'Literal'===e[2].termType&&(u.debug('Constraint added: '+e),d.constraints[e[4]]=new R(e[2].value))}function E(e,d){u.debug('Optional query: '+e+' not yet implemented.');var i=n.formula();P(e,i),d.optional.push(i)}function P(e,d){var n=b(e),i;u.debug('WHERE: '+n);for(var a;w('OPTIONAL',n);)a=w('OPTIONAL',n),u.debug('OPT: '+a+' '+n[a]+' in '+n),'{'!==n[a+1]&&u.warn('Bad optional opening bracket in word '+a),i=N(n.slice(a+2),'{','}'),-1===i?u.error('No matching bracket in word '+a):(E(n.slice(a+2,a+2+i),d),a=w('OPTIONAL',n),i=N(n.slice(a+2),'{','}'),n.splice(a,i+3));for(u.debug('WHERE after optionals: '+n);w('FILTER',n);){var p=w('FILTER',n);'('!==n[p+1]&&u.warn('Bad filter opening bracket in word '+p),i=N(n.slice(p+2),'(',')'),-1===i?u.error('No matching bracket in word '+p):(D(n.slice(p+2,p+2+i),d),p=w('FILTER',n),i=N(n.slice(p+2),'(',')'),n.splice(p,i+3))}u.debug('WHERE after filters and optionals: '+n),C(n,d)}function C(e,d){var n=[,];n[0]=-1;for(var i=n.concat(k('.',e)),a=[],p=0;p<i.length-1;p++)a[p]=e.slice(i[p]+1,i[p+1]);for(p in a){u.info('s+p+o '+p+' = '+a[p]);var t=a[p][0];a[p].splice(0,1);var f=n.concat(k(';',a[p]));f.push(a[p].length);for(var r=[],o=0;o<f.length-1;o++)r[o]=a[p].slice(f[o]+1,f[o+1]);for(p in r){u.info('p+o '+p+' = '+a[p]);var l=r[p][0];r[p].splice(0,1);var s=n.concat(k(',',r[p]));s.push(r[p].length);var m=[];for(o=0;o<s.length-1;o++)m[o]=r[p].slice(s[o]+1,s[o+1]);for(p in m){var c=m[p][0];u.info('Subj='+t+' Pred='+l+' Obj='+c),d.add(t,l,c)}}}}var L=[];u.info('SPARQL input: \n'+e);var A=new a,V=_(e),U=T(V);U.rdf||(U.rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'),U.rdfs||(U.rdfs='http://www.w3.org/2000/01/rdf-schema#');var M=w('SELECT',V),F=w('WHERE',V);if(0>M||0>F||M>F)return u.error('Invalid or nonexistent SELECT and WHERE tags in SPARQL query'),!1;if(S(V.slice(M+1,F),A),P(V.slice(F+2,V.length-1),A.pat),d)return A;for(var q in A.pat.statements){var x=A.pat.statements[q];'NamedNode'===x.subject.termType&&n.fetcher&&n.fetcher.lookUpThing(x.subject,'sparql:'+x.subject),'NamedNode'===x.object.termType&&n.fetcher&&n.fetcher.lookUpThing(x.object,'sparql:'+x.object)}return A}var u=n(18),a=n(45).Query;e.exports=i},function(e,d,n){'use strict';function i(e){return e&&e.__esModule?e:{default:e}}function a(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}var u='function'==typeof Symbol&&'symbol'==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&'function'==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?'symbol':typeof e},p=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}(),t=n(43),f=i(t),o=n(7).docpart,r=n(69),l=n(42).namedNode,s=n(33),m=n(73),c=n(7).join,h=n(11),g=function(){function e(d){if(a(this,e),this.store=d,d.updater)throw new Error('You can\'t have two UpdateManagers for the same store');d.fetcher||(d.fetcher=new r(d)),d.updater=this,this.ifps={},this.fps={},this.ns={},this.ns.link=s('http://www.w3.org/2007/ont/link#'),this.ns.http=s('http://www.w3.org/2007/ont/http#'),this.ns.httph=s('http://www.w3.org/2007/ont/httph#'),this.ns.ldp=s('http://www.w3.org/ns/ldp#'),this.ns.rdf=s('http://www.w3.org/1999/02/22-rdf-syntax-ns#'),this.ns.rdfs=s('http://www.w3.org/2000/01/rdf-schema#'),this.ns.rdf=s('http://www.w3.org/1999/02/22-rdf-syntax-ns#'),this.ns.owl=s('http://www.w3.org/2002/07/owl#'),this.patchControl=[]}return p(e,[{key:'patchControlFor',value:function e(d){return this.patchControl[d.uri]||(this.patchControl[d.uri]=[]),this.patchControl[d.uri]}},{key:'editable',value:function e(d,n){if(!d)return!1;if(n||(n=this.store),'file:///'===d.slice(0,8)){if(n.holds(n.sym(d),l('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),l('http://www.w3.org/2007/ont/link#MachineEditableDocument')))return'LOCALFILE';var a=n.statementsMatching(n.sym(d));return console.log('sparql.editable: Not MachineEditableDocument file '+d+'\n'),console.log(a.map(function(e){return e.toNT()}).join('\n')),!1}var u=!1,p=n.each(void 0,this.ns.link('requestedURI'),o(d)),t;if(n.holds(l(d),this.ns.rdf('type'),this.ns.ldp('Resource')))return'SPARQL';for(var f=0,r,i;f<p.length;f++)if(t=p[f],void 0!==t){var s=n.any(t,this.ns.link('response'));if(void 0!==t){var m=n.each(s,this.ns.httph('accept-patch'));if(m.length)for(r=0;r<m.length;r++)if(i=m[r].value.trim(),0<=i.indexOf('application/sparql-update'))return'SPARQL';var c=n.each(s,this.ns.httph('ms-author-via'));if(c.length)for(r=0;r<c.length;r++){if(i=c[r].value.trim(),0<=i.indexOf('SPARQL'))return'SPARQL';if(0<=i.indexOf('DAV'))return'DAV'}var h=n.each(s,this.ns.http('status'));if(h.length)for(r=0;r<h.length;r++)(200===h[r]||404===h[r])&&(u=!0)}else console.log('sparql.editable: No response for '+d+'\n')}if(0===p.length)console.log('sparql.editable: No request for '+d+'\n');else if(u)return!1;console.log('sparql.editable: inconclusive for '+d+'\n')}},{key:'anonymize',value:function e(d){return'_:'===d.toNT().substr(0,2)&&this.mentioned(d)?'?'+d.toNT().substr(2):d.toNT()}},{key:'anonymizeNT',value:function e(d){return this.anonymize(d.subject)+' '+this.anonymize(d.predicate)+' '+this.anonymize(d.object)+' .'}},{key:'statementBnodes',value:function e(d){return[d.subject,d.predicate,d.object].filter(function(e){return e.isBlank})}},{key:'statementArrayBnodes',value:function e(d){for(var n=[],a=0;a<d.length;a++)n=n.concat(this.statementBnodes(d[a]));n.sort();for(var i=[],u=0;u<n.length;u++)0!==u&&n[u].sameTerm(n[u-1])||i.push(n[u]);return i}},{key:'cacheIfps',value:function e(){this.ifps={};for(var d=this.store.each(void 0,this.ns.rdf('type'),this.ns.owl('InverseFunctionalProperty')),n=0;n<d.length;n++)this.ifps[d[n].uri]=!0;for(this.fps={},d=this.store.each(void 0,this.ns.rdf('type'),this.ns.owl('FunctionalProperty')),n=0;n<d.length;n++)this.fps[d[n].uri]=!0}},{key:'bnodeContext2',value:function e(d,n,a){for(var u=this.store.statementsMatching(void 0,void 0,d,n),p=0,i,t;p<u.length;p++)if(this.fps[u[p].predicate.uri]){if(i=u[p].subject,!i.isBlank)return[u[p]];if(a&&(t=this.bnodeContext2(i,n,a-1),t))return t.concat([u[p]])}for(u=this.store.statementsMatching(d,void 0,void 0,n),p=0;p<u.length;p++)if(this.ifps[u[p].predicate.uri]){if(i=u[p].object,!i.isBlank)return[u[p]];if(a&&(t=this.bnodeContext2(i,n,a-1),t))return t.concat([u[p]])}return null}},{key:'bnodeContext1',value:function e(d,n){for(var i=0,a;3>i;i++)if(a=this.bnodeContext2(d,n,i),null!==a)return a;return this.store.connectedStatements(d,n)}},{key:'mentioned',value:function e(d){return 0!==this.store.statementsMatching(d).length||0!==this.store.statementsMatching(void 0,d).length||0!==this.store.statementsMatching(void 0,void 0,d).length}},{key:'bnodeContext',value:function e(d,n){var a=[];if(d.length){this.cacheIfps();for(var u=0,i;u<d.length;u++)i=d[u],this.mentioned(i)&&(a=a.concat(this.bnodeContext1(i,n)))}return a}},{key:'statementContext',value:function e(d){var n=this.statementBnodes(d);return this.bnodeContext(n,d.why)}},{key:'contextWhere',value:function e(d){var n=this;return d&&0!==d.length?'WHERE { '+d.map(function(e){return n.anonymizeNT(e)}).join('\n')+' }\n':''}},{key:'fire',value:function e(d,n,i){var a=this;return Promise.resolve().then(function(){if(!d)throw new Error('No URI given for remote editing operation: '+n);console.log('sparql: sending update to <'+d+'>');var e={noMeta:!0,contentType:'application/sparql-update',body:n};return a.store.fetcher.webOperation('PATCH',d,e)}).then(function(e){if(!e.ok){var a='sparql: update failed for <'+d+'> status='+e.status+', '+e.statusText+'\n for query: '+n;throw console.log(a),new Error(a)}console.log('sparql: update Ok for <'+d+'>'),i(d,e.ok,e.responseText,e)}).catch(function(e){i(d,!1,e.message,e)})}},{key:'update_statement',value:function e(d){if(!d||d.why){var n=this,i=this.statementContext(d);return{statement:d?[d.subject,d.predicate,d.object,d.why]:void 0,statementNT:d?this.anonymizeNT(d):void 0,where:n.contextWhere(i),set_object:function e(d,i){var a=this.where;a+='DELETE DATA { '+this.statementNT+' } ;\n',a+='INSERT DATA { '+this.anonymize(this.statement[0])+' '+this.anonymize(this.statement[1])+' '+this.anonymize(d)+' . }\n',n.fire(this.statement[3].uri,a,i)}}}}},{key:'insert_statement',value:function e(d,n){var a=d instanceof Array?d[0]:d,u=this.contextWhere(this.statementContext(a));if(d instanceof Array){for(var p='',t=0;t<d.length;t++)p+=d[t]+'\n';u+='INSERT DATA { '+p+' }\n'}else u+='INSERT DATA { '+this.anonymize(d.subject)+' '+this.anonymize(d.predicate)+' '+this.anonymize(d.object)+' . }\n';this.fire(a.why.uri,u,n)}},{key:'delete_statement',value:function e(d,n){var a=d instanceof Array?d[0]:d,u=this.contextWhere(this.statementContext(a));if(d instanceof Array){for(var p='',t=0;t<d.length;t++)p+=d[t]+'\n';u+='DELETE DATA { '+p+' }\n'}else u+='DELETE DATA { '+this.anonymize(d.subject)+' '+this.anonymize(d.predicate)+' '+this.anonymize(d.object)+' . }\n';this.fire(a.why.uri,u,n)}},{key:'requestDownstreamAction',value:function e(d,n){var i=this.patchControlFor(d);if(!i.pendingUpstream)n(d);else if(!i.downstreamAction)i.downstreamAction=n;else if(''+i.downstreamAction!=''+n)throw new Error('Can\'t wait for > 1 different downstream actions')}},{key:'clearUpstreamCount',value:function e(d){var n=this.patchControlFor(d);n.upstreamCount=0}},{key:'getUpdatesVia',value:function e(d){var n=this.store.fetcher.getHeader(d,'updates-via');return n&&n.length?n[0].trim():null}},{key:'addDownstreamChangeListener',value:function e(d,n){var i=this,a=this.patchControlFor(d);a.downstreamChangeListeners||(a.downstreamChangeListeners=[]),a.downstreamChangeListeners.push(n),this.setRefreshHandler(d,function(e){i.reloadAndSync(e)})}},{key:'reloadAndSync',value:function e(d){var n=this.patchControlFor(d),i=this;if(n.reloading)return void console.log(' Already reloading - stop');n.reloading=!0;var a=1e3,u=function e(){console.log('try reload - timeout = '+a),i.reload(i.store,d,function(u,p,t){if(n.reloading=!1,!u)0===t.status?(console.log('Network error refreshing the data. Retrying in '+a/1e3),n.reloading=!0,a*=2,setTimeout(e,a)):console.log('Error '+t.status+'refreshing the data:'+p+'. Stopped'+d);else if(n.downstreamChangeListeners)for(var f=0;f<n.downstreamChangeListeners.length;f++)console.log(' Calling downstream listener '+f),n.downstreamChangeListeners[f]()})};u()}},{key:'setRefreshHandler',value:function e(d,n){var i=this.getUpdatesVia(d),a=n,u=this,p=this,t=1500,f=0;if(!i)return console.log('Server doies not support live updates thoughUpdates-Via :-('),!1;i=c(i,d.uri),i=i.replace(/^http:/,'ws:').replace(/^https:/,'wss:'),console.log('Web socket URI '+i);var r=function e(){var n;if('undefined'!=typeof WebSocket)n=new WebSocket(i);else if('undefined'!=typeof Services)n=Services.wm.getMostRecentWindow('navigator:browser').WebSocket(i);else if('undefined'!=typeof window&&window.WebSocket)n=window.WebSocket(i);else return void console.log('Live update disabled, as WebSocket not supported by platform :-(');n.onopen=function(){console.log(' websocket open'),t=1500,this.send('sub '+d.uri),f&&(console.log('Web socket has been down, better check for any news.'),p.requestDownstreamAction(d,a))};var r=u.patchControlFor(d);r.upstreamCount=0,n.onerror=function e(d){console.log('Error on Websocket:',d)},n.onclose=function(d){console.log('*** Websocket closed with code '+d.code+', reason \''+d.reason+'\' clean = '+d.clean),t*=2,f+=1,console.log('Retrying in '+t+'ms'),setTimeout(function(){console.log('Trying websocket again'),e()},t)},n.onmessage=function(e){if(e.data&&'pub'===e.data.slice(0,3)){if('upstreamCount'in r&&(r.upstreamCount-=1,0<=r.upstreamCount))return void console.log('just an echo: '+r.upstreamCount);console.log('Assume a real downstream change: '+r.upstreamCount+' -> 0'),r.upstreamCount=0,u.requestDownstreamAction(d,a)}}};return r(),!0}},{key:'update',value:function e(d,n,a){try{var p=this.store,t=d?d instanceof f.default?d.statements:d instanceof Array?d:[d]:[],r=n?n instanceof f.default?n.statements:n instanceof Array?n:[n]:[];if(!(t instanceof Array))throw new Error('Type Error '+('undefined'==typeof t?'undefined':u(t))+': '+t);if(!(r instanceof Array))throw new Error('Type Error '+('undefined'==typeof r?'undefined':u(r))+': '+r);if(0===t.length&&0===r.length)return a(null,!0);var o=t.length?t[0].why:r[0].why;if(!o){var l='Error patching: statement does not specify which document to patch:'+t[0]+', '+r[0];throw console.log(l),new Error(l)}var s=this.patchControlFor(o),m=Date.now(),c=['subject','predicate','object','why'],h=['insert','delete'],g={delete:t,insert:r};h.map(function(e){g[e].map(function(e){if(!o.sameTerm(e.why))throw new Error('update: destination '+o+' inconsistent with delete quad '+e.why);c.map(function(d){if('undefined'==typeof e[d])throw new Error('update: undefined '+d+' of statement.')})})});var y=this.editable(o.uri,p);if(!y)throw new Error('Can\'t make changes in uneditable '+o);var v;if(0<=y.indexOf('SPARQL')){var i=[];t.length&&(i=this.statementArrayBnodes(t)),r.length&&(i=i.concat(this.statementArrayBnodes(r)));var b=this.bnodeContext(i,o),_=this.contextWhere(b),w='';if(_.length){if(t.length){for(w+='DELETE { ',v=0;v<t.length;v++)w+=this.anonymizeNT(t[v])+'\n';w+=' }\n'}if(r.length){for(w+='INSERT { ',v=0;v<r.length;v++)w+=this.anonymizeNT(r[v])+'\n';w+=' }\n'}w+=_}else{if(t.length){for(w+='DELETE DATA { ',v=0;v<t.length;v++)w+=this.anonymizeNT(t[v])+'\n';w+=' } \n'}if(r.length){for(t.length&&(w+=' ; '),w+='INSERT DATA { ',v=0;v<r.length;v++)w+=this.anonymizeNT(r[v])+'\n';w+=' }\n'}}s.pendingUpstream=s.pendingUpstream?s.pendingUpstream+1:1,'upstreamCount'in s&&(s.upstreamCount+=1,console.log('upstream count up to : '+s.upstreamCount)),this.fire(o.uri,w,function(e,d,n,u){if(u.elapsedTimeMs=Date.now()-m,console.log(' sparql: Return '+(d?'success ':'FAILURE ')+u.status+' elapsed '+u.elapsedTimeMs+'ms'),d){try{p.remove(t)}catch(i){d=!1,n='Remote Ok BUT error deleting '+t.length+' from store!!! '+i}for(var f=0;f<r.length;f++)p.add(r[f].subject,r[f].predicate,r[f].object,o)}if(a(e,d,n,u),s.pendingUpstream-=1,0===s.pendingUpstream&&s.downstreamAction){var i=s.downstreamAction;delete s.downstreamAction,console.log('delayed downstream action:'),i(o)}})}else if(0<=y.indexOf('DAV'))this.updateDav(o,t,r,a);else if(0<=y.indexOf('LOCALFILE'))try{this.updateLocalFile(o,t,r,a)}catch(d){a(o.uri,!1,'Exception trying to write back file <'+o.uri+'>\n')}else throw new Error('Unhandled edit method: \''+y+'\' for '+o)}catch(d){a(void 0,!1,'Exception in update: '+d+'\n'+$rdf.Util.stackString(d))}}},{key:'updateDav',value:function e(d,n,a,u){var p=this.store,t=p.any(d,this.ns.link('request'));if(!t)throw new Error('No record of our HTTP GET request for document: '+d);var f=p.any(t,this.ns.link('response'));if(!f)return null;var r=p.the(f,this.ns.httph('content-type')).value,o=p.statementsMatching(void 0,void 0,void 0,d).slice(),l;for(l=0;l<n.length;l++)h.RDFArrayRemove(o,n[l]);for(l=0;l<a.length;l++)o.push(a[l]);var i=this.serialize(d.uri,o,r),s=p.the(f,this.ns.httph('content-location')),m;s&&(m=c(s.value,m));var g={contentType:r,noMeta:!0,body:i};return p.fetcher.webOperation('PUT',m,g).then(function(e){if(!e.ok)throw new Error(e.error);for(var t=0;t<n.length;t++)p.remove(n[t]);for(t=0;t<a.length;t++)p.add(a[t].subject,a[t].predicate,a[t].object,d);u(d.uri,e.ok,e.responseText,e)}).catch(function(e){u(d.uri,!1,e.message,e)})}},{key:'updateLocalFile',value:function e(d,n,a,u){var p=this.store;console.log('Writing back to local file\n');var t=p.statementsMatching(void 0,void 0,void 0,d).slice(),f;for(f=0;f<n.length;f++)h.RDFArrayRemove(t,n[f]);for(f=0;f<a.length;f++)t.push(a[f]);var i=d.uri.lastIndexOf('.');if(1>i)throw new Error('Rewriting file: No filename extension: '+d.uri);var o=d.uri.slice(i+1),l=r.CONTENT_TYPE_BY_EXT[o];if(!l)throw new Error('File extension .'+o+' not supported for data write');var s=this.serialize(d.uri,t,l);console.log('Writing back: <<<'+s+'>>>');var m=d.uri.slice(7),c=Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);if(c.initWithPath(m),!c.exists())throw new Error('Rewriting file <'+d.uri+'> but it does not exist!');var g=Components.classes['@mozilla.org/network/file-output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream);for(g.init(c,42,parseInt('0666',8),0),g.write(s,s.length),g.close(),f=0;f<n.length;f++)p.remove(n[f]);for(f=0;f<a.length;f++)p.add(a[f].subject,a[f].predicate,a[f].object,d);u(d.uri,!0,'')}},{key:'serialize',value:function e(d,n,i){var a=this.store,u;if('string'==typeof n)return n;var p=m(a);switch(p.suggestNamespaces(a.namespaces),p.setBase(d),i){case'text/xml':case'application/rdf+xml':u=p.statementsToXML(n);break;case'text/n3':case'text/turtle':case'application/x-turtle':case'application/n3':u=p.statementsToN3(n);break;default:throw new Error('Content-type '+i+' not supported for data serialization');}return u}},{key:'put',value:function e(d,n,i,a){var u=this,p=this.store,t;return Promise.resolve().then(function(){return t=u.serialize(d.uri,n,i),p.fetcher.webOperation('PUT',d.uri,{contentType:i,body:t})}).then(function(e){return e.ok?void(delete p.fetcher.nonexistent[d.uri],delete p.fetcher.requested[d.uri],'string'!=typeof n&&n.map(function(e){p.addStatement(e)}),a(d.uri,e.ok,'',e)):a(d.uri,e.ok,e.error,e)}).catch(function(e){a(d.uri,!1,e.message)})}},{key:'reload',value:function e(d,n,i){var a=Date.now(),u={force:!0,noMeta:!0,clearPreviousData:!0};d.fetcher.nowOrWhenFetched(n.uri,u,function(e,d,u){if(!e)console.log(' ERROR reloading data: '+d),i(!1,'Error reloading data: '+d,u);else if(u.onErrorWasCalled||200!==u.status)console.log(' Non-HTTP error reloading data! onErrorWasCalled='+u.onErrorWasCalled+' status: '+u.status),i(!1,'Non-HTTP error reloading data: '+d,u);else{var p=Date.now()-a;n.reloadTimeTotal||(n.reloadTimeTotal=0),n.reloadTimeCount||(n.reloadTimeCount=0),n.reloadTimeTotal+=p,n.reloadTimeCount+=1,console.log(' Fetch took '+p+'ms, av. of '+n.reloadTimeCount+' = '+n.reloadTimeTotal/n.reloadTimeCount+'ms.'),i(!0)}})}}]),e}();e.exports=g},function(e,d,n){e.exports={default:n(215),__esModule:!0}},function(e,d,n){e.exports={default:n(216),__esModule:!0}},function(e,d,n){e.exports={default:n(217),__esModule:!0}},function(e,d,n){e.exports={default:n(218),__esModule:!0}},function(e,d,n){e.exports={default:n(220),__esModule:!0}},function(e,d,n){e.exports={default:n(221),__esModule:!0}},function(e,d,n){e.exports={default:n(222),__esModule:!0}},function(e,d,n){e.exports={default:n(224),__esModule:!0}},function(e,d,n){e.exports={default:n(225),__esModule:!0}},function(e,d,n){'use strict';d.__esModule=!0,d.default=function(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}},function(e,d,n){'use strict';function i(e){return e&&e.__esModule?e:{default:e}}d.__esModule=!0;var a=n(123),u=i(a);d.default=function(){function e(e,d){for(var n=0,i;n<d.length;n++)i=d[n],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),(0,u.default)(e,i.key,i)}return function(d,n,i){return n&&e(d.prototype,n),i&&e(d,i),d}}()},function(e,d,n){'use strict';function i(e){return e&&e.__esModule?e:{default:e}}d.__esModule=!0;var a=n(204),u=i(a),p=n(201),t=i(p),f=n(74),r=i(f);d.default=function(e,d){if('function'!=typeof d&&null!==d)throw new TypeError('Super expression must either be null or a function, not '+('undefined'==typeof d?'undefined':(0,r.default)(d)));e.prototype=(0,t.default)(d&&d.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),d&&(u.default?(0,u.default)(e,d):e.__proto__=d)}},function(e,d,n){'use strict';function i(e){return e&&e.__esModule?e:{default:e}}d.__esModule=!0;var a=n(74),u=i(a);d.default=function(e,d){if(!e)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return d&&('object'===('undefined'==typeof d?'undefined':(0,u.default)(d))||'function'==typeof d)?d:e}},function(e,d,n){'use strict';function i(e){return e&&e.__esModule?e:{default:e}}d.__esModule=!0;var a=n(198),u=i(a);d.default=function(e){if(Array.isArray(e)){for(var d=0,n=Array(e.length);d<e.length;d++)n[d]=e[d];return n}return(0,u.default)(e)}},function(e,d,n){'use strict';function a(e){var d=e.length;if(0<d%4)throw new Error('Invalid string. Length must be a multiple of 4');return'='===e[d-2]?2:'='===e[d-1]?1:0}function u(e){return 3*e.length/4-a(e)}function p(e){var d=e.length,n,i,u,p,t;p=a(e),t=new m(3*d/4-p),i=0<p?d-4:d;var f=0;for(n=0;n<i;n+=4)u=s[e.charCodeAt(n)]<<18|s[e.charCodeAt(n+1)]<<12|s[e.charCodeAt(n+2)]<<6|s[e.charCodeAt(n+3)],t[f++]=255&u>>16,t[f++]=255&u>>8,t[f++]=255&u;return 2===p?(u=s[e.charCodeAt(n)]<<2|s[e.charCodeAt(n+1)]>>4,t[f++]=255&u):1===p&&(u=s[e.charCodeAt(n)]<<10|s[e.charCodeAt(n+1)]<<4|s[e.charCodeAt(n+2)]>>2,t[f++]=255&u>>8,t[f++]=255&u),t}function t(e){return o[63&e>>18]+o[63&e>>12]+o[63&e>>6]+o[63&e]}function f(e,d,n){for(var a=[],u=d,i;u<n;u+=3)i=(16711680&e[u]<<16)+(65280&e[u+1]<<8)+(255&e[u+2]),a.push(t(i));return a.join('')}function r(e){for(var d=e.length,n=d%3,a='',u=[],p=16383,t=0,i=d-n,r;t<i;t+=p)u.push(f(e,t,t+p>i?i:t+p));return 1==n?(r=e[d-1],a+=o[r>>2],a+=o[63&r<<4],a+='=='):2==n&&(r=(e[d-2]<<8)+e[d-1],a+=o[r>>10],a+=o[63&r>>4],a+=o[63&r<<2],a+='='),u.push(a),u.join('')}d.byteLength=u,d.toByteArray=p,d.fromByteArray=r;for(var o=[],s=[],m='undefined'==typeof Uint8Array?Array:Uint8Array,l='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',c=0,i=l.length;c<i;++c)o[c]=l[c],s[l.charCodeAt(c)]=c;s[45]=62,s[95]=63},function(e,d,n){'use strict';(function(e){function i(d,n='utf8'){return e.isBuffer(d)?p(d.toString('base64')):p(e.from(d,n).toString('base64'))}function a(d,n='utf8'){return e.from(u(d),'base64').toString(n)}function u(e){return e=e.toString(),f.default(e).replace(/\-/g,'+').replace(/_/g,'/')}function p(e){return e.replace(/=/g,'').replace(/\+/g,'-').replace(/\//g,'_')}function t(d){return e.from(u(d),'base64')}Object.defineProperty(d,'__esModule',{value:!0});const f=n(214);;let r=i;r.encode=i,r.decode=a,r.toBase64=u,r.fromBase64=p,r.toBuffer=t,d.default=r}).call(d,n(8).Buffer)},function(e,d,n){'use strict';(function(e){function n(d){let n=4,i=d.length,a=i%n;if(!a)return d;let u=i,p=n-a,t=i+p,f=e.alloc(t);for(f.write(d);p--;)f.write('=',u++);return f.toString()}Object.defineProperty(d,'__esModule',{value:!0}),d.default=n}).call(d,n(8).Buffer)},function(e,d,n){n(88),n(245),e.exports=n(0).Array.from},function(e,d,n){var i=n(0),a=i.JSON||(i.JSON={stringify:JSON.stringify});e.exports=function e(d){return a.stringify.apply(a,arguments)}},function(e,d,n){n(247),e.exports=n(0).Object.assign},function(e,d,n){n(248);var i=n(0).Object;e.exports=function e(d,n){return i.create(d,n)}},function(e,d,n){n(249);var i=n(0).Object;e.exports=function e(d,n,a){return i.defineProperty(d,n,a)}},function(e,d,n){n(250);var i=n(0).Object;e.exports=function e(d){return i.getOwnPropertyNames(d)}},function(e,d,n){n(251),e.exports=n(0).Object.getPrototypeOf},function(e,d,n){n(252),e.exports=n(0).Object.setPrototypeOf},function(e,d,n){n(145),n(88),n(146),n(253),n(255),n(256),e.exports=n(0).Promise},function(e,d,n){n(254),n(145),n(257),n(258),e.exports=n(0).Symbol},function(e,d,n){n(88),n(146),e.exports=n(87).f('iterator')},function(e,d){e.exports=function(){}},function(e,d){e.exports=function(e,d,n,i){if(!(e instanceof d)||i!==void 0&&i in e)throw TypeError(n+': incorrect invocation!');return e}},function(e,d,n){var i=n(30),a=n(84),u=n(244);e.exports=function(e){return function(d,n,p){var t=i(d),f=a(t.length),r=u(p,f),o;if(e&&n!=n){for(;f>r;)if(o=t[r++],o!=o)return!0;}else for(;f>r;r++)if((e||r in t)&&t[r]===n)return e||r||0;return!e&&-1}}},function(e,d,n){'use strict';var i=n(13),a=n(36);e.exports=function(e,d,n){d in e?i.f(e,d,a(0,n)):e[d]=n}},function(e,d,n){var a=n(52),u=n(80),p=n(53);e.exports=function(e){var d=a(e),n=u.f;if(n)for(var t=n(e),f=p.f,r=0,i;t.length>r;)f.call(e,i=t[r++])&&d.push(i);return d}},function(e,d,n){var i=n(28),a=n(130),u=n(129),p=n(12),t=n(84),r=n(144),o={},l={},d=e.exports=function(e,d,n,s,m){var c=m?function(){return e}:r(e),h=i(n,s,d?2:1),f=0,g,y,v,b;if('function'!=typeof c)throw TypeError(e+' is not iterable!');if(u(c)){for(g=t(e.length);g>f;f++)if(b=d?h(p(y=e[f])[0],y[1]):h(e[f]),b===o||b===l)return b;}else for(v=c.call(e);!(y=v.next()).done;)if(b=a(v,h,y.value,d),b===o||b===l)return b};d.BREAK=o,d.RETURN=l},function(e,d){e.exports=function(e,d,n){var i=n===void 0;switch(d.length){case 0:return i?e():e.call(n);case 1:return i?e(d[0]):e.call(n,d[0]);case 2:return i?e(d[0],d[1]):e.call(n,d[0],d[1]);case 3:return i?e(d[0],d[1],d[2]):e.call(n,d[0],d[1],d[2]);case 4:return i?e(d[0],d[1],d[2],d[3]):e.call(n,d[0],d[1],d[2],d[3]);}return e.apply(n,d)}},function(e,d,n){var i=n(34);e.exports=Array.isArray||function e(d){return'Array'==i(d)}},function(e,d,n){'use strict';var i=n(79),a=n(36),u=n(54),p={};n(23)(p,n(4)('iterator'),function(){return this}),e.exports=function(e,d,n){e.prototype=i(p,{next:a(1,n)}),u(e,d+' Iterator')}},function(e,d){e.exports=function(e,d){return{value:d,done:!!e}}},function(e,d,n){var i=n(56)('meta'),a=n(15),u=n(22),p=n(13).f,t=0,f=Object.isExtensible||function(){return!0},r=!n(29)(function(){return f(Object.preventExtensions({}))}),o=function(e){p(e,i,{value:{i:'O'+ ++t,w:{}}})},l=function(e,d){if(!a(e))return'symbol'==typeof e?e:('string'==typeof e?'S':'P')+e;if(!u(e,i)){if(!f(e))return'F';if(!d)return'E';o(e)}return e[i].i},s=function(e,d){if(!u(e,i)){if(!f(e))return!0;if(!d)return!1;o(e)}return e[i].w},m=function(e){return r&&c.NEED&&f(e)&&!u(e,i)&&o(e),e},c=e.exports={KEY:i,NEED:!1,fastKey:l,getWeak:s,onFreeze:m}},function(e,d,n){var i=n(3),a=n(143).set,u=i.MutationObserver||i.WebKitMutationObserver,p=i.process,t=i.Promise,f='process'==n(34)(p);e.exports=function(){var e=function(){var e,i;for(f&&(e=p.domain)&&e.exit();d;){i=d.fn,d=d.next;try{i()}catch(i){throw d?r():n=void 0,i}}n=void 0,e&&e.enter()},d,n,r;if(f)r=function(){p.nextTick(e)};else if(u&&!(i.navigator&&i.navigator.standalone)){var o=!0,l=document.createTextNode('');new u(e).observe(l,{characterData:!0}),r=function(){l.data=o=!o}}else if(t&&t.resolve){var s=t.resolve();r=function(){s.then(e)}}else r=function(){a.call(i,e)};return function(e){var i={fn:e,next:void 0};n&&(n.next=i),d||(d=i,r()),n=i}}},function(e,d,n){'use strict';var i=n(52),a=n(80),u=n(53),p=n(55),t=n(128),f=Object.assign;e.exports=!f||n(29)(function(){var e={},d={},n=Symbol(),i='abcdefghijklmnopqrst';return e[n]=7,i.split('').forEach(function(e){d[e]=e}),7!=f({},e)[n]||Object.keys(f({},d)).join('')!=i})?function e(d,n){for(var f=p(d),r=arguments.length,o=1,l=a.f,s=u.f;r>o;)for(var m=t(arguments[o++]),c=l?i(m).concat(l(m)):i(m),h=c.length,g=0,y;h>g;)s.call(m,y=c[g++])&&(f[y]=m[y]);return f}:f},function(e,d,n){var a=n(13),u=n(12),p=n(52);e.exports=n(14)?Object.defineProperties:function e(d,n){u(d);for(var t=p(n),f=t.length,r=0,i;f>r;)a.f(d,i=t[r++],n[i]);return d}},function(e,d,n){var i=n(23);e.exports=function(e,d,n){for(var a in d)n&&e[a]?e[a]=d[a]:i(e,a,d[a]);return e}},function(e,d,n){var i=n(15),a=n(12),u=function(e,d){if(a(e),!i(d)&&null!==d)throw TypeError(d+': can\'t set as prototype!')};e.exports={set:Object.setPrototypeOf||('__proto__'in{}?function(e,d,i){try{i=n(28)(Function.call,n(133).f(Object.prototype,'__proto__').set,2),i(e,[]),d=!(e instanceof Array)}catch(n){d=!0}return function e(n,a){return u(n,a),d?n.__proto__=a:i(n,a),n}}({},!1):void 0),check:u}},function(e,d,n){'use strict';var i=n(3),a=n(0),u=n(13),p=n(14),t=n(4)('species');e.exports=function(e){var d='function'==typeof a[e]?a[e]:i[e];p&&d&&!d[t]&&u.f(d,t,{configurable:!0,get:function(){return this}})}},function(e,d,n){var u=n(83),p=n(75);e.exports=function(e){return function(d,n){var t=p(d)+'',f=u(n),i=t.length,r,a;return 0>f||f>=i?e?'':void 0:(r=t.charCodeAt(f),55296>r||56319<r||f+1===i||56320>(a=t.charCodeAt(f+1))||57343<a?e?t.charAt(f):r:e?t.slice(f,f+2):(r-55296<<10)+(a-56320)+65536)}}},function(e,d,n){var a=n(83),u=i,p=r;e.exports=function(e,d){return e=a(e),0>e?u(e+d,0):p(e,d)}},function(e,d,n){'use strict';var i=n(28),a=n(9),u=n(55),p=n(130),t=n(129),f=n(84),r=n(229),o=n(144);a(a.S+a.F*!n(132)(function(e){Array.from(e)}),'Array',{from:function e(d){var n=u(d),a='function'==typeof this?this:Array,l=arguments.length,s=1<l?arguments[1]:void 0,m=void 0!==s,c=0,h=o(n),g,y,v,b;if(m&&(s=i(s,2<l?arguments[2]:void 0,2)),void 0!=h&&!(a==Array&&t(h)))for(b=h.call(n),y=new a;!(v=b.next()).done;c++)r(y,c,m?p(b,s,[v.value,c],!0):v.value);else for(g=f(n.length),y=new a(g);g>c;c++)r(y,c,m?s(n[c],c):n[c]);return y.length=c,y}})},function(e,d,n){'use strict';var i=n(226),a=n(235),u=n(35),p=n(30);e.exports=n(131)(Array,'Array',function(e,d){this._t=p(e),this._i=0,this._k=d},function(){var e=this._t,d=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,a(1)):'keys'==d?a(0,n):'values'==d?a(0,e[n]):a(0,[n,e[n]])},'values'),u.Arguments=u.Array,i('keys'),i('values'),i('entries')},function(e,d,n){var i=n(9);i(i.S+i.F,'Object',{assign:n(238)})},function(e,d,n){var i=n(9);i(i.S,'Object',{create:n(79)})},function(e,d,n){var i=n(9);i(i.S+i.F*!n(14),'Object',{defineProperty:n(13).f})},function(e,d,n){n(138)('getOwnPropertyNames',function(){return n(134).f})},function(e,d,n){var i=n(55),a=n(136);n(138)('getPrototypeOf',function(){return function e(d){return a(i(d))}})},function(e,d,n){var i=n(9);i(i.S,'Object',{setPrototypeOf:n(241).set})},function(e,d,n){'use strict';var i=n(51),a=n(3),u=n(28),p=n(125),t=n(9),f=n(15),r=n(50),o=n(227),l=n(231),s=n(142),m=n(143).set,c=n(237)(),h=n(78),g=n(139),y=n(140),v='Promise',b=a.TypeError,_=a.process,w=a[v],x='process'==p(_),k=function(){},S=L=h.f,T=!!function(){try{var e=w.resolve(1),d=(e.constructor={})[n(4)('species')]=function(e){e(k,k)};return(x||'function'==typeof PromiseRejectionEvent)&&e.then(k)instanceof d}catch(d){}}(),N=function(e){var d;return f(e)&&'function'==typeof(d=e.then)&&d},I=function(e,d){if(!e._n){e._n=!0;var n=e._c;c(function(){for(var a=e._v,u=1==e._s,p=0,i=function(d){var n=u?d.ok:d.fail,i=d.resolve,p=d.reject,t=d.domain,f,r,o;try{n?(!u&&(2==e._h&&R(e),e._h=1),!0===n?f=a:(t&&t.enter(),f=n(a),t&&(t.exit(),o=!0)),f===d.promise?p(b('Promise-chain cycle')):(r=N(f))?r.call(f,i,p):i(f)):p(a)}catch(d){t&&!o&&t.exit(),p(d)}};n.length>p;)i(n[p++]);e._c=[],e._n=!1,d&&!e._h&&j(e)})}},j=function(e){m.call(a,function(){var d=e._v,n=O(e),i,u,p;if(n&&(i=g(function(){x?_.emit('unhandledRejection',d,e):(u=a.onunhandledrejection)?u({promise:e,reason:d}):(p=a.console)&&p.error&&p.error('Unhandled promise rejection',d)}),e._h=x||O(e)?2:1),e._a=void 0,n&&i.e)throw i.v})},O=function(e){return 1!==e._h&&0===(e._a||e._c).length},R=function(e){m.call(a,function(){var d;x?_.emit('rejectionHandled',e):(d=a.onrejectionhandled)&&d({promise:e,reason:e._v})})},D=function(e){var d=this;d._d||(d._d=!0,d=d._w||d,d._v=e,d._s=2,!d._a&&(d._a=d._c.slice()),I(d,!0))},E=function(e){var d=this,n;if(!d._d){d._d=!0,d=d._w||d;try{if(d===e)throw b('Promise can\'t be resolved itself');(n=N(e))?c(function(){var i={_w:d,_d:!1};try{n.call(e,u(E,i,1),u(D,i,1))}catch(d){D.call(i,d)}}):(d._v=e,d._s=1,I(d,!1))}catch(n){D.call({_w:d,_d:!1},n)}}},P,L,A,V;T||(w=function e(d){o(this,w,v,'_h'),r(d),P.call(this);try{d(u(E,this,1),u(D,this,1))}catch(e){D.call(this,e)}},P=function e(d){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},P.prototype=n(240)(w.prototype,{then:function e(d,n){var i=S(s(this,w));return i.ok='function'!=typeof d||d,i.fail='function'==typeof n&&n,i.domain=x?_.domain:void 0,this._c.push(i),this._a&&this._a.push(i),this._s&&I(this,!1),i.promise},catch:function(e){return this.then(void 0,e)}}),A=function(){var e=new P;this.promise=e,this.resolve=u(E,e,1),this.reject=u(D,e,1)},h.f=S=function(e){return e===w||e===V?new A(e):L(e)}),t(t.G+t.W+t.F*!T,{Promise:w}),n(54)(w,v),n(242)(v),V=n(0)[v],t(t.S+t.F*!T,v,{reject:function e(d){var n=S(this),i=n.reject;return i(d),n.promise}}),t(t.S+t.F*(i||!T),v,{resolve:function e(d){return y(i&&this===V?w:this,d)}}),t(t.S+t.F*!(T&&n(132)(function(e){w.all(e)['catch'](k)})),v,{all:function e(d){var n=this,i=S(n),a=i.resolve,u=i.reject,p=g(function(){var e=[],i=0,p=1;l(d,!1,function(d){var t=i++,f=!1;e.push(void 0),p++,n.resolve(d).then(function(d){f||(f=!0,e[t]=d,--p||a(e))},u)}),--p||a(e)});return p.e&&u(p.v),i.promise},race:function e(d){var n=this,i=S(n),a=i.reject,u=g(function(){l(d,!1,function(e){n.resolve(e).then(i.resolve,a)})});return u.e&&a(u.v),i.promise}})},function(e,d,n){'use strict';var i=n(3),a=n(22),u=n(14),p=n(9),t=n(141),f=n(236).KEY,r=n(29),o=n(82),l=n(54),s=n(56),m=n(4),c=n(87),h=n(86),g=n(230),y=n(233),v=n(12),b=n(15),_=n(30),w=n(85),x=n(36),S=n(79),T=n(134),N=n(133),I=n(13),O=n(52),R=N.f,E=I.f,D=T.f,P=i.Symbol,C=i.JSON,L=C&&C.stringify,A='prototype',V=m('_hidden'),U=m('toPrimitive'),M={}.propertyIsEnumerable,F=o('symbol-registry'),q=o('symbols'),B=o('op-symbols'),H=Object[A],z='function'==typeof P,W=i.QObject,J=!W||!W[A]||!W[A].findChild,X=u&&r(function(){return 7!=S(E({},'a',{get:function(){return E(this,'a',{value:7}).a}})).a})?function(e,d,n){var i=R(H,d);i&&delete H[d],E(e,d,n),i&&e!==H&&E(H,d,i)}:E,K=function(e){var d=q[e]=S(P[A]);return d._k=e,d},Y=z&&'symbol'==typeof P.iterator?function(e){return'symbol'==typeof e}:function(e){return e instanceof P},G=function e(d,n,i){return d===H&&G(B,n,i),v(d),n=w(n,!0),v(i),a(q,n)?(i.enumerable?(a(d,V)&&d[V][n]&&(d[V][n]=!1),i=S(i,{enumerable:x(0,!1)})):(!a(d,V)&&E(d,V,x(1,{})),d[V][n]=!0),X(d,n,i)):E(d,n,i)},Q=function e(d,n){v(d);for(var a=g(n=_(n)),u=0,i=a.length,p;i>u;)G(d,p=a[u++],n[p]);return d},Z=function e(d,n){return n===void 0?S(d):Q(S(d),n)},ee=function e(d){var n=M.call(this,d=w(d,!0));return this===H&&a(q,d)&&!a(B,d)?!1:n||!a(this,d)||!a(q,d)||a(this,V)&&this[V][d]?n:!0},de=function e(d,n){if(d=_(d),n=w(n,!0),d!==H||!a(q,n)||a(B,n)){var i=R(d,n);return i&&a(q,n)&&!(a(d,V)&&d[V][n])&&(i.enumerable=!0),i}},ne=function e(d){for(var n=D(_(d)),u=[],p=0,i;n.length>p;)a(q,i=n[p++])||i==V||i==f||u.push(i);return u},ie=function e(d){for(var n=d===H,u=D(n?B:_(d)),p=[],t=0,i;u.length>t;)a(q,i=u[t++])&&(!n||a(H,i))&&p.push(q[i]);return p};z||(P=function e(){if(this instanceof P)throw TypeError('Symbol is not a constructor!');var d=s(0<arguments.length?arguments[0]:void 0),n=function(e){this===H&&n.call(B,e),a(this,V)&&a(this[V],d)&&(this[V][d]=!1),X(this,d,x(1,e))};return u&&J&&X(H,d,{configurable:!0,set:n}),K(d)},t(P[A],'toString',function e(){return this._k}),N.f=de,I.f=G,n(135).f=T.f=ne,n(53).f=ee,n(80).f=ie,u&&!n(51)&&t(H,'propertyIsEnumerable',ee,!0),c.f=function(e){return K(m(e))}),p(p.G+p.W+p.F*!z,{Symbol:P});for(var ae=['hasInstance','isConcatSpreadable','iterator','match','replace','search','species','split','toPrimitive','toStringTag','unscopables'],ue=0;ae.length>ue;)m(ae[ue++]);for(var j=O(m.store),pe=0;j.length>pe;)h(j[pe++]);p(p.S+p.F*!z,'Symbol',{for:function(e){return a(F,e+='')?F[e]:F[e]=P(e)},keyFor:function e(d){if(!Y(d))throw TypeError(d+' is not a symbol!');for(var n in F)if(F[n]===d)return n},useSetter:function(){J=!0},useSimple:function(){J=!1}}),p(p.S+p.F*!z,'Object',{create:Z,defineProperty:G,defineProperties:Q,getOwnPropertyDescriptor:de,getOwnPropertyNames:ne,getOwnPropertySymbols:ie}),C&&p(p.S+p.F*(!z||r(function(){var e=P();return'[null]'!=L([e])||'{}'!=L({a:e})||'{}'!=L(Object(e))})),'JSON',{stringify:function e(d){for(var n=[d],a=1,i,u;arguments.length>a;)n.push(arguments[a++]);if(u=i=n[1],(b(i)||void 0!==d)&&!Y(d))return y(i)||(i=function(e,d){if('function'==typeof u&&(d=u.call(this,e,d)),!Y(d))return d}),n[1]=i,L.apply(C,n)}}),P[A][U]||n(23)(P[A],U,P[A].valueOf),l(P,'Symbol'),l(Math,'Math',!0),l(i.JSON,'JSON',!0)},function(e,d,n){'use strict';var i=n(9),a=n(0),u=n(3),p=n(142),t=n(140);i(i.P+i.R,'Promise',{finally:function(d){var n=p(this,a.Promise||u.Promise),e='function'==typeof d;return this.then(e?function(e){return t(n,d()).then(function(){return e})}:d,e?function(i){return t(n,d()).then(function(){throw i})}:d)}})},function(e,d,n){'use strict';var i=n(9),a=n(78),u=n(139);i(i.S,'Promise',{try:function(e){var d=a.f(this),n=u(e);return(n.e?d.reject:d.resolve)(n.v),d.promise}})},function(e,d,n){n(86)('asyncIterator')},function(e,d,n){n(86)('observable')},function(e,d){d.read=function(n,a,u,p,f){var r=8*f-p-1,o=(1<<r)-1,l=o>>1,c=-7,h=u?f-1:0,i=u?-1:1,d=n[a+h],s,e;for(h+=i,s=d&(1<<-c)-1,d>>=-c,c+=r;0<c;s=256*s+n[a+h],h+=i,c-=8);for(e=s&(1<<-c)-1,s>>=-c,c+=p;0<c;e=256*e+n[a+h],h+=i,c-=8);if(0===s)s=1-l;else{if(s===o)return e?NaN:(d?-1:1)*Infinity;e+=t(2,p),s-=l}return(d?-1:1)*e*t(2,s-p)},d.write=function(n,u,f,r,o,l){var h=8*l-o-1,g=(1<<h)-1,y=g>>1,v=23===o?5.960464477539063e-8-6.617444900424222e-24:0,b=r?0:l-1,i=r?1:-1,d=0>u||0===u&&0>1/u?1:0,s,_,m;for(u=a(u),isNaN(u)||u===Infinity?(_=isNaN(u)?1:0,s=g):(s=p(Math.log(u)/Math.LN2),1>u*(m=t(2,-s))&&(s--,m*=2),u+=1<=s+y?v/m:v*t(2,1-y),2<=u*m&&(s++,m/=2),s+y>=g?(_=0,s=g):1<=s+y?(_=(u*m-1)*t(2,o),s+=y):(_=u*t(2,y-1)*t(2,o),s=0));8<=o;n[f+b]=255&_,b+=i,_/=256,o-=8);for(s=s<<o|_,h+=o;0<h;n[f+b]=255&s,b+=i,s/=256,h-=8);n[f+b-i]|=128*d}},function(e,d,n){n(293),e.exports=self.fetch.bind(self)},function(e,d,n){(function(e,n){function a(e,d,n){switch(n.length){case 0:return e.call(d);case 1:return e.call(d,n[0]);case 2:return e.call(d,n[0],n[1]);case 3:return e.call(d,n[0],n[1],n[2]);}return e.apply(d,n)}function u(e,d){for(var n=-1,i=e?e.length:0,a=Array(i);++n<i;)a[n]=d(e[n],n,e);return a}function p(e,d){for(var n=-1,i=d.length,a=e.length;++n<i;)e[a+n]=d[n];return e}function t(e,d){for(var n=-1,i=e?e.length:0;++n<i;)if(d(e[n],n,e))return!0;return!1}function f(e){return function(d){return null==d?void 0:d[e]}}function r(e,d){var n=e.length;for(e.sort(d);n--;)e[n]=e[n].value;return e}function o(e,d){for(var n=-1,i=Array(e);++n<e;)i[n]=d(n);return i}function l(e){return function(d){return e(d)}}function s(e,d){return null==e?void 0:e[d]}function m(e){var d=!1;if(null!=e&&'function'!=typeof e.toString)try{d=!!(e+'')}catch(d){}return d}function c(e){var d=-1,n=Array(e.size);return e.forEach(function(e,i){n[++d]=[i,e]}),n}function h(e,d){return function(n){return e(d(n))}}function g(e){var d=-1,n=Array(e.size);return e.forEach(function(e){n[++d]=e}),n}function y(e){var d=-1,n=e?e.length:0;for(this.clear();++d<n;){var i=e[d];this.set(i[0],i[1])}}function v(){this.__data__=yn?yn(null):{}}function b(e){return this.has(e)&&delete this.__data__[e]}function _(e){var d=this.__data__;if(yn){var n=d[e];return n===Ze?void 0:n}return dn.call(d,e)?d[e]:void 0}function w(e){var d=this.__data__;return yn?d[e]!==void 0:dn.call(d,e)}function x(e,d){var n=this.__data__;return n[e]=yn&&void 0===d?Ze:d,this}function k(e){var d=-1,n=e?e.length:0;for(this.clear();++d<n;){var i=e[d];this.set(i[0],i[1])}}function S(){this.__data__=[]}function T(e){var d=this.__data__,n=W(d,e);if(0>n)return!1;var i=d.length-1;return n==i?d.pop():fn.call(d,n,1),!0}function N(e){var d=this.__data__,n=W(d,e);return 0>n?void 0:d[n][1]}function I(e){return-1<W(this.__data__,e)}function j(e,d){var n=this.__data__,i=W(n,e);return 0>i?n.push([e,d]):n[i][1]=d,this}function O(e){var d=-1,n=e?e.length:0;for(this.clear();++d<n;){var i=e[d];this.set(i[0],i[1])}}function R(){this.__data__={hash:new y,map:new(mn||k),string:new y}}function D(e){return _e(this,e)['delete'](e)}function E(e){return _e(this,e).get(e)}function P(e){return _e(this,e).has(e)}function C(e,d){return _e(this,e).set(e,d),this}function L(e){var d=-1,n=e?e.length:0;for(this.__data__=new O;++d<n;)this.add(e[d])}function A(e){return this.__data__.set(e,Ze),this}function V(e){return this.__data__.has(e)}function U(e){this.__data__=new k(e)}function M(){this.__data__=new k}function F(e){return this.__data__['delete'](e)}function q(e){return this.__data__.get(e)}function B(e){return this.__data__.has(e)}function H(e,d){var n=this.__data__;if(n instanceof k){var i=n.__data__;if(!mn||i.length<Qe-1)return i.push([e,d]),this;n=this.__data__=new O(i)}return n.set(e,d),this}function z(e,d){var n=Dn(e)||Ve(e)?o(e.length,String):[],i=n.length,a=!!i;for(var u in e)(d||dn.call(e,u))&&!(a&&('length'==u||Te(u,i)))&&n.push(u);return n}function W(e,d){for(var n=e.length;n--;)if(Ae(e[n][0],d))return n;return-1}function J(e,d,n,i,a){var u=-1,t=e.length;for(n||(n=Se),a||(a=[]);++u<t;){var f=e[u];0<d&&n(f)?1<d?J(f,d-1,n,i,a):p(a,f):!i&&(a[a.length]=f)}return a}function X(e,d){return e&&In(e,d,Ke)}function K(e,d){d=Ie(d,e)?[d]:se(d);for(var n=0,i=d.length;null!=e&&n<i;)e=e[Pe(d[n++])];return n&&n==i?e:void 0}function Y(e){return nn.call(e)}function G(e,d){return null!=e&&d in Object(e)}function Q(e,d,n,i,a){return!(e!==d)||(null!=e&&null!=d&&(Be(e)||He(d))?Z(e,d,Q,n,i,a):e!==e&&d!==d)}function Z(e,d,n,i,a,u){var p=Dn(e),t=Dn(d),f=ud,r=ud;p||(f=jn(e),f=f==ad?md:f),t||(r=jn(d),r=r==ad?md:r);var o=f==md&&!m(e),l=r==md&&!m(d),s=f==r;if(s&&!o)return u||(u=new U),p||En(e)?ye(e,d,n,i,a,u):ve(e,d,f,n,i,a,u);if(!(a&dd)){var c=o&&dn.call(e,'__wrapped__'),h=l&&dn.call(d,'__wrapped__');if(c||h){var g=c?e.value():e,y=h?d.value():d;return u||(u=new U),n(g,y,i,a,u)}}return!!s&&(u||(u=new U),be(e,d,n,i,a,u))}function ee(e,d,n,i){var a=n.length,u=a,p=!i;if(null==e)return!u;for(e=Object(e);a--;){var t=n[a];if(p&&t[2]?t[1]!==e[t[0]]:!(t[0]in e))return!1}for(;++a<u;){t=n[a];var f=t[0],r=e[f],o=t[1];if(!(p&&t[2])){var l=new U;if(i)var s=i(r,o,f,e,d,l);if(void 0===s?!Q(o,r,i,ed|dd,l):!s)return!1}else if(void 0===r&&!(f in e))return!1}return!0}function de(e){if(!Be(e)||Oe(e))return!1;var d=Fe(e)||m(e)?an:Vd;return d.test(Ce(e))}function ne(e){return He(e)&&qe(e.length)&&!!Md[nn.call(e)]}function ie(e){return'function'==typeof e?e:null==e?Ye:'object'==typeof e?Dn(e)?te(e[0],e[1]):pe(e):Ge(e)}function ae(e){if(!Re(e))return on(e);var d=[];for(var n in Object(e))dn.call(e,n)&&'constructor'!=n&&d.push(n);return d}function ue(e,d){var n=-1,i=Ue(e)?Array(e.length):[];return Nn(e,function(e,a,u){i[++n]=d(e,a,u)}),i}function pe(e){var d=we(e);return 1==d.length&&d[0][2]?Ee(d[0][0],d[0][1]):function(n){return n===e||ee(n,e,d)}}function te(e,d){return Ie(e)&&De(d)?Ee(Pe(e),d):function(n){var i=Je(n,e);return i===void 0&&i===d?Xe(n,e):Q(d,i,void 0,ed|dd)}}function fe(e,d,n){var i=-1;d=u(d.length?d:[Ye],l(ie));var a=ue(e,function(e,n,a){var p=u(d,function(d){return d(e)});return{criteria:p,index:++i,value:e}});return r(a,function(e,d){return ce(e,d,n)})}function re(e){return function(d){return K(d,e)}}function oe(e,d){return d=ln(void 0===d?e.length-1:d,0),function(){for(var n=arguments,i=-1,u=ln(n.length-d,0),p=Array(u);++i<u;)p[i]=n[d+i];i=-1;for(var t=Array(d+1);++i<d;)t[i]=n[i];return t[d]=p,a(e,this,t)}}function le(e){if('string'==typeof e)return e;if(ze(e))return Tn?Tn.call(e):'';var d=e+'';return'0'==d&&1/e==-nd?'-0':d}function se(e){return Dn(e)?e:On(e)}function me(e,d){if(e!==d){var n=e!==void 0,i=null===e,a=e===e,u=ze(e),p=d!==void 0,t=null===d,f=d===d,r=ze(d);if(!t&&!r&&!u&&e>d||u&&p&&f&&!t&&!r||i&&p&&f||!n&&f||!a)return 1;if(!i&&!u&&!r&&e<d||r&&n&&a&&!i&&!u||t&&n&&a||!p&&a||!f)return-1}return 0}function ce(e,d,n){for(var i=-1,a=e.criteria,u=d.criteria,p=a.length,t=n.length;++i<p;){var f=me(a[i],u[i]);if(f){if(i>=t)return f;var r=n[i];return f*('desc'==r?-1:1)}}return e.index-d.index}function he(e,d){return function(n,i){if(null==n)return n;if(!Ue(n))return e(n,i);for(var a=n.length,u=d?a:-1,p=Object(n);(d?u--:++u<a)&&!(!1===i(p[u],u,p)););return n}}function ge(e){return function(d,n,i){for(var a=-1,u=Object(d),p=i(d),t=p.length;t--;){var f=p[e?t:++a];if(!1===n(u[f],f,u))break}return d}}function ye(e,d,n,i,a,u){var p=a&dd,f=e.length,r=d.length;if(f!=r&&!(p&&r>f))return!1;var o=u.get(e);if(o&&u.get(d))return o==d;var l=-1,s=!0,m=a&ed?new L:void 0;for(u.set(e,d),u.set(d,e);++l<f;){var c=e[l],h=d[l];if(i)var g=p?i(h,c,l,d,e,u):i(c,h,l,e,d,u);if(void 0!==g){if(g)continue;s=!1;break}if(m){if(!t(d,function(e,d){if(!m.has(d)&&(c===e||n(c,e,i,a,u)))return m.add(d)})){s=!1;break}}else if(!(c===h||n(c,h,i,a,u))){s=!1;break}}return u['delete'](e),u['delete'](d),s}function ve(e,d,n,i,a,u,p){switch(n){case wd:if(e.byteLength!=d.byteLength||e.byteOffset!=d.byteOffset)return!1;e=e.buffer,d=d.buffer;case _d:return e.byteLength==d.byteLength&&i(new pn(e),new pn(d));case pd:case td:case sd:return Ae(+e,+d);case fd:return e.name==d.name&&e.message==d.message;case hd:case yd:return e==d+'';case ld:var t=c;case gd:var f=uⅆif(t||(t=g),e.size!=d.size&&!f)return!1;var r=p.get(e);if(r)return r==d;u|=ed,p.set(e,d);var o=ye(t(e),t(d),i,a,u,p);return p['delete'](e),o;case vd:if(Sn)return Sn.call(e)==Sn.call(d);}return!1}function be(e,d,n,i,a,u){var p=a&dd,t=Ke(e),f=t.length,r=Ke(d),o=r.length;if(f!=o&&!p)return!1;for(var l=f,s;l--;)if(s=t[l],p?!(s in d):!dn.call(d,s))return!1;var m=u.get(e);if(m&&u.get(d))return m==d;var c=!0;u.set(e,d),u.set(d,e);for(var h=p;++l<f;){s=t[l];var g=e[s],y=d[s];if(i)var v=p?i(y,g,s,d,e,u):i(g,y,s,e,d,u);if(void 0===v?!(g===y||n(g,y,i,a,u)):!v){c=!1;break}h||(h='constructor'==s)}if(c&&!h){var b=e.constructor,_=d.constructor;b!=_&&'constructor'in e&&'constructor'in d&&!('function'==typeof b&&b instanceof b&&'function'==typeof _&&_ instanceof _)&&(c=!1)}return u['delete'](e),u['delete'](d),c}function _e(e,d){var n=e.__data__;return je(d)?n['string'==typeof d?'string':'hash']:n.map}function we(e){for(var d=Ke(e),n=d.length;n--;){var i=d[n],a=e[i];d[n]=[i,a,De(a)]}return d}function xe(e,d){var n=s(e,d);return de(n)?n:void 0}function ke(e,d,n){d=Ie(d,e)?[d]:se(d);for(var i=-1,a=d.length,u;++i<a;){var p=Pe(d[i]);if(!(u=null!=e&&n(e,p)))break;e=e[p]}if(u)return u;var a=e?e.length:0;return!!a&&qe(a)&&Te(p,a)&&(Dn(e)||Ve(e))}function Se(e){return Dn(e)||Ve(e)||!!(rn&&e&&e[rn])}function Te(e,d){return d=null==d?id:d,!!d&&('number'==typeof e||Ud.test(e))&&-1<e&&0==e%1&&e<d}function Ne(e,d,n){if(!Be(n))return!1;var i=typeof d;return!('number'==i?!(Ue(n)&&Te(d,n.length)):!('string'==i&&d in n))&&Ae(n[d],e)}function Ie(e,d){if(Dn(e))return!1;var n=typeof e;return'number'==n||'symbol'==n||'boolean'==n||null==e||ze(e)||Ed.test(e)||!Dd.test(e)||null!=d&&e in Object(d)}function je(e){var d=typeof e;return'string'==d||'number'==d||'symbol'==d||'boolean'==d?'__proto__'!==e:null===e}function Oe(e){return!!Zd&&Zd in e}function Re(e){var d=e&&e.constructor,n='function'==typeof d&&d.prototype||Qd;return e===n}function De(e){return e===e&&!Be(e)}function Ee(e,d){return function(n){return null!=n&&n[e]===d&&(d!==void 0||e in Object(n))}}function Pe(e){if('string'==typeof e||ze(e))return e;var d=e+'';return'0'==d&&1/e==-nd?'-0':d}function Ce(e){if(null!=e){try{return en.call(e)}catch(d){}try{return e+''}catch(d){}}return''}function Le(e,d){if('function'!=typeof e||d&&'function'!=typeof d)throw new TypeError($e);var n=function(){var i=arguments,a=d?d.apply(this,i):i[0],u=n.cache;if(u.has(a))return u.get(a);var p=e.apply(this,i);return n.cache=u.set(a,p),p};return n.cache=new(Le.Cache||O),n}function Ae(e,d){return e===d||e!==e&&d!==d}function Ve(e){return Me(e)&&dn.call(e,'callee')&&(!tn.call(e,'callee')||nn.call(e)==ad)}function Ue(e){return null!=e&&qe(e.length)&&!Fe(e)}function Me(e){return He(e)&&Ue(e)}function Fe(e){var d=Be(e)?nn.call(e):'';return d==rd||d==od}function qe(e){return'number'==typeof e&&-1<e&&0==e%1&&e<=id}function Be(e){var d=typeof e;return!!e&&('object'==d||'function'==d)}function He(e){return!!e&&'object'==typeof e}function ze(e){return'symbol'==typeof e||He(e)&&nn.call(e)==vd}function We(e){return null==e?'':le(e)}function Je(e,d,n){var i=null==e?void 0:K(e,d);return i===void 0?n:i}function Xe(e,d){return null!=e&&ke(e,d,G)}function Ke(e){return Ue(e)?z(e):ae(e)}function Ye(e){return e}function Ge(e){return Ie(e)?f(Pe(e)):re(e)}var Qe=200,$e='Expected a function',Ze='__lodash_hash_undefined__',ed=1,dd=2,nd=1/0,id=9007199254740991,ad='[object Arguments]',ud='[object Array]',pd='[object Boolean]',td='[object Date]',fd='[object Error]',rd='[object Function]',od='[object GeneratorFunction]',ld='[object Map]',sd='[object Number]',md='[object Object]',cd='[object Promise]',hd='[object RegExp]',gd='[object Set]',yd='[object String]',vd='[object Symbol]',bd='[object WeakMap]',_d='[object ArrayBuffer]',wd='[object DataView]',xd='[object Float32Array]',kd='[object Float64Array]',Sd='[object Int8Array]',Td='[object Int16Array]',Nd='[object Int32Array]',Id='[object Uint8Array]',jd='[object Uint8ClampedArray]',Od='[object Uint16Array]',Rd='[object Uint32Array]',Dd=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ed=/^\w*$/,Pd=/^\./,Cd=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ld=/[\\^$.*+?()[\]{}|]/g,Ad=/\\(\\)?/g,Vd=/^\[object .+?Constructor\]$/,Ud=/^(?:0|[1-9]\d*)$/,Md={};Md[xd]=Md[kd]=Md[Sd]=Md[Td]=Md[Nd]=Md[Id]=Md[jd]=Md[Od]=Md[Rd]=!0,Md[ad]=Md[ud]=Md[_d]=Md[pd]=Md[wd]=Md[td]=Md[fd]=Md[rd]=Md[ld]=Md[sd]=Md[md]=Md[hd]=Md[gd]=Md[yd]=Md[bd]=!1;var Fd='object'==typeof e&&e&&e.Object===Object&&e,qd='object'==typeof self&&self&&self.Object===Object&&self,Bd=Fd||qd||Function('return this')(),Hd='object'==typeof d&&d&&!d.nodeType&&d,zd=Hd&&'object'==typeof n&&n&&!n.nodeType&&n,Wd=zd&&zd.exports===Hd,Jd=Wd&&Fd.process,Xd=function(){try{return Jd&&Jd.binding('util')}catch(d){}}(),Kd=Xd&&Xd.isTypedArray,Yd=Array.prototype,Gd=Function.prototype,Qd=Object.prototype,$d=Bd['__core-js_shared__'],Zd=function(){var e=/[^.]+$/.exec($d&&$d.keys&&$d.keys.IE_PROTO||'');return e?'Symbol(src)_1.'+e:''}(),en=Gd.toString,dn=Qd.hasOwnProperty,nn=Qd.toString,an=RegExp('^'+en.call(dn).replace(Ld,'\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,'$1.*?')+'$'),un=Bd.Symbol,pn=Bd.Uint8Array,tn=Qd.propertyIsEnumerable,fn=Yd.splice,rn=un?un.isConcatSpreadable:void 0,on=h(Object.keys,Object),ln=i,sn=xe(Bd,'DataView'),mn=xe(Bd,'Map'),cn=xe(Bd,'Promise'),hn=xe(Bd,'Set'),gn=xe(Bd,'WeakMap'),yn=xe(Object,'create'),vn=Ce(sn),bn=Ce(mn),_n=Ce(cn),wn=Ce(hn),xn=Ce(gn),kn=un?un.prototype:void 0,Sn=kn?kn.valueOf:void 0,Tn=kn?kn.toString:void 0;y.prototype.clear=v,y.prototype['delete']=b,y.prototype.get=_,y.prototype.has=w,y.prototype.set=x,k.prototype.clear=S,k.prototype['delete']=T,k.prototype.get=N,k.prototype.has=I,k.prototype.set=j,O.prototype.clear=R,O.prototype['delete']=D,O.prototype.get=E,O.prototype.has=P,O.prototype.set=C,L.prototype.add=L.prototype.push=A,L.prototype.has=V,U.prototype.clear=M,U.prototype['delete']=F,U.prototype.get=q,U.prototype.has=B,U.prototype.set=H;var Nn=he(X),In=ge(),jn=Y;(sn&&jn(new sn(new ArrayBuffer(1)))!=wd||mn&&jn(new mn)!=ld||cn&&jn(cn.resolve())!=cd||hn&&jn(new hn)!=gd||gn&&jn(new gn)!=bd)&&(jn=function(e){var d=nn.call(e),n=d==md?e.constructor:void 0,i=n?Ce(n):void 0;if(i)switch(i){case vn:return wd;case bn:return ld;case _n:return cd;case wn:return gd;case xn:return bd;}return d});var On=Le(function(e){e=We(e);var d=[];return Pd.test(e)&&d.push(''),e.replace(Cd,function(e,n,i,a){d.push(i?a.replace(Ad,'$1'):n||e)}),d}),Rn=oe(function(e,d){if(null==e)return[];var n=d.length;return 1<n&&Ne(e,d[0],d[1])?d=[]:2<n&&Ne(d[0],d[1],d[2])&&(d=[d[0]]),fe(e,J(d,1),[])});Le.Cache=O;var Dn=Array.isArray,En=Kd?l(Kd):ne;n.exports=Rn}).call(d,n(1),n(98)(e))},function(e,d,n){function i(e){return n(a(e))}function a(e){var d=u[e];if(!(d+1))throw new Error('Cannot find module \''+e+'\'.');return d}var u={"./N3Lexer":89,"./N3Lexer.js":89,"./N3Parser":90,"./N3Parser.js":90,"./N3Store":151,"./N3Store.js":151,"./N3StreamParser":152,"./N3StreamParser.js":152,"./N3StreamWriter":153,"./N3StreamWriter.js":153,"./N3Util":91,"./N3Util.js":91,"./N3Writer":92,"./N3Writer.js":92};;;i.keys=function e(){return Object.keys(u)},i.resolve=a,e.exports=i,i.id=262},function(e,d,n){e.exports=n(24)},function(e,d,n){'use strict';function i(e){return this instanceof i?void a.call(this,e):new i(e)}e.exports=i;var a=n(156),u=n(37);u.inherits=n(31),u.inherits(i,a),i.prototype._transform=function(e,d,n){n(null,e)}},function(e,d,n){'use strict';function i(e,d){if(!(e instanceof d))throw new TypeError('Cannot call a class as a function')}function a(e,d,n){e.copy(d,n)}var u=n(59).Buffer,p=n(299);e.exports=function(){function e(){i(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function e(d){var n={data:d,next:null};0<this.length?this.tail.next=n:this.head=n,this.tail=n,++this.length},e.prototype.unshift=function e(d){var n={data:d,next:this.head};0===this.length&&(this.tail=n),this.head=n,++this.length},e.prototype.shift=function e(){if(0!==this.length){var d=this.head.data;return this.head=1===this.length?this.tail=null:this.head.next,--this.length,d}},e.prototype.clear=function e(){this.head=this.tail=null,this.length=0},e.prototype.join=function e(d){if(0===this.length)return'';for(var n=this.head,i=''+n.data;n=n.next;)i+=d+n.data;return i},e.prototype.concat=function e(d){if(0===this.length)return u.alloc(0);if(1===this.length)return this.head.data;for(var n=u.allocUnsafe(d>>>0),t=this.head,p=0;t;)a(t.data,n,p),p+=t.data.length,t=t.next;return n},e}(),p&&p.inspect&&p.inspect.custom&&(e.exports.prototype[p.inspect.custom]=function(){var e=p.inspect({length:this.length});return this.constructor.name+' '+e})},function(e,d,n){e.exports=n(94).PassThrough},function(e,d,n){e.exports=n(94).Transform},function(e,d,n){e.exports=n(93)},function(e,d,n){var i=function(){return this}()||Function('return this')(),a=i.regeneratorRuntime&&0<=Object.getOwnPropertyNames(i).indexOf('regeneratorRuntime'),u=a&&i.regeneratorRuntime;if(i.regeneratorRuntime=void 0,e.exports=n(270),a)i.regeneratorRuntime=u;else try{delete i.regeneratorRuntime}catch(d){i.regeneratorRuntime=void 0}},function(e,d){!function(d){'use strict';function n(e,d,n,i){var u=d&&d.prototype instanceof a?d:a,p=Object.create(u.prototype),t=new m(i||[]);return p._invoke=r(e,n,t),p}function i(e,d,n){try{return{type:'normal',arg:e.call(d,n)}}catch(e){return{type:'throw',arg:e}}}function a(){}function u(){}function p(){}function t(e){['next','throw','return'].forEach(function(d){e[d]=function(e){return this._invoke(d,e)}})}function f(e){function d(n,a,u,p){var t=i(e[n],e,a);if('throw'===t.type)p(t.arg);else{var f=t.arg,r=f.value;return r&&'object'==typeof r&&y.call(r,'__await')?Promise.resolve(r.__await).then(function(e){d('next',e,u,p)},function(e){d('throw',e,u,p)}):Promise.resolve(r).then(function(e){f.value=e,u(f)},p)}}function n(e,n){function i(){return new Promise(function(i,a){d(e,n,i,a)})}return a=a?a.then(i,i):i()}var a;this._invoke=n}function r(e,d,n){var a=T;return function u(p,t){if(a==I)throw new Error('Generator is already running');if(a==j){if('throw'===p)throw t;return h()}for(n.method=p,n.arg=t;!0;){var f=n.delegate;if(f){var r=o(f,n);if(r){if(r===O)continue;return r}}if('next'===n.method)n.sent=n._sent=n.arg;else if('throw'===n.method){if(a==T)throw a=j,n.arg;n.dispatchException(n.arg)}else'return'===n.method&&n.abrupt('return',n.arg);a=I;var l=i(e,d,n);if('normal'===l.type){if(a=n.done?j:N,l.arg===O)continue;return{value:l.arg,done:n.done}}'throw'===l.type&&(a=j,n.method='throw',n.arg=l.arg)}}}function o(e,d){var n=e.iterator[d.method];if(void 0===n){if(d.delegate=null,'throw'===d.method){if(e.iterator.return&&(d.method='return',d.arg=void 0,o(e,d),'throw'===d.method))return O;d.method='throw',d.arg=new TypeError('The iterator does not provide a \'throw\' method')}return O}var a=i(n,e.iterator,d.arg);if('throw'===a.type)return d.method='throw',d.arg=a.arg,d.delegate=null,O;var u=a.arg;if(!u)return d.method='throw',d.arg=new TypeError('iterator result is not an object'),d.delegate=null,O;if(u.done)d[e.resultName]=u.value,d.next=e.nextLoc,'return'!==d.method&&(d.method='next',d.arg=void 0);else return u;return d.delegate=null,O}function l(e){var d={tryLoc:e[0]};1 in e&&(d.catchLoc=e[1]),2 in e&&(d.finallyLoc=e[2],d.afterLoc=e[3]),this.tryEntries.push(d)}function s(e){var d=e.completion||{};d.type='normal',delete d.arg,e.completion=d}function m(e){this.tryEntries=[{tryLoc:'root'}],e.forEach(l,this),this.reset(!0)}function c(e){if(e){var d=e[b];if(d)return d.call(e);if('function'==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function d(){for(;++n<e.length;)if(y.call(e,n))return d.value=e[n],d.done=!1,d;return d.value=void 0,d.done=!0,d};return i.next=i}}return{next:h}}function h(){return{value:void 0,done:!0}}var g=Object.prototype,y=g.hasOwnProperty,v='function'==typeof Symbol?Symbol:{},b=v.iterator||'@@iterator',_=v.asyncIterator||'@@asyncIterator',w=v.toStringTag||'@@toStringTag',x='object'==typeof e,k=d.regeneratorRuntime,S;if(k)return void(x&&(e.exports=k));k=d.regeneratorRuntime=x?e.exports:{},k.wrap=n;var T='suspendedStart',N='suspendedYield',I='executing',j='completed',O={},R={};R[b]=function(){return this};var D=Object.getPrototypeOf,E=D&&D(D(c([])));E&&E!==g&&y.call(E,b)&&(R=E);var P=p.prototype=a.prototype=Object.create(R);u.prototype=P.constructor=p,p.constructor=u,p[w]=u.displayName='GeneratorFunction',k.isGeneratorFunction=function(e){var d='function'==typeof e&&e.constructor;return!!d&&(d===u||'GeneratorFunction'===(d.displayName||d.name))},k.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,!(w in e)&&(e[w]='GeneratorFunction')),e.prototype=Object.create(P),e},k.awrap=function(e){return{__await:e}},t(f.prototype),f.prototype[_]=function(){return this},k.AsyncIterator=f,k.async=function(e,d,i,a){var u=new f(n(e,d,i,a));return k.isGeneratorFunction(d)?u:u.next().then(function(e){return e.done?e.value:u.next()})},t(P),P[w]='Generator',P[b]=function(){return this},P.toString=function(){return'[object Generator]'},k.keys=function(e){var d=[];for(var n in e)d.push(n);return d.reverse(),function n(){for(;d.length;){var i=d.pop();if(i in e)return n.value=i,n.done=!1,n}return n.done=!0,n}},k.values=c,m.prototype={constructor:m,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method='next',this.arg=void 0,this.tryEntries.forEach(s),!e)for(var d in this)'t'===d.charAt(0)&&y.call(this,d)&&!isNaN(+d.slice(1))&&(this[d]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0],d=e.completion;if('throw'===d.type)throw d.arg;return this.rval},dispatchException:function(e){function d(d,i){return u.type='throw',u.arg=e,n.next=d,i&&(n.method='next',n.arg=void 0),!!i}if(this.done)throw e;for(var n=this,a=this.tryEntries.length-1;0<=a;--a){var i=this.tryEntries[a],u=i.completion;if('root'===i.tryLoc)return d('end');if(i.tryLoc<=this.prev){var p=y.call(i,'catchLoc'),t=y.call(i,'finallyLoc');if(p&&t){if(this.prev<i.catchLoc)return d(i.catchLoc,!0);if(this.prev<i.finallyLoc)return d(i.finallyLoc)}else if(p){if(this.prev<i.catchLoc)return d(i.catchLoc,!0);}else if(!t)throw new Error('try statement without catch or finally');else if(this.prev<i.finallyLoc)return d(i.finallyLoc)}}},abrupt:function(e,d){for(var n=this.tryEntries.length-1,i;0<=n;--n)if(i=this.tryEntries[n],i.tryLoc<=this.prev&&y.call(i,'finallyLoc')&&this.prev<i.finallyLoc){var a=i;break}a&&('break'===e||'continue'===e)&&a.tryLoc<=d&&d<=a.finallyLoc&&(a=null);var u=a?a.completion:{};return u.type=e,u.arg=d,a?(this.method='next',this.next=a.finallyLoc,O):this.complete(u)},complete:function(e,d){if('throw'===e.type)throw e.arg;return'break'===e.type||'continue'===e.type?this.next=e.arg:'return'===e.type?(this.rval=this.arg=e.arg,this.method='return',this.next='end'):'normal'===e.type&&d&&(this.next=d),O},finish:function(e){for(var d=this.tryEntries.length-1,n;0<=d;--d)if(n=this.tryEntries[d],n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),s(n),O},catch:function(e){for(var d=this.tryEntries.length-1,n;0<=d;--d)if(n=this.tryEntries[d],n.tryLoc===e){var i=n.completion;if('throw'===i.type){var a=i.arg;s(n)}return a}throw new Error('illegal catch attempt')},delegateYield:function(e,d,n){return this.delegate={iterator:c(e),resultName:d,nextLoc:n},'next'===this.method&&(this.arg=void 0),O}}}(function(){return this}()||Function('return this')())},function(e,d,n){(function(e,d){(function(e,n){'use strict';function i(e){'function'!=typeof e&&(e=new Function(''+e));for(var d=Array(arguments.length-1),n=0;n<d.length;n++)d[n]=arguments[n+1];var i={callback:e,args:d};return c[m]=i,v(m),m++}function a(e){delete c[e]}function u(e){var d=e.callback,n=e.args;switch(n.length){case 0:d();break;case 1:d(n[0]);break;case 2:d(n[0],n[1]);break;case 3:d(n[0],n[1],n[2]);break;default:d.apply(void 0,n);}}function p(e){if(h)setTimeout(p,0,e);else{var d=c[e];if(d){h=!0;try{u(d)}finally{a(e),h=!1}}}}function t(){v=function(e){d.nextTick(function(){p(e)})}}function f(){if(e.postMessage&&!e.importScripts){var d=!0,n=e.onmessage;return e.onmessage=function(){d=!1},e.postMessage('','*'),e.onmessage=n,d}}function r(){var d='setImmediate$'+Math.random()+'$',n=function(n){n.source===e&&'string'==typeof n.data&&0===n.data.indexOf(d)&&p(+n.data.slice(d.length))};e.addEventListener?e.addEventListener('message',n,!1):e.attachEvent('onmessage',n),v=function(n){e.postMessage(d+n,'*')}}function o(){var e=new MessageChannel;e.port1.onmessage=function(e){var d=e.data;p(d)},v=function(d){e.port2.postMessage(d)}}function l(){var e=g.documentElement;v=function(d){var n=g.createElement('script');n.onreadystatechange=function(){p(d),n.onreadystatechange=null,e.removeChild(n),n=null},e.appendChild(n)}}function s(){v=function(e){setTimeout(p,0,e)}}if(!e.setImmediate){var m=1,c={},h=!1,g=e.document,y=Object.getPrototypeOf&&Object.getPrototypeOf(e),v;y=y&&y.setTimeout?y:e,'[object process]'==={}.toString.call(e.process)?t():f()?r():e.MessageChannel?o():g&&'onreadystatechange'in g.createElement('script')?l():s(),y.setImmediate=i,y.clearImmediate=a}})('undefined'==typeof self?'undefined'==typeof e?this:e:self)}).call(d,n(1),n(16))},function(e,d,n){'use strict';function i(e){if(e&&e.__esModule)return e;var d={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(d[n]=e[n]);return d.default=e,d}function a(e){return e&&e.__esModule?e:{default:e}}function u(e){var d=this;return function(){var n=(0,o.default)(f.default.mark(function n(i,a){var u,t,r,o;return f.default.wrap(function d(n){for(;1;)switch(n.prev=n.next){case 0:return a=a||{},n.next=3,(0,m.getSession)(e);case 3:return u=n.sent,n.next=6,p(e)(i);case 6:if(t=n.sent,!(u&&t)){n.next=9;break}return n.abrupt('return',y(u,i,a));case 9:return n.next=11,g(i,a);case 11:if(r=n.sent,401!==r.status){n.next=20;break}return n.next=15,(0,s.updateHostFromResponse)(e)(r);case 15:return n.next=17,p(e)(i);case 17:if(o=n.sent,!(u&&o)){n.next=20;break}return n.abrupt('return',y(u,i,a));case 20:return n.abrupt('return',r);case 21:case'end':return n.stop();}},n,d)}));return function(e,d){return n.apply(this,arguments)}}()}function p(e){var d=this;return function(){var n=(0,o.default)(f.default.mark(function n(i){var a,u;return f.default.wrap(function d(n){for(;1;)switch(n.prev=n.next){case 0:return n.next=2,(0,m.getSession)(e);case 2:if(a=n.sent,a){n.next=5;break}return n.abrupt('return',!1);case 5:return n.next=7,(0,s.getHost)(e)((0,l.toUrlString)(i));case 7:return u=n.sent,n.abrupt('return',null!=u&&u.requiresAuth);case 9:case'end':return n.stop();}},n,d)}));return function(e){return n.apply(this,arguments)}}()}Object.defineProperty(d,'__esModule',{value:!0});var t=n(20),f=a(t),r=n(19),o=a(r);d.authnFetch=u,n(260);var l=n(61),s=n(273),m=n(95),c=n(96),h=i(c),g=fetch,y=function(){var e=(0,o.default)(f.default.mark(function e(d,n,i){return f.default.wrap(function e(a){for(;1;)switch(a.prev=a.next){case 0:return a.abrupt('return',h.fetchWithCredentials(d)(g,n,i));case 1:case'end':return a.stop();}},e,void 0)}));return function d(n,i,a){return e.apply(this,arguments)}}()},function(e,d,n){'use strict';function i(e){if(e&&e.__esModule)return e;var d={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(d[n]=e[n]);return d.default=e,d}function a(e){return e&&e.__esModule?e:{default:e}}function u(e){var d=this;return function(){var n=(0,h.default)(m.default.mark(function n(i){var a,u,p,t,f;return m.default.wrap(function d(n){for(;1;)switch(n.prev=n.next){case 0:return a=new URL(i),u=a.host,n.next=3,(0,g.getSession)(e);case 3:if(p=n.sent,!(p&&u===new URL(p.idp).host)){n.next=6;break}return n.abrupt('return',{url:u,requiresAuth:!0});case 6:return n.next=8,(0,y.getData)(e);case 8:return t=n.sent,f=t.hosts,n.abrupt('return',f&&f[u]);case 11:case'end':return n.stop();}},n,d)}));return function(e){return n.apply(this,arguments)}}()}function p(e){var d=this;return function(){var n=(0,h.default)(m.default.mark(function n(i){var a=i.url,u=i.requiresAuth;return m.default.wrap(function d(n){for(;1;)switch(n.prev=n.next){case 0:return n.next=2,(0,y.updateStorage)(e,function(e){return(0,l.default)({},e,{hosts:(0,l.default)({},e.hosts,(0,r.default)({},a,{requiresAuth:u}))})});case 2:case'end':return n.stop();}},n,d)}));return function(e){return n.apply(this,arguments)}}()}function t(e){var d=this;return function(){var n=(0,h.default)(m.default.mark(function n(i){var a,u;return m.default.wrap(function d(n){for(;1;)switch(n.prev=n.next){case 0:if(!b.requiresAuth(i)){n.next=4;break}return a=new URL(i.url),u=a.host,n.next=4,p(e)({url:u,requiresAuth:!0});case 4:case'end':return n.stop();}},n,d)}));return function(e){return n.apply(this,arguments)}}()}Object.defineProperty(d,'__esModule',{value:!0});var f=n(124),r=a(f),o=n(49),l=a(o),s=n(20),m=a(s),c=n(19),h=a(c);d.getHost=u,d.saveHost=p,d.updateHostFromResponse=t;var g=n(95),y=n(60),v=n(96),b=i(v)},function(e,d,n){'use strict';function i(e){return e&&e.__esModule?e:{default:e}}var a=n(202),u=i(a),p=n(276),t=i(p),f=new t.default;if((0,u.default)(t.default.prototype).forEach(function(e){var d=f[e];'function'==typeof d&&(f[e]=d.bind(f))}),e.exports=f,'undefined'!=typeof window){var r=!1;Object.defineProperty(window,'SolidAuthClient',{enumerable:!0,get:function e(){return r||(r=!0,console.warn('window.SolidAuthClient has been deprecated.'),console.warn('Please use window.solid.auth instead.')),f}})}},function(e,d,n){'use strict';function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(d,'__esModule',{value:!0}),d.openIdpSelector=d.startPopupServer=d.appOriginHandler=d.loginHandler=d.storageHandler=void 0;var a=n(48),u=i(a),p=n(211),t=i(p),f=n(159),r=n(61),o=function e(d,n,i){return(0,f.combineHandlers)(l(d),s(n,i),m)},l=d.storageHandler=function e(d){return function(e){var n=e.id,i=e.method,a=e.args;return'storage/getItem'===i?d.getItem.apply(d,(0,t.default)(a)).then(function(e){return{id:n,ret:e}}):'storage/setItem'===i?d.setItem.apply(d,(0,t.default)(a)).then(function(){return{id:n,ret:null}}):'storage/removeItem'===i?d.removeItem.apply(d,(0,t.default)(a)).then(function(){return{id:n,ret:null}}):null}},s=d.loginHandler=function e(d,n){return function(e){var i=e.id,a=e.method,p=e.args;return'getLoginOptions'===a?u.default.resolve({id:i,ret:{popupUri:d.popupUri,callbackUri:d.callbackUri}}):'foundSession'===a?(n(p[0]),u.default.resolve({id:i,ret:null})):null}},m=d.appOriginHandler=function e(d){var n=d.id,i=d.method;return'getAppOrigin'===i?u.default.resolve({id:n,ret:window.location.origin}):null},c=d.startPopupServer=function e(d,n,i){return new u.default(function(e,a){if(!(i.popupUri&&i.callbackUri))return a(new Error('Cannot serve a popup without both "options.popupUri" and "options.callbackUri"'));var u=(0,f.server)(n,(0,r.originOf)(i.popupUri||''))(o(d,i,function(d){u.stop(),e(d)}));u.start()})},h=d.openIdpSelector=function e(d){if(!(d.popupUri&&d.callbackUri))throw new Error('Cannot open IDP select UI. Must provide both "options.popupUri" and "options.callbackUri".');var n=650,i=400,a=window.open(d.popupUri,'_blank','width='+n+',height='+i+',left='+(window.innerWidth-n)/2+',top='+(window.innerHeight-i)/2);return a}},function(e,d,n){'use strict';function i(e){if(e&&e.__esModule)return e;var d={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(d[n]=e[n]);return d.default=e,d}function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(d,'__esModule',{value:!0});var u=n(20),p=a(u),t=n(49),f=a(t),r=n(19),o=a(r),l=n(203),s=a(l),m=n(207),c=a(m),h=n(208),g=a(h),y=n(210),v=a(y),b=n(209),_=a(b),w=n(57),x=a(w),k=n(272),S=n(275),T=n(95),N=n(60),I=n(61),j=n(96),O=i(j),R=function e(d){return{callbackUri:d?d.split('#')[0]:'',popupUri:'',storage:(0,N.defaultStorage)()}},D=function(e){function d(){return(0,c.default)(this,d),(0,v.default)(this,(d.__proto__||(0,s.default)(d)).apply(this,arguments))}return(0,_.default)(d,e),(0,g.default)(d,[{key:'fetch',value:function e(d,n){return(0,k.authnFetch)((0,N.defaultStorage)())(d,n)}},{key:'login',value:function(){function e(e,n){return d.apply(this,arguments)}var d=(0,o.default)(p.default.mark(function e(d,n){var i;return p.default.wrap(function e(a){for(;1;)switch(a.prev=a.next){case 0:return n=(0,f.default)({},R((0,I.currentUrlNoParams)()),n),a.next=3,O.login(d,n);case 3:return i=a.sent,a.abrupt('return',i);case 5:case'end':return a.stop();}},e,this)}));return e}()},{key:'popupLogin',value:function(){function e(e){return d.apply(this,arguments)}var d=(0,o.default)(p.default.mark(function e(d){var n,i;return p.default.wrap(function e(a){for(;1;)switch(a.prev=a.next){case 0:return d=(0,f.default)({},R(),d),/https?:/.test(d.popupUri)||(d.popupUri=new URL(d.popupUri||'/.well-known/solid/login',window.location).toString()),d.callbackUri||(d.callbackUri=d.popupUri),n=(0,S.openIdpSelector)(d),a.next=6,(0,S.startPopupServer)(d.storage,n,d);case 6:return i=a.sent,this.emit('login',i),this.emit('session',i),a.abrupt('return',i);case 10:case'end':return a.stop();}},e,this)}));return e}()},{key:'currentSession',value:function(){function e(){return d.apply(this,arguments)}var d=(0,o.default)(p.default.mark(function e(){var d=0<arguments.length&&void 0!==arguments[0]?arguments[0]:(0,N.defaultStorage)(),n;return p.default.wrap(function e(i){for(;1;)switch(i.prev=i.next){case 0:return i.next=2,(0,T.getSession)(d);case 2:if(n=i.sent,n){i.next=18;break}return i.prev=4,i.next=7,O.currentSession(d);case 7:n=i.sent,i.next=13;break;case 10:i.prev=10,i.t0=i['catch'](4),console.error(i.t0);case 13:if(!n){i.next=18;break}return this.emit('login',n),this.emit('session',n),i.next=18,(0,T.saveSession)(d)(n);case 18:return i.abrupt('return',n);case 19:case'end':return i.stop();}},e,this,[[4,10]])}));return e}()},{key:'trackSession',value:function(){function e(e){return d.apply(this,arguments)}var d=(0,o.default)(p.default.mark(function e(d){return p.default.wrap(function e(n){for(;1;)switch(n.prev=n.next){case 0:return n.t0=d,n.next=3,this.currentSession();case 3:n.t1=n.sent,(0,n.t0)(n.t1),this.on('session',d);case 6:case'end':return n.stop();}},e,this)}));return e}()},{key:'logout',value:function(){function e(){return d.apply(this,arguments)}var d=(0,o.default)(p.default.mark(function e(){var d=0<arguments.length&&void 0!==arguments[0]?arguments[0]:(0,N.defaultStorage)(),n;return p.default.wrap(function e(i){for(;1;)switch(i.prev=i.next){case 0:return i.next=2,(0,T.getSession)(d);case 2:if(n=i.sent,!n){i.next=17;break}return i.prev=4,i.next=7,O.logout(d);case 7:this.emit('logout'),this.emit('session',null),i.next=15;break;case 11:i.prev=11,i.t0=i['catch'](4),console.warn('Error logging out:'),console.error(i.t0);case 15:return i.next=17,(0,T.clearSession)(d);case 17:case'end':return i.stop();}},e,this,[[4,11]])}));return e}()}]),d}(x.default);d.default=D},function(e,d){function n(e,d){if(e&&'object'==typeof e?(d=e,e=void 0):this.message=e,d)for(var n in d)this[n]=d[n];i.call(this,'name')||(this.name=i.call(a(this),'name')?this.name:this.constructor.name),u&&!('stack'in this)&&u(this,this.constructor)}var i=Object.hasOwnProperty,a=Object.getPrototypeOf,u=Error.captureStackTrace;e.exports=n,n.prototype=Object.create(Error.prototype,{constructor:{value:n,configurable:!0,writable:!0}}),n.prototype.name='StandardError'},function(e,d){e.exports={100:'Continue',101:'Switching Protocols',102:'Processing',200:'OK',201:'Created',202:'Accepted',203:'Non-Authoritative Information',204:'No Content',205:'Reset Content',206:'Partial Content',207:'Multi-Status',208:'Already Reported',226:'IM Used',300:'Multiple Choices',301:'Moved Permanently',302:'Found',303:'See Other',304:'Not Modified',305:'Use Proxy',307:'Temporary Redirect',308:'Permanent Redirect',400:'Bad Request',401:'Unauthorized',402:'Payment Required',403:'Forbidden',404:'Not Found',405:'Method Not Allowed',406:'Not Acceptable',407:'Proxy Authentication Required',408:'Request Timeout',409:'Conflict',410:'Gone',411:'Length Required',412:'Precondition Failed',413:'Payload Too Large',414:'URI Too Long',415:'Unsupported Media Type',416:'Range Not Satisfiable',417:'Expectation Failed',418:'I\'m a teapot',421:'Misdirected Request',422:'Unprocessable Entity',423:'Locked',424:'Failed Dependency',425:'Unordered Collection',426:'Upgrade Required',428:'Precondition Required',429:'Too Many Requests',431:'Request Header Fields Too Large',500:'Internal Server Error',501:'Not Implemented',502:'Bad Gateway',503:'Service Unavailable',504:'Gateway Timeout',505:'HTTP Version Not Supported',506:'Variant Also Negotiates',507:'Insufficient Storage',508:'Loop Detected',509:'Bandwidth Limit Exceeded',510:'Not Extended',511:'Network Authentication Required'}},function(e,d,n){function i(e,d,n){if('string'==typeof e&&(e=t[e]),'number'!=typeof e)throw new TypeError('Non-numeric HTTP code');'object'==typeof d&&null!=d&&(n=d,d=null),u.call(this,d||p[e],n),this.code=e}function a(e){return{configurable:!0,get:function(){return this[e]},set:function(d){return this[e]=d}}}d=e.exports=i;var u=n(277),p=n(278),t=d;for(var f in i.prototype=Object.create(u.prototype,{constructor:{value:i,configurable:!0,writable:!0}}),i.prototype.name='HttpError',Object.defineProperties(i.prototype,{statusCode:a('code'),statusMessage:a('message'),status:{configurable:!0,get:function(){return this.code},set:function(e){Object.defineProperty(this,'status',{value:e,configurable:!0,enumerable:!0,writable:!0})}}}),i.prototype.toString=function(){return this.name+': '+this.code+' '+this.message},p){var r=p[f];d[r.replace('\'','').replace(/[- ]/g,'_').toUpperCase()]=+f}},function(e,d,n){var i=n(282);e.exports={TextEncoder:i.TextEncoder,TextDecoder:i.TextDecoder}},function(e,d){(function(d){'use strict';'undefined'!=typeof e&&e.exports&&(e.exports=d),d['encoding-indexes']={big5:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,17392,19506,17923,17830,17784,160359,19831,17843,162993,19682,163013,15253,18230,18244,19527,19520,148159,144919,160594,159371,159954,19543,172881,18255,17882,19589,162924,19719,19108,18081,158499,29221,154196,137827,146950,147297,26189,22267,null,32149,22813,166841,15860,38708,162799,23515,138590,23204,13861,171696,23249,23479,23804,26478,34195,170309,29793,29853,14453,138579,145054,155681,16108,153822,15093,31484,40855,147809,166157,143850,133770,143966,17162,33924,40854,37935,18736,34323,22678,38730,37400,31184,31282,26208,27177,34973,29772,31685,26498,31276,21071,36934,13542,29636,155065,29894,40903,22451,18735,21580,16689,145038,22552,31346,162661,35727,18094,159368,16769,155033,31662,140476,40904,140481,140489,140492,40905,34052,144827,16564,40906,17633,175615,25281,28782,40907,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,12736,12737,12738,12739,12740,131340,12741,131281,131277,12742,12743,131275,139240,12744,131274,12745,12746,12747,12748,131342,12749,12750,256,193,461,192,274,201,282,200,332,211,465,210,null,7870,null,7872,202,257,225,462,224,593,275,233,283,232,299,237,464,236,333,243,466,242,363,250,468,249,470,472,474,476,252,null,7871,null,7873,234,609,9178,9179,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,172969,135493,null,25866,null,null,20029,28381,40270,37343,null,null,161589,25745,20250,20264,20392,20822,20852,20892,20964,21153,21160,21307,21326,21457,21464,22242,22768,22788,22791,22834,22836,23398,23454,23455,23706,24198,24635,25993,26622,26628,26725,27982,28860,30005,32420,32428,32442,32455,32463,32479,32518,32567,33402,33487,33647,35270,35774,35810,36710,36711,36718,29713,31996,32205,26950,31433,21031,null,null,null,null,37260,30904,37214,32956,null,36107,33014,133607,null,null,32927,40647,19661,40393,40460,19518,171510,159758,40458,172339,13761,null,28314,33342,29977,null,18705,39532,39567,40857,31111,164972,138698,132560,142054,20004,20097,20096,20103,20159,20203,20279,13388,20413,15944,20483,20616,13437,13459,13477,20870,22789,20955,20988,20997,20105,21113,21136,21287,13767,21417,13649,21424,13651,21442,21539,13677,13682,13953,21651,21667,21684,21689,21712,21743,21784,21795,21800,13720,21823,13733,13759,21975,13765,163204,21797,null,134210,134421,151851,21904,142534,14828,131905,36422,150968,169189,16467,164030,30586,142392,14900,18389,164189,158194,151018,25821,134524,135092,134357,135412,25741,36478,134806,134155,135012,142505,164438,148691,null,134470,170573,164073,18420,151207,142530,39602,14951,169460,16365,13574,152263,169940,161992,142660,40302,38933,null,17369,155813,25780,21731,142668,142282,135287,14843,135279,157402,157462,162208,25834,151634,134211,36456,139681,166732,132913,null,18443,131497,16378,22643,142733,null,148936,132348,155799,134988,134550,21881,16571,17338,null,19124,141926,135325,33194,39157,134556,25465,14846,141173,36288,22177,25724,15939,null,173569,134665,142031,142537,null,135368,145858,14738,14854,164507,13688,155209,139463,22098,134961,142514,169760,13500,27709,151099,null,null,161140,142987,139784,173659,167117,134778,134196,157724,32659,135375,141315,141625,13819,152035,134796,135053,134826,16275,134960,134471,135503,134732,null,134827,134057,134472,135360,135485,16377,140950,25650,135085,144372,161337,142286,134526,134527,142417,142421,14872,134808,135367,134958,173618,158544,167122,167321,167114,38314,21708,33476,21945,null,171715,39974,39606,161630,142830,28992,33133,33004,23580,157042,33076,14231,21343,164029,37302,134906,134671,134775,134907,13789,151019,13833,134358,22191,141237,135369,134672,134776,135288,135496,164359,136277,134777,151120,142756,23124,135197,135198,135413,135414,22428,134673,161428,164557,135093,134779,151934,14083,135094,135552,152280,172733,149978,137274,147831,164476,22681,21096,13850,153405,31666,23400,18432,19244,40743,18919,39967,39821,154484,143677,22011,13810,22153,20008,22786,138177,194680,38737,131206,20059,20155,13630,23587,24401,24516,14586,25164,25909,27514,27701,27706,28780,29227,20012,29357,149737,32594,31035,31993,32595,156266,13505,null,156491,32770,32896,157202,158033,21341,34916,35265,161970,35744,36125,38021,38264,38271,38376,167439,38886,39029,39118,39134,39267,170000,40060,40479,40644,27503,63751,20023,131207,38429,25143,38050,null,20539,28158,171123,40870,15817,34959,147790,28791,23797,19232,152013,13657,154928,24866,166450,36775,37366,29073,26393,29626,144001,172295,15499,137600,19216,30948,29698,20910,165647,16393,27235,172730,16931,34319,133743,31274,170311,166634,38741,28749,21284,139390,37876,30425,166371,40871,30685,20131,20464,20668,20015,20247,40872,21556,32139,22674,22736,138678,24210,24217,24514,141074,25995,144377,26905,27203,146531,27903,null,29184,148741,29580,16091,150035,23317,29881,35715,154788,153237,31379,31724,31939,32364,33528,34199,40873,34960,40874,36537,40875,36815,34143,39392,37409,40876,167353,136255,16497,17058,23066,null,null,null,39016,26475,17014,22333,null,34262,149883,33471,160013,19585,159092,23931,158485,159678,40877,40878,23446,40879,26343,32347,28247,31178,15752,17603,143958,141206,17306,17718,null,23765,146202,35577,23672,15634,144721,23928,40882,29015,17752,147692,138787,19575,14712,13386,131492,158785,35532,20404,131641,22975,33132,38998,170234,24379,134047,null,139713,166253,16642,18107,168057,16135,40883,172469,16632,14294,18167,158790,16764,165554,160767,17773,14548,152730,17761,17691,19849,19579,19830,17898,16328,150287,13921,17630,17597,16877,23870,23880,23894,15868,14351,23972,23993,14368,14392,24130,24253,24357,24451,14600,14612,14655,14669,24791,24893,23781,14729,25015,25017,25039,14776,25132,25232,25317,25368,14840,22193,14851,25570,25595,25607,25690,14923,25792,23829,22049,40863,14999,25990,15037,26111,26195,15090,26258,15138,26390,15170,26532,26624,15192,26698,26756,15218,15217,15227,26889,26947,29276,26980,27039,27013,15292,27094,15325,27237,27252,27249,27266,15340,27289,15346,27307,27317,27348,27382,27521,27585,27626,27765,27818,15563,27906,27910,27942,28033,15599,28068,28081,28181,28184,28201,28294,166336,28347,28386,28378,40831,28392,28393,28452,28468,15686,147265,28545,28606,15722,15733,29111,23705,15754,28716,15761,28752,28756,28783,28799,28809,131877,17345,13809,134872,147159,22462,159443,28990,153568,13902,27042,166889,23412,31305,153825,169177,31333,31357,154028,31419,31408,31426,31427,29137,156813,16842,31450,31453,31466,16879,21682,154625,31499,31573,31529,152334,154878,31650,31599,33692,154548,158847,31696,33825,31634,31672,154912,15789,154725,33938,31738,31750,31797,154817,31812,31875,149634,31910,26237,148856,31945,31943,31974,31860,31987,31989,31950,32359,17693,159300,32093,159446,29837,32137,32171,28981,32179,32210,147543,155689,32228,15635,32245,137209,32229,164717,32285,155937,155994,32366,32402,17195,37996,32295,32576,32577,32583,31030,156368,39393,32663,156497,32675,136801,131176,17756,145254,17667,164666,32762,156809,32773,32776,32797,32808,32815,172167,158915,32827,32828,32865,141076,18825,157222,146915,157416,26405,32935,166472,33031,33050,22704,141046,27775,156824,151480,25831,136330,33304,137310,27219,150117,150165,17530,33321,133901,158290,146814,20473,136445,34018,33634,158474,149927,144688,137075,146936,33450,26907,194964,16859,34123,33488,33562,134678,137140,14017,143741,144730,33403,33506,33560,147083,159139,158469,158615,144846,15807,33565,21996,33669,17675,159141,33708,33729,33747,13438,159444,27223,34138,13462,159298,143087,33880,154596,33905,15827,17636,27303,33866,146613,31064,33960,158614,159351,159299,34014,33807,33681,17568,33939,34020,154769,16960,154816,17731,34100,23282,159385,17703,34163,17686,26559,34326,165413,165435,34241,159880,34306,136578,159949,194994,17770,34344,13896,137378,21495,160666,34430,34673,172280,34798,142375,34737,34778,34831,22113,34412,26710,17935,34885,34886,161248,146873,161252,34910,34972,18011,34996,34997,25537,35013,30583,161551,35207,35210,35238,35241,35239,35260,166437,35303,162084,162493,35484,30611,37374,35472,162393,31465,162618,147343,18195,162616,29052,35596,35615,152624,152933,35647,35660,35661,35497,150138,35728,35739,35503,136927,17941,34895,35995,163156,163215,195028,14117,163155,36054,163224,163261,36114,36099,137488,36059,28764,36113,150729,16080,36215,36265,163842,135188,149898,15228,164284,160012,31463,36525,36534,36547,37588,36633,36653,164709,164882,36773,37635,172703,133712,36787,18730,166366,165181,146875,24312,143970,36857,172052,165564,165121,140069,14720,159447,36919,165180,162494,36961,165228,165387,37032,165651,37060,165606,37038,37117,37223,15088,37289,37316,31916,166195,138889,37390,27807,37441,37474,153017,37561,166598,146587,166668,153051,134449,37676,37739,166625,166891,28815,23235,166626,166629,18789,37444,166892,166969,166911,37747,37979,36540,38277,38310,37926,38304,28662,17081,140922,165592,135804,146990,18911,27676,38523,38550,16748,38563,159445,25050,38582,30965,166624,38589,21452,18849,158904,131700,156688,168111,168165,150225,137493,144138,38705,34370,38710,18959,17725,17797,150249,28789,23361,38683,38748,168405,38743,23370,168427,38751,37925,20688,143543,143548,38793,38815,38833,38846,38848,38866,38880,152684,38894,29724,169011,38911,38901,168989,162170,19153,38964,38963,38987,39014,15118,160117,15697,132656,147804,153350,39114,39095,39112,39111,19199,159015,136915,21936,39137,39142,39148,37752,39225,150057,19314,170071,170245,39413,39436,39483,39440,39512,153381,14020,168113,170965,39648,39650,170757,39668,19470,39700,39725,165376,20532,39732,158120,14531,143485,39760,39744,171326,23109,137315,39822,148043,39938,39935,39948,171624,40404,171959,172434,172459,172257,172323,172511,40318,40323,172340,40462,26760,40388,139611,172435,172576,137531,172595,40249,172217,172724,40592,40597,40606,40610,19764,40618,40623,148324,40641,15200,14821,15645,20274,14270,166955,40706,40712,19350,37924,159138,40727,40726,40761,22175,22154,40773,39352,168075,38898,33919,40802,40809,31452,40846,29206,19390,149877,149947,29047,150008,148296,150097,29598,166874,137466,31135,166270,167478,37737,37875,166468,37612,37761,37835,166252,148665,29207,16107,30578,31299,28880,148595,148472,29054,137199,28835,137406,144793,16071,137349,152623,137208,14114,136955,137273,14049,137076,137425,155467,14115,136896,22363,150053,136190,135848,136134,136374,34051,145062,34051,33877,149908,160101,146993,152924,147195,159826,17652,145134,170397,159526,26617,14131,15381,15847,22636,137506,26640,16471,145215,147681,147595,147727,158753,21707,22174,157361,22162,135135,134056,134669,37830,166675,37788,20216,20779,14361,148534,20156,132197,131967,20299,20362,153169,23144,131499,132043,14745,131850,132116,13365,20265,131776,167603,131701,35546,131596,20120,20685,20749,20386,20227,150030,147082,20290,20526,20588,20609,20428,20453,20568,20732,20825,20827,20829,20830,28278,144789,147001,147135,28018,137348,147081,20904,20931,132576,17629,132259,132242,132241,36218,166556,132878,21081,21156,133235,21217,37742,18042,29068,148364,134176,149932,135396,27089,134685,29817,16094,29849,29716,29782,29592,19342,150204,147597,21456,13700,29199,147657,21940,131909,21709,134086,22301,37469,38644,37734,22493,22413,22399,13886,22731,23193,166470,136954,137071,136976,23084,22968,37519,23166,23247,23058,153926,137715,137313,148117,14069,27909,29763,23073,155267,23169,166871,132115,37856,29836,135939,28933,18802,37896,166395,37821,14240,23582,23710,24158,24136,137622,137596,146158,24269,23375,137475,137476,14081,137376,14045,136958,14035,33066,166471,138682,144498,166312,24332,24334,137511,137131,23147,137019,23364,34324,161277,34912,24702,141408,140843,24539,16056,140719,140734,168072,159603,25024,131134,131142,140827,24985,24984,24693,142491,142599,149204,168269,25713,149093,142186,14889,142114,144464,170218,142968,25399,173147,25782,25393,25553,149987,142695,25252,142497,25659,25963,26994,15348,143502,144045,149897,144043,21773,144096,137433,169023,26318,144009,143795,15072,16784,152964,166690,152975,136956,152923,152613,30958,143619,137258,143924,13412,143887,143746,148169,26254,159012,26219,19347,26160,161904,138731,26211,144082,144097,26142,153714,14545,145466,145340,15257,145314,144382,29904,15254,26511,149034,26806,26654,15300,27326,14435,145365,148615,27187,27218,27337,27397,137490,25873,26776,27212,15319,27258,27479,147392,146586,37792,37618,166890,166603,37513,163870,166364,37991,28069,28427,149996,28007,147327,15759,28164,147516,23101,28170,22599,27940,30786,28987,148250,148086,28913,29264,29319,29332,149391,149285,20857,150180,132587,29818,147192,144991,150090,149783,155617,16134,16049,150239,166947,147253,24743,16115,29900,29756,37767,29751,17567,159210,17745,30083,16227,150745,150790,16216,30037,30323,173510,15129,29800,166604,149931,149902,15099,15821,150094,16127,149957,149747,37370,22322,37698,166627,137316,20703,152097,152039,30584,143922,30478,30479,30587,149143,145281,14942,149744,29752,29851,16063,150202,150215,16584,150166,156078,37639,152961,30750,30861,30856,30930,29648,31065,161601,153315,16654,31131,33942,31141,27181,147194,31290,31220,16750,136934,16690,37429,31217,134476,149900,131737,146874,137070,13719,21867,13680,13994,131540,134157,31458,23129,141045,154287,154268,23053,131675,30960,23082,154566,31486,16889,31837,31853,16913,154547,155324,155302,31949,150009,137136,31886,31868,31918,27314,32220,32263,32211,32590,156257,155996,162632,32151,155266,17002,158581,133398,26582,131150,144847,22468,156690,156664,149858,32733,31527,133164,154345,154947,31500,155150,39398,34373,39523,27164,144447,14818,150007,157101,39455,157088,33920,160039,158929,17642,33079,17410,32966,33033,33090,157620,39107,158274,33378,33381,158289,33875,159143,34320,160283,23174,16767,137280,23339,137377,23268,137432,34464,195004,146831,34861,160802,23042,34926,20293,34951,35007,35046,35173,35149,153219,35156,161669,161668,166901,166873,166812,166393,16045,33955,18165,18127,14322,35389,35356,169032,24397,37419,148100,26068,28969,28868,137285,40301,35999,36073,163292,22938,30659,23024,17262,14036,36394,36519,150537,36656,36682,17140,27736,28603,140065,18587,28537,28299,137178,39913,14005,149807,37051,37015,21873,18694,37307,37892,166475,16482,166652,37927,166941,166971,34021,35371,38297,38311,38295,38294,167220,29765,16066,149759,150082,148458,16103,143909,38543,167655,167526,167525,16076,149997,150136,147438,29714,29803,16124,38721,168112,26695,18973,168083,153567,38749,37736,166281,166950,166703,156606,37562,23313,35689,18748,29689,147995,38811,38769,39224,134950,24001,166853,150194,38943,169178,37622,169431,37349,17600,166736,150119,166756,39132,166469,16128,37418,18725,33812,39227,39245,162566,15869,39323,19311,39338,39516,166757,153800,27279,39457,23294,39471,170225,19344,170312,39356,19389,19351,37757,22642,135938,22562,149944,136424,30788,141087,146872,26821,15741,37976,14631,24912,141185,141675,24839,40015,40019,40059,39989,39952,39807,39887,171565,39839,172533,172286,40225,19630,147716,40472,19632,40204,172468,172269,172275,170287,40357,33981,159250,159711,158594,34300,17715,159140,159364,159216,33824,34286,159232,145367,155748,31202,144796,144960,18733,149982,15714,37851,37566,37704,131775,30905,37495,37965,20452,13376,36964,152925,30781,30804,30902,30795,137047,143817,149825,13978,20338,28634,28633,28702,28702,21524,147893,22459,22771,22410,40214,22487,28980,13487,147884,29163,158784,151447,23336,137141,166473,24844,23246,23051,17084,148616,14124,19323,166396,37819,37816,137430,134941,33906,158912,136211,148218,142374,148417,22932,146871,157505,32168,155995,155812,149945,149899,166394,37605,29666,16105,29876,166755,137375,16097,150195,27352,29683,29691,16086,150078,150164,137177,150118,132007,136228,149989,29768,149782,28837,149878,37508,29670,37727,132350,37681,166606,166422,37766,166887,153045,18741,166530,29035,149827,134399,22180,132634,134123,134328,21762,31172,137210,32254,136898,150096,137298,17710,37889,14090,166592,149933,22960,137407,137347,160900,23201,14050,146779,14000,37471,23161,166529,137314,37748,15565,133812,19094,14730,20724,15721,15692,136092,29045,17147,164376,28175,168164,17643,27991,163407,28775,27823,15574,147437,146989,28162,28428,15727,132085,30033,14012,13512,18048,16090,18545,22980,37486,18750,36673,166940,158656,22546,22472,14038,136274,28926,148322,150129,143331,135856,140221,26809,26983,136088,144613,162804,145119,166531,145366,144378,150687,27162,145069,158903,33854,17631,17614,159014,159057,158850,159710,28439,160009,33597,137018,33773,158848,159827,137179,22921,23170,137139,23137,23153,137477,147964,14125,23023,137020,14023,29070,37776,26266,148133,23150,23083,148115,27179,147193,161590,148571,148170,28957,148057,166369,20400,159016,23746,148686,163405,148413,27148,148054,135940,28838,28979,148457,15781,27871,194597,150095,32357,23019,23855,15859,24412,150109,137183,32164,33830,21637,146170,144128,131604,22398,133333,132633,16357,139166,172726,28675,168283,23920,29583,31955,166489,168992,20424,32743,29389,29456,162548,29496,29497,153334,29505,29512,16041,162584,36972,29173,149746,29665,33270,16074,30476,16081,27810,22269,29721,29726,29727,16098,16112,16116,16122,29907,16142,16211,30018,30061,30066,30093,16252,30152,30172,16320,30285,16343,30324,16348,30330,151388,29064,22051,35200,22633,16413,30531,16441,26465,16453,13787,30616,16490,16495,23646,30654,30667,22770,30744,28857,30748,16552,30777,30791,30801,30822,33864,152885,31027,26627,31026,16643,16649,31121,31129,36795,31238,36796,16743,31377,16818,31420,33401,16836,31439,31451,16847,20001,31586,31596,31611,31762,31771,16992,17018,31867,31900,17036,31928,17044,31981,36755,28864,134351,32207,32212,32208,32253,32686,32692,29343,17303,32800,32805,31545,32814,32817,32852,15820,22452,28832,32951,33001,17389,33036,29482,33038,33042,30048,33044,17409,15161,33110,33113,33114,17427,22586,33148,33156,17445,33171,17453,33189,22511,33217,33252,33364,17551,33446,33398,33482,33496,33535,17584,33623,38505,27018,33797,28917,33892,24803,33928,17668,33982,34017,34040,34064,34104,34130,17723,34159,34160,34272,17783,34418,34450,34482,34543,38469,34699,17926,17943,34990,35071,35108,35143,35217,162151,35369,35384,35476,35508,35921,36052,36082,36124,18328,22623,36291,18413,20206,36410,21976,22356,36465,22005,36528,18487,36558,36578,36580,36589,36594,36791,36801,36810,36812,36915,39364,18605,39136,37395,18718,37416,37464,37483,37553,37550,37567,37603,37611,37619,37620,37629,37699,37764,37805,18757,18769,40639,37911,21249,37917,37933,37950,18794,37972,38009,38189,38306,18855,38388,38451,18917,26528,18980,38720,18997,38834,38850,22100,19172,24808,39097,19225,39153,22596,39182,39193,20916,39196,39223,39234,39261,39266,19312,39365,19357,39484,39695,31363,39785,39809,39901,39921,39924,19565,39968,14191,138178,40265,39994,40702,22096,40339,40381,40384,40444,38134,36790,40571,40620,40625,40637,40646,38108,40674,40689,40696,31432,40772,131220,131767,132000,26906,38083,22956,132311,22592,38081,14265,132565,132629,132726,136890,22359,29043,133826,133837,134079,21610,194619,134091,21662,134139,134203,134227,134245,134268,24807,134285,22138,134325,134365,134381,134511,134578,134600,26965,39983,34725,134660,134670,134871,135056,134957,134771,23584,135100,24075,135260,135247,135286,26398,135291,135304,135318,13895,135359,135379,135471,135483,21348,33965,135907,136053,135990,35713,136567,136729,137155,137159,20088,28859,137261,137578,137773,137797,138282,138352,138412,138952,25283,138965,139029,29080,26709,139333,27113,14024,139900,140247,140282,141098,141425,141647,33533,141671,141715,142037,35237,142056,36768,142094,38840,142143,38983,39613,142412,null,142472,142519,154600,142600,142610,142775,142741,142914,143220,143308,143411,143462,144159,144350,24497,26184,26303,162425,144743,144883,29185,149946,30679,144922,145174,32391,131910,22709,26382,26904,146087,161367,155618,146961,147129,161278,139418,18640,19128,147737,166554,148206,148237,147515,148276,148374,150085,132554,20946,132625,22943,138920,15294,146687,148484,148694,22408,149108,14747,149295,165352,170441,14178,139715,35678,166734,39382,149522,149755,150037,29193,150208,134264,22885,151205,151430,132985,36570,151596,21135,22335,29041,152217,152601,147274,150183,21948,152646,152686,158546,37332,13427,152895,161330,152926,18200,152930,152934,153543,149823,153693,20582,13563,144332,24798,153859,18300,166216,154286,154505,154630,138640,22433,29009,28598,155906,162834,36950,156082,151450,35682,156674,156746,23899,158711,36662,156804,137500,35562,150006,156808,147439,156946,19392,157119,157365,141083,37989,153569,24981,23079,194765,20411,22201,148769,157436,20074,149812,38486,28047,158909,13848,35191,157593,157806,156689,157790,29151,157895,31554,168128,133649,157990,37124,158009,31301,40432,158202,39462,158253,13919,156777,131105,31107,158260,158555,23852,144665,33743,158621,18128,158884,30011,34917,159150,22710,14108,140685,159819,160205,15444,160384,160389,37505,139642,160395,37680,160486,149968,27705,38047,160848,134904,34855,35061,141606,164979,137137,28344,150058,137248,14756,14009,23568,31203,17727,26294,171181,170148,35139,161740,161880,22230,16607,136714,14753,145199,164072,136133,29101,33638,162269,168360,23143,19639,159919,166315,162301,162314,162571,163174,147834,31555,31102,163849,28597,172767,27139,164632,21410,159239,37823,26678,38749,164207,163875,158133,136173,143919,163912,23941,166960,163971,22293,38947,166217,23979,149896,26046,27093,21458,150181,147329,15377,26422,163984,164084,164142,139169,164175,164233,164271,164378,164614,164655,164746,13770,164968,165546,18682,25574,166230,30728,37461,166328,17394,166375,17375,166376,166726,166868,23032,166921,36619,167877,168172,31569,168208,168252,15863,168286,150218,36816,29327,22155,169191,169449,169392,169400,169778,170193,170313,170346,170435,170536,170766,171354,171419,32415,171768,171811,19620,38215,172691,29090,172799,19857,36882,173515,19868,134300,36798,21953,36794,140464,36793,150163,17673,32383,28502,27313,20202,13540,166700,161949,14138,36480,137205,163876,166764,166809,162366,157359,15851,161365,146615,153141,153942,20122,155265,156248,22207,134765,36366,23405,147080,150686,25566,25296,137206,137339,25904,22061,154698,21530,152337,15814,171416,19581,22050,22046,32585,155352,22901,146752,34672,19996,135146,134473,145082,33047,40286,36120,30267,40005,30286,30649,37701,21554,33096,33527,22053,33074,33816,32957,21994,31074,22083,21526,134813,13774,22021,22001,26353,164578,13869,30004,22000,21946,21655,21874,134209,134294,24272,151880,134774,142434,134818,40619,32090,21982,135285,25245,38765,21652,36045,29174,37238,25596,25529,25598,21865,142147,40050,143027,20890,13535,134567,20903,21581,21790,21779,30310,36397,157834,30129,32950,34820,34694,35015,33206,33820,135361,17644,29444,149254,23440,33547,157843,22139,141044,163119,147875,163187,159440,160438,37232,135641,37384,146684,173737,134828,134905,29286,138402,18254,151490,163833,135147,16634,40029,25887,142752,18675,149472,171388,135148,134666,24674,161187,135149,null,155720,135559,29091,32398,40272,19994,19972,13687,23309,27826,21351,13996,14812,21373,13989,149016,22682,150382,33325,21579,22442,154261,133497,null,14930,140389,29556,171692,19721,39917,146686,171824,19547,151465,169374,171998,33884,146870,160434,157619,145184,25390,32037,147191,146988,14890,36872,21196,15988,13946,17897,132238,30272,23280,134838,30842,163630,22695,16575,22140,39819,23924,30292,173108,40581,19681,30201,14331,24857,143578,148466,null,22109,135849,22439,149859,171526,21044,159918,13741,27722,40316,31830,39737,22494,137068,23635,25811,169168,156469,160100,34477,134440,159010,150242,134513,null,20990,139023,23950,38659,138705,40577,36940,31519,39682,23761,31651,25192,25397,39679,31695,39722,31870,39726,31810,31878,39957,31740,39689,40727,39963,149822,40794,21875,23491,20477,40600,20466,21088,15878,21201,22375,20566,22967,24082,38856,40363,36700,21609,38836,39232,38842,21292,24880,26924,21466,39946,40194,19515,38465,27008,20646,30022,137069,39386,21107,null,37209,38529,37212,null,37201,167575,25471,159011,27338,22033,37262,30074,25221,132092,29519,31856,154657,146685,null,149785,30422,39837,20010,134356,33726,34882,null,23626,27072,20717,22394,21023,24053,20174,27697,131570,20281,21660,21722,21146,36226,13822,24332,13811,null,27474,37244,40869,39831,38958,39092,39610,40616,40580,29050,31508,null,27642,34840,32632,null,22048,173642,36471,40787,null,36308,36431,40476,36353,25218,164733,36392,36469,31443,150135,31294,30936,27882,35431,30215,166490,40742,27854,34774,30147,172722,30803,194624,36108,29410,29553,35629,29442,29937,36075,150203,34351,24506,34976,17591,null,137275,159237,null,35454,140571,null,24829,30311,39639,40260,37742,39823,34805,null,34831,36087,29484,38689,39856,13782,29362,19463,31825,39242,155993,24921,19460,40598,24957,null,22367,24943,25254,25145,25294,14940,25058,21418,144373,25444,26626,13778,23895,166850,36826,167481,null,20697,138566,30982,21298,38456,134971,16485,null,30718,null,31938,155418,31962,31277,32870,32867,32077,29957,29938,35220,33306,26380,32866,160902,32859,29936,33027,30500,35209,157644,30035,159441,34729,34766,33224,34700,35401,36013,35651,30507,29944,34010,13877,27058,36262,null,35241,29800,28089,34753,147473,29927,15835,29046,24740,24988,15569,29026,24695,null,32625,166701,29264,24809,19326,21024,15384,146631,155351,161366,152881,137540,135934,170243,159196,159917,23745,156077,166415,145015,131310,157766,151310,17762,23327,156492,40784,40614,156267,12288,65292,12289,12290,65294,8231,65307,65306,65311,65281,65072,8230,8229,65104,65105,65106,183,65108,65109,65110,65111,65372,8211,65073,8212,65075,9588,65076,65103,65288,65289,65077,65078,65371,65373,65079,65080,12308,12309,65081,65082,12304,12305,65083,65084,12298,12299,65085,65086,12296,12297,65087,65088,12300,12301,65089,65090,12302,12303,65091,65092,65113,65114,65115,65116,65117,65118,8216,8217,8220,8221,12317,12318,8245,8242,65283,65286,65290,8251,167,12291,9675,9679,9651,9650,9678,9734,9733,9671,9670,9633,9632,9661,9660,12963,8453,175,65507,65343,717,65097,65098,65101,65102,65099,65100,65119,65120,65121,65291,65293,215,247,177,8730,65308,65310,65309,8806,8807,8800,8734,8786,8801,65122,65123,65124,65125,65126,65374,8745,8746,8869,8736,8735,8895,13266,13265,8747,8750,8757,8756,9792,9794,8853,8857,8593,8595,8592,8594,8598,8599,8601,8600,8741,8739,65295,65340,8725,65128,65284,65509,12306,65504,65505,65285,65312,8451,8457,65129,65130,65131,13269,13212,13213,13214,13262,13217,13198,13199,13252,176,20825,20827,20830,20829,20833,20835,21991,29929,31950,9601,9602,9603,9604,9605,9606,9607,9608,9615,9614,9613,9612,9611,9610,9609,9532,9524,9516,9508,9500,9620,9472,9474,9621,9484,9488,9492,9496,9581,9582,9584,9583,9552,9566,9578,9569,9698,9699,9701,9700,9585,9586,9587,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,12321,12322,12323,12324,12325,12326,12327,12328,12329,21313,21316,21317,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,12549,12550,12551,12552,12553,12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582,12583,12584,12585,729,713,714,711,715,9216,9217,9218,9219,9220,9221,9222,9223,9224,9225,9226,9227,9228,9229,9230,9231,9232,9233,9234,9235,9236,9237,9238,9239,9240,9241,9242,9243,9244,9245,9246,9247,9249,8364,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,19968,20057,19969,19971,20035,20061,20102,20108,20154,20799,20837,20843,20960,20992,20993,21147,21269,21313,21340,21448,19977,19979,19976,19978,20011,20024,20961,20037,20040,20063,20062,20110,20129,20800,20995,21242,21315,21449,21475,22303,22763,22805,22823,22899,23376,23377,23379,23544,23567,23586,23608,23665,24029,24037,24049,24050,24051,24062,24178,24318,24331,24339,25165,19985,19984,19981,20013,20016,20025,20043,23609,20104,20113,20117,20114,20116,20130,20161,20160,20163,20166,20167,20173,20170,20171,20164,20803,20801,20839,20845,20846,20844,20887,20982,20998,20999,21000,21243,21246,21247,21270,21305,21320,21319,21317,21342,21380,21451,21450,21453,22764,22825,22827,22826,22829,23380,23569,23588,23610,23663,24052,24187,24319,24340,24341,24515,25096,25142,25163,25166,25903,25991,26007,26020,26041,26085,26352,26376,26408,27424,27490,27513,27595,27604,27611,27663,27700,28779,29226,29238,29243,29255,29273,29275,29356,29579,19993,19990,19989,19988,19992,20027,20045,20047,20046,20197,20184,20180,20181,20182,20183,20195,20196,20185,20190,20805,20804,20873,20874,20908,20985,20986,20984,21002,21152,21151,21253,21254,21271,21277,20191,21322,21321,21345,21344,21359,21358,21435,21487,21476,21491,21484,21486,21481,21480,21500,21496,21493,21483,21478,21482,21490,21489,21488,21477,21485,21499,22235,22234,22806,22830,22833,22900,22902,23381,23427,23612,24040,24039,24038,24066,24067,24179,24188,24321,24344,24343,24517,25098,25171,25172,25170,25169,26021,26086,26414,26412,26410,26411,26413,27491,27597,27665,27664,27704,27713,27712,27710,29359,29572,29577,29916,29926,29976,29983,29992,29993,30000,30001,30002,30003,30091,30333,30382,30399,30446,30683,30690,30707,31034,31166,31348,31435,19998,19999,20050,20051,20073,20121,20132,20134,20133,20223,20233,20249,20234,20245,20237,20240,20241,20239,20210,20214,20219,20208,20211,20221,20225,20235,20809,20807,20806,20808,20840,20849,20877,20912,21015,21009,21010,21006,21014,21155,21256,21281,21280,21360,21361,21513,21519,21516,21514,21520,21505,21515,21508,21521,21517,21512,21507,21518,21510,21522,22240,22238,22237,22323,22320,22312,22317,22316,22319,22313,22809,22810,22839,22840,22916,22904,22915,22909,22905,22914,22913,23383,23384,23431,23432,23429,23433,23546,23574,23673,24030,24070,24182,24180,24335,24347,24537,24534,25102,25100,25101,25104,25187,25179,25176,25910,26089,26088,26092,26093,26354,26355,26377,26429,26420,26417,26421,27425,27492,27515,27670,27741,27735,27737,27743,27744,27728,27733,27745,27739,27725,27726,28784,29279,29277,30334,31481,31859,31992,32566,32650,32701,32769,32771,32780,32786,32819,32895,32905,32907,32908,33251,33258,33267,33276,33292,33307,33311,33390,33394,33406,34411,34880,34892,34915,35199,38433,20018,20136,20301,20303,20295,20311,20318,20276,20315,20309,20272,20304,20305,20285,20282,20280,20291,20308,20284,20294,20323,20316,20320,20271,20302,20278,20313,20317,20296,20314,20812,20811,20813,20853,20918,20919,21029,21028,21033,21034,21032,21163,21161,21162,21164,21283,21363,21365,21533,21549,21534,21566,21542,21582,21543,21574,21571,21555,21576,21570,21531,21545,21578,21561,21563,21560,21550,21557,21558,21536,21564,21568,21553,21547,21535,21548,22250,22256,22244,22251,22346,22353,22336,22349,22343,22350,22334,22352,22351,22331,22767,22846,22941,22930,22952,22942,22947,22937,22934,22925,22948,22931,22922,22949,23389,23388,23386,23387,23436,23435,23439,23596,23616,23617,23615,23614,23696,23697,23700,23692,24043,24076,24207,24199,24202,24311,24324,24351,24420,24418,24439,24441,24536,24524,24535,24525,24561,24555,24568,24554,25106,25105,25220,25239,25238,25216,25206,25225,25197,25226,25212,25214,25209,25203,25234,25199,25240,25198,25237,25235,25233,25222,25913,25915,25912,26097,26356,26463,26446,26447,26448,26449,26460,26454,26462,26441,26438,26464,26451,26455,27493,27599,27714,27742,27801,27777,27784,27785,27781,27803,27754,27770,27792,27760,27788,27752,27798,27794,27773,27779,27762,27774,27764,27782,27766,27789,27796,27800,27778,28790,28796,28797,28792,29282,29281,29280,29380,29378,29590,29996,29995,30007,30008,30338,30447,30691,31169,31168,31167,31350,31995,32597,32918,32915,32925,32920,32923,32922,32946,33391,33426,33419,33421,35211,35282,35328,35895,35910,35925,35997,36196,36208,36275,36523,36554,36763,36784,36802,36806,36805,36804,24033,37009,37026,37034,37030,37027,37193,37318,37324,38450,38446,38449,38442,38444,20006,20054,20083,20107,20123,20126,20139,20140,20335,20381,20365,20339,20351,20332,20379,20363,20358,20355,20336,20341,20360,20329,20347,20374,20350,20367,20369,20346,20820,20818,20821,20841,20855,20854,20856,20925,20989,21051,21048,21047,21050,21040,21038,21046,21057,21182,21179,21330,21332,21331,21329,21350,21367,21368,21369,21462,21460,21463,21619,21621,21654,21624,21653,21632,21627,21623,21636,21650,21638,21628,21648,21617,21622,21644,21658,21602,21608,21643,21629,21646,22266,22403,22391,22378,22377,22369,22374,22372,22396,22812,22857,22855,22856,22852,22868,22974,22971,22996,22969,22958,22993,22982,22992,22989,22987,22995,22986,22959,22963,22994,22981,23391,23396,23395,23447,23450,23448,23452,23449,23451,23578,23624,23621,23622,23735,23713,23736,23721,23723,23729,23731,24088,24090,24086,24085,24091,24081,24184,24218,24215,24220,24213,24214,24310,24358,24359,24361,24448,24449,24447,24444,24541,24544,24573,24565,24575,24591,24596,24623,24629,24598,24618,24597,24609,24615,24617,24619,24603,25110,25109,25151,25150,25152,25215,25289,25292,25284,25279,25282,25273,25298,25307,25259,25299,25300,25291,25288,25256,25277,25276,25296,25305,25287,25293,25269,25306,25265,25304,25302,25303,25286,25260,25294,25918,26023,26044,26106,26132,26131,26124,26118,26114,26126,26112,26127,26133,26122,26119,26381,26379,26477,26507,26517,26481,26524,26483,26487,26503,26525,26519,26479,26480,26495,26505,26494,26512,26485,26522,26515,26492,26474,26482,27427,27494,27495,27519,27667,27675,27875,27880,27891,27825,27852,27877,27827,27837,27838,27836,27874,27819,27861,27859,27832,27844,27833,27841,27822,27863,27845,27889,27839,27835,27873,27867,27850,27820,27887,27868,27862,27872,28821,28814,28818,28810,28825,29228,29229,29240,29256,29287,29289,29376,29390,29401,29399,29392,29609,29608,29599,29611,29605,30013,30109,30105,30106,30340,30402,30450,30452,30693,30717,31038,31040,31041,31177,31176,31354,31353,31482,31998,32596,32652,32651,32773,32954,32933,32930,32945,32929,32939,32937,32948,32938,32943,33253,33278,33293,33459,33437,33433,33453,33469,33439,33465,33457,33452,33445,33455,33464,33443,33456,33470,33463,34382,34417,21021,34920,36555,36814,36820,36817,37045,37048,37041,37046,37319,37329,38263,38272,38428,38464,38463,38459,38468,38466,38585,38632,38738,38750,20127,20141,20142,20449,20405,20399,20415,20448,20433,20431,20445,20419,20406,20440,20447,20426,20439,20398,20432,20420,20418,20442,20430,20446,20407,20823,20882,20881,20896,21070,21059,21066,21069,21068,21067,21063,21191,21193,21187,21185,21261,21335,21371,21402,21467,21676,21696,21672,21710,21705,21688,21670,21683,21703,21698,21693,21674,21697,21700,21704,21679,21675,21681,21691,21673,21671,21695,22271,22402,22411,22432,22435,22434,22478,22446,22419,22869,22865,22863,22862,22864,23004,23000,23039,23011,23016,23043,23013,23018,23002,23014,23041,23035,23401,23459,23462,23460,23458,23461,23553,23630,23631,23629,23627,23769,23762,24055,24093,24101,24095,24189,24224,24230,24314,24328,24365,24421,24456,24453,24458,24459,24455,24460,24457,24594,24605,24608,24613,24590,24616,24653,24688,24680,24674,24646,24643,24684,24683,24682,24676,25153,25308,25366,25353,25340,25325,25345,25326,25341,25351,25329,25335,25327,25324,25342,25332,25361,25346,25919,25925,26027,26045,26082,26149,26157,26144,26151,26159,26143,26152,26161,26148,26359,26623,26579,26609,26580,26576,26604,26550,26543,26613,26601,26607,26564,26577,26548,26586,26597,26552,26575,26590,26611,26544,26585,26594,26589,26578,27498,27523,27526,27573,27602,27607,27679,27849,27915,27954,27946,27969,27941,27916,27953,27934,27927,27963,27965,27966,27958,27931,27893,27961,27943,27960,27945,27950,27957,27918,27947,28843,28858,28851,28844,28847,28845,28856,28846,28836,29232,29298,29295,29300,29417,29408,29409,29623,29642,29627,29618,29645,29632,29619,29978,29997,30031,30028,30030,30027,30123,30116,30117,30114,30115,30328,30342,30343,30344,30408,30406,30403,30405,30465,30457,30456,30473,30475,30462,30460,30471,30684,30722,30740,30732,30733,31046,31049,31048,31047,31161,31162,31185,31186,31179,31359,31361,31487,31485,31869,32002,32005,32000,32009,32007,32004,32006,32568,32654,32703,32772,32784,32781,32785,32822,32982,32997,32986,32963,32964,32972,32993,32987,32974,32990,32996,32989,33268,33314,33511,33539,33541,33507,33499,33510,33540,33509,33538,33545,33490,33495,33521,33537,33500,33492,33489,33502,33491,33503,33519,33542,34384,34425,34427,34426,34893,34923,35201,35284,35336,35330,35331,35998,36000,36212,36211,36276,36557,36556,36848,36838,36834,36842,36837,36845,36843,36836,36840,37066,37070,37057,37059,37195,37194,37325,38274,38480,38475,38476,38477,38754,38761,38859,38893,38899,38913,39080,39131,39135,39318,39321,20056,20147,20492,20493,20515,20463,20518,20517,20472,20521,20502,20486,20540,20511,20506,20498,20497,20474,20480,20500,20520,20465,20513,20491,20505,20504,20467,20462,20525,20522,20478,20523,20489,20860,20900,20901,20898,20941,20940,20934,20939,21078,21084,21076,21083,21085,21290,21375,21407,21405,21471,21736,21776,21761,21815,21756,21733,21746,21766,21754,21780,21737,21741,21729,21769,21742,21738,21734,21799,21767,21757,21775,22275,22276,22466,22484,22475,22467,22537,22799,22871,22872,22874,23057,23064,23068,23071,23067,23059,23020,23072,23075,23081,23077,23052,23049,23403,23640,23472,23475,23478,23476,23470,23477,23481,23480,23556,23633,23637,23632,23789,23805,23803,23786,23784,23792,23798,23809,23796,24046,24109,24107,24235,24237,24231,24369,24466,24465,24464,24665,24675,24677,24656,24661,24685,24681,24687,24708,24735,24730,24717,24724,24716,24709,24726,25159,25331,25352,25343,25422,25406,25391,25429,25410,25414,25423,25417,25402,25424,25405,25386,25387,25384,25421,25420,25928,25929,26009,26049,26053,26178,26185,26191,26179,26194,26188,26181,26177,26360,26388,26389,26391,26657,26680,26696,26694,26707,26681,26690,26708,26665,26803,26647,26700,26705,26685,26612,26704,26688,26684,26691,26666,26693,26643,26648,26689,27530,27529,27575,27683,27687,27688,27686,27684,27888,28010,28053,28040,28039,28006,28024,28023,27993,28051,28012,28041,28014,27994,28020,28009,28044,28042,28025,28037,28005,28052,28874,28888,28900,28889,28872,28879,29241,29305,29436,29433,29437,29432,29431,29574,29677,29705,29678,29664,29674,29662,30036,30045,30044,30042,30041,30142,30149,30151,30130,30131,30141,30140,30137,30146,30136,30347,30384,30410,30413,30414,30505,30495,30496,30504,30697,30768,30759,30776,30749,30772,30775,30757,30765,30752,30751,30770,31061,31056,31072,31071,31062,31070,31069,31063,31066,31204,31203,31207,31199,31206,31209,31192,31364,31368,31449,31494,31505,31881,32033,32023,32011,32010,32032,32034,32020,32016,32021,32026,32028,32013,32025,32027,32570,32607,32660,32709,32705,32774,32792,32789,32793,32791,32829,32831,33009,33026,33008,33029,33005,33012,33030,33016,33011,33032,33021,33034,33020,33007,33261,33260,33280,33296,33322,33323,33320,33324,33467,33579,33618,33620,33610,33592,33616,33609,33589,33588,33615,33586,33593,33590,33559,33600,33585,33576,33603,34388,34442,34474,34451,34468,34473,34444,34467,34460,34928,34935,34945,34946,34941,34937,35352,35344,35342,35340,35349,35338,35351,35347,35350,35343,35345,35912,35962,35961,36001,36002,36215,36524,36562,36564,36559,36785,36865,36870,36855,36864,36858,36852,36867,36861,36869,36856,37013,37089,37085,37090,37202,37197,37196,37336,37341,37335,37340,37337,38275,38498,38499,38497,38491,38493,38500,38488,38494,38587,39138,39340,39592,39640,39717,39730,39740,20094,20602,20605,20572,20551,20547,20556,20570,20553,20581,20598,20558,20565,20597,20596,20599,20559,20495,20591,20589,20828,20885,20976,21098,21103,21202,21209,21208,21205,21264,21263,21273,21311,21312,21310,21443,26364,21830,21866,21862,21828,21854,21857,21827,21834,21809,21846,21839,21845,21807,21860,21816,21806,21852,21804,21859,21811,21825,21847,22280,22283,22281,22495,22533,22538,22534,22496,22500,22522,22530,22581,22519,22521,22816,22882,23094,23105,23113,23142,23146,23104,23100,23138,23130,23110,23114,23408,23495,23493,23492,23490,23487,23494,23561,23560,23559,23648,23644,23645,23815,23814,23822,23835,23830,23842,23825,23849,23828,23833,23844,23847,23831,24034,24120,24118,24115,24119,24247,24248,24246,24245,24254,24373,24375,24407,24428,24425,24427,24471,24473,24478,24472,24481,24480,24476,24703,24739,24713,24736,24744,24779,24756,24806,24765,24773,24763,24757,24796,24764,24792,24789,24774,24799,24760,24794,24775,25114,25115,25160,25504,25511,25458,25494,25506,25509,25463,25447,25496,25514,25457,25513,25481,25475,25499,25451,25512,25476,25480,25497,25505,25516,25490,25487,25472,25467,25449,25448,25466,25949,25942,25937,25945,25943,21855,25935,25944,25941,25940,26012,26011,26028,26063,26059,26060,26062,26205,26202,26212,26216,26214,26206,26361,21207,26395,26753,26799,26786,26771,26805,26751,26742,26801,26791,26775,26800,26755,26820,26797,26758,26757,26772,26781,26792,26783,26785,26754,27442,27578,27627,27628,27691,28046,28092,28147,28121,28082,28129,28108,28132,28155,28154,28165,28103,28107,28079,28113,28078,28126,28153,28088,28151,28149,28101,28114,28186,28085,28122,28139,28120,28138,28145,28142,28136,28102,28100,28074,28140,28095,28134,28921,28937,28938,28925,28911,29245,29309,29313,29468,29467,29462,29459,29465,29575,29701,29706,29699,29702,29694,29709,29920,29942,29943,29980,29986,30053,30054,30050,30064,30095,30164,30165,30133,30154,30157,30350,30420,30418,30427,30519,30526,30524,30518,30520,30522,30827,30787,30798,31077,31080,31085,31227,31378,31381,31520,31528,31515,31532,31526,31513,31518,31534,31890,31895,31893,32070,32067,32113,32046,32057,32060,32064,32048,32051,32068,32047,32066,32050,32049,32573,32670,32666,32716,32718,32722,32796,32842,32838,33071,33046,33059,33067,33065,33072,33060,33282,33333,33335,33334,33337,33678,33694,33688,33656,33698,33686,33725,33707,33682,33674,33683,33673,33696,33655,33659,33660,33670,33703,34389,24426,34503,34496,34486,34500,34485,34502,34507,34481,34479,34505,34899,34974,34952,34987,34962,34966,34957,34955,35219,35215,35370,35357,35363,35365,35377,35373,35359,35355,35362,35913,35930,36009,36012,36011,36008,36010,36007,36199,36198,36286,36282,36571,36575,36889,36877,36890,36887,36899,36895,36893,36880,36885,36894,36896,36879,36898,36886,36891,36884,37096,37101,37117,37207,37326,37365,37350,37347,37351,37357,37353,38281,38506,38517,38515,38520,38512,38516,38518,38519,38508,38592,38634,38633,31456,31455,38914,38915,39770,40165,40565,40575,40613,40635,20642,20621,20613,20633,20625,20608,20630,20632,20634,26368,20977,21106,21108,21109,21097,21214,21213,21211,21338,21413,21883,21888,21927,21884,21898,21917,21912,21890,21916,21930,21908,21895,21899,21891,21939,21934,21919,21822,21938,21914,21947,21932,21937,21886,21897,21931,21913,22285,22575,22570,22580,22564,22576,22577,22561,22557,22560,22777,22778,22880,23159,23194,23167,23186,23195,23207,23411,23409,23506,23500,23507,23504,23562,23563,23601,23884,23888,23860,23879,24061,24133,24125,24128,24131,24190,24266,24257,24258,24260,24380,24429,24489,24490,24488,24785,24801,24754,24758,24800,24860,24867,24826,24853,24816,24827,24820,24936,24817,24846,24822,24841,24832,24850,25119,25161,25507,25484,25551,25536,25577,25545,25542,25549,25554,25571,25552,25569,25558,25581,25582,25462,25588,25578,25563,25682,25562,25593,25950,25958,25954,25955,26001,26000,26031,26222,26224,26228,26230,26223,26257,26234,26238,26231,26366,26367,26399,26397,26874,26837,26848,26840,26839,26885,26847,26869,26862,26855,26873,26834,26866,26851,26827,26829,26893,26898,26894,26825,26842,26990,26875,27454,27450,27453,27544,27542,27580,27631,27694,27695,27692,28207,28216,28244,28193,28210,28263,28234,28192,28197,28195,28187,28251,28248,28196,28246,28270,28205,28198,28271,28212,28237,28218,28204,28227,28189,28222,28363,28297,28185,28238,28259,28228,28274,28265,28255,28953,28954,28966,28976,28961,28982,29038,28956,29260,29316,29312,29494,29477,29492,29481,29754,29738,29747,29730,29733,29749,29750,29748,29743,29723,29734,29736,29989,29990,30059,30058,30178,30171,30179,30169,30168,30174,30176,30331,30332,30358,30355,30388,30428,30543,30701,30813,30828,30831,31245,31240,31243,31237,31232,31384,31383,31382,31461,31459,31561,31574,31558,31568,31570,31572,31565,31563,31567,31569,31903,31909,32094,32080,32104,32085,32043,32110,32114,32097,32102,32098,32112,32115,21892,32724,32725,32779,32850,32901,33109,33108,33099,33105,33102,33081,33094,33086,33100,33107,33140,33298,33308,33769,33795,33784,33805,33760,33733,33803,33729,33775,33777,33780,33879,33802,33776,33804,33740,33789,33778,33738,33848,33806,33796,33756,33799,33748,33759,34395,34527,34521,34541,34516,34523,34532,34512,34526,34903,35009,35010,34993,35203,35222,35387,35424,35413,35422,35388,35393,35412,35419,35408,35398,35380,35386,35382,35414,35937,35970,36015,36028,36019,36029,36033,36027,36032,36020,36023,36022,36031,36024,36234,36229,36225,36302,36317,36299,36314,36305,36300,36315,36294,36603,36600,36604,36764,36910,36917,36913,36920,36914,36918,37122,37109,37129,37118,37219,37221,37327,37396,37397,37411,37385,37406,37389,37392,37383,37393,38292,38287,38283,38289,38291,38290,38286,38538,38542,38539,38525,38533,38534,38541,38514,38532,38593,38597,38596,38598,38599,38639,38642,38860,38917,38918,38920,39143,39146,39151,39145,39154,39149,39342,39341,40643,40653,40657,20098,20653,20661,20658,20659,20677,20670,20652,20663,20667,20655,20679,21119,21111,21117,21215,21222,21220,21218,21219,21295,21983,21992,21971,21990,21966,21980,21959,21969,21987,21988,21999,21978,21985,21957,21958,21989,21961,22290,22291,22622,22609,22616,22615,22618,22612,22635,22604,22637,22602,22626,22610,22603,22887,23233,23241,23244,23230,23229,23228,23219,23234,23218,23913,23919,24140,24185,24265,24264,24338,24409,24492,24494,24858,24847,24904,24863,24819,24859,24825,24833,24840,24910,24908,24900,24909,24894,24884,24871,24845,24838,24887,25121,25122,25619,25662,25630,25642,25645,25661,25644,25615,25628,25620,25613,25654,25622,25623,25606,25964,26015,26032,26263,26249,26247,26248,26262,26244,26264,26253,26371,27028,26989,26970,26999,26976,26964,26997,26928,27010,26954,26984,26987,26974,26963,27001,27014,26973,26979,26971,27463,27506,27584,27583,27603,27645,28322,28335,28371,28342,28354,28304,28317,28359,28357,28325,28312,28348,28346,28331,28369,28310,28316,28356,28372,28330,28327,28340,29006,29017,29033,29028,29001,29031,29020,29036,29030,29004,29029,29022,28998,29032,29014,29242,29266,29495,29509,29503,29502,29807,29786,29781,29791,29790,29761,29759,29785,29787,29788,30070,30072,30208,30192,30209,30194,30193,30202,30207,30196,30195,30430,30431,30555,30571,30566,30558,30563,30585,30570,30572,30556,30565,30568,30562,30702,30862,30896,30871,30872,30860,30857,30844,30865,30867,30847,31098,31103,31105,33836,31165,31260,31258,31264,31252,31263,31262,31391,31392,31607,31680,31584,31598,31591,31921,31923,31925,32147,32121,32145,32129,32143,32091,32622,32617,32618,32626,32681,32680,32676,32854,32856,32902,32900,33137,33136,33144,33125,33134,33139,33131,33145,33146,33126,33285,33351,33922,33911,33853,33841,33909,33894,33899,33865,33900,33883,33852,33845,33889,33891,33897,33901,33862,34398,34396,34399,34553,34579,34568,34567,34560,34558,34555,34562,34563,34566,34570,34905,35039,35028,35033,35036,35032,35037,35041,35018,35029,35026,35228,35299,35435,35442,35443,35430,35433,35440,35463,35452,35427,35488,35441,35461,35437,35426,35438,35436,35449,35451,35390,35432,35938,35978,35977,36042,36039,36040,36036,36018,36035,36034,36037,36321,36319,36328,36335,36339,36346,36330,36324,36326,36530,36611,36617,36606,36618,36767,36786,36939,36938,36947,36930,36948,36924,36949,36944,36935,36943,36942,36941,36945,36926,36929,37138,37143,37228,37226,37225,37321,37431,37463,37432,37437,37440,37438,37467,37451,37476,37457,37428,37449,37453,37445,37433,37439,37466,38296,38552,38548,38549,38605,38603,38601,38602,38647,38651,38649,38646,38742,38772,38774,38928,38929,38931,38922,38930,38924,39164,39156,39165,39166,39347,39345,39348,39649,40169,40578,40718,40723,40736,20711,20718,20709,20694,20717,20698,20693,20687,20689,20721,20686,20713,20834,20979,21123,21122,21297,21421,22014,22016,22043,22039,22013,22036,22022,22025,22029,22030,22007,22038,22047,22024,22032,22006,22296,22294,22645,22654,22659,22675,22666,22649,22661,22653,22781,22821,22818,22820,22890,22889,23265,23270,23273,23255,23254,23256,23267,23413,23518,23527,23521,23525,23526,23528,23522,23524,23519,23565,23650,23940,23943,24155,24163,24149,24151,24148,24275,24278,24330,24390,24432,24505,24903,24895,24907,24951,24930,24931,24927,24922,24920,24949,25130,25735,25688,25684,25764,25720,25695,25722,25681,25703,25652,25709,25723,25970,26017,26071,26070,26274,26280,26269,27036,27048,27029,27073,27054,27091,27083,27035,27063,27067,27051,27060,27088,27085,27053,27084,27046,27075,27043,27465,27468,27699,28467,28436,28414,28435,28404,28457,28478,28448,28460,28431,28418,28450,28415,28399,28422,28465,28472,28466,28451,28437,28459,28463,28552,28458,28396,28417,28402,28364,28407,29076,29081,29053,29066,29060,29074,29246,29330,29334,29508,29520,29796,29795,29802,29808,29805,29956,30097,30247,30221,30219,30217,30227,30433,30435,30596,30589,30591,30561,30913,30879,30887,30899,30889,30883,31118,31119,31117,31278,31281,31402,31401,31469,31471,31649,31637,31627,31605,31639,31645,31636,31631,31672,31623,31620,31929,31933,31934,32187,32176,32156,32189,32190,32160,32202,32180,32178,32177,32186,32162,32191,32181,32184,32173,32210,32199,32172,32624,32736,32737,32735,32862,32858,32903,33104,33152,33167,33160,33162,33151,33154,33255,33274,33287,33300,33310,33355,33993,33983,33990,33988,33945,33950,33970,33948,33995,33976,33984,34003,33936,33980,34001,33994,34623,34588,34619,34594,34597,34612,34584,34645,34615,34601,35059,35074,35060,35065,35064,35069,35048,35098,35055,35494,35468,35486,35491,35469,35489,35475,35492,35498,35493,35496,35480,35473,35482,35495,35946,35981,35980,36051,36049,36050,36203,36249,36245,36348,36628,36626,36629,36627,36771,36960,36952,36956,36963,36953,36958,36962,36957,36955,37145,37144,37150,37237,37240,37239,37236,37496,37504,37509,37528,37526,37499,37523,37532,37544,37500,37521,38305,38312,38313,38307,38309,38308,38553,38556,38555,38604,38610,38656,38780,38789,38902,38935,38936,39087,39089,39171,39173,39180,39177,39361,39599,39600,39654,39745,39746,40180,40182,40179,40636,40763,40778,20740,20736,20731,20725,20729,20738,20744,20745,20741,20956,21127,21128,21129,21133,21130,21232,21426,22062,22075,22073,22066,22079,22068,22057,22099,22094,22103,22132,22070,22063,22064,22656,22687,22686,22707,22684,22702,22697,22694,22893,23305,23291,23307,23285,23308,23304,23534,23532,23529,23531,23652,23653,23965,23956,24162,24159,24161,24290,24282,24287,24285,24291,24288,24392,24433,24503,24501,24950,24935,24942,24925,24917,24962,24956,24944,24939,24958,24999,24976,25003,24974,25004,24986,24996,24980,25006,25134,25705,25711,25721,25758,25778,25736,25744,25776,25765,25747,25749,25769,25746,25774,25773,25771,25754,25772,25753,25762,25779,25973,25975,25976,26286,26283,26292,26289,27171,27167,27112,27137,27166,27161,27133,27169,27155,27146,27123,27138,27141,27117,27153,27472,27470,27556,27589,27590,28479,28540,28548,28497,28518,28500,28550,28525,28507,28536,28526,28558,28538,28528,28516,28567,28504,28373,28527,28512,28511,29087,29100,29105,29096,29270,29339,29518,29527,29801,29835,29827,29822,29824,30079,30240,30249,30239,30244,30246,30241,30242,30362,30394,30436,30606,30599,30604,30609,30603,30923,30917,30906,30922,30910,30933,30908,30928,31295,31292,31296,31293,31287,31291,31407,31406,31661,31665,31684,31668,31686,31687,31681,31648,31692,31946,32224,32244,32239,32251,32216,32236,32221,32232,32227,32218,32222,32233,32158,32217,32242,32249,32629,32631,32687,32745,32806,33179,33180,33181,33184,33178,33176,34071,34109,34074,34030,34092,34093,34067,34065,34083,34081,34068,34028,34085,34047,34054,34690,34676,34678,34656,34662,34680,34664,34649,34647,34636,34643,34907,34909,35088,35079,35090,35091,35093,35082,35516,35538,35527,35524,35477,35531,35576,35506,35529,35522,35519,35504,35542,35533,35510,35513,35547,35916,35918,35948,36064,36062,36070,36068,36076,36077,36066,36067,36060,36074,36065,36205,36255,36259,36395,36368,36381,36386,36367,36393,36383,36385,36382,36538,36637,36635,36639,36649,36646,36650,36636,36638,36645,36969,36974,36968,36973,36983,37168,37165,37159,37169,37255,37257,37259,37251,37573,37563,37559,37610,37548,37604,37569,37555,37564,37586,37575,37616,37554,38317,38321,38660,38662,38663,38665,38752,38797,38795,38799,38945,38955,38940,39091,39178,39187,39186,39192,39389,39376,39391,39387,39377,39381,39378,39385,39607,39662,39663,39719,39749,39748,39799,39791,40198,40201,40195,40617,40638,40654,22696,40786,20754,20760,20756,20752,20757,20864,20906,20957,21137,21139,21235,22105,22123,22137,22121,22116,22136,22122,22120,22117,22129,22127,22124,22114,22134,22721,22718,22727,22725,22894,23325,23348,23416,23536,23566,24394,25010,24977,25001,24970,25037,25014,25022,25034,25032,25136,25797,25793,25803,25787,25788,25818,25796,25799,25794,25805,25791,25810,25812,25790,25972,26310,26313,26297,26308,26311,26296,27197,27192,27194,27225,27243,27224,27193,27204,27234,27233,27211,27207,27189,27231,27208,27481,27511,27653,28610,28593,28577,28611,28580,28609,28583,28595,28608,28601,28598,28582,28576,28596,29118,29129,29136,29138,29128,29141,29113,29134,29145,29148,29123,29124,29544,29852,29859,29848,29855,29854,29922,29964,29965,30260,30264,30266,30439,30437,30624,30622,30623,30629,30952,30938,30956,30951,31142,31309,31310,31302,31308,31307,31418,31705,31761,31689,31716,31707,31713,31721,31718,31957,31958,32266,32273,32264,32283,32291,32286,32285,32265,32272,32633,32690,32752,32753,32750,32808,33203,33193,33192,33275,33288,33368,33369,34122,34137,34120,34152,34153,34115,34121,34157,34154,34142,34691,34719,34718,34722,34701,34913,35114,35122,35109,35115,35105,35242,35238,35558,35578,35563,35569,35584,35548,35559,35566,35582,35585,35586,35575,35565,35571,35574,35580,35947,35949,35987,36084,36420,36401,36404,36418,36409,36405,36667,36655,36664,36659,36776,36774,36981,36980,36984,36978,36988,36986,37172,37266,37664,37686,37624,37683,37679,37666,37628,37675,37636,37658,37648,37670,37665,37653,37678,37657,38331,38567,38568,38570,38613,38670,38673,38678,38669,38675,38671,38747,38748,38758,38808,38960,38968,38971,38967,38957,38969,38948,39184,39208,39198,39195,39201,39194,39405,39394,39409,39608,39612,39675,39661,39720,39825,40213,40227,40230,40232,40210,40219,40664,40660,40845,40860,20778,20767,20769,20786,21237,22158,22144,22160,22149,22151,22159,22741,22739,22737,22734,23344,23338,23332,23418,23607,23656,23996,23994,23997,23992,24171,24396,24509,25033,25026,25031,25062,25035,25138,25140,25806,25802,25816,25824,25840,25830,25836,25841,25826,25837,25986,25987,26329,26326,27264,27284,27268,27298,27292,27355,27299,27262,27287,27280,27296,27484,27566,27610,27656,28632,28657,28639,28640,28635,28644,28651,28655,28544,28652,28641,28649,28629,28654,28656,29159,29151,29166,29158,29157,29165,29164,29172,29152,29237,29254,29552,29554,29865,29872,29862,29864,30278,30274,30284,30442,30643,30634,30640,30636,30631,30637,30703,30967,30970,30964,30959,30977,31143,31146,31319,31423,31751,31757,31742,31735,31756,31712,31968,31964,31966,31970,31967,31961,31965,32302,32318,32326,32311,32306,32323,32299,32317,32305,32325,32321,32308,32313,32328,32309,32319,32303,32580,32755,32764,32881,32882,32880,32879,32883,33222,33219,33210,33218,33216,33215,33213,33225,33214,33256,33289,33393,34218,34180,34174,34204,34193,34196,34223,34203,34183,34216,34186,34407,34752,34769,34739,34770,34758,34731,34747,34746,34760,34763,35131,35126,35140,35128,35133,35244,35598,35607,35609,35611,35594,35616,35613,35588,35600,35905,35903,35955,36090,36093,36092,36088,36091,36264,36425,36427,36424,36426,36676,36670,36674,36677,36671,36991,36989,36996,36993,36994,36992,37177,37283,37278,37276,37709,37762,37672,37749,37706,37733,37707,37656,37758,37740,37723,37744,37722,37716,38346,38347,38348,38344,38342,38577,38584,38614,38684,38686,38816,38867,38982,39094,39221,39425,39423,39854,39851,39850,39853,40251,40255,40587,40655,40670,40668,40669,40667,40766,40779,21474,22165,22190,22745,22744,23352,24413,25059,25139,25844,25842,25854,25862,25850,25851,25847,26039,26332,26406,27315,27308,27331,27323,27320,27330,27310,27311,27487,27512,27567,28681,28683,28670,28678,28666,28689,28687,29179,29180,29182,29176,29559,29557,29863,29887,29973,30294,30296,30290,30653,30655,30651,30652,30990,31150,31329,31330,31328,31428,31429,31787,31783,31786,31774,31779,31777,31975,32340,32341,32350,32346,32353,32338,32345,32584,32761,32763,32887,32886,33229,33231,33290,34255,34217,34253,34256,34249,34224,34234,34233,34214,34799,34796,34802,34784,35206,35250,35316,35624,35641,35628,35627,35920,36101,36441,36451,36454,36452,36447,36437,36544,36681,36685,36999,36995,37000,37291,37292,37328,37780,37770,37782,37794,37811,37806,37804,37808,37784,37786,37783,38356,38358,38352,38357,38626,38620,38617,38619,38622,38692,38819,38822,38829,38905,38989,38991,38988,38990,38995,39098,39230,39231,39229,39214,39333,39438,39617,39683,39686,39759,39758,39757,39882,39881,39933,39880,39872,40273,40285,40288,40672,40725,40748,20787,22181,22750,22751,22754,23541,40848,24300,25074,25079,25078,25077,25856,25871,26336,26333,27365,27357,27354,27347,28699,28703,28712,28698,28701,28693,28696,29190,29197,29272,29346,29560,29562,29885,29898,29923,30087,30086,30303,30305,30663,31001,31153,31339,31337,31806,31807,31800,31805,31799,31808,32363,32365,32377,32361,32362,32645,32371,32694,32697,32696,33240,34281,34269,34282,34261,34276,34277,34295,34811,34821,34829,34809,34814,35168,35167,35158,35166,35649,35676,35672,35657,35674,35662,35663,35654,35673,36104,36106,36476,36466,36487,36470,36460,36474,36468,36692,36686,36781,37002,37003,37297,37294,37857,37841,37855,37827,37832,37852,37853,37846,37858,37837,37848,37860,37847,37864,38364,38580,38627,38698,38695,38753,38876,38907,39006,39000,39003,39100,39237,39241,39446,39449,39693,39912,39911,39894,39899,40329,40289,40306,40298,40300,40594,40599,40595,40628,21240,22184,22199,22198,22196,22204,22756,23360,23363,23421,23542,24009,25080,25082,25880,25876,25881,26342,26407,27372,28734,28720,28722,29200,29563,29903,30306,30309,31014,31018,31020,31019,31431,31478,31820,31811,31821,31983,31984,36782,32381,32380,32386,32588,32768,33242,33382,34299,34297,34321,34298,34310,34315,34311,34314,34836,34837,35172,35258,35320,35696,35692,35686,35695,35679,35691,36111,36109,36489,36481,36485,36482,37300,37323,37912,37891,37885,38369,38704,39108,39250,39249,39336,39467,39472,39479,39477,39955,39949,40569,40629,40680,40751,40799,40803,40801,20791,20792,22209,22208,22210,22804,23660,24013,25084,25086,25885,25884,26005,26345,27387,27396,27386,27570,28748,29211,29351,29910,29908,30313,30675,31824,32399,32396,32700,34327,34349,34330,34851,34850,34849,34847,35178,35180,35261,35700,35703,35709,36115,36490,36493,36491,36703,36783,37306,37934,37939,37941,37946,37944,37938,37931,38370,38712,38713,38706,38911,39015,39013,39255,39493,39491,39488,39486,39631,39764,39761,39981,39973,40367,40372,40386,40376,40605,40687,40729,40796,40806,40807,20796,20795,22216,22218,22217,23423,24020,24018,24398,25087,25892,27402,27489,28753,28760,29568,29924,30090,30318,30316,31155,31840,31839,32894,32893,33247,35186,35183,35324,35712,36118,36119,36497,36499,36705,37192,37956,37969,37970,38717,38718,38851,38849,39019,39253,39509,39501,39634,39706,40009,39985,39998,39995,40403,40407,40756,40812,40810,40852,22220,24022,25088,25891,25899,25898,26348,27408,29914,31434,31844,31843,31845,32403,32406,32404,33250,34360,34367,34865,35722,37008,37007,37987,37984,37988,38760,39023,39260,39514,39515,39511,39635,39636,39633,40020,40023,40022,40421,40607,40692,22225,22761,25900,28766,30321,30322,30679,32592,32648,34870,34873,34914,35731,35730,35734,33399,36123,37312,37994,38722,38728,38724,38854,39024,39519,39714,39768,40031,40441,40442,40572,40573,40711,40823,40818,24307,27414,28771,31852,31854,34875,35264,36513,37313,38002,38000,39025,39262,39638,39715,40652,28772,30682,35738,38007,38857,39522,39525,32412,35740,36522,37317,38013,38014,38012,40055,40056,40695,35924,38015,40474,29224,39530,39729,40475,40478,31858,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,20022,20031,20101,20128,20866,20886,20907,21241,21304,21353,21430,22794,23424,24027,12083,24191,24308,24400,24417,25908,26080,30098,30326,36789,38582,168,710,12541,12542,12445,12446,12291,20189,12293,12294,12295,12540,65339,65341,10045,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,8679,8632,8633,12751,131276,20058,131210,20994,17553,40880,20872,40881,161287,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,65506,65508,65287,65282,12849,8470,8481,12443,12444,11904,11908,11910,11911,11912,11914,11916,11917,11925,11932,11933,11941,11943,11946,11948,11950,11958,11964,11966,11974,11978,11980,11981,11983,11990,11991,11998,12003,null,null,null,643,592,603,596,629,339,248,331,650,618,20034,20060,20981,21274,21378,19975,19980,20039,20109,22231,64012,23662,24435,19983,20871,19982,20014,20115,20162,20169,20168,20888,21244,21356,21433,22304,22787,22828,23568,24063,26081,27571,27596,27668,29247,20017,20028,20200,20188,20201,20193,20189,20186,21004,21276,21324,22306,22307,22807,22831,23425,23428,23570,23611,23668,23667,24068,24192,24194,24521,25097,25168,27669,27702,27715,27711,27707,29358,29360,29578,31160,32906,38430,20238,20248,20268,20213,20244,20209,20224,20215,20232,20253,20226,20229,20258,20243,20228,20212,20242,20913,21011,21001,21008,21158,21282,21279,21325,21386,21511,22241,22239,22318,22314,22324,22844,22912,22908,22917,22907,22910,22903,22911,23382,23573,23589,23676,23674,23675,23678,24031,24181,24196,24322,24346,24436,24533,24532,24527,25180,25182,25188,25185,25190,25186,25177,25184,25178,25189,26095,26094,26430,26425,26424,26427,26426,26431,26428,26419,27672,27718,27730,27740,27727,27722,27732,27723,27724,28785,29278,29364,29365,29582,29994,30335,31349,32593,33400,33404,33408,33405,33407,34381,35198,37017,37015,37016,37019,37012,38434,38436,38432,38435,20310,20283,20322,20297,20307,20324,20286,20327,20306,20319,20289,20312,20269,20275,20287,20321,20879,20921,21020,21022,21025,21165,21166,21257,21347,21362,21390,21391,21552,21559,21546,21588,21573,21529,21532,21541,21528,21565,21583,21569,21544,21540,21575,22254,22247,22245,22337,22341,22348,22345,22347,22354,22790,22848,22950,22936,22944,22935,22926,22946,22928,22927,22951,22945,23438,23442,23592,23594,23693,23695,23688,23691,23689,23698,23690,23686,23699,23701,24032,24074,24078,24203,24201,24204,24200,24205,24325,24349,24440,24438,24530,24529,24528,24557,24552,24558,24563,24545,24548,24547,24570,24559,24567,24571,24576,24564,25146,25219,25228,25230,25231,25236,25223,25201,25211,25210,25200,25217,25224,25207,25213,25202,25204,25911,26096,26100,26099,26098,26101,26437,26439,26457,26453,26444,26440,26461,26445,26458,26443,27600,27673,27674,27768,27751,27755,27780,27787,27791,27761,27759,27753,27802,27757,27783,27797,27804,27750,27763,27749,27771,27790,28788,28794,29283,29375,29373,29379,29382,29377,29370,29381,29589,29591,29587,29588,29586,30010,30009,30100,30101,30337,31037,32820,32917,32921,32912,32914,32924,33424,33423,33413,33422,33425,33427,33418,33411,33412,35960,36809,36799,37023,37025,37029,37022,37031,37024,38448,38440,38447,38445,20019,20376,20348,20357,20349,20352,20359,20342,20340,20361,20356,20343,20300,20375,20330,20378,20345,20353,20344,20368,20380,20372,20382,20370,20354,20373,20331,20334,20894,20924,20926,21045,21042,21043,21062,21041,21180,21258,21259,21308,21394,21396,21639,21631,21633,21649,21634,21640,21611,21626,21630,21605,21612,21620,21606,21645,21615,21601,21600,21656,21603,21607,21604,22263,22265,22383,22386,22381,22379,22385,22384,22390,22400,22389,22395,22387,22388,22370,22376,22397,22796,22853,22965,22970,22991,22990,22962,22988,22977,22966,22972,22979,22998,22961,22973,22976,22984,22964,22983,23394,23397,23443,23445,23620,23623,23726,23716,23712,23733,23727,23720,23724,23711,23715,23725,23714,23722,23719,23709,23717,23734,23728,23718,24087,24084,24089,24360,24354,24355,24356,24404,24450,24446,24445,24542,24549,24621,24614,24601,24626,24587,24628,24586,24599,24627,24602,24606,24620,24610,24589,24592,24622,24595,24593,24588,24585,24604,25108,25149,25261,25268,25297,25278,25258,25270,25290,25262,25267,25263,25275,25257,25264,25272,25917,26024,26043,26121,26108,26116,26130,26120,26107,26115,26123,26125,26117,26109,26129,26128,26358,26378,26501,26476,26510,26514,26486,26491,26520,26502,26500,26484,26509,26508,26490,26527,26513,26521,26499,26493,26497,26488,26489,26516,27429,27520,27518,27614,27677,27795,27884,27883,27886,27865,27830,27860,27821,27879,27831,27856,27842,27834,27843,27846,27885,27890,27858,27869,27828,27786,27805,27776,27870,27840,27952,27853,27847,27824,27897,27855,27881,27857,28820,28824,28805,28819,28806,28804,28817,28822,28802,28826,28803,29290,29398,29387,29400,29385,29404,29394,29396,29402,29388,29393,29604,29601,29613,29606,29602,29600,29612,29597,29917,29928,30015,30016,30014,30092,30104,30383,30451,30449,30448,30453,30712,30716,30713,30715,30714,30711,31042,31039,31173,31352,31355,31483,31861,31997,32821,32911,32942,32931,32952,32949,32941,33312,33440,33472,33451,33434,33432,33435,33461,33447,33454,33468,33438,33466,33460,33448,33441,33449,33474,33444,33475,33462,33442,34416,34415,34413,34414,35926,36818,36811,36819,36813,36822,36821,36823,37042,37044,37039,37043,37040,38457,38461,38460,38458,38467,20429,20421,20435,20402,20425,20427,20417,20436,20444,20441,20411,20403,20443,20423,20438,20410,20416,20409,20460,21060,21065,21184,21186,21309,21372,21399,21398,21401,21400,21690,21665,21677,21669,21711,21699,33549,21687,21678,21718,21686,21701,21702,21664,21616,21692,21666,21694,21618,21726,21680,22453,22430,22431,22436,22412,22423,22429,22427,22420,22424,22415,22425,22437,22426,22421,22772,22797,22867,23009,23006,23022,23040,23025,23005,23034,23037,23036,23030,23012,23026,23031,23003,23017,23027,23029,23008,23038,23028,23021,23464,23628,23760,23768,23756,23767,23755,23771,23774,23770,23753,23751,23754,23766,23763,23764,23759,23752,23750,23758,23775,23800,24057,24097,24098,24099,24096,24100,24240,24228,24226,24219,24227,24229,24327,24366,24406,24454,24631,24633,24660,24690,24670,24645,24659,24647,24649,24667,24652,24640,24642,24671,24612,24644,24664,24678,24686,25154,25155,25295,25357,25355,25333,25358,25347,25323,25337,25359,25356,25336,25334,25344,25363,25364,25338,25365,25339,25328,25921,25923,26026,26047,26166,26145,26162,26165,26140,26150,26146,26163,26155,26170,26141,26164,26169,26158,26383,26384,26561,26610,26568,26554,26588,26555,26616,26584,26560,26551,26565,26603,26596,26591,26549,26573,26547,26615,26614,26606,26595,26562,26553,26574,26599,26608,26546,26620,26566,26605,26572,26542,26598,26587,26618,26569,26570,26563,26602,26571,27432,27522,27524,27574,27606,27608,27616,27680,27681,27944,27956,27949,27935,27964,27967,27922,27914,27866,27955,27908,27929,27962,27930,27921,27904,27933,27970,27905,27928,27959,27907,27919,27968,27911,27936,27948,27912,27938,27913,27920,28855,28831,28862,28849,28848,28833,28852,28853,28841,29249,29257,29258,29292,29296,29299,29294,29386,29412,29416,29419,29407,29418,29414,29411,29573,29644,29634,29640,29637,29625,29622,29621,29620,29675,29631,29639,29630,29635,29638,29624,29643,29932,29934,29998,30023,30024,30119,30122,30329,30404,30472,30467,30468,30469,30474,30455,30459,30458,30695,30696,30726,30737,30738,30725,30736,30735,30734,30729,30723,30739,31050,31052,31051,31045,31044,31189,31181,31183,31190,31182,31360,31358,31441,31488,31489,31866,31864,31865,31871,31872,31873,32003,32008,32001,32600,32657,32653,32702,32775,32782,32783,32788,32823,32984,32967,32992,32977,32968,32962,32976,32965,32995,32985,32988,32970,32981,32969,32975,32983,32998,32973,33279,33313,33428,33497,33534,33529,33543,33512,33536,33493,33594,33515,33494,33524,33516,33505,33522,33525,33548,33531,33526,33520,33514,33508,33504,33530,33523,33517,34423,34420,34428,34419,34881,34894,34919,34922,34921,35283,35332,35335,36210,36835,36833,36846,36832,37105,37053,37055,37077,37061,37054,37063,37067,37064,37332,37331,38484,38479,38481,38483,38474,38478,20510,20485,20487,20499,20514,20528,20507,20469,20468,20531,20535,20524,20470,20471,20503,20508,20512,20519,20533,20527,20529,20494,20826,20884,20883,20938,20932,20933,20936,20942,21089,21082,21074,21086,21087,21077,21090,21197,21262,21406,21798,21730,21783,21778,21735,21747,21732,21786,21759,21764,21768,21739,21777,21765,21745,21770,21755,21751,21752,21728,21774,21763,21771,22273,22274,22476,22578,22485,22482,22458,22470,22461,22460,22456,22454,22463,22471,22480,22457,22465,22798,22858,23065,23062,23085,23086,23061,23055,23063,23050,23070,23091,23404,23463,23469,23468,23555,23638,23636,23788,23807,23790,23793,23799,23808,23801,24105,24104,24232,24238,24234,24236,24371,24368,24423,24669,24666,24679,24641,24738,24712,24704,24722,24705,24733,24707,24725,24731,24727,24711,24732,24718,25113,25158,25330,25360,25430,25388,25412,25413,25398,25411,25572,25401,25419,25418,25404,25385,25409,25396,25432,25428,25433,25389,25415,25395,25434,25425,25400,25431,25408,25416,25930,25926,26054,26051,26052,26050,26186,26207,26183,26193,26386,26387,26655,26650,26697,26674,26675,26683,26699,26703,26646,26673,26652,26677,26667,26669,26671,26702,26692,26676,26653,26642,26644,26662,26664,26670,26701,26682,26661,26656,27436,27439,27437,27441,27444,27501,32898,27528,27622,27620,27624,27619,27618,27623,27685,28026,28003,28004,28022,27917,28001,28050,27992,28002,28013,28015,28049,28045,28143,28031,28038,27998,28007,28000,28055,28016,28028,27999,28034,28056,27951,28008,28043,28030,28032,28036,27926,28035,28027,28029,28021,28048,28892,28883,28881,28893,28875,32569,28898,28887,28882,28894,28896,28884,28877,28869,28870,28871,28890,28878,28897,29250,29304,29303,29302,29440,29434,29428,29438,29430,29427,29435,29441,29651,29657,29669,29654,29628,29671,29667,29673,29660,29650,29659,29652,29661,29658,29655,29656,29672,29918,29919,29940,29941,29985,30043,30047,30128,30145,30139,30148,30144,30143,30134,30138,30346,30409,30493,30491,30480,30483,30482,30499,30481,30485,30489,30490,30498,30503,30755,30764,30754,30773,30767,30760,30766,30763,30753,30761,30771,30762,30769,31060,31067,31055,31068,31059,31058,31057,31211,31212,31200,31214,31213,31210,31196,31198,31197,31366,31369,31365,31371,31372,31370,31367,31448,31504,31492,31507,31493,31503,31496,31498,31502,31497,31506,31876,31889,31882,31884,31880,31885,31877,32030,32029,32017,32014,32024,32022,32019,32031,32018,32015,32012,32604,32609,32606,32608,32605,32603,32662,32658,32707,32706,32704,32790,32830,32825,33018,33010,33017,33013,33025,33019,33024,33281,33327,33317,33587,33581,33604,33561,33617,33573,33622,33599,33601,33574,33564,33570,33602,33614,33563,33578,33544,33596,33613,33558,33572,33568,33591,33583,33577,33607,33605,33612,33619,33566,33580,33611,33575,33608,34387,34386,34466,34472,34454,34445,34449,34462,34439,34455,34438,34443,34458,34437,34469,34457,34465,34471,34453,34456,34446,34461,34448,34452,34883,34884,34925,34933,34934,34930,34944,34929,34943,34927,34947,34942,34932,34940,35346,35911,35927,35963,36004,36003,36214,36216,36277,36279,36278,36561,36563,36862,36853,36866,36863,36859,36868,36860,36854,37078,37088,37081,37082,37091,37087,37093,37080,37083,37079,37084,37092,37200,37198,37199,37333,37346,37338,38492,38495,38588,39139,39647,39727,20095,20592,20586,20577,20574,20576,20563,20555,20573,20594,20552,20557,20545,20571,20554,20578,20501,20549,20575,20585,20587,20579,20580,20550,20544,20590,20595,20567,20561,20944,21099,21101,21100,21102,21206,21203,21293,21404,21877,21878,21820,21837,21840,21812,21802,21841,21858,21814,21813,21808,21842,21829,21772,21810,21861,21838,21817,21832,21805,21819,21824,21835,22282,22279,22523,22548,22498,22518,22492,22516,22528,22509,22525,22536,22520,22539,22515,22479,22535,22510,22499,22514,22501,22508,22497,22542,22524,22544,22503,22529,22540,22513,22505,22512,22541,22532,22876,23136,23128,23125,23143,23134,23096,23093,23149,23120,23135,23141,23148,23123,23140,23127,23107,23133,23122,23108,23131,23112,23182,23102,23117,23097,23116,23152,23145,23111,23121,23126,23106,23132,23410,23406,23489,23488,23641,23838,23819,23837,23834,23840,23820,23848,23821,23846,23845,23823,23856,23826,23843,23839,23854,24126,24116,24241,24244,24249,24242,24243,24374,24376,24475,24470,24479,24714,24720,24710,24766,24752,24762,24787,24788,24783,24804,24793,24797,24776,24753,24795,24759,24778,24767,24771,24781,24768,25394,25445,25482,25474,25469,25533,25502,25517,25501,25495,25515,25486,25455,25479,25488,25454,25519,25461,25500,25453,25518,25468,25508,25403,25503,25464,25477,25473,25489,25485,25456,25939,26061,26213,26209,26203,26201,26204,26210,26392,26745,26759,26768,26780,26733,26734,26798,26795,26966,26735,26787,26796,26793,26741,26740,26802,26767,26743,26770,26748,26731,26738,26794,26752,26737,26750,26779,26774,26763,26784,26761,26788,26744,26747,26769,26764,26762,26749,27446,27443,27447,27448,27537,27535,27533,27534,27532,27690,28096,28075,28084,28083,28276,28076,28137,28130,28087,28150,28116,28160,28104,28128,28127,28118,28094,28133,28124,28125,28123,28148,28106,28093,28141,28144,28090,28117,28098,28111,28105,28112,28146,28115,28157,28119,28109,28131,28091,28922,28941,28919,28951,28916,28940,28912,28932,28915,28944,28924,28927,28934,28947,28928,28920,28918,28939,28930,28942,29310,29307,29308,29311,29469,29463,29447,29457,29464,29450,29448,29439,29455,29470,29576,29686,29688,29685,29700,29697,29693,29703,29696,29690,29692,29695,29708,29707,29684,29704,30052,30051,30158,30162,30159,30155,30156,30161,30160,30351,30345,30419,30521,30511,30509,30513,30514,30516,30515,30525,30501,30523,30517,30792,30802,30793,30797,30794,30796,30758,30789,30800,31076,31079,31081,31082,31075,31083,31073,31163,31226,31224,31222,31223,31375,31380,31376,31541,31559,31540,31525,31536,31522,31524,31539,31512,31530,31517,31537,31531,31533,31535,31538,31544,31514,31523,31892,31896,31894,31907,32053,32061,32056,32054,32058,32069,32044,32041,32065,32071,32062,32063,32074,32059,32040,32611,32661,32668,32669,32667,32714,32715,32717,32720,32721,32711,32719,32713,32799,32798,32795,32839,32835,32840,33048,33061,33049,33051,33069,33055,33068,33054,33057,33045,33063,33053,33058,33297,33336,33331,33338,33332,33330,33396,33680,33699,33704,33677,33658,33651,33700,33652,33679,33665,33685,33689,33653,33684,33705,33661,33667,33676,33693,33691,33706,33675,33662,33701,33711,33672,33687,33712,33663,33702,33671,33710,33654,33690,34393,34390,34495,34487,34498,34497,34501,34490,34480,34504,34489,34483,34488,34508,34484,34491,34492,34499,34493,34494,34898,34953,34965,34984,34978,34986,34970,34961,34977,34975,34968,34983,34969,34971,34967,34980,34988,34956,34963,34958,35202,35286,35289,35285,35376,35367,35372,35358,35897,35899,35932,35933,35965,36005,36221,36219,36217,36284,36290,36281,36287,36289,36568,36574,36573,36572,36567,36576,36577,36900,36875,36881,36892,36876,36897,37103,37098,37104,37108,37106,37107,37076,37099,37100,37097,37206,37208,37210,37203,37205,37356,37364,37361,37363,37368,37348,37369,37354,37355,37367,37352,37358,38266,38278,38280,38524,38509,38507,38513,38511,38591,38762,38916,39141,39319,20635,20629,20628,20638,20619,20643,20611,20620,20622,20637,20584,20636,20626,20610,20615,20831,20948,21266,21265,21412,21415,21905,21928,21925,21933,21879,22085,21922,21907,21896,21903,21941,21889,21923,21906,21924,21885,21900,21926,21887,21909,21921,21902,22284,22569,22583,22553,22558,22567,22563,22568,22517,22600,22565,22556,22555,22579,22591,22582,22574,22585,22584,22573,22572,22587,22881,23215,23188,23199,23162,23202,23198,23160,23206,23164,23205,23212,23189,23214,23095,23172,23178,23191,23171,23179,23209,23163,23165,23180,23196,23183,23187,23197,23530,23501,23499,23508,23505,23498,23502,23564,23600,23863,23875,23915,23873,23883,23871,23861,23889,23886,23893,23859,23866,23890,23869,23857,23897,23874,23865,23881,23864,23868,23858,23862,23872,23877,24132,24129,24408,24486,24485,24491,24777,24761,24780,24802,24782,24772,24852,24818,24842,24854,24837,24821,24851,24824,24828,24830,24769,24835,24856,24861,24848,24831,24836,24843,25162,25492,25521,25520,25550,25573,25576,25583,25539,25757,25587,25546,25568,25590,25557,25586,25589,25697,25567,25534,25565,25564,25540,25560,25555,25538,25543,25548,25547,25544,25584,25559,25561,25906,25959,25962,25956,25948,25960,25957,25996,26013,26014,26030,26064,26066,26236,26220,26235,26240,26225,26233,26218,26226,26369,26892,26835,26884,26844,26922,26860,26858,26865,26895,26838,26871,26859,26852,26870,26899,26896,26867,26849,26887,26828,26888,26992,26804,26897,26863,26822,26900,26872,26832,26877,26876,26856,26891,26890,26903,26830,26824,26845,26846,26854,26868,26833,26886,26836,26857,26901,26917,26823,27449,27451,27455,27452,27540,27543,27545,27541,27581,27632,27634,27635,27696,28156,28230,28231,28191,28233,28296,28220,28221,28229,28258,28203,28223,28225,28253,28275,28188,28211,28235,28224,28241,28219,28163,28206,28254,28264,28252,28257,28209,28200,28256,28273,28267,28217,28194,28208,28243,28261,28199,28280,28260,28279,28245,28281,28242,28262,28213,28214,28250,28960,28958,28975,28923,28974,28977,28963,28965,28962,28978,28959,28968,28986,28955,29259,29274,29320,29321,29318,29317,29323,29458,29451,29488,29474,29489,29491,29479,29490,29485,29478,29475,29493,29452,29742,29740,29744,29739,29718,29722,29729,29741,29745,29732,29731,29725,29737,29728,29746,29947,29999,30063,30060,30183,30170,30177,30182,30173,30175,30180,30167,30357,30354,30426,30534,30535,30532,30541,30533,30538,30542,30539,30540,30686,30700,30816,30820,30821,30812,30829,30833,30826,30830,30832,30825,30824,30814,30818,31092,31091,31090,31088,31234,31242,31235,31244,31236,31385,31462,31460,31562,31547,31556,31560,31564,31566,31552,31576,31557,31906,31902,31912,31905,32088,32111,32099,32083,32086,32103,32106,32079,32109,32092,32107,32082,32084,32105,32081,32095,32078,32574,32575,32613,32614,32674,32672,32673,32727,32849,32847,32848,33022,32980,33091,33098,33106,33103,33095,33085,33101,33082,33254,33262,33271,33272,33273,33284,33340,33341,33343,33397,33595,33743,33785,33827,33728,33768,33810,33767,33764,33788,33782,33808,33734,33736,33771,33763,33727,33793,33757,33765,33752,33791,33761,33739,33742,33750,33781,33737,33801,33807,33758,33809,33798,33730,33779,33749,33786,33735,33745,33770,33811,33731,33772,33774,33732,33787,33751,33762,33819,33755,33790,34520,34530,34534,34515,34531,34522,34538,34525,34539,34524,34540,34537,34519,34536,34513,34888,34902,34901,35002,35031,35001,35000,35008,35006,34998,35004,34999,35005,34994,35073,35017,35221,35224,35223,35293,35290,35291,35406,35405,35385,35417,35392,35415,35416,35396,35397,35410,35400,35409,35402,35404,35407,35935,35969,35968,36026,36030,36016,36025,36021,36228,36224,36233,36312,36307,36301,36295,36310,36316,36303,36309,36313,36296,36311,36293,36591,36599,36602,36601,36582,36590,36581,36597,36583,36584,36598,36587,36593,36588,36596,36585,36909,36916,36911,37126,37164,37124,37119,37116,37128,37113,37115,37121,37120,37127,37125,37123,37217,37220,37215,37218,37216,37377,37386,37413,37379,37402,37414,37391,37388,37376,37394,37375,37373,37382,37380,37415,37378,37404,37412,37401,37399,37381,37398,38267,38285,38284,38288,38535,38526,38536,38537,38531,38528,38594,38600,38595,38641,38640,38764,38768,38766,38919,39081,39147,40166,40697,20099,20100,20150,20669,20671,20678,20654,20676,20682,20660,20680,20674,20656,20673,20666,20657,20683,20681,20662,20664,20951,21114,21112,21115,21116,21955,21979,21964,21968,21963,21962,21981,21952,21972,21956,21993,21951,21970,21901,21967,21973,21986,21974,21960,22002,21965,21977,21954,22292,22611,22632,22628,22607,22605,22601,22639,22613,22606,22621,22617,22629,22619,22589,22627,22641,22780,23239,23236,23243,23226,23224,23217,23221,23216,23231,23240,23227,23238,23223,23232,23242,23220,23222,23245,23225,23184,23510,23512,23513,23583,23603,23921,23907,23882,23909,23922,23916,23902,23912,23911,23906,24048,24143,24142,24138,24141,24139,24261,24268,24262,24267,24263,24384,24495,24493,24823,24905,24906,24875,24901,24886,24882,24878,24902,24879,24911,24873,24896,25120,37224,25123,25125,25124,25541,25585,25579,25616,25618,25609,25632,25636,25651,25667,25631,25621,25624,25657,25655,25634,25635,25612,25638,25648,25640,25665,25653,25647,25610,25626,25664,25637,25639,25611,25575,25627,25646,25633,25614,25967,26002,26067,26246,26252,26261,26256,26251,26250,26265,26260,26232,26400,26982,26975,26936,26958,26978,26993,26943,26949,26986,26937,26946,26967,26969,27002,26952,26953,26933,26988,26931,26941,26981,26864,27000,26932,26985,26944,26991,26948,26998,26968,26945,26996,26956,26939,26955,26935,26972,26959,26961,26930,26962,26927,27003,26940,27462,27461,27459,27458,27464,27457,27547,64013,27643,27644,27641,27639,27640,28315,28374,28360,28303,28352,28319,28307,28308,28320,28337,28345,28358,28370,28349,28353,28318,28361,28343,28336,28365,28326,28367,28338,28350,28355,28380,28376,28313,28306,28302,28301,28324,28321,28351,28339,28368,28362,28311,28334,28323,28999,29012,29010,29027,29024,28993,29021,29026,29042,29048,29034,29025,28994,29016,28995,29003,29040,29023,29008,29011,28996,29005,29018,29263,29325,29324,29329,29328,29326,29500,29506,29499,29498,29504,29514,29513,29764,29770,29771,29778,29777,29783,29760,29775,29776,29774,29762,29766,29773,29780,29921,29951,29950,29949,29981,30073,30071,27011,30191,30223,30211,30199,30206,30204,30201,30200,30224,30203,30198,30189,30197,30205,30361,30389,30429,30549,30559,30560,30546,30550,30554,30569,30567,30548,30553,30573,30688,30855,30874,30868,30863,30852,30869,30853,30854,30881,30851,30841,30873,30848,30870,30843,31100,31106,31101,31097,31249,31256,31257,31250,31255,31253,31266,31251,31259,31248,31395,31394,31390,31467,31590,31588,31597,31604,31593,31602,31589,31603,31601,31600,31585,31608,31606,31587,31922,31924,31919,32136,32134,32128,32141,32127,32133,32122,32142,32123,32131,32124,32140,32148,32132,32125,32146,32621,32619,32615,32616,32620,32678,32677,32679,32731,32732,32801,33124,33120,33143,33116,33129,33115,33122,33138,26401,33118,33142,33127,33135,33092,33121,33309,33353,33348,33344,33346,33349,34033,33855,33878,33910,33913,33935,33933,33893,33873,33856,33926,33895,33840,33869,33917,33882,33881,33908,33907,33885,34055,33886,33847,33850,33844,33914,33859,33912,33842,33861,33833,33753,33867,33839,33858,33837,33887,33904,33849,33870,33868,33874,33903,33989,33934,33851,33863,33846,33843,33896,33918,33860,33835,33888,33876,33902,33872,34571,34564,34551,34572,34554,34518,34549,34637,34552,34574,34569,34561,34550,34573,34565,35030,35019,35021,35022,35038,35035,35034,35020,35024,35205,35227,35295,35301,35300,35297,35296,35298,35292,35302,35446,35462,35455,35425,35391,35447,35458,35460,35445,35459,35457,35444,35450,35900,35915,35914,35941,35940,35942,35974,35972,35973,36044,36200,36201,36241,36236,36238,36239,36237,36243,36244,36240,36242,36336,36320,36332,36337,36334,36304,36329,36323,36322,36327,36338,36331,36340,36614,36607,36609,36608,36613,36615,36616,36610,36619,36946,36927,36932,36937,36925,37136,37133,37135,37137,37142,37140,37131,37134,37230,37231,37448,37458,37424,37434,37478,37427,37477,37470,37507,37422,37450,37446,37485,37484,37455,37472,37479,37487,37430,37473,37488,37425,37460,37475,37456,37490,37454,37459,37452,37462,37426,38303,38300,38302,38299,38546,38547,38545,38551,38606,38650,38653,38648,38645,38771,38775,38776,38770,38927,38925,38926,39084,39158,39161,39343,39346,39344,39349,39597,39595,39771,40170,40173,40167,40576,40701,20710,20692,20695,20712,20723,20699,20714,20701,20708,20691,20716,20720,20719,20707,20704,20952,21120,21121,21225,21227,21296,21420,22055,22037,22028,22034,22012,22031,22044,22017,22035,22018,22010,22045,22020,22015,22009,22665,22652,22672,22680,22662,22657,22655,22644,22667,22650,22663,22673,22670,22646,22658,22664,22651,22676,22671,22782,22891,23260,23278,23269,23253,23274,23258,23277,23275,23283,23266,23264,23259,23276,23262,23261,23257,23272,23263,23415,23520,23523,23651,23938,23936,23933,23942,23930,23937,23927,23946,23945,23944,23934,23932,23949,23929,23935,24152,24153,24147,24280,24273,24279,24270,24284,24277,24281,24274,24276,24388,24387,24431,24502,24876,24872,24897,24926,24945,24947,24914,24915,24946,24940,24960,24948,24916,24954,24923,24933,24891,24938,24929,24918,25129,25127,25131,25643,25677,25691,25693,25716,25718,25714,25715,25725,25717,25702,25766,25678,25730,25694,25692,25675,25683,25696,25680,25727,25663,25708,25707,25689,25701,25719,25971,26016,26273,26272,26271,26373,26372,26402,27057,27062,27081,27040,27086,27030,27056,27052,27068,27025,27033,27022,27047,27021,27049,27070,27055,27071,27076,27069,27044,27092,27065,27082,27034,27087,27059,27027,27050,27041,27038,27097,27031,27024,27074,27061,27045,27078,27466,27469,27467,27550,27551,27552,27587,27588,27646,28366,28405,28401,28419,28453,28408,28471,28411,28462,28425,28494,28441,28442,28455,28440,28475,28434,28397,28426,28470,28531,28409,28398,28461,28480,28464,28476,28469,28395,28423,28430,28483,28421,28413,28406,28473,28444,28412,28474,28447,28429,28446,28424,28449,29063,29072,29065,29056,29061,29058,29071,29051,29062,29057,29079,29252,29267,29335,29333,29331,29507,29517,29521,29516,29794,29811,29809,29813,29810,29799,29806,29952,29954,29955,30077,30096,30230,30216,30220,30229,30225,30218,30228,30392,30593,30588,30597,30594,30574,30592,30575,30590,30595,30898,30890,30900,30893,30888,30846,30891,30878,30885,30880,30892,30882,30884,31128,31114,31115,31126,31125,31124,31123,31127,31112,31122,31120,31275,31306,31280,31279,31272,31270,31400,31403,31404,31470,31624,31644,31626,31633,31632,31638,31629,31628,31643,31630,31621,31640,21124,31641,31652,31618,31931,31935,31932,31930,32167,32183,32194,32163,32170,32193,32192,32197,32157,32206,32196,32198,32203,32204,32175,32185,32150,32188,32159,32166,32174,32169,32161,32201,32627,32738,32739,32741,32734,32804,32861,32860,33161,33158,33155,33159,33165,33164,33163,33301,33943,33956,33953,33951,33978,33998,33986,33964,33966,33963,33977,33972,33985,33997,33962,33946,33969,34000,33949,33959,33979,33954,33940,33991,33996,33947,33961,33967,33960,34006,33944,33974,33999,33952,34007,34004,34002,34011,33968,33937,34401,34611,34595,34600,34667,34624,34606,34590,34593,34585,34587,34627,34604,34625,34622,34630,34592,34610,34602,34605,34620,34578,34618,34609,34613,34626,34598,34599,34616,34596,34586,34608,34577,35063,35047,35057,35058,35066,35070,35054,35068,35062,35067,35056,35052,35051,35229,35233,35231,35230,35305,35307,35304,35499,35481,35467,35474,35471,35478,35901,35944,35945,36053,36047,36055,36246,36361,36354,36351,36365,36349,36362,36355,36359,36358,36357,36350,36352,36356,36624,36625,36622,36621,37155,37148,37152,37154,37151,37149,37146,37156,37153,37147,37242,37234,37241,37235,37541,37540,37494,37531,37498,37536,37524,37546,37517,37542,37530,37547,37497,37527,37503,37539,37614,37518,37506,37525,37538,37501,37512,37537,37514,37510,37516,37529,37543,37502,37511,37545,37533,37515,37421,38558,38561,38655,38744,38781,38778,38782,38787,38784,38786,38779,38788,38785,38783,38862,38861,38934,39085,39086,39170,39168,39175,39325,39324,39363,39353,39355,39354,39362,39357,39367,39601,39651,39655,39742,39743,39776,39777,39775,40177,40178,40181,40615,20735,20739,20784,20728,20742,20743,20726,20734,20747,20748,20733,20746,21131,21132,21233,21231,22088,22082,22092,22069,22081,22090,22089,22086,22104,22106,22080,22067,22077,22060,22078,22072,22058,22074,22298,22699,22685,22705,22688,22691,22703,22700,22693,22689,22783,23295,23284,23293,23287,23286,23299,23288,23298,23289,23297,23303,23301,23311,23655,23961,23959,23967,23954,23970,23955,23957,23968,23964,23969,23962,23966,24169,24157,24160,24156,32243,24283,24286,24289,24393,24498,24971,24963,24953,25009,25008,24994,24969,24987,24979,25007,25005,24991,24978,25002,24993,24973,24934,25011,25133,25710,25712,25750,25760,25733,25751,25756,25743,25739,25738,25740,25763,25759,25704,25777,25752,25974,25978,25977,25979,26034,26035,26293,26288,26281,26290,26295,26282,26287,27136,27142,27159,27109,27128,27157,27121,27108,27168,27135,27116,27106,27163,27165,27134,27175,27122,27118,27156,27127,27111,27200,27144,27110,27131,27149,27132,27115,27145,27140,27160,27173,27151,27126,27174,27143,27124,27158,27473,27557,27555,27554,27558,27649,27648,27647,27650,28481,28454,28542,28551,28614,28562,28557,28553,28556,28514,28495,28549,28506,28566,28534,28524,28546,28501,28530,28498,28496,28503,28564,28563,28509,28416,28513,28523,28541,28519,28560,28499,28555,28521,28543,28565,28515,28535,28522,28539,29106,29103,29083,29104,29088,29082,29097,29109,29085,29093,29086,29092,29089,29098,29084,29095,29107,29336,29338,29528,29522,29534,29535,29536,29533,29531,29537,29530,29529,29538,29831,29833,29834,29830,29825,29821,29829,29832,29820,29817,29960,29959,30078,30245,30238,30233,30237,30236,30243,30234,30248,30235,30364,30365,30366,30363,30605,30607,30601,30600,30925,30907,30927,30924,30929,30926,30932,30920,30915,30916,30921,31130,31137,31136,31132,31138,31131,27510,31289,31410,31412,31411,31671,31691,31678,31660,31694,31663,31673,31690,31669,31941,31944,31948,31947,32247,32219,32234,32231,32215,32225,32259,32250,32230,32246,32241,32240,32238,32223,32630,32684,32688,32685,32749,32747,32746,32748,32742,32744,32868,32871,33187,33183,33182,33173,33186,33177,33175,33302,33359,33363,33362,33360,33358,33361,34084,34107,34063,34048,34089,34062,34057,34061,34079,34058,34087,34076,34043,34091,34042,34056,34060,34036,34090,34034,34069,34039,34027,34035,34044,34066,34026,34025,34070,34046,34088,34077,34094,34050,34045,34078,34038,34097,34086,34023,34024,34032,34031,34041,34072,34080,34096,34059,34073,34095,34402,34646,34659,34660,34679,34785,34675,34648,34644,34651,34642,34657,34650,34641,34654,34669,34666,34640,34638,34655,34653,34671,34668,34682,34670,34652,34661,34639,34683,34677,34658,34663,34665,34906,35077,35084,35092,35083,35095,35096,35097,35078,35094,35089,35086,35081,35234,35236,35235,35309,35312,35308,35535,35526,35512,35539,35537,35540,35541,35515,35543,35518,35520,35525,35544,35523,35514,35517,35545,35902,35917,35983,36069,36063,36057,36072,36058,36061,36071,36256,36252,36257,36251,36384,36387,36389,36388,36398,36373,36379,36374,36369,36377,36390,36391,36372,36370,36376,36371,36380,36375,36378,36652,36644,36632,36634,36640,36643,36630,36631,36979,36976,36975,36967,36971,37167,37163,37161,37162,37170,37158,37166,37253,37254,37258,37249,37250,37252,37248,37584,37571,37572,37568,37593,37558,37583,37617,37599,37592,37609,37591,37597,37580,37615,37570,37608,37578,37576,37582,37606,37581,37589,37577,37600,37598,37607,37585,37587,37557,37601,37574,37556,38268,38316,38315,38318,38320,38564,38562,38611,38661,38664,38658,38746,38794,38798,38792,38864,38863,38942,38941,38950,38953,38952,38944,38939,38951,39090,39176,39162,39185,39188,39190,39191,39189,39388,39373,39375,39379,39380,39374,39369,39382,39384,39371,39383,39372,39603,39660,39659,39667,39666,39665,39750,39747,39783,39796,39793,39782,39798,39797,39792,39784,39780,39788,40188,40186,40189,40191,40183,40199,40192,40185,40187,40200,40197,40196,40579,40659,40719,40720,20764,20755,20759,20762,20753,20958,21300,21473,22128,22112,22126,22131,22118,22115,22125,22130,22110,22135,22300,22299,22728,22717,22729,22719,22714,22722,22716,22726,23319,23321,23323,23329,23316,23315,23312,23318,23336,23322,23328,23326,23535,23980,23985,23977,23975,23989,23984,23982,23978,23976,23986,23981,23983,23988,24167,24168,24166,24175,24297,24295,24294,24296,24293,24395,24508,24989,25000,24982,25029,25012,25030,25025,25036,25018,25023,25016,24972,25815,25814,25808,25807,25801,25789,25737,25795,25819,25843,25817,25907,25983,25980,26018,26312,26302,26304,26314,26315,26319,26301,26299,26298,26316,26403,27188,27238,27209,27239,27186,27240,27198,27229,27245,27254,27227,27217,27176,27226,27195,27199,27201,27242,27236,27216,27215,27220,27247,27241,27232,27196,27230,27222,27221,27213,27214,27206,27477,27476,27478,27559,27562,27563,27592,27591,27652,27651,27654,28589,28619,28579,28615,28604,28622,28616,28510,28612,28605,28574,28618,28584,28676,28581,28590,28602,28588,28586,28623,28607,28600,28578,28617,28587,28621,28591,28594,28592,29125,29122,29119,29112,29142,29120,29121,29131,29140,29130,29127,29135,29117,29144,29116,29126,29146,29147,29341,29342,29545,29542,29543,29548,29541,29547,29546,29823,29850,29856,29844,29842,29845,29857,29963,30080,30255,30253,30257,30269,30259,30268,30261,30258,30256,30395,30438,30618,30621,30625,30620,30619,30626,30627,30613,30617,30615,30941,30953,30949,30954,30942,30947,30939,30945,30946,30957,30943,30944,31140,31300,31304,31303,31414,31416,31413,31409,31415,31710,31715,31719,31709,31701,31717,31706,31720,31737,31700,31722,31714,31708,31723,31704,31711,31954,31956,31959,31952,31953,32274,32289,32279,32268,32287,32288,32275,32270,32284,32277,32282,32290,32267,32271,32278,32269,32276,32293,32292,32579,32635,32636,32634,32689,32751,32810,32809,32876,33201,33190,33198,33209,33205,33195,33200,33196,33204,33202,33207,33191,33266,33365,33366,33367,34134,34117,34155,34125,34131,34145,34136,34112,34118,34148,34113,34146,34116,34129,34119,34147,34110,34139,34161,34126,34158,34165,34133,34151,34144,34188,34150,34141,34132,34149,34156,34403,34405,34404,34715,34703,34711,34707,34706,34696,34689,34710,34712,34681,34695,34723,34693,34704,34705,34717,34692,34708,34716,34714,34697,35102,35110,35120,35117,35118,35111,35121,35106,35113,35107,35119,35116,35103,35313,35552,35554,35570,35572,35573,35549,35604,35556,35551,35568,35528,35550,35553,35560,35583,35567,35579,35985,35986,35984,36085,36078,36081,36080,36083,36204,36206,36261,36263,36403,36414,36408,36416,36421,36406,36412,36413,36417,36400,36415,36541,36662,36654,36661,36658,36665,36663,36660,36982,36985,36987,36998,37114,37171,37173,37174,37267,37264,37265,37261,37263,37671,37662,37640,37663,37638,37647,37754,37688,37692,37659,37667,37650,37633,37702,37677,37646,37645,37579,37661,37626,37669,37651,37625,37623,37684,37634,37668,37631,37673,37689,37685,37674,37652,37644,37643,37630,37641,37632,37627,37654,38332,38349,38334,38329,38330,38326,38335,38325,38333,38569,38612,38667,38674,38672,38809,38807,38804,38896,38904,38965,38959,38962,39204,39199,39207,39209,39326,39406,39404,39397,39396,39408,39395,39402,39401,39399,39609,39615,39604,39611,39670,39674,39673,39671,39731,39808,39813,39815,39804,39806,39803,39810,39827,39826,39824,39802,39829,39805,39816,40229,40215,40224,40222,40212,40233,40221,40216,40226,40208,40217,40223,40584,40582,40583,40622,40621,40661,40662,40698,40722,40765,20774,20773,20770,20772,20768,20777,21236,22163,22156,22157,22150,22148,22147,22142,22146,22143,22145,22742,22740,22735,22738,23341,23333,23346,23331,23340,23335,23334,23343,23342,23419,23537,23538,23991,24172,24170,24510,24507,25027,25013,25020,25063,25056,25061,25060,25064,25054,25839,25833,25827,25835,25828,25832,25985,25984,26038,26074,26322,27277,27286,27265,27301,27273,27295,27291,27297,27294,27271,27283,27278,27285,27267,27304,27300,27281,27263,27302,27290,27269,27276,27282,27483,27565,27657,28620,28585,28660,28628,28643,28636,28653,28647,28646,28638,28658,28637,28642,28648,29153,29169,29160,29170,29156,29168,29154,29555,29550,29551,29847,29874,29867,29840,29866,29869,29873,29861,29871,29968,29969,29970,29967,30084,30275,30280,30281,30279,30372,30441,30645,30635,30642,30647,30646,30644,30641,30632,30704,30963,30973,30978,30971,30972,30962,30981,30969,30974,30980,31147,31144,31324,31323,31318,31320,31316,31322,31422,31424,31425,31749,31759,31730,31744,31743,31739,31758,31732,31755,31731,31746,31753,31747,31745,31736,31741,31750,31728,31729,31760,31754,31976,32301,32316,32322,32307,38984,32312,32298,32329,32320,32327,32297,32332,32304,32315,32310,32324,32314,32581,32639,32638,32637,32756,32754,32812,33211,33220,33228,33226,33221,33223,33212,33257,33371,33370,33372,34179,34176,34191,34215,34197,34208,34187,34211,34171,34212,34202,34206,34167,34172,34185,34209,34170,34168,34135,34190,34198,34182,34189,34201,34205,34177,34210,34178,34184,34181,34169,34166,34200,34192,34207,34408,34750,34730,34733,34757,34736,34732,34745,34741,34748,34734,34761,34755,34754,34764,34743,34735,34756,34762,34740,34742,34751,34744,34749,34782,34738,35125,35123,35132,35134,35137,35154,35127,35138,35245,35247,35246,35314,35315,35614,35608,35606,35601,35589,35595,35618,35599,35602,35605,35591,35597,35592,35590,35612,35603,35610,35919,35952,35954,35953,35951,35989,35988,36089,36207,36430,36429,36435,36432,36428,36423,36675,36672,36997,36990,37176,37274,37282,37275,37273,37279,37281,37277,37280,37793,37763,37807,37732,37718,37703,37756,37720,37724,37750,37705,37712,37713,37728,37741,37775,37708,37738,37753,37719,37717,37714,37711,37745,37751,37755,37729,37726,37731,37735,37760,37710,37721,38343,38336,38345,38339,38341,38327,38574,38576,38572,38688,38687,38680,38685,38681,38810,38817,38812,38814,38813,38869,38868,38897,38977,38980,38986,38985,38981,38979,39205,39211,39212,39210,39219,39218,39215,39213,39217,39216,39320,39331,39329,39426,39418,39412,39415,39417,39416,39414,39419,39421,39422,39420,39427,39614,39678,39677,39681,39676,39752,39834,39848,39838,39835,39846,39841,39845,39844,39814,39842,39840,39855,40243,40257,40295,40246,40238,40239,40241,40248,40240,40261,40258,40259,40254,40247,40256,40253,32757,40237,40586,40585,40589,40624,40648,40666,40699,40703,40740,40739,40738,40788,40864,20785,20781,20782,22168,22172,22167,22170,22173,22169,22896,23356,23657,23658,24000,24173,24174,25048,25055,25069,25070,25073,25066,25072,25067,25046,25065,25855,25860,25853,25848,25857,25859,25852,26004,26075,26330,26331,26328,27333,27321,27325,27361,27334,27322,27318,27319,27335,27316,27309,27486,27593,27659,28679,28684,28685,28673,28677,28692,28686,28671,28672,28667,28710,28668,28663,28682,29185,29183,29177,29187,29181,29558,29880,29888,29877,29889,29886,29878,29883,29890,29972,29971,30300,30308,30297,30288,30291,30295,30298,30374,30397,30444,30658,30650,30975,30988,30995,30996,30985,30992,30994,30993,31149,31148,31327,31772,31785,31769,31776,31775,31789,31773,31782,31784,31778,31781,31792,32348,32336,32342,32355,32344,32354,32351,32337,32352,32343,32339,32693,32691,32759,32760,32885,33233,33234,33232,33375,33374,34228,34246,34240,34243,34242,34227,34229,34237,34247,34244,34239,34251,34254,34248,34245,34225,34230,34258,34340,34232,34231,34238,34409,34791,34790,34786,34779,34795,34794,34789,34783,34803,34788,34772,34780,34771,34797,34776,34787,34724,34775,34777,34817,34804,34792,34781,35155,35147,35151,35148,35142,35152,35153,35145,35626,35623,35619,35635,35632,35637,35655,35631,35644,35646,35633,35621,35639,35622,35638,35630,35620,35643,35645,35642,35906,35957,35993,35992,35991,36094,36100,36098,36096,36444,36450,36448,36439,36438,36446,36453,36455,36443,36442,36449,36445,36457,36436,36678,36679,36680,36683,37160,37178,37179,37182,37288,37285,37287,37295,37290,37813,37772,37778,37815,37787,37789,37769,37799,37774,37802,37790,37798,37781,37768,37785,37791,37773,37809,37777,37810,37796,37800,37812,37795,37797,38354,38355,38353,38579,38615,38618,24002,38623,38616,38621,38691,38690,38693,38828,38830,38824,38827,38820,38826,38818,38821,38871,38873,38870,38872,38906,38992,38993,38994,39096,39233,39228,39226,39439,39435,39433,39437,39428,39441,39434,39429,39431,39430,39616,39644,39688,39684,39685,39721,39733,39754,39756,39755,39879,39878,39875,39871,39873,39861,39864,39891,39862,39876,39865,39869,40284,40275,40271,40266,40283,40267,40281,40278,40268,40279,40274,40276,40287,40280,40282,40590,40588,40671,40705,40704,40726,40741,40747,40746,40745,40744,40780,40789,20788,20789,21142,21239,21428,22187,22189,22182,22183,22186,22188,22746,22749,22747,22802,23357,23358,23359,24003,24176,24511,25083,25863,25872,25869,25865,25868,25870,25988,26078,26077,26334,27367,27360,27340,27345,27353,27339,27359,27356,27344,27371,27343,27341,27358,27488,27568,27660,28697,28711,28704,28694,28715,28705,28706,28707,28713,28695,28708,28700,28714,29196,29194,29191,29186,29189,29349,29350,29348,29347,29345,29899,29893,29879,29891,29974,30304,30665,30666,30660,30705,31005,31003,31009,31004,30999,31006,31152,31335,31336,31795,31804,31801,31788,31803,31980,31978,32374,32373,32376,32368,32375,32367,32378,32370,32372,32360,32587,32586,32643,32646,32695,32765,32766,32888,33239,33237,33380,33377,33379,34283,34289,34285,34265,34273,34280,34266,34263,34284,34290,34296,34264,34271,34275,34268,34257,34288,34278,34287,34270,34274,34816,34810,34819,34806,34807,34825,34828,34827,34822,34812,34824,34815,34826,34818,35170,35162,35163,35159,35169,35164,35160,35165,35161,35208,35255,35254,35318,35664,35656,35658,35648,35667,35670,35668,35659,35669,35665,35650,35666,35671,35907,35959,35958,35994,36102,36103,36105,36268,36266,36269,36267,36461,36472,36467,36458,36463,36475,36546,36690,36689,36687,36688,36691,36788,37184,37183,37296,37293,37854,37831,37839,37826,37850,37840,37881,37868,37836,37849,37801,37862,37834,37844,37870,37859,37845,37828,37838,37824,37842,37863,38269,38362,38363,38625,38697,38699,38700,38696,38694,38835,38839,38838,38877,38878,38879,39004,39001,39005,38999,39103,39101,39099,39102,39240,39239,39235,39334,39335,39450,39445,39461,39453,39460,39451,39458,39456,39463,39459,39454,39452,39444,39618,39691,39690,39694,39692,39735,39914,39915,39904,39902,39908,39910,39906,39920,39892,39895,39916,39900,39897,39909,39893,39905,39898,40311,40321,40330,40324,40328,40305,40320,40312,40326,40331,40332,40317,40299,40308,40309,40304,40297,40325,40307,40315,40322,40303,40313,40319,40327,40296,40596,40593,40640,40700,40749,40768,40769,40781,40790,40791,40792,21303,22194,22197,22195,22755,23365,24006,24007,24302,24303,24512,24513,25081,25879,25878,25877,25875,26079,26344,26339,26340,27379,27376,27370,27368,27385,27377,27374,27375,28732,28725,28719,28727,28724,28721,28738,28728,28735,28730,28729,28736,28731,28723,28737,29203,29204,29352,29565,29564,29882,30379,30378,30398,30445,30668,30670,30671,30669,30706,31013,31011,31015,31016,31012,31017,31154,31342,31340,31341,31479,31817,31816,31818,31815,31813,31982,32379,32382,32385,32384,32698,32767,32889,33243,33241,33291,33384,33385,34338,34303,34305,34302,34331,34304,34294,34308,34313,34309,34316,34301,34841,34832,34833,34839,34835,34838,35171,35174,35257,35319,35680,35690,35677,35688,35683,35685,35687,35693,36270,36486,36488,36484,36697,36694,36695,36693,36696,36698,37005,37187,37185,37303,37301,37298,37299,37899,37907,37883,37920,37903,37908,37886,37909,37904,37928,37913,37901,37877,37888,37879,37895,37902,37910,37906,37882,37897,37880,37898,37887,37884,37900,37878,37905,37894,38366,38368,38367,38702,38703,38841,38843,38909,38910,39008,39010,39011,39007,39105,39106,39248,39246,39257,39244,39243,39251,39474,39476,39473,39468,39466,39478,39465,39470,39480,39469,39623,39626,39622,39696,39698,39697,39947,39944,39927,39941,39954,39928,40000,39943,39950,39942,39959,39956,39945,40351,40345,40356,40349,40338,40344,40336,40347,40352,40340,40348,40362,40343,40353,40346,40354,40360,40350,40355,40383,40361,40342,40358,40359,40601,40603,40602,40677,40676,40679,40678,40752,40750,40795,40800,40798,40797,40793,40849,20794,20793,21144,21143,22211,22205,22206,23368,23367,24011,24015,24305,25085,25883,27394,27388,27395,27384,27392,28739,28740,28746,28744,28745,28741,28742,29213,29210,29209,29566,29975,30314,30672,31021,31025,31023,31828,31827,31986,32394,32391,32392,32395,32390,32397,32589,32699,32816,33245,34328,34346,34342,34335,34339,34332,34329,34343,34350,34337,34336,34345,34334,34341,34857,34845,34843,34848,34852,34844,34859,34890,35181,35177,35182,35179,35322,35705,35704,35653,35706,35707,36112,36116,36271,36494,36492,36702,36699,36701,37190,37188,37189,37305,37951,37947,37942,37929,37949,37948,37936,37945,37930,37943,37932,37952,37937,38373,38372,38371,38709,38714,38847,38881,39012,39113,39110,39104,39256,39254,39481,39485,39494,39492,39490,39489,39482,39487,39629,39701,39703,39704,39702,39738,39762,39979,39965,39964,39980,39971,39976,39977,39972,39969,40375,40374,40380,40385,40391,40394,40399,40382,40389,40387,40379,40373,40398,40377,40378,40364,40392,40369,40365,40396,40371,40397,40370,40570,40604,40683,40686,40685,40731,40728,40730,40753,40782,40805,40804,40850,20153,22214,22213,22219,22897,23371,23372,24021,24017,24306,25889,25888,25894,25890,27403,27400,27401,27661,28757,28758,28759,28754,29214,29215,29353,29567,29912,29909,29913,29911,30317,30381,31029,31156,31344,31345,31831,31836,31833,31835,31834,31988,31985,32401,32591,32647,33246,33387,34356,34357,34355,34348,34354,34358,34860,34856,34854,34858,34853,35185,35263,35262,35323,35710,35716,35714,35718,35717,35711,36117,36501,36500,36506,36498,36496,36502,36503,36704,36706,37191,37964,37968,37962,37963,37967,37959,37957,37960,37961,37958,38719,38883,39018,39017,39115,39252,39259,39502,39507,39508,39500,39503,39496,39498,39497,39506,39504,39632,39705,39723,39739,39766,39765,40006,40008,39999,40004,39993,39987,40001,39996,39991,39988,39986,39997,39990,40411,40402,40414,40410,40395,40400,40412,40401,40415,40425,40409,40408,40406,40437,40405,40413,40630,40688,40757,40755,40754,40770,40811,40853,40866,20797,21145,22760,22759,22898,23373,24024,34863,24399,25089,25091,25092,25897,25893,26006,26347,27409,27410,27407,27594,28763,28762,29218,29570,29569,29571,30320,30676,31847,31846,32405,33388,34362,34368,34361,34364,34353,34363,34366,34864,34866,34862,34867,35190,35188,35187,35326,35724,35726,35723,35720,35909,36121,36504,36708,36707,37308,37986,37973,37981,37975,37982,38852,38853,38912,39510,39513,39710,39711,39712,40018,40024,40016,40010,40013,40011,40021,40025,40012,40014,40443,40439,40431,40419,40427,40440,40420,40438,40417,40430,40422,40434,40432,40418,40428,40436,40435,40424,40429,40642,40656,40690,40691,40710,40732,40760,40759,40758,40771,40783,40817,40816,40814,40815,22227,22221,23374,23661,25901,26349,26350,27411,28767,28769,28765,28768,29219,29915,29925,30677,31032,31159,31158,31850,32407,32649,33389,34371,34872,34871,34869,34891,35732,35733,36510,36511,36512,36509,37310,37309,37314,37995,37992,37993,38629,38726,38723,38727,38855,38885,39518,39637,39769,40035,40039,40038,40034,40030,40032,40450,40446,40455,40451,40454,40453,40448,40449,40457,40447,40445,40452,40608,40734,40774,40820,40821,40822,22228,25902,26040,27416,27417,27415,27418,28770,29222,29354,30680,30681,31033,31849,31851,31990,32410,32408,32411,32409,33248,33249,34374,34375,34376,35193,35194,35196,35195,35327,35736,35737,36517,36516,36515,37998,37997,37999,38001,38003,38729,39026,39263,40040,40046,40045,40459,40461,40464,40463,40466,40465,40609,40693,40713,40775,40824,40827,40826,40825,22302,28774,31855,34876,36274,36518,37315,38004,38008,38006,38005,39520,40052,40051,40049,40053,40468,40467,40694,40714,40868,28776,28773,31991,34410,34878,34877,34879,35742,35996,36521,36553,38731,39027,39028,39116,39265,39339,39524,39526,39527,39716,40469,40471,40776,25095,27422,29223,34380,36520,38018,38016,38017,39529,39528,39726,40473,29225,34379,35743,38019,40057,40631,30325,39531,40058,40477,28777,28778,40612,40830,40777,40856,30849,37561,35023,22715,24658,31911,23290,9556,9574,9559,9568,9580,9571,9562,9577,9565,9554,9572,9557,9566,9578,9569,9560,9575,9563,9555,9573,9558,9567,9579,9570,9561,9576,9564,9553,9552,9581,9582,9584,9583,65517,132423,37595,132575,147397,34124,17077,29679,20917,13897,149826,166372,37700,137691,33518,146632,30780,26436,25311,149811,166314,131744,158643,135941,20395,140525,20488,159017,162436,144896,150193,140563,20521,131966,24484,131968,131911,28379,132127,20605,20737,13434,20750,39020,14147,33814,149924,132231,20832,144308,20842,134143,139516,131813,140592,132494,143923,137603,23426,34685,132531,146585,20914,20920,40244,20937,20943,20945,15580,20947,150182,20915,20962,21314,20973,33741,26942,145197,24443,21003,21030,21052,21173,21079,21140,21177,21189,31765,34114,21216,34317,158483,21253,166622,21833,28377,147328,133460,147436,21299,21316,134114,27851,136998,26651,29653,24650,16042,14540,136936,29149,17570,21357,21364,165547,21374,21375,136598,136723,30694,21395,166555,21408,21419,21422,29607,153458,16217,29596,21441,21445,27721,20041,22526,21465,15019,134031,21472,147435,142755,21494,134263,21523,28793,21803,26199,27995,21613,158547,134516,21853,21647,21668,18342,136973,134877,15796,134477,166332,140952,21831,19693,21551,29719,21894,21929,22021,137431,147514,17746,148533,26291,135348,22071,26317,144010,26276,26285,22093,22095,30961,22257,38791,21502,22272,22255,22253,166758,13859,135759,22342,147877,27758,28811,22338,14001,158846,22502,136214,22531,136276,148323,22566,150517,22620,22698,13665,22752,22748,135740,22779,23551,22339,172368,148088,37843,13729,22815,26790,14019,28249,136766,23076,21843,136850,34053,22985,134478,158849,159018,137180,23001,137211,137138,159142,28017,137256,136917,23033,159301,23211,23139,14054,149929,23159,14088,23190,29797,23251,159649,140628,15749,137489,14130,136888,24195,21200,23414,25992,23420,162318,16388,18525,131588,23509,24928,137780,154060,132517,23539,23453,19728,23557,138052,23571,29646,23572,138405,158504,23625,18653,23685,23785,23791,23947,138745,138807,23824,23832,23878,138916,23738,24023,33532,14381,149761,139337,139635,33415,14390,15298,24110,27274,24181,24186,148668,134355,21414,20151,24272,21416,137073,24073,24308,164994,24313,24315,14496,24316,26686,37915,24333,131521,194708,15070,18606,135994,24378,157832,140240,24408,140401,24419,38845,159342,24434,37696,166454,24487,23990,15711,152144,139114,159992,140904,37334,131742,166441,24625,26245,137335,14691,15815,13881,22416,141236,31089,15936,24734,24740,24755,149890,149903,162387,29860,20705,23200,24932,33828,24898,194726,159442,24961,20980,132694,24967,23466,147383,141407,25043,166813,170333,25040,14642,141696,141505,24611,24924,25886,25483,131352,25285,137072,25301,142861,25452,149983,14871,25656,25592,136078,137212,25744,28554,142902,38932,147596,153373,25825,25829,38011,14950,25658,14935,25933,28438,150056,150051,25989,25965,25951,143486,26037,149824,19255,26065,16600,137257,26080,26083,24543,144384,26136,143863,143864,26180,143780,143781,26187,134773,26215,152038,26227,26228,138813,143921,165364,143816,152339,30661,141559,39332,26370,148380,150049,15147,27130,145346,26462,26471,26466,147917,168173,26583,17641,26658,28240,37436,26625,144358,159136,26717,144495,27105,27147,166623,26995,26819,144845,26881,26880,15666,14849,144956,15232,26540,26977,166474,17148,26934,27032,15265,132041,33635,20624,27129,144985,139562,27205,145155,27293,15347,26545,27336,168348,15373,27421,133411,24798,27445,27508,141261,28341,146139,132021,137560,14144,21537,146266,27617,147196,27612,27703,140427,149745,158545,27738,33318,27769,146876,17605,146877,147876,149772,149760,146633,14053,15595,134450,39811,143865,140433,32655,26679,159013,159137,159211,28054,27996,28284,28420,149887,147589,159346,34099,159604,20935,27804,28189,33838,166689,28207,146991,29779,147330,31180,28239,23185,143435,28664,14093,28573,146992,28410,136343,147517,17749,37872,28484,28508,15694,28532,168304,15675,28575,147780,28627,147601,147797,147513,147440,147380,147775,20959,147798,147799,147776,156125,28747,28798,28839,28801,28876,28885,28886,28895,16644,15848,29108,29078,148087,28971,28997,23176,29002,29038,23708,148325,29007,37730,148161,28972,148570,150055,150050,29114,166888,28861,29198,37954,29205,22801,37955,29220,37697,153093,29230,29248,149876,26813,29269,29271,15957,143428,26637,28477,29314,29482,29483,149539,165931,18669,165892,29480,29486,29647,29610,134202,158254,29641,29769,147938,136935,150052,26147,14021,149943,149901,150011,29687,29717,26883,150054,29753,132547,16087,29788,141485,29792,167602,29767,29668,29814,33721,29804,14128,29812,37873,27180,29826,18771,150156,147807,150137,166799,23366,166915,137374,29896,137608,29966,29929,29982,167641,137803,23511,167596,37765,30029,30026,30055,30062,151426,16132,150803,30094,29789,30110,30132,30210,30252,30289,30287,30319,30326,156661,30352,33263,14328,157969,157966,30369,30373,30391,30412,159647,33890,151709,151933,138780,30494,30502,30528,25775,152096,30552,144044,30639,166244,166248,136897,30708,30729,136054,150034,26826,30895,30919,30931,38565,31022,153056,30935,31028,30897,161292,36792,34948,166699,155779,140828,31110,35072,26882,31104,153687,31133,162617,31036,31145,28202,160038,16040,31174,168205,31188],"euc-kr":[44034,44035,44037,44038,44043,44044,44045,44046,44047,44056,44062,44063,44065,44066,44067,44069,44070,44071,44072,44073,44074,44075,44078,44082,44083,44084,null,null,null,null,null,null,44085,44086,44087,44090,44091,44093,44094,44095,44097,44098,44099,44100,44101,44102,44103,44104,44105,44106,44108,44110,44111,44112,44113,44114,44115,44117,null,null,null,null,null,null,44118,44119,44121,44122,44123,44125,44126,44127,44128,44129,44130,44131,44132,44133,44134,44135,44136,44137,44138,44139,44140,44141,44142,44143,44146,44147,44149,44150,44153,44155,44156,44157,44158,44159,44162,44167,44168,44173,44174,44175,44177,44178,44179,44181,44182,44183,44184,44185,44186,44187,44190,44194,44195,44196,44197,44198,44199,44203,44205,44206,44209,44210,44211,44212,44213,44214,44215,44218,44222,44223,44224,44226,44227,44229,44230,44231,44233,44234,44235,44237,44238,44239,44240,44241,44242,44243,44244,44246,44248,44249,44250,44251,44252,44253,44254,44255,44258,44259,44261,44262,44265,44267,44269,44270,44274,44276,44279,44280,44281,44282,44283,44286,44287,44289,44290,44291,44293,44295,44296,44297,44298,44299,44302,44304,44306,44307,44308,44309,44310,44311,44313,44314,44315,44317,44318,44319,44321,44322,44323,44324,44325,44326,44327,44328,44330,44331,44334,44335,44336,44337,44338,44339,null,null,null,null,null,null,44342,44343,44345,44346,44347,44349,44350,44351,44352,44353,44354,44355,44358,44360,44362,44363,44364,44365,44366,44367,44369,44370,44371,44373,44374,44375,null,null,null,null,null,null,44377,44378,44379,44380,44381,44382,44383,44384,44386,44388,44389,44390,44391,44392,44393,44394,44395,44398,44399,44401,44402,44407,44408,44409,44410,44414,44416,44419,44420,44421,44422,44423,44426,44427,44429,44430,44431,44433,44434,44435,44436,44437,44438,44439,44440,44441,44442,44443,44446,44447,44448,44449,44450,44451,44453,44454,44455,44456,44457,44458,44459,44460,44461,44462,44463,44464,44465,44466,44467,44468,44469,44470,44472,44473,44474,44475,44476,44477,44478,44479,44482,44483,44485,44486,44487,44489,44490,44491,44492,44493,44494,44495,44498,44500,44501,44502,44503,44504,44505,44506,44507,44509,44510,44511,44513,44514,44515,44517,44518,44519,44520,44521,44522,44523,44524,44525,44526,44527,44528,44529,44530,44531,44532,44533,44534,44535,44538,44539,44541,44542,44546,44547,44548,44549,44550,44551,44554,44556,44558,44559,44560,44561,44562,44563,44565,44566,44567,44568,44569,44570,44571,44572,null,null,null,null,null,null,44573,44574,44575,44576,44577,44578,44579,44580,44581,44582,44583,44584,44585,44586,44587,44588,44589,44590,44591,44594,44595,44597,44598,44601,44603,44604,null,null,null,null,null,null,44605,44606,44607,44610,44612,44615,44616,44617,44619,44623,44625,44626,44627,44629,44631,44632,44633,44634,44635,44638,44642,44643,44644,44646,44647,44650,44651,44653,44654,44655,44657,44658,44659,44660,44661,44662,44663,44666,44670,44671,44672,44673,44674,44675,44678,44679,44680,44681,44682,44683,44685,44686,44687,44688,44689,44690,44691,44692,44693,44694,44695,44696,44697,44698,44699,44700,44701,44702,44703,44704,44705,44706,44707,44708,44709,44710,44711,44712,44713,44714,44715,44716,44717,44718,44719,44720,44721,44722,44723,44724,44725,44726,44727,44728,44729,44730,44731,44735,44737,44738,44739,44741,44742,44743,44744,44745,44746,44747,44750,44754,44755,44756,44757,44758,44759,44762,44763,44765,44766,44767,44768,44769,44770,44771,44772,44773,44774,44775,44777,44778,44780,44782,44783,44784,44785,44786,44787,44789,44790,44791,44793,44794,44795,44797,44798,44799,44800,44801,44802,44803,44804,44805,null,null,null,null,null,null,44806,44809,44810,44811,44812,44814,44815,44817,44818,44819,44820,44821,44822,44823,44824,44825,44826,44827,44828,44829,44830,44831,44832,44833,44834,44835,null,null,null,null,null,null,44836,44837,44838,44839,44840,44841,44842,44843,44846,44847,44849,44851,44853,44854,44855,44856,44857,44858,44859,44862,44864,44868,44869,44870,44871,44874,44875,44876,44877,44878,44879,44881,44882,44883,44884,44885,44886,44887,44888,44889,44890,44891,44894,44895,44896,44897,44898,44899,44902,44903,44904,44905,44906,44907,44908,44909,44910,44911,44912,44913,44914,44915,44916,44917,44918,44919,44920,44922,44923,44924,44925,44926,44927,44929,44930,44931,44933,44934,44935,44937,44938,44939,44940,44941,44942,44943,44946,44947,44948,44950,44951,44952,44953,44954,44955,44957,44958,44959,44960,44961,44962,44963,44964,44965,44966,44967,44968,44969,44970,44971,44972,44973,44974,44975,44976,44977,44978,44979,44980,44981,44982,44983,44986,44987,44989,44990,44991,44993,44994,44995,44996,44997,44998,45002,45004,45007,45008,45009,45010,45011,45013,45014,45015,45016,45017,45018,45019,45021,45022,45023,45024,45025,null,null,null,null,null,null,45026,45027,45028,45029,45030,45031,45034,45035,45036,45037,45038,45039,45042,45043,45045,45046,45047,45049,45050,45051,45052,45053,45054,45055,45058,45059,null,null,null,null,null,null,45061,45062,45063,45064,45065,45066,45067,45069,45070,45071,45073,45074,45075,45077,45078,45079,45080,45081,45082,45083,45086,45087,45088,45089,45090,45091,45092,45093,45094,45095,45097,45098,45099,45100,45101,45102,45103,45104,45105,45106,45107,45108,45109,45110,45111,45112,45113,45114,45115,45116,45117,45118,45119,45120,45121,45122,45123,45126,45127,45129,45131,45133,45135,45136,45137,45138,45142,45144,45146,45147,45148,45150,45151,45152,45153,45154,45155,45156,45157,45158,45159,45160,45161,45162,45163,45164,45165,45166,45167,45168,45169,45170,45171,45172,45173,45174,45175,45176,45177,45178,45179,45182,45183,45185,45186,45187,45189,45190,45191,45192,45193,45194,45195,45198,45200,45202,45203,45204,45205,45206,45207,45211,45213,45214,45219,45220,45221,45222,45223,45226,45232,45234,45238,45239,45241,45242,45243,45245,45246,45247,45248,45249,45250,45251,45254,45258,45259,45260,45261,45262,45263,45266,null,null,null,null,null,null,45267,45269,45270,45271,45273,45274,45275,45276,45277,45278,45279,45281,45282,45283,45284,45286,45287,45288,45289,45290,45291,45292,45293,45294,45295,45296,null,null,null,null,null,null,45297,45298,45299,45300,45301,45302,45303,45304,45305,45306,45307,45308,45309,45310,45311,45312,45313,45314,45315,45316,45317,45318,45319,45322,45325,45326,45327,45329,45332,45333,45334,45335,45338,45342,45343,45344,45345,45346,45350,45351,45353,45354,45355,45357,45358,45359,45360,45361,45362,45363,45366,45370,45371,45372,45373,45374,45375,45378,45379,45381,45382,45383,45385,45386,45387,45388,45389,45390,45391,45394,45395,45398,45399,45401,45402,45403,45405,45406,45407,45409,45410,45411,45412,45413,45414,45415,45416,45417,45418,45419,45420,45421,45422,45423,45424,45425,45426,45427,45428,45429,45430,45431,45434,45435,45437,45438,45439,45441,45443,45444,45445,45446,45447,45450,45452,45454,45455,45456,45457,45461,45462,45463,45465,45466,45467,45469,45470,45471,45472,45473,45474,45475,45476,45477,45478,45479,45481,45482,45483,45484,45485,45486,45487,45488,45489,45490,45491,45492,45493,45494,45495,45496,null,null,null,null,null,null,45497,45498,45499,45500,45501,45502,45503,45504,45505,45506,45507,45508,45509,45510,45511,45512,45513,45514,45515,45517,45518,45519,45521,45522,45523,45525,null,null,null,null,null,null,45526,45527,45528,45529,45530,45531,45534,45536,45537,45538,45539,45540,45541,45542,45543,45546,45547,45549,45550,45551,45553,45554,45555,45556,45557,45558,45559,45560,45562,45564,45566,45567,45568,45569,45570,45571,45574,45575,45577,45578,45581,45582,45583,45584,45585,45586,45587,45590,45592,45594,45595,45596,45597,45598,45599,45601,45602,45603,45604,45605,45606,45607,45608,45609,45610,45611,45612,45613,45614,45615,45616,45617,45618,45619,45621,45622,45623,45624,45625,45626,45627,45629,45630,45631,45632,45633,45634,45635,45636,45637,45638,45639,45640,45641,45642,45643,45644,45645,45646,45647,45648,45649,45650,45651,45652,45653,45654,45655,45657,45658,45659,45661,45662,45663,45665,45666,45667,45668,45669,45670,45671,45674,45675,45676,45677,45678,45679,45680,45681,45682,45683,45686,45687,45688,45689,45690,45691,45693,45694,45695,45696,45697,45698,45699,45702,45703,45704,45706,45707,45708,45709,45710,null,null,null,null,null,null,45711,45714,45715,45717,45718,45719,45723,45724,45725,45726,45727,45730,45732,45735,45736,45737,45739,45741,45742,45743,45745,45746,45747,45749,45750,45751,null,null,null,null,null,null,45752,45753,45754,45755,45756,45757,45758,45759,45760,45761,45762,45763,45764,45765,45766,45767,45770,45771,45773,45774,45775,45777,45779,45780,45781,45782,45783,45786,45788,45790,45791,45792,45793,45795,45799,45801,45802,45808,45809,45810,45814,45820,45821,45822,45826,45827,45829,45830,45831,45833,45834,45835,45836,45837,45838,45839,45842,45846,45847,45848,45849,45850,45851,45853,45854,45855,45856,45857,45858,45859,45860,45861,45862,45863,45864,45865,45866,45867,45868,45869,45870,45871,45872,45873,45874,45875,45876,45877,45878,45879,45880,45881,45882,45883,45884,45885,45886,45887,45888,45889,45890,45891,45892,45893,45894,45895,45896,45897,45898,45899,45900,45901,45902,45903,45904,45905,45906,45907,45911,45913,45914,45917,45920,45921,45922,45923,45926,45928,45930,45932,45933,45935,45938,45939,45941,45942,45943,45945,45946,45947,45948,45949,45950,45951,45954,45958,45959,45960,45961,45962,45963,45965,null,null,null,null,null,null,45966,45967,45969,45970,45971,45973,45974,45975,45976,45977,45978,45979,45980,45981,45982,45983,45986,45987,45988,45989,45990,45991,45993,45994,45995,45997,null,null,null,null,null,null,45998,45999,46000,46001,46002,46003,46004,46005,46006,46007,46008,46009,46010,46011,46012,46013,46014,46015,46016,46017,46018,46019,46022,46023,46025,46026,46029,46031,46033,46034,46035,46038,46040,46042,46044,46046,46047,46049,46050,46051,46053,46054,46055,46057,46058,46059,46060,46061,46062,46063,46064,46065,46066,46067,46068,46069,46070,46071,46072,46073,46074,46075,46077,46078,46079,46080,46081,46082,46083,46084,46085,46086,46087,46088,46089,46090,46091,46092,46093,46094,46095,46097,46098,46099,46100,46101,46102,46103,46105,46106,46107,46109,46110,46111,46113,46114,46115,46116,46117,46118,46119,46122,46124,46125,46126,46127,46128,46129,46130,46131,46133,46134,46135,46136,46137,46138,46139,46140,46141,46142,46143,46144,46145,46146,46147,46148,46149,46150,46151,46152,46153,46154,46155,46156,46157,46158,46159,46162,46163,46165,46166,46167,46169,46170,46171,46172,46173,46174,46175,46178,46180,46182,null,null,null,null,null,null,46183,46184,46185,46186,46187,46189,46190,46191,46192,46193,46194,46195,46196,46197,46198,46199,46200,46201,46202,46203,46204,46205,46206,46207,46209,46210,null,null,null,null,null,null,46211,46212,46213,46214,46215,46217,46218,46219,46220,46221,46222,46223,46224,46225,46226,46227,46228,46229,46230,46231,46232,46233,46234,46235,46236,46238,46239,46240,46241,46242,46243,46245,46246,46247,46249,46250,46251,46253,46254,46255,46256,46257,46258,46259,46260,46262,46264,46266,46267,46268,46269,46270,46271,46273,46274,46275,46277,46278,46279,46281,46282,46283,46284,46285,46286,46287,46289,46290,46291,46292,46294,46295,46296,46297,46298,46299,46302,46303,46305,46306,46309,46311,46312,46313,46314,46315,46318,46320,46322,46323,46324,46325,46326,46327,46329,46330,46331,46332,46333,46334,46335,46336,46337,46338,46339,46340,46341,46342,46343,46344,46345,46346,46347,46348,46349,46350,46351,46352,46353,46354,46355,46358,46359,46361,46362,46365,46366,46367,46368,46369,46370,46371,46374,46379,46380,46381,46382,46383,46386,46387,46389,46390,46391,46393,46394,46395,46396,46397,46398,46399,46402,46406,null,null,null,null,null,null,46407,46408,46409,46410,46414,46415,46417,46418,46419,46421,46422,46423,46424,46425,46426,46427,46430,46434,46435,46436,46437,46438,46439,46440,46441,46442,null,null,null,null,null,null,46443,46444,46445,46446,46447,46448,46449,46450,46451,46452,46453,46454,46455,46456,46457,46458,46459,46460,46461,46462,46463,46464,46465,46466,46467,46468,46469,46470,46471,46472,46473,46474,46475,46476,46477,46478,46479,46480,46481,46482,46483,46484,46485,46486,46487,46488,46489,46490,46491,46492,46493,46494,46495,46498,46499,46501,46502,46503,46505,46508,46509,46510,46511,46514,46518,46519,46520,46521,46522,46526,46527,46529,46530,46531,46533,46534,46535,46536,46537,46538,46539,46542,46546,46547,46548,46549,46550,46551,46553,46554,46555,46556,46557,46558,46559,46560,46561,46562,46563,46564,46565,46566,46567,46568,46569,46570,46571,46573,46574,46575,46576,46577,46578,46579,46580,46581,46582,46583,46584,46585,46586,46587,46588,46589,46590,46591,46592,46593,46594,46595,46596,46597,46598,46599,46600,46601,46602,46603,46604,46605,46606,46607,46610,46611,46613,46614,46615,46617,46618,46619,46620,46621,null,null,null,null,null,null,46622,46623,46624,46625,46626,46627,46628,46630,46631,46632,46633,46634,46635,46637,46638,46639,46640,46641,46642,46643,46645,46646,46647,46648,46649,46650,null,null,null,null,null,null,46651,46652,46653,46654,46655,46656,46657,46658,46659,46660,46661,46662,46663,46665,46666,46667,46668,46669,46670,46671,46672,46673,46674,46675,46676,46677,46678,46679,46680,46681,46682,46683,46684,46685,46686,46687,46688,46689,46690,46691,46693,46694,46695,46697,46698,46699,46700,46701,46702,46703,46704,46705,46706,46707,46708,46709,46710,46711,46712,46713,46714,46715,46716,46717,46718,46719,46720,46721,46722,46723,46724,46725,46726,46727,46728,46729,46730,46731,46732,46733,46734,46735,46736,46737,46738,46739,46740,46741,46742,46743,46744,46745,46746,46747,46750,46751,46753,46754,46755,46757,46758,46759,46760,46761,46762,46765,46766,46767,46768,46770,46771,46772,46773,46774,46775,46776,46777,46778,46779,46780,46781,46782,46783,46784,46785,46786,46787,46788,46789,46790,46791,46792,46793,46794,46795,46796,46797,46798,46799,46800,46801,46802,46803,46805,46806,46807,46808,46809,46810,46811,46812,46813,null,null,null,null,null,null,46814,46815,46816,46817,46818,46819,46820,46821,46822,46823,46824,46825,46826,46827,46828,46829,46830,46831,46833,46834,46835,46837,46838,46839,46841,46842,null,null,null,null,null,null,46843,46844,46845,46846,46847,46850,46851,46852,46854,46855,46856,46857,46858,46859,46860,46861,46862,46863,46864,46865,46866,46867,46868,46869,46870,46871,46872,46873,46874,46875,46876,46877,46878,46879,46880,46881,46882,46883,46884,46885,46886,46887,46890,46891,46893,46894,46897,46898,46899,46900,46901,46902,46903,46906,46908,46909,46910,46911,46912,46913,46914,46915,46917,46918,46919,46921,46922,46923,46925,46926,46927,46928,46929,46930,46931,46934,46935,46936,46937,46938,46939,46940,46941,46942,46943,46945,46946,46947,46949,46950,46951,46953,46954,46955,46956,46957,46958,46959,46962,46964,46966,46967,46968,46969,46970,46971,46974,46975,46977,46978,46979,46981,46982,46983,46984,46985,46986,46987,46990,46995,46996,46997,47002,47003,47005,47006,47007,47009,47010,47011,47012,47013,47014,47015,47018,47022,47023,47024,47025,47026,47027,47030,47031,47033,47034,47035,47036,47037,47038,47039,47040,47041,null,null,null,null,null,null,47042,47043,47044,47045,47046,47048,47050,47051,47052,47053,47054,47055,47056,47057,47058,47059,47060,47061,47062,47063,47064,47065,47066,47067,47068,47069,null,null,null,null,null,null,47070,47071,47072,47073,47074,47075,47076,47077,47078,47079,47080,47081,47082,47083,47086,47087,47089,47090,47091,47093,47094,47095,47096,47097,47098,47099,47102,47106,47107,47108,47109,47110,47114,47115,47117,47118,47119,47121,47122,47123,47124,47125,47126,47127,47130,47132,47134,47135,47136,47137,47138,47139,47142,47143,47145,47146,47147,47149,47150,47151,47152,47153,47154,47155,47158,47162,47163,47164,47165,47166,47167,47169,47170,47171,47173,47174,47175,47176,47177,47178,47179,47180,47181,47182,47183,47184,47186,47188,47189,47190,47191,47192,47193,47194,47195,47198,47199,47201,47202,47203,47205,47206,47207,47208,47209,47210,47211,47214,47216,47218,47219,47220,47221,47222,47223,47225,47226,47227,47229,47230,47231,47232,47233,47234,47235,47236,47237,47238,47239,47240,47241,47242,47243,47244,47246,47247,47248,47249,47250,47251,47252,47253,47254,47255,47256,47257,47258,47259,47260,47261,47262,47263,null,null,null,null,null,null,47264,47265,47266,47267,47268,47269,47270,47271,47273,47274,47275,47276,47277,47278,47279,47281,47282,47283,47285,47286,47287,47289,47290,47291,47292,47293,null,null,null,null,null,null,47294,47295,47298,47300,47302,47303,47304,47305,47306,47307,47309,47310,47311,47313,47314,47315,47317,47318,47319,47320,47321,47322,47323,47324,47326,47328,47330,47331,47332,47333,47334,47335,47338,47339,47341,47342,47343,47345,47346,47347,47348,47349,47350,47351,47354,47356,47358,47359,47360,47361,47362,47363,47365,47366,47367,47368,47369,47370,47371,47372,47373,47374,47375,47376,47377,47378,47379,47380,47381,47382,47383,47385,47386,47387,47388,47389,47390,47391,47393,47394,47395,47396,47397,47398,47399,47400,47401,47402,47403,47404,47405,47406,47407,47408,47409,47410,47411,47412,47413,47414,47415,47416,47417,47418,47419,47422,47423,47425,47426,47427,47429,47430,47431,47432,47433,47434,47435,47437,47438,47440,47442,47443,47444,47445,47446,47447,47450,47451,47453,47454,47455,47457,47458,47459,47460,47461,47462,47463,47466,47468,47470,47471,47472,47473,47474,47475,47478,47479,47481,47482,47483,47485,null,null,null,null,null,null,47486,47487,47488,47489,47490,47491,47494,47496,47499,47500,47503,47504,47505,47506,47507,47508,47509,47510,47511,47512,47513,47514,47515,47516,47517,47518,null,null,null,null,null,null,47519,47520,47521,47522,47523,47524,47525,47526,47527,47528,47529,47530,47531,47534,47535,47537,47538,47539,47541,47542,47543,47544,47545,47546,47547,47550,47552,47554,47555,47556,47557,47558,47559,47562,47563,47565,47571,47572,47573,47574,47575,47578,47580,47583,47584,47586,47590,47591,47593,47594,47595,47597,47598,47599,47600,47601,47602,47603,47606,47611,47612,47613,47614,47615,47618,47619,47620,47621,47622,47623,47625,47626,47627,47628,47629,47630,47631,47632,47633,47634,47635,47636,47638,47639,47640,47641,47642,47643,47644,47645,47646,47647,47648,47649,47650,47651,47652,47653,47654,47655,47656,47657,47658,47659,47660,47661,47662,47663,47664,47665,47666,47667,47668,47669,47670,47671,47674,47675,47677,47678,47679,47681,47683,47684,47685,47686,47687,47690,47692,47695,47696,47697,47698,47702,47703,47705,47706,47707,47709,47710,47711,47712,47713,47714,47715,47718,47722,47723,47724,47725,47726,47727,null,null,null,null,null,null,47730,47731,47733,47734,47735,47737,47738,47739,47740,47741,47742,47743,47744,47745,47746,47750,47752,47753,47754,47755,47757,47758,47759,47760,47761,47762,null,null,null,null,null,null,47763,47764,47765,47766,47767,47768,47769,47770,47771,47772,47773,47774,47775,47776,47777,47778,47779,47780,47781,47782,47783,47786,47789,47790,47791,47793,47795,47796,47797,47798,47799,47802,47804,47806,47807,47808,47809,47810,47811,47813,47814,47815,47817,47818,47819,47820,47821,47822,47823,47824,47825,47826,47827,47828,47829,47830,47831,47834,47835,47836,47837,47838,47839,47840,47841,47842,47843,47844,47845,47846,47847,47848,47849,47850,47851,47852,47853,47854,47855,47856,47857,47858,47859,47860,47861,47862,47863,47864,47865,47866,47867,47869,47870,47871,47873,47874,47875,47877,47878,47879,47880,47881,47882,47883,47884,47886,47888,47890,47891,47892,47893,47894,47895,47897,47898,47899,47901,47902,47903,47905,47906,47907,47908,47909,47910,47911,47912,47914,47916,47917,47918,47919,47920,47921,47922,47923,47927,47929,47930,47935,47936,47937,47938,47939,47942,47944,47946,47947,47948,47950,47953,47954,null,null,null,null,null,null,47955,47957,47958,47959,47961,47962,47963,47964,47965,47966,47967,47968,47970,47972,47973,47974,47975,47976,47977,47978,47979,47981,47982,47983,47984,47985,null,null,null,null,null,null,47986,47987,47988,47989,47990,47991,47992,47993,47994,47995,47996,47997,47998,47999,48000,48001,48002,48003,48004,48005,48006,48007,48009,48010,48011,48013,48014,48015,48017,48018,48019,48020,48021,48022,48023,48024,48025,48026,48027,48028,48029,48030,48031,48032,48033,48034,48035,48037,48038,48039,48041,48042,48043,48045,48046,48047,48048,48049,48050,48051,48053,48054,48056,48057,48058,48059,48060,48061,48062,48063,48065,48066,48067,48069,48070,48071,48073,48074,48075,48076,48077,48078,48079,48081,48082,48084,48085,48086,48087,48088,48089,48090,48091,48092,48093,48094,48095,48096,48097,48098,48099,48100,48101,48102,48103,48104,48105,48106,48107,48108,48109,48110,48111,48112,48113,48114,48115,48116,48117,48118,48119,48122,48123,48125,48126,48129,48131,48132,48133,48134,48135,48138,48142,48144,48146,48147,48153,48154,48160,48161,48162,48163,48166,48168,48170,48171,48172,48174,48175,48178,48179,48181,null,null,null,null,null,null,48182,48183,48185,48186,48187,48188,48189,48190,48191,48194,48198,48199,48200,48202,48203,48206,48207,48209,48210,48211,48212,48213,48214,48215,48216,48217,null,null,null,null,null,null,48218,48219,48220,48222,48223,48224,48225,48226,48227,48228,48229,48230,48231,48232,48233,48234,48235,48236,48237,48238,48239,48240,48241,48242,48243,48244,48245,48246,48247,48248,48249,48250,48251,48252,48253,48254,48255,48256,48257,48258,48259,48262,48263,48265,48266,48269,48271,48272,48273,48274,48275,48278,48280,48283,48284,48285,48286,48287,48290,48291,48293,48294,48297,48298,48299,48300,48301,48302,48303,48306,48310,48311,48312,48313,48314,48315,48318,48319,48321,48322,48323,48325,48326,48327,48328,48329,48330,48331,48332,48334,48338,48339,48340,48342,48343,48345,48346,48347,48349,48350,48351,48352,48353,48354,48355,48356,48357,48358,48359,48360,48361,48362,48363,48364,48365,48366,48367,48368,48369,48370,48371,48375,48377,48378,48379,48381,48382,48383,48384,48385,48386,48387,48390,48392,48394,48395,48396,48397,48398,48399,48401,48402,48403,48405,48406,48407,48408,48409,48410,48411,48412,48413,null,null,null,null,null,null,48414,48415,48416,48417,48418,48419,48421,48422,48423,48424,48425,48426,48427,48429,48430,48431,48432,48433,48434,48435,48436,48437,48438,48439,48440,48441,null,null,null,null,null,null,48442,48443,48444,48445,48446,48447,48449,48450,48451,48452,48453,48454,48455,48458,48459,48461,48462,48463,48465,48466,48467,48468,48469,48470,48471,48474,48475,48476,48477,48478,48479,48480,48481,48482,48483,48485,48486,48487,48489,48490,48491,48492,48493,48494,48495,48496,48497,48498,48499,48500,48501,48502,48503,48504,48505,48506,48507,48508,48509,48510,48511,48514,48515,48517,48518,48523,48524,48525,48526,48527,48530,48532,48534,48535,48536,48539,48541,48542,48543,48544,48545,48546,48547,48549,48550,48551,48552,48553,48554,48555,48556,48557,48558,48559,48561,48562,48563,48564,48565,48566,48567,48569,48570,48571,48572,48573,48574,48575,48576,48577,48578,48579,48580,48581,48582,48583,48584,48585,48586,48587,48588,48589,48590,48591,48592,48593,48594,48595,48598,48599,48601,48602,48603,48605,48606,48607,48608,48609,48610,48611,48612,48613,48614,48615,48616,48618,48619,48620,48621,48622,48623,48625,null,null,null,null,null,null,48626,48627,48629,48630,48631,48633,48634,48635,48636,48637,48638,48639,48641,48642,48644,48646,48647,48648,48649,48650,48651,48654,48655,48657,48658,48659,null,null,null,null,null,null,48661,48662,48663,48664,48665,48666,48667,48670,48672,48673,48674,48675,48676,48677,48678,48679,48680,48681,48682,48683,48684,48685,48686,48687,48688,48689,48690,48691,48692,48693,48694,48695,48696,48697,48698,48699,48700,48701,48702,48703,48704,48705,48706,48707,48710,48711,48713,48714,48715,48717,48719,48720,48721,48722,48723,48726,48728,48732,48733,48734,48735,48738,48739,48741,48742,48743,48745,48747,48748,48749,48750,48751,48754,48758,48759,48760,48761,48762,48766,48767,48769,48770,48771,48773,48774,48775,48776,48777,48778,48779,48782,48786,48787,48788,48789,48790,48791,48794,48795,48796,48797,48798,48799,48800,48801,48802,48803,48804,48805,48806,48807,48809,48810,48811,48812,48813,48814,48815,48816,48817,48818,48819,48820,48821,48822,48823,48824,48825,48826,48827,48828,48829,48830,48831,48832,48833,48834,48835,48836,48837,48838,48839,48840,48841,48842,48843,48844,48845,48846,48847,48850,48851,null,null,null,null,null,null,48853,48854,48857,48858,48859,48860,48861,48862,48863,48865,48866,48870,48871,48872,48873,48874,48875,48877,48878,48879,48880,48881,48882,48883,48884,48885,null,null,null,null,null,null,48886,48887,48888,48889,48890,48891,48892,48893,48894,48895,48896,48898,48899,48900,48901,48902,48903,48906,48907,48908,48909,48910,48911,48912,48913,48914,48915,48916,48917,48918,48919,48922,48926,48927,48928,48929,48930,48931,48932,48933,48934,48935,48936,48937,48938,48939,48940,48941,48942,48943,48944,48945,48946,48947,48948,48949,48950,48951,48952,48953,48954,48955,48956,48957,48958,48959,48962,48963,48965,48966,48967,48969,48970,48971,48972,48973,48974,48975,48978,48979,48980,48982,48983,48984,48985,48986,48987,48988,48989,48990,48991,48992,48993,48994,48995,48996,48997,48998,48999,49000,49001,49002,49003,49004,49005,49006,49007,49008,49009,49010,49011,49012,49013,49014,49015,49016,49017,49018,49019,49020,49021,49022,49023,49024,49025,49026,49027,49028,49029,49030,49031,49032,49033,49034,49035,49036,49037,49038,49039,49040,49041,49042,49043,49045,49046,49047,49048,49049,49050,49051,49052,49053,null,null,null,null,null,null,49054,49055,49056,49057,49058,49059,49060,49061,49062,49063,49064,49065,49066,49067,49068,49069,49070,49071,49073,49074,49075,49076,49077,49078,49079,49080,null,null,null,null,null,null,49081,49082,49083,49084,49085,49086,49087,49088,49089,49090,49091,49092,49094,49095,49096,49097,49098,49099,49102,49103,49105,49106,49107,49109,49110,49111,49112,49113,49114,49115,49117,49118,49120,49122,49123,49124,49125,49126,49127,49128,49129,49130,49131,49132,49133,49134,49135,49136,49137,49138,49139,49140,49141,49142,49143,49144,49145,49146,49147,49148,49149,49150,49151,49152,49153,49154,49155,49156,49157,49158,49159,49160,49161,49162,49163,49164,49165,49166,49167,49168,49169,49170,49171,49172,49173,49174,49175,49176,49177,49178,49179,49180,49181,49182,49183,49184,49185,49186,49187,49188,49189,49190,49191,49192,49193,49194,49195,49196,49197,49198,49199,49200,49201,49202,49203,49204,49205,49206,49207,49208,49209,49210,49211,49213,49214,49215,49216,49217,49218,49219,49220,49221,49222,49223,49224,49225,49226,49227,49228,49229,49230,49231,49232,49234,49235,49236,49237,49238,49239,49241,49242,49243,null,null,null,null,null,null,49245,49246,49247,49249,49250,49251,49252,49253,49254,49255,49258,49259,49260,49261,49262,49263,49264,49265,49266,49267,49268,49269,49270,49271,49272,49273,null,null,null,null,null,null,49274,49275,49276,49277,49278,49279,49280,49281,49282,49283,49284,49285,49286,49287,49288,49289,49290,49291,49292,49293,49294,49295,49298,49299,49301,49302,49303,49305,49306,49307,49308,49309,49310,49311,49314,49316,49318,49319,49320,49321,49322,49323,49326,49329,49330,49335,49336,49337,49338,49339,49342,49346,49347,49348,49350,49351,49354,49355,49357,49358,49359,49361,49362,49363,49364,49365,49366,49367,49370,49374,49375,49376,49377,49378,49379,49382,49383,49385,49386,49387,49389,49390,49391,49392,49393,49394,49395,49398,49400,49402,49403,49404,49405,49406,49407,49409,49410,49411,49413,49414,49415,49417,49418,49419,49420,49421,49422,49423,49425,49426,49427,49428,49430,49431,49432,49433,49434,49435,49441,49442,49445,49448,49449,49450,49451,49454,49458,49459,49460,49461,49463,49466,49467,49469,49470,49471,49473,49474,49475,49476,49477,49478,49479,49482,49486,49487,49488,49489,49490,49491,49494,49495,null,null,null,null,null,null,49497,49498,49499,49501,49502,49503,49504,49505,49506,49507,49510,49514,49515,49516,49517,49518,49519,49521,49522,49523,49525,49526,49527,49529,49530,49531,null,null,null,null,null,null,49532,49533,49534,49535,49536,49537,49538,49539,49540,49542,49543,49544,49545,49546,49547,49551,49553,49554,49555,49557,49559,49560,49561,49562,49563,49566,49568,49570,49571,49572,49574,49575,49578,49579,49581,49582,49583,49585,49586,49587,49588,49589,49590,49591,49592,49593,49594,49595,49596,49598,49599,49600,49601,49602,49603,49605,49606,49607,49609,49610,49611,49613,49614,49615,49616,49617,49618,49619,49621,49622,49625,49626,49627,49628,49629,49630,49631,49633,49634,49635,49637,49638,49639,49641,49642,49643,49644,49645,49646,49647,49650,49652,49653,49654,49655,49656,49657,49658,49659,49662,49663,49665,49666,49667,49669,49670,49671,49672,49673,49674,49675,49678,49680,49682,49683,49684,49685,49686,49687,49690,49691,49693,49694,49697,49698,49699,49700,49701,49702,49703,49706,49708,49710,49712,49715,49717,49718,49719,49720,49721,49722,49723,49724,49725,49726,49727,49728,49729,49730,49731,49732,49733,null,null,null,null,null,null,49734,49735,49737,49738,49739,49740,49741,49742,49743,49746,49747,49749,49750,49751,49753,49754,49755,49756,49757,49758,49759,49761,49762,49763,49764,49766,null,null,null,null,null,null,49767,49768,49769,49770,49771,49774,49775,49777,49778,49779,49781,49782,49783,49784,49785,49786,49787,49790,49792,49794,49795,49796,49797,49798,49799,49802,49803,49804,49805,49806,49807,49809,49810,49811,49812,49813,49814,49815,49817,49818,49820,49822,49823,49824,49825,49826,49827,49830,49831,49833,49834,49835,49838,49839,49840,49841,49842,49843,49846,49848,49850,49851,49852,49853,49854,49855,49856,49857,49858,49859,49860,49861,49862,49863,49864,49865,49866,49867,49868,49869,49870,49871,49872,49873,49874,49875,49876,49877,49878,49879,49880,49881,49882,49883,49886,49887,49889,49890,49893,49894,49895,49896,49897,49898,49902,49904,49906,49907,49908,49909,49911,49914,49917,49918,49919,49921,49922,49923,49924,49925,49926,49927,49930,49931,49934,49935,49936,49937,49938,49942,49943,49945,49946,49947,49949,49950,49951,49952,49953,49954,49955,49958,49959,49962,49963,49964,49965,49966,49967,49968,49969,49970,null,null,null,null,null,null,49971,49972,49973,49974,49975,49976,49977,49978,49979,49980,49981,49982,49983,49984,49985,49986,49987,49988,49990,49991,49992,49993,49994,49995,49996,49997,null,null,null,null,null,null,49998,49999,50000,50001,50002,50003,50004,50005,50006,50007,50008,50009,50010,50011,50012,50013,50014,50015,50016,50017,50018,50019,50020,50021,50022,50023,50026,50027,50029,50030,50031,50033,50035,50036,50037,50038,50039,50042,50043,50046,50047,50048,50049,50050,50051,50053,50054,50055,50057,50058,50059,50061,50062,50063,50064,50065,50066,50067,50068,50069,50070,50071,50072,50073,50074,50075,50076,50077,50078,50079,50080,50081,50082,50083,50084,50085,50086,50087,50088,50089,50090,50091,50092,50093,50094,50095,50096,50097,50098,50099,50100,50101,50102,50103,50104,50105,50106,50107,50108,50109,50110,50111,50113,50114,50115,50116,50117,50118,50119,50120,50121,50122,50123,50124,50125,50126,50127,50128,50129,50130,50131,50132,50133,50134,50135,50138,50139,50141,50142,50145,50147,50148,50149,50150,50151,50154,50155,50156,50158,50159,50160,50161,50162,50163,50166,50167,50169,50170,50171,50172,50173,50174,null,null,null,null,null,null,50175,50176,50177,50178,50179,50180,50181,50182,50183,50185,50186,50187,50188,50189,50190,50191,50193,50194,50195,50196,50197,50198,50199,50200,50201,50202,null,null,null,null,null,null,50203,50204,50205,50206,50207,50208,50209,50210,50211,50213,50214,50215,50216,50217,50218,50219,50221,50222,50223,50225,50226,50227,50229,50230,50231,50232,50233,50234,50235,50238,50239,50240,50241,50242,50243,50244,50245,50246,50247,50249,50250,50251,50252,50253,50254,50255,50256,50257,50258,50259,50260,50261,50262,50263,50264,50265,50266,50267,50268,50269,50270,50271,50272,50273,50274,50275,50278,50279,50281,50282,50283,50285,50286,50287,50288,50289,50290,50291,50294,50295,50296,50298,50299,50300,50301,50302,50303,50305,50306,50307,50308,50309,50310,50311,50312,50313,50314,50315,50316,50317,50318,50319,50320,50321,50322,50323,50325,50326,50327,50328,50329,50330,50331,50333,50334,50335,50336,50337,50338,50339,50340,50341,50342,50343,50344,50345,50346,50347,50348,50349,50350,50351,50352,50353,50354,50355,50356,50357,50358,50359,50361,50362,50363,50365,50366,50367,50368,50369,50370,50371,50372,50373,null,null,null,null,null,null,50374,50375,50376,50377,50378,50379,50380,50381,50382,50383,50384,50385,50386,50387,50388,50389,50390,50391,50392,50393,50394,50395,50396,50397,50398,50399,null,null,null,null,null,null,50400,50401,50402,50403,50404,50405,50406,50407,50408,50410,50411,50412,50413,50414,50415,50418,50419,50421,50422,50423,50425,50427,50428,50429,50430,50434,50435,50436,50437,50438,50439,50440,50441,50442,50443,50445,50446,50447,50449,50450,50451,50453,50454,50455,50456,50457,50458,50459,50461,50462,50463,50464,50465,50466,50467,50468,50469,50470,50471,50474,50475,50477,50478,50479,50481,50482,50483,50484,50485,50486,50487,50490,50492,50494,50495,50496,50497,50498,50499,50502,50503,50507,50511,50512,50513,50514,50518,50522,50523,50524,50527,50530,50531,50533,50534,50535,50537,50538,50539,50540,50541,50542,50543,50546,50550,50551,50552,50553,50554,50555,50558,50559,50561,50562,50563,50565,50566,50568,50569,50570,50571,50574,50576,50578,50579,50580,50582,50585,50586,50587,50589,50590,50591,50593,50594,50595,50596,50597,50598,50599,50600,50602,50603,50604,50605,50606,50607,50608,50609,50610,50611,50614,null,null,null,null,null,null,50615,50618,50623,50624,50625,50626,50627,50635,50637,50639,50642,50643,50645,50646,50647,50649,50650,50651,50652,50653,50654,50655,50658,50660,50662,50663,null,null,null,null,null,null,50664,50665,50666,50667,50671,50673,50674,50675,50677,50680,50681,50682,50683,50690,50691,50692,50697,50698,50699,50701,50702,50703,50705,50706,50707,50708,50709,50710,50711,50714,50717,50718,50719,50720,50721,50722,50723,50726,50727,50729,50730,50731,50735,50737,50738,50742,50744,50746,50748,50749,50750,50751,50754,50755,50757,50758,50759,50761,50762,50763,50764,50765,50766,50767,50770,50774,50775,50776,50777,50778,50779,50782,50783,50785,50786,50787,50788,50789,50790,50791,50792,50793,50794,50795,50797,50798,50800,50802,50803,50804,50805,50806,50807,50810,50811,50813,50814,50815,50817,50818,50819,50820,50821,50822,50823,50826,50828,50830,50831,50832,50833,50834,50835,50838,50839,50841,50842,50843,50845,50846,50847,50848,50849,50850,50851,50854,50856,50858,50859,50860,50861,50862,50863,50866,50867,50869,50870,50871,50875,50876,50877,50878,50879,50882,50884,50886,50887,50888,50889,50890,50891,50894,null,null,null,null,null,null,50895,50897,50898,50899,50901,50902,50903,50904,50905,50906,50907,50910,50911,50914,50915,50916,50917,50918,50919,50922,50923,50925,50926,50927,50929,50930,null,null,null,null,null,null,50931,50932,50933,50934,50935,50938,50939,50940,50942,50943,50944,50945,50946,50947,50950,50951,50953,50954,50955,50957,50958,50959,50960,50961,50962,50963,50966,50968,50970,50971,50972,50973,50974,50975,50978,50979,50981,50982,50983,50985,50986,50987,50988,50989,50990,50991,50994,50996,50998,51000,51001,51002,51003,51006,51007,51009,51010,51011,51013,51014,51015,51016,51017,51019,51022,51024,51033,51034,51035,51037,51038,51039,51041,51042,51043,51044,51045,51046,51047,51049,51050,51052,51053,51054,51055,51056,51057,51058,51059,51062,51063,51065,51066,51067,51071,51072,51073,51074,51078,51083,51084,51085,51087,51090,51091,51093,51097,51099,51100,51101,51102,51103,51106,51111,51112,51113,51114,51115,51118,51119,51121,51122,51123,51125,51126,51127,51128,51129,51130,51131,51134,51138,51139,51140,51141,51142,51143,51146,51147,51149,51151,51153,51154,51155,51156,51157,51158,51159,51161,51162,51163,51164,null,null,null,null,null,null,51166,51167,51168,51169,51170,51171,51173,51174,51175,51177,51178,51179,51181,51182,51183,51184,51185,51186,51187,51188,51189,51190,51191,51192,51193,51194,null,null,null,null,null,null,51195,51196,51197,51198,51199,51202,51203,51205,51206,51207,51209,51211,51212,51213,51214,51215,51218,51220,51223,51224,51225,51226,51227,51230,51231,51233,51234,51235,51237,51238,51239,51240,51241,51242,51243,51246,51248,51250,51251,51252,51253,51254,51255,51257,51258,51259,51261,51262,51263,51265,51266,51267,51268,51269,51270,51271,51274,51275,51278,51279,51280,51281,51282,51283,51285,51286,51287,51288,51289,51290,51291,51292,51293,51294,51295,51296,51297,51298,51299,51300,51301,51302,51303,51304,51305,51306,51307,51308,51309,51310,51311,51314,51315,51317,51318,51319,51321,51323,51324,51325,51326,51327,51330,51332,51336,51337,51338,51342,51343,51344,51345,51346,51347,51349,51350,51351,51352,51353,51354,51355,51356,51358,51360,51362,51363,51364,51365,51366,51367,51369,51370,51371,51372,51373,51374,51375,51376,51377,51378,51379,51380,51381,51382,51383,51384,51385,51386,51387,51390,51391,51392,51393,null,null,null,null,null,null,51394,51395,51397,51398,51399,51401,51402,51403,51405,51406,51407,51408,51409,51410,51411,51414,51416,51418,51419,51420,51421,51422,51423,51426,51427,51429,null,null,null,null,null,null,51430,51431,51432,51433,51434,51435,51436,51437,51438,51439,51440,51441,51442,51443,51444,51446,51447,51448,51449,51450,51451,51454,51455,51457,51458,51459,51463,51464,51465,51466,51467,51470,12288,12289,12290,183,8229,8230,168,12291,173,8213,8741,65340,8764,8216,8217,8220,8221,12308,12309,12296,12297,12298,12299,12300,12301,12302,12303,12304,12305,177,215,247,8800,8804,8805,8734,8756,176,8242,8243,8451,8491,65504,65505,65509,9794,9792,8736,8869,8978,8706,8711,8801,8786,167,8251,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,9650,9661,9660,8594,8592,8593,8595,8596,12307,8810,8811,8730,8765,8733,8757,8747,8748,8712,8715,8838,8839,8834,8835,8746,8745,8743,8744,65506,51472,51474,51475,51476,51477,51478,51479,51481,51482,51483,51484,51485,51486,51487,51488,51489,51490,51491,51492,51493,51494,51495,51496,51497,51498,51499,null,null,null,null,null,null,51501,51502,51503,51504,51505,51506,51507,51509,51510,51511,51512,51513,51514,51515,51516,51517,51518,51519,51520,51521,51522,51523,51524,51525,51526,51527,null,null,null,null,null,null,51528,51529,51530,51531,51532,51533,51534,51535,51538,51539,51541,51542,51543,51545,51546,51547,51548,51549,51550,51551,51554,51556,51557,51558,51559,51560,51561,51562,51563,51565,51566,51567,8658,8660,8704,8707,180,65374,711,728,733,730,729,184,731,161,191,720,8750,8721,8719,164,8457,8240,9665,9664,9655,9654,9828,9824,9825,9829,9831,9827,8857,9672,9635,9680,9681,9618,9636,9637,9640,9639,9638,9641,9832,9743,9742,9756,9758,182,8224,8225,8597,8599,8601,8598,8600,9837,9833,9834,9836,12927,12828,8470,13255,8482,13250,13272,8481,8364,174,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,51569,51570,51571,51573,51574,51575,51576,51577,51578,51579,51581,51582,51583,51584,51585,51586,51587,51588,51589,51590,51591,51594,51595,51597,51598,51599,null,null,null,null,null,null,51601,51602,51603,51604,51605,51606,51607,51610,51612,51614,51615,51616,51617,51618,51619,51620,51621,51622,51623,51624,51625,51626,51627,51628,51629,51630,null,null,null,null,null,null,51631,51632,51633,51634,51635,51636,51637,51638,51639,51640,51641,51642,51643,51644,51645,51646,51647,51650,51651,51653,51654,51657,51659,51660,51661,51662,51663,51666,51668,51671,51672,51675,65281,65282,65283,65284,65285,65286,65287,65288,65289,65290,65291,65292,65293,65294,65295,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,65306,65307,65308,65309,65310,65311,65312,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65339,65510,65341,65342,65343,65344,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,65371,65372,65373,65507,51678,51679,51681,51683,51685,51686,51688,51689,51690,51691,51694,51698,51699,51700,51701,51702,51703,51706,51707,51709,51710,51711,51713,51714,51715,51716,null,null,null,null,null,null,51717,51718,51719,51722,51726,51727,51728,51729,51730,51731,51733,51734,51735,51737,51738,51739,51740,51741,51742,51743,51744,51745,51746,51747,51748,51749,null,null,null,null,null,null,51750,51751,51752,51754,51755,51756,51757,51758,51759,51760,51761,51762,51763,51764,51765,51766,51767,51768,51769,51770,51771,51772,51773,51774,51775,51776,51777,51778,51779,51780,51781,51782,12593,12594,12595,12596,12597,12598,12599,12600,12601,12602,12603,12604,12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667,12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,12681,12682,12683,12684,12685,12686,51783,51784,51785,51786,51787,51790,51791,51793,51794,51795,51797,51798,51799,51800,51801,51802,51803,51806,51810,51811,51812,51813,51814,51815,51817,51818,null,null,null,null,null,null,51819,51820,51821,51822,51823,51824,51825,51826,51827,51828,51829,51830,51831,51832,51833,51834,51835,51836,51838,51839,51840,51841,51842,51843,51845,51846,null,null,null,null,null,null,51847,51848,51849,51850,51851,51852,51853,51854,51855,51856,51857,51858,51859,51860,51861,51862,51863,51865,51866,51867,51868,51869,51870,51871,51872,51873,51874,51875,51876,51877,51878,51879,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,null,null,null,null,null,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,null,null,null,null,null,null,null,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,null,null,null,null,null,null,null,null,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,null,null,null,null,null,null,51880,51881,51882,51883,51884,51885,51886,51887,51888,51889,51890,51891,51892,51893,51894,51895,51896,51897,51898,51899,51902,51903,51905,51906,51907,51909,null,null,null,null,null,null,51910,51911,51912,51913,51914,51915,51918,51920,51922,51924,51925,51926,51927,51930,51931,51932,51933,51934,51935,51937,51938,51939,51940,51941,51942,51943,null,null,null,null,null,null,51944,51945,51946,51947,51949,51950,51951,51952,51953,51954,51955,51957,51958,51959,51960,51961,51962,51963,51964,51965,51966,51967,51968,51969,51970,51971,51972,51973,51974,51975,51977,51978,9472,9474,9484,9488,9496,9492,9500,9516,9508,9524,9532,9473,9475,9487,9491,9499,9495,9507,9523,9515,9531,9547,9504,9519,9512,9527,9535,9501,9520,9509,9528,9538,9490,9489,9498,9497,9494,9493,9486,9485,9502,9503,9505,9506,9510,9511,9513,9514,9517,9518,9521,9522,9525,9526,9529,9530,9533,9534,9536,9537,9539,9540,9541,9542,9543,9544,9545,9546,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,51979,51980,51981,51982,51983,51985,51986,51987,51989,51990,51991,51993,51994,51995,51996,51997,51998,51999,52002,52003,52004,52005,52006,52007,52008,52009,null,null,null,null,null,null,52010,52011,52012,52013,52014,52015,52016,52017,52018,52019,52020,52021,52022,52023,52024,52025,52026,52027,52028,52029,52030,52031,52032,52034,52035,52036,null,null,null,null,null,null,52037,52038,52039,52042,52043,52045,52046,52047,52049,52050,52051,52052,52053,52054,52055,52058,52059,52060,52062,52063,52064,52065,52066,52067,52069,52070,52071,52072,52073,52074,52075,52076,13205,13206,13207,8467,13208,13252,13219,13220,13221,13222,13209,13210,13211,13212,13213,13214,13215,13216,13217,13218,13258,13197,13198,13199,13263,13192,13193,13256,13223,13224,13232,13233,13234,13235,13236,13237,13238,13239,13240,13241,13184,13185,13186,13187,13188,13242,13243,13244,13245,13246,13247,13200,13201,13202,13203,13204,8486,13248,13249,13194,13195,13196,13270,13253,13229,13230,13231,13275,13225,13226,13227,13228,13277,13264,13267,13251,13257,13276,13254,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,52077,52078,52079,52080,52081,52082,52083,52084,52085,52086,52087,52090,52091,52092,52093,52094,52095,52096,52097,52098,52099,52100,52101,52102,52103,52104,null,null,null,null,null,null,52105,52106,52107,52108,52109,52110,52111,52112,52113,52114,52115,52116,52117,52118,52119,52120,52121,52122,52123,52125,52126,52127,52128,52129,52130,52131,null,null,null,null,null,null,52132,52133,52134,52135,52136,52137,52138,52139,52140,52141,52142,52143,52144,52145,52146,52147,52148,52149,52150,52151,52153,52154,52155,52156,52157,52158,52159,52160,52161,52162,52163,52164,198,208,170,294,null,306,null,319,321,216,338,186,222,358,330,null,12896,12897,12898,12899,12900,12901,12902,12903,12904,12905,12906,12907,12908,12909,12910,12911,12912,12913,12914,12915,12916,12917,12918,12919,12920,12921,12922,12923,9424,9425,9426,9427,9428,9429,9430,9431,9432,9433,9434,9435,9436,9437,9438,9439,9440,9441,9442,9443,9444,9445,9446,9447,9448,9449,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9322,9323,9324,9325,9326,189,8531,8532,188,190,8539,8540,8541,8542,52165,52166,52167,52168,52169,52170,52171,52172,52173,52174,52175,52176,52177,52178,52179,52181,52182,52183,52184,52185,52186,52187,52188,52189,52190,52191,null,null,null,null,null,null,52192,52193,52194,52195,52197,52198,52200,52202,52203,52204,52205,52206,52207,52208,52209,52210,52211,52212,52213,52214,52215,52216,52217,52218,52219,52220,null,null,null,null,null,null,52221,52222,52223,52224,52225,52226,52227,52228,52229,52230,52231,52232,52233,52234,52235,52238,52239,52241,52242,52243,52245,52246,52247,52248,52249,52250,52251,52254,52255,52256,52259,52260,230,273,240,295,305,307,312,320,322,248,339,223,254,359,331,329,12800,12801,12802,12803,12804,12805,12806,12807,12808,12809,12810,12811,12812,12813,12814,12815,12816,12817,12818,12819,12820,12821,12822,12823,12824,12825,12826,12827,9372,9373,9374,9375,9376,9377,9378,9379,9380,9381,9382,9383,9384,9385,9386,9387,9388,9389,9390,9391,9392,9393,9394,9395,9396,9397,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345,9346,185,178,179,8308,8319,8321,8322,8323,8324,52261,52262,52266,52267,52269,52271,52273,52274,52275,52276,52277,52278,52279,52282,52287,52288,52289,52290,52291,52294,52295,52297,52298,52299,52301,52302,null,null,null,null,null,null,52303,52304,52305,52306,52307,52310,52314,52315,52316,52317,52318,52319,52321,52322,52323,52325,52327,52329,52330,52331,52332,52333,52334,52335,52337,52338,null,null,null,null,null,null,52339,52340,52342,52343,52344,52345,52346,52347,52348,52349,52350,52351,52352,52353,52354,52355,52356,52357,52358,52359,52360,52361,52362,52363,52364,52365,52366,52367,52368,52369,52370,52371,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,null,null,null,null,null,null,null,null,null,null,null,52372,52373,52374,52375,52378,52379,52381,52382,52383,52385,52386,52387,52388,52389,52390,52391,52394,52398,52399,52400,52401,52402,52403,52406,52407,52409,null,null,null,null,null,null,52410,52411,52413,52414,52415,52416,52417,52418,52419,52422,52424,52426,52427,52428,52429,52430,52431,52433,52434,52435,52437,52438,52439,52440,52441,52442,null,null,null,null,null,null,52443,52444,52445,52446,52447,52448,52449,52450,52451,52453,52454,52455,52456,52457,52458,52459,52461,52462,52463,52465,52466,52467,52468,52469,52470,52471,52472,52473,52474,52475,52476,52477,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,null,null,null,null,null,null,null,null,52478,52479,52480,52482,52483,52484,52485,52486,52487,52490,52491,52493,52494,52495,52497,52498,52499,52500,52501,52502,52503,52506,52508,52510,52511,52512,null,null,null,null,null,null,52513,52514,52515,52517,52518,52519,52521,52522,52523,52525,52526,52527,52528,52529,52530,52531,52532,52533,52534,52535,52536,52538,52539,52540,52541,52542,null,null,null,null,null,null,52543,52544,52545,52546,52547,52548,52549,52550,52551,52552,52553,52554,52555,52556,52557,52558,52559,52560,52561,52562,52563,52564,52565,52566,52567,52568,52569,52570,52571,52573,52574,52575,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,null,null,null,null,null,null,null,null,null,null,null,null,null,52577,52578,52579,52581,52582,52583,52584,52585,52586,52587,52590,52592,52594,52595,52596,52597,52598,52599,52601,52602,52603,52604,52605,52606,52607,52608,null,null,null,null,null,null,52609,52610,52611,52612,52613,52614,52615,52617,52618,52619,52620,52621,52622,52623,52624,52625,52626,52627,52630,52631,52633,52634,52635,52637,52638,52639,null,null,null,null,null,null,52640,52641,52642,52643,52646,52648,52650,52651,52652,52653,52654,52655,52657,52658,52659,52660,52661,52662,52663,52664,52665,52666,52667,52668,52669,52670,52671,52672,52673,52674,52675,52677,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,52678,52679,52680,52681,52682,52683,52685,52686,52687,52689,52690,52691,52692,52693,52694,52695,52696,52697,52698,52699,52700,52701,52702,52703,52704,52705,null,null,null,null,null,null,52706,52707,52708,52709,52710,52711,52713,52714,52715,52717,52718,52719,52721,52722,52723,52724,52725,52726,52727,52730,52732,52734,52735,52736,52737,52738,null,null,null,null,null,null,52739,52741,52742,52743,52745,52746,52747,52749,52750,52751,52752,52753,52754,52755,52757,52758,52759,52760,52762,52763,52764,52765,52766,52767,52770,52771,52773,52774,52775,52777,52778,52779,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,52780,52781,52782,52783,52786,52788,52790,52791,52792,52793,52794,52795,52796,52797,52798,52799,52800,52801,52802,52803,52804,52805,52806,52807,52808,52809,null,null,null,null,null,null,52810,52811,52812,52813,52814,52815,52816,52817,52818,52819,52820,52821,52822,52823,52826,52827,52829,52830,52834,52835,52836,52837,52838,52839,52842,52844,null,null,null,null,null,null,52846,52847,52848,52849,52850,52851,52854,52855,52857,52858,52859,52861,52862,52863,52864,52865,52866,52867,52870,52872,52874,52875,52876,52877,52878,52879,52882,52883,52885,52886,52887,52889,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,52890,52891,52892,52893,52894,52895,52898,52902,52903,52904,52905,52906,52907,52910,52911,52912,52913,52914,52915,52916,52917,52918,52919,52920,52921,52922,null,null,null,null,null,null,52923,52924,52925,52926,52927,52928,52930,52931,52932,52933,52934,52935,52936,52937,52938,52939,52940,52941,52942,52943,52944,52945,52946,52947,52948,52949,null,null,null,null,null,null,52950,52951,52952,52953,52954,52955,52956,52957,52958,52959,52960,52961,52962,52963,52966,52967,52969,52970,52973,52974,52975,52976,52977,52978,52979,52982,52986,52987,52988,52989,52990,52991,44032,44033,44036,44039,44040,44041,44042,44048,44049,44050,44051,44052,44053,44054,44055,44057,44058,44059,44060,44061,44064,44068,44076,44077,44079,44080,44081,44088,44089,44092,44096,44107,44109,44116,44120,44124,44144,44145,44148,44151,44152,44154,44160,44161,44163,44164,44165,44166,44169,44170,44171,44172,44176,44180,44188,44189,44191,44192,44193,44200,44201,44202,44204,44207,44208,44216,44217,44219,44220,44221,44225,44228,44232,44236,44245,44247,44256,44257,44260,44263,44264,44266,44268,44271,44272,44273,44275,44277,44278,44284,44285,44288,44292,44294,52994,52995,52997,52998,52999,53001,53002,53003,53004,53005,53006,53007,53010,53012,53014,53015,53016,53017,53018,53019,53021,53022,53023,53025,53026,53027,null,null,null,null,null,null,53029,53030,53031,53032,53033,53034,53035,53038,53042,53043,53044,53045,53046,53047,53049,53050,53051,53052,53053,53054,53055,53056,53057,53058,53059,53060,null,null,null,null,null,null,53061,53062,53063,53064,53065,53066,53067,53068,53069,53070,53071,53072,53073,53074,53075,53078,53079,53081,53082,53083,53085,53086,53087,53088,53089,53090,53091,53094,53096,53098,53099,53100,44300,44301,44303,44305,44312,44316,44320,44329,44332,44333,44340,44341,44344,44348,44356,44357,44359,44361,44368,44372,44376,44385,44387,44396,44397,44400,44403,44404,44405,44406,44411,44412,44413,44415,44417,44418,44424,44425,44428,44432,44444,44445,44452,44471,44480,44481,44484,44488,44496,44497,44499,44508,44512,44516,44536,44537,44540,44543,44544,44545,44552,44553,44555,44557,44564,44592,44593,44596,44599,44600,44602,44608,44609,44611,44613,44614,44618,44620,44621,44622,44624,44628,44630,44636,44637,44639,44640,44641,44645,44648,44649,44652,44656,44664,53101,53102,53103,53106,53107,53109,53110,53111,53113,53114,53115,53116,53117,53118,53119,53121,53122,53123,53124,53126,53127,53128,53129,53130,53131,53133,null,null,null,null,null,null,53134,53135,53136,53137,53138,53139,53140,53141,53142,53143,53144,53145,53146,53147,53148,53149,53150,53151,53152,53154,53155,53156,53157,53158,53159,53161,null,null,null,null,null,null,53162,53163,53164,53165,53166,53167,53169,53170,53171,53172,53173,53174,53175,53176,53177,53178,53179,53180,53181,53182,53183,53184,53185,53186,53187,53189,53190,53191,53192,53193,53194,53195,44665,44667,44668,44669,44676,44677,44684,44732,44733,44734,44736,44740,44748,44749,44751,44752,44753,44760,44761,44764,44776,44779,44781,44788,44792,44796,44807,44808,44813,44816,44844,44845,44848,44850,44852,44860,44861,44863,44865,44866,44867,44872,44873,44880,44892,44893,44900,44901,44921,44928,44932,44936,44944,44945,44949,44956,44984,44985,44988,44992,44999,45000,45001,45003,45005,45006,45012,45020,45032,45033,45040,45041,45044,45048,45056,45057,45060,45068,45072,45076,45084,45085,45096,45124,45125,45128,45130,45132,45134,45139,45140,45141,45143,45145,53196,53197,53198,53199,53200,53201,53202,53203,53204,53205,53206,53207,53208,53209,53210,53211,53212,53213,53214,53215,53218,53219,53221,53222,53223,53225,null,null,null,null,null,null,53226,53227,53228,53229,53230,53231,53234,53236,53238,53239,53240,53241,53242,53243,53245,53246,53247,53249,53250,53251,53253,53254,53255,53256,53257,53258,null,null,null,null,null,null,53259,53260,53261,53262,53263,53264,53266,53267,53268,53269,53270,53271,53273,53274,53275,53276,53277,53278,53279,53280,53281,53282,53283,53284,53285,53286,53287,53288,53289,53290,53291,53292,45149,45180,45181,45184,45188,45196,45197,45199,45201,45208,45209,45210,45212,45215,45216,45217,45218,45224,45225,45227,45228,45229,45230,45231,45233,45235,45236,45237,45240,45244,45252,45253,45255,45256,45257,45264,45265,45268,45272,45280,45285,45320,45321,45323,45324,45328,45330,45331,45336,45337,45339,45340,45341,45347,45348,45349,45352,45356,45364,45365,45367,45368,45369,45376,45377,45380,45384,45392,45393,45396,45397,45400,45404,45408,45432,45433,45436,45440,45442,45448,45449,45451,45453,45458,45459,45460,45464,45468,45480,45516,45520,45524,45532,45533,53294,53295,53296,53297,53298,53299,53302,53303,53305,53306,53307,53309,53310,53311,53312,53313,53314,53315,53318,53320,53322,53323,53324,53325,53326,53327,null,null,null,null,null,null,53329,53330,53331,53333,53334,53335,53337,53338,53339,53340,53341,53342,53343,53345,53346,53347,53348,53349,53350,53351,53352,53353,53354,53355,53358,53359,null,null,null,null,null,null,53361,53362,53363,53365,53366,53367,53368,53369,53370,53371,53374,53375,53376,53378,53379,53380,53381,53382,53383,53384,53385,53386,53387,53388,53389,53390,53391,53392,53393,53394,53395,53396,45535,45544,45545,45548,45552,45561,45563,45565,45572,45573,45576,45579,45580,45588,45589,45591,45593,45600,45620,45628,45656,45660,45664,45672,45673,45684,45685,45692,45700,45701,45705,45712,45713,45716,45720,45721,45722,45728,45729,45731,45733,45734,45738,45740,45744,45748,45768,45769,45772,45776,45778,45784,45785,45787,45789,45794,45796,45797,45798,45800,45803,45804,45805,45806,45807,45811,45812,45813,45815,45816,45817,45818,45819,45823,45824,45825,45828,45832,45840,45841,45843,45844,45845,45852,45908,45909,45910,45912,45915,45916,45918,45919,45924,45925,53397,53398,53399,53400,53401,53402,53403,53404,53405,53406,53407,53408,53409,53410,53411,53414,53415,53417,53418,53419,53421,53422,53423,53424,53425,53426,null,null,null,null,null,null,53427,53430,53432,53434,53435,53436,53437,53438,53439,53442,53443,53445,53446,53447,53450,53451,53452,53453,53454,53455,53458,53462,53463,53464,53465,53466,null,null,null,null,null,null,53467,53470,53471,53473,53474,53475,53477,53478,53479,53480,53481,53482,53483,53486,53490,53491,53492,53493,53494,53495,53497,53498,53499,53500,53501,53502,53503,53504,53505,53506,53507,53508,45927,45929,45931,45934,45936,45937,45940,45944,45952,45953,45955,45956,45957,45964,45968,45972,45984,45985,45992,45996,46020,46021,46024,46027,46028,46030,46032,46036,46037,46039,46041,46043,46045,46048,46052,46056,46076,46096,46104,46108,46112,46120,46121,46123,46132,46160,46161,46164,46168,46176,46177,46179,46181,46188,46208,46216,46237,46244,46248,46252,46261,46263,46265,46272,46276,46280,46288,46293,46300,46301,46304,46307,46308,46310,46316,46317,46319,46321,46328,46356,46357,46360,46363,46364,46372,46373,46375,46376,46377,46378,46384,46385,46388,46392,53509,53510,53511,53512,53513,53514,53515,53516,53518,53519,53520,53521,53522,53523,53524,53525,53526,53527,53528,53529,53530,53531,53532,53533,53534,53535,null,null,null,null,null,null,53536,53537,53538,53539,53540,53541,53542,53543,53544,53545,53546,53547,53548,53549,53550,53551,53554,53555,53557,53558,53559,53561,53563,53564,53565,53566,null,null,null,null,null,null,53567,53570,53574,53575,53576,53577,53578,53579,53582,53583,53585,53586,53587,53589,53590,53591,53592,53593,53594,53595,53598,53600,53602,53603,53604,53605,53606,53607,53609,53610,53611,53613,46400,46401,46403,46404,46405,46411,46412,46413,46416,46420,46428,46429,46431,46432,46433,46496,46497,46500,46504,46506,46507,46512,46513,46515,46516,46517,46523,46524,46525,46528,46532,46540,46541,46543,46544,46545,46552,46572,46608,46609,46612,46616,46629,46636,46644,46664,46692,46696,46748,46749,46752,46756,46763,46764,46769,46804,46832,46836,46840,46848,46849,46853,46888,46889,46892,46895,46896,46904,46905,46907,46916,46920,46924,46932,46933,46944,46948,46952,46960,46961,46963,46965,46972,46973,46976,46980,46988,46989,46991,46992,46993,46994,46998,46999,53614,53615,53616,53617,53618,53619,53620,53621,53622,53623,53624,53625,53626,53627,53629,53630,53631,53632,53633,53634,53635,53637,53638,53639,53641,53642,null,null,null,null,null,null,53643,53644,53645,53646,53647,53648,53649,53650,53651,53652,53653,53654,53655,53656,53657,53658,53659,53660,53661,53662,53663,53666,53667,53669,53670,53671,null,null,null,null,null,null,53673,53674,53675,53676,53677,53678,53679,53682,53684,53686,53687,53688,53689,53691,53693,53694,53695,53697,53698,53699,53700,53701,53702,53703,53704,53705,53706,53707,53708,53709,53710,53711,47000,47001,47004,47008,47016,47017,47019,47020,47021,47028,47029,47032,47047,47049,47084,47085,47088,47092,47100,47101,47103,47104,47105,47111,47112,47113,47116,47120,47128,47129,47131,47133,47140,47141,47144,47148,47156,47157,47159,47160,47161,47168,47172,47185,47187,47196,47197,47200,47204,47212,47213,47215,47217,47224,47228,47245,47272,47280,47284,47288,47296,47297,47299,47301,47308,47312,47316,47325,47327,47329,47336,47337,47340,47344,47352,47353,47355,47357,47364,47384,47392,47420,47421,47424,47428,47436,47439,47441,47448,47449,47452,47456,47464,47465,53712,53713,53714,53715,53716,53717,53718,53719,53721,53722,53723,53724,53725,53726,53727,53728,53729,53730,53731,53732,53733,53734,53735,53736,53737,53738,null,null,null,null,null,null,53739,53740,53741,53742,53743,53744,53745,53746,53747,53749,53750,53751,53753,53754,53755,53756,53757,53758,53759,53760,53761,53762,53763,53764,53765,53766,null,null,null,null,null,null,53768,53770,53771,53772,53773,53774,53775,53777,53778,53779,53780,53781,53782,53783,53784,53785,53786,53787,53788,53789,53790,53791,53792,53793,53794,53795,53796,53797,53798,53799,53800,53801,47467,47469,47476,47477,47480,47484,47492,47493,47495,47497,47498,47501,47502,47532,47533,47536,47540,47548,47549,47551,47553,47560,47561,47564,47566,47567,47568,47569,47570,47576,47577,47579,47581,47582,47585,47587,47588,47589,47592,47596,47604,47605,47607,47608,47609,47610,47616,47617,47624,47637,47672,47673,47676,47680,47682,47688,47689,47691,47693,47694,47699,47700,47701,47704,47708,47716,47717,47719,47720,47721,47728,47729,47732,47736,47747,47748,47749,47751,47756,47784,47785,47787,47788,47792,47794,47800,47801,47803,47805,47812,47816,47832,47833,47868,53802,53803,53806,53807,53809,53810,53811,53813,53814,53815,53816,53817,53818,53819,53822,53824,53826,53827,53828,53829,53830,53831,53833,53834,53835,53836,null,null,null,null,null,null,53837,53838,53839,53840,53841,53842,53843,53844,53845,53846,53847,53848,53849,53850,53851,53853,53854,53855,53856,53857,53858,53859,53861,53862,53863,53864,null,null,null,null,null,null,53865,53866,53867,53868,53869,53870,53871,53872,53873,53874,53875,53876,53877,53878,53879,53880,53881,53882,53883,53884,53885,53886,53887,53890,53891,53893,53894,53895,53897,53898,53899,53900,47872,47876,47885,47887,47889,47896,47900,47904,47913,47915,47924,47925,47926,47928,47931,47932,47933,47934,47940,47941,47943,47945,47949,47951,47952,47956,47960,47969,47971,47980,48008,48012,48016,48036,48040,48044,48052,48055,48064,48068,48072,48080,48083,48120,48121,48124,48127,48128,48130,48136,48137,48139,48140,48141,48143,48145,48148,48149,48150,48151,48152,48155,48156,48157,48158,48159,48164,48165,48167,48169,48173,48176,48177,48180,48184,48192,48193,48195,48196,48197,48201,48204,48205,48208,48221,48260,48261,48264,48267,48268,48270,48276,48277,48279,53901,53902,53903,53906,53907,53908,53910,53911,53912,53913,53914,53915,53917,53918,53919,53921,53922,53923,53925,53926,53927,53928,53929,53930,53931,53933,null,null,null,null,null,null,53934,53935,53936,53938,53939,53940,53941,53942,53943,53946,53947,53949,53950,53953,53955,53956,53957,53958,53959,53962,53964,53965,53966,53967,53968,53969,null,null,null,null,null,null,53970,53971,53973,53974,53975,53977,53978,53979,53981,53982,53983,53984,53985,53986,53987,53990,53991,53992,53993,53994,53995,53996,53997,53998,53999,54002,54003,54005,54006,54007,54009,54010,48281,48282,48288,48289,48292,48295,48296,48304,48305,48307,48308,48309,48316,48317,48320,48324,48333,48335,48336,48337,48341,48344,48348,48372,48373,48374,48376,48380,48388,48389,48391,48393,48400,48404,48420,48428,48448,48456,48457,48460,48464,48472,48473,48484,48488,48512,48513,48516,48519,48520,48521,48522,48528,48529,48531,48533,48537,48538,48540,48548,48560,48568,48596,48597,48600,48604,48617,48624,48628,48632,48640,48643,48645,48652,48653,48656,48660,48668,48669,48671,48708,48709,48712,48716,48718,48724,48725,48727,48729,48730,48731,48736,48737,48740,54011,54012,54013,54014,54015,54018,54020,54022,54023,54024,54025,54026,54027,54031,54033,54034,54035,54037,54039,54040,54041,54042,54043,54046,54050,54051,null,null,null,null,null,null,54052,54054,54055,54058,54059,54061,54062,54063,54065,54066,54067,54068,54069,54070,54071,54074,54078,54079,54080,54081,54082,54083,54086,54087,54088,54089,null,null,null,null,null,null,54090,54091,54092,54093,54094,54095,54096,54097,54098,54099,54100,54101,54102,54103,54104,54105,54106,54107,54108,54109,54110,54111,54112,54113,54114,54115,54116,54117,54118,54119,54120,54121,48744,48746,48752,48753,48755,48756,48757,48763,48764,48765,48768,48772,48780,48781,48783,48784,48785,48792,48793,48808,48848,48849,48852,48855,48856,48864,48867,48868,48869,48876,48897,48904,48905,48920,48921,48923,48924,48925,48960,48961,48964,48968,48976,48977,48981,49044,49072,49093,49100,49101,49104,49108,49116,49119,49121,49212,49233,49240,49244,49248,49256,49257,49296,49297,49300,49304,49312,49313,49315,49317,49324,49325,49327,49328,49331,49332,49333,49334,49340,49341,49343,49344,49345,49349,49352,49353,49356,49360,49368,49369,49371,49372,49373,49380,54122,54123,54124,54125,54126,54127,54128,54129,54130,54131,54132,54133,54134,54135,54136,54137,54138,54139,54142,54143,54145,54146,54147,54149,54150,54151,null,null,null,null,null,null,54152,54153,54154,54155,54158,54162,54163,54164,54165,54166,54167,54170,54171,54173,54174,54175,54177,54178,54179,54180,54181,54182,54183,54186,54188,54190,null,null,null,null,null,null,54191,54192,54193,54194,54195,54197,54198,54199,54201,54202,54203,54205,54206,54207,54208,54209,54210,54211,54214,54215,54218,54219,54220,54221,54222,54223,54225,54226,54227,54228,54229,54230,49381,49384,49388,49396,49397,49399,49401,49408,49412,49416,49424,49429,49436,49437,49438,49439,49440,49443,49444,49446,49447,49452,49453,49455,49456,49457,49462,49464,49465,49468,49472,49480,49481,49483,49484,49485,49492,49493,49496,49500,49508,49509,49511,49512,49513,49520,49524,49528,49541,49548,49549,49550,49552,49556,49558,49564,49565,49567,49569,49573,49576,49577,49580,49584,49597,49604,49608,49612,49620,49623,49624,49632,49636,49640,49648,49649,49651,49660,49661,49664,49668,49676,49677,49679,49681,49688,49689,49692,49695,49696,49704,49705,49707,49709,54231,54233,54234,54235,54236,54237,54238,54239,54240,54242,54244,54245,54246,54247,54248,54249,54250,54251,54254,54255,54257,54258,54259,54261,54262,54263,null,null,null,null,null,null,54264,54265,54266,54267,54270,54272,54274,54275,54276,54277,54278,54279,54281,54282,54283,54284,54285,54286,54287,54288,54289,54290,54291,54292,54293,54294,null,null,null,null,null,null,54295,54296,54297,54298,54299,54300,54302,54303,54304,54305,54306,54307,54308,54309,54310,54311,54312,54313,54314,54315,54316,54317,54318,54319,54320,54321,54322,54323,54324,54325,54326,54327,49711,49713,49714,49716,49736,49744,49745,49748,49752,49760,49765,49772,49773,49776,49780,49788,49789,49791,49793,49800,49801,49808,49816,49819,49821,49828,49829,49832,49836,49837,49844,49845,49847,49849,49884,49885,49888,49891,49892,49899,49900,49901,49903,49905,49910,49912,49913,49915,49916,49920,49928,49929,49932,49933,49939,49940,49941,49944,49948,49956,49957,49960,49961,49989,50024,50025,50028,50032,50034,50040,50041,50044,50045,50052,50056,50060,50112,50136,50137,50140,50143,50144,50146,50152,50153,50157,50164,50165,50168,50184,50192,50212,50220,50224,54328,54329,54330,54331,54332,54333,54334,54335,54337,54338,54339,54341,54342,54343,54344,54345,54346,54347,54348,54349,54350,54351,54352,54353,54354,54355,null,null,null,null,null,null,54356,54357,54358,54359,54360,54361,54362,54363,54365,54366,54367,54369,54370,54371,54373,54374,54375,54376,54377,54378,54379,54380,54382,54384,54385,54386,null,null,null,null,null,null,54387,54388,54389,54390,54391,54394,54395,54397,54398,54401,54403,54404,54405,54406,54407,54410,54412,54414,54415,54416,54417,54418,54419,54421,54422,54423,54424,54425,54426,54427,54428,54429,50228,50236,50237,50248,50276,50277,50280,50284,50292,50293,50297,50304,50324,50332,50360,50364,50409,50416,50417,50420,50424,50426,50431,50432,50433,50444,50448,50452,50460,50472,50473,50476,50480,50488,50489,50491,50493,50500,50501,50504,50505,50506,50508,50509,50510,50515,50516,50517,50519,50520,50521,50525,50526,50528,50529,50532,50536,50544,50545,50547,50548,50549,50556,50557,50560,50564,50567,50572,50573,50575,50577,50581,50583,50584,50588,50592,50601,50612,50613,50616,50617,50619,50620,50621,50622,50628,50629,50630,50631,50632,50633,50634,50636,50638,54430,54431,54432,54433,54434,54435,54436,54437,54438,54439,54440,54442,54443,54444,54445,54446,54447,54448,54449,54450,54451,54452,54453,54454,54455,54456,null,null,null,null,null,null,54457,54458,54459,54460,54461,54462,54463,54464,54465,54466,54467,54468,54469,54470,54471,54472,54473,54474,54475,54477,54478,54479,54481,54482,54483,54485,null,null,null,null,null,null,54486,54487,54488,54489,54490,54491,54493,54494,54496,54497,54498,54499,54500,54501,54502,54503,54505,54506,54507,54509,54510,54511,54513,54514,54515,54516,54517,54518,54519,54521,54522,54524,50640,50641,50644,50648,50656,50657,50659,50661,50668,50669,50670,50672,50676,50678,50679,50684,50685,50686,50687,50688,50689,50693,50694,50695,50696,50700,50704,50712,50713,50715,50716,50724,50725,50728,50732,50733,50734,50736,50739,50740,50741,50743,50745,50747,50752,50753,50756,50760,50768,50769,50771,50772,50773,50780,50781,50784,50796,50799,50801,50808,50809,50812,50816,50824,50825,50827,50829,50836,50837,50840,50844,50852,50853,50855,50857,50864,50865,50868,50872,50873,50874,50880,50881,50883,50885,50892,50893,50896,50900,50908,50909,50912,50913,50920,54526,54527,54528,54529,54530,54531,54533,54534,54535,54537,54538,54539,54541,54542,54543,54544,54545,54546,54547,54550,54552,54553,54554,54555,54556,54557,null,null,null,null,null,null,54558,54559,54560,54561,54562,54563,54564,54565,54566,54567,54568,54569,54570,54571,54572,54573,54574,54575,54576,54577,54578,54579,54580,54581,54582,54583,null,null,null,null,null,null,54584,54585,54586,54587,54590,54591,54593,54594,54595,54597,54598,54599,54600,54601,54602,54603,54606,54608,54610,54611,54612,54613,54614,54615,54618,54619,54621,54622,54623,54625,54626,54627,50921,50924,50928,50936,50937,50941,50948,50949,50952,50956,50964,50965,50967,50969,50976,50977,50980,50984,50992,50993,50995,50997,50999,51004,51005,51008,51012,51018,51020,51021,51023,51025,51026,51027,51028,51029,51030,51031,51032,51036,51040,51048,51051,51060,51061,51064,51068,51069,51070,51075,51076,51077,51079,51080,51081,51082,51086,51088,51089,51092,51094,51095,51096,51098,51104,51105,51107,51108,51109,51110,51116,51117,51120,51124,51132,51133,51135,51136,51137,51144,51145,51148,51150,51152,51160,51165,51172,51176,51180,51200,51201,51204,51208,51210,54628,54630,54631,54634,54636,54638,54639,54640,54641,54642,54643,54646,54647,54649,54650,54651,54653,54654,54655,54656,54657,54658,54659,54662,54666,54667,null,null,null,null,null,null,54668,54669,54670,54671,54673,54674,54675,54676,54677,54678,54679,54680,54681,54682,54683,54684,54685,54686,54687,54688,54689,54690,54691,54692,54694,54695,null,null,null,null,null,null,54696,54697,54698,54699,54700,54701,54702,54703,54704,54705,54706,54707,54708,54709,54710,54711,54712,54713,54714,54715,54716,54717,54718,54719,54720,54721,54722,54723,54724,54725,54726,54727,51216,51217,51219,51221,51222,51228,51229,51232,51236,51244,51245,51247,51249,51256,51260,51264,51272,51273,51276,51277,51284,51312,51313,51316,51320,51322,51328,51329,51331,51333,51334,51335,51339,51340,51341,51348,51357,51359,51361,51368,51388,51389,51396,51400,51404,51412,51413,51415,51417,51424,51425,51428,51445,51452,51453,51456,51460,51461,51462,51468,51469,51471,51473,51480,51500,51508,51536,51537,51540,51544,51552,51553,51555,51564,51568,51572,51580,51592,51593,51596,51600,51608,51609,51611,51613,51648,51649,51652,51655,51656,51658,51664,51665,51667,54730,54731,54733,54734,54735,54737,54739,54740,54741,54742,54743,54746,54748,54750,54751,54752,54753,54754,54755,54758,54759,54761,54762,54763,54765,54766,null,null,null,null,null,null,54767,54768,54769,54770,54771,54774,54776,54778,54779,54780,54781,54782,54783,54786,54787,54789,54790,54791,54793,54794,54795,54796,54797,54798,54799,54802,null,null,null,null,null,null,54806,54807,54808,54809,54810,54811,54813,54814,54815,54817,54818,54819,54821,54822,54823,54824,54825,54826,54827,54828,54830,54831,54832,54833,54834,54835,54836,54837,54838,54839,54842,54843,51669,51670,51673,51674,51676,51677,51680,51682,51684,51687,51692,51693,51695,51696,51697,51704,51705,51708,51712,51720,51721,51723,51724,51725,51732,51736,51753,51788,51789,51792,51796,51804,51805,51807,51808,51809,51816,51837,51844,51864,51900,51901,51904,51908,51916,51917,51919,51921,51923,51928,51929,51936,51948,51956,51976,51984,51988,51992,52000,52001,52033,52040,52041,52044,52048,52056,52057,52061,52068,52088,52089,52124,52152,52180,52196,52199,52201,52236,52237,52240,52244,52252,52253,52257,52258,52263,52264,52265,52268,52270,52272,52280,52281,52283,54845,54846,54847,54849,54850,54851,54852,54854,54855,54858,54860,54862,54863,54864,54866,54867,54870,54871,54873,54874,54875,54877,54878,54879,54880,54881,null,null,null,null,null,null,54882,54883,54884,54885,54886,54888,54890,54891,54892,54893,54894,54895,54898,54899,54901,54902,54903,54904,54905,54906,54907,54908,54909,54910,54911,54912,null,null,null,null,null,null,54913,54914,54916,54918,54919,54920,54921,54922,54923,54926,54927,54929,54930,54931,54933,54934,54935,54936,54937,54938,54939,54940,54942,54944,54946,54947,54948,54949,54950,54951,54953,54954,52284,52285,52286,52292,52293,52296,52300,52308,52309,52311,52312,52313,52320,52324,52326,52328,52336,52341,52376,52377,52380,52384,52392,52393,52395,52396,52397,52404,52405,52408,52412,52420,52421,52423,52425,52432,52436,52452,52460,52464,52481,52488,52489,52492,52496,52504,52505,52507,52509,52516,52520,52524,52537,52572,52576,52580,52588,52589,52591,52593,52600,52616,52628,52629,52632,52636,52644,52645,52647,52649,52656,52676,52684,52688,52712,52716,52720,52728,52729,52731,52733,52740,52744,52748,52756,52761,52768,52769,52772,52776,52784,52785,52787,52789,54955,54957,54958,54959,54961,54962,54963,54964,54965,54966,54967,54968,54970,54972,54973,54974,54975,54976,54977,54978,54979,54982,54983,54985,54986,54987,null,null,null,null,null,null,54989,54990,54991,54992,54994,54995,54997,54998,55000,55002,55003,55004,55005,55006,55007,55009,55010,55011,55013,55014,55015,55017,55018,55019,55020,55021,null,null,null,null,null,null,55022,55023,55025,55026,55027,55028,55030,55031,55032,55033,55034,55035,55038,55039,55041,55042,55043,55045,55046,55047,55048,55049,55050,55051,55052,55053,55054,55055,55056,55058,55059,55060,52824,52825,52828,52831,52832,52833,52840,52841,52843,52845,52852,52853,52856,52860,52868,52869,52871,52873,52880,52881,52884,52888,52896,52897,52899,52900,52901,52908,52909,52929,52964,52965,52968,52971,52972,52980,52981,52983,52984,52985,52992,52993,52996,53000,53008,53009,53011,53013,53020,53024,53028,53036,53037,53039,53040,53041,53048,53076,53077,53080,53084,53092,53093,53095,53097,53104,53105,53108,53112,53120,53125,53132,53153,53160,53168,53188,53216,53217,53220,53224,53232,53233,53235,53237,53244,53248,53252,53265,53272,53293,53300,53301,53304,53308,55061,55062,55063,55066,55067,55069,55070,55071,55073,55074,55075,55076,55077,55078,55079,55082,55084,55086,55087,55088,55089,55090,55091,55094,55095,55097,null,null,null,null,null,null,55098,55099,55101,55102,55103,55104,55105,55106,55107,55109,55110,55112,55114,55115,55116,55117,55118,55119,55122,55123,55125,55130,55131,55132,55133,55134,null,null,null,null,null,null,55135,55138,55140,55142,55143,55144,55146,55147,55149,55150,55151,55153,55154,55155,55157,55158,55159,55160,55161,55162,55163,55166,55167,55168,55170,55171,55172,55173,55174,55175,55178,55179,53316,53317,53319,53321,53328,53332,53336,53344,53356,53357,53360,53364,53372,53373,53377,53412,53413,53416,53420,53428,53429,53431,53433,53440,53441,53444,53448,53449,53456,53457,53459,53460,53461,53468,53469,53472,53476,53484,53485,53487,53488,53489,53496,53517,53552,53553,53556,53560,53562,53568,53569,53571,53572,53573,53580,53581,53584,53588,53596,53597,53599,53601,53608,53612,53628,53636,53640,53664,53665,53668,53672,53680,53681,53683,53685,53690,53692,53696,53720,53748,53752,53767,53769,53776,53804,53805,53808,53812,53820,53821,53823,53825,53832,53852,55181,55182,55183,55185,55186,55187,55188,55189,55190,55191,55194,55196,55198,55199,55200,55201,55202,55203,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,53860,53888,53889,53892,53896,53904,53905,53909,53916,53920,53924,53932,53937,53944,53945,53948,53951,53952,53954,53960,53961,53963,53972,53976,53980,53988,53989,54000,54001,54004,54008,54016,54017,54019,54021,54028,54029,54030,54032,54036,54038,54044,54045,54047,54048,54049,54053,54056,54057,54060,54064,54072,54073,54075,54076,54077,54084,54085,54140,54141,54144,54148,54156,54157,54159,54160,54161,54168,54169,54172,54176,54184,54185,54187,54189,54196,54200,54204,54212,54213,54216,54217,54224,54232,54241,54243,54252,54253,54256,54260,54268,54269,54271,54273,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,54280,54301,54336,54340,54364,54368,54372,54381,54383,54392,54393,54396,54399,54400,54402,54408,54409,54411,54413,54420,54441,54476,54480,54484,54492,54495,54504,54508,54512,54520,54523,54525,54532,54536,54540,54548,54549,54551,54588,54589,54592,54596,54604,54605,54607,54609,54616,54617,54620,54624,54629,54632,54633,54635,54637,54644,54645,54648,54652,54660,54661,54663,54664,54665,54672,54693,54728,54729,54732,54736,54738,54744,54745,54747,54749,54756,54757,54760,54764,54772,54773,54775,54777,54784,54785,54788,54792,54800,54801,54803,54804,54805,54812,54816,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,54820,54829,54840,54841,54844,54848,54853,54856,54857,54859,54861,54865,54868,54869,54872,54876,54887,54889,54896,54897,54900,54915,54917,54924,54925,54928,54932,54941,54943,54945,54952,54956,54960,54969,54971,54980,54981,54984,54988,54993,54996,54999,55001,55008,55012,55016,55024,55029,55036,55037,55040,55044,55057,55064,55065,55068,55072,55080,55081,55083,55085,55092,55093,55096,55100,55108,55111,55113,55120,55121,55124,55126,55127,55128,55129,55136,55137,55139,55141,55145,55148,55152,55156,55164,55165,55169,55176,55177,55180,55184,55192,55193,55195,55197,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,20285,20339,20551,20729,21152,21487,21621,21733,22025,23233,23478,26247,26550,26551,26607,27468,29634,30146,31292,33499,33540,34903,34952,35382,36040,36303,36603,36838,39381,21051,21364,21508,24682,24932,27580,29647,33050,35258,35282,38307,20355,21002,22718,22904,23014,24178,24185,25031,25536,26438,26604,26751,28567,30286,30475,30965,31240,31487,31777,32925,33390,33393,35563,38291,20075,21917,26359,28212,30883,31469,33883,35088,34638,38824,21208,22350,22570,23884,24863,25022,25121,25954,26577,27204,28187,29976,30131,30435,30640,32058,37039,37969,37970,40853,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,21283,23724,30002,32987,37440,38296,21083,22536,23004,23713,23831,24247,24378,24394,24951,27743,30074,30086,31968,32115,32177,32652,33108,33313,34193,35137,35611,37628,38477,40007,20171,20215,20491,20977,22607,24887,24894,24936,25913,27114,28433,30117,30342,30422,31623,33445,33995,63744,37799,38283,21888,23458,22353,63745,31923,32697,37301,20520,21435,23621,24040,25298,25454,25818,25831,28192,28844,31067,36317,36382,63746,36989,37445,37624,20094,20214,20581,24062,24314,24838,26967,33137,34388,36423,37749,39467,20062,20625,26480,26688,20745,21133,21138,27298,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,30652,37392,40660,21163,24623,36850,20552,25001,25581,25802,26684,27268,28608,33160,35233,38548,22533,29309,29356,29956,32121,32365,32937,35211,35700,36963,40273,25225,27770,28500,32080,32570,35363,20860,24906,31645,35609,37463,37772,20140,20435,20510,20670,20742,21185,21197,21375,22384,22659,24218,24465,24950,25004,25806,25964,26223,26299,26356,26775,28039,28805,28913,29855,29861,29898,30169,30828,30956,31455,31478,32069,32147,32789,32831,33051,33686,35686,36629,36885,37857,38915,38968,39514,39912,20418,21843,22586,22865,23395,23622,24760,25106,26690,26800,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,26856,28330,30028,30328,30926,31293,31995,32363,32380,35336,35489,35903,38542,40388,21476,21481,21578,21617,22266,22993,23396,23611,24235,25335,25911,25925,25970,26272,26543,27073,27837,30204,30352,30590,31295,32660,32771,32929,33167,33510,33533,33776,34241,34865,34996,35493,63747,36764,37678,38599,39015,39640,40723,21741,26011,26354,26767,31296,35895,40288,22256,22372,23825,26118,26801,26829,28414,29736,34974,39908,27752,63748,39592,20379,20844,20849,21151,23380,24037,24656,24685,25329,25511,25915,29657,31354,34467,36002,38799,20018,23521,25096,26524,29916,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,31185,33747,35463,35506,36328,36942,37707,38982,24275,27112,34303,37101,63749,20896,23448,23532,24931,26874,27454,28748,29743,29912,31649,32592,33733,35264,36011,38364,39208,21038,24669,25324,36866,20362,20809,21281,22745,24291,26336,27960,28826,29378,29654,31568,33009,37979,21350,25499,32619,20054,20608,22602,22750,24618,24871,25296,27088,39745,23439,32024,32945,36703,20132,20689,21676,21932,23308,23968,24039,25898,25934,26657,27211,29409,30350,30703,32094,32761,33184,34126,34527,36611,36686,37066,39171,39509,39851,19992,20037,20061,20167,20465,20855,21246,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,21312,21475,21477,21646,22036,22389,22434,23495,23943,24272,25084,25304,25937,26552,26601,27083,27472,27590,27628,27714,28317,28792,29399,29590,29699,30655,30697,31350,32127,32777,33276,33285,33290,33503,34914,35635,36092,36544,36881,37041,37476,37558,39378,39493,40169,40407,40860,22283,23616,33738,38816,38827,40628,21531,31384,32676,35033,36557,37089,22528,23624,25496,31391,23470,24339,31353,31406,33422,36524,20518,21048,21240,21367,22280,25331,25458,27402,28099,30519,21413,29527,34152,36470,38357,26426,27331,28528,35437,36556,39243,63750,26231,27512,36020,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,39740,63751,21483,22317,22862,25542,27131,29674,30789,31418,31429,31998,33909,35215,36211,36917,38312,21243,22343,30023,31584,33740,37406,63752,27224,20811,21067,21127,25119,26840,26997,38553,20677,21156,21220,25027,26020,26681,27135,29822,31563,33465,33771,35250,35641,36817,39241,63753,20170,22935,25810,26129,27278,29748,31105,31165,33449,34942,34943,35167,63754,37670,20235,21450,24613,25201,27762,32026,32102,20120,20834,30684,32943,20225,20238,20854,20864,21980,22120,22331,22522,22524,22804,22855,22931,23492,23696,23822,24049,24190,24524,25216,26071,26083,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,26398,26399,26462,26827,26820,27231,27450,27683,27773,27778,28103,29592,29734,29738,29826,29859,30072,30079,30849,30959,31041,31047,31048,31098,31637,32000,32186,32648,32774,32813,32908,35352,35663,35912,36215,37665,37668,39138,39249,39438,39439,39525,40594,32202,20342,21513,25326,26708,37329,21931,20794,63755,63756,23068,25062,63757,25295,25343,63758,63759,63760,63761,63762,63763,37027,63764,63765,63766,63767,63768,35582,63769,63770,63771,63772,26262,63773,29014,63774,63775,38627,63776,25423,25466,21335,63777,26511,26976,28275,63778,30007,63779,63780,63781,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,32013,63782,63783,34930,22218,23064,63784,63785,63786,63787,63788,20035,63789,20839,22856,26608,32784,63790,22899,24180,25754,31178,24565,24684,25288,25467,23527,23511,21162,63791,22900,24361,24594,63792,63793,63794,29785,63795,63796,63797,63798,63799,63800,39377,63801,63802,63803,63804,63805,63806,63807,63808,63809,63810,63811,28611,63812,63813,33215,36786,24817,63814,63815,33126,63816,63817,23615,63818,63819,63820,63821,63822,63823,63824,63825,23273,35365,26491,32016,63826,63827,63828,63829,63830,63831,33021,63832,63833,23612,27877,21311,28346,22810,33590,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,20025,20150,20294,21934,22296,22727,24406,26039,26086,27264,27573,28237,30701,31471,31774,32222,34507,34962,37170,37723,25787,28606,29562,30136,36948,21846,22349,25018,25812,26311,28129,28251,28525,28601,30192,32835,33213,34113,35203,35527,35674,37663,27795,30035,31572,36367,36957,21776,22530,22616,24162,25095,25758,26848,30070,31958,34739,40680,20195,22408,22382,22823,23565,23729,24118,24453,25140,25825,29619,33274,34955,36024,38538,40667,23429,24503,24755,20498,20992,21040,22294,22581,22615,23566,23648,23798,23947,24230,24466,24764,25361,25481,25623,26691,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,26873,27330,28120,28193,28372,28644,29182,30428,30585,31153,31291,33796,35241,36077,36339,36424,36867,36884,36947,37117,37709,38518,38876,27602,28678,29272,29346,29544,30563,31167,31716,32411,35712,22697,24775,25958,26109,26302,27788,28958,29129,35930,38931,20077,31361,20189,20908,20941,21205,21516,24999,26481,26704,26847,27934,28540,30140,30643,31461,33012,33891,37509,20828,26007,26460,26515,30168,31431,33651,63834,35910,36887,38957,23663,33216,33434,36929,36975,37389,24471,23965,27225,29128,30331,31561,34276,35588,37159,39472,21895,25078,63835,30313,32645,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,34367,34746,35064,37007,63836,27931,28889,29662,32097,33853,63837,37226,39409,63838,20098,21365,27396,27410,28734,29211,34349,40478,21068,36771,23888,25829,25900,27414,28651,31811,32412,34253,35172,35261,25289,33240,34847,24266,26391,28010,29436,29701,29807,34690,37086,20358,23821,24480,33802,20919,25504,30053,20142,20486,20841,20937,26753,27153,31918,31921,31975,33391,35538,36635,37327,20406,20791,21237,21570,24300,24942,25150,26053,27354,28670,31018,34268,34851,38317,39522,39530,40599,40654,21147,26310,27511,28701,31019,36706,38722,24976,25088,25891,28451,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,29001,29833,32244,32879,34030,36646,36899,37706,20925,21015,21155,27916,28872,35010,24265,25986,27566,28610,31806,29557,20196,20278,22265,63839,23738,23994,24604,29618,31533,32666,32718,32838,36894,37428,38646,38728,38936,40801,20363,28583,31150,37300,38583,21214,63840,25736,25796,27347,28510,28696,29200,30439,32769,34310,34396,36335,36613,38706,39791,40442,40565,30860,31103,32160,33737,37636,40575,40595,35542,22751,24324,26407,28711,29903,31840,32894,20769,28712,29282,30922,36034,36058,36084,38647,20102,20698,23534,24278,26009,29134,30274,30637,32842,34044,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36988,39719,40845,22744,23105,23650,27155,28122,28431,30267,32047,32311,34078,35128,37860,38475,21129,26066,26611,27060,27969,28316,28687,29705,29792,30041,30244,30827,35628,39006,20845,25134,38520,20374,20523,23833,28138,32184,36650,24459,24900,26647,63841,38534,21202,32907,20956,20940,26974,31260,32190,33777,38517,20442,21033,21400,21519,21774,23653,24743,26446,26792,28012,29313,29432,29702,29827,63842,30178,31852,32633,32696,33673,35023,35041,37324,37328,38626,39881,21533,28542,29136,29848,34298,36522,38563,40023,40607,26519,28107,29747,33256,38678,30764,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,31435,31520,31890,25705,29802,30194,30908,30952,39340,39764,40635,23518,24149,28448,33180,33707,37000,19975,21325,23081,24018,24398,24930,25405,26217,26364,28415,28459,28771,30622,33836,34067,34875,36627,39237,39995,21788,25273,26411,27819,33545,35178,38778,20129,22916,24536,24537,26395,32178,32596,33426,33579,33725,36638,37017,22475,22969,23186,23504,26151,26522,26757,27599,29028,32629,36023,36067,36993,39749,33032,35978,38476,39488,40613,23391,27667,29467,30450,30431,33804,20906,35219,20813,20885,21193,26825,27796,30468,30496,32191,32236,38754,40629,28357,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,34065,20901,21517,21629,26126,26269,26919,28319,30399,30609,33559,33986,34719,37225,37528,40180,34946,20398,20882,21215,22982,24125,24917,25720,25721,26286,26576,27169,27597,27611,29279,29281,29761,30520,30683,32791,33468,33541,35584,35624,35980,26408,27792,29287,30446,30566,31302,40361,27519,27794,22818,26406,33945,21359,22675,22937,24287,25551,26164,26483,28218,29483,31447,33495,37672,21209,24043,25006,25035,25098,25287,25771,26080,26969,27494,27595,28961,29687,30045,32326,33310,33538,34154,35491,36031,38695,40289,22696,40664,20497,21006,21563,21839,25991,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,27766,32010,32011,32862,34442,38272,38639,21247,27797,29289,21619,23194,23614,23883,24396,24494,26410,26806,26979,28220,28228,30473,31859,32654,34183,35598,36855,38753,40692,23735,24758,24845,25003,25935,26107,26108,27665,27887,29599,29641,32225,38292,23494,34588,35600,21085,21338,25293,25615,25778,26420,27192,27850,29632,29854,31636,31893,32283,33162,33334,34180,36843,38649,39361,20276,21322,21453,21467,25292,25644,25856,26001,27075,27886,28504,29677,30036,30242,30436,30460,30928,30971,31020,32070,33324,34784,36820,38930,39151,21187,25300,25765,28196,28497,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,30332,36299,37297,37474,39662,39747,20515,20621,22346,22952,23592,24135,24439,25151,25918,26041,26049,26121,26507,27036,28354,30917,32033,32938,33152,33323,33459,33953,34444,35370,35607,37030,38450,40848,20493,20467,63843,22521,24472,25308,25490,26479,28227,28953,30403,32972,32986,35060,35061,35097,36064,36649,37197,38506,20271,20336,24091,26575,26658,30333,30334,39748,24161,27146,29033,29140,30058,63844,32321,34115,34281,39132,20240,31567,32624,38309,20961,24070,26805,27710,27726,27867,29359,31684,33539,27861,29754,20731,21128,22721,25816,27287,29863,30294,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,30887,34327,38370,38713,63845,21342,24321,35722,36776,36783,37002,21029,30629,40009,40712,19993,20482,20853,23643,24183,26142,26170,26564,26821,28851,29953,30149,31177,31453,36647,39200,39432,20445,22561,22577,23542,26222,27493,27921,28282,28541,29668,29995,33769,35036,35091,35676,36628,20239,20693,21264,21340,23443,24489,26381,31119,33145,33583,34068,35079,35206,36665,36667,39333,39954,26412,20086,20472,22857,23553,23791,23792,25447,26834,28925,29090,29739,32299,34028,34562,36898,37586,40179,19981,20184,20463,20613,21078,21103,21542,21648,22496,22827,23142,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,23386,23413,23500,24220,63846,25206,25975,26023,28014,28325,29238,31526,31807,32566,33104,33105,33178,33344,33433,33705,35331,36000,36070,36091,36212,36282,37096,37340,38428,38468,39385,40167,21271,20998,21545,22132,22707,22868,22894,24575,24996,25198,26128,27774,28954,30406,31881,31966,32027,33452,36033,38640,63847,20315,24343,24447,25282,23849,26379,26842,30844,32323,40300,19989,20633,21269,21290,21329,22915,23138,24199,24754,24970,25161,25209,26000,26503,27047,27604,27606,27607,27608,27832,63848,29749,30202,30738,30865,31189,31192,31875,32203,32737,32933,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,33086,33218,33778,34586,35048,35513,35692,36027,37145,38750,39131,40763,22188,23338,24428,25996,27315,27567,27996,28657,28693,29277,29613,36007,36051,38971,24977,27703,32856,39425,20045,20107,20123,20181,20282,20284,20351,20447,20735,21490,21496,21766,21987,22235,22763,22882,23057,23531,23546,23556,24051,24107,24473,24605,25448,26012,26031,26614,26619,26797,27515,27801,27863,28195,28681,29509,30722,31038,31040,31072,31169,31721,32023,32114,32902,33293,33678,34001,34503,35039,35408,35422,35613,36060,36198,36781,37034,39164,39391,40605,21066,63849,26388,63850,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,20632,21034,23665,25955,27733,29642,29987,30109,31639,33948,37240,38704,20087,25746,27578,29022,34217,19977,63851,26441,26862,28183,33439,34072,34923,25591,28545,37394,39087,19978,20663,20687,20767,21830,21930,22039,23360,23577,23776,24120,24202,24224,24258,24819,26705,27233,28248,29245,29248,29376,30456,31077,31665,32724,35059,35316,35443,35937,36062,38684,22622,29885,36093,21959,63852,31329,32034,33394,29298,29983,29989,63853,31513,22661,22779,23996,24207,24246,24464,24661,25234,25471,25933,26257,26329,26360,26646,26866,29312,29790,31598,32110,32214,32626,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,32997,33298,34223,35199,35475,36893,37604,40653,40736,22805,22893,24109,24796,26132,26227,26512,27728,28101,28511,30707,30889,33990,37323,37675,20185,20682,20808,21892,23307,23459,25159,25982,26059,28210,29053,29697,29764,29831,29887,30316,31146,32218,32341,32680,33146,33203,33337,34330,34796,35445,36323,36984,37521,37925,39245,39854,21352,23633,26964,27844,27945,28203,33292,34203,35131,35373,35498,38634,40807,21089,26297,27570,32406,34814,36109,38275,38493,25885,28041,29166,63854,22478,22995,23468,24615,24826,25104,26143,26207,29481,29689,30427,30465,31596,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,32854,32882,33125,35488,37266,19990,21218,27506,27927,31237,31545,32048,63855,36016,21484,22063,22609,23477,23567,23569,24034,25152,25475,25620,26157,26803,27836,28040,28335,28703,28836,29138,29990,30095,30094,30233,31505,31712,31787,32032,32057,34092,34157,34311,35380,36877,36961,37045,37559,38902,39479,20439,23660,26463,28049,31903,32396,35606,36118,36895,23403,24061,25613,33984,36956,39137,29575,23435,24730,26494,28126,35359,35494,36865,38924,21047,63856,28753,30862,37782,34928,37335,20462,21463,22013,22234,22402,22781,23234,23432,23723,23744,24101,24833,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,25101,25163,25480,25628,25910,25976,27193,27530,27700,27929,28465,29159,29417,29560,29703,29874,30246,30561,31168,31319,31466,31929,32143,32172,32353,32670,33065,33585,33936,34010,34282,34966,35504,35728,36664,36930,36995,37228,37526,37561,38539,38567,38568,38614,38656,38920,39318,39635,39706,21460,22654,22809,23408,23487,28113,28506,29087,29729,29881,32901,33789,24033,24455,24490,24642,26092,26642,26991,27219,27529,27957,28147,29667,30462,30636,31565,32020,33059,33308,33600,34036,34147,35426,35524,37255,37662,38918,39348,25100,34899,36848,37477,23815,23847,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,23913,29791,33181,34664,28629,25342,32722,35126,35186,19998,20056,20711,21213,21319,25215,26119,32361,34821,38494,20365,21273,22070,22987,23204,23608,23630,23629,24066,24337,24643,26045,26159,26178,26558,26612,29468,30690,31034,32709,33940,33997,35222,35430,35433,35553,35925,35962,22516,23508,24335,24687,25325,26893,27542,28252,29060,31698,34645,35672,36606,39135,39166,20280,20353,20449,21627,23072,23480,24892,26032,26216,29180,30003,31070,32051,33102,33251,33688,34218,34254,34563,35338,36523,36763,63857,36805,22833,23460,23526,24713,23529,23563,24515,27777,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,63858,28145,28683,29978,33455,35574,20160,21313,63859,38617,27663,20126,20420,20818,21854,23077,23784,25105,29273,33469,33706,34558,34905,35357,38463,38597,39187,40201,40285,22538,23731,23997,24132,24801,24853,25569,27138,28197,37122,37716,38990,39952,40823,23433,23736,25353,26191,26696,30524,38593,38797,38996,39839,26017,35585,36555,38332,21813,23721,24022,24245,26263,30284,33780,38343,22739,25276,29390,40232,20208,22830,24591,26171,27523,31207,40230,21395,21696,22467,23830,24859,26326,28079,30861,33406,38552,38724,21380,25212,25494,28082,32266,33099,38989,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,27387,32588,40367,40474,20063,20539,20918,22812,24825,25590,26928,29242,32822,63860,37326,24369,63861,63862,32004,33509,33903,33979,34277,36493,63863,20335,63864,63865,22756,23363,24665,25562,25880,25965,26264,63866,26954,27171,27915,28673,29036,30162,30221,31155,31344,63867,32650,63868,35140,63869,35731,37312,38525,63870,39178,22276,24481,26044,28417,30208,31142,35486,39341,39770,40812,20740,25014,25233,27277,33222,20547,22576,24422,28937,35328,35578,23420,34326,20474,20796,22196,22852,25513,28153,23978,26989,20870,20104,20313,63871,63872,63873,22914,63874,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,63875,27487,27741,63876,29877,30998,63877,33287,33349,33593,36671,36701,63878,39192,63879,63880,63881,20134,63882,22495,24441,26131,63883,63884,30123,32377,35695,63885,36870,39515,22181,22567,23032,23071,23476,63886,24310,63887,63888,25424,25403,63889,26941,27783,27839,28046,28051,28149,28436,63890,28895,28982,29017,63891,29123,29141,63892,30799,30831,63893,31605,32227,63894,32303,63895,34893,36575,63896,63897,63898,37467,63899,40182,63900,63901,63902,24709,28037,63903,29105,63904,63905,38321,21421,63906,63907,63908,26579,63909,28814,28976,29744,33398,33490,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,63910,38331,39653,40573,26308,63911,29121,33865,63912,63913,22603,63914,63915,23992,24433,63916,26144,26254,27001,27054,27704,27891,28214,28481,28634,28699,28719,29008,29151,29552,63917,29787,63918,29908,30408,31310,32403,63919,63920,33521,35424,36814,63921,37704,63922,38681,63923,63924,20034,20522,63925,21000,21473,26355,27757,28618,29450,30591,31330,33454,34269,34306,63926,35028,35427,35709,35947,63927,37555,63928,38675,38928,20116,20237,20425,20658,21320,21566,21555,21978,22626,22714,22887,23067,23524,24735,63929,25034,25942,26111,26212,26791,27738,28595,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,28879,29100,29522,31613,34568,35492,39986,40711,23627,27779,29508,29577,37434,28331,29797,30239,31337,32277,34314,20800,22725,25793,29934,29973,30320,32705,37013,38605,39252,28198,29926,31401,31402,33253,34521,34680,35355,23113,23436,23451,26785,26880,28003,29609,29715,29740,30871,32233,32747,33048,33109,33694,35916,38446,38929,26352,24448,26106,26505,27754,29579,20525,23043,27498,30702,22806,23916,24013,29477,30031,63930,63931,20709,20985,22575,22829,22934,23002,23525,63932,63933,23970,25303,25622,25747,25854,63934,26332,63935,27208,63936,29183,29796,63937,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,31368,31407,32327,32350,32768,33136,63938,34799,35201,35616,36953,63939,36992,39250,24958,27442,28020,32287,35109,36785,20433,20653,20887,21191,22471,22665,23481,24248,24898,27029,28044,28263,28342,29076,29794,29992,29996,32883,33592,33993,36362,37780,37854,63940,20110,20305,20598,20778,21448,21451,21491,23431,23507,23588,24858,24962,26100,29275,29591,29760,30402,31056,31121,31161,32006,32701,33419,34261,34398,36802,36935,37109,37354,38533,38632,38633,21206,24423,26093,26161,26671,29020,31286,37057,38922,20113,63941,27218,27550,28560,29065,32792,33464,34131,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36939,38549,38642,38907,34074,39729,20112,29066,38596,20803,21407,21729,22291,22290,22435,23195,23236,23491,24616,24895,25588,27781,27961,28274,28304,29232,29503,29783,33489,34945,36677,36960,63942,38498,39000,40219,26376,36234,37470,20301,20553,20702,21361,22285,22996,23041,23561,24944,26256,28205,29234,29771,32239,32963,33806,33894,34111,34655,34907,35096,35586,36949,38859,39759,20083,20369,20754,20842,63943,21807,21929,23418,23461,24188,24189,24254,24736,24799,24840,24841,25540,25912,26377,63944,26580,26586,63945,26977,26978,27833,27943,63946,28216,63947,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,28641,29494,29495,63948,29788,30001,63949,30290,63950,63951,32173,33278,33848,35029,35480,35547,35565,36400,36418,36938,36926,36986,37193,37321,37742,63952,63953,22537,63954,27603,32905,32946,63955,63956,20801,22891,23609,63957,63958,28516,29607,32996,36103,63959,37399,38287,63960,63961,63962,63963,32895,25102,28700,32104,34701,63964,22432,24681,24903,27575,35518,37504,38577,20057,21535,28139,34093,38512,38899,39150,25558,27875,37009,20957,25033,33210,40441,20381,20506,20736,23452,24847,25087,25836,26885,27589,30097,30691,32681,33380,34191,34811,34915,35516,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,35696,37291,20108,20197,20234,63965,63966,22839,23016,63967,24050,24347,24411,24609,63968,63969,63970,63971,29246,29669,63972,30064,30157,63973,31227,63974,32780,32819,32900,33505,33617,63975,63976,36029,36019,36999,63977,63978,39156,39180,63979,63980,28727,30410,32714,32716,32764,35610,20154,20161,20995,21360,63981,21693,22240,23035,23493,24341,24525,28270,63982,63983,32106,33589,63984,34451,35469,63985,38765,38775,63986,63987,19968,20314,20350,22777,26085,28322,36920,37808,39353,20219,22764,22922,23001,24641,63988,63989,31252,63990,33615,36035,20837,21316,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,63991,63992,63993,20173,21097,23381,33471,20180,21050,21672,22985,23039,23376,23383,23388,24675,24904,28363,28825,29038,29574,29943,30133,30913,32043,32773,33258,33576,34071,34249,35566,36039,38604,20316,21242,22204,26027,26152,28796,28856,29237,32189,33421,37196,38592,40306,23409,26855,27544,28538,30430,23697,26283,28507,31668,31786,34870,38620,19976,20183,21280,22580,22715,22767,22892,23559,24115,24196,24373,25484,26290,26454,27167,27299,27404,28479,29254,63994,29520,29835,31456,31911,33144,33247,33255,33674,33900,34083,34196,34255,35037,36115,37292,38263,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,38556,20877,21705,22312,23472,25165,26448,26685,26771,28221,28371,28797,32289,35009,36001,36617,40779,40782,29229,31631,35533,37658,20295,20302,20786,21632,22992,24213,25269,26485,26990,27159,27822,28186,29401,29482,30141,31672,32053,33511,33785,33879,34295,35419,36015,36487,36889,37048,38606,40799,21219,21514,23265,23490,25688,25973,28404,29380,63995,30340,31309,31515,31821,32318,32735,33659,35627,36042,36196,36321,36447,36842,36857,36969,37841,20291,20346,20659,20840,20856,21069,21098,22625,22652,22880,23560,23637,24283,24731,25136,26643,27583,27656,28593,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,29006,29728,30000,30008,30033,30322,31564,31627,31661,31686,32399,35438,36670,36681,37439,37523,37666,37931,38651,39002,39019,39198,20999,25130,25240,27993,30308,31434,31680,32118,21344,23742,24215,28472,28857,31896,38673,39822,40670,25509,25722,34678,19969,20117,20141,20572,20597,21576,22979,23450,24128,24237,24311,24449,24773,25402,25919,25972,26060,26230,26232,26622,26984,27273,27491,27712,28096,28136,28191,28254,28702,28833,29582,29693,30010,30555,30855,31118,31243,31357,31934,32142,33351,35330,35562,35998,37165,37194,37336,37478,37580,37664,38662,38742,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,38748,38914,40718,21046,21137,21884,22564,24093,24351,24716,25552,26799,28639,31085,31532,33229,34234,35069,35576,36420,37261,38500,38555,38717,38988,40778,20430,20806,20939,21161,22066,24340,24427,25514,25805,26089,26177,26362,26361,26397,26781,26839,27133,28437,28526,29031,29157,29226,29866,30522,31062,31066,31199,31264,31381,31895,31967,32068,32368,32903,34299,34468,35412,35519,36249,36481,36896,36973,37347,38459,38613,40165,26063,31751,36275,37827,23384,23562,21330,25305,29469,20519,23447,24478,24752,24939,26837,28121,29742,31278,32066,32156,32305,33131,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36394,36405,37758,37912,20304,22352,24038,24231,25387,32618,20027,20303,20367,20570,23005,32964,21610,21608,22014,22863,23449,24030,24282,26205,26417,26609,26666,27880,27954,28234,28557,28855,29664,30087,31820,32002,32044,32162,33311,34523,35387,35461,36208,36490,36659,36913,37198,37202,37956,39376,31481,31909,20426,20737,20934,22472,23535,23803,26201,27197,27994,28310,28652,28940,30063,31459,34850,36897,36981,38603,39423,33537,20013,20210,34886,37325,21373,27355,26987,27713,33914,22686,24974,26366,25327,28893,29969,30151,32338,33976,35657,36104,20043,21482,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,21675,22320,22336,24535,25345,25351,25711,25903,26088,26234,26525,26547,27490,27744,27802,28460,30693,30757,31049,31063,32025,32930,33026,33267,33437,33463,34584,35468,63996,36100,36286,36978,30452,31257,31287,32340,32887,21767,21972,22645,25391,25634,26185,26187,26733,27035,27524,27941,28337,29645,29800,29857,30043,30137,30433,30494,30603,31206,32265,32285,33275,34095,34967,35386,36049,36587,36784,36914,37805,38499,38515,38663,20356,21489,23018,23241,24089,26702,29894,30142,31209,31378,33187,34541,36074,36300,36845,26015,26389,63997,22519,28503,32221,36655,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,37878,38598,24501,25074,28548,19988,20376,20511,21449,21983,23919,24046,27425,27492,30923,31642,63998,36425,36554,36974,25417,25662,30528,31364,37679,38015,40810,25776,28591,29158,29864,29914,31428,31762,32386,31922,32408,35738,36106,38013,39184,39244,21049,23519,25830,26413,32046,20717,21443,22649,24920,24921,25082,26028,31449,35730,35734,20489,20513,21109,21809,23100,24288,24432,24884,25950,26124,26166,26274,27085,28356,28466,29462,30241,31379,33081,33369,33750,33980,20661,22512,23488,23528,24425,25505,30758,32181,33756,34081,37319,37365,20874,26613,31574,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36012,20932,22971,24765,34389,20508,63999,21076,23610,24957,25114,25299,25842,26021,28364,30240,33034,36448,38495,38587,20191,21315,21912,22825,24029,25797,27849,28154,29588,31359,33307,34214,36068,36368,36983,37351,38369,38433,38854,20984,21746,21894,24505,25764,28552,32180,36639,36685,37941,20681,23574,27838,28155,29979,30651,31805,31844,35449,35522,22558,22974,24086,25463,29266,30090,30571,35548,36028,36626,24307,26228,28152,32893,33729,35531,38737,39894,64000,21059,26367,28053,28399,32224,35558,36910,36958,39636,21021,21119,21736,24980,25220,25307,26786,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,26898,26970,27189,28818,28966,30813,30977,30990,31186,31245,32918,33400,33493,33609,34121,35970,36229,37218,37259,37294,20419,22225,29165,30679,34560,35320,23544,24534,26449,37032,21474,22618,23541,24740,24961,25696,32317,32880,34085,37507,25774,20652,23828,26368,22684,25277,25512,26894,27000,27166,28267,30394,31179,33467,33833,35535,36264,36861,37138,37195,37276,37648,37656,37786,38619,39478,39949,19985,30044,31069,31482,31569,31689,32302,33988,36441,36468,36600,36880,26149,26943,29763,20986,26414,40668,20805,24544,27798,34802,34909,34935,24756,33205,33795,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36101,21462,21561,22068,23094,23601,28810,32736,32858,33030,33261,36259,37257,39519,40434,20596,20164,21408,24827,28204,23652,20360,20516,21988,23769,24159,24677,26772,27835,28100,29118,30164,30196,30305,31258,31305,32199,32251,32622,33268,34473,36636,38601,39347,40786,21063,21189,39149,35242,19971,26578,28422,20405,23522,26517,27784,28024,29723,30759,37341,37756,34756,31204,31281,24555,20182,21668,21822,22702,22949,24816,25171,25302,26422,26965,33333,38464,39345,39389,20524,21331,21828,22396,64001,25176,64002,25826,26219,26589,28609,28655,29730,29752,35351,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,37944,21585,22022,22374,24392,24986,27470,28760,28845,32187,35477,22890,33067,25506,30472,32829,36010,22612,25645,27067,23445,24081,28271,64003,34153,20812,21488,22826,24608,24907,27526,27760,27888,31518,32974,33492,36294,37040,39089,64004,25799,28580,25745,25860,20814,21520,22303,35342,24927,26742,64005,30171,31570,32113,36890,22534,27084,33151,35114,36864,38969,20600,22871,22956,25237,36879,39722,24925,29305,38358,22369,23110,24052,25226,25773,25850,26487,27874,27966,29228,29750,30772,32631,33453,36315,38935,21028,22338,26495,29256,29923,36009,36774,37393,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,38442,20843,21485,25420,20329,21764,24726,25943,27803,28031,29260,29437,31255,35207,35997,24429,28558,28921,33192,24846,20415,20559,25153,29255,31687,32232,32745,36941,38829,39449,36022,22378,24179,26544,33805,35413,21536,23318,24163,24290,24330,25987,32954,34109,38281,38491,20296,21253,21261,21263,21638,21754,22275,24067,24598,25243,25265,25429,64006,27873,28006,30129,30770,32990,33071,33502,33889,33970,34957,35090,36875,37610,39165,39825,24133,26292,26333,28689,29190,64007,20469,21117,24426,24915,26451,27161,28418,29922,31080,34920,35961,39111,39108,39491,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,21697,31263,26963,35575,35914,39080,39342,24444,25259,30130,30382,34987,36991,38466,21305,24380,24517,27852,29644,30050,30091,31558,33534,39325,20047,36924,19979,20309,21414,22799,24264,26160,27827,29781,33655,34662,36032,36944,38686,39957,22737,23416,34384,35604,40372,23506,24680,24717,26097,27735,28450,28579,28698,32597,32752,38289,38290,38480,38867,21106,36676,20989,21547,21688,21859,21898,27323,28085,32216,33382,37532,38519,40569,21512,21704,30418,34532,38308,38356,38492,20130,20233,23022,23270,24055,24658,25239,26477,26689,27782,28207,32568,32923,33322,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,64008,64009,38917,20133,20565,21683,22419,22874,23401,23475,25032,26999,28023,28707,34809,35299,35442,35559,36994,39405,39608,21182,26680,20502,24184,26447,33607,34892,20139,21521,22190,29670,37141,38911,39177,39255,39321,22099,22687,34395,35377,25010,27382,29563,36562,27463,38570,39511,22869,29184,36203,38761,20436,23796,24358,25080,26203,27883,28843,29572,29625,29694,30505,30541,32067,32098,32291,33335,34898,64010,36066,37449,39023,23377,31348,34880,38913,23244,20448,21332,22846,23805,25406,28025,29433,33029,33031,33698,37583,38960,20136,20804,21009,22411,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,24418,27842,28366,28677,28752,28847,29074,29673,29801,33610,34722,34913,36872,37026,37795,39336,20846,24407,24800,24935,26291,34137,36426,37295,38795,20046,20114,21628,22741,22778,22909,23733,24359,25142,25160,26122,26215,27627,28009,28111,28246,28408,28564,28640,28649,28765,29392,29733,29786,29920,30355,31068,31946,32286,32993,33446,33899,33983,34382,34399,34676,35703,35946,37804,38912,39013,24785,25110,37239,23130,26127,28151,28222,29759,39746,24573,24794,31503,21700,24344,27742,27859,27946,28888,32005,34425,35340,40251,21270,21644,23301,27194,28779,30069,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,31117,31166,33457,33775,35441,35649,36008,38772,64011,25844,25899,30906,30907,31339,20024,21914,22864,23462,24187,24739,25563,27489,26213,26707,28185,29029,29872,32008,36996,39529,39973,27963,28369,29502,35905,38346,20976,24140,24488,24653,24822,24880,24908,26179,26180,27045,27841,28255,28361,28514,29004,29852,30343,31681,31783,33618,34647,36945,38541,40643,21295,22238,24315,24458,24674,24724,25079,26214,26371,27292,28142,28590,28784,29546,32362,33214,33588,34516,35496,36036,21123,29554,23446,27243,37892,21742,22150,23389,25928,25989,26313,26783,28045,28102,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,29243,32948,37237,39501,20399,20505,21402,21518,21564,21897,21957,24127,24460,26429,29030,29661,36869,21211,21235,22628,22734,28932,29071,29179,34224,35347,26248,34216,21927,26244,29002,33841,21321,21913,27585,24409,24509,25582,26249,28999,35569,36637,40638,20241,25658,28875,30054,34407,24676,35662,40440,20807,20982,21256,27958,33016,40657,26133,27427,28824,30165,21507,23673,32007,35350,27424,27453,27462,21560,24688,27965,32725,33288,20694,20958,21916,22123,22221,23020,23305,24076,24985,24984,25137,26206,26342,29081,29113,29114,29351,31143,31232,32690,35440,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],gb18030:[19970,19972,19973,19974,19983,19986,19991,19999,20000,20001,20003,20006,20009,20014,20015,20017,20019,20021,20023,20028,20032,20033,20034,20036,20038,20042,20049,20053,20055,20058,20059,20066,20067,20068,20069,20071,20072,20074,20075,20076,20077,20078,20079,20082,20084,20085,20086,20087,20088,20089,20090,20091,20092,20093,20095,20096,20097,20098,20099,20100,20101,20103,20106,20112,20118,20119,20121,20124,20125,20126,20131,20138,20143,20144,20145,20148,20150,20151,20152,20153,20156,20157,20158,20168,20172,20175,20176,20178,20186,20187,20188,20192,20194,20198,20199,20201,20205,20206,20207,20209,20212,20216,20217,20218,20220,20222,20224,20226,20227,20228,20229,20230,20231,20232,20235,20236,20242,20243,20244,20245,20246,20252,20253,20257,20259,20264,20265,20268,20269,20270,20273,20275,20277,20279,20281,20283,20286,20287,20288,20289,20290,20292,20293,20295,20296,20297,20298,20299,20300,20306,20308,20310,20321,20322,20326,20328,20330,20331,20333,20334,20337,20338,20341,20343,20344,20345,20346,20349,20352,20353,20354,20357,20358,20359,20362,20364,20366,20368,20370,20371,20373,20374,20376,20377,20378,20380,20382,20383,20385,20386,20388,20395,20397,20400,20401,20402,20403,20404,20406,20407,20408,20409,20410,20411,20412,20413,20414,20416,20417,20418,20422,20423,20424,20425,20427,20428,20429,20434,20435,20436,20437,20438,20441,20443,20448,20450,20452,20453,20455,20459,20460,20464,20466,20468,20469,20470,20471,20473,20475,20476,20477,20479,20480,20481,20482,20483,20484,20485,20486,20487,20488,20489,20490,20491,20494,20496,20497,20499,20501,20502,20503,20507,20509,20510,20512,20514,20515,20516,20519,20523,20527,20528,20529,20530,20531,20532,20533,20534,20535,20536,20537,20539,20541,20543,20544,20545,20546,20548,20549,20550,20553,20554,20555,20557,20560,20561,20562,20563,20564,20566,20567,20568,20569,20571,20573,20574,20575,20576,20577,20578,20579,20580,20582,20583,20584,20585,20586,20587,20589,20590,20591,20592,20593,20594,20595,20596,20597,20600,20601,20602,20604,20605,20609,20610,20611,20612,20614,20615,20617,20618,20619,20620,20622,20623,20624,20625,20626,20627,20628,20629,20630,20631,20632,20633,20634,20635,20636,20637,20638,20639,20640,20641,20642,20644,20646,20650,20651,20653,20654,20655,20656,20657,20659,20660,20661,20662,20663,20664,20665,20668,20669,20670,20671,20672,20673,20674,20675,20676,20677,20678,20679,20680,20681,20682,20683,20684,20685,20686,20688,20689,20690,20691,20692,20693,20695,20696,20697,20699,20700,20701,20702,20703,20704,20705,20706,20707,20708,20709,20712,20713,20714,20715,20719,20720,20721,20722,20724,20726,20727,20728,20729,20730,20732,20733,20734,20735,20736,20737,20738,20739,20740,20741,20744,20745,20746,20748,20749,20750,20751,20752,20753,20755,20756,20757,20758,20759,20760,20761,20762,20763,20764,20765,20766,20767,20768,20770,20771,20772,20773,20774,20775,20776,20777,20778,20779,20780,20781,20782,20783,20784,20785,20786,20787,20788,20789,20790,20791,20792,20793,20794,20795,20796,20797,20798,20802,20807,20810,20812,20814,20815,20816,20818,20819,20823,20824,20825,20827,20829,20830,20831,20832,20833,20835,20836,20838,20839,20841,20842,20847,20850,20858,20862,20863,20867,20868,20870,20871,20874,20875,20878,20879,20880,20881,20883,20884,20888,20890,20893,20894,20895,20897,20899,20902,20903,20904,20905,20906,20909,20910,20916,20920,20921,20922,20926,20927,20929,20930,20931,20933,20936,20938,20941,20942,20944,20946,20947,20948,20949,20950,20951,20952,20953,20954,20956,20958,20959,20962,20963,20965,20966,20967,20968,20969,20970,20972,20974,20977,20978,20980,20983,20990,20996,20997,21001,21003,21004,21007,21008,21011,21012,21013,21020,21022,21023,21025,21026,21027,21029,21030,21031,21034,21036,21039,21041,21042,21044,21045,21052,21054,21060,21061,21062,21063,21064,21065,21067,21070,21071,21074,21075,21077,21079,21080,21081,21082,21083,21085,21087,21088,21090,21091,21092,21094,21096,21099,21100,21101,21102,21104,21105,21107,21108,21109,21110,21111,21112,21113,21114,21115,21116,21118,21120,21123,21124,21125,21126,21127,21129,21130,21131,21132,21133,21134,21135,21137,21138,21140,21141,21142,21143,21144,21145,21146,21148,21156,21157,21158,21159,21166,21167,21168,21172,21173,21174,21175,21176,21177,21178,21179,21180,21181,21184,21185,21186,21188,21189,21190,21192,21194,21196,21197,21198,21199,21201,21203,21204,21205,21207,21209,21210,21211,21212,21213,21214,21216,21217,21218,21219,21221,21222,21223,21224,21225,21226,21227,21228,21229,21230,21231,21233,21234,21235,21236,21237,21238,21239,21240,21243,21244,21245,21249,21250,21251,21252,21255,21257,21258,21259,21260,21262,21265,21266,21267,21268,21272,21275,21276,21278,21279,21282,21284,21285,21287,21288,21289,21291,21292,21293,21295,21296,21297,21298,21299,21300,21301,21302,21303,21304,21308,21309,21312,21314,21316,21318,21323,21324,21325,21328,21332,21336,21337,21339,21341,21349,21352,21354,21356,21357,21362,21366,21369,21371,21372,21373,21374,21376,21377,21379,21383,21384,21386,21390,21391,21392,21393,21394,21395,21396,21398,21399,21401,21403,21404,21406,21408,21409,21412,21415,21418,21419,21420,21421,21423,21424,21425,21426,21427,21428,21429,21431,21432,21433,21434,21436,21437,21438,21440,21443,21444,21445,21446,21447,21454,21455,21456,21458,21459,21461,21466,21468,21469,21470,21473,21474,21479,21492,21498,21502,21503,21504,21506,21509,21511,21515,21524,21528,21529,21530,21532,21538,21540,21541,21546,21552,21555,21558,21559,21562,21565,21567,21569,21570,21572,21573,21575,21577,21580,21581,21582,21583,21585,21594,21597,21598,21599,21600,21601,21603,21605,21607,21609,21610,21611,21612,21613,21614,21615,21616,21620,21625,21626,21630,21631,21633,21635,21637,21639,21640,21641,21642,21645,21649,21651,21655,21656,21660,21662,21663,21664,21665,21666,21669,21678,21680,21682,21685,21686,21687,21689,21690,21692,21694,21699,21701,21706,21707,21718,21720,21723,21728,21729,21730,21731,21732,21739,21740,21743,21744,21745,21748,21749,21750,21751,21752,21753,21755,21758,21760,21762,21763,21764,21765,21768,21770,21771,21772,21773,21774,21778,21779,21781,21782,21783,21784,21785,21786,21788,21789,21790,21791,21793,21797,21798,21800,21801,21803,21805,21810,21812,21813,21814,21816,21817,21818,21819,21821,21824,21826,21829,21831,21832,21835,21836,21837,21838,21839,21841,21842,21843,21844,21847,21848,21849,21850,21851,21853,21854,21855,21856,21858,21859,21864,21865,21867,21871,21872,21873,21874,21875,21876,21881,21882,21885,21887,21893,21894,21900,21901,21902,21904,21906,21907,21909,21910,21911,21914,21915,21918,21920,21921,21922,21923,21924,21925,21926,21928,21929,21930,21931,21932,21933,21934,21935,21936,21938,21940,21942,21944,21946,21948,21951,21952,21953,21954,21955,21958,21959,21960,21962,21963,21966,21967,21968,21973,21975,21976,21977,21978,21979,21982,21984,21986,21991,21993,21997,21998,22000,22001,22004,22006,22008,22009,22010,22011,22012,22015,22018,22019,22020,22021,22022,22023,22026,22027,22029,22032,22033,22034,22035,22036,22037,22038,22039,22041,22042,22044,22045,22048,22049,22050,22053,22054,22056,22057,22058,22059,22062,22063,22064,22067,22069,22071,22072,22074,22076,22077,22078,22080,22081,22082,22083,22084,22085,22086,22087,22088,22089,22090,22091,22095,22096,22097,22098,22099,22101,22102,22106,22107,22109,22110,22111,22112,22113,22115,22117,22118,22119,22125,22126,22127,22128,22130,22131,22132,22133,22135,22136,22137,22138,22141,22142,22143,22144,22145,22146,22147,22148,22151,22152,22153,22154,22155,22156,22157,22160,22161,22162,22164,22165,22166,22167,22168,22169,22170,22171,22172,22173,22174,22175,22176,22177,22178,22180,22181,22182,22183,22184,22185,22186,22187,22188,22189,22190,22192,22193,22194,22195,22196,22197,22198,22200,22201,22202,22203,22205,22206,22207,22208,22209,22210,22211,22212,22213,22214,22215,22216,22217,22219,22220,22221,22222,22223,22224,22225,22226,22227,22229,22230,22232,22233,22236,22243,22245,22246,22247,22248,22249,22250,22252,22254,22255,22258,22259,22262,22263,22264,22267,22268,22272,22273,22274,22277,22279,22283,22284,22285,22286,22287,22288,22289,22290,22291,22292,22293,22294,22295,22296,22297,22298,22299,22301,22302,22304,22305,22306,22308,22309,22310,22311,22315,22321,22322,22324,22325,22326,22327,22328,22332,22333,22335,22337,22339,22340,22341,22342,22344,22345,22347,22354,22355,22356,22357,22358,22360,22361,22370,22371,22373,22375,22380,22382,22384,22385,22386,22388,22389,22392,22393,22394,22397,22398,22399,22400,22401,22407,22408,22409,22410,22413,22414,22415,22416,22417,22420,22421,22422,22423,22424,22425,22426,22428,22429,22430,22431,22437,22440,22442,22444,22447,22448,22449,22451,22453,22454,22455,22457,22458,22459,22460,22461,22462,22463,22464,22465,22468,22469,22470,22471,22472,22473,22474,22476,22477,22480,22481,22483,22486,22487,22491,22492,22494,22497,22498,22499,22501,22502,22503,22504,22505,22506,22507,22508,22510,22512,22513,22514,22515,22517,22518,22519,22523,22524,22526,22527,22529,22531,22532,22533,22536,22537,22538,22540,22542,22543,22544,22546,22547,22548,22550,22551,22552,22554,22555,22556,22557,22559,22562,22563,22565,22566,22567,22568,22569,22571,22572,22573,22574,22575,22577,22578,22579,22580,22582,22583,22584,22585,22586,22587,22588,22589,22590,22591,22592,22593,22594,22595,22597,22598,22599,22600,22601,22602,22603,22606,22607,22608,22610,22611,22613,22614,22615,22617,22618,22619,22620,22621,22623,22624,22625,22626,22627,22628,22630,22631,22632,22633,22634,22637,22638,22639,22640,22641,22642,22643,22644,22645,22646,22647,22648,22649,22650,22651,22652,22653,22655,22658,22660,22662,22663,22664,22666,22667,22668,22669,22670,22671,22672,22673,22676,22677,22678,22679,22680,22683,22684,22685,22688,22689,22690,22691,22692,22693,22694,22695,22698,22699,22700,22701,22702,22703,22704,22705,22706,22707,22708,22709,22710,22711,22712,22713,22714,22715,22717,22718,22719,22720,22722,22723,22724,22726,22727,22728,22729,22730,22731,22732,22733,22734,22735,22736,22738,22739,22740,22742,22743,22744,22745,22746,22747,22748,22749,22750,22751,22752,22753,22754,22755,22757,22758,22759,22760,22761,22762,22765,22767,22769,22770,22772,22773,22775,22776,22778,22779,22780,22781,22782,22783,22784,22785,22787,22789,22790,22792,22793,22794,22795,22796,22798,22800,22801,22802,22803,22807,22808,22811,22813,22814,22816,22817,22818,22819,22822,22824,22828,22832,22834,22835,22837,22838,22843,22845,22846,22847,22848,22851,22853,22854,22858,22860,22861,22864,22866,22867,22873,22875,22876,22877,22878,22879,22881,22883,22884,22886,22887,22888,22889,22890,22891,22892,22893,22894,22895,22896,22897,22898,22901,22903,22906,22907,22908,22910,22911,22912,22917,22921,22923,22924,22926,22927,22928,22929,22932,22933,22936,22938,22939,22940,22941,22943,22944,22945,22946,22950,22951,22956,22957,22960,22961,22963,22964,22965,22966,22967,22968,22970,22972,22973,22975,22976,22977,22978,22979,22980,22981,22983,22984,22985,22988,22989,22990,22991,22997,22998,23001,23003,23006,23007,23008,23009,23010,23012,23014,23015,23017,23018,23019,23021,23022,23023,23024,23025,23026,23027,23028,23029,23030,23031,23032,23034,23036,23037,23038,23040,23042,23050,23051,23053,23054,23055,23056,23058,23060,23061,23062,23063,23065,23066,23067,23069,23070,23073,23074,23076,23078,23079,23080,23082,23083,23084,23085,23086,23087,23088,23091,23093,23095,23096,23097,23098,23099,23101,23102,23103,23105,23106,23107,23108,23109,23111,23112,23115,23116,23117,23118,23119,23120,23121,23122,23123,23124,23126,23127,23128,23129,23131,23132,23133,23134,23135,23136,23137,23139,23140,23141,23142,23144,23145,23147,23148,23149,23150,23151,23152,23153,23154,23155,23160,23161,23163,23164,23165,23166,23168,23169,23170,23171,23172,23173,23174,23175,23176,23177,23178,23179,23180,23181,23182,23183,23184,23185,23187,23188,23189,23190,23191,23192,23193,23196,23197,23198,23199,23200,23201,23202,23203,23204,23205,23206,23207,23208,23209,23211,23212,23213,23214,23215,23216,23217,23220,23222,23223,23225,23226,23227,23228,23229,23231,23232,23235,23236,23237,23238,23239,23240,23242,23243,23245,23246,23247,23248,23249,23251,23253,23255,23257,23258,23259,23261,23262,23263,23266,23268,23269,23271,23272,23274,23276,23277,23278,23279,23280,23282,23283,23284,23285,23286,23287,23288,23289,23290,23291,23292,23293,23294,23295,23296,23297,23298,23299,23300,23301,23302,23303,23304,23306,23307,23308,23309,23310,23311,23312,23313,23314,23315,23316,23317,23320,23321,23322,23323,23324,23325,23326,23327,23328,23329,23330,23331,23332,23333,23334,23335,23336,23337,23338,23339,23340,23341,23342,23343,23344,23345,23347,23349,23350,23352,23353,23354,23355,23356,23357,23358,23359,23361,23362,23363,23364,23365,23366,23367,23368,23369,23370,23371,23372,23373,23374,23375,23378,23382,23390,23392,23393,23399,23400,23403,23405,23406,23407,23410,23412,23414,23415,23416,23417,23419,23420,23422,23423,23426,23430,23434,23437,23438,23440,23441,23442,23444,23446,23455,23463,23464,23465,23468,23469,23470,23471,23473,23474,23479,23482,23483,23484,23488,23489,23491,23496,23497,23498,23499,23501,23502,23503,23505,23508,23509,23510,23511,23512,23513,23514,23515,23516,23520,23522,23523,23526,23527,23529,23530,23531,23532,23533,23535,23537,23538,23539,23540,23541,23542,23543,23549,23550,23552,23554,23555,23557,23559,23560,23563,23564,23565,23566,23568,23570,23571,23575,23577,23579,23582,23583,23584,23585,23587,23590,23592,23593,23594,23595,23597,23598,23599,23600,23602,23603,23605,23606,23607,23619,23620,23622,23623,23628,23629,23634,23635,23636,23638,23639,23640,23642,23643,23644,23645,23647,23650,23652,23655,23656,23657,23658,23659,23660,23661,23664,23666,23667,23668,23669,23670,23671,23672,23675,23676,23677,23678,23680,23683,23684,23685,23686,23687,23689,23690,23691,23694,23695,23698,23699,23701,23709,23710,23711,23712,23713,23716,23717,23718,23719,23720,23722,23726,23727,23728,23730,23732,23734,23737,23738,23739,23740,23742,23744,23746,23747,23749,23750,23751,23752,23753,23754,23756,23757,23758,23759,23760,23761,23763,23764,23765,23766,23767,23768,23770,23771,23772,23773,23774,23775,23776,23778,23779,23783,23785,23787,23788,23790,23791,23793,23794,23795,23796,23797,23798,23799,23800,23801,23802,23804,23805,23806,23807,23808,23809,23812,23813,23816,23817,23818,23819,23820,23821,23823,23824,23825,23826,23827,23829,23831,23832,23833,23834,23836,23837,23839,23840,23841,23842,23843,23845,23848,23850,23851,23852,23855,23856,23857,23858,23859,23861,23862,23863,23864,23865,23866,23867,23868,23871,23872,23873,23874,23875,23876,23877,23878,23880,23881,23885,23886,23887,23888,23889,23890,23891,23892,23893,23894,23895,23897,23898,23900,23902,23903,23904,23905,23906,23907,23908,23909,23910,23911,23912,23914,23917,23918,23920,23921,23922,23923,23925,23926,23927,23928,23929,23930,23931,23932,23933,23934,23935,23936,23937,23939,23940,23941,23942,23943,23944,23945,23946,23947,23948,23949,23950,23951,23952,23953,23954,23955,23956,23957,23958,23959,23960,23962,23963,23964,23966,23967,23968,23969,23970,23971,23972,23973,23974,23975,23976,23977,23978,23979,23980,23981,23982,23983,23984,23985,23986,23987,23988,23989,23990,23992,23993,23994,23995,23996,23997,23998,23999,24000,24001,24002,24003,24004,24006,24007,24008,24009,24010,24011,24012,24014,24015,24016,24017,24018,24019,24020,24021,24022,24023,24024,24025,24026,24028,24031,24032,24035,24036,24042,24044,24045,24048,24053,24054,24056,24057,24058,24059,24060,24063,24064,24068,24071,24073,24074,24075,24077,24078,24082,24083,24087,24094,24095,24096,24097,24098,24099,24100,24101,24104,24105,24106,24107,24108,24111,24112,24114,24115,24116,24117,24118,24121,24122,24126,24127,24128,24129,24131,24134,24135,24136,24137,24138,24139,24141,24142,24143,24144,24145,24146,24147,24150,24151,24152,24153,24154,24156,24157,24159,24160,24163,24164,24165,24166,24167,24168,24169,24170,24171,24172,24173,24174,24175,24176,24177,24181,24183,24185,24190,24193,24194,24195,24197,24200,24201,24204,24205,24206,24210,24216,24219,24221,24225,24226,24227,24228,24232,24233,24234,24235,24236,24238,24239,24240,24241,24242,24244,24250,24251,24252,24253,24255,24256,24257,24258,24259,24260,24261,24262,24263,24264,24267,24268,24269,24270,24271,24272,24276,24277,24279,24280,24281,24282,24284,24285,24286,24287,24288,24289,24290,24291,24292,24293,24294,24295,24297,24299,24300,24301,24302,24303,24304,24305,24306,24307,24309,24312,24313,24315,24316,24317,24325,24326,24327,24329,24332,24333,24334,24336,24338,24340,24342,24345,24346,24348,24349,24350,24353,24354,24355,24356,24360,24363,24364,24366,24368,24370,24371,24372,24373,24374,24375,24376,24379,24381,24382,24383,24385,24386,24387,24388,24389,24390,24391,24392,24393,24394,24395,24396,24397,24398,24399,24401,24404,24409,24410,24411,24412,24414,24415,24416,24419,24421,24423,24424,24427,24430,24431,24434,24436,24437,24438,24440,24442,24445,24446,24447,24451,24454,24461,24462,24463,24465,24467,24468,24470,24474,24475,24477,24478,24479,24480,24482,24483,24484,24485,24486,24487,24489,24491,24492,24495,24496,24497,24498,24499,24500,24502,24504,24505,24506,24507,24510,24511,24512,24513,24514,24519,24520,24522,24523,24526,24531,24532,24533,24538,24539,24540,24542,24543,24546,24547,24549,24550,24552,24553,24556,24559,24560,24562,24563,24564,24566,24567,24569,24570,24572,24583,24584,24585,24587,24588,24592,24593,24595,24599,24600,24602,24606,24607,24610,24611,24612,24620,24621,24622,24624,24625,24626,24627,24628,24630,24631,24632,24633,24634,24637,24638,24640,24644,24645,24646,24647,24648,24649,24650,24652,24654,24655,24657,24659,24660,24662,24663,24664,24667,24668,24670,24671,24672,24673,24677,24678,24686,24689,24690,24692,24693,24695,24702,24704,24705,24706,24709,24710,24711,24712,24714,24715,24718,24719,24720,24721,24723,24725,24727,24728,24729,24732,24734,24737,24738,24740,24741,24743,24745,24746,24750,24752,24755,24757,24758,24759,24761,24762,24765,24766,24767,24768,24769,24770,24771,24772,24775,24776,24777,24780,24781,24782,24783,24784,24786,24787,24788,24790,24791,24793,24795,24798,24801,24802,24803,24804,24805,24810,24817,24818,24821,24823,24824,24827,24828,24829,24830,24831,24834,24835,24836,24837,24839,24842,24843,24844,24848,24849,24850,24851,24852,24854,24855,24856,24857,24859,24860,24861,24862,24865,24866,24869,24872,24873,24874,24876,24877,24878,24879,24880,24881,24882,24883,24884,24885,24886,24887,24888,24889,24890,24891,24892,24893,24894,24896,24897,24898,24899,24900,24901,24902,24903,24905,24907,24909,24911,24912,24914,24915,24916,24918,24919,24920,24921,24922,24923,24924,24926,24927,24928,24929,24931,24932,24933,24934,24937,24938,24939,24940,24941,24942,24943,24945,24946,24947,24948,24950,24952,24953,24954,24955,24956,24957,24958,24959,24960,24961,24962,24963,24964,24965,24966,24967,24968,24969,24970,24972,24973,24975,24976,24977,24978,24979,24981,24982,24983,24984,24985,24986,24987,24988,24990,24991,24992,24993,24994,24995,24996,24997,24998,25002,25003,25005,25006,25007,25008,25009,25010,25011,25012,25013,25014,25016,25017,25018,25019,25020,25021,25023,25024,25025,25027,25028,25029,25030,25031,25033,25036,25037,25038,25039,25040,25043,25045,25046,25047,25048,25049,25050,25051,25052,25053,25054,25055,25056,25057,25058,25059,25060,25061,25063,25064,25065,25066,25067,25068,25069,25070,25071,25072,25073,25074,25075,25076,25078,25079,25080,25081,25082,25083,25084,25085,25086,25088,25089,25090,25091,25092,25093,25095,25097,25107,25108,25113,25116,25117,25118,25120,25123,25126,25127,25128,25129,25131,25133,25135,25136,25137,25138,25141,25142,25144,25145,25146,25147,25148,25154,25156,25157,25158,25162,25167,25168,25173,25174,25175,25177,25178,25180,25181,25182,25183,25184,25185,25186,25188,25189,25192,25201,25202,25204,25205,25207,25208,25210,25211,25213,25217,25218,25219,25221,25222,25223,25224,25227,25228,25229,25230,25231,25232,25236,25241,25244,25245,25246,25251,25254,25255,25257,25258,25261,25262,25263,25264,25266,25267,25268,25270,25271,25272,25274,25278,25280,25281,25283,25291,25295,25297,25301,25309,25310,25312,25313,25316,25322,25323,25328,25330,25333,25336,25337,25338,25339,25344,25347,25348,25349,25350,25354,25355,25356,25357,25359,25360,25362,25363,25364,25365,25367,25368,25369,25372,25382,25383,25385,25388,25389,25390,25392,25393,25395,25396,25397,25398,25399,25400,25403,25404,25406,25407,25408,25409,25412,25415,25416,25418,25425,25426,25427,25428,25430,25431,25432,25433,25434,25435,25436,25437,25440,25444,25445,25446,25448,25450,25451,25452,25455,25456,25458,25459,25460,25461,25464,25465,25468,25469,25470,25471,25473,25475,25476,25477,25478,25483,25485,25489,25491,25492,25493,25495,25497,25498,25499,25500,25501,25502,25503,25505,25508,25510,25515,25519,25521,25522,25525,25526,25529,25531,25533,25535,25536,25537,25538,25539,25541,25543,25544,25546,25547,25548,25553,25555,25556,25557,25559,25560,25561,25562,25563,25564,25565,25567,25570,25572,25573,25574,25575,25576,25579,25580,25582,25583,25584,25585,25587,25589,25591,25593,25594,25595,25596,25598,25603,25604,25606,25607,25608,25609,25610,25613,25614,25617,25618,25621,25622,25623,25624,25625,25626,25629,25631,25634,25635,25636,25637,25639,25640,25641,25643,25646,25647,25648,25649,25650,25651,25653,25654,25655,25656,25657,25659,25660,25662,25664,25666,25667,25673,25675,25676,25677,25678,25679,25680,25681,25683,25685,25686,25687,25689,25690,25691,25692,25693,25695,25696,25697,25698,25699,25700,25701,25702,25704,25706,25707,25708,25710,25711,25712,25713,25714,25715,25716,25717,25718,25719,25723,25724,25725,25726,25727,25728,25729,25731,25734,25736,25737,25738,25739,25740,25741,25742,25743,25744,25747,25748,25751,25752,25754,25755,25756,25757,25759,25760,25761,25762,25763,25765,25766,25767,25768,25770,25771,25775,25777,25778,25779,25780,25782,25785,25787,25789,25790,25791,25793,25795,25796,25798,25799,25800,25801,25802,25803,25804,25807,25809,25811,25812,25813,25814,25817,25818,25819,25820,25821,25823,25824,25825,25827,25829,25831,25832,25833,25834,25835,25836,25837,25838,25839,25840,25841,25842,25843,25844,25845,25846,25847,25848,25849,25850,25851,25852,25853,25854,25855,25857,25858,25859,25860,25861,25862,25863,25864,25866,25867,25868,25869,25870,25871,25872,25873,25875,25876,25877,25878,25879,25881,25882,25883,25884,25885,25886,25887,25888,25889,25890,25891,25892,25894,25895,25896,25897,25898,25900,25901,25904,25905,25906,25907,25911,25914,25916,25917,25920,25921,25922,25923,25924,25926,25927,25930,25931,25933,25934,25936,25938,25939,25940,25943,25944,25946,25948,25951,25952,25953,25956,25957,25959,25960,25961,25962,25965,25966,25967,25969,25971,25973,25974,25976,25977,25978,25979,25980,25981,25982,25983,25984,25985,25986,25987,25988,25989,25990,25992,25993,25994,25997,25998,25999,26002,26004,26005,26006,26008,26010,26013,26014,26016,26018,26019,26022,26024,26026,26028,26030,26033,26034,26035,26036,26037,26038,26039,26040,26042,26043,26046,26047,26048,26050,26055,26056,26057,26058,26061,26064,26065,26067,26068,26069,26072,26073,26074,26075,26076,26077,26078,26079,26081,26083,26084,26090,26091,26098,26099,26100,26101,26104,26105,26107,26108,26109,26110,26111,26113,26116,26117,26119,26120,26121,26123,26125,26128,26129,26130,26134,26135,26136,26138,26139,26140,26142,26145,26146,26147,26148,26150,26153,26154,26155,26156,26158,26160,26162,26163,26167,26168,26169,26170,26171,26173,26175,26176,26178,26180,26181,26182,26183,26184,26185,26186,26189,26190,26192,26193,26200,26201,26203,26204,26205,26206,26208,26210,26211,26213,26215,26217,26218,26219,26220,26221,26225,26226,26227,26229,26232,26233,26235,26236,26237,26239,26240,26241,26243,26245,26246,26248,26249,26250,26251,26253,26254,26255,26256,26258,26259,26260,26261,26264,26265,26266,26267,26268,26270,26271,26272,26273,26274,26275,26276,26277,26278,26281,26282,26283,26284,26285,26287,26288,26289,26290,26291,26293,26294,26295,26296,26298,26299,26300,26301,26303,26304,26305,26306,26307,26308,26309,26310,26311,26312,26313,26314,26315,26316,26317,26318,26319,26320,26321,26322,26323,26324,26325,26326,26327,26328,26330,26334,26335,26336,26337,26338,26339,26340,26341,26343,26344,26346,26347,26348,26349,26350,26351,26353,26357,26358,26360,26362,26363,26365,26369,26370,26371,26372,26373,26374,26375,26380,26382,26383,26385,26386,26387,26390,26392,26393,26394,26396,26398,26400,26401,26402,26403,26404,26405,26407,26409,26414,26416,26418,26419,26422,26423,26424,26425,26427,26428,26430,26431,26433,26436,26437,26439,26442,26443,26445,26450,26452,26453,26455,26456,26457,26458,26459,26461,26466,26467,26468,26470,26471,26475,26476,26478,26481,26484,26486,26488,26489,26490,26491,26493,26496,26498,26499,26501,26502,26504,26506,26508,26509,26510,26511,26513,26514,26515,26516,26518,26521,26523,26527,26528,26529,26532,26534,26537,26540,26542,26545,26546,26548,26553,26554,26555,26556,26557,26558,26559,26560,26562,26565,26566,26567,26568,26569,26570,26571,26572,26573,26574,26581,26582,26583,26587,26591,26593,26595,26596,26598,26599,26600,26602,26603,26605,26606,26610,26613,26614,26615,26616,26617,26618,26619,26620,26622,26625,26626,26627,26628,26630,26637,26640,26642,26644,26645,26648,26649,26650,26651,26652,26654,26655,26656,26658,26659,26660,26661,26662,26663,26664,26667,26668,26669,26670,26671,26672,26673,26676,26677,26678,26682,26683,26687,26695,26699,26701,26703,26706,26710,26711,26712,26713,26714,26715,26716,26717,26718,26719,26730,26732,26733,26734,26735,26736,26737,26738,26739,26741,26744,26745,26746,26747,26748,26749,26750,26751,26752,26754,26756,26759,26760,26761,26762,26763,26764,26765,26766,26768,26769,26770,26772,26773,26774,26776,26777,26778,26779,26780,26781,26782,26783,26784,26785,26787,26788,26789,26793,26794,26795,26796,26798,26801,26802,26804,26806,26807,26808,26809,26810,26811,26812,26813,26814,26815,26817,26819,26820,26821,26822,26823,26824,26826,26828,26830,26831,26832,26833,26835,26836,26838,26839,26841,26843,26844,26845,26846,26847,26849,26850,26852,26853,26854,26855,26856,26857,26858,26859,26860,26861,26863,26866,26867,26868,26870,26871,26872,26875,26877,26878,26879,26880,26882,26883,26884,26886,26887,26888,26889,26890,26892,26895,26897,26899,26900,26901,26902,26903,26904,26905,26906,26907,26908,26909,26910,26913,26914,26915,26917,26918,26919,26920,26921,26922,26923,26924,26926,26927,26929,26930,26931,26933,26934,26935,26936,26938,26939,26940,26942,26944,26945,26947,26948,26949,26950,26951,26952,26953,26954,26955,26956,26957,26958,26959,26960,26961,26962,26963,26965,26966,26968,26969,26971,26972,26975,26977,26978,26980,26981,26983,26984,26985,26986,26988,26989,26991,26992,26994,26995,26996,26997,26998,27002,27003,27005,27006,27007,27009,27011,27013,27018,27019,27020,27022,27023,27024,27025,27026,27027,27030,27031,27033,27034,27037,27038,27039,27040,27041,27042,27043,27044,27045,27046,27049,27050,27052,27054,27055,27056,27058,27059,27061,27062,27064,27065,27066,27068,27069,27070,27071,27072,27074,27075,27076,27077,27078,27079,27080,27081,27083,27085,27087,27089,27090,27091,27093,27094,27095,27096,27097,27098,27100,27101,27102,27105,27106,27107,27108,27109,27110,27111,27112,27113,27114,27115,27116,27118,27119,27120,27121,27123,27124,27125,27126,27127,27128,27129,27130,27131,27132,27134,27136,27137,27138,27139,27140,27141,27142,27143,27144,27145,27147,27148,27149,27150,27151,27152,27153,27154,27155,27156,27157,27158,27161,27162,27163,27164,27165,27166,27168,27170,27171,27172,27173,27174,27175,27177,27179,27180,27181,27182,27184,27186,27187,27188,27190,27191,27192,27193,27194,27195,27196,27199,27200,27201,27202,27203,27205,27206,27208,27209,27210,27211,27212,27213,27214,27215,27217,27218,27219,27220,27221,27222,27223,27226,27228,27229,27230,27231,27232,27234,27235,27236,27238,27239,27240,27241,27242,27243,27244,27245,27246,27247,27248,27250,27251,27252,27253,27254,27255,27256,27258,27259,27261,27262,27263,27265,27266,27267,27269,27270,27271,27272,27273,27274,27275,27276,27277,27279,27282,27283,27284,27285,27286,27288,27289,27290,27291,27292,27293,27294,27295,27297,27298,27299,27300,27301,27302,27303,27304,27306,27309,27310,27311,27312,27313,27314,27315,27316,27317,27318,27319,27320,27321,27322,27323,27324,27325,27326,27327,27328,27329,27330,27331,27332,27333,27334,27335,27336,27337,27338,27339,27340,27341,27342,27343,27344,27345,27346,27347,27348,27349,27350,27351,27352,27353,27354,27355,27356,27357,27358,27359,27360,27361,27362,27363,27364,27365,27366,27367,27368,27369,27370,27371,27372,27373,27374,27375,27376,27377,27378,27379,27380,27381,27382,27383,27384,27385,27386,27387,27388,27389,27390,27391,27392,27393,27394,27395,27396,27397,27398,27399,27400,27401,27402,27403,27404,27405,27406,27407,27408,27409,27410,27411,27412,27413,27414,27415,27416,27417,27418,27419,27420,27421,27422,27423,27429,27430,27432,27433,27434,27435,27436,27437,27438,27439,27440,27441,27443,27444,27445,27446,27448,27451,27452,27453,27455,27456,27457,27458,27460,27461,27464,27466,27467,27469,27470,27471,27472,27473,27474,27475,27476,27477,27478,27479,27480,27482,27483,27484,27485,27486,27487,27488,27489,27496,27497,27499,27500,27501,27502,27503,27504,27505,27506,27507,27508,27509,27510,27511,27512,27514,27517,27518,27519,27520,27525,27528,27532,27534,27535,27536,27537,27540,27541,27543,27544,27545,27548,27549,27550,27551,27552,27554,27555,27556,27557,27558,27559,27560,27561,27563,27564,27565,27566,27567,27568,27569,27570,27574,27576,27577,27578,27579,27580,27581,27582,27584,27587,27588,27590,27591,27592,27593,27594,27596,27598,27600,27601,27608,27610,27612,27613,27614,27615,27616,27618,27619,27620,27621,27622,27623,27624,27625,27628,27629,27630,27632,27633,27634,27636,27638,27639,27640,27642,27643,27644,27646,27647,27648,27649,27650,27651,27652,27656,27657,27658,27659,27660,27662,27666,27671,27676,27677,27678,27680,27683,27685,27691,27692,27693,27697,27699,27702,27703,27705,27706,27707,27708,27710,27711,27715,27716,27717,27720,27723,27724,27725,27726,27727,27729,27730,27731,27734,27736,27737,27738,27746,27747,27749,27750,27751,27755,27756,27757,27758,27759,27761,27763,27765,27767,27768,27770,27771,27772,27775,27776,27780,27783,27786,27787,27789,27790,27793,27794,27797,27798,27799,27800,27802,27804,27805,27806,27808,27810,27816,27820,27823,27824,27828,27829,27830,27831,27834,27840,27841,27842,27843,27846,27847,27848,27851,27853,27854,27855,27857,27858,27864,27865,27866,27868,27869,27871,27876,27878,27879,27881,27884,27885,27890,27892,27897,27903,27904,27906,27907,27909,27910,27912,27913,27914,27917,27919,27920,27921,27923,27924,27925,27926,27928,27932,27933,27935,27936,27937,27938,27939,27940,27942,27944,27945,27948,27949,27951,27952,27956,27958,27959,27960,27962,27967,27968,27970,27972,27977,27980,27984,27989,27990,27991,27992,27995,27997,27999,28001,28002,28004,28005,28007,28008,28011,28012,28013,28016,28017,28018,28019,28021,28022,28025,28026,28027,28029,28030,28031,28032,28033,28035,28036,28038,28039,28042,28043,28045,28047,28048,28050,28054,28055,28056,28057,28058,28060,28066,28069,28076,28077,28080,28081,28083,28084,28086,28087,28089,28090,28091,28092,28093,28094,28097,28098,28099,28104,28105,28106,28109,28110,28111,28112,28114,28115,28116,28117,28119,28122,28123,28124,28127,28130,28131,28133,28135,28136,28137,28138,28141,28143,28144,28146,28148,28149,28150,28152,28154,28157,28158,28159,28160,28161,28162,28163,28164,28166,28167,28168,28169,28171,28175,28178,28179,28181,28184,28185,28187,28188,28190,28191,28194,28198,28199,28200,28202,28204,28206,28208,28209,28211,28213,28214,28215,28217,28219,28220,28221,28222,28223,28224,28225,28226,28229,28230,28231,28232,28233,28234,28235,28236,28239,28240,28241,28242,28245,28247,28249,28250,28252,28253,28254,28256,28257,28258,28259,28260,28261,28262,28263,28264,28265,28266,28268,28269,28271,28272,28273,28274,28275,28276,28277,28278,28279,28280,28281,28282,28283,28284,28285,28288,28289,28290,28292,28295,28296,28298,28299,28300,28301,28302,28305,28306,28307,28308,28309,28310,28311,28313,28314,28315,28317,28318,28320,28321,28323,28324,28326,28328,28329,28331,28332,28333,28334,28336,28339,28341,28344,28345,28348,28350,28351,28352,28355,28356,28357,28358,28360,28361,28362,28364,28365,28366,28368,28370,28374,28376,28377,28379,28380,28381,28387,28391,28394,28395,28396,28397,28398,28399,28400,28401,28402,28403,28405,28406,28407,28408,28410,28411,28412,28413,28414,28415,28416,28417,28419,28420,28421,28423,28424,28426,28427,28428,28429,28430,28432,28433,28434,28438,28439,28440,28441,28442,28443,28444,28445,28446,28447,28449,28450,28451,28453,28454,28455,28456,28460,28462,28464,28466,28468,28469,28471,28472,28473,28474,28475,28476,28477,28479,28480,28481,28482,28483,28484,28485,28488,28489,28490,28492,28494,28495,28496,28497,28498,28499,28500,28501,28502,28503,28505,28506,28507,28509,28511,28512,28513,28515,28516,28517,28519,28520,28521,28522,28523,28524,28527,28528,28529,28531,28533,28534,28535,28537,28539,28541,28542,28543,28544,28545,28546,28547,28549,28550,28551,28554,28555,28559,28560,28561,28562,28563,28564,28565,28566,28567,28568,28569,28570,28571,28573,28574,28575,28576,28578,28579,28580,28581,28582,28584,28585,28586,28587,28588,28589,28590,28591,28592,28593,28594,28596,28597,28599,28600,28602,28603,28604,28605,28606,28607,28609,28611,28612,28613,28614,28615,28616,28618,28619,28620,28621,28622,28623,28624,28627,28628,28629,28630,28631,28632,28633,28634,28635,28636,28637,28639,28642,28643,28644,28645,28646,28647,28648,28649,28650,28651,28652,28653,28656,28657,28658,28659,28660,28661,28662,28663,28664,28665,28666,28667,28668,28669,28670,28671,28672,28673,28674,28675,28676,28677,28678,28679,28680,28681,28682,28683,28684,28685,28686,28687,28688,28690,28691,28692,28693,28694,28695,28696,28697,28700,28701,28702,28703,28704,28705,28706,28708,28709,28710,28711,28712,28713,28714,28715,28716,28717,28718,28719,28720,28721,28722,28723,28724,28726,28727,28728,28730,28731,28732,28733,28734,28735,28736,28737,28738,28739,28740,28741,28742,28743,28744,28745,28746,28747,28749,28750,28752,28753,28754,28755,28756,28757,28758,28759,28760,28761,28762,28763,28764,28765,28767,28768,28769,28770,28771,28772,28773,28774,28775,28776,28777,28778,28782,28785,28786,28787,28788,28791,28793,28794,28795,28797,28801,28802,28803,28804,28806,28807,28808,28811,28812,28813,28815,28816,28817,28819,28823,28824,28826,28827,28830,28831,28832,28833,28834,28835,28836,28837,28838,28839,28840,28841,28842,28848,28850,28852,28853,28854,28858,28862,28863,28868,28869,28870,28871,28873,28875,28876,28877,28878,28879,28880,28881,28882,28883,28884,28885,28886,28887,28890,28892,28893,28894,28896,28897,28898,28899,28901,28906,28910,28912,28913,28914,28915,28916,28917,28918,28920,28922,28923,28924,28926,28927,28928,28929,28930,28931,28932,28933,28934,28935,28936,28939,28940,28941,28942,28943,28945,28946,28948,28951,28955,28956,28957,28958,28959,28960,28961,28962,28963,28964,28965,28967,28968,28969,28970,28971,28972,28973,28974,28978,28979,28980,28981,28983,28984,28985,28986,28987,28988,28989,28990,28991,28992,28993,28994,28995,28996,28998,28999,29000,29001,29003,29005,29007,29008,29009,29010,29011,29012,29013,29014,29015,29016,29017,29018,29019,29021,29023,29024,29025,29026,29027,29029,29033,29034,29035,29036,29037,29039,29040,29041,29044,29045,29046,29047,29049,29051,29052,29054,29055,29056,29057,29058,29059,29061,29062,29063,29064,29065,29067,29068,29069,29070,29072,29073,29074,29075,29077,29078,29079,29082,29083,29084,29085,29086,29089,29090,29091,29092,29093,29094,29095,29097,29098,29099,29101,29102,29103,29104,29105,29106,29108,29110,29111,29112,29114,29115,29116,29117,29118,29119,29120,29121,29122,29124,29125,29126,29127,29128,29129,29130,29131,29132,29133,29135,29136,29137,29138,29139,29142,29143,29144,29145,29146,29147,29148,29149,29150,29151,29153,29154,29155,29156,29158,29160,29161,29162,29163,29164,29165,29167,29168,29169,29170,29171,29172,29173,29174,29175,29176,29178,29179,29180,29181,29182,29183,29184,29185,29186,29187,29188,29189,29191,29192,29193,29194,29195,29196,29197,29198,29199,29200,29201,29202,29203,29204,29205,29206,29207,29208,29209,29210,29211,29212,29214,29215,29216,29217,29218,29219,29220,29221,29222,29223,29225,29227,29229,29230,29231,29234,29235,29236,29242,29244,29246,29248,29249,29250,29251,29252,29253,29254,29257,29258,29259,29262,29263,29264,29265,29267,29268,29269,29271,29272,29274,29276,29278,29280,29283,29284,29285,29288,29290,29291,29292,29293,29296,29297,29299,29300,29302,29303,29304,29307,29308,29309,29314,29315,29317,29318,29319,29320,29321,29324,29326,29328,29329,29331,29332,29333,29334,29335,29336,29337,29338,29339,29340,29341,29342,29344,29345,29346,29347,29348,29349,29350,29351,29352,29353,29354,29355,29358,29361,29362,29363,29365,29370,29371,29372,29373,29374,29375,29376,29381,29382,29383,29385,29386,29387,29388,29391,29393,29395,29396,29397,29398,29400,29402,29403,58566,58567,58568,58569,58570,58571,58572,58573,58574,58575,58576,58577,58578,58579,58580,58581,58582,58583,58584,58585,58586,58587,58588,58589,58590,58591,58592,58593,58594,58595,58596,58597,58598,58599,58600,58601,58602,58603,58604,58605,58606,58607,58608,58609,58610,58611,58612,58613,58614,58615,58616,58617,58618,58619,58620,58621,58622,58623,58624,58625,58626,58627,58628,58629,58630,58631,58632,58633,58634,58635,58636,58637,58638,58639,58640,58641,58642,58643,58644,58645,58646,58647,58648,58649,58650,58651,58652,58653,58654,58655,58656,58657,58658,58659,58660,58661,12288,12289,12290,183,713,711,168,12291,12293,8212,65374,8214,8230,8216,8217,8220,8221,12308,12309,12296,12297,12298,12299,12300,12301,12302,12303,12310,12311,12304,12305,177,215,247,8758,8743,8744,8721,8719,8746,8745,8712,8759,8730,8869,8741,8736,8978,8857,8747,8750,8801,8780,8776,8765,8733,8800,8814,8815,8804,8805,8734,8757,8756,9794,9792,176,8242,8243,8451,65284,164,65504,65505,8240,167,8470,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,9650,8251,8594,8592,8593,8595,12307,58662,58663,58664,58665,58666,58667,58668,58669,58670,58671,58672,58673,58674,58675,58676,58677,58678,58679,58680,58681,58682,58683,58684,58685,58686,58687,58688,58689,58690,58691,58692,58693,58694,58695,58696,58697,58698,58699,58700,58701,58702,58703,58704,58705,58706,58707,58708,58709,58710,58711,58712,58713,58714,58715,58716,58717,58718,58719,58720,58721,58722,58723,58724,58725,58726,58727,58728,58729,58730,58731,58732,58733,58734,58735,58736,58737,58738,58739,58740,58741,58742,58743,58744,58745,58746,58747,58748,58749,58750,58751,58752,58753,58754,58755,58756,58757,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,59238,59239,59240,59241,59242,59243,9352,9353,9354,9355,9356,9357,9358,9359,9360,9361,9362,9363,9364,9365,9366,9367,9368,9369,9370,9371,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345,9346,9347,9348,9349,9350,9351,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,8364,59245,12832,12833,12834,12835,12836,12837,12838,12839,12840,12841,59246,59247,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,59248,59249,58758,58759,58760,58761,58762,58763,58764,58765,58766,58767,58768,58769,58770,58771,58772,58773,58774,58775,58776,58777,58778,58779,58780,58781,58782,58783,58784,58785,58786,58787,58788,58789,58790,58791,58792,58793,58794,58795,58796,58797,58798,58799,58800,58801,58802,58803,58804,58805,58806,58807,58808,58809,58810,58811,58812,58813,58814,58815,58816,58817,58818,58819,58820,58821,58822,58823,58824,58825,58826,58827,58828,58829,58830,58831,58832,58833,58834,58835,58836,58837,58838,58839,58840,58841,58842,58843,58844,58845,58846,58847,58848,58849,58850,58851,58852,12288,65281,65282,65283,65509,65285,65286,65287,65288,65289,65290,65291,65292,65293,65294,65295,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,65306,65307,65308,65309,65310,65311,65312,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65339,65340,65341,65342,65343,65344,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,65371,65372,65373,65507,58854,58855,58856,58857,58858,58859,58860,58861,58862,58863,58864,58865,58866,58867,58868,58869,58870,58871,58872,58873,58874,58875,58876,58877,58878,58879,58880,58881,58882,58883,58884,58885,58886,58887,58888,58889,58890,58891,58892,58893,58894,58895,58896,58897,58898,58899,58900,58901,58902,58903,58904,58905,58906,58907,58908,58909,58910,58911,58912,58913,58914,58915,58916,58917,58918,58919,58920,58921,58922,58923,58924,58925,58926,58927,58928,58929,58930,58931,58932,58933,58934,58935,58936,58937,58938,58939,58940,58941,58942,58943,58944,58945,58946,58947,58948,58949,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,59250,59251,59252,59253,59254,59255,59256,59257,59258,59259,59260,58950,58951,58952,58953,58954,58955,58956,58957,58958,58959,58960,58961,58962,58963,58964,58965,58966,58967,58968,58969,58970,58971,58972,58973,58974,58975,58976,58977,58978,58979,58980,58981,58982,58983,58984,58985,58986,58987,58988,58989,58990,58991,58992,58993,58994,58995,58996,58997,58998,58999,59000,59001,59002,59003,59004,59005,59006,59007,59008,59009,59010,59011,59012,59013,59014,59015,59016,59017,59018,59019,59020,59021,59022,59023,59024,59025,59026,59027,59028,59029,59030,59031,59032,59033,59034,59035,59036,59037,59038,59039,59040,59041,59042,59043,59044,59045,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,59261,59262,59263,59264,59265,59266,59267,59268,59046,59047,59048,59049,59050,59051,59052,59053,59054,59055,59056,59057,59058,59059,59060,59061,59062,59063,59064,59065,59066,59067,59068,59069,59070,59071,59072,59073,59074,59075,59076,59077,59078,59079,59080,59081,59082,59083,59084,59085,59086,59087,59088,59089,59090,59091,59092,59093,59094,59095,59096,59097,59098,59099,59100,59101,59102,59103,59104,59105,59106,59107,59108,59109,59110,59111,59112,59113,59114,59115,59116,59117,59118,59119,59120,59121,59122,59123,59124,59125,59126,59127,59128,59129,59130,59131,59132,59133,59134,59135,59136,59137,59138,59139,59140,59141,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,59269,59270,59271,59272,59273,59274,59275,59276,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,59277,59278,59279,59280,59281,59282,59283,65077,65078,65081,65082,65087,65088,65085,65086,65089,65090,65091,65092,59284,59285,65083,65084,65079,65080,65073,59286,65075,65076,59287,59288,59289,59290,59291,59292,59293,59294,59295,59142,59143,59144,59145,59146,59147,59148,59149,59150,59151,59152,59153,59154,59155,59156,59157,59158,59159,59160,59161,59162,59163,59164,59165,59166,59167,59168,59169,59170,59171,59172,59173,59174,59175,59176,59177,59178,59179,59180,59181,59182,59183,59184,59185,59186,59187,59188,59189,59190,59191,59192,59193,59194,59195,59196,59197,59198,59199,59200,59201,59202,59203,59204,59205,59206,59207,59208,59209,59210,59211,59212,59213,59214,59215,59216,59217,59218,59219,59220,59221,59222,59223,59224,59225,59226,59227,59228,59229,59230,59231,59232,59233,59234,59235,59236,59237,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,59296,59297,59298,59299,59300,59301,59302,59303,59304,59305,59306,59307,59308,59309,59310,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,59311,59312,59313,59314,59315,59316,59317,59318,59319,59320,59321,59322,59323,714,715,729,8211,8213,8229,8245,8453,8457,8598,8599,8600,8601,8725,8735,8739,8786,8806,8807,8895,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9581,9582,9583,9584,9585,9586,9587,9601,9602,9603,9604,9605,9606,9607,9608,9609,9610,9611,9612,9613,9614,9615,9619,9620,9621,9660,9661,9698,9699,9700,9701,9737,8853,12306,12317,12318,59324,59325,59326,59327,59328,59329,59330,59331,59332,59333,59334,257,225,462,224,275,233,283,232,299,237,464,236,333,243,466,242,363,250,468,249,470,472,474,476,252,234,593,7743,324,328,505,609,59337,59338,59339,59340,12549,12550,12551,12552,12553,12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582,12583,12584,12585,59341,59342,59343,59344,59345,59346,59347,59348,59349,59350,59351,59352,59353,59354,59355,59356,59357,59358,59359,59360,59361,12321,12322,12323,12324,12325,12326,12327,12328,12329,12963,13198,13199,13212,13213,13214,13217,13252,13262,13265,13266,13269,65072,65506,65508,59362,8481,12849,59363,8208,59364,59365,59366,12540,12443,12444,12541,12542,12294,12445,12446,65097,65098,65099,65100,65101,65102,65103,65104,65105,65106,65108,65109,65110,65111,65113,65114,65115,65116,65117,65118,65119,65120,65121,65122,65123,65124,65125,65126,65128,65129,65130,65131,12350,12272,12273,12274,12275,12276,12277,12278,12279,12280,12281,12282,12283,12295,59380,59381,59382,59383,59384,59385,59386,59387,59388,59389,59390,59391,59392,9472,9473,9474,9475,9476,9477,9478,9479,9480,9481,9482,9483,9484,9485,9486,9487,9488,9489,9490,9491,9492,9493,9494,9495,9496,9497,9498,9499,9500,9501,9502,9503,9504,9505,9506,9507,9508,9509,9510,9511,9512,9513,9514,9515,9516,9517,9518,9519,9520,9521,9522,9523,9524,9525,9526,9527,9528,9529,9530,9531,9532,9533,9534,9535,9536,9537,9538,9539,9540,9541,9542,9543,9544,9545,9546,9547,59393,59394,59395,59396,59397,59398,59399,59400,59401,59402,59403,59404,59405,59406,59407,29404,29405,29407,29410,29411,29412,29413,29414,29415,29418,29419,29429,29430,29433,29437,29438,29439,29440,29442,29444,29445,29446,29447,29448,29449,29451,29452,29453,29455,29456,29457,29458,29460,29464,29465,29466,29471,29472,29475,29476,29478,29479,29480,29485,29487,29488,29490,29491,29493,29494,29498,29499,29500,29501,29504,29505,29506,29507,29508,29509,29510,29511,29512,29513,29514,29515,29516,29518,29519,29521,29523,29524,29525,29526,29528,29529,29530,29531,29532,29533,29534,29535,29537,29538,29539,29540,29541,29542,29543,29544,29545,29546,29547,29550,29552,29553,57344,57345,57346,57347,57348,57349,57350,57351,57352,57353,57354,57355,57356,57357,57358,57359,57360,57361,57362,57363,57364,57365,57366,57367,57368,57369,57370,57371,57372,57373,57374,57375,57376,57377,57378,57379,57380,57381,57382,57383,57384,57385,57386,57387,57388,57389,57390,57391,57392,57393,57394,57395,57396,57397,57398,57399,57400,57401,57402,57403,57404,57405,57406,57407,57408,57409,57410,57411,57412,57413,57414,57415,57416,57417,57418,57419,57420,57421,57422,57423,57424,57425,57426,57427,57428,57429,57430,57431,57432,57433,57434,57435,57436,57437,29554,29555,29556,29557,29558,29559,29560,29561,29562,29563,29564,29565,29567,29568,29569,29570,29571,29573,29574,29576,29578,29580,29581,29583,29584,29586,29587,29588,29589,29591,29592,29593,29594,29596,29597,29598,29600,29601,29603,29604,29605,29606,29607,29608,29610,29612,29613,29617,29620,29621,29622,29624,29625,29628,29629,29630,29631,29633,29635,29636,29637,29638,29639,29643,29644,29646,29650,29651,29652,29653,29654,29655,29656,29658,29659,29660,29661,29663,29665,29666,29667,29668,29670,29672,29674,29675,29676,29678,29679,29680,29681,29683,29684,29685,29686,29687,57438,57439,57440,57441,57442,57443,57444,57445,57446,57447,57448,57449,57450,57451,57452,57453,57454,57455,57456,57457,57458,57459,57460,57461,57462,57463,57464,57465,57466,57467,57468,57469,57470,57471,57472,57473,57474,57475,57476,57477,57478,57479,57480,57481,57482,57483,57484,57485,57486,57487,57488,57489,57490,57491,57492,57493,57494,57495,57496,57497,57498,57499,57500,57501,57502,57503,57504,57505,57506,57507,57508,57509,57510,57511,57512,57513,57514,57515,57516,57517,57518,57519,57520,57521,57522,57523,57524,57525,57526,57527,57528,57529,57530,57531,29688,29689,29690,29691,29692,29693,29694,29695,29696,29697,29698,29700,29703,29704,29707,29708,29709,29710,29713,29714,29715,29716,29717,29718,29719,29720,29721,29724,29725,29726,29727,29728,29729,29731,29732,29735,29737,29739,29741,29743,29745,29746,29751,29752,29753,29754,29755,29757,29758,29759,29760,29762,29763,29764,29765,29766,29767,29768,29769,29770,29771,29772,29773,29774,29775,29776,29777,29778,29779,29780,29782,29784,29789,29792,29793,29794,29795,29796,29797,29798,29799,29800,29801,29802,29803,29804,29806,29807,29809,29810,29811,29812,29813,29816,29817,29818,57532,57533,57534,57535,57536,57537,57538,57539,57540,57541,57542,57543,57544,57545,57546,57547,57548,57549,57550,57551,57552,57553,57554,57555,57556,57557,57558,57559,57560,57561,57562,57563,57564,57565,57566,57567,57568,57569,57570,57571,57572,57573,57574,57575,57576,57577,57578,57579,57580,57581,57582,57583,57584,57585,57586,57587,57588,57589,57590,57591,57592,57593,57594,57595,57596,57597,57598,57599,57600,57601,57602,57603,57604,57605,57606,57607,57608,57609,57610,57611,57612,57613,57614,57615,57616,57617,57618,57619,57620,57621,57622,57623,57624,57625,29819,29820,29821,29823,29826,29828,29829,29830,29832,29833,29834,29836,29837,29839,29841,29842,29843,29844,29845,29846,29847,29848,29849,29850,29851,29853,29855,29856,29857,29858,29859,29860,29861,29862,29866,29867,29868,29869,29870,29871,29872,29873,29874,29875,29876,29877,29878,29879,29880,29881,29883,29884,29885,29886,29887,29888,29889,29890,29891,29892,29893,29894,29895,29896,29897,29898,29899,29900,29901,29902,29903,29904,29905,29907,29908,29909,29910,29911,29912,29913,29914,29915,29917,29919,29921,29925,29927,29928,29929,29930,29931,29932,29933,29936,29937,29938,57626,57627,57628,57629,57630,57631,57632,57633,57634,57635,57636,57637,57638,57639,57640,57641,57642,57643,57644,57645,57646,57647,57648,57649,57650,57651,57652,57653,57654,57655,57656,57657,57658,57659,57660,57661,57662,57663,57664,57665,57666,57667,57668,57669,57670,57671,57672,57673,57674,57675,57676,57677,57678,57679,57680,57681,57682,57683,57684,57685,57686,57687,57688,57689,57690,57691,57692,57693,57694,57695,57696,57697,57698,57699,57700,57701,57702,57703,57704,57705,57706,57707,57708,57709,57710,57711,57712,57713,57714,57715,57716,57717,57718,57719,29939,29941,29944,29945,29946,29947,29948,29949,29950,29952,29953,29954,29955,29957,29958,29959,29960,29961,29962,29963,29964,29966,29968,29970,29972,29973,29974,29975,29979,29981,29982,29984,29985,29986,29987,29988,29990,29991,29994,29998,30004,30006,30009,30012,30013,30015,30017,30018,30019,30020,30022,30023,30025,30026,30029,30032,30033,30034,30035,30037,30038,30039,30040,30045,30046,30047,30048,30049,30050,30051,30052,30055,30056,30057,30059,30060,30061,30062,30063,30064,30065,30067,30069,30070,30071,30074,30075,30076,30077,30078,30080,30081,30082,30084,30085,30087,57720,57721,57722,57723,57724,57725,57726,57727,57728,57729,57730,57731,57732,57733,57734,57735,57736,57737,57738,57739,57740,57741,57742,57743,57744,57745,57746,57747,57748,57749,57750,57751,57752,57753,57754,57755,57756,57757,57758,57759,57760,57761,57762,57763,57764,57765,57766,57767,57768,57769,57770,57771,57772,57773,57774,57775,57776,57777,57778,57779,57780,57781,57782,57783,57784,57785,57786,57787,57788,57789,57790,57791,57792,57793,57794,57795,57796,57797,57798,57799,57800,57801,57802,57803,57804,57805,57806,57807,57808,57809,57810,57811,57812,57813,30088,30089,30090,30092,30093,30094,30096,30099,30101,30104,30107,30108,30110,30114,30118,30119,30120,30121,30122,30125,30134,30135,30138,30139,30143,30144,30145,30150,30155,30156,30158,30159,30160,30161,30163,30167,30169,30170,30172,30173,30175,30176,30177,30181,30185,30188,30189,30190,30191,30194,30195,30197,30198,30199,30200,30202,30203,30205,30206,30210,30212,30214,30215,30216,30217,30219,30221,30222,30223,30225,30226,30227,30228,30230,30234,30236,30237,30238,30241,30243,30247,30248,30252,30254,30255,30257,30258,30262,30263,30265,30266,30267,30269,30273,30274,30276,57814,57815,57816,57817,57818,57819,57820,57821,57822,57823,57824,57825,57826,57827,57828,57829,57830,57831,57832,57833,57834,57835,57836,57837,57838,57839,57840,57841,57842,57843,57844,57845,57846,57847,57848,57849,57850,57851,57852,57853,57854,57855,57856,57857,57858,57859,57860,57861,57862,57863,57864,57865,57866,57867,57868,57869,57870,57871,57872,57873,57874,57875,57876,57877,57878,57879,57880,57881,57882,57883,57884,57885,57886,57887,57888,57889,57890,57891,57892,57893,57894,57895,57896,57897,57898,57899,57900,57901,57902,57903,57904,57905,57906,57907,30277,30278,30279,30280,30281,30282,30283,30286,30287,30288,30289,30290,30291,30293,30295,30296,30297,30298,30299,30301,30303,30304,30305,30306,30308,30309,30310,30311,30312,30313,30314,30316,30317,30318,30320,30321,30322,30323,30324,30325,30326,30327,30329,30330,30332,30335,30336,30337,30339,30341,30345,30346,30348,30349,30351,30352,30354,30356,30357,30359,30360,30362,30363,30364,30365,30366,30367,30368,30369,30370,30371,30373,30374,30375,30376,30377,30378,30379,30380,30381,30383,30384,30387,30389,30390,30391,30392,30393,30394,30395,30396,30397,30398,30400,30401,30403,21834,38463,22467,25384,21710,21769,21696,30353,30284,34108,30702,33406,30861,29233,38552,38797,27688,23433,20474,25353,26263,23736,33018,26696,32942,26114,30414,20985,25942,29100,32753,34948,20658,22885,25034,28595,33453,25420,25170,21485,21543,31494,20843,30116,24052,25300,36299,38774,25226,32793,22365,38712,32610,29240,30333,26575,30334,25670,20336,36133,25308,31255,26001,29677,25644,25203,33324,39041,26495,29256,25198,25292,20276,29923,21322,21150,32458,37030,24110,26758,27036,33152,32465,26834,30917,34444,38225,20621,35876,33502,32990,21253,35090,21093,30404,30407,30409,30411,30412,30419,30421,30425,30426,30428,30429,30430,30432,30433,30434,30435,30436,30438,30439,30440,30441,30442,30443,30444,30445,30448,30451,30453,30454,30455,30458,30459,30461,30463,30464,30466,30467,30469,30470,30474,30476,30478,30479,30480,30481,30482,30483,30484,30485,30486,30487,30488,30491,30492,30493,30494,30497,30499,30500,30501,30503,30506,30507,30508,30510,30512,30513,30514,30515,30516,30521,30523,30525,30526,30527,30530,30532,30533,30534,30536,30537,30538,30539,30540,30541,30542,30543,30546,30547,30548,30549,30550,30551,30552,30553,30556,34180,38649,20445,22561,39281,23453,25265,25253,26292,35961,40077,29190,26479,30865,24754,21329,21271,36744,32972,36125,38049,20493,29384,22791,24811,28953,34987,22868,33519,26412,31528,23849,32503,29997,27893,36454,36856,36924,40763,27604,37145,31508,24444,30887,34006,34109,27605,27609,27606,24065,24199,30201,38381,25949,24330,24517,36767,22721,33218,36991,38491,38829,36793,32534,36140,25153,20415,21464,21342,36776,36777,36779,36941,26631,24426,33176,34920,40150,24971,21035,30250,24428,25996,28626,28392,23486,25672,20853,20912,26564,19993,31177,39292,28851,30557,30558,30559,30560,30564,30567,30569,30570,30573,30574,30575,30576,30577,30578,30579,30580,30581,30582,30583,30584,30586,30587,30588,30593,30594,30595,30598,30599,30600,30601,30602,30603,30607,30608,30611,30612,30613,30614,30615,30616,30617,30618,30619,30620,30621,30622,30625,30627,30628,30630,30632,30635,30637,30638,30639,30641,30642,30644,30646,30647,30648,30649,30650,30652,30654,30656,30657,30658,30659,30660,30661,30662,30663,30664,30665,30666,30667,30668,30670,30671,30672,30673,30674,30675,30676,30677,30678,30680,30681,30682,30685,30686,30687,30688,30689,30692,30149,24182,29627,33760,25773,25320,38069,27874,21338,21187,25615,38082,31636,20271,24091,33334,33046,33162,28196,27850,39539,25429,21340,21754,34917,22496,19981,24067,27493,31807,37096,24598,25830,29468,35009,26448,25165,36130,30572,36393,37319,24425,33756,34081,39184,21442,34453,27531,24813,24808,28799,33485,33329,20179,27815,34255,25805,31961,27133,26361,33609,21397,31574,20391,20876,27979,23618,36461,25554,21449,33580,33590,26597,30900,25661,23519,23700,24046,35815,25286,26612,35962,25600,25530,34633,39307,35863,32544,38130,20135,38416,39076,26124,29462,30694,30696,30698,30703,30704,30705,30706,30708,30709,30711,30713,30714,30715,30716,30723,30724,30725,30726,30727,30728,30730,30731,30734,30735,30736,30739,30741,30745,30747,30750,30752,30753,30754,30756,30760,30762,30763,30766,30767,30769,30770,30771,30773,30774,30781,30783,30785,30786,30787,30788,30790,30792,30793,30794,30795,30797,30799,30801,30803,30804,30808,30809,30810,30811,30812,30814,30815,30816,30817,30818,30819,30820,30821,30822,30823,30824,30825,30831,30832,30833,30834,30835,30836,30837,30838,30840,30841,30842,30843,30845,30846,30847,30848,30849,30850,30851,22330,23581,24120,38271,20607,32928,21378,25950,30021,21809,20513,36229,25220,38046,26397,22066,28526,24034,21557,28818,36710,25199,25764,25507,24443,28552,37108,33251,36784,23576,26216,24561,27785,38472,36225,34924,25745,31216,22478,27225,25104,21576,20056,31243,24809,28548,35802,25215,36894,39563,31204,21507,30196,25345,21273,27744,36831,24347,39536,32827,40831,20360,23610,36196,32709,26021,28861,20805,20914,34411,23815,23456,25277,37228,30068,36364,31264,24833,31609,20167,32504,30597,19985,33261,21021,20986,27249,21416,36487,38148,38607,28353,38500,26970,30852,30853,30854,30856,30858,30859,30863,30864,30866,30868,30869,30870,30873,30877,30878,30880,30882,30884,30886,30888,30889,30890,30891,30892,30893,30894,30895,30901,30902,30903,30904,30906,30907,30908,30909,30911,30912,30914,30915,30916,30918,30919,30920,30924,30925,30926,30927,30929,30930,30931,30934,30935,30936,30938,30939,30940,30941,30942,30943,30944,30945,30946,30947,30948,30949,30950,30951,30953,30954,30955,30957,30958,30959,30960,30961,30963,30965,30966,30968,30969,30971,30972,30973,30974,30975,30976,30978,30979,30980,30982,30983,30984,30985,30986,30987,30988,30784,20648,30679,25616,35302,22788,25571,24029,31359,26941,20256,33337,21912,20018,30126,31383,24162,24202,38383,21019,21561,28810,25462,38180,22402,26149,26943,37255,21767,28147,32431,34850,25139,32496,30133,33576,30913,38604,36766,24904,29943,35789,27492,21050,36176,27425,32874,33905,22257,21254,20174,19995,20945,31895,37259,31751,20419,36479,31713,31388,25703,23828,20652,33030,30209,31929,28140,32736,26449,23384,23544,30923,25774,25619,25514,25387,38169,25645,36798,31572,30249,25171,22823,21574,27513,20643,25140,24102,27526,20195,36151,34955,24453,36910,30989,30990,30991,30992,30993,30994,30996,30997,30998,30999,31000,31001,31002,31003,31004,31005,31007,31008,31009,31010,31011,31013,31014,31015,31016,31017,31018,31019,31020,31021,31022,31023,31024,31025,31026,31027,31029,31030,31031,31032,31033,31037,31039,31042,31043,31044,31045,31047,31050,31051,31052,31053,31054,31055,31056,31057,31058,31060,31061,31064,31065,31073,31075,31076,31078,31081,31082,31083,31084,31086,31088,31089,31090,31091,31092,31093,31094,31097,31099,31100,31101,31102,31103,31106,31107,31110,31111,31112,31113,31115,31116,31117,31118,31120,31121,31122,24608,32829,25285,20025,21333,37112,25528,32966,26086,27694,20294,24814,28129,35806,24377,34507,24403,25377,20826,33633,26723,20992,25443,36424,20498,23707,31095,23548,21040,31291,24764,36947,30423,24503,24471,30340,36460,28783,30331,31561,30634,20979,37011,22564,20302,28404,36842,25932,31515,29380,28068,32735,23265,25269,24213,22320,33922,31532,24093,24351,36882,32532,39072,25474,28359,30872,28857,20856,38747,22443,30005,20291,30008,24215,24806,22880,28096,27583,30857,21500,38613,20939,20993,25481,21514,38035,35843,36300,29241,30879,34678,36845,35853,21472,31123,31124,31125,31126,31127,31128,31129,31131,31132,31133,31134,31135,31136,31137,31138,31139,31140,31141,31142,31144,31145,31146,31147,31148,31149,31150,31151,31152,31153,31154,31156,31157,31158,31159,31160,31164,31167,31170,31172,31173,31175,31176,31178,31180,31182,31183,31184,31187,31188,31190,31191,31193,31194,31195,31196,31197,31198,31200,31201,31202,31205,31208,31210,31212,31214,31217,31218,31219,31220,31221,31222,31223,31225,31226,31228,31230,31231,31233,31236,31237,31239,31240,31241,31242,31244,31247,31248,31249,31250,31251,31253,31254,31256,31257,31259,31260,19969,30447,21486,38025,39030,40718,38189,23450,35746,20002,19996,20908,33891,25026,21160,26635,20375,24683,20923,27934,20828,25238,26007,38497,35910,36887,30168,37117,30563,27602,29322,29420,35835,22581,30585,36172,26460,38208,32922,24230,28193,22930,31471,30701,38203,27573,26029,32526,22534,20817,38431,23545,22697,21544,36466,25958,39039,22244,38045,30462,36929,25479,21702,22810,22842,22427,36530,26421,36346,33333,21057,24816,22549,34558,23784,40517,20420,39069,35769,23077,24694,21380,25212,36943,37122,39295,24681,32780,20799,32819,23572,39285,27953,20108,31261,31263,31265,31266,31268,31269,31270,31271,31272,31273,31274,31275,31276,31277,31278,31279,31280,31281,31282,31284,31285,31286,31288,31290,31294,31296,31297,31298,31299,31300,31301,31303,31304,31305,31306,31307,31308,31309,31310,31311,31312,31314,31315,31316,31317,31318,31320,31321,31322,31323,31324,31325,31326,31327,31328,31329,31330,31331,31332,31333,31334,31335,31336,31337,31338,31339,31340,31341,31342,31343,31345,31346,31347,31349,31355,31356,31357,31358,31362,31365,31367,31369,31370,31371,31372,31374,31375,31376,31379,31380,31385,31386,31387,31390,31393,31394,36144,21457,32602,31567,20240,20047,38400,27861,29648,34281,24070,30058,32763,27146,30718,38034,32321,20961,28902,21453,36820,33539,36137,29359,39277,27867,22346,33459,26041,32938,25151,38450,22952,20223,35775,32442,25918,33778,38750,21857,39134,32933,21290,35837,21536,32954,24223,27832,36153,33452,37210,21545,27675,20998,32439,22367,28954,27774,31881,22859,20221,24575,24868,31914,20016,23553,26539,34562,23792,38155,39118,30127,28925,36898,20911,32541,35773,22857,20964,20315,21542,22827,25975,32932,23413,25206,25282,36752,24133,27679,31526,20239,20440,26381,31395,31396,31399,31401,31402,31403,31406,31407,31408,31409,31410,31412,31413,31414,31415,31416,31417,31418,31419,31420,31421,31422,31424,31425,31426,31427,31428,31429,31430,31431,31432,31433,31434,31436,31437,31438,31439,31440,31441,31442,31443,31444,31445,31447,31448,31450,31451,31452,31453,31457,31458,31460,31463,31464,31465,31466,31467,31468,31470,31472,31473,31474,31475,31476,31477,31478,31479,31480,31483,31484,31486,31488,31489,31490,31493,31495,31497,31500,31501,31502,31504,31506,31507,31510,31511,31512,31514,31516,31517,31519,31521,31522,31523,31527,31529,31533,28014,28074,31119,34993,24343,29995,25242,36741,20463,37340,26023,33071,33105,24220,33104,36212,21103,35206,36171,22797,20613,20184,38428,29238,33145,36127,23500,35747,38468,22919,32538,21648,22134,22030,35813,25913,27010,38041,30422,28297,24178,29976,26438,26577,31487,32925,36214,24863,31174,25954,36195,20872,21018,38050,32568,32923,32434,23703,28207,26464,31705,30347,39640,33167,32660,31957,25630,38224,31295,21578,21733,27468,25601,25096,40509,33011,30105,21106,38761,33883,26684,34532,38401,38548,38124,20010,21508,32473,26681,36319,32789,26356,24218,32697,31535,31536,31538,31540,31541,31542,31543,31545,31547,31549,31551,31552,31553,31554,31555,31556,31558,31560,31562,31565,31566,31571,31573,31575,31577,31580,31582,31583,31585,31587,31588,31589,31590,31591,31592,31593,31594,31595,31596,31597,31599,31600,31603,31604,31606,31608,31610,31612,31613,31615,31617,31618,31619,31620,31622,31623,31624,31625,31626,31627,31628,31630,31631,31633,31634,31635,31638,31640,31641,31642,31643,31646,31647,31648,31651,31652,31653,31662,31663,31664,31666,31667,31669,31670,31671,31673,31674,31675,31676,31677,31678,31679,31680,31682,31683,31684,22466,32831,26775,24037,25915,21151,24685,40858,20379,36524,20844,23467,24339,24041,27742,25329,36129,20849,38057,21246,27807,33503,29399,22434,26500,36141,22815,36764,33735,21653,31629,20272,27837,23396,22993,40723,21476,34506,39592,35895,32929,25925,39038,22266,38599,21038,29916,21072,23521,25346,35074,20054,25296,24618,26874,20851,23448,20896,35266,31649,39302,32592,24815,28748,36143,20809,24191,36891,29808,35268,22317,30789,24402,40863,38394,36712,39740,35809,30328,26690,26588,36330,36149,21053,36746,28378,26829,38149,37101,22269,26524,35065,36807,21704,31685,31688,31689,31690,31691,31693,31694,31695,31696,31698,31700,31701,31702,31703,31704,31707,31708,31710,31711,31712,31714,31715,31716,31719,31720,31721,31723,31724,31725,31727,31728,31730,31731,31732,31733,31734,31736,31737,31738,31739,31741,31743,31744,31745,31746,31747,31748,31749,31750,31752,31753,31754,31757,31758,31760,31761,31762,31763,31764,31765,31767,31768,31769,31770,31771,31772,31773,31774,31776,31777,31778,31779,31780,31781,31784,31785,31787,31788,31789,31790,31791,31792,31793,31794,31795,31796,31797,31798,31799,31801,31802,31803,31804,31805,31806,31810,39608,23401,28023,27686,20133,23475,39559,37219,25000,37039,38889,21547,28085,23506,20989,21898,32597,32752,25788,25421,26097,25022,24717,28938,27735,27721,22831,26477,33322,22741,22158,35946,27627,37085,22909,32791,21495,28009,21621,21917,33655,33743,26680,31166,21644,20309,21512,30418,35977,38402,27827,28088,36203,35088,40548,36154,22079,40657,30165,24456,29408,24680,21756,20136,27178,34913,24658,36720,21700,28888,34425,40511,27946,23439,24344,32418,21897,20399,29492,21564,21402,20505,21518,21628,20046,24573,29786,22774,33899,32993,34676,29392,31946,28246,31811,31812,31813,31814,31815,31816,31817,31818,31819,31820,31822,31823,31824,31825,31826,31827,31828,31829,31830,31831,31832,31833,31834,31835,31836,31837,31838,31839,31840,31841,31842,31843,31844,31845,31846,31847,31848,31849,31850,31851,31852,31853,31854,31855,31856,31857,31858,31861,31862,31863,31864,31865,31866,31870,31871,31872,31873,31874,31875,31876,31877,31878,31879,31880,31882,31883,31884,31885,31886,31887,31888,31891,31892,31894,31897,31898,31899,31904,31905,31907,31910,31911,31912,31913,31915,31916,31917,31919,31920,31924,31925,31926,31927,31928,31930,31931,24359,34382,21804,25252,20114,27818,25143,33457,21719,21326,29502,28369,30011,21010,21270,35805,27088,24458,24576,28142,22351,27426,29615,26707,36824,32531,25442,24739,21796,30186,35938,28949,28067,23462,24187,33618,24908,40644,30970,34647,31783,30343,20976,24822,29004,26179,24140,24653,35854,28784,25381,36745,24509,24674,34516,22238,27585,24724,24935,21321,24800,26214,36159,31229,20250,28905,27719,35763,35826,32472,33636,26127,23130,39746,27985,28151,35905,27963,20249,28779,33719,25110,24785,38669,36135,31096,20987,22334,22522,26426,30072,31293,31215,31637,31935,31936,31938,31939,31940,31942,31945,31947,31950,31951,31952,31953,31954,31955,31956,31960,31962,31963,31965,31966,31969,31970,31971,31972,31973,31974,31975,31977,31978,31979,31980,31981,31982,31984,31985,31986,31987,31988,31989,31990,31991,31993,31994,31996,31997,31998,31999,32000,32001,32002,32003,32004,32005,32006,32007,32008,32009,32011,32012,32013,32014,32015,32016,32017,32018,32019,32020,32021,32022,32023,32024,32025,32026,32027,32028,32029,32030,32031,32033,32035,32036,32037,32038,32040,32041,32042,32044,32045,32046,32048,32049,32050,32051,32052,32053,32054,32908,39269,36857,28608,35749,40481,23020,32489,32521,21513,26497,26840,36753,31821,38598,21450,24613,30142,27762,21363,23241,32423,25380,20960,33034,24049,34015,25216,20864,23395,20238,31085,21058,24760,27982,23492,23490,35745,35760,26082,24524,38469,22931,32487,32426,22025,26551,22841,20339,23478,21152,33626,39050,36158,30002,38078,20551,31292,20215,26550,39550,23233,27516,30417,22362,23574,31546,38388,29006,20860,32937,33392,22904,32516,33575,26816,26604,30897,30839,25315,25441,31616,20461,21098,20943,33616,27099,37492,36341,36145,35265,38190,31661,20214,32055,32056,32057,32058,32059,32060,32061,32062,32063,32064,32065,32066,32067,32068,32069,32070,32071,32072,32073,32074,32075,32076,32077,32078,32079,32080,32081,32082,32083,32084,32085,32086,32087,32088,32089,32090,32091,32092,32093,32094,32095,32096,32097,32098,32099,32100,32101,32102,32103,32104,32105,32106,32107,32108,32109,32111,32112,32113,32114,32115,32116,32117,32118,32120,32121,32122,32123,32124,32125,32126,32127,32128,32129,32130,32131,32132,32133,32134,32135,32136,32137,32138,32139,32140,32141,32142,32143,32144,32145,32146,32147,32148,32149,32150,32151,32152,20581,33328,21073,39279,28176,28293,28071,24314,20725,23004,23558,27974,27743,30086,33931,26728,22870,35762,21280,37233,38477,34121,26898,30977,28966,33014,20132,37066,27975,39556,23047,22204,25605,38128,30699,20389,33050,29409,35282,39290,32564,32478,21119,25945,37237,36735,36739,21483,31382,25581,25509,30342,31224,34903,38454,25130,21163,33410,26708,26480,25463,30571,31469,27905,32467,35299,22992,25106,34249,33445,30028,20511,20171,30117,35819,23626,24062,31563,26020,37329,20170,27941,35167,32039,38182,20165,35880,36827,38771,26187,31105,36817,28908,28024,32153,32154,32155,32156,32157,32158,32159,32160,32161,32162,32163,32164,32165,32167,32168,32169,32170,32171,32172,32173,32175,32176,32177,32178,32179,32180,32181,32182,32183,32184,32185,32186,32187,32188,32189,32190,32191,32192,32193,32194,32195,32196,32197,32198,32199,32200,32201,32202,32203,32204,32205,32206,32207,32208,32209,32210,32211,32212,32213,32214,32215,32216,32217,32218,32219,32220,32221,32222,32223,32224,32225,32226,32227,32228,32229,32230,32231,32232,32233,32234,32235,32236,32237,32238,32239,32240,32241,32242,32243,32244,32245,32246,32247,32248,32249,32250,23613,21170,33606,20834,33550,30555,26230,40120,20140,24778,31934,31923,32463,20117,35686,26223,39048,38745,22659,25964,38236,24452,30153,38742,31455,31454,20928,28847,31384,25578,31350,32416,29590,38893,20037,28792,20061,37202,21417,25937,26087,33276,33285,21646,23601,30106,38816,25304,29401,30141,23621,39545,33738,23616,21632,30697,20030,27822,32858,25298,25454,24040,20855,36317,36382,38191,20465,21477,24807,28844,21095,25424,40515,23071,20518,30519,21367,32482,25733,25899,25225,25496,20500,29237,35273,20915,35776,32477,22343,33740,38055,20891,21531,23803,32251,32252,32253,32254,32255,32256,32257,32258,32259,32260,32261,32262,32263,32264,32265,32266,32267,32268,32269,32270,32271,32272,32273,32274,32275,32276,32277,32278,32279,32280,32281,32282,32283,32284,32285,32286,32287,32288,32289,32290,32291,32292,32293,32294,32295,32296,32297,32298,32299,32300,32301,32302,32303,32304,32305,32306,32307,32308,32309,32310,32311,32312,32313,32314,32316,32317,32318,32319,32320,32322,32323,32324,32325,32326,32328,32329,32330,32331,32332,32333,32334,32335,32336,32337,32338,32339,32340,32341,32342,32343,32344,32345,32346,32347,32348,32349,20426,31459,27994,37089,39567,21888,21654,21345,21679,24320,25577,26999,20975,24936,21002,22570,21208,22350,30733,30475,24247,24951,31968,25179,25239,20130,28821,32771,25335,28900,38752,22391,33499,26607,26869,30933,39063,31185,22771,21683,21487,28212,20811,21051,23458,35838,32943,21827,22438,24691,22353,21549,31354,24656,23380,25511,25248,21475,25187,23495,26543,21741,31391,33510,37239,24211,35044,22840,22446,25358,36328,33007,22359,31607,20393,24555,23485,27454,21281,31568,29378,26694,30719,30518,26103,20917,20111,30420,23743,31397,33909,22862,39745,20608,32350,32351,32352,32353,32354,32355,32356,32357,32358,32359,32360,32361,32362,32363,32364,32365,32366,32367,32368,32369,32370,32371,32372,32373,32374,32375,32376,32377,32378,32379,32380,32381,32382,32383,32384,32385,32387,32388,32389,32390,32391,32392,32393,32394,32395,32396,32397,32398,32399,32400,32401,32402,32403,32404,32405,32406,32407,32408,32409,32410,32412,32413,32414,32430,32436,32443,32444,32470,32484,32492,32505,32522,32528,32542,32567,32569,32571,32572,32573,32574,32575,32576,32577,32579,32582,32583,32584,32585,32586,32587,32588,32589,32590,32591,32594,32595,39304,24871,28291,22372,26118,25414,22256,25324,25193,24275,38420,22403,25289,21895,34593,33098,36771,21862,33713,26469,36182,34013,23146,26639,25318,31726,38417,20848,28572,35888,25597,35272,25042,32518,28866,28389,29701,27028,29436,24266,37070,26391,28010,25438,21171,29282,32769,20332,23013,37226,28889,28061,21202,20048,38647,38253,34174,30922,32047,20769,22418,25794,32907,31867,27882,26865,26974,20919,21400,26792,29313,40654,31729,29432,31163,28435,29702,26446,37324,40100,31036,33673,33620,21519,26647,20029,21385,21169,30782,21382,21033,20616,20363,20432,32598,32601,32603,32604,32605,32606,32608,32611,32612,32613,32614,32615,32619,32620,32621,32623,32624,32627,32629,32630,32631,32632,32634,32635,32636,32637,32639,32640,32642,32643,32644,32645,32646,32647,32648,32649,32651,32653,32655,32656,32657,32658,32659,32661,32662,32663,32664,32665,32667,32668,32672,32674,32675,32677,32678,32680,32681,32682,32683,32684,32685,32686,32689,32691,32692,32693,32694,32695,32698,32699,32702,32704,32706,32707,32708,32710,32711,32712,32713,32715,32717,32719,32720,32721,32722,32723,32726,32727,32729,32730,32731,32732,32733,32734,32738,32739,30178,31435,31890,27813,38582,21147,29827,21737,20457,32852,33714,36830,38256,24265,24604,28063,24088,25947,33080,38142,24651,28860,32451,31918,20937,26753,31921,33391,20004,36742,37327,26238,20142,35845,25769,32842,20698,30103,29134,23525,36797,28518,20102,25730,38243,24278,26009,21015,35010,28872,21155,29454,29747,26519,30967,38678,20020,37051,40158,28107,20955,36161,21533,25294,29618,33777,38646,40836,38083,20278,32666,20940,28789,38517,23725,39046,21478,20196,28316,29705,27060,30827,39311,30041,21016,30244,27969,26611,20845,40857,32843,21657,31548,31423,32740,32743,32744,32746,32747,32748,32749,32751,32754,32756,32757,32758,32759,32760,32761,32762,32765,32766,32767,32770,32775,32776,32777,32778,32782,32783,32785,32787,32794,32795,32797,32798,32799,32801,32803,32804,32811,32812,32813,32814,32815,32816,32818,32820,32825,32826,32828,32830,32832,32833,32836,32837,32839,32840,32841,32846,32847,32848,32849,32851,32853,32854,32855,32857,32859,32860,32861,32862,32863,32864,32865,32866,32867,32868,32869,32870,32871,32872,32875,32876,32877,32878,32879,32880,32882,32883,32884,32885,32886,32887,32888,32889,32890,32891,32892,32893,38534,22404,25314,38471,27004,23044,25602,31699,28431,38475,33446,21346,39045,24208,28809,25523,21348,34383,40065,40595,30860,38706,36335,36162,40575,28510,31108,24405,38470,25134,39540,21525,38109,20387,26053,23653,23649,32533,34385,27695,24459,29575,28388,32511,23782,25371,23402,28390,21365,20081,25504,30053,25249,36718,20262,20177,27814,32438,35770,33821,34746,32599,36923,38179,31657,39585,35064,33853,27931,39558,32476,22920,40635,29595,30721,34434,39532,39554,22043,21527,22475,20080,40614,21334,36808,33033,30610,39314,34542,28385,34067,26364,24930,28459,32894,32897,32898,32901,32904,32906,32909,32910,32911,32912,32913,32914,32916,32917,32919,32921,32926,32931,32934,32935,32936,32940,32944,32947,32949,32950,32952,32953,32955,32965,32967,32968,32969,32970,32971,32975,32976,32977,32978,32979,32980,32981,32984,32991,32992,32994,32995,32998,33006,33013,33015,33017,33019,33022,33023,33024,33025,33027,33028,33029,33031,33032,33035,33036,33045,33047,33049,33051,33052,33053,33055,33056,33057,33058,33059,33060,33061,33062,33063,33064,33065,33066,33067,33069,33070,33072,33075,33076,33077,33079,33081,33082,33083,33084,33085,33087,35881,33426,33579,30450,27667,24537,33725,29483,33541,38170,27611,30683,38086,21359,33538,20882,24125,35980,36152,20040,29611,26522,26757,37238,38665,29028,27809,30473,23186,38209,27599,32654,26151,23504,22969,23194,38376,38391,20204,33804,33945,27308,30431,38192,29467,26790,23391,30511,37274,38753,31964,36855,35868,24357,31859,31192,35269,27852,34588,23494,24130,26825,30496,32501,20885,20813,21193,23081,32517,38754,33495,25551,30596,34256,31186,28218,24217,22937,34065,28781,27665,25279,30399,25935,24751,38397,26126,34719,40483,38125,21517,21629,35884,25720,33088,33089,33090,33091,33092,33093,33095,33097,33101,33102,33103,33106,33110,33111,33112,33115,33116,33117,33118,33119,33121,33122,33123,33124,33126,33128,33130,33131,33132,33135,33138,33139,33141,33142,33143,33144,33153,33155,33156,33157,33158,33159,33161,33163,33164,33165,33166,33168,33170,33171,33172,33173,33174,33175,33177,33178,33182,33183,33184,33185,33186,33188,33189,33191,33193,33195,33196,33197,33198,33199,33200,33201,33202,33204,33205,33206,33207,33208,33209,33212,33213,33214,33215,33220,33221,33223,33224,33225,33227,33229,33230,33231,33232,33233,33234,33235,25721,34321,27169,33180,30952,25705,39764,25273,26411,33707,22696,40664,27819,28448,23518,38476,35851,29279,26576,25287,29281,20137,22982,27597,22675,26286,24149,21215,24917,26408,30446,30566,29287,31302,25343,21738,21584,38048,37027,23068,32435,27670,20035,22902,32784,22856,21335,30007,38590,22218,25376,33041,24700,38393,28118,21602,39297,20869,23273,33021,22958,38675,20522,27877,23612,25311,20320,21311,33147,36870,28346,34091,25288,24180,30910,25781,25467,24565,23064,37247,40479,23615,25423,32834,23421,21870,38218,38221,28037,24744,26592,29406,20957,23425,33236,33237,33238,33239,33240,33241,33242,33243,33244,33245,33246,33247,33248,33249,33250,33252,33253,33254,33256,33257,33259,33262,33263,33264,33265,33266,33269,33270,33271,33272,33273,33274,33277,33279,33283,33287,33288,33289,33290,33291,33294,33295,33297,33299,33301,33302,33303,33304,33305,33306,33309,33312,33316,33317,33318,33319,33321,33326,33330,33338,33340,33341,33343,33344,33345,33346,33347,33349,33350,33352,33354,33356,33357,33358,33360,33361,33362,33363,33364,33365,33366,33367,33369,33371,33372,33373,33374,33376,33377,33378,33379,33380,33381,33382,33383,33385,25319,27870,29275,25197,38062,32445,33043,27987,20892,24324,22900,21162,24594,22899,26262,34384,30111,25386,25062,31983,35834,21734,27431,40485,27572,34261,21589,20598,27812,21866,36276,29228,24085,24597,29750,25293,25490,29260,24472,28227,27966,25856,28504,30424,30928,30460,30036,21028,21467,20051,24222,26049,32810,32982,25243,21638,21032,28846,34957,36305,27873,21624,32986,22521,35060,36180,38506,37197,20329,27803,21943,30406,30768,25256,28921,28558,24429,34028,26842,30844,31735,33192,26379,40527,25447,30896,22383,30738,38713,25209,25259,21128,29749,27607,33386,33387,33388,33389,33393,33397,33398,33399,33400,33403,33404,33408,33409,33411,33413,33414,33415,33417,33420,33424,33427,33428,33429,33430,33434,33435,33438,33440,33442,33443,33447,33458,33461,33462,33466,33467,33468,33471,33472,33474,33475,33477,33478,33481,33488,33494,33497,33498,33501,33506,33511,33512,33513,33514,33516,33517,33518,33520,33522,33523,33525,33526,33528,33530,33532,33533,33534,33535,33536,33546,33547,33549,33552,33554,33555,33558,33560,33561,33565,33566,33567,33568,33569,33570,33571,33572,33573,33574,33577,33578,33582,33584,33586,33591,33595,33597,21860,33086,30130,30382,21305,30174,20731,23617,35692,31687,20559,29255,39575,39128,28418,29922,31080,25735,30629,25340,39057,36139,21697,32856,20050,22378,33529,33805,24179,20973,29942,35780,23631,22369,27900,39047,23110,30772,39748,36843,31893,21078,25169,38138,20166,33670,33889,33769,33970,22484,26420,22275,26222,28006,35889,26333,28689,26399,27450,26646,25114,22971,19971,20932,28422,26578,27791,20854,26827,22855,27495,30054,23822,33040,40784,26071,31048,31041,39569,36215,23682,20062,20225,21551,22865,30732,22120,27668,36804,24323,27773,27875,35755,25488,33598,33599,33601,33602,33604,33605,33608,33610,33611,33612,33613,33614,33619,33621,33622,33623,33624,33625,33629,33634,33648,33649,33650,33651,33652,33653,33654,33657,33658,33662,33663,33664,33665,33666,33667,33668,33671,33672,33674,33675,33676,33677,33679,33680,33681,33684,33685,33686,33687,33689,33690,33693,33695,33697,33698,33699,33700,33701,33702,33703,33708,33709,33710,33711,33717,33723,33726,33727,33730,33731,33732,33734,33736,33737,33739,33741,33742,33744,33745,33746,33747,33749,33751,33753,33754,33755,33758,33762,33763,33764,33766,33767,33768,33771,33772,33773,24688,27965,29301,25190,38030,38085,21315,36801,31614,20191,35878,20094,40660,38065,38067,21069,28508,36963,27973,35892,22545,23884,27424,27465,26538,21595,33108,32652,22681,34103,24378,25250,27207,38201,25970,24708,26725,30631,20052,20392,24039,38808,25772,32728,23789,20431,31373,20999,33540,19988,24623,31363,38054,20405,20146,31206,29748,21220,33465,25810,31165,23517,27777,38738,36731,27682,20542,21375,28165,25806,26228,27696,24773,39031,35831,24198,29756,31351,31179,19992,37041,29699,27714,22234,37195,27845,36235,21306,34502,26354,36527,23624,39537,28192,33774,33775,33779,33780,33781,33782,33783,33786,33787,33788,33790,33791,33792,33794,33797,33799,33800,33801,33802,33808,33810,33811,33812,33813,33814,33815,33817,33818,33819,33822,33823,33824,33825,33826,33827,33833,33834,33835,33836,33837,33838,33839,33840,33842,33843,33844,33845,33846,33847,33849,33850,33851,33854,33855,33856,33857,33858,33859,33860,33861,33863,33864,33865,33866,33867,33868,33869,33870,33871,33872,33874,33875,33876,33877,33878,33880,33885,33886,33887,33888,33890,33892,33893,33894,33895,33896,33898,33902,33903,33904,33906,33908,33911,33913,33915,33916,21462,23094,40843,36259,21435,22280,39079,26435,37275,27849,20840,30154,25331,29356,21048,21149,32570,28820,30264,21364,40522,27063,30830,38592,35033,32676,28982,29123,20873,26579,29924,22756,25880,22199,35753,39286,25200,32469,24825,28909,22764,20161,20154,24525,38887,20219,35748,20995,22922,32427,25172,20173,26085,25102,33592,33993,33635,34701,29076,28342,23481,32466,20887,25545,26580,32905,33593,34837,20754,23418,22914,36785,20083,27741,20837,35109,36719,38446,34122,29790,38160,38384,28070,33509,24369,25746,27922,33832,33134,40131,22622,36187,19977,21441,33917,33918,33919,33920,33921,33923,33924,33925,33926,33930,33933,33935,33936,33937,33938,33939,33940,33941,33942,33944,33946,33947,33949,33950,33951,33952,33954,33955,33956,33957,33958,33959,33960,33961,33962,33963,33964,33965,33966,33968,33969,33971,33973,33974,33975,33979,33980,33982,33984,33986,33987,33989,33990,33991,33992,33995,33996,33998,33999,34002,34004,34005,34007,34008,34009,34010,34011,34012,34014,34017,34018,34020,34023,34024,34025,34026,34027,34029,34030,34031,34033,34034,34035,34036,34037,34038,34039,34040,34041,34042,34043,34045,34046,34048,34049,34050,20254,25955,26705,21971,20007,25620,39578,25195,23234,29791,33394,28073,26862,20711,33678,30722,26432,21049,27801,32433,20667,21861,29022,31579,26194,29642,33515,26441,23665,21024,29053,34923,38378,38485,25797,36193,33203,21892,27733,25159,32558,22674,20260,21830,36175,26188,19978,23578,35059,26786,25422,31245,28903,33421,21242,38902,23569,21736,37045,32461,22882,36170,34503,33292,33293,36198,25668,23556,24913,28041,31038,35774,30775,30003,21627,20280,36523,28145,23072,32453,31070,27784,23457,23158,29978,32958,24910,28183,22768,29983,29989,29298,21319,32499,34051,34052,34053,34054,34055,34056,34057,34058,34059,34061,34062,34063,34064,34066,34068,34069,34070,34072,34073,34075,34076,34077,34078,34080,34082,34083,34084,34085,34086,34087,34088,34089,34090,34093,34094,34095,34096,34097,34098,34099,34100,34101,34102,34110,34111,34112,34113,34114,34116,34117,34118,34119,34123,34124,34125,34126,34127,34128,34129,34130,34131,34132,34133,34135,34136,34138,34139,34140,34141,34143,34144,34145,34146,34147,34149,34150,34151,34153,34154,34155,34156,34157,34158,34159,34160,34161,34163,34165,34166,34167,34168,34172,34173,34175,34176,34177,30465,30427,21097,32988,22307,24072,22833,29422,26045,28287,35799,23608,34417,21313,30707,25342,26102,20160,39135,34432,23454,35782,21490,30690,20351,23630,39542,22987,24335,31034,22763,19990,26623,20107,25325,35475,36893,21183,26159,21980,22124,36866,20181,20365,37322,39280,27663,24066,24643,23460,35270,35797,25910,25163,39318,23432,23551,25480,21806,21463,30246,20861,34092,26530,26803,27530,25234,36755,21460,33298,28113,30095,20070,36174,23408,29087,34223,26257,26329,32626,34560,40653,40736,23646,26415,36848,26641,26463,25101,31446,22661,24246,25968,28465,34178,34179,34182,34184,34185,34186,34187,34188,34189,34190,34192,34193,34194,34195,34196,34197,34198,34199,34200,34201,34202,34205,34206,34207,34208,34209,34210,34211,34213,34214,34215,34217,34219,34220,34221,34225,34226,34227,34228,34229,34230,34232,34234,34235,34236,34237,34238,34239,34240,34242,34243,34244,34245,34246,34247,34248,34250,34251,34252,34253,34254,34257,34258,34260,34262,34263,34264,34265,34266,34267,34269,34270,34271,34272,34273,34274,34275,34277,34278,34279,34280,34282,34283,34284,34285,34286,34287,34288,34289,34290,34291,34292,34293,34294,34295,34296,24661,21047,32781,25684,34928,29993,24069,26643,25332,38684,21452,29245,35841,27700,30561,31246,21550,30636,39034,33308,35828,30805,26388,28865,26031,25749,22070,24605,31169,21496,19997,27515,32902,23546,21987,22235,20282,20284,39282,24051,26494,32824,24578,39042,36865,23435,35772,35829,25628,33368,25822,22013,33487,37221,20439,32032,36895,31903,20723,22609,28335,23487,35785,32899,37240,33948,31639,34429,38539,38543,32485,39635,30862,23681,31319,36930,38567,31071,23385,25439,31499,34001,26797,21766,32553,29712,32034,38145,25152,22604,20182,23427,22905,22612,34297,34298,34300,34301,34302,34304,34305,34306,34307,34308,34310,34311,34312,34313,34314,34315,34316,34317,34318,34319,34320,34322,34323,34324,34325,34327,34328,34329,34330,34331,34332,34333,34334,34335,34336,34337,34338,34339,34340,34341,34342,34344,34346,34347,34348,34349,34350,34351,34352,34353,34354,34355,34356,34357,34358,34359,34361,34362,34363,34365,34366,34367,34368,34369,34370,34371,34372,34373,34374,34375,34376,34377,34378,34379,34380,34386,34387,34389,34390,34391,34392,34393,34395,34396,34397,34399,34400,34401,34403,34404,34405,34406,34407,34408,34409,34410,29549,25374,36427,36367,32974,33492,25260,21488,27888,37214,22826,24577,27760,22349,25674,36138,30251,28393,22363,27264,30192,28525,35885,35848,22374,27631,34962,30899,25506,21497,28845,27748,22616,25642,22530,26848,33179,21776,31958,20504,36538,28108,36255,28907,25487,28059,28372,32486,33796,26691,36867,28120,38518,35752,22871,29305,34276,33150,30140,35466,26799,21076,36386,38161,25552,39064,36420,21884,20307,26367,22159,24789,28053,21059,23625,22825,28155,22635,30000,29980,24684,33300,33094,25361,26465,36834,30522,36339,36148,38081,24086,21381,21548,28867,34413,34415,34416,34418,34419,34420,34421,34422,34423,34424,34435,34436,34437,34438,34439,34440,34441,34446,34447,34448,34449,34450,34452,34454,34455,34456,34457,34458,34459,34462,34463,34464,34465,34466,34469,34470,34475,34477,34478,34482,34483,34487,34488,34489,34491,34492,34493,34494,34495,34497,34498,34499,34501,34504,34508,34509,34514,34515,34517,34518,34519,34522,34524,34525,34528,34529,34530,34531,34533,34534,34535,34536,34538,34539,34540,34543,34549,34550,34551,34554,34555,34556,34557,34559,34561,34564,34565,34566,34571,34572,34574,34575,34576,34577,34580,34582,27712,24311,20572,20141,24237,25402,33351,36890,26704,37230,30643,21516,38108,24420,31461,26742,25413,31570,32479,30171,20599,25237,22836,36879,20984,31171,31361,22270,24466,36884,28034,23648,22303,21520,20820,28237,22242,25512,39059,33151,34581,35114,36864,21534,23663,33216,25302,25176,33073,40501,38464,39534,39548,26925,22949,25299,21822,25366,21703,34521,27964,23043,29926,34972,27498,22806,35916,24367,28286,29609,39037,20024,28919,23436,30871,25405,26202,30358,24779,23451,23113,19975,33109,27754,29579,20129,26505,32593,24448,26106,26395,24536,22916,23041,34585,34587,34589,34591,34592,34596,34598,34599,34600,34602,34603,34604,34605,34607,34608,34610,34611,34613,34614,34616,34617,34618,34620,34621,34624,34625,34626,34627,34628,34629,34630,34634,34635,34637,34639,34640,34641,34642,34644,34645,34646,34648,34650,34651,34652,34653,34654,34655,34657,34658,34662,34663,34664,34665,34666,34667,34668,34669,34671,34673,34674,34675,34677,34679,34680,34681,34682,34687,34688,34689,34692,34694,34695,34697,34698,34700,34702,34703,34704,34705,34706,34708,34709,34710,34712,34713,34714,34715,34716,34717,34718,34720,34721,34722,34723,34724,24013,24494,21361,38886,36829,26693,22260,21807,24799,20026,28493,32500,33479,33806,22996,20255,20266,23614,32428,26410,34074,21619,30031,32963,21890,39759,20301,28205,35859,23561,24944,21355,30239,28201,34442,25991,38395,32441,21563,31283,32010,38382,21985,32705,29934,25373,34583,28065,31389,25105,26017,21351,25569,27779,24043,21596,38056,20044,27745,35820,23627,26080,33436,26791,21566,21556,27595,27494,20116,25410,21320,33310,20237,20398,22366,25098,38654,26212,29289,21247,21153,24735,35823,26132,29081,26512,35199,30802,30717,26224,22075,21560,38177,29306,34725,34726,34727,34729,34730,34734,34736,34737,34738,34740,34742,34743,34744,34745,34747,34748,34750,34751,34753,34754,34755,34756,34757,34759,34760,34761,34764,34765,34766,34767,34768,34772,34773,34774,34775,34776,34777,34778,34780,34781,34782,34783,34785,34786,34787,34788,34790,34791,34792,34793,34795,34796,34797,34799,34800,34801,34802,34803,34804,34805,34806,34807,34808,34810,34811,34812,34813,34815,34816,34817,34818,34820,34821,34822,34823,34824,34825,34827,34828,34829,34830,34831,34832,34833,34834,34836,34839,34840,34841,34842,34844,34845,34846,34847,34848,34851,31232,24687,24076,24713,33181,22805,24796,29060,28911,28330,27728,29312,27268,34989,24109,20064,23219,21916,38115,27927,31995,38553,25103,32454,30606,34430,21283,38686,36758,26247,23777,20384,29421,19979,21414,22799,21523,25472,38184,20808,20185,40092,32420,21688,36132,34900,33335,38386,28046,24358,23244,26174,38505,29616,29486,21439,33146,39301,32673,23466,38519,38480,32447,30456,21410,38262,39321,31665,35140,28248,20065,32724,31077,35814,24819,21709,20139,39033,24055,27233,20687,21521,35937,33831,30813,38660,21066,21742,22179,38144,28040,23477,28102,26195,34852,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34867,34868,34869,34870,34871,34872,34874,34875,34877,34878,34879,34881,34882,34883,34886,34887,34888,34889,34890,34891,34894,34895,34896,34897,34898,34899,34901,34902,34904,34906,34907,34908,34909,34910,34911,34912,34918,34919,34922,34925,34927,34929,34931,34932,34933,34934,34936,34937,34938,34939,34940,34944,34947,34950,34951,34953,34954,34956,34958,34959,34960,34961,34963,34964,34965,34967,34968,34969,34970,34971,34973,34974,34975,34976,34977,34979,34981,34982,34983,34984,34985,34986,23567,23389,26657,32918,21880,31505,25928,26964,20123,27463,34638,38795,21327,25375,25658,37034,26012,32961,35856,20889,26800,21368,34809,25032,27844,27899,35874,23633,34218,33455,38156,27427,36763,26032,24571,24515,20449,34885,26143,33125,29481,24826,20852,21009,22411,24418,37026,34892,37266,24184,26447,24615,22995,20804,20982,33016,21256,27769,38596,29066,20241,20462,32670,26429,21957,38152,31168,34966,32483,22687,25100,38656,34394,22040,39035,24464,35768,33988,37207,21465,26093,24207,30044,24676,32110,23167,32490,32493,36713,21927,23459,24748,26059,29572,34988,34990,34991,34992,34994,34995,34996,34997,34998,35000,35001,35002,35003,35005,35006,35007,35008,35011,35012,35015,35016,35018,35019,35020,35021,35023,35024,35025,35027,35030,35031,35034,35035,35036,35037,35038,35040,35041,35046,35047,35049,35050,35051,35052,35053,35054,35055,35058,35061,35062,35063,35066,35067,35069,35071,35072,35073,35075,35076,35077,35078,35079,35080,35081,35083,35084,35085,35086,35087,35089,35092,35093,35094,35095,35096,35100,35101,35102,35103,35104,35106,35107,35108,35110,35111,35112,35113,35116,35117,35118,35119,35121,35122,35123,35125,35127,36873,30307,30505,32474,38772,34203,23398,31348,38634,34880,21195,29071,24490,26092,35810,23547,39535,24033,27529,27739,35757,35759,36874,36805,21387,25276,40486,40493,21568,20011,33469,29273,34460,23830,34905,28079,38597,21713,20122,35766,28937,21693,38409,28895,28153,30416,20005,30740,34578,23721,24310,35328,39068,38414,28814,27839,22852,25513,30524,34893,28436,33395,22576,29141,21388,30746,38593,21761,24422,28976,23476,35866,39564,27523,22830,40495,31207,26472,25196,20335,30113,32650,27915,38451,27687,20208,30162,20859,26679,28478,36992,33136,22934,29814,35128,35129,35130,35131,35132,35133,35134,35135,35136,35138,35139,35141,35142,35143,35144,35145,35146,35147,35148,35149,35150,35151,35152,35153,35154,35155,35156,35157,35158,35159,35160,35161,35162,35163,35164,35165,35168,35169,35170,35171,35172,35173,35175,35176,35177,35178,35179,35180,35181,35182,35183,35184,35185,35186,35187,35188,35189,35190,35191,35192,35193,35194,35196,35197,35198,35200,35202,35204,35205,35207,35208,35209,35210,35211,35212,35213,35214,35215,35216,35217,35218,35219,35220,35221,35222,35223,35224,35225,35226,35227,35228,35229,35230,35231,35232,35233,25671,23591,36965,31377,35875,23002,21676,33280,33647,35201,32768,26928,22094,32822,29239,37326,20918,20063,39029,25494,19994,21494,26355,33099,22812,28082,19968,22777,21307,25558,38129,20381,20234,34915,39056,22839,36951,31227,20202,33008,30097,27778,23452,23016,24413,26885,34433,20506,24050,20057,30691,20197,33402,25233,26131,37009,23673,20159,24441,33222,36920,32900,30123,20134,35028,24847,27589,24518,20041,30410,28322,35811,35758,35850,35793,24322,32764,32716,32462,33589,33643,22240,27575,38899,38452,23035,21535,38134,28139,23493,39278,23609,24341,38544,35234,35235,35236,35237,35238,35239,35240,35241,35242,35243,35244,35245,35246,35247,35248,35249,35250,35251,35252,35253,35254,35255,35256,35257,35258,35259,35260,35261,35262,35263,35264,35267,35277,35283,35284,35285,35287,35288,35289,35291,35293,35295,35296,35297,35298,35300,35303,35304,35305,35306,35308,35309,35310,35312,35313,35314,35316,35317,35318,35319,35320,35321,35322,35323,35324,35325,35326,35327,35329,35330,35331,35332,35333,35334,35336,35337,35338,35339,35340,35341,35342,35343,35344,35345,35346,35347,35348,35349,35350,35351,35352,35353,35354,35355,35356,35357,21360,33521,27185,23156,40560,24212,32552,33721,33828,33829,33639,34631,36814,36194,30408,24433,39062,30828,26144,21727,25317,20323,33219,30152,24248,38605,36362,34553,21647,27891,28044,27704,24703,21191,29992,24189,20248,24736,24551,23588,30001,37038,38080,29369,27833,28216,37193,26377,21451,21491,20305,37321,35825,21448,24188,36802,28132,20110,30402,27014,34398,24858,33286,20313,20446,36926,40060,24841,28189,28180,38533,20104,23089,38632,19982,23679,31161,23431,35821,32701,29577,22495,33419,37057,21505,36935,21947,23786,24481,24840,27442,29425,32946,35465,35358,35359,35360,35361,35362,35363,35364,35365,35366,35367,35368,35369,35370,35371,35372,35373,35374,35375,35376,35377,35378,35379,35380,35381,35382,35383,35384,35385,35386,35387,35388,35389,35391,35392,35393,35394,35395,35396,35397,35398,35399,35401,35402,35403,35404,35405,35406,35407,35408,35409,35410,35411,35412,35413,35414,35415,35416,35417,35418,35419,35420,35421,35422,35423,35424,35425,35426,35427,35428,35429,35430,35431,35432,35433,35434,35435,35436,35437,35438,35439,35440,35441,35442,35443,35444,35445,35446,35447,35448,35450,35451,35452,35453,35454,35455,35456,28020,23507,35029,39044,35947,39533,40499,28170,20900,20803,22435,34945,21407,25588,36757,22253,21592,22278,29503,28304,32536,36828,33489,24895,24616,38498,26352,32422,36234,36291,38053,23731,31908,26376,24742,38405,32792,20113,37095,21248,38504,20801,36816,34164,37213,26197,38901,23381,21277,30776,26434,26685,21705,28798,23472,36733,20877,22312,21681,25874,26242,36190,36163,33039,33900,36973,31967,20991,34299,26531,26089,28577,34468,36481,22122,36896,30338,28790,29157,36131,25321,21017,27901,36156,24590,22686,24974,26366,36192,25166,21939,28195,26413,36711,35457,35458,35459,35460,35461,35462,35463,35464,35467,35468,35469,35470,35471,35472,35473,35474,35476,35477,35478,35479,35480,35481,35482,35483,35484,35485,35486,35487,35488,35489,35490,35491,35492,35493,35494,35495,35496,35497,35498,35499,35500,35501,35502,35503,35504,35505,35506,35507,35508,35509,35510,35511,35512,35513,35514,35515,35516,35517,35518,35519,35520,35521,35522,35523,35524,35525,35526,35527,35528,35529,35530,35531,35532,35533,35534,35535,35536,35537,35538,35539,35540,35541,35542,35543,35544,35545,35546,35547,35548,35549,35550,35551,35552,35553,35554,35555,38113,38392,30504,26629,27048,21643,20045,28856,35784,25688,25995,23429,31364,20538,23528,30651,27617,35449,31896,27838,30415,26025,36759,23853,23637,34360,26632,21344,25112,31449,28251,32509,27167,31456,24432,28467,24352,25484,28072,26454,19976,24080,36134,20183,32960,30260,38556,25307,26157,25214,27836,36213,29031,32617,20806,32903,21484,36974,25240,21746,34544,36761,32773,38167,34071,36825,27993,29645,26015,30495,29956,30759,33275,36126,38024,20390,26517,30137,35786,38663,25391,38215,38453,33976,25379,30529,24449,29424,20105,24596,25972,25327,27491,25919,35556,35557,35558,35559,35560,35561,35562,35563,35564,35565,35566,35567,35568,35569,35570,35571,35572,35573,35574,35575,35576,35577,35578,35579,35580,35581,35582,35583,35584,35585,35586,35587,35588,35589,35590,35592,35593,35594,35595,35596,35597,35598,35599,35600,35601,35602,35603,35604,35605,35606,35607,35608,35609,35610,35611,35612,35613,35614,35615,35616,35617,35618,35619,35620,35621,35623,35624,35625,35626,35627,35628,35629,35630,35631,35632,35633,35634,35635,35636,35637,35638,35639,35640,35641,35642,35643,35644,35645,35646,35647,35648,35649,35650,35651,35652,35653,24103,30151,37073,35777,33437,26525,25903,21553,34584,30693,32930,33026,27713,20043,32455,32844,30452,26893,27542,25191,20540,20356,22336,25351,27490,36286,21482,26088,32440,24535,25370,25527,33267,33268,32622,24092,23769,21046,26234,31209,31258,36136,28825,30164,28382,27835,31378,20013,30405,24544,38047,34935,32456,31181,32959,37325,20210,20247,33311,21608,24030,27954,35788,31909,36724,32920,24090,21650,30385,23449,26172,39588,29664,26666,34523,26417,29482,35832,35803,36880,31481,28891,29038,25284,30633,22065,20027,33879,26609,21161,34496,36142,38136,31569,35654,35655,35656,35657,35658,35659,35660,35661,35662,35663,35664,35665,35666,35667,35668,35669,35670,35671,35672,35673,35674,35675,35676,35677,35678,35679,35680,35681,35682,35683,35684,35685,35687,35688,35689,35690,35691,35693,35694,35695,35696,35697,35698,35699,35700,35701,35702,35703,35704,35705,35706,35707,35708,35709,35710,35711,35712,35713,35714,35715,35716,35717,35718,35719,35720,35721,35722,35723,35724,35725,35726,35727,35728,35729,35730,35731,35732,35733,35734,35735,35736,35737,35738,35739,35740,35741,35742,35743,35756,35761,35771,35783,35792,35818,35849,35870,20303,27880,31069,39547,25235,29226,25341,19987,30742,36716,25776,36186,31686,26729,24196,35013,22918,25758,22766,29366,26894,38181,36861,36184,22368,32512,35846,20934,25417,25305,21331,26700,29730,33537,37196,21828,30528,28796,27978,20857,21672,36164,23039,28363,28100,23388,32043,20180,31869,28371,23376,33258,28173,23383,39683,26837,36394,23447,32508,24635,32437,37049,36208,22863,25549,31199,36275,21330,26063,31062,35781,38459,32452,38075,32386,22068,37257,26368,32618,23562,36981,26152,24038,20304,26590,20570,20316,22352,24231,59408,59409,59410,59411,59412,35896,35897,35898,35899,35900,35901,35902,35903,35904,35906,35907,35908,35909,35912,35914,35915,35917,35918,35919,35920,35921,35922,35923,35924,35926,35927,35928,35929,35931,35932,35933,35934,35935,35936,35939,35940,35941,35942,35943,35944,35945,35948,35949,35950,35951,35952,35953,35954,35956,35957,35958,35959,35963,35964,35965,35966,35967,35968,35969,35971,35972,35974,35975,35976,35979,35981,35982,35983,35984,35985,35986,35987,35989,35990,35991,35993,35994,35995,35996,35997,35998,35999,36000,36001,36002,36003,36004,36005,36006,36007,36008,36009,36010,36011,36012,36013,20109,19980,20800,19984,24319,21317,19989,20120,19998,39730,23404,22121,20008,31162,20031,21269,20039,22829,29243,21358,27664,22239,32996,39319,27603,30590,40727,20022,20127,40720,20060,20073,20115,33416,23387,21868,22031,20164,21389,21405,21411,21413,21422,38757,36189,21274,21493,21286,21294,21310,36188,21350,21347,20994,21000,21006,21037,21043,21055,21056,21068,21086,21089,21084,33967,21117,21122,21121,21136,21139,20866,32596,20155,20163,20169,20162,20200,20193,20203,20190,20251,20211,20258,20324,20213,20261,20263,20233,20267,20318,20327,25912,20314,20317,36014,36015,36016,36017,36018,36019,36020,36021,36022,36023,36024,36025,36026,36027,36028,36029,36030,36031,36032,36033,36034,36035,36036,36037,36038,36039,36040,36041,36042,36043,36044,36045,36046,36047,36048,36049,36050,36051,36052,36053,36054,36055,36056,36057,36058,36059,36060,36061,36062,36063,36064,36065,36066,36067,36068,36069,36070,36071,36072,36073,36074,36075,36076,36077,36078,36079,36080,36081,36082,36083,36084,36085,36086,36087,36088,36089,36090,36091,36092,36093,36094,36095,36096,36097,36098,36099,36100,36101,36102,36103,36104,36105,36106,36107,36108,36109,20319,20311,20274,20285,20342,20340,20369,20361,20355,20367,20350,20347,20394,20348,20396,20372,20454,20456,20458,20421,20442,20451,20444,20433,20447,20472,20521,20556,20467,20524,20495,20526,20525,20478,20508,20492,20517,20520,20606,20547,20565,20552,20558,20588,20603,20645,20647,20649,20666,20694,20742,20717,20716,20710,20718,20743,20747,20189,27709,20312,20325,20430,40864,27718,31860,20846,24061,40649,39320,20865,22804,21241,21261,35335,21264,20971,22809,20821,20128,20822,20147,34926,34980,20149,33044,35026,31104,23348,34819,32696,20907,20913,20925,20924,36110,36111,36112,36113,36114,36115,36116,36117,36118,36119,36120,36121,36122,36123,36124,36128,36177,36178,36183,36191,36197,36200,36201,36202,36204,36206,36207,36209,36210,36216,36217,36218,36219,36220,36221,36222,36223,36224,36226,36227,36230,36231,36232,36233,36236,36237,36238,36239,36240,36242,36243,36245,36246,36247,36248,36249,36250,36251,36252,36253,36254,36256,36257,36258,36260,36261,36262,36263,36264,36265,36266,36267,36268,36269,36270,36271,36272,36274,36278,36279,36281,36283,36285,36288,36289,36290,36293,36295,36296,36297,36298,36301,36304,36306,36307,36308,20935,20886,20898,20901,35744,35750,35751,35754,35764,35765,35767,35778,35779,35787,35791,35790,35794,35795,35796,35798,35800,35801,35804,35807,35808,35812,35816,35817,35822,35824,35827,35830,35833,35836,35839,35840,35842,35844,35847,35852,35855,35857,35858,35860,35861,35862,35865,35867,35864,35869,35871,35872,35873,35877,35879,35882,35883,35886,35887,35890,35891,35893,35894,21353,21370,38429,38434,38433,38449,38442,38461,38460,38466,38473,38484,38495,38503,38508,38514,38516,38536,38541,38551,38576,37015,37019,37021,37017,37036,37025,37044,37043,37046,37050,36309,36312,36313,36316,36320,36321,36322,36325,36326,36327,36329,36333,36334,36336,36337,36338,36340,36342,36348,36350,36351,36352,36353,36354,36355,36356,36358,36359,36360,36363,36365,36366,36368,36369,36370,36371,36373,36374,36375,36376,36377,36378,36379,36380,36384,36385,36388,36389,36390,36391,36392,36395,36397,36400,36402,36403,36404,36406,36407,36408,36411,36412,36414,36415,36419,36421,36422,36428,36429,36430,36431,36432,36435,36436,36437,36438,36439,36440,36442,36443,36444,36445,36446,36447,36448,36449,36450,36451,36452,36453,36455,36456,36458,36459,36462,36465,37048,37040,37071,37061,37054,37072,37060,37063,37075,37094,37090,37084,37079,37083,37099,37103,37118,37124,37154,37150,37155,37169,37167,37177,37187,37190,21005,22850,21154,21164,21165,21182,21759,21200,21206,21232,21471,29166,30669,24308,20981,20988,39727,21430,24321,30042,24047,22348,22441,22433,22654,22716,22725,22737,22313,22316,22314,22323,22329,22318,22319,22364,22331,22338,22377,22405,22379,22406,22396,22395,22376,22381,22390,22387,22445,22436,22412,22450,22479,22439,22452,22419,22432,22485,22488,22490,22489,22482,22456,22516,22511,22520,22500,22493,36467,36469,36471,36472,36473,36474,36475,36477,36478,36480,36482,36483,36484,36486,36488,36489,36490,36491,36492,36493,36494,36497,36498,36499,36501,36502,36503,36504,36505,36506,36507,36509,36511,36512,36513,36514,36515,36516,36517,36518,36519,36520,36521,36522,36525,36526,36528,36529,36531,36532,36533,36534,36535,36536,36537,36539,36540,36541,36542,36543,36544,36545,36546,36547,36548,36549,36550,36551,36552,36553,36554,36555,36556,36557,36559,36560,36561,36562,36563,36564,36565,36566,36567,36568,36569,36570,36571,36572,36573,36574,36575,36576,36577,36578,36579,36580,22539,22541,22525,22509,22528,22558,22553,22596,22560,22629,22636,22657,22665,22682,22656,39336,40729,25087,33401,33405,33407,33423,33418,33448,33412,33422,33425,33431,33433,33451,33464,33470,33456,33480,33482,33507,33432,33463,33454,33483,33484,33473,33449,33460,33441,33450,33439,33476,33486,33444,33505,33545,33527,33508,33551,33543,33500,33524,33490,33496,33548,33531,33491,33553,33562,33542,33556,33557,33504,33493,33564,33617,33627,33628,33544,33682,33596,33588,33585,33691,33630,33583,33615,33607,33603,33631,33600,33559,33632,33581,33594,33587,33638,33637,36581,36582,36583,36584,36585,36586,36587,36588,36589,36590,36591,36592,36593,36594,36595,36596,36597,36598,36599,36600,36601,36602,36603,36604,36605,36606,36607,36608,36609,36610,36611,36612,36613,36614,36615,36616,36617,36618,36619,36620,36621,36622,36623,36624,36625,36626,36627,36628,36629,36630,36631,36632,36633,36634,36635,36636,36637,36638,36639,36640,36641,36642,36643,36644,36645,36646,36647,36648,36649,36650,36651,36652,36653,36654,36655,36656,36657,36658,36659,36660,36661,36662,36663,36664,36665,36666,36667,36668,36669,36670,36671,36672,36673,36674,36675,36676,33640,33563,33641,33644,33642,33645,33646,33712,33656,33715,33716,33696,33706,33683,33692,33669,33660,33718,33705,33661,33720,33659,33688,33694,33704,33722,33724,33729,33793,33765,33752,22535,33816,33803,33757,33789,33750,33820,33848,33809,33798,33748,33759,33807,33795,33784,33785,33770,33733,33728,33830,33776,33761,33884,33873,33882,33881,33907,33927,33928,33914,33929,33912,33852,33862,33897,33910,33932,33934,33841,33901,33985,33997,34000,34022,33981,34003,33994,33983,33978,34016,33953,33977,33972,33943,34021,34019,34060,29965,34104,34032,34105,34079,34106,36677,36678,36679,36680,36681,36682,36683,36684,36685,36686,36687,36688,36689,36690,36691,36692,36693,36694,36695,36696,36697,36698,36699,36700,36701,36702,36703,36704,36705,36706,36707,36708,36709,36714,36736,36748,36754,36765,36768,36769,36770,36772,36773,36774,36775,36778,36780,36781,36782,36783,36786,36787,36788,36789,36791,36792,36794,36795,36796,36799,36800,36803,36806,36809,36810,36811,36812,36813,36815,36818,36822,36823,36826,36832,36833,36835,36839,36844,36847,36849,36850,36852,36853,36854,36858,36859,36860,36862,36863,36871,36872,36876,36878,36883,36885,36888,34134,34107,34047,34044,34137,34120,34152,34148,34142,34170,30626,34115,34162,34171,34212,34216,34183,34191,34169,34222,34204,34181,34233,34231,34224,34259,34241,34268,34303,34343,34309,34345,34326,34364,24318,24328,22844,22849,32823,22869,22874,22872,21263,23586,23589,23596,23604,25164,25194,25247,25275,25290,25306,25303,25326,25378,25334,25401,25419,25411,25517,25590,25457,25466,25486,25524,25453,25516,25482,25449,25518,25532,25586,25592,25568,25599,25540,25566,25550,25682,25542,25534,25669,25665,25611,25627,25632,25612,25638,25633,25694,25732,25709,25750,36889,36892,36899,36900,36901,36903,36904,36905,36906,36907,36908,36912,36913,36914,36915,36916,36919,36921,36922,36925,36927,36928,36931,36933,36934,36936,36937,36938,36939,36940,36942,36948,36949,36950,36953,36954,36956,36957,36958,36959,36960,36961,36964,36966,36967,36969,36970,36971,36972,36975,36976,36977,36978,36979,36982,36983,36984,36985,36986,36987,36988,36990,36993,36996,36997,36998,36999,37001,37002,37004,37005,37006,37007,37008,37010,37012,37014,37016,37018,37020,37022,37023,37024,37028,37029,37031,37032,37033,37035,37037,37042,37047,37052,37053,37055,37056,25722,25783,25784,25753,25786,25792,25808,25815,25828,25826,25865,25893,25902,24331,24530,29977,24337,21343,21489,21501,21481,21480,21499,21522,21526,21510,21579,21586,21587,21588,21590,21571,21537,21591,21593,21539,21554,21634,21652,21623,21617,21604,21658,21659,21636,21622,21606,21661,21712,21677,21698,21684,21714,21671,21670,21715,21716,21618,21667,21717,21691,21695,21708,21721,21722,21724,21673,21674,21668,21725,21711,21726,21787,21735,21792,21757,21780,21747,21794,21795,21775,21777,21799,21802,21863,21903,21941,21833,21869,21825,21845,21823,21840,21820,37058,37059,37062,37064,37065,37067,37068,37069,37074,37076,37077,37078,37080,37081,37082,37086,37087,37088,37091,37092,37093,37097,37098,37100,37102,37104,37105,37106,37107,37109,37110,37111,37113,37114,37115,37116,37119,37120,37121,37123,37125,37126,37127,37128,37129,37130,37131,37132,37133,37134,37135,37136,37137,37138,37139,37140,37141,37142,37143,37144,37146,37147,37148,37149,37151,37152,37153,37156,37157,37158,37159,37160,37161,37162,37163,37164,37165,37166,37168,37170,37171,37172,37173,37174,37175,37176,37178,37179,37180,37181,37182,37183,37184,37185,37186,37188,21815,21846,21877,21878,21879,21811,21808,21852,21899,21970,21891,21937,21945,21896,21889,21919,21886,21974,21905,21883,21983,21949,21950,21908,21913,21994,22007,21961,22047,21969,21995,21996,21972,21990,21981,21956,21999,21989,22002,22003,21964,21965,21992,22005,21988,36756,22046,22024,22028,22017,22052,22051,22014,22016,22055,22061,22104,22073,22103,22060,22093,22114,22105,22108,22092,22100,22150,22116,22129,22123,22139,22140,22149,22163,22191,22228,22231,22237,22241,22261,22251,22265,22271,22276,22282,22281,22300,24079,24089,24084,24081,24113,24123,24124,37189,37191,37192,37201,37203,37204,37205,37206,37208,37209,37211,37212,37215,37216,37222,37223,37224,37227,37229,37235,37242,37243,37244,37248,37249,37250,37251,37252,37254,37256,37258,37262,37263,37267,37268,37269,37270,37271,37272,37273,37276,37277,37278,37279,37280,37281,37284,37285,37286,37287,37288,37289,37291,37292,37296,37297,37298,37299,37302,37303,37304,37305,37307,37308,37309,37310,37311,37312,37313,37314,37315,37316,37317,37318,37320,37323,37328,37330,37331,37332,37333,37334,37335,37336,37337,37338,37339,37341,37342,37343,37344,37345,37346,37347,37348,37349,24119,24132,24148,24155,24158,24161,23692,23674,23693,23696,23702,23688,23704,23705,23697,23706,23708,23733,23714,23741,23724,23723,23729,23715,23745,23735,23748,23762,23780,23755,23781,23810,23811,23847,23846,23854,23844,23838,23814,23835,23896,23870,23860,23869,23916,23899,23919,23901,23915,23883,23882,23913,23924,23938,23961,23965,35955,23991,24005,24435,24439,24450,24455,24457,24460,24469,24473,24476,24488,24493,24501,24508,34914,24417,29357,29360,29364,29367,29368,29379,29377,29390,29389,29394,29416,29423,29417,29426,29428,29431,29441,29427,29443,29434,37350,37351,37352,37353,37354,37355,37356,37357,37358,37359,37360,37361,37362,37363,37364,37365,37366,37367,37368,37369,37370,37371,37372,37373,37374,37375,37376,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37387,37388,37389,37390,37391,37392,37393,37394,37395,37396,37397,37398,37399,37400,37401,37402,37403,37404,37405,37406,37407,37408,37409,37410,37411,37412,37413,37414,37415,37416,37417,37418,37419,37420,37421,37422,37423,37424,37425,37426,37427,37428,37429,37430,37431,37432,37433,37434,37435,37436,37437,37438,37439,37440,37441,37442,37443,37444,37445,29435,29463,29459,29473,29450,29470,29469,29461,29474,29497,29477,29484,29496,29489,29520,29517,29527,29536,29548,29551,29566,33307,22821,39143,22820,22786,39267,39271,39272,39273,39274,39275,39276,39284,39287,39293,39296,39300,39303,39306,39309,39312,39313,39315,39316,39317,24192,24209,24203,24214,24229,24224,24249,24245,24254,24243,36179,24274,24273,24283,24296,24298,33210,24516,24521,24534,24527,24579,24558,24580,24545,24548,24574,24581,24582,24554,24557,24568,24601,24629,24614,24603,24591,24589,24617,24619,24586,24639,24609,24696,24697,24699,24698,24642,37446,37447,37448,37449,37450,37451,37452,37453,37454,37455,37456,37457,37458,37459,37460,37461,37462,37463,37464,37465,37466,37467,37468,37469,37470,37471,37472,37473,37474,37475,37476,37477,37478,37479,37480,37481,37482,37483,37484,37485,37486,37487,37488,37489,37490,37491,37493,37494,37495,37496,37497,37498,37499,37500,37501,37502,37503,37504,37505,37506,37507,37508,37509,37510,37511,37512,37513,37514,37515,37516,37517,37519,37520,37521,37522,37523,37524,37525,37526,37527,37528,37529,37530,37531,37532,37533,37534,37535,37536,37537,37538,37539,37540,37541,37542,37543,24682,24701,24726,24730,24749,24733,24707,24722,24716,24731,24812,24763,24753,24797,24792,24774,24794,24756,24864,24870,24853,24867,24820,24832,24846,24875,24906,24949,25004,24980,24999,25015,25044,25077,24541,38579,38377,38379,38385,38387,38389,38390,38396,38398,38403,38404,38406,38408,38410,38411,38412,38413,38415,38418,38421,38422,38423,38425,38426,20012,29247,25109,27701,27732,27740,27722,27811,27781,27792,27796,27788,27752,27753,27764,27766,27782,27817,27856,27860,27821,27895,27896,27889,27863,27826,27872,27862,27898,27883,27886,27825,27859,27887,27902,37544,37545,37546,37547,37548,37549,37551,37552,37553,37554,37555,37556,37557,37558,37559,37560,37561,37562,37563,37564,37565,37566,37567,37568,37569,37570,37571,37572,37573,37574,37575,37577,37578,37579,37580,37581,37582,37583,37584,37585,37586,37587,37588,37589,37590,37591,37592,37593,37594,37595,37596,37597,37598,37599,37600,37601,37602,37603,37604,37605,37606,37607,37608,37609,37610,37611,37612,37613,37614,37615,37616,37617,37618,37619,37620,37621,37622,37623,37624,37625,37626,37627,37628,37629,37630,37631,37632,37633,37634,37635,37636,37637,37638,37639,37640,37641,27961,27943,27916,27971,27976,27911,27908,27929,27918,27947,27981,27950,27957,27930,27983,27986,27988,27955,28049,28015,28062,28064,27998,28051,28052,27996,28000,28028,28003,28186,28103,28101,28126,28174,28095,28128,28177,28134,28125,28121,28182,28075,28172,28078,28203,28270,28238,28267,28338,28255,28294,28243,28244,28210,28197,28228,28383,28337,28312,28384,28461,28386,28325,28327,28349,28347,28343,28375,28340,28367,28303,28354,28319,28514,28486,28487,28452,28437,28409,28463,28470,28491,28532,28458,28425,28457,28553,28557,28556,28536,28530,28540,28538,28625,37642,37643,37644,37645,37646,37647,37648,37649,37650,37651,37652,37653,37654,37655,37656,37657,37658,37659,37660,37661,37662,37663,37664,37665,37666,37667,37668,37669,37670,37671,37672,37673,37674,37675,37676,37677,37678,37679,37680,37681,37682,37683,37684,37685,37686,37687,37688,37689,37690,37691,37692,37693,37695,37696,37697,37698,37699,37700,37701,37702,37703,37704,37705,37706,37707,37708,37709,37710,37711,37712,37713,37714,37715,37716,37717,37718,37719,37720,37721,37722,37723,37724,37725,37726,37727,37728,37729,37730,37731,37732,37733,37734,37735,37736,37737,37739,28617,28583,28601,28598,28610,28641,28654,28638,28640,28655,28698,28707,28699,28729,28725,28751,28766,23424,23428,23445,23443,23461,23480,29999,39582,25652,23524,23534,35120,23536,36423,35591,36790,36819,36821,36837,36846,36836,36841,36838,36851,36840,36869,36868,36875,36902,36881,36877,36886,36897,36917,36918,36909,36911,36932,36945,36946,36944,36968,36952,36962,36955,26297,36980,36989,36994,37000,36995,37003,24400,24407,24406,24408,23611,21675,23632,23641,23409,23651,23654,32700,24362,24361,24365,33396,24380,39739,23662,22913,22915,22925,22953,22954,22947,37740,37741,37742,37743,37744,37745,37746,37747,37748,37749,37750,37751,37752,37753,37754,37755,37756,37757,37758,37759,37760,37761,37762,37763,37764,37765,37766,37767,37768,37769,37770,37771,37772,37773,37774,37776,37777,37778,37779,37780,37781,37782,37783,37784,37785,37786,37787,37788,37789,37790,37791,37792,37793,37794,37795,37796,37797,37798,37799,37800,37801,37802,37803,37804,37805,37806,37807,37808,37809,37810,37811,37812,37813,37814,37815,37816,37817,37818,37819,37820,37821,37822,37823,37824,37825,37826,37827,37828,37829,37830,37831,37832,37833,37835,37836,37837,22935,22986,22955,22942,22948,22994,22962,22959,22999,22974,23045,23046,23005,23048,23011,23000,23033,23052,23049,23090,23092,23057,23075,23059,23104,23143,23114,23125,23100,23138,23157,33004,23210,23195,23159,23162,23230,23275,23218,23250,23252,23224,23264,23267,23281,23254,23270,23256,23260,23305,23319,23318,23346,23351,23360,23573,23580,23386,23397,23411,23377,23379,23394,39541,39543,39544,39546,39551,39549,39552,39553,39557,39560,39562,39568,39570,39571,39574,39576,39579,39580,39581,39583,39584,39586,39587,39589,39591,32415,32417,32419,32421,32424,32425,37838,37839,37840,37841,37842,37843,37844,37845,37847,37848,37849,37850,37851,37852,37853,37854,37855,37856,37857,37858,37859,37860,37861,37862,37863,37864,37865,37866,37867,37868,37869,37870,37871,37872,37873,37874,37875,37876,37877,37878,37879,37880,37881,37882,37883,37884,37885,37886,37887,37888,37889,37890,37891,37892,37893,37894,37895,37896,37897,37898,37899,37900,37901,37902,37903,37904,37905,37906,37907,37908,37909,37910,37911,37912,37913,37914,37915,37916,37917,37918,37919,37920,37921,37922,37923,37924,37925,37926,37927,37928,37929,37930,37931,37932,37933,37934,32429,32432,32446,32448,32449,32450,32457,32459,32460,32464,32468,32471,32475,32480,32481,32488,32491,32494,32495,32497,32498,32525,32502,32506,32507,32510,32513,32514,32515,32519,32520,32523,32524,32527,32529,32530,32535,32537,32540,32539,32543,32545,32546,32547,32548,32549,32550,32551,32554,32555,32556,32557,32559,32560,32561,32562,32563,32565,24186,30079,24027,30014,37013,29582,29585,29614,29602,29599,29647,29634,29649,29623,29619,29632,29641,29640,29669,29657,39036,29706,29673,29671,29662,29626,29682,29711,29738,29787,29734,29733,29736,29744,29742,29740,37935,37936,37937,37938,37939,37940,37941,37942,37943,37944,37945,37946,37947,37948,37949,37951,37952,37953,37954,37955,37956,37957,37958,37959,37960,37961,37962,37963,37964,37965,37966,37967,37968,37969,37970,37971,37972,37973,37974,37975,37976,37977,37978,37979,37980,37981,37982,37983,37984,37985,37986,37987,37988,37989,37990,37991,37992,37993,37994,37996,37997,37998,37999,38000,38001,38002,38003,38004,38005,38006,38007,38008,38009,38010,38011,38012,38013,38014,38015,38016,38017,38018,38019,38020,38033,38038,38040,38087,38095,38099,38100,38106,38118,38139,38172,38176,29723,29722,29761,29788,29783,29781,29785,29815,29805,29822,29852,29838,29824,29825,29831,29835,29854,29864,29865,29840,29863,29906,29882,38890,38891,38892,26444,26451,26462,26440,26473,26533,26503,26474,26483,26520,26535,26485,26536,26526,26541,26507,26487,26492,26608,26633,26584,26634,26601,26544,26636,26585,26549,26586,26547,26589,26624,26563,26552,26594,26638,26561,26621,26674,26675,26720,26721,26702,26722,26692,26724,26755,26653,26709,26726,26689,26727,26688,26686,26698,26697,26665,26805,26767,26740,26743,26771,26731,26818,26990,26876,26911,26912,26873,38183,38195,38205,38211,38216,38219,38229,38234,38240,38254,38260,38261,38263,38264,38265,38266,38267,38268,38269,38270,38272,38273,38274,38275,38276,38277,38278,38279,38280,38281,38282,38283,38284,38285,38286,38287,38288,38289,38290,38291,38292,38293,38294,38295,38296,38297,38298,38299,38300,38301,38302,38303,38304,38305,38306,38307,38308,38309,38310,38311,38312,38313,38314,38315,38316,38317,38318,38319,38320,38321,38322,38323,38324,38325,38326,38327,38328,38329,38330,38331,38332,38333,38334,38335,38336,38337,38338,38339,38340,38341,38342,38343,38344,38345,38346,38347,26916,26864,26891,26881,26967,26851,26896,26993,26937,26976,26946,26973,27012,26987,27008,27032,27000,26932,27084,27015,27016,27086,27017,26982,26979,27001,27035,27047,27067,27051,27053,27092,27057,27073,27082,27103,27029,27104,27021,27135,27183,27117,27159,27160,27237,27122,27204,27198,27296,27216,27227,27189,27278,27257,27197,27176,27224,27260,27281,27280,27305,27287,27307,29495,29522,27521,27522,27527,27524,27538,27539,27533,27546,27547,27553,27562,36715,36717,36721,36722,36723,36725,36726,36728,36727,36729,36730,36732,36734,36737,36738,36740,36743,36747,38348,38349,38350,38351,38352,38353,38354,38355,38356,38357,38358,38359,38360,38361,38362,38363,38364,38365,38366,38367,38368,38369,38370,38371,38372,38373,38374,38375,38380,38399,38407,38419,38424,38427,38430,38432,38435,38436,38437,38438,38439,38440,38441,38443,38444,38445,38447,38448,38455,38456,38457,38458,38462,38465,38467,38474,38478,38479,38481,38482,38483,38486,38487,38488,38489,38490,38492,38493,38494,38496,38499,38501,38502,38507,38509,38510,38511,38512,38513,38515,38520,38521,38522,38523,38524,38525,38526,38527,38528,38529,38530,38531,38532,38535,38537,38538,36749,36750,36751,36760,36762,36558,25099,25111,25115,25119,25122,25121,25125,25124,25132,33255,29935,29940,29951,29967,29969,29971,25908,26094,26095,26096,26122,26137,26482,26115,26133,26112,28805,26359,26141,26164,26161,26166,26165,32774,26207,26196,26177,26191,26198,26209,26199,26231,26244,26252,26279,26269,26302,26331,26332,26342,26345,36146,36147,36150,36155,36157,36160,36165,36166,36168,36169,36167,36173,36181,36185,35271,35274,35275,35276,35278,35279,35280,35281,29294,29343,29277,29286,29295,29310,29311,29316,29323,29325,29327,29330,25352,25394,25520,38540,38542,38545,38546,38547,38549,38550,38554,38555,38557,38558,38559,38560,38561,38562,38563,38564,38565,38566,38568,38569,38570,38571,38572,38573,38574,38575,38577,38578,38580,38581,38583,38584,38586,38587,38591,38594,38595,38600,38602,38603,38608,38609,38611,38612,38614,38615,38616,38617,38618,38619,38620,38621,38622,38623,38625,38626,38627,38628,38629,38630,38631,38635,38636,38637,38638,38640,38641,38642,38644,38645,38648,38650,38651,38652,38653,38655,38658,38659,38661,38666,38667,38668,38672,38673,38674,38676,38677,38679,38680,38681,38682,38683,38685,38687,38688,25663,25816,32772,27626,27635,27645,27637,27641,27653,27655,27654,27661,27669,27672,27673,27674,27681,27689,27684,27690,27698,25909,25941,25963,29261,29266,29270,29232,34402,21014,32927,32924,32915,32956,26378,32957,32945,32939,32941,32948,32951,32999,33000,33001,33002,32987,32962,32964,32985,32973,32983,26384,32989,33003,33009,33012,33005,33037,33038,33010,33020,26389,33042,35930,33078,33054,33068,33048,33074,33096,33100,33107,33140,33113,33114,33137,33120,33129,33148,33149,33133,33127,22605,23221,33160,33154,33169,28373,33187,33194,33228,26406,33226,33211,38689,38690,38691,38692,38693,38694,38695,38696,38697,38699,38700,38702,38703,38705,38707,38708,38709,38710,38711,38714,38715,38716,38717,38719,38720,38721,38722,38723,38724,38725,38726,38727,38728,38729,38730,38731,38732,38733,38734,38735,38736,38737,38740,38741,38743,38744,38746,38748,38749,38751,38755,38756,38758,38759,38760,38762,38763,38764,38765,38766,38767,38768,38769,38770,38773,38775,38776,38777,38778,38779,38781,38782,38783,38784,38785,38786,38787,38788,38790,38791,38792,38793,38794,38796,38798,38799,38800,38803,38805,38806,38807,38809,38810,38811,38812,38813,33217,33190,27428,27447,27449,27459,27462,27481,39121,39122,39123,39125,39129,39130,27571,24384,27586,35315,26000,40785,26003,26044,26054,26052,26051,26060,26062,26066,26070,28800,28828,28822,28829,28859,28864,28855,28843,28849,28904,28874,28944,28947,28950,28975,28977,29043,29020,29032,28997,29042,29002,29048,29050,29080,29107,29109,29096,29088,29152,29140,29159,29177,29213,29224,28780,28952,29030,29113,25150,25149,25155,25160,25161,31035,31040,31046,31049,31067,31068,31059,31066,31074,31063,31072,31087,31079,31098,31109,31114,31130,31143,31155,24529,24528,38814,38815,38817,38818,38820,38821,38822,38823,38824,38825,38826,38828,38830,38832,38833,38835,38837,38838,38839,38840,38841,38842,38843,38844,38845,38846,38847,38848,38849,38850,38851,38852,38853,38854,38855,38856,38857,38858,38859,38860,38861,38862,38863,38864,38865,38866,38867,38868,38869,38870,38871,38872,38873,38874,38875,38876,38877,38878,38879,38880,38881,38882,38883,38884,38885,38888,38894,38895,38896,38897,38898,38900,38903,38904,38905,38906,38907,38908,38909,38910,38911,38912,38913,38914,38915,38916,38917,38918,38919,38920,38921,38922,38923,38924,38925,38926,24636,24669,24666,24679,24641,24665,24675,24747,24838,24845,24925,25001,24989,25035,25041,25094,32896,32895,27795,27894,28156,30710,30712,30720,30729,30743,30744,30737,26027,30765,30748,30749,30777,30778,30779,30751,30780,30757,30764,30755,30761,30798,30829,30806,30807,30758,30800,30791,30796,30826,30875,30867,30874,30855,30876,30881,30883,30898,30905,30885,30932,30937,30921,30956,30962,30981,30964,30995,31012,31006,31028,40859,40697,40699,40700,30449,30468,30477,30457,30471,30472,30490,30498,30489,30509,30502,30517,30520,30544,30545,30535,30531,30554,30568,38927,38928,38929,38930,38931,38932,38933,38934,38935,38936,38937,38938,38939,38940,38941,38942,38943,38944,38945,38946,38947,38948,38949,38950,38951,38952,38953,38954,38955,38956,38957,38958,38959,38960,38961,38962,38963,38964,38965,38966,38967,38968,38969,38970,38971,38972,38973,38974,38975,38976,38977,38978,38979,38980,38981,38982,38983,38984,38985,38986,38987,38988,38989,38990,38991,38992,38993,38994,38995,38996,38997,38998,38999,39000,39001,39002,39003,39004,39005,39006,39007,39008,39009,39010,39011,39012,39013,39014,39015,39016,39017,39018,39019,39020,39021,39022,30562,30565,30591,30605,30589,30592,30604,30609,30623,30624,30640,30645,30653,30010,30016,30030,30027,30024,30043,30066,30073,30083,32600,32609,32607,35400,32616,32628,32625,32633,32641,32638,30413,30437,34866,38021,38022,38023,38027,38026,38028,38029,38031,38032,38036,38039,38037,38042,38043,38044,38051,38052,38059,38058,38061,38060,38063,38064,38066,38068,38070,38071,38072,38073,38074,38076,38077,38079,38084,38088,38089,38090,38091,38092,38093,38094,38096,38097,38098,38101,38102,38103,38105,38104,38107,38110,38111,38112,38114,38116,38117,38119,38120,38122,39023,39024,39025,39026,39027,39028,39051,39054,39058,39061,39065,39075,39080,39081,39082,39083,39084,39085,39086,39087,39088,39089,39090,39091,39092,39093,39094,39095,39096,39097,39098,39099,39100,39101,39102,39103,39104,39105,39106,39107,39108,39109,39110,39111,39112,39113,39114,39115,39116,39117,39119,39120,39124,39126,39127,39131,39132,39133,39136,39137,39138,39139,39140,39141,39142,39145,39146,39147,39148,39149,39150,39151,39152,39153,39154,39155,39156,39157,39158,39159,39160,39161,39162,39163,39164,39165,39166,39167,39168,39169,39170,39171,39172,39173,39174,39175,38121,38123,38126,38127,38131,38132,38133,38135,38137,38140,38141,38143,38147,38146,38150,38151,38153,38154,38157,38158,38159,38162,38163,38164,38165,38166,38168,38171,38173,38174,38175,38178,38186,38187,38185,38188,38193,38194,38196,38198,38199,38200,38204,38206,38207,38210,38197,38212,38213,38214,38217,38220,38222,38223,38226,38227,38228,38230,38231,38232,38233,38235,38238,38239,38237,38241,38242,38244,38245,38246,38247,38248,38249,38250,38251,38252,38255,38257,38258,38259,38202,30695,30700,38601,31189,31213,31203,31211,31238,23879,31235,31234,31262,31252,39176,39177,39178,39179,39180,39182,39183,39185,39186,39187,39188,39189,39190,39191,39192,39193,39194,39195,39196,39197,39198,39199,39200,39201,39202,39203,39204,39205,39206,39207,39208,39209,39210,39211,39212,39213,39215,39216,39217,39218,39219,39220,39221,39222,39223,39224,39225,39226,39227,39228,39229,39230,39231,39232,39233,39234,39235,39236,39237,39238,39239,39240,39241,39242,39243,39244,39245,39246,39247,39248,39249,39250,39251,39254,39255,39256,39257,39258,39259,39260,39261,39262,39263,39264,39265,39266,39268,39270,39283,39288,39289,39291,39294,39298,39299,39305,31289,31287,31313,40655,39333,31344,30344,30350,30355,30361,30372,29918,29920,29996,40480,40482,40488,40489,40490,40491,40492,40498,40497,40502,40504,40503,40505,40506,40510,40513,40514,40516,40518,40519,40520,40521,40523,40524,40526,40529,40533,40535,40538,40539,40540,40542,40547,40550,40551,40552,40553,40554,40555,40556,40561,40557,40563,30098,30100,30102,30112,30109,30124,30115,30131,30132,30136,30148,30129,30128,30147,30146,30166,30157,30179,30184,30182,30180,30187,30183,30211,30193,30204,30207,30224,30208,30213,30220,30231,30218,30245,30232,30229,30233,39308,39310,39322,39323,39324,39325,39326,39327,39328,39329,39330,39331,39332,39334,39335,39337,39338,39339,39340,39341,39342,39343,39344,39345,39346,39347,39348,39349,39350,39351,39352,39353,39354,39355,39356,39357,39358,39359,39360,39361,39362,39363,39364,39365,39366,39367,39368,39369,39370,39371,39372,39373,39374,39375,39376,39377,39378,39379,39380,39381,39382,39383,39384,39385,39386,39387,39388,39389,39390,39391,39392,39393,39394,39395,39396,39397,39398,39399,39400,39401,39402,39403,39404,39405,39406,39407,39408,39409,39410,39411,39412,39413,39414,39415,39416,39417,30235,30268,30242,30240,30272,30253,30256,30271,30261,30275,30270,30259,30285,30302,30292,30300,30294,30315,30319,32714,31462,31352,31353,31360,31366,31368,31381,31398,31392,31404,31400,31405,31411,34916,34921,34930,34941,34943,34946,34978,35014,34999,35004,35017,35042,35022,35043,35045,35057,35098,35068,35048,35070,35056,35105,35097,35091,35099,35082,35124,35115,35126,35137,35174,35195,30091,32997,30386,30388,30684,32786,32788,32790,32796,32800,32802,32805,32806,32807,32809,32808,32817,32779,32821,32835,32838,32845,32850,32873,32881,35203,39032,39040,39043,39418,39419,39420,39421,39422,39423,39424,39425,39426,39427,39428,39429,39430,39431,39432,39433,39434,39435,39436,39437,39438,39439,39440,39441,39442,39443,39444,39445,39446,39447,39448,39449,39450,39451,39452,39453,39454,39455,39456,39457,39458,39459,39460,39461,39462,39463,39464,39465,39466,39467,39468,39469,39470,39471,39472,39473,39474,39475,39476,39477,39478,39479,39480,39481,39482,39483,39484,39485,39486,39487,39488,39489,39490,39491,39492,39493,39494,39495,39496,39497,39498,39499,39500,39501,39502,39503,39504,39505,39506,39507,39508,39509,39510,39511,39512,39513,39049,39052,39053,39055,39060,39066,39067,39070,39071,39073,39074,39077,39078,34381,34388,34412,34414,34431,34426,34428,34427,34472,34445,34443,34476,34461,34471,34467,34474,34451,34473,34486,34500,34485,34510,34480,34490,34481,34479,34505,34511,34484,34537,34545,34546,34541,34547,34512,34579,34526,34548,34527,34520,34513,34563,34567,34552,34568,34570,34573,34569,34595,34619,34590,34597,34606,34586,34622,34632,34612,34609,34601,34615,34623,34690,34594,34685,34686,34683,34656,34672,34636,34670,34699,34643,34659,34684,34660,34649,34661,34707,34735,34728,34770,39514,39515,39516,39517,39518,39519,39520,39521,39522,39523,39524,39525,39526,39527,39528,39529,39530,39531,39538,39555,39561,39565,39566,39572,39573,39577,39590,39593,39594,39595,39596,39597,39598,39599,39602,39603,39604,39605,39609,39611,39613,39614,39615,39619,39620,39622,39623,39624,39625,39626,39629,39630,39631,39632,39634,39636,39637,39638,39639,39641,39642,39643,39644,39645,39646,39648,39650,39651,39652,39653,39655,39656,39657,39658,39660,39662,39664,39665,39666,39667,39668,39669,39670,39671,39672,39674,39676,39677,39678,39679,39680,39681,39682,39684,39685,39686,34758,34696,34693,34733,34711,34691,34731,34789,34732,34741,34739,34763,34771,34749,34769,34752,34762,34779,34794,34784,34798,34838,34835,34814,34826,34843,34849,34873,34876,32566,32578,32580,32581,33296,31482,31485,31496,31491,31492,31509,31498,31531,31503,31559,31544,31530,31513,31534,31537,31520,31525,31524,31539,31550,31518,31576,31578,31557,31605,31564,31581,31584,31598,31611,31586,31602,31601,31632,31654,31655,31672,31660,31645,31656,31621,31658,31644,31650,31659,31668,31697,31681,31692,31709,31706,31717,31718,31722,31756,31742,31740,31759,31766,31755,39687,39689,39690,39691,39692,39693,39694,39696,39697,39698,39700,39701,39702,39703,39704,39705,39706,39707,39708,39709,39710,39712,39713,39714,39716,39717,39718,39719,39720,39721,39722,39723,39724,39725,39726,39728,39729,39731,39732,39733,39734,39735,39736,39737,39738,39741,39742,39743,39744,39750,39754,39755,39756,39758,39760,39762,39763,39765,39766,39767,39768,39769,39770,39771,39772,39773,39774,39775,39776,39777,39778,39779,39780,39781,39782,39783,39784,39785,39786,39787,39788,39789,39790,39791,39792,39793,39794,39795,39796,39797,39798,39799,39800,39801,39802,39803,31775,31786,31782,31800,31809,31808,33278,33281,33282,33284,33260,34884,33313,33314,33315,33325,33327,33320,33323,33336,33339,33331,33332,33342,33348,33353,33355,33359,33370,33375,33384,34942,34949,34952,35032,35039,35166,32669,32671,32679,32687,32688,32690,31868,25929,31889,31901,31900,31902,31906,31922,31932,31933,31937,31943,31948,31949,31944,31941,31959,31976,33390,26280,32703,32718,32725,32741,32737,32742,32745,32750,32755,31992,32119,32166,32174,32327,32411,40632,40628,36211,36228,36244,36241,36273,36199,36205,35911,35913,37194,37200,37198,37199,37220,39804,39805,39806,39807,39808,39809,39810,39811,39812,39813,39814,39815,39816,39817,39818,39819,39820,39821,39822,39823,39824,39825,39826,39827,39828,39829,39830,39831,39832,39833,39834,39835,39836,39837,39838,39839,39840,39841,39842,39843,39844,39845,39846,39847,39848,39849,39850,39851,39852,39853,39854,39855,39856,39857,39858,39859,39860,39861,39862,39863,39864,39865,39866,39867,39868,39869,39870,39871,39872,39873,39874,39875,39876,39877,39878,39879,39880,39881,39882,39883,39884,39885,39886,39887,39888,39889,39890,39891,39892,39893,39894,39895,39896,39897,39898,39899,37218,37217,37232,37225,37231,37245,37246,37234,37236,37241,37260,37253,37264,37261,37265,37282,37283,37290,37293,37294,37295,37301,37300,37306,35925,40574,36280,36331,36357,36441,36457,36277,36287,36284,36282,36292,36310,36311,36314,36318,36302,36303,36315,36294,36332,36343,36344,36323,36345,36347,36324,36361,36349,36372,36381,36383,36396,36398,36387,36399,36410,36416,36409,36405,36413,36401,36425,36417,36418,36433,36434,36426,36464,36470,36476,36463,36468,36485,36495,36500,36496,36508,36510,35960,35970,35978,35973,35992,35988,26011,35286,35294,35290,35292,39900,39901,39902,39903,39904,39905,39906,39907,39908,39909,39910,39911,39912,39913,39914,39915,39916,39917,39918,39919,39920,39921,39922,39923,39924,39925,39926,39927,39928,39929,39930,39931,39932,39933,39934,39935,39936,39937,39938,39939,39940,39941,39942,39943,39944,39945,39946,39947,39948,39949,39950,39951,39952,39953,39954,39955,39956,39957,39958,39959,39960,39961,39962,39963,39964,39965,39966,39967,39968,39969,39970,39971,39972,39973,39974,39975,39976,39977,39978,39979,39980,39981,39982,39983,39984,39985,39986,39987,39988,39989,39990,39991,39992,39993,39994,39995,35301,35307,35311,35390,35622,38739,38633,38643,38639,38662,38657,38664,38671,38670,38698,38701,38704,38718,40832,40835,40837,40838,40839,40840,40841,40842,40844,40702,40715,40717,38585,38588,38589,38606,38610,30655,38624,37518,37550,37576,37694,37738,37834,37775,37950,37995,40063,40066,40069,40070,40071,40072,31267,40075,40078,40080,40081,40082,40084,40085,40090,40091,40094,40095,40096,40097,40098,40099,40101,40102,40103,40104,40105,40107,40109,40110,40112,40113,40114,40115,40116,40117,40118,40119,40122,40123,40124,40125,40132,40133,40134,40135,40138,40139,39996,39997,39998,39999,40000,40001,40002,40003,40004,40005,40006,40007,40008,40009,40010,40011,40012,40013,40014,40015,40016,40017,40018,40019,40020,40021,40022,40023,40024,40025,40026,40027,40028,40029,40030,40031,40032,40033,40034,40035,40036,40037,40038,40039,40040,40041,40042,40043,40044,40045,40046,40047,40048,40049,40050,40051,40052,40053,40054,40055,40056,40057,40058,40059,40061,40062,40064,40067,40068,40073,40074,40076,40079,40083,40086,40087,40088,40089,40093,40106,40108,40111,40121,40126,40127,40128,40129,40130,40136,40137,40145,40146,40154,40155,40160,40161,40140,40141,40142,40143,40144,40147,40148,40149,40151,40152,40153,40156,40157,40159,40162,38780,38789,38801,38802,38804,38831,38827,38819,38834,38836,39601,39600,39607,40536,39606,39610,39612,39617,39616,39621,39618,39627,39628,39633,39749,39747,39751,39753,39752,39757,39761,39144,39181,39214,39253,39252,39647,39649,39654,39663,39659,39675,39661,39673,39688,39695,39699,39711,39715,40637,40638,32315,40578,40583,40584,40587,40594,37846,40605,40607,40667,40668,40669,40672,40671,40674,40681,40679,40677,40682,40687,40738,40748,40751,40761,40759,40765,40766,40772,40163,40164,40165,40166,40167,40168,40169,40170,40171,40172,40173,40174,40175,40176,40177,40178,40179,40180,40181,40182,40183,40184,40185,40186,40187,40188,40189,40190,40191,40192,40193,40194,40195,40196,40197,40198,40199,40200,40201,40202,40203,40204,40205,40206,40207,40208,40209,40210,40211,40212,40213,40214,40215,40216,40217,40218,40219,40220,40221,40222,40223,40224,40225,40226,40227,40228,40229,40230,40231,40232,40233,40234,40235,40236,40237,40238,40239,40240,40241,40242,40243,40244,40245,40246,40247,40248,40249,40250,40251,40252,40253,40254,40255,40256,40257,40258,57908,57909,57910,57911,57912,57913,57914,57915,57916,57917,57918,57919,57920,57921,57922,57923,57924,57925,57926,57927,57928,57929,57930,57931,57932,57933,57934,57935,57936,57937,57938,57939,57940,57941,57942,57943,57944,57945,57946,57947,57948,57949,57950,57951,57952,57953,57954,57955,57956,57957,57958,57959,57960,57961,57962,57963,57964,57965,57966,57967,57968,57969,57970,57971,57972,57973,57974,57975,57976,57977,57978,57979,57980,57981,57982,57983,57984,57985,57986,57987,57988,57989,57990,57991,57992,57993,57994,57995,57996,57997,57998,57999,58000,58001,40259,40260,40261,40262,40263,40264,40265,40266,40267,40268,40269,40270,40271,40272,40273,40274,40275,40276,40277,40278,40279,40280,40281,40282,40283,40284,40285,40286,40287,40288,40289,40290,40291,40292,40293,40294,40295,40296,40297,40298,40299,40300,40301,40302,40303,40304,40305,40306,40307,40308,40309,40310,40311,40312,40313,40314,40315,40316,40317,40318,40319,40320,40321,40322,40323,40324,40325,40326,40327,40328,40329,40330,40331,40332,40333,40334,40335,40336,40337,40338,40339,40340,40341,40342,40343,40344,40345,40346,40347,40348,40349,40350,40351,40352,40353,40354,58002,58003,58004,58005,58006,58007,58008,58009,58010,58011,58012,58013,58014,58015,58016,58017,58018,58019,58020,58021,58022,58023,58024,58025,58026,58027,58028,58029,58030,58031,58032,58033,58034,58035,58036,58037,58038,58039,58040,58041,58042,58043,58044,58045,58046,58047,58048,58049,58050,58051,58052,58053,58054,58055,58056,58057,58058,58059,58060,58061,58062,58063,58064,58065,58066,58067,58068,58069,58070,58071,58072,58073,58074,58075,58076,58077,58078,58079,58080,58081,58082,58083,58084,58085,58086,58087,58088,58089,58090,58091,58092,58093,58094,58095,40355,40356,40357,40358,40359,40360,40361,40362,40363,40364,40365,40366,40367,40368,40369,40370,40371,40372,40373,40374,40375,40376,40377,40378,40379,40380,40381,40382,40383,40384,40385,40386,40387,40388,40389,40390,40391,40392,40393,40394,40395,40396,40397,40398,40399,40400,40401,40402,40403,40404,40405,40406,40407,40408,40409,40410,40411,40412,40413,40414,40415,40416,40417,40418,40419,40420,40421,40422,40423,40424,40425,40426,40427,40428,40429,40430,40431,40432,40433,40434,40435,40436,40437,40438,40439,40440,40441,40442,40443,40444,40445,40446,40447,40448,40449,40450,58096,58097,58098,58099,58100,58101,58102,58103,58104,58105,58106,58107,58108,58109,58110,58111,58112,58113,58114,58115,58116,58117,58118,58119,58120,58121,58122,58123,58124,58125,58126,58127,58128,58129,58130,58131,58132,58133,58134,58135,58136,58137,58138,58139,58140,58141,58142,58143,58144,58145,58146,58147,58148,58149,58150,58151,58152,58153,58154,58155,58156,58157,58158,58159,58160,58161,58162,58163,58164,58165,58166,58167,58168,58169,58170,58171,58172,58173,58174,58175,58176,58177,58178,58179,58180,58181,58182,58183,58184,58185,58186,58187,58188,58189,40451,40452,40453,40454,40455,40456,40457,40458,40459,40460,40461,40462,40463,40464,40465,40466,40467,40468,40469,40470,40471,40472,40473,40474,40475,40476,40477,40478,40484,40487,40494,40496,40500,40507,40508,40512,40525,40528,40530,40531,40532,40534,40537,40541,40543,40544,40545,40546,40549,40558,40559,40562,40564,40565,40566,40567,40568,40569,40570,40571,40572,40573,40576,40577,40579,40580,40581,40582,40585,40586,40588,40589,40590,40591,40592,40593,40596,40597,40598,40599,40600,40601,40602,40603,40604,40606,40608,40609,40610,40611,40612,40613,40615,40616,40617,40618,58190,58191,58192,58193,58194,58195,58196,58197,58198,58199,58200,58201,58202,58203,58204,58205,58206,58207,58208,58209,58210,58211,58212,58213,58214,58215,58216,58217,58218,58219,58220,58221,58222,58223,58224,58225,58226,58227,58228,58229,58230,58231,58232,58233,58234,58235,58236,58237,58238,58239,58240,58241,58242,58243,58244,58245,58246,58247,58248,58249,58250,58251,58252,58253,58254,58255,58256,58257,58258,58259,58260,58261,58262,58263,58264,58265,58266,58267,58268,58269,58270,58271,58272,58273,58274,58275,58276,58277,58278,58279,58280,58281,58282,58283,40619,40620,40621,40622,40623,40624,40625,40626,40627,40629,40630,40631,40633,40634,40636,40639,40640,40641,40642,40643,40645,40646,40647,40648,40650,40651,40652,40656,40658,40659,40661,40662,40663,40665,40666,40670,40673,40675,40676,40678,40680,40683,40684,40685,40686,40688,40689,40690,40691,40692,40693,40694,40695,40696,40698,40701,40703,40704,40705,40706,40707,40708,40709,40710,40711,40712,40713,40714,40716,40719,40721,40722,40724,40725,40726,40728,40730,40731,40732,40733,40734,40735,40737,40739,40740,40741,40742,40743,40744,40745,40746,40747,40749,40750,40752,40753,58284,58285,58286,58287,58288,58289,58290,58291,58292,58293,58294,58295,58296,58297,58298,58299,58300,58301,58302,58303,58304,58305,58306,58307,58308,58309,58310,58311,58312,58313,58314,58315,58316,58317,58318,58319,58320,58321,58322,58323,58324,58325,58326,58327,58328,58329,58330,58331,58332,58333,58334,58335,58336,58337,58338,58339,58340,58341,58342,58343,58344,58345,58346,58347,58348,58349,58350,58351,58352,58353,58354,58355,58356,58357,58358,58359,58360,58361,58362,58363,58364,58365,58366,58367,58368,58369,58370,58371,58372,58373,58374,58375,58376,58377,40754,40755,40756,40757,40758,40760,40762,40764,40767,40768,40769,40770,40771,40773,40774,40775,40776,40777,40778,40779,40780,40781,40782,40783,40786,40787,40788,40789,40790,40791,40792,40793,40794,40795,40796,40797,40798,40799,40800,40801,40802,40803,40804,40805,40806,40807,40808,40809,40810,40811,40812,40813,40814,40815,40816,40817,40818,40819,40820,40821,40822,40823,40824,40825,40826,40827,40828,40829,40830,40833,40834,40845,40846,40847,40848,40849,40850,40851,40852,40853,40854,40855,40856,40860,40861,40862,40865,40866,40867,40868,40869,63788,63865,63893,63975,63985,58378,58379,58380,58381,58382,58383,58384,58385,58386,58387,58388,58389,58390,58391,58392,58393,58394,58395,58396,58397,58398,58399,58400,58401,58402,58403,58404,58405,58406,58407,58408,58409,58410,58411,58412,58413,58414,58415,58416,58417,58418,58419,58420,58421,58422,58423,58424,58425,58426,58427,58428,58429,58430,58431,58432,58433,58434,58435,58436,58437,58438,58439,58440,58441,58442,58443,58444,58445,58446,58447,58448,58449,58450,58451,58452,58453,58454,58455,58456,58457,58458,58459,58460,58461,58462,58463,58464,58465,58466,58467,58468,58469,58470,58471,64012,64013,64014,64015,64017,64019,64020,64024,64031,64032,64033,64035,64036,64039,64040,64041,11905,59414,59415,59416,11908,13427,13383,11912,11915,59422,13726,13850,13838,11916,11927,14702,14616,59430,14799,14815,14963,14800,59435,59436,15182,15470,15584,11943,59441,59442,11946,16470,16735,11950,17207,11955,11958,11959,59451,17329,17324,11963,17373,17622,18017,17996,59459,18211,18217,18300,18317,11978,18759,18810,18813,18818,18819,18821,18822,18847,18843,18871,18870,59476,59477,19619,19615,19616,19617,19575,19618,19731,19732,19733,19734,19735,19736,19737,19886,59492,58472,58473,58474,58475,58476,58477,58478,58479,58480,58481,58482,58483,58484,58485,58486,58487,58488,58489,58490,58491,58492,58493,58494,58495,58496,58497,58498,58499,58500,58501,58502,58503,58504,58505,58506,58507,58508,58509,58510,58511,58512,58513,58514,58515,58516,58517,58518,58519,58520,58521,58522,58523,58524,58525,58526,58527,58528,58529,58530,58531,58532,58533,58534,58535,58536,58537,58538,58539,58540,58541,58542,58543,58544,58545,58546,58547,58548,58549,58550,58551,58552,58553,58554,58555,58556,58557,58558,58559,58560,58561,58562,58563,58564,58565],"gb18030-ranges":[[0,128],[36,165],[38,169],[45,178],[50,184],[81,216],[89,226],[95,235],[96,238],[100,244],[103,248],[104,251],[105,253],[109,258],[126,276],[133,284],[148,300],[172,325],[175,329],[179,334],[208,364],[306,463],[307,465],[308,467],[309,469],[310,471],[311,473],[312,475],[313,477],[341,506],[428,594],[443,610],[544,712],[545,716],[558,730],[741,930],[742,938],[749,962],[750,970],[805,1026],[819,1104],[820,1106],[7922,8209],[7924,8215],[7925,8218],[7927,8222],[7934,8231],[7943,8241],[7944,8244],[7945,8246],[7950,8252],[8062,8365],[8148,8452],[8149,8454],[8152,8458],[8164,8471],[8174,8482],[8236,8556],[8240,8570],[8262,8596],[8264,8602],[8374,8713],[8380,8720],[8381,8722],[8384,8726],[8388,8731],[8390,8737],[8392,8740],[8393,8742],[8394,8748],[8396,8751],[8401,8760],[8406,8766],[8416,8777],[8419,8781],[8424,8787],[8437,8802],[8439,8808],[8445,8816],[8482,8854],[8485,8858],[8496,8870],[8521,8896],[8603,8979],[8936,9322],[8946,9372],[9046,9548],[9050,9588],[9063,9616],[9066,9622],[9076,9634],[9092,9652],[9100,9662],[9108,9672],[9111,9676],[9113,9680],[9131,9702],[9162,9735],[9164,9738],[9218,9793],[9219,9795],[11329,11906],[11331,11909],[11334,11913],[11336,11917],[11346,11928],[11361,11944],[11363,11947],[11366,11951],[11370,11956],[11372,11960],[11375,11964],[11389,11979],[11682,12284],[11686,12292],[11687,12312],[11692,12319],[11694,12330],[11714,12351],[11716,12436],[11723,12447],[11725,12535],[11730,12543],[11736,12586],[11982,12842],[11989,12850],[12102,12964],[12336,13200],[12348,13215],[12350,13218],[12384,13253],[12393,13263],[12395,13267],[12397,13270],[12510,13384],[12553,13428],[12851,13727],[12962,13839],[12973,13851],[13738,14617],[13823,14703],[13919,14801],[13933,14816],[14080,14964],[14298,15183],[14585,15471],[14698,15585],[15583,16471],[15847,16736],[16318,17208],[16434,17325],[16438,17330],[16481,17374],[16729,17623],[17102,17997],[17122,18018],[17315,18212],[17320,18218],[17402,18301],[17418,18318],[17859,18760],[17909,18811],[17911,18814],[17915,18820],[17916,18823],[17936,18844],[17939,18848],[17961,18872],[18664,19576],[18703,19620],[18814,19738],[18962,19887],[19043,40870],[33469,59244],[33470,59336],[33471,59367],[33484,59413],[33485,59417],[33490,59423],[33497,59431],[33501,59437],[33505,59443],[33513,59452],[33520,59460],[33536,59478],[33550,59493],[37845,63789],[37921,63866],[37948,63894],[38029,63976],[38038,63986],[38064,64016],[38065,64018],[38066,64021],[38069,64025],[38075,64034],[38076,64037],[38078,64042],[39108,65074],[39109,65093],[39113,65107],[39114,65112],[39115,65127],[39116,65132],[39265,65375],[39394,65510],[189000,65536]],jis0208:[12288,12289,12290,65292,65294,12539,65306,65307,65311,65281,12443,12444,180,65344,168,65342,65507,65343,12541,12542,12445,12446,12291,20189,12293,12294,12295,12540,8213,8208,65295,65340,65374,8741,65372,8230,8229,8216,8217,8220,8221,65288,65289,12308,12309,65339,65341,65371,65373,12296,12297,12298,12299,12300,12301,12302,12303,12304,12305,65291,65293,177,215,247,65309,8800,65308,65310,8806,8807,8734,8756,9794,9792,176,8242,8243,8451,65509,65284,65504,65505,65285,65283,65286,65290,65312,167,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,9650,9661,9660,8251,12306,8594,8592,8593,8595,12307,null,null,null,null,null,null,null,null,null,null,null,8712,8715,8838,8839,8834,8835,8746,8745,null,null,null,null,null,null,null,null,8743,8744,65506,8658,8660,8704,8707,null,null,null,null,null,null,null,null,null,null,null,8736,8869,8978,8706,8711,8801,8786,8810,8811,8730,8765,8733,8757,8747,8748,null,null,null,null,null,null,null,8491,8240,9839,9837,9834,8224,8225,182,null,null,null,null,9711,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,null,null,null,null,null,null,null,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,null,null,null,null,null,null,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,null,null,null,null,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,null,null,null,null,null,null,null,null,null,null,null,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,null,null,null,null,null,null,null,null,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,null,null,null,null,null,null,null,null,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,null,null,null,null,null,null,null,null,null,null,null,null,null,9472,9474,9484,9488,9496,9492,9500,9516,9508,9524,9532,9473,9475,9487,9491,9499,9495,9507,9523,9515,9531,9547,9504,9519,9512,9527,9535,9501,9520,9509,9528,9538,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9322,9323,9324,9325,9326,9327,9328,9329,9330,9331,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,null,13129,13076,13090,13133,13080,13095,13059,13110,13137,13143,13069,13094,13091,13099,13130,13115,13212,13213,13214,13198,13199,13252,13217,null,null,null,null,null,null,null,null,13179,12317,12319,8470,13261,8481,12964,12965,12966,12967,12968,12849,12850,12857,13182,13181,13180,8786,8801,8747,8750,8721,8730,8869,8736,8735,8895,8757,8745,8746,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,20124,21782,23043,38463,21696,24859,25384,23030,36898,33909,33564,31312,24746,25569,28197,26093,33894,33446,39925,26771,22311,26017,25201,23451,22992,34427,39156,32098,32190,39822,25110,31903,34999,23433,24245,25353,26263,26696,38343,38797,26447,20197,20234,20301,20381,20553,22258,22839,22996,23041,23561,24799,24847,24944,26131,26885,28858,30031,30064,31227,32173,32239,32963,33806,34915,35586,36949,36986,21307,20117,20133,22495,32946,37057,30959,19968,22769,28322,36920,31282,33576,33419,39983,20801,21360,21693,21729,22240,23035,24341,39154,28139,32996,34093,38498,38512,38560,38907,21515,21491,23431,28879,32701,36802,38632,21359,40284,31418,19985,30867,33276,28198,22040,21764,27421,34074,39995,23013,21417,28006,29916,38287,22082,20113,36939,38642,33615,39180,21473,21942,23344,24433,26144,26355,26628,27704,27891,27945,29787,30408,31310,38964,33521,34907,35424,37613,28082,30123,30410,39365,24742,35585,36234,38322,27022,21421,20870,22290,22576,22852,23476,24310,24616,25513,25588,27839,28436,28814,28948,29017,29141,29503,32257,33398,33489,34199,36960,37467,40219,22633,26044,27738,29989,20985,22830,22885,24448,24540,25276,26106,27178,27431,27572,29579,32705,35158,40236,40206,40644,23713,27798,33659,20740,23627,25014,33222,26742,29281,20057,20474,21368,24681,28201,31311,38899,19979,21270,20206,20309,20285,20385,20339,21152,21487,22025,22799,23233,23478,23521,31185,26247,26524,26550,27468,27827,28779,29634,31117,31166,31292,31623,33457,33499,33540,33655,33775,33747,34662,35506,22057,36008,36838,36942,38686,34442,20420,23784,25105,29273,30011,33253,33469,34558,36032,38597,39187,39381,20171,20250,35299,22238,22602,22730,24315,24555,24618,24724,24674,25040,25106,25296,25913,39745,26214,26800,28023,28784,30028,30342,32117,33445,34809,38283,38542,35997,20977,21182,22806,21683,23475,23830,24936,27010,28079,30861,33995,34903,35442,37799,39608,28012,39336,34521,22435,26623,34510,37390,21123,22151,21508,24275,25313,25785,26684,26680,27579,29554,30906,31339,35226,35282,36203,36611,37101,38307,38548,38761,23398,23731,27005,38989,38990,25499,31520,27179,27263,26806,39949,28511,21106,21917,24688,25324,27963,28167,28369,33883,35088,36676,19988,39993,21494,26907,27194,38788,26666,20828,31427,33970,37340,37772,22107,40232,26658,33541,33841,31909,21000,33477,29926,20094,20355,20896,23506,21002,21208,21223,24059,21914,22570,23014,23436,23448,23515,24178,24185,24739,24863,24931,25022,25563,25954,26577,26707,26874,27454,27475,27735,28450,28567,28485,29872,29976,30435,30475,31487,31649,31777,32233,32566,32752,32925,33382,33694,35251,35532,36011,36996,37969,38291,38289,38306,38501,38867,39208,33304,20024,21547,23736,24012,29609,30284,30524,23721,32747,36107,38593,38929,38996,39000,20225,20238,21361,21916,22120,22522,22855,23305,23492,23696,24076,24190,24524,25582,26426,26071,26082,26399,26827,26820,27231,24112,27589,27671,27773,30079,31048,23395,31232,32000,24509,35215,35352,36020,36215,36556,36637,39138,39438,39740,20096,20605,20736,22931,23452,25135,25216,25836,27450,29344,30097,31047,32681,34811,35516,35696,25516,33738,38816,21513,21507,21931,26708,27224,35440,30759,26485,40653,21364,23458,33050,34384,36870,19992,20037,20167,20241,21450,21560,23470,24339,24613,25937,26429,27714,27762,27875,28792,29699,31350,31406,31496,32026,31998,32102,26087,29275,21435,23621,24040,25298,25312,25369,28192,34394,35377,36317,37624,28417,31142,39770,20136,20139,20140,20379,20384,20689,20807,31478,20849,20982,21332,21281,21375,21483,21932,22659,23777,24375,24394,24623,24656,24685,25375,25945,27211,27841,29378,29421,30703,33016,33029,33288,34126,37111,37857,38911,39255,39514,20208,20957,23597,26241,26989,23616,26354,26997,29577,26704,31873,20677,21220,22343,24062,37670,26020,27427,27453,29748,31105,31165,31563,32202,33465,33740,34943,35167,35641,36817,37329,21535,37504,20061,20534,21477,21306,29399,29590,30697,33510,36527,39366,39368,39378,20855,24858,34398,21936,31354,20598,23507,36935,38533,20018,27355,37351,23633,23624,25496,31391,27795,38772,36705,31402,29066,38536,31874,26647,32368,26705,37740,21234,21531,34219,35347,32676,36557,37089,21350,34952,31041,20418,20670,21009,20804,21843,22317,29674,22411,22865,24418,24452,24693,24950,24935,25001,25522,25658,25964,26223,26690,28179,30054,31293,31995,32076,32153,32331,32619,33550,33610,34509,35336,35427,35686,36605,38938,40335,33464,36814,39912,21127,25119,25731,28608,38553,26689,20625,27424,27770,28500,31348,32080,34880,35363,26376,20214,20537,20518,20581,20860,21048,21091,21927,22287,22533,23244,24314,25010,25080,25331,25458,26908,27177,29309,29356,29486,30740,30831,32121,30476,32937,35211,35609,36066,36562,36963,37749,38522,38997,39443,40568,20803,21407,21427,24187,24358,28187,28304,29572,29694,32067,33335,35328,35578,38480,20046,20491,21476,21628,22266,22993,23396,24049,24235,24359,25144,25925,26543,28246,29392,31946,34996,32929,32993,33776,34382,35463,36328,37431,38599,39015,40723,20116,20114,20237,21320,21577,21566,23087,24460,24481,24735,26791,27278,29786,30849,35486,35492,35703,37264,20062,39881,20132,20348,20399,20505,20502,20809,20844,21151,21177,21246,21402,21475,21521,21518,21897,22353,22434,22909,23380,23389,23439,24037,24039,24055,24184,24195,24218,24247,24344,24658,24908,25239,25304,25511,25915,26114,26179,26356,26477,26657,26775,27083,27743,27946,28009,28207,28317,30002,30343,30828,31295,31968,32005,32024,32094,32177,32789,32771,32943,32945,33108,33167,33322,33618,34892,34913,35611,36002,36092,37066,37237,37489,30783,37628,38308,38477,38917,39321,39640,40251,21083,21163,21495,21512,22741,25335,28640,35946,36703,40633,20811,21051,21578,22269,31296,37239,40288,40658,29508,28425,33136,29969,24573,24794,39592,29403,36796,27492,38915,20170,22256,22372,22718,23130,24680,25031,26127,26118,26681,26801,28151,30165,32058,33390,39746,20123,20304,21449,21766,23919,24038,24046,26619,27801,29811,30722,35408,37782,35039,22352,24231,25387,20661,20652,20877,26368,21705,22622,22971,23472,24425,25165,25505,26685,27507,28168,28797,37319,29312,30741,30758,31085,25998,32048,33756,35009,36617,38555,21092,22312,26448,32618,36001,20916,22338,38442,22586,27018,32948,21682,23822,22524,30869,40442,20316,21066,21643,25662,26152,26388,26613,31364,31574,32034,37679,26716,39853,31545,21273,20874,21047,23519,25334,25774,25830,26413,27578,34217,38609,30352,39894,25420,37638,39851,30399,26194,19977,20632,21442,23665,24808,25746,25955,26719,29158,29642,29987,31639,32386,34453,35715,36059,37240,39184,26028,26283,27531,20181,20180,20282,20351,21050,21496,21490,21987,22235,22763,22987,22985,23039,23376,23629,24066,24107,24535,24605,25351,25903,23388,26031,26045,26088,26525,27490,27515,27663,29509,31049,31169,31992,32025,32043,32930,33026,33267,35222,35422,35433,35430,35468,35566,36039,36060,38604,39164,27503,20107,20284,20365,20816,23383,23546,24904,25345,26178,27425,28363,27835,29246,29885,30164,30913,31034,32780,32819,33258,33940,36766,27728,40575,24335,35672,40235,31482,36600,23437,38635,19971,21489,22519,22833,23241,23460,24713,28287,28422,30142,36074,23455,34048,31712,20594,26612,33437,23649,34122,32286,33294,20889,23556,25448,36198,26012,29038,31038,32023,32773,35613,36554,36974,34503,37034,20511,21242,23610,26451,28796,29237,37196,37320,37675,33509,23490,24369,24825,20027,21462,23432,25163,26417,27530,29417,29664,31278,33131,36259,37202,39318,20754,21463,21610,23551,25480,27193,32172,38656,22234,21454,21608,23447,23601,24030,20462,24833,25342,27954,31168,31179,32066,32333,32722,33261,33311,33936,34886,35186,35728,36468,36655,36913,37195,37228,38598,37276,20160,20303,20805,21313,24467,25102,26580,27713,28171,29539,32294,37325,37507,21460,22809,23487,28113,31069,32302,31899,22654,29087,20986,34899,36848,20426,23803,26149,30636,31459,33308,39423,20934,24490,26092,26991,27529,28147,28310,28516,30462,32020,24033,36981,37255,38918,20966,21021,25152,26257,26329,28186,24246,32210,32626,26360,34223,34295,35576,21161,21465,22899,24207,24464,24661,37604,38500,20663,20767,21213,21280,21319,21484,21736,21830,21809,22039,22888,22974,23100,23477,23558,23567,23569,23578,24196,24202,24288,24432,25215,25220,25307,25484,25463,26119,26124,26157,26230,26494,26786,27167,27189,27836,28040,28169,28248,28988,28966,29031,30151,30465,30813,30977,31077,31216,31456,31505,31911,32057,32918,33750,33931,34121,34909,35059,35359,35388,35412,35443,35937,36062,37284,37478,37758,37912,38556,38808,19978,19976,19998,20055,20887,21104,22478,22580,22732,23330,24120,24773,25854,26465,26454,27972,29366,30067,31331,33976,35698,37304,37664,22065,22516,39166,25325,26893,27542,29165,32340,32887,33394,35302,39135,34645,36785,23611,20280,20449,20405,21767,23072,23517,23529,24515,24910,25391,26032,26187,26862,27035,28024,28145,30003,30137,30495,31070,31206,32051,33251,33455,34218,35242,35386,36523,36763,36914,37341,38663,20154,20161,20995,22645,22764,23563,29978,23613,33102,35338,36805,38499,38765,31525,35535,38920,37218,22259,21416,36887,21561,22402,24101,25512,27700,28810,30561,31883,32736,34928,36930,37204,37648,37656,38543,29790,39620,23815,23913,25968,26530,36264,38619,25454,26441,26905,33733,38935,38592,35070,28548,25722,23544,19990,28716,30045,26159,20932,21046,21218,22995,24449,24615,25104,25919,25972,26143,26228,26866,26646,27491,28165,29298,29983,30427,31934,32854,22768,35069,35199,35488,35475,35531,36893,37266,38738,38745,25993,31246,33030,38587,24109,24796,25114,26021,26132,26512,30707,31309,31821,32318,33034,36012,36196,36321,36447,30889,20999,25305,25509,25666,25240,35373,31363,31680,35500,38634,32118,33292,34633,20185,20808,21315,21344,23459,23554,23574,24029,25126,25159,25776,26643,26676,27849,27973,27927,26579,28508,29006,29053,26059,31359,31661,32218,32330,32680,33146,33307,33337,34214,35438,36046,36341,36984,36983,37549,37521,38275,39854,21069,21892,28472,28982,20840,31109,32341,33203,31950,22092,22609,23720,25514,26366,26365,26970,29401,30095,30094,30990,31062,31199,31895,32032,32068,34311,35380,38459,36961,40736,20711,21109,21452,21474,20489,21930,22766,22863,29245,23435,23652,21277,24803,24819,25436,25475,25407,25531,25805,26089,26361,24035,27085,27133,28437,29157,20105,30185,30456,31379,31967,32207,32156,32865,33609,33624,33900,33980,34299,35013,36208,36865,36973,37783,38684,39442,20687,22679,24974,33235,34101,36104,36896,20419,20596,21063,21363,24687,25417,26463,28204,36275,36895,20439,23646,36042,26063,32154,21330,34966,20854,25539,23384,23403,23562,25613,26449,36956,20182,22810,22826,27760,35409,21822,22549,22949,24816,25171,26561,33333,26965,38464,39364,39464,20307,22534,23550,32784,23729,24111,24453,24608,24907,25140,26367,27888,28382,32974,33151,33492,34955,36024,36864,36910,38538,40667,39899,20195,21488,22823,31532,37261,38988,40441,28381,28711,21331,21828,23429,25176,25246,25299,27810,28655,29730,35351,37944,28609,35582,33592,20967,34552,21482,21481,20294,36948,36784,22890,33073,24061,31466,36799,26842,35895,29432,40008,27197,35504,20025,21336,22022,22374,25285,25506,26086,27470,28129,28251,28845,30701,31471,31658,32187,32829,32966,34507,35477,37723,22243,22727,24382,26029,26262,27264,27573,30007,35527,20516,30693,22320,24347,24677,26234,27744,30196,31258,32622,33268,34584,36933,39347,31689,30044,31481,31569,33988,36880,31209,31378,33590,23265,30528,20013,20210,23449,24544,25277,26172,26609,27880,34411,34935,35387,37198,37619,39376,27159,28710,29482,33511,33879,36015,19969,20806,20939,21899,23541,24086,24115,24193,24340,24373,24427,24500,25074,25361,26274,26397,28526,29266,30010,30522,32884,33081,33144,34678,35519,35548,36229,36339,37530,38263,38914,40165,21189,25431,30452,26389,27784,29645,36035,37806,38515,27941,22684,26894,27084,36861,37786,30171,36890,22618,26626,25524,27131,20291,28460,26584,36795,34086,32180,37716,26943,28528,22378,22775,23340,32044,29226,21514,37347,40372,20141,20302,20572,20597,21059,35998,21576,22564,23450,24093,24213,24237,24311,24351,24716,25269,25402,25552,26799,27712,30855,31118,31243,32224,33351,35330,35558,36420,36883,37048,37165,37336,40718,27877,25688,25826,25973,28404,30340,31515,36969,37841,28346,21746,24505,25764,36685,36845,37444,20856,22635,22825,23637,24215,28155,32399,29980,36028,36578,39003,28857,20253,27583,28593,30000,38651,20814,21520,22581,22615,22956,23648,24466,26007,26460,28193,30331,33759,36077,36884,37117,37709,30757,30778,21162,24230,22303,22900,24594,20498,20826,20908,20941,20992,21776,22612,22616,22871,23445,23798,23947,24764,25237,25645,26481,26691,26812,26847,30423,28120,28271,28059,28783,29128,24403,30168,31095,31561,31572,31570,31958,32113,21040,33891,34153,34276,35342,35588,35910,36367,36867,36879,37913,38518,38957,39472,38360,20685,21205,21516,22530,23566,24999,25758,27934,30643,31461,33012,33796,36947,37509,23776,40199,21311,24471,24499,28060,29305,30563,31167,31716,27602,29420,35501,26627,27233,20984,31361,26932,23626,40182,33515,23493,37193,28702,22136,23663,24775,25958,27788,35930,36929,38931,21585,26311,37389,22856,37027,20869,20045,20970,34201,35598,28760,25466,37707,26978,39348,32260,30071,21335,26976,36575,38627,27741,20108,23612,24336,36841,21250,36049,32905,34425,24319,26085,20083,20837,22914,23615,38894,20219,22922,24525,35469,28641,31152,31074,23527,33905,29483,29105,24180,24565,25467,25754,29123,31896,20035,24316,20043,22492,22178,24745,28611,32013,33021,33075,33215,36786,35223,34468,24052,25226,25773,35207,26487,27874,27966,29750,30772,23110,32629,33453,39340,20467,24259,25309,25490,25943,26479,30403,29260,32972,32954,36649,37197,20493,22521,23186,26757,26995,29028,29437,36023,22770,36064,38506,36889,34687,31204,30695,33833,20271,21093,21338,25293,26575,27850,30333,31636,31893,33334,34180,36843,26333,28448,29190,32283,33707,39361,40614,20989,31665,30834,31672,32903,31560,27368,24161,32908,30033,30048,20843,37474,28300,30330,37271,39658,20240,32624,25244,31567,38309,40169,22138,22617,34532,38588,20276,21028,21322,21453,21467,24070,25644,26001,26495,27710,27726,29256,29359,29677,30036,32321,33324,34281,36009,31684,37318,29033,38930,39151,25405,26217,30058,30436,30928,34115,34542,21290,21329,21542,22915,24199,24444,24754,25161,25209,25259,26000,27604,27852,30130,30382,30865,31192,32203,32631,32933,34987,35513,36027,36991,38750,39131,27147,31800,20633,23614,24494,26503,27608,29749,30473,32654,40763,26570,31255,21305,30091,39661,24422,33181,33777,32920,24380,24517,30050,31558,36924,26727,23019,23195,32016,30334,35628,20469,24426,27161,27703,28418,29922,31080,34920,35413,35961,24287,25551,30149,31186,33495,37672,37618,33948,34541,39981,21697,24428,25996,27996,28693,36007,36051,38971,25935,29942,19981,20184,22496,22827,23142,23500,20904,24067,24220,24598,25206,25975,26023,26222,28014,29238,31526,33104,33178,33433,35676,36000,36070,36212,38428,38468,20398,25771,27494,33310,33889,34154,37096,23553,26963,39080,33914,34135,20239,21103,24489,24133,26381,31119,33145,35079,35206,28149,24343,25173,27832,20175,29289,39826,20998,21563,22132,22707,24996,25198,28954,22894,31881,31966,32027,38640,25991,32862,19993,20341,20853,22592,24163,24179,24330,26564,20006,34109,38281,38491,31859,38913,20731,22721,30294,30887,21029,30629,34065,31622,20559,22793,29255,31687,32232,36794,36820,36941,20415,21193,23081,24321,38829,20445,33303,37610,22275,25429,27497,29995,35036,36628,31298,21215,22675,24917,25098,26286,27597,31807,33769,20515,20472,21253,21574,22577,22857,23453,23792,23791,23849,24214,25265,25447,25918,26041,26379,27861,27873,28921,30770,32299,32990,33459,33804,34028,34562,35090,35370,35914,37030,37586,39165,40179,40300,20047,20129,20621,21078,22346,22952,24125,24536,24537,25151,26292,26395,26576,26834,20882,32033,32938,33192,35584,35980,36031,37502,38450,21536,38956,21271,20693,21340,22696,25778,26420,29287,30566,31302,37350,21187,27809,27526,22528,24140,22868,26412,32763,20961,30406,25705,30952,39764,40635,22475,22969,26151,26522,27598,21737,27097,24149,33180,26517,39850,26622,40018,26717,20134,20451,21448,25273,26411,27819,36804,20397,32365,40639,19975,24930,28288,28459,34067,21619,26410,39749,24051,31637,23724,23494,34588,28234,34001,31252,33032,22937,31885,27665,30496,21209,22818,28961,29279,30683,38695,40289,26891,23167,23064,20901,21517,21629,26126,30431,36855,37528,40180,23018,29277,28357,20813,26825,32191,32236,38754,40634,25720,27169,33538,22916,23391,27611,29467,30450,32178,32791,33945,20786,26408,40665,30446,26466,21247,39173,23588,25147,31870,36016,21839,24758,32011,38272,21249,20063,20918,22812,29242,32822,37326,24357,30690,21380,24441,32004,34220,35379,36493,38742,26611,34222,37971,24841,24840,27833,30290,35565,36664,21807,20305,20778,21191,21451,23461,24189,24736,24962,25558,26377,26586,28263,28044,29494,29495,30001,31056,35029,35480,36938,37009,37109,38596,34701,22805,20104,20313,19982,35465,36671,38928,20653,24188,22934,23481,24248,25562,25594,25793,26332,26954,27096,27915,28342,29076,29992,31407,32650,32768,33865,33993,35201,35617,36362,36965,38525,39178,24958,25233,27442,27779,28020,32716,32764,28096,32645,34746,35064,26469,33713,38972,38647,27931,32097,33853,37226,20081,21365,23888,27396,28651,34253,34349,35239,21033,21519,23653,26446,26792,29702,29827,30178,35023,35041,37324,38626,38520,24459,29575,31435,33870,25504,30053,21129,27969,28316,29705,30041,30827,31890,38534,31452,40845,20406,24942,26053,34396,20102,20142,20698,20001,20940,23534,26009,26753,28092,29471,30274,30637,31260,31975,33391,35538,36988,37327,38517,38936,21147,32209,20523,21400,26519,28107,29136,29747,33256,36650,38563,40023,40607,29792,22593,28057,32047,39006,20196,20278,20363,20919,21169,23994,24604,29618,31036,33491,37428,38583,38646,38666,40599,40802,26278,27508,21015,21155,28872,35010,24265,24651,24976,28451,29001,31806,32244,32879,34030,36899,37676,21570,39791,27347,28809,36034,36335,38706,21172,23105,24266,24324,26391,27004,27028,28010,28431,29282,29436,31725,32769,32894,34635,37070,20845,40595,31108,32907,37682,35542,20525,21644,35441,27498,36036,33031,24785,26528,40434,20121,20120,39952,35435,34241,34152,26880,28286,30871,33109,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,24332,19984,19989,20010,20017,20022,20028,20031,20034,20054,20056,20098,20101,35947,20106,33298,24333,20110,20126,20127,20128,20130,20144,20147,20150,20174,20173,20164,20166,20162,20183,20190,20205,20191,20215,20233,20314,20272,20315,20317,20311,20295,20342,20360,20367,20376,20347,20329,20336,20369,20335,20358,20374,20760,20436,20447,20430,20440,20443,20433,20442,20432,20452,20453,20506,20520,20500,20522,20517,20485,20252,20470,20513,20521,20524,20478,20463,20497,20486,20547,20551,26371,20565,20560,20552,20570,20566,20588,20600,20608,20634,20613,20660,20658,20681,20682,20659,20674,20694,20702,20709,20717,20707,20718,20729,20725,20745,20737,20738,20758,20757,20756,20762,20769,20794,20791,20796,20795,20799,20800,20818,20812,20820,20834,31480,20841,20842,20846,20864,20866,22232,20876,20873,20879,20881,20883,20885,20886,20900,20902,20898,20905,20906,20907,20915,20913,20914,20912,20917,20925,20933,20937,20955,20960,34389,20969,20973,20976,20981,20990,20996,21003,21012,21006,21031,21034,21038,21043,21049,21071,21060,21067,21068,21086,21076,21098,21108,21097,21107,21119,21117,21133,21140,21138,21105,21128,21137,36776,36775,21164,21165,21180,21173,21185,21197,21207,21214,21219,21222,39149,21216,21235,21237,21240,21241,21254,21256,30008,21261,21264,21263,21269,21274,21283,21295,21297,21299,21304,21312,21318,21317,19991,21321,21325,20950,21342,21353,21358,22808,21371,21367,21378,21398,21408,21414,21413,21422,21424,21430,21443,31762,38617,21471,26364,29166,21486,21480,21485,21498,21505,21565,21568,21548,21549,21564,21550,21558,21545,21533,21582,21647,21621,21646,21599,21617,21623,21616,21650,21627,21632,21622,21636,21648,21638,21703,21666,21688,21669,21676,21700,21704,21672,21675,21698,21668,21694,21692,21720,21733,21734,21775,21780,21757,21742,21741,21754,21730,21817,21824,21859,21836,21806,21852,21829,21846,21847,21816,21811,21853,21913,21888,21679,21898,21919,21883,21886,21912,21918,21934,21884,21891,21929,21895,21928,21978,21957,21983,21956,21980,21988,21972,22036,22007,22038,22014,22013,22043,22009,22094,22096,29151,22068,22070,22066,22072,22123,22116,22063,22124,22122,22150,22144,22154,22176,22164,22159,22181,22190,22198,22196,22210,22204,22209,22211,22208,22216,22222,22225,22227,22231,22254,22265,22272,22271,22276,22281,22280,22283,22285,22291,22296,22294,21959,22300,22310,22327,22328,22350,22331,22336,22351,22377,22464,22408,22369,22399,22409,22419,22432,22451,22436,22442,22448,22467,22470,22484,22482,22483,22538,22486,22499,22539,22553,22557,22642,22561,22626,22603,22640,27584,22610,22589,22649,22661,22713,22687,22699,22714,22750,22715,22712,22702,22725,22739,22737,22743,22745,22744,22757,22748,22756,22751,22767,22778,22777,22779,22780,22781,22786,22794,22800,22811,26790,22821,22828,22829,22834,22840,22846,31442,22869,22864,22862,22874,22872,22882,22880,22887,22892,22889,22904,22913,22941,20318,20395,22947,22962,22982,23016,23004,22925,23001,23002,23077,23071,23057,23068,23049,23066,23104,23148,23113,23093,23094,23138,23146,23194,23228,23230,23243,23234,23229,23267,23255,23270,23273,23254,23290,23291,23308,23307,23318,23346,23248,23338,23350,23358,23363,23365,23360,23377,23381,23386,23387,23397,23401,23408,23411,23413,23416,25992,23418,23424,23427,23462,23480,23491,23495,23497,23508,23504,23524,23526,23522,23518,23525,23531,23536,23542,23539,23557,23559,23560,23565,23571,23584,23586,23592,23608,23609,23617,23622,23630,23635,23632,23631,23409,23660,23662,20066,23670,23673,23692,23697,23700,22939,23723,23739,23734,23740,23735,23749,23742,23751,23769,23785,23805,23802,23789,23948,23786,23819,23829,23831,23900,23839,23835,23825,23828,23842,23834,23833,23832,23884,23890,23886,23883,23916,23923,23926,23943,23940,23938,23970,23965,23980,23982,23997,23952,23991,23996,24009,24013,24019,24018,24022,24027,24043,24050,24053,24075,24090,24089,24081,24091,24118,24119,24132,24131,24128,24142,24151,24148,24159,24162,24164,24135,24181,24182,24186,40636,24191,24224,24257,24258,24264,24272,24271,24278,24291,24285,24282,24283,24290,24289,24296,24297,24300,24305,24307,24304,24308,24312,24318,24323,24329,24413,24412,24331,24337,24342,24361,24365,24376,24385,24392,24396,24398,24367,24401,24406,24407,24409,24417,24429,24435,24439,24451,24450,24447,24458,24456,24465,24455,24478,24473,24472,24480,24488,24493,24508,24534,24571,24548,24568,24561,24541,24755,24575,24609,24672,24601,24592,24617,24590,24625,24603,24597,24619,24614,24591,24634,24666,24641,24682,24695,24671,24650,24646,24653,24675,24643,24676,24642,24684,24683,24665,24705,24717,24807,24707,24730,24708,24731,24726,24727,24722,24743,24715,24801,24760,24800,24787,24756,24560,24765,24774,24757,24792,24909,24853,24838,24822,24823,24832,24820,24826,24835,24865,24827,24817,24845,24846,24903,24894,24872,24871,24906,24895,24892,24876,24884,24893,24898,24900,24947,24951,24920,24921,24922,24939,24948,24943,24933,24945,24927,24925,24915,24949,24985,24982,24967,25004,24980,24986,24970,24977,25003,25006,25036,25034,25033,25079,25032,25027,25030,25018,25035,32633,25037,25062,25059,25078,25082,25076,25087,25085,25084,25086,25088,25096,25097,25101,25100,25108,25115,25118,25121,25130,25134,25136,25138,25139,25153,25166,25182,25187,25179,25184,25192,25212,25218,25225,25214,25234,25235,25238,25300,25219,25236,25303,25297,25275,25295,25343,25286,25812,25288,25308,25292,25290,25282,25287,25243,25289,25356,25326,25329,25383,25346,25352,25327,25333,25424,25406,25421,25628,25423,25494,25486,25472,25515,25462,25507,25487,25481,25503,25525,25451,25449,25534,25577,25536,25542,25571,25545,25554,25590,25540,25622,25652,25606,25619,25638,25654,25885,25623,25640,25615,25703,25711,25718,25678,25898,25749,25747,25765,25769,25736,25788,25818,25810,25797,25799,25787,25816,25794,25841,25831,33289,25824,25825,25260,25827,25839,25900,25846,25844,25842,25850,25856,25853,25880,25884,25861,25892,25891,25899,25908,25909,25911,25910,25912,30027,25928,25942,25941,25933,25944,25950,25949,25970,25976,25986,25987,35722,26011,26015,26027,26039,26051,26054,26049,26052,26060,26066,26075,26073,26080,26081,26097,26482,26122,26115,26107,26483,26165,26166,26164,26140,26191,26180,26185,26177,26206,26205,26212,26215,26216,26207,26210,26224,26243,26248,26254,26249,26244,26264,26269,26305,26297,26313,26302,26300,26308,26296,26326,26330,26336,26175,26342,26345,26352,26357,26359,26383,26390,26398,26406,26407,38712,26414,26431,26422,26433,26424,26423,26438,26462,26464,26457,26467,26468,26505,26480,26537,26492,26474,26508,26507,26534,26529,26501,26551,26607,26548,26604,26547,26601,26552,26596,26590,26589,26594,26606,26553,26574,26566,26599,27292,26654,26694,26665,26688,26701,26674,26702,26803,26667,26713,26723,26743,26751,26783,26767,26797,26772,26781,26779,26755,27310,26809,26740,26805,26784,26810,26895,26765,26750,26881,26826,26888,26840,26914,26918,26849,26892,26829,26836,26855,26837,26934,26898,26884,26839,26851,26917,26873,26848,26863,26920,26922,26906,26915,26913,26822,27001,26999,26972,27000,26987,26964,27006,26990,26937,26996,26941,26969,26928,26977,26974,26973,27009,26986,27058,27054,27088,27071,27073,27091,27070,27086,23528,27082,27101,27067,27075,27047,27182,27025,27040,27036,27029,27060,27102,27112,27138,27163,27135,27402,27129,27122,27111,27141,27057,27166,27117,27156,27115,27146,27154,27329,27171,27155,27204,27148,27250,27190,27256,27207,27234,27225,27238,27208,27192,27170,27280,27277,27296,27268,27298,27299,27287,34327,27323,27331,27330,27320,27315,27308,27358,27345,27359,27306,27354,27370,27387,27397,34326,27386,27410,27414,39729,27423,27448,27447,30428,27449,39150,27463,27459,27465,27472,27481,27476,27483,27487,27489,27512,27513,27519,27520,27524,27523,27533,27544,27541,27550,27556,27562,27563,27567,27570,27569,27571,27575,27580,27590,27595,27603,27615,27628,27627,27635,27631,40638,27656,27667,27668,27675,27684,27683,27742,27733,27746,27754,27778,27789,27802,27777,27803,27774,27752,27763,27794,27792,27844,27889,27859,27837,27863,27845,27869,27822,27825,27838,27834,27867,27887,27865,27882,27935,34893,27958,27947,27965,27960,27929,27957,27955,27922,27916,28003,28051,28004,27994,28025,27993,28046,28053,28644,28037,28153,28181,28170,28085,28103,28134,28088,28102,28140,28126,28108,28136,28114,28101,28154,28121,28132,28117,28138,28142,28205,28270,28206,28185,28274,28255,28222,28195,28267,28203,28278,28237,28191,28227,28218,28238,28196,28415,28189,28216,28290,28330,28312,28361,28343,28371,28349,28335,28356,28338,28372,28373,28303,28325,28354,28319,28481,28433,28748,28396,28408,28414,28479,28402,28465,28399,28466,28364,28478,28435,28407,28550,28538,28536,28545,28544,28527,28507,28659,28525,28546,28540,28504,28558,28561,28610,28518,28595,28579,28577,28580,28601,28614,28586,28639,28629,28652,28628,28632,28657,28654,28635,28681,28683,28666,28689,28673,28687,28670,28699,28698,28532,28701,28696,28703,28720,28734,28722,28753,28771,28825,28818,28847,28913,28844,28856,28851,28846,28895,28875,28893,28889,28937,28925,28956,28953,29029,29013,29064,29030,29026,29004,29014,29036,29071,29179,29060,29077,29096,29100,29143,29113,29118,29138,29129,29140,29134,29152,29164,29159,29173,29180,29177,29183,29197,29200,29211,29224,29229,29228,29232,29234,29243,29244,29247,29248,29254,29259,29272,29300,29310,29314,29313,29319,29330,29334,29346,29351,29369,29362,29379,29382,29380,29390,29394,29410,29408,29409,29433,29431,20495,29463,29450,29468,29462,29469,29492,29487,29481,29477,29502,29518,29519,40664,29527,29546,29544,29552,29560,29557,29563,29562,29640,29619,29646,29627,29632,29669,29678,29662,29858,29701,29807,29733,29688,29746,29754,29781,29759,29791,29785,29761,29788,29801,29808,29795,29802,29814,29822,29835,29854,29863,29898,29903,29908,29681,29920,29923,29927,29929,29934,29938,29936,29937,29944,29943,29956,29955,29957,29964,29966,29965,29973,29971,29982,29990,29996,30012,30020,30029,30026,30025,30043,30022,30042,30057,30052,30055,30059,30061,30072,30070,30086,30087,30068,30090,30089,30082,30100,30106,30109,30117,30115,30146,30131,30147,30133,30141,30136,30140,30129,30157,30154,30162,30169,30179,30174,30206,30207,30204,30209,30192,30202,30194,30195,30219,30221,30217,30239,30247,30240,30241,30242,30244,30260,30256,30267,30279,30280,30278,30300,30296,30305,30306,30312,30313,30314,30311,30316,30320,30322,30326,30328,30332,30336,30339,30344,30347,30350,30358,30355,30361,30362,30384,30388,30392,30393,30394,30402,30413,30422,30418,30430,30433,30437,30439,30442,34351,30459,30472,30471,30468,30505,30500,30494,30501,30502,30491,30519,30520,30535,30554,30568,30571,30555,30565,30591,30590,30585,30606,30603,30609,30624,30622,30640,30646,30649,30655,30652,30653,30651,30663,30669,30679,30682,30684,30691,30702,30716,30732,30738,31014,30752,31018,30789,30862,30836,30854,30844,30874,30860,30883,30901,30890,30895,30929,30918,30923,30932,30910,30908,30917,30922,30956,30951,30938,30973,30964,30983,30994,30993,31001,31020,31019,31040,31072,31063,31071,31066,31061,31059,31098,31103,31114,31133,31143,40779,31146,31150,31155,31161,31162,31177,31189,31207,31212,31201,31203,31240,31245,31256,31257,31264,31263,31104,31281,31291,31294,31287,31299,31319,31305,31329,31330,31337,40861,31344,31353,31357,31368,31383,31381,31384,31382,31401,31432,31408,31414,31429,31428,31423,36995,31431,31434,31437,31439,31445,31443,31449,31450,31453,31457,31458,31462,31469,31472,31490,31503,31498,31494,31539,31512,31513,31518,31541,31528,31542,31568,31610,31492,31565,31499,31564,31557,31605,31589,31604,31591,31600,31601,31596,31598,31645,31640,31647,31629,31644,31642,31627,31634,31631,31581,31641,31691,31681,31692,31695,31668,31686,31709,31721,31761,31764,31718,31717,31840,31744,31751,31763,31731,31735,31767,31757,31734,31779,31783,31786,31775,31799,31787,31805,31820,31811,31828,31823,31808,31824,31832,31839,31844,31830,31845,31852,31861,31875,31888,31908,31917,31906,31915,31905,31912,31923,31922,31921,31918,31929,31933,31936,31941,31938,31960,31954,31964,31970,39739,31983,31986,31988,31990,31994,32006,32002,32028,32021,32010,32069,32075,32046,32050,32063,32053,32070,32115,32086,32078,32114,32104,32110,32079,32099,32147,32137,32091,32143,32125,32155,32186,32174,32163,32181,32199,32189,32171,32317,32162,32175,32220,32184,32159,32176,32216,32221,32228,32222,32251,32242,32225,32261,32266,32291,32289,32274,32305,32287,32265,32267,32290,32326,32358,32315,32309,32313,32323,32311,32306,32314,32359,32349,32342,32350,32345,32346,32377,32362,32361,32380,32379,32387,32213,32381,36782,32383,32392,32393,32396,32402,32400,32403,32404,32406,32398,32411,32412,32568,32570,32581,32588,32589,32590,32592,32593,32597,32596,32600,32607,32608,32616,32617,32615,32632,32642,32646,32643,32648,32647,32652,32660,32670,32669,32666,32675,32687,32690,32697,32686,32694,32696,35697,32709,32710,32714,32725,32724,32737,32742,32745,32755,32761,39132,32774,32772,32779,32786,32792,32793,32796,32801,32808,32831,32827,32842,32838,32850,32856,32858,32863,32866,32872,32883,32882,32880,32886,32889,32893,32895,32900,32902,32901,32923,32915,32922,32941,20880,32940,32987,32997,32985,32989,32964,32986,32982,33033,33007,33009,33051,33065,33059,33071,33099,38539,33094,33086,33107,33105,33020,33137,33134,33125,33126,33140,33155,33160,33162,33152,33154,33184,33173,33188,33187,33119,33171,33193,33200,33205,33214,33208,33213,33216,33218,33210,33225,33229,33233,33241,33240,33224,33242,33247,33248,33255,33274,33275,33278,33281,33282,33285,33287,33290,33293,33296,33302,33321,33323,33336,33331,33344,33369,33368,33373,33370,33375,33380,33378,33384,33386,33387,33326,33393,33399,33400,33406,33421,33426,33451,33439,33467,33452,33505,33507,33503,33490,33524,33523,33530,33683,33539,33531,33529,33502,33542,33500,33545,33497,33589,33588,33558,33586,33585,33600,33593,33616,33605,33583,33579,33559,33560,33669,33690,33706,33695,33698,33686,33571,33678,33671,33674,33660,33717,33651,33653,33696,33673,33704,33780,33811,33771,33742,33789,33795,33752,33803,33729,33783,33799,33760,33778,33805,33826,33824,33725,33848,34054,33787,33901,33834,33852,34138,33924,33911,33899,33965,33902,33922,33897,33862,33836,33903,33913,33845,33994,33890,33977,33983,33951,34009,33997,33979,34010,34000,33985,33990,34006,33953,34081,34047,34036,34071,34072,34092,34079,34069,34068,34044,34112,34147,34136,34120,34113,34306,34123,34133,34176,34212,34184,34193,34186,34216,34157,34196,34203,34282,34183,34204,34167,34174,34192,34249,34234,34255,34233,34256,34261,34269,34277,34268,34297,34314,34323,34315,34302,34298,34310,34338,34330,34352,34367,34381,20053,34388,34399,34407,34417,34451,34467,34473,34474,34443,34444,34486,34479,34500,34502,34480,34505,34851,34475,34516,34526,34537,34540,34527,34523,34543,34578,34566,34568,34560,34563,34555,34577,34569,34573,34553,34570,34612,34623,34615,34619,34597,34601,34586,34656,34655,34680,34636,34638,34676,34647,34664,34670,34649,34643,34659,34666,34821,34722,34719,34690,34735,34763,34749,34752,34768,38614,34731,34756,34739,34759,34758,34747,34799,34802,34784,34831,34829,34814,34806,34807,34830,34770,34833,34838,34837,34850,34849,34865,34870,34873,34855,34875,34884,34882,34898,34905,34910,34914,34923,34945,34942,34974,34933,34941,34997,34930,34946,34967,34962,34990,34969,34978,34957,34980,34992,35007,34993,35011,35012,35028,35032,35033,35037,35065,35074,35068,35060,35048,35058,35076,35084,35082,35091,35139,35102,35109,35114,35115,35137,35140,35131,35126,35128,35148,35101,35168,35166,35174,35172,35181,35178,35183,35188,35191,35198,35203,35208,35210,35219,35224,35233,35241,35238,35244,35247,35250,35258,35261,35263,35264,35290,35292,35293,35303,35316,35320,35331,35350,35344,35340,35355,35357,35365,35382,35393,35419,35410,35398,35400,35452,35437,35436,35426,35461,35458,35460,35496,35489,35473,35493,35494,35482,35491,35524,35533,35522,35546,35563,35571,35559,35556,35569,35604,35552,35554,35575,35550,35547,35596,35591,35610,35553,35606,35600,35607,35616,35635,38827,35622,35627,35646,35624,35649,35660,35663,35662,35657,35670,35675,35674,35691,35679,35692,35695,35700,35709,35712,35724,35726,35730,35731,35734,35737,35738,35898,35905,35903,35912,35916,35918,35920,35925,35938,35948,35960,35962,35970,35977,35973,35978,35981,35982,35988,35964,35992,25117,36013,36010,36029,36018,36019,36014,36022,36040,36033,36068,36067,36058,36093,36090,36091,36100,36101,36106,36103,36111,36109,36112,40782,36115,36045,36116,36118,36199,36205,36209,36211,36225,36249,36290,36286,36282,36303,36314,36310,36300,36315,36299,36330,36331,36319,36323,36348,36360,36361,36351,36381,36382,36368,36383,36418,36405,36400,36404,36426,36423,36425,36428,36432,36424,36441,36452,36448,36394,36451,36437,36470,36466,36476,36481,36487,36485,36484,36491,36490,36499,36497,36500,36505,36522,36513,36524,36528,36550,36529,36542,36549,36552,36555,36571,36579,36604,36603,36587,36606,36618,36613,36629,36626,36633,36627,36636,36639,36635,36620,36646,36659,36667,36665,36677,36674,36670,36684,36681,36678,36686,36695,36700,36706,36707,36708,36764,36767,36771,36781,36783,36791,36826,36837,36834,36842,36847,36999,36852,36869,36857,36858,36881,36885,36897,36877,36894,36886,36875,36903,36918,36917,36921,36856,36943,36944,36945,36946,36878,36937,36926,36950,36952,36958,36968,36975,36982,38568,36978,36994,36989,36993,36992,37002,37001,37007,37032,37039,37041,37045,37090,37092,25160,37083,37122,37138,37145,37170,37168,37194,37206,37208,37219,37221,37225,37235,37234,37259,37257,37250,37282,37291,37295,37290,37301,37300,37306,37312,37313,37321,37323,37328,37334,37343,37345,37339,37372,37365,37366,37406,37375,37396,37420,37397,37393,37470,37463,37445,37449,37476,37448,37525,37439,37451,37456,37532,37526,37523,37531,37466,37583,37561,37559,37609,37647,37626,37700,37678,37657,37666,37658,37667,37690,37685,37691,37724,37728,37756,37742,37718,37808,37804,37805,37780,37817,37846,37847,37864,37861,37848,37827,37853,37840,37832,37860,37914,37908,37907,37891,37895,37904,37942,37931,37941,37921,37946,37953,37970,37956,37979,37984,37986,37982,37994,37417,38000,38005,38007,38013,37978,38012,38014,38017,38015,38274,38279,38282,38292,38294,38296,38297,38304,38312,38311,38317,38332,38331,38329,38334,38346,28662,38339,38349,38348,38357,38356,38358,38364,38369,38373,38370,38433,38440,38446,38447,38466,38476,38479,38475,38519,38492,38494,38493,38495,38502,38514,38508,38541,38552,38549,38551,38570,38567,38577,38578,38576,38580,38582,38584,38585,38606,38603,38601,38605,35149,38620,38669,38613,38649,38660,38662,38664,38675,38670,38673,38671,38678,38681,38692,38698,38704,38713,38717,38718,38724,38726,38728,38722,38729,38748,38752,38756,38758,38760,21202,38763,38769,38777,38789,38780,38785,38778,38790,38795,38799,38800,38812,38824,38822,38819,38835,38836,38851,38854,38856,38859,38876,38893,40783,38898,31455,38902,38901,38927,38924,38968,38948,38945,38967,38973,38982,38991,38987,39019,39023,39024,39025,39028,39027,39082,39087,39089,39094,39108,39107,39110,39145,39147,39171,39177,39186,39188,39192,39201,39197,39198,39204,39200,39212,39214,39229,39230,39234,39241,39237,39248,39243,39249,39250,39244,39253,39319,39320,39333,39341,39342,39356,39391,39387,39389,39384,39377,39405,39406,39409,39410,39419,39416,39425,39439,39429,39394,39449,39467,39479,39493,39490,39488,39491,39486,39509,39501,39515,39511,39519,39522,39525,39524,39529,39531,39530,39597,39600,39612,39616,39631,39633,39635,39636,39646,39647,39650,39651,39654,39663,39659,39662,39668,39665,39671,39675,39686,39704,39706,39711,39714,39715,39717,39719,39720,39721,39722,39726,39727,39730,39748,39747,39759,39757,39758,39761,39768,39796,39827,39811,39825,39830,39831,39839,39840,39848,39860,39872,39882,39865,39878,39887,39889,39890,39907,39906,39908,39892,39905,39994,39922,39921,39920,39957,39956,39945,39955,39948,39942,39944,39954,39946,39940,39982,39963,39973,39972,39969,39984,40007,39986,40006,39998,40026,40032,40039,40054,40056,40167,40172,40176,40201,40200,40171,40195,40198,40234,40230,40367,40227,40223,40260,40213,40210,40257,40255,40254,40262,40264,40285,40286,40292,40273,40272,40281,40306,40329,40327,40363,40303,40314,40346,40356,40361,40370,40388,40385,40379,40376,40378,40390,40399,40386,40409,40403,40440,40422,40429,40431,40445,40474,40475,40478,40565,40569,40573,40577,40584,40587,40588,40594,40597,40593,40605,40613,40617,40632,40618,40621,38753,40652,40654,40655,40656,40660,40668,40670,40669,40672,40677,40680,40687,40692,40694,40695,40697,40699,40700,40701,40711,40712,30391,40725,40737,40748,40766,40778,40786,40788,40803,40799,40800,40801,40806,40807,40812,40810,40823,40818,40822,40853,40860,40864,22575,27079,36953,29796,20956,29081,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,32394,35100,37704,37512,34012,20425,28859,26161,26824,37625,26363,24389,20008,20193,20220,20224,20227,20281,20310,20370,20362,20378,20372,20429,20544,20514,20479,20510,20550,20592,20546,20628,20724,20696,20810,20836,20893,20926,20972,21013,21148,21158,21184,21211,21248,21255,21284,21362,21395,21426,21469,64014,21660,21642,21673,21759,21894,22361,22373,22444,22472,22471,64015,64016,22686,22706,22795,22867,22875,22877,22883,22948,22970,23382,23488,29999,23512,23532,23582,23718,23738,23797,23847,23891,64017,23874,23917,23992,23993,24016,24353,24372,24423,24503,24542,24669,24709,24714,24798,24789,24864,24818,24849,24887,24880,24984,25107,25254,25589,25696,25757,25806,25934,26112,26133,26171,26121,26158,26142,26148,26213,26199,26201,64018,26227,26265,26272,26290,26303,26362,26382,63785,26470,26555,26706,26560,26625,26692,26831,64019,26984,64020,27032,27106,27184,27243,27206,27251,27262,27362,27364,27606,27711,27740,27782,27759,27866,27908,28039,28015,28054,28076,28111,28152,28146,28156,28217,28252,28199,28220,28351,28552,28597,28661,28677,28679,28712,28805,28843,28943,28932,29020,28998,28999,64021,29121,29182,29361,29374,29476,64022,29559,29629,29641,29654,29667,29650,29703,29685,29734,29738,29737,29742,29794,29833,29855,29953,30063,30338,30364,30366,30363,30374,64023,30534,21167,30753,30798,30820,30842,31024,64024,64025,64026,31124,64027,31131,31441,31463,64028,31467,31646,64029,32072,32092,32183,32160,32214,32338,32583,32673,64030,33537,33634,33663,33735,33782,33864,33972,34131,34137,34155,64031,34224,64032,64033,34823,35061,35346,35383,35449,35495,35518,35551,64034,35574,35667,35711,36080,36084,36114,36214,64035,36559,64036,64037,36967,37086,64038,37141,37159,37338,37335,37342,37357,37358,37348,37349,37382,37392,37386,37434,37440,37436,37454,37465,37457,37433,37479,37543,37495,37496,37607,37591,37593,37584,64039,37589,37600,37587,37669,37665,37627,64040,37662,37631,37661,37634,37744,37719,37796,37830,37854,37880,37937,37957,37960,38290,63964,64041,38557,38575,38707,38715,38723,38733,38735,38737,38741,38999,39013,64042,64043,39207,64044,39326,39502,39641,39644,39797,39794,39823,39857,39867,39936,40304,40299,64045,40473,40657,null,null,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,65506,65508,65287,65282,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,65506,65508,65287,65282,12849,8470,8481,8757,32394,35100,37704,37512,34012,20425,28859,26161,26824,37625,26363,24389,20008,20193,20220,20224,20227,20281,20310,20370,20362,20378,20372,20429,20544,20514,20479,20510,20550,20592,20546,20628,20724,20696,20810,20836,20893,20926,20972,21013,21148,21158,21184,21211,21248,21255,21284,21362,21395,21426,21469,64014,21660,21642,21673,21759,21894,22361,22373,22444,22472,22471,64015,64016,22686,22706,22795,22867,22875,22877,22883,22948,22970,23382,23488,29999,23512,23532,23582,23718,23738,23797,23847,23891,64017,23874,23917,23992,23993,24016,24353,24372,24423,24503,24542,24669,24709,24714,24798,24789,24864,24818,24849,24887,24880,24984,25107,25254,25589,25696,25757,25806,25934,26112,26133,26171,26121,26158,26142,26148,26213,26199,26201,64018,26227,26265,26272,26290,26303,26362,26382,63785,26470,26555,26706,26560,26625,26692,26831,64019,26984,64020,27032,27106,27184,27243,27206,27251,27262,27362,27364,27606,27711,27740,27782,27759,27866,27908,28039,28015,28054,28076,28111,28152,28146,28156,28217,28252,28199,28220,28351,28552,28597,28661,28677,28679,28712,28805,28843,28943,28932,29020,28998,28999,64021,29121,29182,29361,29374,29476,64022,29559,29629,29641,29654,29667,29650,29703,29685,29734,29738,29737,29742,29794,29833,29855,29953,30063,30338,30364,30366,30363,30374,64023,30534,21167,30753,30798,30820,30842,31024,64024,64025,64026,31124,64027,31131,31441,31463,64028,31467,31646,64029,32072,32092,32183,32160,32214,32338,32583,32673,64030,33537,33634,33663,33735,33782,33864,33972,34131,34137,34155,64031,34224,64032,64033,34823,35061,35346,35383,35449,35495,35518,35551,64034,35574,35667,35711,36080,36084,36114,36214,64035,36559,64036,64037,36967,37086,64038,37141,37159,37338,37335,37342,37357,37358,37348,37349,37382,37392,37386,37434,37440,37436,37454,37465,37457,37433,37479,37543,37495,37496,37607,37591,37593,37584,64039,37589,37600,37587,37669,37665,37627,64040,37662,37631,37661,37634,37744,37719,37796,37830,37854,37880,37937,37957,37960,38290,63964,64041,38557,38575,38707,38715,38723,38733,38735,38737,38741,38999,39013,64042,64043,39207,64044,39326,39502,39641,39644,39797,39794,39823,39857,39867,39936,40304,40299,64045,40473,40657,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],jis0212:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,728,711,184,729,733,175,731,730,65374,900,901,null,null,null,null,null,null,null,null,161,166,191,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,186,170,169,174,8482,164,8470,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,902,904,905,906,938,null,908,null,910,939,null,911,null,null,null,null,940,941,942,943,970,912,972,962,973,971,944,974,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1038,1039,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1118,1119,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,198,272,null,294,null,306,null,321,319,null,330,216,338,null,358,222,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,230,273,240,295,305,307,312,322,320,329,331,248,339,223,359,254,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,193,192,196,194,258,461,256,260,197,195,262,264,268,199,266,270,201,200,203,202,282,278,274,280,null,284,286,290,288,292,205,204,207,206,463,304,298,302,296,308,310,313,317,315,323,327,325,209,211,210,214,212,465,336,332,213,340,344,342,346,348,352,350,356,354,218,217,220,219,364,467,368,362,370,366,360,471,475,473,469,372,221,376,374,377,381,379,null,null,null,null,null,null,null,225,224,228,226,259,462,257,261,229,227,263,265,269,231,267,271,233,232,235,234,283,279,275,281,501,285,287,null,289,293,237,236,239,238,464,null,299,303,297,309,311,314,318,316,324,328,326,241,243,242,246,244,466,337,333,245,341,345,343,347,349,353,351,357,355,250,249,252,251,365,468,369,363,371,367,361,472,476,474,470,373,253,255,375,378,382,380,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,19970,19972,19973,19980,19986,19999,20003,20004,20008,20011,20014,20015,20016,20021,20032,20033,20036,20039,20049,20058,20060,20067,20072,20073,20084,20085,20089,20095,20109,20118,20119,20125,20143,20153,20163,20176,20186,20187,20192,20193,20194,20200,20207,20209,20211,20213,20221,20222,20223,20224,20226,20227,20232,20235,20236,20242,20245,20246,20247,20249,20270,20273,20320,20275,20277,20279,20281,20283,20286,20288,20290,20296,20297,20299,20300,20306,20308,20310,20312,20319,20323,20330,20332,20334,20337,20343,20344,20345,20346,20349,20350,20353,20354,20356,20357,20361,20362,20364,20366,20368,20370,20371,20372,20375,20377,20378,20382,20383,20402,20407,20409,20411,20412,20413,20414,20416,20417,20421,20422,20424,20425,20427,20428,20429,20431,20434,20444,20448,20450,20464,20466,20476,20477,20479,20480,20481,20484,20487,20490,20492,20494,20496,20499,20503,20504,20507,20508,20509,20510,20514,20519,20526,20528,20530,20531,20533,20544,20545,20546,20549,20550,20554,20556,20558,20561,20562,20563,20567,20569,20575,20576,20578,20579,20582,20583,20586,20589,20592,20593,20539,20609,20611,20612,20614,20618,20622,20623,20624,20626,20627,20628,20630,20635,20636,20638,20639,20640,20641,20642,20650,20655,20656,20665,20666,20669,20672,20675,20676,20679,20684,20686,20688,20691,20692,20696,20700,20701,20703,20706,20708,20710,20712,20713,20719,20721,20726,20730,20734,20739,20742,20743,20744,20747,20748,20749,20750,20722,20752,20759,20761,20763,20764,20765,20766,20771,20775,20776,20780,20781,20783,20785,20787,20788,20789,20792,20793,20802,20810,20815,20819,20821,20823,20824,20831,20836,20838,20862,20867,20868,20875,20878,20888,20893,20897,20899,20909,20920,20922,20924,20926,20927,20930,20936,20943,20945,20946,20947,20949,20952,20958,20962,20965,20974,20978,20979,20980,20983,20993,20994,20997,21010,21011,21013,21014,21016,21026,21032,21041,21042,21045,21052,21061,21065,21077,21079,21080,21082,21084,21087,21088,21089,21094,21102,21111,21112,21113,21120,21122,21125,21130,21132,21139,21141,21142,21143,21144,21146,21148,21156,21157,21158,21159,21167,21168,21174,21175,21176,21178,21179,21181,21184,21188,21190,21192,21196,21199,21201,21204,21206,21211,21212,21217,21221,21224,21225,21226,21228,21232,21233,21236,21238,21239,21248,21251,21258,21259,21260,21265,21267,21272,21275,21276,21278,21279,21285,21287,21288,21289,21291,21292,21293,21296,21298,21301,21308,21309,21310,21314,21324,21323,21337,21339,21345,21347,21349,21356,21357,21362,21369,21374,21379,21383,21384,21390,21395,21396,21401,21405,21409,21412,21418,21419,21423,21426,21428,21429,21431,21432,21434,21437,21440,21445,21455,21458,21459,21461,21466,21469,21470,21472,21478,21479,21493,21506,21523,21530,21537,21543,21544,21546,21551,21553,21556,21557,21571,21572,21575,21581,21583,21598,21602,21604,21606,21607,21609,21611,21613,21614,21620,21631,21633,21635,21637,21640,21641,21645,21649,21653,21654,21660,21663,21665,21670,21671,21673,21674,21677,21678,21681,21687,21689,21690,21691,21695,21702,21706,21709,21710,21728,21738,21740,21743,21750,21756,21758,21759,21760,21761,21765,21768,21769,21772,21773,21774,21781,21802,21803,21810,21813,21814,21819,21820,21821,21825,21831,21833,21834,21837,21840,21841,21848,21850,21851,21854,21856,21857,21860,21862,21887,21889,21890,21894,21896,21902,21903,21905,21906,21907,21908,21911,21923,21924,21933,21938,21951,21953,21955,21958,21961,21963,21964,21966,21969,21970,21971,21975,21976,21979,21982,21986,21993,22006,22015,22021,22024,22026,22029,22030,22031,22032,22033,22034,22041,22060,22064,22067,22069,22071,22073,22075,22076,22077,22079,22080,22081,22083,22084,22086,22089,22091,22093,22095,22100,22110,22112,22113,22114,22115,22118,22121,22125,22127,22129,22130,22133,22148,22149,22152,22155,22156,22165,22169,22170,22173,22174,22175,22182,22183,22184,22185,22187,22188,22189,22193,22195,22199,22206,22213,22217,22218,22219,22223,22224,22220,22221,22233,22236,22237,22239,22241,22244,22245,22246,22247,22248,22257,22251,22253,22262,22263,22273,22274,22279,22282,22284,22289,22293,22298,22299,22301,22304,22306,22307,22308,22309,22313,22314,22316,22318,22319,22323,22324,22333,22334,22335,22341,22342,22348,22349,22354,22370,22373,22375,22376,22379,22381,22382,22383,22384,22385,22387,22388,22389,22391,22393,22394,22395,22396,22398,22401,22403,22412,22420,22423,22425,22426,22428,22429,22430,22431,22433,22421,22439,22440,22441,22444,22456,22461,22471,22472,22476,22479,22485,22493,22494,22500,22502,22503,22505,22509,22512,22517,22518,22520,22525,22526,22527,22531,22532,22536,22537,22497,22540,22541,22555,22558,22559,22560,22566,22567,22573,22578,22585,22591,22601,22604,22605,22607,22608,22613,22623,22625,22628,22631,22632,22648,22652,22655,22656,22657,22663,22664,22665,22666,22668,22669,22671,22672,22676,22678,22685,22688,22689,22690,22694,22697,22705,22706,22724,22716,22722,22728,22733,22734,22736,22738,22740,22742,22746,22749,22753,22754,22761,22771,22789,22790,22795,22796,22802,22803,22804,34369,22813,22817,22819,22820,22824,22831,22832,22835,22837,22838,22847,22851,22854,22866,22867,22873,22875,22877,22878,22879,22881,22883,22891,22893,22895,22898,22901,22902,22905,22907,22908,22923,22924,22926,22930,22933,22935,22943,22948,22951,22957,22958,22959,22960,22963,22967,22970,22972,22977,22979,22980,22984,22986,22989,22994,23005,23006,23007,23011,23012,23015,23022,23023,23025,23026,23028,23031,23040,23044,23052,23053,23054,23058,23059,23070,23075,23076,23079,23080,23082,23085,23088,23108,23109,23111,23112,23116,23120,23125,23134,23139,23141,23143,23149,23159,23162,23163,23166,23179,23184,23187,23190,23193,23196,23198,23199,23200,23202,23207,23212,23217,23218,23219,23221,23224,23226,23227,23231,23236,23238,23240,23247,23258,23260,23264,23269,23274,23278,23285,23286,23293,23296,23297,23304,23319,23348,23321,23323,23325,23329,23333,23341,23352,23361,23371,23372,23378,23382,23390,23400,23406,23407,23420,23421,23422,23423,23425,23428,23430,23434,23438,23440,23441,23443,23444,23446,23464,23465,23468,23469,23471,23473,23474,23479,23482,23484,23488,23489,23501,23503,23510,23511,23512,23513,23514,23520,23535,23537,23540,23549,23564,23575,23582,23583,23587,23590,23593,23595,23596,23598,23600,23602,23605,23606,23641,23642,23644,23650,23651,23655,23656,23657,23661,23664,23668,23669,23674,23675,23676,23677,23687,23688,23690,23695,23698,23709,23711,23712,23714,23715,23718,23722,23730,23732,23733,23738,23753,23755,23762,23773,23767,23790,23793,23794,23796,23809,23814,23821,23826,23851,23843,23844,23846,23847,23857,23860,23865,23869,23871,23874,23875,23878,23880,23893,23889,23897,23882,23903,23904,23905,23906,23908,23914,23917,23920,23929,23930,23934,23935,23937,23939,23944,23946,23954,23955,23956,23957,23961,23963,23967,23968,23975,23979,23984,23988,23992,23993,24003,24007,24011,24016,24014,24024,24025,24032,24036,24041,24056,24057,24064,24071,24077,24082,24084,24085,24088,24095,24096,24110,24104,24114,24117,24126,24139,24144,24137,24145,24150,24152,24155,24156,24158,24168,24170,24171,24172,24173,24174,24176,24192,24203,24206,24226,24228,24229,24232,24234,24236,24241,24243,24253,24254,24255,24262,24268,24267,24270,24273,24274,24276,24277,24284,24286,24293,24299,24322,24326,24327,24328,24334,24345,24348,24349,24353,24354,24355,24356,24360,24363,24364,24366,24368,24372,24374,24379,24381,24383,24384,24388,24389,24391,24397,24400,24404,24408,24411,24416,24419,24420,24423,24431,24434,24436,24437,24440,24442,24445,24446,24457,24461,24463,24470,24476,24477,24482,24487,24491,24484,24492,24495,24496,24497,24504,24516,24519,24520,24521,24523,24528,24529,24530,24531,24532,24542,24545,24546,24552,24553,24554,24556,24557,24558,24559,24562,24563,24566,24570,24572,24583,24586,24589,24595,24596,24599,24600,24602,24607,24612,24621,24627,24629,24640,24647,24648,24649,24652,24657,24660,24662,24663,24669,24673,24679,24689,24702,24703,24706,24710,24712,24714,24718,24721,24723,24725,24728,24733,24734,24738,24740,24741,24744,24752,24753,24759,24763,24766,24770,24772,24776,24777,24778,24779,24782,24783,24788,24789,24793,24795,24797,24798,24802,24805,24818,24821,24824,24828,24829,24834,24839,24842,24844,24848,24849,24850,24851,24852,24854,24855,24857,24860,24862,24866,24874,24875,24880,24881,24885,24886,24887,24889,24897,24901,24902,24905,24926,24928,24940,24946,24952,24955,24956,24959,24960,24961,24963,24964,24971,24973,24978,24979,24983,24984,24988,24989,24991,24992,24997,25000,25002,25005,25016,25017,25020,25024,25025,25026,25038,25039,25045,25052,25053,25054,25055,25057,25058,25063,25065,25061,25068,25069,25071,25089,25091,25092,25095,25107,25109,25116,25120,25122,25123,25127,25129,25131,25145,25149,25154,25155,25156,25158,25164,25168,25169,25170,25172,25174,25178,25180,25188,25197,25199,25203,25210,25213,25229,25230,25231,25232,25254,25256,25267,25270,25271,25274,25278,25279,25284,25294,25301,25302,25306,25322,25330,25332,25340,25341,25347,25348,25354,25355,25357,25360,25363,25366,25368,25385,25386,25389,25397,25398,25401,25404,25409,25410,25411,25412,25414,25418,25419,25422,25426,25427,25428,25432,25435,25445,25446,25452,25453,25457,25460,25461,25464,25468,25469,25471,25474,25476,25479,25482,25488,25492,25493,25497,25498,25502,25508,25510,25517,25518,25519,25533,25537,25541,25544,25550,25553,25555,25556,25557,25564,25568,25573,25578,25580,25586,25587,25589,25592,25593,25609,25610,25616,25618,25620,25624,25630,25632,25634,25636,25637,25641,25642,25647,25648,25653,25661,25663,25675,25679,25681,25682,25683,25684,25690,25691,25692,25693,25695,25696,25697,25699,25709,25715,25716,25723,25725,25733,25735,25743,25744,25745,25752,25753,25755,25757,25759,25761,25763,25766,25768,25772,25779,25789,25790,25791,25796,25801,25802,25803,25804,25806,25808,25809,25813,25815,25828,25829,25833,25834,25837,25840,25845,25847,25851,25855,25857,25860,25864,25865,25866,25871,25875,25876,25878,25881,25883,25886,25887,25890,25894,25897,25902,25905,25914,25916,25917,25923,25927,25929,25936,25938,25940,25951,25952,25959,25963,25978,25981,25985,25989,25994,26002,26005,26008,26013,26016,26019,26022,26030,26034,26035,26036,26047,26050,26056,26057,26062,26064,26068,26070,26072,26079,26096,26098,26100,26101,26105,26110,26111,26112,26116,26120,26121,26125,26129,26130,26133,26134,26141,26142,26145,26146,26147,26148,26150,26153,26154,26155,26156,26158,26160,26161,26163,26169,26167,26176,26181,26182,26186,26188,26193,26190,26199,26200,26201,26203,26204,26208,26209,26363,26218,26219,26220,26238,26227,26229,26239,26231,26232,26233,26235,26240,26236,26251,26252,26253,26256,26258,26265,26266,26267,26268,26271,26272,26276,26285,26289,26290,26293,26299,26303,26304,26306,26307,26312,26316,26318,26319,26324,26331,26335,26344,26347,26348,26350,26362,26373,26375,26382,26387,26393,26396,26400,26402,26419,26430,26437,26439,26440,26444,26452,26453,26461,26470,26476,26478,26484,26486,26491,26497,26500,26510,26511,26513,26515,26518,26520,26521,26523,26544,26545,26546,26549,26555,26556,26557,26617,26560,26562,26563,26565,26568,26569,26578,26583,26585,26588,26593,26598,26608,26610,26614,26615,26706,26644,26649,26653,26655,26664,26663,26668,26669,26671,26672,26673,26675,26683,26687,26692,26693,26698,26700,26709,26711,26712,26715,26731,26734,26735,26736,26737,26738,26741,26745,26746,26747,26748,26754,26756,26758,26760,26774,26776,26778,26780,26785,26787,26789,26793,26794,26798,26802,26811,26821,26824,26828,26831,26832,26833,26835,26838,26841,26844,26845,26853,26856,26858,26859,26860,26861,26864,26865,26869,26870,26875,26876,26877,26886,26889,26890,26896,26897,26899,26902,26903,26929,26931,26933,26936,26939,26946,26949,26953,26958,26967,26971,26979,26980,26981,26982,26984,26985,26988,26992,26993,26994,27002,27003,27007,27008,27021,27026,27030,27032,27041,27045,27046,27048,27051,27053,27055,27063,27064,27066,27068,27077,27080,27089,27094,27095,27106,27109,27118,27119,27121,27123,27125,27134,27136,27137,27139,27151,27153,27157,27162,27165,27168,27172,27176,27184,27186,27188,27191,27195,27198,27199,27205,27206,27209,27210,27214,27216,27217,27218,27221,27222,27227,27236,27239,27242,27249,27251,27262,27265,27267,27270,27271,27273,27275,27281,27291,27293,27294,27295,27301,27307,27311,27312,27313,27316,27325,27326,27327,27334,27337,27336,27340,27344,27348,27349,27350,27356,27357,27364,27367,27372,27376,27377,27378,27388,27389,27394,27395,27398,27399,27401,27407,27408,27409,27415,27419,27422,27428,27432,27435,27436,27439,27445,27446,27451,27455,27462,27466,27469,27474,27478,27480,27485,27488,27495,27499,27502,27504,27509,27517,27518,27522,27525,27543,27547,27551,27552,27554,27555,27560,27561,27564,27565,27566,27568,27576,27577,27581,27582,27587,27588,27593,27596,27606,27610,27617,27619,27622,27623,27630,27633,27639,27641,27647,27650,27652,27653,27657,27661,27662,27664,27666,27673,27679,27686,27687,27688,27692,27694,27699,27701,27702,27706,27707,27711,27722,27723,27725,27727,27730,27732,27737,27739,27740,27755,27757,27759,27764,27766,27768,27769,27771,27781,27782,27783,27785,27796,27797,27799,27800,27804,27807,27824,27826,27828,27842,27846,27853,27855,27856,27857,27858,27860,27862,27866,27868,27872,27879,27881,27883,27884,27886,27890,27892,27908,27911,27914,27918,27919,27921,27923,27930,27942,27943,27944,27751,27950,27951,27953,27961,27964,27967,27991,27998,27999,28001,28005,28007,28015,28016,28028,28034,28039,28049,28050,28052,28054,28055,28056,28074,28076,28084,28087,28089,28093,28095,28100,28104,28106,28110,28111,28118,28123,28125,28127,28128,28130,28133,28137,28143,28144,28148,28150,28156,28160,28164,28190,28194,28199,28210,28214,28217,28219,28220,28228,28229,28232,28233,28235,28239,28241,28242,28243,28244,28247,28252,28253,28254,28258,28259,28264,28275,28283,28285,28301,28307,28313,28320,28327,28333,28334,28337,28339,28347,28351,28352,28353,28355,28359,28360,28362,28365,28366,28367,28395,28397,28398,28409,28411,28413,28420,28424,28426,28428,28429,28438,28440,28442,28443,28454,28457,28458,28463,28464,28467,28470,28475,28476,28461,28495,28497,28498,28499,28503,28505,28506,28509,28510,28513,28514,28520,28524,28541,28542,28547,28551,28552,28555,28556,28557,28560,28562,28563,28564,28566,28570,28575,28576,28581,28582,28583,28584,28590,28591,28592,28597,28598,28604,28613,28615,28616,28618,28634,28638,28648,28649,28656,28661,28665,28668,28669,28672,28677,28678,28679,28685,28695,28704,28707,28719,28724,28727,28729,28732,28739,28740,28744,28745,28746,28747,28756,28757,28765,28766,28750,28772,28773,28780,28782,28789,28790,28798,28801,28805,28806,28820,28821,28822,28823,28824,28827,28836,28843,28848,28849,28852,28855,28874,28881,28883,28884,28885,28886,28888,28892,28900,28922,28931,28932,28933,28934,28935,28939,28940,28943,28958,28960,28971,28973,28975,28976,28977,28984,28993,28997,28998,28999,29002,29003,29008,29010,29015,29018,29020,29022,29024,29032,29049,29056,29061,29063,29068,29074,29082,29083,29088,29090,29103,29104,29106,29107,29114,29119,29120,29121,29124,29131,29132,29139,29142,29145,29146,29148,29176,29182,29184,29191,29192,29193,29203,29207,29210,29213,29215,29220,29227,29231,29236,29240,29241,29249,29250,29251,29253,29262,29263,29264,29267,29269,29270,29274,29276,29278,29280,29283,29288,29291,29294,29295,29297,29303,29304,29307,29308,29311,29316,29321,29325,29326,29331,29339,29352,29357,29358,29361,29364,29374,29377,29383,29385,29388,29397,29398,29400,29407,29413,29427,29428,29434,29435,29438,29442,29444,29445,29447,29451,29453,29458,29459,29464,29465,29470,29474,29476,29479,29480,29484,29489,29490,29493,29498,29499,29501,29507,29517,29520,29522,29526,29528,29533,29534,29535,29536,29542,29543,29545,29547,29548,29550,29551,29553,29559,29561,29564,29568,29569,29571,29573,29574,29582,29584,29587,29589,29591,29592,29596,29598,29599,29600,29602,29605,29606,29610,29611,29613,29621,29623,29625,29628,29629,29631,29637,29638,29641,29643,29644,29647,29650,29651,29654,29657,29661,29665,29667,29670,29671,29673,29684,29685,29687,29689,29690,29691,29693,29695,29696,29697,29700,29703,29706,29713,29722,29723,29732,29734,29736,29737,29738,29739,29740,29741,29742,29743,29744,29745,29753,29760,29763,29764,29766,29767,29771,29773,29777,29778,29783,29789,29794,29798,29799,29800,29803,29805,29806,29809,29810,29824,29825,29829,29830,29831,29833,29839,29840,29841,29842,29848,29849,29850,29852,29855,29856,29857,29859,29862,29864,29865,29866,29867,29870,29871,29873,29874,29877,29881,29883,29887,29896,29897,29900,29904,29907,29912,29914,29915,29918,29919,29924,29928,29930,29931,29935,29940,29946,29947,29948,29951,29958,29970,29974,29975,29984,29985,29988,29991,29993,29994,29999,30006,30009,30013,30014,30015,30016,30019,30023,30024,30030,30032,30034,30039,30046,30047,30049,30063,30065,30073,30074,30075,30076,30077,30078,30081,30085,30096,30098,30099,30101,30105,30108,30114,30116,30132,30138,30143,30144,30145,30148,30150,30156,30158,30159,30167,30172,30175,30176,30177,30180,30183,30188,30190,30191,30193,30201,30208,30210,30211,30212,30215,30216,30218,30220,30223,30226,30227,30229,30230,30233,30235,30236,30237,30238,30243,30245,30246,30249,30253,30258,30259,30261,30264,30265,30266,30268,30282,30272,30273,30275,30276,30277,30281,30283,30293,30297,30303,30308,30309,30317,30318,30319,30321,30324,30337,30341,30348,30349,30357,30363,30364,30365,30367,30368,30370,30371,30372,30373,30374,30375,30376,30378,30381,30397,30401,30405,30409,30411,30412,30414,30420,30425,30432,30438,30440,30444,30448,30449,30454,30457,30460,30464,30470,30474,30478,30482,30484,30485,30487,30489,30490,30492,30498,30504,30509,30510,30511,30516,30517,30518,30521,30525,30526,30530,30533,30534,30538,30541,30542,30543,30546,30550,30551,30556,30558,30559,30560,30562,30564,30567,30570,30572,30576,30578,30579,30580,30586,30589,30592,30596,30604,30605,30612,30613,30614,30618,30623,30626,30631,30634,30638,30639,30641,30645,30654,30659,30665,30673,30674,30677,30681,30686,30687,30688,30692,30694,30698,30700,30704,30705,30708,30712,30715,30725,30726,30729,30733,30734,30737,30749,30753,30754,30755,30765,30766,30768,30773,30775,30787,30788,30791,30792,30796,30798,30802,30812,30814,30816,30817,30819,30820,30824,30826,30830,30842,30846,30858,30863,30868,30872,30881,30877,30878,30879,30884,30888,30892,30893,30896,30897,30898,30899,30907,30909,30911,30919,30920,30921,30924,30926,30930,30931,30933,30934,30948,30939,30943,30944,30945,30950,30954,30962,30963,30976,30966,30967,30970,30971,30975,30982,30988,30992,31002,31004,31006,31007,31008,31013,31015,31017,31021,31025,31028,31029,31035,31037,31039,31044,31045,31046,31050,31051,31055,31057,31060,31064,31067,31068,31079,31081,31083,31090,31097,31099,31100,31102,31115,31116,31121,31123,31124,31125,31126,31128,31131,31132,31137,31144,31145,31147,31151,31153,31156,31160,31163,31170,31172,31175,31176,31178,31183,31188,31190,31194,31197,31198,31200,31202,31205,31210,31211,31213,31217,31224,31228,31234,31235,31239,31241,31242,31244,31249,31253,31259,31262,31265,31271,31275,31277,31279,31280,31284,31285,31288,31289,31290,31300,31301,31303,31304,31308,31317,31318,31321,31324,31325,31327,31328,31333,31335,31338,31341,31349,31352,31358,31360,31362,31365,31366,31370,31371,31376,31377,31380,31390,31392,31395,31404,31411,31413,31417,31419,31420,31430,31433,31436,31438,31441,31451,31464,31465,31467,31468,31473,31476,31483,31485,31486,31495,31508,31519,31523,31527,31529,31530,31531,31533,31534,31535,31536,31537,31540,31549,31551,31552,31553,31559,31566,31573,31584,31588,31590,31593,31594,31597,31599,31602,31603,31607,31620,31625,31630,31632,31633,31638,31643,31646,31648,31653,31660,31663,31664,31666,31669,31670,31674,31675,31676,31677,31682,31685,31688,31690,31700,31702,31703,31705,31706,31707,31720,31722,31730,31732,31733,31736,31737,31738,31740,31742,31745,31746,31747,31748,31750,31753,31755,31756,31758,31759,31769,31771,31776,31781,31782,31784,31788,31793,31795,31796,31798,31801,31802,31814,31818,31829,31825,31826,31827,31833,31834,31835,31836,31837,31838,31841,31843,31847,31849,31853,31854,31856,31858,31865,31868,31869,31878,31879,31887,31892,31902,31904,31910,31920,31926,31927,31930,31931,31932,31935,31940,31943,31944,31945,31949,31951,31955,31956,31957,31959,31961,31962,31965,31974,31977,31979,31989,32003,32007,32008,32009,32015,32017,32018,32019,32022,32029,32030,32035,32038,32042,32045,32049,32060,32061,32062,32064,32065,32071,32072,32077,32081,32083,32087,32089,32090,32092,32093,32101,32103,32106,32112,32120,32122,32123,32127,32129,32130,32131,32133,32134,32136,32139,32140,32141,32145,32150,32151,32157,32158,32166,32167,32170,32179,32182,32183,32185,32194,32195,32196,32197,32198,32204,32205,32206,32215,32217,32256,32226,32229,32230,32234,32235,32237,32241,32245,32246,32249,32250,32264,32272,32273,32277,32279,32284,32285,32288,32295,32296,32300,32301,32303,32307,32310,32319,32324,32325,32327,32334,32336,32338,32344,32351,32353,32354,32357,32363,32366,32367,32371,32376,32382,32385,32390,32391,32394,32397,32401,32405,32408,32410,32413,32414,32572,32571,32573,32574,32575,32579,32580,32583,32591,32594,32595,32603,32604,32605,32609,32611,32612,32613,32614,32621,32625,32637,32638,32639,32640,32651,32653,32655,32656,32657,32662,32663,32668,32673,32674,32678,32682,32685,32692,32700,32703,32704,32707,32712,32718,32719,32731,32735,32739,32741,32744,32748,32750,32751,32754,32762,32765,32766,32767,32775,32776,32778,32781,32782,32783,32785,32787,32788,32790,32797,32798,32799,32800,32804,32806,32812,32814,32816,32820,32821,32823,32825,32826,32828,32830,32832,32836,32864,32868,32870,32877,32881,32885,32897,32904,32910,32924,32926,32934,32935,32939,32952,32953,32968,32973,32975,32978,32980,32981,32983,32984,32992,33005,33006,33008,33010,33011,33014,33017,33018,33022,33027,33035,33046,33047,33048,33052,33054,33056,33060,33063,33068,33072,33077,33082,33084,33093,33095,33098,33100,33106,33111,33120,33121,33127,33128,33129,33133,33135,33143,33153,33168,33156,33157,33158,33163,33166,33174,33176,33179,33182,33186,33198,33202,33204,33211,33227,33219,33221,33226,33230,33231,33237,33239,33243,33245,33246,33249,33252,33259,33260,33264,33265,33266,33269,33270,33272,33273,33277,33279,33280,33283,33295,33299,33300,33305,33306,33309,33313,33314,33320,33330,33332,33338,33347,33348,33349,33350,33355,33358,33359,33361,33366,33372,33376,33379,33383,33389,33396,33403,33405,33407,33408,33409,33411,33412,33415,33417,33418,33422,33425,33428,33430,33432,33434,33435,33440,33441,33443,33444,33447,33448,33449,33450,33454,33456,33458,33460,33463,33466,33468,33470,33471,33478,33488,33493,33498,33504,33506,33508,33512,33514,33517,33519,33526,33527,33533,33534,33536,33537,33543,33544,33546,33547,33620,33563,33565,33566,33567,33569,33570,33580,33581,33582,33584,33587,33591,33594,33596,33597,33602,33603,33604,33607,33613,33614,33617,33621,33622,33623,33648,33656,33661,33663,33664,33666,33668,33670,33677,33682,33684,33685,33688,33689,33691,33692,33693,33702,33703,33705,33708,33726,33727,33728,33735,33737,33743,33744,33745,33748,33757,33619,33768,33770,33782,33784,33785,33788,33793,33798,33802,33807,33809,33813,33817,33709,33839,33849,33861,33863,33864,33866,33869,33871,33873,33874,33878,33880,33881,33882,33884,33888,33892,33893,33895,33898,33904,33907,33908,33910,33912,33916,33917,33921,33925,33938,33939,33941,33950,33958,33960,33961,33962,33967,33969,33972,33978,33981,33982,33984,33986,33991,33992,33996,33999,34003,34012,34023,34026,34031,34032,34033,34034,34039,34098,34042,34043,34045,34050,34051,34055,34060,34062,34064,34076,34078,34082,34083,34084,34085,34087,34090,34091,34095,34099,34100,34102,34111,34118,34127,34128,34129,34130,34131,34134,34137,34140,34141,34142,34143,34144,34145,34146,34148,34155,34159,34169,34170,34171,34173,34175,34177,34181,34182,34185,34187,34188,34191,34195,34200,34205,34207,34208,34210,34213,34215,34228,34230,34231,34232,34236,34237,34238,34239,34242,34247,34250,34251,34254,34221,34264,34266,34271,34272,34278,34280,34285,34291,34294,34300,34303,34304,34308,34309,34317,34318,34320,34321,34322,34328,34329,34331,34334,34337,34343,34345,34358,34360,34362,34364,34365,34368,34370,34374,34386,34387,34390,34391,34392,34393,34397,34400,34401,34402,34403,34404,34409,34412,34415,34421,34422,34423,34426,34445,34449,34454,34456,34458,34460,34465,34470,34471,34472,34477,34481,34483,34484,34485,34487,34488,34489,34495,34496,34497,34499,34501,34513,34514,34517,34519,34522,34524,34528,34531,34533,34535,34440,34554,34556,34557,34564,34565,34567,34571,34574,34575,34576,34579,34580,34585,34590,34591,34593,34595,34600,34606,34607,34609,34610,34617,34618,34620,34621,34622,34624,34627,34629,34637,34648,34653,34657,34660,34661,34671,34673,34674,34683,34691,34692,34693,34694,34695,34696,34697,34699,34700,34704,34707,34709,34711,34712,34713,34718,34720,34723,34727,34732,34733,34734,34737,34741,34750,34751,34753,34760,34761,34762,34766,34773,34774,34777,34778,34780,34783,34786,34787,34788,34794,34795,34797,34801,34803,34808,34810,34815,34817,34819,34822,34825,34826,34827,34832,34841,34834,34835,34836,34840,34842,34843,34844,34846,34847,34856,34861,34862,34864,34866,34869,34874,34876,34881,34883,34885,34888,34889,34890,34891,34894,34897,34901,34902,34904,34906,34908,34911,34912,34916,34921,34929,34937,34939,34944,34968,34970,34971,34972,34975,34976,34984,34986,35002,35005,35006,35008,35018,35019,35020,35021,35022,35025,35026,35027,35035,35038,35047,35055,35056,35057,35061,35063,35073,35078,35085,35086,35087,35093,35094,35096,35097,35098,35100,35104,35110,35111,35112,35120,35121,35122,35125,35129,35130,35134,35136,35138,35141,35142,35145,35151,35154,35159,35162,35163,35164,35169,35170,35171,35179,35182,35184,35187,35189,35194,35195,35196,35197,35209,35213,35216,35220,35221,35227,35228,35231,35232,35237,35248,35252,35253,35254,35255,35260,35284,35285,35286,35287,35288,35301,35305,35307,35309,35313,35315,35318,35321,35325,35327,35332,35333,35335,35343,35345,35346,35348,35349,35358,35360,35362,35364,35366,35371,35372,35375,35381,35383,35389,35390,35392,35395,35397,35399,35401,35405,35406,35411,35414,35415,35416,35420,35421,35425,35429,35431,35445,35446,35447,35449,35450,35451,35454,35455,35456,35459,35462,35467,35471,35472,35474,35478,35479,35481,35487,35495,35497,35502,35503,35507,35510,35511,35515,35518,35523,35526,35528,35529,35530,35537,35539,35540,35541,35543,35549,35551,35564,35568,35572,35573,35574,35580,35583,35589,35590,35595,35601,35612,35614,35615,35594,35629,35632,35639,35644,35650,35651,35652,35653,35654,35656,35666,35667,35668,35673,35661,35678,35683,35693,35702,35704,35705,35708,35710,35713,35716,35717,35723,35725,35727,35732,35733,35740,35742,35743,35896,35897,35901,35902,35909,35911,35913,35915,35919,35921,35923,35924,35927,35928,35931,35933,35929,35939,35940,35942,35944,35945,35949,35955,35957,35958,35963,35966,35974,35975,35979,35984,35986,35987,35993,35995,35996,36004,36025,36026,36037,36038,36041,36043,36047,36054,36053,36057,36061,36065,36072,36076,36079,36080,36082,36085,36087,36088,36094,36095,36097,36099,36105,36114,36119,36123,36197,36201,36204,36206,36223,36226,36228,36232,36237,36240,36241,36245,36254,36255,36256,36262,36267,36268,36271,36274,36277,36279,36281,36283,36288,36293,36294,36295,36296,36298,36302,36305,36308,36309,36311,36313,36324,36325,36327,36332,36336,36284,36337,36338,36340,36349,36353,36356,36357,36358,36363,36369,36372,36374,36384,36385,36386,36387,36390,36391,36401,36403,36406,36407,36408,36409,36413,36416,36417,36427,36429,36430,36431,36436,36443,36444,36445,36446,36449,36450,36457,36460,36461,36463,36464,36465,36473,36474,36475,36482,36483,36489,36496,36498,36501,36506,36507,36509,36510,36514,36519,36521,36525,36526,36531,36533,36538,36539,36544,36545,36547,36548,36551,36559,36561,36564,36572,36584,36590,36592,36593,36599,36601,36602,36589,36608,36610,36615,36616,36623,36624,36630,36631,36632,36638,36640,36641,36643,36645,36647,36648,36652,36653,36654,36660,36661,36662,36663,36666,36672,36673,36675,36679,36687,36689,36690,36691,36692,36693,36696,36701,36702,36709,36765,36768,36769,36772,36773,36774,36789,36790,36792,36798,36800,36801,36806,36810,36811,36813,36816,36818,36819,36821,36832,36835,36836,36840,36846,36849,36853,36854,36859,36862,36866,36868,36872,36876,36888,36891,36904,36905,36911,36906,36908,36909,36915,36916,36919,36927,36931,36932,36940,36955,36957,36962,36966,36967,36972,36976,36980,36985,36997,37000,37003,37004,37006,37008,37013,37015,37016,37017,37019,37024,37025,37026,37029,37040,37042,37043,37044,37046,37053,37068,37054,37059,37060,37061,37063,37064,37077,37079,37080,37081,37084,37085,37087,37093,37074,37110,37099,37103,37104,37108,37118,37119,37120,37124,37125,37126,37128,37133,37136,37140,37142,37143,37144,37146,37148,37150,37152,37157,37154,37155,37159,37161,37166,37167,37169,37172,37174,37175,37177,37178,37180,37181,37187,37191,37192,37199,37203,37207,37209,37210,37211,37217,37220,37223,37229,37236,37241,37242,37243,37249,37251,37253,37254,37258,37262,37265,37267,37268,37269,37272,37278,37281,37286,37288,37292,37293,37294,37296,37297,37298,37299,37302,37307,37308,37309,37311,37314,37315,37317,37331,37332,37335,37337,37338,37342,37348,37349,37353,37354,37356,37357,37358,37359,37360,37361,37367,37369,37371,37373,37376,37377,37380,37381,37382,37383,37385,37386,37388,37392,37394,37395,37398,37400,37404,37405,37411,37412,37413,37414,37416,37422,37423,37424,37427,37429,37430,37432,37433,37434,37436,37438,37440,37442,37443,37446,37447,37450,37453,37454,37455,37457,37464,37465,37468,37469,37472,37473,37477,37479,37480,37481,37486,37487,37488,37493,37494,37495,37496,37497,37499,37500,37501,37503,37512,37513,37514,37517,37518,37522,37527,37529,37535,37536,37540,37541,37543,37544,37547,37551,37554,37558,37560,37562,37563,37564,37565,37567,37568,37569,37570,37571,37573,37574,37575,37576,37579,37580,37581,37582,37584,37587,37589,37591,37592,37593,37596,37597,37599,37600,37601,37603,37605,37607,37608,37612,37614,37616,37625,37627,37631,37632,37634,37640,37645,37649,37652,37653,37660,37661,37662,37663,37665,37668,37669,37671,37673,37674,37683,37684,37686,37687,37703,37704,37705,37712,37713,37714,37717,37719,37720,37722,37726,37732,37733,37735,37737,37738,37741,37743,37744,37745,37747,37748,37750,37754,37757,37759,37760,37761,37762,37768,37770,37771,37773,37775,37778,37781,37784,37787,37790,37793,37795,37796,37798,37800,37803,37812,37813,37814,37818,37801,37825,37828,37829,37830,37831,37833,37834,37835,37836,37837,37843,37849,37852,37854,37855,37858,37862,37863,37881,37879,37880,37882,37883,37885,37889,37890,37892,37896,37897,37901,37902,37903,37909,37910,37911,37919,37934,37935,37937,37938,37939,37940,37947,37951,37949,37955,37957,37960,37962,37964,37973,37977,37980,37983,37985,37987,37992,37995,37997,37998,37999,38001,38002,38020,38019,38264,38265,38270,38276,38280,38284,38285,38286,38301,38302,38303,38305,38310,38313,38315,38316,38324,38326,38330,38333,38335,38342,38344,38345,38347,38352,38353,38354,38355,38361,38362,38365,38366,38367,38368,38372,38374,38429,38430,38434,38436,38437,38438,38444,38449,38451,38455,38456,38457,38458,38460,38461,38465,38482,38484,38486,38487,38488,38497,38510,38516,38523,38524,38526,38527,38529,38530,38531,38532,38537,38545,38550,38554,38557,38559,38564,38565,38566,38569,38574,38575,38579,38586,38602,38610,23986,38616,38618,38621,38622,38623,38633,38639,38641,38650,38658,38659,38661,38665,38682,38683,38685,38689,38690,38691,38696,38705,38707,38721,38723,38730,38734,38735,38741,38743,38744,38746,38747,38755,38759,38762,38766,38771,38774,38775,38776,38779,38781,38783,38784,38793,38805,38806,38807,38809,38810,38814,38815,38818,38828,38830,38833,38834,38837,38838,38840,38841,38842,38844,38846,38847,38849,38852,38853,38855,38857,38858,38860,38861,38862,38864,38865,38868,38871,38872,38873,38877,38878,38880,38875,38881,38884,38895,38897,38900,38903,38904,38906,38919,38922,38937,38925,38926,38932,38934,38940,38942,38944,38947,38950,38955,38958,38959,38960,38962,38963,38965,38949,38974,38980,38983,38986,38993,38994,38995,38998,38999,39001,39002,39010,39011,39013,39014,39018,39020,39083,39085,39086,39088,39092,39095,39096,39098,39099,39103,39106,39109,39112,39116,39137,39139,39141,39142,39143,39146,39155,39158,39170,39175,39176,39185,39189,39190,39191,39194,39195,39196,39199,39202,39206,39207,39211,39217,39218,39219,39220,39221,39225,39226,39227,39228,39232,39233,39238,39239,39240,39245,39246,39252,39256,39257,39259,39260,39262,39263,39264,39323,39325,39327,39334,39344,39345,39346,39349,39353,39354,39357,39359,39363,39369,39379,39380,39385,39386,39388,39390,39399,39402,39403,39404,39408,39412,39413,39417,39421,39422,39426,39427,39428,39435,39436,39440,39441,39446,39454,39456,39458,39459,39460,39463,39469,39470,39475,39477,39478,39480,39495,39489,39492,39498,39499,39500,39502,39505,39508,39510,39517,39594,39596,39598,39599,39602,39604,39605,39606,39609,39611,39614,39615,39617,39619,39622,39624,39630,39632,39634,39637,39638,39639,39643,39644,39648,39652,39653,39655,39657,39660,39666,39667,39669,39673,39674,39677,39679,39680,39681,39682,39683,39684,39685,39688,39689,39691,39692,39693,39694,39696,39698,39702,39705,39707,39708,39712,39718,39723,39725,39731,39732,39733,39735,39737,39738,39741,39752,39755,39756,39765,39766,39767,39771,39774,39777,39779,39781,39782,39784,39786,39787,39788,39789,39790,39795,39797,39799,39800,39801,39807,39808,39812,39813,39814,39815,39817,39818,39819,39821,39823,39824,39828,39834,39837,39838,39846,39847,39849,39852,39856,39857,39858,39863,39864,39867,39868,39870,39871,39873,39879,39880,39886,39888,39895,39896,39901,39903,39909,39911,39914,39915,39919,39923,39927,39928,39929,39930,39933,39935,39936,39938,39947,39951,39953,39958,39960,39961,39962,39964,39966,39970,39971,39974,39975,39976,39977,39978,39985,39989,39990,39991,39997,40001,40003,40004,40005,40009,40010,40014,40015,40016,40019,40020,40022,40024,40027,40029,40030,40031,40035,40041,40042,40028,40043,40040,40046,40048,40050,40053,40055,40059,40166,40178,40183,40185,40203,40194,40209,40215,40216,40220,40221,40222,40239,40240,40242,40243,40244,40250,40252,40261,40253,40258,40259,40263,40266,40275,40276,40287,40291,40290,40293,40297,40298,40299,40304,40310,40311,40315,40316,40318,40323,40324,40326,40330,40333,40334,40338,40339,40341,40342,40343,40344,40353,40362,40364,40366,40369,40373,40377,40380,40383,40387,40391,40393,40394,40404,40405,40406,40407,40410,40414,40415,40416,40421,40423,40425,40427,40430,40432,40435,40436,40446,40458,40450,40455,40462,40464,40465,40466,40469,40470,40473,40476,40477,40570,40571,40572,40576,40578,40579,40580,40581,40583,40590,40591,40598,40600,40603,40606,40612,40616,40620,40622,40623,40624,40627,40628,40629,40646,40648,40651,40661,40671,40676,40679,40684,40685,40686,40688,40689,40690,40693,40696,40703,40706,40707,40713,40719,40720,40721,40722,40724,40726,40727,40729,40730,40731,40735,40738,40742,40746,40747,40751,40753,40754,40756,40759,40761,40762,40764,40765,40767,40769,40771,40772,40773,40774,40775,40787,40789,40790,40791,40792,40794,40797,40798,40808,40809,40813,40814,40815,40816,40817,40819,40821,40826,40829,40847,40848,40849,40850,40852,40854,40855,40862,40865,40866,40867,40869,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],ibm866:[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,9617,9618,9619,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,9576,9572,9573,9561,9560,9554,9555,9579,9578,9496,9484,9608,9604,9612,9616,9600,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1025,1105,1028,1108,1031,1111,1038,1118,176,8729,183,8730,8470,164,9632,160],"iso-8859-2":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,728,321,164,317,346,167,168,352,350,356,377,173,381,379,176,261,731,322,180,318,347,711,184,353,351,357,378,733,382,380,340,193,194,258,196,313,262,199,268,201,280,203,282,205,206,270,272,323,327,211,212,336,214,215,344,366,218,368,220,221,354,223,341,225,226,259,228,314,263,231,269,233,281,235,283,237,238,271,273,324,328,243,244,337,246,247,345,367,250,369,252,253,355,729],"iso-8859-3":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,294,728,163,164,null,292,167,168,304,350,286,308,173,null,379,176,295,178,179,180,181,293,183,184,305,351,287,309,189,null,380,192,193,194,null,196,266,264,199,200,201,202,203,204,205,206,207,null,209,210,211,212,288,214,215,284,217,218,219,220,364,348,223,224,225,226,null,228,267,265,231,232,233,234,235,236,237,238,239,null,241,242,243,244,289,246,247,285,249,250,251,252,365,349,729],"iso-8859-4":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,312,342,164,296,315,167,168,352,274,290,358,173,381,175,176,261,731,343,180,297,316,711,184,353,275,291,359,330,382,331,256,193,194,195,196,197,198,302,268,201,280,203,278,205,206,298,272,325,332,310,212,213,214,215,216,370,218,219,220,360,362,223,257,225,226,227,228,229,230,303,269,233,281,235,279,237,238,299,273,326,333,311,244,245,246,247,248,371,250,251,252,361,363,729],"iso-8859-5":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,173,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,8470,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,167,1118,1119],"iso-8859-6":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,null,null,null,164,null,null,null,null,null,null,null,1548,173,null,null,null,null,null,null,null,null,null,null,null,null,null,1563,null,null,null,1567,null,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,null,null,null,null,null,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,null,null,null,null,null,null,null,null,null,null,null,null,null],"iso-8859-7":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,8216,8217,163,8364,8367,166,167,168,169,890,171,172,173,null,8213,176,177,178,179,900,901,902,183,904,905,906,187,908,189,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,null,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,null],"iso-8859-8":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,null,162,163,164,165,166,167,168,169,215,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,247,187,188,189,190,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,8215,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,null,null,8206,8207,null],"iso-8859-10":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,274,290,298,296,310,167,315,272,352,358,381,173,362,330,176,261,275,291,299,297,311,183,316,273,353,359,382,8213,363,331,256,193,194,195,196,197,198,302,268,201,280,203,278,205,206,207,208,325,332,211,212,213,214,360,216,370,218,219,220,221,222,223,257,225,226,227,228,229,230,303,269,233,281,235,279,237,238,239,240,326,333,243,244,245,246,361,248,371,250,251,252,253,254,312],"iso-8859-13":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,8221,162,163,164,8222,166,167,216,169,342,171,172,173,174,198,176,177,178,179,8220,181,182,183,248,185,343,187,188,189,190,230,260,302,256,262,196,197,280,274,268,201,377,278,290,310,298,315,352,323,325,211,332,213,214,215,370,321,346,362,220,379,381,223,261,303,257,263,228,229,281,275,269,233,378,279,291,311,299,316,353,324,326,243,333,245,246,247,371,322,347,363,252,380,382,8217],"iso-8859-14":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,7682,7683,163,266,267,7690,167,7808,169,7810,7691,7922,173,174,376,7710,7711,288,289,7744,7745,182,7766,7809,7767,7811,7776,7923,7812,7813,7777,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,372,209,210,211,212,213,214,7786,216,217,218,219,220,221,374,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,373,241,242,243,244,245,246,7787,248,249,250,251,252,253,375,255],"iso-8859-15":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,8364,165,352,167,353,169,170,171,172,173,174,175,176,177,178,179,381,181,182,183,382,185,186,187,338,339,376,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255],"iso-8859-16":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,261,321,8364,8222,352,167,353,169,536,171,377,173,378,379,176,177,268,322,381,8221,182,183,382,269,537,187,338,339,376,380,192,193,194,258,196,262,198,199,200,201,202,203,204,205,206,207,272,323,210,211,212,336,214,346,368,217,218,219,220,280,538,223,224,225,226,259,228,263,230,231,232,233,234,235,236,237,238,239,273,324,242,243,244,337,246,347,369,249,250,251,252,281,539,255],"koi8-r":[9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9600,9604,9608,9612,9616,9617,9618,9619,8992,9632,8729,8730,8776,8804,8805,160,8993,176,178,183,247,9552,9553,9554,1105,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,1025,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,169,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,1066],"koi8-u":[9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9600,9604,9608,9612,9616,9617,9618,9619,8992,9632,8729,8730,8776,8804,8805,160,8993,176,178,183,247,9552,9553,9554,1105,1108,9556,1110,1111,9559,9560,9561,9562,9563,1169,1118,9566,9567,9568,9569,1025,1028,9571,1030,1031,9574,9575,9576,9577,9578,1168,1038,169,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,1066],macintosh:[196,197,199,201,209,214,220,225,224,226,228,227,229,231,233,232,234,235,237,236,238,239,241,243,242,244,246,245,250,249,251,252,8224,176,162,163,167,8226,182,223,174,169,8482,180,168,8800,198,216,8734,177,8804,8805,165,181,8706,8721,8719,960,8747,170,186,937,230,248,191,161,172,8730,402,8776,8710,171,187,8230,160,192,195,213,338,339,8211,8212,8220,8221,8216,8217,247,9674,255,376,8260,8364,8249,8250,64257,64258,8225,183,8218,8222,8240,194,202,193,203,200,205,206,207,204,211,212,63743,210,218,219,217,305,710,732,175,728,729,730,184,733,731,711],"windows-874":[8364,129,130,131,132,8230,134,135,136,137,138,139,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,152,153,154,155,156,157,158,159,160,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,null,null,null,null,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,null,null,null,null],"windows-1250":[8364,129,8218,131,8222,8230,8224,8225,136,8240,352,8249,346,356,381,377,144,8216,8217,8220,8221,8226,8211,8212,152,8482,353,8250,347,357,382,378,160,711,728,321,164,260,166,167,168,169,350,171,172,173,174,379,176,177,731,322,180,181,182,183,184,261,351,187,317,733,318,380,340,193,194,258,196,313,262,199,268,201,280,203,282,205,206,270,272,323,327,211,212,336,214,215,344,366,218,368,220,221,354,223,341,225,226,259,228,314,263,231,269,233,281,235,283,237,238,271,273,324,328,243,244,337,246,247,345,367,250,369,252,253,355,729],"windows-1251":[1026,1027,8218,1107,8222,8230,8224,8225,8364,8240,1033,8249,1034,1036,1035,1039,1106,8216,8217,8220,8221,8226,8211,8212,152,8482,1113,8250,1114,1116,1115,1119,160,1038,1118,1032,164,1168,166,167,1025,169,1028,171,172,173,174,1031,176,177,1030,1110,1169,181,182,183,1105,8470,1108,187,1112,1029,1109,1111,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103],"windows-1252":[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255],"windows-1253":[8364,129,8218,402,8222,8230,8224,8225,136,8240,138,8249,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,152,8482,154,8250,156,157,158,159,160,901,902,163,164,165,166,167,168,169,null,171,172,173,174,8213,176,177,178,179,900,181,182,183,904,905,906,187,908,189,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,null,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,null],"windows-1254":[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,158,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,286,209,210,211,212,213,214,215,216,217,218,219,220,304,350,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,287,241,242,243,244,245,246,247,248,249,250,251,252,305,351,255],"windows-1255":[8364,129,8218,402,8222,8230,8224,8225,710,8240,138,8249,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,154,8250,156,157,158,159,160,161,162,163,8362,165,166,167,168,169,215,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,247,187,188,189,190,191,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1520,1521,1522,1523,1524,null,null,null,null,null,null,null,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,null,null,8206,8207,null],"windows-1256":[8364,1662,8218,402,8222,8230,8224,8225,710,8240,1657,8249,338,1670,1688,1672,1711,8216,8217,8220,8221,8226,8211,8212,1705,8482,1681,8250,339,8204,8205,1722,160,1548,162,163,164,165,166,167,168,169,1726,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,1563,187,188,189,190,1567,1729,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,215,1591,1592,1593,1594,1600,1601,1602,1603,224,1604,226,1605,1606,1607,1608,231,232,233,234,235,1609,1610,238,239,1611,1612,1613,1614,244,1615,1616,247,1617,249,1618,251,252,8206,8207,1746],"windows-1257":[8364,129,8218,131,8222,8230,8224,8225,136,8240,138,8249,140,168,711,184,144,8216,8217,8220,8221,8226,8211,8212,152,8482,154,8250,156,175,731,159,160,null,162,163,164,null,166,167,216,169,342,171,172,173,174,198,176,177,178,179,180,181,182,183,248,185,343,187,188,189,190,230,260,302,256,262,196,197,280,274,268,201,377,278,290,310,298,315,352,323,325,211,332,213,214,215,370,321,346,362,220,379,381,223,261,303,257,263,228,229,281,275,269,233,378,279,291,311,299,316,353,324,326,243,333,245,246,247,371,322,347,363,252,380,382,729],"windows-1258":[8364,129,8218,402,8222,8230,8224,8225,710,8240,138,8249,338,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,154,8250,339,157,158,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,258,196,197,198,199,200,201,202,203,768,205,206,207,272,209,777,211,212,416,214,215,216,217,218,219,220,431,771,223,224,225,226,259,228,229,230,231,232,233,234,235,769,237,238,239,273,241,803,243,244,417,246,247,248,249,250,251,252,432,8363,255],"x-mac-cyrillic":[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,8224,176,1168,163,167,8226,182,1030,174,169,8482,1026,1106,8800,1027,1107,8734,177,8804,8805,1110,181,1169,1032,1028,1108,1031,1111,1033,1113,1034,1114,1112,1029,172,8730,402,8776,8710,171,187,8230,160,1035,1115,1036,1116,1109,8211,8212,8220,8221,8216,8217,247,8222,1038,1118,1039,1119,8470,1025,1105,1103,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,8364]}})(this||{})},function(e,d,n){(function(d){'use strict';function i(e,d,n){return d<=e&&e<=n}function a(e,d){return-1!==e.indexOf(d)}function u(e){if(e===void 0)return{};if(e===Object(e))return e;throw TypeError('Could not convert argument to dictionary')}function t(e){for(var p=e+'',t=p.length,n=0,i=[];n<t;){var u=p.charCodeAt(n);if(55296>u||57343<u)i.push(u);else if(56320<=u&&57343>=u)i.push(65533);else if(55296<=u&&56319>=u)if(n==t-1)i.push(65533);else{var f=p.charCodeAt(n+1);if(56320<=f&&57343>=f){var d=1023&u,a=1023&f;i.push(65536+(d<<10)+a),n+=1}else i.push(65533)}n+=1}return i}function r(e){for(var d='',n=0,i;n<e.length;++n)i=e[n],65535>=i?d+=f(i):(i-=65536,d+=f((i>>10)+55296,(1023&i)+56320));return d}function o(e){return 0<=e&&127>=e}function l(e){this.tokens=[].slice.call(e),this.tokens.reverse()}function s(e,d){if(e)throw TypeError('Decoder error');return d||65533}function m(e){throw TypeError('The code point '+e+' could not be encoded.')}function c(){}function h(){}function g(e){return e=(e+'').trim().toLowerCase(),Object.prototype.hasOwnProperty.call(Z,e)?Z[e]:null}function y(e,d){return d?d[e]||null:null}function v(e,d){var n=d.indexOf(e);return-1===n?null:n}function b(e){if(!('encoding-indexes'in d))throw Error('Indexes missing. Did you forget to include encoding-indexes.js first?');return d['encoding-indexes'][e]}function _(e){if(39419<e&&189000>e||1237575<e)return null;if(7457===e)return 59335;var d=0,n=0,a=b('gb18030-ranges'),u;for(u=0;u<a.length;++u){var i=a[u];if(i[0]<=e)d=i[0],n=i[1];else break}return n+e-d}function w(e){if(59335===e)return 7457;var d=0,n=0,a=b('gb18030-ranges'),u;for(u=0;u<a.length;++u){var i=a[u];if(i[1]<=e)d=i[1],n=i[0];else break}return n+e-d}function x(e){ie=ie||b('jis0208').map(function(e,d){return i(d,8272,8835)?null:e});var d=ie;return d.indexOf(e)}function k(e){ae=ae||b('big5').map(function(e,d){return d<5024?null:e});var d=ae;return 9552===e||9566===e||9569===e||9578===e||21313===e||21317===e?d.lastIndexOf(e):v(e,d)}function S(e,d){if(!(this instanceof S))throw TypeError('Called as a function. Did you forget \'new\'?');e=void 0===e?ne:e+'',d=u(d),this._encoding=null,this._decoder=null,this._ignoreBOM=!1,this._BOMseen=!1,this._error_mode='replacement',this._do_not_flush=!1;var n=g(e);if(null===n||'replacement'===n.name)throw RangeError('Unknown encoding: '+e);if(!de[n.name])throw Error('Decoder not present. Did you forget to include encoding-indexes.js first?');var i=this;return i._encoding=n,!!d.fatal&&(i._error_mode='fatal'),!!d.ignoreBOM&&(i._ignoreBOM=!0),Object.defineProperty||(this.encoding=i._encoding.name.toLowerCase(),this.fatal='fatal'===i._error_mode,this.ignoreBOM=i._ignoreBOM),i}function T(e,n){if(!(this instanceof T))throw TypeError('Called as a function. Did you forget \'new\'?');n=u(n),this._encoding=null,this._encoder=null,this._do_not_flush=!1,this._fatal=!n.fatal?'replacement':'fatal';var i=this;if(!!n.NONSTANDARD_allowLegacyEncoding){e=void 0===e?ne:e+'';var a=g(e);if(null===a||'replacement'===a.name)throw RangeError('Unknown encoding: '+e);if(!ee[a.name])throw Error('Encoder not present. Did you forget to include encoding-indexes.js first?');i._encoding=a}else i._encoding=g('utf-8'),void 0!==e&&'console'in d&&console.warn('TextEncoder constructor called with encoding label, which is ignored.');return Object.defineProperty||(this.encoding=i._encoding.name.toLowerCase()),i}function N(e){var d=e.fatal,n=0,a=0,u=0,p=128,t=191;this.handler=function(e,f){if(f===Y&&0!=u)return u=0,s(d);if(f===Y)return G;if(0==u){if(i(f,0,127))return f;if(i(f,194,223))u=1,n=31&f;else if(i(f,224,239))224===f&&(p=160),237===f&&(t=159),u=2,n=15&f;else if(i(f,240,244))240===f&&(p=144),244===f&&(t=143),u=3,n=7&f;else return s(d);return null}if(!i(f,p,t))return n=u=a=0,p=128,t=191,e.prepend(f),s(d);if(p=128,t=191,n=n<<6|63&f,a+=1,a!=u)return null;var r=n;return n=u=a=0,r}}function I(e){var d=e.fatal;this.handler=function(e,d){if(d===Y)return G;if(K(d))return d;var n,a;i(d,128,2047)?(n=1,a=192):i(d,2048,65535)?(n=2,a=224):i(d,65536,1114111)&&(n=3,a=240);for(var u=[(d>>6*n)+a];0<n;){var p=d>>6*(n-1);u.push(128|63&p),n-=1}return u}}function j(e,d){var n=d.fatal;this.handler=function(d,i){if(i===Y)return G;if(o(i))return i;var a=e[i-128];return null===a?s(n):a}}function O(e,d){var n=d.fatal;this.handler=function(d,n){if(n===Y)return G;if(K(n))return n;var i=v(n,e);return null===i&&m(n),i+128}}function R(e){var d=e.fatal,n=0,a=0,u=0;this.handler=function(e,p){if(p===Y&&0==n&&0==a&&0==u)return G;p===Y&&(0!=n||0!=a||0!=u)&&(n=0,a=0,u=0,s(d));var t;if(0!=u){t=null,i(p,48,57)&&(t=_(10*(126*(10*(n-129)+a-48)+u-129)+p-48));var f=[a,u,p];return n=0,a=0,u=0,null===t?(e.prepend(f),s(d)):t}if(0!=a)return i(p,129,254)?(u=p,null):(e.prepend([a,p]),n=0,a=0,s(d));if(0!=n){if(i(p,48,57))return a=p,null;var r=n,l=null;n=0;var m=127>p?64:65;return(i(p,64,126)||i(p,128,254))&&(l=190*(r-129)+(p-m)),t=null===l?null:y(l,b('gb18030')),null===t&&o(p)&&e.prepend(p),null===t?s(d):t}return o(p)?p:128===p?8364:i(p,129,254)?(n=p,null):s(d)}}function D(e,d){var n=e.fatal;this.handler=function(e,n){if(n===Y)return G;if(K(n))return n;if(58853===n)return m(n);if(d&&8364===n)return 128;var i=v(n,b('gb18030'));if(null!==i){var a=X(i/190)+129,u=i%190,p=63>u?64:65;return[a,u+p]}if(d)return m(n);i=w(n);var t=X(i/10/126/10);i-=10*(126*(10*t));var f=X(i/10/126);i-=126*(10*f);var r=X(i/10),o=i-10*r;return[t+129,f+48,r+129,o+48]}}function E(e){var d=e.fatal,n=0;this.handler=function(e,a){if(a===Y&&0!=n)return n=0,s(d);if(a===Y&&0==n)return G;if(0!=n){var u=n,p=null;n=0;var t=127>a?64:98;switch((i(a,64,126)||i(a,161,254))&&(p=157*(u-129)+(a-t)),p){case 1133:return[202,772];case 1135:return[202,780];case 1164:return[234,772];case 1166:return[234,780];}var f=null===p?null:y(p,b('big5'));return null===f&&o(a)&&e.prepend(a),null===f?s(d):f}return o(a)?a:i(a,129,254)?(n=a,null):s(d)}}function P(e){var d=e.fatal;this.handler=function(e,d){if(d===Y)return G;if(K(d))return d;var n=k(d);if(null===n)return m(d);var i=X(n/157)+129;if(161>i)return m(d);var a=n%157,u=63>a?64:98;return[i,a+u]}}function C(e){var d=e.fatal,n=!1,a=0;this.handler=function(e,u){if(u===Y&&0!=a)return a=0,s(d);if(u===Y&&0==a)return G;if(142==a&&i(u,161,223))return a=0,65216+u;if(143==a&&i(u,161,254))return n=!0,a=u,null;if(0!==a){var p=a;a=0;var t=null;return i(p,161,254)&&i(u,161,254)&&(t=y(94*(p-161)+(u-161),b(n?'jis0212':'jis0208'))),n=!1,i(u,161,254)||e.prepend(u),null===t?s(d):t}return o(u)?u:142===u||143===u||i(u,161,254)?(a=u,null):s(d)}}function L(e){var d=e.fatal;this.handler=function(e,d){if(d===Y)return G;if(K(d))return d;if(165===d)return 92;if(8254===d)return 126;if(i(d,65377,65439))return[142,d-65377+161];8722===d&&(d=65293);var n=v(d,b('jis0208'));if(null===n)return m(d);var a=X(n/94)+161,u=n%94+161;return[a,u]}}function A(e){var d=e.fatal,n={ASCII:0,Roman:1,Katakana:2,LeadByte:3,TrailByte:4,EscapeStart:5,Escape:6},a=n.ASCII,u=n.ASCII,p=0,t=!1;this.handler=function(e,f){switch(a){default:case n.ASCII:return 27===f?(a=n.EscapeStart,null):i(f,0,127)&&14!==f&&15!==f&&27!==f?(t=!1,f):f===Y?G:(t=!1,s(d));case n.Roman:return 27===f?(a=n.EscapeStart,null):92===f?(t=!1,165):126===f?(t=!1,8254):i(f,0,127)&&14!==f&&15!==f&&27!==f&&92!==f&&126!==f?(t=!1,f):f===Y?G:(t=!1,s(d));case n.Katakana:return 27===f?(a=n.EscapeStart,null):i(f,33,95)?(t=!1,65344+f):f===Y?G:(t=!1,s(d));case n.LeadByte:return 27===f?(a=n.EscapeStart,null):i(f,33,126)?(t=!1,p=f,a=n.TrailByte,null):f===Y?G:(t=!1,s(d));case n.TrailByte:if(27===f)return a=n.EscapeStart,s(d);if(i(f,33,126)){a=n.LeadByte;var r=94*(p-33)+f-33,o=y(r,b('jis0208'));return null===o?s(d):o}return f===Y?(a=n.LeadByte,e.prepend(f),s(d)):(a=n.LeadByte,s(d));case n.EscapeStart:return 36===f||40===f?(p=f,a=n.Escape,null):(e.prepend(f),t=!1,a=u,s(d));case n.Escape:var l=p;p=0;var m=null;if(40===l&&66===f&&(m=n.ASCII),40===l&&74===f&&(m=n.Roman),40===l&&73===f&&(m=n.Katakana),36===l&&(64===f||66===f)&&(m=n.LeadByte),null!==m){a=a=m;var c=t;return t=!0,c?s(d):null}return e.prepend([l,f]),t=!1,a=u,s(d);}}}function V(e){var d=e.fatal,n={ASCII:0,Roman:1,jis0208:2},i=n.ASCII;this.handler=function(e,d){if(d===Y&&i!==n.ASCII)return e.prepend(d),i=n.ASCII,[27,40,66];if(d===Y&&i===n.ASCII)return G;if((i===n.ASCII||i===n.Roman)&&(14===d||15===d||27===d))return m(65533);if(i===n.ASCII&&K(d))return d;if(i===n.Roman&&(K(d)&&92!==d&&126!==d||165==d||8254==d)){if(K(d))return d;if(165===d)return 92;if(8254===d)return 126}if(K(d)&&i!==n.ASCII)return e.prepend(d),i=n.ASCII,[27,40,66];if((165===d||8254===d)&&i!==n.Roman)return e.prepend(d),i=n.Roman,[27,40,74];8722===d&&(d=65293);var a=v(d,b('jis0208'));if(null===a)return m(d);if(i!==n.jis0208)return e.prepend(d),i=n.jis0208,[27,36,66];var u=X(a/94)+33,p=a%94+33;return[u,p]}}function U(e){var d=e.fatal,n=0;this.handler=function(e,a){if(a===Y&&0!=n)return n=0,s(d);if(a===Y&&0==n)return G;if(0!=n){var u=n,p=null;n=0;var t=127>a?64:65,f=160>u?129:193;if((i(a,64,126)||i(a,128,252))&&(p=188*(u-f)+a-t),i(p,8836,10715))return 48508+p;var r=null===p?null:y(p,b('jis0208'));return null===r&&o(a)&&e.prepend(a),null===r?s(d):r}return o(a)||128===a?a:i(a,161,223)?65216+a:i(a,129,159)||i(a,224,252)?(n=a,null):s(d)}}function M(e){var d=e.fatal;this.handler=function(e,d){if(d===Y)return G;if(K(d)||128===d)return d;if(165===d)return 92;if(8254===d)return 126;if(i(d,65377,65439))return d-65377+161;8722===d&&(d=65293);var n=x(d);if(null===n)return m(d);var a=X(n/188),u=31>a?129:193,p=n%188,t=63>p?64:65;return[a+u,p+t]}}function F(e){var d=e.fatal,n=0;this.handler=function(e,a){if(a===Y&&0!=n)return n=0,s(d);if(a===Y&&0==n)return G;if(0!=n){var u=n,p=null;n=0,i(a,65,254)&&(p=190*(u-129)+(a-65));var t=null===p?null:y(p,b('euc-kr'));return null===p&&o(a)&&e.prepend(a),null===t?s(d):t}return o(a)?a:i(a,129,254)?(n=a,null):s(d)}}function q(e){var d=e.fatal;this.handler=function(e,d){if(d===Y)return G;if(K(d))return d;var n=v(d,b('euc-kr'));if(null===n)return m(d);var i=X(n/190)+129,a=n%190+65;return[i,a]}}function B(e,d){var n=e>>8,i=255&e;return d?[n,i]:[i,n]}function H(e,d){var n=d.fatal,a=null,u=null;this.handler=function(d,p){if(p===Y&&(null!=a||null!=u))return s(n);if(p===Y&&null==a&&null==u)return G;if(null==a)return a=p,null;var t;if(t=e?(a<<8)+p:(p<<8)+a,a=null,null!=u){var f=u;return(u=null,i(t,56320,57343))?65536+1024*(f-55296)+(t-56320):(d.prepend(B(t,e)),s(n))}return i(t,55296,56319)?(u=t,null):i(t,56320,57343)?s(n):t}}function z(e,d){var n=d.fatal;this.handler=function(d,n){if(n===Y)return G;if(i(n,0,65535))return B(n,e);var a=B((n-65536>>10)+55296,e),u=B((1023&n-65536)+56320,e);return a.concat(u)}}function W(e){var d=e.fatal;this.handler=function(e,d){return d===Y?G:o(d)?d:63360+d-128}}function J(e){var d=e.fatal;this.handler=function(e,d){return d===Y?G:K(d)?d:i(d,63360,63487)?d-63360+128:m(d)}}'undefined'!=typeof e&&e.exports&&!d['encoding-indexes']&&(d['encoding-indexes']=n(281)['encoding-indexes']);var X=p,K=o,Y=-1;l.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.pop():Y},prepend:function(e){if(Array.isArray(e))for(var d=e;d.length;)this.tokens.push(d.pop());else this.tokens.push(e)},push:function(e){if(Array.isArray(e))for(var d=e;d.length;)this.tokens.unshift(d.shift());else this.tokens.unshift(e)}};var G=-1;c.prototype={handler:function(e,d){}},h.prototype={handler:function(e,d){}};var Q=[{encodings:[{labels:['unicode-1-1-utf-8','utf-8','utf8'],name:'UTF-8'}],heading:'The Encoding'},{encodings:[{labels:['866','cp866','csibm866','ibm866'],name:'IBM866'},{labels:['csisolatin2','iso-8859-2','iso-ir-101','iso8859-2','iso88592','iso_8859-2','iso_8859-2:1987','l2','latin2'],name:'ISO-8859-2'},{labels:['csisolatin3','iso-8859-3','iso-ir-109','iso8859-3','iso88593','iso_8859-3','iso_8859-3:1988','l3','latin3'],name:'ISO-8859-3'},{labels:['csisolatin4','iso-8859-4','iso-ir-110','iso8859-4','iso88594','iso_8859-4','iso_8859-4:1988','l4','latin4'],name:'ISO-8859-4'},{labels:['csisolatincyrillic','cyrillic','iso-8859-5','iso-ir-144','iso8859-5','iso88595','iso_8859-5','iso_8859-5:1988'],name:'ISO-8859-5'},{labels:['arabic','asmo-708','csiso88596e','csiso88596i','csisolatinarabic','ecma-114','iso-8859-6','iso-8859-6-e','iso-8859-6-i','iso-ir-127','iso8859-6','iso88596','iso_8859-6','iso_8859-6:1987'],name:'ISO-8859-6'},{labels:['csisolatingreek','ecma-118','elot_928','greek','greek8','iso-8859-7','iso-ir-126','iso8859-7','iso88597','iso_8859-7','iso_8859-7:1987','sun_eu_greek'],name:'ISO-8859-7'},{labels:['csiso88598e','csisolatinhebrew','hebrew','iso-8859-8','iso-8859-8-e','iso-ir-138','iso8859-8','iso88598','iso_8859-8','iso_8859-8:1988','visual'],name:'ISO-8859-8'},{labels:['csiso88598i','iso-8859-8-i','logical'],name:'ISO-8859-8-I'},{labels:['csisolatin6','iso-8859-10','iso-ir-157','iso8859-10','iso885910','l6','latin6'],name:'ISO-8859-10'},{labels:['iso-8859-13','iso8859-13','iso885913'],name:'ISO-8859-13'},{labels:['iso-8859-14','iso8859-14','iso885914'],name:'ISO-8859-14'},{labels:['csisolatin9','iso-8859-15','iso8859-15','iso885915','iso_8859-15','l9'],name:'ISO-8859-15'},{labels:['iso-8859-16'],name:'ISO-8859-16'},{labels:['cskoi8r','koi','koi8','koi8-r','koi8_r'],name:'KOI8-R'},{labels:['koi8-ru','koi8-u'],name:'KOI8-U'},{labels:['csmacintosh','mac','macintosh','x-mac-roman'],name:'macintosh'},{labels:['dos-874','iso-8859-11','iso8859-11','iso885911','tis-620','windows-874'],name:'windows-874'},{labels:['cp1250','windows-1250','x-cp1250'],name:'windows-1250'},{labels:['cp1251','windows-1251','x-cp1251'],name:'windows-1251'},{labels:['ansi_x3.4-1968','ascii','cp1252','cp819','csisolatin1','ibm819','iso-8859-1','iso-ir-100','iso8859-1','iso88591','iso_8859-1','iso_8859-1:1987','l1','latin1','us-ascii','windows-1252','x-cp1252'],name:'windows-1252'},{labels:['cp1253','windows-1253','x-cp1253'],name:'windows-1253'},{labels:['cp1254','csisolatin5','iso-8859-9','iso-ir-148','iso8859-9','iso88599','iso_8859-9','iso_8859-9:1989','l5','latin5','windows-1254','x-cp1254'],name:'windows-1254'},{labels:['cp1255','windows-1255','x-cp1255'],name:'windows-1255'},{labels:['cp1256','windows-1256','x-cp1256'],name:'windows-1256'},{labels:['cp1257','windows-1257','x-cp1257'],name:'windows-1257'},{labels:['cp1258','windows-1258','x-cp1258'],name:'windows-1258'},{labels:['x-mac-cyrillic','x-mac-ukrainian'],name:'x-mac-cyrillic'}],heading:'Legacy single-byte encodings'},{encodings:[{labels:['chinese','csgb2312','csiso58gb231280','gb2312','gb_2312','gb_2312-80','gbk','iso-ir-58','x-gbk'],name:'GBK'},{labels:['gb18030'],name:'gb18030'}],heading:'Legacy multi-byte Chinese (simplified) encodings'},{encodings:[{labels:['big5','big5-hkscs','cn-big5','csbig5','x-x-big5'],name:'Big5'}],heading:'Legacy multi-byte Chinese (traditional) encodings'},{encodings:[{labels:['cseucpkdfmtjapanese','euc-jp','x-euc-jp'],name:'EUC-JP'},{labels:['csiso2022jp','iso-2022-jp'],name:'ISO-2022-JP'},{labels:['csshiftjis','ms932','ms_kanji','shift-jis','shift_jis','sjis','windows-31j','x-sjis'],name:'Shift_JIS'}],heading:'Legacy multi-byte Japanese encodings'},{encodings:[{labels:['cseuckr','csksc56011987','euc-kr','iso-ir-149','korean','ks_c_5601-1987','ks_c_5601-1989','ksc5601','ksc_5601','windows-949'],name:'EUC-KR'}],heading:'Legacy multi-byte Korean encodings'},{encodings:[{labels:['csiso2022kr','hz-gb-2312','iso-2022-cn','iso-2022-cn-ext','iso-2022-kr'],name:'replacement'},{labels:['utf-16be'],name:'UTF-16BE'},{labels:['utf-16','utf-16le'],name:'UTF-16LE'},{labels:['x-user-defined'],name:'x-user-defined'}],heading:'Legacy miscellaneous encodings'}],Z={};Q.forEach(function(e){e.encodings.forEach(function(e){e.labels.forEach(function(d){Z[d]=e})})});var ee={},de={},ne='utf-8',ie,ae;Object.defineProperty&&(Object.defineProperty(S.prototype,'encoding',{get:function(){return this._encoding.name.toLowerCase()}}),Object.defineProperty(S.prototype,'fatal',{get:function(){return'fatal'===this._error_mode}}),Object.defineProperty(S.prototype,'ignoreBOM',{get:function(){return this._ignoreBOM}})),S.prototype.decode=function e(d,n){function i(e){return!a(['UTF-8','UTF-16LE','UTF-16BE'],this._encoding.name)||this._ignoreBOM||this._BOMseen||(0<e.length&&65279===e[0]?(this._BOMseen=!0,e.shift()):0<e.length&&(this._BOMseen=!0)),r(e)}var p;p='object'==typeof d&&d instanceof ArrayBuffer?new Uint8Array(d):'object'==typeof d&&'buffer'in d&&d.buffer instanceof ArrayBuffer?new Uint8Array(d.buffer,d.byteOffset,d.byteLength):new Uint8Array(0),n=u(n),this._do_not_flush||(this._decoder=de[this._encoding.name]({fatal:'fatal'===this._error_mode}),this._BOMseen=!1),this._do_not_flush=!!n.stream;for(var t=new l(p),f=[],o,s;(s=t.read(),s!==Y)&&!(o=this._decoder.handler(t,s),o===G);)null!==o&&(Array.isArray(o)?f.push.apply(f,o):f.push(o));if(!this._do_not_flush){do{if(o=this._decoder.handler(t,t.read()),o===G)break;if(null===o)continue;Array.isArray(o)?f.push.apply(f,o):f.push(o)}while(!t.endOfStream());this._decoder=null}return i.call(this,f)},Object.defineProperty&&Object.defineProperty(T.prototype,'encoding',{get:function(){return this._encoding.name.toLowerCase()}}),T.prototype.encode=function e(d,n){d=d===void 0?'':d+'',n=u(n),this._do_not_flush||(this._encoder=ee[this._encoding.name]({fatal:'fatal'===this._fatal})),this._do_not_flush=!!n.stream;for(var i=new l(t(d)),a=[],p,f;(f=i.read(),f!==Y)&&!(p=this._encoder.handler(i,f),p===G);)Array.isArray(p)?a.push.apply(a,p):a.push(p);if(!this._do_not_flush){for(;p=this._encoder.handler(i,i.read()),p!==G;)Array.isArray(p)?a.push.apply(a,p):a.push(p);this._encoder=null}return new Uint8Array(a)},ee['UTF-8']=function(e){return new I(e)},de['UTF-8']=function(e){return new N(e)},function(){'encoding-indexes'in d&&Q.forEach(function(e){'Legacy single-byte encodings'!==e.heading||e.encodings.forEach(function(e){var d=e.name,n=b(d.toLowerCase());de[d]=function(e){return new j(n,e)},ee[d]=function(e){return new O(n,e)}})})}(),de.GBK=function(e){return new R(e)},ee.GBK=function(e){return new D(e,!0)},ee.gb18030=function(e){return new D(e)},de.gb18030=function(e){return new R(e)},ee.Big5=function(e){return new P(e)},de.Big5=function(e){return new E(e)},ee['EUC-JP']=function(e){return new L(e)},de['EUC-JP']=function(e){return new C(e)},ee['ISO-2022-JP']=function(e){return new V(e)},de['ISO-2022-JP']=function(e){return new A(e)},ee.Shift_JIS=function(e){return new M(e)},de.Shift_JIS=function(e){return new U(e)},ee['EUC-KR']=function(e){return new q(e)},de['EUC-KR']=function(e){return new F(e)},ee['UTF-16BE']=function(e){return new z(!0,e)},de['UTF-16BE']=function(e){return new H(!0,e)},ee['UTF-16LE']=function(e){return new z(!1,e)},de['UTF-16LE']=function(e){return new H(!1,e)},ee['x-user-defined']=function(e){return new J(e)},de['x-user-defined']=function(e){return new W(e)},d.TextEncoder||(d.TextEncoder=T),d.TextDecoder||(d.TextDecoder=S),'undefined'!=typeof e&&e.exports&&(e.exports={TextEncoder:d.TextEncoder,TextDecoder:d.TextDecoder,EncodingIndexes:d['encoding-indexes']})})(this||{})},function(e,d,n){'use strict';function i(e){return /[^\x00-\x7F]/.test(e)}function a(e,{useSTD3ASCIIRules:d}){for(let n=0,i=c.length-1;n<=i;){const a=p((n+i)/2),u=c[a];if(u[0][0]<=e&&u[0][1]>=e){if(u[1].startsWith('disallowed_STD3_')){const e=d?'disallowed':u[1].slice(16);return[e,...u.slice(2)]}return u.slice(1)}u[0][0]>e?i=a-1:n=a+1}return null}function u(e,{useSTD3ASCIIRules:d,processingOption:n}){let i=!1,u='';for(const p of e){const[e,t]=a(p.codePointAt(0),{useSTD3ASCIIRules:d});switch(e){case'disallowed':i=!0,u+=p;break;case'ignored':break;case'mapped':u+=t;break;case'deviation':u+='transitional'===n?t:p;break;case'valid':u+=p;}}return{string:u,error:i}}function t(e,{checkHyphens:d,checkBidi:n,checkJoiners:i,processingOption:u,useSTD3ASCIIRules:p}){if(e.normalize('NFC')!==e)return!1;const t=Array.from(e);if(d&&('-'===t[2]&&'-'===t[3]||e.startsWith('-')||e.endsWith('-')))return!1;if(e.includes('.')||0<t.length&&m.combiningMarks.test(t[0]))return!1;for(const f of t){const[e]=a(f.codePointAt(0),{useSTD3ASCIIRules:p});if('transitional'===u&&'valid'!==e||'nontransitional'===u&&'valid'!==e&&'deviation'!==e)return!1}if(i){let e=0;for(const[d,n]of t.entries())if('\u200C'===n||'\u200D'===n){if(0<d){if(m.combiningClassVirama.test(t[d-1]))continue;if('\u200C'===n){const n=t.indexOf('\u200C',d+1),i=0>n?t.slice(e):t.slice(e,n);if(m.validZWNJ.test(i.join(''))){e=d+1;continue}}}return!1}}if(n){let d;if(m.bidiS1LTR.test(t[0]))d=!1;else if(m.bidiS1RTL.test(t[0]))d=!0;else return!1;if(d){if(!m.bidiS2.test(e)||!m.bidiS3.test(e)||m.bidiS4EN.test(e)&&m.bidiS4AN.test(e))return!1;}else if(!m.bidiS5.test(e)||!m.bidiS6.test(e))return!1}return!0}function f(e){const d=e.map((e)=>{if(e.startsWith('xn--'))try{return s.decode(e.substring(4))}catch(e){return''}return e}).join('.');return m.bidiDomain.test(d)}function r(e,d){const{processingOption:n}=d;let{string:i,error:a}=u(e,d);i=i.normalize('NFC');const p=i.split('.'),r=f(p);for(const[u,i]of p.entries()){let e=i,f=n;if(e.startsWith('xn--')){try{e=s.decode(e.substring(4)),p[u]=e}catch(e){a=!0;continue}f='nontransitional'}if(a)continue;const o=t(e,Object.assign({},d,{processingOption:f,checkBidi:d.checkBidi&&r}));o||(a=!0)}return{string:p.join('.'),error:a}}function o(e,{checkHyphens:d=!1,checkBidi:n=!1,checkJoiners:a=!1,useSTD3ASCIIRules:u=!1,processingOption:p='nontransitional',verifyDNSLength:t=!1}={}){if('transitional'!==p&&'nontransitional'!==p)throw new RangeError('processingOption must be either transitional or nontransitional');const f=r(e,{processingOption:p,checkHyphens:d,checkBidi:n,checkJoiners:a,useSTD3ASCIIRules:u});let o=f.string.split('.');if(o=o.map((e)=>{if(i(e))try{return'xn--'+s.encode(e)}catch(d){f.error=!0}return e}),t){const e=o.join('.').length;(253<e||0===e)&&(f.error=!0);for(let e=0;e<o.length;++e)if(63<o[e].length||0===o[e].length){f.error=!0;break}}return f.error?null:o.join('.')}function l(e,{checkHyphens:d=!1,checkBidi:n=!1,checkJoiners:i=!1,useSTD3ASCIIRules:a=!1}={}){const u=r(e,{processingOption:'nontransitional',checkHyphens:d,checkBidi:n,checkJoiners:i,useSTD3ASCIIRules:a});return{domain:u.string,error:u.error}}const s=n(154),m=n(285),c=n(284);e.exports={toASCII:o,toUnicode:l}},function(e,d){e.exports=[[[0,44],'disallowed_STD3_valid'],[[45,46],'valid'],[[47,47],'disallowed_STD3_valid'],[[48,57],'valid'],[[58,64],'disallowed_STD3_valid'],[[65,65],'mapped','a'],[[66,66],'mapped','b'],[[67,67],'mapped','c'],[[68,68],'mapped','d'],[[69,69],'mapped','e'],[[70,70],'mapped','f'],[[71,71],'mapped','g'],[[72,72],'mapped','h'],[[73,73],'mapped','i'],[[74,74],'mapped','j'],[[75,75],'mapped','k'],[[76,76],'mapped','l'],[[77,77],'mapped','m'],[[78,78],'mapped','n'],[[79,79],'mapped','o'],[[80,80],'mapped','p'],[[81,81],'mapped','q'],[[82,82],'mapped','r'],[[83,83],'mapped','s'],[[84,84],'mapped','t'],[[85,85],'mapped','u'],[[86,86],'mapped','v'],[[87,87],'mapped','w'],[[88,88],'mapped','x'],[[89,89],'mapped','y'],[[90,90],'mapped','z'],[[91,96],'disallowed_STD3_valid'],[[97,122],'valid'],[[123,127],'disallowed_STD3_valid'],[[128,159],'disallowed'],[[160,160],'disallowed_STD3_mapped',' '],[[161,167],'valid','','NV8'],[[168,168],'disallowed_STD3_mapped',' \u0308'],[[169,169],'valid','','NV8'],[[170,170],'mapped','a'],[[171,172],'valid','','NV8'],[[173,173],'ignored'],[[174,174],'valid','','NV8'],[[175,175],'disallowed_STD3_mapped',' \u0304'],[[176,177],'valid','','NV8'],[[178,178],'mapped','2'],[[179,179],'mapped','3'],[[180,180],'disallowed_STD3_mapped',' \u0301'],[[181,181],'mapped','\u03BC'],[[182,182],'valid','','NV8'],[[183,183],'valid'],[[184,184],'disallowed_STD3_mapped',' \u0327'],[[185,185],'mapped','1'],[[186,186],'mapped','o'],[[187,187],'valid','','NV8'],[[188,188],'mapped','1\u20444'],[[189,189],'mapped','1\u20442'],[[190,190],'mapped','3\u20444'],[[191,191],'valid','','NV8'],[[192,192],'mapped','\xE0'],[[193,193],'mapped','\xE1'],[[194,194],'mapped','\xE2'],[[195,195],'mapped','\xE3'],[[196,196],'mapped','\xE4'],[[197,197],'mapped','\xE5'],[[198,198],'mapped','\xE6'],[[199,199],'mapped','\xE7'],[[200,200],'mapped','\xE8'],[[201,201],'mapped','\xE9'],[[202,202],'mapped','\xEA'],[[203,203],'mapped','\xEB'],[[204,204],'mapped','\xEC'],[[205,205],'mapped','\xED'],[[206,206],'mapped','\xEE'],[[207,207],'mapped','\xEF'],[[208,208],'mapped','\xF0'],[[209,209],'mapped','\xF1'],[[210,210],'mapped','\xF2'],[[211,211],'mapped','\xF3'],[[212,212],'mapped','\xF4'],[[213,213],'mapped','\xF5'],[[214,214],'mapped','\xF6'],[[215,215],'valid','','NV8'],[[216,216],'mapped','\xF8'],[[217,217],'mapped','\xF9'],[[218,218],'mapped','\xFA'],[[219,219],'mapped','\xFB'],[[220,220],'mapped','\xFC'],[[221,221],'mapped','\xFD'],[[222,222],'mapped','\xFE'],[[223,223],'deviation','ss'],[[224,246],'valid'],[[247,247],'valid','','NV8'],[[248,255],'valid'],[[256,256],'mapped','\u0101'],[[257,257],'valid'],[[258,258],'mapped','\u0103'],[[259,259],'valid'],[[260,260],'mapped','\u0105'],[[261,261],'valid'],[[262,262],'mapped','\u0107'],[[263,263],'valid'],[[264,264],'mapped','\u0109'],[[265,265],'valid'],[[266,266],'mapped','\u010B'],[[267,267],'valid'],[[268,268],'mapped','\u010D'],[[269,269],'valid'],[[270,270],'mapped','\u010F'],[[271,271],'valid'],[[272,272],'mapped','\u0111'],[[273,273],'valid'],[[274,274],'mapped','\u0113'],[[275,275],'valid'],[[276,276],'mapped','\u0115'],[[277,277],'valid'],[[278,278],'mapped','\u0117'],[[279,279],'valid'],[[280,280],'mapped','\u0119'],[[281,281],'valid'],[[282,282],'mapped','\u011B'],[[283,283],'valid'],[[284,284],'mapped','\u011D'],[[285,285],'valid'],[[286,286],'mapped','\u011F'],[[287,287],'valid'],[[288,288],'mapped','\u0121'],[[289,289],'valid'],[[290,290],'mapped','\u0123'],[[291,291],'valid'],[[292,292],'mapped','\u0125'],[[293,293],'valid'],[[294,294],'mapped','\u0127'],[[295,295],'valid'],[[296,296],'mapped','\u0129'],[[297,297],'valid'],[[298,298],'mapped','\u012B'],[[299,299],'valid'],[[300,300],'mapped','\u012D'],[[301,301],'valid'],[[302,302],'mapped','\u012F'],[[303,303],'valid'],[[304,304],'mapped','i\u0307'],[[305,305],'valid'],[[306,307],'mapped','ij'],[[308,308],'mapped','\u0135'],[[309,309],'valid'],[[310,310],'mapped','\u0137'],[[311,312],'valid'],[[313,313],'mapped','\u013A'],[[314,314],'valid'],[[315,315],'mapped','\u013C'],[[316,316],'valid'],[[317,317],'mapped','\u013E'],[[318,318],'valid'],[[319,320],'mapped','l\xB7'],[[321,321],'mapped','\u0142'],[[322,322],'valid'],[[323,323],'mapped','\u0144'],[[324,324],'valid'],[[325,325],'mapped','\u0146'],[[326,326],'valid'],[[327,327],'mapped','\u0148'],[[328,328],'valid'],[[329,329],'mapped','\u02BCn'],[[330,330],'mapped','\u014B'],[[331,331],'valid'],[[332,332],'mapped','\u014D'],[[333,333],'valid'],[[334,334],'mapped','\u014F'],[[335,335],'valid'],[[336,336],'mapped','\u0151'],[[337,337],'valid'],[[338,338],'mapped','\u0153'],[[339,339],'valid'],[[340,340],'mapped','\u0155'],[[341,341],'valid'],[[342,342],'mapped','\u0157'],[[343,343],'valid'],[[344,344],'mapped','\u0159'],[[345,345],'valid'],[[346,346],'mapped','\u015B'],[[347,347],'valid'],[[348,348],'mapped','\u015D'],[[349,349],'valid'],[[350,350],'mapped','\u015F'],[[351,351],'valid'],[[352,352],'mapped','\u0161'],[[353,353],'valid'],[[354,354],'mapped','\u0163'],[[355,355],'valid'],[[356,356],'mapped','\u0165'],[[357,357],'valid'],[[358,358],'mapped','\u0167'],[[359,359],'valid'],[[360,360],'mapped','\u0169'],[[361,361],'valid'],[[362,362],'mapped','\u016B'],[[363,363],'valid'],[[364,364],'mapped','\u016D'],[[365,365],'valid'],[[366,366],'mapped','\u016F'],[[367,367],'valid'],[[368,368],'mapped','\u0171'],[[369,369],'valid'],[[370,370],'mapped','\u0173'],[[371,371],'valid'],[[372,372],'mapped','\u0175'],[[373,373],'valid'],[[374,374],'mapped','\u0177'],[[375,375],'valid'],[[376,376],'mapped','\xFF'],[[377,377],'mapped','\u017A'],[[378,378],'valid'],[[379,379],'mapped','\u017C'],[[380,380],'valid'],[[381,381],'mapped','\u017E'],[[382,382],'valid'],[[383,383],'mapped','s'],[[384,384],'valid'],[[385,385],'mapped','\u0253'],[[386,386],'mapped','\u0183'],[[387,387],'valid'],[[388,388],'mapped','\u0185'],[[389,389],'valid'],[[390,390],'mapped','\u0254'],[[391,391],'mapped','\u0188'],[[392,392],'valid'],[[393,393],'mapped','\u0256'],[[394,394],'mapped','\u0257'],[[395,395],'mapped','\u018C'],[[396,397],'valid'],[[398,398],'mapped','\u01DD'],[[399,399],'mapped','\u0259'],[[400,400],'mapped','\u025B'],[[401,401],'mapped','\u0192'],[[402,402],'valid'],[[403,403],'mapped','\u0260'],[[404,404],'mapped','\u0263'],[[405,405],'valid'],[[406,406],'mapped','\u0269'],[[407,407],'mapped','\u0268'],[[408,408],'mapped','\u0199'],[[409,411],'valid'],[[412,412],'mapped','\u026F'],[[413,413],'mapped','\u0272'],[[414,414],'valid'],[[415,415],'mapped','\u0275'],[[416,416],'mapped','\u01A1'],[[417,417],'valid'],[[418,418],'mapped','\u01A3'],[[419,419],'valid'],[[420,420],'mapped','\u01A5'],[[421,421],'valid'],[[422,422],'mapped','\u0280'],[[423,423],'mapped','\u01A8'],[[424,424],'valid'],[[425,425],'mapped','\u0283'],[[426,427],'valid'],[[428,428],'mapped','\u01AD'],[[429,429],'valid'],[[430,430],'mapped','\u0288'],[[431,431],'mapped','\u01B0'],[[432,432],'valid'],[[433,433],'mapped','\u028A'],[[434,434],'mapped','\u028B'],[[435,435],'mapped','\u01B4'],[[436,436],'valid'],[[437,437],'mapped','\u01B6'],[[438,438],'valid'],[[439,439],'mapped','\u0292'],[[440,440],'mapped','\u01B9'],[[441,443],'valid'],[[444,444],'mapped','\u01BD'],[[445,451],'valid'],[[452,454],'mapped','d\u017E'],[[455,457],'mapped','lj'],[[458,460],'mapped','nj'],[[461,461],'mapped','\u01CE'],[[462,462],'valid'],[[463,463],'mapped','\u01D0'],[[464,464],'valid'],[[465,465],'mapped','\u01D2'],[[466,466],'valid'],[[467,467],'mapped','\u01D4'],[[468,468],'valid'],[[469,469],'mapped','\u01D6'],[[470,470],'valid'],[[471,471],'mapped','\u01D8'],[[472,472],'valid'],[[473,473],'mapped','\u01DA'],[[474,474],'valid'],[[475,475],'mapped','\u01DC'],[[476,477],'valid'],[[478,478],'mapped','\u01DF'],[[479,479],'valid'],[[480,480],'mapped','\u01E1'],[[481,481],'valid'],[[482,482],'mapped','\u01E3'],[[483,483],'valid'],[[484,484],'mapped','\u01E5'],[[485,485],'valid'],[[486,486],'mapped','\u01E7'],[[487,487],'valid'],[[488,488],'mapped','\u01E9'],[[489,489],'valid'],[[490,490],'mapped','\u01EB'],[[491,491],'valid'],[[492,492],'mapped','\u01ED'],[[493,493],'valid'],[[494,494],'mapped','\u01EF'],[[495,496],'valid'],[[497,499],'mapped','dz'],[[500,500],'mapped','\u01F5'],[[501,501],'valid'],[[502,502],'mapped','\u0195'],[[503,503],'mapped','\u01BF'],[[504,504],'mapped','\u01F9'],[[505,505],'valid'],[[506,506],'mapped','\u01FB'],[[507,507],'valid'],[[508,508],'mapped','\u01FD'],[[509,509],'valid'],[[510,510],'mapped','\u01FF'],[[511,511],'valid'],[[512,512],'mapped','\u0201'],[[513,513],'valid'],[[514,514],'mapped','\u0203'],[[515,515],'valid'],[[516,516],'mapped','\u0205'],[[517,517],'valid'],[[518,518],'mapped','\u0207'],[[519,519],'valid'],[[520,520],'mapped','\u0209'],[[521,521],'valid'],[[522,522],'mapped','\u020B'],[[523,523],'valid'],[[524,524],'mapped','\u020D'],[[525,525],'valid'],[[526,526],'mapped','\u020F'],[[527,527],'valid'],[[528,528],'mapped','\u0211'],[[529,529],'valid'],[[530,530],'mapped','\u0213'],[[531,531],'valid'],[[532,532],'mapped','\u0215'],[[533,533],'valid'],[[534,534],'mapped','\u0217'],[[535,535],'valid'],[[536,536],'mapped','\u0219'],[[537,537],'valid'],[[538,538],'mapped','\u021B'],[[539,539],'valid'],[[540,540],'mapped','\u021D'],[[541,541],'valid'],[[542,542],'mapped','\u021F'],[[543,543],'valid'],[[544,544],'mapped','\u019E'],[[545,545],'valid'],[[546,546],'mapped','\u0223'],[[547,547],'valid'],[[548,548],'mapped','\u0225'],[[549,549],'valid'],[[550,550],'mapped','\u0227'],[[551,551],'valid'],[[552,552],'mapped','\u0229'],[[553,553],'valid'],[[554,554],'mapped','\u022B'],[[555,555],'valid'],[[556,556],'mapped','\u022D'],[[557,557],'valid'],[[558,558],'mapped','\u022F'],[[559,559],'valid'],[[560,560],'mapped','\u0231'],[[561,561],'valid'],[[562,562],'mapped','\u0233'],[[563,563],'valid'],[[564,566],'valid'],[[567,569],'valid'],[[570,570],'mapped','\u2C65'],[[571,571],'mapped','\u023C'],[[572,572],'valid'],[[573,573],'mapped','\u019A'],[[574,574],'mapped','\u2C66'],[[575,576],'valid'],[[577,577],'mapped','\u0242'],[[578,578],'valid'],[[579,579],'mapped','\u0180'],[[580,580],'mapped','\u0289'],[[581,581],'mapped','\u028C'],[[582,582],'mapped','\u0247'],[[583,583],'valid'],[[584,584],'mapped','\u0249'],[[585,585],'valid'],[[586,586],'mapped','\u024B'],[[587,587],'valid'],[[588,588],'mapped','\u024D'],[[589,589],'valid'],[[590,590],'mapped','\u024F'],[[591,591],'valid'],[[592,680],'valid'],[[681,685],'valid'],[[686,687],'valid'],[[688,688],'mapped','h'],[[689,689],'mapped','\u0266'],[[690,690],'mapped','j'],[[691,691],'mapped','r'],[[692,692],'mapped','\u0279'],[[693,693],'mapped','\u027B'],[[694,694],'mapped','\u0281'],[[695,695],'mapped','w'],[[696,696],'mapped','y'],[[697,705],'valid'],[[706,709],'valid','','NV8'],[[710,721],'valid'],[[722,727],'valid','','NV8'],[[728,728],'disallowed_STD3_mapped',' \u0306'],[[729,729],'disallowed_STD3_mapped',' \u0307'],[[730,730],'disallowed_STD3_mapped',' \u030A'],[[731,731],'disallowed_STD3_mapped',' \u0328'],[[732,732],'disallowed_STD3_mapped',' \u0303'],[[733,733],'disallowed_STD3_mapped',' \u030B'],[[734,734],'valid','','NV8'],[[735,735],'valid','','NV8'],[[736,736],'mapped','\u0263'],[[737,737],'mapped','l'],[[738,738],'mapped','s'],[[739,739],'mapped','x'],[[740,740],'mapped','\u0295'],[[741,745],'valid','','NV8'],[[746,747],'valid','','NV8'],[[748,748],'valid'],[[749,749],'valid','','NV8'],[[750,750],'valid'],[[751,767],'valid','','NV8'],[[768,831],'valid'],[[832,832],'mapped','\u0300'],[[833,833],'mapped','\u0301'],[[834,834],'valid'],[[835,835],'mapped','\u0313'],[[836,836],'mapped','\u0308\u0301'],[[837,837],'mapped','\u03B9'],[[838,846],'valid'],[[847,847],'ignored'],[[848,855],'valid'],[[856,860],'valid'],[[861,863],'valid'],[[864,865],'valid'],[[866,866],'valid'],[[867,879],'valid'],[[880,880],'mapped','\u0371'],[[881,881],'valid'],[[882,882],'mapped','\u0373'],[[883,883],'valid'],[[884,884],'mapped','\u02B9'],[[885,885],'valid'],[[886,886],'mapped','\u0377'],[[887,887],'valid'],[[888,889],'disallowed'],[[890,890],'disallowed_STD3_mapped',' \u03B9'],[[891,893],'valid'],[[894,894],'disallowed_STD3_mapped',';'],[[895,895],'mapped','\u03F3'],[[896,899],'disallowed'],[[900,900],'disallowed_STD3_mapped',' \u0301'],[[901,901],'disallowed_STD3_mapped',' \u0308\u0301'],[[902,902],'mapped','\u03AC'],[[903,903],'mapped','\xB7'],[[904,904],'mapped','\u03AD'],[[905,905],'mapped','\u03AE'],[[906,906],'mapped','\u03AF'],[[907,907],'disallowed'],[[908,908],'mapped','\u03CC'],[[909,909],'disallowed'],[[910,910],'mapped','\u03CD'],[[911,911],'mapped','\u03CE'],[[912,912],'valid'],[[913,913],'mapped','\u03B1'],[[914,914],'mapped','\u03B2'],[[915,915],'mapped','\u03B3'],[[916,916],'mapped','\u03B4'],[[917,917],'mapped','\u03B5'],[[918,918],'mapped','\u03B6'],[[919,919],'mapped','\u03B7'],[[920,920],'mapped','\u03B8'],[[921,921],'mapped','\u03B9'],[[922,922],'mapped','\u03BA'],[[923,923],'mapped','\u03BB'],[[924,924],'mapped','\u03BC'],[[925,925],'mapped','\u03BD'],[[926,926],'mapped','\u03BE'],[[927,927],'mapped','\u03BF'],[[928,928],'mapped','\u03C0'],[[929,929],'mapped','\u03C1'],[[930,930],'disallowed'],[[931,931],'mapped','\u03C3'],[[932,932],'mapped','\u03C4'],[[933,933],'mapped','\u03C5'],[[934,934],'mapped','\u03C6'],[[935,935],'mapped','\u03C7'],[[936,936],'mapped','\u03C8'],[[937,937],'mapped','\u03C9'],[[938,938],'mapped','\u03CA'],[[939,939],'mapped','\u03CB'],[[940,961],'valid'],[[962,962],'deviation','\u03C3'],[[963,974],'valid'],[[975,975],'mapped','\u03D7'],[[976,976],'mapped','\u03B2'],[[977,977],'mapped','\u03B8'],[[978,978],'mapped','\u03C5'],[[979,979],'mapped','\u03CD'],[[980,980],'mapped','\u03CB'],[[981,981],'mapped','\u03C6'],[[982,982],'mapped','\u03C0'],[[983,983],'valid'],[[984,984],'mapped','\u03D9'],[[985,985],'valid'],[[986,986],'mapped','\u03DB'],[[987,987],'valid'],[[988,988],'mapped','\u03DD'],[[989,989],'valid'],[[990,990],'mapped','\u03DF'],[[991,991],'valid'],[[992,992],'mapped','\u03E1'],[[993,993],'valid'],[[994,994],'mapped','\u03E3'],[[995,995],'valid'],[[996,996],'mapped','\u03E5'],[[997,997],'valid'],[[998,998],'mapped','\u03E7'],[[999,999],'valid'],[[1000,1000],'mapped','\u03E9'],[[1001,1001],'valid'],[[1002,1002],'mapped','\u03EB'],[[1003,1003],'valid'],[[1004,1004],'mapped','\u03ED'],[[1005,1005],'valid'],[[1006,1006],'mapped','\u03EF'],[[1007,1007],'valid'],[[1008,1008],'mapped','\u03BA'],[[1009,1009],'mapped','\u03C1'],[[1010,1010],'mapped','\u03C3'],[[1011,1011],'valid'],[[1012,1012],'mapped','\u03B8'],[[1013,1013],'mapped','\u03B5'],[[1014,1014],'valid','','NV8'],[[1015,1015],'mapped','\u03F8'],[[1016,1016],'valid'],[[1017,1017],'mapped','\u03C3'],[[1018,1018],'mapped','\u03FB'],[[1019,1019],'valid'],[[1020,1020],'valid'],[[1021,1021],'mapped','\u037B'],[[1022,1022],'mapped','\u037C'],[[1023,1023],'mapped','\u037D'],[[1024,1024],'mapped','\u0450'],[[1025,1025],'mapped','\u0451'],[[1026,1026],'mapped','\u0452'],[[1027,1027],'mapped','\u0453'],[[1028,1028],'mapped','\u0454'],[[1029,1029],'mapped','\u0455'],[[1030,1030],'mapped','\u0456'],[[1031,1031],'mapped','\u0457'],[[1032,1032],'mapped','\u0458'],[[1033,1033],'mapped','\u0459'],[[1034,1034],'mapped','\u045A'],[[1035,1035],'mapped','\u045B'],[[1036,1036],'mapped','\u045C'],[[1037,1037],'mapped','\u045D'],[[1038,1038],'mapped','\u045E'],[[1039,1039],'mapped','\u045F'],[[1040,1040],'mapped','\u0430'],[[1041,1041],'mapped','\u0431'],[[1042,1042],'mapped','\u0432'],[[1043,1043],'mapped','\u0433'],[[1044,1044],'mapped','\u0434'],[[1045,1045],'mapped','\u0435'],[[1046,1046],'mapped','\u0436'],[[1047,1047],'mapped','\u0437'],[[1048,1048],'mapped','\u0438'],[[1049,1049],'mapped','\u0439'],[[1050,1050],'mapped','\u043A'],[[1051,1051],'mapped','\u043B'],[[1052,1052],'mapped','\u043C'],[[1053,1053],'mapped','\u043D'],[[1054,1054],'mapped','\u043E'],[[1055,1055],'mapped','\u043F'],[[1056,1056],'mapped','\u0440'],[[1057,1057],'mapped','\u0441'],[[1058,1058],'mapped','\u0442'],[[1059,1059],'mapped','\u0443'],[[1060,1060],'mapped','\u0444'],[[1061,1061],'mapped','\u0445'],[[1062,1062],'mapped','\u0446'],[[1063,1063],'mapped','\u0447'],[[1064,1064],'mapped','\u0448'],[[1065,1065],'mapped','\u0449'],[[1066,1066],'mapped','\u044A'],[[1067,1067],'mapped','\u044B'],[[1068,1068],'mapped','\u044C'],[[1069,1069],'mapped','\u044D'],[[1070,1070],'mapped','\u044E'],[[1071,1071],'mapped','\u044F'],[[1072,1103],'valid'],[[1104,1104],'valid'],[[1105,1116],'valid'],[[1117,1117],'valid'],[[1118,1119],'valid'],[[1120,1120],'mapped','\u0461'],[[1121,1121],'valid'],[[1122,1122],'mapped','\u0463'],[[1123,1123],'valid'],[[1124,1124],'mapped','\u0465'],[[1125,1125],'valid'],[[1126,1126],'mapped','\u0467'],[[1127,1127],'valid'],[[1128,1128],'mapped','\u0469'],[[1129,1129],'valid'],[[1130,1130],'mapped','\u046B'],[[1131,1131],'valid'],[[1132,1132],'mapped','\u046D'],[[1133,1133],'valid'],[[1134,1134],'mapped','\u046F'],[[1135,1135],'valid'],[[1136,1136],'mapped','\u0471'],[[1137,1137],'valid'],[[1138,1138],'mapped','\u0473'],[[1139,1139],'valid'],[[1140,1140],'mapped','\u0475'],[[1141,1141],'valid'],[[1142,1142],'mapped','\u0477'],[[1143,1143],'valid'],[[1144,1144],'mapped','\u0479'],[[1145,1145],'valid'],[[1146,1146],'mapped','\u047B'],[[1147,1147],'valid'],[[1148,1148],'mapped','\u047D'],[[1149,1149],'valid'],[[1150,1150],'mapped','\u047F'],[[1151,1151],'valid'],[[1152,1152],'mapped','\u0481'],[[1153,1153],'valid'],[[1154,1154],'valid','','NV8'],[[1155,1158],'valid'],[[1159,1159],'valid'],[[1160,1161],'valid','','NV8'],[[1162,1162],'mapped','\u048B'],[[1163,1163],'valid'],[[1164,1164],'mapped','\u048D'],[[1165,1165],'valid'],[[1166,1166],'mapped','\u048F'],[[1167,1167],'valid'],[[1168,1168],'mapped','\u0491'],[[1169,1169],'valid'],[[1170,1170],'mapped','\u0493'],[[1171,1171],'valid'],[[1172,1172],'mapped','\u0495'],[[1173,1173],'valid'],[[1174,1174],'mapped','\u0497'],[[1175,1175],'valid'],[[1176,1176],'mapped','\u0499'],[[1177,1177],'valid'],[[1178,1178],'mapped','\u049B'],[[1179,1179],'valid'],[[1180,1180],'mapped','\u049D'],[[1181,1181],'valid'],[[1182,1182],'mapped','\u049F'],[[1183,1183],'valid'],[[1184,1184],'mapped','\u04A1'],[[1185,1185],'valid'],[[1186,1186],'mapped','\u04A3'],[[1187,1187],'valid'],[[1188,1188],'mapped','\u04A5'],[[1189,1189],'valid'],[[1190,1190],'mapped','\u04A7'],[[1191,1191],'valid'],[[1192,1192],'mapped','\u04A9'],[[1193,1193],'valid'],[[1194,1194],'mapped','\u04AB'],[[1195,1195],'valid'],[[1196,1196],'mapped','\u04AD'],[[1197,1197],'valid'],[[1198,1198],'mapped','\u04AF'],[[1199,1199],'valid'],[[1200,1200],'mapped','\u04B1'],[[1201,1201],'valid'],[[1202,1202],'mapped','\u04B3'],[[1203,1203],'valid'],[[1204,1204],'mapped','\u04B5'],[[1205,1205],'valid'],[[1206,1206],'mapped','\u04B7'],[[1207,1207],'valid'],[[1208,1208],'mapped','\u04B9'],[[1209,1209],'valid'],[[1210,1210],'mapped','\u04BB'],[[1211,1211],'valid'],[[1212,1212],'mapped','\u04BD'],[[1213,1213],'valid'],[[1214,1214],'mapped','\u04BF'],[[1215,1215],'valid'],[[1216,1216],'disallowed'],[[1217,1217],'mapped','\u04C2'],[[1218,1218],'valid'],[[1219,1219],'mapped','\u04C4'],[[1220,1220],'valid'],[[1221,1221],'mapped','\u04C6'],[[1222,1222],'valid'],[[1223,1223],'mapped','\u04C8'],[[1224,1224],'valid'],[[1225,1225],'mapped','\u04CA'],[[1226,1226],'valid'],[[1227,1227],'mapped','\u04CC'],[[1228,1228],'valid'],[[1229,1229],'mapped','\u04CE'],[[1230,1230],'valid'],[[1231,1231],'valid'],[[1232,1232],'mapped','\u04D1'],[[1233,1233],'valid'],[[1234,1234],'mapped','\u04D3'],[[1235,1235],'valid'],[[1236,1236],'mapped','\u04D5'],[[1237,1237],'valid'],[[1238,1238],'mapped','\u04D7'],[[1239,1239],'valid'],[[1240,1240],'mapped','\u04D9'],[[1241,1241],'valid'],[[1242,1242],'mapped','\u04DB'],[[1243,1243],'valid'],[[1244,1244],'mapped','\u04DD'],[[1245,1245],'valid'],[[1246,1246],'mapped','\u04DF'],[[1247,1247],'valid'],[[1248,1248],'mapped','\u04E1'],[[1249,1249],'valid'],[[1250,1250],'mapped','\u04E3'],[[1251,1251],'valid'],[[1252,1252],'mapped','\u04E5'],[[1253,1253],'valid'],[[1254,1254],'mapped','\u04E7'],[[1255,1255],'valid'],[[1256,1256],'mapped','\u04E9'],[[1257,1257],'valid'],[[1258,1258],'mapped','\u04EB'],[[1259,1259],'valid'],[[1260,1260],'mapped','\u04ED'],[[1261,1261],'valid'],[[1262,1262],'mapped','\u04EF'],[[1263,1263],'valid'],[[1264,1264],'mapped','\u04F1'],[[1265,1265],'valid'],[[1266,1266],'mapped','\u04F3'],[[1267,1267],'valid'],[[1268,1268],'mapped','\u04F5'],[[1269,1269],'valid'],[[1270,1270],'mapped','\u04F7'],[[1271,1271],'valid'],[[1272,1272],'mapped','\u04F9'],[[1273,1273],'valid'],[[1274,1274],'mapped','\u04FB'],[[1275,1275],'valid'],[[1276,1276],'mapped','\u04FD'],[[1277,1277],'valid'],[[1278,1278],'mapped','\u04FF'],[[1279,1279],'valid'],[[1280,1280],'mapped','\u0501'],[[1281,1281],'valid'],[[1282,1282],'mapped','\u0503'],[[1283,1283],'valid'],[[1284,1284],'mapped','\u0505'],[[1285,1285],'valid'],[[1286,1286],'mapped','\u0507'],[[1287,1287],'valid'],[[1288,1288],'mapped','\u0509'],[[1289,1289],'valid'],[[1290,1290],'mapped','\u050B'],[[1291,1291],'valid'],[[1292,1292],'mapped','\u050D'],[[1293,1293],'valid'],[[1294,1294],'mapped','\u050F'],[[1295,1295],'valid'],[[1296,1296],'mapped','\u0511'],[[1297,1297],'valid'],[[1298,1298],'mapped','\u0513'],[[1299,1299],'valid'],[[1300,1300],'mapped','\u0515'],[[1301,1301],'valid'],[[1302,1302],'mapped','\u0517'],[[1303,1303],'valid'],[[1304,1304],'mapped','\u0519'],[[1305,1305],'valid'],[[1306,1306],'mapped','\u051B'],[[1307,1307],'valid'],[[1308,1308],'mapped','\u051D'],[[1309,1309],'valid'],[[1310,1310],'mapped','\u051F'],[[1311,1311],'valid'],[[1312,1312],'mapped','\u0521'],[[1313,1313],'valid'],[[1314,1314],'mapped','\u0523'],[[1315,1315],'valid'],[[1316,1316],'mapped','\u0525'],[[1317,1317],'valid'],[[1318,1318],'mapped','\u0527'],[[1319,1319],'valid'],[[1320,1320],'mapped','\u0529'],[[1321,1321],'valid'],[[1322,1322],'mapped','\u052B'],[[1323,1323],'valid'],[[1324,1324],'mapped','\u052D'],[[1325,1325],'valid'],[[1326,1326],'mapped','\u052F'],[[1327,1327],'valid'],[[1328,1328],'disallowed'],[[1329,1329],'mapped','\u0561'],[[1330,1330],'mapped','\u0562'],[[1331,1331],'mapped','\u0563'],[[1332,1332],'mapped','\u0564'],[[1333,1333],'mapped','\u0565'],[[1334,1334],'mapped','\u0566'],[[1335,1335],'mapped','\u0567'],[[1336,1336],'mapped','\u0568'],[[1337,1337],'mapped','\u0569'],[[1338,1338],'mapped','\u056A'],[[1339,1339],'mapped','\u056B'],[[1340,1340],'mapped','\u056C'],[[1341,1341],'mapped','\u056D'],[[1342,1342],'mapped','\u056E'],[[1343,1343],'mapped','\u056F'],[[1344,1344],'mapped','\u0570'],[[1345,1345],'mapped','\u0571'],[[1346,1346],'mapped','\u0572'],[[1347,1347],'mapped','\u0573'],[[1348,1348],'mapped','\u0574'],[[1349,1349],'mapped','\u0575'],[[1350,1350],'mapped','\u0576'],[[1351,1351],'mapped','\u0577'],[[1352,1352],'mapped','\u0578'],[[1353,1353],'mapped','\u0579'],[[1354,1354],'mapped','\u057A'],[[1355,1355],'mapped','\u057B'],[[1356,1356],'mapped','\u057C'],[[1357,1357],'mapped','\u057D'],[[1358,1358],'mapped','\u057E'],[[1359,1359],'mapped','\u057F'],[[1360,1360],'mapped','\u0580'],[[1361,1361],'mapped','\u0581'],[[1362,1362],'mapped','\u0582'],[[1363,1363],'mapped','\u0583'],[[1364,1364],'mapped','\u0584'],[[1365,1365],'mapped','\u0585'],[[1366,1366],'mapped','\u0586'],[[1367,1368],'disallowed'],[[1369,1369],'valid'],[[1370,1375],'valid','','NV8'],[[1376,1376],'disallowed'],[[1377,1414],'valid'],[[1415,1415],'mapped','\u0565\u0582'],[[1416,1416],'disallowed'],[[1417,1417],'valid','','NV8'],[[1418,1418],'valid','','NV8'],[[1419,1420],'disallowed'],[[1421,1422],'valid','','NV8'],[[1423,1423],'valid','','NV8'],[[1424,1424],'disallowed'],[[1425,1441],'valid'],[[1442,1442],'valid'],[[1443,1455],'valid'],[[1456,1465],'valid'],[[1466,1466],'valid'],[[1467,1469],'valid'],[[1470,1470],'valid','','NV8'],[[1471,1471],'valid'],[[1472,1472],'valid','','NV8'],[[1473,1474],'valid'],[[1475,1475],'valid','','NV8'],[[1476,1476],'valid'],[[1477,1477],'valid'],[[1478,1478],'valid','','NV8'],[[1479,1479],'valid'],[[1480,1487],'disallowed'],[[1488,1514],'valid'],[[1515,1519],'disallowed'],[[1520,1524],'valid'],[[1525,1535],'disallowed'],[[1536,1539],'disallowed'],[[1540,1540],'disallowed'],[[1541,1541],'disallowed'],[[1542,1546],'valid','','NV8'],[[1547,1547],'valid','','NV8'],[[1548,1548],'valid','','NV8'],[[1549,1551],'valid','','NV8'],[[1552,1557],'valid'],[[1558,1562],'valid'],[[1563,1563],'valid','','NV8'],[[1564,1564],'disallowed'],[[1565,1565],'disallowed'],[[1566,1566],'valid','','NV8'],[[1567,1567],'valid','','NV8'],[[1568,1568],'valid'],[[1569,1594],'valid'],[[1595,1599],'valid'],[[1600,1600],'valid','','NV8'],[[1601,1618],'valid'],[[1619,1621],'valid'],[[1622,1624],'valid'],[[1625,1630],'valid'],[[1631,1631],'valid'],[[1632,1641],'valid'],[[1642,1645],'valid','','NV8'],[[1646,1647],'valid'],[[1648,1652],'valid'],[[1653,1653],'mapped','\u0627\u0674'],[[1654,1654],'mapped','\u0648\u0674'],[[1655,1655],'mapped','\u06C7\u0674'],[[1656,1656],'mapped','\u064A\u0674'],[[1657,1719],'valid'],[[1720,1721],'valid'],[[1722,1726],'valid'],[[1727,1727],'valid'],[[1728,1742],'valid'],[[1743,1743],'valid'],[[1744,1747],'valid'],[[1748,1748],'valid','','NV8'],[[1749,1756],'valid'],[[1757,1757],'disallowed'],[[1758,1758],'valid','','NV8'],[[1759,1768],'valid'],[[1769,1769],'valid','','NV8'],[[1770,1773],'valid'],[[1774,1775],'valid'],[[1776,1785],'valid'],[[1786,1790],'valid'],[[1791,1791],'valid'],[[1792,1805],'valid','','NV8'],[[1806,1806],'disallowed'],[[1807,1807],'disallowed'],[[1808,1836],'valid'],[[1837,1839],'valid'],[[1840,1866],'valid'],[[1867,1868],'disallowed'],[[1869,1871],'valid'],[[1872,1901],'valid'],[[1902,1919],'valid'],[[1920,1968],'valid'],[[1969,1969],'valid'],[[1970,1983],'disallowed'],[[1984,2037],'valid'],[[2038,2042],'valid','','NV8'],[[2043,2047],'disallowed'],[[2048,2093],'valid'],[[2094,2095],'disallowed'],[[2096,2110],'valid','','NV8'],[[2111,2111],'disallowed'],[[2112,2139],'valid'],[[2140,2141],'disallowed'],[[2142,2142],'valid','','NV8'],[[2143,2143],'disallowed'],[[2144,2154],'valid'],[[2155,2207],'disallowed'],[[2208,2208],'valid'],[[2209,2209],'valid'],[[2210,2220],'valid'],[[2221,2226],'valid'],[[2227,2228],'valid'],[[2229,2229],'disallowed'],[[2230,2237],'valid'],[[2238,2259],'disallowed'],[[2260,2273],'valid'],[[2274,2274],'disallowed'],[[2275,2275],'valid'],[[2276,2302],'valid'],[[2303,2303],'valid'],[[2304,2304],'valid'],[[2305,2307],'valid'],[[2308,2308],'valid'],[[2309,2361],'valid'],[[2362,2363],'valid'],[[2364,2381],'valid'],[[2382,2382],'valid'],[[2383,2383],'valid'],[[2384,2388],'valid'],[[2389,2389],'valid'],[[2390,2391],'valid'],[[2392,2392],'mapped','\u0915\u093C'],[[2393,2393],'mapped','\u0916\u093C'],[[2394,2394],'mapped','\u0917\u093C'],[[2395,2395],'mapped','\u091C\u093C'],[[2396,2396],'mapped','\u0921\u093C'],[[2397,2397],'mapped','\u0922\u093C'],[[2398,2398],'mapped','\u092B\u093C'],[[2399,2399],'mapped','\u092F\u093C'],[[2400,2403],'valid'],[[2404,2405],'valid','','NV8'],[[2406,2415],'valid'],[[2416,2416],'valid','','NV8'],[[2417,2418],'valid'],[[2419,2423],'valid'],[[2424,2424],'valid'],[[2425,2426],'valid'],[[2427,2428],'valid'],[[2429,2429],'valid'],[[2430,2431],'valid'],[[2432,2432],'valid'],[[2433,2435],'valid'],[[2436,2436],'disallowed'],[[2437,2444],'valid'],[[2445,2446],'disallowed'],[[2447,2448],'valid'],[[2449,2450],'disallowed'],[[2451,2472],'valid'],[[2473,2473],'disallowed'],[[2474,2480],'valid'],[[2481,2481],'disallowed'],[[2482,2482],'valid'],[[2483,2485],'disallowed'],[[2486,2489],'valid'],[[2490,2491],'disallowed'],[[2492,2492],'valid'],[[2493,2493],'valid'],[[2494,2500],'valid'],[[2501,2502],'disallowed'],[[2503,2504],'valid'],[[2505,2506],'disallowed'],[[2507,2509],'valid'],[[2510,2510],'valid'],[[2511,2518],'disallowed'],[[2519,2519],'valid'],[[2520,2523],'disallowed'],[[2524,2524],'mapped','\u09A1\u09BC'],[[2525,2525],'mapped','\u09A2\u09BC'],[[2526,2526],'disallowed'],[[2527,2527],'mapped','\u09AF\u09BC'],[[2528,2531],'valid'],[[2532,2533],'disallowed'],[[2534,2545],'valid'],[[2546,2554],'valid','','NV8'],[[2555,2555],'valid','','NV8'],[[2556,2556],'valid'],[[2557,2557],'valid','','NV8'],[[2558,2560],'disallowed'],[[2561,2561],'valid'],[[2562,2562],'valid'],[[2563,2563],'valid'],[[2564,2564],'disallowed'],[[2565,2570],'valid'],[[2571,2574],'disallowed'],[[2575,2576],'valid'],[[2577,2578],'disallowed'],[[2579,2600],'valid'],[[2601,2601],'disallowed'],[[2602,2608],'valid'],[[2609,2609],'disallowed'],[[2610,2610],'valid'],[[2611,2611],'mapped','\u0A32\u0A3C'],[[2612,2612],'disallowed'],[[2613,2613],'valid'],[[2614,2614],'mapped','\u0A38\u0A3C'],[[2615,2615],'disallowed'],[[2616,2617],'valid'],[[2618,2619],'disallowed'],[[2620,2620],'valid'],[[2621,2621],'disallowed'],[[2622,2626],'valid'],[[2627,2630],'disallowed'],[[2631,2632],'valid'],[[2633,2634],'disallowed'],[[2635,2637],'valid'],[[2638,2640],'disallowed'],[[2641,2641],'valid'],[[2642,2648],'disallowed'],[[2649,2649],'mapped','\u0A16\u0A3C'],[[2650,2650],'mapped','\u0A17\u0A3C'],[[2651,2651],'mapped','\u0A1C\u0A3C'],[[2652,2652],'valid'],[[2653,2653],'disallowed'],[[2654,2654],'mapped','\u0A2B\u0A3C'],[[2655,2661],'disallowed'],[[2662,2676],'valid'],[[2677,2677],'valid'],[[2678,2688],'disallowed'],[[2689,2691],'valid'],[[2692,2692],'disallowed'],[[2693,2699],'valid'],[[2700,2700],'valid'],[[2701,2701],'valid'],[[2702,2702],'disallowed'],[[2703,2705],'valid'],[[2706,2706],'disallowed'],[[2707,2728],'valid'],[[2729,2729],'disallowed'],[[2730,2736],'valid'],[[2737,2737],'disallowed'],[[2738,2739],'valid'],[[2740,2740],'disallowed'],[[2741,2745],'valid'],[[2746,2747],'disallowed'],[[2748,2757],'valid'],[[2758,2758],'disallowed'],[[2759,2761],'valid'],[[2762,2762],'disallowed'],[[2763,2765],'valid'],[[2766,2767],'disallowed'],[[2768,2768],'valid'],[[2769,2783],'disallowed'],[[2784,2784],'valid'],[[2785,2787],'valid'],[[2788,2789],'disallowed'],[[2790,2799],'valid'],[[2800,2800],'valid','','NV8'],[[2801,2801],'valid','','NV8'],[[2802,2808],'disallowed'],[[2809,2809],'valid'],[[2810,2815],'valid'],[[2816,2816],'disallowed'],[[2817,2819],'valid'],[[2820,2820],'disallowed'],[[2821,2828],'valid'],[[2829,2830],'disallowed'],[[2831,2832],'valid'],[[2833,2834],'disallowed'],[[2835,2856],'valid'],[[2857,2857],'disallowed'],[[2858,2864],'valid'],[[2865,2865],'disallowed'],[[2866,2867],'valid'],[[2868,2868],'disallowed'],[[2869,2869],'valid'],[[2870,2873],'valid'],[[2874,2875],'disallowed'],[[2876,2883],'valid'],[[2884,2884],'valid'],[[2885,2886],'disallowed'],[[2887,2888],'valid'],[[2889,2890],'disallowed'],[[2891,2893],'valid'],[[2894,2901],'disallowed'],[[2902,2903],'valid'],[[2904,2907],'disallowed'],[[2908,2908],'mapped','\u0B21\u0B3C'],[[2909,2909],'mapped','\u0B22\u0B3C'],[[2910,2910],'disallowed'],[[2911,2913],'valid'],[[2914,2915],'valid'],[[2916,2917],'disallowed'],[[2918,2927],'valid'],[[2928,2928],'valid','','NV8'],[[2929,2929],'valid'],[[2930,2935],'valid','','NV8'],[[2936,2945],'disallowed'],[[2946,2947],'valid'],[[2948,2948],'disallowed'],[[2949,2954],'valid'],[[2955,2957],'disallowed'],[[2958,2960],'valid'],[[2961,2961],'disallowed'],[[2962,2965],'valid'],[[2966,2968],'disallowed'],[[2969,2970],'valid'],[[2971,2971],'disallowed'],[[2972,2972],'valid'],[[2973,2973],'disallowed'],[[2974,2975],'valid'],[[2976,2978],'disallowed'],[[2979,2980],'valid'],[[2981,2983],'disallowed'],[[2984,2986],'valid'],[[2987,2989],'disallowed'],[[2990,2997],'valid'],[[2998,2998],'valid'],[[2999,3001],'valid'],[[3002,3005],'disallowed'],[[3006,3010],'valid'],[[3011,3013],'disallowed'],[[3014,3016],'valid'],[[3017,3017],'disallowed'],[[3018,3021],'valid'],[[3022,3023],'disallowed'],[[3024,3024],'valid'],[[3025,3030],'disallowed'],[[3031,3031],'valid'],[[3032,3045],'disallowed'],[[3046,3046],'valid'],[[3047,3055],'valid'],[[3056,3058],'valid','','NV8'],[[3059,3066],'valid','','NV8'],[[3067,3071],'disallowed'],[[3072,3072],'valid'],[[3073,3075],'valid'],[[3076,3076],'disallowed'],[[3077,3084],'valid'],[[3085,3085],'disallowed'],[[3086,3088],'valid'],[[3089,3089],'disallowed'],[[3090,3112],'valid'],[[3113,3113],'disallowed'],[[3114,3123],'valid'],[[3124,3124],'valid'],[[3125,3129],'valid'],[[3130,3132],'disallowed'],[[3133,3133],'valid'],[[3134,3140],'valid'],[[3141,3141],'disallowed'],[[3142,3144],'valid'],[[3145,3145],'disallowed'],[[3146,3149],'valid'],[[3150,3156],'disallowed'],[[3157,3158],'valid'],[[3159,3159],'disallowed'],[[3160,3161],'valid'],[[3162,3162],'valid'],[[3163,3167],'disallowed'],[[3168,3169],'valid'],[[3170,3171],'valid'],[[3172,3173],'disallowed'],[[3174,3183],'valid'],[[3184,3191],'disallowed'],[[3192,3199],'valid','','NV8'],[[3200,3200],'valid'],[[3201,3201],'valid'],[[3202,3203],'valid'],[[3204,3204],'disallowed'],[[3205,3212],'valid'],[[3213,3213],'disallowed'],[[3214,3216],'valid'],[[3217,3217],'disallowed'],[[3218,3240],'valid'],[[3241,3241],'disallowed'],[[3242,3251],'valid'],[[3252,3252],'disallowed'],[[3253,3257],'valid'],[[3258,3259],'disallowed'],[[3260,3261],'valid'],[[3262,3268],'valid'],[[3269,3269],'disallowed'],[[3270,3272],'valid'],[[3273,3273],'disallowed'],[[3274,3277],'valid'],[[3278,3284],'disallowed'],[[3285,3286],'valid'],[[3287,3293],'disallowed'],[[3294,3294],'valid'],[[3295,3295],'disallowed'],[[3296,3297],'valid'],[[3298,3299],'valid'],[[3300,3301],'disallowed'],[[3302,3311],'valid'],[[3312,3312],'disallowed'],[[3313,3314],'valid'],[[3315,3327],'disallowed'],[[3328,3328],'valid'],[[3329,3329],'valid'],[[3330,3331],'valid'],[[3332,3332],'disallowed'],[[3333,3340],'valid'],[[3341,3341],'disallowed'],[[3342,3344],'valid'],[[3345,3345],'disallowed'],[[3346,3368],'valid'],[[3369,3369],'valid'],[[3370,3385],'valid'],[[3386,3386],'valid'],[[3387,3388],'valid'],[[3389,3389],'valid'],[[3390,3395],'valid'],[[3396,3396],'valid'],[[3397,3397],'disallowed'],[[3398,3400],'valid'],[[3401,3401],'disallowed'],[[3402,3405],'valid'],[[3406,3406],'valid'],[[3407,3407],'valid','','NV8'],[[3408,3411],'disallowed'],[[3412,3414],'valid'],[[3415,3415],'valid'],[[3416,3422],'valid','','NV8'],[[3423,3423],'valid'],[[3424,3425],'valid'],[[3426,3427],'valid'],[[3428,3429],'disallowed'],[[3430,3439],'valid'],[[3440,3445],'valid','','NV8'],[[3446,3448],'valid','','NV8'],[[3449,3449],'valid','','NV8'],[[3450,3455],'valid'],[[3456,3457],'disallowed'],[[3458,3459],'valid'],[[3460,3460],'disallowed'],[[3461,3478],'valid'],[[3479,3481],'disallowed'],[[3482,3505],'valid'],[[3506,3506],'disallowed'],[[3507,3515],'valid'],[[3516,3516],'disallowed'],[[3517,3517],'valid'],[[3518,3519],'disallowed'],[[3520,3526],'valid'],[[3527,3529],'disallowed'],[[3530,3530],'valid'],[[3531,3534],'disallowed'],[[3535,3540],'valid'],[[3541,3541],'disallowed'],[[3542,3542],'valid'],[[3543,3543],'disallowed'],[[3544,3551],'valid'],[[3552,3557],'disallowed'],[[3558,3567],'valid'],[[3568,3569],'disallowed'],[[3570,3571],'valid'],[[3572,3572],'valid','','NV8'],[[3573,3584],'disallowed'],[[3585,3634],'valid'],[[3635,3635],'mapped','\u0E4D\u0E32'],[[3636,3642],'valid'],[[3643,3646],'disallowed'],[[3647,3647],'valid','','NV8'],[[3648,3662],'valid'],[[3663,3663],'valid','','NV8'],[[3664,3673],'valid'],[[3674,3675],'valid','','NV8'],[[3676,3712],'disallowed'],[[3713,3714],'valid'],[[3715,3715],'disallowed'],[[3716,3716],'valid'],[[3717,3718],'disallowed'],[[3719,3720],'valid'],[[3721,3721],'disallowed'],[[3722,3722],'valid'],[[3723,3724],'disallowed'],[[3725,3725],'valid'],[[3726,3731],'disallowed'],[[3732,3735],'valid'],[[3736,3736],'disallowed'],[[3737,3743],'valid'],[[3744,3744],'disallowed'],[[3745,3747],'valid'],[[3748,3748],'disallowed'],[[3749,3749],'valid'],[[3750,3750],'disallowed'],[[3751,3751],'valid'],[[3752,3753],'disallowed'],[[3754,3755],'valid'],[[3756,3756],'disallowed'],[[3757,3762],'valid'],[[3763,3763],'mapped','\u0ECD\u0EB2'],[[3764,3769],'valid'],[[3770,3770],'disallowed'],[[3771,3773],'valid'],[[3774,3775],'disallowed'],[[3776,3780],'valid'],[[3781,3781],'disallowed'],[[3782,3782],'valid'],[[3783,3783],'disallowed'],[[3784,3789],'valid'],[[3790,3791],'disallowed'],[[3792,3801],'valid'],[[3802,3803],'disallowed'],[[3804,3804],'mapped','\u0EAB\u0E99'],[[3805,3805],'mapped','\u0EAB\u0EA1'],[[3806,3807],'valid'],[[3808,3839],'disallowed'],[[3840,3840],'valid'],[[3841,3850],'valid','','NV8'],[[3851,3851],'valid'],[[3852,3852],'mapped','\u0F0B'],[[3853,3863],'valid','','NV8'],[[3864,3865],'valid'],[[3866,3871],'valid','','NV8'],[[3872,3881],'valid'],[[3882,3892],'valid','','NV8'],[[3893,3893],'valid'],[[3894,3894],'valid','','NV8'],[[3895,3895],'valid'],[[3896,3896],'valid','','NV8'],[[3897,3897],'valid'],[[3898,3901],'valid','','NV8'],[[3902,3906],'valid'],[[3907,3907],'mapped','\u0F42\u0FB7'],[[3908,3911],'valid'],[[3912,3912],'disallowed'],[[3913,3916],'valid'],[[3917,3917],'mapped','\u0F4C\u0FB7'],[[3918,3921],'valid'],[[3922,3922],'mapped','\u0F51\u0FB7'],[[3923,3926],'valid'],[[3927,3927],'mapped','\u0F56\u0FB7'],[[3928,3931],'valid'],[[3932,3932],'mapped','\u0F5B\u0FB7'],[[3933,3944],'valid'],[[3945,3945],'mapped','\u0F40\u0FB5'],[[3946,3946],'valid'],[[3947,3948],'valid'],[[3949,3952],'disallowed'],[[3953,3954],'valid'],[[3955,3955],'mapped','\u0F71\u0F72'],[[3956,3956],'valid'],[[3957,3957],'mapped','\u0F71\u0F74'],[[3958,3958],'mapped','\u0FB2\u0F80'],[[3959,3959],'mapped','\u0FB2\u0F71\u0F80'],[[3960,3960],'mapped','\u0FB3\u0F80'],[[3961,3961],'mapped','\u0FB3\u0F71\u0F80'],[[3962,3968],'valid'],[[3969,3969],'mapped','\u0F71\u0F80'],[[3970,3972],'valid'],[[3973,3973],'valid','','NV8'],[[3974,3979],'valid'],[[3980,3983],'valid'],[[3984,3986],'valid'],[[3987,3987],'mapped','\u0F92\u0FB7'],[[3988,3989],'valid'],[[3990,3990],'valid'],[[3991,3991],'valid'],[[3992,3992],'disallowed'],[[3993,3996],'valid'],[[3997,3997],'mapped','\u0F9C\u0FB7'],[[3998,4001],'valid'],[[4002,4002],'mapped','\u0FA1\u0FB7'],[[4003,4006],'valid'],[[4007,4007],'mapped','\u0FA6\u0FB7'],[[4008,4011],'valid'],[[4012,4012],'mapped','\u0FAB\u0FB7'],[[4013,4013],'valid'],[[4014,4016],'valid'],[[4017,4023],'valid'],[[4024,4024],'valid'],[[4025,4025],'mapped','\u0F90\u0FB5'],[[4026,4028],'valid'],[[4029,4029],'disallowed'],[[4030,4037],'valid','','NV8'],[[4038,4038],'valid'],[[4039,4044],'valid','','NV8'],[[4045,4045],'disallowed'],[[4046,4046],'valid','','NV8'],[[4047,4047],'valid','','NV8'],[[4048,4049],'valid','','NV8'],[[4050,4052],'valid','','NV8'],[[4053,4056],'valid','','NV8'],[[4057,4058],'valid','','NV8'],[[4059,4095],'disallowed'],[[4096,4129],'valid'],[[4130,4130],'valid'],[[4131,4135],'valid'],[[4136,4136],'valid'],[[4137,4138],'valid'],[[4139,4139],'valid'],[[4140,4146],'valid'],[[4147,4149],'valid'],[[4150,4153],'valid'],[[4154,4159],'valid'],[[4160,4169],'valid'],[[4170,4175],'valid','','NV8'],[[4176,4185],'valid'],[[4186,4249],'valid'],[[4250,4253],'valid'],[[4254,4255],'valid','','NV8'],[[4256,4293],'disallowed'],[[4294,4294],'disallowed'],[[4295,4295],'mapped','\u2D27'],[[4296,4300],'disallowed'],[[4301,4301],'mapped','\u2D2D'],[[4302,4303],'disallowed'],[[4304,4342],'valid'],[[4343,4344],'valid'],[[4345,4346],'valid'],[[4347,4347],'valid','','NV8'],[[4348,4348],'mapped','\u10DC'],[[4349,4351],'valid'],[[4352,4441],'valid','','NV8'],[[4442,4446],'valid','','NV8'],[[4447,4448],'disallowed'],[[4449,4514],'valid','','NV8'],[[4515,4519],'valid','','NV8'],[[4520,4601],'valid','','NV8'],[[4602,4607],'valid','','NV8'],[[4608,4614],'valid'],[[4615,4615],'valid'],[[4616,4678],'valid'],[[4679,4679],'valid'],[[4680,4680],'valid'],[[4681,4681],'disallowed'],[[4682,4685],'valid'],[[4686,4687],'disallowed'],[[4688,4694],'valid'],[[4695,4695],'disallowed'],[[4696,4696],'valid'],[[4697,4697],'disallowed'],[[4698,4701],'valid'],[[4702,4703],'disallowed'],[[4704,4742],'valid'],[[4743,4743],'valid'],[[4744,4744],'valid'],[[4745,4745],'disallowed'],[[4746,4749],'valid'],[[4750,4751],'disallowed'],[[4752,4782],'valid'],[[4783,4783],'valid'],[[4784,4784],'valid'],[[4785,4785],'disallowed'],[[4786,4789],'valid'],[[4790,4791],'disallowed'],[[4792,4798],'valid'],[[4799,4799],'disallowed'],[[4800,4800],'valid'],[[4801,4801],'disallowed'],[[4802,4805],'valid'],[[4806,4807],'disallowed'],[[4808,4814],'valid'],[[4815,4815],'valid'],[[4816,4822],'valid'],[[4823,4823],'disallowed'],[[4824,4846],'valid'],[[4847,4847],'valid'],[[4848,4878],'valid'],[[4879,4879],'valid'],[[4880,4880],'valid'],[[4881,4881],'disallowed'],[[4882,4885],'valid'],[[4886,4887],'disallowed'],[[4888,4894],'valid'],[[4895,4895],'valid'],[[4896,4934],'valid'],[[4935,4935],'valid'],[[4936,4954],'valid'],[[4955,4956],'disallowed'],[[4957,4958],'valid'],[[4959,4959],'valid'],[[4960,4960],'valid','','NV8'],[[4961,4988],'valid','','NV8'],[[4989,4991],'disallowed'],[[4992,5007],'valid'],[[5008,5017],'valid','','NV8'],[[5018,5023],'disallowed'],[[5024,5108],'valid'],[[5109,5109],'valid'],[[5110,5111],'disallowed'],[[5112,5112],'mapped','\u13F0'],[[5113,5113],'mapped','\u13F1'],[[5114,5114],'mapped','\u13F2'],[[5115,5115],'mapped','\u13F3'],[[5116,5116],'mapped','\u13F4'],[[5117,5117],'mapped','\u13F5'],[[5118,5119],'disallowed'],[[5120,5120],'valid','','NV8'],[[5121,5740],'valid'],[[5741,5742],'valid','','NV8'],[[5743,5750],'valid'],[[5751,5759],'valid'],[[5760,5760],'disallowed'],[[5761,5786],'valid'],[[5787,5788],'valid','','NV8'],[[5789,5791],'disallowed'],[[5792,5866],'valid'],[[5867,5872],'valid','','NV8'],[[5873,5880],'valid'],[[5881,5887],'disallowed'],[[5888,5900],'valid'],[[5901,5901],'disallowed'],[[5902,5908],'valid'],[[5909,5919],'disallowed'],[[5920,5940],'valid'],[[5941,5942],'valid','','NV8'],[[5943,5951],'disallowed'],[[5952,5971],'valid'],[[5972,5983],'disallowed'],[[5984,5996],'valid'],[[5997,5997],'disallowed'],[[5998,6000],'valid'],[[6001,6001],'disallowed'],[[6002,6003],'valid'],[[6004,6015],'disallowed'],[[6016,6067],'valid'],[[6068,6069],'disallowed'],[[6070,6099],'valid'],[[6100,6102],'valid','','NV8'],[[6103,6103],'valid'],[[6104,6107],'valid','','NV8'],[[6108,6108],'valid'],[[6109,6109],'valid'],[[6110,6111],'disallowed'],[[6112,6121],'valid'],[[6122,6127],'disallowed'],[[6128,6137],'valid','','NV8'],[[6138,6143],'disallowed'],[[6144,6149],'valid','','NV8'],[[6150,6150],'disallowed'],[[6151,6154],'valid','','NV8'],[[6155,6157],'ignored'],[[6158,6158],'disallowed'],[[6159,6159],'disallowed'],[[6160,6169],'valid'],[[6170,6175],'disallowed'],[[6176,6263],'valid'],[[6264,6271],'disallowed'],[[6272,6313],'valid'],[[6314,6314],'valid'],[[6315,6319],'disallowed'],[[6320,6389],'valid'],[[6390,6399],'disallowed'],[[6400,6428],'valid'],[[6429,6430],'valid'],[[6431,6431],'disallowed'],[[6432,6443],'valid'],[[6444,6447],'disallowed'],[[6448,6459],'valid'],[[6460,6463],'disallowed'],[[6464,6464],'valid','','NV8'],[[6465,6467],'disallowed'],[[6468,6469],'valid','','NV8'],[[6470,6509],'valid'],[[6510,6511],'disallowed'],[[6512,6516],'valid'],[[6517,6527],'disallowed'],[[6528,6569],'valid'],[[6570,6571],'valid'],[[6572,6575],'disallowed'],[[6576,6601],'valid'],[[6602,6607],'disallowed'],[[6608,6617],'valid'],[[6618,6618],'valid','','XV8'],[[6619,6621],'disallowed'],[[6622,6623],'valid','','NV8'],[[6624,6655],'valid','','NV8'],[[6656,6683],'valid'],[[6684,6685],'disallowed'],[[6686,6687],'valid','','NV8'],[[6688,6750],'valid'],[[6751,6751],'disallowed'],[[6752,6780],'valid'],[[6781,6782],'disallowed'],[[6783,6793],'valid'],[[6794,6799],'disallowed'],[[6800,6809],'valid'],[[6810,6815],'disallowed'],[[6816,6822],'valid','','NV8'],[[6823,6823],'valid'],[[6824,6829],'valid','','NV8'],[[6830,6831],'disallowed'],[[6832,6845],'valid'],[[6846,6846],'valid','','NV8'],[[6847,6911],'disallowed'],[[6912,6987],'valid'],[[6988,6991],'disallowed'],[[6992,7001],'valid'],[[7002,7018],'valid','','NV8'],[[7019,7027],'valid'],[[7028,7036],'valid','','NV8'],[[7037,7039],'disallowed'],[[7040,7082],'valid'],[[7083,7085],'valid'],[[7086,7097],'valid'],[[7098,7103],'valid'],[[7104,7155],'valid'],[[7156,7163],'disallowed'],[[7164,7167],'valid','','NV8'],[[7168,7223],'valid'],[[7224,7226],'disallowed'],[[7227,7231],'valid','','NV8'],[[7232,7241],'valid'],[[7242,7244],'disallowed'],[[7245,7293],'valid'],[[7294,7295],'valid','','NV8'],[[7296,7296],'mapped','\u0432'],[[7297,7297],'mapped','\u0434'],[[7298,7298],'mapped','\u043E'],[[7299,7299],'mapped','\u0441'],[[7300,7301],'mapped','\u0442'],[[7302,7302],'mapped','\u044A'],[[7303,7303],'mapped','\u0463'],[[7304,7304],'mapped','\uA64B'],[[7305,7359],'disallowed'],[[7360,7367],'valid','','NV8'],[[7368,7375],'disallowed'],[[7376,7378],'valid'],[[7379,7379],'valid','','NV8'],[[7380,7410],'valid'],[[7411,7414],'valid'],[[7415,7415],'valid'],[[7416,7417],'valid'],[[7418,7423],'disallowed'],[[7424,7467],'valid'],[[7468,7468],'mapped','a'],[[7469,7469],'mapped','\xE6'],[[7470,7470],'mapped','b'],[[7471,7471],'valid'],[[7472,7472],'mapped','d'],[[7473,7473],'mapped','e'],[[7474,7474],'mapped','\u01DD'],[[7475,7475],'mapped','g'],[[7476,7476],'mapped','h'],[[7477,7477],'mapped','i'],[[7478,7478],'mapped','j'],[[7479,7479],'mapped','k'],[[7480,7480],'mapped','l'],[[7481,7481],'mapped','m'],[[7482,7482],'mapped','n'],[[7483,7483],'valid'],[[7484,7484],'mapped','o'],[[7485,7485],'mapped','\u0223'],[[7486,7486],'mapped','p'],[[7487,7487],'mapped','r'],[[7488,7488],'mapped','t'],[[7489,7489],'mapped','u'],[[7490,7490],'mapped','w'],[[7491,7491],'mapped','a'],[[7492,7492],'mapped','\u0250'],[[7493,7493],'mapped','\u0251'],[[7494,7494],'mapped','\u1D02'],[[7495,7495],'mapped','b'],[[7496,7496],'mapped','d'],[[7497,7497],'mapped','e'],[[7498,7498],'mapped','\u0259'],[[7499,7499],'mapped','\u025B'],[[7500,7500],'mapped','\u025C'],[[7501,7501],'mapped','g'],[[7502,7502],'valid'],[[7503,7503],'mapped','k'],[[7504,7504],'mapped','m'],[[7505,7505],'mapped','\u014B'],[[7506,7506],'mapped','o'],[[7507,7507],'mapped','\u0254'],[[7508,7508],'mapped','\u1D16'],[[7509,7509],'mapped','\u1D17'],[[7510,7510],'mapped','p'],[[7511,7511],'mapped','t'],[[7512,7512],'mapped','u'],[[7513,7513],'mapped','\u1D1D'],[[7514,7514],'mapped','\u026F'],[[7515,7515],'mapped','v'],[[7516,7516],'mapped','\u1D25'],[[7517,7517],'mapped','\u03B2'],[[7518,7518],'mapped','\u03B3'],[[7519,7519],'mapped','\u03B4'],[[7520,7520],'mapped','\u03C6'],[[7521,7521],'mapped','\u03C7'],[[7522,7522],'mapped','i'],[[7523,7523],'mapped','r'],[[7524,7524],'mapped','u'],[[7525,7525],'mapped','v'],[[7526,7526],'mapped','\u03B2'],[[7527,7527],'mapped','\u03B3'],[[7528,7528],'mapped','\u03C1'],[[7529,7529],'mapped','\u03C6'],[[7530,7530],'mapped','\u03C7'],[[7531,7531],'valid'],[[7532,7543],'valid'],[[7544,7544],'mapped','\u043D'],[[7545,7578],'valid'],[[7579,7579],'mapped','\u0252'],[[7580,7580],'mapped','c'],[[7581,7581],'mapped','\u0255'],[[7582,7582],'mapped','\xF0'],[[7583,7583],'mapped','\u025C'],[[7584,7584],'mapped','f'],[[7585,7585],'mapped','\u025F'],[[7586,7586],'mapped','\u0261'],[[7587,7587],'mapped','\u0265'],[[7588,7588],'mapped','\u0268'],[[7589,7589],'mapped','\u0269'],[[7590,7590],'mapped','\u026A'],[[7591,7591],'mapped','\u1D7B'],[[7592,7592],'mapped','\u029D'],[[7593,7593],'mapped','\u026D'],[[7594,7594],'mapped','\u1D85'],[[7595,7595],'mapped','\u029F'],[[7596,7596],'mapped','\u0271'],[[7597,7597],'mapped','\u0270'],[[7598,7598],'mapped','\u0272'],[[7599,7599],'mapped','\u0273'],[[7600,7600],'mapped','\u0274'],[[7601,7601],'mapped','\u0275'],[[7602,7602],'mapped','\u0278'],[[7603,7603],'mapped','\u0282'],[[7604,7604],'mapped','\u0283'],[[7605,7605],'mapped','\u01AB'],[[7606,7606],'mapped','\u0289'],[[7607,7607],'mapped','\u028A'],[[7608,7608],'mapped','\u1D1C'],[[7609,7609],'mapped','\u028B'],[[7610,7610],'mapped','\u028C'],[[7611,7611],'mapped','z'],[[7612,7612],'mapped','\u0290'],[[7613,7613],'mapped','\u0291'],[[7614,7614],'mapped','\u0292'],[[7615,7615],'mapped','\u03B8'],[[7616,7619],'valid'],[[7620,7626],'valid'],[[7627,7654],'valid'],[[7655,7669],'valid'],[[7670,7673],'valid'],[[7674,7674],'disallowed'],[[7675,7675],'valid'],[[7676,7676],'valid'],[[7677,7677],'valid'],[[7678,7679],'valid'],[[7680,7680],'mapped','\u1E01'],[[7681,7681],'valid'],[[7682,7682],'mapped','\u1E03'],[[7683,7683],'valid'],[[7684,7684],'mapped','\u1E05'],[[7685,7685],'valid'],[[7686,7686],'mapped','\u1E07'],[[7687,7687],'valid'],[[7688,7688],'mapped','\u1E09'],[[7689,7689],'valid'],[[7690,7690],'mapped','\u1E0B'],[[7691,7691],'valid'],[[7692,7692],'mapped','\u1E0D'],[[7693,7693],'valid'],[[7694,7694],'mapped','\u1E0F'],[[7695,7695],'valid'],[[7696,7696],'mapped','\u1E11'],[[7697,7697],'valid'],[[7698,7698],'mapped','\u1E13'],[[7699,7699],'valid'],[[7700,7700],'mapped','\u1E15'],[[7701,7701],'valid'],[[7702,7702],'mapped','\u1E17'],[[7703,7703],'valid'],[[7704,7704],'mapped','\u1E19'],[[7705,7705],'valid'],[[7706,7706],'mapped','\u1E1B'],[[7707,7707],'valid'],[[7708,7708],'mapped','\u1E1D'],[[7709,7709],'valid'],[[7710,7710],'mapped','\u1E1F'],[[7711,7711],'valid'],[[7712,7712],'mapped','\u1E21'],[[7713,7713],'valid'],[[7714,7714],'mapped','\u1E23'],[[7715,7715],'valid'],[[7716,7716],'mapped','\u1E25'],[[7717,7717],'valid'],[[7718,7718],'mapped','\u1E27'],[[7719,7719],'valid'],[[7720,7720],'mapped','\u1E29'],[[7721,7721],'valid'],[[7722,7722],'mapped','\u1E2B'],[[7723,7723],'valid'],[[7724,7724],'mapped','\u1E2D'],[[7725,7725],'valid'],[[7726,7726],'mapped','\u1E2F'],[[7727,7727],'valid'],[[7728,7728],'mapped','\u1E31'],[[7729,7729],'valid'],[[7730,7730],'mapped','\u1E33'],[[7731,7731],'valid'],[[7732,7732],'mapped','\u1E35'],[[7733,7733],'valid'],[[7734,7734],'mapped','\u1E37'],[[7735,7735],'valid'],[[7736,7736],'mapped','\u1E39'],[[7737,7737],'valid'],[[7738,7738],'mapped','\u1E3B'],[[7739,7739],'valid'],[[7740,7740],'mapped','\u1E3D'],[[7741,7741],'valid'],[[7742,7742],'mapped','\u1E3F'],[[7743,7743],'valid'],[[7744,7744],'mapped','\u1E41'],[[7745,7745],'valid'],[[7746,7746],'mapped','\u1E43'],[[7747,7747],'valid'],[[7748,7748],'mapped','\u1E45'],[[7749,7749],'valid'],[[7750,7750],'mapped','\u1E47'],[[7751,7751],'valid'],[[7752,7752],'mapped','\u1E49'],[[7753,7753],'valid'],[[7754,7754],'mapped','\u1E4B'],[[7755,7755],'valid'],[[7756,7756],'mapped','\u1E4D'],[[7757,7757],'valid'],[[7758,7758],'mapped','\u1E4F'],[[7759,7759],'valid'],[[7760,7760],'mapped','\u1E51'],[[7761,7761],'valid'],[[7762,7762],'mapped','\u1E53'],[[7763,7763],'valid'],[[7764,7764],'mapped','\u1E55'],[[7765,7765],'valid'],[[7766,7766],'mapped','\u1E57'],[[7767,7767],'valid'],[[7768,7768],'mapped','\u1E59'],[[7769,7769],'valid'],[[7770,7770],'mapped','\u1E5B'],[[7771,7771],'valid'],[[7772,7772],'mapped','\u1E5D'],[[7773,7773],'valid'],[[7774,7774],'mapped','\u1E5F'],[[7775,7775],'valid'],[[7776,7776],'mapped','\u1E61'],[[7777,7777],'valid'],[[7778,7778],'mapped','\u1E63'],[[7779,7779],'valid'],[[7780,7780],'mapped','\u1E65'],[[7781,7781],'valid'],[[7782,7782],'mapped','\u1E67'],[[7783,7783],'valid'],[[7784,7784],'mapped','\u1E69'],[[7785,7785],'valid'],[[7786,7786],'mapped','\u1E6B'],[[7787,7787],'valid'],[[7788,7788],'mapped','\u1E6D'],[[7789,7789],'valid'],[[7790,7790],'mapped','\u1E6F'],[[7791,7791],'valid'],[[7792,7792],'mapped','\u1E71'],[[7793,7793],'valid'],[[7794,7794],'mapped','\u1E73'],[[7795,7795],'valid'],[[7796,7796],'mapped','\u1E75'],[[7797,7797],'valid'],[[7798,7798],'mapped','\u1E77'],[[7799,7799],'valid'],[[7800,7800],'mapped','\u1E79'],[[7801,7801],'valid'],[[7802,7802],'mapped','\u1E7B'],[[7803,7803],'valid'],[[7804,7804],'mapped','\u1E7D'],[[7805,7805],'valid'],[[7806,7806],'mapped','\u1E7F'],[[7807,7807],'valid'],[[7808,7808],'mapped','\u1E81'],[[7809,7809],'valid'],[[7810,7810],'mapped','\u1E83'],[[7811,7811],'valid'],[[7812,7812],'mapped','\u1E85'],[[7813,7813],'valid'],[[7814,7814],'mapped','\u1E87'],[[7815,7815],'valid'],[[7816,7816],'mapped','\u1E89'],[[7817,7817],'valid'],[[7818,7818],'mapped','\u1E8B'],[[7819,7819],'valid'],[[7820,7820],'mapped','\u1E8D'],[[7821,7821],'valid'],[[7822,7822],'mapped','\u1E8F'],[[7823,7823],'valid'],[[7824,7824],'mapped','\u1E91'],[[7825,7825],'valid'],[[7826,7826],'mapped','\u1E93'],[[7827,7827],'valid'],[[7828,7828],'mapped','\u1E95'],[[7829,7833],'valid'],[[7834,7834],'mapped','a\u02BE'],[[7835,7835],'mapped','\u1E61'],[[7836,7837],'valid'],[[7838,7838],'mapped','ss'],[[7839,7839],'valid'],[[7840,7840],'mapped','\u1EA1'],[[7841,7841],'valid'],[[7842,7842],'mapped','\u1EA3'],[[7843,7843],'valid'],[[7844,7844],'mapped','\u1EA5'],[[7845,7845],'valid'],[[7846,7846],'mapped','\u1EA7'],[[7847,7847],'valid'],[[7848,7848],'mapped','\u1EA9'],[[7849,7849],'valid'],[[7850,7850],'mapped','\u1EAB'],[[7851,7851],'valid'],[[7852,7852],'mapped','\u1EAD'],[[7853,7853],'valid'],[[7854,7854],'mapped','\u1EAF'],[[7855,7855],'valid'],[[7856,7856],'mapped','\u1EB1'],[[7857,7857],'valid'],[[7858,7858],'mapped','\u1EB3'],[[7859,7859],'valid'],[[7860,7860],'mapped','\u1EB5'],[[7861,7861],'valid'],[[7862,7862],'mapped','\u1EB7'],[[7863,7863],'valid'],[[7864,7864],'mapped','\u1EB9'],[[7865,7865],'valid'],[[7866,7866],'mapped','\u1EBB'],[[7867,7867],'valid'],[[7868,7868],'mapped','\u1EBD'],[[7869,7869],'valid'],[[7870,7870],'mapped','\u1EBF'],[[7871,7871],'valid'],[[7872,7872],'mapped','\u1EC1'],[[7873,7873],'valid'],[[7874,7874],'mapped','\u1EC3'],[[7875,7875],'valid'],[[7876,7876],'mapped','\u1EC5'],[[7877,7877],'valid'],[[7878,7878],'mapped','\u1EC7'],[[7879,7879],'valid'],[[7880,7880],'mapped','\u1EC9'],[[7881,7881],'valid'],[[7882,7882],'mapped','\u1ECB'],[[7883,7883],'valid'],[[7884,7884],'mapped','\u1ECD'],[[7885,7885],'valid'],[[7886,7886],'mapped','\u1ECF'],[[7887,7887],'valid'],[[7888,7888],'mapped','\u1ED1'],[[7889,7889],'valid'],[[7890,7890],'mapped','\u1ED3'],[[7891,7891],'valid'],[[7892,7892],'mapped','\u1ED5'],[[7893,7893],'valid'],[[7894,7894],'mapped','\u1ED7'],[[7895,7895],'valid'],[[7896,7896],'mapped','\u1ED9'],[[7897,7897],'valid'],[[7898,7898],'mapped','\u1EDB'],[[7899,7899],'valid'],[[7900,7900],'mapped','\u1EDD'],[[7901,7901],'valid'],[[7902,7902],'mapped','\u1EDF'],[[7903,7903],'valid'],[[7904,7904],'mapped','\u1EE1'],[[7905,7905],'valid'],[[7906,7906],'mapped','\u1EE3'],[[7907,7907],'valid'],[[7908,7908],'mapped','\u1EE5'],[[7909,7909],'valid'],[[7910,7910],'mapped','\u1EE7'],[[7911,7911],'valid'],[[7912,7912],'mapped','\u1EE9'],[[7913,7913],'valid'],[[7914,7914],'mapped','\u1EEB'],[[7915,7915],'valid'],[[7916,7916],'mapped','\u1EED'],[[7917,7917],'valid'],[[7918,7918],'mapped','\u1EEF'],[[7919,7919],'valid'],[[7920,7920],'mapped','\u1EF1'],[[7921,7921],'valid'],[[7922,7922],'mapped','\u1EF3'],[[7923,7923],'valid'],[[7924,7924],'mapped','\u1EF5'],[[7925,7925],'valid'],[[7926,7926],'mapped','\u1EF7'],[[7927,7927],'valid'],[[7928,7928],'mapped','\u1EF9'],[[7929,7929],'valid'],[[7930,7930],'mapped','\u1EFB'],[[7931,7931],'valid'],[[7932,7932],'mapped','\u1EFD'],[[7933,7933],'valid'],[[7934,7934],'mapped','\u1EFF'],[[7935,7935],'valid'],[[7936,7943],'valid'],[[7944,7944],'mapped','\u1F00'],[[7945,7945],'mapped','\u1F01'],[[7946,7946],'mapped','\u1F02'],[[7947,7947],'mapped','\u1F03'],[[7948,7948],'mapped','\u1F04'],[[7949,7949],'mapped','\u1F05'],[[7950,7950],'mapped','\u1F06'],[[7951,7951],'mapped','\u1F07'],[[7952,7957],'valid'],[[7958,7959],'disallowed'],[[7960,7960],'mapped','\u1F10'],[[7961,7961],'mapped','\u1F11'],[[7962,7962],'mapped','\u1F12'],[[7963,7963],'mapped','\u1F13'],[[7964,7964],'mapped','\u1F14'],[[7965,7965],'mapped','\u1F15'],[[7966,7967],'disallowed'],[[7968,7975],'valid'],[[7976,7976],'mapped','\u1F20'],[[7977,7977],'mapped','\u1F21'],[[7978,7978],'mapped','\u1F22'],[[7979,7979],'mapped','\u1F23'],[[7980,7980],'mapped','\u1F24'],[[7981,7981],'mapped','\u1F25'],[[7982,7982],'mapped','\u1F26'],[[7983,7983],'mapped','\u1F27'],[[7984,7991],'valid'],[[7992,7992],'mapped','\u1F30'],[[7993,7993],'mapped','\u1F31'],[[7994,7994],'mapped','\u1F32'],[[7995,7995],'mapped','\u1F33'],[[7996,7996],'mapped','\u1F34'],[[7997,7997],'mapped','\u1F35'],[[7998,7998],'mapped','\u1F36'],[[7999,7999],'mapped','\u1F37'],[[8000,8005],'valid'],[[8006,8007],'disallowed'],[[8008,8008],'mapped','\u1F40'],[[8009,8009],'mapped','\u1F41'],[[8010,8010],'mapped','\u1F42'],[[8011,8011],'mapped','\u1F43'],[[8012,8012],'mapped','\u1F44'],[[8013,8013],'mapped','\u1F45'],[[8014,8015],'disallowed'],[[8016,8023],'valid'],[[8024,8024],'disallowed'],[[8025,8025],'mapped','\u1F51'],[[8026,8026],'disallowed'],[[8027,8027],'mapped','\u1F53'],[[8028,8028],'disallowed'],[[8029,8029],'mapped','\u1F55'],[[8030,8030],'disallowed'],[[8031,8031],'mapped','\u1F57'],[[8032,8039],'valid'],[[8040,8040],'mapped','\u1F60'],[[8041,8041],'mapped','\u1F61'],[[8042,8042],'mapped','\u1F62'],[[8043,8043],'mapped','\u1F63'],[[8044,8044],'mapped','\u1F64'],[[8045,8045],'mapped','\u1F65'],[[8046,8046],'mapped','\u1F66'],[[8047,8047],'mapped','\u1F67'],[[8048,8048],'valid'],[[8049,8049],'mapped','\u03AC'],[[8050,8050],'valid'],[[8051,8051],'mapped','\u03AD'],[[8052,8052],'valid'],[[8053,8053],'mapped','\u03AE'],[[8054,8054],'valid'],[[8055,8055],'mapped','\u03AF'],[[8056,8056],'valid'],[[8057,8057],'mapped','\u03CC'],[[8058,8058],'valid'],[[8059,8059],'mapped','\u03CD'],[[8060,8060],'valid'],[[8061,8061],'mapped','\u03CE'],[[8062,8063],'disallowed'],[[8064,8064],'mapped','\u1F00\u03B9'],[[8065,8065],'mapped','\u1F01\u03B9'],[[8066,8066],'mapped','\u1F02\u03B9'],[[8067,8067],'mapped','\u1F03\u03B9'],[[8068,8068],'mapped','\u1F04\u03B9'],[[8069,8069],'mapped','\u1F05\u03B9'],[[8070,8070],'mapped','\u1F06\u03B9'],[[8071,8071],'mapped','\u1F07\u03B9'],[[8072,8072],'mapped','\u1F00\u03B9'],[[8073,8073],'mapped','\u1F01\u03B9'],[[8074,8074],'mapped','\u1F02\u03B9'],[[8075,8075],'mapped','\u1F03\u03B9'],[[8076,8076],'mapped','\u1F04\u03B9'],[[8077,8077],'mapped','\u1F05\u03B9'],[[8078,8078],'mapped','\u1F06\u03B9'],[[8079,8079],'mapped','\u1F07\u03B9'],[[8080,8080],'mapped','\u1F20\u03B9'],[[8081,8081],'mapped','\u1F21\u03B9'],[[8082,8082],'mapped','\u1F22\u03B9'],[[8083,8083],'mapped','\u1F23\u03B9'],[[8084,8084],'mapped','\u1F24\u03B9'],[[8085,8085],'mapped','\u1F25\u03B9'],[[8086,8086],'mapped','\u1F26\u03B9'],[[8087,8087],'mapped','\u1F27\u03B9'],[[8088,8088],'mapped','\u1F20\u03B9'],[[8089,8089],'mapped','\u1F21\u03B9'],[[8090,8090],'mapped','\u1F22\u03B9'],[[8091,8091],'mapped','\u1F23\u03B9'],[[8092,8092],'mapped','\u1F24\u03B9'],[[8093,8093],'mapped','\u1F25\u03B9'],[[8094,8094],'mapped','\u1F26\u03B9'],[[8095,8095],'mapped','\u1F27\u03B9'],[[8096,8096],'mapped','\u1F60\u03B9'],[[8097,8097],'mapped','\u1F61\u03B9'],[[8098,8098],'mapped','\u1F62\u03B9'],[[8099,8099],'mapped','\u1F63\u03B9'],[[8100,8100],'mapped','\u1F64\u03B9'],[[8101,8101],'mapped','\u1F65\u03B9'],[[8102,8102],'mapped','\u1F66\u03B9'],[[8103,8103],'mapped','\u1F67\u03B9'],[[8104,8104],'mapped','\u1F60\u03B9'],[[8105,8105],'mapped','\u1F61\u03B9'],[[8106,8106],'mapped','\u1F62\u03B9'],[[8107,8107],'mapped','\u1F63\u03B9'],[[8108,8108],'mapped','\u1F64\u03B9'],[[8109,8109],'mapped','\u1F65\u03B9'],[[8110,8110],'mapped','\u1F66\u03B9'],[[8111,8111],'mapped','\u1F67\u03B9'],[[8112,8113],'valid'],[[8114,8114],'mapped','\u1F70\u03B9'],[[8115,8115],'mapped','\u03B1\u03B9'],[[8116,8116],'mapped','\u03AC\u03B9'],[[8117,8117],'disallowed'],[[8118,8118],'valid'],[[8119,8119],'mapped','\u1FB6\u03B9'],[[8120,8120],'mapped','\u1FB0'],[[8121,8121],'mapped','\u1FB1'],[[8122,8122],'mapped','\u1F70'],[[8123,8123],'mapped','\u03AC'],[[8124,8124],'mapped','\u03B1\u03B9'],[[8125,8125],'disallowed_STD3_mapped',' \u0313'],[[8126,8126],'mapped','\u03B9'],[[8127,8127],'disallowed_STD3_mapped',' \u0313'],[[8128,8128],'disallowed_STD3_mapped',' \u0342'],[[8129,8129],'disallowed_STD3_mapped',' \u0308\u0342'],[[8130,8130],'mapped','\u1F74\u03B9'],[[8131,8131],'mapped','\u03B7\u03B9'],[[8132,8132],'mapped','\u03AE\u03B9'],[[8133,8133],'disallowed'],[[8134,8134],'valid'],[[8135,8135],'mapped','\u1FC6\u03B9'],[[8136,8136],'mapped','\u1F72'],[[8137,8137],'mapped','\u03AD'],[[8138,8138],'mapped','\u1F74'],[[8139,8139],'mapped','\u03AE'],[[8140,8140],'mapped','\u03B7\u03B9'],[[8141,8141],'disallowed_STD3_mapped',' \u0313\u0300'],[[8142,8142],'disallowed_STD3_mapped',' \u0313\u0301'],[[8143,8143],'disallowed_STD3_mapped',' \u0313\u0342'],[[8144,8146],'valid'],[[8147,8147],'mapped','\u0390'],[[8148,8149],'disallowed'],[[8150,8151],'valid'],[[8152,8152],'mapped','\u1FD0'],[[8153,8153],'mapped','\u1FD1'],[[8154,8154],'mapped','\u1F76'],[[8155,8155],'mapped','\u03AF'],[[8156,8156],'disallowed'],[[8157,8157],'disallowed_STD3_mapped',' \u0314\u0300'],[[8158,8158],'disallowed_STD3_mapped',' \u0314\u0301'],[[8159,8159],'disallowed_STD3_mapped',' \u0314\u0342'],[[8160,8162],'valid'],[[8163,8163],'mapped','\u03B0'],[[8164,8167],'valid'],[[8168,8168],'mapped','\u1FE0'],[[8169,8169],'mapped','\u1FE1'],[[8170,8170],'mapped','\u1F7A'],[[8171,8171],'mapped','\u03CD'],[[8172,8172],'mapped','\u1FE5'],[[8173,8173],'disallowed_STD3_mapped',' \u0308\u0300'],[[8174,8174],'disallowed_STD3_mapped',' \u0308\u0301'],[[8175,8175],'disallowed_STD3_mapped','`'],[[8176,8177],'disallowed'],[[8178,8178],'mapped','\u1F7C\u03B9'],[[8179,8179],'mapped','\u03C9\u03B9'],[[8180,8180],'mapped','\u03CE\u03B9'],[[8181,8181],'disallowed'],[[8182,8182],'valid'],[[8183,8183],'mapped','\u1FF6\u03B9'],[[8184,8184],'mapped','\u1F78'],[[8185,8185],'mapped','\u03CC'],[[8186,8186],'mapped','\u1F7C'],[[8187,8187],'mapped','\u03CE'],[[8188,8188],'mapped','\u03C9\u03B9'],[[8189,8189],'disallowed_STD3_mapped',' \u0301'],[[8190,8190],'disallowed_STD3_mapped',' \u0314'],[[8191,8191],'disallowed'],[[8192,8202],'disallowed_STD3_mapped',' '],[[8203,8203],'ignored'],[[8204,8205],'deviation',''],[[8206,8207],'disallowed'],[[8208,8208],'valid','','NV8'],[[8209,8209],'mapped','\u2010'],[[8210,8214],'valid','','NV8'],[[8215,8215],'disallowed_STD3_mapped',' \u0333'],[[8216,8227],'valid','','NV8'],[[8228,8230],'disallowed'],[[8231,8231],'valid','','NV8'],[[8232,8238],'disallowed'],[[8239,8239],'disallowed_STD3_mapped',' '],[[8240,8242],'valid','','NV8'],[[8243,8243],'mapped','\u2032\u2032'],[[8244,8244],'mapped','\u2032\u2032\u2032'],[[8245,8245],'valid','','NV8'],[[8246,8246],'mapped','\u2035\u2035'],[[8247,8247],'mapped','\u2035\u2035\u2035'],[[8248,8251],'valid','','NV8'],[[8252,8252],'disallowed_STD3_mapped','!!'],[[8253,8253],'valid','','NV8'],[[8254,8254],'disallowed_STD3_mapped',' \u0305'],[[8255,8262],'valid','','NV8'],[[8263,8263],'disallowed_STD3_mapped','??'],[[8264,8264],'disallowed_STD3_mapped','?!'],[[8265,8265],'disallowed_STD3_mapped','!?'],[[8266,8269],'valid','','NV8'],[[8270,8274],'valid','','NV8'],[[8275,8276],'valid','','NV8'],[[8277,8278],'valid','','NV8'],[[8279,8279],'mapped','\u2032\u2032\u2032\u2032'],[[8280,8286],'valid','','NV8'],[[8287,8287],'disallowed_STD3_mapped',' '],[[8288,8288],'ignored'],[[8289,8291],'disallowed'],[[8292,8292],'ignored'],[[8293,8293],'disallowed'],[[8294,8297],'disallowed'],[[8298,8303],'disallowed'],[[8304,8304],'mapped','0'],[[8305,8305],'mapped','i'],[[8306,8307],'disallowed'],[[8308,8308],'mapped','4'],[[8309,8309],'mapped','5'],[[8310,8310],'mapped','6'],[[8311,8311],'mapped','7'],[[8312,8312],'mapped','8'],[[8313,8313],'mapped','9'],[[8314,8314],'disallowed_STD3_mapped','+'],[[8315,8315],'mapped','\u2212'],[[8316,8316],'disallowed_STD3_mapped','='],[[8317,8317],'disallowed_STD3_mapped','('],[[8318,8318],'disallowed_STD3_mapped',')'],[[8319,8319],'mapped','n'],[[8320,8320],'mapped','0'],[[8321,8321],'mapped','1'],[[8322,8322],'mapped','2'],[[8323,8323],'mapped','3'],[[8324,8324],'mapped','4'],[[8325,8325],'mapped','5'],[[8326,8326],'mapped','6'],[[8327,8327],'mapped','7'],[[8328,8328],'mapped','8'],[[8329,8329],'mapped','9'],[[8330,8330],'disallowed_STD3_mapped','+'],[[8331,8331],'mapped','\u2212'],[[8332,8332],'disallowed_STD3_mapped','='],[[8333,8333],'disallowed_STD3_mapped','('],[[8334,8334],'disallowed_STD3_mapped',')'],[[8335,8335],'disallowed'],[[8336,8336],'mapped','a'],[[8337,8337],'mapped','e'],[[8338,8338],'mapped','o'],[[8339,8339],'mapped','x'],[[8340,8340],'mapped','\u0259'],[[8341,8341],'mapped','h'],[[8342,8342],'mapped','k'],[[8343,8343],'mapped','l'],[[8344,8344],'mapped','m'],[[8345,8345],'mapped','n'],[[8346,8346],'mapped','p'],[[8347,8347],'mapped','s'],[[8348,8348],'mapped','t'],[[8349,8351],'disallowed'],[[8352,8359],'valid','','NV8'],[[8360,8360],'mapped','rs'],[[8361,8362],'valid','','NV8'],[[8363,8363],'valid','','NV8'],[[8364,8364],'valid','','NV8'],[[8365,8367],'valid','','NV8'],[[8368,8369],'valid','','NV8'],[[8370,8373],'valid','','NV8'],[[8374,8376],'valid','','NV8'],[[8377,8377],'valid','','NV8'],[[8378,8378],'valid','','NV8'],[[8379,8381],'valid','','NV8'],[[8382,8382],'valid','','NV8'],[[8383,8383],'valid','','NV8'],[[8384,8399],'disallowed'],[[8400,8417],'valid','','NV8'],[[8418,8419],'valid','','NV8'],[[8420,8426],'valid','','NV8'],[[8427,8427],'valid','','NV8'],[[8428,8431],'valid','','NV8'],[[8432,8432],'valid','','NV8'],[[8433,8447],'disallowed'],[[8448,8448],'disallowed_STD3_mapped','a/c'],[[8449,8449],'disallowed_STD3_mapped','a/s'],[[8450,8450],'mapped','c'],[[8451,8451],'mapped','\xB0c'],[[8452,8452],'valid','','NV8'],[[8453,8453],'disallowed_STD3_mapped','c/o'],[[8454,8454],'disallowed_STD3_mapped','c/u'],[[8455,8455],'mapped','\u025B'],[[8456,8456],'valid','','NV8'],[[8457,8457],'mapped','\xB0f'],[[8458,8458],'mapped','g'],[[8459,8462],'mapped','h'],[[8463,8463],'mapped','\u0127'],[[8464,8465],'mapped','i'],[[8466,8467],'mapped','l'],[[8468,8468],'valid','','NV8'],[[8469,8469],'mapped','n'],[[8470,8470],'mapped','no'],[[8471,8472],'valid','','NV8'],[[8473,8473],'mapped','p'],[[8474,8474],'mapped','q'],[[8475,8477],'mapped','r'],[[8478,8479],'valid','','NV8'],[[8480,8480],'mapped','sm'],[[8481,8481],'mapped','tel'],[[8482,8482],'mapped','tm'],[[8483,8483],'valid','','NV8'],[[8484,8484],'mapped','z'],[[8485,8485],'valid','','NV8'],[[8486,8486],'mapped','\u03C9'],[[8487,8487],'valid','','NV8'],[[8488,8488],'mapped','z'],[[8489,8489],'valid','','NV8'],[[8490,8490],'mapped','k'],[[8491,8491],'mapped','\xE5'],[[8492,8492],'mapped','b'],[[8493,8493],'mapped','c'],[[8494,8494],'valid','','NV8'],[[8495,8496],'mapped','e'],[[8497,8497],'mapped','f'],[[8498,8498],'disallowed'],[[8499,8499],'mapped','m'],[[8500,8500],'mapped','o'],[[8501,8501],'mapped','\u05D0'],[[8502,8502],'mapped','\u05D1'],[[8503,8503],'mapped','\u05D2'],[[8504,8504],'mapped','\u05D3'],[[8505,8505],'mapped','i'],[[8506,8506],'valid','','NV8'],[[8507,8507],'mapped','fax'],[[8508,8508],'mapped','\u03C0'],[[8509,8510],'mapped','\u03B3'],[[8511,8511],'mapped','\u03C0'],[[8512,8512],'mapped','\u2211'],[[8513,8516],'valid','','NV8'],[[8517,8518],'mapped','d'],[[8519,8519],'mapped','e'],[[8520,8520],'mapped','i'],[[8521,8521],'mapped','j'],[[8522,8523],'valid','','NV8'],[[8524,8524],'valid','','NV8'],[[8525,8525],'valid','','NV8'],[[8526,8526],'valid'],[[8527,8527],'valid','','NV8'],[[8528,8528],'mapped','1\u20447'],[[8529,8529],'mapped','1\u20449'],[[8530,8530],'mapped','1\u204410'],[[8531,8531],'mapped','1\u20443'],[[8532,8532],'mapped','2\u20443'],[[8533,8533],'mapped','1\u20445'],[[8534,8534],'mapped','2\u20445'],[[8535,8535],'mapped','3\u20445'],[[8536,8536],'mapped','4\u20445'],[[8537,8537],'mapped','1\u20446'],[[8538,8538],'mapped','5\u20446'],[[8539,8539],'mapped','1\u20448'],[[8540,8540],'mapped','3\u20448'],[[8541,8541],'mapped','5\u20448'],[[8542,8542],'mapped','7\u20448'],[[8543,8543],'mapped','1\u2044'],[[8544,8544],'mapped','i'],[[8545,8545],'mapped','ii'],[[8546,8546],'mapped','iii'],[[8547,8547],'mapped','iv'],[[8548,8548],'mapped','v'],[[8549,8549],'mapped','vi'],[[8550,8550],'mapped','vii'],[[8551,8551],'mapped','viii'],[[8552,8552],'mapped','ix'],[[8553,8553],'mapped','x'],[[8554,8554],'mapped','xi'],[[8555,8555],'mapped','xii'],[[8556,8556],'mapped','l'],[[8557,8557],'mapped','c'],[[8558,8558],'mapped','d'],[[8559,8559],'mapped','m'],[[8560,8560],'mapped','i'],[[8561,8561],'mapped','ii'],[[8562,8562],'mapped','iii'],[[8563,8563],'mapped','iv'],[[8564,8564],'mapped','v'],[[8565,8565],'mapped','vi'],[[8566,8566],'mapped','vii'],[[8567,8567],'mapped','viii'],[[8568,8568],'mapped','ix'],[[8569,8569],'mapped','x'],[[8570,8570],'mapped','xi'],[[8571,8571],'mapped','xii'],[[8572,8572],'mapped','l'],[[8573,8573],'mapped','c'],[[8574,8574],'mapped','d'],[[8575,8575],'mapped','m'],[[8576,8578],'valid','','NV8'],[[8579,8579],'disallowed'],[[8580,8580],'valid'],[[8581,8584],'valid','','NV8'],[[8585,8585],'mapped','0\u20443'],[[8586,8587],'valid','','NV8'],[[8588,8591],'disallowed'],[[8592,8682],'valid','','NV8'],[[8683,8691],'valid','','NV8'],[[8692,8703],'valid','','NV8'],[[8704,8747],'valid','','NV8'],[[8748,8748],'mapped','\u222B\u222B'],[[8749,8749],'mapped','\u222B\u222B\u222B'],[[8750,8750],'valid','','NV8'],[[8751,8751],'mapped','\u222E\u222E'],[[8752,8752],'mapped','\u222E\u222E\u222E'],[[8753,8799],'valid','','NV8'],[[8800,8800],'disallowed_STD3_valid'],[[8801,8813],'valid','','NV8'],[[8814,8815],'disallowed_STD3_valid'],[[8816,8945],'valid','','NV8'],[[8946,8959],'valid','','NV8'],[[8960,8960],'valid','','NV8'],[[8961,8961],'valid','','NV8'],[[8962,9000],'valid','','NV8'],[[9001,9001],'mapped','\u3008'],[[9002,9002],'mapped','\u3009'],[[9003,9082],'valid','','NV8'],[[9083,9083],'valid','','NV8'],[[9084,9084],'valid','','NV8'],[[9085,9114],'valid','','NV8'],[[9115,9166],'valid','','NV8'],[[9167,9168],'valid','','NV8'],[[9169,9179],'valid','','NV8'],[[9180,9191],'valid','','NV8'],[[9192,9192],'valid','','NV8'],[[9193,9203],'valid','','NV8'],[[9204,9210],'valid','','NV8'],[[9211,9214],'valid','','NV8'],[[9215,9215],'valid','','NV8'],[[9216,9252],'valid','','NV8'],[[9253,9254],'valid','','NV8'],[[9255,9279],'disallowed'],[[9280,9290],'valid','','NV8'],[[9291,9311],'disallowed'],[[9312,9312],'mapped','1'],[[9313,9313],'mapped','2'],[[9314,9314],'mapped','3'],[[9315,9315],'mapped','4'],[[9316,9316],'mapped','5'],[[9317,9317],'mapped','6'],[[9318,9318],'mapped','7'],[[9319,9319],'mapped','8'],[[9320,9320],'mapped','9'],[[9321,9321],'mapped','10'],[[9322,9322],'mapped','11'],[[9323,9323],'mapped','12'],[[9324,9324],'mapped','13'],[[9325,9325],'mapped','14'],[[9326,9326],'mapped','15'],[[9327,9327],'mapped','16'],[[9328,9328],'mapped','17'],[[9329,9329],'mapped','18'],[[9330,9330],'mapped','19'],[[9331,9331],'mapped','20'],[[9332,9332],'disallowed_STD3_mapped','(1)'],[[9333,9333],'disallowed_STD3_mapped','(2)'],[[9334,9334],'disallowed_STD3_mapped','(3)'],[[9335,9335],'disallowed_STD3_mapped','(4)'],[[9336,9336],'disallowed_STD3_mapped','(5)'],[[9337,9337],'disallowed_STD3_mapped','(6)'],[[9338,9338],'disallowed_STD3_mapped','(7)'],[[9339,9339],'disallowed_STD3_mapped','(8)'],[[9340,9340],'disallowed_STD3_mapped','(9)'],[[9341,9341],'disallowed_STD3_mapped','(10)'],[[9342,9342],'disallowed_STD3_mapped','(11)'],[[9343,9343],'disallowed_STD3_mapped','(12)'],[[9344,9344],'disallowed_STD3_mapped','(13)'],[[9345,9345],'disallowed_STD3_mapped','(14)'],[[9346,9346],'disallowed_STD3_mapped','(15)'],[[9347,9347],'disallowed_STD3_mapped','(16)'],[[9348,9348],'disallowed_STD3_mapped','(17)'],[[9349,9349],'disallowed_STD3_mapped','(18)'],[[9350,9350],'disallowed_STD3_mapped','(19)'],[[9351,9351],'disallowed_STD3_mapped','(20)'],[[9352,9371],'disallowed'],[[9372,9372],'disallowed_STD3_mapped','(a)'],[[9373,9373],'disallowed_STD3_mapped','(b)'],[[9374,9374],'disallowed_STD3_mapped','(c)'],[[9375,9375],'disallowed_STD3_mapped','(d)'],[[9376,9376],'disallowed_STD3_mapped','(e)'],[[9377,9377],'disallowed_STD3_mapped','(f)'],[[9378,9378],'disallowed_STD3_mapped','(g)'],[[9379,9379],'disallowed_STD3_mapped','(h)'],[[9380,9380],'disallowed_STD3_mapped','(i)'],[[9381,9381],'disallowed_STD3_mapped','(j)'],[[9382,9382],'disallowed_STD3_mapped','(k)'],[[9383,9383],'disallowed_STD3_mapped','(l)'],[[9384,9384],'disallowed_STD3_mapped','(m)'],[[9385,9385],'disallowed_STD3_mapped','(n)'],[[9386,9386],'disallowed_STD3_mapped','(o)'],[[9387,9387],'disallowed_STD3_mapped','(p)'],[[9388,9388],'disallowed_STD3_mapped','(q)'],[[9389,9389],'disallowed_STD3_mapped','(r)'],[[9390,9390],'disallowed_STD3_mapped','(s)'],[[9391,9391],'disallowed_STD3_mapped','(t)'],[[9392,9392],'disallowed_STD3_mapped','(u)'],[[9393,9393],'disallowed_STD3_mapped','(v)'],[[9394,9394],'disallowed_STD3_mapped','(w)'],[[9395,9395],'disallowed_STD3_mapped','(x)'],[[9396,9396],'disallowed_STD3_mapped','(y)'],[[9397,9397],'disallowed_STD3_mapped','(z)'],[[9398,9398],'mapped','a'],[[9399,9399],'mapped','b'],[[9400,9400],'mapped','c'],[[9401,9401],'mapped','d'],[[9402,9402],'mapped','e'],[[9403,9403],'mapped','f'],[[9404,9404],'mapped','g'],[[9405,9405],'mapped','h'],[[9406,9406],'mapped','i'],[[9407,9407],'mapped','j'],[[9408,9408],'mapped','k'],[[9409,9409],'mapped','l'],[[9410,9410],'mapped','m'],[[9411,9411],'mapped','n'],[[9412,9412],'mapped','o'],[[9413,9413],'mapped','p'],[[9414,9414],'mapped','q'],[[9415,9415],'mapped','r'],[[9416,9416],'mapped','s'],[[9417,9417],'mapped','t'],[[9418,9418],'mapped','u'],[[9419,9419],'mapped','v'],[[9420,9420],'mapped','w'],[[9421,9421],'mapped','x'],[[9422,9422],'mapped','y'],[[9423,9423],'mapped','z'],[[9424,9424],'mapped','a'],[[9425,9425],'mapped','b'],[[9426,9426],'mapped','c'],[[9427,9427],'mapped','d'],[[9428,9428],'mapped','e'],[[9429,9429],'mapped','f'],[[9430,9430],'mapped','g'],[[9431,9431],'mapped','h'],[[9432,9432],'mapped','i'],[[9433,9433],'mapped','j'],[[9434,9434],'mapped','k'],[[9435,9435],'mapped','l'],[[9436,9436],'mapped','m'],[[9437,9437],'mapped','n'],[[9438,9438],'mapped','o'],[[9439,9439],'mapped','p'],[[9440,9440],'mapped','q'],[[9441,9441],'mapped','r'],[[9442,9442],'mapped','s'],[[9443,9443],'mapped','t'],[[9444,9444],'mapped','u'],[[9445,9445],'mapped','v'],[[9446,9446],'mapped','w'],[[9447,9447],'mapped','x'],[[9448,9448],'mapped','y'],[[9449,9449],'mapped','z'],[[9450,9450],'mapped','0'],[[9451,9470],'valid','','NV8'],[[9471,9471],'valid','','NV8'],[[9472,9621],'valid','','NV8'],[[9622,9631],'valid','','NV8'],[[9632,9711],'valid','','NV8'],[[9712,9719],'valid','','NV8'],[[9720,9727],'valid','','NV8'],[[9728,9747],'valid','','NV8'],[[9748,9749],'valid','','NV8'],[[9750,9751],'valid','','NV8'],[[9752,9752],'valid','','NV8'],[[9753,9753],'valid','','NV8'],[[9754,9839],'valid','','NV8'],[[9840,9841],'valid','','NV8'],[[9842,9853],'valid','','NV8'],[[9854,9855],'valid','','NV8'],[[9856,9865],'valid','','NV8'],[[9866,9873],'valid','','NV8'],[[9874,9884],'valid','','NV8'],[[9885,9885],'valid','','NV8'],[[9886,9887],'valid','','NV8'],[[9888,9889],'valid','','NV8'],[[9890,9905],'valid','','NV8'],[[9906,9906],'valid','','NV8'],[[9907,9916],'valid','','NV8'],[[9917,9919],'valid','','NV8'],[[9920,9923],'valid','','NV8'],[[9924,9933],'valid','','NV8'],[[9934,9934],'valid','','NV8'],[[9935,9953],'valid','','NV8'],[[9954,9954],'valid','','NV8'],[[9955,9955],'valid','','NV8'],[[9956,9959],'valid','','NV8'],[[9960,9983],'valid','','NV8'],[[9984,9984],'valid','','NV8'],[[9985,9988],'valid','','NV8'],[[9989,9989],'valid','','NV8'],[[9990,9993],'valid','','NV8'],[[9994,9995],'valid','','NV8'],[[9996,10023],'valid','','NV8'],[[10024,10024],'valid','','NV8'],[[10025,10059],'valid','','NV8'],[[10060,10060],'valid','','NV8'],[[10061,10061],'valid','','NV8'],[[10062,10062],'valid','','NV8'],[[10063,10066],'valid','','NV8'],[[10067,10069],'valid','','NV8'],[[10070,10070],'valid','','NV8'],[[10071,10071],'valid','','NV8'],[[10072,10078],'valid','','NV8'],[[10079,10080],'valid','','NV8'],[[10081,10087],'valid','','NV8'],[[10088,10101],'valid','','NV8'],[[10102,10132],'valid','','NV8'],[[10133,10135],'valid','','NV8'],[[10136,10159],'valid','','NV8'],[[10160,10160],'valid','','NV8'],[[10161,10174],'valid','','NV8'],[[10175,10175],'valid','','NV8'],[[10176,10182],'valid','','NV8'],[[10183,10186],'valid','','NV8'],[[10187,10187],'valid','','NV8'],[[10188,10188],'valid','','NV8'],[[10189,10189],'valid','','NV8'],[[10190,10191],'valid','','NV8'],[[10192,10219],'valid','','NV8'],[[10220,10223],'valid','','NV8'],[[10224,10239],'valid','','NV8'],[[10240,10495],'valid','','NV8'],[[10496,10763],'valid','','NV8'],[[10764,10764],'mapped','\u222B\u222B\u222B\u222B'],[[10765,10867],'valid','','NV8'],[[10868,10868],'disallowed_STD3_mapped','::='],[[10869,10869],'disallowed_STD3_mapped','=='],[[10870,10870],'disallowed_STD3_mapped','==='],[[10871,10971],'valid','','NV8'],[[10972,10972],'mapped','\u2ADD\u0338'],[[10973,11007],'valid','','NV8'],[[11008,11021],'valid','','NV8'],[[11022,11027],'valid','','NV8'],[[11028,11034],'valid','','NV8'],[[11035,11039],'valid','','NV8'],[[11040,11043],'valid','','NV8'],[[11044,11084],'valid','','NV8'],[[11085,11087],'valid','','NV8'],[[11088,11092],'valid','','NV8'],[[11093,11097],'valid','','NV8'],[[11098,11123],'valid','','NV8'],[[11124,11125],'disallowed'],[[11126,11157],'valid','','NV8'],[[11158,11159],'disallowed'],[[11160,11193],'valid','','NV8'],[[11194,11196],'disallowed'],[[11197,11208],'valid','','NV8'],[[11209,11209],'disallowed'],[[11210,11217],'valid','','NV8'],[[11218,11218],'valid','','NV8'],[[11219,11243],'disallowed'],[[11244,11247],'valid','','NV8'],[[11248,11263],'disallowed'],[[11264,11264],'mapped','\u2C30'],[[11265,11265],'mapped','\u2C31'],[[11266,11266],'mapped','\u2C32'],[[11267,11267],'mapped','\u2C33'],[[11268,11268],'mapped','\u2C34'],[[11269,11269],'mapped','\u2C35'],[[11270,11270],'mapped','\u2C36'],[[11271,11271],'mapped','\u2C37'],[[11272,11272],'mapped','\u2C38'],[[11273,11273],'mapped','\u2C39'],[[11274,11274],'mapped','\u2C3A'],[[11275,11275],'mapped','\u2C3B'],[[11276,11276],'mapped','\u2C3C'],[[11277,11277],'mapped','\u2C3D'],[[11278,11278],'mapped','\u2C3E'],[[11279,11279],'mapped','\u2C3F'],[[11280,11280],'mapped','\u2C40'],[[11281,11281],'mapped','\u2C41'],[[11282,11282],'mapped','\u2C42'],[[11283,11283],'mapped','\u2C43'],[[11284,11284],'mapped','\u2C44'],[[11285,11285],'mapped','\u2C45'],[[11286,11286],'mapped','\u2C46'],[[11287,11287],'mapped','\u2C47'],[[11288,11288],'mapped','\u2C48'],[[11289,11289],'mapped','\u2C49'],[[11290,11290],'mapped','\u2C4A'],[[11291,11291],'mapped','\u2C4B'],[[11292,11292],'mapped','\u2C4C'],[[11293,11293],'mapped','\u2C4D'],[[11294,11294],'mapped','\u2C4E'],[[11295,11295],'mapped','\u2C4F'],[[11296,11296],'mapped','\u2C50'],[[11297,11297],'mapped','\u2C51'],[[11298,11298],'mapped','\u2C52'],[[11299,11299],'mapped','\u2C53'],[[11300,11300],'mapped','\u2C54'],[[11301,11301],'mapped','\u2C55'],[[11302,11302],'mapped','\u2C56'],[[11303,11303],'mapped','\u2C57'],[[11304,11304],'mapped','\u2C58'],[[11305,11305],'mapped','\u2C59'],[[11306,11306],'mapped','\u2C5A'],[[11307,11307],'mapped','\u2C5B'],[[11308,11308],'mapped','\u2C5C'],[[11309,11309],'mapped','\u2C5D'],[[11310,11310],'mapped','\u2C5E'],[[11311,11311],'disallowed'],[[11312,11358],'valid'],[[11359,11359],'disallowed'],[[11360,11360],'mapped','\u2C61'],[[11361,11361],'valid'],[[11362,11362],'mapped','\u026B'],[[11363,11363],'mapped','\u1D7D'],[[11364,11364],'mapped','\u027D'],[[11365,11366],'valid'],[[11367,11367],'mapped','\u2C68'],[[11368,11368],'valid'],[[11369,11369],'mapped','\u2C6A'],[[11370,11370],'valid'],[[11371,11371],'mapped','\u2C6C'],[[11372,11372],'valid'],[[11373,11373],'mapped','\u0251'],[[11374,11374],'mapped','\u0271'],[[11375,11375],'mapped','\u0250'],[[11376,11376],'mapped','\u0252'],[[11377,11377],'valid'],[[11378,11378],'mapped','\u2C73'],[[11379,11379],'valid'],[[11380,11380],'valid'],[[11381,11381],'mapped','\u2C76'],[[11382,11383],'valid'],[[11384,11387],'valid'],[[11388,11388],'mapped','j'],[[11389,11389],'mapped','v'],[[11390,11390],'mapped','\u023F'],[[11391,11391],'mapped','\u0240'],[[11392,11392],'mapped','\u2C81'],[[11393,11393],'valid'],[[11394,11394],'mapped','\u2C83'],[[11395,11395],'valid'],[[11396,11396],'mapped','\u2C85'],[[11397,11397],'valid'],[[11398,11398],'mapped','\u2C87'],[[11399,11399],'valid'],[[11400,11400],'mapped','\u2C89'],[[11401,11401],'valid'],[[11402,11402],'mapped','\u2C8B'],[[11403,11403],'valid'],[[11404,11404],'mapped','\u2C8D'],[[11405,11405],'valid'],[[11406,11406],'mapped','\u2C8F'],[[11407,11407],'valid'],[[11408,11408],'mapped','\u2C91'],[[11409,11409],'valid'],[[11410,11410],'mapped','\u2C93'],[[11411,11411],'valid'],[[11412,11412],'mapped','\u2C95'],[[11413,11413],'valid'],[[11414,11414],'mapped','\u2C97'],[[11415,11415],'valid'],[[11416,11416],'mapped','\u2C99'],[[11417,11417],'valid'],[[11418,11418],'mapped','\u2C9B'],[[11419,11419],'valid'],[[11420,11420],'mapped','\u2C9D'],[[11421,11421],'valid'],[[11422,11422],'mapped','\u2C9F'],[[11423,11423],'valid'],[[11424,11424],'mapped','\u2CA1'],[[11425,11425],'valid'],[[11426,11426],'mapped','\u2CA3'],[[11427,11427],'valid'],[[11428,11428],'mapped','\u2CA5'],[[11429,11429],'valid'],[[11430,11430],'mapped','\u2CA7'],[[11431,11431],'valid'],[[11432,11432],'mapped','\u2CA9'],[[11433,11433],'valid'],[[11434,11434],'mapped','\u2CAB'],[[11435,11435],'valid'],[[11436,11436],'mapped','\u2CAD'],[[11437,11437],'valid'],[[11438,11438],'mapped','\u2CAF'],[[11439,11439],'valid'],[[11440,11440],'mapped','\u2CB1'],[[11441,11441],'valid'],[[11442,11442],'mapped','\u2CB3'],[[11443,11443],'valid'],[[11444,11444],'mapped','\u2CB5'],[[11445,11445],'valid'],[[11446,11446],'mapped','\u2CB7'],[[11447,11447],'valid'],[[11448,11448],'mapped','\u2CB9'],[[11449,11449],'valid'],[[11450,11450],'mapped','\u2CBB'],[[11451,11451],'valid'],[[11452,11452],'mapped','\u2CBD'],[[11453,11453],'valid'],[[11454,11454],'mapped','\u2CBF'],[[11455,11455],'valid'],[[11456,11456],'mapped','\u2CC1'],[[11457,11457],'valid'],[[11458,11458],'mapped','\u2CC3'],[[11459,11459],'valid'],[[11460,11460],'mapped','\u2CC5'],[[11461,11461],'valid'],[[11462,11462],'mapped','\u2CC7'],[[11463,11463],'valid'],[[11464,11464],'mapped','\u2CC9'],[[11465,11465],'valid'],[[11466,11466],'mapped','\u2CCB'],[[11467,11467],'valid'],[[11468,11468],'mapped','\u2CCD'],[[11469,11469],'valid'],[[11470,11470],'mapped','\u2CCF'],[[11471,11471],'valid'],[[11472,11472],'mapped','\u2CD1'],[[11473,11473],'valid'],[[11474,11474],'mapped','\u2CD3'],[[11475,11475],'valid'],[[11476,11476],'mapped','\u2CD5'],[[11477,11477],'valid'],[[11478,11478],'mapped','\u2CD7'],[[11479,11479],'valid'],[[11480,11480],'mapped','\u2CD9'],[[11481,11481],'valid'],[[11482,11482],'mapped','\u2CDB'],[[11483,11483],'valid'],[[11484,11484],'mapped','\u2CDD'],[[11485,11485],'valid'],[[11486,11486],'mapped','\u2CDF'],[[11487,11487],'valid'],[[11488,11488],'mapped','\u2CE1'],[[11489,11489],'valid'],[[11490,11490],'mapped','\u2CE3'],[[11491,11492],'valid'],[[11493,11498],'valid','','NV8'],[[11499,11499],'mapped','\u2CEC'],[[11500,11500],'valid'],[[11501,11501],'mapped','\u2CEE'],[[11502,11505],'valid'],[[11506,11506],'mapped','\u2CF3'],[[11507,11507],'valid'],[[11508,11512],'disallowed'],[[11513,11519],'valid','','NV8'],[[11520,11557],'valid'],[[11558,11558],'disallowed'],[[11559,11559],'valid'],[[11560,11564],'disallowed'],[[11565,11565],'valid'],[[11566,11567],'disallowed'],[[11568,11621],'valid'],[[11622,11623],'valid'],[[11624,11630],'disallowed'],[[11631,11631],'mapped','\u2D61'],[[11632,11632],'valid','','NV8'],[[11633,11646],'disallowed'],[[11647,11647],'valid'],[[11648,11670],'valid'],[[11671,11679],'disallowed'],[[11680,11686],'valid'],[[11687,11687],'disallowed'],[[11688,11694],'valid'],[[11695,11695],'disallowed'],[[11696,11702],'valid'],[[11703,11703],'disallowed'],[[11704,11710],'valid'],[[11711,11711],'disallowed'],[[11712,11718],'valid'],[[11719,11719],'disallowed'],[[11720,11726],'valid'],[[11727,11727],'disallowed'],[[11728,11734],'valid'],[[11735,11735],'disallowed'],[[11736,11742],'valid'],[[11743,11743],'disallowed'],[[11744,11775],'valid'],[[11776,11799],'valid','','NV8'],[[11800,11803],'valid','','NV8'],[[11804,11805],'valid','','NV8'],[[11806,11822],'valid','','NV8'],[[11823,11823],'valid'],[[11824,11824],'valid','','NV8'],[[11825,11825],'valid','','NV8'],[[11826,11835],'valid','','NV8'],[[11836,11842],'valid','','NV8'],[[11843,11844],'valid','','NV8'],[[11845,11849],'valid','','NV8'],[[11850,11903],'disallowed'],[[11904,11929],'valid','','NV8'],[[11930,11930],'disallowed'],[[11931,11934],'valid','','NV8'],[[11935,11935],'mapped','\u6BCD'],[[11936,12018],'valid','','NV8'],[[12019,12019],'mapped','\u9F9F'],[[12020,12031],'disallowed'],[[12032,12032],'mapped','\u4E00'],[[12033,12033],'mapped','\u4E28'],[[12034,12034],'mapped','\u4E36'],[[12035,12035],'mapped','\u4E3F'],[[12036,12036],'mapped','\u4E59'],[[12037,12037],'mapped','\u4E85'],[[12038,12038],'mapped','\u4E8C'],[[12039,12039],'mapped','\u4EA0'],[[12040,12040],'mapped','\u4EBA'],[[12041,12041],'mapped','\u513F'],[[12042,12042],'mapped','\u5165'],[[12043,12043],'mapped','\u516B'],[[12044,12044],'mapped','\u5182'],[[12045,12045],'mapped','\u5196'],[[12046,12046],'mapped','\u51AB'],[[12047,12047],'mapped','\u51E0'],[[12048,12048],'mapped','\u51F5'],[[12049,12049],'mapped','\u5200'],[[12050,12050],'mapped','\u529B'],[[12051,12051],'mapped','\u52F9'],[[12052,12052],'mapped','\u5315'],[[12053,12053],'mapped','\u531A'],[[12054,12054],'mapped','\u5338'],[[12055,12055],'mapped','\u5341'],[[12056,12056],'mapped','\u535C'],[[12057,12057],'mapped','\u5369'],[[12058,12058],'mapped','\u5382'],[[12059,12059],'mapped','\u53B6'],[[12060,12060],'mapped','\u53C8'],[[12061,12061],'mapped','\u53E3'],[[12062,12062],'mapped','\u56D7'],[[12063,12063],'mapped','\u571F'],[[12064,12064],'mapped','\u58EB'],[[12065,12065],'mapped','\u5902'],[[12066,12066],'mapped','\u590A'],[[12067,12067],'mapped','\u5915'],[[12068,12068],'mapped','\u5927'],[[12069,12069],'mapped','\u5973'],[[12070,12070],'mapped','\u5B50'],[[12071,12071],'mapped','\u5B80'],[[12072,12072],'mapped','\u5BF8'],[[12073,12073],'mapped','\u5C0F'],[[12074,12074],'mapped','\u5C22'],[[12075,12075],'mapped','\u5C38'],[[12076,12076],'mapped','\u5C6E'],[[12077,12077],'mapped','\u5C71'],[[12078,12078],'mapped','\u5DDB'],[[12079,12079],'mapped','\u5DE5'],[[12080,12080],'mapped','\u5DF1'],[[12081,12081],'mapped','\u5DFE'],[[12082,12082],'mapped','\u5E72'],[[12083,12083],'mapped','\u5E7A'],[[12084,12084],'mapped','\u5E7F'],[[12085,12085],'mapped','\u5EF4'],[[12086,12086],'mapped','\u5EFE'],[[12087,12087],'mapped','\u5F0B'],[[12088,12088],'mapped','\u5F13'],[[12089,12089],'mapped','\u5F50'],[[12090,12090],'mapped','\u5F61'],[[12091,12091],'mapped','\u5F73'],[[12092,12092],'mapped','\u5FC3'],[[12093,12093],'mapped','\u6208'],[[12094,12094],'mapped','\u6236'],[[12095,12095],'mapped','\u624B'],[[12096,12096],'mapped','\u652F'],[[12097,12097],'mapped','\u6534'],[[12098,12098],'mapped','\u6587'],[[12099,12099],'mapped','\u6597'],[[12100,12100],'mapped','\u65A4'],[[12101,12101],'mapped','\u65B9'],[[12102,12102],'mapped','\u65E0'],[[12103,12103],'mapped','\u65E5'],[[12104,12104],'mapped','\u66F0'],[[12105,12105],'mapped','\u6708'],[[12106,12106],'mapped','\u6728'],[[12107,12107],'mapped','\u6B20'],[[12108,12108],'mapped','\u6B62'],[[12109,12109],'mapped','\u6B79'],[[12110,12110],'mapped','\u6BB3'],[[12111,12111],'mapped','\u6BCB'],[[12112,12112],'mapped','\u6BD4'],[[12113,12113],'mapped','\u6BDB'],[[12114,12114],'mapped','\u6C0F'],[[12115,12115],'mapped','\u6C14'],[[12116,12116],'mapped','\u6C34'],[[12117,12117],'mapped','\u706B'],[[12118,12118],'mapped','\u722A'],[[12119,12119],'mapped','\u7236'],[[12120,12120],'mapped','\u723B'],[[12121,12121],'mapped','\u723F'],[[12122,12122],'mapped','\u7247'],[[12123,12123],'mapped','\u7259'],[[12124,12124],'mapped','\u725B'],[[12125,12125],'mapped','\u72AC'],[[12126,12126],'mapped','\u7384'],[[12127,12127],'mapped','\u7389'],[[12128,12128],'mapped','\u74DC'],[[12129,12129],'mapped','\u74E6'],[[12130,12130],'mapped','\u7518'],[[12131,12131],'mapped','\u751F'],[[12132,12132],'mapped','\u7528'],[[12133,12133],'mapped','\u7530'],[[12134,12134],'mapped','\u758B'],[[12135,12135],'mapped','\u7592'],[[12136,12136],'mapped','\u7676'],[[12137,12137],'mapped','\u767D'],[[12138,12138],'mapped','\u76AE'],[[12139,12139],'mapped','\u76BF'],[[12140,12140],'mapped','\u76EE'],[[12141,12141],'mapped','\u77DB'],[[12142,12142],'mapped','\u77E2'],[[12143,12143],'mapped','\u77F3'],[[12144,12144],'mapped','\u793A'],[[12145,12145],'mapped','\u79B8'],[[12146,12146],'mapped','\u79BE'],[[12147,12147],'mapped','\u7A74'],[[12148,12148],'mapped','\u7ACB'],[[12149,12149],'mapped','\u7AF9'],[[12150,12150],'mapped','\u7C73'],[[12151,12151],'mapped','\u7CF8'],[[12152,12152],'mapped','\u7F36'],[[12153,12153],'mapped','\u7F51'],[[12154,12154],'mapped','\u7F8A'],[[12155,12155],'mapped','\u7FBD'],[[12156,12156],'mapped','\u8001'],[[12157,12157],'mapped','\u800C'],[[12158,12158],'mapped','\u8012'],[[12159,12159],'mapped','\u8033'],[[12160,12160],'mapped','\u807F'],[[12161,12161],'mapped','\u8089'],[[12162,12162],'mapped','\u81E3'],[[12163,12163],'mapped','\u81EA'],[[12164,12164],'mapped','\u81F3'],[[12165,12165],'mapped','\u81FC'],[[12166,12166],'mapped','\u820C'],[[12167,12167],'mapped','\u821B'],[[12168,12168],'mapped','\u821F'],[[12169,12169],'mapped','\u826E'],[[12170,12170],'mapped','\u8272'],[[12171,12171],'mapped','\u8278'],[[12172,12172],'mapped','\u864D'],[[12173,12173],'mapped','\u866B'],[[12174,12174],'mapped','\u8840'],[[12175,12175],'mapped','\u884C'],[[12176,12176],'mapped','\u8863'],[[12177,12177],'mapped','\u897E'],[[12178,12178],'mapped','\u898B'],[[12179,12179],'mapped','\u89D2'],[[12180,12180],'mapped','\u8A00'],[[12181,12181],'mapped','\u8C37'],[[12182,12182],'mapped','\u8C46'],[[12183,12183],'mapped','\u8C55'],[[12184,12184],'mapped','\u8C78'],[[12185,12185],'mapped','\u8C9D'],[[12186,12186],'mapped','\u8D64'],[[12187,12187],'mapped','\u8D70'],[[12188,12188],'mapped','\u8DB3'],[[12189,12189],'mapped','\u8EAB'],[[12190,12190],'mapped','\u8ECA'],[[12191,12191],'mapped','\u8F9B'],[[12192,12192],'mapped','\u8FB0'],[[12193,12193],'mapped','\u8FB5'],[[12194,12194],'mapped','\u9091'],[[12195,12195],'mapped','\u9149'],[[12196,12196],'mapped','\u91C6'],[[12197,12197],'mapped','\u91CC'],[[12198,12198],'mapped','\u91D1'],[[12199,12199],'mapped','\u9577'],[[12200,12200],'mapped','\u9580'],[[12201,12201],'mapped','\u961C'],[[12202,12202],'mapped','\u96B6'],[[12203,12203],'mapped','\u96B9'],[[12204,12204],'mapped','\u96E8'],[[12205,12205],'mapped','\u9751'],[[12206,12206],'mapped','\u975E'],[[12207,12207],'mapped','\u9762'],[[12208,12208],'mapped','\u9769'],[[12209,12209],'mapped','\u97CB'],[[12210,12210],'mapped','\u97ED'],[[12211,12211],'mapped','\u97F3'],[[12212,12212],'mapped','\u9801'],[[12213,12213],'mapped','\u98A8'],[[12214,12214],'mapped','\u98DB'],[[12215,12215],'mapped','\u98DF'],[[12216,12216],'mapped','\u9996'],[[12217,12217],'mapped','\u9999'],[[12218,12218],'mapped','\u99AC'],[[12219,12219],'mapped','\u9AA8'],[[12220,12220],'mapped','\u9AD8'],[[12221,12221],'mapped','\u9ADF'],[[12222,12222],'mapped','\u9B25'],[[12223,12223],'mapped','\u9B2F'],[[12224,12224],'mapped','\u9B32'],[[12225,12225],'mapped','\u9B3C'],[[12226,12226],'mapped','\u9B5A'],[[12227,12227],'mapped','\u9CE5'],[[12228,12228],'mapped','\u9E75'],[[12229,12229],'mapped','\u9E7F'],[[12230,12230],'mapped','\u9EA5'],[[12231,12231],'mapped','\u9EBB'],[[12232,12232],'mapped','\u9EC3'],[[12233,12233],'mapped','\u9ECD'],[[12234,12234],'mapped','\u9ED1'],[[12235,12235],'mapped','\u9EF9'],[[12236,12236],'mapped','\u9EFD'],[[12237,12237],'mapped','\u9F0E'],[[12238,12238],'mapped','\u9F13'],[[12239,12239],'mapped','\u9F20'],[[12240,12240],'mapped','\u9F3B'],[[12241,12241],'mapped','\u9F4A'],[[12242,12242],'mapped','\u9F52'],[[12243,12243],'mapped','\u9F8D'],[[12244,12244],'mapped','\u9F9C'],[[12245,12245],'mapped','\u9FA0'],[[12246,12271],'disallowed'],[[12272,12283],'disallowed'],[[12284,12287],'disallowed'],[[12288,12288],'disallowed_STD3_mapped',' '],[[12289,12289],'valid','','NV8'],[[12290,12290],'mapped','.'],[[12291,12292],'valid','','NV8'],[[12293,12295],'valid'],[[12296,12329],'valid','','NV8'],[[12330,12333],'valid'],[[12334,12341],'valid','','NV8'],[[12342,12342],'mapped','\u3012'],[[12343,12343],'valid','','NV8'],[[12344,12344],'mapped','\u5341'],[[12345,12345],'mapped','\u5344'],[[12346,12346],'mapped','\u5345'],[[12347,12347],'valid','','NV8'],[[12348,12348],'valid'],[[12349,12349],'valid','','NV8'],[[12350,12350],'valid','','NV8'],[[12351,12351],'valid','','NV8'],[[12352,12352],'disallowed'],[[12353,12436],'valid'],[[12437,12438],'valid'],[[12439,12440],'disallowed'],[[12441,12442],'valid'],[[12443,12443],'disallowed_STD3_mapped',' \u3099'],[[12444,12444],'disallowed_STD3_mapped',' \u309A'],[[12445,12446],'valid'],[[12447,12447],'mapped','\u3088\u308A'],[[12448,12448],'valid','','NV8'],[[12449,12542],'valid'],[[12543,12543],'mapped','\u30B3\u30C8'],[[12544,12548],'disallowed'],[[12549,12588],'valid'],[[12589,12589],'valid'],[[12590,12590],'valid'],[[12591,12592],'disallowed'],[[12593,12593],'mapped','\u1100'],[[12594,12594],'mapped','\u1101'],[[12595,12595],'mapped','\u11AA'],[[12596,12596],'mapped','\u1102'],[[12597,12597],'mapped','\u11AC'],[[12598,12598],'mapped','\u11AD'],[[12599,12599],'mapped','\u1103'],[[12600,12600],'mapped','\u1104'],[[12601,12601],'mapped','\u1105'],[[12602,12602],'mapped','\u11B0'],[[12603,12603],'mapped','\u11B1'],[[12604,12604],'mapped','\u11B2'],[[12605,12605],'mapped','\u11B3'],[[12606,12606],'mapped','\u11B4'],[[12607,12607],'mapped','\u11B5'],[[12608,12608],'mapped','\u111A'],[[12609,12609],'mapped','\u1106'],[[12610,12610],'mapped','\u1107'],[[12611,12611],'mapped','\u1108'],[[12612,12612],'mapped','\u1121'],[[12613,12613],'mapped','\u1109'],[[12614,12614],'mapped','\u110A'],[[12615,12615],'mapped','\u110B'],[[12616,12616],'mapped','\u110C'],[[12617,12617],'mapped','\u110D'],[[12618,12618],'mapped','\u110E'],[[12619,12619],'mapped','\u110F'],[[12620,12620],'mapped','\u1110'],[[12621,12621],'mapped','\u1111'],[[12622,12622],'mapped','\u1112'],[[12623,12623],'mapped','\u1161'],[[12624,12624],'mapped','\u1162'],[[12625,12625],'mapped','\u1163'],[[12626,12626],'mapped','\u1164'],[[12627,12627],'mapped','\u1165'],[[12628,12628],'mapped','\u1166'],[[12629,12629],'mapped','\u1167'],[[12630,12630],'mapped','\u1168'],[[12631,12631],'mapped','\u1169'],[[12632,12632],'mapped','\u116A'],[[12633,12633],'mapped','\u116B'],[[12634,12634],'mapped','\u116C'],[[12635,12635],'mapped','\u116D'],[[12636,12636],'mapped','\u116E'],[[12637,12637],'mapped','\u116F'],[[12638,12638],'mapped','\u1170'],[[12639,12639],'mapped','\u1171'],[[12640,12640],'mapped','\u1172'],[[12641,12641],'mapped','\u1173'],[[12642,12642],'mapped','\u1174'],[[12643,12643],'mapped','\u1175'],[[12644,12644],'disallowed'],[[12645,12645],'mapped','\u1114'],[[12646,12646],'mapped','\u1115'],[[12647,12647],'mapped','\u11C7'],[[12648,12648],'mapped','\u11C8'],[[12649,12649],'mapped','\u11CC'],[[12650,12650],'mapped','\u11CE'],[[12651,12651],'mapped','\u11D3'],[[12652,12652],'mapped','\u11D7'],[[12653,12653],'mapped','\u11D9'],[[12654,12654],'mapped','\u111C'],[[12655,12655],'mapped','\u11DD'],[[12656,12656],'mapped','\u11DF'],[[12657,12657],'mapped','\u111D'],[[12658,12658],'mapped','\u111E'],[[12659,12659],'mapped','\u1120'],[[12660,12660],'mapped','\u1122'],[[12661,12661],'mapped','\u1123'],[[12662,12662],'mapped','\u1127'],[[12663,12663],'mapped','\u1129'],[[12664,12664],'mapped','\u112B'],[[12665,12665],'mapped','\u112C'],[[12666,12666],'mapped','\u112D'],[[12667,12667],'mapped','\u112E'],[[12668,12668],'mapped','\u112F'],[[12669,12669],'mapped','\u1132'],[[12670,12670],'mapped','\u1136'],[[12671,12671],'mapped','\u1140'],[[12672,12672],'mapped','\u1147'],[[12673,12673],'mapped','\u114C'],[[12674,12674],'mapped','\u11F1'],[[12675,12675],'mapped','\u11F2'],[[12676,12676],'mapped','\u1157'],[[12677,12677],'mapped','\u1158'],[[12678,12678],'mapped','\u1159'],[[12679,12679],'mapped','\u1184'],[[12680,12680],'mapped','\u1185'],[[12681,12681],'mapped','\u1188'],[[12682,12682],'mapped','\u1191'],[[12683,12683],'mapped','\u1192'],[[12684,12684],'mapped','\u1194'],[[12685,12685],'mapped','\u119E'],[[12686,12686],'mapped','\u11A1'],[[12687,12687],'disallowed'],[[12688,12689],'valid','','NV8'],[[12690,12690],'mapped','\u4E00'],[[12691,12691],'mapped','\u4E8C'],[[12692,12692],'mapped','\u4E09'],[[12693,12693],'mapped','\u56DB'],[[12694,12694],'mapped','\u4E0A'],[[12695,12695],'mapped','\u4E2D'],[[12696,12696],'mapped','\u4E0B'],[[12697,12697],'mapped','\u7532'],[[12698,12698],'mapped','\u4E59'],[[12699,12699],'mapped','\u4E19'],[[12700,12700],'mapped','\u4E01'],[[12701,12701],'mapped','\u5929'],[[12702,12702],'mapped','\u5730'],[[12703,12703],'mapped','\u4EBA'],[[12704,12727],'valid'],[[12728,12730],'valid'],[[12731,12735],'disallowed'],[[12736,12751],'valid','','NV8'],[[12752,12771],'valid','','NV8'],[[12772,12783],'disallowed'],[[12784,12799],'valid'],[[12800,12800],'disallowed_STD3_mapped','(\u1100)'],[[12801,12801],'disallowed_STD3_mapped','(\u1102)'],[[12802,12802],'disallowed_STD3_mapped','(\u1103)'],[[12803,12803],'disallowed_STD3_mapped','(\u1105)'],[[12804,12804],'disallowed_STD3_mapped','(\u1106)'],[[12805,12805],'disallowed_STD3_mapped','(\u1107)'],[[12806,12806],'disallowed_STD3_mapped','(\u1109)'],[[12807,12807],'disallowed_STD3_mapped','(\u110B)'],[[12808,12808],'disallowed_STD3_mapped','(\u110C)'],[[12809,12809],'disallowed_STD3_mapped','(\u110E)'],[[12810,12810],'disallowed_STD3_mapped','(\u110F)'],[[12811,12811],'disallowed_STD3_mapped','(\u1110)'],[[12812,12812],'disallowed_STD3_mapped','(\u1111)'],[[12813,12813],'disallowed_STD3_mapped','(\u1112)'],[[12814,12814],'disallowed_STD3_mapped','(\uAC00)'],[[12815,12815],'disallowed_STD3_mapped','(\uB098)'],[[12816,12816],'disallowed_STD3_mapped','(\uB2E4)'],[[12817,12817],'disallowed_STD3_mapped','(\uB77C)'],[[12818,12818],'disallowed_STD3_mapped','(\uB9C8)'],[[12819,12819],'disallowed_STD3_mapped','(\uBC14)'],[[12820,12820],'disallowed_STD3_mapped','(\uC0AC)'],[[12821,12821],'disallowed_STD3_mapped','(\uC544)'],[[12822,12822],'disallowed_STD3_mapped','(\uC790)'],[[12823,12823],'disallowed_STD3_mapped','(\uCC28)'],[[12824,12824],'disallowed_STD3_mapped','(\uCE74)'],[[12825,12825],'disallowed_STD3_mapped','(\uD0C0)'],[[12826,12826],'disallowed_STD3_mapped','(\uD30C)'],[[12827,12827],'disallowed_STD3_mapped','(\uD558)'],[[12828,12828],'disallowed_STD3_mapped','(\uC8FC)'],[[12829,12829],'disallowed_STD3_mapped','(\uC624\uC804)'],[[12830,12830],'disallowed_STD3_mapped','(\uC624\uD6C4)'],[[12831,12831],'disallowed'],[[12832,12832],'disallowed_STD3_mapped','(\u4E00)'],[[12833,12833],'disallowed_STD3_mapped','(\u4E8C)'],[[12834,12834],'disallowed_STD3_mapped','(\u4E09)'],[[12835,12835],'disallowed_STD3_mapped','(\u56DB)'],[[12836,12836],'disallowed_STD3_mapped','(\u4E94)'],[[12837,12837],'disallowed_STD3_mapped','(\u516D)'],[[12838,12838],'disallowed_STD3_mapped','(\u4E03)'],[[12839,12839],'disallowed_STD3_mapped','(\u516B)'],[[12840,12840],'disallowed_STD3_mapped','(\u4E5D)'],[[12841,12841],'disallowed_STD3_mapped','(\u5341)'],[[12842,12842],'disallowed_STD3_mapped','(\u6708)'],[[12843,12843],'disallowed_STD3_mapped','(\u706B)'],[[12844,12844],'disallowed_STD3_mapped','(\u6C34)'],[[12845,12845],'disallowed_STD3_mapped','(\u6728)'],[[12846,12846],'disallowed_STD3_mapped','(\u91D1)'],[[12847,12847],'disallowed_STD3_mapped','(\u571F)'],[[12848,12848],'disallowed_STD3_mapped','(\u65E5)'],[[12849,12849],'disallowed_STD3_mapped','(\u682A)'],[[12850,12850],'disallowed_STD3_mapped','(\u6709)'],[[12851,12851],'disallowed_STD3_mapped','(\u793E)'],[[12852,12852],'disallowed_STD3_mapped','(\u540D)'],[[12853,12853],'disallowed_STD3_mapped','(\u7279)'],[[12854,12854],'disallowed_STD3_mapped','(\u8CA1)'],[[12855,12855],'disallowed_STD3_mapped','(\u795D)'],[[12856,12856],'disallowed_STD3_mapped','(\u52B4)'],[[12857,12857],'disallowed_STD3_mapped','(\u4EE3)'],[[12858,12858],'disallowed_STD3_mapped','(\u547C)'],[[12859,12859],'disallowed_STD3_mapped','(\u5B66)'],[[12860,12860],'disallowed_STD3_mapped','(\u76E3)'],[[12861,12861],'disallowed_STD3_mapped','(\u4F01)'],[[12862,12862],'disallowed_STD3_mapped','(\u8CC7)'],[[12863,12863],'disallowed_STD3_mapped','(\u5354)'],[[12864,12864],'disallowed_STD3_mapped','(\u796D)'],[[12865,12865],'disallowed_STD3_mapped','(\u4F11)'],[[12866,12866],'disallowed_STD3_mapped','(\u81EA)'],[[12867,12867],'disallowed_STD3_mapped','(\u81F3)'],[[12868,12868],'mapped','\u554F'],[[12869,12869],'mapped','\u5E7C'],[[12870,12870],'mapped','\u6587'],[[12871,12871],'mapped','\u7B8F'],[[12872,12879],'valid','','NV8'],[[12880,12880],'mapped','pte'],[[12881,12881],'mapped','21'],[[12882,12882],'mapped','22'],[[12883,12883],'mapped','23'],[[12884,12884],'mapped','24'],[[12885,12885],'mapped','25'],[[12886,12886],'mapped','26'],[[12887,12887],'mapped','27'],[[12888,12888],'mapped','28'],[[12889,12889],'mapped','29'],[[12890,12890],'mapped','30'],[[12891,12891],'mapped','31'],[[12892,12892],'mapped','32'],[[12893,12893],'mapped','33'],[[12894,12894],'mapped','34'],[[12895,12895],'mapped','35'],[[12896,12896],'mapped','\u1100'],[[12897,12897],'mapped','\u1102'],[[12898,12898],'mapped','\u1103'],[[12899,12899],'mapped','\u1105'],[[12900,12900],'mapped','\u1106'],[[12901,12901],'mapped','\u1107'],[[12902,12902],'mapped','\u1109'],[[12903,12903],'mapped','\u110B'],[[12904,12904],'mapped','\u110C'],[[12905,12905],'mapped','\u110E'],[[12906,12906],'mapped','\u110F'],[[12907,12907],'mapped','\u1110'],[[12908,12908],'mapped','\u1111'],[[12909,12909],'mapped','\u1112'],[[12910,12910],'mapped','\uAC00'],[[12911,12911],'mapped','\uB098'],[[12912,12912],'mapped','\uB2E4'],[[12913,12913],'mapped','\uB77C'],[[12914,12914],'mapped','\uB9C8'],[[12915,12915],'mapped','\uBC14'],[[12916,12916],'mapped','\uC0AC'],[[12917,12917],'mapped','\uC544'],[[12918,12918],'mapped','\uC790'],[[12919,12919],'mapped','\uCC28'],[[12920,12920],'mapped','\uCE74'],[[12921,12921],'mapped','\uD0C0'],[[12922,12922],'mapped','\uD30C'],[[12923,12923],'mapped','\uD558'],[[12924,12924],'mapped','\uCC38\uACE0'],[[12925,12925],'mapped','\uC8FC\uC758'],[[12926,12926],'mapped','\uC6B0'],[[12927,12927],'valid','','NV8'],[[12928,12928],'mapped','\u4E00'],[[12929,12929],'mapped','\u4E8C'],[[12930,12930],'mapped','\u4E09'],[[12931,12931],'mapped','\u56DB'],[[12932,12932],'mapped','\u4E94'],[[12933,12933],'mapped','\u516D'],[[12934,12934],'mapped','\u4E03'],[[12935,12935],'mapped','\u516B'],[[12936,12936],'mapped','\u4E5D'],[[12937,12937],'mapped','\u5341'],[[12938,12938],'mapped','\u6708'],[[12939,12939],'mapped','\u706B'],[[12940,12940],'mapped','\u6C34'],[[12941,12941],'mapped','\u6728'],[[12942,12942],'mapped','\u91D1'],[[12943,12943],'mapped','\u571F'],[[12944,12944],'mapped','\u65E5'],[[12945,12945],'mapped','\u682A'],[[12946,12946],'mapped','\u6709'],[[12947,12947],'mapped','\u793E'],[[12948,12948],'mapped','\u540D'],[[12949,12949],'mapped','\u7279'],[[12950,12950],'mapped','\u8CA1'],[[12951,12951],'mapped','\u795D'],[[12952,12952],'mapped','\u52B4'],[[12953,12953],'mapped','\u79D8'],[[12954,12954],'mapped','\u7537'],[[12955,12955],'mapped','\u5973'],[[12956,12956],'mapped','\u9069'],[[12957,12957],'mapped','\u512A'],[[12958,12958],'mapped','\u5370'],[[12959,12959],'mapped','\u6CE8'],[[12960,12960],'mapped','\u9805'],[[12961,12961],'mapped','\u4F11'],[[12962,12962],'mapped','\u5199'],[[12963,12963],'mapped','\u6B63'],[[12964,12964],'mapped','\u4E0A'],[[12965,12965],'mapped','\u4E2D'],[[12966,12966],'mapped','\u4E0B'],[[12967,12967],'mapped','\u5DE6'],[[12968,12968],'mapped','\u53F3'],[[12969,12969],'mapped','\u533B'],[[12970,12970],'mapped','\u5B97'],[[12971,12971],'mapped','\u5B66'],[[12972,12972],'mapped','\u76E3'],[[12973,12973],'mapped','\u4F01'],[[12974,12974],'mapped','\u8CC7'],[[12975,12975],'mapped','\u5354'],[[12976,12976],'mapped','\u591C'],[[12977,12977],'mapped','36'],[[12978,12978],'mapped','37'],[[12979,12979],'mapped','38'],[[12980,12980],'mapped','39'],[[12981,12981],'mapped','40'],[[12982,12982],'mapped','41'],[[12983,12983],'mapped','42'],[[12984,12984],'mapped','43'],[[12985,12985],'mapped','44'],[[12986,12986],'mapped','45'],[[12987,12987],'mapped','46'],[[12988,12988],'mapped','47'],[[12989,12989],'mapped','48'],[[12990,12990],'mapped','49'],[[12991,12991],'mapped','50'],[[12992,12992],'mapped','1\u6708'],[[12993,12993],'mapped','2\u6708'],[[12994,12994],'mapped','3\u6708'],[[12995,12995],'mapped','4\u6708'],[[12996,12996],'mapped','5\u6708'],[[12997,12997],'mapped','6\u6708'],[[12998,12998],'mapped','7\u6708'],[[12999,12999],'mapped','8\u6708'],[[13000,13000],'mapped','9\u6708'],[[13001,13001],'mapped','10\u6708'],[[13002,13002],'mapped','11\u6708'],[[13003,13003],'mapped','12\u6708'],[[13004,13004],'mapped','hg'],[[13005,13005],'mapped','erg'],[[13006,13006],'mapped','ev'],[[13007,13007],'mapped','ltd'],[[13008,13008],'mapped','\u30A2'],[[13009,13009],'mapped','\u30A4'],[[13010,13010],'mapped','\u30A6'],[[13011,13011],'mapped','\u30A8'],[[13012,13012],'mapped','\u30AA'],[[13013,13013],'mapped','\u30AB'],[[13014,13014],'mapped','\u30AD'],[[13015,13015],'mapped','\u30AF'],[[13016,13016],'mapped','\u30B1'],[[13017,13017],'mapped','\u30B3'],[[13018,13018],'mapped','\u30B5'],[[13019,13019],'mapped','\u30B7'],[[13020,13020],'mapped','\u30B9'],[[13021,13021],'mapped','\u30BB'],[[13022,13022],'mapped','\u30BD'],[[13023,13023],'mapped','\u30BF'],[[13024,13024],'mapped','\u30C1'],[[13025,13025],'mapped','\u30C4'],[[13026,13026],'mapped','\u30C6'],[[13027,13027],'mapped','\u30C8'],[[13028,13028],'mapped','\u30CA'],[[13029,13029],'mapped','\u30CB'],[[13030,13030],'mapped','\u30CC'],[[13031,13031],'mapped','\u30CD'],[[13032,13032],'mapped','\u30CE'],[[13033,13033],'mapped','\u30CF'],[[13034,13034],'mapped','\u30D2'],[[13035,13035],'mapped','\u30D5'],[[13036,13036],'mapped','\u30D8'],[[13037,13037],'mapped','\u30DB'],[[13038,13038],'mapped','\u30DE'],[[13039,13039],'mapped','\u30DF'],[[13040,13040],'mapped','\u30E0'],[[13041,13041],'mapped','\u30E1'],[[13042,13042],'mapped','\u30E2'],[[13043,13043],'mapped','\u30E4'],[[13044,13044],'mapped','\u30E6'],[[13045,13045],'mapped','\u30E8'],[[13046,13046],'mapped','\u30E9'],[[13047,13047],'mapped','\u30EA'],[[13048,13048],'mapped','\u30EB'],[[13049,13049],'mapped','\u30EC'],[[13050,13050],'mapped','\u30ED'],[[13051,13051],'mapped','\u30EF'],[[13052,13052],'mapped','\u30F0'],[[13053,13053],'mapped','\u30F1'],[[13054,13054],'mapped','\u30F2'],[[13055,13055],'disallowed'],[[13056,13056],'mapped','\u30A2\u30D1\u30FC\u30C8'],[[13057,13057],'mapped','\u30A2\u30EB\u30D5\u30A1'],[[13058,13058],'mapped','\u30A2\u30F3\u30DA\u30A2'],[[13059,13059],'mapped','\u30A2\u30FC\u30EB'],[[13060,13060],'mapped','\u30A4\u30CB\u30F3\u30B0'],[[13061,13061],'mapped','\u30A4\u30F3\u30C1'],[[13062,13062],'mapped','\u30A6\u30A9\u30F3'],[[13063,13063],'mapped','\u30A8\u30B9\u30AF\u30FC\u30C9'],[[13064,13064],'mapped','\u30A8\u30FC\u30AB\u30FC'],[[13065,13065],'mapped','\u30AA\u30F3\u30B9'],[[13066,13066],'mapped','\u30AA\u30FC\u30E0'],[[13067,13067],'mapped','\u30AB\u30A4\u30EA'],[[13068,13068],'mapped','\u30AB\u30E9\u30C3\u30C8'],[[13069,13069],'mapped','\u30AB\u30ED\u30EA\u30FC'],[[13070,13070],'mapped','\u30AC\u30ED\u30F3'],[[13071,13071],'mapped','\u30AC\u30F3\u30DE'],[[13072,13072],'mapped','\u30AE\u30AC'],[[13073,13073],'mapped','\u30AE\u30CB\u30FC'],[[13074,13074],'mapped','\u30AD\u30E5\u30EA\u30FC'],[[13075,13075],'mapped','\u30AE\u30EB\u30C0\u30FC'],[[13076,13076],'mapped','\u30AD\u30ED'],[[13077,13077],'mapped','\u30AD\u30ED\u30B0\u30E9\u30E0'],[[13078,13078],'mapped','\u30AD\u30ED\u30E1\u30FC\u30C8\u30EB'],[[13079,13079],'mapped','\u30AD\u30ED\u30EF\u30C3\u30C8'],[[13080,13080],'mapped','\u30B0\u30E9\u30E0'],[[13081,13081],'mapped','\u30B0\u30E9\u30E0\u30C8\u30F3'],[[13082,13082],'mapped','\u30AF\u30EB\u30BC\u30A4\u30ED'],[[13083,13083],'mapped','\u30AF\u30ED\u30FC\u30CD'],[[13084,13084],'mapped','\u30B1\u30FC\u30B9'],[[13085,13085],'mapped','\u30B3\u30EB\u30CA'],[[13086,13086],'mapped','\u30B3\u30FC\u30DD'],[[13087,13087],'mapped','\u30B5\u30A4\u30AF\u30EB'],[[13088,13088],'mapped','\u30B5\u30F3\u30C1\u30FC\u30E0'],[[13089,13089],'mapped','\u30B7\u30EA\u30F3\u30B0'],[[13090,13090],'mapped','\u30BB\u30F3\u30C1'],[[13091,13091],'mapped','\u30BB\u30F3\u30C8'],[[13092,13092],'mapped','\u30C0\u30FC\u30B9'],[[13093,13093],'mapped','\u30C7\u30B7'],[[13094,13094],'mapped','\u30C9\u30EB'],[[13095,13095],'mapped','\u30C8\u30F3'],[[13096,13096],'mapped','\u30CA\u30CE'],[[13097,13097],'mapped','\u30CE\u30C3\u30C8'],[[13098,13098],'mapped','\u30CF\u30A4\u30C4'],[[13099,13099],'mapped','\u30D1\u30FC\u30BB\u30F3\u30C8'],[[13100,13100],'mapped','\u30D1\u30FC\u30C4'],[[13101,13101],'mapped','\u30D0\u30FC\u30EC\u30EB'],[[13102,13102],'mapped','\u30D4\u30A2\u30B9\u30C8\u30EB'],[[13103,13103],'mapped','\u30D4\u30AF\u30EB'],[[13104,13104],'mapped','\u30D4\u30B3'],[[13105,13105],'mapped','\u30D3\u30EB'],[[13106,13106],'mapped','\u30D5\u30A1\u30E9\u30C3\u30C9'],[[13107,13107],'mapped','\u30D5\u30A3\u30FC\u30C8'],[[13108,13108],'mapped','\u30D6\u30C3\u30B7\u30A7\u30EB'],[[13109,13109],'mapped','\u30D5\u30E9\u30F3'],[[13110,13110],'mapped','\u30D8\u30AF\u30BF\u30FC\u30EB'],[[13111,13111],'mapped','\u30DA\u30BD'],[[13112,13112],'mapped','\u30DA\u30CB\u30D2'],[[13113,13113],'mapped','\u30D8\u30EB\u30C4'],[[13114,13114],'mapped','\u30DA\u30F3\u30B9'],[[13115,13115],'mapped','\u30DA\u30FC\u30B8'],[[13116,13116],'mapped','\u30D9\u30FC\u30BF'],[[13117,13117],'mapped','\u30DD\u30A4\u30F3\u30C8'],[[13118,13118],'mapped','\u30DC\u30EB\u30C8'],[[13119,13119],'mapped','\u30DB\u30F3'],[[13120,13120],'mapped','\u30DD\u30F3\u30C9'],[[13121,13121],'mapped','\u30DB\u30FC\u30EB'],[[13122,13122],'mapped','\u30DB\u30FC\u30F3'],[[13123,13123],'mapped','\u30DE\u30A4\u30AF\u30ED'],[[13124,13124],'mapped','\u30DE\u30A4\u30EB'],[[13125,13125],'mapped','\u30DE\u30C3\u30CF'],[[13126,13126],'mapped','\u30DE\u30EB\u30AF'],[[13127,13127],'mapped','\u30DE\u30F3\u30B7\u30E7\u30F3'],[[13128,13128],'mapped','\u30DF\u30AF\u30ED\u30F3'],[[13129,13129],'mapped','\u30DF\u30EA'],[[13130,13130],'mapped','\u30DF\u30EA\u30D0\u30FC\u30EB'],[[13131,13131],'mapped','\u30E1\u30AC'],[[13132,13132],'mapped','\u30E1\u30AC\u30C8\u30F3'],[[13133,13133],'mapped','\u30E1\u30FC\u30C8\u30EB'],[[13134,13134],'mapped','\u30E4\u30FC\u30C9'],[[13135,13135],'mapped','\u30E4\u30FC\u30EB'],[[13136,13136],'mapped','\u30E6\u30A2\u30F3'],[[13137,13137],'mapped','\u30EA\u30C3\u30C8\u30EB'],[[13138,13138],'mapped','\u30EA\u30E9'],[[13139,13139],'mapped','\u30EB\u30D4\u30FC'],[[13140,13140],'mapped','\u30EB\u30FC\u30D6\u30EB'],[[13141,13141],'mapped','\u30EC\u30E0'],[[13142,13142],'mapped','\u30EC\u30F3\u30C8\u30B2\u30F3'],[[13143,13143],'mapped','\u30EF\u30C3\u30C8'],[[13144,13144],'mapped','0\u70B9'],[[13145,13145],'mapped','1\u70B9'],[[13146,13146],'mapped','2\u70B9'],[[13147,13147],'mapped','3\u70B9'],[[13148,13148],'mapped','4\u70B9'],[[13149,13149],'mapped','5\u70B9'],[[13150,13150],'mapped','6\u70B9'],[[13151,13151],'mapped','7\u70B9'],[[13152,13152],'mapped','8\u70B9'],[[13153,13153],'mapped','9\u70B9'],[[13154,13154],'mapped','10\u70B9'],[[13155,13155],'mapped','11\u70B9'],[[13156,13156],'mapped','12\u70B9'],[[13157,13157],'mapped','13\u70B9'],[[13158,13158],'mapped','14\u70B9'],[[13159,13159],'mapped','15\u70B9'],[[13160,13160],'mapped','16\u70B9'],[[13161,13161],'mapped','17\u70B9'],[[13162,13162],'mapped','18\u70B9'],[[13163,13163],'mapped','19\u70B9'],[[13164,13164],'mapped','20\u70B9'],[[13165,13165],'mapped','21\u70B9'],[[13166,13166],'mapped','22\u70B9'],[[13167,13167],'mapped','23\u70B9'],[[13168,13168],'mapped','24\u70B9'],[[13169,13169],'mapped','hpa'],[[13170,13170],'mapped','da'],[[13171,13171],'mapped','au'],[[13172,13172],'mapped','bar'],[[13173,13173],'mapped','ov'],[[13174,13174],'mapped','pc'],[[13175,13175],'mapped','dm'],[[13176,13176],'mapped','dm2'],[[13177,13177],'mapped','dm3'],[[13178,13178],'mapped','iu'],[[13179,13179],'mapped','\u5E73\u6210'],[[13180,13180],'mapped','\u662D\u548C'],[[13181,13181],'mapped','\u5927\u6B63'],[[13182,13182],'mapped','\u660E\u6CBB'],[[13183,13183],'mapped','\u682A\u5F0F\u4F1A\u793E'],[[13184,13184],'mapped','pa'],[[13185,13185],'mapped','na'],[[13186,13186],'mapped','\u03BCa'],[[13187,13187],'mapped','ma'],[[13188,13188],'mapped','ka'],[[13189,13189],'mapped','kb'],[[13190,13190],'mapped','mb'],[[13191,13191],'mapped','gb'],[[13192,13192],'mapped','cal'],[[13193,13193],'mapped','kcal'],[[13194,13194],'mapped','pf'],[[13195,13195],'mapped','nf'],[[13196,13196],'mapped','\u03BCf'],[[13197,13197],'mapped','\u03BCg'],[[13198,13198],'mapped','mg'],[[13199,13199],'mapped','kg'],[[13200,13200],'mapped','hz'],[[13201,13201],'mapped','khz'],[[13202,13202],'mapped','mhz'],[[13203,13203],'mapped','ghz'],[[13204,13204],'mapped','thz'],[[13205,13205],'mapped','\u03BCl'],[[13206,13206],'mapped','ml'],[[13207,13207],'mapped','dl'],[[13208,13208],'mapped','kl'],[[13209,13209],'mapped','fm'],[[13210,13210],'mapped','nm'],[[13211,13211],'mapped','\u03BCm'],[[13212,13212],'mapped','mm'],[[13213,13213],'mapped','cm'],[[13214,13214],'mapped','km'],[[13215,13215],'mapped','mm2'],[[13216,13216],'mapped','cm2'],[[13217,13217],'mapped','m2'],[[13218,13218],'mapped','km2'],[[13219,13219],'mapped','mm3'],[[13220,13220],'mapped','cm3'],[[13221,13221],'mapped','m3'],[[13222,13222],'mapped','km3'],[[13223,13223],'mapped','m\u2215s'],[[13224,13224],'mapped','m\u2215s2'],[[13225,13225],'mapped','pa'],[[13226,13226],'mapped','kpa'],[[13227,13227],'mapped','mpa'],[[13228,13228],'mapped','gpa'],[[13229,13229],'mapped','rad'],[[13230,13230],'mapped','rad\u2215s'],[[13231,13231],'mapped','rad\u2215s2'],[[13232,13232],'mapped','ps'],[[13233,13233],'mapped','ns'],[[13234,13234],'mapped','\u03BCs'],[[13235,13235],'mapped','ms'],[[13236,13236],'mapped','pv'],[[13237,13237],'mapped','nv'],[[13238,13238],'mapped','\u03BCv'],[[13239,13239],'mapped','mv'],[[13240,13240],'mapped','kv'],[[13241,13241],'mapped','mv'],[[13242,13242],'mapped','pw'],[[13243,13243],'mapped','nw'],[[13244,13244],'mapped','\u03BCw'],[[13245,13245],'mapped','mw'],[[13246,13246],'mapped','kw'],[[13247,13247],'mapped','mw'],[[13248,13248],'mapped','k\u03C9'],[[13249,13249],'mapped','m\u03C9'],[[13250,13250],'disallowed'],[[13251,13251],'mapped','bq'],[[13252,13252],'mapped','cc'],[[13253,13253],'mapped','cd'],[[13254,13254],'mapped','c\u2215kg'],[[13255,13255],'disallowed'],[[13256,13256],'mapped','db'],[[13257,13257],'mapped','gy'],[[13258,13258],'mapped','ha'],[[13259,13259],'mapped','hp'],[[13260,13260],'mapped','in'],[[13261,13261],'mapped','kk'],[[13262,13262],'mapped','km'],[[13263,13263],'mapped','kt'],[[13264,13264],'mapped','lm'],[[13265,13265],'mapped','ln'],[[13266,13266],'mapped','log'],[[13267,13267],'mapped','lx'],[[13268,13268],'mapped','mb'],[[13269,13269],'mapped','mil'],[[13270,13270],'mapped','mol'],[[13271,13271],'mapped','ph'],[[13272,13272],'disallowed'],[[13273,13273],'mapped','ppm'],[[13274,13274],'mapped','pr'],[[13275,13275],'mapped','sr'],[[13276,13276],'mapped','sv'],[[13277,13277],'mapped','wb'],[[13278,13278],'mapped','v\u2215m'],[[13279,13279],'mapped','a\u2215m'],[[13280,13280],'mapped','1\u65E5'],[[13281,13281],'mapped','2\u65E5'],[[13282,13282],'mapped','3\u65E5'],[[13283,13283],'mapped','4\u65E5'],[[13284,13284],'mapped','5\u65E5'],[[13285,13285],'mapped','6\u65E5'],[[13286,13286],'mapped','7\u65E5'],[[13287,13287],'mapped','8\u65E5'],[[13288,13288],'mapped','9\u65E5'],[[13289,13289],'mapped','10\u65E5'],[[13290,13290],'mapped','11\u65E5'],[[13291,13291],'mapped','12\u65E5'],[[13292,13292],'mapped','13\u65E5'],[[13293,13293],'mapped','14\u65E5'],[[13294,13294],'mapped','15\u65E5'],[[13295,13295],'mapped','16\u65E5'],[[13296,13296],'mapped','17\u65E5'],[[13297,13297],'mapped','18\u65E5'],[[13298,13298],'mapped','19\u65E5'],[[13299,13299],'mapped','20\u65E5'],[[13300,13300],'mapped','21\u65E5'],[[13301,13301],'mapped','22\u65E5'],[[13302,13302],'mapped','23\u65E5'],[[13303,13303],'mapped','24\u65E5'],[[13304,13304],'mapped','25\u65E5'],[[13305,13305],'mapped','26\u65E5'],[[13306,13306],'mapped','27\u65E5'],[[13307,13307],'mapped','28\u65E5'],[[13308,13308],'mapped','29\u65E5'],[[13309,13309],'mapped','30\u65E5'],[[13310,13310],'mapped','31\u65E5'],[[13311,13311],'mapped','gal'],[[13312,19893],'valid'],[[19894,19903],'disallowed'],[[19904,19967],'valid','','NV8'],[[19968,40869],'valid'],[[40870,40891],'valid'],[[40892,40899],'valid'],[[40900,40907],'valid'],[[40908,40908],'valid'],[[40909,40917],'valid'],[[40918,40938],'valid'],[[40939,40959],'disallowed'],[[40960,42124],'valid'],[[42125,42127],'disallowed'],[[42128,42145],'valid','','NV8'],[[42146,42147],'valid','','NV8'],[[42148,42163],'valid','','NV8'],[[42164,42164],'valid','','NV8'],[[42165,42176],'valid','','NV8'],[[42177,42177],'valid','','NV8'],[[42178,42180],'valid','','NV8'],[[42181,42181],'valid','','NV8'],[[42182,42182],'valid','','NV8'],[[42183,42191],'disallowed'],[[42192,42237],'valid'],[[42238,42239],'valid','','NV8'],[[42240,42508],'valid'],[[42509,42511],'valid','','NV8'],[[42512,42539],'valid'],[[42540,42559],'disallowed'],[[42560,42560],'mapped','\uA641'],[[42561,42561],'valid'],[[42562,42562],'mapped','\uA643'],[[42563,42563],'valid'],[[42564,42564],'mapped','\uA645'],[[42565,42565],'valid'],[[42566,42566],'mapped','\uA647'],[[42567,42567],'valid'],[[42568,42568],'mapped','\uA649'],[[42569,42569],'valid'],[[42570,42570],'mapped','\uA64B'],[[42571,42571],'valid'],[[42572,42572],'mapped','\uA64D'],[[42573,42573],'valid'],[[42574,42574],'mapped','\uA64F'],[[42575,42575],'valid'],[[42576,42576],'mapped','\uA651'],[[42577,42577],'valid'],[[42578,42578],'mapped','\uA653'],[[42579,42579],'valid'],[[42580,42580],'mapped','\uA655'],[[42581,42581],'valid'],[[42582,42582],'mapped','\uA657'],[[42583,42583],'valid'],[[42584,42584],'mapped','\uA659'],[[42585,42585],'valid'],[[42586,42586],'mapped','\uA65B'],[[42587,42587],'valid'],[[42588,42588],'mapped','\uA65D'],[[42589,42589],'valid'],[[42590,42590],'mapped','\uA65F'],[[42591,42591],'valid'],[[42592,42592],'mapped','\uA661'],[[42593,42593],'valid'],[[42594,42594],'mapped','\uA663'],[[42595,42595],'valid'],[[42596,42596],'mapped','\uA665'],[[42597,42597],'valid'],[[42598,42598],'mapped','\uA667'],[[42599,42599],'valid'],[[42600,42600],'mapped','\uA669'],[[42601,42601],'valid'],[[42602,42602],'mapped','\uA66B'],[[42603,42603],'valid'],[[42604,42604],'mapped','\uA66D'],[[42605,42607],'valid'],[[42608,42611],'valid','','NV8'],[[42612,42619],'valid'],[[42620,42621],'valid'],[[42622,42622],'valid','','NV8'],[[42623,42623],'valid'],[[42624,42624],'mapped','\uA681'],[[42625,42625],'valid'],[[42626,42626],'mapped','\uA683'],[[42627,42627],'valid'],[[42628,42628],'mapped','\uA685'],[[42629,42629],'valid'],[[42630,42630],'mapped','\uA687'],[[42631,42631],'valid'],[[42632,42632],'mapped','\uA689'],[[42633,42633],'valid'],[[42634,42634],'mapped','\uA68B'],[[42635,42635],'valid'],[[42636,42636],'mapped','\uA68D'],[[42637,42637],'valid'],[[42638,42638],'mapped','\uA68F'],[[42639,42639],'valid'],[[42640,42640],'mapped','\uA691'],[[42641,42641],'valid'],[[42642,42642],'mapped','\uA693'],[[42643,42643],'valid'],[[42644,42644],'mapped','\uA695'],[[42645,42645],'valid'],[[42646,42646],'mapped','\uA697'],[[42647,42647],'valid'],[[42648,42648],'mapped','\uA699'],[[42649,42649],'valid'],[[42650,42650],'mapped','\uA69B'],[[42651,42651],'valid'],[[42652,42652],'mapped','\u044A'],[[42653,42653],'mapped','\u044C'],[[42654,42654],'valid'],[[42655,42655],'valid'],[[42656,42725],'valid'],[[42726,42735],'valid','','NV8'],[[42736,42737],'valid'],[[42738,42743],'valid','','NV8'],[[42744,42751],'disallowed'],[[42752,42774],'valid','','NV8'],[[42775,42778],'valid'],[[42779,42783],'valid'],[[42784,42785],'valid','','NV8'],[[42786,42786],'mapped','\uA723'],[[42787,42787],'valid'],[[42788,42788],'mapped','\uA725'],[[42789,42789],'valid'],[[42790,42790],'mapped','\uA727'],[[42791,42791],'valid'],[[42792,42792],'mapped','\uA729'],[[42793,42793],'valid'],[[42794,42794],'mapped','\uA72B'],[[42795,42795],'valid'],[[42796,42796],'mapped','\uA72D'],[[42797,42797],'valid'],[[42798,42798],'mapped','\uA72F'],[[42799,42801],'valid'],[[42802,42802],'mapped','\uA733'],[[42803,42803],'valid'],[[42804,42804],'mapped','\uA735'],[[42805,42805],'valid'],[[42806,42806],'mapped','\uA737'],[[42807,42807],'valid'],[[42808,42808],'mapped','\uA739'],[[42809,42809],'valid'],[[42810,42810],'mapped','\uA73B'],[[42811,42811],'valid'],[[42812,42812],'mapped','\uA73D'],[[42813,42813],'valid'],[[42814,42814],'mapped','\uA73F'],[[42815,42815],'valid'],[[42816,42816],'mapped','\uA741'],[[42817,42817],'valid'],[[42818,42818],'mapped','\uA743'],[[42819,42819],'valid'],[[42820,42820],'mapped','\uA745'],[[42821,42821],'valid'],[[42822,42822],'mapped','\uA747'],[[42823,42823],'valid'],[[42824,42824],'mapped','\uA749'],[[42825,42825],'valid'],[[42826,42826],'mapped','\uA74B'],[[42827,42827],'valid'],[[42828,42828],'mapped','\uA74D'],[[42829,42829],'valid'],[[42830,42830],'mapped','\uA74F'],[[42831,42831],'valid'],[[42832,42832],'mapped','\uA751'],[[42833,42833],'valid'],[[42834,42834],'mapped','\uA753'],[[42835,42835],'valid'],[[42836,42836],'mapped','\uA755'],[[42837,42837],'valid'],[[42838,42838],'mapped','\uA757'],[[42839,42839],'valid'],[[42840,42840],'mapped','\uA759'],[[42841,42841],'valid'],[[42842,42842],'mapped','\uA75B'],[[42843,42843],'valid'],[[42844,42844],'mapped','\uA75D'],[[42845,42845],'valid'],[[42846,42846],'mapped','\uA75F'],[[42847,42847],'valid'],[[42848,42848],'mapped','\uA761'],[[42849,42849],'valid'],[[42850,42850],'mapped','\uA763'],[[42851,42851],'valid'],[[42852,42852],'mapped','\uA765'],[[42853,42853],'valid'],[[42854,42854],'mapped','\uA767'],[[42855,42855],'valid'],[[42856,42856],'mapped','\uA769'],[[42857,42857],'valid'],[[42858,42858],'mapped','\uA76B'],[[42859,42859],'valid'],[[42860,42860],'mapped','\uA76D'],[[42861,42861],'valid'],[[42862,42862],'mapped','\uA76F'],[[42863,42863],'valid'],[[42864,42864],'mapped','\uA76F'],[[42865,42872],'valid'],[[42873,42873],'mapped','\uA77A'],[[42874,42874],'valid'],[[42875,42875],'mapped','\uA77C'],[[42876,42876],'valid'],[[42877,42877],'mapped','\u1D79'],[[42878,42878],'mapped','\uA77F'],[[42879,42879],'valid'],[[42880,42880],'mapped','\uA781'],[[42881,42881],'valid'],[[42882,42882],'mapped','\uA783'],[[42883,42883],'valid'],[[42884,42884],'mapped','\uA785'],[[42885,42885],'valid'],[[42886,42886],'mapped','\uA787'],[[42887,42888],'valid'],[[42889,42890],'valid','','NV8'],[[42891,42891],'mapped','\uA78C'],[[42892,42892],'valid'],[[42893,42893],'mapped','\u0265'],[[42894,42894],'valid'],[[42895,42895],'valid'],[[42896,42896],'mapped','\uA791'],[[42897,42897],'valid'],[[42898,42898],'mapped','\uA793'],[[42899,42899],'valid'],[[42900,42901],'valid'],[[42902,42902],'mapped','\uA797'],[[42903,42903],'valid'],[[42904,42904],'mapped','\uA799'],[[42905,42905],'valid'],[[42906,42906],'mapped','\uA79B'],[[42907,42907],'valid'],[[42908,42908],'mapped','\uA79D'],[[42909,42909],'valid'],[[42910,42910],'mapped','\uA79F'],[[42911,42911],'valid'],[[42912,42912],'mapped','\uA7A1'],[[42913,42913],'valid'],[[42914,42914],'mapped','\uA7A3'],[[42915,42915],'valid'],[[42916,42916],'mapped','\uA7A5'],[[42917,42917],'valid'],[[42918,42918],'mapped','\uA7A7'],[[42919,42919],'valid'],[[42920,42920],'mapped','\uA7A9'],[[42921,42921],'valid'],[[42922,42922],'mapped','\u0266'],[[42923,42923],'mapped','\u025C'],[[42924,42924],'mapped','\u0261'],[[42925,42925],'mapped','\u026C'],[[42926,42926],'mapped','\u026A'],[[42927,42927],'disallowed'],[[42928,42928],'mapped','\u029E'],[[42929,42929],'mapped','\u0287'],[[42930,42930],'mapped','\u029D'],[[42931,42931],'mapped','\uAB53'],[[42932,42932],'mapped','\uA7B5'],[[42933,42933],'valid'],[[42934,42934],'mapped','\uA7B7'],[[42935,42935],'valid'],[[42936,42998],'disallowed'],[[42999,42999],'valid'],[[43000,43000],'mapped','\u0127'],[[43001,43001],'mapped','\u0153'],[[43002,43002],'valid'],[[43003,43007],'valid'],[[43008,43047],'valid'],[[43048,43051],'valid','','NV8'],[[43052,43055],'disallowed'],[[43056,43065],'valid','','NV8'],[[43066,43071],'disallowed'],[[43072,43123],'valid'],[[43124,43127],'valid','','NV8'],[[43128,43135],'disallowed'],[[43136,43204],'valid'],[[43205,43205],'valid'],[[43206,43213],'disallowed'],[[43214,43215],'valid','','NV8'],[[43216,43225],'valid'],[[43226,43231],'disallowed'],[[43232,43255],'valid'],[[43256,43258],'valid','','NV8'],[[43259,43259],'valid'],[[43260,43260],'valid','','NV8'],[[43261,43261],'valid'],[[43262,43263],'disallowed'],[[43264,43309],'valid'],[[43310,43311],'valid','','NV8'],[[43312,43347],'valid'],[[43348,43358],'disallowed'],[[43359,43359],'valid','','NV8'],[[43360,43388],'valid','','NV8'],[[43389,43391],'disallowed'],[[43392,43456],'valid'],[[43457,43469],'valid','','NV8'],[[43470,43470],'disallowed'],[[43471,43481],'valid'],[[43482,43485],'disallowed'],[[43486,43487],'valid','','NV8'],[[43488,43518],'valid'],[[43519,43519],'disallowed'],[[43520,43574],'valid'],[[43575,43583],'disallowed'],[[43584,43597],'valid'],[[43598,43599],'disallowed'],[[43600,43609],'valid'],[[43610,43611],'disallowed'],[[43612,43615],'valid','','NV8'],[[43616,43638],'valid'],[[43639,43641],'valid','','NV8'],[[43642,43643],'valid'],[[43644,43647],'valid'],[[43648,43714],'valid'],[[43715,43738],'disallowed'],[[43739,43741],'valid'],[[43742,43743],'valid','','NV8'],[[43744,43759],'valid'],[[43760,43761],'valid','','NV8'],[[43762,43766],'valid'],[[43767,43776],'disallowed'],[[43777,43782],'valid'],[[43783,43784],'disallowed'],[[43785,43790],'valid'],[[43791,43792],'disallowed'],[[43793,43798],'valid'],[[43799,43807],'disallowed'],[[43808,43814],'valid'],[[43815,43815],'disallowed'],[[43816,43822],'valid'],[[43823,43823],'disallowed'],[[43824,43866],'valid'],[[43867,43867],'valid','','NV8'],[[43868,43868],'mapped','\uA727'],[[43869,43869],'mapped','\uAB37'],[[43870,43870],'mapped','\u026B'],[[43871,43871],'mapped','\uAB52'],[[43872,43875],'valid'],[[43876,43877],'valid'],[[43878,43887],'disallowed'],[[43888,43888],'mapped','\u13A0'],[[43889,43889],'mapped','\u13A1'],[[43890,43890],'mapped','\u13A2'],[[43891,43891],'mapped','\u13A3'],[[43892,43892],'mapped','\u13A4'],[[43893,43893],'mapped','\u13A5'],[[43894,43894],'mapped','\u13A6'],[[43895,43895],'mapped','\u13A7'],[[43896,43896],'mapped','\u13A8'],[[43897,43897],'mapped','\u13A9'],[[43898,43898],'mapped','\u13AA'],[[43899,43899],'mapped','\u13AB'],[[43900,43900],'mapped','\u13AC'],[[43901,43901],'mapped','\u13AD'],[[43902,43902],'mapped','\u13AE'],[[43903,43903],'mapped','\u13AF'],[[43904,43904],'mapped','\u13B0'],[[43905,43905],'mapped','\u13B1'],[[43906,43906],'mapped','\u13B2'],[[43907,43907],'mapped','\u13B3'],[[43908,43908],'mapped','\u13B4'],[[43909,43909],'mapped','\u13B5'],[[43910,43910],'mapped','\u13B6'],[[43911,43911],'mapped','\u13B7'],[[43912,43912],'mapped','\u13B8'],[[43913,43913],'mapped','\u13B9'],[[43914,43914],'mapped','\u13BA'],[[43915,43915],'mapped','\u13BB'],[[43916,43916],'mapped','\u13BC'],[[43917,43917],'mapped','\u13BD'],[[43918,43918],'mapped','\u13BE'],[[43919,43919],'mapped','\u13BF'],[[43920,43920],'mapped','\u13C0'],[[43921,43921],'mapped','\u13C1'],[[43922,43922],'mapped','\u13C2'],[[43923,43923],'mapped','\u13C3'],[[43924,43924],'mapped','\u13C4'],[[43925,43925],'mapped','\u13C5'],[[43926,43926],'mapped','\u13C6'],[[43927,43927],'mapped','\u13C7'],[[43928,43928],'mapped','\u13C8'],[[43929,43929],'mapped','\u13C9'],[[43930,43930],'mapped','\u13CA'],[[43931,43931],'mapped','\u13CB'],[[43932,43932],'mapped','\u13CC'],[[43933,43933],'mapped','\u13CD'],[[43934,43934],'mapped','\u13CE'],[[43935,43935],'mapped','\u13CF'],[[43936,43936],'mapped','\u13D0'],[[43937,43937],'mapped','\u13D1'],[[43938,43938],'mapped','\u13D2'],[[43939,43939],'mapped','\u13D3'],[[43940,43940],'mapped','\u13D4'],[[43941,43941],'mapped','\u13D5'],[[43942,43942],'mapped','\u13D6'],[[43943,43943],'mapped','\u13D7'],[[43944,43944],'mapped','\u13D8'],[[43945,43945],'mapped','\u13D9'],[[43946,43946],'mapped','\u13DA'],[[43947,43947],'mapped','\u13DB'],[[43948,43948],'mapped','\u13DC'],[[43949,43949],'mapped','\u13DD'],[[43950,43950],'mapped','\u13DE'],[[43951,43951],'mapped','\u13DF'],[[43952,43952],'mapped','\u13E0'],[[43953,43953],'mapped','\u13E1'],[[43954,43954],'mapped','\u13E2'],[[43955,43955],'mapped','\u13E3'],[[43956,43956],'mapped','\u13E4'],[[43957,43957],'mapped','\u13E5'],[[43958,43958],'mapped','\u13E6'],[[43959,43959],'mapped','\u13E7'],[[43960,43960],'mapped','\u13E8'],[[43961,43961],'mapped','\u13E9'],[[43962,43962],'mapped','\u13EA'],[[43963,43963],'mapped','\u13EB'],[[43964,43964],'mapped','\u13EC'],[[43965,43965],'mapped','\u13ED'],[[43966,43966],'mapped','\u13EE'],[[43967,43967],'mapped','\u13EF'],[[43968,44010],'valid'],[[44011,44011],'valid','','NV8'],[[44012,44013],'valid'],[[44014,44015],'disallowed'],[[44016,44025],'valid'],[[44026,44031],'disallowed'],[[44032,55203],'valid'],[[55204,55215],'disallowed'],[[55216,55238],'valid','','NV8'],[[55239,55242],'disallowed'],[[55243,55291],'valid','','NV8'],[[55292,55295],'disallowed'],[[55296,57343],'disallowed'],[[57344,63743],'disallowed'],[[63744,63744],'mapped','\u8C48'],[[63745,63745],'mapped','\u66F4'],[[63746,63746],'mapped','\u8ECA'],[[63747,63747],'mapped','\u8CC8'],[[63748,63748],'mapped','\u6ED1'],[[63749,63749],'mapped','\u4E32'],[[63750,63750],'mapped','\u53E5'],[[63751,63752],'mapped','\u9F9C'],[[63753,63753],'mapped','\u5951'],[[63754,63754],'mapped','\u91D1'],[[63755,63755],'mapped','\u5587'],[[63756,63756],'mapped','\u5948'],[[63757,63757],'mapped','\u61F6'],[[63758,63758],'mapped','\u7669'],[[63759,63759],'mapped','\u7F85'],[[63760,63760],'mapped','\u863F'],[[63761,63761],'mapped','\u87BA'],[[63762,63762],'mapped','\u88F8'],[[63763,63763],'mapped','\u908F'],[[63764,63764],'mapped','\u6A02'],[[63765,63765],'mapped','\u6D1B'],[[63766,63766],'mapped','\u70D9'],[[63767,63767],'mapped','\u73DE'],[[63768,63768],'mapped','\u843D'],[[63769,63769],'mapped','\u916A'],[[63770,63770],'mapped','\u99F1'],[[63771,63771],'mapped','\u4E82'],[[63772,63772],'mapped','\u5375'],[[63773,63773],'mapped','\u6B04'],[[63774,63774],'mapped','\u721B'],[[63775,63775],'mapped','\u862D'],[[63776,63776],'mapped','\u9E1E'],[[63777,63777],'mapped','\u5D50'],[[63778,63778],'mapped','\u6FEB'],[[63779,63779],'mapped','\u85CD'],[[63780,63780],'mapped','\u8964'],[[63781,63781],'mapped','\u62C9'],[[63782,63782],'mapped','\u81D8'],[[63783,63783],'mapped','\u881F'],[[63784,63784],'mapped','\u5ECA'],[[63785,63785],'mapped','\u6717'],[[63786,63786],'mapped','\u6D6A'],[[63787,63787],'mapped','\u72FC'],[[63788,63788],'mapped','\u90CE'],[[63789,63789],'mapped','\u4F86'],[[63790,63790],'mapped','\u51B7'],[[63791,63791],'mapped','\u52DE'],[[63792,63792],'mapped','\u64C4'],[[63793,63793],'mapped','\u6AD3'],[[63794,63794],'mapped','\u7210'],[[63795,63795],'mapped','\u76E7'],[[63796,63796],'mapped','\u8001'],[[63797,63797],'mapped','\u8606'],[[63798,63798],'mapped','\u865C'],[[63799,63799],'mapped','\u8DEF'],[[63800,63800],'mapped','\u9732'],[[63801,63801],'mapped','\u9B6F'],[[63802,63802],'mapped','\u9DFA'],[[63803,63803],'mapped','\u788C'],[[63804,63804],'mapped','\u797F'],[[63805,63805],'mapped','\u7DA0'],[[63806,63806],'mapped','\u83C9'],[[63807,63807],'mapped','\u9304'],[[63808,63808],'mapped','\u9E7F'],[[63809,63809],'mapped','\u8AD6'],[[63810,63810],'mapped','\u58DF'],[[63811,63811],'mapped','\u5F04'],[[63812,63812],'mapped','\u7C60'],[[63813,63813],'mapped','\u807E'],[[63814,63814],'mapped','\u7262'],[[63815,63815],'mapped','\u78CA'],[[63816,63816],'mapped','\u8CC2'],[[63817,63817],'mapped','\u96F7'],[[63818,63818],'mapped','\u58D8'],[[63819,63819],'mapped','\u5C62'],[[63820,63820],'mapped','\u6A13'],[[63821,63821],'mapped','\u6DDA'],[[63822,63822],'mapped','\u6F0F'],[[63823,63823],'mapped','\u7D2F'],[[63824,63824],'mapped','\u7E37'],[[63825,63825],'mapped','\u964B'],[[63826,63826],'mapped','\u52D2'],[[63827,63827],'mapped','\u808B'],[[63828,63828],'mapped','\u51DC'],[[63829,63829],'mapped','\u51CC'],[[63830,63830],'mapped','\u7A1C'],[[63831,63831],'mapped','\u7DBE'],[[63832,63832],'mapped','\u83F1'],[[63833,63833],'mapped','\u9675'],[[63834,63834],'mapped','\u8B80'],[[63835,63835],'mapped','\u62CF'],[[63836,63836],'mapped','\u6A02'],[[63837,63837],'mapped','\u8AFE'],[[63838,63838],'mapped','\u4E39'],[[63839,63839],'mapped','\u5BE7'],[[63840,63840],'mapped','\u6012'],[[63841,63841],'mapped','\u7387'],[[63842,63842],'mapped','\u7570'],[[63843,63843],'mapped','\u5317'],[[63844,63844],'mapped','\u78FB'],[[63845,63845],'mapped','\u4FBF'],[[63846,63846],'mapped','\u5FA9'],[[63847,63847],'mapped','\u4E0D'],[[63848,63848],'mapped','\u6CCC'],[[63849,63849],'mapped','\u6578'],[[63850,63850],'mapped','\u7D22'],[[63851,63851],'mapped','\u53C3'],[[63852,63852],'mapped','\u585E'],[[63853,63853],'mapped','\u7701'],[[63854,63854],'mapped','\u8449'],[[63855,63855],'mapped','\u8AAA'],[[63856,63856],'mapped','\u6BBA'],[[63857,63857],'mapped','\u8FB0'],[[63858,63858],'mapped','\u6C88'],[[63859,63859],'mapped','\u62FE'],[[63860,63860],'mapped','\u82E5'],[[63861,63861],'mapped','\u63A0'],[[63862,63862],'mapped','\u7565'],[[63863,63863],'mapped','\u4EAE'],[[63864,63864],'mapped','\u5169'],[[63865,63865],'mapped','\u51C9'],[[63866,63866],'mapped','\u6881'],[[63867,63867],'mapped','\u7CE7'],[[63868,63868],'mapped','\u826F'],[[63869,63869],'mapped','\u8AD2'],[[63870,63870],'mapped','\u91CF'],[[63871,63871],'mapped','\u52F5'],[[63872,63872],'mapped','\u5442'],[[63873,63873],'mapped','\u5973'],[[63874,63874],'mapped','\u5EEC'],[[63875,63875],'mapped','\u65C5'],[[63876,63876],'mapped','\u6FFE'],[[63877,63877],'mapped','\u792A'],[[63878,63878],'mapped','\u95AD'],[[63879,63879],'mapped','\u9A6A'],[[63880,63880],'mapped','\u9E97'],[[63881,63881],'mapped','\u9ECE'],[[63882,63882],'mapped','\u529B'],[[63883,63883],'mapped','\u66C6'],[[63884,63884],'mapped','\u6B77'],[[63885,63885],'mapped','\u8F62'],[[63886,63886],'mapped','\u5E74'],[[63887,63887],'mapped','\u6190'],[[63888,63888],'mapped','\u6200'],[[63889,63889],'mapped','\u649A'],[[63890,63890],'mapped','\u6F23'],[[63891,63891],'mapped','\u7149'],[[63892,63892],'mapped','\u7489'],[[63893,63893],'mapped','\u79CA'],[[63894,63894],'mapped','\u7DF4'],[[63895,63895],'mapped','\u806F'],[[63896,63896],'mapped','\u8F26'],[[63897,63897],'mapped','\u84EE'],[[63898,63898],'mapped','\u9023'],[[63899,63899],'mapped','\u934A'],[[63900,63900],'mapped','\u5217'],[[63901,63901],'mapped','\u52A3'],[[63902,63902],'mapped','\u54BD'],[[63903,63903],'mapped','\u70C8'],[[63904,63904],'mapped','\u88C2'],[[63905,63905],'mapped','\u8AAA'],[[63906,63906],'mapped','\u5EC9'],[[63907,63907],'mapped','\u5FF5'],[[63908,63908],'mapped','\u637B'],[[63909,63909],'mapped','\u6BAE'],[[63910,63910],'mapped','\u7C3E'],[[63911,63911],'mapped','\u7375'],[[63912,63912],'mapped','\u4EE4'],[[63913,63913],'mapped','\u56F9'],[[63914,63914],'mapped','\u5BE7'],[[63915,63915],'mapped','\u5DBA'],[[63916,63916],'mapped','\u601C'],[[63917,63917],'mapped','\u73B2'],[[63918,63918],'mapped','\u7469'],[[63919,63919],'mapped','\u7F9A'],[[63920,63920],'mapped','\u8046'],[[63921,63921],'mapped','\u9234'],[[63922,63922],'mapped','\u96F6'],[[63923,63923],'mapped','\u9748'],[[63924,63924],'mapped','\u9818'],[[63925,63925],'mapped','\u4F8B'],[[63926,63926],'mapped','\u79AE'],[[63927,63927],'mapped','\u91B4'],[[63928,63928],'mapped','\u96B8'],[[63929,63929],'mapped','\u60E1'],[[63930,63930],'mapped','\u4E86'],[[63931,63931],'mapped','\u50DA'],[[63932,63932],'mapped','\u5BEE'],[[63933,63933],'mapped','\u5C3F'],[[63934,63934],'mapped','\u6599'],[[63935,63935],'mapped','\u6A02'],[[63936,63936],'mapped','\u71CE'],[[63937,63937],'mapped','\u7642'],[[63938,63938],'mapped','\u84FC'],[[63939,63939],'mapped','\u907C'],[[63940,63940],'mapped','\u9F8D'],[[63941,63941],'mapped','\u6688'],[[63942,63942],'mapped','\u962E'],[[63943,63943],'mapped','\u5289'],[[63944,63944],'mapped','\u677B'],[[63945,63945],'mapped','\u67F3'],[[63946,63946],'mapped','\u6D41'],[[63947,63947],'mapped','\u6E9C'],[[63948,63948],'mapped','\u7409'],[[63949,63949],'mapped','\u7559'],[[63950,63950],'mapped','\u786B'],[[63951,63951],'mapped','\u7D10'],[[63952,63952],'mapped','\u985E'],[[63953,63953],'mapped','\u516D'],[[63954,63954],'mapped','\u622E'],[[63955,63955],'mapped','\u9678'],[[63956,63956],'mapped','\u502B'],[[63957,63957],'mapped','\u5D19'],[[63958,63958],'mapped','\u6DEA'],[[63959,63959],'mapped','\u8F2A'],[[63960,63960],'mapped','\u5F8B'],[[63961,63961],'mapped','\u6144'],[[63962,63962],'mapped','\u6817'],[[63963,63963],'mapped','\u7387'],[[63964,63964],'mapped','\u9686'],[[63965,63965],'mapped','\u5229'],[[63966,63966],'mapped','\u540F'],[[63967,63967],'mapped','\u5C65'],[[63968,63968],'mapped','\u6613'],[[63969,63969],'mapped','\u674E'],[[63970,63970],'mapped','\u68A8'],[[63971,63971],'mapped','\u6CE5'],[[63972,63972],'mapped','\u7406'],[[63973,63973],'mapped','\u75E2'],[[63974,63974],'mapped','\u7F79'],[[63975,63975],'mapped','\u88CF'],[[63976,63976],'mapped','\u88E1'],[[63977,63977],'mapped','\u91CC'],[[63978,63978],'mapped','\u96E2'],[[63979,63979],'mapped','\u533F'],[[63980,63980],'mapped','\u6EBA'],[[63981,63981],'mapped','\u541D'],[[63982,63982],'mapped','\u71D0'],[[63983,63983],'mapped','\u7498'],[[63984,63984],'mapped','\u85FA'],[[63985,63985],'mapped','\u96A3'],[[63986,63986],'mapped','\u9C57'],[[63987,63987],'mapped','\u9E9F'],[[63988,63988],'mapped','\u6797'],[[63989,63989],'mapped','\u6DCB'],[[63990,63990],'mapped','\u81E8'],[[63991,63991],'mapped','\u7ACB'],[[63992,63992],'mapped','\u7B20'],[[63993,63993],'mapped','\u7C92'],[[63994,63994],'mapped','\u72C0'],[[63995,63995],'mapped','\u7099'],[[63996,63996],'mapped','\u8B58'],[[63997,63997],'mapped','\u4EC0'],[[63998,63998],'mapped','\u8336'],[[63999,63999],'mapped','\u523A'],[[64000,64000],'mapped','\u5207'],[[64001,64001],'mapped','\u5EA6'],[[64002,64002],'mapped','\u62D3'],[[64003,64003],'mapped','\u7CD6'],[[64004,64004],'mapped','\u5B85'],[[64005,64005],'mapped','\u6D1E'],[[64006,64006],'mapped','\u66B4'],[[64007,64007],'mapped','\u8F3B'],[[64008,64008],'mapped','\u884C'],[[64009,64009],'mapped','\u964D'],[[64010,64010],'mapped','\u898B'],[[64011,64011],'mapped','\u5ED3'],[[64012,64012],'mapped','\u5140'],[[64013,64013],'mapped','\u55C0'],[[64014,64015],'valid'],[[64016,64016],'mapped','\u585A'],[[64017,64017],'valid'],[[64018,64018],'mapped','\u6674'],[[64019,64020],'valid'],[[64021,64021],'mapped','\u51DE'],[[64022,64022],'mapped','\u732A'],[[64023,64023],'mapped','\u76CA'],[[64024,64024],'mapped','\u793C'],[[64025,64025],'mapped','\u795E'],[[64026,64026],'mapped','\u7965'],[[64027,64027],'mapped','\u798F'],[[64028,64028],'mapped','\u9756'],[[64029,64029],'mapped','\u7CBE'],[[64030,64030],'mapped','\u7FBD'],[[64031,64031],'valid'],[[64032,64032],'mapped','\u8612'],[[64033,64033],'valid'],[[64034,64034],'mapped','\u8AF8'],[[64035,64036],'valid'],[[64037,64037],'mapped','\u9038'],[[64038,64038],'mapped','\u90FD'],[[64039,64041],'valid'],[[64042,64042],'mapped','\u98EF'],[[64043,64043],'mapped','\u98FC'],[[64044,64044],'mapped','\u9928'],[[64045,64045],'mapped','\u9DB4'],[[64046,64046],'mapped','\u90DE'],[[64047,64047],'mapped','\u96B7'],[[64048,64048],'mapped','\u4FAE'],[[64049,64049],'mapped','\u50E7'],[[64050,64050],'mapped','\u514D'],[[64051,64051],'mapped','\u52C9'],[[64052,64052],'mapped','\u52E4'],[[64053,64053],'mapped','\u5351'],[[64054,64054],'mapped','\u559D'],[[64055,64055],'mapped','\u5606'],[[64056,64056],'mapped','\u5668'],[[64057,64057],'mapped','\u5840'],[[64058,64058],'mapped','\u58A8'],[[64059,64059],'mapped','\u5C64'],[[64060,64060],'mapped','\u5C6E'],[[64061,64061],'mapped','\u6094'],[[64062,64062],'mapped','\u6168'],[[64063,64063],'mapped','\u618E'],[[64064,64064],'mapped','\u61F2'],[[64065,64065],'mapped','\u654F'],[[64066,64066],'mapped','\u65E2'],[[64067,64067],'mapped','\u6691'],[[64068,64068],'mapped','\u6885'],[[64069,64069],'mapped','\u6D77'],[[64070,64070],'mapped','\u6E1A'],[[64071,64071],'mapped','\u6F22'],[[64072,64072],'mapped','\u716E'],[[64073,64073],'mapped','\u722B'],[[64074,64074],'mapped','\u7422'],[[64075,64075],'mapped','\u7891'],[[64076,64076],'mapped','\u793E'],[[64077,64077],'mapped','\u7949'],[[64078,64078],'mapped','\u7948'],[[64079,64079],'mapped','\u7950'],[[64080,64080],'mapped','\u7956'],[[64081,64081],'mapped','\u795D'],[[64082,64082],'mapped','\u798D'],[[64083,64083],'mapped','\u798E'],[[64084,64084],'mapped','\u7A40'],[[64085,64085],'mapped','\u7A81'],[[64086,64086],'mapped','\u7BC0'],[[64087,64087],'mapped','\u7DF4'],[[64088,64088],'mapped','\u7E09'],[[64089,64089],'mapped','\u7E41'],[[64090,64090],'mapped','\u7F72'],[[64091,64091],'mapped','\u8005'],[[64092,64092],'mapped','\u81ED'],[[64093,64094],'mapped','\u8279'],[[64095,64095],'mapped','\u8457'],[[64096,64096],'mapped','\u8910'],[[64097,64097],'mapped','\u8996'],[[64098,64098],'mapped','\u8B01'],[[64099,64099],'mapped','\u8B39'],[[64100,64100],'mapped','\u8CD3'],[[64101,64101],'mapped','\u8D08'],[[64102,64102],'mapped','\u8FB6'],[[64103,64103],'mapped','\u9038'],[[64104,64104],'mapped','\u96E3'],[[64105,64105],'mapped','\u97FF'],[[64106,64106],'mapped','\u983B'],[[64107,64107],'mapped','\u6075'],[[64108,64108],'mapped','\uD850\uDEEE'],[[64109,64109],'mapped','\u8218'],[[64110,64111],'disallowed'],[[64112,64112],'mapped','\u4E26'],[[64113,64113],'mapped','\u51B5'],[[64114,64114],'mapped','\u5168'],[[64115,64115],'mapped','\u4F80'],[[64116,64116],'mapped','\u5145'],[[64117,64117],'mapped','\u5180'],[[64118,64118],'mapped','\u52C7'],[[64119,64119],'mapped','\u52FA'],[[64120,64120],'mapped','\u559D'],[[64121,64121],'mapped','\u5555'],[[64122,64122],'mapped','\u5599'],[[64123,64123],'mapped','\u55E2'],[[64124,64124],'mapped','\u585A'],[[64125,64125],'mapped','\u58B3'],[[64126,64126],'mapped','\u5944'],[[64127,64127],'mapped','\u5954'],[[64128,64128],'mapped','\u5A62'],[[64129,64129],'mapped','\u5B28'],[[64130,64130],'mapped','\u5ED2'],[[64131,64131],'mapped','\u5ED9'],[[64132,64132],'mapped','\u5F69'],[[64133,64133],'mapped','\u5FAD'],[[64134,64134],'mapped','\u60D8'],[[64135,64135],'mapped','\u614E'],[[64136,64136],'mapped','\u6108'],[[64137,64137],'mapped','\u618E'],[[64138,64138],'mapped','\u6160'],[[64139,64139],'mapped','\u61F2'],[[64140,64140],'mapped','\u6234'],[[64141,64141],'mapped','\u63C4'],[[64142,64142],'mapped','\u641C'],[[64143,64143],'mapped','\u6452'],[[64144,64144],'mapped','\u6556'],[[64145,64145],'mapped','\u6674'],[[64146,64146],'mapped','\u6717'],[[64147,64147],'mapped','\u671B'],[[64148,64148],'mapped','\u6756'],[[64149,64149],'mapped','\u6B79'],[[64150,64150],'mapped','\u6BBA'],[[64151,64151],'mapped','\u6D41'],[[64152,64152],'mapped','\u6EDB'],[[64153,64153],'mapped','\u6ECB'],[[64154,64154],'mapped','\u6F22'],[[64155,64155],'mapped','\u701E'],[[64156,64156],'mapped','\u716E'],[[64157,64157],'mapped','\u77A7'],[[64158,64158],'mapped','\u7235'],[[64159,64159],'mapped','\u72AF'],[[64160,64160],'mapped','\u732A'],[[64161,64161],'mapped','\u7471'],[[64162,64162],'mapped','\u7506'],[[64163,64163],'mapped','\u753B'],[[64164,64164],'mapped','\u761D'],[[64165,64165],'mapped','\u761F'],[[64166,64166],'mapped','\u76CA'],[[64167,64167],'mapped','\u76DB'],[[64168,64168],'mapped','\u76F4'],[[64169,64169],'mapped','\u774A'],[[64170,64170],'mapped','\u7740'],[[64171,64171],'mapped','\u78CC'],[[64172,64172],'mapped','\u7AB1'],[[64173,64173],'mapped','\u7BC0'],[[64174,64174],'mapped','\u7C7B'],[[64175,64175],'mapped','\u7D5B'],[[64176,64176],'mapped','\u7DF4'],[[64177,64177],'mapped','\u7F3E'],[[64178,64178],'mapped','\u8005'],[[64179,64179],'mapped','\u8352'],[[64180,64180],'mapped','\u83EF'],[[64181,64181],'mapped','\u8779'],[[64182,64182],'mapped','\u8941'],[[64183,64183],'mapped','\u8986'],[[64184,64184],'mapped','\u8996'],[[64185,64185],'mapped','\u8ABF'],[[64186,64186],'mapped','\u8AF8'],[[64187,64187],'mapped','\u8ACB'],[[64188,64188],'mapped','\u8B01'],[[64189,64189],'mapped','\u8AFE'],[[64190,64190],'mapped','\u8AED'],[[64191,64191],'mapped','\u8B39'],[[64192,64192],'mapped','\u8B8A'],[[64193,64193],'mapped','\u8D08'],[[64194,64194],'mapped','\u8F38'],[[64195,64195],'mapped','\u9072'],[[64196,64196],'mapped','\u9199'],[[64197,64197],'mapped','\u9276'],[[64198,64198],'mapped','\u967C'],[[64199,64199],'mapped','\u96E3'],[[64200,64200],'mapped','\u9756'],[[64201,64201],'mapped','\u97DB'],[[64202,64202],'mapped','\u97FF'],[[64203,64203],'mapped','\u980B'],[[64204,64204],'mapped','\u983B'],[[64205,64205],'mapped','\u9B12'],[[64206,64206],'mapped','\u9F9C'],[[64207,64207],'mapped','\uD84A\uDC4A'],[[64208,64208],'mapped','\uD84A\uDC44'],[[64209,64209],'mapped','\uD84C\uDFD5'],[[64210,64210],'mapped','\u3B9D'],[[64211,64211],'mapped','\u4018'],[[64212,64212],'mapped','\u4039'],[[64213,64213],'mapped','\uD854\uDE49'],[[64214,64214],'mapped','\uD857\uDCD0'],[[64215,64215],'mapped','\uD85F\uDED3'],[[64216,64216],'mapped','\u9F43'],[[64217,64217],'mapped','\u9F8E'],[[64218,64255],'disallowed'],[[64256,64256],'mapped','ff'],[[64257,64257],'mapped','fi'],[[64258,64258],'mapped','fl'],[[64259,64259],'mapped','ffi'],[[64260,64260],'mapped','ffl'],[[64261,64262],'mapped','st'],[[64263,64274],'disallowed'],[[64275,64275],'mapped','\u0574\u0576'],[[64276,64276],'mapped','\u0574\u0565'],[[64277,64277],'mapped','\u0574\u056B'],[[64278,64278],'mapped','\u057E\u0576'],[[64279,64279],'mapped','\u0574\u056D'],[[64280,64284],'disallowed'],[[64285,64285],'mapped','\u05D9\u05B4'],[[64286,64286],'valid'],[[64287,64287],'mapped','\u05F2\u05B7'],[[64288,64288],'mapped','\u05E2'],[[64289,64289],'mapped','\u05D0'],[[64290,64290],'mapped','\u05D3'],[[64291,64291],'mapped','\u05D4'],[[64292,64292],'mapped','\u05DB'],[[64293,64293],'mapped','\u05DC'],[[64294,64294],'mapped','\u05DD'],[[64295,64295],'mapped','\u05E8'],[[64296,64296],'mapped','\u05EA'],[[64297,64297],'disallowed_STD3_mapped','+'],[[64298,64298],'mapped','\u05E9\u05C1'],[[64299,64299],'mapped','\u05E9\u05C2'],[[64300,64300],'mapped','\u05E9\u05BC\u05C1'],[[64301,64301],'mapped','\u05E9\u05BC\u05C2'],[[64302,64302],'mapped','\u05D0\u05B7'],[[64303,64303],'mapped','\u05D0\u05B8'],[[64304,64304],'mapped','\u05D0\u05BC'],[[64305,64305],'mapped','\u05D1\u05BC'],[[64306,64306],'mapped','\u05D2\u05BC'],[[64307,64307],'mapped','\u05D3\u05BC'],[[64308,64308],'mapped','\u05D4\u05BC'],[[64309,64309],'mapped','\u05D5\u05BC'],[[64310,64310],'mapped','\u05D6\u05BC'],[[64311,64311],'disallowed'],[[64312,64312],'mapped','\u05D8\u05BC'],[[64313,64313],'mapped','\u05D9\u05BC'],[[64314,64314],'mapped','\u05DA\u05BC'],[[64315,64315],'mapped','\u05DB\u05BC'],[[64316,64316],'mapped','\u05DC\u05BC'],[[64317,64317],'disallowed'],[[64318,64318],'mapped','\u05DE\u05BC'],[[64319,64319],'disallowed'],[[64320,64320],'mapped','\u05E0\u05BC'],[[64321,64321],'mapped','\u05E1\u05BC'],[[64322,64322],'disallowed'],[[64323,64323],'mapped','\u05E3\u05BC'],[[64324,64324],'mapped','\u05E4\u05BC'],[[64325,64325],'disallowed'],[[64326,64326],'mapped','\u05E6\u05BC'],[[64327,64327],'mapped','\u05E7\u05BC'],[[64328,64328],'mapped','\u05E8\u05BC'],[[64329,64329],'mapped','\u05E9\u05BC'],[[64330,64330],'mapped','\u05EA\u05BC'],[[64331,64331],'mapped','\u05D5\u05B9'],[[64332,64332],'mapped','\u05D1\u05BF'],[[64333,64333],'mapped','\u05DB\u05BF'],[[64334,64334],'mapped','\u05E4\u05BF'],[[64335,64335],'mapped','\u05D0\u05DC'],[[64336,64337],'mapped','\u0671'],[[64338,64341],'mapped','\u067B'],[[64342,64345],'mapped','\u067E'],[[64346,64349],'mapped','\u0680'],[[64350,64353],'mapped','\u067A'],[[64354,64357],'mapped','\u067F'],[[64358,64361],'mapped','\u0679'],[[64362,64365],'mapped','\u06A4'],[[64366,64369],'mapped','\u06A6'],[[64370,64373],'mapped','\u0684'],[[64374,64377],'mapped','\u0683'],[[64378,64381],'mapped','\u0686'],[[64382,64385],'mapped','\u0687'],[[64386,64387],'mapped','\u068D'],[[64388,64389],'mapped','\u068C'],[[64390,64391],'mapped','\u068E'],[[64392,64393],'mapped','\u0688'],[[64394,64395],'mapped','\u0698'],[[64396,64397],'mapped','\u0691'],[[64398,64401],'mapped','\u06A9'],[[64402,64405],'mapped','\u06AF'],[[64406,64409],'mapped','\u06B3'],[[64410,64413],'mapped','\u06B1'],[[64414,64415],'mapped','\u06BA'],[[64416,64419],'mapped','\u06BB'],[[64420,64421],'mapped','\u06C0'],[[64422,64425],'mapped','\u06C1'],[[64426,64429],'mapped','\u06BE'],[[64430,64431],'mapped','\u06D2'],[[64432,64433],'mapped','\u06D3'],[[64434,64449],'valid','','NV8'],[[64450,64466],'disallowed'],[[64467,64470],'mapped','\u06AD'],[[64471,64472],'mapped','\u06C7'],[[64473,64474],'mapped','\u06C6'],[[64475,64476],'mapped','\u06C8'],[[64477,64477],'mapped','\u06C7\u0674'],[[64478,64479],'mapped','\u06CB'],[[64480,64481],'mapped','\u06C5'],[[64482,64483],'mapped','\u06C9'],[[64484,64487],'mapped','\u06D0'],[[64488,64489],'mapped','\u0649'],[[64490,64491],'mapped','\u0626\u0627'],[[64492,64493],'mapped','\u0626\u06D5'],[[64494,64495],'mapped','\u0626\u0648'],[[64496,64497],'mapped','\u0626\u06C7'],[[64498,64499],'mapped','\u0626\u06C6'],[[64500,64501],'mapped','\u0626\u06C8'],[[64502,64504],'mapped','\u0626\u06D0'],[[64505,64507],'mapped','\u0626\u0649'],[[64508,64511],'mapped','\u06CC'],[[64512,64512],'mapped','\u0626\u062C'],[[64513,64513],'mapped','\u0626\u062D'],[[64514,64514],'mapped','\u0626\u0645'],[[64515,64515],'mapped','\u0626\u0649'],[[64516,64516],'mapped','\u0626\u064A'],[[64517,64517],'mapped','\u0628\u062C'],[[64518,64518],'mapped','\u0628\u062D'],[[64519,64519],'mapped','\u0628\u062E'],[[64520,64520],'mapped','\u0628\u0645'],[[64521,64521],'mapped','\u0628\u0649'],[[64522,64522],'mapped','\u0628\u064A'],[[64523,64523],'mapped','\u062A\u062C'],[[64524,64524],'mapped','\u062A\u062D'],[[64525,64525],'mapped','\u062A\u062E'],[[64526,64526],'mapped','\u062A\u0645'],[[64527,64527],'mapped','\u062A\u0649'],[[64528,64528],'mapped','\u062A\u064A'],[[64529,64529],'mapped','\u062B\u062C'],[[64530,64530],'mapped','\u062B\u0645'],[[64531,64531],'mapped','\u062B\u0649'],[[64532,64532],'mapped','\u062B\u064A'],[[64533,64533],'mapped','\u062C\u062D'],[[64534,64534],'mapped','\u062C\u0645'],[[64535,64535],'mapped','\u062D\u062C'],[[64536,64536],'mapped','\u062D\u0645'],[[64537,64537],'mapped','\u062E\u062C'],[[64538,64538],'mapped','\u062E\u062D'],[[64539,64539],'mapped','\u062E\u0645'],[[64540,64540],'mapped','\u0633\u062C'],[[64541,64541],'mapped','\u0633\u062D'],[[64542,64542],'mapped','\u0633\u062E'],[[64543,64543],'mapped','\u0633\u0645'],[[64544,64544],'mapped','\u0635\u062D'],[[64545,64545],'mapped','\u0635\u0645'],[[64546,64546],'mapped','\u0636\u062C'],[[64547,64547],'mapped','\u0636\u062D'],[[64548,64548],'mapped','\u0636\u062E'],[[64549,64549],'mapped','\u0636\u0645'],[[64550,64550],'mapped','\u0637\u062D'],[[64551,64551],'mapped','\u0637\u0645'],[[64552,64552],'mapped','\u0638\u0645'],[[64553,64553],'mapped','\u0639\u062C'],[[64554,64554],'mapped','\u0639\u0645'],[[64555,64555],'mapped','\u063A\u062C'],[[64556,64556],'mapped','\u063A\u0645'],[[64557,64557],'mapped','\u0641\u062C'],[[64558,64558],'mapped','\u0641\u062D'],[[64559,64559],'mapped','\u0641\u062E'],[[64560,64560],'mapped','\u0641\u0645'],[[64561,64561],'mapped','\u0641\u0649'],[[64562,64562],'mapped','\u0641\u064A'],[[64563,64563],'mapped','\u0642\u062D'],[[64564,64564],'mapped','\u0642\u0645'],[[64565,64565],'mapped','\u0642\u0649'],[[64566,64566],'mapped','\u0642\u064A'],[[64567,64567],'mapped','\u0643\u0627'],[[64568,64568],'mapped','\u0643\u062C'],[[64569,64569],'mapped','\u0643\u062D'],[[64570,64570],'mapped','\u0643\u062E'],[[64571,64571],'mapped','\u0643\u0644'],[[64572,64572],'mapped','\u0643\u0645'],[[64573,64573],'mapped','\u0643\u0649'],[[64574,64574],'mapped','\u0643\u064A'],[[64575,64575],'mapped','\u0644\u062C'],[[64576,64576],'mapped','\u0644\u062D'],[[64577,64577],'mapped','\u0644\u062E'],[[64578,64578],'mapped','\u0644\u0645'],[[64579,64579],'mapped','\u0644\u0649'],[[64580,64580],'mapped','\u0644\u064A'],[[64581,64581],'mapped','\u0645\u062C'],[[64582,64582],'mapped','\u0645\u062D'],[[64583,64583],'mapped','\u0645\u062E'],[[64584,64584],'mapped','\u0645\u0645'],[[64585,64585],'mapped','\u0645\u0649'],[[64586,64586],'mapped','\u0645\u064A'],[[64587,64587],'mapped','\u0646\u062C'],[[64588,64588],'mapped','\u0646\u062D'],[[64589,64589],'mapped','\u0646\u062E'],[[64590,64590],'mapped','\u0646\u0645'],[[64591,64591],'mapped','\u0646\u0649'],[[64592,64592],'mapped','\u0646\u064A'],[[64593,64593],'mapped','\u0647\u062C'],[[64594,64594],'mapped','\u0647\u0645'],[[64595,64595],'mapped','\u0647\u0649'],[[64596,64596],'mapped','\u0647\u064A'],[[64597,64597],'mapped','\u064A\u062C'],[[64598,64598],'mapped','\u064A\u062D'],[[64599,64599],'mapped','\u064A\u062E'],[[64600,64600],'mapped','\u064A\u0645'],[[64601,64601],'mapped','\u064A\u0649'],[[64602,64602],'mapped','\u064A\u064A'],[[64603,64603],'mapped','\u0630\u0670'],[[64604,64604],'mapped','\u0631\u0670'],[[64605,64605],'mapped','\u0649\u0670'],[[64606,64606],'disallowed_STD3_mapped',' \u064C\u0651'],[[64607,64607],'disallowed_STD3_mapped',' \u064D\u0651'],[[64608,64608],'disallowed_STD3_mapped',' \u064E\u0651'],[[64609,64609],'disallowed_STD3_mapped',' \u064F\u0651'],[[64610,64610],'disallowed_STD3_mapped',' \u0650\u0651'],[[64611,64611],'disallowed_STD3_mapped',' \u0651\u0670'],[[64612,64612],'mapped','\u0626\u0631'],[[64613,64613],'mapped','\u0626\u0632'],[[64614,64614],'mapped','\u0626\u0645'],[[64615,64615],'mapped','\u0626\u0646'],[[64616,64616],'mapped','\u0626\u0649'],[[64617,64617],'mapped','\u0626\u064A'],[[64618,64618],'mapped','\u0628\u0631'],[[64619,64619],'mapped','\u0628\u0632'],[[64620,64620],'mapped','\u0628\u0645'],[[64621,64621],'mapped','\u0628\u0646'],[[64622,64622],'mapped','\u0628\u0649'],[[64623,64623],'mapped','\u0628\u064A'],[[64624,64624],'mapped','\u062A\u0631'],[[64625,64625],'mapped','\u062A\u0632'],[[64626,64626],'mapped','\u062A\u0645'],[[64627,64627],'mapped','\u062A\u0646'],[[64628,64628],'mapped','\u062A\u0649'],[[64629,64629],'mapped','\u062A\u064A'],[[64630,64630],'mapped','\u062B\u0631'],[[64631,64631],'mapped','\u062B\u0632'],[[64632,64632],'mapped','\u062B\u0645'],[[64633,64633],'mapped','\u062B\u0646'],[[64634,64634],'mapped','\u062B\u0649'],[[64635,64635],'mapped','\u062B\u064A'],[[64636,64636],'mapped','\u0641\u0649'],[[64637,64637],'mapped','\u0641\u064A'],[[64638,64638],'mapped','\u0642\u0649'],[[64639,64639],'mapped','\u0642\u064A'],[[64640,64640],'mapped','\u0643\u0627'],[[64641,64641],'mapped','\u0643\u0644'],[[64642,64642],'mapped','\u0643\u0645'],[[64643,64643],'mapped','\u0643\u0649'],[[64644,64644],'mapped','\u0643\u064A'],[[64645,64645],'mapped','\u0644\u0645'],[[64646,64646],'mapped','\u0644\u0649'],[[64647,64647],'mapped','\u0644\u064A'],[[64648,64648],'mapped','\u0645\u0627'],[[64649,64649],'mapped','\u0645\u0645'],[[64650,64650],'mapped','\u0646\u0631'],[[64651,64651],'mapped','\u0646\u0632'],[[64652,64652],'mapped','\u0646\u0645'],[[64653,64653],'mapped','\u0646\u0646'],[[64654,64654],'mapped','\u0646\u0649'],[[64655,64655],'mapped','\u0646\u064A'],[[64656,64656],'mapped','\u0649\u0670'],[[64657,64657],'mapped','\u064A\u0631'],[[64658,64658],'mapped','\u064A\u0632'],[[64659,64659],'mapped','\u064A\u0645'],[[64660,64660],'mapped','\u064A\u0646'],[[64661,64661],'mapped','\u064A\u0649'],[[64662,64662],'mapped','\u064A\u064A'],[[64663,64663],'mapped','\u0626\u062C'],[[64664,64664],'mapped','\u0626\u062D'],[[64665,64665],'mapped','\u0626\u062E'],[[64666,64666],'mapped','\u0626\u0645'],[[64667,64667],'mapped','\u0626\u0647'],[[64668,64668],'mapped','\u0628\u062C'],[[64669,64669],'mapped','\u0628\u062D'],[[64670,64670],'mapped','\u0628\u062E'],[[64671,64671],'mapped','\u0628\u0645'],[[64672,64672],'mapped','\u0628\u0647'],[[64673,64673],'mapped','\u062A\u062C'],[[64674,64674],'mapped','\u062A\u062D'],[[64675,64675],'mapped','\u062A\u062E'],[[64676,64676],'mapped','\u062A\u0645'],[[64677,64677],'mapped','\u062A\u0647'],[[64678,64678],'mapped','\u062B\u0645'],[[64679,64679],'mapped','\u062C\u062D'],[[64680,64680],'mapped','\u062C\u0645'],[[64681,64681],'mapped','\u062D\u062C'],[[64682,64682],'mapped','\u062D\u0645'],[[64683,64683],'mapped','\u062E\u062C'],[[64684,64684],'mapped','\u062E\u0645'],[[64685,64685],'mapped','\u0633\u062C'],[[64686,64686],'mapped','\u0633\u062D'],[[64687,64687],'mapped','\u0633\u062E'],[[64688,64688],'mapped','\u0633\u0645'],[[64689,64689],'mapped','\u0635\u062D'],[[64690,64690],'mapped','\u0635\u062E'],[[64691,64691],'mapped','\u0635\u0645'],[[64692,64692],'mapped','\u0636\u062C'],[[64693,64693],'mapped','\u0636\u062D'],[[64694,64694],'mapped','\u0636\u062E'],[[64695,64695],'mapped','\u0636\u0645'],[[64696,64696],'mapped','\u0637\u062D'],[[64697,64697],'mapped','\u0638\u0645'],[[64698,64698],'mapped','\u0639\u062C'],[[64699,64699],'mapped','\u0639\u0645'],[[64700,64700],'mapped','\u063A\u062C'],[[64701,64701],'mapped','\u063A\u0645'],[[64702,64702],'mapped','\u0641\u062C'],[[64703,64703],'mapped','\u0641\u062D'],[[64704,64704],'mapped','\u0641\u062E'],[[64705,64705],'mapped','\u0641\u0645'],[[64706,64706],'mapped','\u0642\u062D'],[[64707,64707],'mapped','\u0642\u0645'],[[64708,64708],'mapped','\u0643\u062C'],[[64709,64709],'mapped','\u0643\u062D'],[[64710,64710],'mapped','\u0643\u062E'],[[64711,64711],'mapped','\u0643\u0644'],[[64712,64712],'mapped','\u0643\u0645'],[[64713,64713],'mapped','\u0644\u062C'],[[64714,64714],'mapped','\u0644\u062D'],[[64715,64715],'mapped','\u0644\u062E'],[[64716,64716],'mapped','\u0644\u0645'],[[64717,64717],'mapped','\u0644\u0647'],[[64718,64718],'mapped','\u0645\u062C'],[[64719,64719],'mapped','\u0645\u062D'],[[64720,64720],'mapped','\u0645\u062E'],[[64721,64721],'mapped','\u0645\u0645'],[[64722,64722],'mapped','\u0646\u062C'],[[64723,64723],'mapped','\u0646\u062D'],[[64724,64724],'mapped','\u0646\u062E'],[[64725,64725],'mapped','\u0646\u0645'],[[64726,64726],'mapped','\u0646\u0647'],[[64727,64727],'mapped','\u0647\u062C'],[[64728,64728],'mapped','\u0647\u0645'],[[64729,64729],'mapped','\u0647\u0670'],[[64730,64730],'mapped','\u064A\u062C'],[[64731,64731],'mapped','\u064A\u062D'],[[64732,64732],'mapped','\u064A\u062E'],[[64733,64733],'mapped','\u064A\u0645'],[[64734,64734],'mapped','\u064A\u0647'],[[64735,64735],'mapped','\u0626\u0645'],[[64736,64736],'mapped','\u0626\u0647'],[[64737,64737],'mapped','\u0628\u0645'],[[64738,64738],'mapped','\u0628\u0647'],[[64739,64739],'mapped','\u062A\u0645'],[[64740,64740],'mapped','\u062A\u0647'],[[64741,64741],'mapped','\u062B\u0645'],[[64742,64742],'mapped','\u062B\u0647'],[[64743,64743],'mapped','\u0633\u0645'],[[64744,64744],'mapped','\u0633\u0647'],[[64745,64745],'mapped','\u0634\u0645'],[[64746,64746],'mapped','\u0634\u0647'],[[64747,64747],'mapped','\u0643\u0644'],[[64748,64748],'mapped','\u0643\u0645'],[[64749,64749],'mapped','\u0644\u0645'],[[64750,64750],'mapped','\u0646\u0645'],[[64751,64751],'mapped','\u0646\u0647'],[[64752,64752],'mapped','\u064A\u0645'],[[64753,64753],'mapped','\u064A\u0647'],[[64754,64754],'mapped','\u0640\u064E\u0651'],[[64755,64755],'mapped','\u0640\u064F\u0651'],[[64756,64756],'mapped','\u0640\u0650\u0651'],[[64757,64757],'mapped','\u0637\u0649'],[[64758,64758],'mapped','\u0637\u064A'],[[64759,64759],'mapped','\u0639\u0649'],[[64760,64760],'mapped','\u0639\u064A'],[[64761,64761],'mapped','\u063A\u0649'],[[64762,64762],'mapped','\u063A\u064A'],[[64763,64763],'mapped','\u0633\u0649'],[[64764,64764],'mapped','\u0633\u064A'],[[64765,64765],'mapped','\u0634\u0649'],[[64766,64766],'mapped','\u0634\u064A'],[[64767,64767],'mapped','\u062D\u0649'],[[64768,64768],'mapped','\u062D\u064A'],[[64769,64769],'mapped','\u062C\u0649'],[[64770,64770],'mapped','\u062C\u064A'],[[64771,64771],'mapped','\u062E\u0649'],[[64772,64772],'mapped','\u062E\u064A'],[[64773,64773],'mapped','\u0635\u0649'],[[64774,64774],'mapped','\u0635\u064A'],[[64775,64775],'mapped','\u0636\u0649'],[[64776,64776],'mapped','\u0636\u064A'],[[64777,64777],'mapped','\u0634\u062C'],[[64778,64778],'mapped','\u0634\u062D'],[[64779,64779],'mapped','\u0634\u062E'],[[64780,64780],'mapped','\u0634\u0645'],[[64781,64781],'mapped','\u0634\u0631'],[[64782,64782],'mapped','\u0633\u0631'],[[64783,64783],'mapped','\u0635\u0631'],[[64784,64784],'mapped','\u0636\u0631'],[[64785,64785],'mapped','\u0637\u0649'],[[64786,64786],'mapped','\u0637\u064A'],[[64787,64787],'mapped','\u0639\u0649'],[[64788,64788],'mapped','\u0639\u064A'],[[64789,64789],'mapped','\u063A\u0649'],[[64790,64790],'mapped','\u063A\u064A'],[[64791,64791],'mapped','\u0633\u0649'],[[64792,64792],'mapped','\u0633\u064A'],[[64793,64793],'mapped','\u0634\u0649'],[[64794,64794],'mapped','\u0634\u064A'],[[64795,64795],'mapped','\u062D\u0649'],[[64796,64796],'mapped','\u062D\u064A'],[[64797,64797],'mapped','\u062C\u0649'],[[64798,64798],'mapped','\u062C\u064A'],[[64799,64799],'mapped','\u062E\u0649'],[[64800,64800],'mapped','\u062E\u064A'],[[64801,64801],'mapped','\u0635\u0649'],[[64802,64802],'mapped','\u0635\u064A'],[[64803,64803],'mapped','\u0636\u0649'],[[64804,64804],'mapped','\u0636\u064A'],[[64805,64805],'mapped','\u0634\u062C'],[[64806,64806],'mapped','\u0634\u062D'],[[64807,64807],'mapped','\u0634\u062E'],[[64808,64808],'mapped','\u0634\u0645'],[[64809,64809],'mapped','\u0634\u0631'],[[64810,64810],'mapped','\u0633\u0631'],[[64811,64811],'mapped','\u0635\u0631'],[[64812,64812],'mapped','\u0636\u0631'],[[64813,64813],'mapped','\u0634\u062C'],[[64814,64814],'mapped','\u0634\u062D'],[[64815,64815],'mapped','\u0634\u062E'],[[64816,64816],'mapped','\u0634\u0645'],[[64817,64817],'mapped','\u0633\u0647'],[[64818,64818],'mapped','\u0634\u0647'],[[64819,64819],'mapped','\u0637\u0645'],[[64820,64820],'mapped','\u0633\u062C'],[[64821,64821],'mapped','\u0633\u062D'],[[64822,64822],'mapped','\u0633\u062E'],[[64823,64823],'mapped','\u0634\u062C'],[[64824,64824],'mapped','\u0634\u062D'],[[64825,64825],'mapped','\u0634\u062E'],[[64826,64826],'mapped','\u0637\u0645'],[[64827,64827],'mapped','\u0638\u0645'],[[64828,64829],'mapped','\u0627\u064B'],[[64830,64831],'valid','','NV8'],[[64832,64847],'disallowed'],[[64848,64848],'mapped','\u062A\u062C\u0645'],[[64849,64850],'mapped','\u062A\u062D\u062C'],[[64851,64851],'mapped','\u062A\u062D\u0645'],[[64852,64852],'mapped','\u062A\u062E\u0645'],[[64853,64853],'mapped','\u062A\u0645\u062C'],[[64854,64854],'mapped','\u062A\u0645\u062D'],[[64855,64855],'mapped','\u062A\u0645\u062E'],[[64856,64857],'mapped','\u062C\u0645\u062D'],[[64858,64858],'mapped','\u062D\u0645\u064A'],[[64859,64859],'mapped','\u062D\u0645\u0649'],[[64860,64860],'mapped','\u0633\u062D\u062C'],[[64861,64861],'mapped','\u0633\u062C\u062D'],[[64862,64862],'mapped','\u0633\u062C\u0649'],[[64863,64864],'mapped','\u0633\u0645\u062D'],[[64865,64865],'mapped','\u0633\u0645\u062C'],[[64866,64867],'mapped','\u0633\u0645\u0645'],[[64868,64869],'mapped','\u0635\u062D\u062D'],[[64870,64870],'mapped','\u0635\u0645\u0645'],[[64871,64872],'mapped','\u0634\u062D\u0645'],[[64873,64873],'mapped','\u0634\u062C\u064A'],[[64874,64875],'mapped','\u0634\u0645\u062E'],[[64876,64877],'mapped','\u0634\u0645\u0645'],[[64878,64878],'mapped','\u0636\u062D\u0649'],[[64879,64880],'mapped','\u0636\u062E\u0645'],[[64881,64882],'mapped','\u0637\u0645\u062D'],[[64883,64883],'mapped','\u0637\u0645\u0645'],[[64884,64884],'mapped','\u0637\u0645\u064A'],[[64885,64885],'mapped','\u0639\u062C\u0645'],[[64886,64887],'mapped','\u0639\u0645\u0645'],[[64888,64888],'mapped','\u0639\u0645\u0649'],[[64889,64889],'mapped','\u063A\u0645\u0645'],[[64890,64890],'mapped','\u063A\u0645\u064A'],[[64891,64891],'mapped','\u063A\u0645\u0649'],[[64892,64893],'mapped','\u0641\u062E\u0645'],[[64894,64894],'mapped','\u0642\u0645\u062D'],[[64895,64895],'mapped','\u0642\u0645\u0645'],[[64896,64896],'mapped','\u0644\u062D\u0645'],[[64897,64897],'mapped','\u0644\u062D\u064A'],[[64898,64898],'mapped','\u0644\u062D\u0649'],[[64899,64900],'mapped','\u0644\u062C\u062C'],[[64901,64902],'mapped','\u0644\u062E\u0645'],[[64903,64904],'mapped','\u0644\u0645\u062D'],[[64905,64905],'mapped','\u0645\u062D\u062C'],[[64906,64906],'mapped','\u0645\u062D\u0645'],[[64907,64907],'mapped','\u0645\u062D\u064A'],[[64908,64908],'mapped','\u0645\u062C\u062D'],[[64909,64909],'mapped','\u0645\u062C\u0645'],[[64910,64910],'mapped','\u0645\u062E\u062C'],[[64911,64911],'mapped','\u0645\u062E\u0645'],[[64912,64913],'disallowed'],[[64914,64914],'mapped','\u0645\u062C\u062E'],[[64915,64915],'mapped','\u0647\u0645\u062C'],[[64916,64916],'mapped','\u0647\u0645\u0645'],[[64917,64917],'mapped','\u0646\u062D\u0645'],[[64918,64918],'mapped','\u0646\u062D\u0649'],[[64919,64920],'mapped','\u0646\u062C\u0645'],[[64921,64921],'mapped','\u0646\u062C\u0649'],[[64922,64922],'mapped','\u0646\u0645\u064A'],[[64923,64923],'mapped','\u0646\u0645\u0649'],[[64924,64925],'mapped','\u064A\u0645\u0645'],[[64926,64926],'mapped','\u0628\u062E\u064A'],[[64927,64927],'mapped','\u062A\u062C\u064A'],[[64928,64928],'mapped','\u062A\u062C\u0649'],[[64929,64929],'mapped','\u062A\u062E\u064A'],[[64930,64930],'mapped','\u062A\u062E\u0649'],[[64931,64931],'mapped','\u062A\u0645\u064A'],[[64932,64932],'mapped','\u062A\u0645\u0649'],[[64933,64933],'mapped','\u062C\u0645\u064A'],[[64934,64934],'mapped','\u062C\u062D\u0649'],[[64935,64935],'mapped','\u062C\u0645\u0649'],[[64936,64936],'mapped','\u0633\u062E\u0649'],[[64937,64937],'mapped','\u0635\u062D\u064A'],[[64938,64938],'mapped','\u0634\u062D\u064A'],[[64939,64939],'mapped','\u0636\u062D\u064A'],[[64940,64940],'mapped','\u0644\u062C\u064A'],[[64941,64941],'mapped','\u0644\u0645\u064A'],[[64942,64942],'mapped','\u064A\u062D\u064A'],[[64943,64943],'mapped','\u064A\u062C\u064A'],[[64944,64944],'mapped','\u064A\u0645\u064A'],[[64945,64945],'mapped','\u0645\u0645\u064A'],[[64946,64946],'mapped','\u0642\u0645\u064A'],[[64947,64947],'mapped','\u0646\u062D\u064A'],[[64948,64948],'mapped','\u0642\u0645\u062D'],[[64949,64949],'mapped','\u0644\u062D\u0645'],[[64950,64950],'mapped','\u0639\u0645\u064A'],[[64951,64951],'mapped','\u0643\u0645\u064A'],[[64952,64952],'mapped','\u0646\u062C\u062D'],[[64953,64953],'mapped','\u0645\u062E\u064A'],[[64954,64954],'mapped','\u0644\u062C\u0645'],[[64955,64955],'mapped','\u0643\u0645\u0645'],[[64956,64956],'mapped','\u0644\u062C\u0645'],[[64957,64957],'mapped','\u0646\u062C\u062D'],[[64958,64958],'mapped','\u062C\u062D\u064A'],[[64959,64959],'mapped','\u062D\u062C\u064A'],[[64960,64960],'mapped','\u0645\u062C\u064A'],[[64961,64961],'mapped','\u0641\u0645\u064A'],[[64962,64962],'mapped','\u0628\u062D\u064A'],[[64963,64963],'mapped','\u0643\u0645\u0645'],[[64964,64964],'mapped','\u0639\u062C\u0645'],[[64965,64965],'mapped','\u0635\u0645\u0645'],[[64966,64966],'mapped','\u0633\u062E\u064A'],[[64967,64967],'mapped','\u0646\u062C\u064A'],[[64968,64975],'disallowed'],[[64976,65007],'disallowed'],[[65008,65008],'mapped','\u0635\u0644\u06D2'],[[65009,65009],'mapped','\u0642\u0644\u06D2'],[[65010,65010],'mapped','\u0627\u0644\u0644\u0647'],[[65011,65011],'mapped','\u0627\u0643\u0628\u0631'],[[65012,65012],'mapped','\u0645\u062D\u0645\u062F'],[[65013,65013],'mapped','\u0635\u0644\u0639\u0645'],[[65014,65014],'mapped','\u0631\u0633\u0648\u0644'],[[65015,65015],'mapped','\u0639\u0644\u064A\u0647'],[[65016,65016],'mapped','\u0648\u0633\u0644\u0645'],[[65017,65017],'mapped','\u0635\u0644\u0649'],[[65018,65018],'disallowed_STD3_mapped','\u0635\u0644\u0649 \u0627\u0644\u0644\u0647 \u0639\u0644\u064A\u0647 \u0648\u0633\u0644\u0645'],[[65019,65019],'disallowed_STD3_mapped','\u062C\u0644 \u062C\u0644\u0627\u0644\u0647'],[[65020,65020],'mapped','\u0631\u06CC\u0627\u0644'],[[65021,65021],'valid','','NV8'],[[65022,65023],'disallowed'],[[65024,65039],'ignored'],[[65040,65040],'disallowed_STD3_mapped',','],[[65041,65041],'mapped','\u3001'],[[65042,65042],'disallowed'],[[65043,65043],'disallowed_STD3_mapped',':'],[[65044,65044],'disallowed_STD3_mapped',';'],[[65045,65045],'disallowed_STD3_mapped','!'],[[65046,65046],'disallowed_STD3_mapped','?'],[[65047,65047],'mapped','\u3016'],[[65048,65048],'mapped','\u3017'],[[65049,65049],'disallowed'],[[65050,65055],'disallowed'],[[65056,65059],'valid'],[[65060,65062],'valid'],[[65063,65069],'valid'],[[65070,65071],'valid'],[[65072,65072],'disallowed'],[[65073,65073],'mapped','\u2014'],[[65074,65074],'mapped','\u2013'],[[65075,65076],'disallowed_STD3_mapped','_'],[[65077,65077],'disallowed_STD3_mapped','('],[[65078,65078],'disallowed_STD3_mapped',')'],[[65079,65079],'disallowed_STD3_mapped','{'],[[65080,65080],'disallowed_STD3_mapped','}'],[[65081,65081],'mapped','\u3014'],[[65082,65082],'mapped','\u3015'],[[65083,65083],'mapped','\u3010'],[[65084,65084],'mapped','\u3011'],[[65085,65085],'mapped','\u300A'],[[65086,65086],'mapped','\u300B'],[[65087,65087],'mapped','\u3008'],[[65088,65088],'mapped','\u3009'],[[65089,65089],'mapped','\u300C'],[[65090,65090],'mapped','\u300D'],[[65091,65091],'mapped','\u300E'],[[65092,65092],'mapped','\u300F'],[[65093,65094],'valid','','NV8'],[[65095,65095],'disallowed_STD3_mapped','['],[[65096,65096],'disallowed_STD3_mapped',']'],[[65097,65100],'disallowed_STD3_mapped',' \u0305'],[[65101,65103],'disallowed_STD3_mapped','_'],[[65104,65104],'disallowed_STD3_mapped',','],[[65105,65105],'mapped','\u3001'],[[65106,65106],'disallowed'],[[65107,65107],'disallowed'],[[65108,65108],'disallowed_STD3_mapped',';'],[[65109,65109],'disallowed_STD3_mapped',':'],[[65110,65110],'disallowed_STD3_mapped','?'],[[65111,65111],'disallowed_STD3_mapped','!'],[[65112,65112],'mapped','\u2014'],[[65113,65113],'disallowed_STD3_mapped','('],[[65114,65114],'disallowed_STD3_mapped',')'],[[65115,65115],'disallowed_STD3_mapped','{'],[[65116,65116],'disallowed_STD3_mapped','}'],[[65117,65117],'mapped','\u3014'],[[65118,65118],'mapped','\u3015'],[[65119,65119],'disallowed_STD3_mapped','#'],[[65120,65120],'disallowed_STD3_mapped','&'],[[65121,65121],'disallowed_STD3_mapped','*'],[[65122,65122],'disallowed_STD3_mapped','+'],[[65123,65123],'mapped','-'],[[65124,65124],'disallowed_STD3_mapped','<'],[[65125,65125],'disallowed_STD3_mapped','>'],[[65126,65126],'disallowed_STD3_mapped','='],[[65127,65127],'disallowed'],[[65128,65128],'disallowed_STD3_mapped','\\'],[[65129,65129],'disallowed_STD3_mapped','$'],[[65130,65130],'disallowed_STD3_mapped','%'],[[65131,65131],'disallowed_STD3_mapped','@'],[[65132,65135],'disallowed'],[[65136,65136],'disallowed_STD3_mapped',' \u064B'],[[65137,65137],'mapped','\u0640\u064B'],[[65138,65138],'disallowed_STD3_mapped',' \u064C'],[[65139,65139],'valid'],[[65140,65140],'disallowed_STD3_mapped',' \u064D'],[[65141,65141],'disallowed'],[[65142,65142],'disallowed_STD3_mapped',' \u064E'],[[65143,65143],'mapped','\u0640\u064E'],[[65144,65144],'disallowed_STD3_mapped',' \u064F'],[[65145,65145],'mapped','\u0640\u064F'],[[65146,65146],'disallowed_STD3_mapped',' \u0650'],[[65147,65147],'mapped','\u0640\u0650'],[[65148,65148],'disallowed_STD3_mapped',' \u0651'],[[65149,65149],'mapped','\u0640\u0651'],[[65150,65150],'disallowed_STD3_mapped',' \u0652'],[[65151,65151],'mapped','\u0640\u0652'],[[65152,65152],'mapped','\u0621'],[[65153,65154],'mapped','\u0622'],[[65155,65156],'mapped','\u0623'],[[65157,65158],'mapped','\u0624'],[[65159,65160],'mapped','\u0625'],[[65161,65164],'mapped','\u0626'],[[65165,65166],'mapped','\u0627'],[[65167,65170],'mapped','\u0628'],[[65171,65172],'mapped','\u0629'],[[65173,65176],'mapped','\u062A'],[[65177,65180],'mapped','\u062B'],[[65181,65184],'mapped','\u062C'],[[65185,65188],'mapped','\u062D'],[[65189,65192],'mapped','\u062E'],[[65193,65194],'mapped','\u062F'],[[65195,65196],'mapped','\u0630'],[[65197,65198],'mapped','\u0631'],[[65199,65200],'mapped','\u0632'],[[65201,65204],'mapped','\u0633'],[[65205,65208],'mapped','\u0634'],[[65209,65212],'mapped','\u0635'],[[65213,65216],'mapped','\u0636'],[[65217,65220],'mapped','\u0637'],[[65221,65224],'mapped','\u0638'],[[65225,65228],'mapped','\u0639'],[[65229,65232],'mapped','\u063A'],[[65233,65236],'mapped','\u0641'],[[65237,65240],'mapped','\u0642'],[[65241,65244],'mapped','\u0643'],[[65245,65248],'mapped','\u0644'],[[65249,65252],'mapped','\u0645'],[[65253,65256],'mapped','\u0646'],[[65257,65260],'mapped','\u0647'],[[65261,65262],'mapped','\u0648'],[[65263,65264],'mapped','\u0649'],[[65265,65268],'mapped','\u064A'],[[65269,65270],'mapped','\u0644\u0622'],[[65271,65272],'mapped','\u0644\u0623'],[[65273,65274],'mapped','\u0644\u0625'],[[65275,65276],'mapped','\u0644\u0627'],[[65277,65278],'disallowed'],[[65279,65279],'ignored'],[[65280,65280],'disallowed'],[[65281,65281],'disallowed_STD3_mapped','!'],[[65282,65282],'disallowed_STD3_mapped','"'],[[65283,65283],'disallowed_STD3_mapped','#'],[[65284,65284],'disallowed_STD3_mapped','$'],[[65285,65285],'disallowed_STD3_mapped','%'],[[65286,65286],'disallowed_STD3_mapped','&'],[[65287,65287],'disallowed_STD3_mapped','\''],[[65288,65288],'disallowed_STD3_mapped','('],[[65289,65289],'disallowed_STD3_mapped',')'],[[65290,65290],'disallowed_STD3_mapped','*'],[[65291,65291],'disallowed_STD3_mapped','+'],[[65292,65292],'disallowed_STD3_mapped',','],[[65293,65293],'mapped','-'],[[65294,65294],'mapped','.'],[[65295,65295],'disallowed_STD3_mapped','/'],[[65296,65296],'mapped','0'],[[65297,65297],'mapped','1'],[[65298,65298],'mapped','2'],[[65299,65299],'mapped','3'],[[65300,65300],'mapped','4'],[[65301,65301],'mapped','5'],[[65302,65302],'mapped','6'],[[65303,65303],'mapped','7'],[[65304,65304],'mapped','8'],[[65305,65305],'mapped','9'],[[65306,65306],'disallowed_STD3_mapped',':'],[[65307,65307],'disallowed_STD3_mapped',';'],[[65308,65308],'disallowed_STD3_mapped','<'],[[65309,65309],'disallowed_STD3_mapped','='],[[65310,65310],'disallowed_STD3_mapped','>'],[[65311,65311],'disallowed_STD3_mapped','?'],[[65312,65312],'disallowed_STD3_mapped','@'],[[65313,65313],'mapped','a'],[[65314,65314],'mapped','b'],[[65315,65315],'mapped','c'],[[65316,65316],'mapped','d'],[[65317,65317],'mapped','e'],[[65318,65318],'mapped','f'],[[65319,65319],'mapped','g'],[[65320,65320],'mapped','h'],[[65321,65321],'mapped','i'],[[65322,65322],'mapped','j'],[[65323,65323],'mapped','k'],[[65324,65324],'mapped','l'],[[65325,65325],'mapped','m'],[[65326,65326],'mapped','n'],[[65327,65327],'mapped','o'],[[65328,65328],'mapped','p'],[[65329,65329],'mapped','q'],[[65330,65330],'mapped','r'],[[65331,65331],'mapped','s'],[[65332,65332],'mapped','t'],[[65333,65333],'mapped','u'],[[65334,65334],'mapped','v'],[[65335,65335],'mapped','w'],[[65336,65336],'mapped','x'],[[65337,65337],'mapped','y'],[[65338,65338],'mapped','z'],[[65339,65339],'disallowed_STD3_mapped','['],[[65340,65340],'disallowed_STD3_mapped','\\'],[[65341,65341],'disallowed_STD3_mapped',']'],[[65342,65342],'disallowed_STD3_mapped','^'],[[65343,65343],'disallowed_STD3_mapped','_'],[[65344,65344],'disallowed_STD3_mapped','`'],[[65345,65345],'mapped','a'],[[65346,65346],'mapped','b'],[[65347,65347],'mapped','c'],[[65348,65348],'mapped','d'],[[65349,65349],'mapped','e'],[[65350,65350],'mapped','f'],[[65351,65351],'mapped','g'],[[65352,65352],'mapped','h'],[[65353,65353],'mapped','i'],[[65354,65354],'mapped','j'],[[65355,65355],'mapped','k'],[[65356,65356],'mapped','l'],[[65357,65357],'mapped','m'],[[65358,65358],'mapped','n'],[[65359,65359],'mapped','o'],[[65360,65360],'mapped','p'],[[65361,65361],'mapped','q'],[[65362,65362],'mapped','r'],[[65363,65363],'mapped','s'],[[65364,65364],'mapped','t'],[[65365,65365],'mapped','u'],[[65366,65366],'mapped','v'],[[65367,65367],'mapped','w'],[[65368,65368],'mapped','x'],[[65369,65369],'mapped','y'],[[65370,65370],'mapped','z'],[[65371,65371],'disallowed_STD3_mapped','{'],[[65372,65372],'disallowed_STD3_mapped','|'],[[65373,65373],'disallowed_STD3_mapped','}'],[[65374,65374],'disallowed_STD3_mapped','~'],[[65375,65375],'mapped','\u2985'],[[65376,65376],'mapped','\u2986'],[[65377,65377],'mapped','.'],[[65378,65378],'mapped','\u300C'],[[65379,65379],'mapped','\u300D'],[[65380,65380],'mapped','\u3001'],[[65381,65381],'mapped','\u30FB'],[[65382,65382],'mapped','\u30F2'],[[65383,65383],'mapped','\u30A1'],[[65384,65384],'mapped','\u30A3'],[[65385,65385],'mapped','\u30A5'],[[65386,65386],'mapped','\u30A7'],[[65387,65387],'mapped','\u30A9'],[[65388,65388],'mapped','\u30E3'],[[65389,65389],'mapped','\u30E5'],[[65390,65390],'mapped','\u30E7'],[[65391,65391],'mapped','\u30C3'],[[65392,65392],'mapped','\u30FC'],[[65393,65393],'mapped','\u30A2'],[[65394,65394],'mapped','\u30A4'],[[65395,65395],'mapped','\u30A6'],[[65396,65396],'mapped','\u30A8'],[[65397,65397],'mapped','\u30AA'],[[65398,65398],'mapped','\u30AB'],[[65399,65399],'mapped','\u30AD'],[[65400,65400],'mapped','\u30AF'],[[65401,65401],'mapped','\u30B1'],[[65402,65402],'mapped','\u30B3'],[[65403,65403],'mapped','\u30B5'],[[65404,65404],'mapped','\u30B7'],[[65405,65405],'mapped','\u30B9'],[[65406,65406],'mapped','\u30BB'],[[65407,65407],'mapped','\u30BD'],[[65408,65408],'mapped','\u30BF'],[[65409,65409],'mapped','\u30C1'],[[65410,65410],'mapped','\u30C4'],[[65411,65411],'mapped','\u30C6'],[[65412,65412],'mapped','\u30C8'],[[65413,65413],'mapped','\u30CA'],[[65414,65414],'mapped','\u30CB'],[[65415,65415],'mapped','\u30CC'],[[65416,65416],'mapped','\u30CD'],[[65417,65417],'mapped','\u30CE'],[[65418,65418],'mapped','\u30CF'],[[65419,65419],'mapped','\u30D2'],[[65420,65420],'mapped','\u30D5'],[[65421,65421],'mapped','\u30D8'],[[65422,65422],'mapped','\u30DB'],[[65423,65423],'mapped','\u30DE'],[[65424,65424],'mapped','\u30DF'],[[65425,65425],'mapped','\u30E0'],[[65426,65426],'mapped','\u30E1'],[[65427,65427],'mapped','\u30E2'],[[65428,65428],'mapped','\u30E4'],[[65429,65429],'mapped','\u30E6'],[[65430,65430],'mapped','\u30E8'],[[65431,65431],'mapped','\u30E9'],[[65432,65432],'mapped','\u30EA'],[[65433,65433],'mapped','\u30EB'],[[65434,65434],'mapped','\u30EC'],[[65435,65435],'mapped','\u30ED'],[[65436,65436],'mapped','\u30EF'],[[65437,65437],'mapped','\u30F3'],[[65438,65438],'mapped','\u3099'],[[65439,65439],'mapped','\u309A'],[[65440,65440],'disallowed'],[[65441,65441],'mapped','\u1100'],[[65442,65442],'mapped','\u1101'],[[65443,65443],'mapped','\u11AA'],[[65444,65444],'mapped','\u1102'],[[65445,65445],'mapped','\u11AC'],[[65446,65446],'mapped','\u11AD'],[[65447,65447],'mapped','\u1103'],[[65448,65448],'mapped','\u1104'],[[65449,65449],'mapped','\u1105'],[[65450,65450],'mapped','\u11B0'],[[65451,65451],'mapped','\u11B1'],[[65452,65452],'mapped','\u11B2'],[[65453,65453],'mapped','\u11B3'],[[65454,65454],'mapped','\u11B4'],[[65455,65455],'mapped','\u11B5'],[[65456,65456],'mapped','\u111A'],[[65457,65457],'mapped','\u1106'],[[65458,65458],'mapped','\u1107'],[[65459,65459],'mapped','\u1108'],[[65460,65460],'mapped','\u1121'],[[65461,65461],'mapped','\u1109'],[[65462,65462],'mapped','\u110A'],[[65463,65463],'mapped','\u110B'],[[65464,65464],'mapped','\u110C'],[[65465,65465],'mapped','\u110D'],[[65466,65466],'mapped','\u110E'],[[65467,65467],'mapped','\u110F'],[[65468,65468],'mapped','\u1110'],[[65469,65469],'mapped','\u1111'],[[65470,65470],'mapped','\u1112'],[[65471,65473],'disallowed'],[[65474,65474],'mapped','\u1161'],[[65475,65475],'mapped','\u1162'],[[65476,65476],'mapped','\u1163'],[[65477,65477],'mapped','\u1164'],[[65478,65478],'mapped','\u1165'],[[65479,65479],'mapped','\u1166'],[[65480,65481],'disallowed'],[[65482,65482],'mapped','\u1167'],[[65483,65483],'mapped','\u1168'],[[65484,65484],'mapped','\u1169'],[[65485,65485],'mapped','\u116A'],[[65486,65486],'mapped','\u116B'],[[65487,65487],'mapped','\u116C'],[[65488,65489],'disallowed'],[[65490,65490],'mapped','\u116D'],[[65491,65491],'mapped','\u116E'],[[65492,65492],'mapped','\u116F'],[[65493,65493],'mapped','\u1170'],[[65494,65494],'mapped','\u1171'],[[65495,65495],'mapped','\u1172'],[[65496,65497],'disallowed'],[[65498,65498],'mapped','\u1173'],[[65499,65499],'mapped','\u1174'],[[65500,65500],'mapped','\u1175'],[[65501,65503],'disallowed'],[[65504,65504],'mapped','\xA2'],[[65505,65505],'mapped','\xA3'],[[65506,65506],'mapped','\xAC'],[[65507,65507],'disallowed_STD3_mapped',' \u0304'],[[65508,65508],'mapped','\xA6'],[[65509,65509],'mapped','\xA5'],[[65510,65510],'mapped','\u20A9'],[[65511,65511],'disallowed'],[[65512,65512],'mapped','\u2502'],[[65513,65513],'mapped','\u2190'],[[65514,65514],'mapped','\u2191'],[[65515,65515],'mapped','\u2192'],[[65516,65516],'mapped','\u2193'],[[65517,65517],'mapped','\u25A0'],[[65518,65518],'mapped','\u25CB'],[[65519,65528],'disallowed'],[[65529,65531],'disallowed'],[[65532,65532],'disallowed'],[[65533,65533],'disallowed'],[[65534,65535],'disallowed'],[[65536,65547],'valid'],[[65548,65548],'disallowed'],[[65549,65574],'valid'],[[65575,65575],'disallowed'],[[65576,65594],'valid'],[[65595,65595],'disallowed'],[[65596,65597],'valid'],[[65598,65598],'disallowed'],[[65599,65613],'valid'],[[65614,65615],'disallowed'],[[65616,65629],'valid'],[[65630,65663],'disallowed'],[[65664,65786],'valid'],[[65787,65791],'disallowed'],[[65792,65794],'valid','','NV8'],[[65795,65798],'disallowed'],[[65799,65843],'valid','','NV8'],[[65844,65846],'disallowed'],[[65847,65855],'valid','','NV8'],[[65856,65930],'valid','','NV8'],[[65931,65932],'valid','','NV8'],[[65933,65934],'valid','','NV8'],[[65935,65935],'disallowed'],[[65936,65947],'valid','','NV8'],[[65948,65951],'disallowed'],[[65952,65952],'valid','','NV8'],[[65953,65999],'disallowed'],[[66000,66044],'valid','','NV8'],[[66045,66045],'valid'],[[66046,66175],'disallowed'],[[66176,66204],'valid'],[[66205,66207],'disallowed'],[[66208,66256],'valid'],[[66257,66271],'disallowed'],[[66272,66272],'valid'],[[66273,66299],'valid','','NV8'],[[66300,66303],'disallowed'],[[66304,66334],'valid'],[[66335,66335],'valid'],[[66336,66339],'valid','','NV8'],[[66340,66348],'disallowed'],[[66349,66351],'valid'],[[66352,66368],'valid'],[[66369,66369],'valid','','NV8'],[[66370,66377],'valid'],[[66378,66378],'valid','','NV8'],[[66379,66383],'disallowed'],[[66384,66426],'valid'],[[66427,66431],'disallowed'],[[66432,66461],'valid'],[[66462,66462],'disallowed'],[[66463,66463],'valid','','NV8'],[[66464,66499],'valid'],[[66500,66503],'disallowed'],[[66504,66511],'valid'],[[66512,66517],'valid','','NV8'],[[66518,66559],'disallowed'],[[66560,66560],'mapped','\uD801\uDC28'],[[66561,66561],'mapped','\uD801\uDC29'],[[66562,66562],'mapped','\uD801\uDC2A'],[[66563,66563],'mapped','\uD801\uDC2B'],[[66564,66564],'mapped','\uD801\uDC2C'],[[66565,66565],'mapped','\uD801\uDC2D'],[[66566,66566],'mapped','\uD801\uDC2E'],[[66567,66567],'mapped','\uD801\uDC2F'],[[66568,66568],'mapped','\uD801\uDC30'],[[66569,66569],'mapped','\uD801\uDC31'],[[66570,66570],'mapped','\uD801\uDC32'],[[66571,66571],'mapped','\uD801\uDC33'],[[66572,66572],'mapped','\uD801\uDC34'],[[66573,66573],'mapped','\uD801\uDC35'],[[66574,66574],'mapped','\uD801\uDC36'],[[66575,66575],'mapped','\uD801\uDC37'],[[66576,66576],'mapped','\uD801\uDC38'],[[66577,66577],'mapped','\uD801\uDC39'],[[66578,66578],'mapped','\uD801\uDC3A'],[[66579,66579],'mapped','\uD801\uDC3B'],[[66580,66580],'mapped','\uD801\uDC3C'],[[66581,66581],'mapped','\uD801\uDC3D'],[[66582,66582],'mapped','\uD801\uDC3E'],[[66583,66583],'mapped','\uD801\uDC3F'],[[66584,66584],'mapped','\uD801\uDC40'],[[66585,66585],'mapped','\uD801\uDC41'],[[66586,66586],'mapped','\uD801\uDC42'],[[66587,66587],'mapped','\uD801\uDC43'],[[66588,66588],'mapped','\uD801\uDC44'],[[66589,66589],'mapped','\uD801\uDC45'],[[66590,66590],'mapped','\uD801\uDC46'],[[66591,66591],'mapped','\uD801\uDC47'],[[66592,66592],'mapped','\uD801\uDC48'],[[66593,66593],'mapped','\uD801\uDC49'],[[66594,66594],'mapped','\uD801\uDC4A'],[[66595,66595],'mapped','\uD801\uDC4B'],[[66596,66596],'mapped','\uD801\uDC4C'],[[66597,66597],'mapped','\uD801\uDC4D'],[[66598,66598],'mapped','\uD801\uDC4E'],[[66599,66599],'mapped','\uD801\uDC4F'],[[66600,66637],'valid'],[[66638,66717],'valid'],[[66718,66719],'disallowed'],[[66720,66729],'valid'],[[66730,66735],'disallowed'],[[66736,66736],'mapped','\uD801\uDCD8'],[[66737,66737],'mapped','\uD801\uDCD9'],[[66738,66738],'mapped','\uD801\uDCDA'],[[66739,66739],'mapped','\uD801\uDCDB'],[[66740,66740],'mapped','\uD801\uDCDC'],[[66741,66741],'mapped','\uD801\uDCDD'],[[66742,66742],'mapped','\uD801\uDCDE'],[[66743,66743],'mapped','\uD801\uDCDF'],[[66744,66744],'mapped','\uD801\uDCE0'],[[66745,66745],'mapped','\uD801\uDCE1'],[[66746,66746],'mapped','\uD801\uDCE2'],[[66747,66747],'mapped','\uD801\uDCE3'],[[66748,66748],'mapped','\uD801\uDCE4'],[[66749,66749],'mapped','\uD801\uDCE5'],[[66750,66750],'mapped','\uD801\uDCE6'],[[66751,66751],'mapped','\uD801\uDCE7'],[[66752,66752],'mapped','\uD801\uDCE8'],[[66753,66753],'mapped','\uD801\uDCE9'],[[66754,66754],'mapped','\uD801\uDCEA'],[[66755,66755],'mapped','\uD801\uDCEB'],[[66756,66756],'mapped','\uD801\uDCEC'],[[66757,66757],'mapped','\uD801\uDCED'],[[66758,66758],'mapped','\uD801\uDCEE'],[[66759,66759],'mapped','\uD801\uDCEF'],[[66760,66760],'mapped','\uD801\uDCF0'],[[66761,66761],'mapped','\uD801\uDCF1'],[[66762,66762],'mapped','\uD801\uDCF2'],[[66763,66763],'mapped','\uD801\uDCF3'],[[66764,66764],'mapped','\uD801\uDCF4'],[[66765,66765],'mapped','\uD801\uDCF5'],[[66766,66766],'mapped','\uD801\uDCF6'],[[66767,66767],'mapped','\uD801\uDCF7'],[[66768,66768],'mapped','\uD801\uDCF8'],[[66769,66769],'mapped','\uD801\uDCF9'],[[66770,66770],'mapped','\uD801\uDCFA'],[[66771,66771],'mapped','\uD801\uDCFB'],[[66772,66775],'disallowed'],[[66776,66811],'valid'],[[66812,66815],'disallowed'],[[66816,66855],'valid'],[[66856,66863],'disallowed'],[[66864,66915],'valid'],[[66916,66926],'disallowed'],[[66927,66927],'valid','','NV8'],[[66928,67071],'disallowed'],[[67072,67382],'valid'],[[67383,67391],'disallowed'],[[67392,67413],'valid'],[[67414,67423],'disallowed'],[[67424,67431],'valid'],[[67432,67583],'disallowed'],[[67584,67589],'valid'],[[67590,67591],'disallowed'],[[67592,67592],'valid'],[[67593,67593],'disallowed'],[[67594,67637],'valid'],[[67638,67638],'disallowed'],[[67639,67640],'valid'],[[67641,67643],'disallowed'],[[67644,67644],'valid'],[[67645,67646],'disallowed'],[[67647,67647],'valid'],[[67648,67669],'valid'],[[67670,67670],'disallowed'],[[67671,67679],'valid','','NV8'],[[67680,67702],'valid'],[[67703,67711],'valid','','NV8'],[[67712,67742],'valid'],[[67743,67750],'disallowed'],[[67751,67759],'valid','','NV8'],[[67760,67807],'disallowed'],[[67808,67826],'valid'],[[67827,67827],'disallowed'],[[67828,67829],'valid'],[[67830,67834],'disallowed'],[[67835,67839],'valid','','NV8'],[[67840,67861],'valid'],[[67862,67865],'valid','','NV8'],[[67866,67867],'valid','','NV8'],[[67868,67870],'disallowed'],[[67871,67871],'valid','','NV8'],[[67872,67897],'valid'],[[67898,67902],'disallowed'],[[67903,67903],'valid','','NV8'],[[67904,67967],'disallowed'],[[67968,68023],'valid'],[[68024,68027],'disallowed'],[[68028,68029],'valid','','NV8'],[[68030,68031],'valid'],[[68032,68047],'valid','','NV8'],[[68048,68049],'disallowed'],[[68050,68095],'valid','','NV8'],[[68096,68099],'valid'],[[68100,68100],'disallowed'],[[68101,68102],'valid'],[[68103,68107],'disallowed'],[[68108,68115],'valid'],[[68116,68116],'disallowed'],[[68117,68119],'valid'],[[68120,68120],'disallowed'],[[68121,68147],'valid'],[[68148,68151],'disallowed'],[[68152,68154],'valid'],[[68155,68158],'disallowed'],[[68159,68159],'valid'],[[68160,68167],'valid','','NV8'],[[68168,68175],'disallowed'],[[68176,68184],'valid','','NV8'],[[68185,68191],'disallowed'],[[68192,68220],'valid'],[[68221,68223],'valid','','NV8'],[[68224,68252],'valid'],[[68253,68255],'valid','','NV8'],[[68256,68287],'disallowed'],[[68288,68295],'valid'],[[68296,68296],'valid','','NV8'],[[68297,68326],'valid'],[[68327,68330],'disallowed'],[[68331,68342],'valid','','NV8'],[[68343,68351],'disallowed'],[[68352,68405],'valid'],[[68406,68408],'disallowed'],[[68409,68415],'valid','','NV8'],[[68416,68437],'valid'],[[68438,68439],'disallowed'],[[68440,68447],'valid','','NV8'],[[68448,68466],'valid'],[[68467,68471],'disallowed'],[[68472,68479],'valid','','NV8'],[[68480,68497],'valid'],[[68498,68504],'disallowed'],[[68505,68508],'valid','','NV8'],[[68509,68520],'disallowed'],[[68521,68527],'valid','','NV8'],[[68528,68607],'disallowed'],[[68608,68680],'valid'],[[68681,68735],'disallowed'],[[68736,68736],'mapped','\uD803\uDCC0'],[[68737,68737],'mapped','\uD803\uDCC1'],[[68738,68738],'mapped','\uD803\uDCC2'],[[68739,68739],'mapped','\uD803\uDCC3'],[[68740,68740],'mapped','\uD803\uDCC4'],[[68741,68741],'mapped','\uD803\uDCC5'],[[68742,68742],'mapped','\uD803\uDCC6'],[[68743,68743],'mapped','\uD803\uDCC7'],[[68744,68744],'mapped','\uD803\uDCC8'],[[68745,68745],'mapped','\uD803\uDCC9'],[[68746,68746],'mapped','\uD803\uDCCA'],[[68747,68747],'mapped','\uD803\uDCCB'],[[68748,68748],'mapped','\uD803\uDCCC'],[[68749,68749],'mapped','\uD803\uDCCD'],[[68750,68750],'mapped','\uD803\uDCCE'],[[68751,68751],'mapped','\uD803\uDCCF'],[[68752,68752],'mapped','\uD803\uDCD0'],[[68753,68753],'mapped','\uD803\uDCD1'],[[68754,68754],'mapped','\uD803\uDCD2'],[[68755,68755],'mapped','\uD803\uDCD3'],[[68756,68756],'mapped','\uD803\uDCD4'],[[68757,68757],'mapped','\uD803\uDCD5'],[[68758,68758],'mapped','\uD803\uDCD6'],[[68759,68759],'mapped','\uD803\uDCD7'],[[68760,68760],'mapped','\uD803\uDCD8'],[[68761,68761],'mapped','\uD803\uDCD9'],[[68762,68762],'mapped','\uD803\uDCDA'],[[68763,68763],'mapped','\uD803\uDCDB'],[[68764,68764],'mapped','\uD803\uDCDC'],[[68765,68765],'mapped','\uD803\uDCDD'],[[68766,68766],'mapped','\uD803\uDCDE'],[[68767,68767],'mapped','\uD803\uDCDF'],[[68768,68768],'mapped','\uD803\uDCE0'],[[68769,68769],'mapped','\uD803\uDCE1'],[[68770,68770],'mapped','\uD803\uDCE2'],[[68771,68771],'mapped','\uD803\uDCE3'],[[68772,68772],'mapped','\uD803\uDCE4'],[[68773,68773],'mapped','\uD803\uDCE5'],[[68774,68774],'mapped','\uD803\uDCE6'],[[68775,68775],'mapped','\uD803\uDCE7'],[[68776,68776],'mapped','\uD803\uDCE8'],[[68777,68777],'mapped','\uD803\uDCE9'],[[68778,68778],'mapped','\uD803\uDCEA'],[[68779,68779],'mapped','\uD803\uDCEB'],[[68780,68780],'mapped','\uD803\uDCEC'],[[68781,68781],'mapped','\uD803\uDCED'],[[68782,68782],'mapped','\uD803\uDCEE'],[[68783,68783],'mapped','\uD803\uDCEF'],[[68784,68784],'mapped','\uD803\uDCF0'],[[68785,68785],'mapped','\uD803\uDCF1'],[[68786,68786],'mapped','\uD803\uDCF2'],[[68787,68799],'disallowed'],[[68800,68850],'valid'],[[68851,68857],'disallowed'],[[68858,68863],'valid','','NV8'],[[68864,69215],'disallowed'],[[69216,69246],'valid','','NV8'],[[69247,69631],'disallowed'],[[69632,69702],'valid'],[[69703,69709],'valid','','NV8'],[[69710,69713],'disallowed'],[[69714,69733],'valid','','NV8'],[[69734,69743],'valid'],[[69744,69758],'disallowed'],[[69759,69759],'valid'],[[69760,69818],'valid'],[[69819,69820],'valid','','NV8'],[[69821,69821],'disallowed'],[[69822,69825],'valid','','NV8'],[[69826,69839],'disallowed'],[[69840,69864],'valid'],[[69865,69871],'disallowed'],[[69872,69881],'valid'],[[69882,69887],'disallowed'],[[69888,69940],'valid'],[[69941,69941],'disallowed'],[[69942,69951],'valid'],[[69952,69955],'valid','','NV8'],[[69956,69967],'disallowed'],[[69968,70003],'valid'],[[70004,70005],'valid','','NV8'],[[70006,70006],'valid'],[[70007,70015],'disallowed'],[[70016,70084],'valid'],[[70085,70088],'valid','','NV8'],[[70089,70089],'valid','','NV8'],[[70090,70092],'valid'],[[70093,70093],'valid','','NV8'],[[70094,70095],'disallowed'],[[70096,70105],'valid'],[[70106,70106],'valid'],[[70107,70107],'valid','','NV8'],[[70108,70108],'valid'],[[70109,70111],'valid','','NV8'],[[70112,70112],'disallowed'],[[70113,70132],'valid','','NV8'],[[70133,70143],'disallowed'],[[70144,70161],'valid'],[[70162,70162],'disallowed'],[[70163,70199],'valid'],[[70200,70205],'valid','','NV8'],[[70206,70206],'valid'],[[70207,70271],'disallowed'],[[70272,70278],'valid'],[[70279,70279],'disallowed'],[[70280,70280],'valid'],[[70281,70281],'disallowed'],[[70282,70285],'valid'],[[70286,70286],'disallowed'],[[70287,70301],'valid'],[[70302,70302],'disallowed'],[[70303,70312],'valid'],[[70313,70313],'valid','','NV8'],[[70314,70319],'disallowed'],[[70320,70378],'valid'],[[70379,70383],'disallowed'],[[70384,70393],'valid'],[[70394,70399],'disallowed'],[[70400,70400],'valid'],[[70401,70403],'valid'],[[70404,70404],'disallowed'],[[70405,70412],'valid'],[[70413,70414],'disallowed'],[[70415,70416],'valid'],[[70417,70418],'disallowed'],[[70419,70440],'valid'],[[70441,70441],'disallowed'],[[70442,70448],'valid'],[[70449,70449],'disallowed'],[[70450,70451],'valid'],[[70452,70452],'disallowed'],[[70453,70457],'valid'],[[70458,70459],'disallowed'],[[70460,70468],'valid'],[[70469,70470],'disallowed'],[[70471,70472],'valid'],[[70473,70474],'disallowed'],[[70475,70477],'valid'],[[70478,70479],'disallowed'],[[70480,70480],'valid'],[[70481,70486],'disallowed'],[[70487,70487],'valid'],[[70488,70492],'disallowed'],[[70493,70499],'valid'],[[70500,70501],'disallowed'],[[70502,70508],'valid'],[[70509,70511],'disallowed'],[[70512,70516],'valid'],[[70517,70655],'disallowed'],[[70656,70730],'valid'],[[70731,70735],'valid','','NV8'],[[70736,70745],'valid'],[[70746,70746],'disallowed'],[[70747,70747],'valid','','NV8'],[[70748,70748],'disallowed'],[[70749,70749],'valid','','NV8'],[[70750,70783],'disallowed'],[[70784,70853],'valid'],[[70854,70854],'valid','','NV8'],[[70855,70855],'valid'],[[70856,70863],'disallowed'],[[70864,70873],'valid'],[[70874,71039],'disallowed'],[[71040,71093],'valid'],[[71094,71095],'disallowed'],[[71096,71104],'valid'],[[71105,71113],'valid','','NV8'],[[71114,71127],'valid','','NV8'],[[71128,71133],'valid'],[[71134,71167],'disallowed'],[[71168,71232],'valid'],[[71233,71235],'valid','','NV8'],[[71236,71236],'valid'],[[71237,71247],'disallowed'],[[71248,71257],'valid'],[[71258,71263],'disallowed'],[[71264,71276],'valid','','NV8'],[[71277,71295],'disallowed'],[[71296,71351],'valid'],[[71352,71359],'disallowed'],[[71360,71369],'valid'],[[71370,71423],'disallowed'],[[71424,71449],'valid'],[[71450,71452],'disallowed'],[[71453,71467],'valid'],[[71468,71471],'disallowed'],[[71472,71481],'valid'],[[71482,71487],'valid','','NV8'],[[71488,71839],'disallowed'],[[71840,71840],'mapped','\uD806\uDCC0'],[[71841,71841],'mapped','\uD806\uDCC1'],[[71842,71842],'mapped','\uD806\uDCC2'],[[71843,71843],'mapped','\uD806\uDCC3'],[[71844,71844],'mapped','\uD806\uDCC4'],[[71845,71845],'mapped','\uD806\uDCC5'],[[71846,71846],'mapped','\uD806\uDCC6'],[[71847,71847],'mapped','\uD806\uDCC7'],[[71848,71848],'mapped','\uD806\uDCC8'],[[71849,71849],'mapped','\uD806\uDCC9'],[[71850,71850],'mapped','\uD806\uDCCA'],[[71851,71851],'mapped','\uD806\uDCCB'],[[71852,71852],'mapped','\uD806\uDCCC'],[[71853,71853],'mapped','\uD806\uDCCD'],[[71854,71854],'mapped','\uD806\uDCCE'],[[71855,71855],'mapped','\uD806\uDCCF'],[[71856,71856],'mapped','\uD806\uDCD0'],[[71857,71857],'mapped','\uD806\uDCD1'],[[71858,71858],'mapped','\uD806\uDCD2'],[[71859,71859],'mapped','\uD806\uDCD3'],[[71860,71860],'mapped','\uD806\uDCD4'],[[71861,71861],'mapped','\uD806\uDCD5'],[[71862,71862],'mapped','\uD806\uDCD6'],[[71863,71863],'mapped','\uD806\uDCD7'],[[71864,71864],'mapped','\uD806\uDCD8'],[[71865,71865],'mapped','\uD806\uDCD9'],[[71866,71866],'mapped','\uD806\uDCDA'],[[71867,71867],'mapped','\uD806\uDCDB'],[[71868,71868],'mapped','\uD806\uDCDC'],[[71869,71869],'mapped','\uD806\uDCDD'],[[71870,71870],'mapped','\uD806\uDCDE'],[[71871,71871],'mapped','\uD806\uDCDF'],[[71872,71913],'valid'],[[71914,71922],'valid','','NV8'],[[71923,71934],'disallowed'],[[71935,71935],'valid'],[[71936,72191],'disallowed'],[[72192,72254],'valid'],[[72255,72262],'valid','','NV8'],[[72263,72263],'valid'],[[72264,72271],'disallowed'],[[72272,72323],'valid'],[[72324,72325],'disallowed'],[[72326,72345],'valid'],[[72346,72348],'valid','','NV8'],[[72349,72349],'disallowed'],[[72350,72354],'valid','','NV8'],[[72355,72383],'disallowed'],[[72384,72440],'valid'],[[72441,72703],'disallowed'],[[72704,72712],'valid'],[[72713,72713],'disallowed'],[[72714,72758],'valid'],[[72759,72759],'disallowed'],[[72760,72768],'valid'],[[72769,72773],'valid','','NV8'],[[72774,72783],'disallowed'],[[72784,72793],'valid'],[[72794,72812],'valid','','NV8'],[[72813,72815],'disallowed'],[[72816,72817],'valid','','NV8'],[[72818,72847],'valid'],[[72848,72849],'disallowed'],[[72850,72871],'valid'],[[72872,72872],'disallowed'],[[72873,72886],'valid'],[[72887,72959],'disallowed'],[[72960,72966],'valid'],[[72967,72967],'disallowed'],[[72968,72969],'valid'],[[72970,72970],'disallowed'],[[72971,73014],'valid'],[[73015,73017],'disallowed'],[[73018,73018],'valid'],[[73019,73019],'disallowed'],[[73020,73021],'valid'],[[73022,73022],'disallowed'],[[73023,73031],'valid'],[[73032,73039],'disallowed'],[[73040,73049],'valid'],[[73050,73727],'disallowed'],[[73728,74606],'valid'],[[74607,74648],'valid'],[[74649,74649],'valid'],[[74650,74751],'disallowed'],[[74752,74850],'valid','','NV8'],[[74851,74862],'valid','','NV8'],[[74863,74863],'disallowed'],[[74864,74867],'valid','','NV8'],[[74868,74868],'valid','','NV8'],[[74869,74879],'disallowed'],[[74880,75075],'valid'],[[75076,77823],'disallowed'],[[77824,78894],'valid'],[[78895,82943],'disallowed'],[[82944,83526],'valid'],[[83527,92159],'disallowed'],[[92160,92728],'valid'],[[92729,92735],'disallowed'],[[92736,92766],'valid'],[[92767,92767],'disallowed'],[[92768,92777],'valid'],[[92778,92781],'disallowed'],[[92782,92783],'valid','','NV8'],[[92784,92879],'disallowed'],[[92880,92909],'valid'],[[92910,92911],'disallowed'],[[92912,92916],'valid'],[[92917,92917],'valid','','NV8'],[[92918,92927],'disallowed'],[[92928,92982],'valid'],[[92983,92991],'valid','','NV8'],[[92992,92995],'valid'],[[92996,92997],'valid','','NV8'],[[92998,93007],'disallowed'],[[93008,93017],'valid'],[[93018,93018],'disallowed'],[[93019,93025],'valid','','NV8'],[[93026,93026],'disallowed'],[[93027,93047],'valid'],[[93048,93052],'disallowed'],[[93053,93071],'valid'],[[93072,93951],'disallowed'],[[93952,94020],'valid'],[[94021,94031],'disallowed'],[[94032,94078],'valid'],[[94079,94094],'disallowed'],[[94095,94111],'valid'],[[94112,94175],'disallowed'],[[94176,94176],'valid'],[[94177,94177],'valid'],[[94178,94207],'disallowed'],[[94208,100332],'valid'],[[100333,100351],'disallowed'],[[100352,101106],'valid'],[[101107,110591],'disallowed'],[[110592,110593],'valid'],[[110594,110878],'valid'],[[110879,110959],'disallowed'],[[110960,111355],'valid'],[[111356,113663],'disallowed'],[[113664,113770],'valid'],[[113771,113775],'disallowed'],[[113776,113788],'valid'],[[113789,113791],'disallowed'],[[113792,113800],'valid'],[[113801,113807],'disallowed'],[[113808,113817],'valid'],[[113818,113819],'disallowed'],[[113820,113820],'valid','','NV8'],[[113821,113822],'valid'],[[113823,113823],'valid','','NV8'],[[113824,113827],'ignored'],[[113828,118783],'disallowed'],[[118784,119029],'valid','','NV8'],[[119030,119039],'disallowed'],[[119040,119078],'valid','','NV8'],[[119079,119080],'disallowed'],[[119081,119081],'valid','','NV8'],[[119082,119133],'valid','','NV8'],[[119134,119134],'mapped','\uD834\uDD57\uD834\uDD65'],[[119135,119135],'mapped','\uD834\uDD58\uD834\uDD65'],[[119136,119136],'mapped','\uD834\uDD58\uD834\uDD65\uD834\uDD6E'],[[119137,119137],'mapped','\uD834\uDD58\uD834\uDD65\uD834\uDD6F'],[[119138,119138],'mapped','\uD834\uDD58\uD834\uDD65\uD834\uDD70'],[[119139,119139],'mapped','\uD834\uDD58\uD834\uDD65\uD834\uDD71'],[[119140,119140],'mapped','\uD834\uDD58\uD834\uDD65\uD834\uDD72'],[[119141,119154],'valid','','NV8'],[[119155,119162],'disallowed'],[[119163,119226],'valid','','NV8'],[[119227,119227],'mapped','\uD834\uDDB9\uD834\uDD65'],[[119228,119228],'mapped','\uD834\uDDBA\uD834\uDD65'],[[119229,119229],'mapped','\uD834\uDDB9\uD834\uDD65\uD834\uDD6E'],[[119230,119230],'mapped','\uD834\uDDBA\uD834\uDD65\uD834\uDD6E'],[[119231,119231],'mapped','\uD834\uDDB9\uD834\uDD65\uD834\uDD6F'],[[119232,119232],'mapped','\uD834\uDDBA\uD834\uDD65\uD834\uDD6F'],[[119233,119261],'valid','','NV8'],[[119262,119272],'valid','','NV8'],[[119273,119295],'disallowed'],[[119296,119365],'valid','','NV8'],[[119366,119551],'disallowed'],[[119552,119638],'valid','','NV8'],[[119639,119647],'disallowed'],[[119648,119665],'valid','','NV8'],[[119666,119807],'disallowed'],[[119808,119808],'mapped','a'],[[119809,119809],'mapped','b'],[[119810,119810],'mapped','c'],[[119811,119811],'mapped','d'],[[119812,119812],'mapped','e'],[[119813,119813],'mapped','f'],[[119814,119814],'mapped','g'],[[119815,119815],'mapped','h'],[[119816,119816],'mapped','i'],[[119817,119817],'mapped','j'],[[119818,119818],'mapped','k'],[[119819,119819],'mapped','l'],[[119820,119820],'mapped','m'],[[119821,119821],'mapped','n'],[[119822,119822],'mapped','o'],[[119823,119823],'mapped','p'],[[119824,119824],'mapped','q'],[[119825,119825],'mapped','r'],[[119826,119826],'mapped','s'],[[119827,119827],'mapped','t'],[[119828,119828],'mapped','u'],[[119829,119829],'mapped','v'],[[119830,119830],'mapped','w'],[[119831,119831],'mapped','x'],[[119832,119832],'mapped','y'],[[119833,119833],'mapped','z'],[[119834,119834],'mapped','a'],[[119835,119835],'mapped','b'],[[119836,119836],'mapped','c'],[[119837,119837],'mapped','d'],[[119838,119838],'mapped','e'],[[119839,119839],'mapped','f'],[[119840,119840],'mapped','g'],[[119841,119841],'mapped','h'],[[119842,119842],'mapped','i'],[[119843,119843],'mapped','j'],[[119844,119844],'mapped','k'],[[119845,119845],'mapped','l'],[[119846,119846],'mapped','m'],[[119847,119847],'mapped','n'],[[119848,119848],'mapped','o'],[[119849,119849],'mapped','p'],[[119850,119850],'mapped','q'],[[119851,119851],'mapped','r'],[[119852,119852],'mapped','s'],[[119853,119853],'mapped','t'],[[119854,119854],'mapped','u'],[[119855,119855],'mapped','v'],[[119856,119856],'mapped','w'],[[119857,119857],'mapped','x'],[[119858,119858],'mapped','y'],[[119859,119859],'mapped','z'],[[119860,119860],'mapped','a'],[[119861,119861],'mapped','b'],[[119862,119862],'mapped','c'],[[119863,119863],'mapped','d'],[[119864,119864],'mapped','e'],[[119865,119865],'mapped','f'],[[119866,119866],'mapped','g'],[[119867,119867],'mapped','h'],[[119868,119868],'mapped','i'],[[119869,119869],'mapped','j'],[[119870,119870],'mapped','k'],[[119871,119871],'mapped','l'],[[119872,119872],'mapped','m'],[[119873,119873],'mapped','n'],[[119874,119874],'mapped','o'],[[119875,119875],'mapped','p'],[[119876,119876],'mapped','q'],[[119877,119877],'mapped','r'],[[119878,119878],'mapped','s'],[[119879,119879],'mapped','t'],[[119880,119880],'mapped','u'],[[119881,119881],'mapped','v'],[[119882,119882],'mapped','w'],[[119883,119883],'mapped','x'],[[119884,119884],'mapped','y'],[[119885,119885],'mapped','z'],[[119886,119886],'mapped','a'],[[119887,119887],'mapped','b'],[[119888,119888],'mapped','c'],[[119889,119889],'mapped','d'],[[119890,119890],'mapped','e'],[[119891,119891],'mapped','f'],[[119892,119892],'mapped','g'],[[119893,119893],'disallowed'],[[119894,119894],'mapped','i'],[[119895,119895],'mapped','j'],[[119896,119896],'mapped','k'],[[119897,119897],'mapped','l'],[[119898,119898],'mapped','m'],[[119899,119899],'mapped','n'],[[119900,119900],'mapped','o'],[[119901,119901],'mapped','p'],[[119902,119902],'mapped','q'],[[119903,119903],'mapped','r'],[[119904,119904],'mapped','s'],[[119905,119905],'mapped','t'],[[119906,119906],'mapped','u'],[[119907,119907],'mapped','v'],[[119908,119908],'mapped','w'],[[119909,119909],'mapped','x'],[[119910,119910],'mapped','y'],[[119911,119911],'mapped','z'],[[119912,119912],'mapped','a'],[[119913,119913],'mapped','b'],[[119914,119914],'mapped','c'],[[119915,119915],'mapped','d'],[[119916,119916],'mapped','e'],[[119917,119917],'mapped','f'],[[119918,119918],'mapped','g'],[[119919,119919],'mapped','h'],[[119920,119920],'mapped','i'],[[119921,119921],'mapped','j'],[[119922,119922],'mapped','k'],[[119923,119923],'mapped','l'],[[119924,119924],'mapped','m'],[[119925,119925],'mapped','n'],[[119926,119926],'mapped','o'],[[119927,119927],'mapped','p'],[[119928,119928],'mapped','q'],[[119929,119929],'mapped','r'],[[119930,119930],'mapped','s'],[[119931,119931],'mapped','t'],[[119932,119932],'mapped','u'],[[119933,119933],'mapped','v'],[[119934,119934],'mapped','w'],[[119935,119935],'mapped','x'],[[119936,119936],'mapped','y'],[[119937,119937],'mapped','z'],[[119938,119938],'mapped','a'],[[119939,119939],'mapped','b'],[[119940,119940],'mapped','c'],[[119941,119941],'mapped','d'],[[119942,119942],'mapped','e'],[[119943,119943],'mapped','f'],[[119944,119944],'mapped','g'],[[119945,119945],'mapped','h'],[[119946,119946],'mapped','i'],[[119947,119947],'mapped','j'],[[119948,119948],'mapped','k'],[[119949,119949],'mapped','l'],[[119950,119950],'mapped','m'],[[119951,119951],'mapped','n'],[[119952,119952],'mapped','o'],[[119953,119953],'mapped','p'],[[119954,119954],'mapped','q'],[[119955,119955],'mapped','r'],[[119956,119956],'mapped','s'],[[119957,119957],'mapped','t'],[[119958,119958],'mapped','u'],[[119959,119959],'mapped','v'],[[119960,119960],'mapped','w'],[[119961,119961],'mapped','x'],[[119962,119962],'mapped','y'],[[119963,119963],'mapped','z'],[[119964,119964],'mapped','a'],[[119965,119965],'disallowed'],[[119966,119966],'mapped','c'],[[119967,119967],'mapped','d'],[[119968,119969],'disallowed'],[[119970,119970],'mapped','g'],[[119971,119972],'disallowed'],[[119973,119973],'mapped','j'],[[119974,119974],'mapped','k'],[[119975,119976],'disallowed'],[[119977,119977],'mapped','n'],[[119978,119978],'mapped','o'],[[119979,119979],'mapped','p'],[[119980,119980],'mapped','q'],[[119981,119981],'disallowed'],[[119982,119982],'mapped','s'],[[119983,119983],'mapped','t'],[[119984,119984],'mapped','u'],[[119985,119985],'mapped','v'],[[119986,119986],'mapped','w'],[[119987,119987],'mapped','x'],[[119988,119988],'mapped','y'],[[119989,119989],'mapped','z'],[[119990,119990],'mapped','a'],[[119991,119991],'mapped','b'],[[119992,119992],'mapped','c'],[[119993,119993],'mapped','d'],[[119994,119994],'disallowed'],[[119995,119995],'mapped','f'],[[119996,119996],'disallowed'],[[119997,119997],'mapped','h'],[[119998,119998],'mapped','i'],[[119999,119999],'mapped','j'],[[120000,120000],'mapped','k'],[[120001,120001],'mapped','l'],[[120002,120002],'mapped','m'],[[120003,120003],'mapped','n'],[[120004,120004],'disallowed'],[[120005,120005],'mapped','p'],[[120006,120006],'mapped','q'],[[120007,120007],'mapped','r'],[[120008,120008],'mapped','s'],[[120009,120009],'mapped','t'],[[120010,120010],'mapped','u'],[[120011,120011],'mapped','v'],[[120012,120012],'mapped','w'],[[120013,120013],'mapped','x'],[[120014,120014],'mapped','y'],[[120015,120015],'mapped','z'],[[120016,120016],'mapped','a'],[[120017,120017],'mapped','b'],[[120018,120018],'mapped','c'],[[120019,120019],'mapped','d'],[[120020,120020],'mapped','e'],[[120021,120021],'mapped','f'],[[120022,120022],'mapped','g'],[[120023,120023],'mapped','h'],[[120024,120024],'mapped','i'],[[120025,120025],'mapped','j'],[[120026,120026],'mapped','k'],[[120027,120027],'mapped','l'],[[120028,120028],'mapped','m'],[[120029,120029],'mapped','n'],[[120030,120030],'mapped','o'],[[120031,120031],'mapped','p'],[[120032,120032],'mapped','q'],[[120033,120033],'mapped','r'],[[120034,120034],'mapped','s'],[[120035,120035],'mapped','t'],[[120036,120036],'mapped','u'],[[120037,120037],'mapped','v'],[[120038,120038],'mapped','w'],[[120039,120039],'mapped','x'],[[120040,120040],'mapped','y'],[[120041,120041],'mapped','z'],[[120042,120042],'mapped','a'],[[120043,120043],'mapped','b'],[[120044,120044],'mapped','c'],[[120045,120045],'mapped','d'],[[120046,120046],'mapped','e'],[[120047,120047],'mapped','f'],[[120048,120048],'mapped','g'],[[120049,120049],'mapped','h'],[[120050,120050],'mapped','i'],[[120051,120051],'mapped','j'],[[120052,120052],'mapped','k'],[[120053,120053],'mapped','l'],[[120054,120054],'mapped','m'],[[120055,120055],'mapped','n'],[[120056,120056],'mapped','o'],[[120057,120057],'mapped','p'],[[120058,120058],'mapped','q'],[[120059,120059],'mapped','r'],[[120060,120060],'mapped','s'],[[120061,120061],'mapped','t'],[[120062,120062],'mapped','u'],[[120063,120063],'mapped','v'],[[120064,120064],'mapped','w'],[[120065,120065],'mapped','x'],[[120066,120066],'mapped','y'],[[120067,120067],'mapped','z'],[[120068,120068],'mapped','a'],[[120069,120069],'mapped','b'],[[120070,120070],'disallowed'],[[120071,120071],'mapped','d'],[[120072,120072],'mapped','e'],[[120073,120073],'mapped','f'],[[120074,120074],'mapped','g'],[[120075,120076],'disallowed'],[[120077,120077],'mapped','j'],[[120078,120078],'mapped','k'],[[120079,120079],'mapped','l'],[[120080,120080],'mapped','m'],[[120081,120081],'mapped','n'],[[120082,120082],'mapped','o'],[[120083,120083],'mapped','p'],[[120084,120084],'mapped','q'],[[120085,120085],'disallowed'],[[120086,120086],'mapped','s'],[[120087,120087],'mapped','t'],[[120088,120088],'mapped','u'],[[120089,120089],'mapped','v'],[[120090,120090],'mapped','w'],[[120091,120091],'mapped','x'],[[120092,120092],'mapped','y'],[[120093,120093],'disallowed'],[[120094,120094],'mapped','a'],[[120095,120095],'mapped','b'],[[120096,120096],'mapped','c'],[[120097,120097],'mapped','d'],[[120098,120098],'mapped','e'],[[120099,120099],'mapped','f'],[[120100,120100],'mapped','g'],[[120101,120101],'mapped','h'],[[120102,120102],'mapped','i'],[[120103,120103],'mapped','j'],[[120104,120104],'mapped','k'],[[120105,120105],'mapped','l'],[[120106,120106],'mapped','m'],[[120107,120107],'mapped','n'],[[120108,120108],'mapped','o'],[[120109,120109],'mapped','p'],[[120110,120110],'mapped','q'],[[120111,120111],'mapped','r'],[[120112,120112],'mapped','s'],[[120113,120113],'mapped','t'],[[120114,120114],'mapped','u'],[[120115,120115],'mapped','v'],[[120116,120116],'mapped','w'],[[120117,120117],'mapped','x'],[[120118,120118],'mapped','y'],[[120119,120119],'mapped','z'],[[120120,120120],'mapped','a'],[[120121,120121],'mapped','b'],[[120122,120122],'disallowed'],[[120123,120123],'mapped','d'],[[120124,120124],'mapped','e'],[[120125,120125],'mapped','f'],[[120126,120126],'mapped','g'],[[120127,120127],'disallowed'],[[120128,120128],'mapped','i'],[[120129,120129],'mapped','j'],[[120130,120130],'mapped','k'],[[120131,120131],'mapped','l'],[[120132,120132],'mapped','m'],[[120133,120133],'disallowed'],[[120134,120134],'mapped','o'],[[120135,120137],'disallowed'],[[120138,120138],'mapped','s'],[[120139,120139],'mapped','t'],[[120140,120140],'mapped','u'],[[120141,120141],'mapped','v'],[[120142,120142],'mapped','w'],[[120143,120143],'mapped','x'],[[120144,120144],'mapped','y'],[[120145,120145],'disallowed'],[[120146,120146],'mapped','a'],[[120147,120147],'mapped','b'],[[120148,120148],'mapped','c'],[[120149,120149],'mapped','d'],[[120150,120150],'mapped','e'],[[120151,120151],'mapped','f'],[[120152,120152],'mapped','g'],[[120153,120153],'mapped','h'],[[120154,120154],'mapped','i'],[[120155,120155],'mapped','j'],[[120156,120156],'mapped','k'],[[120157,120157],'mapped','l'],[[120158,120158],'mapped','m'],[[120159,120159],'mapped','n'],[[120160,120160],'mapped','o'],[[120161,120161],'mapped','p'],[[120162,120162],'mapped','q'],[[120163,120163],'mapped','r'],[[120164,120164],'mapped','s'],[[120165,120165],'mapped','t'],[[120166,120166],'mapped','u'],[[120167,120167],'mapped','v'],[[120168,120168],'mapped','w'],[[120169,120169],'mapped','x'],[[120170,120170],'mapped','y'],[[120171,120171],'mapped','z'],[[120172,120172],'mapped','a'],[[120173,120173],'mapped','b'],[[120174,120174],'mapped','c'],[[120175,120175],'mapped','d'],[[120176,120176],'mapped','e'],[[120177,120177],'mapped','f'],[[120178,120178],'mapped','g'],[[120179,120179],'mapped','h'],[[120180,120180],'mapped','i'],[[120181,120181],'mapped','j'],[[120182,120182],'mapped','k'],[[120183,120183],'mapped','l'],[[120184,120184],'mapped','m'],[[120185,120185],'mapped','n'],[[120186,120186],'mapped','o'],[[120187,120187],'mapped','p'],[[120188,120188],'mapped','q'],[[120189,120189],'mapped','r'],[[120190,120190],'mapped','s'],[[120191,120191],'mapped','t'],[[120192,120192],'mapped','u'],[[120193,120193],'mapped','v'],[[120194,120194],'mapped','w'],[[120195,120195],'mapped','x'],[[120196,120196],'mapped','y'],[[120197,120197],'mapped','z'],[[120198,120198],'mapped','a'],[[120199,120199],'mapped','b'],[[120200,120200],'mapped','c'],[[120201,120201],'mapped','d'],[[120202,120202],'mapped','e'],[[120203,120203],'mapped','f'],[[120204,120204],'mapped','g'],[[120205,120205],'mapped','h'],[[120206,120206],'mapped','i'],[[120207,120207],'mapped','j'],[[120208,120208],'mapped','k'],[[120209,120209],'mapped','l'],[[120210,120210],'mapped','m'],[[120211,120211],'mapped','n'],[[120212,120212],'mapped','o'],[[120213,120213],'mapped','p'],[[120214,120214],'mapped','q'],[[120215,120215],'mapped','r'],[[120216,120216],'mapped','s'],[[120217,120217],'mapped','t'],[[120218,120218],'mapped','u'],[[120219,120219],'mapped','v'],[[120220,120220],'mapped','w'],[[120221,120221],'mapped','x'],[[120222,120222],'mapped','y'],[[120223,120223],'mapped','z'],[[120224,120224],'mapped','a'],[[120225,120225],'mapped','b'],[[120226,120226],'mapped','c'],[[120227,120227],'mapped','d'],[[120228,120228],'mapped','e'],[[120229,120229],'mapped','f'],[[120230,120230],'mapped','g'],[[120231,120231],'mapped','h'],[[120232,120232],'mapped','i'],[[120233,120233],'mapped','j'],[[120234,120234],'mapped','k'],[[120235,120235],'mapped','l'],[[120236,120236],'mapped','m'],[[120237,120237],'mapped','n'],[[120238,120238],'mapped','o'],[[120239,120239],'mapped','p'],[[120240,120240],'mapped','q'],[[120241,120241],'mapped','r'],[[120242,120242],'mapped','s'],[[120243,120243],'mapped','t'],[[120244,120244],'mapped','u'],[[120245,120245],'mapped','v'],[[120246,120246],'mapped','w'],[[120247,120247],'mapped','x'],[[120248,120248],'mapped','y'],[[120249,120249],'mapped','z'],[[120250,120250],'mapped','a'],[[120251,120251],'mapped','b'],[[120252,120252],'mapped','c'],[[120253,120253],'mapped','d'],[[120254,120254],'mapped','e'],[[120255,120255],'mapped','f'],[[120256,120256],'mapped','g'],[[120257,120257],'mapped','h'],[[120258,120258],'mapped','i'],[[120259,120259],'mapped','j'],[[120260,120260],'mapped','k'],[[120261,120261],'mapped','l'],[[120262,120262],'mapped','m'],[[120263,120263],'mapped','n'],[[120264,120264],'mapped','o'],[[120265,120265],'mapped','p'],[[120266,120266],'mapped','q'],[[120267,120267],'mapped','r'],[[120268,120268],'mapped','s'],[[120269,120269],'mapped','t'],[[120270,120270],'mapped','u'],[[120271,120271],'mapped','v'],[[120272,120272],'mapped','w'],[[120273,120273],'mapped','x'],[[120274,120274],'mapped','y'],[[120275,120275],'mapped','z'],[[120276,120276],'mapped','a'],[[120277,120277],'mapped','b'],[[120278,120278],'mapped','c'],[[120279,120279],'mapped','d'],[[120280,120280],'mapped','e'],[[120281,120281],'mapped','f'],[[120282,120282],'mapped','g'],[[120283,120283],'mapped','h'],[[120284,120284],'mapped','i'],[[120285,120285],'mapped','j'],[[120286,120286],'mapped','k'],[[120287,120287],'mapped','l'],[[120288,120288],'mapped','m'],[[120289,120289],'mapped','n'],[[120290,120290],'mapped','o'],[[120291,120291],'mapped','p'],[[120292,120292],'mapped','q'],[[120293,120293],'mapped','r'],[[120294,120294],'mapped','s'],[[120295,120295],'mapped','t'],[[120296,120296],'mapped','u'],[[120297,120297],'mapped','v'],[[120298,120298],'mapped','w'],[[120299,120299],'mapped','x'],[[120300,120300],'mapped','y'],[[120301,120301],'mapped','z'],[[120302,120302],'mapped','a'],[[120303,120303],'mapped','b'],[[120304,120304],'mapped','c'],[[120305,120305],'mapped','d'],[[120306,120306],'mapped','e'],[[120307,120307],'mapped','f'],[[120308,120308],'mapped','g'],[[120309,120309],'mapped','h'],[[120310,120310],'mapped','i'],[[120311,120311],'mapped','j'],[[120312,120312],'mapped','k'],[[120313,120313],'mapped','l'],[[120314,120314],'mapped','m'],[[120315,120315],'mapped','n'],[[120316,120316],'mapped','o'],[[120317,120317],'mapped','p'],[[120318,120318],'mapped','q'],[[120319,120319],'mapped','r'],[[120320,120320],'mapped','s'],[[120321,120321],'mapped','t'],[[120322,120322],'mapped','u'],[[120323,120323],'mapped','v'],[[120324,120324],'mapped','w'],[[120325,120325],'mapped','x'],[[120326,120326],'mapped','y'],[[120327,120327],'mapped','z'],[[120328,120328],'mapped','a'],[[120329,120329],'mapped','b'],[[120330,120330],'mapped','c'],[[120331,120331],'mapped','d'],[[120332,120332],'mapped','e'],[[120333,120333],'mapped','f'],[[120334,120334],'mapped','g'],[[120335,120335],'mapped','h'],[[120336,120336],'mapped','i'],[[120337,120337],'mapped','j'],[[120338,120338],'mapped','k'],[[120339,120339],'mapped','l'],[[120340,120340],'mapped','m'],[[120341,120341],'mapped','n'],[[120342,120342],'mapped','o'],[[120343,120343],'mapped','p'],[[120344,120344],'mapped','q'],[[120345,120345],'mapped','r'],[[120346,120346],'mapped','s'],[[120347,120347],'mapped','t'],[[120348,120348],'mapped','u'],[[120349,120349],'mapped','v'],[[120350,120350],'mapped','w'],[[120351,120351],'mapped','x'],[[120352,120352],'mapped','y'],[[120353,120353],'mapped','z'],[[120354,120354],'mapped','a'],[[120355,120355],'mapped','b'],[[120356,120356],'mapped','c'],[[120357,120357],'mapped','d'],[[120358,120358],'mapped','e'],[[120359,120359],'mapped','f'],[[120360,120360],'mapped','g'],[[120361,120361],'mapped','h'],[[120362,120362],'mapped','i'],[[120363,120363],'mapped','j'],[[120364,120364],'mapped','k'],[[120365,120365],'mapped','l'],[[120366,120366],'mapped','m'],[[120367,120367],'mapped','n'],[[120368,120368],'mapped','o'],[[120369,120369],'mapped','p'],[[120370,120370],'mapped','q'],[[120371,120371],'mapped','r'],[[120372,120372],'mapped','s'],[[120373,120373],'mapped','t'],[[120374,120374],'mapped','u'],[[120375,120375],'mapped','v'],[[120376,120376],'mapped','w'],[[120377,120377],'mapped','x'],[[120378,120378],'mapped','y'],[[120379,120379],'mapped','z'],[[120380,120380],'mapped','a'],[[120381,120381],'mapped','b'],[[120382,120382],'mapped','c'],[[120383,120383],'mapped','d'],[[120384,120384],'mapped','e'],[[120385,120385],'mapped','f'],[[120386,120386],'mapped','g'],[[120387,120387],'mapped','h'],[[120388,120388],'mapped','i'],[[120389,120389],'mapped','j'],[[120390,120390],'mapped','k'],[[120391,120391],'mapped','l'],[[120392,120392],'mapped','m'],[[120393,120393],'mapped','n'],[[120394,120394],'mapped','o'],[[120395,120395],'mapped','p'],[[120396,120396],'mapped','q'],[[120397,120397],'mapped','r'],[[120398,120398],'mapped','s'],[[120399,120399],'mapped','t'],[[120400,120400],'mapped','u'],[[120401,120401],'mapped','v'],[[120402,120402],'mapped','w'],[[120403,120403],'mapped','x'],[[120404,120404],'mapped','y'],[[120405,120405],'mapped','z'],[[120406,120406],'mapped','a'],[[120407,120407],'mapped','b'],[[120408,120408],'mapped','c'],[[120409,120409],'mapped','d'],[[120410,120410],'mapped','e'],[[120411,120411],'mapped','f'],[[120412,120412],'mapped','g'],[[120413,120413],'mapped','h'],[[120414,120414],'mapped','i'],[[120415,120415],'mapped','j'],[[120416,120416],'mapped','k'],[[120417,120417],'mapped','l'],[[120418,120418],'mapped','m'],[[120419,120419],'mapped','n'],[[120420,120420],'mapped','o'],[[120421,120421],'mapped','p'],[[120422,120422],'mapped','q'],[[120423,120423],'mapped','r'],[[120424,120424],'mapped','s'],[[120425,120425],'mapped','t'],[[120426,120426],'mapped','u'],[[120427,120427],'mapped','v'],[[120428,120428],'mapped','w'],[[120429,120429],'mapped','x'],[[120430,120430],'mapped','y'],[[120431,120431],'mapped','z'],[[120432,120432],'mapped','a'],[[120433,120433],'mapped','b'],[[120434,120434],'mapped','c'],[[120435,120435],'mapped','d'],[[120436,120436],'mapped','e'],[[120437,120437],'mapped','f'],[[120438,120438],'mapped','g'],[[120439,120439],'mapped','h'],[[120440,120440],'mapped','i'],[[120441,120441],'mapped','j'],[[120442,120442],'mapped','k'],[[120443,120443],'mapped','l'],[[120444,120444],'mapped','m'],[[120445,120445],'mapped','n'],[[120446,120446],'mapped','o'],[[120447,120447],'mapped','p'],[[120448,120448],'mapped','q'],[[120449,120449],'mapped','r'],[[120450,120450],'mapped','s'],[[120451,120451],'mapped','t'],[[120452,120452],'mapped','u'],[[120453,120453],'mapped','v'],[[120454,120454],'mapped','w'],[[120455,120455],'mapped','x'],[[120456,120456],'mapped','y'],[[120457,120457],'mapped','z'],[[120458,120458],'mapped','a'],[[120459,120459],'mapped','b'],[[120460,120460],'mapped','c'],[[120461,120461],'mapped','d'],[[120462,120462],'mapped','e'],[[120463,120463],'mapped','f'],[[120464,120464],'mapped','g'],[[120465,120465],'mapped','h'],[[120466,120466],'mapped','i'],[[120467,120467],'mapped','j'],[[120468,120468],'mapped','k'],[[120469,120469],'mapped','l'],[[120470,120470],'mapped','m'],[[120471,120471],'mapped','n'],[[120472,120472],'mapped','o'],[[120473,120473],'mapped','p'],[[120474,120474],'mapped','q'],[[120475,120475],'mapped','r'],[[120476,120476],'mapped','s'],[[120477,120477],'mapped','t'],[[120478,120478],'mapped','u'],[[120479,120479],'mapped','v'],[[120480,120480],'mapped','w'],[[120481,120481],'mapped','x'],[[120482,120482],'mapped','y'],[[120483,120483],'mapped','z'],[[120484,120484],'mapped','\u0131'],[[120485,120485],'mapped','\u0237'],[[120486,120487],'disallowed'],[[120488,120488],'mapped','\u03B1'],[[120489,120489],'mapped','\u03B2'],[[120490,120490],'mapped','\u03B3'],[[120491,120491],'mapped','\u03B4'],[[120492,120492],'mapped','\u03B5'],[[120493,120493],'mapped','\u03B6'],[[120494,120494],'mapped','\u03B7'],[[120495,120495],'mapped','\u03B8'],[[120496,120496],'mapped','\u03B9'],[[120497,120497],'mapped','\u03BA'],[[120498,120498],'mapped','\u03BB'],[[120499,120499],'mapped','\u03BC'],[[120500,120500],'mapped','\u03BD'],[[120501,120501],'mapped','\u03BE'],[[120502,120502],'mapped','\u03BF'],[[120503,120503],'mapped','\u03C0'],[[120504,120504],'mapped','\u03C1'],[[120505,120505],'mapped','\u03B8'],[[120506,120506],'mapped','\u03C3'],[[120507,120507],'mapped','\u03C4'],[[120508,120508],'mapped','\u03C5'],[[120509,120509],'mapped','\u03C6'],[[120510,120510],'mapped','\u03C7'],[[120511,120511],'mapped','\u03C8'],[[120512,120512],'mapped','\u03C9'],[[120513,120513],'mapped','\u2207'],[[120514,120514],'mapped','\u03B1'],[[120515,120515],'mapped','\u03B2'],[[120516,120516],'mapped','\u03B3'],[[120517,120517],'mapped','\u03B4'],[[120518,120518],'mapped','\u03B5'],[[120519,120519],'mapped','\u03B6'],[[120520,120520],'mapped','\u03B7'],[[120521,120521],'mapped','\u03B8'],[[120522,120522],'mapped','\u03B9'],[[120523,120523],'mapped','\u03BA'],[[120524,120524],'mapped','\u03BB'],[[120525,120525],'mapped','\u03BC'],[[120526,120526],'mapped','\u03BD'],[[120527,120527],'mapped','\u03BE'],[[120528,120528],'mapped','\u03BF'],[[120529,120529],'mapped','\u03C0'],[[120530,120530],'mapped','\u03C1'],[[120531,120532],'mapped','\u03C3'],[[120533,120533],'mapped','\u03C4'],[[120534,120534],'mapped','\u03C5'],[[120535,120535],'mapped','\u03C6'],[[120536,120536],'mapped','\u03C7'],[[120537,120537],'mapped','\u03C8'],[[120538,120538],'mapped','\u03C9'],[[120539,120539],'mapped','\u2202'],[[120540,120540],'mapped','\u03B5'],[[120541,120541],'mapped','\u03B8'],[[120542,120542],'mapped','\u03BA'],[[120543,120543],'mapped','\u03C6'],[[120544,120544],'mapped','\u03C1'],[[120545,120545],'mapped','\u03C0'],[[120546,120546],'mapped','\u03B1'],[[120547,120547],'mapped','\u03B2'],[[120548,120548],'mapped','\u03B3'],[[120549,120549],'mapped','\u03B4'],[[120550,120550],'mapped','\u03B5'],[[120551,120551],'mapped','\u03B6'],[[120552,120552],'mapped','\u03B7'],[[120553,120553],'mapped','\u03B8'],[[120554,120554],'mapped','\u03B9'],[[120555,120555],'mapped','\u03BA'],[[120556,120556],'mapped','\u03BB'],[[120557,120557],'mapped','\u03BC'],[[120558,120558],'mapped','\u03BD'],[[120559,120559],'mapped','\u03BE'],[[120560,120560],'mapped','\u03BF'],[[120561,120561],'mapped','\u03C0'],[[120562,120562],'mapped','\u03C1'],[[120563,120563],'mapped','\u03B8'],[[120564,120564],'mapped','\u03C3'],[[120565,120565],'mapped','\u03C4'],[[120566,120566],'mapped','\u03C5'],[[120567,120567],'mapped','\u03C6'],[[120568,120568],'mapped','\u03C7'],[[120569,120569],'mapped','\u03C8'],[[120570,120570],'mapped','\u03C9'],[[120571,120571],'mapped','\u2207'],[[120572,120572],'mapped','\u03B1'],[[120573,120573],'mapped','\u03B2'],[[120574,120574],'mapped','\u03B3'],[[120575,120575],'mapped','\u03B4'],[[120576,120576],'mapped','\u03B5'],[[120577,120577],'mapped','\u03B6'],[[120578,120578],'mapped','\u03B7'],[[120579,120579],'mapped','\u03B8'],[[120580,120580],'mapped','\u03B9'],[[120581,120581],'mapped','\u03BA'],[[120582,120582],'mapped','\u03BB'],[[120583,120583],'mapped','\u03BC'],[[120584,120584],'mapped','\u03BD'],[[120585,120585],'mapped','\u03BE'],[[120586,120586],'mapped','\u03BF'],[[120587,120587],'mapped','\u03C0'],[[120588,120588],'mapped','\u03C1'],[[120589,120590],'mapped','\u03C3'],[[120591,120591],'mapped','\u03C4'],[[120592,120592],'mapped','\u03C5'],[[120593,120593],'mapped','\u03C6'],[[120594,120594],'mapped','\u03C7'],[[120595,120595],'mapped','\u03C8'],[[120596,120596],'mapped','\u03C9'],[[120597,120597],'mapped','\u2202'],[[120598,120598],'mapped','\u03B5'],[[120599,120599],'mapped','\u03B8'],[[120600,120600],'mapped','\u03BA'],[[120601,120601],'mapped','\u03C6'],[[120602,120602],'mapped','\u03C1'],[[120603,120603],'mapped','\u03C0'],[[120604,120604],'mapped','\u03B1'],[[120605,120605],'mapped','\u03B2'],[[120606,120606],'mapped','\u03B3'],[[120607,120607],'mapped','\u03B4'],[[120608,120608],'mapped','\u03B5'],[[120609,120609],'mapped','\u03B6'],[[120610,120610],'mapped','\u03B7'],[[120611,120611],'mapped','\u03B8'],[[120612,120612],'mapped','\u03B9'],[[120613,120613],'mapped','\u03BA'],[[120614,120614],'mapped','\u03BB'],[[120615,120615],'mapped','\u03BC'],[[120616,120616],'mapped','\u03BD'],[[120617,120617],'mapped','\u03BE'],[[120618,120618],'mapped','\u03BF'],[[120619,120619],'mapped','\u03C0'],[[120620,120620],'mapped','\u03C1'],[[120621,120621],'mapped','\u03B8'],[[120622,120622],'mapped','\u03C3'],[[120623,120623],'mapped','\u03C4'],[[120624,120624],'mapped','\u03C5'],[[120625,120625],'mapped','\u03C6'],[[120626,120626],'mapped','\u03C7'],[[120627,120627],'mapped','\u03C8'],[[120628,120628],'mapped','\u03C9'],[[120629,120629],'mapped','\u2207'],[[120630,120630],'mapped','\u03B1'],[[120631,120631],'mapped','\u03B2'],[[120632,120632],'mapped','\u03B3'],[[120633,120633],'mapped','\u03B4'],[[120634,120634],'mapped','\u03B5'],[[120635,120635],'mapped','\u03B6'],[[120636,120636],'mapped','\u03B7'],[[120637,120637],'mapped','\u03B8'],[[120638,120638],'mapped','\u03B9'],[[120639,120639],'mapped','\u03BA'],[[120640,120640],'mapped','\u03BB'],[[120641,120641],'mapped','\u03BC'],[[120642,120642],'mapped','\u03BD'],[[120643,120643],'mapped','\u03BE'],[[120644,120644],'mapped','\u03BF'],[[120645,120645],'mapped','\u03C0'],[[120646,120646],'mapped','\u03C1'],[[120647,120648],'mapped','\u03C3'],[[120649,120649],'mapped','\u03C4'],[[120650,120650],'mapped','\u03C5'],[[120651,120651],'mapped','\u03C6'],[[120652,120652],'mapped','\u03C7'],[[120653,120653],'mapped','\u03C8'],[[120654,120654],'mapped','\u03C9'],[[120655,120655],'mapped','\u2202'],[[120656,120656],'mapped','\u03B5'],[[120657,120657],'mapped','\u03B8'],[[120658,120658],'mapped','\u03BA'],[[120659,120659],'mapped','\u03C6'],[[120660,120660],'mapped','\u03C1'],[[120661,120661],'mapped','\u03C0'],[[120662,120662],'mapped','\u03B1'],[[120663,120663],'mapped','\u03B2'],[[120664,120664],'mapped','\u03B3'],[[120665,120665],'mapped','\u03B4'],[[120666,120666],'mapped','\u03B5'],[[120667,120667],'mapped','\u03B6'],[[120668,120668],'mapped','\u03B7'],[[120669,120669],'mapped','\u03B8'],[[120670,120670],'mapped','\u03B9'],[[120671,120671],'mapped','\u03BA'],[[120672,120672],'mapped','\u03BB'],[[120673,120673],'mapped','\u03BC'],[[120674,120674],'mapped','\u03BD'],[[120675,120675],'mapped','\u03BE'],[[120676,120676],'mapped','\u03BF'],[[120677,120677],'mapped','\u03C0'],[[120678,120678],'mapped','\u03C1'],[[120679,120679],'mapped','\u03B8'],[[120680,120680],'mapped','\u03C3'],[[120681,120681],'mapped','\u03C4'],[[120682,120682],'mapped','\u03C5'],[[120683,120683],'mapped','\u03C6'],[[120684,120684],'mapped','\u03C7'],[[120685,120685],'mapped','\u03C8'],[[120686,120686],'mapped','\u03C9'],[[120687,120687],'mapped','\u2207'],[[120688,120688],'mapped','\u03B1'],[[120689,120689],'mapped','\u03B2'],[[120690,120690],'mapped','\u03B3'],[[120691,120691],'mapped','\u03B4'],[[120692,120692],'mapped','\u03B5'],[[120693,120693],'mapped','\u03B6'],[[120694,120694],'mapped','\u03B7'],[[120695,120695],'mapped','\u03B8'],[[120696,120696],'mapped','\u03B9'],[[120697,120697],'mapped','\u03BA'],[[120698,120698],'mapped','\u03BB'],[[120699,120699],'mapped','\u03BC'],[[120700,120700],'mapped','\u03BD'],[[120701,120701],'mapped','\u03BE'],[[120702,120702],'mapped','\u03BF'],[[120703,120703],'mapped','\u03C0'],[[120704,120704],'mapped','\u03C1'],[[120705,120706],'mapped','\u03C3'],[[120707,120707],'mapped','\u03C4'],[[120708,120708],'mapped','\u03C5'],[[120709,120709],'mapped','\u03C6'],[[120710,120710],'mapped','\u03C7'],[[120711,120711],'mapped','\u03C8'],[[120712,120712],'mapped','\u03C9'],[[120713,120713],'mapped','\u2202'],[[120714,120714],'mapped','\u03B5'],[[120715,120715],'mapped','\u03B8'],[[120716,120716],'mapped','\u03BA'],[[120717,120717],'mapped','\u03C6'],[[120718,120718],'mapped','\u03C1'],[[120719,120719],'mapped','\u03C0'],[[120720,120720],'mapped','\u03B1'],[[120721,120721],'mapped','\u03B2'],[[120722,120722],'mapped','\u03B3'],[[120723,120723],'mapped','\u03B4'],[[120724,120724],'mapped','\u03B5'],[[120725,120725],'mapped','\u03B6'],[[120726,120726],'mapped','\u03B7'],[[120727,120727],'mapped','\u03B8'],[[120728,120728],'mapped','\u03B9'],[[120729,120729],'mapped','\u03BA'],[[120730,120730],'mapped','\u03BB'],[[120731,120731],'mapped','\u03BC'],[[120732,120732],'mapped','\u03BD'],[[120733,120733],'mapped','\u03BE'],[[120734,120734],'mapped','\u03BF'],[[120735,120735],'mapped','\u03C0'],[[120736,120736],'mapped','\u03C1'],[[120737,120737],'mapped','\u03B8'],[[120738,120738],'mapped','\u03C3'],[[120739,120739],'mapped','\u03C4'],[[120740,120740],'mapped','\u03C5'],[[120741,120741],'mapped','\u03C6'],[[120742,120742],'mapped','\u03C7'],[[120743,120743],'mapped','\u03C8'],[[120744,120744],'mapped','\u03C9'],[[120745,120745],'mapped','\u2207'],[[120746,120746],'mapped','\u03B1'],[[120747,120747],'mapped','\u03B2'],[[120748,120748],'mapped','\u03B3'],[[120749,120749],'mapped','\u03B4'],[[120750,120750],'mapped','\u03B5'],[[120751,120751],'mapped','\u03B6'],[[120752,120752],'mapped','\u03B7'],[[120753,120753],'mapped','\u03B8'],[[120754,120754],'mapped','\u03B9'],[[120755,120755],'mapped','\u03BA'],[[120756,120756],'mapped','\u03BB'],[[120757,120757],'mapped','\u03BC'],[[120758,120758],'mapped','\u03BD'],[[120759,120759],'mapped','\u03BE'],[[120760,120760],'mapped','\u03BF'],[[120761,120761],'mapped','\u03C0'],[[120762,120762],'mapped','\u03C1'],[[120763,120764],'mapped','\u03C3'],[[120765,120765],'mapped','\u03C4'],[[120766,120766],'mapped','\u03C5'],[[120767,120767],'mapped','\u03C6'],[[120768,120768],'mapped','\u03C7'],[[120769,120769],'mapped','\u03C8'],[[120770,120770],'mapped','\u03C9'],[[120771,120771],'mapped','\u2202'],[[120772,120772],'mapped','\u03B5'],[[120773,120773],'mapped','\u03B8'],[[120774,120774],'mapped','\u03BA'],[[120775,120775],'mapped','\u03C6'],[[120776,120776],'mapped','\u03C1'],[[120777,120777],'mapped','\u03C0'],[[120778,120779],'mapped','\u03DD'],[[120780,120781],'disallowed'],[[120782,120782],'mapped','0'],[[120783,120783],'mapped','1'],[[120784,120784],'mapped','2'],[[120785,120785],'mapped','3'],[[120786,120786],'mapped','4'],[[120787,120787],'mapped','5'],[[120788,120788],'mapped','6'],[[120789,120789],'mapped','7'],[[120790,120790],'mapped','8'],[[120791,120791],'mapped','9'],[[120792,120792],'mapped','0'],[[120793,120793],'mapped','1'],[[120794,120794],'mapped','2'],[[120795,120795],'mapped','3'],[[120796,120796],'mapped','4'],[[120797,120797],'mapped','5'],[[120798,120798],'mapped','6'],[[120799,120799],'mapped','7'],[[120800,120800],'mapped','8'],[[120801,120801],'mapped','9'],[[120802,120802],'mapped','0'],[[120803,120803],'mapped','1'],[[120804,120804],'mapped','2'],[[120805,120805],'mapped','3'],[[120806,120806],'mapped','4'],[[120807,120807],'mapped','5'],[[120808,120808],'mapped','6'],[[120809,120809],'mapped','7'],[[120810,120810],'mapped','8'],[[120811,120811],'mapped','9'],[[120812,120812],'mapped','0'],[[120813,120813],'mapped','1'],[[120814,120814],'mapped','2'],[[120815,120815],'mapped','3'],[[120816,120816],'mapped','4'],[[120817,120817],'mapped','5'],[[120818,120818],'mapped','6'],[[120819,120819],'mapped','7'],[[120820,120820],'mapped','8'],[[120821,120821],'mapped','9'],[[120822,120822],'mapped','0'],[[120823,120823],'mapped','1'],[[120824,120824],'mapped','2'],[[120825,120825],'mapped','3'],[[120826,120826],'mapped','4'],[[120827,120827],'mapped','5'],[[120828,120828],'mapped','6'],[[120829,120829],'mapped','7'],[[120830,120830],'mapped','8'],[[120831,120831],'mapped','9'],[[120832,121343],'valid','','NV8'],[[121344,121398],'valid'],[[121399,121402],'valid','','NV8'],[[121403,121452],'valid'],[[121453,121460],'valid','','NV8'],[[121461,121461],'valid'],[[121462,121475],'valid','','NV8'],[[121476,121476],'valid'],[[121477,121483],'valid','','NV8'],[[121484,121498],'disallowed'],[[121499,121503],'valid'],[[121504,121504],'disallowed'],[[121505,121519],'valid'],[[121520,122879],'disallowed'],[[122880,122886],'valid'],[[122887,122887],'disallowed'],[[122888,122904],'valid'],[[122905,122906],'disallowed'],[[122907,122913],'valid'],[[122914,122914],'disallowed'],[[122915,122916],'valid'],[[122917,122917],'disallowed'],[[122918,122922],'valid'],[[122923,124927],'disallowed'],[[124928,125124],'valid'],[[125125,125126],'disallowed'],[[125127,125135],'valid','','NV8'],[[125136,125142],'valid'],[[125143,125183],'disallowed'],[[125184,125184],'mapped','\uD83A\uDD22'],[[125185,125185],'mapped','\uD83A\uDD23'],[[125186,125186],'mapped','\uD83A\uDD24'],[[125187,125187],'mapped','\uD83A\uDD25'],[[125188,125188],'mapped','\uD83A\uDD26'],[[125189,125189],'mapped','\uD83A\uDD27'],[[125190,125190],'mapped','\uD83A\uDD28'],[[125191,125191],'mapped','\uD83A\uDD29'],[[125192,125192],'mapped','\uD83A\uDD2A'],[[125193,125193],'mapped','\uD83A\uDD2B'],[[125194,125194],'mapped','\uD83A\uDD2C'],[[125195,125195],'mapped','\uD83A\uDD2D'],[[125196,125196],'mapped','\uD83A\uDD2E'],[[125197,125197],'mapped','\uD83A\uDD2F'],[[125198,125198],'mapped','\uD83A\uDD30'],[[125199,125199],'mapped','\uD83A\uDD31'],[[125200,125200],'mapped','\uD83A\uDD32'],[[125201,125201],'mapped','\uD83A\uDD33'],[[125202,125202],'mapped','\uD83A\uDD34'],[[125203,125203],'mapped','\uD83A\uDD35'],[[125204,125204],'mapped','\uD83A\uDD36'],[[125205,125205],'mapped','\uD83A\uDD37'],[[125206,125206],'mapped','\uD83A\uDD38'],[[125207,125207],'mapped','\uD83A\uDD39'],[[125208,125208],'mapped','\uD83A\uDD3A'],[[125209,125209],'mapped','\uD83A\uDD3B'],[[125210,125210],'mapped','\uD83A\uDD3C'],[[125211,125211],'mapped','\uD83A\uDD3D'],[[125212,125212],'mapped','\uD83A\uDD3E'],[[125213,125213],'mapped','\uD83A\uDD3F'],[[125214,125214],'mapped','\uD83A\uDD40'],[[125215,125215],'mapped','\uD83A\uDD41'],[[125216,125216],'mapped','\uD83A\uDD42'],[[125217,125217],'mapped','\uD83A\uDD43'],[[125218,125258],'valid'],[[125259,125263],'disallowed'],[[125264,125273],'valid'],[[125274,125277],'disallowed'],[[125278,125279],'valid','','NV8'],[[125280,126463],'disallowed'],[[126464,126464],'mapped','\u0627'],[[126465,126465],'mapped','\u0628'],[[126466,126466],'mapped','\u062C'],[[126467,126467],'mapped','\u062F'],[[126468,126468],'disallowed'],[[126469,126469],'mapped','\u0648'],[[126470,126470],'mapped','\u0632'],[[126471,126471],'mapped','\u062D'],[[126472,126472],'mapped','\u0637'],[[126473,126473],'mapped','\u064A'],[[126474,126474],'mapped','\u0643'],[[126475,126475],'mapped','\u0644'],[[126476,126476],'mapped','\u0645'],[[126477,126477],'mapped','\u0646'],[[126478,126478],'mapped','\u0633'],[[126479,126479],'mapped','\u0639'],[[126480,126480],'mapped','\u0641'],[[126481,126481],'mapped','\u0635'],[[126482,126482],'mapped','\u0642'],[[126483,126483],'mapped','\u0631'],[[126484,126484],'mapped','\u0634'],[[126485,126485],'mapped','\u062A'],[[126486,126486],'mapped','\u062B'],[[126487,126487],'mapped','\u062E'],[[126488,126488],'mapped','\u0630'],[[126489,126489],'mapped','\u0636'],[[126490,126490],'mapped','\u0638'],[[126491,126491],'mapped','\u063A'],[[126492,126492],'mapped','\u066E'],[[126493,126493],'mapped','\u06BA'],[[126494,126494],'mapped','\u06A1'],[[126495,126495],'mapped','\u066F'],[[126496,126496],'disallowed'],[[126497,126497],'mapped','\u0628'],[[126498,126498],'mapped','\u062C'],[[126499,126499],'disallowed'],[[126500,126500],'mapped','\u0647'],[[126501,126502],'disallowed'],[[126503,126503],'mapped','\u062D'],[[126504,126504],'disallowed'],[[126505,126505],'mapped','\u064A'],[[126506,126506],'mapped','\u0643'],[[126507,126507],'mapped','\u0644'],[[126508,126508],'mapped','\u0645'],[[126509,126509],'mapped','\u0646'],[[126510,126510],'mapped','\u0633'],[[126511,126511],'mapped','\u0639'],[[126512,126512],'mapped','\u0641'],[[126513,126513],'mapped','\u0635'],[[126514,126514],'mapped','\u0642'],[[126515,126515],'disallowed'],[[126516,126516],'mapped','\u0634'],[[126517,126517],'mapped','\u062A'],[[126518,126518],'mapped','\u062B'],[[126519,126519],'mapped','\u062E'],[[126520,126520],'disallowed'],[[126521,126521],'mapped','\u0636'],[[126522,126522],'disallowed'],[[126523,126523],'mapped','\u063A'],[[126524,126529],'disallowed'],[[126530,126530],'mapped','\u062C'],[[126531,126534],'disallowed'],[[126535,126535],'mapped','\u062D'],[[126536,126536],'disallowed'],[[126537,126537],'mapped','\u064A'],[[126538,126538],'disallowed'],[[126539,126539],'mapped','\u0644'],[[126540,126540],'disallowed'],[[126541,126541],'mapped','\u0646'],[[126542,126542],'mapped','\u0633'],[[126543,126543],'mapped','\u0639'],[[126544,126544],'disallowed'],[[126545,126545],'mapped','\u0635'],[[126546,126546],'mapped','\u0642'],[[126547,126547],'disallowed'],[[126548,126548],'mapped','\u0634'],[[126549,126550],'disallowed'],[[126551,126551],'mapped','\u062E'],[[126552,126552],'disallowed'],[[126553,126553],'mapped','\u0636'],[[126554,126554],'disallowed'],[[126555,126555],'mapped','\u063A'],[[126556,126556],'disallowed'],[[126557,126557],'mapped','\u06BA'],[[126558,126558],'disallowed'],[[126559,126559],'mapped','\u066F'],[[126560,126560],'disallowed'],[[126561,126561],'mapped','\u0628'],[[126562,126562],'mapped','\u062C'],[[126563,126563],'disallowed'],[[126564,126564],'mapped','\u0647'],[[126565,126566],'disallowed'],[[126567,126567],'mapped','\u062D'],[[126568,126568],'mapped','\u0637'],[[126569,126569],'mapped','\u064A'],[[126570,126570],'mapped','\u0643'],[[126571,126571],'disallowed'],[[126572,126572],'mapped','\u0645'],[[126573,126573],'mapped','\u0646'],[[126574,126574],'mapped','\u0633'],[[126575,126575],'mapped','\u0639'],[[126576,126576],'mapped','\u0641'],[[126577,126577],'mapped','\u0635'],[[126578,126578],'mapped','\u0642'],[[126579,126579],'disallowed'],[[126580,126580],'mapped','\u0634'],[[126581,126581],'mapped','\u062A'],[[126582,126582],'mapped','\u062B'],[[126583,126583],'mapped','\u062E'],[[126584,126584],'disallowed'],[[126585,126585],'mapped','\u0636'],[[126586,126586],'mapped','\u0638'],[[126587,126587],'mapped','\u063A'],[[126588,126588],'mapped','\u066E'],[[126589,126589],'disallowed'],[[126590,126590],'mapped','\u06A1'],[[126591,126591],'disallowed'],[[126592,126592],'mapped','\u0627'],[[126593,126593],'mapped','\u0628'],[[126594,126594],'mapped','\u062C'],[[126595,126595],'mapped','\u062F'],[[126596,126596],'mapped','\u0647'],[[126597,126597],'mapped','\u0648'],[[126598,126598],'mapped','\u0632'],[[126599,126599],'mapped','\u062D'],[[126600,126600],'mapped','\u0637'],[[126601,126601],'mapped','\u064A'],[[126602,126602],'disallowed'],[[126603,126603],'mapped','\u0644'],[[126604,126604],'mapped','\u0645'],[[126605,126605],'mapped','\u0646'],[[126606,126606],'mapped','\u0633'],[[126607,126607],'mapped','\u0639'],[[126608,126608],'mapped','\u0641'],[[126609,126609],'mapped','\u0635'],[[126610,126610],'mapped','\u0642'],[[126611,126611],'mapped','\u0631'],[[126612,126612],'mapped','\u0634'],[[126613,126613],'mapped','\u062A'],[[126614,126614],'mapped','\u062B'],[[126615,126615],'mapped','\u062E'],[[126616,126616],'mapped','\u0630'],[[126617,126617],'mapped','\u0636'],[[126618,126618],'mapped','\u0638'],[[126619,126619],'mapped','\u063A'],[[126620,126624],'disallowed'],[[126625,126625],'mapped','\u0628'],[[126626,126626],'mapped','\u062C'],[[126627,126627],'mapped','\u062F'],[[126628,126628],'disallowed'],[[126629,126629],'mapped','\u0648'],[[126630,126630],'mapped','\u0632'],[[126631,126631],'mapped','\u062D'],[[126632,126632],'mapped','\u0637'],[[126633,126633],'mapped','\u064A'],[[126634,126634],'disallowed'],[[126635,126635],'mapped','\u0644'],[[126636,126636],'mapped','\u0645'],[[126637,126637],'mapped','\u0646'],[[126638,126638],'mapped','\u0633'],[[126639,126639],'mapped','\u0639'],[[126640,126640],'mapped','\u0641'],[[126641,126641],'mapped','\u0635'],[[126642,126642],'mapped','\u0642'],[[126643,126643],'mapped','\u0631'],[[126644,126644],'mapped','\u0634'],[[126645,126645],'mapped','\u062A'],[[126646,126646],'mapped','\u062B'],[[126647,126647],'mapped','\u062E'],[[126648,126648],'mapped','\u0630'],[[126649,126649],'mapped','\u0636'],[[126650,126650],'mapped','\u0638'],[[126651,126651],'mapped','\u063A'],[[126652,126703],'disallowed'],[[126704,126705],'valid','','NV8'],[[126706,126975],'disallowed'],[[126976,127019],'valid','','NV8'],[[127020,127023],'disallowed'],[[127024,127123],'valid','','NV8'],[[127124,127135],'disallowed'],[[127136,127150],'valid','','NV8'],[[127151,127152],'disallowed'],[[127153,127166],'valid','','NV8'],[[127167,127167],'valid','','NV8'],[[127168,127168],'disallowed'],[[127169,127183],'valid','','NV8'],[[127184,127184],'disallowed'],[[127185,127199],'valid','','NV8'],[[127200,127221],'valid','','NV8'],[[127222,127231],'disallowed'],[[127232,127232],'disallowed'],[[127233,127233],'disallowed_STD3_mapped','0,'],[[127234,127234],'disallowed_STD3_mapped','1,'],[[127235,127235],'disallowed_STD3_mapped','2,'],[[127236,127236],'disallowed_STD3_mapped','3,'],[[127237,127237],'disallowed_STD3_mapped','4,'],[[127238,127238],'disallowed_STD3_mapped','5,'],[[127239,127239],'disallowed_STD3_mapped','6,'],[[127240,127240],'disallowed_STD3_mapped','7,'],[[127241,127241],'disallowed_STD3_mapped','8,'],[[127242,127242],'disallowed_STD3_mapped','9,'],[[127243,127244],'valid','','NV8'],[[127245,127247],'disallowed'],[[127248,127248],'disallowed_STD3_mapped','(a)'],[[127249,127249],'disallowed_STD3_mapped','(b)'],[[127250,127250],'disallowed_STD3_mapped','(c)'],[[127251,127251],'disallowed_STD3_mapped','(d)'],[[127252,127252],'disallowed_STD3_mapped','(e)'],[[127253,127253],'disallowed_STD3_mapped','(f)'],[[127254,127254],'disallowed_STD3_mapped','(g)'],[[127255,127255],'disallowed_STD3_mapped','(h)'],[[127256,127256],'disallowed_STD3_mapped','(i)'],[[127257,127257],'disallowed_STD3_mapped','(j)'],[[127258,127258],'disallowed_STD3_mapped','(k)'],[[127259,127259],'disallowed_STD3_mapped','(l)'],[[127260,127260],'disallowed_STD3_mapped','(m)'],[[127261,127261],'disallowed_STD3_mapped','(n)'],[[127262,127262],'disallowed_STD3_mapped','(o)'],[[127263,127263],'disallowed_STD3_mapped','(p)'],[[127264,127264],'disallowed_STD3_mapped','(q)'],[[127265,127265],'disallowed_STD3_mapped','(r)'],[[127266,127266],'disallowed_STD3_mapped','(s)'],[[127267,127267],'disallowed_STD3_mapped','(t)'],[[127268,127268],'disallowed_STD3_mapped','(u)'],[[127269,127269],'disallowed_STD3_mapped','(v)'],[[127270,127270],'disallowed_STD3_mapped','(w)'],[[127271,127271],'disallowed_STD3_mapped','(x)'],[[127272,127272],'disallowed_STD3_mapped','(y)'],[[127273,127273],'disallowed_STD3_mapped','(z)'],[[127274,127274],'mapped','\u3014s\u3015'],[[127275,127275],'mapped','c'],[[127276,127276],'mapped','r'],[[127277,127277],'mapped','cd'],[[127278,127278],'mapped','wz'],[[127279,127279],'disallowed'],[[127280,127280],'mapped','a'],[[127281,127281],'mapped','b'],[[127282,127282],'mapped','c'],[[127283,127283],'mapped','d'],[[127284,127284],'mapped','e'],[[127285,127285],'mapped','f'],[[127286,127286],'mapped','g'],[[127287,127287],'mapped','h'],[[127288,127288],'mapped','i'],[[127289,127289],'mapped','j'],[[127290,127290],'mapped','k'],[[127291,127291],'mapped','l'],[[127292,127292],'mapped','m'],[[127293,127293],'mapped','n'],[[127294,127294],'mapped','o'],[[127295,127295],'mapped','p'],[[127296,127296],'mapped','q'],[[127297,127297],'mapped','r'],[[127298,127298],'mapped','s'],[[127299,127299],'mapped','t'],[[127300,127300],'mapped','u'],[[127301,127301],'mapped','v'],[[127302,127302],'mapped','w'],[[127303,127303],'mapped','x'],[[127304,127304],'mapped','y'],[[127305,127305],'mapped','z'],[[127306,127306],'mapped','hv'],[[127307,127307],'mapped','mv'],[[127308,127308],'mapped','sd'],[[127309,127309],'mapped','ss'],[[127310,127310],'mapped','ppv'],[[127311,127311],'mapped','wc'],[[127312,127318],'valid','','NV8'],[[127319,127319],'valid','','NV8'],[[127320,127326],'valid','','NV8'],[[127327,127327],'valid','','NV8'],[[127328,127337],'valid','','NV8'],[[127338,127338],'mapped','mc'],[[127339,127339],'mapped','md'],[[127340,127343],'disallowed'],[[127344,127352],'valid','','NV8'],[[127353,127353],'valid','','NV8'],[[127354,127354],'valid','','NV8'],[[127355,127356],'valid','','NV8'],[[127357,127358],'valid','','NV8'],[[127359,127359],'valid','','NV8'],[[127360,127369],'valid','','NV8'],[[127370,127373],'valid','','NV8'],[[127374,127375],'valid','','NV8'],[[127376,127376],'mapped','dj'],[[127377,127386],'valid','','NV8'],[[127387,127404],'valid','','NV8'],[[127405,127461],'disallowed'],[[127462,127487],'valid','','NV8'],[[127488,127488],'mapped','\u307B\u304B'],[[127489,127489],'mapped','\u30B3\u30B3'],[[127490,127490],'mapped','\u30B5'],[[127491,127503],'disallowed'],[[127504,127504],'mapped','\u624B'],[[127505,127505],'mapped','\u5B57'],[[127506,127506],'mapped','\u53CC'],[[127507,127507],'mapped','\u30C7'],[[127508,127508],'mapped','\u4E8C'],[[127509,127509],'mapped','\u591A'],[[127510,127510],'mapped','\u89E3'],[[127511,127511],'mapped','\u5929'],[[127512,127512],'mapped','\u4EA4'],[[127513,127513],'mapped','\u6620'],[[127514,127514],'mapped','\u7121'],[[127515,127515],'mapped','\u6599'],[[127516,127516],'mapped','\u524D'],[[127517,127517],'mapped','\u5F8C'],[[127518,127518],'mapped','\u518D'],[[127519,127519],'mapped','\u65B0'],[[127520,127520],'mapped','\u521D'],[[127521,127521],'mapped','\u7D42'],[[127522,127522],'mapped','\u751F'],[[127523,127523],'mapped','\u8CA9'],[[127524,127524],'mapped','\u58F0'],[[127525,127525],'mapped','\u5439'],[[127526,127526],'mapped','\u6F14'],[[127527,127527],'mapped','\u6295'],[[127528,127528],'mapped','\u6355'],[[127529,127529],'mapped','\u4E00'],[[127530,127530],'mapped','\u4E09'],[[127531,127531],'mapped','\u904A'],[[127532,127532],'mapped','\u5DE6'],[[127533,127533],'mapped','\u4E2D'],[[127534,127534],'mapped','\u53F3'],[[127535,127535],'mapped','\u6307'],[[127536,127536],'mapped','\u8D70'],[[127537,127537],'mapped','\u6253'],[[127538,127538],'mapped','\u7981'],[[127539,127539],'mapped','\u7A7A'],[[127540,127540],'mapped','\u5408'],[[127541,127541],'mapped','\u6E80'],[[127542,127542],'mapped','\u6709'],[[127543,127543],'mapped','\u6708'],[[127544,127544],'mapped','\u7533'],[[127545,127545],'mapped','\u5272'],[[127546,127546],'mapped','\u55B6'],[[127547,127547],'mapped','\u914D'],[[127548,127551],'disallowed'],[[127552,127552],'mapped','\u3014\u672C\u3015'],[[127553,127553],'mapped','\u3014\u4E09\u3015'],[[127554,127554],'mapped','\u3014\u4E8C\u3015'],[[127555,127555],'mapped','\u3014\u5B89\u3015'],[[127556,127556],'mapped','\u3014\u70B9\u3015'],[[127557,127557],'mapped','\u3014\u6253\u3015'],[[127558,127558],'mapped','\u3014\u76D7\u3015'],[[127559,127559],'mapped','\u3014\u52DD\u3015'],[[127560,127560],'mapped','\u3014\u6557\u3015'],[[127561,127567],'disallowed'],[[127568,127568],'mapped','\u5F97'],[[127569,127569],'mapped','\u53EF'],[[127570,127583],'disallowed'],[[127584,127589],'valid','','NV8'],[[127590,127743],'disallowed'],[[127744,127776],'valid','','NV8'],[[127777,127788],'valid','','NV8'],[[127789,127791],'valid','','NV8'],[[127792,127797],'valid','','NV8'],[[127798,127798],'valid','','NV8'],[[127799,127868],'valid','','NV8'],[[127869,127869],'valid','','NV8'],[[127870,127871],'valid','','NV8'],[[127872,127891],'valid','','NV8'],[[127892,127903],'valid','','NV8'],[[127904,127940],'valid','','NV8'],[[127941,127941],'valid','','NV8'],[[127942,127946],'valid','','NV8'],[[127947,127950],'valid','','NV8'],[[127951,127955],'valid','','NV8'],[[127956,127967],'valid','','NV8'],[[127968,127984],'valid','','NV8'],[[127985,127991],'valid','','NV8'],[[127992,127999],'valid','','NV8'],[[128000,128062],'valid','','NV8'],[[128063,128063],'valid','','NV8'],[[128064,128064],'valid','','NV8'],[[128065,128065],'valid','','NV8'],[[128066,128247],'valid','','NV8'],[[128248,128248],'valid','','NV8'],[[128249,128252],'valid','','NV8'],[[128253,128254],'valid','','NV8'],[[128255,128255],'valid','','NV8'],[[128256,128317],'valid','','NV8'],[[128318,128319],'valid','','NV8'],[[128320,128323],'valid','','NV8'],[[128324,128330],'valid','','NV8'],[[128331,128335],'valid','','NV8'],[[128336,128359],'valid','','NV8'],[[128360,128377],'valid','','NV8'],[[128378,128378],'valid','','NV8'],[[128379,128419],'valid','','NV8'],[[128420,128420],'valid','','NV8'],[[128421,128506],'valid','','NV8'],[[128507,128511],'valid','','NV8'],[[128512,128512],'valid','','NV8'],[[128513,128528],'valid','','NV8'],[[128529,128529],'valid','','NV8'],[[128530,128532],'valid','','NV8'],[[128533,128533],'valid','','NV8'],[[128534,128534],'valid','','NV8'],[[128535,128535],'valid','','NV8'],[[128536,128536],'valid','','NV8'],[[128537,128537],'valid','','NV8'],[[128538,128538],'valid','','NV8'],[[128539,128539],'valid','','NV8'],[[128540,128542],'valid','','NV8'],[[128543,128543],'valid','','NV8'],[[128544,128549],'valid','','NV8'],[[128550,128551],'valid','','NV8'],[[128552,128555],'valid','','NV8'],[[128556,128556],'valid','','NV8'],[[128557,128557],'valid','','NV8'],[[128558,128559],'valid','','NV8'],[[128560,128563],'valid','','NV8'],[[128564,128564],'valid','','NV8'],[[128565,128576],'valid','','NV8'],[[128577,128578],'valid','','NV8'],[[128579,128580],'valid','','NV8'],[[128581,128591],'valid','','NV8'],[[128592,128639],'valid','','NV8'],[[128640,128709],'valid','','NV8'],[[128710,128719],'valid','','NV8'],[[128720,128720],'valid','','NV8'],[[128721,128722],'valid','','NV8'],[[128723,128724],'valid','','NV8'],[[128725,128735],'disallowed'],[[128736,128748],'valid','','NV8'],[[128749,128751],'disallowed'],[[128752,128755],'valid','','NV8'],[[128756,128758],'valid','','NV8'],[[128759,128760],'valid','','NV8'],[[128761,128767],'disallowed'],[[128768,128883],'valid','','NV8'],[[128884,128895],'disallowed'],[[128896,128980],'valid','','NV8'],[[128981,129023],'disallowed'],[[129024,129035],'valid','','NV8'],[[129036,129039],'disallowed'],[[129040,129095],'valid','','NV8'],[[129096,129103],'disallowed'],[[129104,129113],'valid','','NV8'],[[129114,129119],'disallowed'],[[129120,129159],'valid','','NV8'],[[129160,129167],'disallowed'],[[129168,129197],'valid','','NV8'],[[129198,129279],'disallowed'],[[129280,129291],'valid','','NV8'],[[129292,129295],'disallowed'],[[129296,129304],'valid','','NV8'],[[129305,129310],'valid','','NV8'],[[129311,129311],'valid','','NV8'],[[129312,129319],'valid','','NV8'],[[129320,129327],'valid','','NV8'],[[129328,129328],'valid','','NV8'],[[129329,129330],'valid','','NV8'],[[129331,129342],'valid','','NV8'],[[129343,129343],'disallowed'],[[129344,129355],'valid','','NV8'],[[129356,129356],'valid','','NV8'],[[129357,129359],'disallowed'],[[129360,129374],'valid','','NV8'],[[129375,129387],'valid','','NV8'],[[129388,129407],'disallowed'],[[129408,129412],'valid','','NV8'],[[129413,129425],'valid','','NV8'],[[129426,129431],'valid','','NV8'],[[129432,129471],'disallowed'],[[129472,129472],'valid','','NV8'],[[129473,129487],'disallowed'],[[129488,129510],'valid','','NV8'],[[129511,131069],'disallowed'],[[131070,131071],'disallowed'],[[131072,173782],'valid'],[[173783,173823],'disallowed'],[[173824,177972],'valid'],[[177973,177983],'disallowed'],[[177984,178205],'valid'],[[178206,178207],'disallowed'],[[178208,183969],'valid'],[[183970,183983],'disallowed'],[[183984,191456],'valid'],[[191457,194559],'disallowed'],[[194560,194560],'mapped','\u4E3D'],[[194561,194561],'mapped','\u4E38'],[[194562,194562],'mapped','\u4E41'],[[194563,194563],'mapped','\uD840\uDD22'],[[194564,194564],'mapped','\u4F60'],[[194565,194565],'mapped','\u4FAE'],[[194566,194566],'mapped','\u4FBB'],[[194567,194567],'mapped','\u5002'],[[194568,194568],'mapped','\u507A'],[[194569,194569],'mapped','\u5099'],[[194570,194570],'mapped','\u50E7'],[[194571,194571],'mapped','\u50CF'],[[194572,194572],'mapped','\u349E'],[[194573,194573],'mapped','\uD841\uDE3A'],[[194574,194574],'mapped','\u514D'],[[194575,194575],'mapped','\u5154'],[[194576,194576],'mapped','\u5164'],[[194577,194577],'mapped','\u5177'],[[194578,194578],'mapped','\uD841\uDD1C'],[[194579,194579],'mapped','\u34B9'],[[194580,194580],'mapped','\u5167'],[[194581,194581],'mapped','\u518D'],[[194582,194582],'mapped','\uD841\uDD4B'],[[194583,194583],'mapped','\u5197'],[[194584,194584],'mapped','\u51A4'],[[194585,194585],'mapped','\u4ECC'],[[194586,194586],'mapped','\u51AC'],[[194587,194587],'mapped','\u51B5'],[[194588,194588],'mapped','\uD864\uDDDF'],[[194589,194589],'mapped','\u51F5'],[[194590,194590],'mapped','\u5203'],[[194591,194591],'mapped','\u34DF'],[[194592,194592],'mapped','\u523B'],[[194593,194593],'mapped','\u5246'],[[194594,194594],'mapped','\u5272'],[[194595,194595],'mapped','\u5277'],[[194596,194596],'mapped','\u3515'],[[194597,194597],'mapped','\u52C7'],[[194598,194598],'mapped','\u52C9'],[[194599,194599],'mapped','\u52E4'],[[194600,194600],'mapped','\u52FA'],[[194601,194601],'mapped','\u5305'],[[194602,194602],'mapped','\u5306'],[[194603,194603],'mapped','\u5317'],[[194604,194604],'mapped','\u5349'],[[194605,194605],'mapped','\u5351'],[[194606,194606],'mapped','\u535A'],[[194607,194607],'mapped','\u5373'],[[194608,194608],'mapped','\u537D'],[[194609,194611],'mapped','\u537F'],[[194612,194612],'mapped','\uD842\uDE2C'],[[194613,194613],'mapped','\u7070'],[[194614,194614],'mapped','\u53CA'],[[194615,194615],'mapped','\u53DF'],[[194616,194616],'mapped','\uD842\uDF63'],[[194617,194617],'mapped','\u53EB'],[[194618,194618],'mapped','\u53F1'],[[194619,194619],'mapped','\u5406'],[[194620,194620],'mapped','\u549E'],[[194621,194621],'mapped','\u5438'],[[194622,194622],'mapped','\u5448'],[[194623,194623],'mapped','\u5468'],[[194624,194624],'mapped','\u54A2'],[[194625,194625],'mapped','\u54F6'],[[194626,194626],'mapped','\u5510'],[[194627,194627],'mapped','\u5553'],[[194628,194628],'mapped','\u5563'],[[194629,194630],'mapped','\u5584'],[[194631,194631],'mapped','\u5599'],[[194632,194632],'mapped','\u55AB'],[[194633,194633],'mapped','\u55B3'],[[194634,194634],'mapped','\u55C2'],[[194635,194635],'mapped','\u5716'],[[194636,194636],'mapped','\u5606'],[[194637,194637],'mapped','\u5717'],[[194638,194638],'mapped','\u5651'],[[194639,194639],'mapped','\u5674'],[[194640,194640],'mapped','\u5207'],[[194641,194641],'mapped','\u58EE'],[[194642,194642],'mapped','\u57CE'],[[194643,194643],'mapped','\u57F4'],[[194644,194644],'mapped','\u580D'],[[194645,194645],'mapped','\u578B'],[[194646,194646],'mapped','\u5832'],[[194647,194647],'mapped','\u5831'],[[194648,194648],'mapped','\u58AC'],[[194649,194649],'mapped','\uD845\uDCE4'],[[194650,194650],'mapped','\u58F2'],[[194651,194651],'mapped','\u58F7'],[[194652,194652],'mapped','\u5906'],[[194653,194653],'mapped','\u591A'],[[194654,194654],'mapped','\u5922'],[[194655,194655],'mapped','\u5962'],[[194656,194656],'mapped','\uD845\uDEA8'],[[194657,194657],'mapped','\uD845\uDEEA'],[[194658,194658],'mapped','\u59EC'],[[194659,194659],'mapped','\u5A1B'],[[194660,194660],'mapped','\u5A27'],[[194661,194661],'mapped','\u59D8'],[[194662,194662],'mapped','\u5A66'],[[194663,194663],'mapped','\u36EE'],[[194664,194664],'disallowed'],[[194665,194665],'mapped','\u5B08'],[[194666,194667],'mapped','\u5B3E'],[[194668,194668],'mapped','\uD846\uDDC8'],[[194669,194669],'mapped','\u5BC3'],[[194670,194670],'mapped','\u5BD8'],[[194671,194671],'mapped','\u5BE7'],[[194672,194672],'mapped','\u5BF3'],[[194673,194673],'mapped','\uD846\uDF18'],[[194674,194674],'mapped','\u5BFF'],[[194675,194675],'mapped','\u5C06'],[[194676,194676],'disallowed'],[[194677,194677],'mapped','\u5C22'],[[194678,194678],'mapped','\u3781'],[[194679,194679],'mapped','\u5C60'],[[194680,194680],'mapped','\u5C6E'],[[194681,194681],'mapped','\u5CC0'],[[194682,194682],'mapped','\u5C8D'],[[194683,194683],'mapped','\uD847\uDDE4'],[[194684,194684],'mapped','\u5D43'],[[194685,194685],'mapped','\uD847\uDDE6'],[[194686,194686],'mapped','\u5D6E'],[[194687,194687],'mapped','\u5D6B'],[[194688,194688],'mapped','\u5D7C'],[[194689,194689],'mapped','\u5DE1'],[[194690,194690],'mapped','\u5DE2'],[[194691,194691],'mapped','\u382F'],[[194692,194692],'mapped','\u5DFD'],[[194693,194693],'mapped','\u5E28'],[[194694,194694],'mapped','\u5E3D'],[[194695,194695],'mapped','\u5E69'],[[194696,194696],'mapped','\u3862'],[[194697,194697],'mapped','\uD848\uDD83'],[[194698,194698],'mapped','\u387C'],[[194699,194699],'mapped','\u5EB0'],[[194700,194700],'mapped','\u5EB3'],[[194701,194701],'mapped','\u5EB6'],[[194702,194702],'mapped','\u5ECA'],[[194703,194703],'mapped','\uD868\uDF92'],[[194704,194704],'mapped','\u5EFE'],[[194705,194706],'mapped','\uD848\uDF31'],[[194707,194707],'mapped','\u8201'],[[194708,194709],'mapped','\u5F22'],[[194710,194710],'mapped','\u38C7'],[[194711,194711],'mapped','\uD84C\uDEB8'],[[194712,194712],'mapped','\uD858\uDDDA'],[[194713,194713],'mapped','\u5F62'],[[194714,194714],'mapped','\u5F6B'],[[194715,194715],'mapped','\u38E3'],[[194716,194716],'mapped','\u5F9A'],[[194717,194717],'mapped','\u5FCD'],[[194718,194718],'mapped','\u5FD7'],[[194719,194719],'mapped','\u5FF9'],[[194720,194720],'mapped','\u6081'],[[194721,194721],'mapped','\u393A'],[[194722,194722],'mapped','\u391C'],[[194723,194723],'mapped','\u6094'],[[194724,194724],'mapped','\uD849\uDED4'],[[194725,194725],'mapped','\u60C7'],[[194726,194726],'mapped','\u6148'],[[194727,194727],'mapped','\u614C'],[[194728,194728],'mapped','\u614E'],[[194729,194729],'mapped','\u614C'],[[194730,194730],'mapped','\u617A'],[[194731,194731],'mapped','\u618E'],[[194732,194732],'mapped','\u61B2'],[[194733,194733],'mapped','\u61A4'],[[194734,194734],'mapped','\u61AF'],[[194735,194735],'mapped','\u61DE'],[[194736,194736],'mapped','\u61F2'],[[194737,194737],'mapped','\u61F6'],[[194738,194738],'mapped','\u6210'],[[194739,194739],'mapped','\u621B'],[[194740,194740],'mapped','\u625D'],[[194741,194741],'mapped','\u62B1'],[[194742,194742],'mapped','\u62D4'],[[194743,194743],'mapped','\u6350'],[[194744,194744],'mapped','\uD84A\uDF0C'],[[194745,194745],'mapped','\u633D'],[[194746,194746],'mapped','\u62FC'],[[194747,194747],'mapped','\u6368'],[[194748,194748],'mapped','\u6383'],[[194749,194749],'mapped','\u63E4'],[[194750,194750],'mapped','\uD84A\uDFF1'],[[194751,194751],'mapped','\u6422'],[[194752,194752],'mapped','\u63C5'],[[194753,194753],'mapped','\u63A9'],[[194754,194754],'mapped','\u3A2E'],[[194755,194755],'mapped','\u6469'],[[194756,194756],'mapped','\u647E'],[[194757,194757],'mapped','\u649D'],[[194758,194758],'mapped','\u6477'],[[194759,194759],'mapped','\u3A6C'],[[194760,194760],'mapped','\u654F'],[[194761,194761],'mapped','\u656C'],[[194762,194762],'mapped','\uD84C\uDC0A'],[[194763,194763],'mapped','\u65E3'],[[194764,194764],'mapped','\u66F8'],[[194765,194765],'mapped','\u6649'],[[194766,194766],'mapped','\u3B19'],[[194767,194767],'mapped','\u6691'],[[194768,194768],'mapped','\u3B08'],[[194769,194769],'mapped','\u3AE4'],[[194770,194770],'mapped','\u5192'],[[194771,194771],'mapped','\u5195'],[[194772,194772],'mapped','\u6700'],[[194773,194773],'mapped','\u669C'],[[194774,194774],'mapped','\u80AD'],[[194775,194775],'mapped','\u43D9'],[[194776,194776],'mapped','\u6717'],[[194777,194777],'mapped','\u671B'],[[194778,194778],'mapped','\u6721'],[[194779,194779],'mapped','\u675E'],[[194780,194780],'mapped','\u6753'],[[194781,194781],'mapped','\uD84C\uDFC3'],[[194782,194782],'mapped','\u3B49'],[[194783,194783],'mapped','\u67FA'],[[194784,194784],'mapped','\u6785'],[[194785,194785],'mapped','\u6852'],[[194786,194786],'mapped','\u6885'],[[194787,194787],'mapped','\uD84D\uDC6D'],[[194788,194788],'mapped','\u688E'],[[194789,194789],'mapped','\u681F'],[[194790,194790],'mapped','\u6914'],[[194791,194791],'mapped','\u3B9D'],[[194792,194792],'mapped','\u6942'],[[194793,194793],'mapped','\u69A3'],[[194794,194794],'mapped','\u69EA'],[[194795,194795],'mapped','\u6AA8'],[[194796,194796],'mapped','\uD84D\uDEA3'],[[194797,194797],'mapped','\u6ADB'],[[194798,194798],'mapped','\u3C18'],[[194799,194799],'mapped','\u6B21'],[[194800,194800],'mapped','\uD84E\uDCA7'],[[194801,194801],'mapped','\u6B54'],[[194802,194802],'mapped','\u3C4E'],[[194803,194803],'mapped','\u6B72'],[[194804,194804],'mapped','\u6B9F'],[[194805,194805],'mapped','\u6BBA'],[[194806,194806],'mapped','\u6BBB'],[[194807,194807],'mapped','\uD84E\uDE8D'],[[194808,194808],'mapped','\uD847\uDD0B'],[[194809,194809],'mapped','\uD84E\uDEFA'],[[194810,194810],'mapped','\u6C4E'],[[194811,194811],'mapped','\uD84F\uDCBC'],[[194812,194812],'mapped','\u6CBF'],[[194813,194813],'mapped','\u6CCD'],[[194814,194814],'mapped','\u6C67'],[[194815,194815],'mapped','\u6D16'],[[194816,194816],'mapped','\u6D3E'],[[194817,194817],'mapped','\u6D77'],[[194818,194818],'mapped','\u6D41'],[[194819,194819],'mapped','\u6D69'],[[194820,194820],'mapped','\u6D78'],[[194821,194821],'mapped','\u6D85'],[[194822,194822],'mapped','\uD84F\uDD1E'],[[194823,194823],'mapped','\u6D34'],[[194824,194824],'mapped','\u6E2F'],[[194825,194825],'mapped','\u6E6E'],[[194826,194826],'mapped','\u3D33'],[[194827,194827],'mapped','\u6ECB'],[[194828,194828],'mapped','\u6EC7'],[[194829,194829],'mapped','\uD84F\uDED1'],[[194830,194830],'mapped','\u6DF9'],[[194831,194831],'mapped','\u6F6E'],[[194832,194832],'mapped','\uD84F\uDF5E'],[[194833,194833],'mapped','\uD84F\uDF8E'],[[194834,194834],'mapped','\u6FC6'],[[194835,194835],'mapped','\u7039'],[[194836,194836],'mapped','\u701E'],[[194837,194837],'mapped','\u701B'],[[194838,194838],'mapped','\u3D96'],[[194839,194839],'mapped','\u704A'],[[194840,194840],'mapped','\u707D'],[[194841,194841],'mapped','\u7077'],[[194842,194842],'mapped','\u70AD'],[[194843,194843],'mapped','\uD841\uDD25'],[[194844,194844],'mapped','\u7145'],[[194845,194845],'mapped','\uD850\uDE63'],[[194846,194846],'mapped','\u719C'],[[194847,194847],'disallowed'],[[194848,194848],'mapped','\u7228'],[[194849,194849],'mapped','\u7235'],[[194850,194850],'mapped','\u7250'],[[194851,194851],'mapped','\uD851\uDE08'],[[194852,194852],'mapped','\u7280'],[[194853,194853],'mapped','\u7295'],[[194854,194854],'mapped','\uD851\uDF35'],[[194855,194855],'mapped','\uD852\uDC14'],[[194856,194856],'mapped','\u737A'],[[194857,194857],'mapped','\u738B'],[[194858,194858],'mapped','\u3EAC'],[[194859,194859],'mapped','\u73A5'],[[194860,194861],'mapped','\u3EB8'],[[194862,194862],'mapped','\u7447'],[[194863,194863],'mapped','\u745C'],[[194864,194864],'mapped','\u7471'],[[194865,194865],'mapped','\u7485'],[[194866,194866],'mapped','\u74CA'],[[194867,194867],'mapped','\u3F1B'],[[194868,194868],'mapped','\u7524'],[[194869,194869],'mapped','\uD853\uDC36'],[[194870,194870],'mapped','\u753E'],[[194871,194871],'mapped','\uD853\uDC92'],[[194872,194872],'mapped','\u7570'],[[194873,194873],'mapped','\uD848\uDD9F'],[[194874,194874],'mapped','\u7610'],[[194875,194875],'mapped','\uD853\uDFA1'],[[194876,194876],'mapped','\uD853\uDFB8'],[[194877,194877],'mapped','\uD854\uDC44'],[[194878,194878],'mapped','\u3FFC'],[[194879,194879],'mapped','\u4008'],[[194880,194880],'mapped','\u76F4'],[[194881,194881],'mapped','\uD854\uDCF3'],[[194882,194882],'mapped','\uD854\uDCF2'],[[194883,194883],'mapped','\uD854\uDD19'],[[194884,194884],'mapped','\uD854\uDD33'],[[194885,194885],'mapped','\u771E'],[[194886,194887],'mapped','\u771F'],[[194888,194888],'mapped','\u774A'],[[194889,194889],'mapped','\u4039'],[[194890,194890],'mapped','\u778B'],[[194891,194891],'mapped','\u4046'],[[194892,194892],'mapped','\u4096'],[[194893,194893],'mapped','\uD855\uDC1D'],[[194894,194894],'mapped','\u784E'],[[194895,194895],'mapped','\u788C'],[[194896,194896],'mapped','\u78CC'],[[194897,194897],'mapped','\u40E3'],[[194898,194898],'mapped','\uD855\uDE26'],[[194899,194899],'mapped','\u7956'],[[194900,194900],'mapped','\uD855\uDE9A'],[[194901,194901],'mapped','\uD855\uDEC5'],[[194902,194902],'mapped','\u798F'],[[194903,194903],'mapped','\u79EB'],[[194904,194904],'mapped','\u412F'],[[194905,194905],'mapped','\u7A40'],[[194906,194906],'mapped','\u7A4A'],[[194907,194907],'mapped','\u7A4F'],[[194908,194908],'mapped','\uD856\uDD7C'],[[194909,194910],'mapped','\uD856\uDEA7'],[[194911,194911],'disallowed'],[[194912,194912],'mapped','\u4202'],[[194913,194913],'mapped','\uD856\uDFAB'],[[194914,194914],'mapped','\u7BC6'],[[194915,194915],'mapped','\u7BC9'],[[194916,194916],'mapped','\u4227'],[[194917,194917],'mapped','\uD857\uDC80'],[[194918,194918],'mapped','\u7CD2'],[[194919,194919],'mapped','\u42A0'],[[194920,194920],'mapped','\u7CE8'],[[194921,194921],'mapped','\u7CE3'],[[194922,194922],'mapped','\u7D00'],[[194923,194923],'mapped','\uD857\uDF86'],[[194924,194924],'mapped','\u7D63'],[[194925,194925],'mapped','\u4301'],[[194926,194926],'mapped','\u7DC7'],[[194927,194927],'mapped','\u7E02'],[[194928,194928],'mapped','\u7E45'],[[194929,194929],'mapped','\u4334'],[[194930,194930],'mapped','\uD858\uDE28'],[[194931,194931],'mapped','\uD858\uDE47'],[[194932,194932],'mapped','\u4359'],[[194933,194933],'mapped','\uD858\uDED9'],[[194934,194934],'mapped','\u7F7A'],[[194935,194935],'mapped','\uD858\uDF3E'],[[194936,194936],'mapped','\u7F95'],[[194937,194937],'mapped','\u7FFA'],[[194938,194938],'mapped','\u8005'],[[194939,194939],'mapped','\uD859\uDCDA'],[[194940,194940],'mapped','\uD859\uDD23'],[[194941,194941],'mapped','\u8060'],[[194942,194942],'mapped','\uD859\uDDA8'],[[194943,194943],'mapped','\u8070'],[[194944,194944],'mapped','\uD84C\uDF5F'],[[194945,194945],'mapped','\u43D5'],[[194946,194946],'mapped','\u80B2'],[[194947,194947],'mapped','\u8103'],[[194948,194948],'mapped','\u440B'],[[194949,194949],'mapped','\u813E'],[[194950,194950],'mapped','\u5AB5'],[[194951,194951],'mapped','\uD859\uDFA7'],[[194952,194952],'mapped','\uD859\uDFB5'],[[194953,194953],'mapped','\uD84C\uDF93'],[[194954,194954],'mapped','\uD84C\uDF9C'],[[194955,194955],'mapped','\u8201'],[[194956,194956],'mapped','\u8204'],[[194957,194957],'mapped','\u8F9E'],[[194958,194958],'mapped','\u446B'],[[194959,194959],'mapped','\u8291'],[[194960,194960],'mapped','\u828B'],[[194961,194961],'mapped','\u829D'],[[194962,194962],'mapped','\u52B3'],[[194963,194963],'mapped','\u82B1'],[[194964,194964],'mapped','\u82B3'],[[194965,194965],'mapped','\u82BD'],[[194966,194966],'mapped','\u82E6'],[[194967,194967],'mapped','\uD85A\uDF3C'],[[194968,194968],'mapped','\u82E5'],[[194969,194969],'mapped','\u831D'],[[194970,194970],'mapped','\u8363'],[[194971,194971],'mapped','\u83AD'],[[194972,194972],'mapped','\u8323'],[[194973,194973],'mapped','\u83BD'],[[194974,194974],'mapped','\u83E7'],[[194975,194975],'mapped','\u8457'],[[194976,194976],'mapped','\u8353'],[[194977,194977],'mapped','\u83CA'],[[194978,194978],'mapped','\u83CC'],[[194979,194979],'mapped','\u83DC'],[[194980,194980],'mapped','\uD85B\uDC36'],[[194981,194981],'mapped','\uD85B\uDD6B'],[[194982,194982],'mapped','\uD85B\uDCD5'],[[194983,194983],'mapped','\u452B'],[[194984,194984],'mapped','\u84F1'],[[194985,194985],'mapped','\u84F3'],[[194986,194986],'mapped','\u8516'],[[194987,194987],'mapped','\uD85C\uDFCA'],[[194988,194988],'mapped','\u8564'],[[194989,194989],'mapped','\uD85B\uDF2C'],[[194990,194990],'mapped','\u455D'],[[194991,194991],'mapped','\u4561'],[[194992,194992],'mapped','\uD85B\uDFB1'],[[194993,194993],'mapped','\uD85C\uDCD2'],[[194994,194994],'mapped','\u456B'],[[194995,194995],'mapped','\u8650'],[[194996,194996],'mapped','\u865C'],[[194997,194997],'mapped','\u8667'],[[194998,194998],'mapped','\u8669'],[[194999,194999],'mapped','\u86A9'],[[195000,195000],'mapped','\u8688'],[[195001,195001],'mapped','\u870E'],[[195002,195002],'mapped','\u86E2'],[[195003,195003],'mapped','\u8779'],[[195004,195004],'mapped','\u8728'],[[195005,195005],'mapped','\u876B'],[[195006,195006],'mapped','\u8786'],[[195007,195007],'disallowed'],[[195008,195008],'mapped','\u87E1'],[[195009,195009],'mapped','\u8801'],[[195010,195010],'mapped','\u45F9'],[[195011,195011],'mapped','\u8860'],[[195012,195012],'mapped','\u8863'],[[195013,195013],'mapped','\uD85D\uDE67'],[[195014,195014],'mapped','\u88D7'],[[195015,195015],'mapped','\u88DE'],[[195016,195016],'mapped','\u4635'],[[195017,195017],'mapped','\u88FA'],[[195018,195018],'mapped','\u34BB'],[[195019,195019],'mapped','\uD85E\uDCAE'],[[195020,195020],'mapped','\uD85E\uDD66'],[[195021,195021],'mapped','\u46BE'],[[195022,195022],'mapped','\u46C7'],[[195023,195023],'mapped','\u8AA0'],[[195024,195024],'mapped','\u8AED'],[[195025,195025],'mapped','\u8B8A'],[[195026,195026],'mapped','\u8C55'],[[195027,195027],'mapped','\uD85F\uDCA8'],[[195028,195028],'mapped','\u8CAB'],[[195029,195029],'mapped','\u8CC1'],[[195030,195030],'mapped','\u8D1B'],[[195031,195031],'mapped','\u8D77'],[[195032,195032],'mapped','\uD85F\uDF2F'],[[195033,195033],'mapped','\uD842\uDC04'],[[195034,195034],'mapped','\u8DCB'],[[195035,195035],'mapped','\u8DBC'],[[195036,195036],'mapped','\u8DF0'],[[195037,195037],'mapped','\uD842\uDCDE'],[[195038,195038],'mapped','\u8ED4'],[[195039,195039],'mapped','\u8F38'],[[195040,195040],'mapped','\uD861\uDDD2'],[[195041,195041],'mapped','\uD861\uDDED'],[[195042,195042],'mapped','\u9094'],[[195043,195043],'mapped','\u90F1'],[[195044,195044],'mapped','\u9111'],[[195045,195045],'mapped','\uD861\uDF2E'],[[195046,195046],'mapped','\u911B'],[[195047,195047],'mapped','\u9238'],[[195048,195048],'mapped','\u92D7'],[[195049,195049],'mapped','\u92D8'],[[195050,195050],'mapped','\u927C'],[[195051,195051],'mapped','\u93F9'],[[195052,195052],'mapped','\u9415'],[[195053,195053],'mapped','\uD862\uDFFA'],[[195054,195054],'mapped','\u958B'],[[195055,195055],'mapped','\u4995'],[[195056,195056],'mapped','\u95B7'],[[195057,195057],'mapped','\uD863\uDD77'],[[195058,195058],'mapped','\u49E6'],[[195059,195059],'mapped','\u96C3'],[[195060,195060],'mapped','\u5DB2'],[[195061,195061],'mapped','\u9723'],[[195062,195062],'mapped','\uD864\uDD45'],[[195063,195063],'mapped','\uD864\uDE1A'],[[195064,195064],'mapped','\u4A6E'],[[195065,195065],'mapped','\u4A76'],[[195066,195066],'mapped','\u97E0'],[[195067,195067],'mapped','\uD865\uDC0A'],[[195068,195068],'mapped','\u4AB2'],[[195069,195069],'mapped','\uD865\uDC96'],[[195070,195071],'mapped','\u980B'],[[195072,195072],'mapped','\u9829'],[[195073,195073],'mapped','\uD865\uDDB6'],[[195074,195074],'mapped','\u98E2'],[[195075,195075],'mapped','\u4B33'],[[195076,195076],'mapped','\u9929'],[[195077,195077],'mapped','\u99A7'],[[195078,195078],'mapped','\u99C2'],[[195079,195079],'mapped','\u99FE'],[[195080,195080],'mapped','\u4BCE'],[[195081,195081],'mapped','\uD866\uDF30'],[[195082,195082],'mapped','\u9B12'],[[195083,195083],'mapped','\u9C40'],[[195084,195084],'mapped','\u9CFD'],[[195085,195085],'mapped','\u4CCE'],[[195086,195086],'mapped','\u4CED'],[[195087,195087],'mapped','\u9D67'],[[195088,195088],'mapped','\uD868\uDCCE'],[[195089,195089],'mapped','\u4CF8'],[[195090,195090],'mapped','\uD868\uDD05'],[[195091,195091],'mapped','\uD868\uDE0E'],[[195092,195092],'mapped','\uD868\uDE91'],[[195093,195093],'mapped','\u9EBB'],[[195094,195094],'mapped','\u4D56'],[[195095,195095],'mapped','\u9EF9'],[[195096,195096],'mapped','\u9EFE'],[[195097,195097],'mapped','\u9F05'],[[195098,195098],'mapped','\u9F0F'],[[195099,195099],'mapped','\u9F16'],[[195100,195100],'mapped','\u9F3B'],[[195101,195101],'mapped','\uD869\uDE00'],[[195102,196605],'disallowed'],[[196606,196607],'disallowed'],[[196608,262141],'disallowed'],[[262142,262143],'disallowed'],[[262144,327677],'disallowed'],[[327678,327679],'disallowed'],[[327680,393213],'disallowed'],[[393214,393215],'disallowed'],[[393216,458749],'disallowed'],[[458750,458751],'disallowed'],[[458752,524285],'disallowed'],[[524286,524287],'disallowed'],[[524288,589821],'disallowed'],[[589822,589823],'disallowed'],[[589824,655357],'disallowed'],[[655358,655359],'disallowed'],[[655360,720893],'disallowed'],[[720894,720895],'disallowed'],[[720896,786429],'disallowed'],[[786430,786431],'disallowed'],[[786432,851965],'disallowed'],[[851966,851967],'disallowed'],[[851968,917501],'disallowed'],[[917502,917503],'disallowed'],[[917504,917504],'disallowed'],[[917505,917505],'disallowed'],[[917506,917535],'disallowed'],[[917536,917631],'disallowed'],[[917632,917759],'disallowed'],[[917760,917999],'ignored'],[[918000,983037],'disallowed'],[[983038,983039],'disallowed'],[[983040,1048573],'disallowed'],[[1048574,1048575],'disallowed'],[[1048576,1114109],'disallowed'],[[1114110,1114111],'disallowed']]},function(e,d,n){'use strict';const i=/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\u{101FD}\u{102E0}\u{10376}-\u{1037A}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{11000}-\u{11002}\u{11038}-\u{11046}\u{1107F}-\u{11082}\u{110B0}-\u{110BA}\u{11100}-\u{11102}\u{11127}-\u{11134}\u{11173}\u{11180}-\u{11182}\u{111B3}-\u{111C0}\u{111CA}-\u{111CC}\u{1122C}-\u{11237}\u{1123E}\u{112DF}-\u{112EA}\u{11300}-\u{11303}\u{1133C}\u{1133E}-\u{11344}\u{11347}\u{11348}\u{1134B}-\u{1134D}\u{11357}\u{11362}\u{11363}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11435}-\u{11446}\u{114B0}-\u{114C3}\u{115AF}-\u{115B5}\u{115B8}-\u{115C0}\u{115DC}\u{115DD}\u{11630}-\u{11640}\u{116AB}-\u{116B7}\u{1171D}-\u{1172B}\u{11A01}-\u{11A0A}\u{11A33}-\u{11A39}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A5B}\u{11A8A}-\u{11A99}\u{11C2F}-\u{11C36}\u{11C38}-\u{11C3F}\u{11C92}-\u{11CA7}\u{11CA9}-\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F51}-\u{16F7E}\u{16F8F}-\u{16F92}\u{1BC9D}\u{1BC9E}\u{1D165}-\u{1D169}\u{1D16D}-\u{1D172}\u{1D17B}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D242}-\u{1D244}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94A}\u{E0100}-\u{E01EF}]/u,a=/[\u094D\u09CD\u0A4D\u0ACD\u0B4D\u0BCD\u0C4D\u0CCD\u0D3B\u0D3C\u0D4D\u0DCA\u0E3A\u0F84\u1039\u103A\u1714\u1734\u17D2\u1A60\u1B44\u1BAA\u1BAB\u1BF2\u1BF3\u2D7F\uA806\uA8C4\uA953\uA9C0\uAAF6\uABED\u{10A3F}\u{11046}\u{1107F}\u{110B9}\u{11133}\u{11134}\u{111C0}\u{11235}\u{112EA}\u{1134D}\u{11442}\u{114C2}\u{115BF}\u{1163F}\u{116B6}\u{1172B}\u{11A34}\u{11A47}\u{11A99}\u{11C3F}\u{11D44}\u{11D45}]/u,u=/[\u0620\u0626\u0628\u062A-\u062E\u0633-\u063F\u0641-\u0647\u0649\u064A\u066E\u066F\u0678-\u0687\u069A-\u06BF\u06C1\u06C2\u06CC\u06CE\u06D0\u06D1\u06FA-\u06FC\u06FF\u0712-\u0714\u071A-\u071D\u071F-\u0727\u0729\u072B\u072D\u072E\u074E-\u0758\u075C-\u076A\u076D-\u0770\u0772\u0775-\u0777\u077A-\u077F\u07CA-\u07EA\u0841-\u0845\u0848\u084A-\u0853\u0855\u0860\u0862-\u0865\u0868\u08A0-\u08A9\u08AF\u08B0\u08B3\u08B4\u08B6-\u08B8\u08BA-\u08BD\u1807\u1820-\u1877\u1887-\u18A8\u18AA\uA840-\uA872\u{10AC0}-\u{10AC4}\u{10ACD}\u{10AD3}-\u{10ADC}\u{10ADE}-\u{10AE0}\u{10AEB}-\u{10AEE}\u{10B80}\u{10B82}\u{10B86}-\u{10B88}\u{10B8A}\u{10B8B}\u{10B8D}\u{10B90}\u{10BAD}\u{10BAE}\u{1E900}-\u{1E943}][\xAD\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u061C\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u070F\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u200B\u200E\u200F\u202A-\u202E\u2060-\u2064\u206A-\u206F\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA8C4\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFEFF\uFFF9-\uFFFB\u{101FD}\u{102E0}\u{10376}-\u{1037A}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{11001}\u{11038}-\u{11046}\u{1107F}-\u{11081}\u{110B3}-\u{110B6}\u{110B9}\u{110BA}\u{110BD}\u{11100}-\u{11102}\u{11127}-\u{1112B}\u{1112D}-\u{11134}\u{11173}\u{11180}\u{11181}\u{111B6}-\u{111BE}\u{111CA}-\u{111CC}\u{1122F}-\u{11231}\u{11234}\u{11236}\u{11237}\u{1123E}\u{112DF}\u{112E3}-\u{112EA}\u{11300}\u{11301}\u{1133C}\u{11340}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11438}-\u{1143F}\u{11442}-\u{11444}\u{11446}\u{114B3}-\u{114B8}\u{114BA}\u{114BF}\u{114C0}\u{114C2}\u{114C3}\u{115B2}-\u{115B5}\u{115BC}\u{115BD}\u{115BF}\u{115C0}\u{115DC}\u{115DD}\u{11633}-\u{1163A}\u{1163D}\u{1163F}\u{11640}\u{116AB}\u{116AD}\u{116B0}-\u{116B5}\u{116B7}\u{1171D}-\u{1171F}\u{11722}-\u{11725}\u{11727}-\u{1172B}\u{11A01}-\u{11A06}\u{11A09}\u{11A0A}\u{11A33}-\u{11A38}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A56}\u{11A59}-\u{11A5B}\u{11A8A}-\u{11A96}\u{11A98}\u{11A99}\u{11C30}-\u{11C36}\u{11C38}-\u{11C3D}\u{11C3F}\u{11C92}-\u{11CA7}\u{11CAA}-\u{11CB0}\u{11CB2}\u{11CB3}\u{11CB5}\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F8F}-\u{16F92}\u{1BC9D}\u{1BC9E}\u{1BCA0}-\u{1BCA3}\u{1D167}-\u{1D169}\u{1D173}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D242}-\u{1D244}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94A}\u{E0001}\u{E0020}-\u{E007F}\u{E0100}-\u{E01EF}]*\u200C[\xAD\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u061C\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u070F\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u200B\u200E\u200F\u202A-\u202E\u2060-\u2064\u206A-\u206F\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA8C4\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFEFF\uFFF9-\uFFFB\u{101FD}\u{102E0}\u{10376}-\u{1037A}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{11001}\u{11038}-\u{11046}\u{1107F}-\u{11081}\u{110B3}-\u{110B6}\u{110B9}\u{110BA}\u{110BD}\u{11100}-\u{11102}\u{11127}-\u{1112B}\u{1112D}-\u{11134}\u{11173}\u{11180}\u{11181}\u{111B6}-\u{111BE}\u{111CA}-\u{111CC}\u{1122F}-\u{11231}\u{11234}\u{11236}\u{11237}\u{1123E}\u{112DF}\u{112E3}-\u{112EA}\u{11300}\u{11301}\u{1133C}\u{11340}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11438}-\u{1143F}\u{11442}-\u{11444}\u{11446}\u{114B3}-\u{114B8}\u{114BA}\u{114BF}\u{114C0}\u{114C2}\u{114C3}\u{115B2}-\u{115B5}\u{115BC}\u{115BD}\u{115BF}\u{115C0}\u{115DC}\u{115DD}\u{11633}-\u{1163A}\u{1163D}\u{1163F}\u{11640}\u{116AB}\u{116AD}\u{116B0}-\u{116B5}\u{116B7}\u{1171D}-\u{1171F}\u{11722}-\u{11725}\u{11727}-\u{1172B}\u{11A01}-\u{11A06}\u{11A09}\u{11A0A}\u{11A33}-\u{11A38}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A56}\u{11A59}-\u{11A5B}\u{11A8A}-\u{11A96}\u{11A98}\u{11A99}\u{11C30}-\u{11C36}\u{11C38}-\u{11C3D}\u{11C3F}\u{11C92}-\u{11CA7}\u{11CAA}-\u{11CB0}\u{11CB2}\u{11CB3}\u{11CB5}\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F8F}-\u{16F92}\u{1BC9D}\u{1BC9E}\u{1BCA0}-\u{1BCA3}\u{1D167}-\u{1D169}\u{1D173}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D242}-\u{1D244}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94A}\u{E0001}\u{E0020}-\u{E007F}\u{E0100}-\u{E01EF}]*[\u0620\u0622-\u063F\u0641-\u064A\u066E\u066F\u0671-\u0673\u0675-\u06D3\u06D5\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u077F\u07CA-\u07EA\u0840-\u0855\u0860\u0862-\u0865\u0867-\u086A\u08A0-\u08AC\u08AE-\u08B4\u08B6-\u08BD\u1807\u1820-\u1877\u1887-\u18A8\u18AA\uA840-\uA871\u{10AC0}-\u{10AC5}\u{10AC7}\u{10AC9}\u{10ACA}\u{10ACE}-\u{10AD6}\u{10AD8}-\u{10AE1}\u{10AE4}\u{10AEB}-\u{10AEF}\u{10B80}-\u{10B91}\u{10BA9}-\u{10BAE}\u{1E900}-\u{1E943}]/u,p=/[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05EA\u05F0-\u05F4\u0600-\u0605\u0608\u060B\u060D\u061B\u061C\u061E-\u064A\u0660-\u0669\u066B-\u066F\u0671-\u06D5\u06DD\u06E5\u06E6\u06EE\u06EF\u06FA-\u070D\u070F\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0830-\u083E\u0840-\u0858\u085E\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08E2\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBC1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFC\uFE70-\uFE74\uFE76-\uFEFC\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10857}-\u{1089E}\u{108A7}-\u{108AF}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{108FB}-\u{1091B}\u{10920}-\u{10939}\u{1093F}\u{10980}-\u{109B7}\u{109BC}-\u{109CF}\u{109D2}-\u{10A00}\u{10A10}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A33}\u{10A40}-\u{10A47}\u{10A50}-\u{10A58}\u{10A60}-\u{10A9F}\u{10AC0}-\u{10AE4}\u{10AEB}-\u{10AF6}\u{10B00}-\u{10B35}\u{10B40}-\u{10B55}\u{10B58}-\u{10B72}\u{10B78}-\u{10B91}\u{10B99}-\u{10B9C}\u{10BA9}-\u{10BAF}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10CFA}-\u{10CFF}\u{10E60}-\u{10E7E}\u{1E800}-\u{1E8C4}\u{1E8C7}-\u{1E8CF}\u{1E900}-\u{1E943}\u{1E950}-\u{1E959}\u{1E95E}\u{1E95F}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}]/u,t=/[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02BB-\u02C1\u02D0\u02D1\u02E0-\u02E4\u02EE\u0370-\u0373\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0482\u048A-\u052F\u0531-\u0556\u0559-\u055F\u0561-\u0587\u0589\u0903-\u0939\u093B\u093D-\u0940\u0949-\u094C\u094E-\u0950\u0958-\u0961\u0964-\u0980\u0982\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD-\u09C0\u09C7\u09C8\u09CB\u09CC\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09FA\u09FC\u09FD\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3E-\u0A40\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD-\u0AC0\u0AC9\u0ACB\u0ACC\u0AD0\u0AE0\u0AE1\u0AE6-\u0AF0\u0AF9\u0B02\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B3E\u0B40\u0B47\u0B48\u0B4B\u0B4C\u0B57\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE\u0BBF\u0BC1\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD0\u0BD7\u0BE6-\u0BF2\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C41-\u0C44\u0C58-\u0C5A\u0C60\u0C61\u0C66-\u0C6F\u0C7F\u0C80\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD-\u0CC4\u0CC6-\u0CC8\u0CCA\u0CCB\u0CD5\u0CD6\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D4E\u0D4F\u0D54-\u0D61\u0D66-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2-\u0DF4\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E4F-\u0E5B\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00-\u0F17\u0F1A-\u0F34\u0F36\u0F38\u0F3E-\u0F47\u0F49-\u0F6C\u0F7F\u0F85\u0F88-\u0F8C\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE-\u0FDA\u1000-\u102C\u1031\u1038\u103B\u103C\u103F-\u1057\u105A-\u105D\u1061-\u1070\u1075-\u1081\u1083\u1084\u1087-\u108C\u108E-\u109C\u109E-\u10C5\u10C7\u10CD\u10D0-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1360-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u167F\u1681-\u169A\u16A0-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1735\u1736\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17B6\u17BE-\u17C5\u17C7\u17C8\u17D4-\u17DA\u17DC\u17E0-\u17E9\u1810-\u1819\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1923-\u1926\u1929-\u192B\u1930\u1931\u1933-\u1938\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A19\u1A1A\u1A1E-\u1A55\u1A57\u1A61\u1A63\u1A64\u1A6D-\u1A72\u1A80-\u1A89\u1A90-\u1A99\u1AA0-\u1AAD\u1B04-\u1B33\u1B35\u1B3B\u1B3D-\u1B41\u1B43-\u1B4B\u1B50-\u1B6A\u1B74-\u1B7C\u1B82-\u1BA1\u1BA6\u1BA7\u1BAA\u1BAE-\u1BE5\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2\u1BF3\u1BFC-\u1C2B\u1C34\u1C35\u1C3B-\u1C49\u1C4D-\u1C88\u1CC0-\u1CC7\u1CD3\u1CE1\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5-\u1CF7\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200E\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u214F\u2160-\u2188\u2336-\u237A\u2395\u249C-\u24E9\u26AC\u2800-\u28FF\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D70\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u302E\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u3190-\u31BA\u31F0-\u321C\u3220-\u324F\u3260-\u327B\u327F-\u32B0\u32C0-\u32CB\u32D0-\u32FE\u3300-\u3376\u337B-\u33DD\u33E0-\u33FE\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA60C\uA610-\uA62B\uA640-\uA66E\uA680-\uA69D\uA6A0-\uA6EF\uA6F2-\uA6F7\uA722-\uA787\uA789-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA824\uA827\uA830-\uA837\uA840-\uA873\uA880-\uA8C3\uA8CE-\uA8D9\uA8F2-\uA8FD\uA900-\uA925\uA92E-\uA946\uA952\uA953\uA95F-\uA97C\uA983-\uA9B2\uA9B4\uA9B5\uA9BA\uA9BB\uA9BD-\uA9CD\uA9CF-\uA9D9\uA9DE-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA2F\uAA30\uAA33\uAA34\uAA40-\uAA42\uAA44-\uAA4B\uAA4D\uAA50-\uAA59\uAA5C-\uAA7B\uAA7D-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAAEB\uAAEE-\uAAF5\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB65\uAB70-\uABE4\uABE6\uABE7\uABE9-\uABEC\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uD800-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\u{10000}-\u{1000B}\u{1000D}-\u{10026}\u{10028}-\u{1003A}\u{1003C}\u{1003D}\u{1003F}-\u{1004D}\u{10050}-\u{1005D}\u{10080}-\u{100FA}\u{10100}\u{10102}\u{10107}-\u{10133}\u{10137}-\u{1013F}\u{1018D}\u{1018E}\u{101D0}-\u{101FC}\u{10280}-\u{1029C}\u{102A0}-\u{102D0}\u{10300}-\u{10323}\u{1032D}-\u{1034A}\u{10350}-\u{10375}\u{10380}-\u{1039D}\u{1039F}-\u{103C3}\u{103C8}-\u{103D5}\u{10400}-\u{1049D}\u{104A0}-\u{104A9}\u{104B0}-\u{104D3}\u{104D8}-\u{104FB}\u{10500}-\u{10527}\u{10530}-\u{10563}\u{1056F}\u{10600}-\u{10736}\u{10740}-\u{10755}\u{10760}-\u{10767}\u{11000}\u{11002}-\u{11037}\u{11047}-\u{1104D}\u{11066}-\u{1106F}\u{11082}-\u{110B2}\u{110B7}\u{110B8}\u{110BB}-\u{110C1}\u{110D0}-\u{110E8}\u{110F0}-\u{110F9}\u{11103}-\u{11126}\u{1112C}\u{11136}-\u{11143}\u{11150}-\u{11172}\u{11174}-\u{11176}\u{11182}-\u{111B5}\u{111BF}-\u{111C9}\u{111CD}\u{111D0}-\u{111DF}\u{111E1}-\u{111F4}\u{11200}-\u{11211}\u{11213}-\u{1122E}\u{11232}\u{11233}\u{11235}\u{11238}-\u{1123D}\u{11280}-\u{11286}\u{11288}\u{1128A}-\u{1128D}\u{1128F}-\u{1129D}\u{1129F}-\u{112A9}\u{112B0}-\u{112DE}\u{112E0}-\u{112E2}\u{112F0}-\u{112F9}\u{11302}\u{11303}\u{11305}-\u{1130C}\u{1130F}\u{11310}\u{11313}-\u{11328}\u{1132A}-\u{11330}\u{11332}\u{11333}\u{11335}-\u{11339}\u{1133D}-\u{1133F}\u{11341}-\u{11344}\u{11347}\u{11348}\u{1134B}-\u{1134D}\u{11350}\u{11357}\u{1135D}-\u{11363}\u{11400}-\u{11437}\u{11440}\u{11441}\u{11445}\u{11447}-\u{11459}\u{1145B}\u{1145D}\u{11480}-\u{114B2}\u{114B9}\u{114BB}-\u{114BE}\u{114C1}\u{114C4}-\u{114C7}\u{114D0}-\u{114D9}\u{11580}-\u{115B1}\u{115B8}-\u{115BB}\u{115BE}\u{115C1}-\u{115DB}\u{11600}-\u{11632}\u{1163B}\u{1163C}\u{1163E}\u{11641}-\u{11644}\u{11650}-\u{11659}\u{11680}-\u{116AA}\u{116AC}\u{116AE}\u{116AF}\u{116B6}\u{116C0}-\u{116C9}\u{11700}-\u{11719}\u{11720}\u{11721}\u{11726}\u{11730}-\u{1173F}\u{118A0}-\u{118F2}\u{118FF}\u{11A00}\u{11A07}\u{11A08}\u{11A0B}-\u{11A32}\u{11A39}\u{11A3A}\u{11A3F}-\u{11A46}\u{11A50}\u{11A57}\u{11A58}\u{11A5C}-\u{11A83}\u{11A86}-\u{11A89}\u{11A97}\u{11A9A}-\u{11A9C}\u{11A9E}-\u{11AA2}\u{11AC0}-\u{11AF8}\u{11C00}-\u{11C08}\u{11C0A}-\u{11C2F}\u{11C3E}-\u{11C45}\u{11C50}-\u{11C6C}\u{11C70}-\u{11C8F}\u{11CA9}\u{11CB1}\u{11CB4}\u{11D00}-\u{11D06}\u{11D08}\u{11D09}\u{11D0B}-\u{11D30}\u{11D46}\u{11D50}-\u{11D59}\u{12000}-\u{12399}\u{12400}-\u{1246E}\u{12470}-\u{12474}\u{12480}-\u{12543}\u{13000}-\u{1342E}\u{14400}-\u{14646}\u{16800}-\u{16A38}\u{16A40}-\u{16A5E}\u{16A60}-\u{16A69}\u{16A6E}\u{16A6F}\u{16AD0}-\u{16AED}\u{16AF5}\u{16B00}-\u{16B2F}\u{16B37}-\u{16B45}\u{16B50}-\u{16B59}\u{16B5B}-\u{16B61}\u{16B63}-\u{16B77}\u{16B7D}-\u{16B8F}\u{16F00}-\u{16F44}\u{16F50}-\u{16F7E}\u{16F93}-\u{16F9F}\u{16FE0}\u{16FE1}\u{17000}-\u{187EC}\u{18800}-\u{18AF2}\u{1B000}-\u{1B11E}\u{1B170}-\u{1B2FB}\u{1BC00}-\u{1BC6A}\u{1BC70}-\u{1BC7C}\u{1BC80}-\u{1BC88}\u{1BC90}-\u{1BC99}\u{1BC9C}\u{1BC9F}\u{1D000}-\u{1D0F5}\u{1D100}-\u{1D126}\u{1D129}-\u{1D166}\u{1D16A}-\u{1D172}\u{1D183}\u{1D184}\u{1D18C}-\u{1D1A9}\u{1D1AE}-\u{1D1E8}\u{1D360}-\u{1D371}\u{1D400}-\u{1D454}\u{1D456}-\u{1D49C}\u{1D49E}\u{1D49F}\u{1D4A2}\u{1D4A5}\u{1D4A6}\u{1D4A9}-\u{1D4AC}\u{1D4AE}-\u{1D4B9}\u{1D4BB}\u{1D4BD}-\u{1D4C3}\u{1D4C5}-\u{1D505}\u{1D507}-\u{1D50A}\u{1D50D}-\u{1D514}\u{1D516}-\u{1D51C}\u{1D51E}-\u{1D539}\u{1D53B}-\u{1D53E}\u{1D540}-\u{1D544}\u{1D546}\u{1D54A}-\u{1D550}\u{1D552}-\u{1D6A5}\u{1D6A8}-\u{1D6DA}\u{1D6DC}-\u{1D714}\u{1D716}-\u{1D74E}\u{1D750}-\u{1D788}\u{1D78A}-\u{1D7C2}\u{1D7C4}-\u{1D7CB}\u{1D800}-\u{1D9FF}\u{1DA37}-\u{1DA3A}\u{1DA6D}-\u{1DA74}\u{1DA76}-\u{1DA83}\u{1DA85}-\u{1DA8B}\u{1F110}-\u{1F12E}\u{1F130}-\u{1F169}\u{1F170}-\u{1F1AC}\u{1F1E6}-\u{1F202}\u{1F210}-\u{1F23B}\u{1F240}-\u{1F248}\u{1F250}\u{1F251}\u{20000}-\u{2A6D6}\u{2A700}-\u{2B734}\u{2B740}-\u{2B81D}\u{2B820}-\u{2CEA1}\u{2CEB0}-\u{2EBE0}\u{2F800}-\u{2FA1D}\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}]/u,f=/[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05EA\u05F0-\u05F4\u0608\u060B\u060D\u061B\u061C\u061E-\u064A\u066D-\u066F\u0671-\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u070D\u070F\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0830-\u083E\u0840-\u0858\u085E\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBC1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFC\uFE70-\uFE74\uFE76-\uFEFC\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10857}-\u{1089E}\u{108A7}-\u{108AF}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{108FB}-\u{1091B}\u{10920}-\u{10939}\u{1093F}\u{10980}-\u{109B7}\u{109BC}-\u{109CF}\u{109D2}-\u{10A00}\u{10A10}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A33}\u{10A40}-\u{10A47}\u{10A50}-\u{10A58}\u{10A60}-\u{10A9F}\u{10AC0}-\u{10AE4}\u{10AEB}-\u{10AF6}\u{10B00}-\u{10B35}\u{10B40}-\u{10B55}\u{10B58}-\u{10B72}\u{10B78}-\u{10B91}\u{10B99}-\u{10B9C}\u{10BA9}-\u{10BAF}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10CFA}-\u{10CFF}\u{1E800}-\u{1E8C4}\u{1E8C7}-\u{1E8CF}\u{1E900}-\u{1E943}\u{1E950}-\u{1E959}\u{1E95E}\u{1E95F}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}]/u,r=/^[\0-\x08\x0E-\x1B!-@\[-`\{-\x84\x86-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02B9\u02BA\u02C2-\u02CF\u02D2-\u02DF\u02E5-\u02ED\u02EF-\u036F\u0374\u0375\u037E\u0384\u0385\u0387\u03F6\u0483-\u0489\u058A\u058D-\u058F\u0591-\u05C7\u05D0-\u05EA\u05F0-\u05F4\u0600-\u061C\u061E-\u070D\u070F-\u074A\u074D-\u07B1\u07C0-\u07FA\u0800-\u082D\u0830-\u083E\u0840-\u085B\u085E\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u09F2\u09F3\u09FB\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AF1\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0BF3-\u0BFA\u0C00\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C78-\u0C7E\u0C81\u0CBC\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E3F\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39-\u0F3D\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1390-\u1399\u1400\u169B\u169C\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DB\u17DD\u17F0-\u17F9\u1800-\u180E\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1940\u1944\u1945\u19DE-\u19FF\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u200B-\u200D\u200F-\u2027\u202F-\u205E\u2060-\u2064\u206A-\u2070\u2074-\u207E\u2080-\u208E\u20A0-\u20BF\u20D0-\u20F0\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u2150-\u215F\u2189-\u218B\u2190-\u2335\u237B-\u2394\u2396-\u2426\u2440-\u244A\u2460-\u249B\u24EA-\u26AB\u26AD-\u27FF\u2900-\u2B73\u2B76-\u2B95\u2B98-\u2BB9\u2BBD-\u2BC8\u2BCA-\u2BD2\u2BEC-\u2BEF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF9-\u2CFF\u2D7F\u2DE0-\u2E49\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u3004\u3008-\u3020\u302A-\u302D\u3030\u3036\u3037\u303D-\u303F\u3099-\u309C\u30A0\u30FB\u31C0-\u31E3\u321D\u321E\u3250-\u325F\u327C-\u327E\u32B1-\u32BF\u32CC-\u32CF\u3377-\u337A\u33DE\u33DF\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA60D-\uA60F\uA66F-\uA67F\uA69E\uA69F\uA6F0\uA6F1\uA700-\uA721\uA788\uA802\uA806\uA80B\uA825\uA826\uA828-\uA82B\uA838\uA839\uA874-\uA877\uA8C4\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1D-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBC1\uFBD3-\uFD3F\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFD\uFE00-\uFE19\uFE20-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFE70-\uFE74\uFE76-\uFEFC\uFEFF\uFF01-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFF9-\uFFFD\u{10101}\u{10140}-\u{1018C}\u{10190}-\u{1019B}\u{101A0}\u{101FD}\u{102E0}-\u{102FB}\u{10376}-\u{1037A}\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10857}-\u{1089E}\u{108A7}-\u{108AF}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{108FB}-\u{1091B}\u{1091F}-\u{10939}\u{1093F}\u{10980}-\u{109B7}\u{109BC}-\u{109CF}\u{109D2}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A33}\u{10A38}-\u{10A3A}\u{10A3F}-\u{10A47}\u{10A50}-\u{10A58}\u{10A60}-\u{10A9F}\u{10AC0}-\u{10AE6}\u{10AEB}-\u{10AF6}\u{10B00}-\u{10B35}\u{10B39}-\u{10B55}\u{10B58}-\u{10B72}\u{10B78}-\u{10B91}\u{10B99}-\u{10B9C}\u{10BA9}-\u{10BAF}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10CFA}-\u{10CFF}\u{10E60}-\u{10E7E}\u{11001}\u{11038}-\u{11046}\u{11052}-\u{11065}\u{1107F}-\u{11081}\u{110B3}-\u{110B6}\u{110B9}\u{110BA}\u{11100}-\u{11102}\u{11127}-\u{1112B}\u{1112D}-\u{11134}\u{11173}\u{11180}\u{11181}\u{111B6}-\u{111BE}\u{111CA}-\u{111CC}\u{1122F}-\u{11231}\u{11234}\u{11236}\u{11237}\u{1123E}\u{112DF}\u{112E3}-\u{112EA}\u{11300}\u{11301}\u{1133C}\u{11340}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11438}-\u{1143F}\u{11442}-\u{11444}\u{11446}\u{114B3}-\u{114B8}\u{114BA}\u{114BF}\u{114C0}\u{114C2}\u{114C3}\u{115B2}-\u{115B5}\u{115BC}\u{115BD}\u{115BF}\u{115C0}\u{115DC}\u{115DD}\u{11633}-\u{1163A}\u{1163D}\u{1163F}\u{11640}\u{11660}-\u{1166C}\u{116AB}\u{116AD}\u{116B0}-\u{116B5}\u{116B7}\u{1171D}-\u{1171F}\u{11722}-\u{11725}\u{11727}-\u{1172B}\u{11A01}-\u{11A06}\u{11A09}\u{11A0A}\u{11A33}-\u{11A38}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A56}\u{11A59}-\u{11A5B}\u{11A8A}-\u{11A96}\u{11A98}\u{11A99}\u{11C30}-\u{11C36}\u{11C38}-\u{11C3D}\u{11C92}-\u{11CA7}\u{11CAA}-\u{11CB0}\u{11CB2}\u{11CB3}\u{11CB5}\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F8F}-\u{16F92}\u{1BC9D}\u{1BC9E}\u{1BCA0}-\u{1BCA3}\u{1D167}-\u{1D169}\u{1D173}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D200}-\u{1D245}\u{1D300}-\u{1D356}\u{1D6DB}\u{1D715}\u{1D74F}\u{1D789}\u{1D7C3}\u{1D7CE}-\u{1D7FF}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E800}-\u{1E8C4}\u{1E8C7}-\u{1E8D6}\u{1E900}-\u{1E94A}\u{1E950}-\u{1E959}\u{1E95E}\u{1E95F}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}\u{1EEF0}\u{1EEF1}\u{1F000}-\u{1F02B}\u{1F030}-\u{1F093}\u{1F0A0}-\u{1F0AE}\u{1F0B1}-\u{1F0BF}\u{1F0C1}-\u{1F0CF}\u{1F0D1}-\u{1F0F5}\u{1F100}-\u{1F10C}\u{1F16A}\u{1F16B}\u{1F260}-\u{1F265}\u{1F300}-\u{1F6D4}\u{1F6E0}-\u{1F6EC}\u{1F6F0}-\u{1F6F8}\u{1F700}-\u{1F773}\u{1F780}-\u{1F7D4}\u{1F800}-\u{1F80B}\u{1F810}-\u{1F847}\u{1F850}-\u{1F859}\u{1F860}-\u{1F887}\u{1F890}-\u{1F8AD}\u{1F900}-\u{1F90B}\u{1F910}-\u{1F93E}\u{1F940}-\u{1F94C}\u{1F950}-\u{1F96B}\u{1F980}-\u{1F997}\u{1F9C0}\u{1F9D0}-\u{1F9E6}\u{E0001}\u{E0020}-\u{E007F}\u{E0100}-\u{E01EF}]*$/u,o=/[0-9\xB2\xB3\xB9\u05BE\u05C0\u05C3\u05C6\u05D0-\u05EA\u05F0-\u05F4\u0600-\u0605\u0608\u060B\u060D\u061B\u061C\u061E-\u064A\u0660-\u0669\u066B-\u066F\u0671-\u06D5\u06DD\u06E5\u06E6\u06EE-\u070D\u070F\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0830-\u083E\u0840-\u0858\u085E\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08E2\u200F\u2070\u2074-\u2079\u2080-\u2089\u2488-\u249B\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBC1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFC\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\u{102E1}-\u{102FB}\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10857}-\u{1089E}\u{108A7}-\u{108AF}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{108FB}-\u{1091B}\u{10920}-\u{10939}\u{1093F}\u{10980}-\u{109B7}\u{109BC}-\u{109CF}\u{109D2}-\u{10A00}\u{10A10}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A33}\u{10A40}-\u{10A47}\u{10A50}-\u{10A58}\u{10A60}-\u{10A9F}\u{10AC0}-\u{10AE4}\u{10AEB}-\u{10AF6}\u{10B00}-\u{10B35}\u{10B40}-\u{10B55}\u{10B58}-\u{10B72}\u{10B78}-\u{10B91}\u{10B99}-\u{10B9C}\u{10BA9}-\u{10BAF}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10CFA}-\u{10CFF}\u{10E60}-\u{10E7E}\u{1D7CE}-\u{1D7FF}\u{1E800}-\u{1E8C4}\u{1E8C7}-\u{1E8CF}\u{1E900}-\u{1E943}\u{1E950}-\u{1E959}\u{1E95E}\u{1E95F}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}\u{1F100}-\u{1F10A}][\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA8C4\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\u{101FD}\u{102E0}\u{10376}-\u{1037A}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{11001}\u{11038}-\u{11046}\u{1107F}-\u{11081}\u{110B3}-\u{110B6}\u{110B9}\u{110BA}\u{11100}-\u{11102}\u{11127}-\u{1112B}\u{1112D}-\u{11134}\u{11173}\u{11180}\u{11181}\u{111B6}-\u{111BE}\u{111CA}-\u{111CC}\u{1122F}-\u{11231}\u{11234}\u{11236}\u{11237}\u{1123E}\u{112DF}\u{112E3}-\u{112EA}\u{11300}\u{11301}\u{1133C}\u{11340}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11438}-\u{1143F}\u{11442}-\u{11444}\u{11446}\u{114B3}-\u{114B8}\u{114BA}\u{114BF}\u{114C0}\u{114C2}\u{114C3}\u{115B2}-\u{115B5}\u{115BC}\u{115BD}\u{115BF}\u{115C0}\u{115DC}\u{115DD}\u{11633}-\u{1163A}\u{1163D}\u{1163F}\u{11640}\u{116AB}\u{116AD}\u{116B0}-\u{116B5}\u{116B7}\u{1171D}-\u{1171F}\u{11722}-\u{11725}\u{11727}-\u{1172B}\u{11A01}-\u{11A06}\u{11A09}\u{11A0A}\u{11A33}-\u{11A38}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A56}\u{11A59}-\u{11A5B}\u{11A8A}-\u{11A96}\u{11A98}\u{11A99}\u{11C30}-\u{11C36}\u{11C38}-\u{11C3D}\u{11C92}-\u{11CA7}\u{11CAA}-\u{11CB0}\u{11CB2}\u{11CB3}\u{11CB5}\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F8F}-\u{16F92}\u{1BC9D}\u{1BC9E}\u{1D167}-\u{1D169}\u{1D17B}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D242}-\u{1D244}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94A}\u{E0100}-\u{E01EF}]*$/u,l=/[0-9\xB2\xB3\xB9\u06F0-\u06F9\u2070\u2074-\u2079\u2080-\u2089\u2488-\u249B\uFF10-\uFF19\u{102E1}-\u{102FB}\u{1D7CE}-\u{1D7FF}\u{1F100}-\u{1F10A}]/u,s=/[\u0600-\u0605\u0660-\u0669\u066B\u066C\u06DD\u08E2\u{10E60}-\u{10E7E}]/u,m=/^[\0-\x08\x0E-\x1B!-\x84\x86-\u0377\u037A-\u037F\u0384-\u038A\u038C\u038E-\u03A1\u03A3-\u052F\u0531-\u0556\u0559-\u055F\u0561-\u0587\u0589\u058A\u058D-\u058F\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0606\u0607\u0609\u060A\u060C\u060E-\u061A\u064B-\u065F\u066A\u0670\u06D6-\u06DC\u06DE-\u06E4\u06E7-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07F6-\u07F9\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09FD\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AF1\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B77\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BFA\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C78-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4F\u0D54-\u0D63\u0D66-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2-\u0DF4\u0E01-\u0E3A\u0E3F-\u0E5B\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00-\u0F47\u0F49-\u0F6C\u0F71-\u0F97\u0F99-\u0FBC\u0FBE-\u0FCC\u0FCE-\u0FDA\u1000-\u10C5\u10C7\u10CD\u10D0-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u137C\u1380-\u1399\u13A0-\u13F5\u13F8-\u13FD\u1400-\u167F\u1681-\u169C\u16A0-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1736\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17DD\u17E0-\u17E9\u17F0-\u17F9\u1800-\u180E\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1940\u1944-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u19DE-\u1A1B\u1A1E-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA0-\u1AAD\u1AB0-\u1ABE\u1B00-\u1B4B\u1B50-\u1B7C\u1B80-\u1BF3\u1BFC-\u1C37\u1C3B-\u1C49\u1C4D-\u1C88\u1CC0-\u1CC7\u1CD0-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFE\u200B-\u200E\u2010-\u2027\u202F-\u205E\u2060-\u2064\u206A-\u2071\u2074-\u208E\u2090-\u209C\u20A0-\u20BF\u20D0-\u20F0\u2100-\u218B\u2190-\u2426\u2440-\u244A\u2460-\u2B73\u2B76-\u2B95\u2B98-\u2BB9\u2BBD-\u2BC8\u2BCA-\u2BD2\u2BEC-\u2BEF\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CF3\u2CF9-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D70\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2E49\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303F\u3041-\u3096\u3099-\u30FF\u3105-\u312E\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u32FE\u3300-\u4DB5\u4DC0-\u9FEA\uA000-\uA48C\uA490-\uA4C6\uA4D0-\uA62B\uA640-\uA6F7\uA700-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA82B\uA830-\uA839\uA840-\uA877\uA880-\uA8C5\uA8CE-\uA8D9\uA8E0-\uA8FD\uA900-\uA953\uA95F-\uA97C\uA980-\uA9CD\uA9CF-\uA9D9\uA9DE-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA5C-\uAAC2\uAADB-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB65\uAB70-\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uD800-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1E\uFB29\uFD3E\uFD3F\uFDFD\uFE00-\uFE19\uFE20-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFEFF\uFF01-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFF9-\uFFFD\u{10000}-\u{1000B}\u{1000D}-\u{10026}\u{10028}-\u{1003A}\u{1003C}\u{1003D}\u{1003F}-\u{1004D}\u{10050}-\u{1005D}\u{10080}-\u{100FA}\u{10100}-\u{10102}\u{10107}-\u{10133}\u{10137}-\u{1018E}\u{10190}-\u{1019B}\u{101A0}\u{101D0}-\u{101FD}\u{10280}-\u{1029C}\u{102A0}-\u{102D0}\u{102E0}-\u{102FB}\u{10300}-\u{10323}\u{1032D}-\u{1034A}\u{10350}-\u{1037A}\u{10380}-\u{1039D}\u{1039F}-\u{103C3}\u{103C8}-\u{103D5}\u{10400}-\u{1049D}\u{104A0}-\u{104A9}\u{104B0}-\u{104D3}\u{104D8}-\u{104FB}\u{10500}-\u{10527}\u{10530}-\u{10563}\u{1056F}\u{10600}-\u{10736}\u{10740}-\u{10755}\u{10760}-\u{10767}\u{1091F}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{10B39}-\u{10B3F}\u{11000}-\u{1104D}\u{11052}-\u{1106F}\u{1107F}-\u{110C1}\u{110D0}-\u{110E8}\u{110F0}-\u{110F9}\u{11100}-\u{11134}\u{11136}-\u{11143}\u{11150}-\u{11176}\u{11180}-\u{111CD}\u{111D0}-\u{111DF}\u{111E1}-\u{111F4}\u{11200}-\u{11211}\u{11213}-\u{1123E}\u{11280}-\u{11286}\u{11288}\u{1128A}-\u{1128D}\u{1128F}-\u{1129D}\u{1129F}-\u{112A9}\u{112B0}-\u{112EA}\u{112F0}-\u{112F9}\u{11300}-\u{11303}\u{11305}-\u{1130C}\u{1130F}\u{11310}\u{11313}-\u{11328}\u{1132A}-\u{11330}\u{11332}\u{11333}\u{11335}-\u{11339}\u{1133C}-\u{11344}\u{11347}\u{11348}\u{1134B}-\u{1134D}\u{11350}\u{11357}\u{1135D}-\u{11363}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11400}-\u{11459}\u{1145B}\u{1145D}\u{11480}-\u{114C7}\u{114D0}-\u{114D9}\u{11580}-\u{115B5}\u{115B8}-\u{115DD}\u{11600}-\u{11644}\u{11650}-\u{11659}\u{11660}-\u{1166C}\u{11680}-\u{116B7}\u{116C0}-\u{116C9}\u{11700}-\u{11719}\u{1171D}-\u{1172B}\u{11730}-\u{1173F}\u{118A0}-\u{118F2}\u{118FF}\u{11A00}-\u{11A47}\u{11A50}-\u{11A83}\u{11A86}-\u{11A9C}\u{11A9E}-\u{11AA2}\u{11AC0}-\u{11AF8}\u{11C00}-\u{11C08}\u{11C0A}-\u{11C36}\u{11C38}-\u{11C45}\u{11C50}-\u{11C6C}\u{11C70}-\u{11C8F}\u{11C92}-\u{11CA7}\u{11CA9}-\u{11CB6}\u{11D00}-\u{11D06}\u{11D08}\u{11D09}\u{11D0B}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D47}\u{11D50}-\u{11D59}\u{12000}-\u{12399}\u{12400}-\u{1246E}\u{12470}-\u{12474}\u{12480}-\u{12543}\u{13000}-\u{1342E}\u{14400}-\u{14646}\u{16800}-\u{16A38}\u{16A40}-\u{16A5E}\u{16A60}-\u{16A69}\u{16A6E}\u{16A6F}\u{16AD0}-\u{16AED}\u{16AF0}-\u{16AF5}\u{16B00}-\u{16B45}\u{16B50}-\u{16B59}\u{16B5B}-\u{16B61}\u{16B63}-\u{16B77}\u{16B7D}-\u{16B8F}\u{16F00}-\u{16F44}\u{16F50}-\u{16F7E}\u{16F8F}-\u{16F9F}\u{16FE0}\u{16FE1}\u{17000}-\u{187EC}\u{18800}-\u{18AF2}\u{1B000}-\u{1B11E}\u{1B170}-\u{1B2FB}\u{1BC00}-\u{1BC6A}\u{1BC70}-\u{1BC7C}\u{1BC80}-\u{1BC88}\u{1BC90}-\u{1BC99}\u{1BC9C}-\u{1BCA3}\u{1D000}-\u{1D0F5}\u{1D100}-\u{1D126}\u{1D129}-\u{1D1E8}\u{1D200}-\u{1D245}\u{1D300}-\u{1D356}\u{1D360}-\u{1D371}\u{1D400}-\u{1D454}\u{1D456}-\u{1D49C}\u{1D49E}\u{1D49F}\u{1D4A2}\u{1D4A5}\u{1D4A6}\u{1D4A9}-\u{1D4AC}\u{1D4AE}-\u{1D4B9}\u{1D4BB}\u{1D4BD}-\u{1D4C3}\u{1D4C5}-\u{1D505}\u{1D507}-\u{1D50A}\u{1D50D}-\u{1D514}\u{1D516}-\u{1D51C}\u{1D51E}-\u{1D539}\u{1D53B}-\u{1D53E}\u{1D540}-\u{1D544}\u{1D546}\u{1D54A}-\u{1D550}\u{1D552}-\u{1D6A5}\u{1D6A8}-\u{1D7CB}\u{1D7CE}-\u{1DA8B}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94A}\u{1EEF0}\u{1EEF1}\u{1F000}-\u{1F02B}\u{1F030}-\u{1F093}\u{1F0A0}-\u{1F0AE}\u{1F0B1}-\u{1F0BF}\u{1F0C1}-\u{1F0CF}\u{1F0D1}-\u{1F0F5}\u{1F100}-\u{1F10C}\u{1F110}-\u{1F12E}\u{1F130}-\u{1F16B}\u{1F170}-\u{1F1AC}\u{1F1E6}-\u{1F202}\u{1F210}-\u{1F23B}\u{1F240}-\u{1F248}\u{1F250}\u{1F251}\u{1F260}-\u{1F265}\u{1F300}-\u{1F6D4}\u{1F6E0}-\u{1F6EC}\u{1F6F0}-\u{1F6F8}\u{1F700}-\u{1F773}\u{1F780}-\u{1F7D4}\u{1F800}-\u{1F80B}\u{1F810}-\u{1F847}\u{1F850}-\u{1F859}\u{1F860}-\u{1F887}\u{1F890}-\u{1F8AD}\u{1F900}-\u{1F90B}\u{1F910}-\u{1F93E}\u{1F940}-\u{1F94C}\u{1F950}-\u{1F96B}\u{1F980}-\u{1F997}\u{1F9C0}\u{1F9D0}-\u{1F9E6}\u{20000}-\u{2A6D6}\u{2A700}-\u{2B734}\u{2B740}-\u{2B81D}\u{2B820}-\u{2CEA1}\u{2CEB0}-\u{2EBE0}\u{2F800}-\u{2FA1D}\u{E0001}\u{E0020}-\u{E007F}\u{E0100}-\u{E01EF}\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}]*$/u,c=/[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02BB-\u02C1\u02D0\u02D1\u02E0-\u02E4\u02EE\u0370-\u0373\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0482\u048A-\u052F\u0531-\u0556\u0559-\u055F\u0561-\u0587\u0589\u06F0-\u06F9\u0903-\u0939\u093B\u093D-\u0940\u0949-\u094C\u094E-\u0950\u0958-\u0961\u0964-\u0980\u0982\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD-\u09C0\u09C7\u09C8\u09CB\u09CC\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09FA\u09FC\u09FD\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3E-\u0A40\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD-\u0AC0\u0AC9\u0ACB\u0ACC\u0AD0\u0AE0\u0AE1\u0AE6-\u0AF0\u0AF9\u0B02\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B3E\u0B40\u0B47\u0B48\u0B4B\u0B4C\u0B57\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE\u0BBF\u0BC1\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD0\u0BD7\u0BE6-\u0BF2\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C41-\u0C44\u0C58-\u0C5A\u0C60\u0C61\u0C66-\u0C6F\u0C7F\u0C80\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD-\u0CC4\u0CC6-\u0CC8\u0CCA\u0CCB\u0CD5\u0CD6\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D4E\u0D4F\u0D54-\u0D61\u0D66-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2-\u0DF4\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E4F-\u0E5B\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00-\u0F17\u0F1A-\u0F34\u0F36\u0F38\u0F3E-\u0F47\u0F49-\u0F6C\u0F7F\u0F85\u0F88-\u0F8C\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE-\u0FDA\u1000-\u102C\u1031\u1038\u103B\u103C\u103F-\u1057\u105A-\u105D\u1061-\u1070\u1075-\u1081\u1083\u1084\u1087-\u108C\u108E-\u109C\u109E-\u10C5\u10C7\u10CD\u10D0-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1360-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u167F\u1681-\u169A\u16A0-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1735\u1736\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17B6\u17BE-\u17C5\u17C7\u17C8\u17D4-\u17DA\u17DC\u17E0-\u17E9\u1810-\u1819\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1923-\u1926\u1929-\u192B\u1930\u1931\u1933-\u1938\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A19\u1A1A\u1A1E-\u1A55\u1A57\u1A61\u1A63\u1A64\u1A6D-\u1A72\u1A80-\u1A89\u1A90-\u1A99\u1AA0-\u1AAD\u1B04-\u1B33\u1B35\u1B3B\u1B3D-\u1B41\u1B43-\u1B4B\u1B50-\u1B6A\u1B74-\u1B7C\u1B82-\u1BA1\u1BA6\u1BA7\u1BAA\u1BAE-\u1BE5\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2\u1BF3\u1BFC-\u1C2B\u1C34\u1C35\u1C3B-\u1C49\u1C4D-\u1C88\u1CC0-\u1CC7\u1CD3\u1CE1\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5-\u1CF7\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200E\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u214F\u2160-\u2188\u2336-\u237A\u2395\u2488-\u24E9\u26AC\u2800-\u28FF\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D70\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u302E\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u3190-\u31BA\u31F0-\u321C\u3220-\u324F\u3260-\u327B\u327F-\u32B0\u32C0-\u32CB\u32D0-\u32FE\u3300-\u3376\u337B-\u33DD\u33E0-\u33FE\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA60C\uA610-\uA62B\uA640-\uA66E\uA680-\uA69D\uA6A0-\uA6EF\uA6F2-\uA6F7\uA722-\uA787\uA789-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA824\uA827\uA830-\uA837\uA840-\uA873\uA880-\uA8C3\uA8CE-\uA8D9\uA8F2-\uA8FD\uA900-\uA925\uA92E-\uA946\uA952\uA953\uA95F-\uA97C\uA983-\uA9B2\uA9B4\uA9B5\uA9BA\uA9BB\uA9BD-\uA9CD\uA9CF-\uA9D9\uA9DE-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA2F\uAA30\uAA33\uAA34\uAA40-\uAA42\uAA44-\uAA4B\uAA4D\uAA50-\uAA59\uAA5C-\uAA7B\uAA7D-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAAEB\uAAEE-\uAAF5\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB65\uAB70-\uABE4\uABE6\uABE7\uABE9-\uABEC\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uD800-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\u{10000}-\u{1000B}\u{1000D}-\u{10026}\u{10028}-\u{1003A}\u{1003C}\u{1003D}\u{1003F}-\u{1004D}\u{10050}-\u{1005D}\u{10080}-\u{100FA}\u{10100}\u{10102}\u{10107}-\u{10133}\u{10137}-\u{1013F}\u{1018D}\u{1018E}\u{101D0}-\u{101FC}\u{10280}-\u{1029C}\u{102A0}-\u{102D0}\u{102E1}-\u{102FB}\u{10300}-\u{10323}\u{1032D}-\u{1034A}\u{10350}-\u{10375}\u{10380}-\u{1039D}\u{1039F}-\u{103C3}\u{103C8}-\u{103D5}\u{10400}-\u{1049D}\u{104A0}-\u{104A9}\u{104B0}-\u{104D3}\u{104D8}-\u{104FB}\u{10500}-\u{10527}\u{10530}-\u{10563}\u{1056F}\u{10600}-\u{10736}\u{10740}-\u{10755}\u{10760}-\u{10767}\u{11000}\u{11002}-\u{11037}\u{11047}-\u{1104D}\u{11066}-\u{1106F}\u{11082}-\u{110B2}\u{110B7}\u{110B8}\u{110BB}-\u{110C1}\u{110D0}-\u{110E8}\u{110F0}-\u{110F9}\u{11103}-\u{11126}\u{1112C}\u{11136}-\u{11143}\u{11150}-\u{11172}\u{11174}-\u{11176}\u{11182}-\u{111B5}\u{111BF}-\u{111C9}\u{111CD}\u{111D0}-\u{111DF}\u{111E1}-\u{111F4}\u{11200}-\u{11211}\u{11213}-\u{1122E}\u{11232}\u{11233}\u{11235}\u{11238}-\u{1123D}\u{11280}-\u{11286}\u{11288}\u{1128A}-\u{1128D}\u{1128F}-\u{1129D}\u{1129F}-\u{112A9}\u{112B0}-\u{112DE}\u{112E0}-\u{112E2}\u{112F0}-\u{112F9}\u{11302}\u{11303}\u{11305}-\u{1130C}\u{1130F}\u{11310}\u{11313}-\u{11328}\u{1132A}-\u{11330}\u{11332}\u{11333}\u{11335}-\u{11339}\u{1133D}-\u{1133F}\u{11341}-\u{11344}\u{11347}\u{11348}\u{1134B}-\u{1134D}\u{11350}\u{11357}\u{1135D}-\u{11363}\u{11400}-\u{11437}\u{11440}\u{11441}\u{11445}\u{11447}-\u{11459}\u{1145B}\u{1145D}\u{11480}-\u{114B2}\u{114B9}\u{114BB}-\u{114BE}\u{114C1}\u{114C4}-\u{114C7}\u{114D0}-\u{114D9}\u{11580}-\u{115B1}\u{115B8}-\u{115BB}\u{115BE}\u{115C1}-\u{115DB}\u{11600}-\u{11632}\u{1163B}\u{1163C}\u{1163E}\u{11641}-\u{11644}\u{11650}-\u{11659}\u{11680}-\u{116AA}\u{116AC}\u{116AE}\u{116AF}\u{116B6}\u{116C0}-\u{116C9}\u{11700}-\u{11719}\u{11720}\u{11721}\u{11726}\u{11730}-\u{1173F}\u{118A0}-\u{118F2}\u{118FF}\u{11A00}\u{11A07}\u{11A08}\u{11A0B}-\u{11A32}\u{11A39}\u{11A3A}\u{11A3F}-\u{11A46}\u{11A50}\u{11A57}\u{11A58}\u{11A5C}-\u{11A83}\u{11A86}-\u{11A89}\u{11A97}\u{11A9A}-\u{11A9C}\u{11A9E}-\u{11AA2}\u{11AC0}-\u{11AF8}\u{11C00}-\u{11C08}\u{11C0A}-\u{11C2F}\u{11C3E}-\u{11C45}\u{11C50}-\u{11C6C}\u{11C70}-\u{11C8F}\u{11CA9}\u{11CB1}\u{11CB4}\u{11D00}-\u{11D06}\u{11D08}\u{11D09}\u{11D0B}-\u{11D30}\u{11D46}\u{11D50}-\u{11D59}\u{12000}-\u{12399}\u{12400}-\u{1246E}\u{12470}-\u{12474}\u{12480}-\u{12543}\u{13000}-\u{1342E}\u{14400}-\u{14646}\u{16800}-\u{16A38}\u{16A40}-\u{16A5E}\u{16A60}-\u{16A69}\u{16A6E}\u{16A6F}\u{16AD0}-\u{16AED}\u{16AF5}\u{16B00}-\u{16B2F}\u{16B37}-\u{16B45}\u{16B50}-\u{16B59}\u{16B5B}-\u{16B61}\u{16B63}-\u{16B77}\u{16B7D}-\u{16B8F}\u{16F00}-\u{16F44}\u{16F50}-\u{16F7E}\u{16F93}-\u{16F9F}\u{16FE0}\u{16FE1}\u{17000}-\u{187EC}\u{18800}-\u{18AF2}\u{1B000}-\u{1B11E}\u{1B170}-\u{1B2FB}\u{1BC00}-\u{1BC6A}\u{1BC70}-\u{1BC7C}\u{1BC80}-\u{1BC88}\u{1BC90}-\u{1BC99}\u{1BC9C}\u{1BC9F}\u{1D000}-\u{1D0F5}\u{1D100}-\u{1D126}\u{1D129}-\u{1D166}\u{1D16A}-\u{1D172}\u{1D183}\u{1D184}\u{1D18C}-\u{1D1A9}\u{1D1AE}-\u{1D1E8}\u{1D360}-\u{1D371}\u{1D400}-\u{1D454}\u{1D456}-\u{1D49C}\u{1D49E}\u{1D49F}\u{1D4A2}\u{1D4A5}\u{1D4A6}\u{1D4A9}-\u{1D4AC}\u{1D4AE}-\u{1D4B9}\u{1D4BB}\u{1D4BD}-\u{1D4C3}\u{1D4C5}-\u{1D505}\u{1D507}-\u{1D50A}\u{1D50D}-\u{1D514}\u{1D516}-\u{1D51C}\u{1D51E}-\u{1D539}\u{1D53B}-\u{1D53E}\u{1D540}-\u{1D544}\u{1D546}\u{1D54A}-\u{1D550}\u{1D552}-\u{1D6A5}\u{1D6A8}-\u{1D6DA}\u{1D6DC}-\u{1D714}\u{1D716}-\u{1D74E}\u{1D750}-\u{1D788}\u{1D78A}-\u{1D7C2}\u{1D7C4}-\u{1D7CB}\u{1D7CE}-\u{1D9FF}\u{1DA37}-\u{1DA3A}\u{1DA6D}-\u{1DA74}\u{1DA76}-\u{1DA83}\u{1DA85}-\u{1DA8B}\u{1F100}-\u{1F10A}\u{1F110}-\u{1F12E}\u{1F130}-\u{1F169}\u{1F170}-\u{1F1AC}\u{1F1E6}-\u{1F202}\u{1F210}-\u{1F23B}\u{1F240}-\u{1F248}\u{1F250}\u{1F251}\u{20000}-\u{2A6D6}\u{2A700}-\u{2B734}\u{2B740}-\u{2B81D}\u{2B820}-\u{2CEA1}\u{2CEB0}-\u{2EBE0}\u{2F800}-\u{2FA1D}\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}][\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA8C4\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\u{101FD}\u{102E0}\u{10376}-\u{1037A}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{11001}\u{11038}-\u{11046}\u{1107F}-\u{11081}\u{110B3}-\u{110B6}\u{110B9}\u{110BA}\u{11100}-\u{11102}\u{11127}-\u{1112B}\u{1112D}-\u{11134}\u{11173}\u{11180}\u{11181}\u{111B6}-\u{111BE}\u{111CA}-\u{111CC}\u{1122F}-\u{11231}\u{11234}\u{11236}\u{11237}\u{1123E}\u{112DF}\u{112E3}-\u{112EA}\u{11300}\u{11301}\u{1133C}\u{11340}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11438}-\u{1143F}\u{11442}-\u{11444}\u{11446}\u{114B3}-\u{114B8}\u{114BA}\u{114BF}\u{114C0}\u{114C2}\u{114C3}\u{115B2}-\u{115B5}\u{115BC}\u{115BD}\u{115BF}\u{115C0}\u{115DC}\u{115DD}\u{11633}-\u{1163A}\u{1163D}\u{1163F}\u{11640}\u{116AB}\u{116AD}\u{116B0}-\u{116B5}\u{116B7}\u{1171D}-\u{1171F}\u{11722}-\u{11725}\u{11727}-\u{1172B}\u{11A01}-\u{11A06}\u{11A09}\u{11A0A}\u{11A33}-\u{11A38}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A56}\u{11A59}-\u{11A5B}\u{11A8A}-\u{11A96}\u{11A98}\u{11A99}\u{11C30}-\u{11C36}\u{11C38}-\u{11C3D}\u{11C92}-\u{11CA7}\u{11CAA}-\u{11CB0}\u{11CB2}\u{11CB3}\u{11CB5}\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F8F}-\u{16F92}\u{1BC9D}\u{1BC9E}\u{1D167}-\u{1D169}\u{1D17B}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D242}-\u{1D244}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94A}\u{E0100}-\u{E01EF}]*$/u;e.exports={combiningMarks:i,combiningClassVirama:a,validZWNJ:u,bidiDomain:p,bidiS1LTR:t,bidiS1RTL:f,bidiS2:r,bidiS3:o,bidiS4EN:l,bidiS4AN:s,bidiS5:m,bidiS6:c}},function(e,d,n){(function(d){function n(e,d){function n(){if(!a){if(i('throwDeprecation'))throw new Error(d);else i('traceDeprecation')?console.trace(d):console.warn(d);a=!0}return e.apply(this,arguments)}if(i('noDeprecation'))return e;var a=!1;return n}function i(e){try{if(!d.localStorage)return!1}catch(e){return!1}var n=d.localStorage[e];return null!=n&&'true'===(n+'').toLowerCase()}e.exports=n}).call(d,n(1))},function(e,d){e.exports='function'==typeof Object.create?function e(d,n){d.super_=n,d.prototype=Object.create(n.prototype,{constructor:{value:d,enumerable:!1,writable:!0,configurable:!0}})}:function e(d,n){d.super_=n;var i=function(){};i.prototype=n.prototype,d.prototype=new i,d.prototype.constructor=d}},function(e,d){e.exports=function e(d){return d&&'object'==typeof d&&'function'==typeof d.copy&&'function'==typeof d.fill&&'function'==typeof d.readUInt8}},function(e,d){function n(e,d){var n=d||0,i=a;return i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+'-'+i[e[n++]]+i[e[n++]]+'-'+i[e[n++]]+i[e[n++]]+'-'+i[e[n++]]+i[e[n++]]+'-'+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]+i[e[n++]]}for(var a=[],u=0;256>u;++u)a[u]=(u+256).toString(16).substr(1);e.exports=n},function(e,d){var n='undefined'!=typeof crypto&&crypto.getRandomValues.bind(crypto)||'undefined'!=typeof msCrypto&&msCrypto.getRandomValues.bind(msCrypto);if(n){var i=new Uint8Array(16);e.exports=function e(){return n(i),i}}else{var a=Array(16);e.exports=function e(){for(var d=0,n;16>d;d++)0==(3&d)&&(n=4294967296*Math.random()),a[d]=255&n>>>((3&d)<<3);return a}}},function(e,d,n){function i(e,d,n){var p=d&&n||0;'string'==typeof e&&(d='binary'===e?Array(16):null,e=null),e=e||{};var i=e.random||(e.rng||a)();if(i[6]=64|15&i[6],i[8]=128|63&i[8],d)for(var t=0;16>t;++t)d[p+t]=i[t];return d||u(i)}var a=n(290),u=n(289);e.exports=i},function(e,d){(function(d){e.exports=d}).call(d,{})},function(e,d){(function(e){'use strict';function d(e){if('string'!=typeof e&&(e+=''),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(e))throw new TypeError('Invalid character in header field name');return e.toLowerCase()}function n(e){return'string'!=typeof e&&(e+=''),e}function i(e){var d={next:function(){var d=e.shift();return{done:void 0===d,value:d}}};return v.iterable&&(d[Symbol.iterator]=function(){return d}),d}function a(e){this.map={},e instanceof a?e.forEach(function(e,d){this.append(d,e)},this):Array.isArray(e)?e.forEach(function(e){this.append(e[0],e[1])},this):e&&Object.getOwnPropertyNames(e).forEach(function(d){this.append(d,e[d])},this)}function u(e){return e.bodyUsed?Promise.reject(new TypeError('Already read')):void(e.bodyUsed=!0)}function p(e){return new Promise(function(d,n){e.onload=function(){d(e.result)},e.onerror=function(){n(e.error)}})}function t(e){var d=new FileReader,n=p(d);return d.readAsArrayBuffer(e),n}function r(e){var d=new FileReader,n=p(d);return d.readAsText(e),n}function o(e){for(var d=new Uint8Array(e),n=Array(d.length),a=0;a<d.length;a++)n[a]=f(d[a]);return n.join('')}function l(e){if(e.slice)return e.slice(0);var d=new Uint8Array(e.byteLength);return d.set(new Uint8Array(e)),d.buffer}function s(){return this.bodyUsed=!1,this._initBody=function(e){if(this._bodyInit=e,!e)this._bodyText='';else if('string'==typeof e)this._bodyText=e;else if(v.blob&&Blob.prototype.isPrototypeOf(e))this._bodyBlob=e;else if(v.formData&&FormData.prototype.isPrototypeOf(e))this._bodyFormData=e;else if(v.searchParams&&URLSearchParams.prototype.isPrototypeOf(e))this._bodyText=e.toString();else if(v.arrayBuffer&&v.blob&&_(e))this._bodyArrayBuffer=l(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer]);else if(v.arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(e)||w(e)))this._bodyArrayBuffer=l(e);else throw new Error('unsupported BodyInit type');this.headers.get('content-type')||('string'==typeof e?this.headers.set('content-type','text/plain;charset=UTF-8'):this._bodyBlob&&this._bodyBlob.type?this.headers.set('content-type',this._bodyBlob.type):v.searchParams&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set('content-type','application/x-www-form-urlencoded;charset=UTF-8'))},v.blob&&(this.blob=function(){var e=u(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error('could not read FormData body as blob');else return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?u(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(t)}),this.text=function(){var e=u(this);if(e)return e;if(this._bodyBlob)return r(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(o(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error('could not read FormData body as text');else return Promise.resolve(this._bodyText)},v.formData&&(this.formData=function(){return this.text().then(h)}),this.json=function(){return this.text().then(JSON.parse)},this}function m(e){var d=e.toUpperCase();return-1<x.indexOf(d)?d:e}function c(e,d){d=d||{};var n=d.body;if(e instanceof c){if(e.bodyUsed)throw new TypeError('Already read');this.url=e.url,this.credentials=e.credentials,d.headers||(this.headers=new a(e.headers)),this.method=e.method,this.mode=e.mode,n||null==e._bodyInit||(n=e._bodyInit,e.bodyUsed=!0)}else this.url=e+'';if(this.credentials=d.credentials||this.credentials||'omit',(d.headers||!this.headers)&&(this.headers=new a(d.headers)),this.method=m(d.method||this.method||'GET'),this.mode=d.mode||this.mode||null,this.referrer=null,('GET'===this.method||'HEAD'===this.method)&&n)throw new TypeError('Body not allowed for GET or HEAD requests');this._initBody(n)}function h(e){var d=new FormData;return e.trim().split('&').forEach(function(e){if(e){var n=e.split('='),i=n.shift().replace(/\+/g,' '),a=n.join('=').replace(/\+/g,' ');d.append(decodeURIComponent(i),decodeURIComponent(a))}}),d}function g(e){var d=new a,n=e.replace(/\r?\n[\t ]+/g,' ');return n.split(/\r?\n/).forEach(function(e){var n=e.split(':'),i=n.shift().trim();if(i){var a=n.join(':').trim();d.append(i,a)}}),d}function y(e,d){d||(d={}),this.type='default',this.status=d.status===void 0?200:d.status,this.ok=200<=this.status&&300>this.status,this.statusText='statusText'in d?d.statusText:'OK',this.headers=new a(d.headers),this.url=d.url||'',this._initBody(e)}if(!e.fetch){var v={searchParams:'URLSearchParams'in e,iterable:'Symbol'in e&&'iterator'in Symbol,blob:'FileReader'in e&&'Blob'in e&&function(){try{return new Blob,!0}catch(d){return!1}}(),formData:'FormData'in e,arrayBuffer:'ArrayBuffer'in e};if(v.arrayBuffer)var b=['[object Int8Array]','[object Uint8Array]','[object Uint8ClampedArray]','[object Int16Array]','[object Uint16Array]','[object Int32Array]','[object Uint32Array]','[object Float32Array]','[object Float64Array]'],_=function(e){return e&&DataView.prototype.isPrototypeOf(e)},w=ArrayBuffer.isView||function(e){return e&&-1<b.indexOf(Object.prototype.toString.call(e))};a.prototype.append=function(e,i){e=d(e),i=n(i);var a=this.map[e];this.map[e]=a?a+','+i:i},a.prototype['delete']=function(e){delete this.map[d(e)]},a.prototype.get=function(e){return e=d(e),this.has(e)?this.map[e]:null},a.prototype.has=function(e){return this.map.hasOwnProperty(d(e))},a.prototype.set=function(e,i){this.map[d(e)]=n(i)},a.prototype.forEach=function(e,d){for(var n in this.map)this.map.hasOwnProperty(n)&&e.call(d,this.map[n],n,this)},a.prototype.keys=function(){var e=[];return this.forEach(function(d,n){e.push(n)}),i(e)},a.prototype.values=function(){var e=[];return this.forEach(function(d){e.push(d)}),i(e)},a.prototype.entries=function(){var e=[];return this.forEach(function(d,n){e.push([n,d])}),i(e)},v.iterable&&(a.prototype[Symbol.iterator]=a.prototype.entries);var x=['DELETE','GET','HEAD','OPTIONS','POST','PUT'];c.prototype.clone=function(){return new c(this,{body:this._bodyInit})},s.call(c.prototype),s.call(y.prototype),y.prototype.clone=function(){return new y(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new a(this.headers),url:this.url})},y.error=function(){var e=new y(null,{status:0,statusText:''});return e.type='error',e};var k=[301,302,303,307,308];y.redirect=function(e,d){if(-1===k.indexOf(d))throw new RangeError('Invalid status code');return new y(null,{status:d,headers:{location:e}})},e.Headers=a,e.Request=c,e.Response=y,e.fetch=function(e,d){return new Promise(function(n,i){var a=new c(e,d),u=new XMLHttpRequest;u.onload=function(){var e={status:u.status,statusText:u.statusText,headers:g(u.getAllResponseHeaders()||'')};e.url='responseURL'in u?u.responseURL:e.headers.get('X-Request-URL');var d='response'in u?u.response:u.responseText;n(new y(d,e))},u.onerror=function(){i(new TypeError('Network request failed'))},u.ontimeout=function(){i(new TypeError('Network request failed'))},u.open(a.method,a.url,!0),'include'===a.credentials?u.withCredentials=!0:'omit'===a.credentials&&(u.withCredentials=!1),'responseType'in u&&v.blob&&(u.responseType='blob'),a.headers.forEach(function(e,d){u.setRequestHeader(d,e)}),u.send('undefined'==typeof a._bodyInit?null:a._bodyInit)})},e.fetch.polyfill=!0}})('undefined'==typeof self?this:self)},function(e,d,n){'use strict';const i=n(10),a=n(62),u=n(163);d.implementation=class e{constructor(e){const d=e[0],n=e[1];let a=null;if(void 0!==n&&(a=i.basicURLParse(n),null===a))throw new TypeError('Invalid base URL');const p=i.basicURLParse(d,{baseURL:a});if(null===p)throw new TypeError('Invalid URL');const t=null===p.query?'':p.query;this._url=p,this._query=u.createImpl([t],{doNotStripQMark:!0}),this._query._url=this}get href(){return i.serializeURL(this._url)}set href(e){const d=i.basicURLParse(e);if(null===d)throw new TypeError('Invalid URL');this._url=d,this._query._list.splice(0);const{query:n}=d;null!==n&&(this._query._list=a.parseUrlencoded(n))}get origin(){return i.serializeURLOrigin(this._url)}get protocol(){return this._url.scheme+':'}set protocol(e){i.basicURLParse(e+':',{url:this._url,stateOverride:'scheme start'})}get username(){return this._url.username}set username(e){i.cannotHaveAUsernamePasswordPort(this._url)||i.setTheUsername(this._url,e)}get password(){return this._url.password}set password(e){i.cannotHaveAUsernamePasswordPort(this._url)||i.setThePassword(this._url,e)}get host(){const e=this._url;return null===e.host?'':null===e.port?i.serializeHost(e.host):i.serializeHost(e.host)+':'+i.serializeInteger(e.port)}set host(e){this._url.cannotBeABaseURL||i.basicURLParse(e,{url:this._url,stateOverride:'host'})}get hostname(){return null===this._url.host?'':i.serializeHost(this._url.host)}set hostname(e){this._url.cannotBeABaseURL||i.basicURLParse(e,{url:this._url,stateOverride:'hostname'})}get port(){return null===this._url.port?'':i.serializeInteger(this._url.port)}set port(e){i.cannotHaveAUsernamePasswordPort(this._url)||(''===e?this._url.port=null:i.basicURLParse(e,{url:this._url,stateOverride:'port'}))}get pathname(){return this._url.cannotBeABaseURL?this._url.path[0]:0===this._url.path.length?'':'/'+this._url.path.join('/')}set pathname(e){this._url.cannotBeABaseURL||(this._url.path=[],i.basicURLParse(e,{url:this._url,stateOverride:'path start'}))}get search(){return null===this._url.query||''===this._url.query?'':'?'+this._url.query}set search(e){const d=this._url;if(''===e)return d.query=null,void(this._query._list=[]);const n='?'===e[0]?e.substring(1):e;d.query='',i.basicURLParse(n,{url:d,stateOverride:'query'}),this._query._list=a.parseUrlencoded(n)}get searchParams(){return this._query}get hash(){return null===this._url.fragment||''===this._url.fragment?'':'#'+this._url.fragment}set hash(e){if(''===e)return void(this._url.fragment=null);const d='#'===e[0]?e.substring(1):e;this._url.fragment='',i.basicURLParse(d,{url:this._url,stateOverride:'fragment'})}toJSON(){return this.href}}},function(e,d,n){'use strict';function i(e){if(!new.target)throw new TypeError('Failed to construct \'URL\'. Please use the \'new\' operator; this constructor cannot be called as a function.');if(1>arguments.length)throw new TypeError('Failed to construct \'URL\': 1 argument required, but only '+arguments.length+' present.');const d=[];for(let n=0;n<arguments.length&&2>n;++n)d[n]=arguments[n];d[0]=a.USVString(d[0],{context:'Failed to construct \'URL\': parameter 1'}),d[1]!==void 0&&(d[1]=a.USVString(d[1],{context:'Failed to construct \'URL\': parameter 2'})),t.setup(this,d)}const a=n(162),u=n(165),p=u.implSymbol;Object.defineProperty(i,'prototype',{value:i.prototype,writable:!1,enumerable:!1,configurable:!1}),i.prototype.toJSON=function d(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return this[p].toJSON()},Object.defineProperty(i.prototype,'href',{get(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return this[p].href},set(d){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');d=a.USVString(d,{context:'Failed to set the \'href\' property on \'URL\': The provided value'}),this[p].href=d},enumerable:!0,configurable:!0}),i.prototype.toString=function d(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return this[p].href},Object.defineProperty(i.prototype,'origin',{get(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return this[p].origin},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,'protocol',{get(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return this[p].protocol},set(d){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');d=a.USVString(d,{context:'Failed to set the \'protocol\' property on \'URL\': The provided value'}),this[p].protocol=d},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,'username',{get(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return this[p].username},set(d){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');d=a.USVString(d,{context:'Failed to set the \'username\' property on \'URL\': The provided value'}),this[p].username=d},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,'password',{get(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return this[p].password},set(d){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');d=a.USVString(d,{context:'Failed to set the \'password\' property on \'URL\': The provided value'}),this[p].password=d},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,'host',{get(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return this[p].host},set(d){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');d=a.USVString(d,{context:'Failed to set the \'host\' property on \'URL\': The provided value'}),this[p].host=d},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,'hostname',{get(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return this[p].hostname},set(d){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');d=a.USVString(d,{context:'Failed to set the \'hostname\' property on \'URL\': The provided value'}),this[p].hostname=d},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,'port',{get(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return this[p].port},set(d){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');d=a.USVString(d,{context:'Failed to set the \'port\' property on \'URL\': The provided value'}),this[p].port=d},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,'pathname',{get(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return this[p].pathname},set(d){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');d=a.USVString(d,{context:'Failed to set the \'pathname\' property on \'URL\': The provided value'}),this[p].pathname=d},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,'search',{get(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return this[p].search},set(d){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');d=a.USVString(d,{context:'Failed to set the \'search\' property on \'URL\': The provided value'}),this[p].search=d},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,'searchParams',{get(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return u.getSameObject(this,'searchParams',()=>u.tryWrapperForImpl(this[p].searchParams))},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,'hash',{get(){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');return this[p].hash},set(d){if(!this||!e.exports.is(this))throw new TypeError('Illegal invocation');d=a.USVString(d,{context:'Failed to set the \'hash\' property on \'URL\': The provided value'}),this[p].hash=d},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,Symbol.toStringTag,{value:'URL',writable:!1,enumerable:!1,configurable:!0});const t={mixedInto:[],is(d){if(d){if(d[p]instanceof f.implementation)return!0;for(let n=0;n<e.exports.mixedInto.length;++n)if(d instanceof e.exports.mixedInto[n])return!0}return!1},isImpl(d){if(d){if(d instanceof f.implementation)return!0;const n=u.wrapperForImpl(d);for(let d=0;d<e.exports.mixedInto.length;++d)if(n instanceof e.exports.mixedInto[d])return!0}return!1},convert(d,{context:n='The provided value'}={}){if(e.exports.is(d))return u.implForWrapper(d);throw new TypeError(`${n} is not of type 'URL'.`)},create(e,d){let n=Object.create(i.prototype);return n=this.setup(n,e,d),n},createImpl(e,d){let n=Object.create(i.prototype);return n=this.setup(n,e,d),u.implForWrapper(n)},_internalSetup(e){},setup(e,d,n){return n||(n={}),n.wrapper=e,this._internalSetup(e),Object.defineProperty(e,p,{value:new f.implementation(d,n),writable:!1,enumerable:!1,configurable:!0}),e[p][u.wrapperSymbol]=e,f.init&&f.init(e[p],n),e},interface:i,expose:{Window:{URL:i},Worker:{URL:i}}};e.exports=t;const f=n(294)},function(e,d,n){'use strict';const i=n(261),a=n(62);d.implementation=class e{constructor(e,{doNotStripQMark:d=!1}){let n=e[0];if(this._list=[],this._url=null,d||'string'!=typeof n||'?'!==n[0]||(n=n.slice(1)),Array.isArray(n))for(const e of n){if(2!==e.length)throw new TypeError('Failed to construct \'URLSearchParams\': parameter 1 sequence\'s element does not contain exactly two elements.');this._list.push([e[0],e[1]])}else if('object'==typeof n&&null===Object.getPrototypeOf(n))for(const e of Object.keys(n)){const d=n[e];this._list.push([e,d])}else this._list=a.parseUrlencoded(n)}_updateSteps(){if(null!==this._url){let e=a.serializeUrlencoded(this._list);''===e&&(e=null),this._url._url.query=e}}append(e,d){this._list.push([e,d]),this._updateSteps()}delete(e){for(let d=0;d<this._list.length;)this._list[d][0]===e?this._list.splice(d,1):d++;this._updateSteps()}get(e){for(const d of this._list)if(d[0]===e)return d[1];return null}getAll(e){const d=[];for(const n of this._list)n[0]===e&&d.push(n[1]);return d}has(e){for(const d of this._list)if(d[0]===e)return!0;return!1}set(e,d){let n=!1,a=0;for(;a<this._list.length;)this._list[a][0]===e?n?this._list.splice(a,1):(n=!0,this._list[a][1]=d,a++):a++;n||this._list.push([e,d]),this._updateSteps()}sort(){this._list=i(this._list,[0]),this._updateSteps()}[Symbol.iterator](){return this._list[Symbol.iterator]()}toString(){return a.serializeUrlencoded(this._list)}}},function(e,d){},function(e,d){},function(e,d){},function(e,d,n){e.exports=n(167)}])}); +//# sourceMappingURL=rdflib.min.js.map \ No newline at end of file diff --git a/common/plume/js/rdflib.min.js.map b/common/plume/js/rdflib.min.js.map new file mode 100644 index 000000000..51ece1360 --- /dev/null +++ b/common/plume/js/rdflib.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///./~/webidl-conversions/lib/index.js","webpack:///./src/literal.js","webpack:///./~/whatwg-url/lib/url-state-machine.js","webpack:///./~/buffer/index.js","webpack:///webpack/bootstrap f351aaa0c11344a13b51","webpack:///./~/core-js/library/modules/_core.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/named-node.js","webpack:///./~/core-js/library/modules/_global.js","webpack:///./~/core-js/library/modules/_wks.js","webpack:///./~/@trust/json-document/lib/index.js","webpack:///./src/node.js","webpack:///./src/uri.js","webpack:///./~/core-js/library/modules/_export.js","webpack:///./src/util.js","webpack:///./~/core-js/library/modules/_an-object.js","webpack:///./~/core-js/library/modules/_object-dp.js","webpack:///./~/core-js/library/modules/_descriptors.js","webpack:///./~/core-js/library/modules/_is-object.js","webpack:///./~/process/browser.js","webpack:///./src/blank-node.js","webpack:///./src/log.js","webpack:///./~/babel-runtime/helpers/asyncToGenerator.js","webpack:///./~/babel-runtime/regenerator/index.js","webpack:///./~/base64url/index.js","webpack:///./~/core-js/library/modules/_has.js","webpack:///./~/core-js/library/modules/_hide.js","webpack:///./~/readable-stream/lib/_stream_duplex.js","webpack:///./~/@solid/jose/lib/index.js","webpack:///./src/class-order.js","webpack:///./~/core-js/library/modules/_ctx.js","webpack:///./~/core-js/library/modules/_fails.js","webpack:///./~/core-js/library/modules/_to-iobject.js","webpack:///./~/inherits/inherits_browser.js","webpack:///./~/jsonld/browser/ignore.js","webpack:///./src/namespace.js","webpack:///./~/core-js/library/modules/_cof.js","webpack:///./~/core-js/library/modules/_iterators.js","webpack:///./~/core-js/library/modules/_property-desc.js","webpack:///./~/core-util-is/lib/util.js","webpack:///./~/timers-browserify/main.js","webpack:///./~/whatwg-url/lib/public-api.js","webpack:///./~/@solid/jose/lib/schemas/JWKSchema.js","webpack:///./src/collection.js","webpack:///./src/data-factory.js","webpack:///./src/indexed-formula.js","webpack:///./src/n3parser.js","webpack:///./src/query.js","webpack:///./src/statement.js","webpack:///./src/variable.js","webpack:///./~/babel-runtime/core-js/promise.js","webpack:///./~/babel-runtime/helpers/extends.js","webpack:///./~/core-js/library/modules/_a-function.js","webpack:///./~/core-js/library/modules/_library.js","webpack:///./~/core-js/library/modules/_object-keys.js","webpack:///./~/core-js/library/modules/_object-pie.js","webpack:///./~/core-js/library/modules/_set-to-string-tag.js","webpack:///./~/core-js/library/modules/_to-object.js","webpack:///./~/core-js/library/modules/_uid.js","webpack:///./~/events/events.js","webpack:///./~/process-nextick-args/index.js","webpack:///./~/safe-buffer/index.js","webpack:///./~/solid-auth-client/lib/storage.js","webpack:///./~/solid-auth-client/lib/url-util.js","webpack:///./~/whatwg-url/lib/urlencoded.js","webpack:///external \"crypto\"","webpack:///./~/@solid/jose/lib/jose/JWA.js","webpack:///./~/@solid/oidc-rp/src/FormUrlEncoded.js","webpack:///./~/@solid/oidc-rp/src/onHttpError.js","webpack:///./~/@trust/json-document/lib/JSONPointer.js","webpack:///./~/assert/assert.js","webpack:///./src/fetcher.js","webpack:///./src/rdfaparser.js","webpack:///./src/rdfxmlparser.js","webpack:///./src/serialize.js","webpack:///./src/serializer.js","webpack:///./~/babel-runtime/helpers/typeof.js","webpack:///./~/core-js/library/modules/_defined.js","webpack:///./~/core-js/library/modules/_dom-create.js","webpack:///./~/core-js/library/modules/_enum-bug-keys.js","webpack:///./~/core-js/library/modules/_new-promise-capability.js","webpack:///./~/core-js/library/modules/_object-create.js","webpack:///./~/core-js/library/modules/_object-gops.js","webpack:///./~/core-js/library/modules/_shared-key.js","webpack:///./~/core-js/library/modules/_shared.js","webpack:///./~/core-js/library/modules/_to-integer.js","webpack:///./~/core-js/library/modules/_to-length.js","webpack:///./~/core-js/library/modules/_to-primitive.js","webpack:///./~/core-js/library/modules/_wks-define.js","webpack:///./~/core-js/library/modules/_wks-ext.js","webpack:///./~/core-js/library/modules/es6.string.iterator.js","webpack:///./~/n3/lib/N3Lexer.js","webpack:///./~/n3/lib/N3Parser.js","webpack:///./~/n3/lib/N3Util.js","webpack:///./~/n3/lib/N3Writer.js","webpack:///./~/readable-stream/lib/_stream_writable.js","webpack:///./~/readable-stream/readable-browser.js","webpack:///./~/solid-auth-client/lib/session.js","webpack:///./~/solid-auth-client/lib/webid-oidc.js","webpack:///./~/util/util.js","webpack:///(webpack)/buildin/module.js","webpack:///external \"fetch\"","webpack:///./~/@solid/jose/lib/errors/DataError.js","webpack:///./~/@solid/jose/lib/errors/NotSupportedError.js","webpack:///./~/@solid/jose/lib/errors/index.js","webpack:///./~/@solid/jose/lib/jose/JWK.js","webpack:///./~/@solid/jose/lib/jose/JWS.js","webpack:///./~/@solid/jose/lib/schemas/Base64URLSchema.js","webpack:///./~/@solid/jose/lib/schemas/JOSEHeaderSchema.js","webpack:///./~/@solid/jose/lib/schemas/JWKSetSchema.js","webpack:///./~/@solid/jose/lib/schemas/JWTClaimsSetSchema.js","webpack:///./~/@solid/jose/lib/schemas/JWTSchema.js","webpack:///./~/@solid/jose/lib/text-encoder/index.js","webpack:///./~/@solid/oidc-rp/src/RelyingParty.js","webpack:///./~/@trust/json-document/lib/Formats.js","webpack:///./~/@trust/json-document/lib/Initializer.js","webpack:///./~/@trust/json-document/lib/JSONPatch.js","webpack:///./~/@trust/json-document/lib/Validator.js","webpack:///./~/auth-header/dist/util.js","webpack:///./src/convert.js","webpack:///./src/formula.js","webpack:///./src/parse.js","webpack:///./src/patch-parser.js","webpack:///./src/updates-via.js","webpack:///./src/xsd.js","webpack:///./~/babel-runtime/core-js/object/define-property.js","webpack:///./~/babel-runtime/helpers/defineProperty.js","webpack:///./~/core-js/library/modules/_classof.js","webpack:///./~/core-js/library/modules/_html.js","webpack:///./~/core-js/library/modules/_ie8-dom-define.js","webpack:///./~/core-js/library/modules/_iobject.js","webpack:///./~/core-js/library/modules/_is-array-iter.js","webpack:///./~/core-js/library/modules/_iter-call.js","webpack:///./~/core-js/library/modules/_iter-define.js","webpack:///./~/core-js/library/modules/_iter-detect.js","webpack:///./~/core-js/library/modules/_object-gopd.js","webpack:///./~/core-js/library/modules/_object-gopn-ext.js","webpack:///./~/core-js/library/modules/_object-gopn.js","webpack:///./~/core-js/library/modules/_object-gpo.js","webpack:///./~/core-js/library/modules/_object-keys-internal.js","webpack:///./~/core-js/library/modules/_object-sap.js","webpack:///./~/core-js/library/modules/_perform.js","webpack:///./~/core-js/library/modules/_promise-resolve.js","webpack:///./~/core-js/library/modules/_redefine.js","webpack:///./~/core-js/library/modules/_species-constructor.js","webpack:///./~/core-js/library/modules/_task.js","webpack:///./~/core-js/library/modules/core.get-iterator-method.js","webpack:///./~/core-js/library/modules/web.dom.iterable.js","webpack:///./~/es6-promise/dist/es6-promise.js","webpack:///./~/isarray/index.js","webpack:///./~/jsonld/js/jsonld.js","webpack:///./~/n3/N3.js","webpack:///./~/n3/lib/N3Store.js","webpack:///./~/n3/lib/N3StreamParser.js","webpack:///./~/n3/lib/N3StreamWriter.js","webpack:///./~/punycode/punycode.js","webpack:///./~/readable-stream/lib/_stream_readable.js","webpack:///./~/readable-stream/lib/_stream_transform.js","webpack:///./~/readable-stream/lib/internal/streams/destroy.js","webpack:///./~/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./~/solid-auth-client/lib/ipc.js","webpack:///./~/stream-browserify/index.js","webpack:///./~/string_decoder/lib/string_decoder.js","webpack:///./~/whatwg-url/lib/URLSearchParams.js","webpack:///./~/whatwg-url/lib/infra.js","webpack:///./~/whatwg-url/lib/utils.js","webpack:///external \"window\"","webpack:///./src/index.js","webpack:///./~/@solid/jose/lib/algorithms/HMAC.js","webpack:///./~/@solid/jose/lib/algorithms/NONE.js","webpack:///./~/@solid/jose/lib/algorithms/RSASSA-PKCS1-v1_5.js","webpack:///./~/@solid/jose/lib/algorithms/SupportedAlgorithms.js","webpack:///./~/@solid/jose/lib/algorithms/index.js","webpack:///./~/@solid/jose/lib/formats/index.js","webpack:///./~/@solid/jose/lib/jose/JWKSet.js","webpack:///./~/@solid/jose/lib/jose/JWT.js","webpack:///./~/@solid/oidc-rp/lib/PoPToken.js","webpack:///./~/@solid/oidc-rp/src/AuthenticationRequest.js","webpack:///./~/@solid/oidc-rp/src/AuthenticationResponse.js","webpack:///./~/@solid/oidc-rp/src/IDToken.js","webpack:///./~/@solid/oidc-rp/src/IDTokenSchema.js","webpack:///./~/@solid/oidc-rp/src/PoPToken.js","webpack:///./~/@solid/oidc-rp/src/RelyingPartySchema.js","webpack:///./~/@solid/oidc-rp/src/Session.js","webpack:///./~/@solid/oidc-rp/src/index.js","webpack:///./~/@trust/json-document/lib/JSONDocument.js","webpack:///./~/@trust/json-document/lib/JSONMapping.js","webpack:///./~/@trust/json-document/lib/JSONSchema.js","webpack:///./~/async/lib/async.js","webpack:///./~/auth-header/dist/format.js","webpack:///./~/auth-header/dist/index.js","webpack:///./~/auth-header/dist/parse.js","webpack:///./src/default-graph.js","webpack:///./src/empty.js","webpack:///./src/jsonparser.js","webpack:///./src/query-to-sparql.js","webpack:///./src/sparql-to-query.js","webpack:///./src/update-manager.js","webpack:///./~/babel-runtime/core-js/array/from.js","webpack:///./~/babel-runtime/core-js/json/stringify.js","webpack:///./~/babel-runtime/core-js/object/assign.js","webpack:///./~/babel-runtime/core-js/object/create.js","webpack:///./~/babel-runtime/core-js/object/get-own-property-names.js","webpack:///./~/babel-runtime/core-js/object/get-prototype-of.js","webpack:///./~/babel-runtime/core-js/object/set-prototype-of.js","webpack:///./~/babel-runtime/core-js/symbol.js","webpack:///./~/babel-runtime/core-js/symbol/iterator.js","webpack:///./~/babel-runtime/helpers/classCallCheck.js","webpack:///./~/babel-runtime/helpers/createClass.js","webpack:///./~/babel-runtime/helpers/inherits.js","webpack:///./~/babel-runtime/helpers/possibleConstructorReturn.js","webpack:///./~/babel-runtime/helpers/toConsumableArray.js","webpack:///./~/base64-js/index.js","webpack:///./~/base64url/dist/base64url.js","webpack:///./~/base64url/dist/pad-string.js","webpack:///./~/core-js/library/fn/array/from.js","webpack:///./~/core-js/library/fn/json/stringify.js","webpack:///./~/core-js/library/fn/object/assign.js","webpack:///./~/core-js/library/fn/object/create.js","webpack:///./~/core-js/library/fn/object/define-property.js","webpack:///./~/core-js/library/fn/object/get-own-property-names.js","webpack:///./~/core-js/library/fn/object/get-prototype-of.js","webpack:///./~/core-js/library/fn/object/set-prototype-of.js","webpack:///./~/core-js/library/fn/promise.js","webpack:///./~/core-js/library/fn/symbol/index.js","webpack:///./~/core-js/library/fn/symbol/iterator.js","webpack:///./~/core-js/library/modules/_add-to-unscopables.js","webpack:///./~/core-js/library/modules/_an-instance.js","webpack:///./~/core-js/library/modules/_array-includes.js","webpack:///./~/core-js/library/modules/_create-property.js","webpack:///./~/core-js/library/modules/_enum-keys.js","webpack:///./~/core-js/library/modules/_for-of.js","webpack:///./~/core-js/library/modules/_invoke.js","webpack:///./~/core-js/library/modules/_is-array.js","webpack:///./~/core-js/library/modules/_iter-create.js","webpack:///./~/core-js/library/modules/_iter-step.js","webpack:///./~/core-js/library/modules/_meta.js","webpack:///./~/core-js/library/modules/_microtask.js","webpack:///./~/core-js/library/modules/_object-assign.js","webpack:///./~/core-js/library/modules/_object-dps.js","webpack:///./~/core-js/library/modules/_redefine-all.js","webpack:///./~/core-js/library/modules/_set-proto.js","webpack:///./~/core-js/library/modules/_set-species.js","webpack:///./~/core-js/library/modules/_string-at.js","webpack:///./~/core-js/library/modules/_to-absolute-index.js","webpack:///./~/core-js/library/modules/es6.array.from.js","webpack:///./~/core-js/library/modules/es6.array.iterator.js","webpack:///./~/core-js/library/modules/es6.object.assign.js","webpack:///./~/core-js/library/modules/es6.object.create.js","webpack:///./~/core-js/library/modules/es6.object.define-property.js","webpack:///./~/core-js/library/modules/es6.object.get-own-property-names.js","webpack:///./~/core-js/library/modules/es6.object.get-prototype-of.js","webpack:///./~/core-js/library/modules/es6.object.set-prototype-of.js","webpack:///./~/core-js/library/modules/es6.promise.js","webpack:///./~/core-js/library/modules/es6.symbol.js","webpack:///./~/core-js/library/modules/es7.promise.finally.js","webpack:///./~/core-js/library/modules/es7.promise.try.js","webpack:///./~/core-js/library/modules/es7.symbol.async-iterator.js","webpack:///./~/core-js/library/modules/es7.symbol.observable.js","webpack:///./~/ieee754/index.js","webpack:///./~/isomorphic-fetch/fetch-npm-browserify.js","webpack:///./~/lodash.sortby/index.js","webpack:///./~/n3/lib ^\\.\\/N3.*$","webpack:///./~/readable-stream/duplex-browser.js","webpack:///./~/readable-stream/lib/_stream_passthrough.js","webpack:///./~/readable-stream/lib/internal/streams/BufferList.js","webpack:///./~/readable-stream/passthrough.js","webpack:///./~/readable-stream/transform.js","webpack:///./~/readable-stream/writable-browser.js","webpack:///./~/regenerator-runtime/runtime-module.js","webpack:///./~/regenerator-runtime/runtime.js","webpack:///./~/setimmediate/setImmediate.js","webpack:///./~/solid-auth-client/lib/authn-fetch.js","webpack:///./~/solid-auth-client/lib/host.js","webpack:///./~/solid-auth-client/lib/index.js","webpack:///./~/solid-auth-client/lib/popup.js","webpack:///./~/solid-auth-client/lib/solid-auth-client.js","webpack:///./~/standard-error/index.js","webpack:///./~/standard-http-error/codes.json","webpack:///./~/standard-http-error/index.js","webpack:///./~/text-encoding/index.js","webpack:///./~/text-encoding/lib/encoding-indexes.js","webpack:///./~/text-encoding/lib/encoding.js","webpack:///./~/tr46/index.js","webpack:///./~/tr46/lib/mappingTable.json","webpack:///./~/tr46/lib/regexes.js","webpack:///./~/util-deprecate/browser.js","webpack:///./~/util/~/inherits/inherits_browser.js","webpack:///./~/util/support/isBufferBrowser.js","webpack:///./~/uuid/lib/bytesToUuid.js","webpack:///./~/uuid/lib/rng-browser.js","webpack:///./~/uuid/v4.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./~/whatwg-fetch/fetch.js","webpack:///./~/whatwg-url/lib/URL-impl.js","webpack:///./~/whatwg-url/lib/URL.js","webpack:///./~/whatwg-url/lib/URLSearchParams-impl.js","webpack:///vertx (ignored)","webpack:///util (ignored)","webpack:///util (ignored)?1f71"],"names":[],"mappings":"AAAA,gBACA,2BACA,oFACA,6CACA,IACA,sCACA,mFAEA,qCACA,SAAC,mCC8GD,MChBqC,KAAS,aC7E9C,qBC+vCA,8CAj8BuC,IJ9UvC,kBKTA,cAMA,IACA,iBAGA,mBACA,CACA,IACA,KAIA,2CAGA,aAGA,OACA,OAIA,IAzBA,eA4BA,MAGA,mBAA2C,CAAc,QAGzD,qBACA,GACA,kCACA,CACA,gBACA,cAGA,OAGA,iBACA,YACA,uBAA2B,UAA0B,UACrD,cAAiC,CAAe,QAChD,EAEA,aADA,QAIA,mBAAsD,wCAA+D,SAGrH,MAGA,8BChEA,gBAA6B,SAC7B,gCAAuC,sBCDvC,GAEA,GACA,YACA,OACA,KAAC,IAED,GAEA,0CACA,OAAC,SAED,CACA,4BACA,OAI4C,CAE5C,6BCpBA,4kBACA,sPAAM,EAAa,EACnB,IAAM,EAAO,EAEb,GAIM,cAKS,aAAK,qEAEhB,YAAK,SAAW,EAEhB,SAAI,GAAO,EAAI,WAAa,EAC1B,aAAM,EAGR,OACE,QAAM,IAAI,OAGZ,gCAAI,CAAC,EAAI,SACP,UAAM,IAAI,OAA0B,oBAGtC,0BAAI,EAAI,SAAS,KACf,IAAI,GAAqC,2BACzC,4CAAM,IACP,SAED,CACD,SADc,SAEf,OAvBA,0CA2BG,IAAI,GAAM,KAAK,IAAI,MAAM,KACzB,GAAI,EAAI,EAAI,MAAM,EAAG,CAAC,GAAG,YACzB,KAAI,EAAI,EAAI,QACZ,YAAU,EAAL,KAAU,EAAI,EAAI,GAAa,CAAP,GAC7B,KAAW,MAAU,EAAI,MAAM,EAAG,EACnC,GACD,iCAKE,IAAI,GAAM,KAAK,IAAI,MAAM,KACzB,GAAI,EAAI,EAAI,QACZ,SAAQ,CAAJ,GAAO,KAAM,IAAI,OACrB,sDAAI,GAAI,EAAI,QAAQ,IAAK,EACzB,MAAQ,CAAJ,GAAO,KAAM,IAAI,OACrB,0DAAW,OAAU,EAAI,MAAM,EAAG,EACnC,mCAEA,OACE,EADE,MAAK,IAAI,QAAQ,KAGnB,KAAW,MAAU,KAAK,IAAI,MAAM,KAEvC,wCAEC,OAAO,IAAM,KAAK,IACnB,GAED,8BAIE,OAAO,MACR,K,MACQ,aACP,MACD,mCACiB,aAChB,IAAqB,WAAV,YACT,IADkC,KAGpC,YAAM,GAAS,GAAS,EAIxB,oBACD,cA/EqB,KAiFxB,EAAU,SAAW,YACrB,EAAU,UAAU,WAAwB,YAC5C,EAAU,UAAU,MAAQ,EAE5B,EAAiB,wBC7FjB,CACA,yDACA,sDAEA,cACA,wCAAyC,wBCLzC,YACA,WACA,WACA,SAEA,4CACA,eACA,sBACA,eAEA,2BCVA,aAEA,UACA,WACA,mBACA,oBACA,mBACA,iBACA,mBACA,iBACA,iBACA,uBCVA,gWAKM,wEACQ,aACV,gBAAQ,IAAI,sBACZ,MACD,gCACY,aACX,OAAI,MAAK,WAAa,EACpB,WAAO,CAET,EAAI,KAAK,WAAa,EAGtB,aAAI,KAAK,MAAQ,EACf,MAAO,CAET,EAAI,KAAK,MAAQ,EAGjB,QACD,wBACO,aAIN,YAAQ,KAAK,WAAa,EAAM,UAC7B,KAAK,QAAU,EACnB,4CAEC,OAAO,MACR,sCACS,aACR,OAAO,MACR,iDAEC,OAAO,MACR,uCAEC,OAAO,MACR,+CAEC,MAAM,IAAI,OACX,qEAEH,EAEA,UAQA,EAAK,UAAgC,aACnC,IAAM,GAAa,EACnB,IAAM,EAAU,EAChB,IAAM,EAAY,EAClB,MAAqB,WAAV,YACT,IADkC,KAGpC,YAAM,GAAS,GAAS,EAIxB,oBAAI,MACF,WAEF,SAAO,EACR,YAfD,EAiBA,EAAK,KAAwB,aAC3B,OAAI,GACF,SAAO,EAAK,SAAS,IAAI,EAEvB,MAAC,EACL,SAAI,EAAK,SAAS,OAAO,GAAG,IAC1B,YAEF,GAFS,KAAK,MAEV,EAAK,SAAS,OAAO,GAAG,IAAI,cAC9B,EAAK,SAAS,OAAO,GAAG,IACxB,SAAO,GAAI,MAAK,EAElB,OACE,EAAK,SAAS,OAAO,GAAG,IAAI,aAC5B,EAAK,SAAS,OAAO,GAAG,IAAI,WAC5B,EAAK,SAAS,OAAO,GAAG,IAEjB,aAAO,EAEhB,MAAO,EACR,OApBD,mBC5EA,aAqBkB,aAChB,IACA,YAAI,EAAI,QACR,KAGE,CAHE,KAGK,EAAI,MAEd,KAEkB,aACjB,OAAW,OAAU,EAAQ,EAC9B,MAEkB,aACjB,IAAI,GAAI,uBAEN,iBAAO,EAEP,GAEH,GAEqB,eACpB,IAEI,GAAW,EAAK,QACpB,KAHI,EAAW,EACf,EAAI,EAAO,EACX,KAEE,CADE,OACK,EAAK,MAEd,MACE,CADE,KAAM,OAGV,YACE,CADE,KAAM,QAAQ,WAGlB,UAAQ,EAAM,QACd,KACE,CADE,IAGJ,cAAY,EAAK,QACjB,KACE,CADE,KAAK,OAGT,YACE,CADE,GAIJ,SAH2B,mBACzB,kCAEW,EAAK,MAAM,EAAI,GAAY,GACxC,KACE,CADE,KAAM,QAAQ,YAGlB,QAAI,EAAK,QAAc,UAAe,EACpC,QAAa,EAAK,QAAQ,IAAK,EAC/B,GACE,CADE,SAEA,EADE,GAAc,SAAY,EACrB,EAEP,MAIJ,eAAa,EAAK,QAAQ,IAAK,EAC/B,GACE,CADE,SAEA,EADE,GAAc,SAAY,EACrB,EAEP,MAIN,OACE,CADE,KAAM,QAAQ,WACT,GAAK,MAEd,YAAO,EACP,WAAY,EAAK,YACjB,KACE,CADE,SAGJ,SAAiB,CAAb,KAAkB,EAAY,EAAK,OACrC,MAAO,EAAK,MAAM,EAAI,GAAY,GAEpC,MACA,KAAO,EAAK,MACV,qBAAO,EAAK,QAAQ,iBAEtB,aAAO,EAAK,QAAQ,QACpB,MAAO,EAAK,QAAQ,QACpB,KAAO,EAAK,MACb,OAEkB,aACjB,IACA,YAAI,EAAI,QACR,KACE,CADE,GAGF,KAAO,EAAI,MAEd,KAEqB,eACpB,IAEA,6CAFI,EAAG,EAAG,EAAG,EAAG,EAAK,EAAM,EAAG,EAAG,EAAG,EAAG,EAAK,EAC5C,KAEE,GAEF,YACE,YAEF,OAAK,EAAI,EAAI,EAAG,EAAM,EAAI,OAAY,QAEpC,KAAI,IAIN,MAN2C,EACzC,QAKE,EAAK,MAAS,KAChB,aAAI,EAAI,QACR,MACE,CADE,OACE,CAEN,KAAI,EAAI,QAAQ,IAAK,EACrB,GAAmB,GAAf,KAAI,EAAI,IAA8B,GAAhB,KAAK,EAAI,IAAc,EAAI,MAAS,OAAO,EAAK,MACxE,YAAO,GAGX,YAAe,GAAP,SAAc,EACpB,iBAAO,GAET,cAAW,CAAJ,IACL,GADc,KAAI,EAAI,IAGxB,OACE,CADE,GAGJ,YAAgC,CAA5B,GAAK,QAAQ,KAAM,EAAI,IACzB,CADmC,GAAI,QAAQ,KAAM,EAAI,GAG3D,YACE,CADE,GAAK,QAAa,OAGtB,eACA,IAAM,EACN,UAAK,EAAI,EAAG,EAAO,EAAI,QAAY,IACjC,MACA,KACE,GADE,MAIN,OAAU,CAAN,MAAW,EAAI,EAAI,QACrB,GADmC,cAC5B,KAAO,EAEhB,YAAU,CAAN,MAAW,IAAM,EACnB,aAEF,UACA,GACE,CADE,OACG,EAAI,EAAU,IAAW,CAAR,IAAiB,KAAY,KAAc,CAAR,IAAc,IACrE,OAGJ,YAAO,GAAI,EACZ,Q,CA7KD,GAAI,GAAQ,GAAS,QAAQ,IAE7B,EAAO,QAAkB,UACzB,EAAO,QAAmB,WAC1B,EAAO,QAAmB,WAC1B,EAAO,QAAe,OACtB,EAAO,QAAmB,WAC1B,EAAO,QAAgB,QAEvB,GAAM,GAAY,EAAQ,oBTnB1B,0BAmDA,YACA,IACA,sBACA,uBAAqB,6CAAmD,UACxE,GACA,cACA,+BACA,8BAAG,SACH,CACA,QACA,EAEA,YACA,UACA,oBACA,WACA,WAEA,eACA,IACA,2BAEA,8BAaA,SAXA,0BACA,6BAGA,YACA,aAEA,YAGA,WAWA,CAEA,iBACA,8BACA,yBAIA,oCACA,IACA,4BACA,OAGA,8EACA,OACA,UACA,YAUA,mBACA,IACA,uCAGA,4FACA,aAGA,WACA,mBAGA,SACA,MASA,CAkBA,aACA,IACA,uCACG,4CACH,yBAEA,wCAEA,mBACA,OACA,MACA,KAEA,OAIA,WAKA,OAJA,0BACA,iBAEA,OAMA,CAKA,eACA,IACA,iBACA,WACA,8BAAmB,EAAU,IAC7B,SAGA,EACA,QAIA,CAWA,iBACA,yBACA,YAGA,WACA,kCAGA,oDACA,WAEA,eAEA,WAQA,MAJA,mBAGA,QAGA,eACA,oBACA,gBACA,iBAAiB,EAAY,OAC7B,OAEA,SACA,SAEA,mBACA,MAEA,kBACA,kCAGA,qDACA,wBAGA,+BAiBA,qBAhBA,cACG,eACH,cAEA,oBAGA,qBAEA,qBACA,kBAGA,aAEA,SAGA,eACA,kBACA,OACA,uBAEA,OAIA,4BAEA,OAEA,MACA,IACA,kEACA,mDACA,YAEA,GAGA,kCACA,mBAEA,KAEA,qBACA,sFAEA,aAGA,OACA,yBACA,2EAEA,gBACA,KAEA,aACA,OACA,UAEA,WACA,IA8EA,eACA,MACA,qBAEA,2CACA,2EACA,uBAEA,WACA,uBAGA,cACA,sBAGA,GAEA,OADA,QAEA,cACA,YACA,aACA,SACA,aACA,WACA,QACA,wBACA,WACA,WACA,YACA,cACA,iBACA,SACA,iBACA,MACA,qBACA,OACA,yBACA,gBACA,cAGA,OAGA,iBACA,IASA,sBACA,SAIA,UACA,aAGA,0BACA,iBAGA,QACA,WAIA,WACA,OAEA,EACA,WAGA,aAGA,YACA,cACA,eAEA,cACA,WACA,iBAEA,cACA,iBAEA,cACA,aACA,kBAEA,cACA,kBAEA,cACA,WACA,YACA,cACA,oBAEA,UACA,iCACA,iCACA,cAGA,MAGA,CAGA,iBACA,OACA,UACA,KACA,OAkIA,qBAEA,wBAGA,KACA,oBACA,MACG,GACH,eACG,YACH,kBAEA,cACA,GAEA,0BAIA,aACA,sBACA,aACA,aACA,CAAG,SACH,WACA,cAIA,KACA,yBAIA,aAEA,kBACA,eAEA,EACG,gBACH,6BACA,MACA,qBAEA,+EAEA,6CAGA,gBAGA,+BACA,wCAEA,qBACA,gBAmBA,OACA,MAEA,oBAEA,IAEA,OAzBA,MACA,WAEA,UACA,sBACA,0BACA,4CACA,gBACA,kBAEA,IACA,KACA,KACA,KACA,CAGA,IASA,QACA,QACA,MAAwB,IAAe,IACvC,4BACA,gBAIA,QAGA,kBANA,qBAEA,IAKA,oBACA,KAAwB,IAAQ,SAChC,QACA,QAAqB,EAAe,IACpC,yBACA,CACA,KACA,KAEA,MACA,QAGA,QACA,EAcA,mBACA,OACA,UAEA,YAGA,KACA,MAKA,MAPA,YAQA,qCAEA,0BACA,QAEA,aAAiB,IAAY,QAC7B,+BACA,aACA,WACA,MACA,CACA,SAEA,mBACA,iBACA,iBAEA,mBACA,WACA,YAEA,mBACA,OACA,YAEA,mBACA,WACA,YAEA,mBACA,iBACA,iBAiFA,iBACA,qBACA,UAEA,oCAEA,YAEA,iBACA,OACA,iBAEA,MACA,SACA,OACA,OACA,aACA,QACA,QACA,EAEA,YACA,WAGA,EACA,KACA,QAGA,KACA,YACA,GACA,2BACA,KACA,QAIA,OACA,YACA,SACA,iBACA,sCACA,uBACA,WAIA,OACA,YACA,SACA,SACA,+BACA,iDACA,cACA,YAIA,aAEA,CAGA,YACA,QACK,GAEL,aACA,aACA,2BAGA,UACA,QACA,IAEA,OACA,KAIA,CAGA,aACA,SACA,UACA,qBAIA,oBACA,KACA,EACA,UACA,MACA,iBAGA,QACA,SAEA,iBACA,OACA,SAEA,iBAAqB,KAAS,IAC9B,SAEA,UACA,SAEA,iBACA,OACA,SAEA,iBAAqB,KAAS,IAC9B,SAEA,MACA,SAEA,iBACA,SAEA,qBACA,oBAEA,eACA,GAAqB,IAAS,IAC9B,SAEA,MACA,SAEA,iBACA,aACA,aACA,KAAiB,MAAkB,UACnC,YAEA,YACA,SAyCA,iBACA,qCACA,oDACA,yCA8JA,uBACA,uCACA,gFACA,0EACA,sBAiDA,mBACA,iBACA,8BAAuD,GAAO,IAC9D,0BACA,QAEA,YA4BA,mBACA,sBACA,8BAAuD,GAAO,IAC9D,WAEA,oBAiJA,uBACA,sCACA,kDACA,sBAEA,qBAEA,2CAEA,4CACA,KACA,EAUA,qBAEA,4CAEA,6CACA,KACA,EA+HA,aAEA,sBAEA,qBAEA,QACA,kBAEA,IACA,SAEA,aACA,iBACA,8BACA,IAEA,aACA,4BACA,eACA,IAEA,eACA,MACA,qBAEA,SACA,KAEA,OAAiB,EAJjB,EAI6B,QAC7B,QAGA,+BAEA,OAEA,YAEA,2BACA,KACA,QAAS,iBAET,2BACA,KACA,QAGA,CAEA,IACA,QAGA,YACA,2BACA,KACA,IACA,QAGA,yBACA,KAEA,mCAGA,UAGA,WACA,aACA,QACA,OAAK,gBACL,aACA,QACA,KACA,SAEA,SAAK,iBACL,aACA,QACA,KACA,UACA,YAEA,SAAK,mBACL,aACA,QACA,KACA,UACA,aACA,YAEA,SACA,sBAEA,qBAEA,CACA,SAEA,aACA,QACA,QAAiB,MAAgB,OAEjC,WAEA,qBACA,SAEA,eACA,QAEA,QAAiB,MADjB,MACiC,UAGjC,UAFA,QAGA,mBACA,MACA,MACA,UAGA,QACA,SAEA,aACA,uBACA,MAEA,oBACA,WAAiB,EAAY,2BAE7B,QADA,WAGA,KACA,SAEA,cACA,OACA,OApvDA;;;;;GAEA,SACA,UACA,eAEA,WACA,eACA,oBAyBA,GACA,wBACA,6BAKA,MAJA,oBAKA,iBAkEA,WAEA,KACA,sBACA,CAEA,qBADA,aA2BA,sBACA,UACA,WAEA,IACA,uDACA,sBACA,8CACA,kBAEA,qDACA,OACA,KAGA,mBA8BA,uBACA,UACA,aAgBA,yBACA,UACA,OAGA,EACA,6BACA,UACA,SAgHA,wBACA,qBACA,YAEA,yBACA,uBACA,gCAGA,4CAEA,eACA,WAEA,oBAAgD,IAChD,mBACA,GACA,OACA,KACA,KAGA,aACA,MACA,EACA,GAEA,0BACA,eACA,mBACA,UACA,WACA,YACA,YACA,aACA,aACA,aACA,WACA,YACA,cACA,WACA,SACA,QAEA,YAEA,wBACA,KACA,0BAGA,kDACA,4BAGA,MACA,MACA,iBACA,IAAe,MAAiB,OAChC,YAIA,eACA,iBACA,QAAa,MAAiB,WAC9B,OACA,WACA,gCAEA,iDACA,eACA,MACA,CACA,UA6CA,eA0EA,yBAQA,+BACA,YACA,UACA,4BAEA,uDAAiB,EAAS,OAC1B,aAEA,SACA,OAEA,+BACA,YACA,UACA,4BAEA,uDAAiB,EAAS,OAC1B,aACA,gBAEA,SACA,OAEA,+BACA,YACA,UACA,4BAEA,uDAAiB,EAAS,OAC1B,aACA,gBACA,gBACA,gBAEA,SACA,OAEA,iCACA,OACA,0BACA,+BACA,kBACA,YAEA,gCACA,uCACA,mCACA,WACA,uBAEA,gCACA,OACA,OACA,wBACA,kDAAkD,cAClD,wBAEA,uBACA,KAEA,yCACA,OACA,gCAGA,gCACA,eAEA,GACA,0BAEA,GACA,eAEA,GACA,oBAGA,qCACA,4BAGA,+BACA,WAEA,MACA,YAEA,KACA,WAGA,WACA,OACA,OACA,OAEA,iBAEA,aACA,MACA,MAEA,cACA,eAEA,aAAiB,EAAS,IAC1B,mBACA,GACA,OACA,KACA,KAGA,aACA,MACA,EACA,CAUA,EAkHA,sCACA,QACA,yBAEA,qCACA,UACA,gBAEA,yCACA,UACA,gBAiDA,qCAEA,IACA,aACA,cACA,SAEG,sBACH,mBACA,WACA,SAEG,UACH,eACA,EACA,gBACA,iBAEA,UACA,IAIA,wBACA,OAIA,sFACA,gCAEA,oCACA,4BAGA,gDAEA,QAEA,OADA,QAEA,cACA,eAEA,gBACA,WACA,iBAEA,gBACA,iBAEA,gBACA,aACA,kBAEA,gBAEA,kBAEA,gBACA,WACA,YACA,cACA,oBAEA,YACA,iCACA,iCACA,cAGA,QAEA,+BACA,OACA,MACA,yDAEA,KAsFA,YA8DA,iCACA,YACA,UACA,mBAEA,GACA,KACA,aACG,IACH,MAGA,KACA,KACA,aACG,IACH,MAGA,WAEA,QACA,QACA,2BACA,4BACG,cACH,OACA,MACA,0BAAmB,EAAc,IACjC,cAEA,IAEA,CACA,QAIA,EAMA,wCACA,IACA,KACA,gBAEA,kBACA,UACA,IACA,aACA,cAGA,OACA,UAEA,wCACA,IACA,KAEA,gBAGA,yBACA,OACA,WACA,gBAGA,OACA,UAEA,qCACA,sBACA,QACA,SAEA,wCACA,sBACA,2BACA,GAEA,wCACA,sBACA,0BACA,IAEA,wCACA,sBAEA,SACA,mBACA,aACA,IACA,oBAEA,wCACA,sBAEA,QACA,6BACA,cACA,SACA,KAEA,uCACA,IACA,KACA,gBAEA,kBACA,UACA,IACA,aACA,cAEA,OAKA,UAHA,kBAEA,SAGA,uCACA,IACA,KACA,gBAEA,eACA,OACA,WACA,cACA,gBAEA,OAKA,UAHA,kBAEA,SAGA,oCACA,sBACA,qBAEA,kBADA,SAGA,uCACA,eACA,iCACA,iBACA,gBAEA,uCACA,eACA,iCACA,iBACA,gBAEA,uCACA,sBAEA,QACA,mBACA,aACA,cACA,IAEA,uCACA,sBAEA,iBACA,cACA,cACA,SACA,IAEA,uCACA,sBACA,6BACA,IAEA,uCACA,sBACA,6BACA,IAEA,wCACA,sBACA,6BACA,IAEA,wCACA,sBACA,6BACA,IAQA,2CACA,MACA,MACA,KACA,KACA,gBACA,iBACA,EAEA,OACA,IACA,cACA,iBACA,gBAGA,cACA,MAEA,2CACA,MACA,MACA,KACA,KACA,gBACA,iBACA,EAEA,SACA,IACA,gBACA,kBACA,gBAGA,cACA,MAEA,wCACA,UACA,MACA,sBACA,2CAEA,QACA,GAUA,2CACA,UACA,MACA,wBACA,KACA,6BACA,oBAEA,KAEA,eACA,GAEA,2CACA,UACA,MACA,wBACA,KACA,iCACA,YAEA,SAEA,eACA,GASA,2CACA,UACA,MACA,6BACA,KACA,mCACA,iBACA,iBACA,UAEA,SAEA,eACA,GAEA,2CACA,UACA,MACA,6BACA,KACA,iCACA,iBACA,iBACA,YAEA,SAEA,eACA,GAEA,0CACA,MACA,MACA,KACA,eAEA,oBACA,GAEA,OACA,IACA,IACA,cACA,iBACA,iBACA,oBAEA,aAGA,qBACA,MAEA,0CACA,MACA,MACA,KACA,eAEA,oBACA,GAEA,SACA,IACA,IACA,gBACA,kBACA,iBACA,oBAEA,aAGA,qBACA,MAEA,uCACA,UACA,MACA,uBACA,+BACA,oBACA,WACA,QACA,GAEA,0CACA,UACA,MACA,yBACA,SACA,6BACA,oBAEA,KAEA,eACA,GAEA,0CACA,UACA,MACA,yBACA,SACA,iCACA,YAEA,SAEA,eACA,GAEA,0CACA,UACA,MACA,8BACA,cACA,6BACA,oBACA,gBACA,iBAEA,MAEA,eACA,GAEA,0CACA,UACA,MACA,8BACA,iCACA,KACA,iCACA,iBACA,iBACA,YAEA,SAEA,eACA,GAeA,0CACA,UACA,gBAEA,0CACA,UACA,gBAUA,2CACA,UACA,gBAEA,2CACA,UACA,cAEA,EACA,oCACA,UACA,qBACA,0BACA,cACA,cAGA,iBACA,0CAGA,MACA,yBAEA,yEACA,yDAGA,kDACA,mBACA,UAGA,kBACA,IAEA,oBAEA,YAAqB,EAAQ,KAC7B,gBAEG,uBAEH,0BAAe,EAAS,IACxB,gBAGA,mCAEA,uBAKA,QACA,QAKA,EACA,oCAEA,uBACA,IACA,oBACA,MACA,SACK,QACL,qBACA,WAEA,qBACA,oBACA,GACA,QAEA,IACA,gBACA,uCAEA,uDACA,kCAEA,uBAAG,KACH,wBAIA,iCACA,8BAGA,yBACA,WAGA,WACA,+BAEA,QAEA,MACA,MACA,uBAAmB,IAAS,IAC5B,IAEG,cACH,SAEA,2BACA,gBACA,aAAe,IAAiB,IAChC,gBAEA,IAEA,OACA,KAGA,EAEA,4DU7mDA,QACA,OACA,OACA,QACA,QACA,MAEA,6BACA,WACA,QACA,QACA,QACA,QACA,QACA,eACA,WACA,mBACA,iBACA,EAGA,aAFA,gBAGA,iBAEA,kBAEA,qCAEA,UAEA,6BACA,sBACA,sBACA,kBACA,qBACA,oBACA,uBACW,mBACX,aAAS,qBACT,UACA,EAGA,YAFA,MAEK,wCAGL,6BAEA,mCAGA,UACA,EACA,IAAc,EACd,IAAc,EACd,IAAc,EACd,IAAc,EACd,IAAe,GACf,IAAe,GACf,IAAe,GACf,IAAgB,IAChB,sDX7DA,CAmBA,aACA,yBACA,OAEA,eACA,SACA,iCAGA,aACA,gBACA,wBAEA,aACA,YACA,gDACA,aAEA,eACA,oCACA,SAEA,aACA,qEACA,YAEA,aACA,wDACA,WAEA,aACA,QACA,0EAEA,aACA,QACA,wEAEA,aACA,OACA,eAEA,aACA,YACA,QAEA,aACA,YACA,QAEA,aACA,OACA,MAEA,aACA,WAEA,cAEA,aAAiB,MAAgB,OACjC,SAGA,MACA,SAEA,aACA,eACA,KAEA,CAEA,aACA,gBACA,MAEA,CACA,aACA,iBACA,MAEA,CACA,aACA,iBACA,OAEA,eACA,SAEA,WACA,MAIA,OAEA,aACA,OAEA,sCACA,+CACA,KACG,iBACH,kCACA,KAGA,GACA,aAGA,SACA,eACA,WAEA,UACA,UAGA,kBAIA,UACA,cAEA,aACA,iBACA,QACA,oBACA,cAIA,MACA,WAGA,cACA,uBACA,IACA,OAEA,iBACA,QACA,MAGA,WACA,OAEA,WAAiB,aAAwB,EACzC,OACA,SAGA,qCACA,QAGA,iBACA,QAEA,WACA,mBACA,KAGA,IACA,SAEA,aACA,OACA,GAEA,cAAiB,EAAQ,KACzB,QACA,SACA,UAEA,aAGA,KACA,SAEA,aACA,MACA,2BACA,IACA,OAEA,cAEA,oBACA,IACA,YAGA,YACA,EACA,IACA,GAEA,kBACA,IACA,KAGA,sBACA,IACA,SAEA,SACA,IACA,IACA,IACA,QAEA,OACA,IAEA,yBACA,8BACA,IACA,IAGA,iBACA,IACA,KAGA,YAEA,KACA,IAGA,eAEA,sBACA,OAEA,QACA,kBACA,IAEA,QAIA,6BACA,MAGA,oCACA,kBACA,WACA,QACW,YACX,MAEA,WAEA,UACA,MAEA,SACA,GAEA,MAEA,WAEA,WACA,OAEA,GAEA,IACA,KAGA,SACA,KAAK,SACL,cACA,IACA,cAEK,kBACL,cAGA,SACA,OACA,GAEA,aACA,OACA,UACA,aACA,eACA,YACA,KACA,OACA,IACA,GACA,CAAG,mBACH,KAGA,SACA,SAEA,aACA,OACA,WACA,SACA,OAEA,gBAA0B,EAAiB,SAC3C,OACA,SAEA,kBAGA,eACA,oBACA,IACA,KACA,KACA,QAEA,kBAEA,IACA,WAEA,IAEA,CACA,SAEA,kBACA,IACA,iBAIA,6CAGA,MACA,WAGA,2BACA,aACA,QACA,MAGA,YACA,KAGA,iBACA,+BAKA,UAEA,aACA,IACA,KAGA,eACA,kBACA,oBAAiB,MAAoB,OACrC,SAEA,QACA,SAEA,aACA,OACA,OACA,IACA,OAEA,YAAiB,MAAgB,OACjC,IACA,UASA,UAEA,KAKA,MAfA,MACA,IAGA,OACA,OAEA,SASA,OACA,IAGA,KACA,CACA,MAEA,OAEA,aACA,OACA,mBAIA,iBACA,gBAIA,MAEA,kBACA,qBACA,CACA,aACA,gBACA,gBACA,oBAEA,0BAIA,cAEA,aACA,qEACA,IAEA,aACA,0CACA,IAEA,aACA,MAAS,CACT,UAGA,mDAIA,OACA,MAEA,aACA,wBACA,gBAEA,aACA,wDACA,kBAEA,aACA,sBACA,QAEA,qBACA,iBACA,OACA,qBACA,8BACA,aACA,qBACA,WACA,gBAEA,wBACA,UACA,QACA,YACA,YACA,QACA,UACA,KACA,cACA,cAEA,KAGA,oCACA,gBACA,aAEA,oBACA,OAEA,gBACA,OAcQ,aAbR,aAEA,oBAEA,sBAEA,2BACA,QACA,eACA,gBAEA,uDAEA,gCAA2C,sBAC3C,yBACA,2BAGA,0BACA,eACA,GACK,oBACL,MACA,WACA,KACA,CACA,EAiVA,eACA,WACA,eACA,kBACA,uBACA,KA2QA,eACA,gBACA,OACA,6BAgBA,uBAGA,UAjBA,uBACA,wBACA,SACA,2BAEA,aAGA,YAEA,MACA,yBAEG,SAKH,2BAEA,yBACA,QAIA,MASA,MARA,2BAGA,UACA,6BAGA,YAGA,aACA,gBACA,MAOA,cALA,MACA,yBAGA,QAlsCA,UACA,SAEA,SACA,KAAO,iBAA+B,mBAEtC,MACA,KACA,QACA,YACA,QACA,SACA,OACA,OAGA,yBAyEA,qGAydA,iDACA,MACA,+BACA,yBACG,uBACH,yBACA,mBAEA,YAIA,aAHA,gBAIA,UAEA,2CACA,8CACA,sBACG,6BACH,uBACA,yBACA,QAGA,iCACA,QAGA,iDACA,qBAGA,2DACA,sBAEA,QACA,yBACA,YACA,cAKA,kCAJA,wBAEA,qBAGA,GACA,4DACA,wCAEA,0BACK,mEACL,kBACK,uCACL,gBACK,4BACL,4CACA,2BAEA,mBACA,uCACA,eAEA,4BAAG,eACH,0BACA,cACA,0BAEA,MAIA,aAHA,gBAIA,UAEA,4CACA,sDAEG,sCACH,kCACA,oCACA,iCACA,wBACA,YACA,+BACG,YACH,sCACA,cAEA,qBACA,kBAIA,cAEA,gEACA,CAUA,eATA,4CACA,0CAEA,eACA,yBACA,kBAGA,aAGA,oDACA,CAQA,MAPA,mBAEA,wBACA,cAGA,aAGA,2CACA,CA0CA,iCAzCA,OACA,sCACA,qCACA,iCACA,6BACA,kCACA,iCACG,OACH,kBACG,iBACH,oCACA,qCACA,iCACA,6BACA,kCACA,uBACA,cACG,SACH,oCACA,qCACA,iCACA,6BACA,kCACA,iCACA,wBACA,cACG,yBACH,aACA,yBAEA,+CACA,qCACA,iCACA,6BACA,gEAEA,cACA,cAGA,aAGA,iDACA,CAiBA,6BAhBA,SACA,cAEA,0BACG,oCACH,kBAEA,yCACA,qCACA,iCACA,6BACA,gBACA,cAGA,aAGA,4DACA,CAUA,eATA,4CACA,0CAEA,eACA,yBACA,0CAGA,aAGA,mEACA,CAQA,eAPA,mBACA,mBAEA,cAGA,kBAGA,8CACA,WACA,MACA,mBACA,gCAEA,aAGA,yBACA,kBAAyB,EAAe,QACxC,qBAEA,sDACA,MACA,yBACA,QACA,SACA,YACA,+BAEA,qBAEA,WACA,aACA,EAAG,mCACH,4BACA,iBACA,iBAGA,YAFA,6CAGA,cACA,cACA,MACA,WAGA,UACA,UAEA,8BACA,yCACA,wBACA,gCACA,mBACG,0CACH,IACA,iBAIA,YAHA,6CAIA,SACA,MAGA,qBACA,mBACA,cACA,OACA,gCAEA,QAAG,mCACH,4BACA,WACA,qBACA,iBAEK,YADL,uCAEA,gCACA,sBAIA,YAHA,8CAIA,SACA,MAGA,qBACA,mBACA,cACA,kBACA,cAEA,QACA,KACA,aACK,WACL,cAEA,iBAGA,UACA,UAEA,yCACA,MACA,qBACG,4CACH,qBACA,2BACA,qBACA,uBACA,WACA,QAGA,YAFA,qDAGA,mBACA,EACA,SACA,cAEA,oBACA,oBACA,OACA,KAIA,aAHA,gBAIA,UAEA,gCASA,uCACA,CAyCA,uBAvCA,eACA,QACA,cAEA,0BACG,gCACH,0BACA,kCACA,kCACA,iCACK,OACL,gCACA,kCACA,uBACA,cACK,SACL,gCACA,kCACA,iCACA,wBACA,cAEA,+BACA,cAOA,uCANA,kCACA,eAEA,iBAIA,cAGA,qBACA,cAGA,aAGA,6CACA,CAmBA,eAlBA,QACA,cAEA,0BAEA,gCACA,8CACA,4BACA,sCAEA,4BAGA,iBACA,cAGA,aAGA,8CACA,wCACA,aA+BA,yBA9BA,oCACA,aACA,yBACK,gCACL,kBACA,QACA,cAEA,oBACA,YAAK,KACL,4BACA,SACA,MAEA,YACA,oBAEA,aAEA,YACA,cAGA,qBACA,cACA,YAEA,CAIA,UAEA,6CACA,CAuBA,cAtBA,MACA,cAEA,0BAEA,eACA,eAEG,6BACH,2BAGA,OAGA,wBACA,OACA,eAIA,4BARA,cACG,4BAJH,cACG,aAaH,uCACA,mCACA,8CACA,iBACA,cAGA,sBACA,gBACA,4BACA,4BAEK,qBACL,uBACA,2BACK,YACL,qEACA,8BACA,4BACA,4BAEA,+BAEA,6BAEA,qBACA,kDACA,qCACA,4BACA,4BAGA,QACA,wBACA,cAEA,SACA,2BACA,cAEA,WAGA,KACA,8CACA,0CACA,WAGA,4BAGA,OACA,UAEA,4DACA,CAwBA,MAvBA,wBACA,cACG,SACH,0BACA,cAGA,wBACA,cAGA,eACA,+CACA,2CACA,YAGA,gBACA,6BAIA,aAGA,0CACA,0CACA,sCACA,gDAGA,6BACA,kBAAmB,MAAmB,OACtC,oBACA,SACA,2CACA,6BACA,OAEA,QAIA,kBACA,GACA,2BACA,cAEA,WAEA,KACA,8CACA,0CACA,WAGA,oBAGA,UACA,UAEA,2CACA,CAeA,MAdG,YACH,WAGA,eACA,+CACA,2CACA,YAGA,kCAGA,aAuDA,yBAEA,wCAEA,UACA,YACA,UACA,+DACA,IAAO,SAEP,OACA,MACA,KACA,UACA,aACA,WACA,YACA,SACA,eACA,UACA,cACA,YAEA,WAEA,aACA,UAEA,cAEA,UAEA,qCACA,CACA,aAGA,2DACA,wBACA,QAGA,OACA,KAEA,sCACA,YACA,kBACA,oBAAiB,MAAoB,OACrC,kBAEA,SAEA,sCACA,YACA,kBACA,oBAAiB,MAAoB,OACrC,kBAEA,SAEA,0BAEA,4CAEA,sCACA,CACA,aAEA,gCACA,OACA,cAIA,gCAA8C,sCAC9C,oFYlxCA,CAwCmC,iBACjC,IAAI,GACJ,QACE,WADE,QAAO,GAAG,UACP,EAEL,YAEF,WACA,WADI,KAAE,aACF,GAAS,EAAQ,EACrB,KACA,KAAyB,CAArB,GAAE,IAAI,QAAQ,KAEhB,IAAI,EAAiB,EAAE,IAAK,yCAQ5B,OAAI,EAAiB,EAAE,IACf,qCACF,EAAiB,EAAE,IACvB,+BAEK,uCAAI,EAAiB,EAAE,IAC5B,+BACK,qCAAI,EAAiB,EAAE,IAE5B,mCAEH,wCAEC,YAEF,OAAI,GAGF,aAHQ,KAAY,oBAGhB,KAAK,qDAAuD,EAAE,IACrD,WAGf,KAAO,EAAS,QAAQ,CACzB,0BAED,CAGkC,iBAChC,KAAM,EACN,MAAI,GAAS,EACb,WAAQ,CAAJ,KAAO,EACX,KAAW,IACT,OACE,SAGJ,eAAO,CACR,CAED,CAQ2B,eACzB,GACA,iBAAK,GAAI,GAAI,EAAU,OAAS,EAAQ,CAAL,IACjC,MAAI,UAGN,WAAI,QAAoB,WAClB,CAAC,EACH,iBAEH,gBAED,IAAI,YAA8B,aAChC,GAAc,aACf,OAED,IAAI,eAAiC,aACnC,KAAK,GAAI,GAAI,EAAE,EAAI,EAAc,aAAM,OACrC,OAAI,EAAoB,gBACtB,SAIJ,SAJkB,aAAa,SAC3B,MAIL,QAED,IAAI,eAAiC,aACnC,GAAc,aACf,UAED,IAAI,cAA8C,eAChD,IACA,MACA,KAAI,EAAM,EAAc,aACxB,OACA,EAGA,MAAK,EAAI,EAAM,EAAQ,CAAL,IAEhB,MAAW,EACX,gBAAI,GAAY,EACd,cAIJ,YAAK,EAAI,EAAa,OAAS,EAAQ,CAAL,IAChC,MAAiB,KAGnB,UAAS,IAAK,EAAI,EAAc,aAAM,OACpC,MAAiB,KAAK,EAGxB,mBACD,cACF,CAED,CAIS,YACP,OAAI,QACF,UAAO,GACF,aAAI,OACT,eAAO,GAAI,eAId,mBAED,CAC4B,eAC1B,GACA,SACA,MACE,qBAAQ,YAAY,MAAM,KAAK,QAAkB,WAC/C,CACD,OAEH,MACA,YACE,wBAAQ,eAAe,MAAM,KAAK,QAAkB,WAClD,CACD,OAEH,GACD,WAE8C,mBAC7C,IACI,GACJ,GACA,OAFA,KAE6B,WAAzB,QAAO,GAAK,SAChB,YACE,CADE,KAAK,aACH,EAAK,aAAa,UAAoC,0BAAW,EAAK,QAAQ,EAAQ,mBACxF,UAAO,EAAK,cAAc,EAAQ,mBAAmB,SACtD,gBAAM,IAAI,EAAyB,yBAAW,EAAK,QAAQ,IAAM,EAAQ,oBACxE,IAAI,GAAQ,EAAK,SACjB,iBAEA,SACA,UAAK,EAAI,EAAK,WAAW,OAAS,EAAQ,CAAL,IAAQ,IAC3C,IAAI,GAAM,EACV,mBAA4B,CAAxB,GAAe,QAAc,EAAe,EAChD,SAAI,QAAQ,KAAK,EACjB,UAAiB,OAAb,KAAI,MAA8C,4BAAgF,CAAC,CAArE,GAAI,MAAM,MAAM,KAAK,QAAQ,EAAQ,qBAAqB,QAC1H,IAAI,GAAK,GAAI,QAAO,EAAQ,qBAAqB,OACjD,OAAI,MAAQ,EAAI,MAAc,UAAI,EAAQ,qBAAqB,QAChE,MACG,CAAe,OAAb,KAAI,MAA4C,0BAAW,EAAQ,qBAAuB,EAC9F,SAAS,KAAK,EAAI,KAAO,MAAQ,EAAI,MAAM,QAAQ,KAAM,SAAS,QAAQ,KAAM,QAAQ,QAAQ,KAAM,QAAQ,QAAQ,KAAM,UAE/H,MACD,IACE,CADE,GAAS,SACa,sBAAW,EACjC,kBAAS,KAAkB,aACzB,OAAO,GAAE,cAAc,cAAc,EACtC,cAEH,MAAO,IAAM,EAAS,KAExB,MACE,QACD,UACC,QACA,OAAkB,MAAV,KAAoB,OAC5B,KAAM,KAAe,OAAV,MACX,QADgC,MAC3B,EAAI,EAAG,EAAI,EAAK,WAAW,OAAa,OAAO,EAAS,EAAgB,eAC7E,EACA,SAAkB,MAAV,KAAyC,aAAc,OAChE,GACF,CACF,MAAM,IAEL,CAFS,KAAK,YAEP,OAAS,EAAK,UACtB,UAAM,IAAsB,CAAlB,KAAK,UAAoC,CAAlB,KAAK,SAErC,IAAI,GAAK,EAAK,UAAU,QAAQ,OAChC,OAAO,EAAM,EAAM,OAAc,KAAK,EAAG,QAAQ,KAAM,SAAS,QAAQ,KAAM,QAAQ,QAAQ,KAC/F,OACC,cAAQ,IAAI,qDAAuD,EACnE,kBAEF,OACD,SAEQ,YACP,IAAI,GAAM,GACV,MAAI,EAAO,EAAI,UACf,KAAI,EAAQ,EAAI,WAChB,EAAI,EAAM,EACV,UAAI,EAAO,EACX,cAAI,EAAS,EACb,gBAAI,EAAS,EACb,mBAAY,GAAR,KAAY,EAChB,OAAU,EAAN,KAAU,EACd,OAAW,EAAP,KAAW,EACf,OAAa,EAAT,KAAa,EACjB,OAAa,EAAT,KAAa,EACjB,OAAO,EAAa,MAAc,MAChC,MAAa,MAAe,MAC/B,GAED,CAGgC,mBAC9B,IAAI,GAAqB,aACvB,OAAuB,WAAf,KAAE,SACX,MACD,EAAI,EAAsB,aACxB,IAAI,GAAM,EAAqB,sBAAG,IAAc,WAC9C,OAAQ,GAAK,EAAS,EAAG,SAAW,IAAM,EAAS,EAAG,WACpD,IAAM,EAAS,EAClB,OAHS,GAGP,OAAO,EAA2C,oCAAG,IAAc,WACpE,OAAQ,GAAK,EAAS,EAAG,SAAW,IAAM,EAAS,EAAG,WACpD,IAAM,EAAS,EAClB,OACD,aACA,OAAO,EAAI,KACZ,KACD,QAAoB,WAAf,KAAE,UACL,WADmC,KAAE,SACT,CAAxB,KAAc,eAClB,EAAc,KACd,OAAc,KAAmB,KAAO,CACxC,EAAO,EAGP,eAAI,GAAU,EAAE,KAAO,EACrB,IAAO,CAAC,EAAO,EAAE,MAAQ,EAAE,KAAK,cAAc,EAAO,EAAE,MAAQ,EAEjE,KAAO,EAEV,eAEkC,mBACjC,OAAO,GAAa,EAAE,QAAS,EAAc,cAC3C,EAAa,EAAE,UAAW,EAAgB,gBAC1C,EAAa,EAAE,OAAQ,EAC1B,WAED,CAKiB,aACf,IAAI,GAAI,SAAS,cACjB,SACA,uBAAS,KACV,cAED,CAGwB,eACtB,IACA,QACA,MAAqC,WAA1B,eAAoC,EAAO,QAOpD,IAAI,GAAY,EAAQ,KACxB,UAAI,EAAU,QAA4B,kBAAK,EAAQ,aACvD,yBACD,QACC,UAAsB,WAAlB,QAAO,SAA0B,OACnC,UAAU,GAAI,QAEd,UAGJ,MAAO,EAAwB,kBAChC,kBAED,CAI4B,eAC1B,KAAK,GAAI,GAAI,EAAG,EAAI,EAAE,OAGpB,OAAM,KAAG,QAAQ,SAAS,EAAE,UACxB,KAAG,UAAU,SAAS,EAAE,YACxB,KAAG,OAAO,SAAS,EAAE,SACrB,KAAG,IAAI,SAAS,EAClB,KAIJ,cAJa,SACT,QAGE,IAAI,OAAiD,2CAAI,IAAM,EACtE,KAE+B,eAC9B,OAAQ,GAAI,MAAM,EAAG,EACtB,WAED,CAG+B,eAC7B,CAEK,OAFD,GAAQ,EAAK,MACjB,MAAI,EACJ,GAAS,EAAI,EAAE,EAAI,EAAK,OACtB,IAAK,MACL,MAAgB,KAElB,WAAO,GAAS,EAAM,MAAM,EAAK,QAClC,MAGD,CAEsB,aACpB,IAAI,GAAW,KACf,QAAI,CAAC,EACH,YAAO,GAET,wBAEK,OAFD,GAAQ,EAAE,MAAM,WAAW,MAC/B,MACA,KAAS,EAAI,IAAG,EAAI,EAAM,WAExB,OAAkC,CAIlC,CAJI,GAAK,QAAQ,iBADb,KAMF,GADE,IAAK,OAAO,OAGhB,iBAAI,GAAS,EAAK,MAClB,OAIF,YAAK,GAAI,GAAI,EAAG,EAAI,EAAQ,OAC1B,OAAO,KAAe,KAAG,GAAK,SAAmB,KAEnD,GACD,Q,CAxZD,GAAI,GAAU,EAAQ,GACtB,QAAI,EAAM,EACV,IAAI,EAAY,EAAQ,GAExB,EAAO,QAA6B,qBACpC,EAAO,QAAuB,eAC9B,EAAO,QAAsB,cAC7B,EAAO,QAAkB,UACzB,EAAO,QAA2B,mBAClC,EAAO,QAAsB,cAC7B,EAAO,QAAmB,WAC1B,EAAO,QAAuB,eAC9B,EAAO,QAA0B,kBACjC,EAAO,QAAiB,SACxB,EAAO,QAAmB,WAC1B,EAAO,QAAyB,iBAChC,EAAO,QAAsB,cAC7B,EAAO,QAA4B,oBACnC,EAAO,QAAiB,UACxB,EAAO,QAAQ,OAAkB,WACjC,EAAO,QAAQ,IAAM,EAAkB,GACvC,EAAO,QAAc,MAErB,EAAO,QAAQ,eAA0B,WACvC,UAAY,EAAU,MAAM,KAAK,GACjC,OAAW,MAAqD,2CACjE,YAHD,EAKA,EAAO,QAAQ,qBAAgC,WAC7C,OAAW,OAAU,qDAAuD,EAC7E,OAED,sCCpCA,YACA,qBACA,4BACA,sBACA,2BCJA,QACA,QACA,SACA,4BAEA,iDACA,IACA,OACA,QACA,UACA,OACA,SAAG,SAAY,CACf,yCACA,4BAEA,2BADA,0BCdA,CACA,2BACA,OACA,WADiC,sBAAQ,eAAmB,OAAU,EAAI,KACzE,kBCHD,qBACA,mCACA,oCCFA,CAWA,YACA,iBACA,mCACA,YACA,iBACA,oCACA,CAoBA,aACA,QAEA,+BAGA,mBACA,oBACA,wBAEA,MAEA,YACA,EAAK,SACL,IAEA,sBACA,EAAS,SAET,sBACA,EACA,CAGA,EACA,aACA,QAEA,mBAGA,iCACA,sBACA,aAEA,mBAEA,OACA,KAAK,SACL,IAEA,eACA,OAAS,SAGT,eACA,OACA,CAIA,EAMA,YACA,CAGA,OACA,OACA,WAEA,aAEA,IACA,QAEA,KAEA,YACA,CAGA,aACA,KAEA,iBACA,UACA,KACA,IACA,KAEA,eAGA,SACA,MACA,MACA,GACA,KACA,KACA,MAgBA,eACA,MACA,WACA,QAWA,cAhKA,QAOA,WACA,eASA,IACA,GACA,8BAIA,YAAK,SACL,CACA,GACA,IACA,GACA,gCAIA,cAAK,SACL,CACA,GACA,CAAC,KAqDD,GACA,MACA,UACA,EAyCA,sBACA,8BACA,MACA,6BAAuB,cAAsB,OAC7C,WAGA,oBACA,YACA,iBAEA,IAEA,EAKA,0BACA,0BACA,QACA,kBACA,aACA,SACA,UACA,UAAqB,GACrB,cAIA,OACA,gBACA,SACA,QACA,mBACA,uBACA,SACA,oBACA,wBAEA,uBAAqC,WAErC,qBACA,iBACA,qCAEA,gBAA2B,YAC3B,mBACA,iBACA,mCACA,kBAA4B,OAAU,qBCvLtC,4kBACA,sPAAM,EAAa,EACnB,IAAM,EAAO,EAAQ,GAEf,cACS,aAAI,qEAEf,OAEI,KAFC,SAAW,EAEhB,WACE,IACE,QADS,yBACD,IACR,mBAAM,GAAI,OAEZ,4CAAI,EAAG,SAAS,KAEd,IAAI,GAAY,EAAG,MACnB,OAAK,EAAU,EAAU,OAC1B,EACD,GAED,IACC,QAAK,GAAK,IAAM,EAGlB,SACD,SADM,MAAQ,EAAK,WApBpB,sCAuBa,aACX,OAAI,MAAK,WAAa,EACpB,WAAO,CAET,EAAI,KAAK,WAAa,EAGtB,aAAI,KAAK,GAAK,EACZ,GAAO,CAET,EAAI,KAAK,GAAK,EAGd,KACD,sBAEK,aACJ,IAAI,GACJ,MAED,SAFS,OACR,iDAIA,OAAO,KAAO,KACf,0CAGC,OAAO,GAAU,sBAAwB,KAC1C,QApDqB,KAuDxB,EAAU,OAAS,EACnB,EAAU,SAAW,YACrB,EAAU,sBAAwB,KAClC,EAAU,UAAU,WAAwB,YAC5C,EAAU,UAAU,QAAU,EAC9B,EAAU,UAAU,MAAQ,EAE5B,EAAiB,2BClEjB,aAIA,EAAO,QACL,OAAuB,aAEtB,CACD,OAAqB,aAEpB,CACD,OAAqB,aAEpB,CACD,QAAuB,aAEtB,CACD,UAA2B,aAE1B,CACD,MAAmB,aAElB,CAlBc,oBCJjB,aAQA,aAAsC,0BAAuC,CAAgB,WAN7F,gBAEA,QAEA,WAIA,qBACA,kBACA,oBACA,6CACA,gBACA,IACA,OACA,YACA,KAAS,SACT,CAEA,WADA,KAGA,UACA,SAEA,2CACA,GACA,SAAW,aACX,GACA,UAEA,EAEA,UACA,OACA,EACA,C,mBCrCA,kCCAA,yBACA,2CCDA,MAAuB,kBACvB,uBACA,UACA,4BCHA,QACA,YACA,+BACA,kBACA,KAAC,iBACD,CAEA,MADA,4BCsBA,aAmCA,aACA,sCAGA,eAEA,kCAEA,uCAEA,kBACA,gDAEA,4BACA,UAXA,SAwBA,YAGA,yCAIA,oBACA,MAEA,aACA,GACA,MAxEA,QAIA,8BACA,IACA,aACA,UACA,QACA,QACA,EAEA,EAEA,UACA,YACA,aACA,IAEA,QACA,aAEA,EAIA,4BACA,aAAiB,QAAiB,OAClC,MACA,uCAEA,cAkBA,0DAIA,CACA,4BACA,4BACA,aAGA,IAeA,8CACA,eACA,oDAGA,qEACA,SACA,iBAGA,6CAMA,qCACA,gCACA,YACC,IAED,kCACA,WACA,WAEA,QACA,a,mBC9HA,aACA,QACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,SAIA,KACA,UACA,CACA,MACA,MACA,SACA,MACA,MACA,kBACA,mBACA,YACA,eACA,qBACA,2CChCA,GAMc,uEAGd,EAAiB,2B5BTjB,4kBACA,kcAAM,EAAa,EACnB,IAAM,EAAY,EAClB,GAAM,EAAO,EACb,GAAM,EAAM,EAAQ,KAEd,cAC0B,iBAAU,qEAEtC,OAUD,SAVM,SAAW,EAChB,WAEE,cACA,SAAW,EAIX,kBAAK,SAAW,EACjB,sBAXH,2CAcE,OAAW,OAAQ,KAAK,MAAO,KAAK,KAAM,KAC3C,gCACO,aAIN,YAAQ,KAAK,WAAa,EAAM,UAC7B,KAAK,QAAU,EAAM,OACrB,KAAK,WAAa,EAAM,WACvB,CAAC,KAAK,UAAY,CAAC,EAAM,UACxB,KAAK,UAAY,KAAK,SAAS,OAAO,EAC5C,2CAQC,IACE,QADE,QAAO,MAAK,YACP,MACR,WAAM,GACL,QADS,QAAO,MAAK,WACf,IAAI,OAAM,iDACd,KAEJ,UAAI,GAAM,KACV,MAYD,SAZO,EAAI,QAAQ,MAClB,UAAM,EAAI,QAAQ,MAClB,SAAM,EAAI,QAAQ,MAClB,SAAY,MAEZ,IAAI,KACF,YAAO,IAAM,KACR,SAAI,CAAC,KAAK,SAAS,OAAO,EAE/B,aAAO,KAAO,KAAK,SAErB,qDAGA,OAAO,GAAK,KACb,KACD,mCA7BE,OAAO,MACR,I,MACa,aACZ,MAAK,KAAO,GACb,gCA+BmB,aAClB,IAAI,GAAW,EAAQ,IACvB,UAAmB,SAAU,KAAM,EACpC,QACD,yBAMiB,aACf,IAAI,EAAE,YACJ,YAAM,IAAI,WAEZ,6CAAI,GAAe,aACjB,OAAO,CAAC,IAAY,QAAI,MAAM,EAC/B,EACD,EAAI,EAAO,GAAK,EAAM,iBAAmB,IAAM,EAAG,EAAM,cAAgB,GACtE,IAAM,EAAG,EAAM,cAAgB,IAAM,EAAG,EAAM,eAAiB,IAC/D,EAAG,EAAM,iBAAmB,IAAM,EAAG,EAAM,iBAC7C,UAAmB,SAAM,KAAM,EAChC,SACD,2BAMmB,aACjB,IACE,QADS,gBACH,IAAI,WAEZ,+CACM,GAAW,EACjB,WADA,WAC4B,CAAxB,GAAS,QAAQ,YAA+B,OAClD,iBAAW,OAAiB,aAAS,EAAI,QAAU,EAEnD,QAAW,EAEb,OAAmB,QACpB,OACD,0BAKkB,aAChB,IAAqB,WAAV,YACT,IADkC,KAGpC,YAAqB,QAAjB,eAAO,8BAAsB,EAC/B,SAEF,2BAAe,uBACb,UACE,YAAI,YACF,YAAO,GAEX,gBACE,gBAAO,GACT,mBACE,eAAO,GACT,kBACE,eAEJ,gBAAM,IAAI,OAAmC,8BAAQ,wBAC5C,uBAEV,YAnImB,KAqItB,EAAQ,SAAW,UACnB,EAAQ,UAAU,WAAwB,UAC1C,EAAQ,UAAU,SAAW,EAAI,OACjC,EAAQ,UAAU,KAAO,GACzB,EAAQ,UAAU,MAAQ,EAE1B,EAAiB,0B6BjJjB,CACA,YACA,yBACA,QACA,KAEA,+BACA,UACA,SACA,qBACA,UACA,WACA,uBACA,UACA,aAEA,YACA,kBACA,UACA,kBCnBA,qBACA,IACA,SACA,GAAG,SACH,CACA,QACA,mBCNA,CACA,QACA,aACA,qBACA,UACA,qBCLA,WAEA,gDACA,GACA,+CACA,aACA,CACA,QACA,cACA,YAGA,kBAGA,iBACA,GACA,0BACA,gBACA,sBACA,kBACA,aACA,gBCtBA,gCCEoB,aAClB,OAAiB,YACf,OAAW,OAAU,GAAS,GAC/B,IACF,EAND,GAAM,GAAY,EAAQ,GAQ1B,EAAiB,yBCRjB,MAAiB,YAEjB,qBACA,2BACA,mBCJA,4BCAA,uBACA,OACA,cACA,oBACA,gBACA,KAEA,0BCPA,aAsBA,CAEA,aACA,cACA,cAEA,WACA,wBAGA,aACA,OACA,oBAGA,aACA,OACA,UAGA,aACA,OACA,SAGA,aACA,OACA,mBAGA,aACA,OACA,mBAGA,aACA,OACA,mBAGA,aACA,YACA,OAGA,aACA,OACA,yBAGA,aACA,2BACA,SAGA,aACA,OACA,uBAGA,aACA,4CACA,OAGA,aACA,OACA,qBAGA,aACA,OACA,WACA,qBACA,oBACA,oBACA,oBACA,sBAKA,aACA,kCACA,QA5EA,YAKA,cAKA,WAKA,sBAKA,aAKA,aAKA,aAKA,gBAKA,aAKA,aAKA,WAKA,YAKA,eAUA,gBAEA,4DCtGA,cAiBA,eACA,MACA,WACA,oCAlBA,MAEA,uBACA,kDACA,eACA,wBACA,mDACA,gBACA,eACA,2BAEA,MAEA,SAMA,+CACA,4BACA,gCACA,IAEA,EACA,sBACA,gBACA,kBACA,gBAEA,sBACA,gBACA,gCACA,GAEA,mCACA,gBAEA,wBACA,aACA,+CACA,GACA,cACA,YAEA,KAEA,EACA,EAGA,KACA,8CACA,uCACA,sCACA,gDACA,yCACA,0EC3DA,aAEA,uBACA,mCAEA,0BACA,oCACA,kCACA,oCACA,0CACA,8CACA,sCACA,sCACA,wEAEA,qDCVA,aAEA,QACA,OAEA,eACA,SAOA,sBACA,MACA,oBAEA,KACA,MAEA,SAGA,6BACA,MAEA,SAGA,4BACA,MAEA,cACA,CAIA,gGACA,MAEA,SAGA,mHACA,MAGA,cACA,MAIA,cACA,MAIA,aACA,MAaA,aACA,E,2BC7EA,4kBACA,sPAAM,EAAY,EAClB,IAAM,EAAa,EACnB,IAAM,EAAO,EAAQ,GAEf,cACS,aAAS,qEAEpB,OASD,SATM,SAAW,EAChB,WAAK,GAAK,EACV,WACA,cACA,UAAI,GACF,CADa,GAAQ,UACb,QAAQ,WACd,GAAK,SAAS,KAAK,EACpB,aACF,WAVH,iCAYQ,aACN,OAAO,MAAK,SACb,yCAEC,aACA,UAAO,KACR,wCAEC,OAAO,MAAK,SACb,kCACW,aACV,IAAI,GAAe,KAAK,SAAS,IAAc,WAC7C,GACD,aACD,SACD,0CAEC,OAAO,GAAU,sBAAwB,KAC1C,uCAEC,OAAO,IAAM,KAAK,SAAS,KAAK,KACjC,2BACQ,aACP,OAAO,MAAK,SACb,gBArCsB,KAuCzB,EAAW,SAAW,aACtB,EAAW,UAAU,WAAwB,aAC7C,EAAW,UAAU,YAAc,EAAU,UAAU,YACvD,EAAW,UAAU,MAAQ,EAE7B,EAAiB,2BCjDjB,+DACA,CAUoB,aAClB,OACD,UACoB,aACnB,OACD,UACQ,YACP,OACD,OACwB,eACvB,OACD,YACQ,YACP,OAAO,OACR,QACwB,iBACvB,OAAW,OACZ,UACwB,eACvB,OACE,QADS,WAC+B,CACtC,CADE,KAAmB,QAAQ,KAG7B,WAAmB,QAAO,KAG5B,MAAmB,QAEtB,QACmB,aAClB,OACD,UAC0C,mBACzC,UAAQ,GACR,MACD,eACwC,mBACvC,OACD,gBACoC,iBACnC,OACD,UACkB,aACjB,OACD,SAED,CApDA,mBAJM,EAAY,EAClB,IAAM,EAAa,EACnB,IAAM,EAAe,EACrB,KAAM,EAAU,EAEhB,IAAM,EAAU,EAChB,IAAM,EAAY,EAClB,GAAM,EAAY,EAClB,IAAM,EAAW,EAAQ,IAiDzB,EAAO,QAAoB,YAC3B,EAAO,QAAuB,eAC9B,EAAO,QAAgB,QACvB,EAAO,QAAkB,UACzB,EAAO,QAAoB,YAC3B,EAAO,QAAe,OACtB,EAAO,QAAiB,SACxB,EAAO,QAEP,WACA,EAAO,QAAqB,aAC5B,EAAO,QAAkB,UACzB,EAAO,QAAc,MACrB,EAAO,QAAa,kmBCxDpB,CAcyC,mBACvC,IAAI,GAAK,EAKT,8BAED,eAED,CAC0C,mBACxC,IAAI,GAAK,EAKT,8BAED,eAAC,CAEgD,qBAChD,CAAI,EACF,gBAGF,uBAAI,GAAI,EAAQ,aAAa,EAC7B,cACA,KACE,SAAK,GAAI,GAAI,EAAG,EAAI,EAAE,OACpB,MAAO,GAGX,gBACD,+SAhDK,EAAe,EAAQ,IAC7B,aAAM,EAAU,EAEhB,KAAM,EAAiB,EAAQ,IAC/B,eAAM,EAAY,EAClB,IAAM,EAAO,EACb,GAAM,EAAW,EAEjB,IAAM,EAEN,iCAAM,EAGN,oBAqCqB,cACN,aAAU,GAGrB,kEAEA,OAuBD,SArBC,qBACA,kBACA,kBACA,aACA,mBACA,kBACA,oBACA,iBACA,cAAK,MAAQ,CACX,EAAK,aACL,EAAK,eACL,EAAK,YACL,EAEF,YACA,gBAAK,SAKL,iEAAK,oBAAoB,EAAK,kBA3BhC,qCAkCY,aACV,IAAI,GAAiB,KAAK,WAAW,IAAc,WACjD,OAAO,GACR,aAED,GAAI,EACJ,MAGD,SADC,mCAGyB,iBACzB,IAAM,GAAQ,EAAQ,IACtB,MAAI,EACJ,KACI,EAeJ,KAAI,EAAoB,aACtB,IAAI,EAAM,UACR,GAAK,EAGD,cAAS,EAAK,EAElB,iBAAK,EACL,cACA,MAAI,EAAM,EAAG,IAAc,WACzB,IAAI,GAAM,EAAS,mBAAmB,EAAG,QAAS,EAAG,UAAW,EAChE,gBAEE,EAFE,KAAI,UAGN,QAGA,MAAO,EAEV,EACD,MAAI,EAGF,aAAO,GAAc,6BAA+B,EAAI,KAE1D,aAAI,IAAc,WAChB,GACD,SACF,EACD,CAEE,aACI,aAAS,EAAK,EAClB,iBAAK,EACL,aAAG,IAAc,WACf,GACA,QAAS,IAAI,EAAG,QAAS,EAAG,UAAW,EAAG,OAAQ,EACnD,IAEH,IACD,GACD,EAxDA,KAwDI,EAAM,MAER,IAAI,GAAY,MAChB,WAAM,IAAM,EACZ,QAAM,IAAI,WAAW,IAAc,WACjC,GACD,KAED,MAEA,QAAe,QAA2B,aACxC,GAED,OAHD,EAIE,EAAS,QACA,YACP,OACE,EADE,KAAc,OACT,EAAc,gCAAkC,EAEzD,OACE,CADE,GAAc,OACT,EAET,0CAAU,EACV,GACD,KACJ,EACC,KAEH,wCAEmB,aACd,CAGL,MAHM,MAAK,wBAAuB,KACjC,+BAAK,sBACL,6CAGmB,aAEnB,MAAK,gBAAgB,qDAIrB,IACE,CADe,MAAU,iBACpB,gBAAgB,0CAA4C,CAC3B,mBAElC,CAED,SADC,cAIN,IACE,CADe,MAAU,oCACpB,aAAmB,MAAS,8BAAgC,CAC3B,mBAElC,OAAO,GACR,sBAGL,IACE,CADe,MAAU,6BACpB,aAAmB,MAAS,uBAAyB,CACpB,mBAClC,OAAO,GACR,sBAGN,GAED,oBAKsB,mBACpB,IACA,MAAyB,CAArB,aAAU,OACZ,IAAI,YACF,WAAK,EAAI,EAAG,EAAI,EAAK,OACnB,SAAK,IAEF,UACL,qBAAK,IAAI,EAAK,QAAS,EAAK,UAAW,EAAK,OAAQ,EAC/C,KACL,qBAAK,IAAI,EAEX,kBACD,KACD,IACA,GAGE,QAAM,KAAK,QAAU,KAAK,QAAQ,QAAU,KAE9C,UAAO,EACP,eAAO,EACP,eAAM,EACN,eAAM,EACN,aAAI,KACF,wBAAK,kBAGP,aAAI,GAAW,KAAW,SAC1B,eAAU,KACV,sBACA,MAEE,SAAK,EAAI,EAAG,EAAI,EAAQ,OACtB,MAAO,GAAgB,KAG3B,iBAAI,KAEF,qBAMF,SAAI,GAAO,CAAE,KAAW,SAAoB,eAC1C,KAAW,SAAK,aAAc,KAAW,SAC3C,oBACA,eAAK,EAAI,EAAO,CAAJ,GAAO,IACjB,IAAI,GAAK,KACT,SAAI,EACA,KACF,OAEF,SAAG,KACJ,OAGD,CAED,YAFM,WACL,gCAGM,aAAY,OAClB,OAAW,QAAQ,WACjB,GAAK,IAAI,EAAK,QAAS,EAAK,UAAW,EAAK,OAAQ,EACrD,MACF,sBACa,mBACZ,IAAI,GAAK,KACT,iCAEO,IAFH,UAGF,KADS,IACF,EACF,QACL,IADS,IACF,EACF,UACL,IADS,IACF,EAGV,sCAEkB,mBACjB,IAAI,GAAI,KACR,mBAAO,GAAI,EAAE,MAAQ,IACtB,uCAEsC,mBACrC,IAAI,GAAI,KACR,qCAAK,IAGL,CAHU,KAAE,OAGL,EACR,SAED,sBAGO,aACL,IACE,GAEF,YAAI,GAAI,KAAK,aAAa,EAK3B,4DAGC,MAAK,mBAAmB,KACxB,gBAAK,GAAI,GAAI,IAAO,CAAJ,GACV,QACC,GACH,QAFO,KACT,WACM,EACF,wBAAK,mBAIZ,OAED,mCAIyB,eACvB,CAGK,OAFL,0CAAI,EAAS,aAAqB,KAClC,UACS,EAAI,EAAb,EAAgB,EAAI,EAAI,OAAQ,IAC9B,GACA,KAWK,OAXD,GAAO,CAAE,EAAG,QAAS,EAAG,UAAW,EAAG,OAAQ,EAClD,KAAI,EAA6B,eAC/B,KAAK,GAAI,GAAI,EAAG,EAAI,EAAE,OACpB,OAAM,KAAG,QAAQ,SAAS,EAAE,UACxB,KAAG,UAAU,SAAS,EAAE,YACxB,KAAG,OAAO,SAAS,EAAE,SACrB,KAAG,IAAI,SAAS,EAClB,KAGL,QACD,EAAS,EAAI,EAAO,CAAJ,GAAO,IACrB,IAAI,GAAI,KAAK,MACb,MAAI,EAAI,EACJ,aAAC,KAGC,aAAC,EAAc,KAItB,cACD,IAAI,CAAC,EAAc,KACjB,mBAAM,IAAI,OAA6C,uCAAK,IAAM,EAErE,MACF,mCAGC,OACD,KAED,uBAM0B,iBACnB,KACL,SAAI,GAAW,KACf,sBAA6C,CAC3C,CADe,OAAO,oBACb,OAAO,KAElB,yCAAK,GAAI,GAAI,IAAG,EAAI,EAAS,OAAQ,IAC/B,UACJ,KAAQ,EAAG,OACT,cACE,iBAAS,MAAQ,EAAG,UAAW,EAC/B,QACF,UACA,cACA,gBACE,kBAAS,MAAQ,EAAG,UAAW,EAAG,OAAO,KAE7C,QAAsC,CACpC,CADe,OAAO,gBAGzB,SACF,CAED,uBAIY,eAIV,GAAK,KACL,WAAK,KACL,YAAI,GAAI,EAMR,0BACE,CADE,GACK,KAEP,iBAAO,KAEV,yCAEQ,aACP,OACD,SAED,QAcA,cAUmC,mBACjC,OAAO,MAAK,mBACV,EAAe,aACf,EAAe,aACf,EAAe,aACf,EAEH,aAED,4BAGa,aACX,IAAI,GAAa,MACjB,UAAQ,CAAC,CAAC,KAAkB,iBAC5B,CAAC,CAAC,KAAiB,gBACnB,CAAC,CAAC,KACH,iBAED,+BACgB,aACd,IAAK,GAAK,MAAO,MACjB,WAAI,GAAI,KACR,aAAO,MACR,uDAEwB,eAEvB,IAAI,GAAO,EACP,aAAC,KACH,0BAEF,4BAAqB,mBAErB,QAEK,OAFD,GAAY,KAChB,oCACA,KAAS,EAAI,EAAG,EAAI,EAAU,OAC5B,MAAO,GAAQ,EAAO,KAAgB,KAAY,UAAgB,KAEpE,QACD,QAED,6BACc,aACZ,IAAI,GAAI,KACJ,OAGL,MAHM,MAAK,sBAAqB,KAC/B,6BAAK,oBACL,SAGF,yBACU,aACR,OACD,SAED,2BAIY,aACV,KAAK,GAAI,GAAI,KACP,SAAM,EAAI,IACd,OAAI,CAAC,KAAiB,eAAM,MAAO,MAEtC,4BAEkC,mBACjC,IAAI,GAAsB,EAAQ,IAClC,0BAAO,GAAoB,KAC5B,aAED,uBAGQ,aACN,IAAI,YAAc,OAChB,KAAK,GAAI,GAAI,EAAG,EAAI,EAAG,OACrB,SAAK,OAEP,YACD,KACD,IACE,qBAAO,MAAK,OAAO,EAErB,eAAI,GAAM,KAAK,mBAAmB,EAAG,QAAS,EAAG,UAAW,EAAG,OAC7D,EACF,QAAI,CAAC,EACH,YAAM,IAAI,OAEZ,2DAAK,gBAAgB,EACrB,IACD,IAED,+BAGgB,aACd,CACK,OADD,GAAM,KAAyD,2CACnE,QAAS,EAAI,EAAG,EAAI,EAAI,OACtB,SAAK,gBAEP,YACD,KAED,2BAGkC,qBAEhC,CAMK,OAND,GAAM,KAKV,+BACA,KAAS,EAAI,EAAG,EAAI,EAAI,OAAa,MAAW,KAC5C,cAAO,EAAa,EAAW,MACnC,MAAK,EAAI,EAAG,EAAI,EAAW,OAAa,SAAK,OAC9C,mCAE0C,mBACzC,aAAK,iBAAiB,KAEtB,6BACD,IAED,gCAOiB,aAEf,CACK,OADD,GAAO,CAAE,EAAG,QAAS,EAAG,UAAW,EAAG,OAAQ,EAClD,KAAS,EAAI,EAAO,CAAJ,GAAO,IACrB,IAAI,GAAI,KAAK,MACb,MAAI,EAAI,EACJ,aAAC,KAGH,eAAe,KAElB,cACD,UAAe,KACf,cACD,qCAEiB,aAChB,KAAK,GAAI,GAAI,EAAG,EAAI,EAAI,OACtB,SAAK,OAEP,YACD,KAED,4BAGkB,eAEhB,CAgBK,OAhBD,GAAU,EACd,aAAI,EAAU,EACd,aAAI,EAAsB,aACxB,IAAI,GACJ,KAGA,SAAI,GAIF,KAAG,OAAW,EAEhB,kBACD,MAED,EAAS,EAAI,EAAO,CAAJ,GACd,MAAU,KAEZ,kBACA,kBAAI,EAAI,IAEF,IAAC,KACH,kBAEF,oBAAa,WACb,QAAI,KACF,eAAK,EAAI,EAAG,EAAI,KAAa,WAAS,OACpC,SAAK,aAAa,KAAsB,cACxC,qBAAa,WAAS,KAAK,KAG/B,oBAAS,MAAO,KAAK,IAAI,uCAAwC,EAEjE,KAAI,KACF,cAAK,QAER,eACD,CAID,SAJW,KACV,gBAAU,KAEV,mBAGF,2BAGY,aACV,IAAI,GAAI,KAAK,QAAQ,KAAW,SAChC,kBAED,SAFG,KAAK,KACP,WAGF,2BAGe,eACb,IAAI,EACF,YAEF,YAAI,GAAK,KAET,YAAK,GACL,YAAI,GAAK,KAGT,oBAAQ,EAAG,MAAQ,EACpB,mCAEwB,eAIvB,CAAe,KAAX,MAAoB,KAGxB,gBAA2B,IAAvB,KAAO,MAAM,EAAG,IAGpB,SAHmC,KAAO,MAAM,EAAG,UAIpD,gBAED,mCAI0C,qBAExC,IAAI,GACJ,UACA,KACA,KACA,KACA,KACA,EACA,MAAK,EAAI,EAAO,CAAJ,GACV,IAAQ,KAAK,KAAK,MAAM,EAAK,UACzB,OACF,QAGA,QAAK,KAAa,KAGtB,gBAJI,WAKF,CADE,KAAM,aACD,MAET,cACE,CADE,KAAM,OAcV,SAbM,EACJ,KAAO,KAAW,SAClB,MACE,MACE,CADE,GAAK,WACA,EAAK,MAAM,EAGtB,MACA,WAKE,GACJ,KACA,EACA,MAAK,EAAI,EAAG,EAAI,EAAM,OAAQ,IAC5B,MACA,OAAO,KAAW,SAClB,MACE,GAEF,SAAI,EACF,aAAO,EACP,OAEH,IAED,CAKK,OALD,GACJ,KAAI,EAAY,KAAW,SAC3B,MAAI,EAAQ,EAAM,MAAS,KAAQ,OAAO,EAAM,MAAM,EACtD,IACA,KACA,yCAAS,EAAI,IAAG,EAAI,EAAU,OAAQ,IAChC,OAEJ,KAAK,EAAI,EAAG,EAAI,EAAM,OACpB,SACA,KAAI,CAAC,KAAK,MAAM,EAAS,OAAK,SAAiB,MAC7C,GACA,KACD,KAEH,IACE,IADE,QAEE,WAEP,KACD,CACD,QAED,qBAGM,aACJ,IAAI,GAAQ,KACZ,SAAI,EAAQ,KAAK,QAAQ,EACzB,iBAAI,CAAC,EAAM,IACX,YAAI,GAAM,CAAE,EACZ,KACE,SAAK,GAAI,GAAI,EAAG,EAAI,EAAM,OACxB,MAAI,KAAW,KAGnB,KACD,yCA3VC,OAAO,MAAK,WACb,kDAzXA,CACA,cAjCyC,OAAvB,UAsvBrB,EAA+B,4PCjzB/B,EAAM,EAAM,EACZ,GAAM,EAAe,EAAQ,IAE7B,aAAI,EAAY,UAEhB,CAAiB,aACf,OACD,aAED,CAiJuB,aACnB,MACH,SAgCD,CAuBqF,2BACjF,OACH,uBACD,CAAuF,2BACnF,CAA0B,WAAf,aAA4B,EACvC,MAAsB,WAAX,aAAwB,EACnC,IAAsB,WAAX,aAAwB,EACnC,MAAwB,WAAb,aAA0B,EACrC,IAAsB,WAAX,aAAwB,EACnC,MAAoB,WAAT,aAAsB,EACjC,IAAkB,WAAP,aAAoB,EAK/B,WAAK,UACL,eACA,SACI,EADC,QACoC,CAAxB,IAAQ,QAAQ,KAC7B,sCAAK,UAAU,IAAW,EAE9B,UAEI,cAEJ,qBACA,gBAAK,OAAS,EACd,YAAK,MACL,OAAK,eACL,OAAK,YACL,OAAK,aACL,OACA,kBAAK,SACL,+DAAK,YACL,OAAK,gBACL,eAAK,WACL,eAAK,iBACL,eACA,eAAK,SAKD,YAOS,iBAGb,OAAY,CAAE,KAAK,UACf,CAD6B,OAAK,SAAS,QAAQ,MACjD,KACF,aAAI,KACA,cAAK,WAAgB,KAAK,SAG1B,WAAK,WAGb,0BAEa,SADT,IADC,IACG,KACA,SAAgB,EAAM,QAAW,EAG5B,aAAW,EAMxB,iBAAK,SAAW,KAChB,cAAK,eACR,IACD,CAsrC2C,qBACvC,OACH,iBACD,CAA6C,qBACzC,MAAK,KAAO,EAAI,OAChB,cACA,YACA,UACA,YACA,aACH,MACD,CAmBuC,qBACnC,OAA+B,SAAa,EAAQ,GAAuB,UAAgC,oBAAS,UAAmC,MAAM,EAAI,IACpK,GAGD,CAAiB,aACb,IAAI,GAEJ,GAAI,EACJ,YACW,UACH,IAAI,GAAK,EAGT,UACI,IADC,OACG,GAGX,GACJ,CAVD,CAUS,QACL,IACI,KAEP,OAED,CACH,QAGD,CAAoB,aACnB,CAED,cA15CO,UAhHH,EAEA,QAAmB,aACf,GAAS,EAAO,QAAQ,QACxB,MAEK,OAFD,GAEJ,GAAS,EAAI,IAAG,EAAI,EAAO,OAEnB,MAAI,EAER,cACQ,GADJ,MAGC,KAAQ,GAAJ,IACD,IADc,OACI,EAClB,GADgC,IAAK,MACnB,EAGlB,GAHgC,CAAI,WAGlB,EAClB,GADgC,IAAK,OACnB,EAClB,GADiC,CAAU,MAAL,MACpB,EAK9B,GAL4C,CAAI,OAMnD,QAED,SAAmB,aACf,QAAI,GACJ,GAAI,EAEJ,IAAQ,EAAI,EAEA,UAAI,EACR,cACQ,GADJ,OAEI,KAEH,KAAQ,GAAJ,IACD,GADc,OACG,EAAc,CAAK,EAAJ,KAAW,EAE3C,EADO,GAAQ,WAAW,EAAE,OAI5B,OAAiB,EAAc,CAAK,EAAJ,KAAW,GACpC,CAA2B,EAA1B,GAAQ,WAAW,EAAE,KAAY,EAEzC,EADO,GAAQ,WAAW,EAAE,OAI5C,GACH,QAIL,GAAI,EACJ,6CAAI,EACJ,4CAAI,EAIJ,sCAAI,EAAyB,aAAW,CAAgB,QAExD,EAAI,EAAwB,aAAW,CAAgB,QAEvD,EAAI,EAAwB,aACxB,IAAyB,CAArB,GAAY,OACnB,KACG,0CACH,QAED,EAAI,EAAuB,aAAK,OAAO,GAAU,MAEjD,EAAI,EAAiC,iBACjC,IAAwB,WAApB,QAAO,GAAI,MACX,KAA8C,0CAAI,wBAAoB,uBAC1E,YAAiB,WAAL,YAAiC,IAAX,IAAkB,EACpD,SAAO,EACV,UACD,EAAI,EAAgB,MAEpB,8BAAI,EAA4B,aAC5B,aAAK,KACL,OACA,UAAK,KAAO,UACf,IAAI,KAAK,MAAQ,KAAK,GAAG,OACzB,cAAO,MAAK,GAAG,KACX,OACD,EACH,IAED,EAAI,EAAe,aACf,OAAO,GAAI,WACd,EAED,EAAI,EAA4B,eAC5B,OAAO,GACV,UAED,EAAI,EAAkC,eAClC,CACA,OAAI,KAAM,KACV,mCACH,6BAGD,EAAI,EAA8B,aAC9B,OACH,KAGD,IAAiB,OAAkB,WAC/B,IAAgB,OAAZ,IAAqB,KACzB,0CAAO,GAAK,OACf,KACD,EAAO,EAAU,OAAkB,WAC/B,IAAgB,OAAZ,IAAqB,KAEzB,0CACH,KAID,KAAI,GAA8B,eAC9B,OAAO,GACV,SAED,EAAI,EACJ,KAAI,EACJ,EAAI,EACJ,EAAI,EAAyB,aAAiC,CAK9D,EAAI,EACJ,kDAAI,EAQJ,uCAkCI,EACJ,IAAI,EACJ,6CAAI,EACJ,2CAAI,EACJ,0CAAI,EACJ,2CAAI,EACJ,wCAAI,EACJ,4CAAI,EACJ,2CAAI,EACJ,EAAI,EACJ,yCAAI,EAAmB,EACvB,IAAI,EACJ,8CAAI,EACJ,IACA,4BACA,wBACA,aACA,kBACA,+CAEA,qGACA,cACA,iBACA,oCAk0CC,SAtvCY,UAAU,KAAgB,WACnC,OAAmB,MAAK,WAAa,KAAU,KAAK,MAAW,KAAe,EAAI,KAAK,YAC1F,EACD,IAAa,UAAU,QAAU,UAC7B,OAAO,MACV,QACD,IAAa,UAAU,WAAsB,WACzC,OAAO,MAAK,QAAQ,EACvB,OACD,IAAa,UAAU,QAAmB,WAItC,aACA,gBACA,QAAO,KACV,QACD,IAAa,UAAU,KAAgB,WAUnC,QAAI,GAAM,EAAO,OACjB,SAAI,EACJ,IAAa,CAAL,KACA,MAAI,KACR,eACI,CADC,GAGL,UAAI,GAAI,KACR,6BACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEvD,kCACJ,CACD,IAAa,UAAU,qBAAqC,aACxD,IAAI,GAAI,KACR,kBACI,CADC,GAGL,YAAI,GAAI,KACR,kBACI,CADC,UACM,MAEX,iBAAI,GAAI,KACR,qBACI,EADC,IACM,KAGd,eACD,IAAa,UAAU,IAAyB,eAI5C,IAAI,GACJ,mBACI,GADoB,QAAM,EAAI,MAC1B,GAAO,EAGX,UACI,CADC,GAAa,KAAc,kBACrB,CAGf,KAAI,GAAO,EACX,WAAiC,cAI7B,CAJsC,IAAe,QAAQ,EAAW,aAIjE,CAEd,CACD,IAAa,UAAU,UAA0B,aAC7C,IAAI,GAAI,KACR,kBACI,CADC,GAGL,YAAI,GACJ,UAAI,EAAI,KAAK,IACb,eACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,4CAAI,GAAI,KAAK,IACb,mBAAS,CAAJ,GACD,IAAI,GAAI,KACR,gCACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,qDAKH,YALQ,YAA0B,IAAK,KACpC,OAGA,EAHK,IAKT,IAAI,GAAI,KAAK,IACb,iBAAS,CAAJ,GACD,IAAI,GAAI,KACR,gCACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAGpD,sCAAI,GACJ,YACW,UACH,IAAI,GAAI,EAGR,QAAsC,CAAlC,GAAa,KAAgB,eAC7B,CADwC,IAAa,KAAsB,4BAC3D,cAAO,KAAK,SAGnC,gBACJ,CAVD,CAUS,QACL,IACI,KAEP,OAED,CACH,QACD,IAAI,GAAI,KAAK,IACb,kBAAS,CAAJ,GACD,IAAI,GAAI,KAAgC,yBAAK,KAC7C,aACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAGpD,uCAAI,GACJ,YACW,UACH,IAAI,GAAI,EAGR,YAAK,SAER,qBACJ,CARD,CAQS,QACL,IACI,KAEP,OAED,CACH,QACD,IAAI,GAAI,KAAK,IACb,iBAAU,CAAL,IACD,IAAI,GACJ,UAAI,EAAI,KACR,gBACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,mCAAI,GAAI,KACR,mBACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,8CAAI,GAAK,EAAE,GACX,OAAI,KACA,YAAI,GAAK,EAAa,KAGtB,mBAAgC,CAAnB,IAAG,QAAQ,KAE5B,uDAKH,SAJG,CADa,IAAG,QAAQ,WACnB,UAAU,EAAE,GAEjB,WAAK,KAAK,EAAE,GAAG,GACf,OAEJ,IAAI,GAAI,KAAK,IACb,eAAU,CAAL,IACD,IAAI,GACJ,UAAI,EAAI,KACR,mBACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,kCAAI,GAAK,EAAE,GACX,OAAI,KACA,YAAI,GAAK,EAAa,KAGtB,sBAAM,GAAU,KAAK,SAAU,KAAiB,UAA4E,mEAEhI,KAGH,SAFG,CADa,IAAG,QAAQ,WAExB,YAEJ,OAAO,CACV,CACD,IAAa,UAAU,KAAoB,aACvC,CAGI,EAHC,UAGI,OAEZ,oBACD,IAAa,UAAU,YAAuB,WAI1C,CACI,IADC,SACI,YAGL,QACA,gBAAK,YAEZ,EACD,IAAa,UAAU,SAAW,UACjC,CACD,IAAa,UAAU,OAAS,UAI5B,OAAO,MACV,QACD,IAAa,UAAU,cAAyB,WAC5C,GAAK,GAAG,IAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,KACvC,aAAK,gBACR,CACD,IAAa,UAAU,UAA0B,aAC7C,IAAI,GACJ,UAAI,EAAI,KACR,iBACI,CADC,GAGL,YAAI,GAAI,KAAwB,kBAAG,EACnC,OACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,yBACH,QACD,IAAa,UAAU,QAA2B,eAC9C,OAAO,MACV,WACD,IAAa,UAAU,KAAwB,eAW3C,IAAI,GAAI,KACR,kBACI,CADC,GAGL,YAAI,GACJ,UAAI,EAAI,KAAK,IACb,cAAU,CAAL,IACD,IAAI,GAAI,KACR,eACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,mCAEH,SAFO,KAAS,MAAc,CAAC,KAAM,EAClC,OAEJ,IAAI,GAAI,KAAK,IACb,aAAU,CAAL,IACD,IAAI,GAAI,KACR,eACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,uCAAI,GAAI,KACR,kBAAS,CAAJ,GACD,MAAM,GAAU,KAAK,SAAU,KAAiB,UAChD,qDACH,QACD,IACA,KAAI,EAAI,KAAK,IACb,aACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,uCAEH,SAFO,KAAS,MAAc,CAAC,KAAM,EAClC,OAEJ,IAAI,GAAI,KAAK,IACb,YACI,CADC,IAIL,SAHQ,KAAS,MAAc,CAAC,KAAM,KAAK,OACvC,eAGA,IADoB,QAAM,EAAI,YAC1B,KAAS,MAAc,CAAC,KAAM,KAAK,OAAO,IAAO,EACrD,cAAU,EAEd,KACI,GADoB,QAAM,EAAI,SAE1B,GADe,MAAQ,EAAI,EAAS,EAAI,MACpC,KAAS,MAAc,CAAC,KAAM,KAAK,OAAO,IAAO,EACrD,cAAU,EAEd,MAAI,KAAS,MAAc,CAAC,KAAM,KAAK,OACvC,UAAU,EAEd,MACI,IADoB,QAAM,EAAI,YAC1B,KAAS,MAAc,CAAC,KAAS,EACrC,aAAU,EAEd,KAAI,GAAI,KACR,eACI,CADC,IAIL,SAHQ,KAAS,MAAc,CAAC,KAAM,EAClC,WAEuC,IAAnB,QAAM,EAAI,IAC9B,IADoE,QAAM,EAAI,QACxE,GAAU,KAAK,SAAU,KAAiB,UAEpD,uCAAO,CACV,CACD,IAAa,UAAU,KAAwB,eAC3C,OAAO,MACV,WACD,IAAa,UAAU,KAAwB,eAC3C,OAAO,MACV,WACD,IAAa,UAAU,UAAqB,WACxC,OAAO,MAAK,SAAe,QAAK,KACnC,SACD,IAAa,UAAU,KAAwB,eAK3C,IAAI,GAAI,KACR,wBACI,CADC,GAGL,cAA6D,CAArD,QAAM,QAA2B,MAAM,EAAI,KAC/C,IAAI,GAAwB,MAAM,EAClC,MAAW,GAAN,IACD,IAAI,GAAsB,IAAQ,EAAI,EAAS,EAC/C,MAAM,IAA2C,CAAhC,IAAsB,YACnC,CADoD,UAAiB,WAG5E,KACD,IAAI,GAAO,EACX,MAAI,EAAM,KAAK,UAAU,KACzB,SAAI,EAAI,KAAU,OAAQ,EAC1B,QACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,yCAAI,GAAO,EACX,MACI,GADC,SACI,cAAkB,MAAc,CAAC,KAGtC,uBAAK,cAAkB,MAAc,CAAC,KAE1C,oBACH,OACD,CACH,QACD,IAAa,UAAU,cAAyB,WAI5C,IAAI,GAAO,KACX,mBACI,KAEJ,YAAI,GAAO,KAAK,OAEhB,SAEH,YADG,sBAEJ,IAAa,UAAU,KAA6B,iBAChD,CAA6B,WAAlB,aAA+B,EAO1C,SACA,KAAI,EAAI,KACR,kBACI,CADC,GAGL,YACA,KAAI,EAAwB,MAAM,EAClC,MAAW,GAAN,IACD,IAAI,GAAU,KACd,QAAI,EAAI,KAAe,YAAQ,EAC/B,MACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,sBAA2C,GAAnB,QAAM,EAAI,GAC9B,IAAI,GAAO,EACX,EAAI,EACJ,UAAI,EAAI,KAER,qBAAU,CAAL,IACD,IAAI,GAAO,EACX,MAAyB,CAAR,MAEb,IAAI,GACJ,YACW,UACH,IAAI,GAAM,EAGV,YAAK,cAAkB,MAAc,CAAC,KAAK,SAAU,KAAK,OAE7D,aACJ,CARD,CAQS,QACL,IACI,KAEP,OAEJ,CACD,IAAI,GAAI,KACR,kBACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,8CACI,GADoB,QAAM,EAAI,MAC1B,GAAO,EAElB,CAEG,WAAM,GAAU,KAAK,SAAU,KAAiB,UAEvD,gCACD,IACI,IADC,OACG,GAAO,KAEf,gBAAI,GAAI,KACR,wBACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,6BAAI,GAAI,KACR,kBACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,qDACI,GADoB,QAAM,EAAI,QACxB,GAAU,KAAK,SAAU,KAAiB,UAEpD,2BACA,QAAU,EACb,CACD,IAAW,GAAN,IACD,IAAI,GAAoB,IAAQ,EAAI,EAAS,EAC7C,MAAY,GAAP,IACD,IACA,SAAI,GAAO,EACX,EAAI,EACJ,UACA,OAAO,GACC,MAAI,KACR,eACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,gCAA2C,IAAnB,QAAM,EAAI,GAC9B,IAAI,GAAO,EACX,EACH,KACD,KACI,MAUJ,cATQ,GADoB,QAAM,EAAI,MAI9B,YAAM,GAAU,KAAK,SAAU,KAAiB,UAIpD,sBAEA,GACJ,UAAI,EAAI,KACR,eACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,oCAAO,KAAK,EACf,GACD,CAEH,SAFO,KAAK,KAAK,OAAc,SAAQ,KACpC,YAGA,IAAI,GAAO,EACX,EAAI,EAAmB,KACvB,oBAAK,eAAiB,KACtB,YAAI,GAAuB,KAC3B,gBAAI,EAAuB,KAC3B,sBAAK,iBAAmB,KACxB,gBAAK,gBACL,eAAK,WAAa,KAAK,WACvB,WAAI,GAAU,KACd,iBACA,WACI,IADC,OACG,GAAO,KAAK,OAEpB,mBACA,WAAO,GACH,IAAI,GAAI,KACR,kBACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,+BAA2C,GAAnB,QAAM,EAAI,GAC9B,IAAI,GAAO,EACX,EACH,KACD,IAAI,GAAI,KACR,6BACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEvD,8BACD,CASP,YARO,uBAAK,WAAa,KAClB,sBACA,wBAAK,SAAW,KAChB,oBACA,gBACA,mBAAI,KAAK,EACT,UAGR,IAAW,GAAN,IACD,IAAI,GAAa,KAAK,OACtB,KAAI,EAAoB,IAAQ,EAAI,EAAS,EAC7C,MAAY,GAAP,IACD,IAAI,GAAa,KAAK,OACtB,UACH,CACD,QAAI,GAAO,EACX,EAAI,EACJ,YAAO,GACC,MAAI,KACR,eACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,+BAA2C,GAAnB,QAAM,EAAI,GAC9B,IAAI,GAAO,EACX,EACH,KACD,IAAI,GACJ,UAAI,EAAI,KACR,eACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,oCAAO,KAAK,EACf,GACD,CAEH,SAFO,KAAgB,IAAQ,KAC5B,YAEJ,IAAI,GAAI,KAAK,IACb,eAAU,CAAL,IACD,MAAM,GAAU,KAAK,SAAU,KAAiB,UAChD,2EAEH,SAFO,KAAK,KACT,WAEJ,IAAI,GAAI,KAAK,IACb,eACI,CADC,IAIL,SAFI,cAEA,GAAI,KAAK,IACb,gBACI,CADC,IAIL,SAFI,cAES,IAAR,IACD,IAAI,GAAI,KACR,mBACI,CADC,IAGR,QACD,OAAO,CACV,CACD,IAAa,UAAU,cAAiC,eAMpD,MAAO,GACH,IAAI,GAAI,KACR,kBAAS,CAAJ,GACD,MAAM,GAAU,KAAK,SAAU,KAAiB,UAChD,iDACH,QACD,IAA2C,IAAnB,QAAM,EAAI,GAC9B,IAAI,GAAO,EACX,EAAI,EACJ,UAAI,EAAI,KACR,iBACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,wCACA,KACH,QACD,IACA,KAAI,EACJ,UAAI,EAAI,KACR,eACI,CADC,IAGL,YAAI,GACJ,UAAI,EAAI,KACR,qBACI,CADC,QACK,GAAU,KAAK,SAAU,KAAiB,UAGpD,0BAAI,GACJ,YACW,UACH,IAAI,GAAM,EAGV,OAAI,EAAY,EAChB,GAAI,EAAM,EACV,GAAI,EAAM,EACV,GACI,IADC,SACI,cAAkB,MAAc,CAAC,KAGtC,uBAAK,cAAkB,MAAc,CAAC,KAG7C,iBACJ,CAhBD,CAgBS,QACL,IACI,KAEP,OAED,IAAI,GAAI,KACR,kBAAS,CAAJ,GACD,MAAM,GAAU,KAAK,SAAU,KAAiB,UAChD,gCACH,QACD,IACI,GADoB,QAAM,EAAI,GAGlC,YAAI,GAAO,EACd,CACJ,CACD,IAAa,UAAU,mBAA2C,iBAS9D,IAAI,GAAI,KACR,kBAAS,CAAJ,GACD,MAAM,GAAU,KAAK,SAAU,KAAiB,UAChD,sCACH,QACD,IACI,GADC,IAAW,UAGhB,SACI,QAAI,GAAI,KAGR,wBAAI,GAAI,KAEZ,mBACI,CADC,SACM,CAEX,OAAO,GACH,IAAI,GAAI,KACR,kBACI,CADC,GAGL,YAAI,GAAwB,MAAM,EAClC,MACI,GADC,UAEG,GADC,MACM,CAIf,EACI,QAAI,GAAI,KAAc,WAAQ,EAG9B,aAAI,GAAI,KAAc,WAAQ,EAElC,QAAS,CAAJ,GACD,MAAM,GAAU,KAAK,SAAU,KAAiB,UAChD,oBACH,QACJ,CACJ,CACD,IAAa,UAAU,WAA8B,eACjD,IAAI,GAAI,KACR,iBACI,CADC,SACM,CAEX,OAAO,GACH,IAAI,GAAI,KACR,kBAAS,CAAJ,GACD,MAAM,GAAU,KAAK,SAAU,KAAiB,UAChD,0BACH,QACD,IACI,GADoB,QAAM,EAAI,GAGlC,YAAI,GAAI,KAAY,SAAQ,EAC5B,QACI,CADC,GAGR,QACJ,CACD,IAAa,UAAU,SAAyB,aAC5C,IAAI,GAAI,KACR,kBACI,CADC,GAGL,YACI,GADoB,QAAM,EAAI,SACpB,GAEd,KACI,GADoB,QAAM,EAAI,GAGlC,YACI,GADoB,QAAM,EAAI,GAGlC,cAAM,GAAU,KAAK,SAAU,KAAiB,UAChD,wDACH,QACD,IAAa,UAAU,SAA4B,eAS/C,IAAI,GACJ,UAAI,EAAI,KACR,gBAAU,CAAL,IACD,IAAI,GAAY,EAChB,GAAI,EAAM,EACV,GAAI,EAAK,EACT,MAAY,IAAP,IACD,GAAY,EACZ,gBAAI,GAAQ,KACf,UAHD,KAKI,IAAI,GAAK,KACT,gBAAM,GACF,IACI,GADC,IAIL,SAHQ,KAAK,KACT,yBAEE,GAAU,KAAK,SAAU,KAAiB,UAAqB,YACxE,cACJ,CACD,IAAI,GAAO,KAAK,OAAO,IACvB,KAOH,MANO,EADC,IAAa,KAAiB,gBAC3B,KAAK,KAGT,iBAEJ,SAEJ,IAAI,GAAI,KACR,kBACI,CADC,SACM,CAEX,KAAsB,GAAjB,IAAW,UACZ,IAAI,GACJ,UAAI,EAAI,KACR,sBACI,EADC,MACG,KAAK,EAGb,OAAO,CACV,CARD,CASK,GAAsB,GAAjB,IAAW,UACjB,QAAI,GAAO,EACX,EACA,IAAQ,EAAgB,MACpB,IAAsB,GAAjB,IAAW,UACZ,IAAI,GACJ,YAAI,KACA,YAAI,GAAO,EAAa,KAGxB,mBAAkC,CAArB,IAAK,QAAQ,KAE9B,uDAAmD,GAAhC,MAAQ,EAAU,MACjC,GADgE,MAAM,CAAC,EAAG,SACtE,GAAU,EAElB,OAAI,GAAO,KAAK,OAChB,aACI,EADC,IAAa,KAAgB,gBAC1B,KAAK,KAGT,iBAEJ,QAAU,EACb,CACD,IAAI,GAAO,EACd,CACD,MAAM,GAAU,KAAK,SAAU,KAAiB,UACnD,6BA3BI,MA4BA,GAAI,KAAK,YACV,IAAI,GACJ,UAAI,EAAI,KACR,mBACI,CADC,SACM,CAEX,KACI,CADC,IAAa,KAAK,SAAU,EAAE,SACzB,GAAU,KAAK,SAAU,KAAiB,UAAS,YAAe,EAAE,GAE9E,uBAEH,SAFO,KAAK,KAAK,OAAO,IAAO,KAAK,UAAU,IAAM,EACjD,MAGA,OAAO,CAEd,EACD,IAAa,UAAU,UAA0B,aAK7C,CACK,OADD,GACJ,8GAAS,EAAS,IAAI,IAAI,EAAI,EAAI,OAC1B,SAAK,EAGT,YAEI,CAFA,GAAmB,YAoBf,IADA,KAAW,kBAKvB,cAtB4B,GAAhB,KAAW,UACX,OAAQ,IAEJ,IAAI,IAAM,EACN,aAAO,CAEX,KAAsB,IAAlB,KAAW,UACX,QACA,MACH,KACJ,CACJ,EAEG,KAIJ,gBAKD,CACV,CAED,IAAa,UAAU,SAA4B,eAK/C,IAAI,GAAI,KACR,kBACI,CADC,SACM,CAEX,KACI,GADoB,QAAM,EAAI,SACvB,CAEX,KAAI,GAAO,EACX,EACA,OAA6C,CAAxC,gBAAc,QAAQ,EAAW,WAClC,MAAM,GAAU,KAAK,SAAU,KAAiB,UAAS,oCAAoC,EAAW,UACxG,aAAO,CACV,CACD,MAAQ,EAAgB,MACpB,CAD8B,GAAc,QAAQ,EAAW,eAC3D,GAAO,EAEf,KACI,IADC,OAAK,oBACA,GAAU,KAAK,SAAU,KAAiB,UAAM,2DAA0E,IAAQ,EAE5I,MAEH,SAFO,KAAK,KAAK,OAAO,SACrB,YAEJ,IAAa,UAAU,SAA4B,eAK/C,IAAI,GAAI,KACR,kBACI,CADC,SACM,CAEX,KAAI,GAAK,EACT,aACI,CADC,gBAAsB,iBAChB,CAEX,KACI,CADC,IAAsB,iBAChB,CAEX,SACA,OAAQ,EAAgB,MAGxB,CAHkC,GAAc,QAAQ,EAAW,gBAKtE,SAFO,KACJ,WAEJ,IAAa,UAAU,MAAyB,eAQ5C,IAAI,GAAI,KACR,kBACI,CADC,SACM,CAEX,KAAI,GAAI,EACR,aACI,CADC,iBAAuB,iBACjB,CAEX,KACI,CADC,GAAsB,kBAEvB,KAAI,EAAO,EACX,IAAQ,EACA,SAAI,EACR,UACI,CADC,GAAsB,gBACnB,GACJ,IAAI,EAAO,EAQnB,UAAI,GAER,MAAK,EAAgB,MAA2B,GAAjB,IAAW,UACtC,QACA,KAAI,EAAO,EACX,EAAI,EACJ,KAAQ,EACA,SAAI,EACR,UACI,CADC,GAAsB,gBACnB,GACJ,IAAI,EAAO,EAMnB,EAEH,SAFO,KAAS,MACb,SAGA,OAAI,IAAM,KAAK,aACX,CAD2B,GAAa,KAAe,eACnD,KAAS,MAAc,CAG/B,WAAO,CAEd,CACD,IAAa,UAAU,OAA0B,eAC7C,IAAI,GAAI,KACR,kBACI,CADC,IAID,YAAI,GAAI,KACR,kBACI,CADC,SACM,CAGP,KAEJ,KAAI,EACJ,KAAI,EAAK,EACT,aAAW,GAAN,KAAoB,IAAN,IACf,GAAI,EAAU,QAAM,EAAI,GACpB,KAKJ,WAAI,GAAO,EACX,KAAI,EAAY,KAChB,gBAAI,EAAI,EACR,GAAI,EAAI,EACR,GAGH,SAHO,KAAK,KAAK,OACd,cACA,0BAGA,OAAO,CAGlB,CACD,IAAa,UAAU,cAAiC,eACpD,IAAI,GAAI,KACR,eACI,CADC,IAID,YAAI,GAAI,KACR,kBACI,CADC,SACM,CAGP,KAEJ,KAAI,EAAK,EACT,aAAmC,CAA9B,iBAAuB,WAE/B,IAAgB,UACT,KAAI,GAAI,GAAgB,KAAK,EAC7B,aAAU,IAAL,IAEf,IAAI,GAAM,EACV,KAAI,EAAI,EACR,OACI,CADC,IAAI,QAAQ,OACT,KAAK,KAAK,OAAoB,iBAAW,KAAK,OAElD,WAAI,KAAK,KAAK,OAAoB,iBAAW,KAAK,OAGlD,QAVM,KAWV,IAAc,UACd,KAAI,GAAI,GAAc,KAAK,EAC3B,aACI,IADC,SACK,GAAU,KAAK,SAAU,KAAiB,UAEpD,+BAAO,EAAI,GACX,aAAI,GACJ,SACI,CADC,IAAI,QAAQ,OACT,KAAK,KAAK,OAAO,QAAyB,qBAAW,KAAK,OAE7D,SACD,CAD4B,WAAG,QAAQ,OACnC,KAAK,KAAK,OAAO,QAAyB,qBAAW,KAAK,OAG9D,WAAI,KAAK,KAAK,OAAO,QAAuB,mBAAW,KAAK,OAE5D,QACD,EACI,QACD,IAAsB,GAAjB,IAAW,UACZ,IACI,KADoB,QAAM,EAAI,MAC1B,GAGJ,cAAI,GAER,OAAI,GAAO,EACX,KAAI,EACJ,KAAI,EAAY,KAChB,gBAAI,EAAI,EACR,GAAI,EAAI,EACR,GAAI,EACJ,QAA2C,GAAnB,QAAM,EAAI,GAC9B,IAAS,UAET,KAAI,GAAI,GAAS,KAAK,EAAI,MAAS,EACnC,OACI,IADC,SACK,GAAU,KAAK,SAA0B,cAEnD,0DAAI,GAAU,GAAqB,YAEnC,EAAI,EAAqB,IAAQ,EACjC,KACH,GACD,IACI,IADoB,QAAM,EAAI,MAC1B,GACJ,UAAI,EAAI,KAAc,WAAQ,EAC9B,KAAI,EAAK,EAEb,GAEH,SAFO,KAAK,KAAK,OACd,iBAGA,OAAO,CAGlB,CACD,IAAa,UAAU,SAA4B,eAM/C,QACA,KAAI,EACJ,GAAI,EAAY,KAChB,QAAQ,EAAgB,MAChB,MAAO,EACX,KACI,kBAAW,OAEf,UAAsB,GAAjB,IAAW,UACZ,IAAI,GAAU,EACd,IAAI,EAAO,EACX,EACH,QACD,IAAY,UACZ,KAAI,GAAI,GAAY,KAAK,EACzB,aACI,QAAM,GAAU,KAA+B,eAAY,2CAA2D,IAAQ,EAAW,MAAQ,IAA4B,MAAM,EAEvL,QAAI,GAAU,EAAI,GAAY,UAC9B,EAAI,EAAU,EACd,SAAI,EAAK,EACT,aAAW,GAAN,IACD,IACA,KACH,QAHD,KAIK,IAAW,IAAN,IACN,IAAI,GAAO,EACX,EACH,QAHI,KAIA,IAAW,IAAN,IACN,IACI,GADC,SACK,GAAU,KAA+B,eAEnD,0CACA,SAAI,GACJ,IAAI,EAAO,EACX,OAAK,aAAe,KACpB,iBACH,aATI,KAUA,IAAW,IAAN,IACN,IAAI,GAAO,EACX,EAAI,EAAwB,MAAM,EAClC,MACI,QAAM,GAAU,KAA+B,eAEnD,sCAAI,GAAI,EACR,mBACI,CADC,OACG,GAAM,qBACV,UAAI,EACJ,IAAI,EAAO,EACd,MACI,IACD,GADM,OACF,GAAY,KAAa,UAAQ,EACrC,KAAI,EAAI,EACR,GAAI,EAAK,EACT,GAAI,EACP,QACI,IACD,GADM,OACF,GAAY,KAAa,UAAQ,EACrC,KAAI,EAAI,EACR,GAAI,EAAK,EACT,GAAI,EAGJ,cAAM,GAAU,KAAK,SAAU,KAAiB,UAEvD,aACJ,CACD,MAAM,GAAU,KAAK,SAAU,KAAiB,UACnD,8BACD,IAAa,UAAU,QAA2B,eAC9C,QACA,KAAI,EACJ,EAAI,EACJ,EAAgB,CAAR,IACJ,IAAI,GAA6B,MAAM,EACvC,GAAI,EAAK,EACT,cAAI,EAAO,EACX,KACI,EADC,SACK,GAAU,KAA+B,eAEnD,qCAAI,GAAI,EACR,yBACI,CADC,QACK,GAAU,KAA+B,eAEnD,oCAAI,GACJ,EADkB,KACd,EAAW,EAClB,CACD,IAAI,GACJ,WAAW,OACd,MACD,IAAa,UAAU,QAA2B,eAC9C,QACA,KAAI,EACJ,EAAI,EACJ,MAAgB,CAAR,IACJ,IAAI,GAA6B,MAAM,EACvC,GAAI,EAAK,EACT,cAAI,EAAO,EACX,KACI,EADC,SACK,GAAU,KAA+B,eAEnD,qCAAI,GAAI,EACR,yBACI,CADC,QACK,GAAU,KAA+B,eAEnD,oCAAI,GACJ,IAAI,EAAW,EAClB,CACD,IAAI,GAAM,EAAyB,KAAqB,IAAO,EAAG,IAClE,SAAW,OACd,MACD,IAWgB,UAAU,SAAW,UACjC,IAAI,GAAM,KACV,KAAI,EAAI,KACR,GAAI,EACJ,KACI,EADC,MACG,GACJ,MAAI,EAAQ,EAGZ,WAAI,GAER,MACI,EADuB,WACnB,GAGJ,cAAI,GAER,SAAO,yDAAiE,MAAc,CAAI,KAAK,MAAQ,EAAM,KAAK,KAAM,KAAW,OAA4B,SAAuB,MAAM,EAC/L,OACD,GAh/Ce,IAohDf,EAAiB,wLCzgDjB,CAgC0D,mBAGxD,CA6R6B,eAC3B,OAAI,GAAK,QAAU,EACjB,MAEK,EAAK,MAAM,OAAS,EAAM,MAClC,OAHU,EAAK,MAAQ,EAEtB,KAGF,IApSI,GAAyB,aAC3B,IAAI,GACJ,GACA,EACE,WAAI,EACF,uBAAgB,SAAI,OAGxB,MACD,QAED,EAAI,EAA0B,aAC5B,IAAI,GACJ,aACI,EAAI,EACR,OADA,MACK,EAAI,EAAO,IACd,OAAO,EAAiB,KAAG,IAE7B,QACD,QAWD,EAAI,EAA6C,mBAC/C,IAAI,GACJ,QAAe,WACb,IAAI,EAAK,MAMP,IACA,YACA,QAAO,CAAG,GACX,MACD,CACD,GACD,IAAI,CAAC,EACH,kBAAI,GACF,oBAAS,EAEX,iBAAI,EACF,oBAAQ,EAEV,iBAAI,EAAgB,aAAW,EAAO,KAAO,EAK/C,0BAAI,YACE,aAAE,aAGN,OAEF,iBAAM,IAAI,OAGX,wCAED,EAAI,EAAiD,mBACnD,IACA,MAAI,EAAK,SAAW,EAClB,OAEF,YAAI,CAAC,EACH,OAEF,qBAAI,GAAM,EAAU,EAAK,GAAI,EAC7B,WACE,CADE,KAAI,OAGR,YACA,MACI,EAAI,EACR,OADA,EAEA,EACA,EACA,EACA,EACA,EACA,MAAK,EAAI,EAAO,IAAG,IACjB,CAGE,WAHO,KACT,GACA,OACM,EACF,oBAAU,KAGd,MACE,WAAI,EACF,oBAAU,KAGd,YAAO,EAAc,EAAK,MAAM,GAAI,EAAM,MAC1C,UAAI,EACJ,OAAK,EAAI,EAAO,IAAG,IACjB,CAEE,WAFS,KACX,KACM,EACF,oBAAI,KAGR,QAAI,KAAM,GACX,MACF,CACD,CACD,QAQD,EAAI,EAAoB,eACtB,IAAI,GACJ,WAID,eAOD,EAAI,EAAqB,eACvB,IACA,MACA,EACE,WAAI,EACF,oBAAE,KAGN,MACE,WAAI,EACF,oBAAE,KAGN,MACD,QAED,EAAI,EAAqD,eACvD,aACA,qBACA,wBAIA,YACD,IAED,IAAuB,UAAU,aAAe,UAC9C,IACA,OAAK,EAAI,EAAG,EAAI,KAAK,SAAS,OAC5B,OAAI,CAAC,KAAc,YACjB,KAGJ,SAAI,MACJ,oCAAK,YAAY,KAAK,SAAS,OAAS,EAAG,KAC5C,cAED,IAAuB,UAAU,YAA2B,aAC1D,IACA,MACE,CADE,SACK,MAET,wBAAK,EAAI,EAAG,EAAI,KAAc,YAAG,QAAQ,OACvC,SAAK,YAAY,EAAI,EAAS,IAAU,KAAc,YAEzD,YAKD,KAAI,GAAsC,eACxC,aAAK,MACL,OACA,gBAEA,aACA,gBAGA,SACD,IAED,IAAgB,UAAU,YAAwB,WAEhD,MACA,iBACD,UAED,IAAgB,UAAU,WAAa,UACrC,MACA,UAAI,KACJ,uCAAI,cACF,aAEH,QAGD,KAAI,GAA2B,aAC7B,aAAK,MACL,OACA,aACA,gBACA,aAAS,SAAS,KAClB,MACD,IAED,IAAe,UAAU,YAAwB,WAC/C,MAAK,QACN,OAED,IAAe,UAAU,WAAa,UACpC,GAAI,MAAM,+CAAiD,KAAK,QAChE,QACE,CADE,QAAK,QAAQ,cACV,QACL,WAAI,MAEN,8CACA,aAAK,SACN,cAOD,KAAI,GAA6B,iBAC/B,IAAI,GAAO,EAAW,EACtB,QAAK,MACL,IAAK,MAKL,OAAQ,CAAC,EAAK,QAAS,EAAK,UAAW,EAAK,OAAQ,EACpD,OAAM,CAAC,EAAE,aAAc,EAAE,eAAgB,EAAE,YAAa,EACxD,UAAK,EAAI,EAAO,CAAJ,GAAO,IACjB,IAAI,GAEJ,QAAI,EAAE,KAAO,EAEZ,aAAM,IAAI,EAAW,OACpB,gBACD,YACC,MAAI,EAEJ,QAAI,EAAE,aAAa,EACjB,kBAAI,EAAE,aAAa,EAErB,iBAAgB,KAAG,EAEnB,cACE,GAGF,SAFE,aAEkB,IAAf,KAAK,OAAoB,EAAK,MAAM,OAAS,EAChD,YAEH,QACF,CAED,CAID,MAHG,KADE,KAAK,UACF,MAAQ,EAEf,cAMF,EAOI,EAaJ,EAAI,EAAsE,yBACxE,GAAI,MAAM,mCAAqC,EAAO,MAAQ,QAAU,EACxE,kBAAI,GAAK,EAAE,QAAU,EAAE,QAEvB,KAAI,EAAU,EACd,cAAuB,CAAnB,KAAQ,OACV,MAAI,MAAM,6BACV,MACE,CADE,KAAE,SAAS,SAEd,mBACC,GAAI,MAAM,aAAe,EACzB,aAAI,GACJ,WACA,KACA,MAAK,EAAI,EAAG,EAAI,EAAE,SAAS,OACzB,IAAG,KACH,SAAG,KAAG,cAAgB,EAExB,gBAAK,EAAI,EAAG,EAAI,EAAE,SAAS,OACzB,MAAG,KACH,MAAM,IAAG,EAAe,cAA4B,OAEvD,KACD,CAGD,SAFC,eAAI,MAAM,6CAA+C,EAAO,MAAQ,QAAU,EAClF,cAGF,IAEI,GAAI,EAIR,OALA,EACA,EAII,KACF,IAAI,GAAK,QACT,IAAI,EAAyC,eAC3C,IAAI,GAAS,EAAc,IAAI,MAAM,KACrC,KAA4B,0BAA+B,eAEvD,YAAQ,IAAI,4BAA8B,EAAc,IAE1D,kBAED,gBACF,EACD,MAAK,EAAI,EAAO,IAAG,IACjB,MACA,KAAI,WAAc,EAAkB,UAChC,EAAc,EAAK,SAAgB,QAGrC,aAFE,KAAG,SAAS,EAAQ,EAAc,EAAK,SAAS,MAKpD,cAHgB,EAAc,EAC5B,eAEE,WAAc,EAAiB,SAC/B,EAAc,EAAK,QAAe,QAEpC,aADE,KAAG,SAAS,EAAQ,EAAc,EAAK,QAAQ,MAIpD,cAHiB,EAAc,EAC5B,UAGL,CACD,CAED,gBAED,EAAI,EAA2C,eAC7C,IACA,MACA,EACA,EACE,WAAI,EACF,mBACE,SAAmB,KACnB,KAAI,GAAQ,CAAC,EACX,QAKR,OACD,QAGD,EAAI,EAAkE,yBACpE,IAAI,GAAU,EACd,WAAI,EAAI,EACR,OACA,EACA,EACA,EACA,EACA,EACA,EACA,MAAK,EAAI,EAAO,IACd,MAEA,KAGF,WACA,UAAO,EAEP,MAAI,GAAO,EACX,YAAK,SAAW,EAChB,WAAK,YAAc,EACnB,cAAK,WAAa,EAAQ,MAC1B,KAAI,MAAM,EAAQ,oBAAsB,EAAK,MAAM,OAAmB,UACpE,qBAEF,SACI,GAAK,EAAK,MACd,OAEI,EAEJ,EALA,EAEA,EACA,MAEK,EAAI,EAAO,IACd,UAAK,EACL,WAAO,EACL,CAAC,EAAK,QAAS,EAAK,UAAW,EAAK,OAAQ,EAAK,KACjD,CAAC,EAAG,QAAS,EAAG,UAAW,EAAG,OAAQ,EACxC,YAAI,KAAK,EAAQ,gBAAkB,EAAK,OAAS,KACjD,QAAK,EAGL,OAAK,EAAI,EAAO,IACd,OACA,OAAoB,KACpB,GAAI,CAAsB,IAAc,EAEtC,eAAI,MAAM,oBAAsB,EACjC,WACC,CACE,WAAI,EACF,oBAAU,KAGd,MACE,WAAI,EACF,oBAAU,KAId,QACA,QACA,IAAe,QAAW,EAC3B,WAGL,GACA,QACE,CADE,OACE,MAEN,mCAAI,MAAM,8BAAgC,EAAO,MAAQ,QAAU,EACnE,eACE,CADE,KAAO,UACL,MACJ,sBAEH,aAgBD,EAAI,EACJ,OAAI,MAAM,YAAc,KAAK,WAG7B,WAAI,GACJ,WAOD,SANC,wBAAW,UACT,CAAM,IAAG,EAAQ,IAAK,EAAQ,IAAI,aAEnC,SAHD,EAKA,EACA,CAhhBF,mBACM,EAAM,EACZ,IAAM,EAAU,EAAQ,GAExB,QAAM,EAAqB,UAC3B,gBAGM,EACe,eAAI,GACrB,aAAK,IAAM,MACX,aAEA,aACA,YACD,IAGH,EAggBA,EAAO,QAAgB,QACvB,EAAO,QAA8B,uCCtiBrC,0GACA,sPAAM,EAAO,EAAQ,GAEf,YACJ,CAAyC,mBAAO,GAC9C,aAAK,QAAU,EACf,kBAAK,UAAY,EACjB,kBAAK,OAAS,EACd,kBACD,sCAOO,aACN,OAAO,GAAM,QAAQ,OAAO,KAAK,UAAY,EAAM,UAAU,OAAO,KAAK,YACvE,EAAM,OAAO,OAAO,KAAK,SAAW,EAAM,MAAM,OAAO,KAC1D,iCACW,aACV,IAAM,GAAQ,MACZ,KAAK,QAAmB,cACxB,KAAK,UAAqB,cAC1B,KAAK,OAAkB,cACvB,KAAK,IACP,eAED,eAFS,IACR,wEAGA,IAAI,GAAQ,CACV,KAAK,QAAQ,cACb,KAAK,UAAU,cACf,KAAK,OAEP,qBAAI,MAAK,OACL,cADc,QAAK,MAAM,YACnB,KAAK,KAAK,MAEpB,eAAO,EAAM,KAAK,KACnB,qCAEC,OAAO,CAAC,KAAK,QAAQ,OAAQ,KAAK,UAAU,OAC1C,KAAK,OAAO,QAAQ,KAAK,KAC5B,yCAEC,OAAO,MACR,sCAnCC,OAAO,MACR,G,MACU,aACT,MACD,eAkCH,EAAiB,2BCjDjB,4kBACA,sPAAM,EAAa,EACnB,IAAM,EAAO,EACb,GAAM,EAAM,EAEZ,GAQM,0BACoB,qIAEtB,OAID,SAJM,SAAW,EAChB,WACA,UAAK,KACL,WAAK,IAAM,EAAS,OAAM,EAAK,cALjC,iCAOQ,aAIN,YAAQ,KAAK,WAAa,EAAM,UAAc,KAAK,QAAU,EAC9D,4CAEC,OAAO,MACR,qCACW,aACV,IACA,SAA+C,KAAxC,GAAC,EAAM,EAAS,KAAK,SAC7B,2CAEC,OAAI,MAAK,IAAI,MAAM,EAAG,KAAK,KAAK,UAAY,KAC1C,KAAO,IAAM,KAAK,IAAI,MAAM,KAAK,KAEnC,QAAO,IAAM,KACd,SA1BoB,KA6BvB,EAAS,SAAW,WACpB,EAAS,UAAU,WAAwB,WAC3C,EAAS,UAAU,MAAQ,EAE3B,EAAiB,2BC9CjB,UAAkB,gB,gCCAlB,aAQA,aAAsC,0BAAuC,CAAgB,WAN7F,gBAEA,QAEA,YAIA,gCACA,WAAiB,gBAAsB,OACvC,WAGA,QADA,+CAEA,iBAKA,MACA,Q,iBCtBA,qBACA,2CACA,uBACA,yBCHA,6BCAA,CACA,QACA,aAEA,oCACA,OACA,wBCNA,IAAc,yCCAd,YACA,MACA,0BAEA,yBACA,mCAAoE,iBACpE,2BCNA,CACA,YACA,qBACA,eACA,sBCJA,MACA,kBACA,qBACA,8DACA,oBCeA,CAEA,YACA,mBACA,oCACA,sBAuQA,aACA,OACA,qBAEA,aACA,OACA,mBAEA,aACA,2BACA,SAEA,aACA,YACA,OApRA,EAEA,UACA,iBAEA,2BACA,YAGA,qBACA,sBAGA,GACA,uCACA,gBACA,yBACA,2CACA,gBACA,MAEA,4BACA,eAEA,UACA,eAGA,YACA,4BACA,kDACA,uBACA,eACA,OACO,YAEP,4DACA,KAEA,QADA,WAKA,WAEA,WACA,KAEA,YACA,sBAEA,YACA,UACA,MACA,UACA,yBACA,IACA,UACA,sCACA,IAEA,MACA,+CACA,WAEG,iBACH,gDACA,OACA,YACA,SAAe,EAAS,IACxB,eAGA,QACA,UAEA,qCACA,IAEA,OACA,qBAEA,2CACA,eAIA,yBACA,uBACA,oBACA,YAEA,iBAEA,kBAGA,4BAGA,8BAGA,mBARA,kDASA,kBACA,iBAKA,yBAHA,sCAIA,2BACA,kBAGA,yJACA,QAEA,0CAKA,UACA,MAEA,uCAEA,8BACA,aAMA,MAGA,wBACA,kBAEA,WAEA,KAbA,qBAEA,kCAEA,eAUA,gBAEA,QACA,IAEA,EACA,wCACA,WAEA,MACA,qBAEA,uDACA,iBAEA,gBACA,eACA,UAEA,EACA,wBACA,yBACA,wBACA,0BAEG,mCACH,KAAoB,IACpB,UACA,2CACA,CACA,IACA,KAGA,IACA,UAEA,MACA,uBACA,cAEA,uBAGA,gBACA,0BACA,qBAEA,OACA,OAEA,0CACA,OAEA,WACA,cAGA,uBACA,qBACA,2BACA,gBACA,wBACA,WAIA,6BACA,eACA,QACA,2BAEA,qDACA,uBACA,WACA,IAEA,WAEA,WACA,UACG,wBAEH,aACA,yCAEA,uBAEA,WACA,MAEA,iCACA,IACA,GAOA,4BALA,kBACA,kBAEA,4BACA,cAGA,qCACA,iBACA,YAEA,cACA,WACA,GACA,cACA,MACA,OACA,IAEA,6BACA,UACA,4DC3RA,CAQA,mBACA,IACA,yCAEA,0DACA,SACA,EACA,cACA,OACA,YACA,gBACA,iCACA,QACA,OACA,OACA,iCACA,QACA,SACA,OACA,iCACA,QACA,WACA,GACA,sBACA,KACA,MACA,eAEA,2CACA,SACA,OAEA,OAlCA,UALA,SACA,6DACA,kCAAoB,CAEpB,4CCPA,CAKA,eACA,QACA,aAEA,IACA,CAQA,iBACA,OACA,SAEA,CArBA,QACA,OAEA,yCAOA,kBAGA,WACA,SACA,UAOA,OAEA,sBACA,IACA,uCAEA,uCACA,WAEA,uBACA,IACA,uCAEA,mCACA,KAUA,MATA,mBAQA,GAPA,qBAEA,YAGA,WAKA,yBACA,IACA,uCAEA,mCACA,OAEA,6BACA,IACA,uCAEA,sCACA,gCC7DA,aAoHA,aAAsC,0BAAuC,CAAgB,UAE7F,CAaE,aACF,OACA,sBACA,4BACA,WAEA,yBACA,4BACA,aAEA,0BACA,4BACA,cAEA,EAEA,CAjJA,qCACA,CACC,WACD,gGAEA,QAEA,MAEA,SAEA,OAEA,SAEA,MAEA,SAEA,MAKA,2BACA,iDACA,OACA,qCACA,MACA,mBACA,UACA,gBACA,SACA,UACA,SACA,IAEA,eACA,OAEA,qBACA,aACA,GAEA,UACA,UACA,kBAEA,gBACA,iDACA,IAEA,SACA,oBAEA,gBACA,QACA,eAGA,QAAK,IACL,aAEA,wBACA,qBACA,UACA,CAOA,gCACA,mDACA,OACA,qCACA,MACA,mBACA,UACA,iBACA,EAEA,SACA,cACA,OACA,YACA,mBAEA,iBACA,mBAEA,gBACA,OACA,eAGA,QAAK,IACL,KAEA,0BACA,qBACA,UACA,CAIA,IAGA,iBAEA,2BAKA,mDACA,IACA,mBACA,6BAEA,aAAG,SACH,kBACA,iBAEA,OACA,gBACA,wIACA,iCAiBA,IACA,YACA,sBACA,gCACA,KACA,IACA,yBACA,CACA,MACA,0BACA,OACA,KAEA,EAEA,wCACA,YACA,mBACA,mBACA,cA+BA,qBACA,UAEA,iDAjCA,IACA,sCACA,MACA,mBACA,UACA,iBACA,IAAgC,+BAEhC,UACA,UAEA,wBACA,QACA,EACA,KAEA,iBAEA,8FACA,mBAEA,gBACA,OACA,eAGA,QACA,WAEA,IAKA,QAEA,2BACA,UAAsB,+BACtB,OAEA,0BACA,UAAsB,kCACtB,KAEA,E,mBCpNA,aAEA,qCACA,CAGA,WAEA,+BACA,wBACA,IAEA,qCACA,+CACA,QAEA,8BACA,iBACA,MAEA,4BACA,mBACA,MAEA,+BACA,OACA,yCAEA,2BACA,U,4CC7BA,CAGA,eACA,MACA,YACA,MACA,gBACA,eACA,gBACA,MAEA,aAIA,aAHA,iBAEA,YAGA,iBACA,aACA,WACA,MACA,uBAEA,GACA,SAEA,aACA,sBACA,oBACA,kBAGA,OACA,MAEA,aACA,mBACA,kBACA,YAAiB,MAAkB,OACnC,gCACA,iDAGA,OAGA,UAJA,oBAKA,KAEA,aACA,aACA,IACA,sBACA,IACA,aAGA,YACA,GACA,oBAEA,IACA,gBACA,iBAEA,KACA,cAGA,qBACA,qBAEA,iCACA,YACA,CACA,SAEA,aACA,OACA,YACA,WACA,OACK,IACL,QACA,QACA,eACA,cACA,OACA,eACA,OAEA,KAGA,KACA,SAEA,sBACA,OACA,QACA,aAGA,WACA,gCAEA,oBACA,aACA,iBACA,+BACA,gBACO,IAEP,oBAGA,aACA,SACA,WAEA,QAAiB,IAAQ,KACzB,EACA,CACA,SA3HA,KAAO,CAAa,qBA6HpB,UACA,CACA,gBAGA,kCACA,YACA,QAGA,EACA,4DCzIA,E,2BCAA,aAIA,eAAiD,MAA0C,oCAA4D,oCAQvJ,CAVA,gBAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,QAWjjB,QAEA,SACA,SAQA,8BACA,aACA,GACA,OAEA,CAwFA,iBAvFA,KAeA,8BAEA,mBAGA,6BACA,sBAYA,YACA,SAgBG,GACH,KACA,kCACA,mBAEA,+BACA,sBAOA,YACA,aAcG,GACH,KACA,+BACA,iCACA,cACA,YAGA,MAKA,IAGA,E,wBCtHA,CACA,OAWA,iBACA,IAEA,+CACA,qDACA,MAEA,UACA,IAWA,iBACA,IAEA,MASA,uCARA,eACA,4BACA,2BAEA,IACA,MAEA,IAMA,EACA,6BChCA,aACA,2BACA,YACA,mBACA,aAGA,eAA0B,IAAQ,KAAI,QAAgB,IAAG,YACzD,QACA,UAGA,QAFA,0BACA,QAEA,EAEA,6BClCA,aAIA,eAAiD,MAA0C,oCAA4D,oCAEvJ,CAJA,gBAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,MAKjjB,IACA,IAUA,cAKA,gBACA,GAEA,aACA,iBACA,8EACA,kBAOA,CAyPA,YAxPA,KACA,4BACA,2CACA,KAMG,GACH,KACA,8BACA,2CACA,IAMG,GACH,KAUA,qCACA,IACA,mCAGA,oCACA,OAGA,YACA,kCAGA,8BAIA,6CACA,SASG,GACH,KACA,iCACA,6CACA,IAMG,GACH,KACA,gDACA,IACA,mCAGA,oCACA,kCAGA,wGACA,IASG,GACH,KACA,4CACA,OAEA,kCACA,6BACA,UAAO,QAEP,WACA,MAUG,GACH,KACA,yBACA,QACA,YAEA,SAAqB,MAAmB,WACxC,yBACA,SACA,SAEA,uBAEA,iCAEA,KACA,KAEA,CACA,QAYG,GACH,KACA,2BACA,gBACA,OAGA,MAAqB,QAAmB,OACxC,SAGA,kBACA,EACA,UACW,cACX,sBACW,KACX,aAIS,iBACT,iBACA,MACA,uBAEA,kCACA,cACA,kBAEA,MACA,OAEA,OACA,wBAKA,gCAGA,IAWG,GACH,KACA,+BACA,gBACA,OAEA,MAAqB,QAAmB,OACxC,MAEA,kBACA,EACS,OACT,OAKA,YAHA,iBAWG,GACH,KACA,4BACA,gBACA,OAEA,MAAqB,QAAmB,WACxC,MAEA,iBACA,cACS,gBACT,WAES,uBADT,gBAEA,SAGA,QACA,IAGA,CACG,KACH,KACA,2BACA,OACA,SAGA,MAKA,IAGA,E,qDC9RA;;;;;GACA,eACA,IACA,YAGA,eACA,WAEA,aAAuC,OAAS,IAChD,mBACA,GACA,OACA,KACA,KAGA,OACA,MAEA,EACA,IAEA,EACA,EACA,aACA,kBACA,8CAEA,0BACA,UA0BA,CAQA,aACA,kCACA,QACA,aACA,QAGA,QAGA,oCACA,kDAKA,+BAGA,yCAIA,cAKA,CASA,aACA,MAGA,eACA,cAEA,aACA,eACA,qBACA,IAwCA,eACA,OACA,wCAIA,OACA,aACA,UACA,uBAEA,iBACA,gBACA,uBACA,IACA,aACA,2BACA,eACA,oBACA,IAWA,CAEA,qBACA,4BACA,CACA,UACA,SACA,WACA,WAEA,sBAEA,CAUA,eACA,oBACA,IAmCA,mBAEA,IACA,MACG,kBACH,WAIG,8BACH,iCAKG,8BACH,gCACA,qBACA,wBACA,2BACA,4BAIG,yBACH,gCACA,kCAQG,cACH,aACA,oBACA,2BACA,qBASG,wBARH,4CASA,KAEA,eAAsB,UAEtB,4BACA,kBACA,sBAKA,sBACA,mBAEA,QAEA,YAEA,aACA,OACA,wDAEA,mBACA,oCACA,WAEA,gCACA,qBACA,+CACA,kBACA,eACA,OACA,eACA,MACA,SACA,gBACA,YACA,QAEA,eACA,OACA,OAGA,kBACA,OAEA,eACA,SAEA,kBAAyB,EAAQ,KACjC,cACA,KAIA,wBAAyB,EAAQ,KACjC,SACA,aACA,UAEA,SACA,QAGA,CASA,iBACA,CACA,mBAEA,uBAIA,CAiBA,eACA,QACA,GAGA,YACA,8DAGA,WACA,IACA,eAEA,QAAG,SAEH,CAEA,cAIA,yBACA,WAEA,aACA,IACA,MACA,CACA,GAAG,SACH,CACA,GACA,CACA,SAEA,mBACA,IAEA,MACA,yCAGA,uCACA,qBACA,MAGA,QAEA,mCACA,cAEA,QACA,UAGA,sCACA,2BACA,oBAEA,OAEA,MAEA,kBAGA,4BACA,kBACA,MAEA,OAGA,CAlZA,QACA,uBACA,iCACA,kBACA,OACA,qBAD0B,MACzB,QAoCD,YACA,8BAYA,8BACA,WACA,+BACA,uBACA,yBACA,WACA,wBACA,aAEA,qCACA,WAEA,6BACA,+BACA,0CACG,YAEH,UACA,kBACA,SAGA,QACA,iBACA,gBAGA,wBACA,mBACA,EAEA,MACA,OACA,CACA,CAEA,CA3JA,CA4JA,mCA6CA,EAOgD,OAKhD,EAIA,KAEA,yBACA,sBACA,MAGA,EAEA,4BACA,CACA,qBAEA,SAGA,EAEA,6BACA,CACA,iCAEA,YAEA,mCACA,CACA,uCAEA,kBAqHA,gCACA,CACA,oCAEA,eAEA,uBAWA,+BACA,CACA,uBAEA,YAGA,EAEA,kCACA,CACA,uBAEA,iBA6EA,wBACA,CACA,WAEA,EACA,8BACA,CACA,aAEA,qBAAgC,MAAoB,SAEpD,8BACA,IACA,aACA,uBAEA,QACA,snBC9cA,sPAAM,EAAM,EACZ,IAAM,EAAW,EACjB,IAAM,EAAY,EAClB,GAAM,EAAY,EAClB,IAAM,EAAW,EACjB,KAAM,EAAe,EAAQ,IAC7B,aAAM,EAAY,EAClB,IAAM,EAAM,EACZ,GAAM,EAAO,EACb,IAAM,EAAY,EAGlB,IAAM,EAAQ,EAAQ,KAEtB,MAUA,8HAgBA,kJAAM,EACJ,MAAM,EACN,yCAAM,EACN,0CAAO,EACP,yCAAK,EACL,oDAAM,EACN,4CAAI,EACJ,wCAAK,EAAU,8BAGX,EACmB,eAAK,GAC1B,aACA,gBACD,K,EAGG,wJAWmC,mBACrC,IAAI,GAAK,EACL,MAAC,KACH,WAAK,IAAM,EAEb,gBAAI,GAAO,KAAK,IAChB,mBAEE,aAFE,KAAK,eAEA,GAAkB,YAAS,uBAChC,EAAQ,SAAS,IAErB,kBAAI,GACJ,YACE,GAAO,MAAM,KAAK,IAAK,EAAQ,SAAS,IAAK,EAC9C,WAFD,CAES,QACP,OAAO,GAAkB,YAA4C,mCAEtE,cACG,OAAC,GACH,UAAG,IAAI,EAAQ,SAAU,EAAG,IAAI,QAAS,EAAG,KAAK,eAAgB,EAGnE,SAAO,EAAkB,YAAS,KACnC,gDAhCC,OACD,wCAEgB,aACf,GAAQ,WAGT,oCATyB,KAoC5B,EAAmC,mCAE7B,yJASmC,mBACrC,IAAI,GACA,EAAC,KACH,WAAK,IAAM,EAEb,gBAAI,GAAK,EAGT,MAAI,EAAQ,KAAK,IAAI,qBACrB,SACE,CADE,GAAM,UACL,IAAI,EAAQ,SAAU,EAAG,GAAG,SAAU,EAAG,QAAQ,EAAM,GAAG,aAC3D,EAKJ,UACK,OADD,GAAQ,KAAK,IAAI,qBACrB,QAAS,EAAI,EAAM,OAAS,EAAQ,CAAL,IAC7B,MAAiB,KAAG,aACpB,OAEE,WAAiB,KAAG,aACpB,OAGA,WAAQ,SAAS,EAAkB,WAC3B,KAAG,aAAa,QAAS,EAKrC,YACK,OADD,GAAU,KAAK,IAAI,qBACvB,UAAS,EAAI,IAAG,EAAI,EAAQ,OACtB,MAAsB,KAAG,aAC7B,QACE,SAAiB,KAAgB,cAAI,EAAQ,SAC7C,SAAiB,KAAgB,cAAI,EAAQ,SAI7C,WAAC,EACH,UAAG,IAAI,EAAQ,SAAU,EAAG,IAAI,QAAS,EAAG,KAAK,WAAY,EAG/D,SAAI,CAAC,EACH,aACE,GAAa,KAAU,MAAI,EAAQ,SACpC,IAFD,CAES,QACP,IAAI,GAAM,yBAA2B,EAAQ,SAC3C,gBAAM,MAAQ,EAChB,YAAO,GAA2B,cACnC,cAGH,OAAO,GAAkB,YAAS,KACnC,gDA9DC,OACD,uCAEgB,aACf,GAAQ,WACT,iCAPwB,KAkE3B,EAAkC,gCAE5B,yJAUmC,mBACrC,CAIK,OAJD,GAAM,EAIV,YAAS,EAAI,EAAG,EAAI,EAAI,WAAW,OAEjC,OAAmC,CAA/B,KAAe,cAAG,SAEpB,IAAI,GAAK,EAAe,cAGxB,gBAAI,GAAM,IAAU,MAClB,GAAQ,UAAU,EAAQ,IAG1B,oEAAI,GAAiB,MAAc,KACnC,kBAAO,GACR,cAED,CACD,KAKH,IAAI,EAEF,SAAyB,MAArB,KAAI,QAAQ,MACZ,EAAI,QAAQ,SAAS,MAAM,2BAC3B,EAAI,QAAQ,SAAS,MAAM,kCAC7B,GAAQ,UAAU,EAAQ,IAG1B,uDAAI,GAAmB,MAAa,KACpC,kBAAO,GACR,cAIH,IAAI,GAAO,EAAI,qBAAqB,QACpC,GAAI,KACF,IAAI,GAAQ,EAAK,aACjB,YAAI,GAAS,EAAM,MAAM,qCACvB,GAAQ,UAAU,EAGlB,0EAAI,GAAmB,MAAa,KACpC,kBAAO,GACR,cACF,CAOD,OAAO,GAAkB,YACvB,iEACA,EAAa,MAAM,EAAG,IACzB,2CApEC,OACD,qCAEgB,aACf,GAAQ,WACR,sBAAQ,WACT,gCARsB,KAwEzB,EAAgC,yCAE1B,yJAWmC,mBACrC,IAAI,GAAK,EAKT,SAAI,EAAa,MAAM,oCACrB,GAAQ,UAAU,EAGlB,iGAAI,GAAmB,MAAa,KACpC,gBAAO,GACR,cAID,IAAI,EAAa,MAAM,yFACrB,GAAQ,UAAU,EAAQ,IAG1B,sDAAI,GAAmB,MAAa,KACpC,gBAAO,GACR,cAGD,IAAI,EAAa,MAAM,gFACrB,GAAQ,UAAU,EAAQ,IAG1B,uEAAI,GAAmB,MAAa,KACpC,gBAAO,GACR,cAID,IAAI,GAAwD,+BAE1D,oBAAG,IAAI,EAAQ,SAAU,EAAG,GAAG,SAAU,EAAG,QAAQ,EAAW,IAC7D,EAEJ,YAAG,IAAI,EAAQ,SAAU,EAAG,IAAI,QAAS,EAAG,KAAK,WAAY,EAC7D,WAAQ,UAAU,EAAQ,IAE1B,+CAAO,EAAkB,YAAS,KACnC,gDArDC,OACD,sCAEgB,aACf,GAAQ,WAGT,0BATuB,KAyD1B,EAAiC,wBAE3B,yJAWmC,mBAIrC,IAAI,EAAa,MAAM,oCACrB,GAAQ,UAAU,EAAQ,IAAK,YAAc,EAI7C,oGAAI,GAAiB,MAAW,KAChC,gBAAO,GACR,cAGD,IAAI,EAAa,MAAM,EAAG,KAAK,MAAM,UACnC,GAAQ,UAAU,EAGlB,iGAAI,GAAiB,MAAW,KAChC,gBAAO,GACR,cAGD,UAAQ,UAAU,EAAQ,IAE1B,gDAAO,EAAkB,YAAS,KACnC,gDAnCC,OACD,sCAEgB,aACf,GAAQ,WAGT,2BATuB,KAuC1B,EAAiC,yBAE3B,yJAmBmC,mBAErC,IAAI,GAAK,EAIT,MAAI,EAAiB,MAAI,EAAQ,SAAS,IAAK,EAAQ,SAAS,IAC9D,KAAM,KAAM,GAEd,SACE,GACD,UAFD,CAES,QACP,IAAI,GAAM,yBAA2B,EAAQ,SACtB,qBAAM,MAAQ,EAErC,YAAO,GAA2B,cACnC,gBAED,UAAQ,UAAU,EAAQ,IAAK,cAAgB,EAAE,eAAiB,eAAiB,EAAE,MACrF,aAAQ,MAAM,IAAI,EAAQ,SAAU,EAAG,IAAI,QAAS,EAAG,KAAK,eAAgB,EAG5E,SAAO,EAAkB,YAAS,KACnC,gDAxCC,OACD,oCAEgB,aACf,GAAQ,WAGR,qBAKA,EAAQ,WAGT,0BAjBqB,KA4CxB,EAA+B,uDAE/B,GAAM,GACJ,CADe,gBACA,eAAc,aAAY,cAAa,cAAa,aAG/D,YACJ,CAAa,aAAqB,6EAChC,aACA,aAAK,QAAU,EAEf,kBAAK,OAAS,EAEd,SAAI,CAAC,KACH,YAAM,IAAI,OAGZ,gDAAK,QAAU,KAAK,MACpB,aAAK,MAAM,QACX,UAaA,kBACA,iBACA,qBACA,mBAEA,uBACA,oBACA,iBACA,iBAOA,6CACA,EAAK,YAEL,2DAAY,QAAU,IAAI,kBAAO,GAAK,WAAoB,KAC3D,oBA6HD,aAsCM,aAAmB,kEACvB,SAAI,YACF,aAAO,SAAQ,IACb,EAAI,IAAI,WAAO,OAAO,GAAU,OAAG,OAA6B,aAIpE,OAAI,GAAS,EACb,gBAAS,EAAO,MAAM,KAEtB,KAAU,KAEV,sBAAO,KAAyB,sBAAQ,EACzC,UAED,oCAMuC,iBAAS,OAC9C,KAGA,QAAI,CAAC,EAAQ,OAAS,KACpB,gBAAiB,KAEjB,iBAAiB,QACd,KAAK,CACJ,KAA4B,uBAC5B,KAEJ,qBAGA,qBAAsC,wBAAS,KAGjD,UAAO,EAAe,KAAK,WACzB,CAKD,MALK,KAAO,GACT,aAAc,YAAK,QACnB,oBAAO,GAET,cAEH,sCAE0C,iBAAS,OAClD,UAAc,YAAe,CAAC,KAA8B,iBAAI,OAAO,WAAW,UAC5E,CAAC,EACH,oBAAO,GAEV,aACF,KAED,iCAMuB,eACrB,IAAI,GAAK,KAET,MAAI,EAAQ,CAAC,EAAQ,QAEnB,KAF6B,KAAQ,OAAO,oBAK9C,YAAQ,SAAW,EACnB,SAAQ,QAAU,EAClB,aAAQ,SAAW,EAAG,IAAI,EAC1B,WAAQ,IAAM,EACd,UAAQ,QAAU,EAElB,YAAI,EACF,gBAAQ,QAAQ,gBAAkB,EAGpC,aAAI,EACF,UAAQ,MAGV,eAAI,GAAe,KACnB,iBAEA,oBAAI,GAAe,EACnB,qBAEA,eAAI,EACF,yBAAQ,YAGV,cAAI,GAAiB,EACrB,oBAMD,MALG,WAEF,gBAEA,kBAGF,yBAQkB,eAAS,OACzB,QACE,SAAO,SAAQ,OAAO,GAAI,OAG5B,iCAAI,EACF,6BAAO,MAAe,YAAS,gCAGjC,2BAAI,GAAQ,KAEZ,eAAI,CAAC,EAAQ,MACX,IACE,SADE,WACK,SAAQ,QACb,KAAe,YAAS,CAAC,OAAQ,IAAS,MAAM,WAGpD,uCAAc,QAAV,KACF,IAAI,GAAU,sBAAwB,KACtC,aAAI,EACF,CACA,aAAQ,KACR,aACA,aACA,eACA,WACA,WACA,KACA,iBACA,UAEF,SAAO,MAAwB,cAC7B,KACH,eACF,CAEC,YAAO,MAGT,oBAAK,cAAc,UAEnB,UAEI,gBAAC,EACH,aACD,4BAEK,GAAmB,EAEzB,qBAAO,MAA4B,YAChC,KAAK,kBAAY,GAAsC,qBADnD,EAEC,WACE,IAAI,GACF,CACA,aACA,eAAY,CAAC,EAAM,MAAQ,mBAAqB,MAC7C,EAAM,OAAS,EAAM,MAAQ,EAChC,mBAAc,EACd,QACA,WACA,WACA,KACA,iBACA,UAEF,kBAAQ,IAAmB,eAC3B,8BAAO,EAAe,YAA4B,mBAMnD,MAEV,EAED,iCA2B2B,iBAA4B,2DACrD,QAAM,EAEN,OAEE,UAFS,WAGJ,IAEA,WAFW,aAIhB,iBAGA,gBAGF,UAAe,UACZ,KAAK,WACJ,CACE,KACE,MAYA,IAAI,GACJ,oDACA,OACD,OAEJ,SAjBS,EACF,GAAa,KACd,YACC,SAAQ,IACR,4DAAI,GAAO,sBAAwB,EAAc,OAAS,KAAO,EAAc,WAC/E,IAAI,EACF,kBAAQ,IAAM,EAEhB,sBAAQ,IAAI,EACZ,gBACD,SACF,CAfP,EAqBe,WACX,IAAI,GAAU,EAAI,SAAW,EAC7B,aAAgC,sBAChC,eACA,OAAI,EAAI,UAAY,EAAI,SACtB,YAAW,YAAc,EAAI,SAE/B,QAAoB,OAAS,EAC9B,SACJ,EAED,0BAOgB,eAEd,IAAI,GAAM,GACV,QAAgB,IAAM,EAAI,WAAa,IAAM,EAAI,aAAe,IAC9D,EAAI,aAAe,IAAM,EAAI,kBAE/B,UAAI,GAAK,KAET,MAAI,EAAa,EAAO,MAAK,EAAG,KAChC,WAAI,GAAc,EAChB,SAAW,OAAO,EAElB,cAAI,KAAqC,gCAE5C,MAED,0BAe8C,mBAC5C,MAAK,UAAU,EAEX,OAAC,EACH,aAAK,MAAM,IAAI,EAAQ,SAAU,EAAG,KAGtC,eAAI,GAAO,CAAC,EAAQ,QAAU,OAC9B,cAAI,EAAiB,KAAT,MAGN,MAHwB,SAGvB,EAAQ,SAAS,SAAS,EAC7B,kBAGQ,IAAsB,kBAAO,gBAAkB,EAAQ,SAEjE,gBALU,IAA+B,2BAAO,cAAgB,EAAQ,SACpE,QAAU,EAAQ,SAEpB,eAEG,UAAU,EAAI,QAAQ,EAAQ,SACnC,aAAK,cAAc,OAAQ,CAAC,EAAQ,SAGtC,YAAI,GAAM,GAAI,OAGd,wBACA,WACA,eAEA,WAAO,QACR,SAGD,yBACsC,qBACpC,CACA,SAAI,GAAK,KACT,MAEI,EAAM,EAAG,IAAI,EAAS,OAAK,EAE/B,MAFA,KAEY,WAAR,MAA+B,SAAR,MAA6B,MAAR,MACpC,aAAR,KACF,IAAI,EAAI,MAAQ,EAAmB,IACnC,SAAY,EAAG,KAChB,UAAM,QACL,MADS,KACG,EAAG,IAKf,mDAAY,EAAG,IACb,EAAI,KAAwB,sBAK9B,wDAEA,eAEH,6CAEyC,iBACxC,CASA,KAKK,OALC,GACN,iGAAM,EAEN,6EAAM,EAAU,EAEhB,SAAS,EAAI,EAAG,EAAI,EAAQ,OAC1B,IAIK,OAJD,GAAgB,KAAG,MACvB,KAAI,EAAO,EAAM,GAAG,UACpB,GAAI,EAAK,EACT,GAAI,EAAI,EACR,SAAS,EAAI,EAAG,EAAI,EAAE,OAAQ,IAC5B,IAAI,GACJ,KAAI,EAAa,EAAE,MAEnB,KAAI,EAAM,EAAW,GAAG,QAAQ,QAChC,SACD,iBAEJ,2BAEmB,eAClB,CAQD,YARM,UAAU,EAAQ,IACvB,cAAK,UAAU,EAAQ,SAAS,KAEhC,YAAK,cAAc,OAAQ,CAAC,EAAQ,SAEpC,QAAS,IAAM,EAEf,KAGF,2BAKiB,eACf,CAAI,KAAK,SAAS,EAEhB,KAAI,CAAC,KAAK,SAAS,EACjB,WAEG,iBAAI,KAAK,SAAS,EACvB,MAAI,CAAC,KAAK,SAAS,EACjB,WAGL,gBAED,wBAQS,aAAmB,2DAC1B,QAAM,EACN,UAAI,GAAoB,SACxB,eAAQ,YAAc,EAAQ,aAC9B,gBAAQ,KAAiB,IAAK,KAAK,MAAO,EAAI,IAAK,EACnD,aAAO,KAAK,aACb,kCAEqB,iBAAa,OACjC,WAAO,MAAK,aAAoB,SAC7B,KAAM,WACL,OAAO,GAAK,aAEV,QAAO,CAAE,KAAM,EAAO,aACzB,eACJ,EAED,uBAMa,eAAS,OACpB,WAAO,MAAK,aAA4B,cACrC,KAAK,WACJ,CAKD,SALgB,aACf,MACA,oBAAK,OAAO,EAAK,MAEjB,SAEL,EAED,gCAOwC,iBACtC,IAAI,GAEF,gBACA,mBAAQ,EAAG,IAAI,kBAIf,oBAGF,aAAI,GAAU,CAGZ,wBAGF,QAAO,KAAK,aACb,WAED,6BAasB,eAAmB,2DACvC,QACA,WAAQ,KAAO,EAAQ,MAAQ,EAC/B,OACA,YAAM,GAEN,QAAI,EAAQ,MAAQ,CAAC,EACnB,iBAAM,IAAI,OAEZ,qEAAI,GACF,gBAAQ,QAAU,EAClB,cAAQ,QAAQ,gBAAkB,EAEpC,aAAI,EACF,yBAAQ,YAGV,WAAO,GAAI,SAA2B,aACpC,GAAoB,YAAS,KAAK,WAChC,IAAI,EACF,GAAI,EACF,OAAS,OAAO,KAAK,WACnB,GACA,eACD,IAED,GAEH,SACC,IAAI,GAAM,cAAgB,EAC1B,OAAI,EAAS,aAAY,GAAO,KAAO,EAAS,WAChD,QAAgB,SAAmB,UACnC,IAAI,EAAS,eAAc,GAAO,KAAO,EACzC,iBAAI,GAAK,GACT,YACA,WACD,IACF,CAnBD,EAmBG,WACD,IAAI,GAA2B,qBAAmB,UAClD,SAAO,GACR,UACF,EACF,EAED,4BAWmB,eAAO,OACxB,KAAI,EAAO,KAAK,MAChB,iBAAO,EAAK,IAAI,kBAAK,GAAY,UAEjC,KAAK,QAAQ,WACX,GACD,cAED,GAAO,KAAU,OAAM,CACxB,iBAED,0BAUgB,eACd,CAGK,OAHC,GAAK,KACX,MAAM,EAAW,EAAQ,YAAW,EAAG,KAAK,gBAAiB,EAE7D,KAAS,EAAI,IAAG,EAAI,EAAS,OACvB,SACJ,KAAgB,WACd,IAAI,GAAW,EAAO,MAAS,EAAG,KAElC,gBAAiB,WACf,IAAI,GAAU,EAAQ,OAAU,EAAG,MAAM,EAEzC,sBAAI,GACF,OAAO,EAAQ,IAAI,WAAO,OAAO,GAAS,KAI7C,KACF,CAGJ,CAED,oCAK6B,eAC3B,IAAI,GAAM,EACV,IAAI,EAAK,KACT,MAAI,EAAQ,EAEZ,mBAAK,UAAU,EAAQ,IAAK,WAAa,EAEzC,gBAAI,GAAS,EACX,OAAO,MAAQ,EAAG,KAAK,eAAgB,EAAM,IAAK,KAGpD,SAAI,EAAQ,UAAY,EAAQ,SAC9B,WAAO,MAAK,EAAG,KAAK,cAAe,EAAG,QAAQ,EAAQ,SAAS,KAC7D,KAGJ,YAAM,GAAM,GACZ,MAAM,EAAU,IAAM,EAAI,WAAa,IAAM,EAAI,aAAe,IAC9D,EAAI,aAEN,OAAO,MAAK,EAAG,KAAK,SAClB,EAAG,QAAQ,EAA4B,mBAAS,KAClD,WAAO,MAAK,EAAG,KAAK,gBAAiB,EAAW,WAAS,KACzD,WAAO,MAAK,EAAG,KAAK,UAAW,EAAG,aAAc,KACjD,6CAE+B,eAC9B,IAAM,GAAK,KAEX,MAAI,EAAe,EAEnB,iBAAG,IAAI,EAAQ,IAAK,EAAG,KACvB,mBAAO,MAAc,EAAG,KAAK,UAC3B,EAAG,QAAQ,EACb,aAAO,MAAc,EAAG,KAAK,cAC3B,EAAG,QAAQ,EAEb,eAAI,CAAC,EAAQ,SAAS,IAAI,WAK1B,cAAS,QAAQ,QAAgB,aAC/B,GAAO,MAAc,EAErB,cACE,cADE,QACC,IAAI,EAAQ,SAAU,EAAG,IAAI,QAAS,EAE5C,oBAGF,mCAEc,aACb,IAAI,GAAO,KAAK,MAChB,WACE,WADS,eACJ,GAAI,GAAI,EAAG,EAAI,EAAK,OACvB,SAAK,QAAQ,KAAK,MAAM,IAAI,EAAI,QAIrC,+BAEc,eACb,MAAK,cAAc,UAEnB,gBAAsB,mBAAM,CAAS,SAEtC,gDAEQ,aACP,MAAK,MACL,mCAAI,EACF,WAAO,MAAK,UAAU,EAAI,QAAQ,EAEpC,WAAK,cAAc,UACpB,mCAES,aACR,OACE,WADE,QAAO,MAAe,aAEnB,cAAI,UACT,aACK,YACL,MADS,QAAe,aAEnB,UACL,YADS,QAAe,aACjB,KAAK,SAAS,KAErB,iBAEH,kCAEU,aAIT,OAAO,UACR,mCAEO,aACN,MAAK,MACL,wBAAO,MAAK,UAAU,EACvB,+BAEW,aACV,MAAK,SACL,UAAQ,SACT,wCAE2B,eAC1B,SAAQ,IAAI,yCAA2C,EAEvD,YAEA,kCAAO,MAEP,gBAAI,GAAa,OAAkB,YAAS,CAE5C,iCAAK,UAAU,EAAQ,IAGvB,sEAAO,KACR,SAED,4BAQa,aAEX,IAAwB,WAApB,QAAO,WAA4B,CAAC,SACtC,SAGF,YAAM,GAAW,EACjB,SAAM,EAAO,GAAK,SAClB,eAAgB,OAAkB,MAAiB,OACpD,IAED,4BAU+B,iBAC7B,IAAI,KAAiB,eAEnB,IAAI,EAAQ,iBAAmB,CAAC,EAC9B,+BAAO,MAIT,2BAAI,GAAW,EAEf,qBAAI,GAAY,CAAC,EACf,yBAAQ,IAER,yCAAO,KAEV,oBAED,IACA,SAAI,GACF,UAAU,gBAAkB,EAE5B,WAAU,EACV,WAAI,EACF,sBAAe,EAKnB,eAAO,KAAwB,cAAS,EAAS,QAClD,MAED,wBAC2B,mBACzB,IACA,KAAI,KACF,IAAI,GAAS,EAAO,MAAM,EAAG,KAC7B,iBAAI,GACF,SAAG,IAAI,EAAO,OAAS,EAAG,IAAa,UAAS,KAEnD,QACD,QACE,IAAM,GAAM,EAAO,MAAM,EAAG,KAC5B,oBAAI,GAAO,EACT,SAAG,IAAI,EAAG,IAAI,EAAI,OAAQ,EAAG,IAAa,UAAS,KAErD,WAAO,EAAO,WAAW,EAAG,IAC5B,wDAAa,GACb,SAAI,GAAW,EAAO,MAAM,EAAG,IAC/B,gDAAiB,GACjB,SAAI,GAAc,EAAO,MAAU,EAAG,IACtC,8CAAoB,GACpB,SAAoB,KAAhB,MAAkD,KAAzB,KAC9B,KACF,CAED,+BAOkC,iBAAS,OACzC,KAAM,EAAK,KACX,MAAM,EAAU,EAEhB,QAAM,EAAU,EAEhB,IAAM,EAAe,KAErB,0BAAM,EAAc,KAAoC,4BAExD,GAAI,EAAkB,EAAQ,IAM9B,uBACE,CADE,KAAS,sBACH,IACR,kCAAO,KAGT,sBACE,GADE,IAAS,aAET,IADE,KAAS,cACN,YAAY,EAAQ,SACzB,aAGF,mBAAO,KAAiC,uBACrC,KAAK,UACJ,IAAI,GAAe,EAAQ,SAAW,IAAM,EAE5C,iBAAO,GAAwB,cAAc,EAC9C,SAGL,MAAI,GACJ,KAAI,EAEF,cAAqB,EACrB,UACE,QAGJ,MAAwB,GAApB,KAAS,OACX,MAAK,QAAQ,EAAG,KAEd,2BAAK,QAAQ,EAAG,KAKlB,mBAAI,EACF,qBAAG,eAAe,EAGpB,aAAI,GAAU,EAAY,SAAS,WACjC,EAAY,SAEd,mBACE,YAAK,QAAQ,EAAG,IAGd,iDAAK,QAAQ,EAAG,IAIrB,yCAGD,CAAI,KACF,IAAI,CAAC,EAAiB,UAKpB,MALoC,QAAe,mBAK5C,MAGT,oBACD,eAED,MAAK,gBAAgB,EAAQ,IAAI,QAAS,EAE1C,eAAI,GAAU,KAIZ,oCAIK,EAAS,OACb,KAAK,WACJ,UACA,eAAO,EACR,cACJ,SATkB,YACf,gCAAO,KAGT,iDAO2B,eAC3B,IAAI,GAAK,KAET,YAAO,GAAS,OACb,KAAK,WACJ,CACE,EADE,GAAQ,UACH,MAAc,EAAG,KAAK,WAAY,EAE5C,aACJ,EAED,sCAKoC,eAClC,IACE,SAGF,SAAI,GAAU,KAAK,SAAS,KAAK,WAC/B,OAAO,GAAY,MAAM,EAC1B,QAED,SAAO,GAAsB,SAC9B,IAED,iCAKkB,aAChB,OAAO,GAAoB,EAAI,MAAM,KACtC,MAED,sCAMgC,eAC9B,IAAI,EACF,uBAAO,GAGT,oBAAI,GAAc,EAAQ,IAC1B,mBAAK,IAAe,EAAY,SAAS,4BACvC,IAAI,GAAQ,KAAK,iBAAiB,EAAQ,SAE1C,KACE,KAEH,QAED,IAAI,GAAW,EAAI,SAAS,EAAQ,SAEpC,WAAK,IAAwB,kBAC3B,YAIH,YAED,gCAQyB,eAAS,OAChC,UAAK,UAAU,EAAQ,IAA0C,qCAEjE,OAEA,gBAAM,GAAK,KACX,MAAM,EAAS,EAEX,IAAC,EACH,WAAO,MAAQ,EAAG,KAAK,gBAAiB,EACxC,eAAe,YAGjB,mCAAK,UAAU,EAAQ,SAAS,KAChC,kBAAK,aAAa,EAAQ,SAE1B,UAAI,GAAa,OACjB,sBAAW,QAAU,EAAQ,SAE7B,IAAO,KAAsB,cAC1B,KAAK,WACA,CAKL,MALM,GACH,UAAO,MAAQ,EAAG,KAAK,qBAAsB,EAAW,IAAK,EAG/D,UAEL,oCAEuB,eAAS,OAC/B,WAAO,IAAI,SAAS,WAClB,GAAc,YAAO,CAAC,EAAsB,iBAAI,OAAO,WAAW,UAChE,CAAI,GACA,cAAC,EACD,0BAAC,EACH,aAAQ,EAAe,YAAuB,6BAEjD,WANsD,EAMpD,EACJ,SACF,mCAEsB,eACjB,CAAC,KACH,uBAEoB,kBAEvB,aAJuB,kBAEpB,4CAKF,IAAI,GAEJ,OAAK,GAAI,KAAa,MACpB,eAMK,GAAI,KALP,EADE,SAIJ,MAEA,KAAqB,KACnB,iBAAsB,MAAW,IAAM,KAI3C,iBACD,QAGH,iCAvsCyB,aACrB,OAAI,GACF,uBAAO,EAAQ,uBACZ,QAAQ,QAId,6BAED,gCAKwB,aAMtB,IAEA,KACA,EAeD,MAfuB,WAAlB,QAAO,SAA0B,OAAO,QAAU,EAAK,OAAO,MAAM,KACtE,EAAG,aAAe,EAAG,YAAY,IACjC,8BAAiC,SAA7B,KAAa,MAAM,EAAG,IACxB,YAD4C,KAAa,MAAM,EAAG,QACnD,oBAAsB,EAAa,MAClD,KAAI,KACF,yDASN,wCAGuB,aACvB,IACA,MAAsB,WAAlB,QAAO,SAA0B,OAAO,QAAU,EAAK,OAAO,MAAM,KAAO,EAC7E,YAGF,YAAqC,WAAjC,QAAO,wBACT,sBAAsB,aAEtB,IAAI,GAAW,EAAI,MAAM,KAAK,MAE9B,GAAM,EAAiB,eACrB,IAAI,GAAI,EAAM,EAEJ,kBAGR,QADS,WACF,EAAI,EAAM,KAGL,OAGf,OADC,KANA,IASF,EAAM,EAAW,IAAU,sBAE3B,cACE,KAEH,QAKD,OAAI,GAAQ,wBACY,WAApB,QAAO,WAA4B,SAAS,UAE5C,QADA,IAAC,GAAK,SAAS,UAAU,MAAM,EAAG,IAEpC,YADM,MAAM,EAAG,GACR,EAAQ,uBACZ,QAAQ,QAId,wBAED,oCAO4B,aAC1B,IAAI,GAAO,EAEX,kBAAiB,KAAT,MAA2B,QAAT,MAC3B,KADgD,IAGjD,gCAMwB,aAA4B,2DASlD,MAAI,EAAkB,EAAa,WAEnC,UAKD,MALK,YACF,oBAAkB,EAGpB,4BAklCJ,EAAiB,UACjB,EAAO,QAAmB,WAC1B,EAAO,QAA8B,iJC3oDrC,sPAAM,EAAY,EAClB,IAAM,EAAU,EAChB,IAAM,EAAM,EACZ,IAAM,EAAY,EAClB,GAAM,EAAM,EACZ,GAAM,EAAO,EAAQ,IAErB,GACE,WADS,cACL,GACF,cACA,iBACA,YACA,qBACA,wBACA,cACA,8BACA,eACA,gBACA,qBACA,0BACA,iBAEH,OAEK,aACJ,CAAiB,eAAS,GACxB,aAAK,QACL,WACA,UAAK,OAAS,EAAQ,QACpB,OACE,CACA,YACA,YAGJ,WACA,KAEA,mBAGA,oHAAK,OAAS,KAAQ,GAAI,QAC1B,eAAK,SACL,UAAK,WACL,UAAK,aACL,OAAK,eAAiB,CAAE,CAAE,aAAc,uCAAwC,UAChF,cACA,oBAAK,SACL,qBACA,yBACD,0CAEsC,mBACrC,IAAI,GAAI,EAAI,EACZ,IACE,WADS,WACJ,EAAI,UAAU,KAAK,QAExB,MAAK,KAEP,qBAAK,KACL,qBAAK,KACL,qBAAK,EAAI,UAAU,KAAK,QAExB,WAAK,GACN,yCAEa,aACZ,QAAI,GACJ,GAAO,GAAQ,EAAK,WAAa,EAC/B,iBAAO,IAAM,EACb,cAAO,EAET,WACD,qCAEa,aACZ,IACA,UAAK,GACH,QAAY,KAEd,KACD,mDAGA,oCAEmB,aAClB,KAAK,GAAI,GAAI,IAAG,EAAI,EAAc,cAAc,OAE1C,SAAU,EAA4B,iBAAG,QAC7C,QAAI,GAAW,EAAQ,GAAG,SAAW,EAEnC,aAAO,GAA4B,iBAGvC,WACD,sCAGA,0CAGC,aACA,eAAO,KAAO,KACf,6CAEyB,eACzB,4BAE4B,iBAC3B,IAAI,GAAQ,EAAM,QAClB,KACA,KAAa,CAAT,IACF,IAAI,GAAS,EAAM,UACnB,QAEE,EAFE,cAEI,EACN,IAAO,EAAM,EAAM,EAAM,UAAU,EAAQ,GAC5C,KAAM,GAEL,GAFS,WAEF,KAAO,EAAM,UAAU,EAC/B,GAAM,GAAI,EAAc,OACvB,YAEE,cAAO,GAAM,EAAM,UAAU,EAGlC,EACD,OACD,qCAEiC,iBAChC,IAAI,GAAQ,KAIZ,6BAAO,KACR,uDAGe,uBACd,IACE,EADE,WAGJ,SAAI,GAAY,KAAqC,6BAAmB,EACxE,kBAAI,IACF,CADe,KAAU,QAAQ,MAIpC,0CAEyB,eACxB,CAGK,OAHD,GAAS,KACb,YAAI,EAEJ,KAAS,EAAI,EAAG,EAAI,EAAO,OACzB,IACE,GADS,QAAU,KAAG,OAAS,KACf,KAAG,UAAU,EAAU,KAAG,OAE1C,OAAO,KAAU,KAAK,QAAQ,KAAO,EAAI,KAAY,KAAI,KAAK,QAAQ,MACtE,OAGL,gDAQ4C,iBAC3C,UAAQ,KACR,QAAwB,GAApB,KAAM,OAAO,IACf,GAD6B,KAAM,OAAO,EAAM,OAAS,MACjD,EAAM,UAAU,EAAG,EAAM,OACjC,KAAQ,EACR,QACE,CADE,KAAM,OAGV,KAEE,IAFE,KAEK,KAET,OAAO,KAEP,mBAAO,KAEV,+DAEoE,qBAEnE,GAAQ,KACR,WAAI,GAAQ,KACZ,kBACE,KACD,SAAU,KACT,IAAI,GAAqB,CAAC,KAAK,SAC7B,cAEF,QAAI,GACJ,KACE,KAEF,YAAI,GAAU,EACd,cAEE,KADF,OAGD,QACD,OAAI,MAAK,SACP,QAAO,KAET,yBACD,0CAEiE,qBAEhE,GAAQ,KACR,WAAI,GAAQ,KACZ,kBACE,KAEA,YAAI,GACJ,KACE,KAEF,YAAI,GAAU,EACd,uBAIA,UAAI,GAAqB,CAAC,KAAK,SAC7B,QAGJ,IAAO,KACR,iDAES,aACR,CACD,gCAEc,eAKb,IACA,GAAI,EAAK,WAAa,EACpB,iBAAO,EACP,UAAO,EACP,kBACA,eACK,eAAI,EAAK,WAAW,WAAa,EACtC,oBAEF,iBAEA,MAAI,EAAuB,aAEzB,IAAgB,OAAW,EACzB,cAAO,GAGT,WAAI,GAAO,EAAQ,QACnB,KAOD,MANG,EADE,QACQ,EAAQ,UAEpB,MAAI,GAAW,EACb,eAAU,EAEZ,gBAEF,QAAM,KAAK,CACT,kBAAS,KAAK,KAAK,KAAM,EAAW,EAEtC,YAAsB,CAAf,GAAM,QACX,IAAI,GAAO,EACX,WAAI,EAAK,OAEP,IAAI,EAAK,QAAQ,QAAU,EAAK,QAAQ,OAAO,cAAgB,EAE7D,YAGF,aAAK,GAAI,KAAa,GAAK,YACzB,IAAI,GAAO,EACX,kBAAoB,CAAhB,KAAK,OACP,MAAK,UAAU,EAAK,OAAQ,EAAc,UAAW,CAAE,KAAM,EAAc,UAAW,MACtF,mDACD,QACD,CACK,OAAL,MAAS,EAAI,EAAG,EAAI,EAAK,OACvB,MAAO,KAAK,KAGd,oBAAK,GAAI,GAAI,EAAG,EAAI,EAAO,OACzB,SAAK,UAAU,EAAK,OAAe,KAAI,mDACvC,WAAK,UAAU,EAAK,OAAe,KAAI,kDAAmD,CAAE,KAAM,EAAc,UAAW,MAAQ,EAAI,EAAK,EAAO,OAAS,EAAO,EAAI,GAEzK,wDAAK,UAAU,EAAK,OAAQ,EAAc,UAAW,CAAE,KAAM,EAAc,UAAW,MAAO,EAC9F,IACD,CACD,QACD,IAAI,GAAU,EACd,QAAI,EAAU,EAGd,QACA,KAAI,EACJ,KAAI,EACJ,KAAI,EACJ,KAAI,EAAW,EACf,SACA,KACA,KAAI,EAAc,EAClB,YAAI,EAAuB,CAAC,EAC5B,OAAI,EAAW,EACf,SAAI,EAAa,EAEjB,aAAO,KAAK,SAAS,EAAW,EAChC,YAAQ,KAER,QAAI,GAAW,EAAQ,iBACvB,SAAI,KACF,IAAI,GAAQ,KAAK,KAAK,EACtB,UAAmB,CAAf,GAAM,OACR,CACA,OAAI,GAAc,EAElB,UAAwB,cAAa,2CAA4C,CAAE,KAAM,EAAc,UACxG,SACC,QAAa,KAEhB,UAGD,KAAK,GAAI,GAAI,IAAG,EAAI,EAAQ,WAAW,OACjC,SAAM,EAEV,cAA+B,GAA3B,KAAI,SAAS,OAAO,IAAiD,CAAnC,KAAI,SAAS,QAAQ,UAEvD,OAAW,KACX,gBAEF,SAAI,GAAS,EAAI,SAAS,UAE1B,GAAI,EAAM,EAAc,KAAK,EAC7B,OAAS,KAAU,KAAK,QAAQ,KAAO,EAAS,OAAK,KAAK,QAC3D,OAGH,IAAI,GAAY,EAAQ,iBAEtB,cACE,OAAW,KACX,gBAEF,WAAK,oBAAoB,EAG3B,UACK,OADD,GACJ,KAAS,EAAI,EAAI,IAAc,EAAI,KAAK,eAAe,OACrD,MAAa,EAAQ,mBAAmB,KAAoB,kBAAG,aAAc,KAAoB,kBAEnG,WAAI,KACF,IAAI,GAAQ,EAAc,KAAK,EAC/B,SAGE,CAHE,GAAM,SAKX,IACD,IAAI,GAAS,EAAQ,iBACrB,OAAI,EAAS,EAAQ,iBACrB,OAAI,EAAY,EAAQ,iBACxB,UAAI,EAAc,EAAQ,iBAC1B,YAAI,EAAc,EAAQ,iBAC1B,YAAI,EAAc,KAAK,WACnB,EAAQ,iBAAiB,YAE7B,KAAI,EAAa,EAAQ,iBACzB,WAAI,EAAW,EAAQ,iBACvB,SAAI,EAAS,EAAQ,iBACrB,OAAI,EAAc,EAAQ,iBAC1B,YAAI,EAAU,EAAQ,iBACtB,QAAI,EAAY,EAAQ,iBACxB,UACA,KAAI,EACJ,GAAI,KACF,IAAS,KAAK,SAAS,EACvB,WAAK,GAAI,IAAI,EAAG,GAAI,GAAO,OACzB,OAAY,KAAK,eAA0B,SAAY,EAAyB,UAAM,KAAK,YAEzF,IAFuG,WAK5G,OACD,IACA,OAAI,KACF,IAAS,KAAK,SAAS,EACvB,WAAK,GAAI,IAAI,EAAG,GAAI,GAAO,OACzB,OAAY,KAAK,eAA0B,SAAY,EAAyB,UAAM,KAEpF,qBAGL,OAED,CAkHE,GAlHE,KAAK,aACP,WACE,CADE,KAAiB,WAGrB,MACE,CADE,MAAiB,WAIvB,OAGI,YAAa,KAAK,2BAA2B,EAG7C,gBAEF,KACE,KAAI,EAAQ,WAAW,WAAa,EAClC,gBAAa,EAAW,EACnB,SAAI,EAET,iBAAa,EAAW,EAAQ,WAAW,WAAa,EAAQ,aAAe,EAAW,EAAQ,SAAW,EAI/G,qBAAwB,KAAK,2BAA2B,EAE1D,YAEI,SAAwB,KAAyB,sBAAM,UAAU,EAEjE,YAAwB,KAAyB,sBAAM,UAAU,EAC5D,QAAI,GAAc,IAAY,EAAE,KAAK,cAAsC,MAAtB,KAAQ,WAClE,MAD0F,KAAQ,gBAC1E,KAG5B,iBAAI,GAAc,IAAY,KAAK,cAAsC,MAAtB,KAAQ,WACzD,MADiF,KAAQ,WAEpF,IAAI,GACT,KAEG,MAGH,gBAoCa,KAAK,2BAA2B,EAE/C,YACE,UAAa,KAAK,2BAA2B,EAE/C,YACE,UAAa,KAAyB,sBAAM,UAAU,EAExD,SACE,UAAa,KAAyB,sBAAM,UAAU,EAExD,SACE,KAAI,EAAQ,WAAW,WAAa,EAClC,gBAAa,EAAW,EACnB,SAAI,CAAC,KAAK,aAAe,KAAK,cAAsC,MAAtB,KAAQ,WAC3D,MADmF,KAAQ,aAC9E,EAAW,EAAQ,WAAW,WAAa,EAAQ,aAAe,EAAW,EAAQ,SAAW,EAE7G,iBAAa,KACR,eAAI,EAET,iBAAa,EAAW,EAAQ,WAAW,WAAa,EAAQ,aAAe,EAAW,EAAQ,SAAW,EAC7G,aACE,KAKJ,YAKJ,aApEiB,KAAK,2BAA2B,EAE3C,eAGJ,MAAK,GAAc,EAAQ,WAAW,WAAa,EACjD,cAIU,IAAc,EAExB,iBAAa,EAAW,EAAQ,WAAW,WAAa,EAAQ,aAAe,EAAW,EAAQ,SAAW,EAE/G,iBARe,EAAW,EAEtB,aAEG,MAIH,GAEA,WAAgB,KAAK,2BAA2B,EAElD,YACE,UAAgB,KAAyB,sBAAM,UAAU,EAE3D,SACE,UAAgB,KAAyB,sBAAM,UAAU,EAE3D,SAAK,KAAkB,KAAK,aAAe,KAAK,cAAsC,MAAtB,KAAQ,WACtE,MAD8F,KAAQ,aAGxG,KACE,OAAgB,KAElB,gBAMA,UAkC6B,SAC7B,IACA,MAAI,GAAc,IAChB,QAGF,WACD,sBAGH,CAAI,KACF,IAAS,KAAK,SAAS,EACvB,WAAK,GAAI,IAAI,KAAG,GAAI,GAAO,OACrB,QAAS,KAAK,yBAAoC,SAAY,EAEhE,oBAAwB,cAAe,EAAc,QAAS,CAAE,KAAM,EAAc,UAGzF,UAGD,CAMI,GANA,GAAc,IAAe,EAE/B,eACA,KAGF,QACE,IACE,SAAK,GAAI,IAAI,KAAG,GAAI,EAAiB,OAC/B,QAAO,EAET,YACA,QAEF,cAAK,KAAK,CAAE,KAAM,EAAc,UAEnC,cACC,UAAK,GAAI,IAAI,EAAG,GAAI,EAAiB,OACnC,UAAwB,cAA6B,MAAI,CAAE,KAAM,EAAc,UAGnF,UACE,SAAK,GAAI,IAAI,EAAG,GAAI,GAAiB,OACnC,UAAwB,cAAwC,OAAI,CAAE,KAAM,EAAc,UAG/F,SApBD,KAsBE,IAAI,GAAe,KACjB,UAAwB,KAG1B,gBACE,SAAK,GAAI,IAAI,KAAG,GAAI,EAAiB,OAC/B,QAAO,EAET,YACA,MAGF,WAAW,KAAK,CAAE,UAA4B,MAEjD,cACC,UAAK,GAAI,IAAI,EAAG,GAAI,EAAiB,OACnC,OAAW,KAAK,CAAE,UAA4B,MAGlD,aACE,SAAK,GAAI,IAAI,EAAG,GAAI,GAAiB,OACnC,OAAW,KAAK,CAAE,UAA4B,OAGnD,YAED,CAAI,KACF,IAAI,IACJ,KAAI,GAEF,WAAiC,EAAtB,KAAY,MAAe,EAAc,gBAAkB,KAAK,yBAAyB,EAAmB,QAAY,EACnI,cAAI,GACF,GAAU,EAEV,MAAU,KAAa,EAAc,eAAiB,KAAa,EAAc,eAAiB,KAAQ,EAAa,EAAW,MAAQ,EAG5I,mBAAW,EACX,mBAAU,EAEV,aAAU,EACV,SAAW,EACX,uBACE,SAAW,EAER,kBAAK,IAER,YAAU,KAAK,2BAA2B,EAE5C,YACE,UAAU,KAAyB,sBAAM,UAAU,EAC9C,QACL,YAAU,KAAyB,sBAAM,UAAU,EAGnD,iBAAW,EAIb,iBAAI,GACF,OAAW,EACX,UAEA,UAAU,EACV,YAAI,KAAK,YACP,MADqB,KAAQ,eAClB,EAEb,wBACE,SAAW,EAIjB,sBAAS,KAAK,SAAS,EACvB,WAAK,GAAI,IAAI,KAAG,GAAI,GAAO,OACrB,KAEF,MAFc,KAAK,eAA0B,SAAY,EAC3D,cACM,KACF,IAAI,IAEF,WACA,MAEF,aAAK,KAAM,KAAa,EAAc,eAAiB,KAAa,EAAc,eAAkB,CAAQ,QAAU,MAAO,EAAQ,YAAe,CAAE,KAAiB,MAAW,EAAc,gBAAwB,SACzN,YACC,KAAI,MAAa,EAAc,eAAiB,KAAa,EAC3D,oBAAoC,iBAAW,CAAQ,QAAU,MAAO,EAExE,kBAAoC,iBAAW,CAAE,KAAiB,MAAW,EAAc,gBAAwB,SAM5H,YAED,IAAI,GACF,OAAK,GAAI,IAAI,EAAG,GAAI,EAAQ,WAAW,OACrC,KAAI,EAAmB,eAGrB,OAAmB,eAAG,KAAK,KAAK,CAAE,KAAM,EAAc,UACjD,UAAI,EAAmB,eAE5B,aAAe,YAAS,EAAQ,QAAS,EAAmB,eAAG,UAAW,CAAE,KAAM,EAAc,UAGhG,eAAwB,cAAY,EAAmB,eAAG,UAAW,CAAE,KAAM,EAAc,UAAW,MAAO,EAInH,aAAI,IACJ,KAGE,WAAe,KAAU,OAAS,EAGlC,YAAa,aAAe,EAAW,EAAQ,WAAW,WAAa,EAAQ,aAAe,EAAW,EAAQ,SAAW,EAC5H,gBAAa,WAAa,EAC1B,cACA,cACA,cAEA,kBAAe,KACf,aAAa,aAAuC,IAAsC,IAAa,EACvG,WACA,cAGE,iBACA,KACA,KAEF,SACA,iBACA,cAIA,mBAAM,QAAQ,CAAU,SAAkB,UAAkB,WAE9D,oBAAK,GAAI,IAAQ,EAAmB,aAAO,GAAQ,GACjD,gBAAI,GAAM,WAAa,EAErB,kBAAM,QAAU,EAChB,UAAM,QAAQ,CAAW,WAG9B,aACD,CAAI,KACF,iBAEF,qBAAK,GAAI,IAAI,EAAG,GAAI,KAAK,iBAAiB,OACxC,UAEH,4CAEa,eACZ,OACE,CACA,iBAAmB,IAAW,EAAS,EAAO,QAC9C,kBACA,KACA,0BAAa,EAAS,EACtB,wBAAU,EAAS,EAAO,SAAW,KACrC,kBAAU,EAAS,EAAO,SAAW,KAAK,OAAO,MACjD,eAAO,EAAS,EAAO,MAAQ,KAAK,OAAO,MAC3C,iBAAY,EAAS,EAAO,WAAa,KAE5C,+CAE0B,eAEzB,OAAO,GACR,oCAEW,aAEV,CAAuB,MAAnB,KAAK,WACP,gBAD+B,KAAK,aAAa,gBAE5C,kBAAuB,MAAnB,KAAK,WACd,8BADsC,KAAK,aACnB,WAApB,QAAO,WAA4B,SACrC,QAAkC,gCAA9B,YAAS,QAAQ,UACnB,+CADoE,YAAS,QAAQ,kBAC7E,IACR,sEACK,kBAAkC,gCAA9B,YAAS,QAAQ,UAC1B,+CAD2E,YAAS,QAAQ,cAG5F,uBAGF,sBAGF,sBAEH,0DAGC,MACA,yBAAK,eAAiB,CAElB,cACA,iDAAW,QAEb,CAAE,aAAc,KAAM,UAExB,cACA,oBACD,2DAGC,MAAK,WAEL,UAAK,eAAiB,CAElB,cACA,iDAGL,oDAGC,MACA,yBACA,oBACA,mBAAK,eAAiB,CAElB,cACA,iDAAW,QACb,CAAE,aAAc,KAAM,UAGxB,cAAK,OAAO,MAAY,gBACxB,oDAAK,OAAO,MAAY,eACxB,mDAAK,OAAO,MAAY,eACxB,mDAAK,OAAO,MAAY,WACxB,+CAAK,OAAO,MAAY,cACxB,kDAAK,OAAO,MAAY,eACxB,mDAAK,OAAO,MAAY,gBACxB,oDAAK,OAAO,MAAY,YACxB,gDAAK,OAAO,MAAY,eACxB,mDAAK,OAAO,MAAY,WACxB,+CAAK,OAAO,MAAY,WACxB,+CAAK,OAAO,MAAY,YACxB,gDAAK,OAAO,MAAY,WACxB,+CAAK,OAAO,MAAY,cACxB,kDAAK,OAAO,MAAY,WACxB,+CAAK,OAAO,MAAY,WACxB,+CAAK,OAAO,MAAY,WACxB,+CAAK,OAAO,MAAY,eACxB,mDAAK,OAAO,MAAY,cACxB,kDAAK,OAAO,MAAY,iBACxB,qDAAK,OAAO,MAAY,iBACxB,qDAAK,OAAO,MAAY,YACxB,gDAAK,OAAO,MAAY,UACxB,8CAAK,OAAO,MAAY,SACxB,6CAAK,OAAO,MAAY,YAExB,gDAAK,OAAO,MAAY,cACxB,kDAAK,OAAO,MAAY,WACxB,+CAAK,OAAO,MAAY,qBACzB,6FAGC,MACA,yBACA,oBACD,sCAES,aACR,OAAO,MAAU,QAAK,MACvB,sCAEgB,aACf,IACA,WADW,eAET,QADS,iBAEP,IADE,KAAE,UAAU,EAAG,IAEf,WADE,QAAO,MAAK,WAAW,EAAE,UAAU,WAChC,WAAW,EAAE,UAAU,IAAU,MAAU,EAAE,UAEpD,KAAO,KAAK,WAAW,EAAE,UAE3B,KAAO,EAET,oBAAQ,EACN,UAAK,GACH,gBACE,IADE,KAAE,MAAM,UAAU,EAAG,IAErB,WADE,QAAO,MAAK,WAAW,EAAE,MAAM,UAAU,WACtC,WAAW,EAAE,MAAM,UAAU,IAAU,MAAU,EAAE,MAAM,UAEhE,KAAO,KAAK,WAAW,EAAE,MAAM,UAEjC,KAAO,EAAI,UAAU,EACvB,WAAK,GACH,sBAAW,OAAQ,EAAE,MAAO,EAAE,UAChC,QAAK,GACL,kBAAK,GACH,kBAAI,GACJ,iBAAO,KAAK,EAAE,OAAO,QAAkB,WACrC,IAAU,EAAK,YAAY,EAAQ,SAAI,KACxC,YACD,GAAmB,QAAQ,GAAQ,MAAU,EAC/C,OACE,cAAW,OAAQ,EAAE,MAAO,GAAQ,MAAU,EAEnD,8BAEK,aACJ,OAAO,GAAI,QAAQ,SAAU,IAAI,QAAQ,SAC1C,kCA7sB6B,iBAC5B,IAAI,GAAsB,QAAI,CAC9B,WACA,YACD,oBA4sBH,EAAc,cACZ,wDACF,EAAc,eAAiB,kDAC/B,EAAc,gBACZ,0DACF,EAAc,UAAY,oDAC1B,EAAc,QAAU,kDACxB,EAAc,SACZ,mMACF,EAAc,cACZ,4tEACF,EAAc,OAAS,GAAI,QAAO,IAAM,EAAc,cACpD,EAAc,SAEhB,MASA,EAAc,cAAgB,CAC5B,CAAE,QACF,sGAAM,6CACN,CAAE,QACF,yLAAM,6CACN,CAAE,QACF,gIAAM,yCACN,CAAE,QACF,iGAAM,yCACN,CAAE,QACF,oFAAM,+CACN,CAAE,QACF,qEAAM,2CAGR,EAAiB,2BCp3BjB,aASA,GAAM,GAAU,EAEhB,GAAI,EAAsB,aACxB,IAKA,QAEA,oGAGA,EAMA,oLAQA,KAAK,aAAyC,eAC5C,OAAO,CAAC,KAAQ,EAAG,IAAO,EAAa,SAAkB,SAAQ,MAAS,EAAO,MAC/E,oBAAa,EAAG,KAAQ,KAAM,KAAQ,KAAM,KAAQ,KAAM,SAAY,KAAM,UAAa,EAAG,MAAS,KAAM,SAAY,KACvH,6BAAkB,YAChB,CAAI,KACF,iBAAK,KAER,OAAU,EAAuD,UAA6B,eAC7F,GAAM,EAAa,OAAK,KACxB,WAAK,KAAO,KAAK,MAEjB,YACD,UAAU,EAAkD,WAAc,YACzE,IAAI,KAAK,OAAO,OACd,gBAAK,OAAO,OAAO,KAAK,OAAO,KAE/B,WAAK,MAAM,IAAI,KAAK,OAAO,OAAO,KAAM,KAAK,OAAO,KAAM,KAAK,KAAM,KAAK,OAE5E,KAAyB,IAArB,OAAK,OAAO,MAEd,IAAI,GAAS,KAAK,MAAM,IAAI,EAAQ,KAAK,IAAM,KAAK,OAAO,MAAO,KAClE,YAAK,MAAU,MAAQ,KAAK,MAAM,IAAI,EAAU,GAAG,IAAM,QAAS,KAAK,MAAM,IAAI,EAAU,GAAG,IAAM,aAAc,KAAK,OACvH,UAAK,MAAU,MAAQ,KAAK,MAAM,IAAI,EAAU,GAAG,IAAM,WAAY,KAAK,OAAO,OAAO,KAAM,KAAK,OACnG,UAAK,MAAU,MAAQ,KAAK,MAAM,IAAI,EAAU,GAAG,IAAM,aAAc,KAAK,OAAO,KAAM,KAAK,OAE9F,UAAK,MAAU,MAAQ,KAAK,MAAM,IAAI,EAAU,GAAG,IAAM,UAAW,KAAK,KAAM,KAAK,OACrF,IACF,CAAU,EAAwC,eAAkB,YACnE,OAAuB,KAAf,OAAK,QAAwC,IAAtB,OAAK,OAAO,QAAkB,KAAK,WAAa,KAAK,MAAQ,KAAK,OAAO,WACxG,KAAK,KAAO,KAAK,OAAO,OAAO,WAAa,KAC7C,IAAU,EAAwC,QAAqB,aACtE,MAAK,UAAU,KACf,QAAI,KACF,uBAEH,YAAU,EAA0C,cAAiB,YACpE,MAAK,SAAW,KAChB,UAAK,KAAO,KAAK,MACjB,kBACA,cAAI,KACF,uBAEH,YAAU,EAAyC,iBAAoB,YACtE,MAAK,SAAW,KACjB,GAAU,EAAgC,SAAsB,aAC/D,MAOO,KANL,IADE,IAOU,KAAK,MAEnB,QAPS,IADH,OAAK,OAAc,UAGT,KAAK,OAAc,UAAM,KAAK,MAG5C,QALc,KAAK,OAEZ,eAKJ,SAAW,KAChB,KAAI,KACF,uBAEH,YAAU,EAA2C,OAAoB,aACxE,CAAI,IAAQ,EAAU,GAAG,IACvB,SAAM,EAAU,GAAG,IAAM,IAAM,KAAK,OACpC,eAAK,OAGP,kBAAK,UAAU,KAChB,MAAU,EAAkC,WAAwB,aACnE,MACO,KADH,KAAK,OACP,SAAY,KAAK,MAAc,UAAO,GAAI,KAAK,MAAM,IAAI,KAAK,OAEzD,WAAO,KAAK,MAAc,UAAO,KAExC,WAAK,SAAW,KAChB,KAAI,KACF,uBAEH,YAEJ,EAGD,OAAK,mBAA0C,eAC7C,IAAI,GACJ,QAAI,EACF,qBAAgB,EAEhB,4BAEK,QAFD,GAAa,EACjB,WACS,EAAI,EADT,EACJ,EAAe,EAAI,EAAW,OAC5B,SACA,KAAI,EACF,qBAAY,EAAc,OAAW,EAAc,OACnD,QAAI,IAAa,EAAc,UAC7B,CACA,IACD,KAIP,CACD,QAID,OACA,aACA,eAAK,IACL,UASA,cAAK,MAAkC,eACrC,IAAI,GAAW,EACf,gBACA,iBACA,MAAI,EAAS,WAAa,EAAU,SAClC,cAAK,GAAI,GAAI,EAAE,EAAI,EAAS,OAC1B,OAAa,KAAG,WAAa,EAAU,SAAS,QAC9C,GACA,KACD,KAEJ,MAAM,IAAI,EAAS,WAAa,EAAU,SACzC,QAEA,cAAM,IAAI,OAAyC,oCAGrD,oBACA,SAAI,GAAI,KAAK,aACb,MAKD,YAJC,SACA,SAAE,KACF,UAAK,SAAS,KACd,mBAGF,OAAK,SAAqB,WAExB,QACI,GAAuB,WACzB,IAAI,GACJ,MACE,IADE,IAAG,kBACC,IAAI,OAAM,0CAA4C,EAAG,UAAY,OAAS,KAEtF,MAUD,MAVK,GACO,kBAAS,EAEpB,cAAI,EACO,aAAS,EACb,UAAI,EACT,WAA2C,CAAvC,IAAG,SAAS,QAAQ,QAA4B,EAAG,SAAS,MAAM,KACxD,MAAS,EAEzB,WAde,EAef,KACF,MACA,KAjBA,EAiBO,EAAM,QACX,IAAI,GAAM,EACV,QAAI,EAAQ,EACZ,cAAI,EAAI,WAAa,EAAU,SAAS,MAAQ,EAAI,WAAa,EAAU,SAEzE,cAAI,EAAM,OAAO,WAAa,EAE5B,SAAM,OAAO,EAAU,GAAG,IAC1B,WAAQ,KAEV,iBAAM,WAAW,EAClB,eAAM,IAAe,OAAS,EAAU,GAAG,IAE1C,SAAI,EAAM,QAAU,EAAM,OAExB,eACA,qBAAQ,KAAgB,aAAO,EAC/B,WAAM,OAAO,QAEf,MAAI,CAAC,EAAM,QAAU,CAAC,EAAM,OAAO,UAAY,EAAM,OAAO,WAAa,EAAM,IAE7E,IAAI,GAAQ,KAAwB,qBAAK,EAAU,GAAG,IACtD,cAAQ,KAAwB,qBAAK,EAAU,GAAG,IAClD,MACE,UAAM,IAAI,OAAM,cAAgB,EAGlC,iHACE,QAAM,QAAQ,IAAM,EACpB,aACD,2BAAM,IAAa,IAAT,KAA0B,IAAT,IAC1B,IAAI,GAAO,KAAwB,qBAAK,EAAU,GAAG,IAEnD,eAAM,SAAS,EACf,aAEA,0BAEH,UACC,QAAM,QAAQ,EACd,aAGF,0BAAI,GAAU,KAAwB,qBAAK,EAAU,GAAG,IACxD,QAAI,EAAU,GAAG,IAAM,gBACrB,SAAU,CAAC,UAEb,OACE,IADE,WACG,MAAM,IAAI,EAAM,KAAM,KAAK,MAAM,IAAI,EAAU,GAAG,IAAM,QAAS,KAAK,MAAM,IAAI,EAAQ,KAAK,EAAQ,UACxG,EAAM,OAAQ,KAChB,KAAI,EACF,YAIJ,4BAAK,GAAI,GAAI,EAAM,OAAS,EAAQ,CAAL,IAC7B,SAAK,MAAM,IAAI,EAAM,KAAM,KAAK,MAAM,IAAI,EAAiB,OAAM,KAAK,MAAM,QAAc,KAAG,UAC3F,EAAM,MAAO,KAElB,IAxCD,KA0CE,GAAM,OACN,MAAI,KACF,UAAQ,KAAwB,qBAAK,EAAU,GAAG,IAEhD,YAAM,MAAQ,EACd,YAGJ,4BAAI,GAAY,KAAwB,qBAAK,EAAU,GAAG,IAC1D,aAAI,EAAW,KAAwB,qBAAK,EAAU,GAAG,IAEvD,YAGE,SAHI,SAAW,EACjB,YAEF,0BACE,IAAI,GAAK,EACT,UACE,SADE,QACI,SAAW,EAAU,GAAG,IAC9B,eAAQ,KAER,gBAAM,WAAW,EACjB,YACK,MACL,UADS,QACD,KAAgB,aAAO,EAC/B,WAAM,OAAO,QACb,OACK,YACL,YADS,SACD,KAAgB,aAAO,EAC/B,WAAM,OAAO,QACb,OAEF,mBACD,sBACD,IAAqB,CAAjB,KAAM,OACR,IAAI,GAAW,KAAwB,qBAAK,EAAU,GAAG,IACzD,YAAI,EAAQ,KAAwB,qBAAK,EAAU,GAAG,IACtD,YAAQ,KAEN,mBAAM,QAAQ,EACd,aAGE,6BAAM,SAAS,EACf,aAEA,0BAGJ,eAAK,GAAI,GAAK,EAAM,OAAS,IAAS,CAAN,IAC1B,MAAI,KACR,gBAAE,OAAO,EACT,OAAI,EAAiB,QAAS,EAAU,GAAG,IACxC,YAAgB,cAAI,QAAc,KAElC,gBAAgB,cAAI,WAAiB,KAG3C,UAAM,KACJ,EADQ,KAAI,WAAW,aACP,cAAQ,WAE5B,GAGH,OAAM,EACN,QAAO,EAAM,QACX,QACA,KACE,IADK,OACG,EACR,SAAM,EAER,WAAI,GAAY,EAAI,YAAc,EAAI,WAAW,EACjD,cAAK,IAAc,GACjB,MACA,iBAAI,EAAE,EAAQ,EACZ,QAEF,QAAM,EACN,QACD,IAPD,KAOO,IAAK,EAAU,WAAa,EAAU,SAAS,SACpD,EAAU,WAAa,EAAU,SAAS,MAC1C,EAAU,WAAa,EAAU,SAAS,eACzC,CAAC,EAAU,WAAa,EAAU,SAAS,MAC5C,EAAU,WAAa,EAAU,SAAS,gBAE1C,CADA,KAAI,WAAW,SAEhB,gBAEC,GACA,cAAQ,KAAgB,aAAQ,EAAI,WAAW,EAAM,UACrD,IACD,KACF,CACF,CACF,CAMD,OAAK,YAAc,UACjB,MACA,eAAK,IACN,IAMD,OAAK,WAA+B,aAClC,IAAI,GAAQ,KAAK,aAEf,mBAAM,KAAO,EACb,OAAM,KAAO,EAEf,MAAK,IAAW,EAAQ,WAAa,EAAU,SAAS,MACtD,EAAQ,WAAa,EAAU,SAC/B,cAEF,YAAI,GAAQ,EACZ,WAAI,EAAO,EAAQ,iBACnB,YACE,IADE,QACI,KAAO,EACb,YAAQ,gBAEV,gBAAI,GAAO,EAAQ,iBACnB,YACE,IADE,QACI,KAAO,EACb,YAAQ,gBAGV,iBAAK,GAAI,GAAI,EAAM,OAAS,EAAO,CAAL,IAC5B,OAAuC,KAA7B,QAAG,SAAS,OAAO,EAAG,GAC9B,IAAkC,QAAxB,QAAG,KAAK,MAAM,EAAG,GACzB,IAAI,GAAY,KAChB,UAAI,KAAK,OAAM,EAAM,EAAa,OAAK,KACvC,YAAK,MAAM,gBAAsB,KAAG,KAAK,MAC1C,KAED,GAAQ,oBACT,KAEH,CACD,QACF,CAtYD,EAwYA,EAAiB,wCC9b4C,uBAC3D,CAoD+B,eAE3B,cAKH,SACF,GA5DQ,GAAQ,EACf,MACA,QAAc,GACd,iBAAI,GACJ,QACE,IAAI,GACJ,KAAI,EAAQ,OAAO,EAAG,SAAS,EAC/B,UAAI,GAAS,EACb,2CACA,EAGE,SAHC,kBAAkB,EACrB,cACA,kBAEI,+BAAiB,EACjB,mBAAO,EACT,YACA,cACE,0BAAiB,EACjB,kBAAO,EACT,YACA,kBACE,gCAAG,SACH,QAAiB,EACjB,kBAAO,EACT,YACE,iCAAG,SACH,gBAAiB,EACjB,wBAAO,EACT,YACE,wBAAG,SACH,gBAAW,EAEX,0BACA,mBACF,UACA,0BACE,8BAAG,SACH,kBAAiB,EACjB,wBAAO,EAGP,QACF,MACE,aAAM,IAAI,OAAmC,6BAElD,mCAzCD,CAyCS,QACP,CACE,WAEF,MACD,OAED,C,CA/DF,EAAiB,UAEjB,GAAM,GAAU,EAChB,KAAM,EAAa,EAEnB,qBCLA,aAOA,GAAM,GAAY,EAClB,GAAM,EAAY,EAClB,IAAM,EAAM,EACZ,GAAM,EAAO,EACb,IAAM,EAAM,EAEZ,KAAI,EAAc,UAChB,CAmkBiB,aACf,OACD,aAED,CAAwB,aACtB,CAEK,OAFD,GACJ,GACS,EAAI,EAAb,EAAgB,EAAI,EAAI,OACtB,MAAI,EACJ,iBACE,KADE,GACK,MAAQ,CAAC,WAAa,EAAE,SAAS,KAAK,MAAM,CAC9C,GACL,GADS,GACF,MAAQ,CAAC,OAAS,EAAE,SAAS,KAAK,MAAM,CAE/C,GAGJ,KACD,QAMD,IA3lBI,GAAyB,aAC3B,MAAK,MACL,QAAK,KAEL,UACA,iBAEA,mBAAK,cAAc,MACnB,oDAAK,cAAc,MAEnB,sCACA,uBACA,oBAAK,YACL,4DAAK,SACL,UACA,iBACD,OAED,IAAa,UAAU,QAAoB,WAAQ,CAAkB,YAAN,OAAmB,IAElF,IAAa,UAAU,SAAqB,WAAS,CAA0B,YAArB,MAAQ,GAAS,GAAiB,IAE5F,IAAa,UAAU,MAAkB,WACvC,IAAI,GAAI,EACR,OAID,MAHG,OADE,KAAE,gBAGN,gBAGF,IAAa,UAAU,QAAoB,WACzC,IAAa,GAAT,KAAE,GACJ,IAAI,GAAI,KACH,YAEN,UAFS,QAAQ,IAChB,6BAEF,OAAO,MAAK,MACb,SAMD,IAAa,UAAU,cAAkC,aACvD,CACA,SADI,KAAO,MAAM,EAAG,IAEpB,IADI,KAAO,MAAM,EAAG,IACf,IACL,IAAI,IAAU,MAAK,YAAc,IAAO,MACxC,gBACA,mBACD,gBAGD,IAAa,UAAU,kBAA8B,WACnD,KAAK,GACH,oBAAmB,gBACnB,MAEH,IAED,IAAa,UAAU,eAAiB,UACtC,IAAI,GACJ,EAAK,QAAK,MACR,cAAI,KAAK,SAAS,KAChB,wBAAM,IAAI,OAAwC,kCAAI,KACtD,KAAgB,cAAK,KAAO,KAAK,SAAS,KAAgB,eAG9D,KAAK,QAAM,MACT,YAAI,KAAK,WAAW,KAClB,sBAAM,IAAI,OAAwC,kCAAK,KACvD,KAAa,WAAM,KAAO,KAAK,WAAW,KAAc,aAG7D,IAGD,IAAa,UAAU,aAAyB,WAC9C,CACuB,aACjB,SAAC,EAAa,UAAU,YAC5B,SACA,IADI,QACA,IAAM,MACV,mBACA,mBAED,kBACD,IARA,KAQI,EAAS,EAAa,KAE1B,MAAqC,CAAjC,OAAK,QAAQ,EAAE,EAAE,OAAS,MAAU,EAAI,EAAE,MAAM,EAAG,CACvD,OAAI,GAAQ,EAAE,YACd,KAAa,CAAT,MAAY,EAAI,EAAE,MAAM,EAC5B,WAAI,GACJ,EAAO,EAAI,EACT,QAAI,KAAK,YAAY,QACnB,OAKJ,SAAI,EAAE,MAEN,KAAe,CAAX,GAAE,QAAsB,KAC5B,YAAI,EAAO,EAAE,MAAM,EAAG,IAAK,MAAO,GAAE,MAAM,EAC1C,MAAI,EAAO,EAAE,MAAM,EAAG,IAAK,MAAO,GAAE,MAAM,EAC1C,MAAI,EAAO,EAAE,MAAM,EAAG,IAAK,MAAO,GAAE,MAAM,EAC1C,MAAI,EAAO,EAAE,MAAM,EAAG,IAAK,MAAO,GAAE,MAAM,EAC1C,MAAI,EAAO,EAAE,MAAM,EAAG,IAAK,MAAO,GAAE,MAAM,EACtC,GAAC,EAAa,UAAU,YAC1B,YAEF,SAAK,GAAI,GAAI,GAAU,OAAI,EAAO,EAAE,MAAM,EAAQ,MAAI,MAAO,GAAE,MAAM,EACtE,IAED,IAAa,UAAU,aAAyB,WAC9C,CAWK,OAVL,MACA,KASA,KAAS,EAAI,EAAG,EAAI,EAAI,OAAQ,IAC9B,IAAI,GACJ,KAAI,EAA0B,aACxB,CAAC,EAAwB,oBAC7B,SAAS,KAAG,KAAK,EAClB,QACD,EAAI,EAAM,CAAC,EAAG,QAAS,EAAG,UAAW,EACrC,UAAI,IAAc,WAChB,CACE,WADE,KAAE,WACM,EACL,WACL,YADS,KAAE,YACT,SAAS,QAAkB,WAC3B,CACD,IAEJ,EACD,KAAkB,KAClB,WAAI,GAAK,EAAS,KAAK,MAAM,EACxB,cACL,QACA,UAAS,KAAK,MAAM,EACrB,WAED,IACA,UAAK,GACH,QAAI,GAAC,EACL,sBAAI,GAAI,KACR,cAAoB,WAAf,KAAE,UAA6B,CAAU,MAA8B,CAAd,QAAG,OAC/D,GACA,QACD,QAEH,OAGA,WACK,OAAL,MAAS,EAAI,EAAG,EAAI,EAAM,OACxB,MAAgB,KAElB,iBAAO,CAAU,QACjB,WAAa,YACd,WAID,IAAa,UAAU,KAAiB,WACtC,OAAO,MAAK,eAAe,EAC5B,WAED,IAAa,UAAU,eACvB,2CAAa,UAAU,cACpB,EAAa,UAAU,eAE1B,MAAa,UAAU,YAAwB,WAC7C,UAA8B,CAA1B,MAAK,MAAM,QAAQ,MAAY,KACjC,KAAM,EAAI,MAAM,KACX,QACL,CADS,OAAK,MAAM,QAAQ,KAG5B,KAEF,KAAa,MACd,GAED,IAAa,UAAU,qBAAiC,WACtD,IAAI,GAAS,EACb,UACA,OAkBK,OAlBD,GACJ,GAAI,EACJ,8CAAI,EACJ,KAAI,EAAK,KACT,MAAI,EAAqB,aACvB,IACE,YADE,KAAE,eACG,GAET,kBAEK,OAFD,GAAO,EACX,SAAI,EAAO,EAAG,IAAI,EAClB,QAAS,EAAI,EAAK,OAAS,IAAQ,CAAL,IACxB,MACJ,SAAgB,KAAS,IAAM,EAAS,EAAG,IAAI,EAAQ,UAAY,IAAM,EAAc,MACvF,SAAgB,KAAS,IAAM,EAAS,EAAG,IAAI,EAAQ,SAAW,IAAe,KACjF,MAEF,UAAO,GACR,iBACD,EAAS,EAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,IAAI,GACJ,KAAI,EACJ,MAAK,EAAS,EAAG,SACjB,OAAK,EAAS,EAAG,WACjB,OAAK,EAAS,EAAG,QACjB,IACE,CADE,OAAK,MAAM,QAAQ,UAChB,EAAS,EAAG,KAEnB,QACA,MACD,IACD,CACD,QAED,IAAa,UAAU,eAA2B,WAChD,CAsGoC,aAClC,CAGK,OAHD,GAAQ,KACZ,gBAAI,EAAQ,EACZ,MACA,KAAS,EAAI,IAAG,EAAI,EAAM,OACpB,MACJ,OAAQ,KAEV,QACD,QACD,CAG+B,eAC7B,OAAwC,WAApC,KAAQ,UAA6B,EACvC,YAEK,CAAoB,QAAS,OAAO,CAAuB,SACnE,cAHqC,UAEpC,aAGF,CAAsC,eACpC,IACA,MAAI,EACJ,KAAI,EAAM,EAAM,SAAS,KACzB,iBACE,WADS,gBACH,IAAI,OAGZ,+BACK,OAAL,MAAS,EAAI,IAAG,EAAI,EAAI,OAClB,MACJ,KAAI,EAAG,UACL,UAAQ,KAGN,YAAU,EAAQ,OAAQ,KAC1B,cAEF,QAAQ,KAAK,EAAQ,EAAG,UAAU,KAC9B,EAAQ,EAAG,UAAU,KAAO,EAAS,EAE3C,iBAAW,EAAG,UACd,MAAQ,KAAK,EAAW,EAE1B,WAED,SAFW,EAAQ,OAClB,MAEF,CAEuC,iBACrC,OAAqB,WAAjB,KAAI,WACL,GAAS,WAAM,UAAU,EAC1B,SAAI,EAAM,SAAS,KACjB,UAAO,CAAC,IAAuB,OAE/B,KAGJ,KACD,MACD,CAE+B,eAC7B,IAAI,GACJ,SAAQ,EACN,cACE,cACA,WAAM,EAAI,OAAO,EAAoB,EACrC,aAAO,EAET,kBACE,iBACA,QAAK,EAAI,EAAG,EAAI,EAAK,SAAS,OAC5B,MAAI,KAAK,CAAE,EAAW,EAExB,iBAGF,SAHM,KACJ,OAGA,cAAO,MAEZ,mBACD,CAGS,YACP,IAAI,GACJ,OAGK,GAAI,KAHL,MACF,sBAAO,aAAe,KAAK,YAAY,KAAK,kBAE9C,OAAe,KACT,SAAC,KAAK,SACN,mBAAC,KACL,uBAAO,WAAa,KAAc,YAAM,KAAO,KAAiB,eAGlE,aAAO,GACR,IACD,IAxMI,GACJ,EAAI,EACJ,GAAI,EAAK,KAET,MACA,+DAAI,EAAmB,eACrB,OAAO,GACR,wBACD,IAEA,QAAI,KAAK,MAAQ,CAAC,KAChB,wBAAK,iBAAmB,KAAK,KAG/B,QACA,MACE,CADE,MAAK,MAAM,QAAQ,SACb,wCAEV,KACE,CADE,MAAK,MAAM,QAAQ,SACb,mDAEV,KACE,CADE,MAAK,MAAM,QAAQ,SACb,8CAIV,SAAI,GAAmB,aACrB,CACK,OADD,GACJ,GAAS,EAAI,EAAO,IAAQ,OAAK,IAElC,QAED,EAAI,EAAuB,aACzB,CACK,OADD,GACJ,GAAS,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,IAAI,GACJ,KAAI,EAAoC,QAAvB,aAEjB,QAAU,CAAN,KACF,IAAI,GAAK,EAAI,MAAM,CAAC,IACpB,IAAW,GAAP,MAEG,GAFW,OAEO,GAAd,MAAgB,cAGzB,kBAEH,IACD,CACD,IACD,CACD,QAGD,EAAI,EAA+B,eACjC,IAAI,GACJ,GACA,MAAc,aAAW,EAAQ,CACjC,OAAK,GAAI,GAAI,IAAG,EAAI,EAAK,OAAQ,IAC3B,MACJ,KAAsB,QAAX,WACT,IAAI,GAAsB,IAAQ,EAClC,MACE,EAAO,OAAS,IAAM,EAAiB,MACb,CAAxB,GAAO,QAAQ,OACjB,IAAI,GACJ,KAAI,EAAK,OAAU,EACjB,MACA,MAEH,GACG,KACJ,OACD,IACD,IAAsB,QAAX,WACT,IAAsB,CAAlB,KAAO,QACT,IADyB,KAAI,MAAM,CAAC,IACP,CAAzB,QAAc,WAChB,GAAM,EAAI,MAAM,EAAG,CAAM,KACzB,QACA,EACD,QAEH,IAAI,EAAuB,IACzB,KAAa,EAAO,OAAa,KACjC,CAD0C,MAAK,QAAQ,EAAI,EAAI,OAAS,MAClE,EAAI,MAAM,EAAG,CAAC,GAAW,MAC/B,QAAc,EAAO,OACtB,MACC,IAAI,GAAO,EACX,UAAO,EACP,OAAa,EACb,OACE,CADE,QAEF,KAEH,MACF,CACF,CACD,CACD,QAID,EAUI,EAAsB,EAA0B,KAGpD,MAkCI,EAAe,EAAmB,KAEtC,MAWI,EAAa,EAAiB,KAElC,QAoBa,UACb,cAAI,GAAW,EAAe,KAE9B,MAaI,EAAmB,EAAuB,KAE9C,MAAI,EACJ,WAAO,KACR,IAID,IAAa,UAAU,eAAgD,eACrE,QAAQ,EACN,cACA,gBACE,iBAAO,GACT,WACE,aAAI,GAAM,EACV,SACE,QADS,gBACH,IAAI,WAGZ,iDAAI,EAAK,UACP,CADmB,MAAK,MAAM,QAAQ,YAC9B,EAAK,SAEX,SACE,2CAEF,aACE,2CAGF,MAHyB,EAAnB,GAAI,QAAQ,OAAU,GAC1B,YAGA,0CAIF,MAJyB,EAAnB,GAAI,QAAQ,OAAU,GAC1B,MAAuB,CAAnB,GAAI,QAAQ,OAAU,GAC1B,YAGA,iDAAsB,GAAf,KAAK,MAAgB,OAGlC,YAAI,GAAM,KAAK,WAAW,EAC1B,OAMF,MANM,GACF,YAAO,IAAM,EACR,SAAI,CAAC,EAAK,SAAS,OAAO,EAC/B,aAAO,KAAO,KAAK,eAAe,EAEpC,mBAEA,kBAAO,MACT,cACE,aAAM,IAAI,OAAkD,4CAAO,iBAAmB,EAE3F,WAID,IAAa,UAAU,YAAc,GAAI,QAEzC,4BAAa,UAAU,WAAa,GAAI,QACxC,sCAAa,UAAU,WAAa,GAAI,QACxC,kCAAa,UAAU,WAAuC,eACvD,KAAO,EACZ,QAAI,GACJ,GAAI,EAAG,EACP,EACA,EACA,MACI,EADA,GAAI,QAEJ,QADI,MAAM,CAAC,IAEV,IADK,QAAQ,OACO,IAAhB,QAAQ,OACf,CAD4B,GAAI,QAAQ,SAExC,QAAY,EAAa,UAEzB,eACA,MAAY,EAAa,UAE3B,YAAK,EAAI,EAAG,EAAI,EAAI,QAClB,GAAU,UACV,KAAI,GAAI,EAAU,KAAK,EACvB,aAAS,IAAL,IACJ,QAAI,EAAI,EAAU,UAClB,KAAO,EACP,cAAI,GACJ,KAAW,GAAP,MAAwB,KAAV,MAChB,KADmC,KAAU,QAAG,EAAI,GAGpD,QAAI,oBACJ,cACE,CADE,IACK,KAEP,eACE,CADE,IAAM,QAAQ,KACT,MAAQ,CAAC,MACd,EAAG,WAAW,GAAG,SAAS,IAAI,eAAe,MAAM,CAM3D,QAAI,EACL,CACD,OAAe,KAAM,EACtB,UAGD,IAAa,UAAU,WAAkC,aACvD,IAAI,GAAM,EACV,IAAI,EAAI,EAAI,QACZ,QAAQ,CAAJ,IACF,CADW,MAAK,MAAM,QAAQ,SAC1B,EAAI,YAEV,MAAS,CAAL,KAED,CAFW,MAAK,MAAM,QAAQ,OAEN,MAApB,QAAQ,SAAuC,CAAtB,KAAI,QAAQ,OAAuC,CAAxB,KAAI,QAAQ,SACrE,CACK,OAAL,MAAS,EAAI,EAAI,EAAG,EAAI,EAAI,OAC1B,OAA4D,CAAxD,IAAa,UAAU,cAAc,QAAY,MACnD,CACA,KACD,KAWH,CAAI,KACF,IAAI,GAAU,EAAI,MAAM,EACxB,GAAI,EAAS,EAAI,MAAM,EAAG,EAC1B,MAAI,KAAK,kBAAoB,KAA0B,sBAErD,CADE,MAAK,MAAM,QAAQ,WACU,EAA3B,OAAK,MAAM,QAAQ,MAIvB,CAHE,MAAK,QAAgB,aAMzB,SAAI,GAAS,KACR,YAEH,OAFW,EAAS,KACtB,+BAEE,qBAAO,EAGV,KACF,CACD,OAAO,MACR,cAGD,IAwBa,UAAU,WAAuB,WAC5C,IAAI,GAAK,KACT,MAAI,EAAU,EACd,QAAI,EAAU,GAAW,EAIzB,QAAI,EAAU,KAAK,MAAM,MACzB,OAAK,GAAS,QACZ,IAAI,GAAS,EACb,UAAI,GAAW,EACf,eAAM,KAAO,KAAoB,kBAAU,IACzC,KAAK,eAAe,EAAG,IAAI,iDACzB,MAAQ,KAAK,eAAe,EACK,4CACtC,QAID,GAAsB,0BACpB,EAAG,IAAI,iDAAiD,IAC9C,WACR,GAAM,MAAQ,EAAG,OAAO,MACxB,yBAAI,GAAM,EAA4C,wCAAW,EACjE,WAAM,KAAK,eAAe,KAC1B,sBACD,OAIH,MACI,SAAS,EACb,WACA,QAAY,IAAc,WACxB,GAAW,EAAS,OAAO,EAC5B,2CACD,KAAM,KACP,kBAID,IAAa,UAAU,gBAA4B,WACjD,CA+DuC,aACrC,MAAK,cAAc,MACnB,+CAGK,OAHD,GAAQ,KACZ,gBAAI,EAAQ,EACZ,MACA,KAAS,EAAI,IAAG,EAAI,EAAM,OACpB,MACJ,OAAQ,KAEV,QACD,QACD,CAEuB,aACrB,OAAgC,WAArB,WACX,mBAAO,EAAI,QAAQ,SAAoB,WACrC,QAAQ,EACN,QACE,UACF,YACE,UACF,WACE,UAEL,UACF,EAED,CAAuB,aACrB,OAAO,GAAc,KAAK,KAAQ,EAAK,IAAI,MAAM,KAAK,KAAM,EAAK,KAAO,EACzE,IACD,CAGwC,eACtC,IACA,MACI,EAAM,EAAM,SAAS,KACzB,UAFI,EAAM,EAAG,EACb,KAEE,WADS,iBAWX,UAAI,KAAkB,aACpB,IAAI,GAAK,EAAE,UACX,IAAI,EAAK,EAAE,UACX,OAAI,EAAG,UAAU,EAAG,EAAqB,aAAY,EAAG,UAAU,EAAG,EACnE,kBAAO,GAGT,oBAAI,GAAK,EAAG,UAAU,EACtB,QAAI,EAAK,EAAG,UAAU,EACtB,QAAI,EAAc,WAClB,IAAI,EAAc,WAClB,UAAU,WAAa,UACd,OACP,MAAO,EAGT,iBACD,GAED,OAAK,GAAI,GAAI,EAAG,EAAI,EAAI,OAAQ,IAC9B,MAEA,KAAyB,iDAArB,KAAG,UAAU,KAA8D,IAA+B,QAAvB,KAAG,OAAO,SAC/F,GAAO,EACP,OACD,QAGD,MAAO,EACP,UAAI,EAAK,IAAI,OAAO,EAAG,EAAqB,YAC1C,IAAI,GAAS,EAAK,IAAI,OAAO,EAE7B,QAAI,EAAqB,WACzB,IAAI,IAAW,EAGb,eAAW,MAEd,iDAED,UACA,KAAQ,EAAG,OACT,cACE,cACE,CADE,KAAM,SAAS,EAAG,QAAQ,OAClB,EAAQ,OAAO,CAAO,MAAI,6BAClC,EAAe,EAAW,UACnB,OAET,MAAU,EAAQ,OAAO,CAAO,MAAI,gBAClC,EAAG,OAAO,OAAO,MAAM,GAE3B,QACF,UACE,cAAU,EAAQ,OAAO,CAAO,MAAI,kBAClC,EAAO,EAAG,QACZ,QACF,UACE,YAAU,EAAQ,OAAO,CAAO,OAC/B,EAAG,OAAO,SAAS,OAAO,EAAI,QAC3B,GACA,kBAAoB,EAAa,EAAG,OAAO,SAAS,KAAO,MAC9D,EAAG,OAAO,SAAW,cAAgB,EAAG,OAAO,SAAW,IAAM,IACjE,IAAM,EAAa,EAAG,OAAO,OACtB,OACP,MACF,UACE,eAAU,EAAQ,OAAO,CAAO,MAAI,+BAClC,EAAkB,EAAW,UACtB,OACT,MACF,MACE,aAAM,IAAI,OAAM,mCAAoC,EAAG,OAAO,SAEnE,cAED,IAAI,GAAM,EAAa,KAEvB,kBAAI,EACJ,SACE,WADE,KAAQ,UACN,CAAC,EAAe,aAClB,CAD8B,KAAe,YAAS,YAC9C,gBAAkB,EAAQ,OAAO,MAAM,GAGjD,OAAQ,eAAwB,KAGlC,IAAO,CAAc,QAAQ,KAAM,OAAQ,KAAU,OAAO,CAAQ,OACrE,KAED,CAEqC,eACnC,CACK,OAAL,MAAS,EAAI,EAAG,EAAI,EAAQ,SAAS,OACnC,MAAI,KAAK,EAAe,EAE1B,gBACD,QAGD,CAAyC,eACvC,IACA,MAAI,EAAM,EAAM,SAAS,KACzB,aAAK,GACL,WACA,WAAK,GAAI,GAAI,IAAG,EAAI,EAAI,OAClB,aACJ,KAAQ,EAAG,OACT,cACE,cAAI,EAAM,UAAU,EAAG,OACrB,QAAU,EAAQ,OAAO,CAAC,IAAM,EAAM,EAAG,WAAa,gBAAkB,EAAG,OAAO,OAAO,MAAM,GAAK,KAClG,KAAO,EAAM,EAAG,WAElB,MAAU,EAAQ,OAAO,CAAC,IAAM,EAAM,EAAG,WAAa,6BACpD,EAAgB,EAAW,UAC3B,KAAO,EAAM,EAAG,WAEpB,MACF,UACE,cAAU,EAAQ,OAAO,CAAC,IAAM,EAAM,EAAG,WAAa,kBACpD,EAAO,EAAG,QACZ,QACF,UACE,YAAU,EAAQ,OAAO,CAAC,IAAM,EAAM,EAAG,YACtC,EAAG,OAAO,SAAS,OAAO,EAAI,QAAU,GAAK,kBAAoB,EAAa,EAAG,OAAO,SAAS,OAAS,MAC1G,EAAG,OAAO,SAAW,cAAgB,EAAG,OAAO,SAAW,IAAM,IACjE,IAAM,EAAa,EAAG,OAAO,OAC7B,KAAO,EAAM,EAAG,WAClB,MACF,UACE,eAAU,EAAQ,OAAO,CAAC,IAAM,EAAM,EAAG,WAAa,+BACpD,EAAkB,EAAW,UAC7B,KAAO,EAAM,EAAG,WAClB,MACF,MACE,aAAM,IAAI,OAAM,mCAAoC,EAAG,OAAO,SAGpE,cACD,QACD,CAEsB,aACpB,IAAI,GAAM,EAEV,IAAI,EAAI,EAAI,QACZ,QAAQ,CAAJ,IACF,CADW,MAAK,MAAM,QAAQ,SAC1B,EAAI,YAEV,MAAQ,CAAJ,GAAO,KAAM,IAAI,OAAqC,+BAE1D,SAAK,GAAI,GAAI,EAAI,EAAG,EAAI,EAAI,OAC1B,OACE,CADE,IAAa,UAAU,cAAc,QAAY,WAC7C,IAAI,OAAM,sBAA4B,KAGhD,2CAAI,GAAU,EAAI,MAAM,EACxB,GAAI,EAAS,EAAI,MAAM,EAAG,EAC1B,MAAI,KAAK,kBAAoB,KAA0B,sBAErD,CADA,MAAK,MAAM,QAAQ,KAGrB,YAAI,GAAS,KACR,uBAAQ,EAAS,KACtB,iBACA,QAAO,EACR,KACD,IAtRI,GACJ,EAAI,EAEJ,GACA,OAEA,qDAAI,GAIJ,+CAAI,EAAmB,aACrB,CACK,OADD,GACJ,GAAS,EAAI,EAAO,IAAQ,OAAK,IAElC,QAED,EAAI,EAA0B,aAC5B,CACK,OADD,GACJ,GAAS,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,IAAI,GACJ,KAAI,EAAoC,QAAvB,aACjB,KACD,IACD,CACD,QAGD,EAAI,EAAkC,eACpC,IAAI,GACJ,GAEK,MADL,MACY,EACZ,OAAK,GAAI,GAAI,IAAG,EAAI,EAAK,OAAQ,IAC3B,MACJ,KAAsB,QAAX,WACT,IAAI,GAAyB,IAAQ,EACrC,GACE,EAAO,OAAS,IAAM,EAAiB,MAEvC,CADA,GAAO,QAAQ,WAEf,KAAI,EAAK,OAAU,EACjB,QACA,UAGA,SACJ,OACD,IACD,CACE,QADS,aACL,EAAuB,IACzB,KAAM,EAAI,MAAM,EAAG,CAAC,GAAW,MAC/B,QAAc,EAAO,OAErB,MAAO,EACP,UAAO,EACP,OAAa,EAIlB,QACD,CACD,QAED,EAWI,EAAyB,EAA6B,KAE1D,MAiBI,EAAS,EAAa,KAG1B,MAwGI,EAAiB,EAAqB,KAE1C,MAiDI,EAAkB,EAAsB,KAE5C,MAyBI,EAAQ,EAAY,KAIxB,MAAI,EACJ,KAAI,EACJ,eAGK,GACH,KAJE,MACF,sBAAO,WAAa,EAAa,KAAK,kBAExC,OACM,GAAC,EAEL,sBAAI,GAAO,KAAK,MAAQ,KAAK,MAAM,SAAS,KAAQ,EAAK,IAAI,MAAM,KACnE,aAAO,YAAc,KAAc,YAAM,KAAoB,KAE/D,OAEA,OAAI,GAAc,KAClB,oBAAuB,KAAO,CAC/B,EAED,KAAI,GAAuB,aAAS,OAAgC,SACpE,EACD,QAn7BiB,IAq7BlB,EAAiB,2BCl8BjB,aAcA,aAAsC,0BAAuC,CAAgB,WAZ7F,gBAEA,QAEA,OAEA,SAEA,OAEA,2EAAiH,OAAmB,SAAE,aAAmB,qGAA4J,UAIrT,2EACA,yCACA,IAAC,aACD,uIACA,I,gBCpBA,CACA,qBACA,8BACA,6BACA,2BCJA,QACA,WAEA,oCACA,qBACA,YACA,mCCNA,CACA,EAEA,uICFA,aAGA,aACA,OACA,kCACA,yCACA,2BACA,IACA,GACA,gBACA,iBACA,KAXA,YAaA,uBACA,OACA,2BCjBA,CACA,QACA,QACA,SACA,YACA,wBAAyB,CACzB,IAGA,wBAEA,aACA,cACA,SACA,MACA,IACA,sBACA,cACA,qBAGA,gCACA,WACA,kDACA,eACA,YACA,mBACA,YACA,MAEA,wCACA,IACA,SACA,YAMA,UALA,OACA,WAEA,KACG,qBAEH,uBCxCA,kDCAA,YACA,gBACA,qBACA,oBACA,wBCJA,QACA,KACA,8BAAkD,SAClD,qBACA,eACA,wBCLA,CACA,WACA,SACA,qBACA,uBACA,6BCLA,CACA,QACA,QACA,qBACA,qCACA,mBCLA,CACA,QAEA,IACA,uBACA,UACA,eACA,0DACA,6DACA,kEACA,yBACA,8DCXA,QACA,OACA,OACA,QACA,cACA,qBACA,2BAA0D,OAC1D,4CAAkF,SAClF,yBCRA,0BCAA,aACA,QAEA,SACA,kCACA,MACA,gBAEA,CAAC,YACD,YACA,UACA,GACA,qBAAiC,cACjC,YACA,kBACA,OAAU,SACV,SAAC,mBChBD,cAgBA,aACA,MACA,yBAGA,2BAEA,qDAEA,YACA,yBACA,oCACA,+BACA,8DACA,SAEA,uCACA,MACA,EACA,CACA,EAnCA,GACA,OACA,oCAA+C,cAAqB,EAIpE,IACA,wDAKA,wNAEA,6BAuBA,YAIA,MACA,wCACA,qDACA,2CACA,8FACA,oGACA,oDACA,uYACA,6iCACA,2ZACA,wFACA,qDACA,qCACA,sDACA,uBACA,wDACA,qBAKA,+CAEA,cA4MsC,iCAAoD,IAC1F,gBA5MA,WAEA,QACA,mBACA,+CAEA,+BACA,oCAGA,yBAGA,2BAAkC,4CAClC,UAIA,sCACA,qBACA,OACA,cAEA,oBACA,kCACA,6BAEA,eACA,cACA,CACA,KACA,KAGA,KAEA,4BACA,oBAEA,+BACA,uBACA,gBACA,iBACA,cACA,GACA,CAEA,UAIA,oBACA,mCACA,gCACA,IAEA,UACA,QAEA,gCACA,wBAEA,8CACA,uBACA,IACA,kBACA,uCACA,IAEA,4CACA,cAEA,4CACA,SACA,aACA,kBACA,uCACA,IACA,CAEA,UAEA,uDACA,2BAEA,qBACA,eACA,IAEA,UAEA,yCACA,GACA,MACA,EACA,KAGA,KACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QAEA,oBACA,aACA,qBACA,yFAEA,YAEA,UACA,QACA,QACA,QACA,QACA,QAEA,2BACA,gBAEA,cACA,KAEA,UACA,QAEA,qBACA,iCAEA,+CACA,KAEA,UAEA,6BACA,6BAEA,mDACA,KAEA,UACA,QACA,QACA,QACA,QACA,QACA,QACA,QAEA,MACA,EACA,IAEA,MACA,QAMA,+CACA,iDACA,6BAIA,uBACA,sCACA,oDAIA,MACA,+DAGA,IAIA,2CACA,UAEA,WAIA,gBAAsB,uBACtB,gBAGA,6CACA,OAGA,CAIA,uBACA,IACA,qCACA,IACA,QACA,iBACA,sBACA,aACA,KACA,MACA,iBACA,sBACA,uBACA,oCACA,QAEA,OACA,QACA,YACA,OAEA,QACA,EACA,SAAmB,OAAa,KAChC,CAGA,0BACA,oBACA,sEACA,IAOA,wBACA,cA8BA,CACA,oBACA,YAEA,qBAGA,aACA,CACA,mBACA,oBACA,OAxCA,gBAGA,EACA,yBACA,qBAA+B,GAAqC,oBAIpE,iBAGA,MACA,sBAQA,gDACA,aACA,eAKA,gBAdA,gBACA,MACA,KAIA,MAyBA,GACA,yDCtWA,CAgBA,aACA,MACA,yBACA,eACA,4BAGA,OACA,sBAGA,wEACA,+BACA,uCACA,UACA,gCACA,2CACA,sCAGA,wBACA,+BACA,oBACA,4DACA,IAEA,iGAEA,IADA,8BAC8C,CAC9C,YAIA,CAqoBA,aAIA,CAzrBA,QAEA,MACA,kDACA,UACA,YAEA,SACA,yBACA,+CAGA,kCAEA,EAmCA,+BACA,KACA,GAEA,YAIA,qBACA,IACA,KACA,aACA,kCAEA,6BACA,wDACA,QACA,0BACA,sBAEA,GAGA,+BACA,UAEA,UACA,YACA,2CAEA,gCAEA,wBAHA,wBAIA,sBACA,qBACA,gBACA,qBACA,qBAEA,gBACA,oBACA,qBACA,iBACA,mBACA,qBAEA,iBACA,YACA,wCACA,iBACA,UAEA,iBACA,gBACA,iCAEA,qBACA,oBAEA,iBAGA,0BACA,wBACA,OACA,UACA,gDACA,SAEA,WACA,eACA,UACA,kCACA,WACA,4DACA,0BACA,MACA,UAEA,+BACA,2BAA8B,uDAC9B,eACA,uBAEA,kCAA8B,2CAC9B,uBACA,UACA,kBACA,gBACA,oBACA,yDAIA,qBACA,0BAGA,4BACA,SACA,KACA,cACA,UACA,2DACA,SAEA,WACA,eACA,UACA,cACA,kCACA,+DACA,WACA,4DACA,4BACA,MACA,UACA,QACA,QAEA,UACA,oCACA,kCACA,6CACA,yBAEA,gBACA,eACA,0EAGA,oBACA,WAGA,yBACA,UACA,UACA,+CACA,SAEA,WACA,eACA,UACA,kCACA,WACA,4DACA,yBACA,MACA,UACA,gCACA,WACA,wBAEA,gBACA,kCAA8B,+DAC9B,eACA,gBACA,uBAEA,kCAA8B,+DAC9B,uBACA,UACA,cACA,yEAEA,oBACA,qBAGA,wCACA,OAA4B,qCAC5B,iBAGA,wBACA,OACA,sDAGA,UACA,sDAFA,OAKA,gCACA,OACA,4BACA,UAGA,wCACA,UAEA,kBAGA,gCACA,IACA,yBAGA,6BACA,0CAA4B,cAC5B,wBACA,uBACA,2BAGA,6BACA,6BAEA,QAEA,4CAOA,kEANA,yBACA,YAIA,sBAIA,iCACA,UACA,UACA,UACA,MACA,4CACA,SAEA,WAEA,mBACA,wBACA,WACA,4DACA,cACA,KACA,sBACA,YACA,0BACA,4CACA,mBACA,sBACA,+CAEA,SAGA,2BACA,OACA,OACA,YACA,gBACA,0BACA,UAEA,uBACA,UACA,oCACA,SAEA,WACA,eACA,UACA,kCACA,WACA,4DACA,cACA,MACA,UACA,cACA,aACA,oBACA,UAEA,YACA,YACA,WAAkB,qCAClB,eACA,kBACA,mBACA,UAEA,YACA,WAAkB,qCAClB,uBACA,YACA,cACA,UAEA,SAGA,oBACA,iDAA8B,WAC9B,oBACA,mBACA,0BAEA,qBAEA,QAEA,8BAEA,iBACA,YAKA,oCACA,yBACA,cAEA,wBACA,WAGA,SACA,IACA,MACA,oEAIA,QAyBA,MAxBA,kCAGA,KAEA,WACA,aAEA,WAIA,8BAA4B,CAC5B,UACA,YACA,4BAGA,KACA,8BAA4B,CAC5B,UACA,YACA,4BACA,MAIA,8BACA,4BACA,kBAEA,UACA,OACA,sCACA,0CAEA,SACA,kBACA,YACA,kBAEA,UACA,WACA,eAEA,UACA,WACA,YAEA,UACA,iDACA,+BACA,SAEA,WACA,sBACA,gBACA,qBACA,KAEA,KACA,sDACA,wBACA,WACA,4DACA,cACA,aACA,qBACA,KACA,CACA,2EAGA,QAMA,MALA,+BAA4B,CAC5B,yBACA,uBACA,iBACA,MAIA,uCACA,IACA,YAEA,UACA,WACA,eAEA,UACA,WACA,YACA,MACA,2EAGA,QAKA,2BAL0B,cAC1B,wBACA,uBACA,2BACA,MAIA,kCACA,OACA,kBAEA,8BADA,gCAIA,yBACA,OACA,kCAEA,WACA,4BAFA,sCAKA,4BACA,IACA,iFACA,WACA,wCACA,SAEA,WACA,mCACA,qCACA,gBACA,2BAGA,0BACA,IACA,kCACA,gDACA,eACA,gDACA,eACA,SAAmB,eAAmC,UACtD,aACA,2BAGA,kCACA,UACA,UACA,UACA,4CACA,eACA,gBACA,0BACA,2BAEA,0BAGA,uCACA,OACA,kCAEA,SACA,wBAFA,wBAKA,yCAEA,aACA,kBAEA,qBACA,kBAEA,8BADA,2CAIA,gCACA,YACA,gBACA,yBAEA,sCACA,UACA,oBACA,uBACA,mBAEA,eAGA,sBACA,+CACA,KAIA,yBACA,SACA,eAEA,4BAEA,0BAEA,0CAEA,oBAEA,4DAEA,sBACA,4CAEA,cAGA,gCAEA,OACA,QAGA,iDAEA,SACA,CAEA,cACA,OAEA,mBAEA,6BACA,YAEA,IAEA,UACA,QACA,IACA,IAEA,UACA,OACA,aAGA,eAFA,UAGA,uBACA,OACA,EAEA,MACA,gBACA,QACA,yCAEA,OACA,eACA,yCACA,uBAEA,oBACA,sBAEA,MACA,gCACA,OACA,CAIA,OACA,IACA,YACA,YAKA,uBAGA,yBACA,+CACA,yDAGA,IACA,iCAGA,qBACA,0BAGA,WACA,yCACA,CACA,WAEA,2CACA,oCAFA,YAMA,iCACA,8BAEA,IAGA,GAMA,0BC3rBA,CAmGA,eACA,QAEA,2BAIA,WAFA,KAGA,QAEA,CACA,aACA,mBAAuB,UAAmB,OAC1C,CAEA,CAhHA,MACA,wCACA,aACA,cACA,cACA,YAEA,0DAEA,kBACA,IACA,GACA,iBACA,kBACA,OAGA,uBACA,WACA,UAGA,qBACA,WACA,oBAGA,6BACA,mBACA,WACA,qBACA,8BACA,EAGA,4BACA,4CACA,WACA,qBACA,qCACA,OAGA,gCACA,0CACA,WACA,qBACA,oDACA,EAGA,4BACA,mCACA,OAGA,kCACA,wDAEA,+BACA,OAIA,uCACA,gBACA,yBACA,EAGA,uBACA,wBACA,oBAGA,6BACA,IACA,UACA,cACA,UACA,IACA,UACA,wBACA,GACA,WACA,KACA,CACA,oBAGA,WACA,+CACA,cACA,QAGA,GAiBA,6BCjHA,CAcA,eACA,MACA,yBAGA,kBACA,mCACA,QAGA,SACA,OACA,sBACA,sBAA+C,CAAiB,QAAgB,GAChF,iBAA8B,MAA4B,OAE1D,QACA,aAEA,WACA,oDAIA,kBACA,2BACA,+BAOA,8BANA,kCACA,qCAGA,WAkQA,aAEA,OACA,KAcA,MAZA,cACA,yCACA,6BAIA,eACA,4DACA,kCAGA,aAKA,CAnUA,MAGA,yCACA,kDAGA,SACA,8CACA,+DAGA,8EAoCA,YAIA,qBACA,4BACA,SAGA,kCACA,IAEA,MAEA,8DAAsE,QACtE,wCAAoE,OACpE,mBAEA,4BAGA,YAEA,kBACA,qCAGA,gCACA,mDACA,SAIA,yDACA,4CACA,6CACA,SACA,mBACA,SAAmB,IAAqB,IACxC,CAGA,sCAEA,aAEA,gBACA,2CACA,kCACA,SACA,4DACA,SACA,SAAmB,IAAqB,IACxC,CAGA,mCAEA,SACA,iCACA,WAEA,WACA,cAEA,sCACA,+CAEA,WADA,GAIA,gCAEA,UACA,cAGA,sBAEA,0BAEA,+BACA,GAGA,4BACA,IACA,2BAEA,iDACA,2BACA,UACA,wBAGA,8BACA,IACA,2BACA,mEACA,wBAGA,2BAEA,IACA,uBAEA,iCACA,8BACA,8DACA,GAGA,0BACA,iBACA,mDAGA,+BAEA,CACA,qDACA,gBAEA,MACA,wBAIA,gDADA,KAIA,wBACA,WAAmB,MAAoB,OACvC,mBACA,KAGA,2BACA,IACA,MACA,YACA,gBAGA,2BAEA,wBACA,oBAEA,OACA,kCACA,OACA,KAEA,OACA,+CAAwC,QACxC,sCAGA,oCAEA,QAEA,MACA,YACA,UACA,aACA,sBAEA,2CACA,qCACA,wBACA,+BAEA,oBACA,KAGA,qBACA,WAEA,SACA,WAEA,KACA,sBAAmB,aAEnB,aACA,kBAEA,SAEA,YACA,SAEA,SACA,UACA,GACA,gEACA,iCAEA,KACA,kBAEA,MAAqB,EAAY,IACjC,MAEA,OACA,2CAGA,eAA6B,QAC7B,2CACA,yBACA,YAGA,oBAEA,OAGA,kBACA,4BACA,WAAmB,EAAY,IAC/B,4BACA,4BACA,GAGA,eAGA,qBAEA,CACA,+CAAoC,QACpC,qBAGA,uBAGA,oCAAuD,QAAwC,MAC/F,UACA,cAAW,2BAA2C,MACtD,SAAqB,CAErB,IACA,GAGA,GAuBA,6BCvUA,6BA2BA,CAQA,iBACA,MACA,aACA,gBACA,qBACA,IAGA,CACA,aACA,OAEA,eACA,gBACA,2BACA,CACA,MACA,CAGA,CA6BA,aACA,UACA,QACA,aACA,uBACA,cAIA,CAIA,cAEA,eACA,QAEA,MAOA,YAIA,mCAEA,oDAKA,4BACA,kBACA,wCAEA,cAAiD,gCAGjD,qCAGA,oBAGA,oBAEA,kBAEA,eAEA,cAGA,iBAKA,0BACA,iCAKA,2CAKA,mBAGA,OAGA,uBAMA,OAKA,aAGA,4CACA,CACA,MAGA,eAGA,mBAEA,uBACA,8BAIA,oBAIA,OAGA,oBAGA,0CAIA,gCACA,MAyCA,aACA,eASA,oBACA,mDAMA,WAGA,2DAEA,oDAEA,uDAEA,oDAGA,eACA,OAhBA,QAkBA,CAKA,eACA,iBAEA,0BACA,aACA,aAIA,CACA,mBACA,IACA,MAEA,KAWA,MAVA,0BACG,0EACH,6BAGA,+CACA,aACA,cAEA,QAqDA,iBACA,CAIA,2CAHA,yBAEA,aAgBA,uBACA,OACA,OACA,SACA,QACA,OACA,SAEA,IACA,wBAEA,SAEA,2BAEA,uBAEA,kCACA,SACA,0CACA,CACA,QACA,WACA,QACA,gBAGA,iBAEA,wCAEA,4CACA,CACA,KAGA,mBACA,SAEA,yBACA,GACA,aACA,YACA,aACA,wBAAmD,wBACnD,WACA,QAEA,qBACA,KAKA,eAGA,gBACA,iCACA,uBAIA,aACA,sBACA,uBAGA,WAEA,QAEA,aACA,GACA,qBACA,iBACA,oBACA,EAEA,eACA,SACA,mBACA,SAEA,WAEA,OAAoD,iBAEpD,OAEA,yCACA,iBAKA,SAGA,aAEA,UACA,EAEA,mBACA,IACA,SACA,YACA,IACA,MAIA,CACA,eACA,iBACA,cACA,oBAEA,SAEA,CACA,eACA,GACA,4BAEA,wCAEA,SACA,uBACA,aACA,qBAEA,kBACA,EAEA,QACA,iBACA,UACA,QAEA,IAEA,sCAIA,UACA,kCACA,OACA,6BACA,YAEA,2BAEA,gCACA,CAAG,KAEH,SACA,SACA,UACA,aACA,4BAEA,UACA,sBACA,OAKA,yBACA,QAEA,KAEA,kCACA,KAEA,GACA,oBACA,oBAgCA,aACA,0EACA,QACA,eACA,qBACA,GAEA,sBAEA,aACA,sBACA,aACA,MACA,GACA,eACA,kBACA,cACA,+BACA,cACA,iBAEA,oBACA,sBAGA,eAEA,eACA,OAEA,KAOA,WANA,OACA,oBACA,mBAGA,cAGA,iBACA,GACA,UAEA,wBAAyC,mBAEzC,eACA,WACA,YAEA,iBACA,SACA,kBACA,QACA,SACA,WACA,YACA,SACA,IACA,GACA,wCAEA,SAEA,qBAtnBA,QACA,IAEA,EAEA,UAsBA,yEAIA,SACA,EAEA,EAEA,gBACA,YACA,aAGA,IACA,MACA,aAKA,UAKA,aACA,6CAYA,gBAmHA,kCACA,gBACA,gBAEA,UACA,YAEA,KACA,oBAGA,IACA,4CACA,2BACA,aACA,WAAO,+EAEP,YAAG,UACH,CAGA,CAXA,GAYA,GACA,kDACA,uFACA,wDACA,kBACA,gBACA,WAEA,gBACA,2BAGA,kBACA,oBACA,KACA,EAmCA,2BACA,6BACA,+BA6BA,iCACA,YACA,eACA,sBAEA,KAmBA,aAlBA,gBAGA,MACA,uBACA,MAGA,UAAiC,kBAEjC,wCAEA,eAA2C,cAC3C,iBACA,gBAGA,oBAGA,2BACA,YAEA,iBACA,UAEA,6BACA,YAEA,iBACA,WAEA,uFAEA,UAEA,4CAEA,6BACA,kKACA,mDACA,kBACA,MASA,0DAIA,CACA,4BACA,4BACA,aAKA,IAwLA,kCACA,aACA,iCAEA,yBAEA,+BACA,YAEA,eACA,sBACA,MACA,OACG,MACH,uBACA,MAGA,iCAGA,aACA,kBACA,OAIA,kCACA,WAmEA,8CACA,eACA,sBAGA,oCACA,SACA,iBAGA,MAMA,qCACA,YACC,IAED,8BACA,mCACA,kCACA,MACA,MACA,I,2DC9qBA,mBACA,WACA,aACA,iBACA,eACA,mBACA,sCCNA,aA0EA,aAAsC,0BAAuC,CAAgB,WAE7F,aACA,OAEA,sBACA,iDACA,IACA,sCACA,MACA,mBACA,UACA,iBACA,mCACA,YAAgD,cAAS,CACzD,WAEA,OACA,cACA,yBAEA,aACA,OACA,eAGA,QACA,MAEA,sBACA,qBACA,UACA,CACA,G,CAzGA,qCACA,CACC,WACD,mCAEA,QAEA,MAEA,SAEA,MAEA,SAEA,MAEA,8BACA,iDACA,IACA,sCACA,MACA,mBACA,UACA,iBACA,OAEA,gBACA,cACA,kCAEA,UACA,OACA,eAGA,QAAK,IACL,KAEA,wBACA,qBACA,UACA,CAEA,+BACA,iDACA,oCACA,MACA,mBACA,UACA,iBACA,mCACA,YAA8C,cAAS,SACvD,MAEA,OACA,OACA,eAGA,QAAK,IACL,KAEA,wBACA,qBACA,UACA,CAAC,IAED,gBAEA,6BCxEA,aAsGA,aAAuC,SAA6B,WAAqB,YAAiB,SAAmB,eAAuB,yDAAgF,MAAuC,SAAjB,YAE1P,aAAsC,0BAAuC,CAAgB,UAE7F,CAxGA,qCACA,CACC,WACD,iGAEA,QAEA,MAEA,SAEA,MAEA,SAEA,MAEA,iBACA,iDACA,OACA,qCACA,MACA,mBACA,UACA,iBACA,OAEA,gBACA,UACA,SAEA,YACA,QACA,EACA,KAEA,UACA,oCAEA,aACA,4BAEA,UACA,QACA,eAGA,QAAK,IACL,KAEA,wBACA,qBACA,UACA,CAEA,gBACA,qDACA,oCACA,MACA,mBACA,UACA,iBACA,mCACA,YAA8C,cAC9C,CAEA,YAEA,OACA,mBAEA,gBACA,OACA,eAGA,QAAK,IACL,KAEA,4BACA,qBACA,UACA,CAEA,QAEA,OAEA,SAEA,OAEA,SAEA,OAEA,SAEA,gCAOA,mDACA,IACA,sCACA,MACA,mBACA,UACA,iBACA,SACA,EAEA,WACA,cACA,YACA,MAEA,aACA,4BAEA,YACA,iBACA,kBAEA,gBACA,oDACA,sBAEA,UACA,QACA,eAGA,QACA,mBAEA,0BACA,qBACA,UACA,CAEA,iCACA,gDACA,mEACA,wBACA,qCACA,MACA,mBACA,UACA,iBACA,SACA,EAEA,SACA,UAEA,OACA,QACA,EACA,KAEA,0BAEA,UACA,aAEA,8CACA,QACA,EACA,KAEA,0BAEA,UACA,iBACA,QAEA,gBACA,eACA,YACA,KAEA,0BACA,WAEA,OACA,QACA,GACA,KAEA,0BAEA,UACA,kBACA,GAEA,SACA,kCAAuE,cACvE,kBACA,UAGA,cACA,kBACA,mBAEA,gBACA,sDACA,sBAEA,UACA,QACA,eAGA,QACA,oBAEA,uBACA,qBACA,UACA,CAEA,4BACA,6BACA,YACA,eAAG,oBACH,cACA,uDACA,QACA,EAEA,qCACA,qCACA,sBAGA,iCACA,YACA,YACA,EACA,EAEA,mBACA,SACA,YAEA,cACA,mBACA,CACA,SACA,uCACA,mBACA,UAEA,oBACA,UACA,cACA,CACA,eAGA,kBAEA,0BACA,eAEA,cACA,mDACA,SACA,gBACA,UACA,qCACA,MACA,mBACA,UACA,iBACA,OAEA,gBACA,cACA,YACA,kBAAqC,CAErC,uBACA,cACA,YACA,kCACA,CACA,QAEA,OACA,iCAEA,oBACA,OACA,eAGA,QACA,WAEA,0BACA,qBACA,UACA,CAEA,mBACA,wCACA,YAAoC,cACpC,iCAEA,MACA,EAEA,iBACA,wCACA,CAGA,8BAFA,yBACA,iBAEA,EAKA,gCACA,IACA,eAEA,6BACA,uBACA,GAEA,iBACA,8CACA,+BAMA,wCACA,kBACA,qDACA,OACA,qCACA,MACA,mBACA,UACA,iBACA,0BAEA,uBACA,cACA,YAA8D,cAC9D,aACA,uBAAkD,2BAAmD,WACrG,eAGA,kCAEA,YACA,OACA,eAGA,QACA,WAEA,0BACA,qBACA,UACA,CACA,G,kBC5XA,eAmBA,CAyGA,eAEA,OACA,CACA,QAGA,0DACA,6CACA,IAEA,OAGA,kBAGA,iCACA,oCACA,mBACA,kCACA,+BACA,mBACA,OAmCA,eACA,SAGA,0CACA,6BAIA,MAGA,eACA,CACA,SAGA,aACA,IAEA,MAKA,8BAJA,CACA,OAEA,KAIA,iBAGA,MAEA,sBAEA,wBAEA,uDACA,SACA,aAIA,MAHA,UAEA,WAIA,OACA,OACA,KAIA,sBACA,UAEA,UACA,sBAKA,wBACA,gCACA,mCAIA,sBACA,SACA,0BACA,sCACA,UACA,IACA,wDAEA,aACA,sDAEA,WACA,WAEA,KAEA,eAGA,eACA,OACA,KAIA,kBACA,0BACA,oBACA,GAGA,IACA,uCAIA,SACA,wCAIA,SACA,aAGA,yBACA,6BAGA,MACA,UACA,kDAEA,+BAIA,kBAEA,WAEA,cAEA,8BACA,OACA,eAGA,UAEA,MACA,SAGA,eACA,IACA,kCACA,qBACA,+CACA,iBACA,4BACA,wBACA,SACA,OACA,qBACA,UACA,oBAEA,WACA,sBACA,eAGA,aACA,4CACA,IAGA,qBACA,QACA,cAAmC,OAAO,IAC1C,IACA,iBAGA,2BAGA,IAOA,4BANA,SACA,iBAGA,gBACA,KAIA,uBACA,SACA,6CAAyD,OACzD,QACA,MACA,kCAEA,kCAGA,aACA,6BAGA,YACA,iBAGA,SACA,6BACA,iBAEA,oBAEA,IAEA,qDACA,OACA,MAAW,qBAEX,uCACA,OACA,OAAW,QAIX,iCAGA,iBACA,eACA,SAEA,0BACA,cACA,uDACA,iBAEA,2BACA,uBACA,wBACA,oBAEA,UAEA,UACA,OAGA,iBACA,OACA,0BACA,OACA,yBACA,6CACA,CAAG,EAEH,SACA,QACA,gBACA,OACA,WACA,SACA,MAGA,iCACA,EAIA,CACA,aACA,cACA,WAGA,aACA,OACA,oBAGA,aACA,OACA,UAGA,aACA,OACA,SAGA,aACA,OACA,mBAGA,aACA,OACA,mBAGA,aACA,OACA,mBAGA,aACA,YACA,OAGA,aACA,cACA,yBAGA,aACA,2BACA,SAGA,aACA,cACA,uBAGA,aACA,OACA,6CACA,QAGA,aACA,OACA,qBAGA,aACA,OACA,WACA,qBACA,oBACA,oBACA,oBACA,sBAKA,aACA,kCACA,QAGA,aACA,2CACA,IAOA,YACA,UACA,aACA,gBACA,sCACA,gDACA,IAGA,CAiCA,eACA,wCACA,UApjBA,iBACA,oBACA,UACA,QACA,QAAmB,cAAsB,OACzC,aAEA,6BACA,IAEA,WACA,IACA,cACA,qCACA,mBACA,YACA,SACA,4BACA,0BACA,SACA,QACA,yBACA,KAAS,SACT,OACA,YACA,CACA,QAEA,UACA,KAAuB,KAAS,QAChC,eACA,KAEA,UAGA,KACA,QAKA,EACA,yBAEA,aAYA,OACA,MACA,0BACO,iBACP,yBAEA,iBAEA,SACA,IACA,qBACA,UAEA,QAxBA,0BACA,oCACA,UAGA,YACA,cAGA,YACA,MAeA,UAGA,GACA,QACA,sBACA,IACA,2BACA,QACA,eACA,8CACA,SACA,mBACA,wBACA,yBACA,kBACA,CACA,sBAGA,QACA,KAUA,EAyBA,EAGA,UACA,EAgBA,+LACA,EAUA,iIAiRA,YAKA,cAKA,WAKA,sBAKA,aAKA,aAKA,aAKA,gBAKA,aAKA,aAKA,WAMA,YAKA,eAUA,gBAEA,kBAYA,GAGA,6EAWA,gBACA,4CACA,WAeA,EACA,kBAEA,uBAEA,cAEA,0BACA,YACA,OACA,eAEA,MACA,8CCrkBA,qBACA,CAoBA,SAnBA,yCACA,IAEA,yBACA,8CACA,CACA,4BACA,UACA,CAEA,iCACA,CACA,4BACA,UACA,CAEA,sBAEA,qBCpBA,E,2BCAA,aAEA,eAAiD,MAA0C,oCAA4D,qCAEvJ,eAAiD,IAAa,4BAAyF,8FAAuF,0BAE9O,eAA0C,0BAA+D,wFAAuG,mDAAyE,aAAe,mCAA6E,0EAAuH,YAI5e,CACA,iBACA,cAGA,UAEA,4DACA,QAEA,CACA,MAPA,SAOC,EAID,OAGA,E,2BC5BA,aAEA,eAAiD,MAA0C,oCAA4D,qCAEvJ,eAAiD,IAAa,4BAAyF,8FAAuF,0BAE9O,eAA0C,0BAA+D,wFAAuG,mDAAyE,aAAe,mCAA6E,0EAAuH,YAI5e,CACA,iBACA,cAGA,GAEA,kEAEA,OAEA,mBADA,iCAGA,CACA,MAVA,SAUC,EAID,OAGA,E,2BC/BA,aAEA,UACA,aACA,yBACA,uBCAA,aAIA,eAAiD,MAA0C,oCAA4D,qCAEvJ,eAAiD,IAAa,4BAAyF,8FAAuF,0BAE9O,eAA0C,0BAA+D,wFAAuG,mDAAyE,aAAe,mCAA6E,0EAAuH,YAE5e,CARA,gBAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,QASjjB,OAEA,iBACA,QAMA,iBACA,aAGA,UAEA,kEACA,WAEA,CA0BA,MAhCA,kBAOA,KASA,+BACA,UACA,YACG,GACH,KAMA,yBACA,CACA,QAGA,MAKA,KAGA,E,2BCnEA,aAMA,eAAiD,MAA0C,oCAA4D,oCAKvJ,CATA,gBAAkC,gBAAiC,IAAe,MAAe,KAAgB,KAAoB,KAAM,gCAA0C,mBAA+B,iBAAkC,cAAqC,aAA1D,MAA4D,SAAc,CAAW,KAAU,GAAE,QAAU,IAAM,oBAAyC,WAAE,QAAU,MAAkB,OAAE,CAAE,CAAa,QAAE,qBAA2B,UAA0B,WAAc,8BAA2C,iBAAuC,4BAA+E,uDAAG,CAEnpB,gBAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,QAQjjB,QAEA,QACA,SAOA,sBACA,aACA,GACA,OAEA,CA2FA,iBA1FA,KAYA,0BACA,0BAGA,yCACA,SACA,eAEA,yBACA,aAEA,2CACA,UACA,KACA,EAGA,OAGA,yBAEA,mDACA,6BAMG,GACH,KACA,4BAEA,GAIA,mBACA,QACA,qBAIA,mBACA,oBACA,OACA,OAEA,OAEA,YACA,gCAGA,kFACA,CAEA,SADA,YAEA,EAEA,eACA,QACA,YAEA,oBAGA,YACA,iCAEA,mDAGA,6BACA,wBAGA,MAKA,IAGA,E,2BCzHA,aACA,QACA,OAOA,mBACA,MACA,gBAKA,cACA,E,2BCjBA,aACA,QAEA,QACA,OAkBA,mBACA,MACA,oBAuEA,KACA,MAiEA,cACA,MACA,SA8CA,kBACA,MACA,gBAiCA,mBACA,MACA,gBA0DA,WACA,MAuCA,cACA,MACA,gBAqCA,WACA,MACA,cACA,MACA,gBA+BA,eACA,MACA,gBAmFA,kBACA,MACA,cACA,MAEA,mBA4BA,OACA,MACA,gBA2BA,mBACA,MAOA,aACA,E,2BC9jBA,aAEA,QACA,OAEA,eAKA,YACA,MACA,oBACA,MACA,MACA,QAOA,YACA,E,2BCvBA,aACA,QACA,OA6BA,mBACA,YA+BA,KACA,MACA,gBAmBA,mBACA,MACA,gBAuBA,mBACA,CACA,+BACA,oBACA,QAsBA,oBACA,MACA,gBAmBA,mBACA,MACA,gBAgBA,mBACA,MACA,gBAoBA,mBACA,MAOA,aACA,E,2BC7MA,aACA,QACA,SACA,SAEA,SACA,OAaA,mBACA,MACA,oBAKA,MACA,MACA,SAMA,6BACA,MAMA,SAKA,SAKA,YAKA,cAKA,KAKA,MAKA,aAKA,iBACA,MACA,cACA,MACA,oBACA,CACA,SAQA,mBAKA,qBACA,MACA,cACA,MACA,oBACA,CACA,YACA,SACA,gBAAgB,MAQhB,aAKA,qBACA,MACA,UAMA,gBACA,MAMA,wBACA,MACA,SACA,4CAOA,cACA,E,oDClJA,CAEA,sBACA,mBAAuC,YACvC,E,yCCJA,aAEA,CACA,UACA,QACA,IAAO,CAAM,SACb,4BACA,SAAoB,kBACpB,IAAc,YACd,QACA,SACA,SACA,SACA,QA+CA,IACA,iBAKA,oBACA,CACA,QAWA,eACA,OACA,aAGA,iBACA,2CAGA,gCAIA,mCAKA,iBAGA,yBAJA,MAgBA,uBACA,aACA,UAAiB,CACjB,uBAAgC,YAChC,kBAGA,uBACA,qBACA,uBACA,mBACA,kBACA,MAQA,WACA,IACA,qBAEA,QAEA,iDACA,2BAEA,uCACA,mBACA,6CACA,sCAGA,iBAAK,SACL,gBACA,SACA,CAUA,YACA,IACA,qBAEA,kBACA,sEAEA,kEACA,wBACA,SACA,2DACA,iCAEA,4BAAyB,mBACzB,gBACA,kCACA,6BAGA,gBAAK,SACL,gBACA,SACA,CAEA,YACA,uBACA,KAQA,OACA,IACA,qBAEA,kBACA,yDAEA,qDAEA,eACA,aACA,uCACA,KACA,EACA,mBACA,uCAGA,QAAK,SACL,gBACA,SACA,CAWA,mBACA,gCACA,MAUA,iCACA,IAEA,aACA,kBAAiB,oBAEjB,WAAiB,gBAGjB,mBAEA,kBACA,mBAQA,WACA,IACA,qBAEA,kBACA,kEAEA,8DACA,+BAEA,iBAEA,qCACA,gBACA,iCAAmC,WAGnC,iBACA,mBACA,wCAEA,OAAK,SACL,gBACA,SACA,CA2DA,eAA6B,KAC7B,MAAW,4CACX,cAEA,sBACA,2DACA,kBAEA,8CACA,wCACA,+BAAW,QACX,oCAGA,WACA,mBAGA,sEAGA,YAGA,uBAGA,kCAGA,yBACA,wCAEA,YACA,IAYA,SACA,IACA,MACA,iBACA,4DACA,kBACA,gDACA,qBACA,wDAAK,SACL,gBACA,SAEA,OACA,iCACA,uBAGA,wBACA,uBAEA,kBAAuB,qBACvB,mBACA,oCAeA,eAEA,eACA,YAIA,eACA,KAQA,iBACA,iBACA,aACA,EAEA,kCAEA,wBAEA,4CCzbA,aAIA,eAAiD,MAA0C,oCAA4D,oCAEvJ,CAJA,gBAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,MAKjjB,yFACA,gDACA,sHACA,8EACA,upCAMA,mGACA,aACA,GACA,OAEA,CAkGA,YAjGA,KAkBA,gCAEA,IACA,mCAIA,sCACA,0BAGA,YACA,SAaG,GACH,KACA,6BACA,OAEA,WACA,mBAGA,+BACA,QAaG,GACH,KACA,4BACA,YACA,oBACA,OACG,KACH,KAWA,+BACA,OACA,MAOA,kBANA,0BACA,oBACA,sBACA,qBACA,qBACA,eAIA,MAKA,IAGA,Y,8BCnIA,aAMA,eAAiD,MAA0C,oCAA4D,oCAEvJ,CANA,6EAAoG,OAAmB,SAAE,aAAmB,4FAA8H,QAE1Q,cAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,gBASjjB,gBACA,GAEA,2BACA,4BAEA,sCAEA,uBACA,6BAGA,8BACA,OACA,QAOA,CAqRA,YApRA,KAMA,4BACA,YACA,YACA,aAEA,QACA,KAGA,cACA,kBAEA,qBAKA,gBACA,iBAIA,gBACA,WAAuB,eAAsB,MAC7C,YAGA,qBAA4K,4LAC5K,UAEA,CACA,QAMG,GACH,KACA,iCACA,2EACA,QAMG,GACH,KACA,4BACA,YACA,cACA,aACA,WACA,UAEA,UAEA,GAkBA,wBAfA,8EAIA,2EAGA,cACA,+BAGA,kBAA4D,4DAG5D,wBAOG,GACH,KACA,2BACA,YACA,cACA,YACA,aACA,QACA,eACA,yBACA,UAEA,kBAKA,GAeA,MAZA,0EAGA,cACA,+BAIA,kEAAqF,uBAGrF,wBAOG,GACH,KACA,yBACA,YACA,cACA,YACA,aACA,UACA,eACA,yBACA,UAEA,kBAEA,GAYA,MAVA,oEAEA,YACA,+BAGA,qCAAqD,0BAGrD,wBAOG,GACH,KACA,+BACA,YACA,cACA,YACA,aACA,WACA,UAEA,aAGA,GAyBA,6CAxBA,OACA,eAAwD,sBAExD,SACA,SAGA,OACA,OAAqN,6SAMrN,yGAAgJ,wEAAsF,qHAA2K,oDAAgD,8CAAmE,4CAAyF,kGAAiG,6EAAoF,yFAA+J,4HAIj7B,kRAA8T,6DAAwF,wRAAwV,wCAAgD,6DAA4E,wCAAyF,uIAA+I,8EAAoF,6FAAiK,oIAKv0C,oCAOG,GACH,KACA,0CAMG,GACH,KACA,0BACA,YACA,cACA,YACA,aACA,WACA,UAEA,QAEA,QAEA,UASS,kFACT,cACA,aAAoD,wBAEpD,+FAAqiB,icAA0C,WAAsB,aAAoB,kCACznB,yBAGA,OACA,KAA2J,2NAI3J,sHAAiJ,oMAAmQ,mGAA0H,wCAAyF,mIAAyI,wEAAgF,yFAAyJ,4HAEz9B,2BAEA,CACA,QAMG,GACH,KACA,qCACG,KACH,KACA,6BACA,OACA,aAGA,aACA,uCACA,YAAO,SACP,iBACA,MACA,CAGA,MACC,IAED,E,2BCxTA,aAMA,eAAiD,MAA0C,oCAA4D,oCAEvJ,CANA,6EAAoG,OAAmB,SAAE,aAAmB,4FAA8H,QAE1Q,cAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,QASjjB,MACA,IACA,IAKA,EAUA,8DAOA,cACA,GAEA,iBACA,KAaA,CA0JA,YAzJA,KACA,2BACA,OAEA,iCACA,SAEA,MACA,mBAGA,4CACA,iCAGA,8CACA,qBAGA,0CACA,SACA,EASG,GACH,KACA,2BACA,eACA,sBAGA,6DACA,kBACA,MASG,GACH,KACA,8BACA,eACA,QACA,SASG,GACH,KACA,+BACA,eACA,sBAGA,iEACA,oBACA,MASG,GACH,KACA,4BACA,eACA,qBAGA,gFACA,uBAGA,6DACA,gBACA,UAEA,SACA,YACA,QASG,GACH,KACA,4BACA,eACA,qBAGA,6DACA,gBACA,UAEA,SACA,QASG,GACH,KACA,4BACA,eACA,sBAGA,8DACA,UAEA,kBAOA,QACA,iBACA,sBAGA,sCAGA,MAKA,IAGA,E,2BCvNA,aAMA,eAAiD,MAA0C,oCAA4D,oCAEvJ,CANA,6EAAoG,OAAmB,SAAE,aAAmB,4FAA8H,QAE1Q,cAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,QAWjjB,OAQA,cACA,cA2CA,2DAEA,QAGA,aAGA,uBAGA,aACA,uBAIA,cACA,eAEA,WAkBA,CAslCA,iBArqCA,KAYA,6BACA,OAEA,yaAEA,oHACA,SAQG,GACH,KACA,0BACA,OACA,IAWA,UAuCA,KACA,4BACA,OAEA,GAuBA,YAtBA,kBAIA,oBAKA,eACA,gBACA,iBACA,iBAGA,iBACA,eACA,gBACA,gBACA,cAEA,SAOG,GACH,KACA,yBACA,OACA,uEAMG,GACH,KACA,wBACA,OACA,4HAaG,GACH,KACA,yBACA,mBACA,YAEA,UAEA,QACA,0BACA,uBAEA,mBACA,sCACA,6CACA,sCACA,8BACA,2CACA,uFACA,oCAAS,QAET,iFACA,mJAEA,CACA,QA2CG,GACH,KACA,0BACA,IACA,0EACA,iBAEA,GAKA,MAJA,iBAAuG,kGAGvG,sBAcG,GACH,KACA,2BACA,IACA,6CACA,iBAEA,GAKA,MAJA,iBAA+G,0GAG/G,sBAcG,GACH,KACA,2BACA,IACA,+JACA,iBAEA,GAKA,MAJA,iBAA0J,qJAG1J,sBAcG,GACH,KACA,2BACA,IACA,uDACA,iBAEA,GAKA,MAJA,iBAA+G,0GAG/G,sBAeG,GACH,KACA,iCACA,OAEA,YAEA,SAEA,sCACA,QACA,gBAEA,GAKA,4BAJA,IACA,MAEA,IAcG,GACH,KACA,yBACA,mBACA,YAEA,QACA,4BAGA,GAgCA,gCA/BA,0CACA,UACA,iBACA,gBAEA,UACA,gBACA,gBAEA,UACA,gCACA,KAEA,UACA,SACA,gBAEA,gDAEA,gCAEA,MACA,wBAGA,4CAEA,0FAGA,6LAeG,GACH,KACA,0BACA,mBACA,aAEA,UAEA,GAYA,aAXA,gBAEA,sIACA,eAAoD,CACpD,uFACA,0GAEA,MAGA,4JAeG,GACH,KACA,0BACA,mBACA,aAEA,UAEA,GAQA,aAPA,iCACA,eAAoD,CACpD,wCACA,YAGA,IAeG,GACH,KACA,0BACA,mBACA,aAEA,UAEA,GAYA,aAXA,wDAEA,yJACA,eAAoD,CACpD,uFACA,4GAEA,MAGA,wWAcG,GACH,KACA,wBACA,mBACA,WAEA,UAEA,uFACA,IACA,eAAkD,CAElD,eAAgG,yQAChG,oeAEA,CACA,QAcG,GACH,KACA,+BACA,YACA,cACA,YACA,eAEA,gBAGA,OAwBA,eAtBA,gBACA,uFACA,OACA,QAIA,2CACA,QACA,EAAW,QACX,eAAqD,WAGrD,kDAEA,qBACA,SAGA,WAEA,OAgBG,GACH,KACA,oCACA,wFAAyI,kLAA6J,iCACtS,QAYG,GACH,KACA,uCACA,mBAEA,oBAEA,GASA,MARA,uFACA,OACA,OACA,6CAAqE,+DACrE,yBAGA,IAcG,GACH,KACA,0CACA,YACA,WACA,eACA,4BAEA,UACA,KAGA,GAGA,sCAAkC,0BAClC,uBACA,KAGA,uDACA,IACA,eAAkD,WAClD,0FAA6G,8BAC7G,qBAGA,CAKA,MAJA,uGAGA,sMAcG,GACH,KACA,sCACA,OAEA,GAMA,YALA,6BACA,iCAGA,oBAcG,GACH,KACA,yCACA,OAEA,GAMA,YALA,6BACA,iCAGA,oBAcG,GACH,KACA,kCACA,mBACA,qBAGA,8FACA,4KAaG,GACH,KACA,kCACA,mBACA,qBAGA,8FACA,6KAqBG,GACH,KACA,iCACA,mBACA,oBAGA,eAEA,OAuBA,MAtBA,uFACA,OACA,KAEA,cACA,gCACA,yBACA,oBAEA,iFACW,uQACX,IACA,eAAsD,CAEtD,kDAAmF,mDACnF,6BACA,CAGA,WAEA,OAcG,GACH,KACA,6BACA,mBACA,kBAEA,UAEA,GAGA,mCADA,8LAqBG,GACH,KACA,oCACA,YACA,WACA,UACA,uBAEA,UAEA,oBACA,mGAGA,4QACA,IACA,OACA,aAEA,2GAAyI,QAAsC,4BAAsB,qEAAiG,qCACtS,UAEA,CACA,QAiCG,GACH,KACA,0BACA,mBACA,aAEA,UAGA,YACA,mBAEA,8BACA,IACA,eAAoD,iBAEpD,kGACA,YAEA,WAGO,4EACP,IACA,OACA,aAEA,iFAA2G,YAAqC,2BAAsB,sGAAkI,qCACxS,UAEA,CACA,QAaG,GACH,KACA,6BACA,mBACA,gBAGA,4EACA,uKAaG,GACH,KACA,6BACA,mBACA,gBAGA,4EACA,wKAiBG,GACH,KACA,gCACA,mBACA,mBAEA,UAEA,GAKA,MAJA,uCAGA,mVAgBG,GACH,KACA,8BACA,mBACA,iBAGA,iGACA,+JAeG,GACH,KACA,8BACA,mBACA,iBAGA,iGACA,8JAaG,GACH,KACA,4BACA,mBACA,eAGA,QACA,+FAEA,yMAiBG,GACH,KACA,2BACA,mBACA,cAEA,YAEA,WACA,yEAAoJ,sHAEpJ,yCAiBG,GACH,KACA,4BACA,YACA,WACA,YACA,wBAEA,sBAEA,4EACA,6JAiBG,GACH,KACA,4BACA,YACA,WACA,YACA,wBAEA,sBAEA,4EACA,6JAaG,GACH,KACA,+BACA,mBAEA,aAEA,yBACA,oBACA,+BACA,gBACA,EAEA,IACA,6BAEA,sBAGA,+BAAsG,+IACtG,qCAEA,CACA,QAGA,MAKA,IAGA,E,2BC1sCA,aAEA,qCACA,CACC,WACD,MAEA,qFACA,6BACA,OACA,MACA,kCACA,iCACA,GACA,2BACA,8CACA,IACA,gCCVkC,eAChC,IACI,GAAW,EACf,SAAI,EAAW,EAAG,OAChB,QAEF,YAJA,IAIS,UAAU,CACP,WACR,GACD,UAHgB,EAIS,eACxB,CACE,IADE,QAGJ,aACE,UADS,cAGZ,MAXgB,EAYC,aAChB,IACE,GAAe,UACb,QAEH,wBAJD,CAIS,QACP,CACD,IACF,CApBgB,EAqBD,aACd,GAAa,KACb,eACD,OAxBgB,GAyBD,aAChB,CACD,MAEF,GAEmC,eAClC,IACI,GAAW,EACf,SAAI,EAAW,EAAG,OAChB,QAEF,YAJA,IAIS,UAAU,CACP,WACR,GACD,UAHgB,EAIS,eACxB,CACE,IADE,QAGJ,aACE,UADS,cAGZ,MAXgB,EAYC,aAChB,CACA,MACD,OAfgB,GAgBD,aAChB,CACD,MAEF,E,CAtED,EAAO,QAAwB,gBAC/B,EAAO,QAA0B,kBAEjC,GAAI,GAAW,EACf,KAAI,EAAS,EACb,KAAI,EAAK,EAAe,sBCLxB,4kBACA,sPAAM,EAAY,EAClB,IAAM,EAAa,EACnB,IAAM,EAAa,EACnB,IAAM,EAAU,EAChB,IAAM,EAAM,EACZ,IAAM,EAAY,EAClB,GAAM,EAAO,EACb,GAAM,EAAa,EACnB,IAAM,EAAY,EAClB,IAAM,EAAW,EAAQ,IAEnB,cACgD,mBAAU,qEAE5D,OAKD,SALM,SAAW,EAChB,WAAK,WACL,QAAK,YACL,QAAK,aACL,QAAK,SAAuB,cAN9B,8BAQc,mBACZ,OAAO,MAAK,WAAW,KACxB,4CACa,aACZ,OAAO,MAAK,WACb,6BACM,aACL,OACD,SACD,+BAMgB,aACd,IACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAEE,QADF,QACM,GAAC,EACL,yBACA,OAAO,KAAK,KAAK,IAAK,GAAG,KAAK,IAAI,mDAAoD,KACtF,QACA,OACA,EAAK,EAAM,EAAK,OAAY,IAC1B,SACA,OAAM,EACN,IAAW,OACT,CACA,KACD,KAGD,KAGJ,QACD,+CAEC,OACD,2BACc,mBACb,IAGA,MAAI,EAAM,KACV,+BAJI,EAAK,EAAG,EAAG,EACf,EAAI,EAAK,EAAM,EACf,KAGE,IADE,QACG,EAAI,EAAG,EAAM,EAAI,OAAY,IAChC,MACA,OAAQ,KAAK,EAEhB,aAAM,IACL,IADS,QACJ,EAAI,EAAG,EAAO,EAAI,OAAY,IACjC,MACA,OAAQ,KAAK,EAEhB,eAAM,IACL,IADS,QACJ,EAAI,EAAG,EAAO,EAAI,OAAY,IACjC,MACA,OAAQ,KAAK,EAEhB,YAAM,IACL,IADS,QACJ,EAAI,EAAG,EAAO,EAAI,OAAY,IACjC,MACA,OAAQ,KAAK,EAGjB,KACD,+BACO,aAIN,YAAO,KAAK,eAAiB,EAC9B,YAUD,8BASe,aACb,IACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAKE,QAJF,QAAM,EACN,WACA,OAAM,KAAuB,oBAAO,KAAK,IACzC,yDACM,GAAC,EACL,yBAAO,KAAK,mBAAmB,IAAK,GAClC,KAAK,IAAI,mDACT,KACF,WAAK,EAAI,EAAG,EAAM,EAAK,OAAY,IACjC,MACA,OAAQ,EAAG,QAEb,gBAAO,KAAK,KAAK,IAAK,GACpB,KAAK,IAAI,+CACT,KACF,WAAK,EAAI,EAAG,EAAO,EAAK,OAAY,IAClC,UACA,OAAO,KAAK,mBAAmB,IAC/B,OAAK,EAAI,EAAG,EAAO,EAAK,QAAY,IAClC,MACA,OAAQ,EAAG,QAGf,gBAAO,KAAK,KAAK,IAAK,GACpB,KAAK,IAAI,8CACT,KACF,WAAK,EAAI,EAAG,EAAO,EAAK,OAAY,IAClC,UACA,OAAO,KAAK,mBAAmB,IAC/B,OAAK,EAAI,EAAG,EAAO,EAAK,QAAY,IAClC,MACA,OAAQ,EAAG,OAIjB,UACD,uCACe,aACd,OAAO,MAAK,QAAQ,KACrB,iBACD,iCAOkB,aAChB,IACA,eAAM,EACN,WAAO,KAAuB,oBAC5B,KAAK,IACR,sDACD,mCAOoB,aAClB,IACA,eAAM,EACN,WAAO,KAAuB,oBAC5B,KAAK,IACR,sDACD,4BASa,aACX,IACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,QACA,kDACA,OAAM,KAAwB,qBAAS,IAAK,GAAG,IAC/C,KAAK,EAAI,EAAG,EAAM,EAAI,QAAY,IAChC,SACA,KAAI,EAAG,UACL,UAAM,EAAG,OAET,qBAAO,KAAK,KAAK,EAAG,UAAW,KAAK,IACpC,gDAAK,EAAI,EAAG,EAAO,EAAK,OAAY,IAClC,MACA,OAAM,EAIZ,gBAAO,KAAK,mBAAmB,IAAK,GAAG,IACvC,MAAK,EAAI,EAAG,EAAO,EAAK,OAAY,IAClC,UACA,OAAO,KAAK,KAAK,EAAG,UAAW,KAAK,IACpC,gDAAK,EAAI,EAAG,EAAO,EAAK,QAAY,IAClC,MACA,OAAM,EAGV,gBAAO,MAAuB,oBAAO,KAAK,IAC3C,mFACa,aACZ,OAAO,MAAK,QAAQ,KACrB,eAGD,oCACmC,iBACjC,GACA,aAAI,GACJ,IACA,KACA,KACA,KAAI,EACJ,KAAI,EAAmB,aACrB,IAAI,GAAkB,aACpB,CAAkC,WAA9B,KAAE,UAA6B,EAAK,EACtC,WAAK,EACL,YAEH,QACD,EAAI,EAAM,EAAK,mBAAmB,KAAe,UAC9C,OAAO,EAAwB,qBAAG,KACrC,WAAM,EAAI,OAAiB,WACzB,IAAI,EAAqB,EAAG,UAAU,KACtC,YAAI,GAAO,EACX,cACA,OAED,WAED,KAAI,QAAsB,aACxB,GAAM,EACN,WAAM,EACP,OACD,KAAS,EACV,SACD,EAAO,EACL,UAAO,EAGT,SACD,4CAGC,OACD,MACD,uBAMQ,aACN,IAAI,GAAI,EAAG,EACX,SAAQ,EACN,QACE,UAAO,MAAK,IAAI,EAAI,MAAM,EAAG,CAC/B,QACE,SAAO,IACP,KAAK,IACL,KAAI,EAAI,YACR,KAAI,EAAI,EAAI,OACV,KACE,GADE,KAAI,EAAI,KACH,EAAI,MAAM,EAClB,OAAM,IACL,IADS,KAAI,MAAM,EAAI,EAAG,EAAI,KACzB,KAAK,OAAO,EAAI,MAAM,EAE3B,cAAM,IAAI,OAGd,8CAAM,EAAI,MACV,OAAM,EAAI,QAAQ,OAClB,OAAM,EAAI,QAAQ,OAClB,QAAM,EAAI,QAAQ,QAClB,MAAO,KACT,mBACE,UAAW,OAAU,EAAI,MAC3B,QACE,UAAW,OAAS,EAAI,MAE5B,UAAM,IAAI,OACX,mDAEe,mBACd,IACA,MAAyB,CAArB,aAAU,OACZ,IACE,GAEF,YAAI,YAAa,OACf,KAAK,EAAI,EAAG,EAAI,EAAE,OAChB,OAAI,CAAC,KAAK,MACR,MAGJ,SACD,QAPD,CAOO,GACL,qBAAO,MAAK,MAAM,EAAE,QAAS,EAAE,UAAW,EAAE,OAAQ,EACrD,KAAM,GAAI,EACT,iBAAO,MAAK,MAAM,EAErB,WAED,IAAI,GAAK,KACT,oCACD,KADQ,kCAEO,aACd,OAAO,MAAK,MAAM,EAAG,QAAS,EAAG,UAAW,EAAG,OAAQ,EACxD,yBACK,aACJ,IAAI,GACJ,MAID,SAJQ,QAAkB,WACvB,GACD,SACD,4BAEkB,iBAClB,OAAW,OACZ,SACD,wBAMS,aACP,IAEA,MAFI,EACJ,EAEM,WAAC,EACL,sBACA,KACE,GADE,KAAE,OACC,EAAE,MAAM,EAAG,CAGpB,QACD,kCAC6B,iBAC5B,IACA,GACA,EACA,WAAK,EACL,QAAG,kBAAkB,KACrB,cAEE,eAAM,KAAK,mBAAmB,IAAK,GAAG,IAAK,GAAG,IAE9C,MAAM,KAER,WACsB,IAAtB,IACE,iBACE,wBAAiB,EACjB,mBACF,UACA,cACE,gBAAiB,EACjB,kBACF,MACE,aAAM,IAAI,OAAmC,6BAGjD,oBACD,mCACW,aACV,IAAI,GAAiB,KAAK,WAAW,IAAc,WACjD,OAAO,GACR,aACD,WAAQ,IACR,+BAAI,GACJ,MAGD,SAFC,eAAQ,IACR,qDAEQ,eACR,CACE,UAAM,IAAI,OAEZ,sFACD,6BACa,mBACZ,IAAI,GAAI,KACR,aAID,MAHG,KADE,OACE,MAAqC,+BAAU,MAAU,MAE/D,OAEF,kCAQqC,iBACnC,IAEA,MAFI,EAAK,EAAG,EAAK,EAAG,EACpB,SAEA,mBACO,UACL,MAAK,UACH,KAAK,GACH,QAAI,GAAC,EACL,kBAEH,QACD,IACE,IADE,IAGJ,eAAO,EAAU,KAAK,KAAK,IAAQ,KAAW,KAAY,WAAM,KAAK,KAAK,KAC1E,aAAK,EAAI,EAAG,EAAM,EAAK,OAAY,IACjC,OACA,OAAI,EACJ,SAGA,WAGA,SAAO,KAET,OAAK,KACL,WACD,KACF,CACD,4BAKa,aACX,IACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EAEE,QADF,QACM,GAAC,EACL,yBACA,OACA,IAAM,KAAK,KAAK,KAAS,OAAI,KAAK,IAClC,qDAAK,EAAI,EAAG,EAAM,EAAI,QAAY,IAChC,SACA,KAAc,+CAAV,KAAE,IACJ,CACA,IACD,KAGD,KAGJ,QAOD,MAPK,GACF,wDAAO,GAET,iDAAI,EACF,8CAAO,GAET,6EAGA,OAAO,IAAM,KAAK,WAAW,KAAK,MACnC,2BACiB,mBAChB,OAAO,MAAoC,+BAC5C,YA1gBmB,KA4gBtB,EAAQ,SAAW,QAEnB,EAAQ,UAAU,WAAwB,QAC1C,EAAQ,UAAU,MAAQ,EAE1B,EAAQ,UAAU,GAAK,EAAQ,IAC/B,EAAQ,UAAU,SAAW,kBAAqB,SAAlD,EAEA,EAAiB,wCC7gB2B,qBAC1C,CA6CS,YAEL,MAIH,OAED,CAA+B,aAC7B,IAAoB,qBAAhB,MACc,oBAAhB,MAEA,qBADA,KAEE,KAEA,iBAAM,IAAI,OAAkC,4BAC1C,UAAsB,QAAI,MAAQ,EAGzC,MAYD,CAA6B,eAEzB,IAEF,UACE,GACD,UAFD,CAES,QACP,CACD,MACF,CAED,CAAsC,iBAElC,CAGA,MADF,WAEC,YACC,KAAK,GAAI,GAAI,EAAG,EAAI,EAAQ,OAC1B,IAAU,IAEZ,QACD,OACF,CAED,CAAwB,eACtB,IAAI,GAAU,EAAW,EACzB,SAAI,EAAY,EAAW,EAC3B,WAAI,EAAS,EAAW,EACxB,QAAI,EACJ,KAAI,EACF,UAAM,EAAW,EAEnB,UACD,YAED,CAAqB,aACnB,IACA,MAAI,EAAG,KAAe,aACpB,GAAQ,EAAG,KACX,sBAAI,GAAW,EAAG,KAClB,sBAAI,EAAe,MAAU,EAAG,KAChC,yBACD,aAAM,OAAI,GAAG,KACZ,SACK,SAAI,EAAG,KACZ,cAAQ,EAAW,UAAU,EAAG,EAChC,QAEA,UAEH,IACF,GAhIe,GACd,gBAAc,EAAY,MAAM,KAChC,MACE,IAAoB,SAAhB,MAA6C,aAAhB,KAC/B,IAAI,GAA2B,UAAM,KAAM,KAAM,GACjD,QACA,WACD,GAJD,KAIO,IAAoB,qBAAhB,KACT,IAAI,GACJ,WAAO,MAAM,EAAoB,cAAM,EACvC,QACD,GAJM,KAIA,IACL,uBADS,OACI,EAAc,WAAK,CAAC,YACjC,+BACD,QAAM,IACL,WADS,OACI,EAAc,WAAK,CAAC,YACjC,mBACD,QAAM,IACL,2BADS,KAET,SACD,QAAM,IAAoB,qBAAhB,MACgB,oBAAhB,MACgB,qBAAhB,KACT,IAAI,GAAW,EACf,SACA,QAAoB,qBAAhB,KACF,IACA,MACE,GAAe,KAChB,QAFD,CAES,QACP,OAAgB,KACjB,KACD,GAAa,QACX,CAAC,OAAQ,qBAEZ,UACC,QAEH,OACC,WAAM,IAAI,OAAmC,8BAEhD,OAvCD,CAuCS,QACP,CACD,IAED,C,CAjEF,EAAiB,UAEjB,GAAM,GAAY,EAClB,IAAM,EAAS,EACf,KAAM,EAAU,EAChB,IAAM,EAAK,EACX,KAAM,EAAW,EACjB,IAAM,EAAY,EAClB,GAAM,EAAe,EAAQ,IAC7B,aAAM,EAAY,EAClB,IAAM,EAAqB,EAC3B,KAAM,EAAO,EAEb,qBCPA,aAMsC,iBACpC,IAEA,+BAAI,EAAO,EACX,mCAAI,EAA2B,UAAM,KAAM,KAAM,GACjD,MAEA,KAAI,EAA0C,qBAC5C,OAAQ,SAAW,EAAQ,GAAe,UAC1C,wBAAM,aAAe,EAAU,QAAI,EAAI,IACxC,GAQD,EAjBI,EAAG,EACP,IAiBA,KAAI,GAAQ,EAAG,IAAI,EACnB,cAEO,cAEL,MAAI,EACJ,eACE,CADE,GAIJ,YAAe,GAAP,QACN,MAAI,EAAY,YAAK,EACrB,GACE,CADE,GAGJ,SACD,GACD,IACA,UAAK,EAAI,EAAG,EAAI,EAAS,OAAQ,IAC/B,IAAI,GACJ,QAAI,EAAU,QAAG,EAAI,EAAgB,YACnC,MAAI,EAAY,YAAK,EAAI,EACzB,QACE,CADE,QACI,GAAU,EAAE,SAAU,EAAS,QAAK,EAAI,EAAI,OAEpD,uCAAI,CAAU,QAAR,MAA8B,QAAR,OAA8C,MAAxB,KAAU,QAAG,EAAI,GACjE,MAAI,EAAY,YAAK,EACrB,GACE,CADE,QACI,GAAU,EAAE,SAAU,EAAS,QAAK,EAAI,EAEhD,qCACD,GACD,IACA,WAAI,EAEJ,YACE,CADE,QACI,GAAU,EAAE,SAAU,EAAc,UAG5C,yCAAQ,EAAI,eAAiB,EAC7B,KAAO,MAAO,EAAK,EAAI,eAAgB,EAEvC,IACA,KACD,GACF,CACD,IAAK,IAAiC,SAAxB,KAAU,QAAG,EAAI,GAC7B,MAAI,EACJ,eACE,CADE,QACI,GAAU,EAAE,SAAU,EAAc,UAI5C,sCAAI,EAEJ,cACD,IACD,IAEE,QAAM,GAAU,EAAE,SAAU,EAAc,UACxC,2CAA4C,EAAU,SAAG,MAAM,EAAG,IAEvE,KAEF,C,CAxFD,EAAiB,UAEjB,GAAM,GAAW,EACjB,IAAM,EAAY,EAAQ,+HCP1B,sPAAM,EAAY,EAAQ,IAAkB,UAEtC,YACJ,CAAqB,eAAK,GACxB,aACA,cACA,WACA,kBACA,gBACA,mBACA,aACE,MAAK,OAAS,GACd,mBAAK,OAAO,OAAS,KACrB,YAAK,OAAO,QAAU,KACtB,aAAK,OAAO,UAAY,KACxB,eAAK,OAAO,QAAU,KACvB,OAND,CAMS,QACP,MACD,UACF,mCACQ,aACP,IACA,GACA,EACA,EACA,EACA,EACA,EACA,EAYE,QAXF,QAAO,UACL,IAAI,GAAG,EAAK,EACZ,QAAM,EAAE,MACR,KACA,MAAK,EAAI,EAAG,EAAM,EAAI,QAAY,IAChC,MACA,OAAQ,KAAK,EAAI,MAEnB,MACD,QACD,QAEE,OAAO,CAAC,mBAAmB,EAAI,IAAK,mBAAmB,EACvD,OAAI,EACJ,KAAI,EACJ,GACE,IADI,SAGN,SAAE,KAEJ,QACD,8BACmB,iBAClB,IAAI,GACJ,WAAwB,QAAM,KAC9B,KAA4C,UAArC,QAAO,CAAC,EAAO,KAAK,QAAQ,KAAsB,EAAU,QAAW,IAC/E,6BACW,aACV,aAAK,MAAa,QAClB,SACA,iBAAO,KACR,qCACQ,aACP,IACA,GACK,cAAL,aAAY,KACV,gBAEF,0BACA,cAAO,KACR,kCACQ,aACP,MAAM,IAAI,OACX,sCACU,aACT,IAAI,GACJ,WAAU,EAAE,KAAK,MACjB,KACE,MADE,KAAQ,IACkC,UAArC,QAAO,CAAC,EAAO,KAAK,QAAQ,KAAsB,EAAK,KAAK,QAAU,EAAQ,MAAM,GAAG,KAAK,MAAQ,IACtG,GACL,KADS,KAAQ,GACV,KAAK,OAAO,SAAS,EAAQ,GAAI,KAAK,QAAQ,EAExD,kCACO,aACN,IAAI,GACJ,EAEK,cADL,aACA,KAAY,KACV,cAAO,MACP,aAAQ,KAAK,KAEf,eACD,kCACU,aACT,OAAI,MACF,UAAO,KAEP,oBACA,cAAO,KAEV,qBAGG,YACJ,CAAa,aAAS,GACpB,aACA,eACA,cACA,YAAK,QAAQ,YAAY,UAAW,KACrC,8CACU,aACT,IAAI,GAAM,EACV,QAGA,KAHI,IAAE,SAGmB,WAArB,QAAO,YAGX,IAHwC,iBAGjC,EACP,eAAM,EAAE,QACR,iBAAM,EACN,IACE,YAAW,SACT,CACA,OAEF,YAGH,2CACc,eACb,OAAO,MAAK,QAAQ,QACrB,8BACc,eACb,OACE,KADE,OAAS,cACF,OAAW,MAEtB,SAAO,KAAS,OACjB,sBAGH,EAAO,QAAwB,gBAC/B,EAAO,QAAqB,yIChJ5B,GAAM,GAAY,EAAQ,GAEpB,0BAEN,EAAI,QAAc,MAAU,4CAC5B,EAAI,SAAe,MAAU,6CAC7B,EAAI,QAAc,MAAU,4CAC5B,EAAI,OAAa,MAAU,2CAC3B,EAAI,QAAc,MAAU,4CAC5B,EAAI,WACE,MAAU,yDAChB,EAAI,OAAa,MAAU,2CAE3B,EAAiB,2BCbjB,UAAkB,gB,gCCAlB,aAQA,aAAsC,0BAAuC,CAAgB,WAN7F,gBAEA,QAEA,YAIA,yBACA,CAYA,MAXA,0BACA,CACA,QACA,cACA,gBAGA,cAGA,Q,kBCtBA,CACA,QACA,WAEA,iBAGA,yBAH2B,OAAkB,UAAE,oBAI/C,IACA,OACA,KAAG,SAAY,CACf,GAEA,qBACA,SACA,yCAEA,OAEA,yCAEA,qDACA,gCCtBA,oBACA,gDCDA,mCACA,OACA,2CADsE,eAAmB,OAAU,EAAI,KACtG,mBCFD,CACA,QACA,IACA,gEACA,kCACA,2BCLA,CACA,QACA,WACA,8BAEA,qBACA,kCACA,2BCPA,CACA,YACA,2BACA,IACA,0BAEA,IAAG,SACH,SACA,UAEA,sBADA,UAEA,oBCXA,aACA,QACA,QACA,OACA,SACA,QACA,QACA,SACA,QACA,YACA,oCACA,UACA,eACA,SAEA,qBAA8B,OAAa,OAE3C,iCACA,CACA,0BACA,kBAEA,uBAAyC,cAAoC,OAC7E,oBAA6C,cAAoC,OAC5E,cAA4B,cAAoC,OACrE,CACA,MACA,cACA,KACA,SACA,2BACA,UACA,aACA,mCACA,iBAGA,EAqBA,kBApBA,gCAEA,OAEA,uCAIA,mBACA,WACA,mBAAkC,eAA2B,KAG7D,oBACA,OAGA,SACA,OACA,cAEA,YACA,cACA,KAEA,aACA,yBACK,sBAEL,WACA,2BCpEA,WACA,iBAEA,GACA,OACA,+BAAiC,CAAqB,IAEtD,yBAAiC,MAAS,EAC1C,EAAC,SAAY,EAEb,uBACA,WACA,YACA,SACA,IACA,SACA,wBAA6B,OAAS,MAAqB,KAC3D,iBAAiC,CAAa,QAC9C,EACA,IAAG,SAAY,CACf,CACA,2BCrBA,QACA,QACA,QACA,QACA,QACA,QACA,uCAEA,2BACA,MACA,OACA,aACA,OACA,OAAG,SAAY,CACf,gCACA,8BCfA,CACA,QACA,aACA,IAAiB,GAEjB,mDACA,+CAEA,wBACA,IACA,OACA,KAAG,SACH,UACA,OACA,GAEA,yBACA,+CACA,uBClBA,CACA,QACA,0CAEA,6CACA,OACA,yBCNA,CACA,QACA,QACA,YACA,+BAEA,4CACA,UACA,YACA,sDACA,0BACG,gCACH,uBCZA,QACA,QACA,QACA,6BAEA,uBACA,OACA,OACA,EACA,KACA,6BAEA,iCACA,mBAEA,SACA,0BChBA,CACA,QACA,OACA,WACA,uBACA,UAA6B,gBAC7B,UACA,UACA,2BAAqD,GAAO,EAAE,GAC9D,4BCTA,qBACA,IACA,OAAY,QACZ,IAAG,SACH,OAAY,MACZ,IACA,oBCNA,QACA,QACA,YAEA,uBACA,IACA,6BACA,iBACA,SACA,cACA,QACA,0BCXA,gCCAA,CACA,QACA,QACA,sBACA,uBACA,YACA,YACA,2CACA,uBCRA,QACA,QACA,SACA,SACA,QACA,OACA,YACA,iBACA,mBACA,mBACA,WACA,EACA,OACA,iCAEA,QAEA,4BACA,OACA,WACA,MACA,GACA,CACA,eACA,UACA,KAEA,MAbA,EAcA,sBACA,QACA,QACA,uCACA,MAMA,wBAJA,0BACA,cACA,EACA,MAEA,iBACA,OACA,KAEA,EACA,iCACA,kBACA,GAEG,OACH,iBACA,aACA,GAGA,OACA,UACA,cACA,gCAGG,2DACH,4BACA,oBACA,IACA,qBAEG,wBACH,uBACA,yCACA,eACA,QACA,OACA,CAGA,eACA,qBACA,EAEA,GACA,UACA,CACA,MACA,0BCnFA,QACA,YACA,oBACA,4CACA,oBACA,SACA,iBACA,wCCPA,EACA,KAWA,YAVA,OACA,QACA,WAEA,iBAIA,qcAEe,MAAyB,WACxC,OACA,OACA,YACA,oBACA,gBACA,4CClBA,KAMA;;;;;;GAEA,WACA,CACA,0BACA,iDACA,QAEA,cACA,OACA,oBAEA,cACA,2BACA,QAEA,cAgCA,CACA,IAEA,cACA,CACA,GAEA,aAYA,SAGA,iCACA,2EACA,cAEA,eACA,CACA,IACA,CAGA,aACA,kBACA,CACA,KACA,CAEA,aACA,OACA,IACA,oCACA,uBAA8B,CAE9B,6BACA,cACA,CACA,CAGA,aACA,UACA,+BACA,sBACA,qBACA,EACA,CAEA,aACA,kBACA,cACA,EACA,CAEA,aAEA,WAAqB,EAA+B,SACpD,OACA,aAEA,GAEA,KACA,kBACA,SAEA,GACA,CAEA,aACA,IACA,IACA,SACA,8BACA,aACA,GAAO,SACP,OACA,IACA,CAEA,cAgBA,aAOA,sBACA,2CAEA,aACA,sBACA,uDAEA,cACA,IACA,UACA,IAAO,SACP,CAEA,UADA,UAEA,CAEA,oBACA,IACA,GACA,WAAO,SACP,CACA,QACA,CAEA,kBACA,cACA,IACA,yBAEA,KACA,KACA,MAIA,OAFA,OAES,aAET,KAEA,KACA,OAAS,wBAET,qBACA,QACA,KAEA,OACA,IAEA,gBACA,GACA,kBACO,WACP,kBAEA,+BACA,CACA,MAAS,aACT,CACA,MAEA,EAEA,gBACA,sBACA,YACO,WACP,OAEA,KACA,cACS,OACT,WACS,OACT,KAEA,SAEA,MACA,CAEA,gBACA,CACA,UACO,KACP,KAEA,OAEA,MAEA,cACA,GACA,uBAGA,SACA,IAEA,gBACA,GAEA,gBACA,YAEA,UACA,2BAEA,OAEA,gBACA,GACA,gBACA,YAEA,UACA,OAEA,oBACA,SACA,iBAEA,kBAEA,KACA,SACA,UAEA,iBACA,QAEA,MAEA,cACA,SACA,iBAEA,UAEA,0BAEA,UAAqB,UAAwB,UAC7C,IACA,SAGA,OAEA,WAIA,2BACA,EAEA,aACA,YACA,IAEA,gBAGA,IACA,OACA,KAAO,SACP,CAEA,UADA,UAEA,CAEA,oBACA,OACA,WAEA,EACA,MAiBA,IAGA,eAlBA,OACA,QACA,SACA,QAEA,MAGA,KACA,MAKA,gBAJA,OAUO,cACP,KAEA,SACO,OACP,OACO,OACP,QAEA,OAEA,gBACA,IACA,gBACA,CACA,MAAS,eACT,CACA,MACA,EAAO,SACP,CACA,MACA,CAEA,gBACA,OAEA,OACA,iCAEA,WACA,qBACA,oBACA,sBAEA,SAEA,QACA,2BAEA,6BACA,IACA,aACA,gCAIA,yBAEA,mBAEA,cAwEA,uBACA,OACA,cAGA,cAYA,CACA,MAEA,cACA,CACA,MAEA,OAjBA,OAEA,aACA,KAIA,yBAHA,kDAKA,SAQqB,iBAAqE,IAC1F,gBAGA,kBACA,QACA,cAGA,OAEA,iCACA,gBAGA,eACA,SAEA,MADA,SAEA,cAGA,OACA,OACA,SAEA,MADA,SAEA,aAKA,qBACA,qFAEA,aACA,qBACA,4HAEA,cAyGA,UACA,UACA,mBACA,oBAEA,gBACA,SACA,MAGA,MACA,oBAGA,MAEA,QAEA,aAmQA,IAEA,MACA,sBACO,YACP,2BAEA,aACA,YACA,gBAAW,SACX,iBACA,2EAGA,SAEA,gFAIA,SACA,WACA,IAl6BA,WACA,cAOA,mBANA,OACA,oDAEA,KAIA,OACA,IAA2C,GAC3C,0BAIA,CACA,aACA,QACA,EAKA,UAEA,MAGA,KAEA,sCASA,UACA,iCACA,iDAGA,kBAH2E,0BAI3E,uCACA,mCAGA,sCA+CA,WApFA,GAEA,GA8GA,SAEA,OAEA,OACK,IACL,cAKA,IAHA,WAOA,KAEA,KAEA,SAkKA,MAvKA,yCA8PA,OACA,KAEA,yCACA,kBACA,0CAEA,8BACA,yBACA,OAEA,KAEA,uCACA,WAEA,SACA,WACA,YAEA,SAAqB,iBAAqE,IAC1F,iBAEA,OAEA,sCACA,OACA,SAEA,qBACA,0BACA,wBACA,+BAEA,4BAGA,iBACA,eAEA,aAEA,wCACA,OACA,SAEA,UACA,gBAEA,aACA,OAEA,SAIA,cACA,wBAEA,QAEA,yCACA,OAEA,2BACA,GACA,kBAAO,aACP,GACA,kBACA,EACA,KAIA,MA4BA,KAaA,KASA,QAEA,EAgHA,OAoBA,SACA,UACA,aACA,YACA,kBACA,aAEA,oBACA,CAmMA,gCACA,OACA,SAEA,8BACA,SAGA,qBACA,mBAEA,aACA,mBACA,eACA,CACA,UACA,EACA,KAGA,YACA,QA6BA,mBACA,kBACA,OAEA,MAyBA,SACA,CACA,WAKA,6BAAyB,CAAwC,SAAE,iCAC9D,oCACL,UACK,aACL,2BAGA,oBACA,IAAC,qEC18BD,MAAiB,YAEjB,oCACA,OACA,iECJA,QAkCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACA,WAEA,CACA,GACA,iDACA,OACA,iCAEA,6BACA,wBACA,2BAEA,yBAEA,0BAKA,KANK,OAFA,QASL,iBAmBA,CA4yCA,cAmjEA,aACA,QACA,uBACA,SAAiB,MAAkB,WACnC,OACA,OACA,KACA,SAEA,eAAmB,QAAiB,OACpC,SACA,KAIA,cACA,UACA,QACA,+DACA,sBAAW,kCAEX,uBACA,CACA,yBAGA,gBACA,CACA,QASA,CACA,eACA,IACA,eAAkB,MAAoB,OACtC,aAEG,cACH,uBACG,uBAEH,CACA,2BAIA,kCACA,SAAmB,QAAkB,OACrC,MACA,KACA,qBAGA,MAEA,CACA,QAWA,CACA,iBAEA,cACA,iBAIA,mBACA,cACA,wBACG,aACH,0BAAyC,SAIzC,sCAGA,qCACA,YAAY,aAGZ,cACA,oBAAY,aAAqC,SAIjD,cACA,KAGA,YAEA,SAEA,WACG,wBAEH,SACA,oBACA,aACA,aAEA,eAEA,CAMA,OALA,0DAEA,cAEA,aAWA,CACA,iBACA,QAEA,uBACA,SAAgB,MAAgB,OAChC,cACA,OACA,sBACA,SAAmB,MAAwB,WAC3C,OACA,OACA,QACA,YACO,aACP,KAGA,mBAAqB,MAAmB,WACxC,OAGA,KACA,gDACA,QAGA,UAKA,aACA,uCACA,MAGA,YAKA,iCAKA,0BACA,UACS,sBAET,OAGA,gBAAuB,sBAEvB,UACA,EACA,CAGA,CACA,QAWA,CACA,qBACA,YAAe,WACf,aAAc,WACd,aAAa,WAEb,YAAgB,MAAiB,WACjC,OAEA,QAAqB,0BACrB,iBAAkB,sBAElB,WACA,IACA,UAIA,gBAAoB,sBAGpB,WACA,GAEA,SAAgB,sBAChB,UASA,CACA,aACA,IAGA,cACA,QACA,kBACA,wBAGA,KACA,gBACA,sBACK,aACL,SACA,SAGA,gEACA,kBACK,OACL,wBACA,cACK,OACL,mBACA,mBACA,mBAEA,iBACA,mBAEA,MAAG,KAEH,cACA,iDACA,QACA,OAGA,4BACA,SAIA,IASA,CACA,eAEA,oBACA,6BAAY,QAIZ,cAAc,WAGd,YACA,0BACG,aACH,SAEA,gBAGA,QACA,IACA,OACA,uBACS,aACT,0BAEO,0BACP,qBACA,4BACA,qBACA,cAEA,YAAS,KACT,mCAIA,aAEA,CADA,gCAGA,WAAK,KACL,YAEA,WAEA,CACA,QASA,CACA,eACA,QACA,sCAAgB,QAAkB,OAClC,SACA,8CACA,MAGA,6CAGA,uCAIA,QAEA,CAuyBA,uBAEA,SACA,WAAkB,MAAkB,OACpC,MAEA,qBACA,MAGA,KAEA,KAMA,iBAJA,iBAKA,gBACA,SAEA,SACA,qCAEA,SAEA,CAGA,iBADA,QAMA,IACA,wBACA,WAAkB,QAAkB,OACpC,MACA,KACA,uBAMA,SACA,mCAKA,mBAIA,gBACA,YACA,WACA,kCACA,SAAiB,QAAwB,OACzC,SAGA,KAKA,6BACA,QACA,aACA,mBACA,kBACA,OAAuB,MAAmB,WAC1C,OACA,SACA,OACA,YAEA,UACA,eACA,SACA,UAAa,mBACb,mBAEA,CACA,QAGA,iBAEA,CACA,SAEA,eACA,oBACA,YACA,QAGA,sBACA,kBACA,gBACA,yBACA,aACA,QACA,gEACA,sBAAW,2BAEX,iBACA,KACA,QAGA,OAGA,QACA,0BAIA,uBACA,oBACA,qBACA,QACA,WAAmB,QAAqB,OACxC,SAEA,KAEA,sCAIA,uBAEA,iCAGA,SACA,cACA,UAAW,mBACX,oBACA,YAAO,eAEP,IACA,UACA,uBACA,aAEA,gBAAW,mBACX,mBAEA,KACA,gBACA,gBAAiC,mBAIjC,qBAEA,aAEA,aACA,6BACA,SAAgB,QAAuB,OACvC,SACA,KAGA,sBACA,OAEA,SAKA,kBAEA,qBANA,CACA,QAEK,yBAIL,2BACA,SAAmB,QAAiB,OACpC,QAEA,MACA,QAIA,QACA,QAUA,CACA,qBAEA,CACA,SAGA,eACA,UACA,aACA,wBACA,6BAIA,iBAGA,4BACA,SAAkB,MAAkB,WACpC,OACA,OAEA,uCAMA,SACA,SACA,QAKA,CACA,aAIA,oBACA,WACA,WAMA,UACA,wCACA,CACA,SACA,QAGA,CAEA,2BACA,cAEA,0BAAgC,SAIhC,4BAGA,iCACA,SAAkB,QAAkB,WACpC,MAGA,UACA,SACA,MACA,QAGA,iBAKA,iBACA,OAAqB,QAAqB,WAC1C,MAGA,WAEA,IACA,gBAGA,iBACA,gBACA,aACA,UACA,OACA,wBAEA,wBACA,QAEA,kBAGA,OACA,QAEA,SAEA,OACA,YACA,YACA,cAEA,YAEA,MACA,CAGA,0BACA,SAAkB,QAAkB,OACpC,SAGA,MAMA,iBACA,WACA,gCACA,OACA,QACA,wBAEA,cACA,SAEA,YACA,eAIA,EAGA,wBACA,KACA,CAWA,CACA,aACA,IACA,aACA,QACA,0BAGA,aACA,GAUA,CACA,eACA,oBAAsC,EAAQ,KAC9C,uBACA,OAGA,SACA,QAUA,CACA,iBACA,OACA,uBACA,KAcA,MATA,cACA,SACK,QACL,SACK,sCACL,gBAGA,WAOA,CACA,aACA,8BACA,SACA,QACA,yFAEA,SAWA,CACA,mBAEA,QACA,QAAgB,MAAqB,WACrC,OACA,SACA,YACA,WAEA,OACA,CACA,QAUA,CACA,iBAEA,IACA,wDACA,aACA,WAAkB,MAAkB,OAEpC,4BACA,MAGA,SACA,QAGA,IACA,MACA,oBACA,SAEA,cACA,WAEA,YAGA,uBACA,WACA,KAEA,SACA,KACA,QACA,CAEA,IAEA,YAEA,aACA,iBACA,cAEA,SACA,KACA,QAGA,uBACA,uBACA,oBACA,GAEA,QAGA,OACA,KAOA,CACA,eAEA,SACA,eACA,SACA,WAGA,YAGA,YAEA,gBAAkB,MAAmB,OACrC,+BACA,CACA,OACA,KAEG,MAEH,SACA,2BACA,sCACA,mBAGA,kBAEA,kBACA,UAAkB,QAAgB,OAClC,MACA,oBACA,qBACA,mBACA,MAGA,KACA,EACA,IAQA,CACA,iBACA,CACA,uBAEA,uBAEA,QAUA;;;;;;;;GACA,iBAEA,SACA,QACA,QAAkB,QAAkB,OACpC,UAEA,QACA,YAGA,QACA,GAAG,cACH,CACA;GACA,sBACA,yBAEA,OAIA,gBACA,KAIA,YACA,MAKA,wBAJA,wBAKA,iBACA,OACA,oBACA,iBACA,eAEA,gBAGA,sBAEA,UAEA,gBAEA,GAGA,gBACA,WACA,gCACA,qCACA,cACA,eAEA,IACA,MACA,CACA,CACA,QASA,CACA,eACA,mBACA,QAEA,aACA,OAEA,EACA,MAEA,SACA,CAaA,CAEA,uBACA,CACA,aAIA,YAGA,qBACA,sBAEA,CACA,uBAGA,qCACA,kBACA,YACA,sCAEA,cAGA,iCAEA,yBACA,QAEA,eAEA,qBACA,aAAiB,QAAwB,OAEzC,SACA,QAIA,kBACA,UAAmB,QAAmB,OAEtC,SACA,QAKA,cAIA,YACA,KAcA,CACA,qBAEA,IACA,SAIA,SACA,SAGA,MACA,OAEA,QAEA,cAGA,gBACA,WACA,+BAMA,8BACA,uBAGA,QACA,WACA,qBAIA,gBACA,cAEA,QACA,OACA,UACA,kBACK,sBAGL,CACA,qBAEA,qBACA,0BACA,OACA,OAAoB,MAAiB,WACrC,OACA,OACA,UACA,WACA,KACA,oBACW,aACX,gBAGA,WAGA,UAEA,MACA,SACS,WACT,SAEA,SACA,QACS,IACT,UAIA,sBACA,YAEA,KACA,MACA,aACA,QACA,YAKA,OAJA,QAEA,IAGA,KACA,yBACA,sBACA,iBACS,cACT,gBACA,YAGA,aACA,UAEA,cAIA,eACA,eAEA,kBACA,SAEA,QAGA,MACA,oBAEA,SACA,qCAEA,kBACA,oBACA,UAEA,QACA,CAIA,CAOO,UANP,OACA,EACA,SAGA,wBACA,OAAqD,SACrD,QACA,MACA,qBAIA,uBAAwC,EAAQ,KAChD,cACA,SACA,QAAmB,MAAmB,WAKtC,+BACA,mBACA,mCAIA,eACA,SACA,YAEA,IAIA,OAKA,YACA,YAKA,aAWA,CACA,iBAEA,SAEA,6BACA,aACA,oBACA,iBACA,oBAGA,gBACA,cAGA,gBAEA,uBACA,2BAQA,+BACA,SACA,4BACA,KACA,sBACA,eACA,aACA,qCACA,QACA,gBAGA,aAIA,MAgBA,8BAbA,WAEA,4BACA,qBACK,WAEL,wCAIA,iCAEA,WAIA,cACA,mCACA,WACA,mBAAoC,MAGpC,2CACA,aAGA,YACA,MAEA,aADA,WAWA,CACA,mBACA,WAEA,IACA,KAGA,YACA,QACA,wCACA,0BAAO,oCACP,QAGA,IAEA,QACA,UACA,QACA,yDACA,sBAAO,sCAGP,YACA,YACA,QACA,4DACA,sBAAO,+BAIP,cACA,sBAIA,kBAGA,wBACA,gBAMA,qBALA,UACA,YAKA,UAGA,WACA,UAGA,uFACA,sBAAO,+BAIP,oBACA,oBAEA,0BACA,IACA,eAEA,mFACA,sBAAS,gCAET,oBACA,gBACA,UACA,QACA,4FAA+B,2BAI/B,kBACA,OAA2B,SAC3B,kBACA,WAGA,sIAA+B,2BAE/B,cACA,WACA,UAAG,mBACH,SACA,WACA,UAGA,sHAA+B,2BAE/B,qBAEA,MACA,OAAwB,SACxB,uBACA,UAGA,uHACA,sBAAW,2BAEX,cACA,QACA,CAIA,iBACA,yBAEA,QAEA,8BACA,gBACA,QAEA,QAGA,yBAEA,kBACA,0BACA,QAEA,QAEA,QAAK,KAEL,MACA,mBACA,QACA,6DACA,sBAAW,qCAGX,oBACA,WAIA,IAEA,oBACA,SACA,aACA,UACA,QACA,qEACA,sBAAS,4BAGT,uCAEA,MACA,OAA0B,SAC1B,eACA,WAGA,mFACA,sBAAW,4BAEX,eACA,yBAGA,wGACA,sBAAW,4BAEX,WAGA,GACA,UAEA,qBACA,SACA,8BACA,0BACA,qBAGA,6HACA,sBAAS,iCAET,wCACA,YACA,cAEA,mHACA,sBAAS,gCAIT,cACA,eAEA,oCACA,SACA,2BACA,UAEA,qFACA,sBAAS,gCAIT,YACA,eAEA,iBACA,cAEA,CACA;QACA,0BACA,qBACA,QACA,0FAA6B,6BAE7B,WAkBA,CACA,qBAEA,cACA,KAOA,6BACA,WAGA,aACA,cACA,SAGA,eACA,eAGA,MAEA,cAEA,MAGA,iBACA,eACA,gBACA,kBAIA,eACA,oBAIA,YACA,QAIA,mBAEA,uBAKA,UAGA,aACA,sBAIA,eACA,KAKA,SAJA,yBAGA,eAGA,eAEA,IACA,SAGA,aACA,mBAIA,SACA,wBAIA,iBAGA,WACA,sBAGA,OACA,iCACA,mBACA,eAEA,4BAEA,UACA,qBACA,aACA,iBAIK,QAFL,UAGA,IAEA,iCACO,SAEP,SAGA,KACA,8CACA,eACA,wBAEA,UAGA,QACA,MACA,WACA,KAIA,sBAGA,mBACA,SAiBA,MAhBA,gCAEA,gBACA,KACA,0BAEA,OACA,6BAIA,UACA,WAGA,OAUA,CACA,eAEA,IACA,SAGA,SACA,wBAIA,WACA,MACA,sBAGA,WAIA,6CANG,IAOH,iBAIA,0CAIA,kCACA,8BACA,6BACA,gBACA,mBAGA,MACA,UAIA,cACA,iBAGA,GACA,gBAAkB,MAAyB,OAC3C,OAEA,KAGA,CAgBA,iBAbA,KACA,0BAEA,OACA,6BAIA,UACA,WAGA,OAUA,CACA,aACA,aAgBA,OAGA,UACA,iBAEA,oBAGA,eACA,gBAGA,uBAIA,YACA,0BACA,UAAkB,MAAkB,WACpC,OACA,OACA,QAIA,iCAGA,YACA,OACA,SAEA,eAAqB,MAAiB,WACtC,OACA,OACA,OAEA,SAEA,QAcA,oBAIA,qBAhBA,0BAEA,MACA,WAAkC,YAClC,QACA,eAEA,gBAEA,GACS,IAOT,OAKA,oCAEA,OAEA,yBACS,oBAET,+BACS,kCAET,uBACA,gBACA,eAIA,cAGA,iCACA,8BAEA,QACA,EAGA,QACA,cAGA,GACA,QAUA,kBACA,WACA,OAEA,UAEkB,EADlB,EACA,MAAsC,OACtC,WACA,WACA,OAEA,GAEA,KACA,iBAEA,YAIA,aACA,QAGA,gBAEA,EAUA,oBACA,CACA,SAEA,OAOA,aACA,IACA,MAYA,uBAXA,4BACA,uBACA,gBACA,uBACA,wBACA,4BAEA,wBACA,yBAEA,YAEA,2BAtLA,UACA,CACA,UACA,oBACA,KACA,aASA,QAgLA,CACA,aACA,SAIA,OACA,aACA,gBACA,kBACA,gBACA,cACA,iBACA,cACA,WACA,cACA,iBACA,aACA,oBACA,iBACA,mBACA,gBACA,YACA,aACA,cAIA,aAQA,CACA,aACA,OACA,qDAQA,CACA,aACA,cACA,yBAQA,CACA,aACA,cACA,UAMA,CACA,aAEA,YAKA,UACA,cAEA,CACA,eAAkB,MAAc,OAChC,gBACA,CACA,KACA,KAEA,CAEA,IACA,QAEA,wGACA,sBAAO,0BAEP,UAQA,CACA,aACA,OACA,oBACA,qDAQA,CACA,aACA,OACA,oBACA,qDAQA,CACA,aACA,eACA,uBAQA,CACA,aACA,8BACA,WAQA,CACA,aACA,OACA,qBACA,sDAQA,CACA,aACA,OACA,qBAQA,CACA,aAKA,IACA,SACA,+CACA,sBACA,gBACA,UACA,CACA,QAQA,CACA,aAIA,yCACA,SAQA,CACA,aAIA,cACA,YAQA,CACA,cAIA,cACA,WAQA,CACA,cAKA,IACA,MASA,MARA,QACA,YAEA,6BACA,uDAGA,eASA,CACA,cACA,eACA,kBASA,CACA,cACA,0BACA,IACA,WACA,CACA,eAAoB,MAAkB,OACtC,YAEA,KAAK,SACL,YAEA,KADA,gBAIA,eAEA,WACA,QACA,CACA,QAYA,CACA,oBACA,sBACA,eACA,WAAkB,MAAkB,OACpC,OAEA,oCACA,MAAG,SACH,gBACA,kBACA,IACA,YACA,QAGA,OAGA,QACA,iBACA,SAAsB,IAAY,IAClC,MACA,KACA,WAGA,sBACA,KAEA,2CACA,uBACA,MAEA,QAEa,UAEb,UAIO,cAEP,YAGA,wBACS,OAET,UAGA,SACA,yBACA,MACA,CACA,QAWA,CACA,kBAEA,OAGA,SACA,oCACA,mBACA,mBACA,OACA,4CACA,0BAAS,qCACT,SAIA,QAGA,kBAEA,CACA,eACA,OAGA,MAEA,mBAIA,QACA,aACA,QACA,aAKA,oBACA,SAAkB,MAAkB,OACpC,gBAEA,IACA,gBACA,OACA,mCACA,0BAAa,mCACb,QAEA,WACA,MACA,2BAEA,CAIA,0BAGA,YACA,QACA,QACA,QAAa,SACb,CACA,GAKA,YAOA,wUACA,qBAAe,2CACJ,WACX,SAGA,yHACA,qBAAe,oCAGf,cACA,IAIA,aAGA,gBAAmB,aAInB,+BACA,kBACA,gCAEA,mCAIA,oCAEA,UAEA,iBACA,eACA,EACA,OAEA,IACA,IACA,IACA,UACA,+BAEA,QAAO,GAEP,KACA,EAAoB,WACpB,OAGA,CAsBA,cAEA,WACA,wBACA,yBACA,mDACA,MACA,uDACA,QACA,aACA,YACA,YACA,0BAGA,qCACA,QACA,0BACA,sCAGA,QAIA,mTAGA,SACA,WACA,IAAiB,QAAmB,OACpC,SACA,KAGA,OAKA,iBACA,YACA,cACA,QACA,kEAIA,YAGA,uBACA,KAEwB,0BAIxB,KANwB,mBAExB,iBAIwB,mBAGxB,SACA,cAAuB,mBAClB,iBACL,cAAuB,0BAClB,QACL,WAAuB,KACvB,eACA,QAEA,aAKA,sBAJA,gCAEA,wBAJO,WAOP,kBACA,oBACA,qBACA,qBACA,sBACA,eACA,OAGA,OACA,kBACA,SAEA,WAIA,SALK,KAML,aACK,QAEL,QACA,QACA,OAAqB,SAA+B,OACpD,MACA,UAIA,WAEA,OAGA,EACA,QAEA,CAUA,cACA,IACA,aACA,kBACA,OAAmB,QAAqB,OACxC,MACA,KACA,kBAEA,aAGA,8BACA,GAaA,CACA,gBACA,SACA,YACA,cACA,YACA,mBACA,gBAGA,aAGA,SACA,2BAEA,MAEA,SAGA,OACA,2BAEA,MAEA,SAGA,IACA,8BACG,YACH,2BACG,UACH,SACA,oBACA,sBACA,qBACA,qBACA,qBACA,gBACA,MACA,gBACA,oBAEK,YACL,oCAEA,IAGA,CAUA,iBATA,aACA,uBAMA,gBAJA,QAKA,QASA,CACA,cACA,QAGA,uBACA,gBAAiB,QAAsB,OACvC,SACA,KAKA,kBACA,wBAGA,kBACA,kBAEA,uBACA,UAAqB,MAAqB,WAC1C,OAGA,KAGA,eACA,qBAA4B,kBAE5B,UAA4B,WAI5B,qBACA,qBAA8B,kBAE9B,UAA8B,WAI9B,iBACA,qBAGA,KAEA,WACA,SACA,aAAwB,YAAyB,OACjD,6BACA,sCACa,mCACb,0BAGA,UAGA,GAGA,YACA,UACA,wCAEA,2BAIA,qBACA,YACA,YACA,mBACA,gCAEA,mBAGA,gCAGA,eAGA,sBACA,OAIA,GACA,QAEA,CASA,cACA,MACA,sBACA,OACA,YAy0BA,gBACA,OAEA,GACA,uBAIA,uBACA,KACA,iBACA,sCACA,GACA,QACA,QACA,gBACA,GACA,QACA,eACA,uBAGA,aAEA,MACA,QACA,UACA,QAEA,iBACA,IAIA,CA92PA,2BACA,oBA6FA,CACA,WAGA,iCACA,KAEA,iBACO,GAEP,eAEK,eAEL,SAIA,WACA,qBAIA,eACA,MACA,SAGA,QACA,KACA,eAAkB,MAAgB,OAClC,eACA,oCAKA,YACA,cACA,mBAIA,SAEA,WACA,UACA,IAEA,WAEA,eACA,MAAK,iBAEL,IACA,YAEA,SADA,qBAGA,IAEA,GACA,SACA,IA3JA,+CACA,iBACA,yCAIA,MACA,uBACA,IAEA,QAEA,MACA,qCACA,GACA,OACA,kEAAgC,KAChC,0BAIA,MACA,qCACA,QACA,KAIA,GACA,yCAEA,IACA,wBAEA,kBACA,gBAEA,UACA,wBAEA,kBACA,0CAEA,cACA,eAEA,WAGA,SAGA,uCACA,UACA,mCACA,GACA,OAEA,UACA,aAGA,qBACA,CACA,cACA,OACA,mEAIA,iBACA,yCACA,CACA,cACA,OACA,sEAGA,cACA,MAEA,sBACA,SAAO,SACP,OACA,KAEA,GACA,WACA,EAGA,EA6EA,EACA,wBACA,cA4DA,CACA,mCAGA,UACA,eACA,yBAAsB,aAEtB,oCACA,YACA,iBAGA,kCAFA,kBAIA,aACA,qBACA,CACA,WAGA,SACA,MACA,OACA,SACA,SACA,2BAGA,cACA,oBACA,iCAKA,wBAKA,2BACA,SAGA,mBACA,cACA,8BACS,UACT,WAIA,MACA,SAEA,IAAO,SACP,OACA,KACA,GACA,OACA,EACA,OAzHA,yCACA,iBACA,wCAIA,QACA,uBACA,IAEA,QAGA,QACA,2CAEA,gBACA,iCAGA,+CAEA,uBACA,oBACA,CACA,WAEA,SACA,OACA,cACA,QACA,6CAEA,6BACA,sDAEA,UAAS,SACT,UAEA,2HACA,MACA,0BACA,QAEA,cACA,CACA,IACA,MACA,oBAIA,eAHA,+BAEA,SAGA,IAAY,iCACZ,YAEA,GA4EA,EACA,2BACA,OACA,yCACA,iBACA,yCAIA,QACA,sBACA,IACG,MACH,uBACA,MACA,KAEA,QAGA,QACA,0CAEA,MACA,2CAIA,wCACA,CACA,cACA,OACA,mEAGA,cACA,MAEA,YACA,UAAK,SACL,OACA,KAEA,OACA,YAIA,eACA,WACA,8CAEA,YACA,OACA,6DAEA,kBACA,OACA,GACA,GAiBA,EACA,uCAqEA,SACA,SAEA,SACA,cAEA,cAEA,cAEA,mBAEA,gBALS,aAOT,iBAGA,OAIA,+BACA,CACA,cACA,OACA,8DAIA,iBACA,QACA,aACA,mDACA,CACA,cACA,OACA,8DAGA,cACA,MAEA,YACA,YAAS,SACT,OACA,KAIA,GACA,WACA,mBACA,wCAEA,cACA,OACA,wDAGA,qBACA,UACA;EACA,OATA,UAUA,UACA,OACA,EACA,EACA,EACA,CAxIA,MACA,yCACA,iBACA,uCAIA,QACA,uBACA,IAEA,QAGA,QACA,0CAEA,MACA,2CAEA,gBACA,uBAEA,sBACA,eACA,sBAEA,+BAEA,qCAEA,uBACA,oBACA,CACA,WAEA,SACA,OACA,cACA,QACA,6CAEA,6BACA,sDAEA,UAAS,SACT,UAEA,2HACA,MACA,0BACA,QAEA,cACA,CACA,IACA,MACA,oBAIA,eAHA,+BAEA,SAGA,IAAa,iCACb,YAEA,GAoFA,EACA,wBAGA,IAEA,YAEA,2BACA,UACA,cAcA,EACA,6BACA,CACA,uBACA,IAEA,QAGA,MACA,yCAEA,IACA,0CAIA,wCACA,CACA,cACA,OACA,6DAGA,cACA,MAEA,YACA,UAAK,SACL,OACA,KAGA,GACA,WACA,gDACA,CACA,cACA,OACA,yEAGA,qBACA,iBAEA,gBAEA,UAKA,cACA,gBACA,QAEA,mBACA,UAGA,gBACA,OACA,OAGA,gDAIA,WACA,eACA,KACW,aACX,eAA0B,MAAgB,OAC1C,MACA,gBACe,sBACf,oBAEA,WAEW,mBACX,SACA,cACA,KACA,IACA,CACA,EACA,SAKA,QAJA,WAEA,OACA,yBAIA,kBACA,SACA,SAEA,eAAsB,MAAkB,OACxC,aACA,oBAEA,+BAGA,QACA,OACA,EACA,EAoBA,EACA,2BACA,IACA,+CACA,iBACA,2CAIA,MACA,uBACA,IAEA,QAGA,MACA,8BAEA,aACA,yCAEA,IACA,0CAGA,gCACA,IACA,8CACA,OACA,sCAEA,gCAEA,eACA,gBAAG,KAEH,OACA,eACA,SACA,kDAEA,YACA,OACA,wFAGA,yBACA,gBACA,EACA,CAgBA,EACA,yBACA,OACA,yCACA,iBACA,kDAIA,QACA,uBACA,IAEA,QAGA,QACA,sBAEA,iBACA,0BAGA,oCAEA,QACA,yBAIA,2CAEA,kBA8CA,UACA,cACA,IA/CA,SAEA,mBASA,CACA,QAGA,8BAZA,QACA,YACA,OACA,gDAAmC,SAInC,aAMA,SAEA,oBACA,OAEA,QAEA,SACA,SACA,EAAK,SACL,IACA,SAEA,MACA,OAEA,MAEA,IACA,oCACA,CACA,QAGA,KACA,QAEA,CAKA,GAeA,EACA,uBACA,OACA,yCACA,iBACA,gDAIA,QACA,uBACA,IAEA,QAGA,QACA,0CAEA,MACA,2CAIA,wCACA,CACA,cACA,OACA,yEAGA,cACA,MAEA,mBACA,oBACA,IACA,8CAEA,YACA,QACA,iDAAmC,SACnC,QACA,CAAK,SACL,OACA,KACA,GACA,OACA,GAgBA,EACA,+BACA,OACA,yCACA,iBACA,iDAIA,QACA,uBACA,IAEA,QAGA,QACA,0CAEA,MACA,2CAIA,wCACA,CACA,cACA,OACA,gFAGA,cACA,MACA,YACA,kBAAK,SACL,OACA,KAEA,GACA,OACA,GAqBA,EACA,yBACA,gBAuCA,oBACA,MACA,OACA,mEAEA,mBACA,QACA,QAEA,KAEA,cACA,IACA,MACA,uBAGA,4CACA,OAEA,kBACA,KACA,WAAoB,QAAqB,WAEzC,GACA,6BACA,uBAKA,gBACA,iCAEA,cAEA,qBACA,OACA,kBACA,CACA,OACA,QACA,OACA,YACA,QACA,cAGA,KAEA,CAGA,GACA,IAAK,SACL,OACA,KAGA,QACA,uBACA,SAAmB,QAAkB,OACrC,QAEA,MACA,QAIA,cACA,YAIA,eACA,WACA,8CAEA,YACA,OACA,wDAEA,kBACA,OACA,GACA,IA3HA,+CACA,iBACA,uCAEA,OACA,iCACA,iBACA,6CAIA,GACA,sBACA,IACG,MACH,uBACA,MACA,KAEA,QAGA,aACA,QACA,SACA,SAAgB,QAAiB,WAEjC,QACA,kBAEA,cACA,SAEA,CAmGA,EACA,iCACA,GACA,sCACA,aACA,OASA,EACA,2BACA,OACA,OAYA,EACA,8BACA,OAEA,gGACA,4BAAK,KAEL,0CAA0B,uCAE1B,8BACA,CACA,IACA,EAKA,EACA,4BACA,SACA,uBACA,+BAEA,QAcA,EACA,sBACA,GACA,4BACA,UAGA,cACA,qBACA,YACA,4BACA,cAEA,KASA,0BACA,IACA,uCAEA,qFACA,YACA,yBACA,IACA,uCAEA,gEACA,CACA,uBACA,IAEA,QAEA,mCACA,CACA,MACA,EACA,wCACA,YACA,uBACA,IACA,uCAEA,kDACA,qCACA,YACA,uBACA,IACA,uCAEA,mFACA,YACA,uBACA,IACA,uCAEA,2DACA,qCACA,YACA,qBACA,IACA,uCAEA,4FACA,YACA,yBACA,IACA,uCAEA,oDACA,uCACA,YAEA,EACA,sCACA,IACA,uCAEA,+CACA,kCACA,YACA,yBACA,UACA,uCACA,YACA,6BACA,UACA,2CACA,YACA,qBACA,UACA,mCACA,YAGA,MACA,6BACA,OAAG,SACH,iBACA,iBACA,2CACA,SACA,QAEA,MAEA,CACA,QAQA,EACA,uBACA,OACA,WACA,6BACA,OAAK,SACL,iBACA,2CAEA,4CACA,qCACA,oCAEA,GAIA,KAFA,IAGA,GACA,EAEA,EACA,YAAiB,MAEjB,WAGA,wBAA6C,QAAuB,gBACpE,+BACA,OACA,mBAEA,2BACA,qCACA,EAIA,kBACA,+BAEA,SACA,QAA4B,kBAC5B,OAAG,SACH,CACA,KAIA,0CACA,CACA,YAEA,gEACA,CACA,YACA,cACA,gBAKA,cAEA,qFACA,CACA,YACA,cACA,gBAGA,YAUA,mBACA,OAEA,yCAEA,CACA,KAAC,aACD,cACA,EAEA,iCACA,gCAGA,YACA,uBAkBA,SACA,6BACA,QAEA,gBACA,kCACA,kCAAgB,QAAoB,OACpC,cACA,UAGA,eAAkB,SAClB,QACA,KACA,0DACA,sCAEA,gBACA,KACA,WACK,QACL,aAEA,QAGA,OACA,QAIA,EACA,yBACA,MACA,cACA,+CACA,aACA,2BACA,2BACA,OACA,0CACA,OAGA,eACA,4BAIA,wCACA,uCACA,SAGA,oCACA,2BACA,CAEA,gBADA,cACW,oBACX,CAEA,eADA,cAIA,sBACA,CACA,IAAO,oBACP,CACA,IACA,EAIA,eACA,yBAEA,wBACA,6BACA,SACA,sBACA,uBAAoB,MAAsB,OAC1C,IAEA,SAEA,IASA,EACA,2BACA,MACA,cACA,sBACA,QACA,eACA,yCACA,oBACA,YACA,2BACA,eAEA,gBACA,iDACA,EACA,OACA,OACA,2CACA,0BACA,mCAEA,oBACA,uBAAqB,6BACrB,QAMA,EACA,gCACA,MACA,cACA,sBACA,KACA,gDACA,YACA,oBACA,oBACA,mBACA,OAEA,KACA,MACA,mCACA,eACA,kCACA,kBACA,yCACA,SACA,YACA,oBACA,8BAAmB,YACnB,uBACA,aAEA,8BACA,KAIA,EACA,QACA,iBAKA,oBACA,EAaA,mBACA,sCACA,gBAcA,gCACA,0BAGA,yGAA8B,+BAC9B,SAAS,uCAET,iBACA,yBAGA,0HAA8B,+BAC9B,SAAS,uCAET,mBACA,CACA,cACA,MAGA,yCAGA,kEACA,OACA,sCACA,QAAmB,8BAGnB,kCACA,sCACA,wCAEA,QACA,uBACA,cAGA,0FACA,qBAAe,qCAGf,8BAEA,OAEA,GACA,OACA,uBACA,GACA,OACA,oDACA,4BAAW,qCACX,WAAW,uCACX,MAEA,GACA,GAtEA,kBAGA,eACA,8BAEA,6DACA,UACA,cAEA,KAEA,aA6EA,EACA,kCACA,kBA0BA,kBA6BA,CAIA,MAJa,0CAGb,iBAEA,OACA,oDACA,4BAAW,qCAEX,oCACA,eACA,2BACA,OACA,wDACA,MACA,0BACA,uBAKA,6BACA,wDAEA,SACA,0BACA,aACA,cAGA,0FACA,qBAAa,qCAGb,8BAEA,OAGA,2BACA,4BACA,WACA,aACA,OACA,0FACA,MACA,0BACA,uBACA,WAGA,kBACA,oBAUA,oBAGA,iBAZA,OACA,sGACA,MACA,8BACA,uBACA,WAGA,wBAWA,QACA,OACA,4BAtGA,iCAGA,yGAA8B,+BAC9B,SAAS,uCAET,oBACA,gCAGA,0HAA8B,+BAC9B,SAAS,uCAGT,aACA,QACA,iBAEA,eACA,yBAAmC,eACnC,aACA,CACA,MACA,UACA,YAGA,qBA4EA,GAjIA,kCACA,+CACA,8BACA,MACA,4CAIA,YACA,kBACA,0CACA,UACA,iBAEA,WACA,6BACA,sBACA,YACA,4DAEA,oDACA,CACA,SAEA,EAsHA,EACA,iCACA,gBAeA,4BACA,iCAGA,yGAA8B,+BAC9B,SAAS,uCAET,oBACA,gCAGA,0HAA8B,+BAC9B,SAAS,uCAET,oBACA,iBACA,yBACA,IACA,uBACA,2CACA,sCACA,MACA,0BACA,uBACW,UAAI,uCAGf,cAAiB,yCAGjB,gCACA,gBACA,cACA,iDAEA,sCAEA,QACA,uBACA,cAGA,0FACA,qBAAa,qCAGb,8BAEA,OAEA,GACA,OACA,sBACA,GACA,OACA,oDACA,4BAAS,+BACT,SAAS,uCACT,MACA,SACA,wCACA,2CACA,MACA,GA7EA,YACA,2BAGA,eACA,8BAEA,6DACA,UACA,cAEA,KAEA,aA2EA,EACA,+BACA,aACA,sBACA,4CACA,IACA,gCAIA,+CACA,6CACA,GAWA,EACA,8BAEA,IACA,QACA,EACA,iCACA,UAEA,SAGA,mBACA,oBAEA,IACA,0CAIA,cACA,gBAIA,aACA,cACA,qBAEA,mCACA,CACA,WAEA,SAEA,YACA,qBAAK,SACL,OACA,KACA,GACA,OACA,GASA,EACA,2BACA,IACA,gBACA,OACA,cACA,UACA,CACA,QAUA,EACA,0BACA,IACA,4BACA,OACA,OACA,iBAEA,SAEA,oBAAoB,MAAgB,OACpC,+BACA,CACA,KACA,KAEA,CAAK,KAEL,YAEA,mBACA,CACA,QAcA,EACA,4BACA,MACA,MACA,0BAEA,oBACA,yBAGA,wBACA,iBACA,mBACA,UAEA,mBAAkB,MAAkB,OACpC,mBAEA,OAAG,gBAEH,UACA,kBAGA,kBACA,aACA,wBAKA,eAEA,OAEA,6BAEA,KASA,EACA,yBACA,OACA,SAIA,MAHA,UAEA,MAQA,EACA,8BACA,OACA,KAWA,EACA,+BACA,GACA,MACA,0BAIA,6DACA,UACA,kBAEA,GACA,eACG,oCACH,gBAIA,cAFA,EAiBA,EACA,6BAEA,OAKA,cACA,sBACA,0BACA,6BACA,8BAKA,kCACA,wBAIA,MAYA,EACA,iCACA,OAGA,QACA,SAIA,6BACA,WAIA,oBACA,SAEA,YAEA,KACK,IAEL,WAEA,KAEA,CACA,QAEA,EACA,GAsBA,OAcA,GAbA,iCACA,CACA,OAMA,EACA,iCACA,OACA,UAIA,IACA,8BAEA,QACA,8BACA,cACA,iBACA,YACA,qBACA,wBACA,cACA,8BACA,eACA,gBACA,qBACA,0BACA,iBAGA,GAEA,CACA,OACA,8CACA,6CACA,8CAEA,6CACA,oDACA,aACA,cACA,aACA,YACA,aACA,qBACA,mBACA,eAEA,gBACA,0CASA,qBAEA,eACA,wCACG,cACH,mDAEA,oBACA,+BACA,sDACA,KAEA,sBACC,OACD,4CAKA,QACA,kBAaA,EACA,qBACA,iBAEA,SACA,QACA,QAAkB,QAAoB,OAEtC,WACA,YACA,QACA,YAGA,yCAEA,SACA,oBACA,cACA,eAEA,GACA,CACA,QAGA,SACA,oCAEA,wBACA,UAAoB,MAAmB,OACvC,YACA,yBAMA,wBACA,OACA,SAQA,eANA,sBACA,iBAEA,mCAA2C,WAE3C,gBAIA,OAEA,eAEA,aAEA,2BACA,iBAEA,mCAAyC,WAIzC,wCACA,SAAmB,MAAkB,WACrC,OACA,OAGA,+BACA,IAGA,MACA,OACA,MACA,MAAa,MACJ,kBAET,CACA,eAAyB,MAA2B,OACpD,WACA,eAEA,WAGA,OACA,eACA,eACA,gBACA,oBACA,QAGA,mBAEA,YACA,UAGA,uBACA,aACA,mCACA,OACA,SACA,oBACA,+BACA,gBACA,gBACA,0BACA,KAGA,4BAEA,OACA,SACA,eAEA,CACA,QAGA,iBAEA,SACA,oBACA,iBACA,aAIA,eACA,SACA,gBACA,QAGA,kBACA,kBAEA,OACA,SACA,gBACA,QAKA,iBACA,OACA,SAEA,eACA,gBACA,oBAGA,WAAqB,MAA2B,WAChD,OAGA,OACA,SAEA,iBACA,oBAGA,gBACA,QAEA,aAIA,qBACA,YAGA,SAEA,QACA,SAGA,iBAEA,IACA,YACA,YAGA,IACA,qBACA,aAEA,UAAW,SAEX,YAKA,wOAAqC,KAKrC,iEAEA,IACA,GACA,SAEA,UAKA,sBACA,WAKA,wBACA,OAAS,KAIT,yBACA,YACA,mBACA,2BAGA,eAEA,gBACA,mBACA,CACA,CAEA,CACA,QAGA,CACA,QAcA,EACA,oBACA,mBACA,OAGA,kBACA,iBAGA,iBAEA,eACA,UACA,kBADyD,WASzD,SAJA,aAKA,IACA,UACA,oBACA,mBACA,sBAAkB,QAAoB,WAEtC,mBACA,kBAEA,YACA,QACA,kFAAiC,KAGjC,kBACA,WACA,SAEA,YAGA,QACA,CACA,QAKA,CACA,wCAIA,0BACA,OAEA,WACA,sBACA,SAAiB,MAAkB,WACnC,OACA,OACA,KAGA,KAKA,6BAGA,cACA,kBAIA,eACA,IACA,oBAEA,mFACA,sBAAW,oCAEX,aACA,YACA,QACA,uDACA,sBAAW,0BAEX,WAGA,qBACA,OACA,aACA,QACA,2EAAiC,yBAEjC,cACA,UAEA,6EACA,sBAAW,yBAEX,SAEA,IACA,aAIA,KACA,sBACA,WAGA,0GAA+B,4BAI/B,aACA,qBACA,WAGA,oFACA,sBAAS,kCAIT,6BACA,IAEA,SAEA,aACA,UACA,QACA,8DACA,sBAAW,sCAGX,cACA,aAGA,IACA,eACA,UACA,QACA,2DACA,sBAAW,4BAKX,4BACA,KACA,UACA,QACA,oFAAiC,8BAGjC,0BAGA,gBACA,8BACA,cACA,eACA,gBAMA,0CACA,YACA,WAGA,eACA,eAEA,mCACA,+BACA,OAAuB,QAAmB,WAC1C,MACA,WACA,WAEA,qFACA,sBAAe,sCAEf,YACA,gBACA,oBAGA,EACA,QAEA,6BAEA,kCAEA,OACK,2BAEL,oBACA,QACA,uBACA,SAAuB,MAAkB,WACzC,OACA,OACA,KACA,SAEA,SACA,6BAAyB,QAAiB,OAC1C,MACA,KACA,iBAEA,eAEA,OACA,CACA,QACK,SAEL,OACA,6BACA,IACA,WACA,iBAEA,UAEA,qBACA,WACA,QACA,kFAAmC,KAEnC,iBAEA,UAEA,kBAGA,cAKA,8BACA,OAEA,gBACA,OACA,OAKA,iDACA,uBACA,gBACA,SAEA,eAAqB,QAA2B,WAChD,MACA,WACA,WAEA,qFACA,sBAAa,sCAEb,YACA,gBACA,oBACA,CACA,QAIA,IACA,IAEA,kDADA,aAEA,gBACA,sBAGA,UACA,gBAEA,uBAEA,iBACA,qBAGA,qIAA+B,4BAE/B,oBACA,KACA,iBAEA,GACA,kBAEA,GACA,qBAEA,GACA,UAIA,8LAA+B,4BAG/B,eACA,qBACK,mCAEL,gBACA,QACA,+DACA,sBAAS,qCACJ,wCACL,WACA,mCAGA,uJAA+B,2BAE/B,WAAG,2BAEH,wBACG,0CAEH,kBACA,mBAGA,kJACA,sBAAS,kCAGT,YACA,iBACA,iBACA,YAEA,OAAG,aAEH,oBAIA,MAWA,MAVA,iCACA,eAEA,qCACA,oBACA,eAIA,OAYA,EACA,wCACA,GAGA,sCACA,OACA,+BAGA,cACA,IAQA,EACA,gCACA,gBAGA,iBACA,sBACA,SAAiB,QAAkB,OACnC,QAEA,MACA,QAGA,QACA,QAUA,EACA,kCAEA,OACA,CACA,UACA,oCACA,gBAKA,kBACA,oBACA,iCAGA,cACA,MAEA,8CADA,OASA,EACA,sCACA,OACA,oCAEA,UACA,oCAEA,oBACA,yDACA,WAQA,EACA,oCACA,IACA,SACA,cAEA,oBACA,OACA,KACA,SAEA,wBACA,eAEA,oBACA,OAAmB,MAAmB,WACtC,OAGA,iBACA,oBACA,UAEA,OACA,eAEA,gBAEA,uBACA,gCACA,0BAA4B,QAG5B,iCACA,+BACA,qBACA,QAEA,aACA,gBAKA,qBADA,uCAGA,WACA,OACA,iBAEA,yBACA,CACA,OACA,WAEA,SAAS,UAKT,WAHA,aAIA,CACA,OACA,WAIA,QACA,CAGA,gBACA,OAGA,QAKA,mBACA,QAAkB,aAAuB,WACzC,aACA,cACA,SACA,aACA,MACA,KAQA,sBACA,OACA,cACA,oBACA,4BACA,qCACA,6CACA,wBACA,aAGA,cACA,YACA,SACA,aACA,uBAGA,OAMA,wCAEA,MAGA,YAIA,2BACA,KACA,QACA,KAGA,UACA,oBACA,oBAAoB,MAAsB,OAC1C,aAEA,KAEA,UACA,OAEA,QACA,uBACA,SAAgB,MAAqB,WACrC,OACA,OACA,QACA,mBACA,eACA,sBACA,SAAqB,QAAuB,OAC5C,QAEA,MACA,QAKA,QACA,QAEA,OAEA,GACA,OASA,EACA,gCAEA,cACA,OACA,wBAEA,qBACA,uBACA,SAAgB,QAAuB,OACvC,MAEA,sBACA,gBAGA,WACA,QAUA,EACA,2CAEA,OACA,oBACA,mBAEA,0BAGA,OACA,sBAKA,eACA,OAAgB,QAAiB,WACjC,MAGA,cACA,KACA,KACA,QAGA,UACA,qBAIA,cACA,UACA,QACA,4EAA+B,6BAI/B,iCACA,yBACA,cACA,GACA,IACA,QACA,CAGA,CACA,QAGA,WAGA,qBACA,SAGA,YACA,WACO,cACP,UAGA,qHAAiC,wBAC1B,6BACP,WAGA,wIAAiC,wBAGjC,YACA,4BAEA,OACA,aACA,WAGA,iBACA,SACA,aACA,kBACO,mBACP,UAGA,sHAAiC,6BAC1B,qBACP,WAGA,qHAAiC,6BAEjC,mBAEA,cACA,YAGA,oBACA,SACA,gBACA,kBACO,sBACP,UAGA,mGACA,sBAAW,gCAEX,kCAEA,gBACA,eAGA,QACA,QAIA,mBACA,6BAEA,UAEA,CACA,QAQA,EAqXA,kBAEA,GAEA,kDACA,GACA,gBACA,iBACA,eACA,sBACA,gDACA,eACA,cACA,oCACA,0BAEA,kBAEA,kCACA,+BAEA,kBAEA,+BACA,2BACA,0BACA,kBAGA,UAEA,EAEA,EAmqBA,MAlqBA,iCACA,YAEA,gCACA,qBACA,OAGA,sFACA,gBAEA,yBACA,IACA,aAIA,6BACA,mBACA,6BACA,+BAIA,eACA,YACA,aACA,UACA,4BACA,GACA,UACA,aACA,MAKA,iBACA,IACA,aACA,gBACA,GAEA,EACA,mCACA,OACA,OAEA,EADA,EAEA,KACA,SACA,mBACA,OAGA,mBACA,OAEA,SACG,MACH,cACA,YACA,mBACA,OAGA,iBACA,iBAEA,QACA,CAEA,iBAEA,UAEA,KACA,uBACA,aACA,MAEA,OACA,IACA,IAEA,EACA,mCACA,OACA,gCACA,GACA,WACA,IAEA,EACA,kCACA,OACA,mBAEA,UAEA,KACA,WAGA,YADA,GAEA,IAEA,EACA,8BACA,OACA,iCACA,aAGA,gBACA,QACA,iDACA,OACA,iDAAiC,iBAOjC,aAEA,kBACA,YAEA,4BACA,CACA,mBAEA,iCACA,CACA,WACA,4BAA2B,kBAE3B,iBAA2B,WAG3B,kBAKA,wCACA,IAGA,+BACA,aACA,uCAEA,SACA,4BAAwC,MAExC,MACA,GACA,GACA,IACA,IACA,aAOA,IAGA,yBAA8B,CAAe,QAAE,aAE/C,CAGA,OAEA,gCACA,YAGA,4BAGA,uCAEA,UAIA,iBACA,uCAEA,8BAEA,IACA,IACA,EACA,IACA,aAGA,uCACA,kCAGA,SACA,uBACA,iBAQA,aACA,qBAGA,eAGA,eAGA,oBACA,KACA,GACA,IAEA,KACA,IACA,aAGA,uCACA,kCAGA,IAGA,UACA,gCACA,YACA,4BAGA,sBACA,eAKA,kBAKA,SAIA,6CAEA,UAEA,YACA,QACA,IACA,EACA,IACA,aAGA,qBACA,yCACA,CACA,8BAMA,uBACA,2BAEA,SACA,GACA,IAEA,KACA,IAAK,aAOL,IACA,kBACA,YACA,kCAKA,iCACA,CACA,uBACA,kFAEA,OAEA,UACA,OACA,GACA,IACA,aAEA,UAGA,OACA,kDACA,IAGA,sBACA,KACA,IAEA,KACA,cACA,CACA,MACA,EAEA,EACA,8CACA,OAGA,SACA,oBACA,2BAKA,SAIA,UAGA,iCAMA,QAAgB,YAChB,6CAIA,QACA,iCACA,UACA,OACA,GAAG,aAEH,UAGA,YAIA,8BACA,iBACA,MACA,EAEA,EACA,oDACA,OAGA,yBACA,gCAEA,UAEA,EACA,iCACA,mBACA,OAMA,KACA,cACA,YACA,0BACA,8BACA,SAEA,OACA,cACA,SAEA,gDAEA,UAEA,UACA,IACA,IACA,EACA,cACA,CACA,WAKA,qBACA,eAIA,UACA,oBAIA,0BAIA,mBACA,SACA,EAEA,EACA,2CACA,6BACA,GAEA,EACA,4CACA,OAKA,gBAEA,MADA,cAEA,YACA,wCAEA,UAEA,UACA,IACA,IACA,EACA,aAMA,sBACA,kCAEA,GAGA,gBAGA,YAIA,MADA,IAEA,iBAAsB,UAA6B,SACnD,aACA,SAGA,WAGA,UAIA,GAEA,iBACA,YAEA,4BAGA,0BACA,8BAKA,aACA,YAIA,aAOA,UACA,kCAEA,IAEA,QACA,IACA,IACA,aAEA,4BAIA,GACA,kCAEA,UAKA,WAGA,uBAIA,QAMA,OACA,kCAEA,IAEA,QACA,KACA,EACA,IACA,aAIA,gBACA,OACA,IAEA,KACA,GAEA,KAAS,aAET,UAIA,YAGA,UACA,IACA,IACA,EACA,IACA,cAGA,MAAmB,gBACnB,UACA,EAEA,EACA,+CACA,OAIA,KAIA,0BAGA,iCAIA,4BACA,IACA,0CACA,gBAOA,aACA,QACA,OACA,0CAEA,UAKA,UACA,YAEA,aAEA,IACA,IACA,EACA,IAAG,aACH,CACA,MACA,EAEA,EACA,0CACA,QAEA,QAGA,kBAEA,YAQA,kBAEA,iBACA,SACA,kBACA,aA2EA,MA1EA,aAEA,OACA,sDACA,OAGA,yBACA,cACA,WAEA,wBAGA,UAEA,EACA,2CACA,oBACA,KAEA,EACA,+CACA,OAIA,KAIA,0BAGA,iCAKA,IACA,GACA,8CACA,sBACA,QACK,mDAKL,qBACA,QAGA,eAKA,OACA,0CACA,CACA,YAEA,aAEA,IACA,GACA,EAAG,aACH,CACA,MACA,KAgBA,WAmrEA,8BACA,QACA,8BAEA,uCACA,aACA,wCACA,aAGA,QACA,QASA,GAmHA,oBAQA,yBA+LA,oBAOA,eAMA,EACA,oBACA,EAMA,eACA,6BACA,mBACA,QAGA,sBAFA,2BACA,WAUA,EACA,8BAEA,iBACA,qBAIA,mCACA,QAQA,qBAJA,WAGA,gBAEA,EACA,kCAUA,QACA,8BACA,kBACA,QACA,EACA,kCAOA,MACA,kBAEA,aAEA,YAEA,aACA,kBAAgB,MAAiB,OACjC,cAEA,QAMA,EACA,+BACA,aACA,IAOA,EACA,4BAEA,qBAOA,UACA,OACA,cACA,SAAgB,EAAY,QAC5B,YACA,eACA,kBACA,6BACA,6BACA,MACA,IAEA,IAGA,IACA,cACG,YAEH,0BACA,oBACA,aAGA,oBAAkB,EAAY,IAC9B,SACA,oDAGA,SAEA,CACA,QASA,EACA,kBACA,MACA,0BAEA,eACA,kDACA,OAEA,iEACA,SAqoBA,GApoBA,2BACA,WACA,YAAgB,MAAmB,OACnC,aAEA,eACA,QAEA,cAGA,KAEA,SACA,IAgBA,2BAfA,GACA,gBAGA,SAEA,iBACA,aACA,iCACA,yBACA,OACA,qCACA,uBACA,MACA,EAGA,CACA,oBACA,GACA,sBAGA,gBAEA,kBACA,UACA,+BACA,gBACA,WACA,8BACA,yBACA,OAQA,EACA,iBACA,MACA,yBAGA,kBAGA,gBACA,sDACA,GACA,uBACA,UACA,GACA,KACA,QAEA,kBACA,EACA,MAGA,KAGA,MACA,OAMA,EACA,4BAEA,oBAGA,OACA,iEACA,IAAgB,EAAY,IAC5B,gCAIA,4BAGA,sCAEA,QACA,IASA,EACA,8BAEA,6BAGA,8CACA,iBACA,iCACA,2CAAgD,EAAQ,KACxD,iCACA,qDACA,gCACA,yBAIA,6BAGA,+CACA,6DAIA,sCACA,uCAGA,UACA,IAMA,EACA,6BA0BA,aACA,kCAGA,YACA,wDACA,mBAKA,gDACA,wBACA,yBAKA,8BACA,aAAgB,2BAAmC,OACnD,0CACA,gCAIA,oBAGA,gEAGA,kBACA,WAEA,SADA,UAOA,EACA,wBACA,MAGA,KAFA,qBAIA,aACA,CAMA,EACA,2CACA,MACA,QACA,aACA,aACA,YACA,MAOA,EACA,0CACA,IACA,oCACA,sCACA,sCACA,iCACA,GAEA,kBADA,GAOA,EACA,2CACA,MACA,OAMA,EACA,uCACA,6BACA,KAMA,EACA,wCACA,8BACA,IAIA,EACA,yCACA,gCACA,gBACA,CAMA,EACA,uCACA,WACA,UAAwB,mBAAsB,OAC9C,gBACA,cACA,UAEA,mBAEA,IACA,QAEA,EAEA,MAEA,IACA,MAEA,sBACA,WACA,sBACA,qBACA,0BACA,GAEA,sCACA,UACA,gBAEA,OACA,gBAEA,yCACA,aAEA,cACA,UAEA,0CAEA,aAEA,aACA,iBAFA,SAIA,SACA,OACA,OACA,OACA,OAOA,KAAc,EAAQ,KACtB,QACA,WACA,cACA,yBACA,aACA,IACA,gBACA,EACA,IAEA,IAAS,KAAQ,KACjB,gCACA,eACA,GACA,cACA,yBACA,aACA,IACA,gBACA,EACA,IAGA,IAAS,KAAQ,KACjB,gCACA,eACA,GACA,SACA,0BACA,aACA,IACA,gBACA,EACA,IAEA,IAAS,KAAQ,KACjB,iCACA,eACA,GACA,SACA,0BACA,aACA,IACA,gBACA,EACA,IAGA,IAAS,KAAQ,KACjB,iCACA,eACA,GACA,gBACA,yBACA,aACA,IACA,gBACA,EACA,IAGA,IAAS,KAAQ,KACjB,iCACA,eACA,GACA,SACA,0BACA,aACA,IACA,gBACA,EACA,IAIA,SACA,cACA,cACA,cACA,cAEA,YACA,EAEA,CACA,UAEA,yBACA,OACA,IACA,cACA,cACA,cACA,aAEA,YAiBA,wBAhBA,SACA,eAMA,cALA,UACA,UACA,UACA,UACA,IAEA,qBACA,cACA,iBACA,iBACA,iBACA,iBACA,GACA,GAGA,EAEA,MAEA,IACA,QACA,MAEA,sBACA,WACA,wBACA,qBACA,0BACA,GAEA,sCACA,UACA,MAEA,UACA,gBAEA,yCACA,aAEA,cACA,UAEA,0CAEA,aAEA,aACA,OACA,+BAHA,SAMA,OAAc,EAAQ,KACtB,WAEA,WAAS,KAAQ,KAEjB,UACA,GACA,aACA,eACA,QAEA,SACA,IACA,YACA,eACA,QAEA,OAIA,6BACA,OACA,OACA,OACA,OACA,OACA,OACA,OAGA,KAAc,EAAQ,KAEtB,IACA,YACA,eACA,eAEA,UAEA,KACA,YACA,eACA,eAEA,aAGA,kBACA,OACA,IACA,IACA,IACA,MACA,MACA,IACA,IACA,MAIA,WACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,YACA,EAEA,CACA,UAEA,yBACA,OACA,IACA,cACA,cACA,cACA,cACA,cACA,cACA,aAEA,YAuBA,wBAtBA,SACA,eASA,cARA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,IAEA,qBACA,cACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,GACA,KAGA,kBAEA,GAmBA,gsBACA,GAEA,CAAY,CAznBZ,QA6nBA,iBACA,WACA,aAQA,EAuEA,GAtEA,SACA,cACA,QAEA,CACA,mEAEA,8EACA,CACA,4IAEA,4IACA,yBACA,QACA,yBACA,kBACA,iBACA,OACA,qCAEA,KAEA,sCADA,YAQA,wBAoCC,QAED,wDACA,SAGA,kBACA,CAEA,cAEA,sBACA,IACA,MACA,aACA,QACA,gDAEA,eAGA,UAA4B,WAC5B,qBACA,gCACA,OAEA,CAEA,QAKA,cACA,oBACA,OACA,IACA,EAEA,EA6BA,YA3BA,uBAEA,CAEA,MADA,OACG,8BAGH,cAEA,0BACA,IAEA,YAKA,eACA,kCAEA,WAGA,cAIC,0EC9/PD,EACA,EACA,aAEA,EACA,gBACA,SACA,0BACA,2BACA,0BACA,gCACA,uCACA,+BAGA,iBACA,kCACA,2BACA,CACA,gBACA,4BACA,cACA,kBACA,SAEA,GAAC,mBCzBD,CAKA,eACA,OACA,mCAKA,6BAGA,mCACA,2BACA,oBAEA,uBAGA,YACA,WAGA,mCACA,WACA,6BAEA,kBACA,eArBA,WARA,YAEA,mBA6BA,YAIA,WAEA,YACA,SACA,SAGA,8BACA,SACA,4BACA,wBACA,0BACA,mBACA,OAKA,+BAEA,cACA,kBAEA,cACA,IAGA,oCAEA,mBACA,iBAGA,QACA,sBACA,QACA,aACA,KASA,wCACA,4CAGA,wBAAwC,SACxC,QACA,OAEA,UAEA,2BAA4C,SAC5C,QACA,OAEA,UAEA,wCAEA,mBAA2C,IAAQ,KACnD,MAA4B,mCAC5B,SACA,OACA,cACA,QAGA,OAEA,CACA,CACA,QAKA,iCACA,aAGA,SAEA,eAFwC,SACxC,aAGA,YAEA,eAF4C,SAC5C,WAGA,kBAEA,sBAKA,QACA,QAKA,6BAGA,mBACA,yBAGA,cACA,cAGA,iCAAyC,CAAa,YAAgB,cAGtE,mBAMA,sBACA,+BACA,mCACA,mCAEA,iCACA,mCACA,qCAGA,0BACA,IAGA,wBACA,oBAAoC,EAAQ,KAC5C,mBACA,KAGA,yBACA,MACA,cAGA,yBACA,QACA,yBACA,KAGA,gCAGA,mBACA,yBACA,cAGA,+BACA,gBACA,UACA,UACA,UAGA,aACA,UACA,iBACA,OAGA,yCACA,wCACA,0CACA,uCAGA,mBACA,aACA,OAGA,2BACA,oBAAoC,EAAQ,KAC5C,sBACA,KAKA,wBACA,YACA,sBACA,UACA,OACA,OACA,OAEA,OAKA,6BACA,MACA,gCAOA,0BACA,gBACA,gBAMA,iCACA,iCAGA,gDACA,2BAIA,iDACA,0BAGA,kDACA,wBAGA,sDACA,2BACA,cAKA,yBACA,YACA,sBACA,WACA,OACA,OACA,OAEA,OAKA,8BACA,MACA,gCAGA,gCAKA,eACA,eAMA,2BAGA,oCAIA,uCAIA,uCAEA,eArBA,CAwBA,6BACA,OAEA,EACA,sBACA,OACA,kBAIA,QAAU,iBACV,6BAGA,cAEA,gCADA,cAMA,GACA,4BCpWA,CAMA,aACA,MACA,yBAGA,sBAAwB,CACxB,uCAGA,2BACA,WAEA,mBACA,MACA,mBACA,UAEA,sBAGA,0CAAsD,GAAwB,YAAQ,GACtF,yBAAiC,GAAc,MAAQ,GACvD,EA3BA,aACA,cACA,QAEA,IAwBA,EAGA,cACA,4BCjCA,CAMA,aACA,MACA,yBAGA,sBAAwB,UACxB,6BAGA,oBACA,aACA,sBAAiD,GAAkB,WAAwB,GAC3F,iBAA8B,QAAiB,SAAwB,GAIvE,qCAAuD,GAAgC,cACvF,yBAAiC,GAAkB,MACnD,EAvBA,aACA,cACA,QAEA,IAoBA,EAGA,cACA,4CC7BA,wDACC,aAGD,cA8DA,sBACA,KAUA,gBACA,aACA,OACA,KACA,YAEA,MACA,QAYA,gBACA,eACA,OACA,GAGA,oBACA,QAGA,kBACA,mBACA,mBACA,WACA,IAeA,cACA,QACA,QACA,MACA,OACA,EACA,EACA,oBACA,yBAEA,oBACA,KACA,gDAIA,UACA,QAGA,QAGA,QACA,QAUA,cACA,uBACA,OACA,GAOA,MANA,cACA,WACA,2BAEA,WACA,MACG,QACH,GAWA,cACA,OACA,WAEA,GACA,UAEA,GACA,UAGA,IAaA,gBAGA,gCACA,EAOA,kBACA,OACA,EAE+B,kBAD/B,OACA,YAAkE,EAClE,SAEA,yBACA,KASA,cAEA,IACA,UACA,SAEA,EACA,IACA,IAHA,EAIA,EACA,EACA,EACA,EACA,EACA,EACA,EAEA,EAMA,UACA,eACA,QAGA,KAAa,EAAW,IAExB,IACA,wBAEA,sBAMA,6BAAyC,EAAqB,KAO9D,aAAsD,UAEtD,IACA,QAGA,kCAEA,kBACA,YAGA,eACA,sBAEA,IACA,IAGA,QACA,QACA,QAGA,YAEA,IAEA,YACA,YAIA,aACA,OAGA,iBACA,KAGA,kBAEA,IAEA,OACA,KASA,cACA,IAaA,MAZA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAIA,EACA,EACA,EAGA,QAGA,SAGA,OACA,MACA,EAGA,MAAa,EAAiB,IAC9B,MACA,KACA,cAIA,gBAOA,YAIA,aAIA,WAA0B,EAAiB,IAC3C,MACA,WACA,MAMA,aACA,SACA,WAGA,gBACA,OAEA,MAAc,EAAiB,IAC/B,SAEA,UACA,SAGA,iBAEA,SAAkD,UAClD,sBACA,IACA,IAEA,QACA,MACA,MACA,eAEA,SACA,IAEA,cACA,aACA,QACA,EACA,GAGA,CACA,IAEA,GACA,eACA,GAaA,cACA,uBACA,UACA,qBAEA,gBACA,EAaA,cACA,uBACA,UACA,eAEA,MACA,EAKA,OA7dA,0BACA,cACA,0BACA,cAEA,yBACA,cACA,cAEA,YAQA,WAMA,aACA,KACA,IACA,KACA,KACA,MACA,KACA,MAGA,MACA,UACA,iBAGA,4BAOA,8JACA,IACA,IAGA,IA9BA,EAwCA,EAicA,KA1BA,SAQA,aACA,CACA,SAEA,UACA,SACA,SACA,UAMA,4BAMA,CACA,QAAG,iCACD,sBACF,QAcA,qBAZA,aAGA,cACA,uCAKA,KAGC,kDCphBD,2BAuBA,CAiCA,aACA,UACA,QACA,aACA,uBACA,cAKA,CAsBA,iBAGA,8CAMA,+EAAsJ,6BACtJ,cADyE,SAGzE,eACA,QAEA,MAOA,YAIA,mCAEA,oDAIA,4BACA,kBACA,wCAEA,cAAiD,gCAGjD,qCAKA,2BACA,kBACA,aACA,qBACA,eACA,UACA,cACA,mBAMA,gBAIA,aACA,qBACA,wBACA,0BAGA,wBAKA,qDAGA,uBAGA,OAEA,4BACA,mBACA,OACA,yBACA,oCACA,0BAEA,UAEA,aACA,eAEA,uDAKA,WAGA,yDAEA,qDAGA,iBACA,OAZA,SAsEA,qBACA,SACA,kBACA,WACA,WACG,WACH,IACA,SAEA,iBACK,4BACL,4EACA,cAIA,8CAAkG,qCAC3F,cACP,+BAEA,+BACA,sBACA,gBACA,oCAA4F,YAE5F,QAGK,cACL,OAEA,WAEA,OACA,MAEA,mBACA,6BACA,aACA,iBAGA,gCACA,kBAAgD,oBAEhD,wBAEA,MACA,OAEA,eACA,IACA,GAIA,+CAHA,6BAEA,qCASA,CACA,aACA,4DACA,cAgBA,aACA,CAcA,MAbA,MAIA,KACA,WACA,SACA,SACA,SACA,SACA,GAEA,MAIA,CACA,eACA,oCACA,eACA,EAEA,2CAIA,WAEA,WACA,QAIA,UAHA,gBAEA,2CAV4E,SAG5E,MAUA,CAqGA,eACA,OACA,oBACA,iBACA,WACA,kBACA,mCAEA,OACA,GAGA,SACA,KAIA,CACA,aACA,SACA,iBACA,kBACA,qCACA,WACA,4BAAwD,cAExD,MAEA,aACA,GACA,wBACA,YACA,IAOA,CACA,eACA,GACA,gBACA,iBAEA,iBAEA,eACA,aACA,oDACA,kBACA,+BACA,SAEY,aAEZ,SACA,cAKA,CA4IA,aACA,kBACA,SACA,iCACA,4BACA,mCACA,YACA,WAEA,KACA,EA6EA,aACA,GACA,mCACA,EAGA,CAWA,eACA,GACA,oBACA,qBAEA,iBAEA,eACA,GACA,YACA,wBAGA,MACA,gCACA,SACA,UACA,mCACA,GAYA,aACA,SACA,8BACA,oBACA,kBAIA,CA8EA,eAEA,uBAEA,SACA,GAUA,+BAVmD,iBAEnD,kCAAmD,sCAAiE,uBACpH,iBAGA,0BAGA,UAKA,CACA,iBACA,IACA,GAYA,qBAVA,4BACA,6BACG,0BAEH,WAGA,mBAEA,QAMA,CACA,eACA,SACA,OACA,MACA,cACA,iBACA,SACA,oBACA,qBAAsC,iBACtC,KACA,WACA,OACA,QACA,oBAAuC,YAEvC,SACA,gBAEA,UACA,KACA,CACA,GACA,CAEA,SADA,WAKA,CACA,eACA,SACA,mBACA,OACA,aACA,kBACA,iBACA,SACA,oBACA,gCACA,KACA,WACA,OACA,QACA,oBAAuC,YAEvC,SACA,gBAEA,UACA,KACA,CACA,GACA,CAEA,SADA,YAGA,aACA,SAIA,6CAEA,gDACA,eACA,WAEA,iBAEA,eAEA,eACA,iBACA,gBACA,mBAEA,QAEA,eACA,iBAAgC,OAAO,IACvC,gBAEA,gBACA,C,CAj+BA,QACA,IAEA,EAEA,UACA,QAIA,KACA,EAEA,EAEA,gBACA,YAEA,4BACA,uBACA,MAIA,MAKA,aACA,4CAYA,aAGA,IACA,QACA,KACA,SACA,oBAEA,qBAEA,EAEA,QACA,SACA,OAEA,gBAEA,mDA8GA,8CACA,eACA,sBAGA,oCACA,SACA,iBAGA,MAMA,qCACA,YACC,IAED,8BACA,mCACA,kCACA,WACA,MACA,IAKA,EACA,8BACA,YACA,eAEA,WACA,WAYA,KAXA,4BACA,sBACA,eACA,YAEA,IAGA,QAIA,cAEA,EACA,+BACA,iBACA,aAuEA,+BACA,gCACA,OAEA,EACA,mCACA,qBACA,2CACA,6BACA,WACA,IAEA,EACA,cAuCA,4BACA,GACA,uBACA,eACA,eAEA,iBAKA,yEACA,gDACA,+BAA6D,QAC7D,MAGA,UAGA,gBACA,6BACA,MA0BA,aACA,eAGA,+CACA,iBACA,OAKA,4CACA,SACA,OAEA,6BACA,aACA,aAEA,yBAEA,8BACA,iBAGA,uBAGA,YACA,GAqBA,aArBsC,OAEtC,KACA,YACA,kBAEA,KAGA,UAGA,4BAGA,mCAGA,2BAEA,aAkEA,6BACA,6BACA,gCAEA,8BACA,gBAwBA,GACA,YACA,iBACA,eACA,cAGA,IAEA,aACA,GACA,WACA,KAMA,aAKA,GAEA,4BACA,4BACA,6BACA,4BACA,4BACA,6BACA,0BACA,0BAEA,UAOA,oEACA,GAMA,cAGA,GACA,UACA,aACA,SAKA,gFACA,sDACA,6BACA,aAEA,QAEA,QAIA,cACA,GACA,aACA,qBACA,oCACA,UAGA,aAIA,kBACA,YACA,GACA,aAEA,GACA,6BACA,WACA,GACA,aAGA,GACA,YACA,SAGA,OA1HA,YAEA,wBACA,gBACA,KACA,QACA,UACA,cACA,SACA,MACA,gBAGA,uBACA,8BAEA,0DAEA,SACA,qBAA4C,mBAE5C,cACA,kBAoBA,UAEA,cACA,MA2BA,KA2DA,YA1DA,cA+BA,kBAKA,kBAOA,mBASA,YACA,YACA,iBAGA,aAeA,8BACA,YACA,iBAAoB,CAGpB,yCAGA,SAEA,uCAEA,cAGA,eACA,kBACA,IACA,8BACA,QAKA,YAEA,SACA,UACA,mBACA,kBACA,IAEA,qBAAmB,EAAS,IAC5B,uBACA,QAAK,MACL,KAGA,WACA,sBAEA,uBACA,iBACA,qCAEA,oBAEA,QACA,KAGA,EACA,4BACA,2BAEA,aAEA,kDACG,gCACH,YACA,+BACA,0CACA,kBACA,qBACA,UAEA,UAGA,mBAJO,MAMP,CACA,UACA,uCASA,6BACA,YACA,wBACA,YACA,YACA,aAEA,SACA,MAsBA,4BACA,sDACA,kCACA,YACA,6BACA,qBAEA,UACA,MAWA,4BACA,OAEA,YACA,eAEA,YA2BA,2BA1BA,MACA,mCACA,iBACA,qBACA,OAEA,QACA,KAEA,0BACA,OACA,wCAGA,qCAA4E,mCAE5E,iBAEA,YACA,OAEA,SAIA,uBAEA,6CACA,kBACA,qBACA,UACA,CAKA,gBAAiB,MAAyB,OAC1C,kCAKA,oCACA,GAEA,uBACA,OAEA,SAEA,EACA,MAEA,0DAIA,CACA,4BACA,4BACA,aAGA,IACA,EAKA,kDC/zBA,aAaA,eACA,YACA,kBAEA,wBAEA,WACA,sCAGA,sDACA,eAEA,KACA,cAEA,QAEA,gBACA,iBACA,uCACA,6BAEA,eAEA,aACA,sCAIA,6BACA,uBACA,MACA,iBACA,wBACA,gBACA,mBAIA,0BAKA,oCAGA,+DAEA,sDAIA,gBACA,gBA3BA,SA6BA,YACA,OAEA,KACA,wDACA,CACA,QAEA,eAEA,MAyDA,iBACA,oBAEA,cACA,WAIA,gDAEA,gGAEA,gEACA,K,CApJA,YAEA,QAGA,YACA,aACA,IAEA,gBAuEA,8BACA,6BACA,uCACA,SAWA,EACA,sCACA,iBACA,oCAEA,kCACA,YACA,qBACA,YACA,eACA,gCACA,YACA,yFACA,cACA,CAIA,EACA,6BACA,YAEA,mDACA,gBACA,+DAIA,mBAEA,kBAEA,kCACA,OAEA,iDACA,CACA,YACA,QACA,qBCpMA,aAMA,eACA,OAEA,gDACA,qDAEA,gBAEA,SACK,oDACL,4BAEA,QAMA,YACA,qCAIA,mBACA,qCAGA,+CACA,CACA,SACA,kBACA,kCAGA,qBAEA,IAEA,GACA,MAEA,YACA,MACA,qCACA,iCACA,+BACA,6BAGA,oBACA,qCACA,iCACA,6BACA,8BACA,gCAEA,iBAEA,eACA,QACA,WAhEA,QAGA,IA+DA,UACA,CACA,UACA,8BCzEA,8CCAA,aA+BA,aAAsC,0BAAuC,CAAgB,UAuB7F,CApDA,qCACA,CACC,WACD,2CAEA,QAEA,MAEA,SAEA,MAEA,SAEA,MAEA,SAEA,MAEA,SAEA,OAEA,SAEA,cA4BA,mCACA,YACA,gBAEA,iBACA,QACA,sEAEA,YACA,eACA,kEAGA,IAEA,iBACA,OACA,QACA,SAEA,cACA,OAEA,gEAA+E,MAAmB,OAClG,IAEA,iBACA,OACA,QACA,SAEA,cACA,OACA,WAEA,8EAAsG,eAAqC,QAC3I,IAEA,4BACA,mBACA,mCACA,YACA,0BACA,SACA,SAEA,SACA,eAGA,aAGA,aACA,gCACA,aACA,0BACA,2BACA,qBACA,CACA,cACA,cAGA,SACA,EACA,CAEA,4BACA,mBACA,iBACA,iDACA,WACA,qCACA,MACA,mBACA,UACA,mBACA,SAEA,OACA,QACA,EACA,KAEA,iBAEA,cACA,YACA,QACA,EACA,KAEA,oIACA,sCAEA,cACA,iBACA,EAEA,SACA,OAGA,sBAGA,YACA,QACA,eAGA,QACA,WAEA,wBACA,qBACA,UACA,CAEA,MACA,mBACA,CAEA,+BADA,cAEA,mBACA,CAEA,kCADA,cAGA,GACA,QACA,CAEA,kCACA,yCAAqE,EAAa,IAClF,SAGA,+BACA,yBACA,OACA,KAAK,mBACL,OACA,SACA,EACA,C,kBCxLA,CAsBA,YACA,QACA,MAtBA,YAEA,YACA,qBAEA,OACA,iBACA,kBACA,gBACA,mBACA,gBAEA,KACA,EAKA,SAMA,8BACA,cAGA,GACA,6BACA,SAGA,OAEA,aAGA,eACA,UAEA,QAEA,aAYA,KAEA,OACA,MAGA,aAEA,KAEA,qCACA,UAGA,cACA,IACA,IACA,kCAEA,OAEA,aAKA,kBACA,2BAEA,4BACA,0BAEA,4BACA,4BAEA,4BACA,0BAEA,4BACA,UAEA,OArEA,UAUA,eAUA,iCACA,WACA,cAGA,eACA,MAoDA,YA5BA,gBAGA,gBAiBA,cAEA,gBAEA,kBAGA,8BCtGA,aAeA,aACA,aACA,cAEA,OACA,cACA,WACA,cACA,WACA,WACA,YACA,cACA,iBACA,cACA,aACA,eACA,aACA,aACA,YACA,MACA,SACA,aACA,gBACA,cAGA,MAGA,CACA,aACA,OACA,sEACA,8BACA,KAIA,CAEA,aACA,eACA,QACA,eACA,cACA,eACA,YACA,QACA,EACA,UACA,YACA,aACA,EACA,UACA,cACA,YACA,QACA,EACA,MACA,QAIA,YAHA,kBACA,sBAGA,iBACA,kBACA,eAmCA,aACA,iBAA6B,kBAAsC,WAAsC,WACzG,cACA,CAIA,CACA,iBACA,gBACA,eACA,WACA,YACA,0BAGA,oBACA,OACA,MACA,0BAGA,oBACA,OACA,MACA,MACA,cAA2B,eAI3B,MACA,EASA,CACA,iBACA,IACA,kCACA,EAEA,qCACA,IACA,kCACA,EAEA,0BACA,YACA,kCACA,EAGA,QACA,CAEA,CACA,aACA,2BACA,aACA,gBACA,6BACA,sCACA,sDAEA,4CACA,yBACA,SAIA,CACA,eACA,SACA,8CACA,eACA,mCACA,sCACA,gBACA,WAGA,CACA,aACA,iCACA,0BAEA,UAKA,CACA,eACA,sBACA,kBACA,kBACA,6BACA,gBACA,8BACA,iBACA,8BACA,+BACA,cAEA,EACA,CACA,QACA,sBACA,iBACA,8BACA,mCACA,EAGA,CACA,aACA,iCACA,oBACA,2BACA,mDACA,IACA,CACA,SAEA,eACA,oBACA,yBACA,2BACA,mBACA,EACA,iCAEA,gCACA,+BAEA,4BACA,WAEA,aACA,iCACA,mEAEA,WAEA,CACA,aACA,wBACA,UAEA,aACA,kCACA,E,CA9QA,YAGA,kCACA,UACA,UACA,8IACA,MACA,SACA,QAEA,aAyCA,kBA6BA,6BACA,uBACA,MACA,GACA,mBACA,WACA,6BACA,UACA,uBACA,CACA,QAEA,4CACA,aACA,IAEA,YAEA,MACA,YAEA,OACA,gCACA,yBACA,iEACA,sDAEA,uEACA,yBACA,OAGA,mBlK1IA,aAEA,eACA,UAAc,8BAAiD,KAC/D,IAEA,aACA,IACA,eAEA,cACA,cACA,kBACA,gBACA,gBACA,cACA,eACA,aACA,eACA,aACA,eACA,aAEA,aAEA,WAIA,cAEA,UAEA,CACA,aAWA,wBACA,0BACA,WAGA,aACA,UAEA,aACA,eACA,UAEA,aACA,eACA,EAEA,eAGA,SACA,kBACA,OAGA,IAEA,aACA,cACA,IAEA,eACA,YAEA,YACA,GACA,EACA,QACA,yCAEA,eAIA,cAGA,MANA,WAEA,aAKA,aAEA,gBACA,CACA,aAGA,YACA,QAEA,oBACA,gCAIA,kCAEA,UACA,wBACA,EAAwD,qCAAiB,QAGzE,kBACA,QAEA,2BACA,uBAKA,cACA,SAMA,WAKA,WACA,UACA,KAGA,OAdA,CAeA,EAgJA,eACA,IACA,2CAEA,wBACA,oBA9FA,gBA5FA,SAuCA,MAEA,OAEA,iBAEA,GAEA,qBACA,QACA,IAEA,WAA2C,CAAkB,cAC7D,YAA4C,CAAiB,cAE7D,aAA6C,CAAkB,cAC/D,yBAAyD,CAAiB,cAE1E,YAA4C,CAAkB,cAC9D,wBAAwD,CAAiB,cAEzE,oBAAoD,CAAkB,cACtE,6BAA6D,CAAiB,cAE9E,gBACA,SAEA,OACA,2BAGA,2CACA,UAEA,8BACA,SAEA,GACA,UAEA,eACA,SAEA,OACA,2BAGA,2DACA,GAGA,0BAGA,2BAGA,sEACA,UAEA,6BACA,SAEA,SAIA,yBAIA,KACA,MAEA,yBACA,IACA,aAGA,gCACA,eAGA,MACA,yCAGA,yDACA,aAEA,oBACA,WACA,kBACA,aAAmB,OAAsC,yBACzD,OACA,4BAIA,gCACA,UAEA,mBACA,WACA,mBACA,OACA,eAAmB,EAAO,QAC1B,WACA,0BACA,eACS,wBACT,WACS,6BACT,IACS,mBACT,wBACA,yBACA,SACA,SACA,sBACA,WACA,GACA,QAEA,cACA,CAEA,eACA,KAEA,gBACA,IACA,sCAGA,uBACA,QAKA,EASA,CACA,MACA,qDACA,kEACA,2BACA,WACA,+BACA,gBACA,MACA,sCAA4C,WAAW,KAGvD,cACA,QACA,CAEA,GAEA,yBACA,iBACA,gCAGA,6CACA,UAEA,sBACA,yCACA,oCAGA,oDACA,UAEA,uCAEA,aAEA,kCmK3UA,aAgDA,YACA,MACA,gBAAiB,sBAA+B,IAChD,SAGA,oBACA,kBAmEA,yBAlEA,0BA4DmD,SAGnD,sFA9DA,4BACA,aAGS,2GACT,MACA,UACA,kBACA,OACA,qBAMa,sHACb,MACA,MACA,WACA,wBACA,CAIA,kGAEA,QACA,GAEA,GACA,OACA,GACA,IAEA,wBACA,aACS,gGACT,uBACA,2CACA,2CACA,yBACA,IACA,SAEA,sBACA,CAGA,+FACA,CAGA,iFACA,MACA,CACA,GACA,IAGA,SAOA,QAzHA,UACA,SAEA,SAEA,+CACA,MACA,mBACA,gBACA,oBAAa,iBACb,wBACA,UACA,UACA,WAAgB,cAGhB,iBACA,eACA,qBAEA,sBAEA,SACA,UAEA,IACA,YAEA,IACA,kBAGA,aAAc,SACd,QACA,EACA,YACA,cAEA,sCACA,OACA,0BACA,YACA,cAEC,mBA+ED,oCACA,SACA,UACA,YACA,cACC,kBAED,kDACA,CACA,YACA,cACA,kCACA,yBACA,0BAEA,kEACA,YACC,IACD,iCACA,yBACA,0BAEA,yBACA,4BAIA,gHACA,8BAIA,8IACA,wBACA,WACA,cACA,uBACA,gCACA,mBACA,SACA,GACA,GACA,kCACA,yBACA,0BAGA,yBACA,4BACA,WAEA,iGACA,OAIA,kBACA,gBAAiB,sBAA+B,IAChD,SAGA,0CACA,SAGA,2FACA,SAGA,oFACA,OAEA,gCACA,yBACA,0BAGA,yBACA,4BACA,WAEA,gGACA,OAIA,kBACA,gBAAiB,sBAA+B,IAChD,SAGA,0CACA,SAGA,oFACA,OAEA,6BACA,yBACA,0BAGA,yBACA,4BACA,WAEA,6FACA,OAIA,kBACA,gBAAiB,sBAA+B,IAChD,SAGA,0CAA+C,SAE/C,8EACA,OAEA,gCACA,yBACA,0BAGA,yBACA,4BACA,WAEA,gGACA,OAIA,kBACA,gBAAiB,sBAA+B,IAChD,SAGA,0CACA,SAGA,wGACA,QAEA,6BACA,yBACA,0BAGA,yBACA,4BACA,WAEA,6FACA,OAIA,kBACA,gBAAiB,sBAA+B,IAChD,SAGA,0CAA+C,SAE/C,8EACA,OAEA,+BACA,yBACA,0BAGA,yBACA,4BACA,WAEA,8FACA,OAIA,kBACA,gBAAiB,sBAA+B,IAChD,SAGA,0CAA+C,SAE/C,wFAA+C,SAE/C,8EACA,OAEA,6BACA,yBACA,0BAGA,qCACA,QAEA,iCACA,yBACA,0BAGA,qCACA,YAEA,iDAEA,6BACA,yBACA,0BAEA,kEACA,QAEA,+BACA,yBACA,0BAEA,kEACA,UAEA,qDACA,OACA,kBACA,YACA,cACC,kBAED,QACA,CACA,kBACA,MACA,qBACA,eAEA,mBAAqB,wBAAqC,OAC1D,8BACA,aAGA,QACA,CACA,QACA,WACA,MACA,mBACA,eAGA,mBACA,4BAAqB,wBAAqC,OAC1D,8BACA,aAGA,QACA,CACA,QACA,YAAgB,WAAsC,yBACtD,cACA,eAEA,sCAA2B,IAC3B,qCAEA,4BACA,gBACA,UAOA,oDANA,OAAc,uBACd,GACA,YACA,cAEA,mBAGA,aACA,uBACA,WAEA,cADA,cAEA,iBACA,uBACA,yBACA,eACA,iBACA,oBACA,cACA,CAiBA,WAfA,QAEA,eACA,4CACA,aACA,oBACA,YACA,cAGA,yBACA,mBACA,aAEA,SAEA,EACA,mBACA,QAAa,CACb,0BAAa,CAEX,qBACF,YAEA,gCChcA,aAEA,aACA,eACA,MAEA,aACA,6BACA,OAEA,aACA,cACA,KAEA,aACA,mCACA,OAEA,UACA,CACA,eACA,eACA,sBACA,wDCrBA,CACA,aACA,qCACA,qBAEA,aAEA,qCAGA,wBACA,eAEA,uCACA,YAEA,aACA,eACA,MAEA,eACA,gBACA,iCAAiB,MAAiB,OAClC,IAIA,yEAEA,OAMA,iBACA,QACA,0BAGA,WACA,OAGA,iBACA,IACA,SAEA,aACA,eACA,KAEA,aACA,eACA,KAEA,aACA,SACA,WACA,OAEA,aACA,SACA,WACA,MAEA,CAGA,aACA,IACA,mBAEA,qBACA,KACA,cAEA,iBAAe,IACf,WAIA,MAEA,CArDA,eACA,oBACA,+CAkCA,2FAkBA,oCACA,uCACA,mCACA,qCACA,iCACA,qCACA,0CACA,+BACA,mCACA,iEAEA,YACA,CACA,WACA,sBACA,iBACA,QACA,gBACA,aACA,gBACA,iBACA,iBACA,oBACA,oBACA,qBACA,oBACA,uBACA,wBACA,2BACA,uBACA,yBACA,aACA,gBACA,qBACA,WACA,cACA,mBACA,oDC5HA,E,0FCEA,CAFA,mBAEI,EACF,WAAW,EACX,eAAY,EACZ,YAAS,EACT,iBAAa,EACb,UAAO,EACP,aAAS,EACT,YAAS,EACT,sBACA,mBAAY,EACZ,aAAS,EACT,QAAK,EACL,aAAU,EACV,cAAW,EACX,aAAW,EACX,SAAM,EACN,SAAO,EACP,WAAO,EAAQ,IACf,oBAAe,EACf,mBAAe,EACf,cAAW,EACX,cAAW,EACX,eAAY,EACZ,kBAAe,EACf,wBAAoB,EACpB,eAAW,EACX,SAAM,EAAQ,GACd,wBAAe,EACf,mBAAe,EAAQ,KACvB,yBAAY,EAAQ,KACpB,eAAK,EACL,QAAM,EACN,aAAU,EAAQ,KAGpB,EAAK,OAAS,EAAK,UAAU,OAE7B,EAAK,OAAS,EAAK,QAAQ,UAAU,OACrC,EAAK,QAAU,EAAK,YAAY,QAChC,EAAK,MAAQ,EAAK,YAAY,MAC9B,EAAK,IAAM,EAAK,YAAY,IAC5B,EAAK,GAAK,EAAK,YAAY,GAC3B,EAAK,IAAM,EAAK,YAAY,UAC5B,EAAK,SAAW,EAAK,YAErB,SACA,EAAK,UAAY,EAAK,YAAY,UAClC,EAAK,aAAe,EAAK,YAAY,aACrC,EAAK,QAAU,EAAK,YAAY,QAChC,EAAK,UAAY,EAAK,YAAY,UAClC,EAAK,KAAO,EAAK,YAAY,KAC7B,EAAK,OAAS,EAAK,YAAY,OAE/B,EAAiB,oDClDjB,CAIA,eAAiD,MAA0C,oCAA4D,oCAEvJ,CAJA,gBAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,QAKjjB,QACA,QAMA,iBAOA,cACA,GAEA,aACA,QAiBA,CA4DA,YA3DA,KACA,4BACA,YAIA,wBAEA,+CACA,YACA,QACA,EAeG,GACH,KACA,gCACA,YAEA,aACA,yCAGA,cACA,+BAGA,oBACA,eASG,GACH,KACA,+CACA,kBACA,0BAEA,wBAGA,MAKA,IAGA,E,iDClHA,aAIA,eAAiD,MAA0C,oCAA4D,oCAKvJ,CAPA,gBAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,gBAQjjB,aACA,GACA,OAEA,CAsBA,YArBA,KAKA,yBACA,wBACA,GAMG,GACH,KACA,2BAEA,CAGA,MAKA,IAGA,E,oDCtCA,CAIA,eAAiD,MAA0C,oCAA4D,oCAEvJ,CAJA,gBAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,QAKjjB,QACA,QAMA,iBAOA,cACA,GAEA,aACA,QAeA,CA0FA,YAzFA,KACA,4BACA,YAWA,wBAEA,+CACA,YACA,QACA,EAeG,GACH,KACA,gCACA,YAEA,aACA,yCAGA,cACA,+BAIA,oBACA,eASG,GACH,KACA,+BACA,cACA,oBACA,SAEA,qBACA,sBAGA,UAEA,uBAGA,cACA,cAGA,4DACA,CAMA,2CALA,CACA,cAGA,WAEA,GAGA,MAKA,IAGA,E,iDC9IA,aAIA,eAAiD,MAA0C,oCAA4D,oCAKvJ,CAPA,gBAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,QAYjjB,KAMA,gEAKA,aACA,OAEA,OAEA,6BACA,CACA,OACA,EAOA,CAyDA,YAxDA,KAcA,gCACA,OACA,QACA,MAcG,GACH,KACA,iCACA,OAEA,WACA,aAGA,mBAGA,gBAIA,QACG,KACH,KACA,6BACA,CACA,QAGA,MAKA,IAGA,E,2BCpGA,aACA,QACA,SACA,SACA,SAKA,OAIA,MACA,8BACA,MACA,YACA,MAEC,cAED,8BACA,MACA,YACA,MAEC,cAED,8BACA,MACA,YACA,MAEC,cAED,8BACA,MACA,yBACA,MAEC,cAED,8BACA,MACA,yBACA,MAEC,cAED,8BACA,MACA,yBACA,MAQgD,cAEhD,uBAMA,WACA,gCACA,MACA,YACA,MAEC,cAED,gCACA,MACA,YACA,MAEC,cAED,gCACA,MACA,YACA,MAEC,cAED,gCACA,MACA,yBACA,MAEC,cAED,gCACA,MACA,yBACA,MAEC,cAED,gCACA,MACA,yBACA,MAQkD,cAElD,yBAEC,WAED,mCACA,MACA,yBACA,MAEC,cAED,mCACA,MACA,yBACA,MAEC,cAED,mCACA,MACA,yBACA,MAMA,cACA,E,2BCjJA,aACA,QACA,OAIA,QAGA,iCACA,iCACA,yBACA,yBACA,4BACA,+BACA,W,qCCfA,aAIA,eAAiD,MAA0C,oCAA4D,qCAEvJ,eAAiD,IAAa,4BAAyF,8FAAuF,0BAE9O,eAA0C,0BAA+D,wFAAuG,mDAAyE,aAAe,mCAA6E,0EAAuH,YAE5e,CARA,gBAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,QASjjB,OAEA,iBACA,SAUA,kBACA,aAGA,UAEA,kEACA,WAEA,CAgDA,MAtDA,kBAOA,KAMA,gCACA,mBAEA,kBACA,+EAGA,WACA,qCAGA,oDACA,GAEA,KACA,GACA,iCACA,UACA,YACA,EAAO,SACP,gBACA,SAEA,uCACA,CAEA,SADA,QAEA,EACG,GACH,KAMA,yBACA,CACA,QAGA,MAKA,KAGA,E,2BC5FA,aAMA,eAAiD,MAA0C,oCAA4D,qCAEvJ,eAAiD,IAAa,4BAAyF,8FAAuF,0BAE9O,eAA0C,0BAA+D,wFAAuG,mDAAyE,aAAe,mCAA6E,0EAAuH,YAK5e,CAbA,6EAAoG,OAAmB,SAAE,aAAmB,4FAA8H,QAE1Q,cAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,QAajjB,QACA,OAEA,iBACA,SACA,SAMA,kBACA,aAGA,UAEA,kEACA,WAEA,CAqPA,MA3PA,aAOA,KAMA,0BACA,qBACA,GAMG,GACH,KACA,iCACA,mBACA,IACA,EAGA,WACA,aAIA,OACA,WAIA,cACA,wDAIA,KACA,eAKA,qDACA,UACA,OAEA,qBACA,OACA,aAKA,oBAKA,aAWG,GACH,KACA,2BAEA,YAEA,iBACA,qBAGA,gBAEA,iBACA,YAEA,aAEA,OAWG,GACH,KACA,2BACA,YAEA,oBACA,eAIA,cADA,SAEG,KACH,KAYA,4BACA,OACA,KAEA,KACA,+BAIA,wCAA4B,KAC5B,IACA,2BACA,EAAS,SACT,aACA,4BAEA,iCACA,WAEA,OAGA,sBAAqC,CAGrC,WACA,SACA,OACA,oBACA,SAEA,iBACA,sBAGA,6CAGA,cACA,OACA,8BACA,SAEA,WAAmC,kDAAuH,iBAAG,CAC7J,WAGA,CAcA,KAAS,SACT,aACA,oCAGA,CACA,QAeG,GACH,KACA,gCACA,OACA,oBACA,SAaG,GACH,KACA,8BACA,SACA,mBACA,iCACA,CACA,QACA,EACG,GACH,KAMA,yBACA,CACA,QAGA,MAKA,KAGA,E,2BCjSA,aAIA,eAAiD,MAA0C,oCAA4D,qCAEvJ,eAAiD,IAAa,4BAAyF,8FAAuF,0BAE9O,eAA0C,0BAA+D,wFAAuG,mDAAyE,aAAe,mCAA6E,0EAAuH,YAE5e,CARA,gBAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,QASjjB,QAEA,QACA,QACA,QAEA,MAEA,kBACA,aAGA,UAEA,kEACA,WAEA,CAqFA,MA3FA,kBAOA,KAYA,gCACA,IACA,mBAGA,6DACA,2BAGA,mEACA,yBAGA,+DAEA,kDACA,OACA,cACA,OACA,0BACA,mCAGA,mBACA,QAAO,mBACP,UACA,QACA,EAqBG,GACH,KACA,2BACA,SACA,QACA,QAGA,QACA,oBACA,eAEA,SAEA,MAAoB,CACpB,SAAqB,wDAErB,eAA8B,0BAAuD,WAAG,CAExF,YACA,QAGA,MACC,KAED,E,0BCnHA,aAEA,CACA,UACA,QACA,QACA,IAAO,CAAM,SACb,QACA,IAAO,CAAM,SAIb,IACA,OAgBA,qBACA,OAAW,sBAEX,4BAEA,iBACA,eAGA,SACA,cAEA,6DACA,aAEA,8DACA,IAGA,iEACA,yBACA,yBAAkB,aAClB,6BAGA,kBACA,IAEA,mDACA,IAEA,uEACA,MAEA,yDACA,cAEA,iEACA,UAEA,6DACA,aAGA,gHACA,0DAGA,kBACA,iBAAgC,MAAkB,4BAClD,wBAAgC,MAAkB,4BAOlD,sBACA,kBACA,kBACA,OAAqB,IAAyB,oBAI9C,aAGA,eACA,UACA,OAEA,cAEA,iCACA,GACA,uBAIA,YACA,oBACA,qCAEA,iCAAoC,IAEpC,EAGA,YACA,OACA,2BAEA,YACA,IACA,EAEA,6BACA,iBACA,YACA,MACA,kCACA,uBACA,0BAAe,MAKf,uCAEA,iBACA,4BACA,sCAGA,yBACA,IAEA,cAAgB,UAChB,UACA,EAEA,+BAEA,+CACA,iBACA,MAEA,8BACA,MAEA,iFAEA,gBAEA,qBACA,MACA,IAEA,eACA,QAAe,KACf,QACK,WAAG,CAER,qBACA,mBACA,OACA,OACA,kBACA,0BACA,gBACA,gBAGA,SACA,QACA,EAKA,EACA,kDC9LA,eAEA,CACA,KAAO,CAAM,SACb,QACA,QACA,QACA,QACA,4BACA,YACA,QACA,SACA,SACA,QAIA,KACA,OAUA,cAAgB,wCAA+C,aAC/D,MACA,UACA,gBACA,YACA,eACA,YACA,QAYA,2BACA,gBACA,qBACA,yBACA,yBACA,wBACA,8BACA,gCACA,kCACA,qCACA,wBACA,iBASA,wBACA,KAAS,WAGT,uBACA,mBAIA,8BACA,OACA,UAAW,SAEX,uBACA,mBAIA,2DACA,WAIA,2CACA,WAEA,WAIA,CAKA,sBAJA,iBAGA,cAgBA,wBACA,kBAEA,WACA,SAEA,6BACA,qCACA,yBAEA,0BAA+D,kCAC/D,IAEA,QADA,QAGA,CACA,QAQA,uBACA,KAAS,cACT,iBACA,iCAEA,UACA,YACA,OAGA,4DAAiB,IAAyB,oBAC1C,KAEA,QACA,YACA,OAGA,0DAEA,sBADA,UASA,6BACA,gCACA,kBAEA,6BAAiC,MAAkB,wBACnD,YACA,kBACA,OAGA,0DACA,QACA,EAQA,+BACA,sCACA,iCAGA,yBACA,QAQA,iCACA,KAAS,UACT,oCAEA,KAoBA,kBAnBA,aACA,KAIA,oEACA,iBACA,SAGA,0DACA,eACA,aAEA,uDACA,WAGA,mDASA,oCACA,KAAS,cACT,iBAGA,YACA,wCAGA,eAAS,WACT,oBACA,cAGA,mBACA,4BAMA,mHACA,iBAGA,SAKA,8DACA,YACA,qBACA,oBAIA,kBACA,8BAGA,mDACA,aAAsC,IAAM,KAAO,aACnD,gCAA4C,UAC5C,GAGA,CACA,2BACA,cAGA,2BAQA,sBAA4B,mBAC5B,gBACA,oDACA,aACA,QACA,eAEA,4CACA,aAEA,0CACA,WAKA,+DAGA,aASA,0BAEA,iBACA,iBAIA,kBACA,uBACA,sBACA,uBACA,yBACA,oBACA,wBACA,wBACA,oBACA,oBACA,yBACA,gCACA,uCAbA,UAqBA,yBAEA,gBACA,UAcA,wBACA,gBAEA,YACA,aACA,SAAK,SACL,mBACA,2BAGA,QAFA,eAAoB,CACpB,aAGA,CACA,QASA,yBACA,qBACA,0BAGA,qBACA,uBAGA,kCACA,QAQA,2BACA,YACA,cAAS,MAAS,iBAGlB,mCACA,4BAIA,qEACA,6BAIA,yDACA,mBAIA,2CACA,4BAGA,qCACA,QASA,sBACA,SACA,OACA,aAEA,iCAEA,sBAEA,kBACA,MACA,8BAEA,2BAEA,0CACA,EAQA,0BACA,wBACA,WACA,+CAGA,WACA,eACA,OAA+C,wCAG/C,wCACA,IACA,mBAGA,8BACA,QACA,EAQA,0BACA,yBAGA,iBACA,2BAGA,oBACA,QAQA,sBACA,gCACA,2BAEA,SACA,mBAGA,oDAAiC,MAAkB,wBACnD,YACA,yBAGA,iCACA,QACA,EAQA,sBAEA,CACA,QAQA,2BAEA,CACA,QAQA,kCAEA,CACA,QAQA,wCAEA,CACA,QAKA,EACA,uDC3jBA,CACA,MAAW,SACX,QAIA,KACA,iBAKA,oBACA,CACA,QAKA,EACA,4BCpBA,CACA,MAAiB,eAKjB,eACA,YASA,CAOA,kBACA,YAUA,KAAc,sBAYd,WAAc,yBAkDd,eAAoB,uBAiBpB,qBAAgB,MAsBhB,cAAc,MAad,cAAc,oBAAwB,MAYtC,eAAc,sBAMd,gBAOA,6CACA,6BChLA,aAEA,KAAO,CAAM,SACb,KAAO,MAAS,SAEhB,WAEA,iBAWA,qBACA,IACA,mBAGA,6DACA,2BAGA,mEACA,yBAGA,+DAEA,qBACA,uBACA,OACA,cACA,OACA,0BACA,mCAGA,mBACA,QACA,QACA,OAEA,SAoBA,gBACA,IAAS,aAET,aACA,oBACA,eAEA,SAEA,MAAkB,CAClB,SAAmB,wDAEnB,eAA4B,0BAAsC,WAAG,CAErE,YACA,QACA,EAEA,4BCnFA,CACA,MAAkB,gBAUlB,WACA,MACA,oBAQA,UACA,MACA,oBACA,MAAe,MACf,cAAc,sBAMd,OACA,iBAEA,SAaA,2BACA,MACA,oBAKA,UACA,MACA,UAMA,yBACA,MACA,oBACA,cACA,MACA,gBAEA,qBACA,MACA,iBACA,iBAOA,sEACA,MACA,iBACA,OAKA,6BACA,CACA,wBAQA,sBAWA,cAKA,sBACA,MACA,SAOA,eACA,6BC7HA,aAEA,UACA,QACA,aAEA,OAqBA,eACA,uCAEA,6BAEA,4BAEA,oCAEA,2BACA,6BACA,YAEA,eACA,OACA,SAOA,2BACA,WAEA,gCAEA,YAAS,CAET,YACA,0BAEA,mBACA,mDAEA,6BAEA,uBACA,CACA,iBACA,sBACA,IACA,yBACA,WACA,2BACA,+BACA,gCAIA,gCACA,OAOA,YASA,OACA,eAEA,eACA,SACA,sBAEA,0BAIA,eAEA,iCASA,kBACA,aACA,oBACA,gCAEA,MACA,uDAEA,kBAOA,iBACA,aACA,oBACA,yBAEA,uBACA,wCAEA,iBAUA,wBAAyC,KACzC,oBAEA,iBAEA,uBACA,8BAAkD,WAElD,GAEA,QACA,EAEA,6BClKA,aAEA,kCCGA,aAIA,eAAiD,MAA0C,oCAA4D,oCAEvJ,CAJA,gBAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,QAcjjB,iBACA,aAqBA,2DACA,4DAEA,QAEA,aACA,eAUA,CAiHA,iBArJA,KAMA,yBACA,iBACA,2DAWA,UAkBA,KACA,+BACA,2DACA,4DACA,yBAEA,oBACA,SASG,GACH,KACA,8BACA,wBAEA,6BACA,KAQG,GACH,KACA,2BACA,OACA,iBACA,KAMG,GACH,KACA,4BA+BG,GACH,KACA,6BACA,kBACA,KASG,KACH,KACA,+BACA,aACA,YASG,GACH,KACA,iCACA,IACA,aACA,QAAO,SACP,iBACA,uBACA,CAGA,MAKA,IAGA,E,2BC9KA,aAIA,eAAiD,MAA0C,oCAA4D,oCAEvJ,CAJA,gBAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,QASjjB,MAUA,cAQA,cACA,OAEA,OAEA,6CACA,CACA,uBAGA,yCACA,OACA,8BACA,WACA,EAYA,CA2BA,YA1BA,KACA,2BACA,mCACA,WACA,OACA,EAWG,GACH,KACA,+BACA,mCACA,WACA,OACA,EAGA,MAKA,IAGA,E,2BCzFA,aAMA,iBAA2C,CAAoK,MAAlJ,kCAAkC,uCAAgF,cAAoB,SAEnM,eAAiD,MAA0C,oCAA4D,oCAEvJ,CARA,6EAAoG,OAAmB,SAAE,aAAmB,4FAA8H,QAE1Q,cAAgC,gBAA2C,WAAgB,QAAkB,OAAO,MAA2B,oBAAwD,iBAAgC,gCAAuD,uCAA6D,MAAE,uBAAyD,CAAsJ,cAAjF,gBAA6D,QAAuB,CAAE,QAOjjB,SAUA,iBAOA,cACA,GAGA,sBAGA,qCACA,YACA,CACA,cACA,qBAEA,qBACA,CACA,cACA,qBAGA,aAoBA,CA+BA,YA9BA,KACA,4BACA,cACA,iFACA,UAEA,gBACA,cACA,aAcA,aAbA,wCACA,GACA,MACA,mBAKA,sBALwD,OAExD,uBAGsD,OAEtD,MAEA,IAGA,SACA,cACA,SAGA,MAKA,IAGA,E,0CC9GA,QASA;;;;;;cAEA,cAgBA,IACA,uBACA,sBACA,gCACA,eACA,UACA,CAIA,IAvBA,QAEA,IACA,KACA,cAGA,8BACA,CAEA,SADA,SAGA,yBAaA,qCACA,OACA,4BAEA,iBACA,WAAuB,MAAgB,UACvC,IAEA,SAEA,iBACA,MACA,aAEA,UACA,MAIA,0BAHA,QACA,SACA,IAGA,mBACA,UACA,SAEA,gCACA,GACA,UAEA,KAEA,eACA,WACA,mBAEA,WACA,aACA,UACA,qBAGA,QACA,QAKA,2BACA,uBAgBA,wBACA,wBAUA,oBARA,CACA,IAGA,GAtBA,4CAEA,CACA,IACA,mBAGA,iCACA,cACA,EACA,mBAIA,gCAaA,cAUA,IACA,kBAGA,OACA,OACA,QAGA,IACA,oBAnBA,KACA,aAEA,WACA,iBACA,KACA,KACA,EAaA,cAEA,iCACA,oBACA,KACA,aAEA,WACA,cACA,mBAEA,IACA,kBAGA,OACA,OACA,OAGA,IAGA,IACA,EACA,EACA,GACA,oBAEA,wCACA,OACA,kBACA,QACA,mBAEA,2BAEA,uBACA,oBACA,aACA,WAEA,WACA,IACA,IAEA,eACA,SACA,aAGA,mBACA,WACA,KACA,sBAEA,IACA,kBAGA,OACA,KACA,OACA,OAGA,IAGA,IAEA,EACA,IACA,CAGA,eACA,kBACA,kCACA,wCACA,UACA,CACA,iBACA,kBACA,kCACA,sCACA,UACA,CACA,eACA,kBACA,kCACA,8CACA,UACA,CAGA,qBACA,uBACA,QAAoB,QACpB,QACA,GACA,oBACA,sBACA,CACA,IACA,EACS,OACT,IACA,uBACA,wBACA,KACA,SACA,IACA,EAAa,aACb,CACA,MACA,EACA,CACA,QACA,iBACA,iCACA,OACA,YAEA,mBACA,OACA,OAIA,4BACA,6BACA,oBACA,CACA,IACA,IACA,EAAS,aACT,CACA,MACA,EAEA,aAEA,iBAEA,sCACA,sBACA,CACA,QAAS,GACT,YACA,eAEA,YAEA,mCACA,IACA,yBACA,QAAoB,QACpB,QACA,oBACA,sBAEA,MAEA,QACA,GACA,EAAS,aACT,yBACA,kBACA,KAAa,cACb,UACA,KACA,GACA,EACA,WACA,oBAEA,gBACA,wBAEA,oCACA,IACA,yBACA,QAAoB,QACpB,QACA,oBACA,sBAEA,MAEA,QACA,GACA,EAAS,aACT,yBACA,kBACA,KAAa,cACb,UACA,KACA,GACA,EACA,WACA,oBAEA,4BACA,kBACA,gBAEA,IACA,kBAGA,GAEA,GACA,EAAS,aACT,CACA,GACA,EACA,WACA,oBAEA,2BACA,uBACA,gBAEA,KACA,mBAEA,GACA,GACA,EAAS,aACT,CACA,KACA,EAEA,UAEA,4BACA,uBACA,gBAEA,KACA,mBAEA,GACA,GACA,EAAS,aACT,CACA,KACA,EAEA,UAEA,8BACA,sBACA,kBAEA,GAGA,aAAoC,QAEpC,YACA,EAAS,eACT,CACA,WAGA,yBACA,sBACA,6BACA,CACA,gCACA,UACA,KAEA,GACA,EAEA,sBACA,iBACA,QACA,SACA,UACA,SAGA,QAEA,MACA,kBACA,GACA,UACA,eACA,WAA2B,MAAsB,UACjD,KACA,SAIA,uBAHA,EAIA,cACA,CACA,4BACA,CACA,GACA,EAEA,cACA,OACA,IAEA,kBAEA,IACA,OACA,CAEA,kBACA,qBACA,mBACA,4CACA,MACA,kBAEA,MACA,IACA,wBACA,MACA,IACA,GACA,OAEA,oBACA,CAEA,KACA,UAEA,eACA,yBACA,oBACA,yBACA,aACA,iBAAiB,UACjB,iBACA,KACA,eAEA,YACA,iBACA,CACA,MACA,gBAEA,QACA,EACA,IACA,CACA,EAEA,yBACA,OACA,EAEA,KACA,uBACA,IACA,IAGA,kBACA,0BACA,wBACA,mBACA,gBACA,UAA8D,MAC9D,UACA,IACA,CAEA,qBAEA,6BACA,cACA,kBACA,OACA,EAEA,WACA,KAEA,2BACA,oBACA,QACA,iBACA,mEACA,KACA,OACA,aAEA,sBACA,mBACA,CACA,kBACA,wBAEA,MACA,4CACA,OAEA,gBAGA,QAEA,iCACA,SACA,OACA,EACA,CACA,CACA,MACA,cAEA,uBACA,oBACA,EACA,0BAEA,iBACA,4CACA,GACA,kBAEA,WACA,SAEA,EAEA,SACA,IACA,+BACA,iBACA,4CACA,GACA,kBAEA,IACA,OACA,IACA,EAAa,aACb,CACA,MACA,EACA,CAEA,0BACA,GAAmB,kBACnB,UAEA,iCACA,GAAmB,eACnB,UAEA,wBACA,oBACA,EACA,gCAEA,iBACA,4CACA,GACA,kBAEA,WACA,SAEA,EAEA,SACA,IACA,qCACA,iBACA,4CACA,GACA,kBAEA,IACA,OACA,IACA,EAAa,aACb,CACA,MACA,EACA,CAEA,wBACA,kBACA,iBACA,UACA,wBAEA,aACA,MACA,EAIA,wBAHA,4BACA,IACA,GAEA,WACA,EAEA,qBACA,4CACA,oBACA,UACA,+CAEA,YACA,CAEA,yBACA,IACA,uBACA,kBACA,YACA,OACA,IACA,EAAS,aACT,CACA,MACA,EACA,WACA,oBAEA,6BACA,CACA,iBAEA,UAEA,YACA,aAGA,GAEA,GAEA,4BACA,cACA,CACA,WAEA,iDACA,WACA,UAGA,gBAEA,GACA,EAEA,yBACA,CACA,IAUA,iBARA,UAEA,YACA,YAGA,EAIA,2BACA,cACA,CACA,WAEA,iDACA,WACA,QAKA,MAFA,cAGA,EAEA,uBACA,oBAIA,UACA,YAEA,YACA,SAEA,KAEA,qCACA,GACA,SAEA,OAEA,uBACA,OACA,CACA,uCAIA,gBAEA,mBAGA,wCACA,eAEA,6BACA,QACA,EAEA,CApCA,eAEA,SAmCA,IACA,CACA,SACA,wBACA,WACA,WACA,KACA,WACA,4BACA,CACA,WACA,iBACA,SACA,OACA,QACA,uBACA,CACA,WACA,oBACA,+CACA,eACA,iBACA,sBAEA,WACA,kBACA,IACA,IACA,6BAEA,oBACA,wBAEA,UACA,SACA,IACA,SACA,OACA,CACA,mBACA,gBACA,MACA,oBACA,CACA,QACA,iBACA,OACA,qBACA,kBACA,QACA,WACA,UACA,mBACA,WACA,UAGA,oBAA+B,OAAoB,YACnD,qBAEA,SAEA,GACA,QAEA,+BAEA,gBACA,qBACA,QAEA,kBACA,YACA,aACA,IACA,kBACA,GACA,aAEA,QAGA,EACA,QAEA,oBACA,UACA,YAEA,YACA,SAEA,KAEA,qCACA,GACA,SAEA,OAEA,uBACA,OACA,CACA,OACA,2CAGA,sCAEA,qCACA,eAEA,6BACA,QACA,EAGA,UAGA,WAQA,6BAPA,CACA,UAGA,WAEA,SAGA,uBACA,IACA,MAEA,OACA,CACA,QACA,oBACA,WACA,WACA,KACA,6BACA,CACA,SAEA,oBACA,QACA,CACA,uCAEA,SACA,0BACA,cAEA,WACA,oBACA,QACA,sBACA,CACA,UACA,aAKA,8BAJA,eACA,kBAIA,4BACA,kBAEA,yBACA,UACA,IAEA,cACA,QACA,mBACA,CAEA,WACA,yBACA,GACA,2BAEA,OAEA,GACA,GACA,GACA,mBACA,UACA,MACA,oBACA,CACA,QAEA,GACA,QAEA,mBACA,mBACA,4CACA,qCACA,4CACA,GAEA,wCACA,eAGA,SACA,2BACA,CACA,aAGA,GACA,IACA,CACA,UACA,eAKA,8BACA,IACA,MACA,qBACA,CACA,QACA,kBACA,kCACA,eACA,gBACA,QACA,4BACA,cACA,KAEA,GACA,YAGA,cACA,qCACA,MACA,gBACA,WACA,sBAAiD,OAAO,IACxD,oBAEA,UAEA,KACA,EAGA,SAFA,SACA,cAGA,yBACA,kBACA,oCACA,UACA,CAEA,yBACA,QACA,QAAuB,EAAW,IAClC,MAEA,iBACA,UAEA,+BACA,QACA,QAAuB,EAAW,IAClC,MAEA,iBACA,gBAEA,kBACA,OACA,2BACA,OACA,kCACA,eACA,kCACA,+BACA,iBACA,0CACA,GACA,MACA,IACA,eACA,eACA,UACA,EACA,CAEA,sBACA,sDACA,WAEA,qBACA,iBACA,OACA,kCACA,eACA,8BACA,oBACA,KAEA,IACA,wBACA,4CACA,kBACA,OAEA,CAEA,QACA,cACA,uBAEA,4BACA,cACA,MACA,CACA,WAEA,MACA,OACA,CACA,IACA,CACA,GAGA,2BACA,UAIA,+BACA,CACA,QAAS,8BAIT,eAGA,OAAC,yDClmCD,aAYA,aAAkC,qBAA0B,uBAA0C,YAAgB,OAAO,SAAoB,KAAa,QAAS,cAA0B,OAEjM,CAZA,6EAAoG,OAAmB,SAAE,aAAmB,sEAAkG,QAE9O,cAAkC,gBAAiC,IAAe,MAAe,KAAgB,KAAoB,KAAM,gCAA0C,mBAA+B,iBAAkC,cAAqC,aAA1D,MAA4D,SAAc,CAAW,KAAU,GAAE,QAAU,IAAM,oBAAyC,WAAE,QAAU,MAAkB,OAAE,CAAE,CAAa,QAAE,qBAA2B,UAA0B,WAAc,8BAA2C,iBAAuC,4BAA+E,uDAAG,CAAE,IAErpB,qCACA,CACC,WAED,4BAKA,mBACA,yCACA,YACA,CAEA,iBACA,8BACA,WAEA,OACA,OAEA,KACA,cACA,qBAEA,wBACA,8BAEA,yBACA,MACA,KAEA,mBACA,UACA,iBACG,SACH,2FACA,UACA,KAEA,eACA,YAEA,yBACA,0BAA0C,kBAE1C,eACA,6DACG,qCACH,4BAGA,4IACA,IACA,mBC5DA,aAeA,aAAsC,0BAAuC,CAAgB,WAb7F,qCACA,CACC,WACD,wBAEA,QAEA,OAEA,SAEA,YAIA,mBACA,UACA,yBCnBA,aAEA,qCACA,CACC,WAED,QAGA,OAEA,sJAEA,4CAGA,gBACA,oBAEA,mBAGA,OAEA,mBACA,WACA,OACA,KAEA,KACA,wBACA,uBAEA,YAIA,UAAU,mBACV,UAEA,qBACA,IACA,uCAGA,kDACA,gBAEA,cACA,iCAGA,kCACA,UACA,mBCtDA,4kBACA,sPAAM,EAAO,EAAQ,GAEf,0BACW,qEAEb,OAED,SAFM,SACL,iBAAK,MAAQ,WAHf,kDAME,OAAO,MACR,WARwB,KAW3B,EAAiB,2BCdjB,4kBACA,sPAAM,EAAO,EAEb,GAGM,0BACW,qEAEb,OACD,SADM,SAAW,EAAM,iBAFxB,+CAKE,OACD,UAPiB,KASpB,EAAM,SAAW,QAEjB,EAAiB,wCCjBjB,GAAI,GAAc,UAChB,OACE,WAAmC,iBACjC,IAEA,MAAI,EAAM,EACV,OAHI,EAAS,EACb,MAEK,GAAS,QACZ,CACE,CADE,KAAE,QAAQ,MAEV,OAEA,QAAU,EACV,SAGF,UAAU,EAEZ,UAAI,GACJ,SAAK,GAAS,QACZ,IAAI,GACJ,SACK,GAAS,QADF,EACZ,SACE,IAAI,GACJ,QACE,KADE,KAAI,OACG,EAAM,IAAI,EACnB,SACD,iBAAM,IACL,WADS,KAAI,KACT,EAAO,EACT,SAAS,EAAO,EAEhB,UAAS,EAAM,MAAM,EACrB,SAAO,EAET,YACD,iBAAM,IAEL,SAFS,KAAI,OAET,EACF,SAAS,EAAM,QAAQ,EAAW,aAAW,EAAM,IAAI,EAClD,WAAI,EACT,KAAS,EAAM,QAAQ,EAAI,MAAO,EAElC,MAAS,EAAM,QAAQ,EAEzB,SAEA,uBAAM,IAAI,OAAM,+BAAiC,EAEpD,KACF,CACF,CACF,CAEJ,EApDgB,IAsDjB,EAAiB,wCCpDO,aACtB,CACoB,aAClB,CACK,OADD,GAAM,IACV,UAAS,EAAI,EAAG,EAAI,EAAM,KAAK,OAC7B,OAAO,EAAW,QAEpB,IAED,UADC,MAGF,CAAqB,aACnB,IAAI,GACJ,GAAI,EAAK,EACT,eAAK,GACH,UAAI,MACJ,0BAAO,IAAiB,KAE1B,KACD,QAED,CAAyB,aACvB,IAAI,GACJ,OAAK,GAAI,KAAK,GAAI,YAChB,IAAI,GAAM,EACV,kBAAO,IAAc,YAAc,EACpC,mBACD,CACD,QAED,CAAuB,aACrB,CACK,OADD,GACJ,GAAS,EAAI,EAAG,EAAI,EAAI,SAAS,OAE/B,MAAI,MACJ,2BACA,oBACA,OAAO,EAAW,EAClB,gBAAO,EAAe,EACtB,gBAAO,EAAa,EACpB,aACA,OAEF,UACD,QAED,CAAmB,aACjB,IAAI,GACJ,mBAOD,MANC,QACA,QACA,QACA,KACA,OACA,KAGF,CAAS,YACP,CACK,OADD,GACJ,GAAS,EAAI,EAAO,IAClB,OAEF,OACD,QAED,CAAoB,aAClB,OAAiB,MAAS,EAAS,EACpC,IAED,IApEI,GACJ,QAoED,MAxED,GAAM,GAAM,EAAQ,IA0EpB,EAAiB,2BCzEjB,aAkB0C,iBAExC,CACkB,aAChB,IACE,WAEF,SAAI,GAAS,EACb,YAED,MADC,SAIF,CAAqB,aACnB,OAAwB,QAAT,YAAqB,EAAK,MAC1C,WACD,CAAgB,aACd,OAAwB,QAAT,YAAqB,EAAK,MAC1C,UACD,CAA4B,aAC1B,OACE,QADS,WACF,EAAK,QAAQ,QAAS,KAAK,QAAQ,QAI7C,MACD,CAAmB,aACjB,OAAwB,QAAT,YAAqB,EAAK,MAC1C,YACD,CAAkB,aAChB,OAAwB,QAAT,aAAsB,EAAK,MAAM,QAAU,EAAK,MAChE,MACD,CAAmB,aACjB,OAAwB,QAAT,YAAqB,EAAK,MAC1C,KACD,CAA2B,aACzB,OAAwB,QAAT,YAAqB,EAAK,MAC1C,iBACD,CAAoB,aAClB,IAAI,GAAI,EAAK,MACb,WAAO,GACR,EACD,CAAoB,aAClB,IAAI,GAAI,EAAK,MACb,WAAO,GACR,EACD,CAAyB,aACvB,OACE,MAAO,EAAK,MAAM,EAAG,EAAK,OAI7B,IAED,CAAwB,aAEtB,IAAI,GAA4B,CAAC,CAAtB,KAAI,QAAQ,MACnB,KACA,EAAI,QACR,MAAI,EAA6B,CAAC,CAAtB,KAAI,QAAQ,KACpB,KACA,EAAI,QAER,QAAK,IAAQ,GACX,IACA,OAED,SADC,MAEF,IACA,QACA,EACA,KAAK,IAAQ,GACX,MACA,IACD,QAAM,IAAK,IAAS,GACnB,MACA,KAEA,QAGF,UAHM,MACJ,0BAEE,GAAK,EAAI,MACb,QAAI,GAAM,EAAI,MAAM,EAAM,GAC1B,cAAY,CACV,CADE,KAKJ,SAJM,MACJ,oEAIF,GA6BD,MA7BK,GAAI,MAAY,IAAM,GAAG,MAC3B,YAAO,EAAI,MAAY,IAAM,GAAG,QAEhC,OAAI,GAAK,EAAG,QACV,EAAI,MAAM,EAAM,EAAG,EAAU,KAC7B,GACA,EAAG,IAAI,EACL,EAAI,MAAM,EAAU,IAAK,EAI7B,YAAM,EAAI,OAAO,EAAc,EAAI,MAAY,IAC1C,QAAI,EAAI,MAAY,IAAM,GAAG,MAClC,SAAO,EAAI,MAAY,IAAM,GAAG,QAEhC,OAAI,GAAK,EAAG,QACV,EAAI,MAAM,EAAM,EAAG,EAAU,KAC7B,EAAI,MAAM,EAAU,IAAK,EAAgB,OAG3C,QAAM,EAAI,OACR,EAAc,EAAI,MAAY,IAGhC,WAAI,GAAK,EAAG,QAAQ,EAAI,MAAM,EAAM,EAAG,EAAU,KAAM,GACvD,QAAI,KAAK,kBAAoB,EAC7B,MAAM,EAAI,OAAO,EAAc,EAAI,MAAY,IAEjD,OAGF,CAAuB,aACrB,GAAM,EAAI,QAAQ,MAAO,OACtB,QAAQ,MAAO,OACf,QAAQ,KAAM,MACd,QAAQ,KAAM,MACd,QAAQ,KAAM,OACd,QAAQ,KAAM,OACd,QAAQ,YAAa,KACrB,QAAQ,MAAO,OACf,QAAQ,OAAQ,OAChB,QAAQ,MACX,SAAI,KACJ,sCACA,MAAI,EAAK,EAAI,MACb,SAAK,GACH,QAAI,EACF,UAAM,EAAI,OAGd,OACD,QAED,CAA0B,aACxB,CACK,OAAL,KAAS,EAAI,EAAG,EAAI,EAAO,OACzB,OACE,GADS,UACF,KAET,qDAAkB,IAAP,SAAiC,IAAlB,KAAO,EAAI,GACnC,GAAc,SACd,KAAO,OAAO,EAAI,EAClB,MAAI,GAAI,EAAO,EACf,KAAO,EAAI,GAAK,EAAO,EACvB,KAAO,EACR,IAEH,CACD,QAED,CAAkB,aAChB,CACK,OAAL,MAAS,EAAI,EAAG,EAAI,EAAM,OAAQ,IAChC,IAAwB,QAApB,QAAa,MACf,CAAI,KACJ,KACD,QACD,CAAM,KAAK,EACX,MAAI,EACF,MAAI,KAAK,EAAc,KAAG,MACrB,IAAI,EACT,SAAI,KAAW,KACf,+BAAI,KAAK,EACJ,SAAI,EACT,SAAI,KAAW,KACf,gCAAI,KAAK,EAAG,IAAI,EACX,QAAI,EACT,SAAI,KAAW,KACf,wCAAI,EAAS,EACX,OAAI,KAAK,EAAG,IAAU,KAAK,EAAS,EAAgB,OAClD,EAEF,UAAI,MAAM,iBAAyB,KAAK,gBACtC,EAAgB,MAClB,0CAAI,KAGN,OAAI,KAEP,IACD,CACD,QAED,CAAmB,aACjB,IAAI,GACJ,KACA,SAAK,GACH,UACE,QADE,QAAc,MACP,EAAO,OAAO,EAEvB,OAAS,EAAO,OAGpB,MAGD,SAFC,OAAI,KACJ,sBAIF,CAA4B,eAC1B,KAAK,GAAI,GAAI,EAAG,EAAI,EAAI,OACtB,OAGA,QAHI,QAAW,OAGP,KAAG,gBAAkB,EAC3B,cAIJ,eACD,KAGD,CAA8B,eAC5B,CACK,OAAL,MAAS,EAAI,EAAG,EAAI,EAAI,OACtB,IAGA,QAHI,QAAW,OAGP,KAAG,gBAAkB,EAC3B,iBAGJ,QACD,QAED,CAAyB,eACvB,KACK,GACH,QAFE,KACJ,wBACM,EAAY,MACd,GAAI,KAAK,SAAiB,KAC1B,sCAAI,GAAI,EAAc,KAAG,MACzB,MAAM,KACN,UAAE,MAAc,KAAG,MACpB,EACC,QAAI,KAAK,wCAGd,KAED,CAAgC,aAC9B,IAAI,GAAU,EACd,YACA,SAAK,GAAS,QACZ,IAAI,GAAI,EAAc,KACtB,GAAI,EAAI,EAAc,KACtB,MAAI,CACF,OAAI,MACL,iCAAM,IAAI,CACT,OAAI,MACL,iCACC,GAAI,KAAwB,mBAC5B,aAAI,GACJ,KAAI,EACJ,KACD,MACF,CACD,CACD,QAED,CAAwC,iBACtC,GAAI,KAA8C,yCAClD,UACK,OADD,GACJ,EAAS,EAAI,EAAG,EAAI,EAAI,OACtB,OACE,UAEF,IACE,UAEF,IACE,CADE,GAIN,kBAAI,MACJ,sDACD,CAED,CAAgC,aAC9B,aAAK,SAAqB,WACxB,OAAO,GAAS,MAAQ,EACzB,MACD,OAAK,KAAiB,WACpB,OAAI,GAAK,MAAM,MACb,uCAAQ,WAAW,EAAK,OAExB,cAAQ,EAAK,OAAS,EAEzB,MACD,EACD,IAED,CAA6B,aAC3B,aAAK,SAAqB,WACxB,OAAO,GAAS,MAAQ,EACzB,MACD,OAAK,KAAiB,WAEpB,OAAI,GAAK,MAAM,MACb,uCAAQ,WAAW,EAAK,OAExB,cAAQ,EAAK,OAAS,EAEzB,MACD,EACD,IAED,CAA4B,aAC1B,aAAK,SAAqB,WACxB,OAAO,GAAS,MAAQ,EACzB,MACD,OAAK,KAAiB,WACpB,OAAO,GACR,WACD,EACD,IAGD,CAA2B,aACzB,MAAK,SAAqB,WACxB,OAAqB,eAAiB,UACvC,IACD,OAAK,KAAiB,WACpB,IAEA,KAAI,EAAK,GACT,mBAAI,EACF,OAAO,EAAG,KAAK,EAIlB,MACF,CAED,CAA+B,eAC7B,CAAqB,CAAjB,KAAM,QAAsC,UAAtB,KAAM,GAAG,WACV,WAAtB,KAAM,GAAG,UACV,SADsC,KAAM,GAAG,UAE7C,GADE,KAAM,MACJ,MACJ,0BAAI,YAAY,EAAM,IAAU,MAAkB,EAC7C,KACL,GADS,KAAM,MACX,MACJ,0BAAI,YAAY,EAAM,IAAU,MAAkB,EAC7C,KACL,GADS,KAAM,MACX,MACJ,0BAAI,YAAY,EAAM,IAAU,MAAkB,EAElD,OAAI,KAED,kDAAqB,CAAjB,KAAM,QAAoC,QAApB,QAAO,GAAM,IACjB,QAA3B,KAAM,GAAG,eACI,GAAb,KAAM,IAA2B,GAAb,KAAM,IAA2B,GAAb,KAAM,IACxB,UAAtB,KAAM,GAAG,UACT,SADoC,KAAM,GAAG,aACzC,MACJ,0BAAI,YAAY,EAAM,IAAU,MAAiB,EAAM,GAI1D,OAED,CAA6B,eAC3B,GAAI,MAA2B,qBAC/B,4BAAI,GAAM,EACV,UACA,SAAI,SACL,OAED,CAA0B,eACxB,IAAI,GACJ,KACA,IAAI,MACJ,oBAEA,GAAO,EACL,iBAAM,EACN,gBAAI,MAAgB,UAAM,IAAY,KACtC,UACE,GADE,KAAM,EAAM,MACV,KAEN,6CAAM,EAAmB,EAAM,MAAM,EAAM,GAAI,IAC/C,KAAY,CACV,CADE,OACE,MAEJ,qCAAY,EAAM,MAAM,EAAM,EAAG,EAEjC,UAAM,EACN,gBAAM,EAAmB,EAAM,MAAM,EAAM,GAAI,IAC/C,OAAa,SAAK,EAGtB,UAAI,MACJ,6BAAO,EAAuB,aAC5B,IAAI,GAAO,EACX,YACE,GADE,KAAM,EAAO,MACX,KAEN,2CAAM,EAAmB,EAAM,MAAM,EAAO,GAAI,IAChD,KAAY,CACV,CADE,OACE,MAEJ,qCAAc,EAAM,MAAM,EAAO,EAAG,EACpC,UAAO,EACP,cAAM,EAAmB,EAAM,MAAM,EAAO,GAAI,IAChD,OAAa,SAAM,EAEtB,GACD,GAAI,MACJ,yCACD,MAED,CAAmC,eACjC,IACA,SAAU,GAAK,CACf,EAEK,OAFD,GAAM,EAAU,OAAO,EAC3B,QACA,KAAS,EAAI,EAAG,EAAI,EAAI,OAAS,EAC/B,IAAK,KAAK,EAAM,MAAU,KAAK,EAAG,EAAI,EAGxC,IAAU,WACR,GAAI,KAAgB,WAAI,MACxB,SAAI,GAAY,KAChB,GAAK,KAAG,OAAO,EACf,MAAI,GAAM,EAAU,OAAO,EAAe,IAC1C,SAAI,KAAU,KACd,QACK,OAAL,MAAS,EAAI,EAAG,EAAI,EAAI,OAAS,EAC/B,IAAM,KAAU,KAAG,MAAU,KAAK,EAAG,EAAI,EAE3C,IAAU,WACR,GAAI,KAAc,SAAI,MACtB,SAAI,GAAa,KACjB,GAAM,KAAG,OAAO,EAChB,MAAI,GAAM,EAAU,OAAO,EAAe,IAC1C,SAAI,KAAW,KACf,WACA,UAAK,EAAI,EAAG,EAAI,EAAI,OAAS,EAC3B,IAAM,KAAW,KAAG,MAAU,KAAK,EAAG,EAAI,EAE5C,IAAU,WACR,IAAI,GAAY,KAChB,KAAI,KAAe,UAAkB,WACrC,aACD,UACF,CACF,CACF,CAGD,IAvcA,QAucI,KACJ,yBAAI,GACJ,MAAI,EACJ,KAAI,EACA,KAAC,EACH,QAAS,IAEP,+CAAC,EACH,SAAS,KAEX,4CAAI,GAAY,EAChB,YAAI,EAAW,EACf,cAAgB,CAAZ,IAA4B,CAAX,IACnB,IAGF,SAHM,MACJ,mEAOA,KALM,EAAG,MAAM,EAEjB,UAAS,EAAG,MAAM,EAAW,EAAG,EAAG,OAAS,GAAI,EAEhD,OAIA,aAAK,GAAI,KAAK,GAAE,IAAI,WAClB,IAAI,GAAK,EAAE,IACX,cACE,WADE,KAAG,QAAQ,UACT,EACF,WAAG,QAAQ,YAAY,EAAG,QAAS,UAAY,EAGnD,SACE,WADE,KAAG,OAAO,UACR,EACF,WAAG,QAAQ,YAAY,EAAG,OAAQ,UAAY,EAGnD,OAED,CAGD,SA3fD,GAAM,GAAM,EACZ,IAAM,EAAQ,EAAQ,IAGtB,MAyfA,EAAiB,wLCngBjB,8bADA,mBACM,EAAU,EAAQ,GACxB,QAAM,EAAU,EAChB,IAAM,EAAY,EAAQ,IAC1B,UAAM,EAAY,EAClB,IAAM,EAAa,EACnB,IAAM,EAAU,EAAQ,GACxB,KAAM,EAAO,EAAQ,IAEf,YACJ,CAAa,aAAO,MAClB,aACA,QAAI,EACF,aAAM,IAAI,OAER,yDAAC,EACH,YAAM,QAER,YAAM,QACN,UACA,aACA,YACA,WAAK,GAAG,KAAO,EACf,yCAAK,GAAG,KAAO,EACf,yCAAK,GAAG,MAAQ,EAChB,0CAAK,GAAG,IAAM,EACd,kCAAK,GAAG,IAAM,EACd,oDAAK,GAAG,KAAO,EACf,8CAAK,GAAG,IAAM,EACd,oDAAK,GAAG,IAAM,EAEd,uCACD,yDAEgB,aACX,OAAC,MAAK,aAAa,EACrB,YAAK,aAAa,EAEpB,SAAO,KAAK,aAAa,EAC1B,IAED,yBAYe,eACb,IACE,GAGA,kBAAK,KAGP,OAAwB,UAApB,KAAI,MAAM,EAAG,GACf,IAAI,EAAG,MACD,EAAO,OACP,EAAU,mDACV,EACJ,kEAGF,eAAI,GAAM,EAAG,mBAAmB,EAEhC,QAMD,eANS,IACN,uDACF,cAAQ,IAAI,EAAI,IAAK,WAAQ,OAAO,GAAU,MAAlC,GAAoC,KAEhD,SAIF,IAEA,MAAI,EAAW,EAAQ,YAAW,KAAK,GAAG,KAAK,gBAG/C,MAJA,KAII,EAAG,MAAgB,KAAM,KAAK,GAAG,IAAI,QAAS,KAAK,GAAG,IACxD,mBAEF,SAEK,OAAI,GAAI,EADb,EACA,EAAgB,EAAI,EAAS,OAC3B,SACA,KAAgB,WACd,IAAI,GAAW,EAAO,MAAS,KAAK,GAAG,KACvC,gBAAgB,WACd,IAAI,GAAc,EAAQ,OAAU,KAAK,GAAG,MAC5C,oBAAI,EACF,WAAK,EAAI,EAAG,EAAI,EAAY,OAC1B,SAAqB,KAAG,MACxB,OAAmD,CAA/C,IAAO,QAAQ,6BAAmC,MAG1D,YAAI,GAAY,EAAQ,OAAU,KAAK,GAAG,MAC1C,qBAAI,EACF,WAAK,EAAI,EAAG,EAAI,EAAU,OAAQ,IAChC,MAAmB,KAAG,MACtB,OACE,CADE,IAAO,QAAQ,gBAGnB,YACE,CADE,IAAO,QAAQ,aAGpB,KAEH,IAAI,GAAS,EAAQ,OAAU,KAAK,GAAG,KACvC,cAAI,EACF,WAAK,EAAI,EAAG,EAAI,EAAO,OACrB,KAAkB,GAAP,SACT,GAD8B,WAMrC,KACC,cAAQ,IAA0C,sCAErD,KAEH,IACE,CADE,KAAS,eACH,IAAyC,qCAEjD,UACE,MAGJ,iBAAQ,IAA2C,uCAEpD,+BAEU,aACT,OAAoC,IAA5B,KAAI,OAAO,OAAO,EAAG,IAAe,KAAe,aACvD,IAAM,EAAI,OAAO,OAAO,GACxB,EACL,kCAEY,aACX,OAAO,MAAK,UAAU,EAAK,SAAW,IACpC,KAAK,UAAU,EAAK,WAAa,IACjC,KAAK,UAAU,EAAK,QACvB,IAED,gCAIiB,aACf,OAAO,CAAC,EAAG,QAAS,EAAG,UAAW,EAAG,QAAQ,OAAiB,WAC5D,OAAO,GACR,OACF,EAED,qCAIsB,aACpB,CACK,OAAL,MAAS,EAAI,EAAG,EAAI,EAAI,OACtB,MAAS,EAAO,OAAO,KAAK,gBAE9B,SACA,OACK,OAAL,MAAS,EAAI,EAAG,EAAI,EAAO,OACzB,IAAe,CAAX,MAAmB,KAAG,SAAS,EAAO,EACxC,OAAQ,KAGZ,MACD,QAED,sCAKE,MACA,QAEK,OAFD,GAAI,KAAK,MAAW,YAAW,KAAK,GAAG,IAAI,QAC7C,KAAK,GAAG,IACV,8BAAS,EAAI,EAAG,EAAI,EAAE,OACpB,SAAK,KAAO,KAEd,iBACA,SAAI,KAAK,MAAW,YAAW,KAAK,GAAG,IAAI,QAAS,KAAK,GAAG,IAC5D,uBAAK,EAAI,EAAG,EAAI,EAAE,OAChB,SAAK,IAAM,KAEd,OAED,8BAI0B,iBAIxB,CAGK,OAHD,GAAM,KAAK,MACf,sCAES,EAAI,EADb,EACA,EAAgB,EAAI,EAAI,OACtB,OAAI,KAAK,IAAQ,KAAG,UAAU,KAC5B,MAAQ,KACR,QAAI,CAAC,EACH,cAAO,CAET,MACE,SAAM,KAAsB,kBAAQ,EAElC,YAAO,GAAI,OAAO,CAGvB,MAGH,OAAM,KAAK,MACX,sCAAK,EAAI,EAAG,EAAI,EAAI,OAClB,OAAI,KAAK,KAAS,KAAG,UAAU,KAC7B,MAAQ,KACR,OAAI,CAAC,EACH,cAAO,CAET,MACE,SAAM,KAAsB,kBAAQ,EAElC,YAAO,GAAI,OAAO,CAGvB,MAEH,OACD,KAED,8BAIkB,eAGhB,KAAK,GAAI,GAAQ,IAAW,CAAR,GACd,SAAM,KACV,qBAAY,IAAR,KAGN,eAAO,MAAK,MAEb,wBAED,0BAGW,aACT,OACE,EADK,QAAK,MAAyB,sBAAG,QACiB,SAAlD,MAAoC,6BAAG,QAE/C,CADG,QAAK,MAA+C,oCAAG,MAG3D,6BAGsB,eACpB,IACA,SAAI,EAAO,OACT,MACA,gBAAK,GAAI,GAAI,IAAG,EAAI,EAAO,OACrB,MACA,KAAC,KACL,iBAAU,EAAQ,OAAO,KAE5B,oBACD,CACD,QAED,iCAIkB,aAChB,IAAI,GAAS,KACb,yBAAO,MAAkB,eAAQ,EAClC,IAED,6BAGc,aACZ,IAAI,GACJ,WAAS,IAA8B,CAAnB,KAAQ,OAExB,WACF,EAAQ,IAAc,WACpB,OAAO,GACR,cAFD,GAEG,KAAK,MACX,OALK,EAON,qBAGkB,iBAAU,OAC1B,WAAO,SAAQ,UACZ,KAAK,UACJ,IACE,QAAM,IAAI,OAEZ,yDAAQ,IAAoC,gCAE5C,QAAI,GACF,CACA,sBACA,4BAGF,cAAO,GAAK,MAAM,QAAQ,aAC3B,YAdI,GAeJ,KAAK,WACJ,IAAI,CAAC,EAAS,GACZ,IAAI,GAA0C,gCAAM,YAClD,EAAS,OAAS,KAAO,EAAS,WAEpC,mCACA,OAAM,GACP,SAED,SAAQ,IAAgC,4BAExC,KAAS,IAAK,EAAS,GAAI,EAC5B,eA3BI,GA4BJ,MAAM,WACL,CAAc,OAAO,EACtB,UACJ,EAID,iCACkB,aAChB,IAAiB,IAAC,EAGlB,QAAI,GACJ,KAAI,EAAU,KAEd,0BACE,WAAW,EAAY,CAAC,EAAU,QAAS,EAAU,UAAW,EAAU,OAAQ,EAClF,wBAAa,EAAY,KACzB,4BAAO,EAEP,2BAA2B,eACzB,IAAI,GAAQ,KACZ,SAAS,iBAAmB,KAAK,YACjC,YAAS,iBACP,KAAK,UAAU,KAAK,UAAU,IAAM,IACpC,KAAK,UAAU,KAAK,UAAU,IAAM,IACpC,KAEF,yBAAO,KAAK,KAAK,UAAU,GAC5B,QAEJ,oCAEqB,eACpB,IAAI,GAAM,YAAc,OAAQ,EAChC,KAAI,EAAQ,KAAK,aAAa,KAE9B,wBAAI,YAAc,OAChB,CACK,OADD,GACJ,GAAS,EAAI,EAAG,EAAI,EAAG,OAAa,OAAa,KAAK,KACtD,GAA4B,mBAC7B,MACC,SAAS,iBACP,KAAK,UAAU,EAAG,SAAW,IAC7B,KAAK,UAAU,EAAG,WAAa,IAC/B,KAAK,UAAU,EAGnB,uBAAK,KAAK,EAAI,IACf,yCAEqB,eACpB,IAAI,GAAM,YAAc,OAAQ,EAChC,KAAI,EAAQ,KAAK,aAAa,KAE9B,wBAAI,YAAc,OAChB,CACK,OADD,GACJ,GAAS,EAAI,EAAG,EAAI,EAAG,OAAa,OAAa,KAAK,KACtD,GAA4B,mBAC7B,MACC,SAAS,iBACP,KAAK,UAAU,EAAG,SAAW,IAC7B,KAAK,UAAU,EAAG,WAAa,IAC/B,KAAK,UAAU,EAGnB,uBAAK,KAAK,EAAI,IACf,QAED,wCAS8B,eAC5B,IAAI,GAAU,KACd,sBAAI,CAAC,EACH,gBAEA,cAAI,EACF,mBAOL,2BAPS,GAAK,EAAQ,kBACf,UAAM,IAAI,OAGZ,mDAKN,mCAIoB,aAClB,IAAI,GAAU,KACd,qBAAQ,cACT,+BAEc,aACb,IAAI,GAAc,KAAK,MAAM,QAAkB,YAC/C,qBAAoB,IAAC,EAAoB,OAClC,EAAY,GACpB,OADC,gDAGgC,eAAU,OAC1C,KAAI,EAAU,KACV,mBAAC,EAAqC,8BAC1C,gCAAQ,0BACR,aAAuB,oBAAM,WAC3B,GACD,gBACF,gCAEc,aACb,IAAI,GAAU,KACd,mBAAI,EAEJ,QAAI,EACF,UAGF,oBAHU,IACR,iCAGF,gBACA,OAAI,EAAY,YACd,SAAQ,IACR,+BAAQ,OAAO,EAAe,QAA4B,eACxD,CAEE,KADF,gBASI,CADE,KAAS,gBACH,IAAI,kDAEZ,SACe,gBACf,EAEA,yBAAQ,IAAI,SAAW,EAAS,OAC9B,yBAGP,uBAlBO,EACF,8BAAK,GAAI,GAAI,EAAG,EAAI,EAAQ,0BAA0B,OACpD,YAAQ,IACR,4CAIJ,8BAYL,EACD,EACD,GAED,kCAiBwB,eACtB,IAAI,GAAS,KAEb,iBACA,IAAI,EACJ,KAAI,EACJ,KAAI,EACJ,KAAI,EAEJ,KACE,GAIF,eAJU,IACR,oEAGe,IAAQ,EACzB,OAAS,EAAO,QAAQ,SAAU,OAAO,QAAQ,UACjD,gBAAQ,IAER,wBAAI,GAAgB,YAElB,IACA,MACE,WADE,QAAO,aACA,GACV,kBAAM,IACL,WADS,QAAO,YACN,SAAS,GAAG,oBAAoB,qBAC3C,iBAAM,IAAsB,WAAlB,QAAO,SAA0B,OAC1C,YAAS,OAET,iBAGF,qBAHU,IACR,sEAEK,OAAS,UACd,SAAQ,IACR,wBACA,UAAK,KAAK,OAAS,EAEjB,iBAAQ,IACR,0DAEH,6BACD,KAAI,GAAU,EACd,qBAAQ,cAER,IAAO,QAA4B,aACjC,SAAQ,IACT,wBAeD,IAAO,QAAoB,WACzB,SAAQ,IAAI,kCAAoC,EAAM,KACpD,cAAe,EAAM,OAAS,cAAe,EAC/C,UACA,KACA,UAAQ,IAAqB,iBAC7B,iBAAW,UACT,SAAQ,IACR,0BACD,GACF,IACD,IAAO,UAAsB,WAC3B,IAAI,EAAI,MAAiC,KAAzB,KAAI,KAAK,MAAM,EAAG,GAChC,IACE,wBAAQ,eACR,EACE,CADE,IAAQ,eAKd,oBAJY,IAAI,iBAAmB,EAC/B,uBAGI,IAAI,oCAAsC,EAAQ,cAC1D,WAAQ,cACR,IACD,4BACF,CACF,CACD,EAGD,MADC,OAGF,uBAc+B,iBAC7B,IACE,IAAI,GAAK,KACT,MAAI,EAAkB,EAClB,uBAAsC,EAAU,WAC9C,YAA6B,SACnC,OAAI,EAAmB,EACnB,uBAAuC,EAAW,WAChD,YAA8B,SACpC,UAAI,EAAE,YACJ,aAAM,IAAI,OAAM,0BAAwB,6BAE1C,WAAI,EAAE,YACJ,aAAM,IAAI,OAAM,0BAAwB,6BAE1C,WAAkB,CAAd,KAAG,QACL,CADqB,KAAG,aACjB,GAET,YAAI,GAAM,EAAG,OAAS,EAAG,GAAG,IAAM,EAAG,GACrC,OAAK,GACH,IAAI,GAAU,sEAAwE,EAAG,GAAK,KAAO,EACrG,iBACA,OAAM,GACP,SACD,IAAI,GAAU,KACd,mBAAI,EAAY,KAEhB,MACA,yCACA,sBAAI,EAAU,CAAY,SAC1B,YAAM,IAAc,WAClB,CAAQ,KAAM,IAAc,WAC1B,IAAI,CAAC,EAAI,SAAS,EAChB,UAAM,IAAI,OAA+B,yBACvC,kCAAoC,EAExC,OAAM,IAAc,WAClB,IACE,WADE,QAAU,WACN,IAAI,OAA6B,uBAE1C,iBACF,EACF,EAED,MAAI,GAAW,KAAK,SAAS,EAC7B,UACE,QAAM,IAAI,OAEZ,2CACA,MAAkC,CAA9B,IAAS,QAAQ,UACnB,IACA,MAAI,EAAG,SAAQ,EAAS,KACxB,yBAAI,EAAG,SAAQ,EAAS,EAAO,OAAO,KACtC,6BAAI,GAAU,KACd,kBAAI,EAAc,KAClB,gBAAI,EACJ,MAAI,EAAY,OACd,IAAI,EAAG,OACL,QACA,YAAK,EAAI,EAAG,EAAI,EAAG,OACjB,OAAS,KAAK,YAAe,MAE/B,QACD,MACD,IAAI,EAAG,OACL,QACA,YAAK,EAAI,EAAG,EAAI,EAAG,OACjB,OAAS,KAAK,YAAe,MAE/B,QACD,MACD,CACD,IAhBD,KAiBE,IAAI,EAAG,OACL,QACA,iBAAK,EAAI,EAAG,EAAI,EAAG,OACjB,OAAS,KAAK,YAAe,MAE/B,QACD,OACD,IAAI,EAAG,OACL,KAAI,EAAG,SAAQ,GACf,UACA,iBAAK,EAAI,EAAG,EAAI,EAAG,OACjB,OAAS,KAAK,YAAe,MAE/B,QACD,MACF,CAED,GAAQ,gBAAkB,EAAQ,gBAAkB,EAAQ,gBAAkB,EAC9E,EACE,wBAAQ,eACR,UAAQ,IAAI,0BAA4B,EAG1C,qBAAK,KAAK,EAAS,MAA4B,iBAC7C,CAII,KAJK,cAAgB,KACzB,gBAAQ,IAAI,uBACT,EAAU,WAAa,YAAc,EAAS,OAC/C,YAAc,EAAS,cACzB,QACE,IACE,GACD,SAFD,CAES,QACP,CACA,OAAO,gCAAkC,EAAG,OAC7C,mBACD,KAAK,GAAI,GAAI,EAAG,EAAI,EAAG,OACrB,MAAG,IAAO,KAAG,QAAY,KAAG,UAAc,KAE7C,SAED,IACA,aAAQ,iBAER,EAAgC,CAA5B,KAAQ,iBAAyB,EAAQ,iBAC3C,IAAI,GAAmB,EACvB,uBAAO,GACP,yBAAQ,IACR,8BACD,IACF,CACF,EA1ED,KA0EO,IACL,CADS,IAAS,QAAQ,YAG1B,2BACE,CADE,IAAS,QAAQ,gBAEjB,MACD,wBAFD,CAES,QACP,GAAS,EAAS,OAChB,wCAA0C,EAAI,IAGjD,MAED,WAAM,IAAI,OAAmC,8BAGlD,YA1ID,CA0IS,QACP,CAAoB,YAAiC,0BAAI,KACvD,KAAK,KACR,eACF,2BAEuB,mBACtB,IAAI,GAAK,KAET,MAAI,EAAU,EAAO,MAAK,KAAK,GAAG,KAClC,eACE,QAAM,IAAI,OAGZ,yDAAI,GAAW,EAAO,MAAS,KAAK,GAAG,KACvC,gBACE,SAEF,SAAI,GAAc,EAAO,MAAU,KAAK,GAAG,MAAM,iBAGjD,MACI,EAAS,EAAuD,2CACpE,QADA,MACK,EAAI,EAAG,EAAI,EAAG,OACjB,MAAoB,iBAEtB,UAAK,EAAI,EAAG,EAAI,EAAG,OACjB,MAAO,KAGT,SAAM,GAAiB,KAAK,UAAU,EAGtC,SAAI,EAAkB,EAAO,MAAU,KAAK,GAAG,MAC/C,qBAEE,QAAY,EAAQ,EAGtB,aAAI,GACF,CACA,cACA,UAGF,cAAO,GAAG,QAAQ,aAA+B,WAC9C,KAAK,WACJ,IAAI,CAAC,EACH,QAAM,IAAI,OAAM,EAGlB,WAAK,GAAI,GAAI,EAAG,EAAI,EAAG,OACrB,MAAG,OAEL,UAAK,EAAI,EAAG,EAAI,EAAG,OACjB,MAAG,IAAO,KAAG,QAAY,KAAG,UAAc,KAG5C,YAAS,EAAI,IAAK,EAAS,GAAI,EAChC,eAdI,GAeJ,MAAM,WACL,GAAS,EAAS,OAAO,EAC1B,UACJ,EAED,gCAQ8B,mBAC5B,IAAM,GAAK,KACX,cAAQ,IAGR,mCAAI,GAAS,EAAuD,2CAEpE,QACA,MAAK,EAAI,EAAG,EAAI,EAAG,OACjB,MAAoB,iBAEtB,UAAK,EAAI,EAAG,EAAI,EAAG,OACjB,MAAO,KAGT,SAAI,GAAM,EAAI,IAAI,YAClB,QACE,CADE,QACI,IAAI,OAAM,0CAA4C,EAE9D,QAAI,GAAM,EAAI,IAAI,MAAM,EAExB,GAAI,EAAc,EAClB,0BACE,QAAM,IAAI,OAA2B,qBAGvC,oCAAM,GAAiB,KAAK,UAAU,EAItC,iBAAQ,IAA0B,sBAClC,UAAI,GAAW,EAAI,IAAI,MAEvB,GAAI,EAAO,WAAW,QAAS,6BAC5B,eAAe,WAAW,WAC7B,mBACA,gBAAI,CAAC,EACH,cAAM,IAAI,OAAM,mBAAqB,EAAI,IAQ3C,+BAAI,GAAS,WAAW,QAAS,6CAC9B,eAAe,WAAW,WAG7B,2BAAgC,UAAM,SAAS,OAAQ,GAGvD,KAAa,QAAgB,EAC7B,UAEA,QAAK,EAAI,EAAG,EAAI,EAAG,OACjB,MAAG,OAEL,UAAK,EAAI,EAAG,EAAI,EAAG,OACjB,MAAG,IAAQ,KAAI,QAAa,KAAI,UAAe,KAEjD,YAAS,EAAS,OACnB,GAED,0BASsB,iBACpB,IAAM,GAAK,KACX,MAEA,KACE,QADS,WAKX,YAAI,GACJ,KAGE,SAHC,kBAAkB,EACrB,cACA,kBAEE,eACE,wBAAiB,EACjB,mBACF,UACA,cACA,kBACA,2BACE,mBAAiB,EACjB,kBACF,MACE,aAAM,IAAI,OAAwB,kBAItC,0CACD,QAED,oBAY6B,mBAAU,OACrC,KAAM,EAAK,KACX,MAEA,QAAO,SAAQ,UACZ,KAAK,UACJ,UAAiB,EAAK,UAAU,EAEhC,SAAO,EAAG,QACP,aAAa,MAAO,EAAI,IAAK,CAAE,cACnC,QANI,GAOJ,KAAK,WACA,OAAC,GACH,cAGK,GAAG,QAAQ,YAAY,EAC9B,WAAO,GAAG,QAAQ,UAAU,EAE5B,KACE,QADS,cACJ,IAAK,WACR,GACD,eAGH,KAAS,EAAI,IAAK,EAAS,GAC5B,OAbU,EAAS,EAAI,IAAK,EAAS,GAAI,EAGxC,QAZG,GAuBJ,MAAM,WACL,GAAS,EAAS,OAAO,EAC1B,QACJ,EAED,uBAYiB,iBACf,IAAI,GAAY,KAEhB,MAAM,EAAU,CAAS,SAAc,UAEvC,wBAAG,QAAQ,iBAAiB,EAAS,MAA6B,eAChE,IACE,WAAQ,IACR,gCAAS,KACV,kCAAM,IAAI,EAAS,kBAClB,GADsC,KAAS,eACvC,IAAI,uDACV,EAAS,iBAAmB,YAAc,EAC5C,QAAS,KACV,2CACC,IAAI,GAAgB,KAEhB,QAAC,EAAI,kBAAiB,EAAI,gBAC1B,GAAC,EAAI,kBAAiB,EAAI,gBAE9B,KACA,qBAAI,iBAEJ,UAAQ,IAAwB,oBAAgB,cAC9C,EAAI,gBAAkB,MACrB,EAAI,gBAAkB,EAAI,gBAE7B,OACD,KACF,CACF,YAGH,EAAiB,2BC7/BjB,UAAkB,gB,gCCAlB,UAAkB,gB,gCCAlB,UAAkB,gB,gCCAlB,UAAkB,gB,gCCAlB,UAAkB,gB,gCCAlB,UAAkB,gB,gCCAlB,UAAkB,gB,gCCAlB,UAAkB,gB,gCCAlB,UAAkB,gB,gCCAlB,aAEA,gBAEA,uBACA,MACA,oCAEA,oC,mBCRA,aAQA,aAAsC,0BAAuC,CAAgB,WAN7F,gBAEA,QAEA,YAIA,oBACA,gBACA,WAAmB,QAAkB,OACrC,MACA,oBACA,iBACA,gCACA,+BAEA,MAEA,uBACA,CAGA,cAFA,gBACA,QAEA,CAAC,qBC1BD,aAgBA,aAAsC,0BAAuC,CAAgB,WAd7F,gBAEA,QAEA,OAEA,SAEA,OAEA,SAEA,WAIA,uBACA,0BACA,gIAGA,uDACA,aACA,CACA,QACA,cACA,YAGA,sDACA,Y,mBChCA,aAQA,aAAsC,0BAAuC,CAAgB,WAN7F,gBAEA,QAEA,WAIA,uBACA,IACA,4BAGA,2IACA,yB,mBChBA,aAQA,aAAsC,0BAAuC,CAAgB,WAN7F,gBAEA,QAEA,YAIA,qBACA,qBACA,uBAA6C,YAAgB,OAC7D,SAGA,KACA,QACA,YAEA,W,mBCpBA,aAqBA,aACA,SACA,UACA,sBAQA,sFACA,EAEA,aAEA,qBACA,KAEA,aACA,SAEA,eADA,IAGA,iBAGA,aAEA,UAEA,QAAa,EAAO,OACpB,6FACA,WACA,iBACA,gBAGA,MAUA,MATA,sDACA,SACG,OACH,+EACA,SACA,gBAGA,SAGA,aACA,6CACA,MAEA,iBACA,QAEA,MAAqB,IADrB,EAC8B,OAC9B,2CACA,mBAEA,oBACA,IAEA,aACA,aAEA,WACA,IACA,GACA,OAGA,YAA0C,IAP1C,EAOoD,IACpD,0BAIA,YACA,aACA,WACA,QACA,YACG,MACH,yBACA,WACA,SACA,cACA,YAGA,OAEA,eACA,IAjHA,eACA,gBACA,EAEA,gBAKA,OAJA,MACA,sCAEA,8FACkC,OAAS,IAC3C,SACA,SAIA,iBACA,SACA,mDCnBA,CAGA,sBACA,UACA,yBAEA,kCACA,WAEA,sBACA,8BACA,YACA,aACA,YACA,aACA,yBACA,kBACA,KACA,aACA,OACA,gBACA,kBACA,mBACA,KACA,aACA,oBACA,UA1BA,qCAA8C,CAAc,WAC5D,eAOA,CAmBA,QACA,WACA,WACA,aACA,eACA,aACA,4EClCA,CAEA,aACA,OACA,MACA,SACA,OACA,GAEA,YACA,OACA,MACA,QACA,eACA,SACA,iBAEA,cACA,WAjBA,qCAA8C,CAAc,WAkB5D,mDCnBA,MACA,OACA,2CCFA,QACA,qBAAuC,gBAA4B,YACnE,uBACA,4BACA,6BCJA,OACA,8CCDA,OACA,kBACA,yBACA,UACA,8BCJA,OACA,kBACA,2BACA,UACA,wCCJA,OACA,kBACA,uBACA,UACA,yCCJA,OACA,sDCDA,OACA,sDCDA,OACA,MACA,OACA,OACA,OACA,OACA,wCCNA,OACA,OACA,OACA,OACA,uCCJA,MACA,OACA,6CCFA,oBAA8B,kBCA9B,2BACA,mCACA,yBACG,2BACH,0BCHA,CACA,QACA,QACA,aACA,qBACA,uBACA,OACA,WACA,UACA,OAGA,mBACA,YAEA,UAEK,oBAA2B,eAChC,+BACK,aACL,CACA,oBCtBA,aACA,QACA,YAEA,yBACA,kBACA,MACA,wBCPA,CACA,QACA,QACA,YACA,qBACA,OACA,SACA,EACA,eACA,SACA,IACA,EACA,oCACG,QACH,2BCdA,QACA,QACA,SACA,SACA,QACA,QACA,KACA,KACA,oCACA,mBAAuC,CAAiB,QAAE,EAC1D,iBACA,KACA,QACA,4CAEA,wCAAmE,QAAgB,IACnF,kCACA,mBACG,uBAA4C,sBAC/C,mBACA,sBAEA,UACA,UACA,yBCxBA,CACA,yBACA,OACA,oBACA,wBACA,MACA,4BACA,eACA,6BACA,oBACA,kCACA,yBACA,uCACA,8BACG,cACH,4BCfA,CACA,YACA,sCACA,OACA,gCCJA,aACA,QACA,QACA,QACA,IAEA,KACA,mCAAkF,OAAa,KAAE,GAEjG,yBACA,iBAAqD,QACrD,aACA,6BCZA,uBACA,OAAU,eACV,sBCFA,YACA,YACA,QACA,YACA,IACA,mCACA,CACA,QACA,qBACA,iBACA,sBACA,gBACA,OAAqB,OACrB,OACA,KAEA,OACA,iBAEA,6DACA,kBAEA,gBAEA,gBAEA,IAEA,IAAG,aACH,CACA,iBACA,YAEA,UAEA,eAEA,SAEA,IAAG,aACH,CAEA,eACA,CAEA,iCADA,MAEA,cACA,CACA,MACA,QACA,UACA,UACA,6BCpDA,QACA,YACA,4BACA,2BACA,YACA,8BAEA,oBACA,iBAGA,OACA,yBACA,UACA,KACA,OACA,QACA,CACA,GAAO,SACP,CAGA,QAFA,IACA,UAEA,CAAK,CACL,cACA,OAGA,MAlBA,EAmBA,iBACA,GACA,WAEG,oDACH,IACA,gCACA,uBAAuC,CACvC,+BACA,UACA,EAEA,CAAG,sBACH,SACA,sBACA,GACA,OAOA,CACA,kBAEA,GACA,SAGA,oBACA,OAAgB,MAChB,mBAEA,YACA,IACK,KACL,GACA,oBClEA,aACA,QACA,QACA,QACA,QACA,QACA,cAEA,OACA,8BACA,IACA,MAEA,OACA,WACA,mCACA,iCAAoC,CAAU,MAC9C,IAAmB,0BAAsC,cACzD,MAAC,kBACD,WACA,iBACA,SACA,MACA,MACA,EACA,2BACA,4BACA,SACA,SACA,EACA,iCACG,MACH,QAAC,qBCjCD,QACA,QACA,YAEA,uDACA,CACA,eACA,SACA,SACA,EACA,sBACA,MACA,2BCZA,YACA,yBACA,QACA,qBACA,WACG,MACH,0BCLA,CACA,QACA,QACA,mBACA,IACA,uCACA,+BACA,UACA,6BACA,+BACA,IACA,kEACA,GACA,wBACA,OAAO,SAAY,CAAc,IACjC,uBACA,CAIA,MAHA,YACA,YACA,QAEA,CACA,iBACA,0BCxBA,aACA,QACA,OACA,OACA,QACA,sBAEA,qBACA,oCACA,0BACA,CACA,8BAAsB,OAAa,KAEnC,sBCbA,QACA,QAEA,IACA,qBACA,qBACA,OACA,UACA,SACA,SACA,qBACA,eACA,sEACA,YACA,qDACA,MACA,oBChBA,QACA,IACA,QACA,uBACA,UACA,kBACA,yBCNA,aACA,QACA,QACA,OACA,QACA,SACA,SACA,QACA,cAEA,6BAA4E,OAAkB,OAAE,WAEhG,mBACA,OACA,oCACA,kBACA,uBACA,YACA,aACA,IACA,WACA,uCAEA,2BACA,wBAAuD,oBAAgC,KACvF,oCAGA,sBACA,UAAkC,SAAgB,IAClD,sBAGA,MAEA,SADA,UAEC,qBCpCD,aACA,QACA,SACA,SACA,QAKA,IACA,4CACA,SACA,aACA,OAEA,IAAC,YACD,YACA,UACA,UACA,oBACA,aACA,YAEA,gBACA,qBACA,aACA,MAAC,EAED,UACA,oBAEA,UACA,YACA,6BCjCA,CACA,WAEA,mBAA0C,UAAsC,wBCHhF,QACA,GACA,eAA8B,UAAsC,uBCFpE,QACA,GACA,0BAAuE,sBAA4C,oBCFnH,CACA,uCACA,eACA,CAAC,mBCHD,CACA,QACA,aAEA,kCACA,qBACA,UACA,KACA,CAAC,mBCRD,CACA,WACA,eAA8B,uBAA8C,uBCF5E,aACA,QACA,QACA,OACA,QACA,SACA,OACA,QACA,QACA,SACA,SACA,cACA,QACA,WACA,QACA,SACA,OACA,cACA,cACA,UACA,OACA,4BAAyB,CACzB,QAGA,gBACA,IAEA,iBACA,QAA+C,4CAC/C,CACA,MAEA,yDACA,mBAAG,SAAY,CACf,CAGA,iBACA,IACA,gBACA,+BACA,iBACA,OACA,MACA,cACA,eACA,aACA,KACA,UACA,eACA,gBACA,SACA,YACA,WACA,WACA,KAEA,IACA,cACA,UAEA,UAEA,UACA,UAEA,WACA,OAGA,aACA,YACW,2BACX,QACW,YACF,MACT,IAAO,SACP,UACA,OACA,IACA,CACA,kBACA,QACA,QACA,gBACA,IACA,GACA,eACA,oBACA,SACA,KACA,SAEA,uBAEA,UACS,+BACT,wBAAmB,WACV,4BACT,eAEA,gCAEA,kBACK,KACL,yBACA,CACA,EACA,eACA,kBACA,uBACA,eACA,oBACA,IAEA,YACK,2BACL,uBAAe,oBAEf,IACA,EACA,eACA,OACA,OACA,OACA,UACA,QACA,UACA,oBACA,SACA,QACA,eACA,OACA,KACA,QACA,MACA,UACA,SACA,kBACA,wCACA,kBACA,OAAuB,MACvB,UACA,yBACA,GAAS,SACT,GACA,SACA,CAEA,MACA,UACA,EAEA,QAAG,SACH,QAAkB,MAClB,SACA,EAKA,QA3IA,qBA4IA,YACA,MACA,YACA,SACA,wBACA,GAAK,SACL,QACA,OACA,CAEA,iBACA,MACA,WACA,kBACA,OACA,WACA,kBACA,OACA,KACA,iCAEA,qBACA,WACA,qBACA,+BACA,qCACA,sBACA,yBACA,mBACA,WACA,OAEA,mBACA,aACA,cAEA,gBACA,OACA,WACA,6BACA,qBACA,EACA,mBACA,eACA,MACA,SACA,IACA,GAEA,iBAA0D,CAAoB,YAC9E,WACA,UACA,IAEA,MACA,eAEA,qBACA,SACA,UACA,aACA,QACA,OACC,IACD,oBAEA,sBACA,wBACA,OACC,IACD,iCACA,UACA,WAAC,MAED,kBACA,OACA,OACA,SACA,YACA,qBACA,IACA,QACA,IACA,oBACA,OACA,IACA,OACA,aACA,iCAEA,KACA,KACA,YACA,KACA,IACA,QACA,IACA,mBACA,KACA,OAEA,oBACA,OACA,OACA,SACA,qBACA,mBACA,qBACA,UACA,EACA,mBACA,KACA,OACC,qBCnRD,aACA,QACA,OACA,QACA,QACA,OACA,cACA,QACA,QACA,QACA,QACA,QACA,OACA,QACA,QACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,SACA,QACA,QACA,MACA,MACA,MACA,WACA,YACA,YACA,gBACA,eACA,iBAAe,GACf,yBACA,uBACA,eACA,gBACA,YACA,yBAEA,2BAGA,2BACA,OAGA,MAHsB,SACtB,eAAsB,mBAAuB,OAAW,IAAI,CACzD,MACF,kBACD,OACA,gBACA,MACA,mBACA,QAEA,iBACA,cACA,MAEA,SADA,MAGA,8CACA,OACA,kBAAC,aACD,OACA,eAEA,qBACA,eACA,SACA,OACA,QACA,KACA,UACA,8BAIA,kBAAsB,cACjB,2BAJL,OAEA,YAGG,UACH,QACA,mBACA,CACA,mBACA,QACA,MACA,OACA,oBACA,MACA,QACA,mBACA,0BACA,OACA,kBACA,qBACA,mCACA,6CACA,eACA,oBACA,MACA,OACA,wBACA,cACA,OAEA,yCADA,iBAEA,kBACA,aACA,MACA,OACA,EACA,IACA,uCACG,QACH,QACA,kBACA,WACA,cACA,MACA,OACA,EACA,IACA,8CACG,MACH,QAIA,oBACA,sCACA,qEACA,wBACA,aACA,oCACA,0BACA,KACA,qBAAgE,iBAChE,QACA,IACA,gCACA,aACA,EAEA,KACA,OACA,eACA,WACA,WAEA,WACA,SAGA,6CACA,UACA,KACA,GAEA,iBAA0D,CAAkB,WAE5E,OAGA,8IAAoB,KAAuB,uBAE3C,wBAAoD,IAA6B,sBAEjF,sBAEA,gBACA,eACA,IACA,UACA,IAEA,sBACA,4BACA,gDACA,QACA,sBAA0B,CAAe,IACzC,sBAA0B,CAAgB,IACzC,IAED,sBAEA,CAEA,SAEA,iBAEA,mBAEA,4BAEA,uBAGA,2BACA,8BACA,OAIA,4BAAmE,QAAf,CAAO,OAC3D,kBAAC,WACD,wBACA,WACA,MACA,IACA,uCACA,eACA,wBACA,kCACA,oCACA,iBACA,QACA,KACA,OACA,UAGA,IACA,2BACA,SACA,IACA,UACA,OACA,WACA,qCCxOA,aACA,QACA,OACA,OACA,OACA,cAEA,oBAA2C,oBAC3C,2BACA,WACA,iCACA,kBACA,gCAA8D,CAAU,QACxE,EACA,iBACA,gCAA8D,CAAS,OACvE,EAEA,IAAG,qBClBH,aACA,QACA,OACA,aAEA,gBAA+B,gBAC/B,WACA,QACA,sCACA,KACA,OAAG,qBCXH,wCCAA,mCCAA,0BACA,aAEA,WACA,OACA,KACA,UACA,SACA,MAEA,OARA,EAaQ,IAHR,iBACA,MACA,GACA,KAAmB,2BAEnB,GAGQ,gBAFR,MACA,GACA,KAAmB,2BAEnB,MACA,QACG,YACH,4BAEA,cAGA,+BACA,MAEA,6BACA,aAEA,WACA,OACA,sDACA,UACA,SACA,wBAEA,MARA,EAyCQ,MA/BR,mBACA,uBACA,EAEA,2BACA,KACA,kBACA,OAEA,MACA,OAEA,UAEA,KACA,SACA,OAGA,GACA,UACA,EACK,KACL,oBAGA,2BACA,OAIA,IAAmB,iCAEnB,GAEQ,MADR,OACA,KAAkB,gCAElB,aACA,uBChFA,CACA,OACA,gDCLA,eASA,CA6HA,iBACA,UACA,wBACA,iCACA,kCACA,uCAEA,cACA,UAUA,CACA,eACA,YACA,eACA,IAEA,SACA,cAEA,UACA,QASA,CACA,eACA,YACA,MACA,WAEA,OACA,cAEA,KACA,QAWA,CACA,eACA,YACA,eAEA,EACA,YACA,UAGA,SACA,QAQA,CACA,aACA,mBACA,uBACA,IACA,CAWA,CACA,eACA,SAEA,aACA,QACA,eAEA,MACA,QAUA,CACA,eACA,YACA,IAEA,SACA,YAEA,KACA,QAQA,CACA,aACA,mBACA,OACA,KACA,CASA,CACA,eACA,uBACA,IAQA,CACA,aAGA,IACA,kBACA,iCACA,QACA,GAAK,UAEL,CACA,QAQA,CACA,aACA,QACA,YAEA,MAIA,8BAHA,QACA,KACA,IAUA,CACA,eACA,mBACA,UACA,KACA,CAQA,CACA,aACA,QACA,YAEA,MAIA,4BAHA,GACA,MACA,IAIA,CAsEA,aACA,QACA,eAEA,WACA,eACA,OACA,qBACA,GACA,CAQA,CACA,YACA,qBACA,QAWA,CACA,aACA,iCACA,WAUA,CACA,aACA,YACA,eACA,OACA,WACA,gBACA,qBACA,WAUA,CACA,aACA,YACA,oCACA,SAWA,CACA,eACA,YACA,yBACA,gBACA,IAEA,CAcA,aACA,QACA,eAEA,WACA,eACA,OACA,qBACA,GACA,CAQA,CACA,YACA,MACA,WAUA,CACA,aACA,YACA,WAEA,UACA,IAEA,wBACA,EAMA,MALA,QAEA,kBAEA,KAWA,CACA,aACA,YACA,WAEA,8BACA,EAUA,CACA,aACA,QACA,oBAWA,CACA,eACA,YACA,WAEA,aACA,YAEA,YAEA,KACA,IAEA,CAcA,aACA,QACA,eAEA,WACA,eACA,OACA,qBACA,GACA,CAQA,CACA,YACA,eACA,MACA,cACA,cAEA,MAUA,CACA,aACA,mBACA,YAUA,CACA,aACA,mBACA,MAUA,CACA,aACA,mBACA,MAWA,CACA,eACA,mBACA,SACA,IAEA,CAeA,aACA,QACA,eAEA,oBACA,MACA,gBAEA,KAWA,CACA,aACA,sBACA,UACA,IAUA,CACA,aACA,sBACA,MAEA,CAWA,aACA,eACA,QAQA,CACA,YACA,eACA,KAUA,CACA,aACA,sBACA,YAUA,CACA,aACA,sBACA,MAUA,CACA,aACA,sBACA,MAWA,CACA,eACA,YACA,2BACA,SACA,6BACA,gBACA,OAEA,qBACA,QACA,UACA,SACA,IAEA,CAeA,eAGA,cACA,iBAGA,eACA,UAEA,UACA,eACA,+BACA,aAGA,QACA,QASA,CACA,eACA,aACA,OACA,gBACA,MAGA,gBACA,CASA,CAcA,qBACA,QACA,MAEA,eACA,UAEA,aACA,OACA,UACA,KAEA,UAEA,SAEK,OACL,SAEA,UACA,CACA,QAaA,CAUA,eACA,WACA,UASA,CACA,eACA,eAEA,gBACA,MAEA,gBACA,cAEA,iBACA,aAQA,CACA,aACA,WACA,OASA,CACA,eACA,qBACA,UAgBA,CACA,qBACA,SAGA,mCACA,OAGA,sBADA,MAiBA,CACA,uBACA,OACA,QACA,MACA,KAGA,WACA,QAGA,kBACA,QAEA,0BACA,eACA,OAEA,WACA,gBACA,UACA,MACA,gBAEA,6BACA,oBACA,8BAEA,uBACA,WACA,gBAEA,uBACA,OACA,YACA,CAIA,mBACA,OACA,gBAWA,CACA,oBACA,SACA,OACA,MAEA,MACA,cAEA,SACA,eACA,OACA,aACA,cACA,QAEA,QAEA,QACA,aACA,GACA,aACA,KACA,SAEA,aACA,IAIA,OACA,MACA,WAEA,kBACA,oBAGA,YAEA,QACA,uBAdA,QAEK,QAaL,CACA,QASA,CACA,cACA,YACA,MAEA,sBACA,yBACA,MAQA,CACA,cACA,OACA,8BACA,QAQA,CACA,cAGA,OAGA,uBAGA,WACA,mBACA,gBACA,IAEA,MACA,KAQA,CACA,cACA,KACA,YAEA,UACA,kBACA,yBACA,oBAGA,QACA,QASA,CACA,gBACA,QACA,kBAEA,WAIA,2BAHA,QACA,QACA,IASA,CACA,cACA,OACA,+BACA,mBAEA,eACA,eACA,SACA,CASA,CACA,gBACA,eACA,SAEA,oBACA,OACA,2BACA,MACA,qBACA,MACA,CAUA,CACA,kBACA,QACA,sBAEA,iCACA,sBACA,OACA,KACA,SAAY,sBACZ,QAEA,2BACA,OACA,UACA,EAQA,CACA,cACA,mBACA,OACA,OACA,CASA,CACA,gBACA,qCACA,aACA,WACA,aACA,kBACA,KAEA,SACA,cAEA,QACA,oBACA,GACA,YAEA,WACA,YACA,OACA,CASA,CACA,cAEA,IACA,mBAEA,YACA,2BAEA,WACA,0BACA,MAQA,CACA,cACA,gBACA,KASA,CACA,gBACA,UACA,OACA,aACA,WACA,QAEA,QACA,aACA,WACA,QAEA,qBACA,kBACA,IACA,SACA,OACA,SAEA,kBACA,kBACA,IACA,SACA,OACA,UAEA,CACA,OACA,EAeA,CACA,kBACA,YACA,MACA,aACA,aACA,WAEA,cACA,eACA,WACA,IACA,KAEA,eACA,4BACA,EACA,CAQA,kBACA,KASA,CACA,gBACA,qBACA,IACA,QAEA,aACA,YAEA,oBACA,cACA,IAEA,iBACA,iBAIA,aACA,QACA,CAQA,CACA,cACA,uBACA,YACA,IACA,YACA,SAEA,YACA,aACA,eACA,UAEA,KACA,CACA,QACA,CAeA,CACA,wBACA,OACA,SACA,WAEA,qBACA,KAGA,iBACA,eACA,aAEA,aACA,EACA,YAEA,mBACA,WAGA,gBACA,OACA,OAEA,KACA,WACA,EACA,eAEA,6BACA,CACA,KAEA,SACA,KACA,KAEA,CACA,2BACA,OACA,gBACA,uBAEA,MAAW,GACX,CACA,KACA,KACK,UACL,EACA,OACA,cACA,CACA,KACA,KACA,CACA,CAGA,SAFA,eACA,cAoBA,CACA,0BACA,CACA,UACA,2BACA,4BACA,WAEA,aACA,WAEA,OACA,+BACA,wBAKA,WACA,QACA,QAGA,qBAEA,IACA,4CAEA,QACA,QAIA,oBAEA,GACA,WAEA,KACA,cACA,YAEA,qBACA,GAGA,iBACA,OACA,WAEA,MAGA,QACA,uBACA,cAGA,SAFA,eAGA,QACA,4BAGA,SACA,QAeA,CACA,wBACA,OACA,OACA,UACA,SACA,UAEA,gBACA,GAEA,gBACA,OACA,UACA,qBACA,UAIA,iBACA,eACA,aAEA,SACA,QACA,WAEA,gBACA,YACA,GACA,WACA,OAEA,KACA,WACA,EACA,eAGA,kBACA,oBAEA,iBACA,CACA,KACA,KACA,OACA,iBACA,UACA,SACA,gBAGA,YACA,yBACA,2CACA,sCACA,kBAEA,KACA,CAGA,SAFA,eACA,cAUA,CACA,gBACA,SACA,eACA,qCACA,UACA,GAQA,CACA,cACA,WACA,UAEA,YACA,OACA,OAEA,eACA,MACA,CACA,QASA,CACA,gBACA,OACA,aACA,eASA,CAoCA,kBACA,eAEA,iBAEA,MAEA,OAHA,SAIA,UACA,sBACA,QAEA,QACA,IACA,CACA,KAEA,0BACA,oBACA,iBACA,MAQA,CACA,cACA,eACA,iBACA,MASA,CACA,gBACA,UACA,cACA,4BACA,wBACA,GAWA,CACA,kBACA,KACA,MAEA,eACA,iBACA,4BACA,wBAEA,aAGA,OASA,CACA,gBACA,IACA,MAEA,eACA,yCACA,uBAGA,uBACA,sBACA,UAQA,CACA,cACA,OACA,sDACA,aACA,gBACA,QAQA,CACA,cACA,aACA,OAQA,CACA,cACA,YACA,sCAEA,oBACA,MASA,CACA,cACA,gBACA,KAUA,CACA,gBACA,mBACA,OAGA,UACA,2BACA,WACA,CAQA,CAqBA,cACA,wBACA,MAEA,iBACA,0BACA,MAQA,CACA,cACA,YACA,IACA,WACA,OAAK,UACL,IACA,UACA,EAAK,UACL,CACA,OACA,EAoCA,CAyDA,gBACA,6BACA,8BAEA,+BACA,OACA,gCACA,OAEA,WACA,gBAEA,qBACA,QAEA,iBADA,UAEA,EAEA,sBADA,WAGA,CAmCA,gBACA,sBACA,KAmBA,CACA,cAEA,yBACA,qCACA,YAwBA,CA4BA,cACA,gCACA,KA0BA,CACA,cACA,eACA,KAkBA,CACA,cAGA,wBACA,iBACA,KA2BA,CACA,cACA,OACA,kCACA,KA0BA,CACA,cACA,OACA,kCACA,cAyBA,CACA,cACA,YACA,kBAkBA,CACA,cACA,OACA,8BACA,WAmBA,CAuBA,cACA,mBACA,KA0BA,CACA,kBACA,sBACA,aACA,eA2BA,CACA,gBACA,iBACA,SA6BA,CACA,cACA,mBACA,KAiBA,CACA,cACA,CACA,QAuBA,CACA,cACA,uBACA,MAzjFA,OAGA,OAGA,yBAGA,+BACA,KAGA,OACA,KAGA,oBACA,wBACA,oBACA,sBACA,mBACA,oBACA,uBACA,gCACA,kBACA,qBACA,qBACA,sBACA,qBACA,kBACA,qBACA,qBAEA,sBACA,0BACA,uBACA,2BACA,2BACA,wBACA,yBACA,yBACA,yBACA,gCACA,0BAGA,0BACA,sDACA,WACA,SAMA,sGAGA,yBAGA,cAGA,iCAGA,yBACA,cACA,cACA,cACA,cACA,UACA,cACA,cACA,cACA,cACA,cACA,cACA,cAGA,UACA,yCAGA,gEAGA,yBAGA,8CAGA,6CAGA,sBAGA,uBAGA,qBACA,IACA,uBACA,OAAG,UACH,CAGA,cAWA,sBA0NA,sBACA,oBAGA,gBAGA,mCACA,oDACA,gCACA,EAGA,UAGA,eAOA,qBAGA,mBACA,2BACA,kFAIA,WACA,aACA,iBACA,2BACA,gBAGA,2CACA,QAGA,cACA,qBACA,gBACA,oBACA,gBACA,wBAGA,aACA,UACA,UACA,UACA,UAGA,gBACA,0BACA,wBAQA,gBAsFA,oBACA,wBACA,kBACA,kBACA,YAQA,MAoGA,oBACA,wBACA,kBACA,kBACA,YAQA,MAkFA,oBACA,wBACA,kBACA,kBACA,YASA,MAwCA,mCACA,YAQA,MAgFA,oBACA,wBACA,kBACA,kBACA,YASA,MA8CA,OAYA,SA4CA,KAq0BA,oCACA,iBACA,uBACA,uBACA,oBACA,6BACA,UACA,kBACA,uBAEA,aACA,KACA,kBACA,kBACA,kBACA,kBACA,kBAGA,WACA,QAWA,GA4KA,qBACA,GAEA,SACA,MAOA,UANA,gBAEA,kCACA,6BACA,KACA,IASA,sBA+DA,IACA,QAEA,iBACA,+BACA,IACG,yBACH,WAEA,cACA,MA6CA,GAsBA,GAiCA,QAoDA,aA0BA,cAgNA,SA+IA,sDCrjFA,aACA,UACA,MACA,aACA,OACA,YACA,6CACA,OACA,SAxBA,GAeA,kRAUA,mBACA,eACA,SACA,YACA,YACA,K,qBC9BA,iCCyBA,aAaA,aACA,sCAGA,QADA,SAdA,YAEA,QAGA,aACA,aACA,IAEA,gBAQA,sCACA,GACA,O,mBC9CA,aAEA,eAAiD,MAA0C,oCAA4D,qCAKvJ,iBACA,GACA,UALA,YACA,gBAMA,oBACA,aACA,GAEA,kBACA,eACA,iBACA,CAEA,CAmDA,qCAlDA,OAAiB,aACjB,8BAAgD,YAChD,YACA,cACA,MAEA,mCACA,OAAiB,kBACjB,6BACA,aACA,cACA,MAEA,gCACA,IACA,iCACA,KAGA,2CAHwD,eACxD,YACA,SAGA,gCACA,qBACA,iBACA,CAEA,gCACA,0BACA,kBACA,YACA,SACA,aACA,KACA,QAEA,kCACA,mCACA,uCACA,iCACA,UACA,OAEA,SACA,oBACA,WAEA,KACA,QAEA,GAGA,4BACA,yDACA,iBAA4B,aAC5B,sCACA,KACA,oBC9EA,6CCAA,2CCAA,gCCQA,CACA,gBAAqB,YAAc,cAInC,qBACA,oBAGA,sEAEA,mBAOA,GANA,4BAEA,qBAOA,6BACA,UACA,kBAAG,SACH,GACA,yBACA,gBC7BA,CAEA,YACA,CAEA,gCA2BA,YACA,6CACA,mBAIA,OAGA,iBADA,UAEA,kBAaA,IACA,OAAc,qBACd,UAAK,SACL,OAAc,cACd,MACA,CAEA,cAcA,cACA,cAIA,cAyBA,8CACA,iBACA,aACA,YACA,CACA,EAEA,cAgCA,oBACA,SACA,aACA,qBACO,SACP,SACA,QACA,YACA,IACA,6BACA,sDACA,GACA,aAAW,aACX,GACA,cAGA,sCAgBA,GACA,QACA,IACA,IACA,CAEA,gBAGA,aACA,iCACA,CACA,UACA,EAEA,OAaA,OAKA,UACA,GAIA,IA9BA,QA+BA,SAEA,kBAsBA,IAEA,2BACA,IACA,qBAGA,wCACA,IACA,YAKA,cACA,IAEA,OACA,WAEA,UACA,SACA,cACA,OACA,YACA,UACA,SACA,QACA,CAEA,IAGA,mCAES,+BACT,IACA,UACA,OAGA,0BAEA,IAAS,KACT,yCAGA,KAEA,UACA,8BAGA,QAIA,WACA,QAGA,eACA,SACA,WAGA,KAAS,CACT,mBAGA,aACA,gBAEA,IACA,CACA,CAMA,gBACA,oBACA,sBAGA,eAEA,wBACA,eAGA,kBACA,WACA,WAEA,OAGA,oBAIA,kBACA,iBACA,WACA,mDAEA,CACA,QAEA,wBAEA,QACA,iBAMA,gBALA,gBACA,eACA,eAKA,OACA,GAMA,gBALA,4BACA,+CACA,YAMA,uBAGA,eAQA,QACA,+BACA,SAKA,gBAKA,UAEA,kBADA,MAKA,cAkBA,OAAiB,UAEjB,IACA,sBAGA,IACA,wBACA,gBAGA,oBACA,OAEA,cACA,SACA,sBACA,kBACA,MACA,YAEA,cAIA,kBAAwB,QACxB,qBACA,WACA,SAEA,cA4BA,MACA,OACA,KACA,cAGA,WACA,0BAGA,6BACA,wBACA,YACA,aACA,UAMA,eALA,OACA,UAQA,SAHA,eAEA,SAGA,WACA,MACA,CAGA,OAAY,CACZ,OACA,aAGA,OAAY,cACZ,QAEA,cA/fA,cACA,2CAEA,wBACA,gCACA,mCAEA,kBACA,uBACA,mBAPA,EAWA,KASA,kBALA,uCAOA,aAwBA,aASA,mBACA,mBACA,cAIA,YAMA,KAOA,oBACA,OACA,KAEA,eACA,wBACA,QACA,GACA,SAGA,YAGA,aACA,6BACA,wBACA,gBACA,cACA,mBAIA,qDASA,+BACA,YACA,YAGA,OAEA,8CAEA,oBACA,CAUA,cATA,sBAEA,uBACA,cACA,eAGA,yCACA,WAOA,qBACA,OAAY,CACZ,UAEA,MA4EA,oCACA,OACA,KACA,IAKA,yCACA,OACA,MAGA,qBAEA,kDACA,yBACA,MACA,EAEA,EAoKA,UAOA,2BACA,OACA,KAEA,uBACA,OACA,oBAEA,oBAgCA,IACA,aACA,UAEA,iBAIA,sBACA,gBACA,SACA,SACA,OAIA,SAHA,UACA,SAOA,CAEA,SADA,SAEA,CAEA,IAoCA,qBAKA,CAEA,+BACA,cACA,YAGA,iBACA,kBACA,sBAEA,iBACA,YAEA,2BAEA,WACA,eAEA,MACA,0BACA,yBACA,MAIA,eAEA,iBACA,MAEA,8BACA,OACA,cACA,yBAGA,gBACA,IAEA,+BACA,gBAMA,eACA,UACA,QAKA,oBACA,SAGA,aACA,EAEA,SAnBA,KAGA,kBACA,8BAe8C,EAAQ,SACtD,YACA,kBAEA,cAIA,2BAGA,8BACA,gBACA,uBAEA,sBACA,gBACA,oBACa,4BACb,sBAGA,WAAW,KACX,sBACA,oBAGW,kBACX,uBAOA,8DANA,sBAIA,WAGA,CACA,CAEA,sBACA,kCAA8C,IAAQ,KACtD,cACA,6BACA,eACA,sCACA,IACA,KACA,KAGA,CACA,IACA,aACA,mBACA,gBAGA,eAGA,gBACA,uBACA,SAGA,qBACA,mBAIA,mBACA,WAEA,wBACA,IACA,yBAGA,IAYA,MAXA,kBACA,gCACO,IACP,wCACA,gBACA,mBACO,OACP,4BAGA,SAGA,oBACA,kCAA8C,IAAQ,KACtD,cACA,gBACA,eAKA,oCAJA,UACA,MAKA,mBACA,kCAA8C,IAAQ,KACtD,cACA,2BACA,SACA,+BACA,SACA,IACA,IACA,CACA,QAKA,iBACA,wBAEA,+BACA,CAaA,qBAZA,UACA,KACA,aAGA,WAGA,4BAGA,aAGA,EAIA,YAAe,YAAc,cAC7B,kCCttBA,8BACA,CAEA,0BAYA,CACA,sCAGA,wCACA,KAAqB,MAAiB,OACtC,qBAGA,SAAkB,YAClB,cACA,QACA,KACA,GAEA,cACA,OACA,KAEA,cACA,SACA,aACA,cACA,YACA,GACA,IACA,UACA,OACA,IACA,UACA,YACA,IACA,UACA,iBACA,IACA,MACA,UAGA,iBAEA,cAGA,CAGA,kBACS,SACT,OACA,UACA,CACA,QACA,CACA,IAAiB,QACjB,CACA,KACA,IACA,CACA,CACA,CAEA,aACA,cACA,sBAA0C,CAAsB,IAChE,EACA,CAEA,aAGA,oCACA,IACA,UACA,UAMA,6BALA,CACA,IACA,mBACA,OACA,aAEA,CAEA,aAKA,qCACA,iBACA,GACA,YACA,yBACA,yCAEA,QAEA,IACA,oCAEA,8BAGA,4BACA,mBACA,IACA,CAEA,aACA,UACA,6CACA,SACA,KACA,IAEA,eACA,SACA,cACA,CAEA,aACA,SACA,6BAGA,uBACA,yCACA,CACA,0BACA,OACA,iBACA,IACA,IACA,cACA,CAEA,aACA,cACA,cACA,IACA,CAGA,OAvJA,oBACA,EACA,KACA,SACA,yCAoJA,kBAlJA,SAqJA,eAEA,kBAFU,+BAIL,IAEL,IAEK,MAEL,eAEK,8CAEL,UAIA,IAGA,MACA,iBACA,iBAAC,qGCzLD,aA4BA,aAAuC,SAA6B,WAAqB,YAAiB,SAAmB,eAAuB,yDAAgF,MAAuC,SAAjB,YAE1P,aAAsC,0BAAuC,CAAgB,UAG7F,CAEA,aACA,OAEA,sBACA,mDACA,WAEA,qCACA,MACA,mBACA,UACA,YACA,aACA,OAEA,mBACA,cACA,YACA,EAEA,YACA,UAEA,aACA,QACA,EACA,KAEA,0BAEA,cACA,iBACA,GAEA,WACA,WAEA,oBACA,QACA,GACA,KAEA,eACA,QAEA,kCACA,kBACA,GAEA,YACA,WAEA,aACA,QACA,GACA,KAEA,0BAEA,cACA,oBAEA,gBACA,QACA,eAGA,QACA,MAEA,wBACA,qBACA,UACA,CACA,IAEA,aACA,OAEA,sBACA,iDACA,OACA,qCACA,MACA,mBACA,UACA,iBACA,OAEA,mBACA,UAEA,OACA,QACA,EACA,KAEA,iBAEA,iBACA,iBACA,wBAEA,qBACA,cACA,kCAEA,kBACA,OACA,eAGA,QACA,MAEA,sBACA,qBACA,UACA,CACA,GAEA,CA1JA,qCACA,CACC,WAED,QAEA,MAEA,SAEA,WAEA,eAEA,OAEA,QAEA,QAEA,SAEA,QAEA,aAQA,kBA2HA,qDACA,oCACA,MACA,mBACA,UACA,8BAEA,oCACA,OACA,eAGA,QACA,WAEA,4BACA,qBACA,UACA,CAAC,qBC/KD,aAkCA,aAAuC,SAA6B,WAAqB,YAAiB,SAAmB,eAAuB,yDAAgF,MAAuC,SAAjB,YAE1P,aAAsC,0BAAuC,CAAgB,WAE7F,aACA,OAEA,sBACA,iDACA,aAEA,qCACA,MACA,mBACA,UACA,2BACA,YACA,OAEA,mBACA,UAEA,mCACA,QACA,EACA,KAEA,0BAAgD,OAEhD,sBACA,iBACA,OAEA,gBACA,cACA,SACA,2BAEA,UACA,QACA,eAGA,QACA,MAEA,sBACA,qBACA,UACA,CACA,GACA,CACA,aACA,OAEA,sBACA,iDACA,SACA,QACA,gDACA,MACA,mBACA,UACA,iBACA,mCACA,YAAgD,cAChD,YAAkD,yBAA8C,cAAQ,CAExG,mBAEA,OACA,OACA,eAGA,QACA,MAEA,sBACA,qBACA,UACA,CACA,IAEA,aACA,OAEA,sBACA,iDACA,OAEA,qCACA,MACA,mBACA,UACA,yBACA,QACA,EACA,KAEA,6BACA,YACA,OAAwC,OAExC,sBACA,OACA,eAGA,QACA,MAEA,sBACA,qBACA,UACA,CACA,G,CApJA,qCACA,CACC,WAED,QAEA,OAEA,SAEA,MAEA,SAEA,MAEA,SAEA,WAEA,YACA,aACA,2BAEA,QAEA,QAEA,QAEA,4BChCA,aAUA,aAAsC,0BAAuC,CAAgB,UAG7F,CAXA,QAEA,OAEA,SAEA,oBAQA,QAaA,GAZA,sDACA,OACA,KACA,8BAEA,QAGA,GACA,EAEA,qCAEA,IACA,qDACA,CACA,8BAEA,CAKA,WAJA,kBACA,4DAEA,2CAGA,G,mBC1CA,aAmBA,aAAsC,0BAAuC,CAAgB,UAE7F,CAnBA,qCACA,CACC,WACD,+FAEA,QAEA,MAEA,SAEA,OAEA,SAEA,gCAKA,kCACA,SAEA,kCACA,mBACA,SACA,OACA,WAGA,WACA,0EACA,OAAkB,MAClB,MACA,GACA,yEACA,OAAkB,UAClB,KACA,GACA,+EACA,OAAkB,UAClB,KAEA,GAEA,IACA,CAEA,kCACA,mBACA,SACA,OACA,WAGA,WACA,wCACA,CACA,SACA,YACA,uBAGA,eACA,wBACA,sBAA0C,UAE1C,QAEA,IACA,CAEA,oCACA,SACA,OAEA,kDAAgE,0BAAsC,SACtG,IAEA,wCACA,mCACA,oBACA,gCAEA,yJACA,GACA,OACA,IACA,MACA,OACA,EAEA,mCACA,oBACA,6BAEA,qGACA,MACA,8HACA,GACA,Q,mBCtGA,aAwDA,aAAuC,SAA6B,WAAqB,YAAiB,SAAmB,eAAuB,yDAAgF,MAAuC,SAAjB,YAE1P,aAAsC,0BAAuC,CAAgB,UAE7F,CA1DA,qCACA,CACC,WAED,QAEA,MAEA,SAEA,MAEA,SAEA,MAEA,SAEA,OAEA,SAEA,OAEA,SAEA,OAEA,SAEA,OAEA,SAEA,OAEA,SAEA,MAEA,SAEA,SAEA,SAEA,QAEA,QAEA,QAEA,0BAOA,OACA,+BACA,YACA,gBAEA,kBAGA,eACA,aAGA,qBACA,sEACA,WAEA,CAuOA,WA5OA,+BAMA,KACA,6BACA,6BACA,uBACG,GACH,KACA,wBACA,gBAuBA,qBACA,UAEA,mDAzBA,IACA,sCACA,MACA,mBACA,UACA,iBAAmD,mBACnD,iCACA,IAEA,eACA,cACA,cAEA,gBACA,OACA,eAGA,QAAS,IACT,KAEA,IAKA,QACG,KACH,KACA,6BACA,cAiCA,qBACA,UAEA,iDAnCA,OACA,qCACA,MACA,mBACA,UACA,iBAAmD,YACnD,wBACA,uFAEA,cACA,8BAEA,iBACA,2BACA,2BAEA,iBACA,cAEA,eACA,qBACA,sBAEA,gBACA,QACA,eAGA,QAAS,IACT,KAEA,IAKA,QACG,KACH,KACA,iCACA,aAwDA,qBACA,UAEA,gDA1DA,mEACA,kBACA,qCACA,MACA,mBACA,UACA,iBACA,OAEA,mBACA,UAEA,OACA,QACA,GACA,KAEA,eACA,SACA,IAEA,sBACA,OACA,YACA,GAEA,UACA,WACA,mBAEA,mBAEA,QACA,UACA,QACA,GACA,KAEA,kBACA,qBACA,oBACA,QAEA,uBACA,oBAEA,gBACA,QACA,eAGA,QAAS,IACT,cAEA,IAKA,QACG,KACH,KACA,+BACA,cAwBA,qBACA,UAEA,iDA1BA,oCACA,MACA,mBACA,UACA,YACA,YACA,OAEA,qBACA,UACA,gBAEA,YAEA,iBACA,OACA,eAGA,QAAS,IACT,KAEA,IAKA,QACG,KACH,KACA,yBACA,aAgDA,qBACA,UAEA,gDAlDA,mEACA,kBACA,qCACA,MACA,mBACA,UACA,iBACA,OAEA,mBACA,UAEA,QACA,QACA,GACA,KAEA,eACA,SACA,IAEA,cACA,aACA,8BACA,aACA,GAEA,UACA,WACA,mBAEA,gBACA,sCAEA,QACA,kBACA,QAEA,qBACA,QACA,eAGA,QAAS,IACT,cAEA,IAKA,QAEA,QACC,aAED,E,yBCjTA,eAEA,+BACA,eAIA,mCACA,iBACA,sEAEA,wCACA,aAjBA,aACA,wBACA,yCACA,YAgBA,0CACA,cAAgB,wBAGhB,eACA,gDCxBA,EAAkB,i3CCKlB,iBACA,2BACA,6CACA,6CAA8C,UAAa,MAC3D,qBACA,aACA,OAiCA,aACA,OACA,CACA,8BAAqB,eACrB,iBAA0B,iBAE1B,GAlDA,cACA,QACA,SACA,SAoCA,YA1BA,uCACA,cAAgB,wBAGhB,eACA,6BAEA,oCACA,cACA,wBAEA,kBACA,CACA,8BAAqB,iBACrB,iBACA,qCACA,uCAEA,aAEC,KAED,+BACA,0CACA,WAGA,OACA,8DACA,oBCzCA,CAEA,aAEA,UACA,eACA,0BACA,2BCRA,aACA,CAEA,sCACA,YAGA,aAuCA,kzqgBAAC,GAAW,0BCvCZ,aACA,CAGA,8BAiBA,cACA,IAOA,gBACA,QACA,gBAEA,cAOA,eACA,0BACA,yBACA,2CAMA,cAIA,QAGA,YAGA,SAGA,EAGA,UAGA,SAKA,0BAEA,UAIA,0BAEA,gBAIA,yBAGA,iBACA,SAGA,WAEA,sBAGA,yBAEA,OAGA,SAIA,wBAGA,UACA,CAKA,aAEA,MAIA,IACA,CAGA,CACA,QAMA,cACA,WACA,KAAmB,QAAwB,OAC3C,MACA,KACA,YAEA,SACA,mBACA,eAGA,QACA,QAiBA,cACA,cACA,MAMA,cAkBA,sBAEA,oBACA,SAEA,gBA0EA,CACA,qBACA,2BACA,KAMA,cACA,qCACA,yBAGA,cACA,cAaA,cAoBA,wBAKA,8CACA,UAEA,KACA,IAUA,gBAoeA,gBAEA,KADA,IASA,gBACA,SACA,wBACA,MAMA,cACA,MACA,6BAGA,yFACA,sBAOA,cAGA,uBACA,gBAGA,wBAKA,aACA,IACA,MACA,kBACA,QAAe,MAAgB,WAE/B,OACA,UACA,UACA,OAEA,OAEA,MAIA,OACA,MAOA,cAEA,oBAKA,YACA,IACA,MACA,kBACA,QAAe,MAAgB,WAE/B,OACA,UACA,UACA,OAEA,OAEA,MAIA,OACA,MAQA,cAGA,IACA,kCACA,uBACA,MACA,MAGA,eACA,UACA,cAUA,IACA,+BACA,eACA,MACA,MAKA,uBACA,oBACA,qBACA,YAIA,eACA,MACA,gBAkBA,MACA,mCACA,mDACA,qBAQA,oBAEA,mBAEA,UAEA,mBAEA,6BAEA,mBAKA,uBAGA,kBACA,wCACA,iCACA,WAKA,0FAGA,KAqBA,SAjBA,cACA,wBAIA,WACA,gBAGA,sBACA,gDACA,yBACA,yCAIA,aAGA,gBA+JA,MACA,mCACA,mDAKA,oBAEA,mBAIA,UAEA,sCAGA,4BAGA,4CAEA,GACA,yBACA,kBACA,wCACA,iCACA,WAGA,sFACA,WAEA,oBAEA,qBACA,uBAMA,8EAKA,cAJA,gDAGA,gBAGA,cAkFA,SAM0B,QACA,IACA,IACA,IACA,MAS1B,8BAGA,WACA,cACA,EAIA,QACA,MAGA,iBAGA,UAEA,KAIA,oBAEA,OAGA,IAIA,qBAEA,KACA,YAEA,KACA,YAEA,OAEA,IAIA,qBAEA,KACA,YAEA,KACA,YAEA,OAEA,IAMA,eAIA,YACA,KAIA,KAKA,sBACA,IACA,MAGA,MAGA,WAKA,UACA,MAIA,WAGA,QAIA,EACA,WAGA,SAIA,KAIA,aADA,GAEA,CAQA,cACA,SAMA,gCAEA,IACA,MAIA,YACA,KAGA,eAEA,UAEA,SACA,IAGA,cAEA,UACA,IAGA,eAEA,aACA,IAKA,oBAGA,aAGA,eAGA,cAGA,SACA,CAGA,CACA,QACA,CAGA,gBAoBA,SAQA,gCAEA,IACA,MAIA,YACA,KAIA,mBAGA,WACA,UAIA,MACA,CASA,gBACA,SAMA,gCAEA,IACA,MAIA,YACA,KAIA,eAGA,aACA,WAGA,OACA,GACA,CAEA,cAkDA,SAG0B,MACA,IACA,IAQ1B,8BAGA,WACA,YACA,KAKA,SACA,cACA,MACA,QACA,IACA,IACA,IAEA,SAEA,WAEA,GAKA,YACA,QACA,MACA,+BAKA,WAIA,cACA,KACA,IAIA,IACA,YACA,WAKA,OAGA,IAIA,oBACA,MACA,IAKA,iBACA,OACA,IACA,IAIA,cAIA,WACA,UACA,KAKA,QACA,OACA,KAIA,mBAKA,+BACA,uBAIA,iBACA,WAIA,sBACA,QAGA,WACA,SAIA,MAIA,OAIA,QACA,QAIA,aACA,MACA,IAIA,MACA,IACA,CASA,gBACA,SAOA,gCAEA,IACA,MAIA,YACA,KAGA,YACA,gBAIA,YACA,eAIA,iBAGA,wBAGA,gBAGA,QAGA,cAGA,YACA,IAGA,CACA,WAIA,QAGA,sBAGA,OAGA,6BAGA,QAGA,qBAGA,QAIA,cACA,MACA,KACA,MACA,GACA,CAGA,cAsBA,SAE0B,MAS1B,8BAGA,WACA,WACA,KAKA,eACA,KAKA,iBACA,IACA,OACA,KAIA,mBAKA,GAaA,6BAZA,uBAWA,mBAEA,0BACA,0BACA,0BAKA,gCACA,WAIA,0BACA,QAGA,WACA,SAIA,MAIA,OAKA,gBACA,MACA,IAIA,MACA,IACA,CAQA,cACA,SAMA,gCAEA,IACA,MAIA,YACA,KAGA,eAGA,QACA,eAGA,qBAGA,OACA,YAGA,cAIA,cAGA,YACA,IACA,CAGA,cAsBA,SAI2B,MACD,KAS1B,8BAGA,WACA,WACA,KAKA,eACA,KAKA,4BACA,WACA,KAMA,2BACA,WACA,MACA,IAKA,cACA,IACA,KAGA,UAMA,kCACA,SACA,gBACA,SAIA,uBAIA,aACA,QAGA,WACA,SAIA,MAIA,OAKA,kCACA,MACA,IAIA,MACA,IACA,CAQA,cACA,SAMA,gCAEA,IACA,MAIA,YACA,KAGA,YACA,cAGA,OACA,eAKA,kBACA,0BAGA,KACA,aAIA,mBAGA,eACA,eAGA,oBAGA,WAGA,UACA,KACA,CAGA,cAiBA,SAEA,QACA,OACA,QACA,WACA,WACA,YACA,cACA,SAM0B,OACA,UACA,MACC,IAQ3B,+BAEA,CACA,UACA,eAKA,YAGA,aACA,YAIA,kBACA,gBAGA,QAKA,QAOA,SACA,KAEA,aAKA,YAGA,aACA,YAIA,MAGA,QACA,KAIA,KAGA,SACA,KAIA,0BACA,wBAGA,SAKA,QAOA,SACA,KAEA,aAKA,eAGA,aACA,YAIA,aAGA,KACA,KAIA,SAOA,SACA,KAEA,aAKA,eAGA,aACA,YAIA,aAIA,MACA,KACA,QACA,UAIA,MAOA,SACA,KAEA,aAKA,aAGA,kBACA,YAIA,oBAEA,KAGA,2BAIA,WAGA,kBACA,UAIA,MAGA,OAGA,YACA,WACA,WAMA,WACA,SAEA,aAMA,2BACA,QACA,QACA,OAIA,SAKA,WACA,KACA,IAEA,aAKA,UACA,KAGA,UAGA,gBACA,aAGA,eACA,aAGA,eACA,aAIA,2BACA,cAGA,mBAGA,GAGA,OAGA,WAIA,QACA,SAGA,kBAKA,OACA,KACA,IAEA,MACA,CAQA,cACA,SAKA,QACA,OACA,QACA,UAE0B,OAM1B,gCAKA,IACA,aACA,MAOA,SANA,eACA,iCAMA,MAIA,mBACA,aACA,iBACA,QACA,iBAKA,gBACA,OACA,KAKA,kBACA,QACA,cACA,0BAIA,IACA,KAGA,YACA,cAGA,OACA,eACA,IAMA,IACA,YACA,MASA,SARA,eACA,8BAQA,iBACA,MAMA,SALA,eACA,iBAKA,aAIA,mBAGA,eACA,eAKA,eACA,QAMA,SALA,eACA,iCAOA,UAGA,SACA,KACA,CAGA,cAiBA,SAG0B,MAQ1B,8BAGA,WACA,WACA,KAKA,eACA,KAKA,iBACA,IACA,OACA,KAIA,mBAIA,eAKA,6BACA,UAIA,wBACA,aAIA,wBACA,WAIA,6BACA,QAGA,WACA,SAIA,MAIA,cAKA,kBACA,KAKA,8BACA,MACA,IAIA,MACA,IACA,CAQA,cACA,SAMA,gCAEA,IACA,MAIA,kBACA,QAGA,YACA,cAGA,OACA,eAIA,kBACA,sBAGA,IACA,aAGA,aAGA,QACA,eAGA,gBAIA,gBAGA,QAIA,cAIA,cACA,IACA,CAGA,cAqBA,SAG0B,MAQ1B,8BAGA,WACA,WACA,KAKA,eACA,KAKA,iBACA,IACA,OACA,KAIA,WACA,wBAIA,WACA,oBAIA,4BACA,QAGA,WACA,SAIA,MAIA,OAKA,gBACA,MACA,IAIA,MACA,IACA,CAQA,cACA,SAMA,gCAEA,IACA,MAIA,YACA,KAIA,qBAGA,cACA,eAGA,qBAGA,YAGA,SACA,KACA,CAGA,gBA0BA,UAGA,IAKA,eAEA,MACA,KASA,gBACA,SAC2B,QACA,OAQ3B,+BAIA,YACA,SACA,eAKA,gBACA,SACA,QAKA,YACA,cACA,KAIA,QAIA,cAIA,SAGA,OAKA,aACA,IACA,cAKA,eACA,cACA,kBAMA,kBACA,QACA,KAIA,kBACA,QACA,IAKA,gBACA,OAIA,MACA,CASA,gBACA,SAMA,gCAEA,IACA,MAKA,kBACA,aAIA,cACA,gBAIA,WACA,iBAGA,kBACA,SACA,CAKA,cA8BA,SAQA,gCAEA,OAKA,SAIA,eACA,GACA,CAQA,cACA,SAMA,gCAEA,OAKA,SAKA,iBACA,eAGA,IACA,IACA,CAGA,0BA7sGA,YACA,wBACA,2BAaA,wBAmBA,KA0IA,OASA,cAWA,uBACA,oBACA,MAUA,iBACA,oBAEA,mBACA,OAUA,qBACA,UACA,kBACA,OACA,2BAEA,wBAEA,OAUA,kBACA,UACA,kBACA,OACA,8BAEA,0BAEA,UAUA,UAOA,cAwBA,uBAIA,eAOA,uBAYA,MA+dA,smIACA,0BACA,gCACA,6BACA,CACA,MACA,EACA,EAIA,MAEA,OAYA,SA+JA,QApCA,GA0BA,UA6EA,8DAEA,eAAuB,4BAA0C,aAKjE,8CAEA,eAAuB,OAAqC,0BAK5D,kDAEA,eAAuB,aAAwB,UAS/C,uCACA,cAmGA,yDACA,6BACA,uBAEA,mBACA,cACS,SAGT,kBAQA,cACA,IAEA,IAtHA,qCACA,gBACK,mCACL,iCACA,8BACA,SACA,aAEA,2BAGA,KAKA,UACA,sDACA,OACA,kCAKA,kCAIA,mBAGA,SAGA,KAKA,SAKA,OAOA,0BAGA,aAGA,QACA,iBACA,kBAEA,aASA,gCACA,GACA,gCACA,QACA,MACA,SACA,SACA,eACA,kBAEA,aACA,OAAO,UACP,6BACA,IASA,eA2BA,OASA,SAsDA,6DAEA,eAAuB,4BAA0C,aASjE,sCACA,cACA,UAKA,UACA,sDACA,OACA,8CAGA,yBAGA,MAGA,KAIA,SACA,OAIA,0BACA,aAEA,cACA,kBAEA,aAGA,+BAEA,kCACA,QAEA,aACA,kBAEA,aAEA,sBACA,IAIA,WACA,cAeA,yBA2MA,OACA,SAEA,yBACA,OACA,SAaA,YAsEA,CAEA,6CACA,CAEA,2EACA,SACA,WAEA,gCACA,OACA,WAEA,mBACA,OACA,WACA,CACA,EACA,EAWA,sBACA,OACA,SAKA,oBACA,OACA,YAUA,wBAkPA,OACA,SAEA,wBACA,OACA,SAeA,qBAiJA,OACA,SAEA,qBACA,OACA,SAeA,0BA+JA,OACA,SAEA,0BACA,OACA,SAUA,+BAobA,OACA,SAEA,+BACA,OACA,SAUA,0BAkKA,OACA,SAEA,0BACA,OACA,SAcA,0BAqHA,OACA,SAEA,0BACA,OACA,SAkBA,4BAyJA,OACA,YAGA,4BACA,OACA,YAKA,4BACA,OACA,YAGA,4BACA,OACA,YAUA,kCA2DA,OACA,SAEA,kCACA,OACA,SAEA,EACA,gBACA,iBACA,gBAEA,0CACA,oBACA,aACA,0BACA,gCAMA,qBAAC,GAAW,2BChvGZ,aAMA,aACA,uBACA,QAEA,aAA0B,CAAoB,qBAC9C,WACA,aAEA,QACA,iBAEA,KACA,+BACA,wCACA,mCACA,wBACA,GACA,gBACA,EAAK,MACL,SAEA,MAEA,CAEA,OACA,MAEA,aAA+B,qBAAsC,oBACrE,IACA,QAEA,oBACA,+BAA6D,CAE7D,sBACA,cACA,aACA,KACA,KACA,UACA,UACA,UACA,SACA,KACA,UACA,eAKA,uBACA,UACA,QAGA,MAEA,OACA,CACA,SAEA,SAEA,aAA+B,8DAA6E,qBAC5G,gBACA,WAGA,uBAEA,QACA,mBACA,0CACA,MAIA,uBACA,0CACA,IAGA,0BACA,6BAAoD,CACpD,6CACA,aACA,oCACA,gBAEA,QAGA,MACA,OACA,qBACA,wCACA,QACA,oCACA,IAEA,yBAEA,8BACA,sBACA,2CACA,KACA,EACA,QACA,CACA,CACA,CACA,QAEA,CAGA,MACA,IAGA,yBACA,IACK,gCACL,IAEA,SAGA,UAEA,mBACA,mBACA,wCACA,QAEK,4BACL,mBACA,QAEA,QAEA,CACA,SAEA,aACA,oBACA,iBACA,WACA,6BACA,GAAO,SACP,OACA,EAEA,CACA,QAAG,QACH,yBACA,QAEA,eACA,MAAS,CAGT,yBAAO,UAAgB,SAGvB,qBAGA,uBACA,OAGA,kCACA,IACA,KACA,4BACA,IACA,wBACA,IACA,MAAO,SACP,CACA,KACA,QACA,GACA,iBAGA,CACA,KAEA,4BAA4D,YAC5D,CACA,+BAGA,oBAEA,KAEA,OACA,eACA,KAEA,SAEA,aACA,CACA,kBACA,eACA,kBACA,0CACA,kBACM,yBACN,wBACA,2CAGA,+EACA,CACA,mBACA,eACA,YACA,eAEA,2CACA,qBACA,IACA,QACA,gBACA,SAAO,SACP,GACA,QAEA,CACA,QAEA,KACA,qBACA,eACA,WAGA,oBAAmB,MAAmB,OACtC,uCACA,GACA,SACA,KAEA,CAEA,UACA,MAEA,YACA,KAEA,aACA,CACA,kBACA,eACA,kBACM,2BACN,aACA,kBACA,kBACA,eACA,YACA,eAGA,4BACA,UACA,eAEA,OAvRA,UACA,SACA,cAuRA,UACA,CACA,UACA,4BC9RA,EAA+suJ,mo0QCA/suJ,aAEA,QACA,s5GACA,8YACA,6lRACA,8sDACA,kyRACA,qpDACA,qrNACA,04KACA,uJACA,6EACA,u3QAAw9Y,+8YAEx9Y,UACA,CACA,iBACA,uBACA,YACA,aACA,YACA,YACA,SACA,SACA,WACA,WACA,SACA,uCCzBA,CAsBA,eACA,aAMA,OACA,MACA,6BACO,iBACP,4BAEA,iBAEA,QACA,IACA,qBACA,UAEA,MAlBA,iBAGA,YACA,MAeA,QAQA,CAEA,aAEA,IACA,oBACA,QAAG,SACH,CACA,QACA,SACA,sBACA,UACA,8BA7DA,EAkBA,uCCvBA,WAEA,gDACA,GACA,+CACA,aACA,CACA,QACA,cACA,YAGA,kBAGA,iBACA,GACA,0BACA,gBACA,sBACA,kBACA,aACA,iBCtBA,uBACA,WACA,oBACA,2BACA,2BACA,8B,gBCDA,CAKA,eACA,UACA,EACA,yBACA,0BACA,wBACA,wBACA,wBACA,kBACA,oBACA,oBACA,MAfA,eAAe,EAAS,MACxB,qCACA,GAeA,0BCjBA,CACA,8DACA,+EACA,KAEA,sBAEA,0BACA,CAEA,MADA,OAEA,CAAC,KAKD,aAEA,0BACA,aAAsB,EAAQ,KAC9B,iBACA,+BAGA,mBACA,QACA,oBC5BA,iBACA,aAEA,EACA,8CACA,OAEA,QAEA,yBAGA,UAKA,QAJA,gBAGA,wBACoB,EAAS,KAC7B,WAIA,eACA,KA1BA,QACA,cA2BA,0BC5BA,cACA,wCCDA,YACA,CAEA,0BA0CA,IAGA,yDACA,4BAEA,mDACA,aAEA,cACA,CAIA,MADA,6BAIA,cACA,OACA,gBACA,SACA,eAAgB,gBAChB,QAGA,GAOA,SANA,wCACA,CACA,QAGA,IAGA,cACA,MAEA,OACA,sCACA,MACA,WAAO,EACF,YACL,gCACA,oBACA,GAAO,EAEP,0DACA,eACA,KAAO,EAEP,KAEA,cAuDA,UACA,sCAEA,wBACA,YAEA,cACA,iCACA,oBACA,KACA,OACA,sBACA,KACA,MACA,CACA,EAEA,cACA,UACA,cACA,KAEA,SADA,sBAGA,cACA,UACA,cACA,KAEA,SADA,eAGA,cACA,cACA,yBAEA,UAAmB,MAAiB,OACpC,WAEA,oBACA,GAEA,cACA,MACA,qBAEA,0BACA,4BACA,kBAEA,MAEA,aACA,aAEA,sCACA,SACA,YACA,kBACO,WACP,wBACO,2CACP,sBACO,mDACP,sBACO,kEACP,kCACO,0CACP,+BAEA,sCACO,mFACP,4BAEA,0BAGA,8CACA,kBACA,mDACS,2DACT,oDACS,gDACT,kDAGA,mDAEA,IACA,2BACA,SACA,MACA,KAGA,iBACA,sCACS,mBACT,uDACS,4BACT,8BAEA,mFAEA,YAEA,6BACA,aACA,+CAEA,8BAEA,OAGA,uBACA,SACA,MACA,KAGA,iBACA,wBACO,mBACP,+CACO,2BACP,8BAEA,yEAEA,UAEA,IACA,mCACA,oBACA,OAGA,uBACA,8BACA,MAEA,EACA,IAGA,cAGA,SACA,qBACA,kBAEA,gBACA,GACA,cAEA,uBACA,MACA,6BAEA,2BACA,uBACA,cACA,+BAEA,wBACA,mBACA,QACA,wBACA,YAEA,YACA,WAGA,8DACA,yBACA,gCAEA,+CACA,oCACA,mBAEA,2BACA,6CAEA,kDACA,YAEA,cAKA,UACA,UASA,8CARA,MACA,eACA,+BACA,iCACA,oCACA,sBACA,CACA,IAGA,cACA,OAGA,iCACA,KASA,2CARA,eACA,iBACA,YACA,mBACA,SACA,WACA,CACA,IAGA,gBAIA,KAGA,gBACA,8CACA,iCACA,8DACA,0BACA,yBACA,QACA,YAEA,OA/XA,aACA,cACA,yDACA,qDACA,IACA,CAEA,UADA,QACO,SACP,CACA,QACA,CACA,aACA,2BAGA,wBACA,eAYA,oOACA,8BACA,gBAEA,mCACA,YACA,8CAGA,kCAsDA,GACA,OACA,gBACA,uBACA,OAEA,mCACA,iBACA,KAEA,6BACA,UACA,6BACA,IAEA,6BACA,gCACA,KAEA,+BACA,gBACA,IAEA,mCACA,mBACA,aACA,0CAGA,KAEA,6BACA,IACA,uCAAwC,UACxC,GACA,IAEA,+BACA,IACA,qCAAkC,UAClC,GACA,IAEA,gCACA,IACA,uCAAwC,cACxC,GACA,IAEA,IACA,oDAGA,YAoJA,8EA2CA,mBAA8B,WAC9B,WAEA,WA+BA,oBAgBA,uCACA,6BACA,aACA,uBACA,8BACA,kBAEA,KAEA,oBACA,mBAAuC,oBACvC,KAEA,cADA,SAGA,KAEA,iDACA,KACA,sCAGA,0CAA+B,kBAC/B,aAEA,IACA,YACA,YAEA,gCACA,iCACA,OACA,gBAEA,mCACA,OACA,UACA,oBACA,gDAEA,yDACA,mDACA,eACA,WAEA,sBACA,iBACA,0BAEA,wBACA,iBACA,0BAEA,oBAEA,QACA,4BACO,mBACP,2BAGA,0CACA,sBAGA,uCACA,GACA,qBAEA,iDACA,UACA,EACA,UACA,YAAC,wDCjdD,aACA,UACA,QACA,aAEA,wBACA,eACA,WACA,OAEA,SACA,QACA,iBACA,iBACA,8BAIA,8CAA8C,CAC9C,eACA,6BAGA,sCAEA,gBAIA,oCAAuD,CACvD,sCACA,IAEA,WACA,4BACA,KAEA,YACA,WACA,oBACA,6BAGA,oBAEA,gCACA,QAAW,CACX,WACA,+BAEA,mBAEA,aACA,kCACA,KAEA,eACA,yBACA,GAEA,gBACA,uBAAgC,6BAChC,gBAEA,eACA,kBACA,QAEA,gBACA,wCAIA,6BACA,OAEA,eACA,kBACA,QAEA,gBACA,wCAIA,6BACA,OAEA,WACA,cAEA,WACA,eAGA,GACA,gCAGA,uDACA,KAEA,YACA,WAIA,oCAA0B,6BAC1B,QAEA,eACA,OACA,uBAGA,6BACA,KAEA,gBACA,WAIA,oCAA0B,6BAC1B,YAEA,WACA,OACA,uBAGA,gCACA,KAEA,YACA,wCAIA,QACA,sBAEA,uBAA4B,6BAE5B,SAEA,eACA,kBACA,gCAGA,GACA,0BAGA,2BACA,IAEA,gBACA,WAIA,6BACA,0BAA0B,6BAC1B,eAEA,aACA,gCACA,qBAGA,iBACA,KAEA,cACA,cAEA,QACA,OAKA,eAJA,sBACA,yCAIA,aACA,qBAA8B,qBAC9B,8BACA,kBAEA,mBACA,aACA,MAEA,WACA,mCACA,wBAGA,iBACA,QAEA,YACA,IACA,OAIA,+BAHA,qCAIA,wBACA,qBAA8B,6BAC9B,YAEA,SACA,aACA,IACA,oBCxNA,aAOA,aACA,SACA,gBAIA,gIACA,4BACA,0FAIA,kBACA,gBAAiB,sBAA+B,IAChD,SAGA,mCAA+C,SAE/C,+CACA,oCAAiD,SAGjD,sDACA,QA7BA,UACA,SAEA,oBA4BA,oCACA,SACA,UACA,YACA,cACC,kBAED,+BACA,yBACA,0BAGA,qCACA,UAEA,yCACA,MACA,yBACA,0BAGA,4BACA,aAEA,QACA,yBACA,0BAGA,sCAAqC,SAErC,uEACA,cAEA,EACA,cACC,kBAED,iCACA,yBACA,0BAEA,4BACA,eAEA,2CACA,MACA,yBACA,0BAGA,4BACA,eAEA,EACA,cACC,kBAED,6CACA,MACA,yBACA,0BAGA,4BACA,iBAEA,QACA,yBACA,0BAGA,sCAAqC,SAErC,2EACA,kBAEA,EACA,cACC,kBAED,6CACA,MACA,yBACA,0BAGA,4BACA,iBAEA,QACA,yBACA,0BAGA,sCAAqC,SAErC,2EACA,kBAEA,EACA,cACC,kBAED,6CACA,MACA,yBACA,0BAGA,4BACA,iBAEA,QACA,yBACA,0BAGA,sCAAqC,SAErC,2EACA,kBAEA,EACA,cACC,kBAED,yCACA,MACA,yBACA,0BAGA,4BACA,aAEA,QACA,yBACA,0BAGA,sCAAqC,SAErC,uEACA,cAEA,EACA,cACC,kBAED,6CACA,MACA,yBACA,0BAGA,4BACA,iBAEA,QACA,yBACA,0BAGA,sCAAqC,SAErC,2EACA,kBAEA,EACA,cACC,kBAED,yCACA,MACA,yBACA,0BAGA,4BACA,aAEA,QACA,yBACA,0BAGA,sCAAqC,SAErC,uEACA,cAEA,EACA,cACC,kBAED,6CACA,MACA,yBACA,0BAGA,4BACA,iBAEA,QACA,yBACA,0BAGA,sCAAqC,SAErC,2EACA,kBAEA,EACA,cACC,kBAED,2CACA,MACA,yBACA,0BAGA,4BACA,eAEA,QACA,yBACA,0BAGA,sCAAqC,SAErC,yEACA,gBAEA,EACA,cACC,kBAED,iDACA,MACA,yBACA,0BAGA,iEACA,wBAEA,sBAEA,EACA,cACC,kBAED,yCACA,MACA,yBACA,0BAGA,4BACA,aAEA,QACA,yBACA,0BAGA,sCAAqC,SAErC,uEACA,cAEA,EACA,cACC,kBAED,qDACA,OACA,MACA,YACA,cACC,kBAED,QACA,CACA,kBACA,MACA,qBACA,eAEA,mBAAqB,wBAAqC,OAC1D,8BACA,aAGA,QACA,CACA,QACA,WACA,MACA,mBACA,eAGA,mBACA,4BAAqB,wBAAqC,OAC1D,8BACA,aAGA,QACA,CACA,QACA,YAAgB,WAAsC,yBACtD,cACA,eAEA,sCAA2B,IAC3B,yBAEA,aACA,uBACA,WAEA,cADA,cAEA,iBACA,uBACA,yBACA,eACA,iBACA,oBACA,cACA,CAiBA,WAfA,QAEA,eACA,4CACA,aACA,oBACA,YACA,cAGA,yBACA,mBACA,aAEA,SAEA,EACA,mBACA,QAAa,CACb,cAAa,CAEX,SACF,YAEA,gCC3YA,aACA,UACA,aAEA,wBACA,eAAgC,CAA0B,sBAC1D,SACA,WACA,mBAEA,4BACA,uBAGA,UACA,4BACA,IACA,sBAGA,sJACA,IACK,6BACL,8DACA,SACA,qBACA,MAEA,mBAEA,kBAEA,eACA,qBACA,kCACA,OACA,WAEA,qBACA,OACA,CAEA,YACA,iBACA,YACA,cAEA,UACA,WACA,eACA,sBACA,2BAEA,GAGA,SACA,cAEA,OACA,qBACA,WACA,gBAGA,SACA,KAEA,UACA,MACA,0BACA,QACA,iBAGA,IACA,QAEA,OACA,qBACA,WACA,OAGA,SACA,QAEA,SACA,IACA,QACA,oBACA,sBAEA,6BAEA,IACA,mBACA,KAGA,KAIA,uBAEA,YACA,cAEA,OACA,mBACA,gBACA,cAEA,oBACA,0BACA,WAEA,WACA,mCACA,MACA,iBCzHA,gBCAA,gBCAA","file":"rdflib.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"crypto\"), require(\"fetch\"), require(\"window\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"crypto\", \"fetch\", \"window\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"$rdf\"] = factory(require(\"crypto\"), require(\"fetch\"), require(\"window\"));\n\telse\n\t\troot[\"$rdf\"] = factory(root[\"crypto\"], root[\"fetch\"], root[\"window\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_63__, __WEBPACK_EXTERNAL_MODULE_99__, __WEBPACK_EXTERNAL_MODULE_166__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","\"use strict\";\n\nfunction _(message, opts) {\n return `${opts && opts.context ? opts.context : \"Value\"} ${message}.`;\n}\n\nfunction type(V) {\n if (V === null) {\n return \"Null\";\n }\n switch (typeof V) {\n case \"undefined\":\n return \"Undefined\";\n case \"boolean\":\n return \"Boolean\";\n case \"number\":\n return \"Number\";\n case \"string\":\n return \"String\";\n case \"symbol\":\n return \"Symbol\";\n case \"object\":\n // Falls through\n case \"function\":\n // Falls through\n default:\n // Per ES spec, typeof returns an implemention-defined value that is not any of the existing ones for\n // uncallable non-standard exotic objects. Yet Type() which the Web IDL spec depends on returns Object for\n // such cases. So treat the default case as an object.\n return \"Object\";\n }\n}\n\n// Round x to the nearest integer, choosing the even integer if it lies halfway between two.\nfunction evenRound(x) {\n // There are four cases for numbers with fractional part being .5:\n //\n // case | x | floor(x) | round(x) | expected | x <> 0 | x % 1 | x & 1 | example\n // 1 | 2n + 0.5 | 2n | 2n + 1 | 2n | > | 0.5 | 0 | 0.5 -> 0\n // 2 | 2n + 1.5 | 2n + 1 | 2n + 2 | 2n + 2 | > | 0.5 | 1 | 1.5 -> 2\n // 3 | -2n - 0.5 | -2n - 1 | -2n | -2n | < | -0.5 | 0 | -0.5 -> 0\n // 4 | -2n - 1.5 | -2n - 2 | -2n - 1 | -2n - 2 | < | -0.5 | 1 | -1.5 -> -2\n // (where n is a non-negative integer)\n //\n // Branch here for cases 1 and 4\n if ((x > 0 && (x % 1) === +0.5 && (x & 1) === 0) ||\n (x < 0 && (x % 1) === -0.5 && (x & 1) === 1)) {\n return censorNegativeZero(Math.floor(x));\n }\n\n return censorNegativeZero(Math.round(x));\n}\n\nfunction integerPart(n) {\n return censorNegativeZero(Math.trunc(n));\n}\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction modulo(x, y) {\n // https://tc39.github.io/ecma262/#eqn-modulo\n // Note that http://stackoverflow.com/a/4467559/3191 does NOT work for large modulos\n const signMightNotMatch = x % y;\n if (sign(y) !== sign(signMightNotMatch)) {\n return signMightNotMatch + y;\n }\n return signMightNotMatch;\n}\n\nfunction censorNegativeZero(x) {\n return x === 0 ? 0 : x;\n}\n\nfunction createIntegerConversion(bitLength, typeOpts) {\n const isSigned = !typeOpts.unsigned;\n\n let lowerBound;\n let upperBound;\n if (bitLength === 64) {\n upperBound = Math.pow(2, 53) - 1;\n lowerBound = !isSigned ? 0 : -Math.pow(2, 53) + 1;\n } else if (!isSigned) {\n lowerBound = 0;\n upperBound = Math.pow(2, bitLength) - 1;\n } else {\n lowerBound = -Math.pow(2, bitLength - 1);\n upperBound = Math.pow(2, bitLength - 1) - 1;\n }\n\n const twoToTheBitLength = Math.pow(2, bitLength);\n const twoToOneLessThanTheBitLength = Math.pow(2, bitLength - 1);\n\n return (V, opts) => {\n if (opts === undefined) {\n opts = {};\n }\n\n let x = +V;\n x = censorNegativeZero(x); // Spec discussion ongoing: https://github.com/heycam/webidl/issues/306\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(_(\"is not a finite number\", opts));\n }\n\n x = integerPart(x);\n\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(_(\n `is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`, opts));\n }\n\n return x;\n }\n\n if (!Number.isNaN(x) && opts.clamp) {\n x = Math.min(Math.max(x, lowerBound), upperBound);\n x = evenRound(x);\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n x = integerPart(x);\n\n // Math.pow(2, 64) is not accurately representable in JavaScript, so try to avoid these per-spec operations if\n // possible. Hopefully it's an optimization for the non-64-bitLength cases too.\n if (x >= lowerBound && x <= upperBound) {\n return x;\n }\n\n // These will not work great for bitLength of 64, but oh well. See the README for more details.\n x = modulo(x, twoToTheBitLength);\n if (isSigned && x >= twoToOneLessThanTheBitLength) {\n return x - twoToTheBitLength;\n }\n return x;\n };\n}\n\nexports.any = V => {\n return V;\n};\n\nexports.void = function () {\n return undefined;\n};\n\nexports.boolean = function (val) {\n return !!val;\n};\n\nexports.byte = createIntegerConversion(8, { unsigned: false });\nexports.octet = createIntegerConversion(8, { unsigned: true });\n\nexports.short = createIntegerConversion(16, { unsigned: false });\nexports[\"unsigned short\"] = createIntegerConversion(16, { unsigned: true });\n\nexports.long = createIntegerConversion(32, { unsigned: false });\nexports[\"unsigned long\"] = createIntegerConversion(32, { unsigned: true });\n\nexports[\"long long\"] = createIntegerConversion(64, { unsigned: false });\nexports[\"unsigned long long\"] = createIntegerConversion(64, { unsigned: true });\n\nexports.double = (V, opts) => {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(_(\"is not a finite floating-point value\", opts));\n }\n\n return x;\n};\n\nexports[\"unrestricted double\"] = V => {\n const x = +V;\n\n return x;\n};\n\nexports.float = (V, opts) => {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(_(\"is not a finite floating-point value\", opts));\n }\n\n if (Object.is(x, -0)) {\n return x;\n }\n\n const y = Math.fround(x);\n\n if (!Number.isFinite(y)) {\n throw new TypeError(_(\"is outside the range of a single-precision floating-point value\", opts));\n }\n\n return y;\n};\n\nexports[\"unrestricted float\"] = V => {\n const x = +V;\n\n if (isNaN(x)) {\n return x;\n }\n\n if (Object.is(x, -0)) {\n return x;\n }\n\n return Math.fround(x);\n};\n\nexports.DOMString = function (V, opts) {\n if (opts === undefined) {\n opts = {};\n }\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n if (typeof V === \"symbol\") {\n throw new TypeError(_(\"is a symbol, which cannot be converted to a string\", opts));\n }\n\n return String(V);\n};\n\nexports.ByteString = (V, opts) => {\n const x = exports.DOMString(V, opts);\n let c;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(_(\"is not a valid ByteString\", opts));\n }\n }\n\n return x;\n};\n\nexports.USVString = (V, opts) => {\n const S = exports.DOMString(V, opts);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + ((2 << 9) * a) + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n\n return U.join(\"\");\n};\n\nexports.object = (V, opts) => {\n if (type(V) !== \"Object\") {\n throw new TypeError(_(\"is not an object\", opts));\n }\n\n return V;\n};\n\n// Not exported, but used in Function and VoidFunction.\n\n// Neither Function nor VoidFunction is defined with [TreatNonObjectAsNull], so\n// handling for that is omitted.\nfunction convertCallbackFunction(V, opts) {\n if (typeof V !== \"function\") {\n throw new TypeError(_(\"is not a function\", opts));\n }\n return V;\n}\n\n[\n Error,\n ArrayBuffer, // The IsDetachedBuffer abstract operation is not exposed in JS\n DataView, Int8Array, Int16Array, Int32Array, Uint8Array,\n Uint16Array, Uint32Array, Uint8ClampedArray, Float32Array, Float64Array\n].forEach(func => {\n const name = func.name;\n const article = /^[AEIOU]/.test(name) ? \"an\" : \"a\";\n exports[name] = (V, opts) => {\n if (!(V instanceof func)) {\n throw new TypeError(_(`is not ${article} ${name} object`, opts));\n }\n\n return V;\n };\n});\n\n// Common definitions\n\nexports.ArrayBufferView = (V, opts) => {\n if (!ArrayBuffer.isView(V)) {\n throw new TypeError(_(\"is not a view on an ArrayBuffer object\", opts));\n }\n\n return V;\n};\n\nexports.BufferSource = (V, opts) => {\n if (!(ArrayBuffer.isView(V) || V instanceof ArrayBuffer)) {\n throw new TypeError(_(\"is not an ArrayBuffer object or a view on one\", opts));\n }\n\n return V;\n};\n\nexports.DOMTimeStamp = exports[\"unsigned long long\"];\n\nexports.Function = convertCallbackFunction;\n\nexports.VoidFunction = convertCallbackFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/webidl-conversions/lib/index.js\n// module id = 162\n// module chunks = 0","'use strict'\nconst ClassOrder = require('./class-order')\nconst NamedNode = require('./named-node')\nconst Node = require('./node')\nconst XSD = require('./xsd')\n\nclass Literal extends Node {\n constructor (value, language, datatype) {\n super()\n this.termType = Literal.termType\n this.value = value\n if (language) {\n this.lang = language\n datatype = XSD.langString\n }\n // If not specified, a literal has the implied XSD.string default datatype\n if (datatype) {\n this.datatype = NamedNode.fromValue(datatype)\n }\n }\n copy () {\n return new Literal(this.value, this.lang, this.datatype)\n }\n equals (other) {\n if (!other) {\n return false\n }\n return (this.termType === other.termType) &&\n (this.value === other.value) &&\n (this.language === other.language) &&\n ((!this.datatype && !other.datatype) ||\n (this.datatype && this.datatype.equals(other.datatype)))\n }\n get language () {\n return this.lang\n }\n set language (language) {\n this.lang = language || ''\n }\n toNT () {\n if (typeof this.value === 'number') {\n return this.toString()\n } else if (typeof this.value !== 'string') {\n throw new Error('Value of RDF literal is not string or number: ' +\n this.value)\n }\n var str = this.value\n str = str.replace(/\\\\/g, '\\\\\\\\')\n str = str.replace(/\\\"/g, '\\\\\"')\n str = str.replace(/\\n/g, '\\\\n')\n str = '\"' + str + '\"'\n\n if (this.language) {\n str += '@' + this.language\n } else if (!this.datatype.equals(XSD.string)) {\n // Only add datatype if it's not a string\n str += '^^' + this.datatype.toCanonical()\n }\n return str\n }\n toString () {\n return '' + this.value\n }\n /**\n * @method fromBoolean\n * @static\n * @param value {Boolean}\n * @return {Literal}\n */\n static fromBoolean (value) {\n let strValue = value ? '1' : '0'\n return new Literal(strValue, null, XSD.boolean)\n }\n /**\n * @method fromDate\n * @static\n * @param value {Date}\n * @return {Literal}\n */\n static fromDate (value) {\n if (!(value instanceof Date)) {\n throw new TypeError('Invalid argument to Literal.fromDate()')\n }\n let d2 = function (x) {\n return ('' + (100 + x)).slice(1, 3)\n }\n let date = '' + value.getUTCFullYear() + '-' + d2(value.getUTCMonth() + 1) +\n '-' + d2(value.getUTCDate()) + 'T' + d2(value.getUTCHours()) + ':' +\n d2(value.getUTCMinutes()) + ':' + d2(value.getUTCSeconds()) + 'Z'\n return new Literal(date, null, XSD.dateTime)\n }\n /**\n * @method fromNumber\n * @static\n * @param value {Number}\n * @return {Literal}\n */\n static fromNumber (value) {\n if (typeof value !== 'number') {\n throw new TypeError('Invalid argument to Literal.fromNumber()')\n }\n let datatype\n const strValue = value.toString()\n if (strValue.indexOf('e') < 0 && Math.abs(value) <= Number.MAX_SAFE_INTEGER) {\n datatype = Number.isInteger(value) ? XSD.integer : XSD.decimal\n } else {\n datatype = XSD.double\n }\n return new Literal(strValue, null, datatype)\n }\n /**\n * @method fromValue\n * @param value\n * @return {Literal}\n */\n static fromValue (value) {\n if (typeof value === 'undefined' || value === null) {\n return value\n }\n if (typeof value === 'object' && value.termType) { // this is a Node instance\n return value\n }\n switch (typeof value) {\n case 'object':\n if (value instanceof Date) {\n return Literal.fromDate(value)\n }\n case 'boolean':\n return Literal.fromBoolean(value)\n case 'number':\n return Literal.fromNumber(value)\n case 'string':\n return new Literal(value)\n }\n throw new Error(\"Can't make literal from \" + value + ' of type ' +\n typeof value)\n\n }\n}\nLiteral.termType = 'Literal'\nLiteral.prototype.classOrder = ClassOrder['Literal']\nLiteral.prototype.datatype = XSD.string\nLiteral.prototype.lang = ''\nLiteral.prototype.isVar = 0\n\nmodule.exports = Literal\n\n\n\n// WEBPACK FOOTER //\n// ./src/literal.js","\"use strict\";\nconst punycode = require(\"punycode\");\nconst tr46 = require(\"tr46\");\n\nconst infra = require(\"./infra\");\nconst { percentEncode, percentDecode } = require(\"./urlencoded\");\n\nconst specialSchemes = {\n ftp: 21,\n file: null,\n gopher: 70,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nconst failure = Symbol(\"failure\");\n\nfunction countSymbols(str) {\n return punycode.ucs2.decode(str).length;\n}\n\nfunction at(input, idx) {\n const c = input[idx];\n return isNaN(c) ? undefined : String.fromCodePoint(c);\n}\n\nfunction isSingleDot(buffer) {\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\n}\n\nfunction isDoubleDot(buffer) {\n buffer = buffer.toLowerCase();\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\n}\n\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\n return infra.isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\n}\n\nfunction isWindowsDriveLetterString(string) {\n return string.length === 2 && infra.isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\n}\n\nfunction isNormalizedWindowsDriveLetterString(string) {\n return string.length === 2 && infra.isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\n}\n\nfunction containsForbiddenHostCodePoint(string) {\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\n}\n\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\n}\n\nfunction isSpecialScheme(scheme) {\n return specialSchemes[scheme] !== undefined;\n}\n\nfunction isSpecial(url) {\n return isSpecialScheme(url.scheme);\n}\n\nfunction isNotSpecial(url) {\n return !isSpecialScheme(url.scheme);\n}\n\nfunction defaultPort(scheme) {\n return specialSchemes[scheme];\n}\n\nfunction utf8PercentEncode(c) {\n const buf = Buffer.from(c);\n\n let str = \"\";\n\n for (let i = 0; i < buf.length; ++i) {\n str += percentEncode(buf[i]);\n }\n\n return str;\n}\n\nfunction isC0ControlPercentEncode(c) {\n return c <= 0x1F || c > 0x7E;\n}\n\nconst extraUserinfoPercentEncodeSet =\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\nfunction isUserinfoPercentEncode(c) {\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\n}\n\nconst extraFragmentPercentEncodeSet = new Set([32, 34, 60, 62, 96]);\nfunction isFragmentPercentEncode(c) {\n return isC0ControlPercentEncode(c) || extraFragmentPercentEncodeSet.has(c);\n}\n\nconst extraPathPercentEncodeSet = new Set([35, 63, 123, 125]);\nfunction isPathPercentEncode(c) {\n return isFragmentPercentEncode(c) || extraPathPercentEncodeSet.has(c);\n}\n\nfunction percentEncodeChar(c, encodeSetPredicate) {\n const cStr = String.fromCodePoint(c);\n\n if (encodeSetPredicate(c)) {\n return utf8PercentEncode(cStr);\n }\n\n return cStr;\n}\n\nfunction parseIPv4Number(input) {\n let R = 10;\n\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\n input = input.substring(2);\n R = 16;\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\n input = input.substring(1);\n R = 8;\n }\n\n if (input === \"\") {\n return 0;\n }\n\n let regex = /[^0-7]/;\n if (R === 10) {\n regex = /[^0-9]/;\n }\n if (R === 16) {\n regex = /[^0-9A-Fa-f]/;\n }\n\n if (regex.test(input)) {\n return failure;\n }\n\n return parseInt(input, R);\n}\n\nfunction parseIPv4(input) {\n const parts = input.split(\".\");\n if (parts[parts.length - 1] === \"\") {\n if (parts.length > 1) {\n parts.pop();\n }\n }\n\n if (parts.length > 4) {\n return input;\n }\n\n const numbers = [];\n for (const part of parts) {\n if (part === \"\") {\n return input;\n }\n const n = parseIPv4Number(part);\n if (n === failure) {\n return input;\n }\n\n numbers.push(n);\n }\n\n for (let i = 0; i < numbers.length - 1; ++i) {\n if (numbers[i] > 255) {\n return failure;\n }\n }\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\n return failure;\n }\n\n let ipv4 = numbers.pop();\n let counter = 0;\n\n for (const n of numbers) {\n ipv4 += n * Math.pow(256, 3 - counter);\n ++counter;\n }\n\n return ipv4;\n}\n\nfunction serializeIPv4(address) {\n let output = \"\";\n let n = address;\n\n for (let i = 1; i <= 4; ++i) {\n output = String(n % 256) + output;\n if (i !== 4) {\n output = \".\" + output;\n }\n n = Math.floor(n / 256);\n }\n\n return output;\n}\n\nfunction parseIPv6(input) {\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\n let pieceIndex = 0;\n let compress = null;\n let pointer = 0;\n\n input = punycode.ucs2.decode(input);\n\n if (input[pointer] === 58) {\n if (input[pointer + 1] !== 58) {\n return failure;\n }\n\n pointer += 2;\n ++pieceIndex;\n compress = pieceIndex;\n }\n\n while (pointer < input.length) {\n if (pieceIndex === 8) {\n return failure;\n }\n\n if (input[pointer] === 58) {\n if (compress !== null) {\n return failure;\n }\n ++pointer;\n ++pieceIndex;\n compress = pieceIndex;\n continue;\n }\n\n let value = 0;\n let length = 0;\n\n while (length < 4 && infra.isASCIIHex(input[pointer])) {\n value = value * 0x10 + parseInt(at(input, pointer), 16);\n ++pointer;\n ++length;\n }\n\n if (input[pointer] === 46) {\n if (length === 0) {\n return failure;\n }\n\n pointer -= length;\n\n if (pieceIndex > 6) {\n return failure;\n }\n\n let numbersSeen = 0;\n\n while (input[pointer] !== undefined) {\n let ipv4Piece = null;\n\n if (numbersSeen > 0) {\n if (input[pointer] === 46 && numbersSeen < 4) {\n ++pointer;\n } else {\n return failure;\n }\n }\n\n if (!infra.isASCIIDigit(input[pointer])) {\n return failure;\n }\n\n while (infra.isASCIIDigit(input[pointer])) {\n const number = parseInt(at(input, pointer));\n if (ipv4Piece === null) {\n ipv4Piece = number;\n } else if (ipv4Piece === 0) {\n return failure;\n } else {\n ipv4Piece = ipv4Piece * 10 + number;\n }\n if (ipv4Piece > 255) {\n return failure;\n }\n ++pointer;\n }\n\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\n\n ++numbersSeen;\n\n if (numbersSeen === 2 || numbersSeen === 4) {\n ++pieceIndex;\n }\n }\n\n if (numbersSeen !== 4) {\n return failure;\n }\n\n break;\n } else if (input[pointer] === 58) {\n ++pointer;\n if (input[pointer] === undefined) {\n return failure;\n }\n } else if (input[pointer] !== undefined) {\n return failure;\n }\n\n address[pieceIndex] = value;\n ++pieceIndex;\n }\n\n if (compress !== null) {\n let swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex !== 0 && swaps > 0) {\n const temp = address[compress + swaps - 1];\n address[compress + swaps - 1] = address[pieceIndex];\n address[pieceIndex] = temp;\n --pieceIndex;\n --swaps;\n }\n } else if (compress === null && pieceIndex !== 8) {\n return failure;\n }\n\n return address;\n}\n\nfunction serializeIPv6(address) {\n let output = \"\";\n const seqResult = findLongestZeroSequence(address);\n const compress = seqResult.idx;\n let ignore0 = false;\n\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\n if (ignore0 && address[pieceIndex] === 0) {\n continue;\n } else if (ignore0) {\n ignore0 = false;\n }\n\n if (compress === pieceIndex) {\n const separator = pieceIndex === 0 ? \"::\" : \":\";\n output += separator;\n ignore0 = true;\n continue;\n }\n\n output += address[pieceIndex].toString(16);\n\n if (pieceIndex !== 7) {\n output += \":\";\n }\n }\n\n return output;\n}\n\nfunction parseHost(input, isNotSpecialArg = false) {\n if (input[0] === \"[\") {\n if (input[input.length - 1] !== \"]\") {\n return failure;\n }\n\n return parseIPv6(input.substring(1, input.length - 1));\n }\n\n if (isNotSpecialArg) {\n return parseOpaqueHost(input);\n }\n\n const domain = percentDecode(Buffer.from(input)).toString();\n const asciiDomain = domainToASCII(domain);\n if (asciiDomain === failure) {\n return failure;\n }\n\n if (containsForbiddenHostCodePoint(asciiDomain)) {\n return failure;\n }\n\n const ipv4Host = parseIPv4(asciiDomain);\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\n return ipv4Host;\n }\n\n return asciiDomain;\n}\n\nfunction parseOpaqueHost(input) {\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\n return failure;\n }\n\n let output = \"\";\n const decoded = punycode.ucs2.decode(input);\n for (let i = 0; i < decoded.length; ++i) {\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\n }\n return output;\n}\n\nfunction findLongestZeroSequence(arr) {\n let maxIdx = null;\n let maxLen = 1; // only find elements > 1\n let currStart = null;\n let currLen = 0;\n\n for (let i = 0; i < arr.length; ++i) {\n if (arr[i] !== 0) {\n if (currLen > maxLen) {\n maxIdx = currStart;\n maxLen = currLen;\n }\n\n currStart = null;\n currLen = 0;\n } else {\n if (currStart === null) {\n currStart = i;\n }\n ++currLen;\n }\n }\n\n // if trailing zeros\n if (currLen > maxLen) {\n maxIdx = currStart;\n maxLen = currLen;\n }\n\n return {\n idx: maxIdx,\n len: maxLen\n };\n}\n\nfunction serializeHost(host) {\n if (typeof host === \"number\") {\n return serializeIPv4(host);\n }\n\n // IPv6 serializer\n if (host instanceof Array) {\n return \"[\" + serializeIPv6(host) + \"]\";\n }\n\n return host;\n}\n\nfunction domainToASCII(domain, beStrict = false) {\n const result = tr46.toASCII(domain, {\n checkBidi: true,\n checkHyphens: false,\n checkJoiners: true,\n useSTD3ASCIIRules: beStrict,\n verifyDNSLength: beStrict\n });\n if (result === null) {\n return failure;\n }\n return result;\n}\n\nfunction trimControlChars(url) {\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\n}\n\nfunction trimTabAndNewline(url) {\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\n}\n\nfunction shortenPath(url) {\n const { path } = url;\n if (path.length === 0) {\n return;\n }\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\n return;\n }\n\n path.pop();\n}\n\nfunction includesCredentials(url) {\n return url.username !== \"\" || url.password !== \"\";\n}\n\nfunction cannotHaveAUsernamePasswordPort(url) {\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\n}\n\nfunction isNormalizedWindowsDriveLetter(string) {\n return /^[A-Za-z]:$/.test(string);\n}\n\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\n this.pointer = 0;\n this.input = input;\n this.base = base || null;\n this.encodingOverride = encodingOverride || \"utf-8\";\n this.stateOverride = stateOverride;\n this.url = url;\n this.failure = false;\n this.parseError = false;\n\n if (!this.url) {\n this.url = {\n scheme: \"\",\n username: \"\",\n password: \"\",\n host: null,\n port: null,\n path: [],\n query: null,\n fragment: null,\n\n cannotBeABaseURL: false\n };\n\n const res = trimControlChars(this.input);\n if (res !== this.input) {\n this.parseError = true;\n }\n this.input = res;\n }\n\n const res = trimTabAndNewline(this.input);\n if (res !== this.input) {\n this.parseError = true;\n }\n this.input = res;\n\n this.state = stateOverride || \"scheme start\";\n\n this.buffer = \"\";\n this.atFlag = false;\n this.arrFlag = false;\n this.passwordTokenSeenFlag = false;\n\n this.input = punycode.ucs2.decode(this.input);\n\n for (; this.pointer <= this.input.length; ++this.pointer) {\n const c = this.input[this.pointer];\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\n\n // exec state machine\n const ret = this[\"parse \" + this.state](c, cStr);\n if (!ret) {\n break; // terminate algorithm\n } else if (ret === failure) {\n this.failure = true;\n break;\n }\n }\n}\n\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\n if (infra.isASCIIAlpha(c)) {\n this.buffer += cStr.toLowerCase();\n this.state = \"scheme\";\n } else if (!this.stateOverride) {\n this.state = \"no scheme\";\n --this.pointer;\n } else {\n this.parseError = true;\n return failure;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\n if (infra.isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\n this.buffer += cStr.toLowerCase();\n } else if (c === 58) {\n if (this.stateOverride) {\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\n return false;\n }\n\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\n return false;\n }\n\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\n return false;\n }\n\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\n return false;\n }\n }\n this.url.scheme = this.buffer;\n if (this.stateOverride) {\n if (this.url.port === defaultPort(this.url.scheme)) {\n this.url.port = null;\n }\n return false;\n }\n this.buffer = \"\";\n if (this.url.scheme === \"file\") {\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\n this.parseError = true;\n }\n this.state = \"file\";\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\n this.state = \"special relative or authority\";\n } else if (isSpecial(this.url)) {\n this.state = \"special authority slashes\";\n } else if (this.input[this.pointer + 1] === 47) {\n this.state = \"path or authority\";\n ++this.pointer;\n } else {\n this.url.cannotBeABaseURL = true;\n this.url.path.push(\"\");\n this.state = \"cannot-be-a-base-URL path\";\n }\n } else if (!this.stateOverride) {\n this.buffer = \"\";\n this.state = \"no scheme\";\n this.pointer = -1;\n } else {\n this.parseError = true;\n return failure;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\n return failure;\n } else if (this.base.cannotBeABaseURL && c === 35) {\n this.url.scheme = this.base.scheme;\n this.url.path = this.base.path.slice();\n this.url.query = this.base.query;\n this.url.fragment = \"\";\n this.url.cannotBeABaseURL = true;\n this.state = \"fragment\";\n } else if (this.base.scheme === \"file\") {\n this.state = \"file\";\n --this.pointer;\n } else {\n this.state = \"relative\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\n if (c === 47 && this.input[this.pointer + 1] === 47) {\n this.state = \"special authority ignore slashes\";\n ++this.pointer;\n } else {\n this.parseError = true;\n this.state = \"relative\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\n if (c === 47) {\n this.state = \"authority\";\n } else {\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\n this.url.scheme = this.base.scheme;\n if (isNaN(c)) {\n this.url.username = this.base.username;\n this.url.password = this.base.password;\n this.url.host = this.base.host;\n this.url.port = this.base.port;\n this.url.path = this.base.path.slice();\n this.url.query = this.base.query;\n } else if (c === 47) {\n this.state = \"relative slash\";\n } else if (c === 63) {\n this.url.username = this.base.username;\n this.url.password = this.base.password;\n this.url.host = this.base.host;\n this.url.port = this.base.port;\n this.url.path = this.base.path.slice();\n this.url.query = \"\";\n this.state = \"query\";\n } else if (c === 35) {\n this.url.username = this.base.username;\n this.url.password = this.base.password;\n this.url.host = this.base.host;\n this.url.port = this.base.port;\n this.url.path = this.base.path.slice();\n this.url.query = this.base.query;\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else if (isSpecial(this.url) && c === 92) {\n this.parseError = true;\n this.state = \"relative slash\";\n } else {\n this.url.username = this.base.username;\n this.url.password = this.base.password;\n this.url.host = this.base.host;\n this.url.port = this.base.port;\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\n\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\n if (c === 92) {\n this.parseError = true;\n }\n this.state = \"special authority ignore slashes\";\n } else if (c === 47) {\n this.state = \"authority\";\n } else {\n this.url.username = this.base.username;\n this.url.password = this.base.password;\n this.url.host = this.base.host;\n this.url.port = this.base.port;\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\n if (c === 47 && this.input[this.pointer + 1] === 47) {\n this.state = \"special authority ignore slashes\";\n ++this.pointer;\n } else {\n this.parseError = true;\n this.state = \"special authority ignore slashes\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\n if (c !== 47 && c !== 92) {\n this.state = \"authority\";\n --this.pointer;\n } else {\n this.parseError = true;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\n if (c === 64) {\n this.parseError = true;\n if (this.atFlag) {\n this.buffer = \"%40\" + this.buffer;\n }\n this.atFlag = true;\n\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\n const len = countSymbols(this.buffer);\n for (let pointer = 0; pointer < len; ++pointer) {\n const codePoint = this.buffer.codePointAt(pointer);\n\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\n this.passwordTokenSeenFlag = true;\n continue;\n }\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\n if (this.passwordTokenSeenFlag) {\n this.url.password += encodedCodePoints;\n } else {\n this.url.username += encodedCodePoints;\n }\n }\n this.buffer = \"\";\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\n (isSpecial(this.url) && c === 92)) {\n if (this.atFlag && this.buffer === \"\") {\n this.parseError = true;\n return failure;\n }\n this.pointer -= countSymbols(this.buffer) + 1;\n this.buffer = \"\";\n this.state = \"host\";\n } else {\n this.buffer += cStr;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse hostname\"] =\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\n if (this.stateOverride && this.url.scheme === \"file\") {\n --this.pointer;\n this.state = \"file host\";\n } else if (c === 58 && !this.arrFlag) {\n if (this.buffer === \"\") {\n this.parseError = true;\n return failure;\n }\n\n const host = parseHost(this.buffer, isNotSpecial(this.url));\n if (host === failure) {\n return failure;\n }\n\n this.url.host = host;\n this.buffer = \"\";\n this.state = \"port\";\n if (this.stateOverride === \"hostname\") {\n return false;\n }\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\n (isSpecial(this.url) && c === 92)) {\n --this.pointer;\n if (isSpecial(this.url) && this.buffer === \"\") {\n this.parseError = true;\n return failure;\n } else if (this.stateOverride && this.buffer === \"\" &&\n (includesCredentials(this.url) || this.url.port !== null)) {\n this.parseError = true;\n return false;\n }\n\n const host = parseHost(this.buffer, isNotSpecial(this.url));\n if (host === failure) {\n return failure;\n }\n\n this.url.host = host;\n this.buffer = \"\";\n this.state = \"path start\";\n if (this.stateOverride) {\n return false;\n }\n } else {\n if (c === 91) {\n this.arrFlag = true;\n } else if (c === 93) {\n this.arrFlag = false;\n }\n this.buffer += cStr;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\n if (infra.isASCIIDigit(c)) {\n this.buffer += cStr;\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\n (isSpecial(this.url) && c === 92) ||\n this.stateOverride) {\n if (this.buffer !== \"\") {\n const port = parseInt(this.buffer);\n if (port > Math.pow(2, 16) - 1) {\n this.parseError = true;\n return failure;\n }\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\n this.buffer = \"\";\n }\n if (this.stateOverride) {\n return false;\n }\n this.state = \"path start\";\n --this.pointer;\n } else {\n this.parseError = true;\n return failure;\n }\n\n return true;\n};\n\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\n\nfunction startsWithWindowsDriveLetter(input, pointer) {\n const length = input.length - pointer;\n return length >= 2 &&\n isWindowsDriveLetterCodePoints(input[pointer], input[pointer + 1]) &&\n (length === 2 || fileOtherwiseCodePoints.has(input[pointer + 2]));\n}\n\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\n this.url.scheme = \"file\";\n\n if (c === 47 || c === 92) {\n if (c === 92) {\n this.parseError = true;\n }\n this.state = \"file slash\";\n } else if (this.base !== null && this.base.scheme === \"file\") {\n if (isNaN(c)) {\n this.url.host = this.base.host;\n this.url.path = this.base.path.slice();\n this.url.query = this.base.query;\n } else if (c === 63) {\n this.url.host = this.base.host;\n this.url.path = this.base.path.slice();\n this.url.query = \"\";\n this.state = \"query\";\n } else if (c === 35) {\n this.url.host = this.base.host;\n this.url.path = this.base.path.slice();\n this.url.query = this.base.query;\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else {\n if (!startsWithWindowsDriveLetter(this.input, this.pointer)) {\n this.url.host = this.base.host;\n this.url.path = this.base.path.slice();\n shortenPath(this.url);\n } else {\n this.parseError = true;\n }\n\n this.state = \"path\";\n --this.pointer;\n }\n } else {\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\n if (c === 47 || c === 92) {\n if (c === 92) {\n this.parseError = true;\n }\n this.state = \"file host\";\n } else {\n if (this.base !== null && this.base.scheme === \"file\" &&\n !startsWithWindowsDriveLetter(this.input, this.pointer)) {\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\n this.url.path.push(this.base.path[0]);\n } else {\n this.url.host = this.base.host;\n }\n }\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\n --this.pointer;\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\n this.parseError = true;\n this.state = \"path\";\n } else if (this.buffer === \"\") {\n this.url.host = \"\";\n if (this.stateOverride) {\n return false;\n }\n this.state = \"path start\";\n } else {\n let host = parseHost(this.buffer, isNotSpecial(this.url));\n if (host === failure) {\n return failure;\n }\n if (host === \"localhost\") {\n host = \"\";\n }\n this.url.host = host;\n\n if (this.stateOverride) {\n return false;\n }\n\n this.buffer = \"\";\n this.state = \"path start\";\n }\n } else {\n this.buffer += cStr;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\n if (isSpecial(this.url)) {\n if (c === 92) {\n this.parseError = true;\n }\n this.state = \"path\";\n\n if (c !== 47 && c !== 92) {\n --this.pointer;\n }\n } else if (!this.stateOverride && c === 63) {\n this.url.query = \"\";\n this.state = \"query\";\n } else if (!this.stateOverride && c === 35) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else if (c !== undefined) {\n this.state = \"path\";\n if (c !== 47) {\n --this.pointer;\n }\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\n (!this.stateOverride && (c === 63 || c === 35))) {\n if (isSpecial(this.url) && c === 92) {\n this.parseError = true;\n }\n\n if (isDoubleDot(this.buffer)) {\n shortenPath(this.url);\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\n this.url.path.push(\"\");\n }\n } else if (isSingleDot(this.buffer) && c !== 47 &&\n !(isSpecial(this.url) && c === 92)) {\n this.url.path.push(\"\");\n } else if (!isSingleDot(this.buffer)) {\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\n if (this.url.host !== \"\" && this.url.host !== null) {\n this.parseError = true;\n this.url.host = \"\";\n }\n this.buffer = this.buffer[0] + \":\";\n }\n this.url.path.push(this.buffer);\n }\n this.buffer = \"\";\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\n this.parseError = true;\n this.url.path.shift();\n }\n }\n if (c === 63) {\n this.url.query = \"\";\n this.state = \"query\";\n }\n if (c === 35) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n }\n } else {\n // TODO: If c is not a URL code point and not \"%\", parse error.\n\n if (c === 37 &&\n (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n this.parseError = true;\n }\n\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\n if (c === 63) {\n this.url.query = \"\";\n this.state = \"query\";\n } else if (c === 35) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else {\n // TODO: Add: not a URL code point\n if (!isNaN(c) && c !== 37) {\n this.parseError = true;\n }\n\n if (c === 37 &&\n (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n this.parseError = true;\n }\n\n if (!isNaN(c)) {\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\n }\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\n this.encodingOverride = \"utf-8\";\n }\n\n const buffer = Buffer.from(this.buffer); // TODO: Use encoding override instead\n for (let i = 0; i < buffer.length; ++i) {\n if (buffer[i] < 0x21 ||\n buffer[i] > 0x7E ||\n buffer[i] === 0x22 || buffer[i] === 0x23 || buffer[i] === 0x3C || buffer[i] === 0x3E ||\n (buffer[i] === 0x27 && isSpecial(this.url))) {\n this.url.query += percentEncode(buffer[i]);\n } else {\n this.url.query += String.fromCodePoint(buffer[i]);\n }\n }\n\n this.buffer = \"\";\n if (c === 35) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n }\n } else {\n // TODO: If c is not a URL code point and not \"%\", parse error.\n if (c === 37 &&\n (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n this.parseError = true;\n }\n\n this.buffer += cStr;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\n if (isNaN(c)) { // do nothing\n } else if (c === 0x0) {\n this.parseError = true;\n } else {\n // TODO: If c is not a URL code point and not \"%\", parse error.\n if (c === 37 &&\n (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n this.parseError = true;\n }\n\n this.url.fragment += percentEncodeChar(c, isFragmentPercentEncode);\n }\n\n return true;\n};\n\nfunction serializeURL(url, excludeFragment) {\n let output = url.scheme + \":\";\n if (url.host !== null) {\n output += \"//\";\n\n if (url.username !== \"\" || url.password !== \"\") {\n output += url.username;\n if (url.password !== \"\") {\n output += \":\" + url.password;\n }\n output += \"@\";\n }\n\n output += serializeHost(url.host);\n\n if (url.port !== null) {\n output += \":\" + url.port;\n }\n } else if (url.host === null && url.scheme === \"file\") {\n output += \"//\";\n }\n\n if (url.cannotBeABaseURL) {\n output += url.path[0];\n } else {\n for (const string of url.path) {\n output += \"/\" + string;\n }\n }\n\n if (url.query !== null) {\n output += \"?\" + url.query;\n }\n\n if (!excludeFragment && url.fragment !== null) {\n output += \"#\" + url.fragment;\n }\n\n return output;\n}\n\nfunction serializeOrigin(tuple) {\n let result = tuple.scheme + \"://\";\n result += serializeHost(tuple.host);\n\n if (tuple.port !== null) {\n result += \":\" + tuple.port;\n }\n\n return result;\n}\n\nmodule.exports.serializeURL = serializeURL;\n\nmodule.exports.serializeURLOrigin = function (url) {\n // https://url.spec.whatwg.org/#concept-url-origin\n switch (url.scheme) {\n case \"blob\":\n try {\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\n } catch (e) {\n // serializing an opaque origin returns \"null\"\n return \"null\";\n }\n case \"ftp\":\n case \"gopher\":\n case \"http\":\n case \"https\":\n case \"ws\":\n case \"wss\":\n return serializeOrigin({\n scheme: url.scheme,\n host: url.host,\n port: url.port\n });\n case \"file\":\n // spec says \"exercise to the reader\", chrome says \"file://\"\n return \"file://\";\n default:\n // serializing an opaque origin returns \"null\"\n return \"null\";\n }\n};\n\nmodule.exports.basicURLParse = function (input, options) {\n if (options === undefined) {\n options = {};\n }\n\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\n if (usm.failure) {\n return null;\n }\n\n return usm.url;\n};\n\nmodule.exports.setTheUsername = function (url, username) {\n url.username = \"\";\n const decoded = punycode.ucs2.decode(username);\n for (let i = 0; i < decoded.length; ++i) {\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\n }\n};\n\nmodule.exports.setThePassword = function (url, password) {\n url.password = \"\";\n const decoded = punycode.ucs2.decode(password);\n for (let i = 0; i < decoded.length; ++i) {\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\n }\n};\n\nmodule.exports.serializeHost = serializeHost;\n\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\n\nmodule.exports.serializeInteger = function (integer) {\n return String(integer);\n};\n\nmodule.exports.parseURL = function (input, options) {\n if (options === undefined) {\n options = {};\n }\n\n // We don't handle blobs, so this just delegates:\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/whatwg-url/lib/url-state-machine.js\n// module id = 10\n// module chunks = 0","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/buffer/index.js\n// module id = 8\n// module chunks = 0"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 300);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap f351aaa0c11344a13b51","var core = module.exports = { version: '2.5.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_core.js\n// module id = 0\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 1\n// module chunks = 0","'use strict'\nconst ClassOrder = require('./class-order')\nconst Node = require('./node')\n\n/**\n * @class NamedNode\n * @extends Node\n */\nclass NamedNode extends Node {\n /**\n * @constructor\n * @param iri {String}\n */\n constructor (iri) {\n super()\n this.termType = NamedNode.termType\n\n if (iri && iri.termType === NamedNode.termType) { // param is a named node\n iri = iri.value\n }\n\n if (!iri) {\n throw new Error('Missing IRI for NamedNode')\n }\n\n if (!iri.includes(':')) {\n throw new Error('NamedNode IRI \"' + iri + '\" must be absolute.')\n }\n\n if (iri.includes(' ')) {\n var message = 'Error: NamedNode IRI \"' + iri + '\" must not contain unencoded spaces.'\n throw new Error(message)\n }\n\n this.value = iri\n }\n /**\n * Returns an $rdf node for the containing directory, ending in slash.\n */\n dir () {\n var str = this.uri.split('#')[0]\n var p = str.slice(0, -1).lastIndexOf('/')\n var q = str.indexOf('//')\n if ((q >= 0 && p < q + 2) || p < 0) return null\n return new NamedNode(str.slice(0, p + 1))\n }\n /**\n * Returns an NN for the whole web site, ending in slash.\n * Contrast with the \"origin\" which does NOT have a trailing slash\n */\n site () {\n var str = this.uri.split('#')[0]\n var p = str.indexOf('//')\n if (p < 0) throw new Error('This URI does not have a web site part (origin)')\n var q = str.indexOf('/', p+2)\n if (q < 0) throw new Error('This URI does not have a web site part. (origin)')\n return new NamedNode(str.slice(0, q + 1))\n }\n doc () {\n if (this.uri.indexOf('#') < 0) {\n return this\n } else {\n return new NamedNode(this.uri.split('#')[0])\n }\n }\n toString () {\n return '<' + this.uri + '>'\n }\n\n /**\n * Legacy getter and setter alias, node.uri\n */\n get uri () {\n return this.value\n }\n set uri (uri) {\n this.value = uri\n }\n static fromValue (value) {\n if (typeof value === 'undefined' || value === null) {\n return value\n }\n const isNode = value && value.termType\n if (isNode) {\n return value\n }\n return new NamedNode(value)\n }\n}\nNamedNode.termType = 'NamedNode'\nNamedNode.prototype.classOrder = ClassOrder['NamedNode']\nNamedNode.prototype.isVar = 0\n\nmodule.exports = NamedNode\n\n\n\n// WEBPACK FOOTER //\n// ./src/named-node.js","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_global.js\n// module id = 3\n// module chunks = 0","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_wks.js\n// module id = 4\n// module chunks = 0","'use strict';\n\nmodule.exports = {\n Formats: require('./Formats'),\n Initializer: require('./Initializer'),\n JSONDocument: require('./JSONDocument'),\n JSONMapping: require('./JSONMapping'),\n JSONPatch: require('./JSONPatch'),\n JSONPointer: require('./JSONPointer'),\n JSONSchema: require('./JSONSchema'),\n Validator: require('./Validator')\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@trust/json-document/lib/index.js\n// module id = 5\n// module chunks = 0","'use strict'\n/**\n * The superclass of all RDF Statement objects, that is\n * NamedNode, Literal, BlankNode, etc.\n * @class Node\n */\nclass Node {\n substitute (bindings) {\n console.log('@@@ node substitute' + this)\n return this\n }\n compareTerm (other) {\n if (this.classOrder < other.classOrder) {\n return -1\n }\n if (this.classOrder > other.classOrder) {\n return +1\n }\n if (this.value < other.value) {\n return -1\n }\n if (this.value > other.value) {\n return +1\n }\n return 0\n }\n equals (other) {\n if (!other) {\n return false\n }\n return (this.termType === other.termType) &&\n (this.value === other.value)\n }\n hashString () {\n return this.toCanonical()\n }\n sameTerm (other) {\n return this.equals(other)\n }\n toCanonical () {\n return this.toNT()\n }\n toNT () {\n return this.toString()\n }\n toString () {\n throw new Error('Node.toString() is abstract - see the subclasses instead')\n }\n}\nmodule.exports = Node\n\n/**\n * Creates an RDF Node from a native javascript value.\n * RDF Nodes are returned unchanged, undefined returned as itself.\n * @method fromValue\n * @static\n * @param value {Node|Date|String|Number|Boolean|Undefined}\n * @return {Node|Collection}\n */\nNode.fromValue = function fromValue (value) {\n const Collection = require('./collection')\n const Literal = require('./literal')\n const NamedNode = require('./named-node')\n if (typeof value === 'undefined' || value === null) {\n return value\n }\n const isNode = value && value.termType\n if (isNode) { // a Node subclass or a Collection\n return value\n }\n if (Array.isArray(value)) {\n return new Collection(value)\n }\n return Literal.fromValue(value)\n}\n\nNode.toJS = function fromJS (term) {\n if (term.elements) {\n return term.elements.map(Node.toJS) // Array node (not standard RDFJS)\n }\n if (!term.datatype) return term // Objects remain objects\n if (term.datatype.equals(ns.xsd('boolean'))) {\n return term.value === '1'\n }\n if (term.datatype.equals(ns.xsd('dateTime')) ||\n term.datatype.equals(ns.xsd('date'))) {\n return new Date(term.value)\n }\n if (\n term.datatype.equals(ns.xsd('integer')) ||\n term.datatype.equals(ns.xsd('float')) ||\n term.datatype.equals(ns.xsd('decimal'))\n ) {\n return Number(term.value)\n }\n return term.value\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/node.js","/*\n * Implements URI-specific functions\n *\n * See RFC 2386\n *\n * See also:\n * http://www.w3.org/2005/10/ajaw/uri.js\n * http://www.w3.org/2000/10/swap/uripath.py\n *\n */\nvar alert = alert || console.log\n\nmodule.exports.docpart = docpart\nmodule.exports.document = document\nmodule.exports.hostpart = hostpart\nmodule.exports.join = join\nmodule.exports.protocol = protocol\nmodule.exports.refTo = refTo\n\nconst NamedNode = require('./named-node')\n\nfunction docpart (uri) {\n var i\n i = uri.indexOf('#')\n if (i < 0) {\n return uri\n } else {\n return uri.slice(0, i)\n }\n}\n\nfunction document (x) {\n return new NamedNode(docpart(x.uri))\n}\n\nfunction hostpart (u) {\n var m = /[^\\/]*\\/\\/([^\\/]*)\\//.exec(u)\n if (m) {\n return m[1]\n } else {\n return ''\n }\n}\n\nfunction join (given, base) {\n var baseColon, baseScheme, baseSingle\n var colon, lastSlash, path\n var baseHash = base.indexOf('#')\n if (baseHash > 0) {\n base = base.slice(0, baseHash)\n }\n if (given.length === 0) {\n return base\n }\n if (given.indexOf('#') === 0) {\n return base + given\n }\n colon = given.indexOf(':')\n if (colon >= 0) {\n return given\n }\n baseColon = base.indexOf(':')\n if (base.length === 0) {\n return given\n }\n if (baseColon < 0) {\n alert('Invalid base: ' + base + ' in join with given: ' + given)\n return given\n }\n baseScheme = base.slice(0, +baseColon + 1 || 9e9)\n if (given.indexOf('//') === 0) {\n return baseScheme + given\n }\n if (base.indexOf('//', baseColon) === baseColon + 1) {\n baseSingle = base.indexOf('/', baseColon + 3)\n if (baseSingle < 0) {\n if (base.length - baseColon - 3 > 0) {\n return base + '/' + given\n } else {\n return baseScheme + given\n }\n }\n } else {\n baseSingle = base.indexOf('/', baseColon + 1)\n if (baseSingle < 0) {\n if (base.length - baseColon - 1 > 0) {\n return base + '/' + given\n } else {\n return baseScheme + given\n }\n }\n }\n if (given.indexOf('/') === 0) {\n return base.slice(0, baseSingle) + given\n }\n path = base.slice(baseSingle)\n lastSlash = path.lastIndexOf('/')\n if (lastSlash < 0) {\n return baseScheme + given\n }\n if (lastSlash >= 0 && lastSlash < path.length - 1) {\n path = path.slice(0, +lastSlash + 1 || 9e9)\n }\n path += given\n while (path.match(/[^\\/]*\\/\\.\\.\\//)) {\n path = path.replace(/[^\\/]*\\/\\.\\.\\//, '')\n }\n path = path.replace(/\\.\\//g, '')\n path = path.replace(/\\/\\.$/, '/')\n return base.slice(0, baseSingle) + path\n}\n\nfunction protocol (uri) {\n var i\n i = uri.indexOf(':')\n if (i < 0) {\n return null\n } else {\n return uri.slice(0, i)\n }\n}\n\nfunction refTo (base, uri) {\n var c, i, k, l, len, len1, n, o, p, q, ref, ref1, s\n var commonHost = new RegExp('^[-_a-zA-Z0-9.]+:(//[^/]*)?/[^/]*$')\n if (!base) {\n return uri\n }\n if (base === uri) {\n return ''\n }\n for (i = o = 0, len = uri.length; o < len; i = ++o) {\n c = uri[i]\n if (c !== base[i]) {\n break\n }\n }\n if (base.slice(0, i).match(commonHost)) {\n k = uri.indexOf('//')\n if (k < 0) {\n k = -2\n }\n l = uri.indexOf('/', k + 2)\n if (uri[l + 1] !== '/' && base[l + 1] !== '/' && uri.slice(0, l) === base.slice(0, l)) {\n return uri.slice(l)\n }\n }\n if (uri[i] === '#' && base.length === i) {\n return uri.slice(i)\n }\n while (i > 0 && uri[i - 1] !== '/') {\n i--\n }\n if (i < 3) {\n return uri\n }\n if (base.indexOf('//', i - 2) > 0 || uri.indexOf('//', i - 2) > 0) {\n return uri\n }\n if (base.indexOf(':', i) > 0) {\n return uri\n }\n n = 0\n ref = base.slice(i)\n for (p = 0, len1 = ref.length; p < len1; p++) {\n c = ref[p]\n if (c === '/') {\n n++\n }\n }\n if (n === 0 && i < uri.length && uri[i] === '#') {\n return './' + uri.slice(i)\n }\n if (n === 0 && i === uri.length) {\n return './'\n }\n s = ''\n if (n > 0) {\n for (q = 1, ref1 = n; ref1 >= 1 ? q <= ref1 : q >= ref1; ref1 >= 1 ? ++q : --q) {\n s += '../'\n }\n }\n return s + uri.slice(i)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/uri.js","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_export.js\n// module id = 9\n// module chunks = 0","/**\n * Utility functions for $rdf\n * @module util\n */\nvar docpart = require('./uri').docpart\nvar log = require('./log')\nvar NamedNode = require('./named-node')\n\nmodule.exports.AJAR_handleNewTerm = ajarHandleNewTerm\nmodule.exports.ArrayIndexOf = arrayIndexOf\nmodule.exports.callbackify = callbackify\nmodule.exports.dtstamp = dtstamp\nmodule.exports.DOMParserFactory = domParser\nmodule.exports.domToString = domToString\nmodule.exports.dumpNode = dumpNode\nmodule.exports.heavyCompare = heavyCompare\nmodule.exports.heavyCompareSPO = heavyCompareSPO\nmodule.exports.output = output\nmodule.exports.parseXML = parseXML\nmodule.exports.RDFArrayRemove = rdfArrayRemove\nmodule.exports.stackString = stackString\nmodule.exports.string_startswith = stringStartsWith\nmodule.exports.string = {}\nmodule.exports.string.template = stringTemplate\nmodule.exports.uri = require('./uri') // TODO: Remove this mixed usage\nmodule.exports.log = log\n\nmodule.exports.mediaTypeClass = function(mediaType){\n mediaType = mediaType.split(';')[0].trim() // remove media type parameters\n return new NamedNode('http://www.w3.org/ns/iana/media-types/' + mediaType + '#Resource')\n}\n\nmodule.exports.linkRelationProperty = function(relation){\n return new NamedNode('http://www.w3.org/ns/iana/link-relations/relation#' + relation.trim())\n}\n\n/**\n * Loads ontologies of the data we load (this is the callback from the kb to\n * the fetcher). Exports as `AJAR_handleNewTerm`\n */\nfunction ajarHandleNewTerm (kb, p, requestedBy) {\n var sf = null\n if (typeof kb.fetcher !== 'undefined') {\n sf = kb.fetcher\n } else {\n return\n }\n if (p.termType !== 'NamedNode') return\n var docuri = docpart(p.uri)\n var fixuri\n if (p.uri.indexOf('#') < 0) { // No hash\n // @@ major hack for dbpedia Categories, which spread indefinitely\n if (stringStartsWith(p.uri, 'http://dbpedia.org/resource/Category:')) return\n\n /*\n if (string_startswith(p.uri, 'http://xmlns.com/foaf/0.1/')) {\n fixuri = \"http://dig.csail.mit.edu/2005/ajar/ajaw/test/foaf\"\n // should give HTTP 303 to ontology -- now is :-)\n } else\n */\n if (stringStartsWith(p.uri,\n 'http://purl.org/dc/elements/1.1/') ||\n stringStartsWith(p.uri, 'http://purl.org/dc/terms/')) {\n fixuri = 'http://dublincore.org/2005/06/13/dcq'\n // dc fetched multiple times\n } else if (stringStartsWith(p.uri, 'http://xmlns.com/wot/0.1/')) {\n fixuri = 'http://xmlns.com/wot/0.1/index.rdf'\n } else if (stringStartsWith(p.uri, 'http://web.resource.org/cc/')) {\n // log.warn(\"creative commons links to html instead of rdf. doesn't seem to content-negotiate.\")\n fixuri = 'http://web.resource.org/cc/schema.rdf'\n }\n }\n if (fixuri) {\n docuri = fixuri\n }\n if (sf && sf.getState(docuri) !== 'unrequested') return\n\n if (fixuri) { // only give warning once: else happens too often\n log.warn('Assuming server still broken, faking redirect of <' + p.uri +\n '> to <' + docuri + '>')\n }\n\n return sf.fetch(docuri, { referringTerm: requestedBy })\n}\n\n/**\n * Exports as `ArrayIndexOf`.\n */\nfunction arrayIndexOf (arr, item, i) {\n i || (i = 0)\n var length = arr.length\n if (i < 0) i = length + i\n for (; i < length; i++) {\n if (arr[i] === item) {\n return i\n }\n }\n return -1\n}\n\n/**\n * Adds callback functionality to an object.\n * Callback functions are indexed by a 'hook' string.\n * They return true if they want to be called again.\n * @method callbackify\n * @param obj {Object}\n * @param callbacks {Array<Function>}\n */\nfunction callbackify (obj, callbacks) {\n obj.callbacks = {}\n for (var x = callbacks.length - 1; x >= 0; x--) {\n obj.callbacks[callbacks[x]] = []\n }\n\n obj.addHook = function (hook) {\n if (!obj.callbacks[hook]) {\n obj.callbacks[hook] = []\n }\n }\n\n obj.addCallback = function (hook, func) {\n obj.callbacks[hook].push(func)\n }\n\n obj.removeCallback = function (hook, funcName) {\n for (var i = 0;i < obj.callbacks[hook].length;i++) {\n if (obj.callbacks[hook][i].name === funcName) {\n obj.callbacks[hook].splice(i, 1)\n return true\n }\n }\n return false\n }\n\n obj.insertCallback = function (hook, func) {\n obj.callbacks[hook].unshift(func)\n }\n\n obj.fireCallbacks = function fireCallbacks (hook, args) {\n var newCallbacks = []\n var replaceCallbacks = []\n var len = obj.callbacks[hook].length\n var x\n let callback\n\n // log.info('!@$ Firing '+hook+' call back with length'+len)\n for (x = len - 1; x >= 0; x--) {\n // log.info('@@ Firing '+hook+' callback '+ obj.callbacks[hook][x])\n callback = obj.callbacks[hook][x]\n if (callback && callback.apply(obj, args)) {\n newCallbacks.push(callback)\n }\n }\n\n for (x = newCallbacks.length - 1; x >= 0; x--) {\n replaceCallbacks.push(newCallbacks[x])\n }\n\n for (x = len; x < obj.callbacks[hook].length; x++) {\n replaceCallbacks.push(obj.callbacks[hook][x])\n }\n\n obj.callbacks[hook] = replaceCallbacks\n }\n}\n\n/**\n * Returns a DOM parser based on current runtime environment.\n * Exports as `DOMParserFactory`\n */\nfunction domParser () {\n if (window.DOMParser) {\n return new DOMParser()\n } else if (window.ActiveXObject) {\n return new ActiveXObject('Microsoft.XMLDOM')\n } else {\n return false\n }\n}\n\n// From https://github.com/linkeddata/dokieli\nfunction domToString (node, options) {\n options = options || {}\n var selfClosing = []\n if ('selfClosing' in options) {\n options.selfClosing.split(' ').forEach(function (n) {\n selfClosing[n] = true\n })\n }\n var skipAttributes = []\n if ('skipAttributes' in options) {\n options.skipAttributes.split(' ').forEach(function (n) {\n skipAttributes[n] = true\n })\n }\n return dumpNode(node, options, selfClosing, skipAttributes)\n}\n\nfunction dumpNode (node, options, selfClosing, skipAttributes) {\n var i\n var out = ''\n var noEsc = [ false ]\n if (typeof node.nodeType === 'undefined') return out\n if (node.nodeType === 1) {\n if (node.hasAttribute('class') && 'classWithChildText' in options && node.matches(options.classWithChildText.class)) {\n out += node.querySelector(options.classWithChildText.element).textContent\n } else if (!('skipNodeWithClass' in options && node.matches('.' + options.skipNodeWithClass))) {\n var ename = node.nodeName.toLowerCase()\n out += '<' + ename\n\n var attrList = []\n for (i = node.attributes.length - 1; i >= 0; i--) {\n var atn = node.attributes[i]\n if (skipAttributes.length > 0 && skipAttributes[atn.name]) continue\n if (/^\\d+$/.test(atn.name)) continue\n if (atn.name === 'class' && 'replaceClassItemWith' in options && (atn.value.split(' ').indexOf(options.replaceClassItemWith.source) > -1)) {\n var re = new RegExp(options.replaceClassItemWith.source, 'g')\n atn.value = atn.value.replace(re, options.replaceClassItemWith.target).trim()\n }\n if (!(atn.name === 'class' && 'skipClassWithValue' in options && options.skipClassWithValue === atn.value)) {\n attrList.push(atn.name + '=\\'' + atn.value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/'/g, '"') + '\\'')\n }\n }\n if (attrList.length > 0) {\n if ('sortAttributes' in options && options.sortAttributes) {\n attrList.sort(function (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase())\n })\n }\n out += ' ' + attrList.join(' ')\n }\n if (selfClosing[ename]) {\n out += ' />'\n } else {\n out += '>'\n out += (ename === 'html') ? '\\n ' : ''\n noEsc.push(ename === 'style' || ename === 'script')\n for (i = 0; i < node.childNodes.length; i++) out += dumpNode(node.childNodes[i])\n noEsc.pop()\n out += (ename === 'body') ? '</' + ename + '>' + '\\n' : '</' + ename + '>'\n }\n }\n } else if (node.nodeType === 8) {\n // FIXME: If comments are not tabbed in source, a new line is not prepended\n out += '<!--' + node.nodeValue + '-->'\n } else if (node.nodeType === 3 || node.nodeType === 4) {\n // XXX: Remove new lines which were added after DOM ready\n var nl = node.nodeValue.replace(/\\n+$/, '')\n out += noEsc[noEsc.length - 1] ? nl : nl.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')\n } else {\n console.log('Warning; Cannot handle serialising nodes of type: ' + node.nodeType)\n console.log(node)\n }\n return out\n}\n\nfunction dtstamp () {\n var now = new Date()\n var year = now.getYear() + 1900\n var month = now.getMonth() + 1\n var day = now.getDate()\n var hour = now.getUTCHours()\n var minute = now.getUTCMinutes()\n var second = now.getSeconds()\n if (month < 10) month = '0' + month\n if (day < 10) day = '0' + day\n if (hour < 10) hour = '0' + hour\n if (minute < 10) minute = '0' + minute\n if (second < 10) second = '0' + second\n return year + '-' + month + '-' + day + 'T' +\n hour + ':' + minute + ':' + second + 'Z'\n}\n\n/**\n * Compares statements (heavy comparison for repeatable canonical ordering)\n */\nfunction heavyCompare (x, y, g, uriMap) {\n var nonBlank = function (x) {\n return (x.termType === 'BlankNode') ? null : x\n }\n var signature = function (x) {\n var lis = g.statementsMatching(x).map(function (st) {\n return ('' + nonBlank(st.subject) + ' ' + nonBlank(st.predicate) +\n ' ' + nonBlank(st.object))\n }).concat(g.statementsMatching(undefined, undefined, x).map(function (st) {\n return ('' + nonBlank(st.subject) + ' ' + nonBlank(st.predicate) +\n ' ' + nonBlank(st.object))\n }))\n lis.sort()\n return lis.join('\\n')\n }\n if ((x.termType === 'BlankNode') && (y.termType === 'BlankNode')) {\n if (x.compareTerm(y) === 0) return 0 // Same\n if (signature(x) > signature(y)) return +1\n if (signature(x) < signature(y)) return -1\n return x.compareTerm(y) // Too bad -- this order not canonical.\n // throw \"different bnodes indistinquishable for sorting\"\n } else {\n if (uriMap && x.uri && y.uri){\n return (uriMap[x.uri] || x.uri).localeCompare(uriMap[y.uri] || y.uri)\n }\n return x.compareTerm(y)\n }\n}\n\nfunction heavyCompareSPO (x, y, g, uriMap) {\n return heavyCompare(x.subject, y.subject, g, uriMap) ||\n heavyCompare(x.predicate, y.predicate, g, uriMap) ||\n heavyCompare(x.object, y.object, g, uriMap)\n}\n\n/**\n * Defines a simple debugging function\n * @method output\n * @param o {String}\n */\nfunction output (o) {\n var k = document.createElement('div')\n k.textContent = o\n document.body.appendChild(k)\n}\n\n/**\n * Returns a DOM from parsex XML.\n */\nfunction parseXML (str, options) {\n var dparser\n options = options || {}\n if (typeof module !== 'undefined' && module && module.exports) { // Node.js\n // var libxmljs = require('libxmljs'); // Was jsdom before 2012-01 then libxmljs but that nonstandard\n // return libxmljs.parseXmlString(str)\n\n // var jsdom = require('jsdom'); 2012-01 though 2015-08 no worky with new Node\n // var dom = jsdom.jsdom(str, undefined, {} );// html, level, options\n\n var DOMParser = require('xmldom').DOMParser // 2015-08 on https://github.com/jindw/xmldom\n var dom = new DOMParser().parseFromString(str, options.contentType || 'application/xhtml+xml')\n return dom\n } else {\n if (typeof window !== 'undefined' && window.DOMParser) {\n dparser = new window.DOMParser() // seems to actually work\n } else {\n dparser = new DOMParser() // Doc says this works\n }\n }\n return dparser.parseFromString(str, 'application/xml')\n}\n\n/**\n * Removes all statements equal to x from a\n * Exports as `RDFArrayRemove`\n */\nfunction rdfArrayRemove (a, x) {\n for (var i = 0; i < a.length; i++) {\n // TODO: This used to be the following, which didnt always work..why\n // if(a[i] === x)\n if (a[i].subject.sameTerm(x.subject) &&\n a[i].predicate.sameTerm(x.predicate) &&\n a[i].object.sameTerm(x.object) &&\n a[i].why.sameTerm(x.why)) {\n a.splice(i, 1)\n return\n }\n }\n throw new Error('RDFArrayRemove: Array did not contain ' + x + ' ' + x.why)\n}\n\nfunction stringStartsWith (str, pref) { // missing library routines\n return (str.slice(0, pref.length) === pref)\n}\n\n/**\n * C++, python style %s -> subs\n */\nfunction stringTemplate (base, subs) {\n var baseA = base.split('%s')\n var result = ''\n for (var i = 0;i < subs.length;i++) {\n subs[i] += ''\n result += baseA[i] + subs[i]\n }\n return result + baseA.slice(subs.length).join()\n}\n\n\n// Stack dump on errors - to pass errors back\n\nfunction stackString (e) {\n var str = '' + e + '\\n'\n if (!e.stack) {\n return str + 'No stack available.\\n'\n }\n var lines = e.stack.toString().split('\\n')\n var toprint = []\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i]\n if (line.indexOf('ecmaunit.js') > -1) {\n // remove useless bit of traceback\n break\n }\n if (line.charAt(0) == '(') {\n line = 'function' + line\n }\n var chunks = line.split('@')\n toprint.push(chunks)\n }\n // toprint.reverse(); No - I prefer the latest at the top by the error message -tbl\n\n for (var i = 0; i < toprint.length; i++) {\n str += ' ' + toprint[i][1] + '\\n ' + toprint[i][0]\n }\n return str\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/util.js","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_an-object.js\n// module id = 12\n// module chunks = 0","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-dp.js\n// module id = 13\n// module chunks = 0","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_descriptors.js\n// module id = 14\n// module chunks = 0","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_is-object.js\n// module id = 15\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 16\n// module chunks = 0","'use strict'\nconst ClassOrder = require('./class-order')\nconst Node = require('./node')\n\nclass BlankNode extends Node {\n constructor (id) {\n super()\n this.termType = BlankNode.termType\n\n if (id) {\n if (typeof id !== 'string') {\n console.log('Bad blank id:', id)\n throw new Error('Bad id argument to new blank node: ' + id)\n }\n if (id.includes('#')) {\n // Is a URI with hash fragment\n let fragments = id.split('#')\n id = fragments[fragments.length - 1]\n }\n this.id = id\n // this.id = '' + BlankNode.nextId++\n } else {\n this.id = 'n' + BlankNode.nextId++\n }\n\n this.value = this.id\n }\n\n compareTerm (other) {\n if (this.classOrder < other.classOrder) {\n return -1\n }\n if (this.classOrder > other.classOrder) {\n return +1\n }\n if (this.id < other.id) {\n return -1\n }\n if (this.id > other.id) {\n return +1\n }\n return 0\n }\n\n copy (formula) { // depends on the formula\n var bnodeNew = new BlankNode()\n formula.copyTo(this, bnodeNew)\n return bnodeNew\n }\n\n toCanonical () {\n return '_:' + this.value\n }\n\n toString () {\n return BlankNode.NTAnonymousNodePrefix + this.id\n }\n}\n\nBlankNode.nextId = 0\nBlankNode.termType = 'BlankNode'\nBlankNode.NTAnonymousNodePrefix = '_:'\nBlankNode.prototype.classOrder = ClassOrder['BlankNode']\nBlankNode.prototype.isBlank = 1\nBlankNode.prototype.isVar = 1\n\nmodule.exports = BlankNode\n\n\n\n// WEBPACK FOOTER //\n// ./src/blank-node.js","/**\n * A Dummy log\n * @module log\n */\nmodule.exports = {\n debug: function debug (x) {\n return\n },\n warn: function warn (x) {\n return\n },\n info: function info (x) {\n return\n },\n error: function error (x) {\n return\n },\n success: function success (x) {\n return\n },\n msg: function msg (x) {\n return\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/log.js","\"use strict\";\n\nexports.__esModule = true;\n\nvar _promise = require(\"../core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (fn) {\n return function () {\n var gen = fn.apply(this, arguments);\n return new _promise2.default(function (resolve, reject) {\n function step(key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n return _promise2.default.resolve(value).then(function (value) {\n step(\"next\", value);\n }, function (err) {\n step(\"throw\", err);\n });\n }\n }\n\n return step(\"next\");\n });\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/asyncToGenerator.js\n// module id = 19\n// module chunks = 0","module.exports = require(\"regenerator-runtime\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/regenerator/index.js\n// module id = 20\n// module chunks = 0","module.exports = require('./dist/base64url').default;\nmodule.exports.default = module.exports;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/base64url/index.js\n// module id = 21\n// module chunks = 0","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_has.js\n// module id = 22\n// module chunks = 0","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_hide.js\n// module id = 23\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/_stream_duplex.js\n// module id = 24\n// module chunks = 0","'use strict';\n\n/**\n * @module JSON Object Signing and Encryption (JOSE)\n */\nvar JWA = require('./jose/JWA');\nvar JWK = require('./jose/JWK');\nvar JWKSet = require('./jose/JWKSet');\nvar JWT = require('./jose/JWT');\nvar JWS = require('./jose/JWS');\nvar Base64URLSchema = require('./schemas/Base64URLSchema');\nvar JOSEHeaderSchema = require('./schemas/JOSEHeaderSchema');\nvar JWKSchema = require('./schemas/JWKSchema');\nvar JWKSetSchema = require('./schemas/JWKSetSchema');\nvar JWTClaimsSetSchema = require('./schemas/JWTClaimsSetSchema');\nvar JWTSchema = require('./schemas/JWTSchema');\n\n/**\n * Export\n */\nmodule.exports = {\n JWA: JWA,\n JWK: JWK,\n JWKSet: JWKSet,\n JWT: JWT,\n JWS: JWS,\n Base64URLSchema: Base64URLSchema,\n JOSEHeaderSchema: JOSEHeaderSchema,\n JWKSchema: JWKSchema,\n JWKSetSchema: JWKSetSchema,\n JWTClaimsSetSchema: JWTClaimsSetSchema,\n JWTSchema: JWTSchema\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/index.js\n// module id = 25\n// module chunks = 0","var ClassOrder = {\n 'Literal': 1,\n 'Collection': 3,\n 'Graph': 4,\n 'NamedNode': 5,\n 'BlankNode': 6,\n 'Variable': 7\n}\n\nmodule.exports = ClassOrder\n\n\n\n// WEBPACK FOOTER //\n// ./src/class-order.js","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_ctx.js\n// module id = 28\n// module chunks = 0","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_fails.js\n// module id = 29\n// module chunks = 0","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_to-iobject.js\n// module id = 30\n// module chunks = 0","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/inherits/inherits_browser.js\n// module id = 31\n// module chunks = 0","// Ignore module for browserify (see package.json)\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/jsonld/browser/ignore.js\n// module id = 32\n// module chunks = 0","const NamedNode = require('./named-node')\n\nfunction Namespace (nsuri) {\n return function (ln) {\n return new NamedNode(nsuri + (ln || ''))\n }\n}\n\nmodule.exports = Namespace\n\n\n\n// WEBPACK FOOTER //\n// ./src/namespace.js","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_cof.js\n// module id = 34\n// module chunks = 0","module.exports = {};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_iterators.js\n// module id = 35\n// module chunks = 0","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_property-desc.js\n// module id = 36\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-util-is/lib/util.js\n// module id = 37\n// module chunks = 0","var apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmeidate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/timers-browserify/main.js\n// module id = 38\n// module chunks = 0","\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.URLSearchParams = require(\"./URLSearchParams\").interface;\n\nexports.parseURL = require(\"./url-state-machine\").parseURL;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.cannotHaveAUsernamePasswordPort = require(\"./url-state-machine\").cannotHaveAUsernamePasswordPort;\n\nexports.percentDecode = require(\"./urlencoded\").percentDecode;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/whatwg-url/lib/public-api.js\n// module id = 39\n// module chunks = 0","'use strict';\n\n/**\n * Dependencies\n * @ignore\n */\n\nvar _require = require('@trust/json-document'),\n JSONSchema = _require.JSONSchema;\n\nvar _require2 = require('../formats'),\n BASE64_REGEXP = _require2.BASE64_REGEXP;\n\n/**\n * JWK Schema\n */\n\n\nvar JWKSchema = new JSONSchema({\n type: 'object',\n properties: {\n\n kty: {\n type: 'string',\n //format: 'case-sensitive',\n enum: ['RSA', 'EC', 'oct'] // other values MAY be used\n },\n\n use: {\n type: 'string',\n //format: 'case-sensitive',\n enum: ['sig', 'enc'] // other values MAY be used\n },\n\n key_ops: {\n type: 'array',\n //format: 'case-sensitive',\n items: {\n enum: ['sign', 'verify', 'encrypt', 'decrypt', 'wrapKey', 'unwrapKey', 'deriveKey', 'deriveBits'] // other values MAY be used\n }\n },\n\n alg: {\n type: 'string',\n //format: 'case-sensitive',\n enum: ['HS256', 'HS384', 'HS512', 'RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'PS256', 'PS384', 'PS512', 'none'] // other values MAY be used\n },\n\n kid: {\n type: 'string'\n },\n\n x5u: {\n type: 'string'\n //format: 'url'\n },\n\n x5c: {\n type: 'array'\n //format: BASE64_REGEXP\n },\n\n x5t: {\n type: 'string'\n //format: BASE64_REGEXP\n }\n\n //'x5t#S256': {\n // type: 'string',\n // //format: BASE64_REGEXP\n //}\n }\n});\n\n/**\n * Export\n */\nmodule.exports = JWKSchema;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/schemas/JWKSchema.js\n// module id = 40\n// module chunks = 0","'use strict'\nconst BlankNode = require('./blank-node')\nconst ClassOrder = require('./class-order')\nconst Node = require('./node')\n\nclass Collection extends Node {\n constructor (initial) {\n super()\n this.termType = Collection.termType\n this.id = BlankNode.nextId++\n this.elements = []\n this.closed = false\n if (initial && initial.length > 0) {\n initial.forEach(element => {\n this.elements.push(Node.fromValue(element))\n })\n }\n }\n append (element) {\n return this.elements.push(element)\n }\n close () {\n this.closed = true\n return this.closed\n }\n shift () {\n return this.elements.shift()\n }\n substitute (bindings) {\n var elementsCopy = this.elements.map(function (ea) {\n ea.substitute(bindings)\n })\n return new Collection(elementsCopy)\n }\n toNT () {\n return BlankNode.NTAnonymousNodePrefix + this.id\n }\n toString () {\n return '(' + this.elements.join(' ') + ')'\n }\n unshift (element) {\n return this.elements.unshift(element)\n }\n}\nCollection.termType = 'Collection'\nCollection.prototype.classOrder = ClassOrder['Collection']\nCollection.prototype.compareTerm = BlankNode.prototype.compareTerm\nCollection.prototype.isVar = 0\n\nmodule.exports = Collection\n\n\n\n// WEBPACK FOOTER //\n// ./src/collection.js","'use strict'\nconst BlankNode = require('./blank-node')\nconst Collection = require('./collection')\nconst DefaultGraph = require('./default-graph')\nconst Fetcher = require('./fetcher')\nimport IndexedFormula from './indexed-formula'\nconst Literal = require('./literal')\nconst NamedNode = require('./named-node')\nconst Statement = require('./statement')\nconst Variable = require('./variable')\n\nfunction blankNode (value) {\n return new BlankNode(value)\n}\nfunction collection (elements) {\n return new Collection(elements)\n}\nfunction defaultGraph () {\n return new DefaultGraph()\n}\nfunction fetcher (store, options) {\n return new Fetcher(store, options)\n}\nfunction graph () {\n return new IndexedFormula()\n}\nfunction lit (val, lang, dt) {\n return new Literal('' + val, lang, dt)\n}\nfunction literal (value, languageOrDatatype) {\n if (typeof languageOrDatatype === 'string') {\n if (languageOrDatatype.indexOf(':') === -1) {\n return new Literal(value, languageOrDatatype)\n } else {\n return new Literal(value, null, namedNode(languageOrDatatype))\n }\n } else {\n return new Literal(value, null, languageOrDatatype)\n }\n}\nfunction namedNode (value) {\n return new NamedNode(value)\n}\nfunction quad (subject, predicate, object, graph) {\n graph = graph || new DefaultGraph()\n return new Statement(subject, predicate, object, graph)\n}\nfunction st (subject, predicate, object, graph) {\n return new Statement(subject, predicate, object, graph)\n}\nfunction triple (subject, predicate, object) {\n return quad(subject, predicate, object)\n}\nfunction variable (name) {\n return new Variable(name)\n}\n\n// rdfjs spec factory methods\nmodule.exports.blankNode = blankNode\nmodule.exports.defaultGraph = defaultGraph\nmodule.exports.graph = graph\nmodule.exports.literal = literal\nmodule.exports.namedNode = namedNode\nmodule.exports.quad = quad\nmodule.exports.triple = triple\nmodule.exports.variable = variable\n\n// rdflib only\nmodule.exports.collection = collection\nmodule.exports.fetcher = fetcher\nmodule.exports.lit = lit\nmodule.exports.st = st\n\n\n\n// WEBPACK FOOTER //\n// ./src/data-factory.js","// Identity management and indexing for RDF\n//\n// This file provides IndexedFormula a formula (set of triples) which\n// indexed by predicate, subject and object.\n//\n// It \"smushes\" (merges into a single node) things which are identical\n// according to owl:sameAs or an owl:InverseFunctionalProperty\n// or an owl:FunctionalProperty\n//\n//\n// 2005-10 Written Tim Berners-Lee\n// 2007 Changed so as not to munge statements from documents when smushing\n//\n//\n/* jsl:option explicit */\nconst ArrayIndexOf = require('./util').ArrayIndexOf\nconst Formula = require('./formula')\n// const log = require('./log')\nconst RDFArrayRemove = require('./util').RDFArrayRemove\nconst Statement = require('./statement')\nconst Node = require('./node')\nconst Variable = require('./variable')\n\nconst owl_ns = 'http://www.w3.org/2002/07/owl#'\n\nconst defaultGraphURI = 'chrome:theSession'\n// var link_ns = 'http://www.w3.org/2007/ont/link#'\n\n// Handle Functional Property\nfunction handle_FP (formula, subj, pred, obj) {\n var o1 = formula.any(subj, pred, undefined)\n if (!o1) {\n return false // First time with this value\n }\n // log.warn(\"Equating \"+o1.uri+\" and \"+obj.uri + \" because FP \"+pred.uri); //@@\n formula.equate(o1, obj)\n return true\n} // handle_FP\n\n// Handle Inverse Functional Property\nfunction handle_IFP (formula, subj, pred, obj) {\n var s1 = formula.any(undefined, pred, obj)\n if (!s1) {\n return false // First time with this value\n }\n // log.warn(\"Equating \"+s1.uri+\" and \"+subj.uri + \" because IFP \"+pred.uri); //@@\n formula.equate(s1, subj)\n return true\n} // handle_IFP\n\nfunction handleRDFType (formula, subj, pred, obj, why) {\n if (formula.typeCallback) {\n formula.typeCallback(formula, obj, why)\n }\n\n var x = formula.classActions[obj.hashString()]\n var done = false\n if (x) {\n for (var i = 0; i < x.length; i++) {\n done = done || x[i](formula, subj, pred, obj, why)\n }\n }\n return done // statement given is not needed if true\n}\n\nexport default class IndexedFormula extends Formula { // IN future - allow pass array of statements to constructor\n constructor (features) {\n super()\n // this.statements = [] // As in Formula NO don't overwrite inherited\n // this.optional = []\n\n this.propertyActions = [] // Array of functions to call when getting statement with {s X o}\n // maps <uri> to [f(F,s,p,o),...]\n this.classActions = [] // Array of functions to call when adding { s type X }\n this.redirections = [] // redirect to lexically smaller equivalent symbol\n this.aliases = [] // reverse mapping to redirection: aliases for this\n this.HTTPRedirects = [] // redirections we got from HTTP\n this.subjectIndex = [] // Array of statements with this X as subject\n this.predicateIndex = [] // Array of statements with this X as subject\n this.objectIndex = [] // Array of statements with this X as object\n this.whyIndex = [] // Array of statements with X as provenance\n this.index = [\n this.subjectIndex,\n this.predicateIndex,\n this.objectIndex,\n this.whyIndex\n ]\n this.namespaces = {} // Dictionary of namespace prefixes\n this.features = features || [\n 'sameAs',\n 'InverseFunctionalProperty',\n 'FunctionalProperty'\n ]\n this.initPropertyActions(this.features)\n }\n\n static get defaultGraphURI() {\n return defaultGraphURI;\n }\n\n substitute (bindings) {\n var statementsCopy = this.statements.map(function (ea) {\n return ea.substitute(bindings)\n })\n // console.log('IndexedFormula subs statemnts:' + statementsCopy)\n var y = new IndexedFormula()\n y.add(statementsCopy)\n // console.log('indexed-form subs formula:' + y)\n return y\n }\n\n applyPatch (patch, target, patchCallback) { // patchCallback(err)\n const Query = require('./query').Query\n var targetKB = this\n var ds\n var binding = null\n\n // /////////// Debug strings\n /*\n var bindingDebug = function (b) {\n var str = ''\n var v\n for (v in b) {\n if (b.hasOwnProperty(v)) {\n str += ' ' + v + ' -> ' + b[v]\n }\n }\n return str\n }\n*/\n var doPatch = function (onDonePatch) {\n if (patch['delete']) {\n ds = patch['delete']\n // console.log(bindingDebug(binding))\n // console.log('ds before substitute: ' + ds)\n if (binding) ds = ds.substitute(binding)\n // console.log('applyPatch: delete: ' + ds)\n ds = ds.statements\n var bad = []\n var ds2 = ds.map(function (st) { // Find the actual statemnts in the store\n var sts = targetKB.statementsMatching(st.subject, st.predicate, st.object, target)\n if (sts.length === 0) {\n // log.info(\"NOT FOUND deletable \" + st)\n bad.push(st)\n return null\n } else {\n // log.info(\"Found deletable \" + st)\n return sts[0]\n }\n })\n if (bad.length) {\n // console.log('Could not find to delete ' + bad.length + 'statements')\n // console.log('despite ' + targetKB.statementsMatching(bad[0].subject, bad[0].predicate)[0])\n return patchCallback('Could not find to delete: ' + bad.join('\\n or '))\n }\n ds2.map(function (st) {\n targetKB.remove(st)\n })\n }\n if (patch['insert']) {\n // log.info(\"doPatch insert \"+patch['insert'])\n ds = patch['insert']\n if (binding) ds = ds.substitute(binding)\n ds = ds.statements\n ds.map(function (st) {\n st.why = target\n targetKB.add(st.subject, st.predicate, st.object, st.why)\n })\n }\n onDonePatch()\n }\n if (patch.where) {\n // log.info(\"Processing WHERE: \" + patch.where + '\\n')\n var query = new Query('patch')\n query.pat = patch.where\n query.pat.statements.map(function (st) {\n st.why = target\n })\n\n var bindingsFound = []\n\n targetKB.query(query, function onBinding (binding) {\n bindingsFound.push(binding)\n // console.log(' got a binding: ' + bindingDebug(binding))\n },\n targetKB.fetcher,\n function onDone () {\n if (bindingsFound.length === 0) {\n return patchCallback('No match found to be patched:' + patch.where)\n }\n if (bindingsFound.length > 1) {\n return patchCallback('Patch ambiguous. No patch done.')\n }\n binding = bindingsFound[0]\n doPatch(patchCallback)\n })\n } else {\n doPatch(patchCallback)\n }\n }\n\n declareExistential (x) {\n if (!this._existentialVariables) this._existentialVariables = []\n this._existentialVariables.push(x)\n return x\n }\n\n initPropertyActions (features) {\n // If the predicate is #type, use handleRDFType to create a typeCallback on the object\n this.propertyActions['<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>'] =\n [ handleRDFType ]\n\n // Assumption: these terms are not redirected @@fixme\n if (ArrayIndexOf(features, 'sameAs') >= 0) {\n this.propertyActions['<http://www.w3.org/2002/07/owl#sameAs>'] = [\n function (formula, subj, pred, obj, why) {\n // log.warn(\"Equating \"+subj.uri+\" sameAs \"+obj.uri); //@@\n formula.equate(subj, obj)\n return true // true if statement given is NOT needed in the store\n }\n ] // sameAs -> equate & don't add to index\n }\n if (ArrayIndexOf(features, 'InverseFunctionalProperty') >= 0) {\n this.classActions['<' + owl_ns + 'InverseFunctionalProperty>'] = [\n function (formula, subj, pred, obj, addFn) {\n // yes subj not pred!\n return formula.newPropertyAction(subj, handle_IFP)\n }\n ] // IFP -> handle_IFP, do add to index\n }\n if (ArrayIndexOf(features, 'FunctionalProperty') >= 0) {\n this.classActions['<' + owl_ns + 'FunctionalProperty>'] = [\n function (formula, subj, proj, obj, addFn) {\n return formula.newPropertyAction(subj, handle_FP)\n }\n ] // FP => handleFP, do add to index\n }\n }\n\n /**\n * Adds a triple to the store.\n * Returns the statement added\n * (would it be better to return the original formula for chaining?)\n */\n add (subj, pred, obj, why) {\n var i\n if (arguments.length === 1) {\n if (subj instanceof Array) {\n for (i = 0; i < subj.length; i++) {\n this.add(subj[i])\n }\n } else if (subj instanceof Statement) {\n this.add(subj.subject, subj.predicate, subj.object, subj.why)\n } else if (subj instanceof IndexedFormula) {\n this.add(subj.statements)\n }\n return this\n }\n var actions\n var st\n if (!why) {\n // system generated\n why = this.fetcher ? this.fetcher.appNode : this.sym(defaultGraphURI)\n }\n subj = Node.fromValue(subj)\n pred = Node.fromValue(pred)\n obj = Node.fromValue(obj)\n why = Node.fromValue(why)\n if (this.predicateCallback) {\n this.predicateCallback(this, pred, why)\n }\n // Action return true if the statement does not need to be added\n var predHash = this.canon(pred).hashString()\n actions = this.propertyActions[predHash] // Predicate hash\n var done = false\n if (actions) {\n // alert('type: '+typeof actions +' @@ actions='+actions)\n for (i = 0; i < actions.length; i++) {\n done = done || actions[i](this, subj, pred, obj, why)\n }\n }\n if (this.holds(subj, pred, obj, why)) { // Takes time but saves duplicates\n // console.log('rdflib: Ignoring dup! {' + subj + ' ' + pred + ' ' + obj + ' ' + why + '}')\n return null // @@better to return self in all cases?\n }\n // If we are tracking provenance, every thing should be loaded into the store\n // if (done) return new Statement(subj, pred, obj, why)\n // Don't put it in the store\n // still return this statement for owl:sameAs input\n var hash = [ this.canon(subj).hashString(), predHash,\n this.canon(obj).hashString(), this.canon(why).hashString()]\n st = new Statement(subj, pred, obj, why)\n for (i = 0; i < 4; i++) {\n var ix = this.index[i]\n var h = hash[i]\n if (!ix[h]) {\n ix[h] = []\n }\n ix[h].push(st) // Set of things with this as subject, etc\n }\n\n // log.debug(\"ADDING {\"+subj+\" \"+pred+\" \"+obj+\"} \"+why)\n this.statements.push(st)\n return st\n }\n\n addAll (statements) {\n statements.forEach(quad => {\n this.add(quad.subject, quad.predicate, quad.object, quad.graph)\n })\n }\n any (s, p, o, g) {\n var st = this.anyStatementMatching(s, p, o, g)\n if (st == null) {\n return void 0\n } else if (s == null) {\n return st.subject\n } else if (p == null) {\n return st.predicate\n } else if (o == null) {\n return st.object\n }\n return void 0\n }\n\n anyValue (s, p, o, g) {\n var y = this.any(s, p, o, g)\n return y ? y.value : void 0\n }\n\n anyStatementMatching (subj, pred, obj, why) {\n var x = this.statementsMatching(subj, pred, obj, why, true)\n if (!x || x.length === 0) {\n return undefined\n }\n return x[0]\n }\n\n /**\n * Returns the symbol with canonical URI as smushed\n */\n canon (term) {\n if (!term) {\n return term\n }\n var y = this.redirections[term.hashString()]\n if (!y) {\n return term\n }\n return y\n }\n\n check () {\n this.checkStatementList(this.statements)\n for (var p = 0; p < 4; p++) {\n var ix = this.index[p]\n for (var key in ix) {\n if (ix.hasOwnProperty(key)) {\n this.checkStatementList(ix[key], p)\n }\n }\n }\n }\n\n /**\n * Self-consistency checking for diagnostis only\n * Is each statement properly indexed?\n */\n checkStatementList (sts, from) {\n var names = ['subject', 'predicate', 'object', 'why']\n var origin = ' found in ' + names[from] + ' index.'\n var st\n for (var j = 0; j < sts.length; j++) {\n st = sts[j]\n var term = [ st.subject, st.predicate, st.object, st.why ]\n var arrayContains = function (a, x) {\n for (var i = 0; i < a.length; i++) {\n if (a[i].subject.sameTerm(x.subject) &&\n a[i].predicate.sameTerm(x.predicate) &&\n a[i].object.sameTerm(x.object) &&\n a[i].why.sameTerm(x.why)) {\n return true\n }\n }\n }\n for (var p = 0; p < 4; p++) {\n var c = this.canon(term[p])\n var h = c.hashString()\n if (!this.index[p][h]) {\n // throw new Error('No ' + name[p] + ' index for statement ' + st + '@' + st.why + origin)\n } else {\n if (!arrayContains(this.index[p][h], st)) {\n // throw new Error('Index for ' + name[p] + ' does not have statement ' + st + '@' + st.why + origin)\n }\n }\n }\n if (!arrayContains(this.statements, st)) {\n throw new Error('Statement list does not statement ' + st + '@' + st.why + origin)\n }\n }\n }\n\n close () {\n return this\n }\n\n /**\n * replaces @template with @target and add appropriate triples (no triple\n * removed)\n * one-direction replication\n * @method copyTo\n */\n copyTo (template, target, flags) {\n if (!flags) flags = []\n var statList = this.statementsMatching(template)\n if (ArrayIndexOf(flags, 'two-direction') !== -1) {\n statList.concat(this.statementsMatching(undefined, undefined, template))\n }\n for (var i = 0; i < statList.length; i++) {\n var st = statList[i]\n switch (st.object.termType) {\n case 'NamedNode':\n this.add(target, st.predicate, st.object)\n break\n case 'Literal':\n case 'BlankNode':\n case 'Collection':\n this.add(target, st.predicate, st.object.copy(this))\n }\n if (ArrayIndexOf(flags, 'delete') !== -1) {\n this.remove(st)\n }\n }\n }\n\n /**\n * simplify graph in store when we realize two identifiers are equivalent\n * We replace the bigger with the smaller.\n */\n equate (u1, u2) {\n // log.warn(\"Equating \"+u1+\" and \"+u2); // @@\n // @@JAMBO Must canonicalize the uris to prevent errors from a=b=c\n // 03-21-2010\n u1 = this.canon(u1)\n u2 = this.canon(u2)\n var d = u1.compareTerm(u2)\n if (!d) {\n return true // No information in {a = a}\n }\n // var big\n // var small\n if (d < 0) { // u1 less than u2\n return this.replaceWith(u2, u1)\n } else {\n return this.replaceWith(u1, u2)\n }\n }\n\n formula (features) {\n return new IndexedFormula(features)\n }\n\n /**\n * Returns the number of statements contained in this IndexedFormula.\n * (Getter proxy to this.statements).\n * Usage:\n * ```\n * var kb = rdf.graph()\n * kb.length // -> 0\n * ```\n * @return {Number}\n */\n get length () {\n return this.statements.length\n }\n\n /**\n * Returns any quads matching the given arguments.\n * Standard RDFJS Taskforce method for Source objects, implemented as an\n * alias to `statementsMatching()`\n * @method match\n * @param subject {Node|String|Object}\n * @param predicate {Node|String|Object}\n * @param object {Node|String|Object}\n * @param graph {NamedNode|String}\n */\n match (subject, predicate, object, graph) {\n return this.statementsMatching(\n Node.fromValue(subject),\n Node.fromValue(predicate),\n Node.fromValue(object),\n Node.fromValue(graph)\n )\n }\n\n /**\n * Find out whether a given URI is used as symbol in the formula\n */\n mentionsURI (uri) {\n var hash = '<' + uri + '>'\n return (!!this.subjectIndex[hash] ||\n !!this.objectIndex[hash] ||\n !!this.predicateIndex[hash])\n }\n\n // Existentials are BNodes - something exists without naming\n newExistential (uri) {\n if (!uri) return this.bnode()\n var x = this.sym(uri)\n return this.declareExistential(x)\n }\n\n newPropertyAction (pred, action) {\n // log.debug(\"newPropertyAction: \"+pred)\n var hash = pred.hashString()\n if (!this.propertyActions[hash]) {\n this.propertyActions[hash] = []\n }\n this.propertyActions[hash].push(action)\n // Now apply the function to to statements already in the store\n var toBeFixed = this.statementsMatching(undefined, pred, undefined)\n var done = false\n for (var i = 0; i < toBeFixed.length; i++) { // NOT optimized - sort toBeFixed etc\n done = done || action(this, toBeFixed[i].subject, pred, toBeFixed[i].object)\n }\n return done\n }\n\n // Universals are Variables\n newUniversal (uri) {\n var x = this.sym(uri)\n if (!this._universalVariables) this._universalVariables = []\n this._universalVariables.push(x)\n return x\n }\n\n // convenience function used by N3 parser\n variable (name) {\n return new Variable(name)\n }\n\n /**\n * Find an unused id for a file being edited: return a symbol\n * (Note: Slow iff a lot of them -- could be O(log(k)) )\n */\n nextSymbol (doc) {\n for (var i = 0; ;i++) {\n var uri = doc.uri + '#n' + i\n if (!this.mentionsURI(uri)) return this.sym(uri)\n }\n }\n\n query (myQuery, callback, fetcher, onDone) {\n let indexedFormulaQuery = require('./query').indexedFormulaQuery\n return indexedFormulaQuery.call(this, myQuery, callback, fetcher, onDone)\n }\n\n /**\n * Finds a statement object and removes it\n */\n remove (st) {\n if (st instanceof Array) {\n for (var i = 0; i < st.length; i++) {\n this.remove(st[i])\n }\n return this\n }\n if (st instanceof IndexedFormula) {\n return this.remove(st.statements)\n }\n var sts = this.statementsMatching(st.subject, st.predicate, st.object,\n st.why)\n if (!sts.length) {\n throw new Error('Statement to be removed is not on store: ' + st)\n }\n this.removeStatement(sts[0])\n return this\n }\n\n /**\n * Removes all statemnts in a doc\n */\n removeDocument (doc) {\n var sts = this.statementsMatching(undefined, undefined, undefined, doc).slice() // Take a copy as this is the actual index\n for (var i = 0; i < sts.length; i++) {\n this.removeStatement(sts[i])\n }\n return this\n }\n\n /**\n * remove all statements matching args (within limit) *\n */\n removeMany (subj, pred, obj, why, limit) {\n // log.debug(\"entering removeMany w/ subj,pred,obj,why,limit = \" + subj +\", \"+ pred+\", \" + obj+\", \" + why+\", \" + limit)\n var sts = this.statementsMatching(subj, pred, obj, why, false)\n // This is a subtle bug that occcured in updateCenter.js too.\n // The fact is, this.statementsMatching returns this.whyIndex instead of a copy of it\n // but for perfromance consideration, it's better to just do that\n // so make a copy here.\n var statements = []\n for (var i = 0; i < sts.length; i++) statements.push(sts[i])\n if (limit) statements = statements.slice(0, limit)\n for (i = 0; i < statements.length; i++) this.remove(statements[i])\n }\n\n removeMatches (subject, predicate, object, why) {\n this.removeStatements(this.statementsMatching(subject, predicate, object,\n why))\n return this\n }\n\n /**\n * Remove a particular statement object from the store\n *\n * st a statement which is already in the store and indexed.\n * Make sure you only use this for these.\n * Otherwise, you should use remove() above.\n */\n removeStatement (st) {\n // log.debug(\"entering remove w/ st=\" + st)\n var term = [ st.subject, st.predicate, st.object, st.why ]\n for (var p = 0; p < 4; p++) {\n var c = this.canon(term[p])\n var h = c.hashString()\n if (!this.index[p][h]) {\n // log.warn (\"Statement removal: no index '+p+': \"+st)\n } else {\n RDFArrayRemove(this.index[p][h], st)\n }\n }\n RDFArrayRemove(this.statements, st)\n return this\n }\n\n removeStatements (sts) {\n for (var i = 0; i < sts.length; i++) {\n this.remove(sts[i])\n }\n return this\n }\n\n /**\n * Replace big with small, obsoleted with obsoleting.\n */\n replaceWith (big, small) {\n // log.debug(\"Replacing \"+big+\" with \"+small) // @@\n var oldhash = big.hashString()\n var newhash = small.hashString()\n var moveIndex = function (ix) {\n var oldlist = ix[oldhash]\n if (!oldlist) {\n return // none to move\n }\n var newlist = ix[newhash]\n if (!newlist) {\n ix[newhash] = oldlist\n } else {\n ix[newhash] = oldlist.concat(newlist)\n }\n delete ix[oldhash]\n }\n // the canonical one carries all the indexes\n for (var i = 0; i < 4; i++) {\n moveIndex(this.index[i])\n }\n this.redirections[oldhash] = small\n if (big.uri) {\n // @@JAMBO: must update redirections,aliases from sub-items, too.\n if (!this.aliases[newhash]) {\n this.aliases[newhash] = []\n }\n this.aliases[newhash].push(big) // Back link\n if (this.aliases[oldhash]) {\n for (i = 0; i < this.aliases[oldhash].length; i++) {\n this.redirections[this.aliases[oldhash][i].hashString()] = small\n this.aliases[newhash].push(this.aliases[oldhash][i])\n }\n }\n this.add(small, this.sym('http://www.w3.org/2007/ont/link#uri'), big.uri)\n // If two things are equal, and one is requested, we should request the other.\n if (this.fetcher) {\n this.fetcher.nowKnownAs(big, small)\n }\n }\n moveIndex(this.classActions)\n moveIndex(this.propertyActions)\n // log.debug(\"Equate done. \"+big+\" to be known as \"+small)\n return true // true means the statement does not need to be put in\n }\n\n /**\n * Return all equivalent URIs by which this is known\n */\n allAliases (x) {\n var a = this.aliases[this.canon(x).hashString()] || []\n a.push(this.canon(x))\n return a\n }\n\n /**\n * Compare by canonical URI as smushed\n */\n sameThings (x, y) {\n if (x.sameTerm(y)) {\n return true\n }\n var x1 = this.canon(x)\n // alert('x1='+x1)\n if (!x1) return false\n var y1 = this.canon(y)\n // alert('y1='+y1); //@@\n if (!y1) return false\n return (x1.uri === y1.uri)\n }\n\n setPrefixForURI (prefix, nsuri) {\n // TODO: This is a hack for our own issues, which ought to be fixed\n // post-release\n // See http://dig.csail.mit.edu/cgi-bin/roundup.cgi/$rdf/issue227\n if (prefix === 'tab' && this.namespaces['tab']) {\n return\n } // There are files around with long badly generated prefixes like this\n if (prefix.slice(0, 2) === 'ns' || prefix.slice(0, 7) === 'default') {\n return\n }\n this.namespaces[prefix] = nsuri\n }\n\n /**\n * Return statements matching a pattern\n * ALL CONVENIENCE LOOKUP FUNCTIONS RELY ON THIS!\n */\n statementsMatching (subj, pred, obj, why, justOne) {\n // log.debug(\"Matching {\"+subj+\" \"+pred+\" \"+obj+\"}\")\n var pat = [ subj, pred, obj, why ]\n var pattern = []\n var hash = []\n var wild = [] // wildcards\n var given = [] // Not wild\n var p\n var list\n for (p = 0; p < 4; p++) {\n pattern[p] = this.canon(Node.fromValue(pat[p]))\n if (!pattern[p]) {\n wild.push(p)\n } else {\n given.push(p)\n hash[p] = pattern[p].hashString()\n }\n }\n if (given.length === 0) {\n return this.statements\n }\n if (given.length === 1) { // Easy too, we have an index for that\n p = given[0]\n list = this.index[p][hash[p]]\n if (list && justOne) {\n if (list.length > 1) {\n list = list.slice(0, 1)\n }\n }\n list = list || []\n return list\n }\n // Now given.length is 2, 3 or 4.\n // We hope that the scale-free nature of the data will mean we tend to get\n // a short index in there somewhere!\n var best = 1e10 // really bad\n var best_i\n var i\n for (i = 0; i < given.length; i++) {\n p = given[i] // Which part we are dealing with\n list = this.index[p][hash[p]]\n if (!list) {\n return [] // No occurrences\n }\n if (list.length < best) {\n best = list.length\n best_i = i // (not p!)\n }\n }\n // Ok, we have picked the shortest index but now we have to filter it\n var best_p = given[best_i]\n var possibles = this.index[best_p][hash[best_p]]\n var check = given.slice(0, best_i).concat(given.slice(best_i + 1)) // remove best_i\n var results = []\n var parts = [ 'subject', 'predicate', 'object', 'why' ]\n for (var j = 0; j < possibles.length; j++) {\n var st = possibles[j]\n\n for (i = 0; i < check.length; i++) { // for each position to be checked\n p = check[i]\n if (!this.canon(st[parts[p]]).sameTerm(pattern[p])) {\n st = null\n break\n }\n }\n if (st != null) {\n results.push(st)\n if (justOne) break\n }\n }\n return results\n }\n\n /**\n * A list of all the URIs by which this thing is known\n */\n uris (term) {\n var cterm = this.canon(term)\n var terms = this.aliases[cterm.hashString()]\n if (!cterm.uri) return []\n var res = [ cterm.uri ]\n if (terms) {\n for (var i = 0; i < terms.length; i++) {\n res.push(terms[i].uri)\n }\n }\n return res\n }\n}\n\nIndexedFormula.handleRDFType = handleRDFType\n\n\n\n// WEBPACK FOOTER //\n// ./src/indexed-formula.js","/**\n*\n* UTF-8 data encode / decode\n* http://www.webtoolkit.info/\n*\n**/\nconst Uri = require('./uri')\nconst ArrayIndexOf = require('./util').ArrayIndexOf\n\nvar N3Parser = (function () {\n\nfunction hexify (str) { // also used in parser\n return encodeURI(str);\n}\n\nvar Utf8 = {\n // public method for url encoding\n encode : function (string) {\n string = string.replace(/\\r\\n/g,\"\\n\");\n var utftext = \"\";\n\n for (var n = 0; n < string.length; n++) {\n\n var c = string.charCodeAt(n);\n\n if (c < 128) {\n utftext += String.fromCharCode(c);\n }\n else if((c > 127) && (c < 2048)) {\n utftext += String.fromCharCode((c >> 6) | 192);\n utftext += String.fromCharCode((c & 63) | 128);\n }\n else {\n utftext += String.fromCharCode((c >> 12) | 224);\n utftext += String.fromCharCode(((c >> 6) & 63) | 128);\n utftext += String.fromCharCode((c & 63) | 128);\n }\n\n }\n\n return utftext;\n },\n // public method for url decoding\n decode : function (utftext) {\n var string = \"\";\n var i = 0;\n\n while ( i < utftext.length ) {\n\n var c = utftext.charCodeAt(i);\n if (c < 128) {\n string += String.fromCharCode(c);\n i++;\n }\n else if((c > 191) && (c < 224)) {\n string += String.fromCharCode(((c & 31) << 6)\n | (utftext.charCodeAt(i+1) & 63));\n i += 2;\n }\n else {\n string += String.fromCharCode(((c & 15) << 12)\n | ((utftext.charCodeAt(i+1) & 63) << 6)\n | (utftext.charCodeAt(i+2) & 63));\n i += 3;\n }\n }\n return string;\n }\n}// Things we need to define to make converted pythn code work in js\n// environment of $rdf\n\nvar RDFSink_forSomeSym = \"http://www.w3.org/2000/10/swap/log#forSome\";\nvar RDFSink_forAllSym = \"http://www.w3.org/2000/10/swap/log#forAll\";\nvar Logic_NS = \"http://www.w3.org/2000/10/swap/log#\";\n\n// pyjs seems to reference runtime library which I didn't find\n\nvar pyjslib_Tuple = function(theList) { return theList };\n\nvar pyjslib_List = function(theList) { return theList };\n\nvar pyjslib_Dict = function(listOfPairs) {\n if (listOfPairs.length > 0)\n\tthrow \"missing.js: oops nnonempty dict not imp\";\n return [];\n}\n\nvar pyjslib_len = function(s) { return s.length }\n\nvar pyjslib_slice = function(str, i, j) {\n if (typeof str.slice == 'undefined')\n throw '@@ mising.js: No .slice function for '+str+' of type '+(typeof str)\n if ((typeof j == 'undefined') || (j ==null)) return str.slice(i);\n return str.slice(i, j) // @ exactly the same spec?\n}\nvar StopIteration = Error('dummy error stop iteration');\n\nvar pyjslib_Iterator = function(theList) {\n this.last = 0;\n this.li = theList;\n this.next = function() {\n\tif (this.last == this.li.length) throw StopIteration;\n\treturn this.li[this.last++];\n }\n return this;\n};\n\nvar ord = function(str) {\n return str.charCodeAt(0)\n}\n\nvar string_find = function(str, s) {\n return str.indexOf(s)\n}\n\nvar assertFudge = function(condition, desc) {\n if (condition) return;\n if (desc) throw \"python Assertion failed: \"+desc;\n throw \"(python) Assertion failed.\";\n}\n\n\nvar stringFromCharCode = function(uesc) {\n return String.fromCharCode(uesc);\n}\n\n\nString.prototype.encode = function(encoding) {\n if (encoding != 'utf-8') throw \"UTF8_converter: can only do utf-8\"\n return Utf8.encode(this);\n}\nString.prototype.decode = function(encoding) {\n if (encoding != 'utf-8') throw \"UTF8_converter: can only do utf-8\"\n //return Utf8.decode(this);\n return this;\n}\n\n\n\nvar uripath_join = function(base, given) {\n return Uri.join(given, base) // sad but true\n}\n\nvar becauseSubexpression = null; // No reason needed\nvar diag_tracking = 0;\nvar diag_chatty_flag = 0;\nvar diag_progress = function(str) { /*$rdf.log.debug(str);*/ }\n\n// why_BecauseOfData = function(doc, reason) { return doc };\n\n\nvar RDF_type_URI = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#type\";\nvar DAML_sameAs_URI = \"http://www.w3.org/2002/07/owl#sameAs\";\n\n/*\nfunction SyntaxError(details) {\n return new __SyntaxError(details);\n}\n*/\n\nfunction __SyntaxError(details) {\n this.details = details\n}\n\n/*\n\n$Id: n3parser.js 14561 2008-02-23 06:37:26Z kennyluck $\n\nHAND EDITED FOR CONVERSION TO JAVASCRIPT\n\nThis module implements a Nptation3 parser, and the final\npart of a notation3 serializer.\n\nSee also:\n\nNotation 3\nhttp://www.w3.org/DesignIssues/Notation3\n\nClosed World Machine - and RDF Processor\nhttp://www.w3.org/2000/10/swap/cwm\n\nTo DO: See also \"@@\" in comments\n\n- Clean up interfaces\n______________________________________________\n\nModule originally by Dan Connolly, includeing notation3\nparser and RDF generator. TimBL added RDF stream model\nand N3 generation, replaced stream model with use\nof common store/formula API. Yosi Scharf developped\nthe module, including tests and test harness.\n\n*/\n\nvar ADDED_HASH = \"#\";\nvar LOG_implies_URI = \"http://www.w3.org/2000/10/swap/log#implies\";\nvar INTEGER_DATATYPE = \"http://www.w3.org/2001/XMLSchema#integer\";\nvar FLOAT_DATATYPE = \"http://www.w3.org/2001/XMLSchema#double\";\nvar DECIMAL_DATATYPE = \"http://www.w3.org/2001/XMLSchema#decimal\";\nvar DATE_DATATYPE = \"http://www.w3.org/2001/XMLSchema#date\";\nvar DATETIME_DATATYPE = \"http://www.w3.org/2001/XMLSchema#dateTime\";\nvar BOOLEAN_DATATYPE = \"http://www.w3.org/2001/XMLSchema#boolean\";\nvar option_noregen = 0;\nvar _notQNameChars = \"\\t\\r\\n !\\\"#$%&'()*.,+/;<=>?@[\\\\]^`{|}~\";\nvar _notNameChars = ( _notQNameChars + \":\" ) ;\nvar _rdfns = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\";\nvar N3CommentCharacter = \"#\";\nvar eol = new RegExp(\"^[ \\\\t]*(#[^\\\\n]*)?\\\\r?\\\\n\", 'g');\nvar eof = new RegExp(\"^[ \\\\t]*(#[^\\\\n]*)?$\", 'g');\nvar ws = new RegExp(\"^[ \\\\t]*\", 'g');\nvar signed_integer = new RegExp(\"^[-+]?[0-9]+\", 'g');\nvar number_syntax = new RegExp(\"^([-+]?[0-9]+)(\\\\.[0-9]+)?(e[-+]?[0-9]+)?\", 'g');\nvar datetime_syntax = new RegExp('^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9](T[0-9][0-9]:[0-9][0-9](:[0-9][0-9](\\\\.[0-9]*)?)?)?Z?');\n\nvar digitstring = new RegExp(\"^[0-9]+\", 'g');\nvar interesting = new RegExp(\"[\\\\\\\\\\\\r\\\\n\\\\\\\"]\", 'g');\nvar langcode = new RegExp(\"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\", 'g');\nfunction SinkParser(store, openFormula, thisDoc, baseURI, genPrefix, metaURI, flags, why) {\n return new __SinkParser(store, openFormula, thisDoc, baseURI, genPrefix, metaURI, flags, why);\n}\nfunction __SinkParser(store, openFormula, thisDoc, baseURI, genPrefix, metaURI, flags, why) {\n if (typeof openFormula == 'undefined') openFormula=null;\n if (typeof thisDoc == 'undefined') thisDoc=\"\";\n if (typeof baseURI == 'undefined') baseURI=null;\n if (typeof genPrefix == 'undefined') genPrefix=\"\";\n if (typeof metaURI == 'undefined') metaURI=null;\n if (typeof flags == 'undefined') flags=\"\";\n if (typeof why == 'undefined') why=null;\n /*\n note: namespace names should *not* end in #;\n the # will get added during qname processing */\n\n this._bindings = new pyjslib_Dict([]);\n this._flags = flags;\n if ((thisDoc != \"\")) {\n assertFudge((thisDoc.indexOf(\":\") >= 0), ( \"Document URI not absolute: \" + thisDoc ) );\n this._bindings[\"\"] = ( ( thisDoc + \"#\" ) );\n }\n this._store = store;\n if (genPrefix) {\n store.setGenPrefix(genPrefix);\n }\n this._thisDoc = thisDoc;\n this.source = store.sym(thisDoc);\n this.lines = 0;\n this.statementCount = 0;\n this.startOfLine = 0;\n this.previousLine = 0;\n this._genPrefix = genPrefix;\n this.keywords = new pyjslib_List([\"a\", \"this\", \"bind\", \"has\", \"is\", \"of\", \"true\", \"false\"]);\n this.keywordsSet = 0;\n this._anonymousNodes = new pyjslib_Dict([]);\n this._variables = new pyjslib_Dict([]);\n this._parentVariables = new pyjslib_Dict([]);\n this._reason = why;\n this._reason2 = null;\n if (diag_tracking) {\n this._reason2 = why_BecauseOfData(store.sym(thisDoc), this._reason);\n }\n if (baseURI) {\n this._baseURI = baseURI;\n }\n else {\n if (thisDoc) {\n this._baseURI = thisDoc;\n }\n else {\n this._baseURI = null;\n }\n }\n assertFudge(!(this._baseURI) || (this._baseURI.indexOf(\":\") >= 0));\n if (!(this._genPrefix)) {\n if (this._thisDoc) {\n this._genPrefix = ( this._thisDoc + \"#_g\" ) ;\n }\n else {\n this._genPrefix = RDFSink_uniqueURI();\n }\n }\n if ((openFormula == null)) {\n if (this._thisDoc) {\n this._formula = store.formula( ( thisDoc + \"#_formula\" ) );\n }\n else {\n this._formula = store.formula();\n }\n }\n else {\n this._formula = openFormula;\n }\n this._context = this._formula;\n this._parentContext = null;\n}\n__SinkParser.prototype.here = function(i) {\n return ( ( ( ( this._genPrefix + \"_L\" ) + this.lines ) + \"C\" ) + ( ( i - this.startOfLine ) + 1 ) ) ;\n};\n__SinkParser.prototype.formula = function() {\n return this._formula;\n};\n__SinkParser.prototype.loadStream = function(stream) {\n return this.loadBuf(stream.read());\n};\n__SinkParser.prototype.loadBuf = function(buf) {\n /*\n Parses a buffer and returns its top level formula*/\n\n this.startDoc();\n this.feed(buf);\n return this.endDoc();\n};\n__SinkParser.prototype.feed = function(octets) {\n /*\n Feed an octet stream tothe parser\n\n if BadSyntax is raised, the string\n passed in the exception object is the\n remainder after any statements have been parsed.\n So if there is more data to feed to the\n parser, it should be straightforward to recover.*/\n\n var str = octets.decode(\"utf-8\");\n var i = 0;\n while ((i >= 0)) {\n var j = this.skipSpace(str, i);\n if ((j < 0)) {\n return;\n }\n var i = this.directiveOrStatement(str, j);\n if ((i < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, j, \"expected directive or statement\");\n }\n }\n};\n__SinkParser.prototype.directiveOrStatement = function(str, h) {\n var i = this.skipSpace(str, h);\n if ((i < 0)) {\n return i;\n }\n var j = this.directive(str, i);\n if ((j >= 0)) {\n return this.checkDot(str, j);\n }\n var j = this.statement(str, i);\n if ((j >= 0)) {\n return this.checkDot(str, j);\n }\n return j;\n};\n__SinkParser.prototype.tok = function(tok, str, i) {\n /*\n Check for keyword. Space must have been stripped on entry and\n we must not be at end of file.*/\n var whitespace = \"\\t\\n\\v\\f\\r \";\n if ((pyjslib_slice(str, i, ( i + 1 ) ) == \"@\")) {\n var i = ( i + 1 ) ;\n }\n else {\n if ((ArrayIndexOf(this.keywords,tok) < 0)) {\n return -1;\n }\n }\n var k = ( i + pyjslib_len(tok) ) ;\n if ((pyjslib_slice(str, i, k) == tok) && (_notQNameChars.indexOf(str.charAt(k)) >= 0)) {\n return k;\n }\n else {\n return -1;\n }\n};\n__SinkParser.prototype.directive = function(str, i) {\n var j = this.skipSpace(str, i);\n if ((j < 0)) {\n return j;\n }\n var res = new pyjslib_List([]);\n var j = this.tok(\"bind\", str, i);\n if ((j > 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"keyword bind is obsolete: use @prefix\");\n }\n var j = this.tok(\"keywords\", str, i);\n if ((j > 0)) {\n var i = this.commaSeparatedList(str, j, res, false);\n if ((i < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"'@keywords' needs comma separated list of words\");\n }\n this.setKeywords(pyjslib_slice(res, null, null));\n if ((diag_chatty_flag > 80)) {\n diag_progress(\"Keywords \", this.keywords);\n }\n return i;\n }\n var j = this.tok(\"forAll\", str, i);\n if ((j > 0)) {\n var i = this.commaSeparatedList(str, j, res, true);\n if ((i < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"Bad variable list after @forAll\");\n }\n\n var __x = new pyjslib_Iterator(res);\n try {\n while (true) {\n var x = __x.next();\n\n\n if (ArrayIndexOf(this._variables,x) < 0 || (ArrayIndexOf(this._parentVariables,x) >= 0)) {\n this._variables[x] = ( this._context.newUniversal(x));\n }\n\n }\n } catch (e) {\n if (e != StopIteration) {\n throw e;\n }\n }\n\n return i;\n }\n var j = this.tok(\"forSome\", str, i);\n if ((j > 0)) {\n var i = this.commaSeparatedList(str, j, res, this.uri_ref2);\n if ((i < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"Bad variable list after @forSome\");\n }\n\n var __x = new pyjslib_Iterator(res);\n try {\n while (true) {\n var x = __x.next();\n\n\n this._context.declareExistential(x);\n\n }\n } catch (e) {\n if (e != StopIteration) {\n throw e;\n }\n }\n\n return i;\n }\n var j = this.tok(\"prefix\", str, i);\n if ((j >= 0)) {\n var t = new pyjslib_List([]);\n var i = this.qname(str, j, t);\n if ((i < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, j, \"expected qname after @prefix\");\n }\n var j = this.uri_ref2(str, i, t);\n if ((j < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"expected <uriref> after @prefix _qname_\");\n }\n var ns = t[1].uri;\n if (this._baseURI) {\n var ns = uripath_join(this._baseURI, ns);\n }\n else {\n assertFudge((ns.indexOf(\":\") >= 0), \"With no base URI, cannot handle relative URI for NS\");\n }\n assertFudge((ns.indexOf(\":\") >= 0));\n this._bindings[t[0][0]] = ( ns);\n\n this.bind(t[0][0], hexify(ns));\n return j;\n }\n var j = this.tok(\"base\", str, i);\n if ((j >= 0)) {\n var t = new pyjslib_List([]);\n var i = this.uri_ref2(str, j, t);\n if ((i < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, j, \"expected <uri> after @base \");\n }\n var ns = t[0].uri;\n if (this._baseURI) {\n var ns = uripath_join(this._baseURI, ns);\n }\n else {\n throw BadSyntax(this._thisDoc, this.lines, str, j, ( ( \"With no previous base URI, cannot use relative URI in @base <\" + ns ) + \">\" ) );\n }\n assertFudge((ns.indexOf(\":\") >= 0));\n this._baseURI = ns;\n return i;\n }\n return -1;\n};\n__SinkParser.prototype.bind = function(qn, uri) {\n if ((qn == \"\")) {\n }\n else {\n this._store.setPrefixForURI(qn, uri);\n }\n};\n__SinkParser.prototype.setKeywords = function(k) {\n /*\n Takes a list of strings*/\n\n if ((k == null)) {\n this.keywordsSet = 0;\n }\n else {\n this.keywords = k;\n this.keywordsSet = 1;\n }\n};\n__SinkParser.prototype.startDoc = function() {\n};\n__SinkParser.prototype.endDoc = function() {\n /*\n Signal end of document and stop parsing. returns formula*/\n\n return this._formula;\n};\n__SinkParser.prototype.makeStatement = function(quad) {\n quad[0].add(quad[2], quad[1], quad[3], this.source);\n this.statementCount += 1;\n};\n__SinkParser.prototype.statement = function(str, i) {\n var r = new pyjslib_List([]);\n var i = this.object(str, i, r);\n if ((i < 0)) {\n return i;\n }\n var j = this.property_list(str, i, r[0]);\n if ((j < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"expected propertylist\");\n }\n return j;\n};\n__SinkParser.prototype.subject = function(str, i, res) {\n return this.item(str, i, res);\n};\n__SinkParser.prototype.verb = function(str, i, res) {\n /*\n has _prop_\n is _prop_ of\n a\n =\n _prop_\n >- prop ->\n <- prop -<\n _operator_*/\n\n var j = this.skipSpace(str, i);\n if ((j < 0)) {\n return j;\n }\n var r = new pyjslib_List([]);\n var j = this.tok(\"has\", str, i);\n if ((j >= 0)) {\n var i = this.prop(str, j, r);\n if ((i < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, j, \"expected property after 'has'\");\n }\n res.push(new pyjslib_Tuple([\"->\", r[0]]));\n return i;\n }\n var j = this.tok(\"is\", str, i);\n if ((j >= 0)) {\n var i = this.prop(str, j, r);\n if ((i < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, j, \"expected <property> after 'is'\");\n }\n var j = this.skipSpace(str, i);\n if ((j < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"End of file found, expected property after 'is'\");\n return j;\n }\n var i = j;\n var j = this.tok(\"of\", str, i);\n if ((j < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"expected 'of' after 'is' <prop>\");\n }\n res.push(new pyjslib_Tuple([\"<-\", r[0]]));\n return j;\n }\n var j = this.tok(\"a\", str, i);\n if ((j >= 0)) {\n res.push(new pyjslib_Tuple([\"->\", this._store.sym(RDF_type_URI)]));\n return j;\n }\n if ((pyjslib_slice(str, i, ( i + 2 ) ) == \"<=\")) {\n res.push(new pyjslib_Tuple([\"<-\", this._store.sym( ( Logic_NS + \"implies\" ) )]));\n return ( i + 2 ) ;\n }\n if ((pyjslib_slice(str, i, ( i + 1 ) ) == \"=\")) {\n if ((pyjslib_slice(str, ( i + 1 ) , ( i + 2 ) ) == \">\")) {\n res.push(new pyjslib_Tuple([\"->\", this._store.sym( ( Logic_NS + \"implies\" ) )]));\n return ( i + 2 ) ;\n }\n res.push(new pyjslib_Tuple([\"->\", this._store.sym(DAML_sameAs_URI)]));\n return ( i + 1 ) ;\n }\n if ((pyjslib_slice(str, i, ( i + 2 ) ) == \":=\")) {\n res.push(new pyjslib_Tuple([\"->\", ( Logic_NS + \"becomes\" ) ]));\n return ( i + 2 ) ;\n }\n var j = this.prop(str, i, r);\n if ((j >= 0)) {\n res.push(new pyjslib_Tuple([\"->\", r[0]]));\n return j;\n }\n if ((pyjslib_slice(str, i, ( i + 2 ) ) == \">-\") || (pyjslib_slice(str, i, ( i + 2 ) ) == \"<-\")) {\n throw BadSyntax(this._thisDoc, this.lines, str, j, \">- ... -> syntax is obsolete.\");\n }\n return -1;\n};\n__SinkParser.prototype.prop = function(str, i, res) {\n return this.item(str, i, res);\n};\n__SinkParser.prototype.item = function(str, i, res) {\n return this.path(str, i, res);\n};\n__SinkParser.prototype.blankNode = function(uri) {\n return this._context.bnode(uri, this._reason2);\n};\n__SinkParser.prototype.path = function(str, i, res) {\n /*\n Parse the path production.\n */\n\n var j = this.nodeOrLiteral(str, i, res);\n if ((j < 0)) {\n return j;\n }\n while ((\"!^.\".indexOf(pyjslib_slice(str, j, ( j + 1 ) )) >= 0)) {\n var ch = pyjslib_slice(str, j, ( j + 1 ) );\n if ((ch == \".\")) {\n var ahead = pyjslib_slice(str, ( j + 1 ) , ( j + 2 ) );\n if (!(ahead) || (_notNameChars.indexOf(ahead) >= 0) && (\":?<[{(\".indexOf(ahead) < 0)) {\n break;\n }\n }\n var subj = res.pop();\n var obj = this.blankNode(this.here(j));\n var j = this.node(str, ( j + 1 ) , res);\n if ((j < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, j, \"EOF found in middle of path syntax\");\n }\n var pred = res.pop();\n if ((ch == \"^\")) {\n this.makeStatement(new pyjslib_Tuple([this._context, pred, obj, subj]));\n }\n else {\n this.makeStatement(new pyjslib_Tuple([this._context, pred, subj, obj]));\n }\n res.push(obj);\n }\n return j;\n};\n__SinkParser.prototype.anonymousNode = function(ln) {\n /*\n Remember or generate a term for one of these _: anonymous nodes*/\n\n var term = this._anonymousNodes[ln];\n if (term) {\n return term;\n }\n var term = this._store.bnode(ln);\n // var term = this._store.bnode(this._context, this._reason2); eh?\n this._anonymousNodes[ln] = ( term);\n return term;\n};\n__SinkParser.prototype.node = function(str, i, res, subjectAlready) {\n if (typeof subjectAlready == 'undefined') subjectAlready=null;\n /*\n Parse the <node> production.\n Space is now skipped once at the beginning\n instead of in multipe calls to self.skipSpace().\n */\n\n var subj = subjectAlready;\n var j = this.skipSpace(str, i);\n if ((j < 0)) {\n return j;\n }\n var i = j;\n var ch = pyjslib_slice(str, i, ( i + 1 ) );\n if ((ch == \"[\")) {\n var bnodeID = this.here(i);\n var j = this.skipSpace(str, ( i + 1 ) );\n if ((j < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"EOF after '['\");\n }\n if ((pyjslib_slice(str, j, ( j + 1 ) ) == \"=\")) {\n var i = ( j + 1 ) ;\n var objs = new pyjslib_List([]);\n var j = this.objectList(str, i, objs);\n\n if ((j >= 0)) {\n var subj = objs[0];\n if ((pyjslib_len(objs) > 1)) {\n\n var __obj = new pyjslib_Iterator(objs);\n try {\n while (true) {\n var obj = __obj.next();\n\n\n this.makeStatement(new pyjslib_Tuple([this._context, this._store.sym(DAML_sameAs_URI), subj, obj]));\n\n }\n } catch (e) {\n if (e != StopIteration) {\n throw e;\n }\n }\n\n }\n var j = this.skipSpace(str, j);\n if ((j < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"EOF when objectList expected after [ = \");\n }\n if ((pyjslib_slice(str, j, ( j + 1 ) ) == \";\")) {\n var j = ( j + 1 ) ;\n }\n }\n else {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"objectList expected after [= \");\n }\n }\n if ((subj == null)) {\n var subj = this.blankNode(bnodeID);\n }\n var i = this.property_list(str, j, subj);\n if ((i < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, j, \"property_list expected\");\n }\n var j = this.skipSpace(str, i);\n if ((j < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"EOF when ']' expected after [ <propertyList>\");\n }\n if ((pyjslib_slice(str, j, ( j + 1 ) ) != \"]\")) {\n throw BadSyntax(this._thisDoc, this.lines, str, j, \"']' expected\");\n }\n res.push(subj);\n return ( j + 1 ) ;\n }\n if ((ch == \"{\")) {\n var ch2 = pyjslib_slice(str, ( i + 1 ) , ( i + 2 ) );\n if ((ch2 == \"$\")) {\n i += 1;\n var j = ( i + 1 ) ;\n var mylist = new pyjslib_List([]);\n var first_run = true;\n while (1) {\n var i = this.skipSpace(str, j);\n if ((i < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"needed '$}', found end.\");\n }\n if ((pyjslib_slice(str, i, ( i + 2 ) ) == \"$}\")) {\n var j = ( i + 2 ) ;\n break;\n }\n if (!(first_run)) {\n if ((pyjslib_slice(str, i, ( i + 1 ) ) == \",\")) {\n i += 1;\n }\n else {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"expected: ','\");\n }\n }\n else {\n var first_run = false;\n }\n var item = new pyjslib_List([]);\n var j = this.item(str, i, item);\n if ((j < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"expected item in set or '$}'\");\n }\n mylist.push(item[0]);\n }\n res.push(this._store.newSet(mylist, this._context));\n return j;\n }\n else {\n var j = ( i + 1 ) ;\n var oldParentContext = this._parentContext;\n this._parentContext = this._context;\n var parentAnonymousNodes = this._anonymousNodes;\n var grandParentVariables = this._parentVariables;\n this._parentVariables = this._variables;\n this._anonymousNodes = new pyjslib_Dict([]);\n this._variables = this._variables.slice();\n var reason2 = this._reason2;\n this._reason2 = becauseSubexpression;\n if ((subj == null)) {\n var subj = this._store.formula();\n }\n this._context = subj;\n while (1) {\n var i = this.skipSpace(str, j);\n if ((i < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"needed '}', found end.\");\n }\n if ((pyjslib_slice(str, i, ( i + 1 ) ) == \"}\")) {\n var j = ( i + 1 ) ;\n break;\n }\n var j = this.directiveOrStatement(str, i);\n if ((j < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"expected statement or '}'\");\n }\n }\n this._anonymousNodes = parentAnonymousNodes;\n this._variables = this._parentVariables;\n this._parentVariables = grandParentVariables;\n this._context = this._parentContext;\n this._reason2 = reason2;\n this._parentContext = oldParentContext;\n res.push(subj.close());\n return j;\n }\n }\n if ((ch == \"(\")) {\n var thing_type = this._store.list;\n var ch2 = pyjslib_slice(str, ( i + 1 ) , ( i + 2 ) );\n if ((ch2 == \"$\")) {\n var thing_type = this._store.newSet;\n i += 1;\n }\n var j = ( i + 1 ) ;\n var mylist = new pyjslib_List([]);\n while (1) {\n var i = this.skipSpace(str, j);\n if ((i < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"needed ')', found end.\");\n }\n if ((pyjslib_slice(str, i, ( i + 1 ) ) == \")\")) {\n var j = ( i + 1 ) ;\n break;\n }\n var item = new pyjslib_List([]);\n var j = this.item(str, i, item);\n if ((j < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"expected item in list or ')'\");\n }\n mylist.push(item[0]);\n }\n res.push(thing_type(mylist, this._context));\n return j;\n }\n var j = this.tok(\"this\", str, i);\n if ((j >= 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"Keyword 'this' was ancient N3. Now use @forSome and @forAll keywords.\");\n res.push(this._context);\n return j;\n }\n var j = this.tok(\"true\", str, i);\n if ((j >= 0)) {\n res.push(true);\n return j;\n }\n var j = this.tok(\"false\", str, i);\n if ((j >= 0)) {\n res.push(false);\n return j;\n }\n if ((subj == null)) {\n var j = this.uri_ref2(str, i, res);\n if ((j >= 0)) {\n return j;\n }\n }\n return -1;\n};\n__SinkParser.prototype.property_list = function(str, i, subj) {\n /*\n Parse property list\n Leaves the terminating punctuation in the buffer\n */\n\n while (1) {\n var j = this.skipSpace(str, i);\n if ((j < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"EOF found when expected verb in property list\");\n return j;\n }\n if ((pyjslib_slice(str, j, ( j + 2 ) ) == \":-\")) {\n var i = ( j + 2 ) ;\n var res = new pyjslib_List([]);\n var j = this.node(str, i, res, subj);\n if ((j < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"bad {} or () or [] node after :- \");\n }\n var i = j;\n continue;\n }\n var i = j;\n var v = new pyjslib_List([]);\n var j = this.verb(str, i, v);\n if ((j <= 0)) {\n return i;\n }\n var objs = new pyjslib_List([]);\n var i = this.objectList(str, j, objs);\n if ((i < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, j, \"objectList expected\");\n }\n\n var __obj = new pyjslib_Iterator(objs);\n try {\n while (true) {\n var obj = __obj.next();\n\n\n var pairFudge = v[0];\n var dir = pairFudge[0];\n var sym = pairFudge[1];\n if ((dir == \"->\")) {\n this.makeStatement(new pyjslib_Tuple([this._context, sym, subj, obj]));\n }\n else {\n this.makeStatement(new pyjslib_Tuple([this._context, sym, obj, subj]));\n }\n\n }\n } catch (e) {\n if (e != StopIteration) {\n throw e;\n }\n }\n\n var j = this.skipSpace(str, i);\n if ((j < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, j, \"EOF found in list of objects\");\n return j;\n }\n if ((pyjslib_slice(str, i, ( i + 1 ) ) != \";\")) {\n return i;\n }\n var i = ( i + 1 ) ;\n }\n};\n__SinkParser.prototype.commaSeparatedList = function(str, j, res, ofUris) {\n /*\n return value: -1 bad syntax; >1 new position in str\n res has things found appended\n\n Used to use a final value of the function to be called, e.g. this.bareWord\n but passing the function didn't work fo js converion pyjs\n */\n\n var i = this.skipSpace(str, j);\n if ((i < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"EOF found expecting comma sep list\");\n return i;\n }\n if ((str.charAt(i) == \".\")) {\n return j;\n }\n if (ofUris) {\n var i = this.uri_ref2(str, i, res);\n }\n else {\n var i = this.bareWord(str, i, res);\n }\n if ((i < 0)) {\n return -1;\n }\n while (1) {\n var j = this.skipSpace(str, i);\n if ((j < 0)) {\n return j;\n }\n var ch = pyjslib_slice(str, j, ( j + 1 ) );\n if ((ch != \",\")) {\n if ((ch != \".\")) {\n return -1;\n }\n return j;\n }\n if (ofUris) {\n var i = this.uri_ref2(str, ( j + 1 ) , res);\n }\n else {\n var i = this.bareWord(str, ( j + 1 ) , res);\n }\n if ((i < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"bad list content\");\n return i;\n }\n }\n};\n__SinkParser.prototype.objectList = function(str, i, res) {\n var i = this.object(str, i, res);\n if ((i < 0)) {\n return -1;\n }\n while (1) {\n var j = this.skipSpace(str, i);\n if ((j < 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, j, \"EOF found after object\");\n return j;\n }\n if ((pyjslib_slice(str, j, ( j + 1 ) ) != \",\")) {\n return j;\n }\n var i = this.object(str, ( j + 1 ) , res);\n if ((i < 0)) {\n return i;\n }\n }\n};\n__SinkParser.prototype.checkDot = function(str, i) {\n var j = this.skipSpace(str, i);\n if ((j < 0)) {\n return j;\n }\n if ((pyjslib_slice(str, j, ( j + 1 ) ) == \".\")) {\n return ( j + 1 ) ;\n }\n if ((pyjslib_slice(str, j, ( j + 1 ) ) == \"}\")) {\n return j;\n }\n if ((pyjslib_slice(str, j, ( j + 1 ) ) == \"]\")) {\n return j;\n }\n throw BadSyntax(this._thisDoc, this.lines, str, j, \"expected '.' or '}' or ']' at end of statement\");\n return i;\n};\n__SinkParser.prototype.uri_ref2 = function(str, i, res) {\n /*\n Generate uri from n3 representation.\n\n Note that the RDF convention of directly concatenating\n NS and local name is now used though I prefer inserting a '#'\n to make the namesapces look more like what XML folks expect.\n */\n\n var qn = new pyjslib_List([]);\n var j = this.qname(str, i, qn);\n if ((j >= 0)) {\n var pairFudge = qn[0];\n var pfx = pairFudge[0];\n var ln = pairFudge[1];\n if ((pfx == null)) {\n assertFudge(0, \"not used?\");\n var ns = ( this._baseURI + ADDED_HASH ) ;\n }\n else {\n var ns = this._bindings[pfx];\n if (!(ns)) {\n if ((pfx == \"_\")) {\n res.push(this.anonymousNode(ln));\n return j;\n }\n throw BadSyntax(this._thisDoc, this.lines, str, i, ( ( \"Prefix \" + pfx ) + \" not bound.\" ) );\n }\n }\n var symb = this._store.sym( ( ns + ln ) );\n if ((ArrayIndexOf(this._variables, symb) >= 0)) {\n res.push(this._variables[symb]);\n }\n else {\n res.push(symb);\n }\n return j;\n }\n var i = this.skipSpace(str, i);\n if ((i < 0)) {\n return -1;\n }\n if ((str.charAt(i) == \"?\")) {\n var v = new pyjslib_List([]);\n var j = this.variable(str, i, v);\n if ((j > 0)) {\n res.push(v[0]);\n return j;\n }\n return -1;\n }\n else if ((str.charAt(i) == \"<\")) {\n var i = ( i + 1 ) ;\n var st = i;\n while ((i < pyjslib_len(str))) {\n if ((str.charAt(i) == \">\")) {\n var uref = pyjslib_slice(str, st, i);\n if (this._baseURI) {\n var uref = uripath_join(this._baseURI, uref);\n }\n else {\n assertFudge((uref.indexOf(\":\") >= 0), \"With no base URI, cannot deal with relative URIs\");\n }\n if ((pyjslib_slice(str, ( i - 1 ) , i) == \"#\") && !((pyjslib_slice(uref, -1, null) == \"#\"))) {\n var uref = ( uref + \"#\" ) ;\n }\n var symb = this._store.sym(uref);\n if ((ArrayIndexOf(this._variables,symb) >= 0)) {\n res.push(this._variables[symb]);\n }\n else {\n res.push(symb);\n }\n return ( i + 1 ) ;\n }\n var i = ( i + 1 ) ;\n }\n throw BadSyntax(this._thisDoc, this.lines, str, j, \"unterminated URI reference\");\n }\n else if (this.keywordsSet) {\n var v = new pyjslib_List([]);\n var j = this.bareWord(str, i, v);\n if ((j < 0)) {\n return -1;\n }\n if ((ArrayIndexOf(this.keywords, v[0]) >= 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, i, ( ( \"Keyword \\\"\" + v[0] ) + \"\\\" not allowed here.\" ) );\n }\n res.push(this._store.sym( ( this._bindings[\"\"] + v[0] ) ));\n return j;\n }\n else {\n return -1;\n }\n};\n__SinkParser.prototype.skipSpace = function(str, i) {\n /*\n Skip white space, newlines and comments.\n return -1 if EOF, else position of first non-ws character*/\n\n var whitespace = ' \\n\\r\\t\\f\\x0b\\xa0\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u200b\\u2028\\u2029\\u3000';\n for (var j = (i ? i : 0); j < str.length; j++) {\n var ch = str.charAt(j);\n // console.log(\" skipspace j= \"+j + \" i= \" + i + \" n= \" + str.length);\n // console.log(\" skipspace ch <\" + ch + \">\");\n if (whitespace.indexOf(ch) < 0 ) { //not ws\n // console.log(\" skipspace 2 ch <\" + ch + \">\");\n if( str.charAt(j)==='#' ) {\n for (;; j++) {\n // console.log(\" skipspace2 j= \"+j + \" i= \" + i + \" n= \" + str.length);\n if (j === str.length) {\n return -1; // EOF\n }\n if (str.charAt(j) === '\\n') {\n this.lines = this.lines + 1;\n break;\n }\n };\n } else { // Not hash - something interesting\n // console.log(\" skipspace 3 ch <\" + ch + \">\");\n return j\n }\n } else { // Whitespace\n // console.log(\" skipspace 5 ch <\" + ch + \">\");\n if (str.charAt(j) === '\\n') {\n this.lines = this.lines + 1;\n }\n }\n } // next j\n return -1; // EOF\n};\n\n__SinkParser.prototype.variable = function(str, i, res) {\n /*\n ?abc -> variable(:abc)\n */\n\n var j = this.skipSpace(str, i);\n if ((j < 0)) {\n return -1;\n }\n if ((pyjslib_slice(str, j, ( j + 1 ) ) != \"?\")) {\n return -1;\n }\n var j = ( j + 1 ) ;\n var i = j;\n if ((\"0123456789-\".indexOf(str.charAt(j)) >= 0)) {\n throw BadSyntax(this._thisDoc, this.lines, str, j, ( ( \"Varible name can't start with '\" + str.charAt(j) ) + \"s'\" ) );\n return -1;\n }\n while ((i < pyjslib_len(str)) && (_notNameChars.indexOf(str.charAt(i)) < 0)) {\n var i = ( i + 1 ) ;\n }\n if ((this._parentContext == null)) {\n throw BadSyntax(this._thisDoc, this.lines, str, j, ( \"Can't use ?xxx syntax for variable in outermost level: \" + pyjslib_slice(str, ( j - 1 ) , i) ) );\n }\n res.push(this._store.variable(pyjslib_slice(str, j, i)));\n return i;\n};\n__SinkParser.prototype.bareWord = function(str, i, res) {\n /*\n abc -> :abc\n */\n\n var j = this.skipSpace(str, i);\n if ((j < 0)) {\n return -1;\n }\n var ch = str.charAt(j);\n if ((\"0123456789-\".indexOf(ch) >= 0)) {\n return -1;\n }\n if ((_notNameChars.indexOf(ch) >= 0)) {\n return -1;\n }\n var i = j;\n while ((i < pyjslib_len(str)) && (_notNameChars.indexOf(str.charAt(i)) < 0)) {\n var i = ( i + 1 ) ;\n }\n res.push(pyjslib_slice(str, j, i));\n return i;\n};\n__SinkParser.prototype.qname = function(str, i, res) {\n /*\n\n xyz:def -> ('xyz', 'def')\n If not in keywords and keywordsSet: def -> ('', 'def')\n :def -> ('', 'def')\n */\n\n var i = this.skipSpace(str, i);\n if ((i < 0)) {\n return -1;\n }\n var c = str.charAt(i);\n if ((\"0123456789-+\".indexOf(c) >= 0)) {\n return -1;\n }\n if ((_notNameChars.indexOf(c) < 0)) {\n var ln = c;\n var i = ( i + 1 ) ;\n while ((i < pyjslib_len(str))) {\n var c = str.charAt(i);\n if ((_notNameChars.indexOf(c) < 0)) {\n var ln = ( ln + c ) ;\n var i = ( i + 1 ) ;\n }\n else {\n break;\n }\n }\n }\n else {\n var ln = \"\";\n }\n if ((i < pyjslib_len(str)) && (str.charAt(i) == \":\")) {\n var pfx = ln;\n var i = ( i + 1 ) ;\n var ln = \"\";\n while ((i < pyjslib_len(str))) {\n var c = str.charAt(i);\n if ((_notNameChars.indexOf(c) < 0)) {\n var ln = ( ln + c ) ;\n var i = ( i + 1 ) ;\n }\n else {\n break;\n }\n }\n res.push(new pyjslib_Tuple([pfx, ln]));\n return i;\n }\n else {\n if (ln && this.keywordsSet && (ArrayIndexOf(this.keywords, ln) < 0)) {\n res.push(new pyjslib_Tuple([\"\", ln]));\n return i;\n }\n return -1;\n }\n};\n__SinkParser.prototype.object = function(str, i, res) {\n var j = this.subject(str, i, res);\n if ((j >= 0)) {\n return j;\n }\n else {\n var j = this.skipSpace(str, i);\n if ((j < 0)) {\n return -1;\n }\n else {\n var i = j;\n }\n var delim = null\n let ch = str.charAt(i)\n if ((ch == \"\\\"\" || ch == \"'\")) {\n if (str.slice(i, ( i + 3 ) == ch + ch)) {\n delim = ch + ch + ch;\n }\n else {\n delim = ch;\n }\n var i = ( i + pyjslib_len(delim) ) ;\n var pairFudge = this.strconst(str, i, delim);\n var j = pairFudge[0];\n var s = pairFudge[1];\n res.push(this._store.literal(s));\n diag_progress(\"New string const \", s, j);\n return j;\n }\n else {\n return -1;\n }\n }\n};\n__SinkParser.prototype.nodeOrLiteral = function(str, i, res) {\n var j = this.node(str, i, res);\n if ((j >= 0)) {\n return j;\n }\n else {\n var j = this.skipSpace(str, i);\n if ((j < 0)) {\n return -1;\n }\n else {\n var i = j;\n }\n var ch = str.charAt(i);\n if ((\"-+0987654321\".indexOf(ch) >= 0)) {\n\n\t datetime_syntax.lastIndex = 0;\n var m = datetime_syntax.exec(str.slice(i));\n if ((m != null)) {\n\t\t// j = ( i + datetime_syntax.lastIndex ) ;\n\t\tvar val = m[0];\n\t\tj = i + val.length;\n\t\tif ((val.indexOf(\"T\") >= 0)) {\n\t\t res.push(this._store.literal(val, undefined, this._store.sym(DATETIME_DATATYPE)));\n\t\t} else {\n\t\t res.push(this._store.literal(val, undefined, this._store.sym(DATE_DATATYPE)));\n\t\t}\n\n\t } else {\n\t\tnumber_syntax.lastIndex = 0;\n\t\tvar m = number_syntax.exec(str.slice(i));\n\t\tif ((m == null)) {\n\t\t throw BadSyntax(this._thisDoc, this.lines, str, i, \"Bad number or date syntax\");\n\t\t}\n\t\tj = ( i + number_syntax.lastIndex ) ;\n\t\tvar val = pyjslib_slice(str, i, j);\n\t\tif ((val.indexOf(\"e\") >= 0)) {\n\t\t res.push(this._store.literal(parseFloat(val), undefined, this._store.sym(FLOAT_DATATYPE)));\n\t\t}\n\t\telse if ((pyjslib_slice(str, i, j).indexOf(\".\") >= 0)) {\n\t\t res.push(this._store.literal(parseFloat(val), undefined, this._store.sym(DECIMAL_DATATYPE)));\n\t\t}\n\t\telse {\n\t\t res.push(this._store.literal(parseInt(val), undefined, this._store.sym(INTEGER_DATATYPE)));\n\t\t}\n\t };\n\t return j; // Where we have got up to\n }\n if ((str.charAt(i) == \"\\\"\")) {\n if ((pyjslib_slice(str, i, ( i + 3 ) ) == \"\\\"\\\"\\\"\")) {\n var delim = \"\\\"\\\"\\\"\";\n }\n else {\n var delim = \"\\\"\";\n }\n var i = ( i + pyjslib_len(delim) ) ;\n var dt = null;\n var pairFudge = this.strconst(str, i, delim);\n var j = pairFudge[0];\n var s = pairFudge[1];\n var lang = null;\n if ((pyjslib_slice(str, j, ( j + 1 ) ) == \"@\")) {\n langcode.lastIndex = 0;\n\n var m = langcode.exec(str.slice( ( j + 1 ) ));\n if ((m == null)) {\n throw BadSyntax(this._thisDoc, startline, str, i, \"Bad language code syntax on string literal, after @\");\n }\n var i = ( ( langcode.lastIndex + j ) + 1 ) ;\n\n var lang = pyjslib_slice(str, ( j + 1 ) , i);\n var j = i;\n }\n if ((pyjslib_slice(str, j, ( j + 2 ) ) == \"^^\")) {\n var res2 = new pyjslib_List([]);\n var j = this.uri_ref2(str, ( j + 2 ) , res2);\n var dt = res2[0];\n }\n res.push(this._store.literal(s, lang, dt));\n return j;\n }\n else {\n return -1;\n }\n }\n};\n__SinkParser.prototype.strconst = function(str, i, delim) {\n /*\n parse an N3 string constant delimited by delim.\n return index, val\n */\n\n var j = i;\n var ustr = \"\";\n var startline = this.lines;\n while ((j < pyjslib_len(str))) {\n var i = ( j + pyjslib_len(delim) ) ;\n if ((pyjslib_slice(str, j, i) == delim)) {\n return new pyjslib_Tuple([i, ustr]);\n }\n if ((str.charAt(j) == \"\\\"\")) {\n var ustr = ( ustr + \"\\\"\" ) ;\n var j = ( j + 1 ) ;\n continue;\n }\n interesting.lastIndex = 0;\n var m = interesting.exec(str.slice(j));\n if (!(m)) {\n throw BadSyntax(this._thisDoc, startline, str, j, ( ( ( \"Closing quote missing in string at ^ in \" + pyjslib_slice(str, ( j - 20 ) , j) ) + \"^\" ) + pyjslib_slice(str, j, ( j + 20 ) ) ) );\n }\n var i = ( ( j + interesting.lastIndex ) - 1 ) ;\n var ustr = ( ustr + pyjslib_slice(str, j, i) ) ;\n var ch = str.charAt(i);\n if ((ch == \"\\\"\")) {\n var j = i;\n continue;\n }\n else if ((ch == \"\\r\")) {\n var j = ( i + 1 ) ;\n continue;\n }\n else if ((ch == \"\\n\")) {\n if ((delim == \"\\\"\")) {\n throw BadSyntax(this._thisDoc, startline, str, i, \"newline found in string literal\");\n }\n this.lines = ( this.lines + 1 ) ;\n var ustr = ( ustr + ch ) ;\n var j = ( i + 1 ) ;\n this.previousLine = this.startOfLine;\n this.startOfLine = j;\n }\n else if ((ch == \"\\\\\")) {\n var j = ( i + 1 ) ;\n var ch = pyjslib_slice(str, j, ( j + 1 ) );\n if (!(ch)) {\n throw BadSyntax(this._thisDoc, startline, str, i, \"unterminated string literal (2)\");\n }\n var k = string_find(\"abfrtvn\\\\\\\"\", ch);\n if ((k >= 0)) {\n var uch = \"\\a\\b\\f\\r\\t\\v\\n\\\\\\\"\".charAt(k);\n var ustr = ( ustr + uch ) ;\n var j = ( j + 1 ) ;\n }\n else if ((ch == \"u\")) {\n var pairFudge = this.uEscape(str, ( j + 1 ) , startline);\n var j = pairFudge[0];\n var ch = pairFudge[1];\n var ustr = ( ustr + ch ) ;\n }\n else if ((ch == \"U\")) {\n var pairFudge = this.UEscape(str, ( j + 1 ) , startline);\n var j = pairFudge[0];\n var ch = pairFudge[1];\n var ustr = ( ustr + ch ) ;\n }\n else {\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"bad escape\");\n }\n }\n }\n throw BadSyntax(this._thisDoc, this.lines, str, i, \"unterminated string literal\");\n};\n__SinkParser.prototype.uEscape = function(str, i, startline) {\n var j = i;\n var count = 0;\n var value = 0;\n while ((count < 4)) {\n var chFudge = pyjslib_slice(str, j, ( j + 1 ) );\n var ch = chFudge.toLowerCase();\n var j = ( j + 1 ) ;\n if ((ch == \"\")) {\n throw BadSyntax(this._thisDoc, startline, str, i, \"unterminated string literal(3)\");\n }\n var k = string_find(\"0123456789abcdef\", ch);\n if ((k < 0)) {\n throw BadSyntax(this._thisDoc, startline, str, i, \"bad string literal hex escape\");\n }\n var value = ( ( value * 16 ) + k ) ;\n var count = ( count + 1 ) ;\n }\n var uch = String.fromCharCode(value);\n return new pyjslib_Tuple([j, uch]);\n};\n__SinkParser.prototype.UEscape = function(str, i, startline) {\n var j = i;\n var count = 0;\n var value = \"\\\\U\";\n while ((count < 8)) {\n var chFudge = pyjslib_slice(str, j, ( j + 1 ) );\n var ch = chFudge.toLowerCase();\n var j = ( j + 1 ) ;\n if ((ch == \"\")) {\n throw BadSyntax(this._thisDoc, startline, str, i, \"unterminated string literal(3)\");\n }\n var k = string_find(\"0123456789abcdef\", ch);\n if ((k < 0)) {\n throw BadSyntax(this._thisDoc, startline, str, i, \"bad string literal hex escape\");\n }\n var value = ( value + ch ) ;\n var count = ( count + 1 ) ;\n }\n var uch = stringFromCharCode( ( ( \"0x\" + pyjslib_slice(value, 2, 10) ) - 0 ) );\n return new pyjslib_Tuple([j, uch]);\n};\nfunction OLD_BadSyntax(uri, lines, str, i, why) {\n return new __OLD_BadSyntax(uri, lines, str, i, why);\n}\nfunction __OLD_BadSyntax(uri, lines, str, i, why) {\n this._str = str.encode(\"utf-8\");\n this._str = str;\n this._i = i;\n this._why = why;\n this.lines = lines;\n this._uri = uri;\n}\n__OLD_BadSyntax.prototype.toString = function() {\n var str = this._str;\n var i = this._i;\n var st = 0;\n if ((i > 60)) {\n var pre = \"...\";\n var st = ( i - 60 ) ;\n }\n else {\n var pre = \"\";\n }\n if (( ( pyjslib_len(str) - i ) > 60)) {\n var post = \"...\";\n }\n else {\n var post = \"\";\n }\n return \"Line %i of <%s>: Bad syntax (%s) at ^ in:\\n\\\"%s%s^%s%s\\\"\" % new pyjslib_Tuple([ ( this.lines + 1 ) , this._uri, this._why, pre, pyjslib_slice(str, st, i), pyjslib_slice(str, i, ( i + 60 ) ), post]);\n};\nfunction BadSyntax(uri, lines, str, i, why) {\n return ( ( ( ( ( ( ( ( \"Line \" + ( lines + 1 ) ) + \" of <\" ) + uri ) + \">: Bad syntax: \" ) + why ) + \"\\nat: \\\"\" ) + pyjslib_slice(str, i, ( i + 30 ) ) ) + \"\\\"\" ) ;\n}\n\n\nfunction stripCR(str) {\n var res = \"\";\n\n var __ch = new pyjslib_Iterator(str);\n try {\n while (true) {\n var ch = __ch.next();\n\n\n if ((ch != \"\\r\")) {\n var res = ( res + ch ) ;\n }\n\n }\n } catch (e) {\n if (e != StopIteration) {\n throw e;\n }\n }\n\n return res;\n}\n\n\nfunction dummyWrite(x) {\n}\n\nreturn SinkParser;\n\n})();\n\nmodule.exports = N3Parser\n\n\n\n// WEBPACK FOOTER //\n// ./src/n3parser.js","// Matching a formula against another formula\n// Assync as well as Synchronously\n//\n// W3C open source licence 2005.\n//\n// This builds on term.js, match.js (and identity.js?)\n// to allow a query of a formula.\n//\n// Here we introduce for the first time a subclass of term: variable.\n//\n// SVN ID: $Id: query.js 25116 2008-11-15 16:13:48Z timbl $\n\n// Variable\n//\n// Compare with BlankNode. They are similar, but a variable\n// stands for something whose value is to be returned.\n// Also, users name variables and want the same name back when stuff is printed\n/* jsl:option explicit*/ // Turn on JavaScriptLint variable declaration checking\n\nimport IndexedFormula from './indexed-formula'\nconst log = require('./log')\nconst docpart = require('./uri').docpart\n\nconst defaultDocumentURI = IndexedFormula.defaultGraphURI\n/**\n * Query class, for tracking queries the user has in the UI.\n */\nclass Query {\n constructor (name, id) {\n this.pat = new IndexedFormula() // The pattern to search for\n this.vars = [] // Used by UI code but not in query.js\n // this.orderBy = [] // Not used yet\n this.name = name\n this.id = id\n }\n}\n\n/**\n * This function will match a pattern to the current kb\n *\n * The callback function is called whenever a match is found\n * When fetcher is supplied this will be called to satisfy any resource requests\n * currently not in the kb. The fetcher function needs to be defined manualy and\n * should call $rdf.Util.AJAR_handleNewTerm to process the requested resource.\n *\n * @param\tmyQuery,\ta knowledgebase containing a pattern to use as query\n * @param\tcallback, \twhenever the pattern in myQuery is met this is called with\n * \t\t\t\t\t\tthe new bindings as parameter\n * @param\tfetcher,\twhenever a resource needs to be loaded this gets called IGNORED OBSOLETE\n * f.fetecher is used as a Fetcher instance to do this.\n * @param onDone callback when\n */\nfunction indexedFormulaQuery (myQuery, callback, fetcher, onDone) {\n // var kb = this\n // /////////// Debug strings\n var bindingDebug = function (b) {\n var str = ''\n var v\n for (v in b) {\n if (b.hasOwnProperty(v)) {\n str += ' ' + v + ' -> ' + b[v]\n }\n }\n return str\n }\n\n var bindingsDebug = function (nbs) {\n var str = 'Bindings: '\n var i\n var n = nbs.length\n for (i = 0; i < n; i++) {\n str += bindingDebug(nbs[i][0]) + ';\\n\\t'\n }\n return str\n } // bindingsDebug\n\n // Unification: see also\n // http://www.w3.org/2000/10/swap/term.py\n // for similar things in python\n //\n // Unification finds all bindings such that when the binding is applied\n // to one term it is equal to the other.\n // Returns: a list of bindings, where a binding is an associative array\n // mapping variuable to value.\n\n var unifyTerm = function (self, other, bindings, formula) {\n var actual = bindings[self]\n if (actual === undefined) { // Not mapped\n if (self.isVar) {\n /* if (self.isBlank) //bnodes are existential variables\n {\n if (self.toString() == other.toString()) return [[ [], null]]\n else return []\n }*/\n var b = []\n b[self] = other\n return [[ b, null ]] // Match\n }\n actual = self\n }\n if (!actual.complexType) {\n if (formula.redirections[actual]) {\n actual = formula.redirections[actual]\n }\n if (formula.redirections[other]) {\n other = formula.redirections[other]\n }\n if (actual.sameTerm(other) || (actual.uri && actual.uri === defaultDocumentURI)) { // Used to mean 'any graph' in a query\n return [[ [], null ]]\n }\n return []\n }\n if (self instanceof Array) {\n if (!(other instanceof Array)) {\n return []\n }\n return unifyContents(self, other, bindings)\n }\n throw new Error('query.js: oops - code not written yet')\n // return undefined; // for lint - no jslint objects to unreachables\n // return actual.unifyContents(other, bindings)\n } // unifyTerm\n\n var unifyContents = function (self, other, bindings, formula) {\n var nbs2\n if (self.length !== other.length) {\n return [] // no way\n }\n if (!self.length) {\n return [[ [], null ]] // Success\n }\n var nbs = unifyTerm(self[0], other[0], bindings, formula)\n if (nbs.length === 0) {\n return nbs\n }\n var res = []\n var i\n var n = nbs.length\n var nb\n var j\n var m\n var v\n var nb2\n var bindings2\n for (i = 0; i < n; i++) { // for each possibility from the first term\n nb = nbs[i][0] // new bindings\n bindings2 = []\n for (v in nb) {\n if (nb.hasOwnProperty(v)) {\n bindings2[v] = nb[v] // copy\n }\n }\n for (v in bindings) {\n if (bindings.hasOwnProperty(v)) {\n bindings2[v] = bindings[v] // copy\n }\n }\n nbs2 = unifyContents(self.slice(1), other.slice(1), bindings2, formula)\n m = nbs2.length\n for (j = 0; j < m; j++) {\n nb2 = nbs2[j][0] // @@@@ no idea whether this is used or right\n for (v in nb) {\n if (nb.hasOwnProperty(v)) {\n nb2[v] = nb[v]\n }\n }\n res.push([nb2, null])\n }\n }\n return res\n } // unifyContents\n\n // Matching\n //\n // Matching finds all bindings such that when the binding is applied\n // to one term it is equal to the other term. We only match formulae.\n\n /** if x is not in the bindings array, return the var; otherwise, return the bindings **/\n var bind = function (x, binding) {\n var y = binding[x]\n if (y === undefined) {\n return x\n }\n return y\n }\n\n // When there are OPTIONAL clauses, we must return bindings without them if none of them\n // succeed. However, if any of them do succeed, we should not. (This is what branchCount()\n // tracked. The problem currently is (2011/7) that when several optionals exist, and they\n // all match, multiple sets of bindings are returned, each with one optional filled in.)\n\n var union = function (a, b) {\n var c = {}\n var x\n for (x in a) {\n if (a.hasOwnProperty(x)) {\n c[x] = a[x]\n }\n }\n for (x in b) {\n if (b.hasOwnProperty(x)) {\n c[x] = b[x]\n }\n }\n return c\n }\n\n var OptionalBranchJunction = function (originalCallback, trunkBindings) {\n this.trunkBindings = trunkBindings\n this.originalCallback = originalCallback\n this.branches = []\n // this.results = []; // result[i] is an array of bindings for branch i\n // this.done = {}; // done[i] means all/any results are in for branch i\n // this.count = {}\n return this\n }\n\n OptionalBranchJunction.prototype.checkAllDone = function () {\n var i\n for (i = 0; i < this.branches.length; i++) {\n if (!this.branches[i].done) {\n return\n }\n }\n log.debug('OPTIONAL BIDNINGS ALL DONE:')\n this.doCallBacks(this.branches.length - 1, this.trunkBindings)\n }\n // Recrursively generate the cross product of the bindings\n OptionalBranchJunction.prototype.doCallBacks = function (b, bindings) {\n var j\n if (b < 0) {\n return this.originalCallback(bindings)\n }\n for (j = 0; j < this.branches[b].results.length; j++) {\n this.doCallBacks(b - 1, union(bindings, this.branches[b].results[j]))\n }\n }\n\n // A mandatory branch is the normal one, where callbacks\n // are made immediately and no junction is needed.\n // Might be useful for onFinsihed callback for query API.\n var MandatoryBranch = function (callback, onDone) {\n this.count = 0\n this.success = false\n this.done = false\n // this.results = []\n this.callback = callback\n this.onDone = onDone\n // this.junction = junction\n // junction.branches.push(this)\n return this\n }\n\n MandatoryBranch.prototype.reportMatch = function (bindings) {\n // log.error(\"@@@@ query.js 1\"); // @@\n this.callback(bindings)\n this.success = true\n }\n\n MandatoryBranch.prototype.reportDone = function () {\n this.done = true\n log.info('Mandatory query branch finished.***')\n if (this.onDone !== undefined) {\n this.onDone()\n }\n }\n\n // An optional branch hoards its results.\n var OptionalBranch = function (junction) {\n this.count = 0\n this.done = false\n this.results = []\n this.junction = junction\n junction.branches.push(this)\n return this\n }\n\n OptionalBranch.prototype.reportMatch = function (bindings) {\n this.results.push(bindings)\n }\n\n OptionalBranch.prototype.reportDone = function () {\n log.debug('Optional branch finished - results.length = ' + this.results.length)\n if (this.results.length === 0) { // This is what optional means: if no hits,\n this.results.push({}) // mimic success, but with no bindings\n log.debug(\"Optional branch FAILED - that's OK.\")\n }\n this.done = true\n this.junction.checkAllDone()\n }\n\n /** prepare -- sets the index of the item to the possible matches\n * @param f - formula\n * @param item - an Statement, possibly w/ vars in it\n * @param bindings - Bindings so far\n * @returns false if the query fails -- there are no items that match **/\n var prepare = function (f, item, bindings) {\n var terms, termIndex, i, ind\n item.nvars = 0\n item.index = null\n // if (!f.statements) log.warn(\"@@@ prepare: f is \"+f)\n // log.debug(\"Prepare: f has \"+ f.statements.length)\n // log.debug(\"Prepare: Kb size \"+f.statements.length+\" Preparing \"+item)\n\n terms = [item.subject, item.predicate, item.object, item.why]\n ind = [f.subjectIndex, f.predicateIndex, f.objectIndex, f.whyIndex]\n for (i = 0; i < 4; i++) {\n let t = terms[i]\n // console.log(\" Prepare (\" + t + \") \"+(t in bindings))\n if (t.uri && t.uri === defaultDocumentURI) { // chrome:session\n // console.log(' query: Ignoring slot ' + i)\n } else if (t.isVar && !(bindings[t] !== undefined)) {\n item.nvars++\n } else {\n t = bind(terms[i], bindings) // returns the RDF binding if bound, otherwise itself\n // if (terms[i]!=bind(terms[i],bindings) alert(\"Term: \"+terms[i]+\"Binding: \"+bind(terms[i], bindings))\n if (f.redirections[t.hashString()]) {\n t = f.redirections[t.hashString()] // redirect\n }\n termIndex = ind[i][t.hashString()]\n\n if (!termIndex) {\n item.index = []\n return false // Query line cannot match\n }\n if ((item.index === null) || (item.index.length > termIndex.length)) { // Find smallest index\n item.index = termIndex\n }\n }\n }\n\n if (item.index === null) { // All 4 are variables?\n item.index = f.statements\n }\n return true\n } // prepare\n\n /** sorting function -- negative if self is easier **/\n // We always prefer to start with a URI to be able to browse a graph\n // this is why we put off items with more variables till later.\n function easiestQuery (self, other) {\n if (self.nvars !== other.nvars) {\n return self.nvars - other.nvars\n }\n return self.index.length - other.index.length\n }\n\n var match_index = 0 // index\n /** matches a pattern formula against the knowledge base, e.g. to find matches for table-view\n *\n * @param f - knowledge base formula\n * @param g - pattern formula (may have vars)\n * @param bindingsSoFar - bindings accumulated in matching to date\n * @param level - spaces to indent stuff also lets you know what level of recursion you're at\n * @param fetcher - function (term, requestedBy) - myFetcher / AJAR_handleNewTerm / the sort\n * @param localCallback - function(bindings, pattern, branch) called on sucess\n * @returns nothing\n *\n * Will fetch linked data from the web iff the knowledge base an associated source fetcher (f.fetcher)\n ***/\n var match = function (f, g, bindingsSoFar, level, fetcher, localCallback, branch) {\n log.debug('Match begins, Branch count now: ' + branch.count + ' for ' + branch.pattern_debug)\n var sf = f.fetcher ? f.fetcher : null\n // log.debug(\"match: f has \"+f.statements.length+\", g has \"+g.statements.length)\n var pattern = g.statements\n if (pattern.length === 0) { // when it's satisfied all the pattern triples\n log.debug('FOUND MATCH WITH BINDINGS:' + bindingDebug(bindingsSoFar))\n if (g.optional.length === 0) {\n branch.reportMatch(bindingsSoFar)\n } else {\n log.debug('OPTIONAL: ' + g.optional)\n var junction = new OptionalBranchJunction(callback, bindingsSoFar) // @@ won't work with nested optionals? nest callbacks\n var br = []\n var b\n for (b = 0; b < g.optional.length; b++) {\n br[b] = new OptionalBranch(junction) // Allocate branches to prevent premature ending\n br[b].pattern_debug = g.optional[b] // for diagnotics only\n }\n for (b = 0; b < g.optional.length; b++) {\n br[b].count = br[b].count + 1 // Count how many matches we have yet to complete\n match(f, g.optional[b], bindingsSoFar, '', fetcher, callback, br[b])\n }\n }\n branch.count--\n log.debug('Match ends -- success , Branch count now: ' + branch.count + ' for ' + branch.pattern_debug)\n return // Success\n }\n\n var item\n var i\n var n = pattern.length\n // log.debug(level + \"Match \"+n+\" left, bs so far:\"+bindingDebug(bindingsSoFar))\n\n // Follow links from variables in query\n if (sf) { // Fetcher is used to fetch URIs, function first term is a URI term, second is the requester\n var id = 'match' + match_index++\n var fetchResource = function (requestedTerm, id) {\n var docuri = requestedTerm.uri.split('#')[0]\n sf.nowOrWhenFetched(docuri, undefined, function (ok, body, xhr) {\n if (!ok) {\n console.log('Error following link to <' + requestedTerm.uri + '> in query: ' + body)\n }\n match(f, g, bindingsSoFar, level, fetcher, // match not match2 to look up any others necessary.\n localCallback, branch)\n })\n }\n for (i = 0; i < n; i++) {\n item = pattern[i] // for each of the triples in the query\n if (bindingsSoFar[item.subject] !== undefined &&\n bindingsSoFar[item.subject].uri && sf &&\n sf.getState(docpart(bindingsSoFar[item.subject].uri)) === 'unrequested') {\n // fetch the subject info and return to id\n fetchResource(bindingsSoFar[item.subject], id)\n return // only look up one per line this time, but we will come back again though match\n }\n if (bindingsSoFar[item.object] !== undefined &&\n bindingsSoFar[item.object].uri && sf &&\n sf.getState(docpart(bindingsSoFar[item.object].uri)) === 'unrequested') {\n fetchResource(bindingsSoFar[item.object], id)\n return\n }\n }\n } // if sf\n match2(f, g, bindingsSoFar, level, fetcher, localCallback, branch)\n return\n } // match\n\n var constraintsSatisfied = function (bindings, constraints) {\n var res = true\n var x\n var test\n for (x in bindings) {\n if (bindings.hasOwnProperty(x)) {\n if (constraints[x]) {\n test = constraints[x].test\n if (test && !test(bindings[x])) {\n res = false\n }\n }\n }\n }\n return res\n }\n\n /** match2 -- stuff after the fetch **/\n var match2 = function (f, g, bindingsSoFar, level, fetcher, callback, branch) { // post fetch\n var pattern = g.statements\n var n = pattern.length\n var i\n var k\n var nk\n var v\n var bindings2\n var newBindings1\n var item\n for (i = 0; i < n; i++) { // For each statement left in the query, run prepare\n item = pattern[i]\n // log.info('match2: item=' + item + ', bindingsSoFar=' + bindingDebug(bindingsSoFar))\n prepare(f, item, bindingsSoFar)\n // if (item.index) console.log(' item.index.length ' + item.index.length)\n }\n pattern.sort(easiestQuery)\n item = pattern[0]\n // log.debug(\"Sorted pattern:\\n\"+pattern)\n var rest = f.formula()\n rest.optional = g.optional\n rest.constraints = g.constraints\n rest.statements = pattern.slice(1) // No indexes: we will not query g.\n log.debug(level + 'match2 searching ' + item.index.length + ' for ' + item +\n '; bindings so far=' + bindingDebug(bindingsSoFar))\n // var results = []\n var c\n var nc = item.index.length\n var nbs1\n var st\n var onward = 0\n // var x\n for (c = 0; c < nc; c++) { // For each candidate statement\n st = item.index[c] // for each statement in the item's index, spawn a new match with that binding\n nbs1 = unifyContents(\n [item.subject, item.predicate, item.object, item.why],\n [st.subject, st.predicate, st.object, st.why], bindingsSoFar, f)\n log.info(level + ' From first: ' + nbs1.length + ': ' + bindingsDebug(nbs1))\n nk = nbs1.length\n // branch.count += nk\n // log.debug(\"Branch count bumped \"+nk+\" to: \"+branch.count)\n for (k = 0; k < nk; k++) { // For each way that statement binds\n bindings2 = []\n newBindings1 = nbs1[k][0]\n if (!constraintsSatisfied(newBindings1, g.constraints)) {\n // branch.count--\n log.debug('Branch count CS: ' + branch.count)\n } else {\n for (v in newBindings1) {\n if (newBindings1.hasOwnProperty(v)) {\n bindings2[v] = newBindings1[v] // copy\n }\n }\n for (v in bindingsSoFar) {\n if (bindingsSoFar.hasOwnProperty(v)) {\n bindings2[v] = bindingsSoFar[v] // copy\n }\n }\n\n branch.count++ // Count how many matches we have yet to complete\n onward++\n match(f, rest, bindings2, level + ' ', fetcher, callback, branch) // call match\n }\n }\n }\n branch.count--\n if (onward === 0) {\n log.debug('Match2 fails completely on ' + item)\n }\n log.debug('Match2 ends, Branch count: ' + branch.count + ' for ' + branch.pattern_debug)\n if (branch.count === 0) {\n log.debug('Branch finished.')\n branch.reportDone()\n }\n } // match2\n // ////////////////////////// Body of query() ///////////////////////\n /*\n if(!fetcher) {\n fetcher=function (x, requestedBy) {\n if (x === null) {\n return\n }\n $rdf.Util.AJAR_handleNewTerm(kb, x, requestedBy)\n }\n }\n */\n // prepare, oncallback: match1\n // match1: fetcher, oncallback: match2\n // match2, oncallback: populatetable\n // log.debug(\"Query F length\"+this.statements.length+\" G=\"+myQuery)\n var f = this\n log.debug('Query on ' + this.statements.length)\n // kb.remoteQuery(myQuery,'http://jena.hpl.hp.com:3040/backstage',callback)\n // return\n var trunck = new MandatoryBranch(callback, onDone)\n trunck.count++ // count one branch to complete at the moment\n setTimeout(function () {\n match(f, myQuery.pat, myQuery.pat.initBindings, '', fetcher, callback,\n trunck /* branch */)\n }, 0)\n\n return // returns nothing; callback does the work\n} // query\n\nmodule.exports.Query = Query\nmodule.exports.indexedFormulaQuery = indexedFormulaQuery\n\n\n\n// WEBPACK FOOTER //\n// ./src/query.js","'use strict'\nconst Node = require('./node')\n\nclass Statement {\n constructor (subject, predicate, object, graph) {\n this.subject = Node.fromValue(subject)\n this.predicate = Node.fromValue(predicate)\n this.object = Node.fromValue(object)\n this.why = graph // property currently used by rdflib\n }\n get graph () {\n return this.why\n }\n set graph (g) {\n this.why = g\n }\n equals (other) {\n return other.subject.equals(this.subject) && other.predicate.equals(this.predicate) &&\n other.object.equals(this.object) && other.graph.equals(this.graph)\n }\n substitute (bindings) {\n const y = new Statement(\n this.subject.substitute(bindings),\n this.predicate.substitute(bindings),\n this.object.substitute(bindings),\n this.why.substitute(bindings)) // 2016\n console.log('@@@ statement substitute:' + y)\n return y\n }\n toCanonical () {\n let terms = [\n this.subject.toCanonical(),\n this.predicate.toCanonical(),\n this.object.toCanonical()\n ]\n if (this.graph && this.graph.termType !== 'DefaultGraph') {\n terms.push(this.graph.toCanonical())\n }\n return terms.join(' ') + ' .'\n }\n toNT () {\n return [this.subject.toNT(), this.predicate.toNT(),\n this.object.toNT()].join(' ') + ' .'\n }\n toString () {\n return this.toNT()\n }\n}\n\nmodule.exports = Statement\n\n\n\n// WEBPACK FOOTER //\n// ./src/statement.js","'use strict'\nconst ClassOrder = require('./class-order')\nconst Node = require('./node')\nconst Uri = require('./uri')\n\n/**\n * Variables are placeholders used in patterns to be matched.\n * In cwm they are symbols which are the formula's list of quantified variables.\n * In sparql they are not visibly URIs. Here we compromise, by having\n * a common special base URI for variables. Their names are uris,\n * but the ? notation has an implicit base uri of 'varid:'\n * @class Variable\n */\nclass Variable extends Node {\n constructor (name = '') {\n super()\n this.termType = Variable.termType\n this.value = name\n this.base = 'varid:'\n this.uri = Uri.join(name, this.base)\n }\n equals (other) {\n if (!other) {\n return false\n }\n return (this.termType === other.termType) && (this.value === other.value)\n }\n hashString () {\n return this.toString()\n }\n substitute (bindings) {\n var ref\n return (ref = bindings[this.toNT()]) != null ? ref : this\n }\n toString () {\n if (this.uri.slice(0, this.base.length) === this.base) {\n return '?' + this.uri.slice(this.base.length)\n }\n return '?' + this.uri\n }\n}\n\nVariable.termType = 'Variable'\nVariable.prototype.classOrder = ClassOrder['Variable']\nVariable.prototype.isVar = 1\n\nmodule.exports = Variable\n\n\n\n// WEBPACK FOOTER //\n// ./src/variable.js","module.exports = { \"default\": require(\"core-js/library/fn/promise\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/promise.js\n// module id = 48\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/extends.js\n// module id = 49\n// module chunks = 0","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_a-function.js\n// module id = 50\n// module chunks = 0","module.exports = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_library.js\n// module id = 51\n// module chunks = 0","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-keys.js\n// module id = 52\n// module chunks = 0","exports.f = {}.propertyIsEnumerable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-pie.js\n// module id = 53\n// module chunks = 0","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_set-to-string-tag.js\n// module id = 54\n// module chunks = 0","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_to-object.js\n// module id = 55\n// module chunks = 0","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_uid.js\n// module id = 56\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/events/events.js\n// module id = 57\n// module chunks = 0","'use strict';\n\nif (!process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process-nextick-args/index.js\n// module id = 58\n// module chunks = 0","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/safe-buffer/index.js\n// module id = 59\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.postMessageStorage = exports.memStorage = exports.updateStorage = exports.getData = exports.defaultStorage = exports.NAMESPACE = undefined;\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\n/**\n * Gets the deserialized stored data\n */\nvar getData = exports.getData = function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(store) {\n var serialized, data;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n serialized = void 0;\n data = void 0;\n _context.prev = 2;\n _context.next = 5;\n return store.getItem(NAMESPACE);\n\n case 5:\n serialized = _context.sent;\n\n data = JSON.parse(serialized || '{}');\n _context.next = 14;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context['catch'](2);\n\n console.warn('Could not deserialize data:', serialized);\n console.error(_context.t0);\n data = {};\n\n case 14:\n return _context.abrupt('return', data);\n\n case 15:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[2, 9]]);\n }));\n\n return function getData(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Updates a Storage object without mutating its intermediate representation.\n */\n\n\nvar updateStorage = exports.updateStorage = function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(store, update) {\n var currentData, newData;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return getData(store);\n\n case 2:\n currentData = _context2.sent;\n newData = update(currentData);\n _context2.next = 6;\n return store.setItem(NAMESPACE, (0, _stringify2.default)(newData));\n\n case 6:\n return _context2.abrupt('return', newData);\n\n case 7:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function updateStorage(_x2, _x3) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * Takes a synchronous storage interface and wraps it with an async interface.\n */\n\n\nexports.asyncStorage = asyncStorage;\n\nvar _ipc = require('./ipc');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NAMESPACE = exports.NAMESPACE = 'solid-auth-client';\nvar defaultStorage = exports.defaultStorage = function defaultStorage() {\n try {\n if (window && window.localStorage) {\n return asyncStorage(window.localStorage);\n }\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n console.warn('\\'window.localStorage\\' unavailable. ' + 'Creating a (not very useful) in-memory storage object as the default storage interface.');\n return asyncStorage(memStorage());\n};function asyncStorage(storage) {\n return {\n getItem: function getItem(key) {\n return _promise2.default.resolve(storage.getItem(key));\n },\n\n setItem: function setItem(key, val) {\n return _promise2.default.resolve(storage.setItem(key, val));\n },\n\n removeItem: function removeItem(key) {\n return _promise2.default.resolve(storage.removeItem(key));\n }\n };\n}\n\nvar memStorage = exports.memStorage = function memStorage() {\n var store = {};\n return {\n getItem: function getItem(key) {\n if (typeof store[key] === 'undefined') return null;\n return store[key];\n },\n setItem: function setItem(key, val) {\n store[key] = val;\n },\n removeItem: function removeItem(key) {\n delete store[key];\n }\n };\n};\n\nvar postMessageStorage = exports.postMessageStorage = function postMessageStorage(storageWindow, storageOrigin) {\n var request = (0, _ipc.client)(storageWindow, storageOrigin);\n return {\n getItem: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(key) {\n var ret;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return request({ method: 'storage/getItem', args: [key] });\n\n case 2:\n ret = _context3.sent;\n\n if (!(typeof ret !== 'string')) {\n _context3.next = 5;\n break;\n }\n\n throw new Error('expected postMessage call for \\'storage/getItem\\' to return a string, but got value ' + ret);\n\n case 5:\n return _context3.abrupt('return', ret);\n\n case 6:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, undefined);\n }));\n\n function getItem(_x4) {\n return _ref3.apply(this, arguments);\n }\n\n return getItem;\n }(),\n\n setItem: function setItem(key, val) {\n return request({ method: 'storage/setItem', args: [key, val] });\n },\n\n removeItem: function removeItem(key) {\n return request({ method: 'storage/removeItem', args: [key] });\n }\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/solid-auth-client/lib/storage.js\n// module id = 60\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n/* eslint-env browser */\n\nvar currentUrl = exports.currentUrl = function currentUrl() {\n return window.location.href;\n};\n\nvar currentUrlNoParams = exports.currentUrlNoParams = function currentUrlNoParams() {\n return window.location.origin + window.location.pathname;\n};\n\nvar navigateTo = exports.navigateTo = function navigateTo(url) {\n window.location.href = url;\n};\n\nvar originOf = exports.originOf = function originOf(url) {\n return new URL(url).origin;\n};\n\nvar toUrlString = exports.toUrlString = function toUrlString(url) {\n if (typeof url !== 'string') {\n url = 'url' in url ? url.url : url.toString();\n }\n return new URL(url, currentUrl()).toString();\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/solid-auth-client/lib/url-util.js\n// module id = 61\n// module chunks = 0","\"use strict\";\nconst { isASCIIHex } = require(\"./infra\");\n\nfunction strictlySplitByteSequence(buf, cp) {\n const list = [];\n let last = 0;\n let i = buf.indexOf(cp);\n while (i >= 0) {\n list.push(buf.slice(last, i));\n last = i + 1;\n i = buf.indexOf(cp, last);\n }\n if (last !== buf.length) {\n list.push(buf.slice(last));\n }\n return list;\n}\n\nfunction replaceByteInByteSequence(buf, from, to) {\n let i = buf.indexOf(from);\n while (i >= 0) {\n buf[i] = to;\n i = buf.indexOf(from, i + 1);\n }\n return buf;\n}\n\nfunction percentEncode(c) {\n let hex = c.toString(16).toUpperCase();\n if (hex.length === 1) {\n hex = \"0\" + hex;\n }\n\n return \"%\" + hex;\n}\n\nfunction percentDecode(input) {\n const output = Buffer.alloc(input.byteLength);\n let ptr = 0;\n for (let i = 0; i < input.length; ++i) {\n if (input[i] !== 37 || !isASCIIHex(input[i + 1]) || !isASCIIHex(input[i + 2])) {\n output[ptr++] = input[i];\n } else {\n output[ptr++] = parseInt(input.slice(i + 1, i + 3).toString(), 16);\n i += 2;\n }\n }\n return output.slice(0, ptr);\n}\n\nfunction parseUrlencoded(input) {\n const sequences = strictlySplitByteSequence(input, 38);\n const output = [];\n for (const bytes of sequences) {\n if (bytes.length === 0) {\n continue;\n }\n\n let name;\n let value;\n const indexOfEqual = bytes.indexOf(61);\n\n if (indexOfEqual >= 0) {\n name = bytes.slice(0, indexOfEqual);\n value = bytes.slice(indexOfEqual + 1);\n } else {\n name = bytes;\n value = Buffer.alloc(0);\n }\n\n name = replaceByteInByteSequence(Buffer.from(name), 43, 32);\n value = replaceByteInByteSequence(Buffer.from(value), 43, 32);\n\n output.push([percentDecode(name).toString(), percentDecode(value).toString()]);\n }\n return output;\n}\n\nfunction serializeUrlencodedByte(input) {\n let output = \"\";\n for (const byte of input) {\n if (byte === 32) {\n output += \"+\";\n } else if (byte === 42 ||\n byte === 45 ||\n byte === 46 ||\n (byte >= 48 && byte <= 57) ||\n (byte >= 65 && byte <= 90) ||\n byte === 95 ||\n (byte >= 97 && byte <= 122)) {\n output += String.fromCodePoint(byte);\n } else {\n output += percentEncode(byte);\n }\n }\n return output;\n}\n\nfunction serializeUrlencoded(tuples, encodingOverride = undefined) {\n let encoding = \"utf-8\";\n if (encodingOverride !== undefined) {\n encoding = encodingOverride;\n }\n\n let output = \"\";\n for (const [i, tuple] of tuples.entries()) {\n // TODO: handle encoding override\n const name = serializeUrlencodedByte(Buffer.from(tuple[0]));\n let value = tuple[1];\n if (tuple.length > 2 && tuple[2] !== undefined) {\n if (tuple[2] === \"hidden\" && name === \"_charset_\") {\n value = encoding;\n } else if (tuple[2] === \"file\") {\n // value is a File object\n value = value.name;\n }\n }\n value = serializeUrlencodedByte(Buffer.from(value));\n if (i !== 0) {\n output += \"&\";\n }\n output += `${name}=${value}`;\n }\n return output;\n}\n\nmodule.exports = {\n percentEncode,\n percentDecode,\n\n // application/x-www-form-urlencoded string parser\n parseUrlencoded(input) {\n return parseUrlencoded(Buffer.from(input));\n },\n\n // application/x-www-form-urlencoded serializer\n serializeUrlencoded\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/whatwg-url/lib/urlencoded.js\n// module id = 62\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_63__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"crypto\"\n// module id = 63\n// module chunks = 0","'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Dependencies\n *\n * TODO\n * - switch between Node.js webcrypto package and browser implementation\n */\nvar base64url = require('base64url');\nvar supportedAlgorithms = require('../algorithms');\n\nvar _require = require('../errors'),\n NotSupportedError = _require.NotSupportedError;\n\n/**\n * JWA\n * https://tools.ietf.org/html/rfc7518\n */\n\n\nvar JWA = function () {\n function JWA() {\n _classCallCheck(this, JWA);\n }\n\n _createClass(JWA, null, [{\n key: 'sign',\n\n\n /**\n * Sign\n *\n * @description\n * Create a digital signature.\n *\n * @param {string} alg\n * @param {CryptoKey} key\n * @param {string|Buffer} data\n *\n * @return {Promise}\n */\n value: function sign(alg, key, data) {\n // normalize the algorithm\n var normalizedAlgorithm = supportedAlgorithms.normalize('sign', alg);\n\n // validate algorithm is supported\n if (normalizedAlgorithm instanceof Error) {\n return Promise.reject(new NotSupportedError(alg));\n }\n\n // validate type of key\n // TODO\n // - is the key suitable for the algorithm?\n // - does that get validated in webcrypto?\n //if (key instanceof CryptoKey) {\n // return Promise.reject(new InvalidKeyError())\n //}\n\n // sign the data\n return normalizedAlgorithm.sign(key, data);\n }\n\n /**\n * Verify\n *\n * @description\n * Verify a digital signature.\n *\n * @param {string} alg\n * @param {CryptoKey} privateKey\n * @param {string|Buffer} signature\n * @param {string|Buffer} data\n *\n * @return {Promise}\n */\n\n }, {\n key: 'verify',\n value: function verify(alg, key, signature, data) {\n var normalizedAlgorithm = supportedAlgorithms.normalize('verify', alg);\n\n if (normalizedAlgorithm instanceof Error) {\n return Promise.reject(new NotSupportedError(alg));\n }\n\n // TODO\n // validate publicKey\n\n // verify the signature\n return normalizedAlgorithm.verify(key, signature, data);\n }\n\n /**\n * Encrypt\n */\n\n /**\n * Decrypt\n */\n\n /**\n * Import\n */\n\n }, {\n key: 'importKey',\n value: function importKey(key) {\n var normalizedAlgorithm = supportedAlgorithms.normalize('importKey', key.alg);\n return normalizedAlgorithm.importKey(key);\n }\n }]);\n\n return JWA;\n}();\n\n/**\n * Export\n */\n\n\nmodule.exports = JWA;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/jose/JWA.js\n// module id = 64\n// module chunks = 0","/**\n * Dependencies\n */\n\n/**\n * FormUrlEncoded\n */\nclass FormUrlEncoded {\n\n /**\n * Encode\n *\n * @description\n * Represent an object as x-www-form-urlencoded string.\n *\n * @param {Object} data\n * @returns {string}\n */\n static encode (data) {\n let pairs = []\n\n Object.keys(data).forEach(function (key) {\n pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]))\n })\n\n return pairs.join('&')\n }\n\n /**\n * Decode\n *\n * @description\n * Parse a x-www-form-urlencoded into an object.\n *\n * @param {string} data\n * @returns {Object}\n */\n static decode (data) {\n let obj = {}\n\n data.split('&').forEach(function (property) {\n let pair = property.split('=')\n let key = decodeURIComponent(pair[0])\n let val = decodeURIComponent(pair[1])\n\n obj[key] = val\n })\n\n return obj\n }\n}\n\n/**\n * Export\n */\nmodule.exports = FormUrlEncoded\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/oidc-rp/src/FormUrlEncoded.js\n// module id = 65\n// module chunks = 0","'use strict'\n\n/**\n * Throws an error when a fetch response status code indicates a 400 or 500\n * HTTP error. (The whatwg fetch api does not normally reject on http error\n * responses).\n *\n * Usage:\n *\n * ```\n * return fetch(url)\n * .then(onHttpError('Error while fetching resource')\n * .catch(err => console.log(err))\n *\n * // -> 'Error while fetching resource: 404 Not Found' error\n * // if a 404 response is encountered\n * ```\n *\n * @param [message] {string} Optional error message to clarify context\n *\n * @throws {Error} For http status codes > 300\n *\n * @return {Object} fetch response object (passed through if no error)\n */\nfunction onHttpError (message = 'fetch error') {\n return (response) => {\n if (response.status >= 200 && response.status < 300) {\n return response\n }\n\n let errorMessage = `${message}: ${response.status} ${response.statusText}`\n let error = new Error(errorMessage)\n error.response = response\n error.statusCode = response.status\n throw error\n }\n}\n\nmodule.exports = onHttpError\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/oidc-rp/src/onHttpError.js\n// module id = 66\n// module chunks = 0","'use strict';\n\n/**\n * Mode enumeration\n */\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar THROW = 0;\nvar RECOVER = 1;\nvar SILENT = 2;\n\n/**\n * JSONPointer\n *\n * @class\n * Implements RFC 6901: JavaScript Object Notation (JSON) Pointer\n * https://tools.ietf.org/html/rfc6901\n */\n\nvar JSONPointer = function () {\n\n /**\n * Constructor\n */\n function JSONPointer(expr, mode) {\n _classCallCheck(this, JSONPointer);\n\n this.expr = expr;\n this.mode = mode || THROW;\n this.tokens = expr && expr.charAt(0) === '#' ? this.parseURIFragmentIdentifier(expr) : this.parseJSONString(expr);\n }\n\n /**\n * Escape\n */\n\n\n _createClass(JSONPointer, [{\n key: 'escape',\n value: function escape(expr) {\n return expr.replace(/~/g, '~0').replace(/\\//g, '~1');\n }\n\n /**\n * Unescape\n */\n\n }, {\n key: 'unescape',\n value: function unescape(expr) {\n return expr.replace(/~1/g, '/').replace(/~0/g, '~');\n }\n\n /**\n * Parse\n */\n\n }, {\n key: 'parseJSONString',\n\n\n /**\n * Parse JSON String\n *\n * @description Parse an expression into a list of tokens\n * @param {string} expr\n * @returns {Array}\n */\n value: function parseJSONString(expr) {\n if (typeof expr !== 'string') {\n throw new Error('JSON Pointer must be a string');\n }\n\n if (expr === '') {\n return [];\n }\n\n if (expr.charAt(0) !== '/') {\n throw new Error('Invalid JSON Pointer');\n }\n\n if (expr === '/') {\n return [''];\n }\n\n return expr.substr(1).split('/').map(this.unescape);\n }\n\n /**\n * To JSON String\n *\n * @description Render a JSON string representation of a pointer\n * @returns {string}\n */\n\n }, {\n key: 'toJSONString',\n value: function toJSONString() {\n return '/' + this.tokens.map(this.escape).join('/');\n }\n\n /**\n * Parse URI Fragment Identifer\n */\n\n }, {\n key: 'parseURIFragmentIdentifier',\n value: function parseURIFragmentIdentifier(expr) {\n if (typeof expr !== 'string') {\n throw new Error('JSON Pointer must be a string');\n }\n\n if (expr.charAt(0) !== '#') {\n throw new Error('Invalid JSON Pointer URI Fragment Identifier');\n }\n\n return this.parseJSONString(decodeURIComponent(expr.substr(1)));\n }\n\n /**\n * To URI Fragment Identifier\n *\n * @description Render a URI Fragment Identifier representation of a pointer\n * @returns {string}\n */\n\n }, {\n key: 'toURIFragmentIdentifier',\n value: function toURIFragmentIdentifier() {\n var _this = this;\n\n var value = this.tokens.map(function (token) {\n return encodeURIComponent(_this.escape(token));\n }).join('/');\n\n return '#/' + value;\n }\n\n /**\n * Get\n *\n * @description Get a value from the source object referenced by the pointer\n * @param {Object} source\n * @returns {*}\n */\n\n }, {\n key: 'get',\n value: function get(source) {\n var current = source;\n var tokens = this.tokens;\n\n for (var i = 0; i < tokens.length; i++) {\n if (!current || current[tokens[i]] === undefined) {\n if (this.mode !== THROW) {\n return undefined;\n } else {\n throw new Error('Invalid JSON Pointer reference');\n }\n }\n\n current = current[tokens[i]];\n }\n\n return current;\n }\n\n /**\n * Add\n *\n * @description Set a value on a target object referenced by the pointer. Put\n * will insert an array element. To change an existing array elemnent, use\n * `pointer.set()`\n * @param {Object} target\n * @param {*} value\n */\n\n }, {\n key: 'add',\n value: function add(target, value) {\n var tokens = this.tokens;\n var current = target;\n\n // iterate through the tokens\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n // set the property on the target location\n if (i === tokens.length - 1) {\n if (token === '-') {\n current.push(value);\n } else if (Array.isArray(current)) {\n current.splice(token, 0, value);\n } else if (value !== undefined) {\n current[token] = value;\n }\n\n // handle missing target location based on \"mode\"\n } else if (!current[token]) {\n switch (this.mode) {\n case THROW:\n throw new Error('Invalid JSON Pointer reference');\n\n case RECOVER:\n current = current[token] = parseInt(token) ? [] : {};\n break;\n\n case SILENT:\n return;\n\n default:\n throw new Error('Invalid pointer mode');\n }\n\n // reference the next object in the path\n } else {\n current = current[token];\n }\n }\n }\n\n /**\n * Replace\n *\n * @description Set a value on a target object referenced by the pointer. Set will\n * overwrite an existing array element at the target location.\n * @param {Object} target\n * @param {*} value\n */\n\n }, {\n key: 'replace',\n value: function replace(target, value) {\n var tokens = this.tokens;\n var current = target;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (i === tokens.length - 1) {\n current[token] = value;\n } else if (!current[token]) {\n current = current[token] = parseInt(token) ? [] : {};\n } else {\n current = current[token];\n }\n }\n }\n\n /**\n * Del\n *\n * - if this is an array it should splice the value out\n */\n\n }, {\n key: 'remove',\n value: function remove(target) {\n var tokens = this.tokens;\n var current = target;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (current === undefined || current[token] === undefined) {\n return undefined;\n } else if (Array.isArray(current)) {\n current.splice(token, 1);\n return undefined;\n } else if (i === tokens.length - 1) {\n delete current[token];\n }\n\n current = current[token];\n }\n\n // delete from the target\n }\n }], [{\n key: 'parse',\n value: function parse(expr) {\n return new JSONPointer(expr);\n }\n }]);\n\n return JSONPointer;\n}();\n\n/**\n * Exports\n */\n\n\nmodule.exports = JSONPointer;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@trust/json-document/lib/JSONPointer.js\n// module id = 67\n// module chunks = 0","'use strict';\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/assert/assert.js\n// module id = 68\n// module chunks = 0","/* global $SolidTestEnvironment */\n/**\n *\n * Project: rdflib.js\n *\n * File: fetcher.js\n *\n * Description: contains functions for requesting/fetching/retracting\n * This implements quite a lot of the web architecture.\n * A fetcher is bound to a specific quad store, into which\n * it loads stuff and into which it writes its metadata\n * @@ The metadata could be optionally a separate graph\n *\n * - implements semantics of HTTP headers, Internet Content Types\n * - selects parsers for rdf/xml, n3, rdfa, grddl\n *\n * TO do:\n * - Implement a runtime registry for parsers and serializers\n * -\n */\n\n/**\n * Things to test: callbacks on request, refresh, retract\n * loading from HTTP, HTTPS, FTP, FILE, others?\n * To do:\n * Firing up a mail client for mid: (message:) URLs\n */\nconst log = require('./log')\nconst N3Parser = require('./n3parser')\nconst NamedNode = require('./named-node')\nconst Namespace = require('./namespace')\nconst rdfParse = require('./parse')\nconst parseRDFaDOM = require('./rdfaparser').parseRDFaDOM\nconst RDFParser = require('./rdfxmlparser')\nconst Uri = require('./uri')\nconst Util = require('./util')\nconst serialize = require('./serialize')\n\n// This is a special fetch withich does OIDC auth, catching 401 errors\nconst fetch = require('solid-auth-client').fetch\n\nconst Parsable = {\n 'text/n3': true,\n 'text/turtle': true,\n 'application/rdf+xml': true,\n 'application/xhtml+xml': true,\n 'text/html': true,\n 'application/ld+json': true\n}\n\n// This is a minimal set to allow the use of damaged servers if necessary\nconst CONTENT_TYPE_BY_EXT = {\n 'rdf': 'application/rdf+xml',\n 'owl': 'application/rdf+xml',\n 'n3': 'text/n3',\n 'ttl': 'text/turtle',\n 'nt': 'text/n3',\n 'acl': 'text/n3',\n 'html': 'text/html',\n 'xml': 'text/xml'\n}\n\n// Convenience namespaces needed in this module.\n// These are deliberately not exported as the user application should\n// make its own list and not rely on the prefixes used here,\n// and not be tempted to add to them, and them clash with those of another\n// application.\nconst ns = {\n link: Namespace('http://www.w3.org/2007/ont/link#'),\n http: Namespace('http://www.w3.org/2007/ont/http#'),\n httph: Namespace('http://www.w3.org/2007/ont/httph#'), // headers\n rdf: Namespace('http://www.w3.org/1999/02/22-rdf-syntax-ns#'),\n rdfs: Namespace('http://www.w3.org/2000/01/rdf-schema#'),\n dc: Namespace('http://purl.org/dc/elements/1.1/'),\n ldp: Namespace('http://www.w3.org/ns/ldp#')\n}\n\nclass Handler {\n constructor (response, dom) {\n this.response = response\n this.dom = dom\n }\n}\n\nclass RDFXMLHandler extends Handler {\n static toString () {\n return 'RDFXMLHandler'\n }\n\n static register (fetcher) {\n fetcher.mediatypes['application/rdf+xml'] = {\n 'q': 0.9\n }\n }\n\n parse (fetcher, responseText, options, response) {\n let kb = fetcher.store\n if (!this.dom) {\n this.dom = Util.parseXML(responseText)\n }\n let root = this.dom.documentElement\n if (root.nodeName === 'parsererror') { // Mozilla only See issue/issue110\n // have to fail the request\n return fetcher.failFetch(options, 'Badly formed XML in ' +\n options.resource.uri, 'parse_error')\n }\n let parser = new RDFParser(kb)\n try {\n parser.parse(this.dom, options.original.uri, options.original, response)\n } catch (err) {\n return fetcher.failFetch(options, 'Syntax error parsing RDF/XML! ' + err,\n 'parse_error')\n }\n if (!options.noMeta) {\n kb.add(options.original, ns.rdf('type'), ns.link('RDFDocument'), fetcher.appNode)\n }\n\n return fetcher.doneFetch(options, this.response)\n }\n}\nRDFXMLHandler.pattern = new RegExp('application/rdf\\\\+xml')\n\nclass XHTMLHandler extends Handler {\n static toString () {\n return 'XHTMLHandler'\n }\n\n static register (fetcher) {\n fetcher.mediatypes['application/xhtml+xml'] = {}\n }\n\n parse (fetcher, responseText, options, response) {\n let relation, reverse\n if (!this.dom) {\n this.dom = Util.parseXML(responseText)\n }\n let kb = fetcher.store\n\n // dc:title\n let title = this.dom.getElementsByTagName('title')\n if (title.length > 0) {\n kb.add(options.resource, ns.dc('title'), kb.literal(title[0].textContent),\n options.resource)\n // log.info(\"Inferring title of \" + xhr.resource)\n }\n\n // link rel\n let links = this.dom.getElementsByTagName('link')\n for (let x = links.length - 1; x >= 0; x--) { // @@ rev\n relation = links[x].getAttribute('rel')\n reverse = false\n if (!relation) {\n relation = links[x].getAttribute('rev')\n reverse = true\n }\n if (relation) {\n fetcher.linkData(options.original, relation,\n links[x].getAttribute('href'), options.resource, reverse)\n }\n }\n\n // Data Islands\n let scripts = this.dom.getElementsByTagName('script')\n for (let i = 0; i < scripts.length; i++) {\n let contentType = scripts[i].getAttribute('type')\n if (Parsable[contentType]) {\n rdfParse(scripts[i].textContent, kb, options.original.uri, contentType)\n rdfParse(scripts[i].textContent, kb, options.original.uri, contentType)\n }\n }\n\n if (!options.noMeta) {\n kb.add(options.resource, ns.rdf('type'), ns.link('WebPage'), fetcher.appNode)\n }\n\n if (!options.noRDFa && parseRDFaDOM) { // enable by default\n try {\n parseRDFaDOM(this.dom, kb, options.original.uri)\n } catch (err) {\n let msg = 'Error trying to parse ' + options.resource + ' as RDFa:\\n' +\n err + ':\\n' + err.stack\n return fetcher.failFetch(options, msg, 'parse_error')\n }\n }\n\n return fetcher.doneFetch(options, this.response)\n }\n}\nXHTMLHandler.pattern = new RegExp('application/xhtml')\n\nclass XMLHandler extends Handler {\n static toString () {\n return 'XMLHandler'\n }\n\n static register (fetcher) {\n fetcher.mediatypes['text/xml'] = { 'q': 0.5 }\n fetcher.mediatypes['application/xml'] = { 'q': 0.5 }\n }\n\n parse (fetcher, responseText, options, response) {\n let dom = Util.parseXML(responseText)\n\n // XML Semantics defined by root element namespace\n // figure out the root element\n for (let c = 0; c < dom.childNodes.length; c++) {\n // is this node an element?\n if (dom.childNodes[c].nodeType === 1) {\n // We've found the first element, it's the root\n let ns = dom.childNodes[c].namespaceURI\n\n // Is it RDF/XML?\n if (ns && ns === ns['rdf']) {\n fetcher.addStatus(options.req,\n 'Has XML root element in the RDF namespace, so assume RDF/XML.')\n\n let rdfHandler = new RDFXMLHandler(this.response, dom)\n return rdfHandler.parse(fetcher, responseText, options, response)\n }\n\n break\n }\n }\n\n // Or it could be XHTML?\n // Maybe it has an XHTML DOCTYPE?\n if (dom.doctype) {\n // log.info(\"We found a DOCTYPE in \" + xhr.resource)\n if (dom.doctype.name === 'html' &&\n dom.doctype.publicId.match(/^-\\/\\/W3C\\/\\/DTD XHTML/) &&\n dom.doctype.systemId.match(/http:\\/\\/www.w3.org\\/TR\\/xhtml/)) {\n fetcher.addStatus(options.req,\n 'Has XHTML DOCTYPE. Switching to XHTML Handler.\\n')\n\n let xhtmlHandler = new XHTMLHandler(this.response, dom)\n return xhtmlHandler.parse(fetcher, responseText, options, response)\n }\n }\n\n // Or what about an XHTML namespace?\n let html = dom.getElementsByTagName('html')[0]\n if (html) {\n let xmlns = html.getAttribute('xmlns')\n if (xmlns && xmlns.match(/^http:\\/\\/www.w3.org\\/1999\\/xhtml/)) {\n fetcher.addStatus(options.req,\n 'Has a default namespace for ' + 'XHTML. Switching to XHTMLHandler.\\n')\n\n let xhtmlHandler = new XHTMLHandler(this.response, dom)\n return xhtmlHandler.parse(fetcher, responseText, options, response)\n }\n }\n\n // At this point we should check the namespace document (cache it!) and\n // look for a GRDDL transform\n // @@ Get namespace document <n>, parse it, look for <n> grddl:namespaceTransform ?y\n // Apply ?y to dom\n // We give up. What dialect is this?\n return fetcher.failFetch(options,\n 'Unsupported dialect of XML: not RDF or XHTML namespace, etc.\\n' +\n responseText.slice(0, 80), 901)\n }\n}\nXMLHandler.pattern = new RegExp('(text|application)/(.*)xml')\n\nclass HTMLHandler extends Handler {\n static toString () {\n return 'HTMLHandler'\n }\n\n static register (fetcher) {\n fetcher.mediatypes['text/html'] = {\n 'q': 0.9\n }\n }\n\n parse (fetcher, responseText, options, response) {\n let kb = fetcher.store\n\n // We only handle XHTML so we have to figure out if this is XML\n // log.info(\"Sniffing HTML \" + xhr.resource + \" for XHTML.\")\n\n if (responseText.match(/\\s*<\\?xml\\s+version\\s*=[^<>]+\\?>/)) {\n fetcher.addStatus(options.req, \"Has an XML declaration. We'll assume \" +\n \"it's XHTML as the content-type was text/html.\\n\")\n\n let xhtmlHandler = new XHTMLHandler(this.response)\n return xhtmlHandler.parse(fetcher, responseText, options, response)\n }\n\n // DOCTYPE\n // There is probably a smarter way to do this\n if (responseText.match(/.*<!DOCTYPE\\s+html[^<]+-\\/\\/W3C\\/\\/DTD XHTML[^<]+http:\\/\\/www.w3.org\\/TR\\/xhtml[^<]+>/)) {\n fetcher.addStatus(options.req,\n 'Has XHTML DOCTYPE. Switching to XHTMLHandler.\\n')\n\n let xhtmlHandler = new XHTMLHandler(this.response)\n return xhtmlHandler.parse(fetcher, responseText, options, response)\n }\n\n // xmlns\n if (responseText.match(/[^(<html)]*<html\\s+[^<]*xmlns=['\"]http:\\/\\/www.w3.org\\/1999\\/xhtml[\"'][^<]*>/)) {\n fetcher.addStatus(options.req,\n 'Has default namespace for XHTML, so switching to XHTMLHandler.\\n')\n\n let xhtmlHandler = new XHTMLHandler(this.response)\n return xhtmlHandler.parse(fetcher, responseText, options, response)\n }\n\n // dc:title\n // no need to escape '/' here\n let titleMatch = (new RegExp('<title>([\\\\s\\\\S]+?)', 'im')).exec(responseText)\n if (titleMatch) {\n kb.add(options.resource, ns.dc('title'), kb.literal(titleMatch[1]),\n options.resource) // think about xml:lang later\n }\n kb.add(options.resource, ns.rdf('type'), ns.link('WebPage'), fetcher.appNode)\n fetcher.addStatus(options.req, 'non-XML HTML document, not parsed for data.')\n\n return fetcher.doneFetch(options, this.response)\n }\n}\nHTMLHandler.pattern = new RegExp('text/html')\n\nclass TextHandler extends Handler {\n static toString () {\n return 'TextHandler'\n }\n\n static register (fetcher) {\n fetcher.mediatypes['text/plain'] = {\n 'q': 0.5\n }\n }\n\n parse (fetcher, responseText, options, response) {\n // We only speak dialects of XML right now. Is this XML?\n\n // Look for an XML declaration\n if (responseText.match(/\\s*<\\?xml\\s+version\\s*=[^<>]+\\?>/)) {\n fetcher.addStatus(options.req, 'Warning: ' + options.resource +\n \" has an XML declaration. We'll assume \" +\n \"it's XML but its content-type wasn't XML.\\n\")\n\n let xmlHandler = new XMLHandler(this.response)\n return xmlHandler.parse(fetcher, responseText, options, response)\n }\n\n // Look for an XML declaration\n if (responseText.slice(0, 500).match(/xmlns:/)) {\n fetcher.addStatus(options.req, \"May have an XML namespace. We'll assume \" +\n \"it's XML but its content-type wasn't XML.\\n\")\n\n let xmlHandler = new XMLHandler(this.response)\n return xmlHandler.parse(fetcher, responseText, options, response)\n }\n\n // We give up finding semantics - this is not an error, just no data\n fetcher.addStatus(options.req, 'Plain text document, no known RDF semantics.')\n\n return fetcher.doneFetch(options, this.response)\n }\n}\nTextHandler.pattern = new RegExp('text/plain')\n\nclass N3Handler extends Handler {\n static toString () {\n return 'N3Handler'\n }\n\n static register (fetcher) {\n fetcher.mediatypes['text/n3'] = {\n 'q': '1.0'\n } // as per 2008 spec\n /*\n fetcher.mediatypes['application/x-turtle'] = {\n 'q': 1.0\n } // pre 2008\n */\n fetcher.mediatypes['text/turtle'] = {\n 'q': 1.0\n } // post 2008\n }\n\n parse (fetcher, responseText, options, response) {\n // Parse the text of this non-XML file\n let kb = fetcher.store\n // console.log('web.js: Parsing as N3 ' + xhr.resource.uri + ' base: ' +\n // xhr.original.uri) // @@@@ comment me out\n // fetcher.addStatus(xhr.req, \"N3 not parsed yet...\")\n let p = N3Parser(kb, kb, options.original.uri, options.original.uri,\n null, null, '', null)\n // p.loadBuf(xhr.responseText)\n try {\n p.loadBuf(responseText)\n } catch (err) {\n let msg = 'Error trying to parse ' + options.resource +\n ' as Notation3:\\n' + err + ':\\n' + err.stack\n // dump(msg+\"\\n\")\n return fetcher.failFetch(options, msg, 'parse_error', response)\n }\n\n fetcher.addStatus(options.req, 'N3 parsed: ' + p.statementCount + ' triples in ' + p.lines + ' lines.')\n fetcher.store.add(options.original, ns.rdf('type'), ns.link('RDFDocument'), fetcher.appNode)\n // var args = [xhr.original.uri] // Other args needed ever?\n\n return fetcher.doneFetch(options, this.response)\n }\n}\nN3Handler.pattern = new RegExp('(application|text)/(x-)?(rdf\\\\+)?(n3|turtle)')\n\nconst HANDLERS = {\n RDFXMLHandler, XHTMLHandler, XMLHandler, HTMLHandler, TextHandler, N3Handler\n}\n\nclass Fetcher {\n constructor (store, options = {}) {\n this.store = store\n this.timeout = options.timeout || 30000\n\n this._fetch = options.fetch || fetch\n\n if (!this._fetch) {\n throw new Error('No _fetch function availble for Fetcher')\n }\n\n this.appNode = this.store.bnode() // Denoting this session\n this.store.fetcher = this // Bi-linked\n this.requested = {}\n // this.requested[uri] states:\n // undefined no record of web access or records reset\n // true has been requested, fetch in progress\n // 'done' received, Ok\n // 401 Not logged in\n // 403 HTTP status unauthorized\n // 404 Resource does not exist. Can be created etc.\n // 'redirected' In attempt to counter CORS problems retried.\n // 'parse_error' Parse error\n // 'unsupported_protocol' URI is not a protocol Fetcher can deal with\n // other strings mean various other errors.\n //\n this.timeouts = {} // list of timeouts associated with a requested URL\n this.redirectedTo = {} // When 'redirected'\n this.fetchQueue = {}\n this.fetchCallbacks = {} // fetchCallbacks[uri].push(callback)\n\n this.nonexistent = {} // keep track of explicit 404s -> we can overwrite etc\n this.lookedUp = {}\n this.handlers = []\n this.mediatypes = {\n 'image/*': { 'q': 0.9 },\n '*/*': { 'q': 0.1 } // Must allow access to random content\n }\n\n // Util.callbackify(this, ['request', 'recv', 'headers', 'load', 'fail',\n // 'refresh', 'retract', 'done'])\n // In switching to fetch(), 'recv', 'headers' and 'load' do not make sense\n Util.callbackify(this, ['request', 'fail', 'refresh', 'retract', 'done'])\n\n Object.keys(HANDLERS).map(key => this.addHandler(HANDLERS[key]))\n }\n\n static crossSiteProxy (uri) {\n if (Fetcher.crossSiteProxyTemplate) {\n return Fetcher.crossSiteProxyTemplate\n .replace('{uri}', encodeURIComponent(uri))\n } else {\n return undefined\n }\n }\n\n /**\n * @param uri {string}\n *\n * @returns {string}\n */\n static offlineOverride (uri) {\n // Map the URI to a localhost proxy if we are running on localhost\n // This is used for working offline, e.g. on planes.\n // Is the script itself is running in localhost, then access all\n // data in a localhost mirror.\n // Do not remove without checking with TimBL\n let requestedURI = uri\n\n var UI\n if (typeof window !== 'undefined' && window.panes && (UI = window.panes.UI) &&\n UI.preferences && UI.preferences.get('offlineModeUsingLocalhost')) {\n if (requestedURI.slice(0, 7) === 'http://' && requestedURI.slice(7, 17) !== 'localhost/') {\n requestedURI = 'http://localhost/' + requestedURI.slice(7)\n log.warn('Localhost kludge for offline use: actually getting <' +\n requestedURI + '>')\n } else {\n // log.warn(\"Localhost kludge NOT USED <\" + requestedURI + \">\")\n }\n } else {\n // log.warn(\"Localhost kludge OFF offline use: actually getting <\" +\n // requestedURI + \">\")\n }\n\n return requestedURI\n }\n\n static proxyIfNecessary (uri) {\n var UI\n if (typeof window !== 'undefined' && window.panes && (UI = window.panes.UI) && UI.isExtension) {\n return uri\n } // Extension does not need proxy\n\n if (typeof $SolidTestEnvironment !== 'undefined' &&\n $SolidTestEnvironment.localSiteMap) {\n // nested dictionaries of URI parts from origin down\n let hostpath = uri.split('/').slice(2) // the bit after the //\n\n const lookup = (parts, index) => {\n let z = index[parts.shift()]\n\n if (!z) { return null }\n\n if (typeof z === 'string') {\n return z + parts.join('/')\n }\n\n if (!parts) { return null }\n\n return lookup(parts, z)\n }\n\n const y = lookup(hostpath, $SolidTestEnvironment.localSiteMap)\n\n if (y) {\n return y\n }\n }\n\n // browser does 2014 on as https browser script not trusted\n // If the web app origin is https: then the mixed content rules\n // prevent it loading insecure http: stuff so we need proxy.\n if (Fetcher.crossSiteProxyTemplate &&\n typeof document !== 'undefined' && document.location &&\n ('' + document.location).slice(0, 6) === 'https:' && // origin is secure\n uri.slice(0, 5) === 'http:') { // requested data is not\n return Fetcher.crossSiteProxyTemplate\n .replace('{uri}', encodeURIComponent(uri))\n }\n\n return uri\n }\n\n /**\n * Tests whether the uri's protocol is supported by the Fetcher.\n *\n * @param uri {string}\n *\n * @returns {boolean}\n */\n static unsupportedProtocol (uri) {\n let pcol = Uri.protocol(uri)\n\n return (pcol === 'tel' || pcol === 'mailto' || pcol === 'urn')\n }\n\n /**\n * @param requestedURI {string}\n * @param options {Object}\n *\n * @returns {boolean}\n */\n static withCredentials (requestedURI, options = {}) {\n // 2014 problem:\n // XMLHttpRequest cannot load http://www.w3.org/People/Berners-Lee/card.\n // A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin'\n // header when the credentials flag is true.\n // @ Many ontology files under http: and need CORS wildcard ->\n // can't have withCredentials\n\n // @@ Kludge -- need for webid which typically is served from https\n let withCredentials = requestedURI.startsWith('https:')\n\n if (options.withCredentials !== undefined) {\n withCredentials = options.withCredentials\n }\n\n return withCredentials\n }\n\n /**\n * Promise-based load function\n *\n * @param uri {Array|Array|NamedNode|string}\n *\n * @param [options={}] {Object}\n *\n * @param [options.fetch] {Function}\n *\n * @param [options.referringTerm] {NamedNode} Referring term, the resource which\n * referred to this (for tracking bad links)\n *\n * @param [options.contentType] {string} Provided content type (for writes)\n *\n * @param [options.forceContentType] {string} Override the incoming header to\n * force the data to be treated as this content-type (for reads)\n *\n * @param [options.force] {boolean} Load the data even if loaded before.\n * Also sets the `Cache-Control:` header to `no-cache`\n *\n * @param [options.baseURI=docuri] {Node|string} Original uri to preserve\n * through proxying etc (`xhr.original`).\n *\n * @param [options.proxyUsed] {boolean} Whether this request is a retry via\n * a proxy (generally done from an error handler)\n *\n * @param [options.withCredentials] {boolean} flag for XHR/CORS etc\n *\n * @param [options.clearPreviousData] {boolean} Before we parse new data,\n * clear old, but only on status 200 responses\n *\n * @param [options.noMeta] {boolean} Prevents the addition of various metadata\n * triples (about the fetch request) to the store\n *\n * @param [options.noRDFa] {boolean}\n *\n * @returns {Promise}\n */\n load (uri, options = {}) {\n if (uri instanceof Array) {\n return Promise.all(\n uri.map(x => { return this.load(x, Object.assign({}, options)) })\n )\n }\n\n let docuri = uri.uri || uri\n docuri = docuri.split('#')[0]\n\n options = this.initFetchOptions(docuri, options)\n\n return this.pendingFetchPromise(docuri, options.baseURI, options)\n }\n\n /**\n * @param uri {string}\n * @param originalUri {string}\n * @param options {Object}\n * @returns {Promise}\n */\n pendingFetchPromise (uri, originalUri, options) {\n let pendingPromise\n\n // Check to see if some request is already dealing with this uri\n if (!options.force && this.fetchQueue[originalUri]) {\n pendingPromise = this.fetchQueue[originalUri]\n } else {\n pendingPromise = Promise\n .race([\n this.setRequestTimeout(uri, options),\n this.fetchUri(uri, options)\n ])\n this.fetchQueue[originalUri] = pendingPromise\n\n // Clean up the queued promise after a time, if it's resolved\n this.cleanupFetchRequest(originalUri, options, this.timeout)\n }\n\n return pendingPromise.then(x => {\n if (uri in this.timeouts) {\n this.timeouts[uri].forEach(clearTimeout)\n delete this.timeouts[uri]\n }\n return x\n })\n }\n\n cleanupFetchRequest (originalUri, options, timeout) {\n this.timeouts[originalUri] = (this.timeouts[originalUri] || []).concat(setTimeout(() => {\n if (!this.isPending(originalUri)) {\n delete this.fetchQueue[originalUri]\n }\n }, timeout))\n }\n\n /**\n * @param uri {string}\n * @param options {Object}\n *\n * @returns {Object}\n */\n initFetchOptions (uri, options) {\n let kb = this.store\n\n let isGet = !options.method || options.method.toUpperCase() === 'GET'\n if (!isGet) {\n options.force = true\n }\n\n options.resource = kb.sym(uri) // This might be proxified\n options.baseURI = options.baseURI || uri // Preserve though proxying etc\n options.original = kb.sym(options.baseURI)\n options.req = kb.bnode()\n options.headers = options.headers || {}\n\n if (options.contentType) {\n options.headers['content-type'] = options.contentType\n }\n\n if (options.force) {\n options.cache = 'no-cache'\n }\n\n let acceptString = this.acceptString()\n options.headers['accept'] = acceptString\n\n let requestedURI = Fetcher.offlineOverride(uri)\n options.requestedURI = requestedURI\n\n if (Fetcher.withCredentials(requestedURI, options)) {\n options.credentials = 'include'\n }\n\n let actualProxyURI = Fetcher.proxyIfNecessary(requestedURI)\n if (requestedURI !== actualProxyURI) {\n options.proxyUsed = true\n }\n options.actualProxyURI = actualProxyURI\n\n return options\n }\n\n /**\n * (The promise chain ends in either a `failFetch()` or a `doneFetch()`)\n *\n * @param docuri {string}\n * @param options {Object}\n *\n * @returns {Promise} fetch() result or an { error, status } object\n */\n fetchUri (docuri, options) {\n if (!docuri) {\n return Promise.reject(new Error('Cannot fetch an empty uri'))\n }\n\n if (Fetcher.unsupportedProtocol(docuri)) {\n return this.failFetch(options, 'fetcher: Unsupported protocol', 'unsupported_protocol')\n }\n\n let state = this.getState(docuri)\n\n if (!options.force) {\n if (state === 'fetched') { // URI already fetched and added to store\n return Promise.resolve(\n this.doneFetch(options, {status: 200, ok: true, statusText: 'Already loaded into quadstore.'})\n )\n }\n if (state === 'failed') {\n let message = 'Previously failed: ' + this.requested[docuri]\n let dummyResponse = {\n url: docuri,\n status: this.requested[docuri],\n statusText: message,\n responseText: message,\n headers: {}, // Headers() ???\n ok: false,\n body: null,\n bodyUsed: false,\n size: 0,\n timeout: 0\n }\n return this.failFetch(options, message,\n this.requested[docuri], dummyResponse)\n }\n } else {\n // options.force == true\n delete this.nonexistent[docuri]\n }\n\n this.fireCallbacks('request', [docuri])\n\n this.requested[docuri] = true // mark this uri as 'requested'\n\n if (!options.noMeta) {\n this.saveRequestMetadata(docuri, options)\n }\n\n let { actualProxyURI } = options\n\n return this._fetch(actualProxyURI, options)\n .then(response => this.handleResponse(response, docuri, options),\n error => {\n let dummyResponse = {\n url: actualProxyURI,\n status: 999, // @@ what number/string should fetch failures report?\n statusText: (error.name || 'network failure') + ': ' +\n (error.errno || error.code || error.type),\n responseText: error.message,\n headers: {}, // Headers() ???\n ok: false,\n body: null,\n bodyUsed: false,\n size: 0,\n timeout: 0\n }\n console.log('Fetcher: <' + actualProxyURI + '> Non-HTTP fetch error: ' + error)\n return this.failFetch(options, 'fetch failed: ' + error, 999, dummyResponse) // Fake status code: fetch exception\n\n // handleError expects a response so we fake some important bits.\n /*\n this.handleError(, docuri, options)\n */\n }\n )\n }\n\n /**\n * Asks for a doc to be loaded if necessary then calls back\n *\n * Calling methods:\n * nowOrWhenFetched (uri, userCallback)\n * nowOrWhenFetched (uri, options, userCallback)\n * nowOrWhenFetched (uri, referringTerm, userCallback, options) <-- old\n * nowOrWhenFetched (uri, referringTerm, userCallback) <-- old\n *\n * Options include:\n * referringTerm The document in which this link was found.\n * this is valuable when finding the source of bad URIs\n * force boolean. Never mind whether you have tried before,\n * load this from scratch.\n * forceContentType Override the incoming header to force the data to be\n * treated as this content-type.\n *\n * Callback function takes:\n *\n * ok True if the fetch worked, and got a 200 response.\n * False if any error happened\n *\n * errmessage Text error message if not OK.\n *\n * response The fetch Response object (was: XHR) if there was was one\n * includes response.status as the HTTP status if any.\n */\n nowOrWhenFetched (uri, p2, userCallback, options = {}) {\n uri = uri.uri || uri // allow symbol object or string to be passed\n\n if (typeof p2 === 'function') {\n // nowOrWhenFetched (uri, userCallback)\n userCallback = p2\n } else if (typeof p2 === 'undefined') { // original calling signature\n // referringTerm = undefined\n } else if (p2 instanceof NamedNode) {\n // referringTerm = p2\n options.referringTerm = p2\n } else {\n // nowOrWhenFetched (uri, options, userCallback)\n options = p2\n }\n\n this.load(uri, options)\n .then(fetchResponse => {\n if (userCallback) {\n if (fetchResponse) {\n if (fetchResponse.ok) {\n userCallback(true, 'OK', fetchResponse)\n } else {\n console.log('@@@ fetcher.js Should not take this path !!!!!!!!!!!!')\n let oops = 'HTTP error: Status ' + fetchResponse.status + ' (' + fetchResponse.statusText + ')'\n if (fetchResponse.responseText) {\n oops += ' ' + fetchResponse.responseText // not in 404, dns error, nock failure\n }\n console.log(oops + ' fetching ' + uri)\n userCallback(false, oops, fetchResponse)\n }\n } else {\n let oops = ('@@ nowOrWhenFetched: no response object!')\n console.log(oops)\n userCallback(false, oops)\n }\n }\n }, function (err) {\n var message = err.message || err.statusText\n message = 'Failed to load <' + uri + '> ' + message\n console.log(message)\n if (err.response && err.response.status) {\n message += ' status: ' + err.response.status\n }\n userCallback(false, message, err.response)\n })\n }\n\n /**\n * Records a status message (as a literal node) by appending it to the\n * request's metadata status collection.\n *\n * @param req {BlankNode}\n * @param statusMessage {string}\n */\n addStatus (req, statusMessage) {\n // \n let now = new Date()\n statusMessage = '[' + now.getHours() + ':' + now.getMinutes() + ':' +\n now.getSeconds() + '.' + now.getMilliseconds() + '] ' + statusMessage\n // \n let kb = this.store\n\n let statusNode = kb.the(req, ns.link('status'))\n if (statusNode && statusNode.append) {\n statusNode.append(kb.literal(statusMessage))\n } else {\n log.warn('web.js: No list to add to: ' + statusNode + ',' + statusMessage)\n }\n }\n\n /**\n * Records errors in the system on failure:\n *\n * - Adds an entry to the request status collection\n * - Adds an error triple with the fail message to the metadata\n * - Fires the 'fail' callback\n * - Rejects with an error result object, which has a response object if any\n *\n * @param options {Object}\n * @param errorMessage {string}\n * @param statusCode {number}\n * @param response {Response} // when an fetch() error\n *\n * @returns {Promise}\n */\n failFetch (options, errorMessage, statusCode, response) {\n this.addStatus(options.req, errorMessage)\n\n if (!options.noMeta) {\n this.store.add(options.original, ns.link('error'), errorMessage)\n }\n\n let meth = (options.method || 'GET').toUpperCase()\n let isGet = meth === 'GET' || meth === 'HEAD'\n\n if (isGet) { // only cache the status code on GET or HEAD\n if (!options.resource.sameTerm(options.original)) {\n console.log('@@ Recording failure ' + meth + ' original ' + options.original +\n '( as ' + options.resource + ') : ' + statusCode)\n } else {\n console.log('@@ Recording ' + meth + ' failure for ' + options.original + ': ' + statusCode)\n }\n this.requested[Uri.docpart(options.original.uri)] = statusCode\n this.fireCallbacks('fail', [options.original.uri, errorMessage])\n }\n\n var err = new Error('Fetcher: ' + errorMessage)\n\n // err.ok = false // Is taken as a response, will work too @@ phase out?\n err.status = statusCode\n err.statusText = errorMessage\n err.response = response\n\n return Promise.reject(err)\n }\n\n // in the why part of the quad distinguish between HTML and HTTP header\n // Reverse is set iif the link was rev= as opposed to rel=\n linkData (originalUri, rel, uri, why, reverse) {\n if (!uri) return\n let kb = this.store\n let predicate\n // See http://www.w3.org/TR/powder-dr/#httplink for describedby 2008-12-10\n let obj = kb.sym(Uri.join(uri, originalUri.uri))\n\n if (rel === 'alternate' || rel === 'seeAlso' || rel === 'meta' ||\n rel === 'describedby') {\n if (obj.uri === originalUri.uri) { return }\n predicate = ns.rdfs('seeAlso')\n } else if (rel === 'type') {\n predicate = kb.sym('http://www.w3.org/1999/02/22-rdf-syntax-ns#type')\n } else {\n // See https://www.iana.org/assignments/link-relations/link-relations.xml\n // Alas not yet in RDF yet for each predicate\n // encode space in e.g. rel=\"shortcut icon\"\n predicate = kb.sym(\n Uri.join(encodeURIComponent(rel),\n 'http://www.iana.org/assignments/link-relations/')\n )\n }\n if (reverse) {\n kb.add(obj, predicate, originalUri, why)\n } else {\n kb.add(originalUri, predicate, obj, why)\n }\n }\n\n parseLinkHeader (linkHeader, originalUri, reqNode) {\n if (!linkHeader) { return }\n\n // const linkexp = /<[^>]*>\\s*(\\s*;\\s*[^()<>@,;:\"/[\\]?={} \\t]+=(([^()<>@,;:\"/[]?={} \\t]+)|(\"[^\"]*\")))*(,|$)/g\n // const paramexp = /[^()<>@,;:\"/[]?={} \\t]+=(([^()<>@,;:\"/[]?={} \\t]+)|(\"[^\"]*\"))/g\n\n // From https://www.dcode.fr/regular-expression-simplificator:\n // const linkexp = /<[^>]*>\\s*(\\s*;\\s*[^()<>@,;:\"/[\\]?={} t]+=[\"]))*[,$]/g\n // const paramexp = /[^\\\\<>@,;:\"\\/\\[\\]?={} \\t]+=[\"])/g\n // Original:\n const linkexp = /<[^>]*>\\s*(\\s*;\\s*[^()<>@,;:\"/[\\]?={} \\t]+=(([^\\(\\)<>@,;:\"\\/\\[\\]\\?={} \\t]+)|(\"[^\"]*\")))*(,|$)/g\n const paramexp = /[^\\(\\)<>@,;:\"\\/\\[\\]\\?={} \\t]+=(([^\\(\\)<>@,;:\"\\/\\[\\]\\?={} \\t]+)|(\"[^\"]*\"))/g\n\n const matches = linkHeader.match(linkexp)\n\n for (let i = 0; i < matches.length; i++) {\n let split = matches[i].split('>')\n let href = split[0].substring(1)\n let ps = split[1]\n let s = ps.match(paramexp)\n for (let j = 0; j < s.length; j++) {\n let p = s[j]\n let paramsplit = p.split('=')\n // var name = paramsplit[0]\n let rel = paramsplit[1].replace(/[\"']/g, '') // '\"\n this.linkData(originalUri, rel, href, reqNode)\n }\n }\n }\n\n doneFetch (options, response) {\n this.addStatus(options.req, 'Done.')\n this.requested[options.original.uri] = 'done'\n\n this.fireCallbacks('done', [options.original.uri])\n\n response.req = options.req // Set the request meta blank node\n\n return response\n }\n\n /**\n * Note two nodes are now smushed\n * If only one was flagged as looked up, then the new node is looked up again,\n * which will make sure all the URIs are dereferenced\n */\n nowKnownAs (was, now) {\n if (this.lookedUp[was.uri]) {\n // Transfer userCallback\n if (!this.lookedUp[now.uri]) {\n this.lookUpThing(now, was)\n }\n } else if (this.lookedUp[now.uri]) {\n if (!this.lookedUp[was.uri]) {\n this.lookUpThing(was, now)\n }\n }\n }\n\n /**\n * Writes back to the web what we have in the store for this uri\n *\n * @param uri {Node|string}\n * @param [options={}]\n *\n * @returns {Promise}\n */\n putBack (uri, options = {}) {\n uri = uri.uri || uri // Accept object or string\n let doc = new NamedNode(uri).doc() // strip off #\n options.contentType = options.contentType || 'text/turtle'\n options.data = serialize(doc, this.store, doc.uri, options.contentType)\n return this.webOperation('PUT', uri, options)\n }\n\n webCopy (here, there, contentType) {\n return this.webOperation('GET', here)\n .then((result) => {\n return this.webOperation(\n 'PUT', // change to binary from text\n there, { data: result.responseText, contentType })\n })\n }\n\n /**\n * @param uri {string}\n * @param [options] {Object}\n *\n * @returns {Promise}\n */\n delete (uri, options) {\n return this.webOperation('DELETE', uri, options)\n .then(response => {\n this.requested[uri] = 404\n this.nonexistent[uri] = true\n this.unload(this.store.sym(uri))\n\n return response\n })\n }\n\n /**\n * @param parentURI {string} URI of parent container\n * @param [folderName] {string} Optional folder name (slug)\n * @param [data] {string} Optional folder metadata\n *\n * @returns {Promise}\n */\n createContainer (parentURI, folderName, data) {\n let headers = {\n // Force the right mime type for containers\n 'content-type': 'text/turtle',\n 'link': ns.ldp('BasicContainer') + '; rel=\"type\"'\n }\n\n if (folderName) {\n headers['slug'] = folderName\n }\n\n let options = { headers }\n\n if (data) {\n options.body = data\n }\n\n return this.webOperation('POST', parentURI, options)\n }\n\n /**\n * A generic web opeation, at the fetch() level.\n * does not invole the quadstore.\n *\n * Returns promise of Response\n * If data is returned, copies it to response.responseText before returning\n *\n * @param method\n * @param uri\n * @param options\n *\n * @returns {Promise}\n */\n webOperation (method, uri, options = {}) {\n options.method = method\n options.body = options.data || options.body\n options.force = true\n const fetcher = this\n\n if (options.body && !options.contentType) {\n throw new Error('Web operation sending data must have a defined contentType.')\n }\n if (options.contentType) {\n options.headers = options.headers || {}\n options.headers['content-type'] = options.contentType\n }\n if (Fetcher.withCredentials(uri, options)) {\n options.credentials = 'include' // Otherwise coookies are not sent\n }\n\n return new Promise(function (resolve, reject) {\n fetcher._fetch(uri, options).then(response => {\n if (response.ok) {\n if (response.body) {\n response.text().then(data => {\n response.responseText = data\n resolve(response)\n })\n } else {\n resolve(response)\n }\n } else {\n let msg = 'Web error: ' + response.status\n if (response.statusText) msg += ' (' + response.statusText + ')'\n msg += ' on ' + method + ' of <' + uri + '>'\n if (response.responseText) msg += ': ' + response.responseText\n let e2 = new Error(msg)\n e2.response = response\n reject(e2)\n }\n }, err => {\n let msg = 'Fetch error for ' + method + ' of <' + uri + '>:' + err\n reject(new Error(msg))\n })\n })\n }\n\n /**\n * Looks up something.\n * Looks up all the URIs a things has.\n *\n * @param term {NamedNode} canonical term for the thing whose URI is\n * to be dereferenced\n * @param rterm {NamedNode} the resource which referred to this\n * (for tracking bad links)\n *\n * @returns {Promise}\n */\n lookUpThing (term, rterm) {\n let uris = this.store.uris(term) // Get all URIs\n uris = uris.map(u => Uri.docpart(u)) // Drop hash fragments\n\n uris.forEach(u => {\n this.lookedUp[u] = true\n })\n\n return this.load(uris, { referringTerm: rterm })\n }\n\n /**\n * Looks up response header.\n *\n * @param doc\n * @param header\n *\n * @returns {Array|undefined} a list of header values found in a stored HTTP\n * response, or [] if response was found but no header found,\n * or undefined if no response is available.\n */\n getHeader (doc, header) {\n const kb = this.store\n const requests = kb.each(undefined, ns.link('requestedURI'), doc.uri)\n\n for (let r = 0; r < requests.length; r++) {\n let request = requests[r]\n if (request !== undefined) {\n let response = kb.any(request, ns.link('response'))\n\n if (response !== undefined) {\n let results = kb.each(response, ns.httph(header.toLowerCase()))\n\n if (results.length) {\n return results.map(v => { return v.value })\n }\n\n return []\n }\n }\n }\n return undefined\n }\n\n /**\n *\n * @param docuri\n * @param options\n */\n saveRequestMetadata (docuri, options) {\n let req = options.req\n let kb = this.store\n let rterm = options.referringTerm\n\n this.addStatus(options.req, 'Accept: ' + options.headers['accept'])\n\n if (rterm && rterm.uri) {\n kb.add(docuri, ns.link('requestedBy'), rterm.uri, this.appNode)\n }\n\n if (options.original && options.original.uri !== docuri) {\n kb.add(req, ns.link('orginalURI'), kb.literal(options.original.uri),\n this.appNode)\n }\n\n const now = new Date()\n const timeNow = '[' + now.getHours() + ':' + now.getMinutes() + ':' +\n now.getSeconds() + '] '\n\n kb.add(req, ns.rdfs('label'),\n kb.literal(timeNow + ' Request for ' + docuri), this.appNode)\n kb.add(req, ns.link('requestedURI'), kb.literal(docuri), this.appNode)\n kb.add(req, ns.link('status'), kb.collection(), this.appNode)\n }\n\n saveResponseMetadata (response, options) {\n const kb = this.store\n\n let responseNode = kb.bnode()\n\n kb.add(options.req, ns.link('response'), responseNode, responseNode)\n kb.add(responseNode, ns.http('status'),\n kb.literal(response.status), responseNode)\n kb.add(responseNode, ns.http('statusText'),\n kb.literal(response.statusText), responseNode)\n\n if (!options.resource.uri.startsWith('http')) {\n return responseNode\n }\n\n // Save the response headers\n response.headers.forEach((value, header) => {\n kb.add(responseNode, ns.httph(header), value, responseNode)\n\n if (header === 'content-type') {\n kb.add(options.resource, ns.rdf('type'), Util.mediaTypeClass(value), responseNode)\n }\n })\n\n return responseNode\n }\n\n objectRefresh (term) {\n let uris = this.store.uris(term) // Get all URIs\n if (typeof uris !== 'undefined') {\n for (let i = 0; i < uris.length; i++) {\n this.refresh(this.store.sym(Uri.docpart(uris[i])))\n // what about rterm?\n }\n }\n }\n\n refresh (term, userCallback) { // sources_refresh\n this.fireCallbacks('refresh', arguments)\n\n this.nowOrWhenFetched(term, { force: true, clearPreviousData: true },\n userCallback)\n }\n\n retract (term) { // sources_retract\n this.store.removeMany(undefined, undefined, undefined, term)\n if (term.uri) {\n delete this.requested[Uri.docpart(term.uri)]\n }\n this.fireCallbacks('retract', arguments)\n }\n\n getState (docuri) {\n if (typeof this.requested[docuri] === 'undefined') {\n return 'unrequested'\n } else if (this.requested[docuri] === true) {\n return 'requested'\n } else if (this.requested[docuri] === 'done') {\n return 'fetched'\n } else if (this.requested[docuri] === 'redirected') {\n return this.getState(this.redirectedTo[docuri])\n } else { // An non-200 HTTP error status\n return 'failed'\n }\n }\n\n isPending (docuri) { // sources_pending\n // doing anyStatementMatching is wasting time\n // if it's not pending: false -> flailed\n // 'done' -> done 'redirected' -> redirected\n return this.requested[docuri] === true\n }\n\n unload (term) {\n this.store.removeDocument(term)\n delete this.requested[term.uri] // So it can be loaded again\n }\n\n addHandler (handler) {\n this.handlers.push(handler)\n handler.register(this)\n }\n\n retryNoCredentials (docuri, options) {\n console.log('web: Retrying with no credentials for ' + options.resource)\n\n options.retriedWithNoCredentials = true // protect against being called twice\n\n delete this.requested[docuri] // forget the original request happened\n\n let newOptions = Object.assign({}, options, { withCredentials: false })\n\n this.addStatus(options.req,\n 'Abort: Will retry with credentials SUPPRESSED to see if that helps')\n\n return this.load(docuri, newOptions)\n }\n\n /**\n * Tests whether a request is being made to a cross-site URI (for purposes\n * of retrying with a proxy)\n *\n * @param uri {string}\n *\n * @returns {boolean}\n */\n isCrossSite (uri) {\n // Mashup situation, not node etc\n if (typeof document === 'undefined' || !document.location) {\n return false\n }\n\n const hostpart = Uri.hostpart\n const here = '' + document.location\n return hostpart(here) && hostpart(uri) && hostpart(here) !== hostpart(uri)\n }\n\n /**\n * Called when there's a network error in fetch(), or a response\n * with status of 0.\n *\n * @param response {Response|Error}\n * @param docuri {string}\n * @param options {Object}\n *\n * @returns {Promise}\n */\n handleError (response, docuri, options) {\n if (this.isCrossSite(docuri)) {\n // Make sure we haven't retried already\n if (options.withCredentials && !options.retriedWithNoCredentials) {\n return this.retryNoCredentials(docuri, options)\n }\n\n // Now attempt retry via proxy\n let proxyUri = Fetcher.crossSiteProxy(docuri)\n\n if (proxyUri && !options.proxyUsed) {\n console.log('web: Direct failed so trying proxy ' + proxyUri)\n\n return this.redirectToProxy(proxyUri, options)\n }\n }\n\n var message\n if (response.message) {\n message = 'Fetch error: ' + response.message\n } else {\n message = response.statusText\n if (response.responseText) {\n message += ` ${response.responseText}`\n }\n }\n\n // This is either not a CORS error, or retries have been made\n return this.failFetch(options, message, response.status || 998, response)\n }\n\n // deduce some things from the HTTP transaction\n addType (rdfType, req, kb, locURI) { // add type to all redirected resources too\n let prev = req\n if (locURI) {\n var reqURI = kb.any(prev, ns.link('requestedURI'))\n if (reqURI && reqURI !== locURI) {\n kb.add(kb.sym(locURI), ns.rdf('type'), rdfType, this.appNode)\n }\n }\n for (;;) {\n const doc = kb.any(prev, ns.link('requestedURI'))\n if (doc && doc.value) {\n kb.add(kb.sym(doc.value), ns.rdf('type'), rdfType, this.appNode)\n } // convert Literal\n prev = kb.any(undefined, kb.sym('http://www.w3.org/2007/ont/link#redirectedRequest'), prev)\n if (!prev) { break }\n var response = kb.any(prev, kb.sym('http://www.w3.org/2007/ont/link#response'))\n if (!response) { break }\n var redirection = kb.any(response, kb.sym('http://www.w3.org/2007/ont/http#status'))\n if (!redirection) { break }\n if (redirection !== '301' && redirection !== '302') { break }\n }\n }\n\n /**\n * Handle fetch() response\n *\n * @param response {Response} fetch() response object\n * @param docuri {string}\n * @param options {Object}\n */\n handleResponse (response, docuri, options) {\n const kb = this.store\n const headers = response.headers\n\n const reqNode = options.req\n\n const responseNode = this.saveResponseMetadata(response, options)\n\n const contentType = this.normalizedContentType(options, headers) || ''\n\n let contentLocation = headers.get('content-location')\n\n // this.fireCallbacks('recv', xhr.args)\n // this.fireCallbacks('headers', [{uri: docuri, headers: xhr.headers}])\n\n // Check for masked errors (CORS, etc)\n if (response.status === 0) {\n console.log('Masked error - status 0 for ' + docuri)\n return this.handleError(response, docuri, options)\n }\n\n if (response.status >= 400) {\n if (response.status === 404) {\n this.nonexistent[options.original.uri] = true\n this.nonexistent[docuri] = true\n }\n\n return this.saveErrorResponse(response, responseNode)\n .then(() => {\n let errorMessage = options.resource + ' ' + response.statusText\n\n return this.failFetch(options, errorMessage, response.status, response)\n })\n }\n\n var diffLocation = null\n var absContentLocation = null\n if (contentLocation) {\n absContentLocation = Uri.join(contentLocation, docuri)\n if (absContentLocation !== docuri) {\n diffLocation = absContentLocation\n }\n }\n if (response.status === 200) {\n this.addType(ns.link('Document'), reqNode, kb, docuri)\n if (diffLocation) {\n this.addType(ns.link('Document'), reqNode, kb,\n diffLocation)\n }\n\n // Before we parse new data clear old but only on 200\n if (options.clearPreviousData) {\n kb.removeDocument(options.resource)\n }\n\n let isImage = contentType.includes('image/') ||\n contentType.includes('application/pdf')\n\n if (contentType && isImage) {\n this.addType(kb.sym('http://purl.org/dc/terms/Image'), reqNode, kb,\n docuri)\n if (diffLocation) {\n this.addType(kb.sym('http://purl.org/dc/terms/Image'), reqNode, kb,\n diffLocation)\n }\n }\n }\n\n // If we have already got the thing at this location, abort\n if (contentLocation) {\n if (!options.force && diffLocation && this.requested[absContentLocation] === 'done') {\n // we have already fetched this\n // should we smush too?\n // log.info(\"HTTP headers indicate we have already\" + \" retrieved \" +\n // xhr.resource + \" as \" + absContentLocation + \". Aborting.\")\n return this.doneFetch(options, response)\n }\n\n this.requested[absContentLocation] = true\n }\n\n this.parseLinkHeader(headers.get('link'), options.original, reqNode)\n\n let handler = this.handlerForContentType(contentType, response)\n\n if (!handler) {\n // Not a problem, we just don't extract data\n this.addStatus(reqNode, 'Fetch over. No data handled.')\n return this.doneFetch(options, response)\n }\n\n return response.text()\n .then(responseText => {\n response.responseText = responseText\n return handler.parse(this, responseText, options, response)\n })\n }\n\n saveErrorResponse (response, responseNode) {\n let kb = this.store\n\n return response.text()\n .then(content => {\n if (content.length > 10) {\n kb.add(responseNode, ns.http('content'), kb.literal(content), responseNode)\n }\n })\n }\n\n /**\n * @param contentType {string}\n *\n * @returns {Handler|null}\n */\n handlerForContentType (contentType, response) {\n if (!contentType) {\n return null\n }\n\n let Handler = this.handlers.find(handler => {\n return contentType.match(handler.pattern)\n })\n\n return Handler ? new Handler(response) : null\n }\n\n /**\n * @param uri {string}\n *\n * @returns {string}\n */\n guessContentType (uri) {\n return CONTENT_TYPE_BY_EXT[uri.split('.').pop()]\n }\n\n /**\n * @param options {Object}\n * @param headers {Headers}\n *\n * @returns {string}\n */\n normalizedContentType (options, headers) {\n if (options.forceContentType) {\n return options.forceContentType\n }\n\n let contentType = headers.get('content-type')\n if (!contentType || contentType.includes('application/octet-stream')) {\n let guess = this.guessContentType(options.resource.uri)\n\n if (guess) {\n return guess\n }\n }\n\n let protocol = Uri.protocol(options.resource.uri)\n\n if (!contentType && ['file', 'chrome'].includes(protocol)) {\n return 'text/xml'\n }\n\n return contentType\n }\n\n /**\n * Sends a new request to the specified uri. (Extracted from `onerrorFactory()`)\n *\n * @param newURI {string}\n * @param options {Object}\n *\n * @returns {Promise}\n */\n redirectToProxy (newURI, options) {\n this.addStatus(options.req, 'BLOCKED -> Cross-site Proxy to <' + newURI + '>')\n\n options.proxyUsed = true\n\n const kb = this.store\n const oldReq = options.req // request metadata blank node\n\n if (!options.noMeta) {\n kb.add(oldReq, ns.link('redirectedTo'), kb.sym(newURI), oldReq)\n this.addStatus(oldReq, 'redirected to new request') // why\n }\n\n this.requested[options.resource.uri] = 'redirected'\n this.redirectedTo[options.resource.uri] = newURI\n\n let newOptions = Object.assign({}, options)\n newOptions.baseURI = options.resource.uri\n\n return this.fetchUri(newURI, newOptions)\n .then(response => {\n if (!newOptions.noMeta) {\n kb.add(oldReq, ns.link('redirectedRequest'), newOptions.req, this.appNode)\n }\n\n return response\n })\n }\n\n setRequestTimeout (uri, options) {\n return new Promise((resolve) => {\n this.timeouts[uri] = (this.timeouts[uri] || []).concat(setTimeout(() => {\n if (this.isPending(uri) &&\n !options.retriedWithNoCredentials &&\n !options.proxyUsed) {\n resolve(this.failFetch(options, `Request to ${uri} timed out`, 'timeout'))\n }\n }, this.timeout))\n })\n }\n\n addFetchCallback (uri, callback) {\n if (!this.fetchCallbacks[uri]) {\n this.fetchCallbacks[uri] = [callback]\n } else {\n this.fetchCallbacks[uri].push(callback)\n }\n }\n\n acceptString () {\n let acceptstring = ''\n\n for (let mediaType in this.mediatypes) {\n if (acceptstring !== '') {\n acceptstring += ', '\n }\n\n acceptstring += mediaType\n\n for (let property in this.mediatypes[mediaType]) {\n acceptstring += ';' + property + '=' + this.mediatypes[mediaType][property]\n }\n }\n\n return acceptstring\n }\n // var updatesVia = new $rdf.UpdatesVia(this) // Subscribe to headers\n// @@@@@@@@ This is turned off because it causes a websocket to be set up for ANY fetch\n// whether we want to track it ot not. including ontologies loaed though the XSSproxy\n}\n\nmodule.exports = Fetcher\nmodule.exports.HANDLERS = HANDLERS\nmodule.exports.CONTENT_TYPE_BY_EXT = CONTENT_TYPE_BY_EXT\n\n\n\n// WEBPACK FOOTER //\n// ./src/fetcher.js","// RDFa Parser for rdflib.js\n\n// Originally by: Alex Milowski\n// From https://github.com/alexmilowski/green-turtle\n// Converted: timbl 2015-08-25 not yet working\n// Added wrapper: csarven 2016-05-09 working\n\n// RDFaProcessor.prototype = new Object() // Was URIResolver\n\n// RDFaProcessor.prototype.constructor=RDFaProcessor\n\n// options.base = base URI not really an option, shopuld always be set.\n//\n\nconst BlankNode = require('./blank-node')\nconst Literal = require('./literal')\nconst rdf = require('./data-factory')\nconst NamedNode = require('./named-node')\nconst Uri = require('./uri')\nconst Util = require('./util')\n\nif (typeof Node === 'undefined') { // @@@@@@ Global. Interface to xmldom.\n var Node = {\n ELEMENT_NODE: 1,\n ATTRIBUTE_NODE: 2,\n TEXT_NODE: 3,\n CDATA_SECTION_NODE: 4,\n ENTITY_REFERENCE_NODE: 5,\n ENTITY_NODE: 6,\n PROCESSING_INSTRUCTION_NODE: 7,\n COMMENT_NODE: 8,\n DOCUMENT_NODE: 9,\n DOCUMENT_TYPE_NODE: 10,\n DOCUMENT_FRAGMENT_NODE: 11,\n NOTATION_NODE: 12\n }\n}\n\nclass RDFaProcessor {\n constructor (kb, options) {\n this.options = options || {}\n this.kb = kb\n this.target = options.target || {\n graph: {\n subjects: {},\n prefixes: {},\n terms: {}\n }\n }\n // XXX: Added to track bnodes\n this.blankNodes = []\n // XXX: Added for normalisation\n this.htmlOptions = {\n 'selfClosing': 'br img input area base basefont col colgroup source wbr isindex link meta param hr'\n }\n this.theOne = '_:' + (new Date()).getTime()\n this.language = null\n this.vocabulary = null\n this.blankCounter = 0\n this.langAttributes = [ { namespaceURI: 'http://www.w3.org/XML/1998/namespace', localName: 'lang' } ]\n this.inXHTMLMode = false\n this.absURIRE = /[\\w\\_\\-]+:\\S+/\n this.finishedHandlers = []\n this.init()\n }\n\n addTriple (origin, subject, predicate, object) {\n var su, ob, pr, or\n if (typeof subject === 'undefined') {\n su = rdf.namedNode(this.options.base)\n } else {\n su = this.toRDFNodeObject(subject)\n }\n pr = this.toRDFNodeObject(predicate)\n ob = this.toRDFNodeObject(object)\n or = rdf.namedNode(this.options.base)\n // console.log('Adding { ' + su + ' ' + pr + ' ' + ob + ' ' + or + ' }')\n this.kb.add(su, pr, ob, or)\n }\n\n ancestorPath (node) {\n var path = ''\n while (node && node.nodeType !== Node.DOCUMENT_NODE) {\n path = '/' + node.localName + path\n node = node.parentNode\n }\n return path\n }\n\n copyMappings (mappings) {\n var newMappings = {}\n for (var k in mappings) {\n newMappings[k] = mappings[k]\n }\n return newMappings\n }\n\n copyProperties () {\n }\n\n deriveDateTimeType (value) {\n for (var i = 0; i < RDFaProcessor.dateTimeTypes.length; i++) {\n // console.log(\"Checking \"+value+\" against \"+RDFaProcessor.dateTimeTypes[i].type)\n var matched = RDFaProcessor.dateTimeTypes[i].pattern.exec(value)\n if (matched && matched[0].length === value.length) {\n // console.log(\"Matched!\")\n return RDFaProcessor.dateTimeTypes[i].type\n }\n }\n return null\n }\n\n init () {\n }\n\n newBlankNode () {\n this.blankCounter++\n return '_:' + this.blankCounter\n }\n\n newSubjectOrigin (origin, subject) {\n }\n\n parseCURIE (value, prefixes, base) {\n var colon = value.indexOf(':')\n var uri\n if (colon >= 0) {\n var prefix = value.substring(0, colon)\n if (prefix === '') {\n // default prefix\n uri = prefixes['']\n return uri ? uri + value.substring(colon + 1) : null\n } else if (prefix === '_') {\n // blank node\n return '_:' + value.substring(colon + 1)\n } else if (RDFaProcessor.NCNAME.test(prefix)) {\n uri = prefixes[prefix]\n if (uri) {\n return uri + value.substring(colon + 1)\n }\n }\n }\n return null\n }\n\n parseCURIEOrURI (value, prefixes, base) {\n var curie = this.parseCURIE(value, prefixes, base)\n if (curie) {\n return curie\n }\n return this.resolveAndNormalize(base, value)\n }\n\n parsePredicate (value, defaultVocabulary, terms, prefixes, base,\n ignoreTerms) {\n if (value === '') {\n return null\n }\n var predicate = this.parseTermOrCURIEOrAbsURI(value, defaultVocabulary, ignoreTerms ? null : terms, prefixes, base)\n if (predicate && predicate.indexOf('_:') === 0) {\n return null\n }\n return predicate\n }\n\n parsePrefixMappings (str, target) {\n var values = this.tokenize(str)\n var prefix = null\n // var uri = null\n for (var i = 0; i < values.length; i++) {\n if (values[i][values[i].length - 1] === ':') {\n prefix = values[i].substring(0, values[i].length - 1)\n } else if (prefix) {\n target[prefix] = this.options.base ? Uri.join(values[i], this.options.base) : values[i]\n prefix = null\n }\n }\n }\n\n static parseRDFaDOM (dom, kb, base) {\n var p = new RDFaProcessor(kb, { 'base': base })\n dom.baseURI = base\n p.process(dom)\n }\n\n parseSafeCURIEOrCURIEOrURI (value, prefixes, base) {\n value = this.trim(value)\n if (value.charAt(0) === '[' && value.charAt(value.length - 1) === ']') {\n value = value.substring(1, value.length - 1)\n value = value.trim(value)\n if (value.length === 0) {\n return null\n }\n if (value === '_:') {\n // the one node\n return this.theOne\n }\n return this.parseCURIE(value, prefixes, base)\n } else {\n return this.parseCURIEOrURI(value, prefixes, base)\n }\n }\n\n parseTermOrCURIEOrAbsURI (value, defaultVocabulary, terms, prefixes, base) {\n // alert(\"Parsing \"+value+\" with default vocab \"+defaultVocabulary)\n value = this.trim(value)\n var curie = this.parseCURIE(value, prefixes, base)\n if (curie) {\n return curie\n } else if (terms) {\n if (defaultVocabulary && !this.absURIRE.exec(value)) {\n return defaultVocabulary + value\n }\n var term = terms[value]\n if (term) {\n return term\n }\n var lcvalue = value.toLowerCase()\n term = terms[lcvalue]\n if (term) {\n return term\n }\n }\n if (this.absURIRE.exec(value)) {\n return this.resolveAndNormalize(base, value)\n }\n return null\n }\n\n parseTermOrCURIEOrURI (value, defaultVocabulary, terms, prefixes, base) {\n // alert(\"Parsing \"+value+\" with default vocab \"+defaultVocabulary)\n value = this.trim(value)\n var curie = this.parseCURIE(value, prefixes, base)\n if (curie) {\n return curie\n } else {\n var term = terms[value]\n if (term) {\n return term\n }\n var lcvalue = value.toLowerCase()\n term = terms[lcvalue]\n if (term) {\n return term\n }\n if (defaultVocabulary && !this.absURIRE.exec(value)) {\n return defaultVocabulary + value\n }\n }\n return this.resolveAndNormalize(base, value)\n }\n\n parseURI (uri) {\n return uri // We just use strings as URIs, not objects now.\n }\n\n process (node, options) {\n /*\n if (!window.console) {\n window.console = { log: function() {} }\n }*/\n var base\n if (node.nodeType === Node.DOCUMENT_NODE) {\n base = node.baseURI\n node = node.documentElement\n node.baseURI = base\n this.setContext(node)\n } else if (node.parentNode.nodeType === Node.DOCUMENT_NODE) {\n this.setContext(node)\n }\n var queue = []\n // Fix for Firefox that includes the hash in the base URI\n var removeHash = function (baseURI) {\n // Fix for undefined baseURI property\n if (!baseURI && options && options.baseURI) {\n return options.baseURI\n }\n\n var hash = baseURI.indexOf('#')\n if (hash >= 0) {\n baseURI = baseURI.substring(0, hash)\n }\n if (options && options.baseURIMap) {\n baseURI = options.baseURIMap(baseURI)\n }\n return baseURI\n }\n queue.push({ current: node,\n context: this.push(null, removeHash(node.baseURI))\n })\n while (queue.length > 0) {\n var item = queue.shift()\n if (item.parent) {\n // Sequence Step 14: list triple generation\n if (item.context.parent && item.context.parent.listMapping === item.listMapping) {\n // Skip a child context with exactly the same mapping\n continue\n }\n // console.log(\"Generating lists for \"+item.subject+\", tag \"+item.parent.localName)\n for (let predicate in item.listMapping) {\n var list = item.listMapping[predicate]\n if (list.length === 0) {\n this.addTriple(item.parent, item.subject, predicate, { type: RDFaProcessor.objectURI, value: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#nil' })\n continue\n }\n var bnodes = []\n for (let i = 0; i < list.length; i++) {\n bnodes.push(this.newBlankNode())\n // this.newSubject(item.parent,bnodes[i])\n }\n for (let i = 0; i < bnodes.length; i++) {\n this.addTriple(item.parent, bnodes[i], 'http://www.w3.org/1999/02/22-rdf-syntax-ns#first', list[i])\n this.addTriple(item.parent, bnodes[i], 'http://www.w3.org/1999/02/22-rdf-syntax-ns#rest', { type: RDFaProcessor.objectURI, value: (i + 1) < bnodes.length ? bnodes[i + 1] : 'http://www.w3.org/1999/02/22-rdf-syntax-ns#nil' })\n }\n this.addTriple(item.parent, item.subject, predicate, { type: RDFaProcessor.objectURI, value: bnodes[0] })\n }\n continue\n }\n var current = item.current\n var context = item.context\n // console.log(\"Tag: \"+current.localName+\", listMapping=\"+JSON.stringify(context.listMapping))\n // Sequence Step 1\n var skip = false\n var newSubject = null\n var currentObjectResource = null\n var typedResource = null\n var prefixes = context.prefixes\n var prefixesCopied = false\n var incomplete = []\n var listMapping = context.listMapping\n var listMappingDifferent = !context.parent\n var language = context.language\n var vocabulary = context.vocabulary\n // TODO: the \"base\" element may be used for HTML+RDFa 1.1\n base = this.parseURI(removeHash(current.baseURI))\n current.item = null\n // Sequence Step 2: set the default vocabulary\n var vocabAtt = current.getAttributeNode('vocab')\n if (vocabAtt) {\n let value = this.trim(vocabAtt.value)\n if (value.length > 0) {\n vocabulary = value\n var baseSubject = base.spec\n // this.newSubject(current,baseSubject)\n this.addTriple(current, baseSubject, 'http://www.w3.org/ns/rdfa#usesVocabulary', { type: RDFaProcessor.objectURI, value: vocabulary })\n } else {\n vocabulary = this.vocabulary\n }\n }\n // Sequence Step 3: IRI mappings\n // handle xmlns attributes\n for (var i = 0; i < current.attributes.length; i++) {\n var att = current.attributes[i]\n // if (att.namespaceURI==\"http://www.w3.org/2000/xmlns/\") {\n if (att.nodeName.charAt(0) === 'x' && att.nodeName.indexOf('xmlns:') === 0) {\n if (!prefixesCopied) {\n prefixes = this.copyMappings(prefixes)\n prefixesCopied = true\n }\n var prefix = att.nodeName.substring(6)\n // TODO: resolve relative?\n var ref = RDFaProcessor.trim(att.value)\n prefixes[prefix] = this.options.base ? Uri.join(ref, this.options.base) : ref\n }\n }\n // Handle prefix mappings (@prefix)\n var prefixAtt = current.getAttributeNode('prefix')\n if (prefixAtt) {\n if (!prefixesCopied) {\n prefixes = this.copyMappings(prefixes)\n prefixesCopied = true\n }\n this.parsePrefixMappings(prefixAtt.value, prefixes)\n }\n // Sequence Step 4: language\n var xmlLangAtt = null\n for (let i = 0; !xmlLangAtt && i < this.langAttributes.length; i++) {\n xmlLangAtt = current.getAttributeNodeNS(this.langAttributes[i].namespaceURI, this.langAttributes[i].localName)\n }\n if (xmlLangAtt) {\n let value = RDFaProcessor.trim(xmlLangAtt.value)\n if (value.length > 0) {\n language = value\n } else {\n language = null\n }\n }\n var relAtt = current.getAttributeNode('rel')\n var revAtt = current.getAttributeNode('rev')\n var typeofAtt = current.getAttributeNode('typeof')\n var propertyAtt = current.getAttributeNode('property')\n var datatypeAtt = current.getAttributeNode('datatype')\n var datetimeAtt = this.inHTMLMode\n ? current.getAttributeNode('datetime')\n : null\n var contentAtt = current.getAttributeNode('content')\n var aboutAtt = current.getAttributeNode('about')\n var srcAtt = current.getAttributeNode('src')\n var resourceAtt = current.getAttributeNode('resource')\n var hrefAtt = current.getAttributeNode('href')\n var inlistAtt = current.getAttributeNode('inlist')\n var relAttPredicates = []\n var predicate, values\n if (relAtt) {\n values = this.tokenize(relAtt.value)\n for (let i = 0; i < values.length; i++) {\n predicate = this.parsePredicate(values[i], vocabulary, context.terms, prefixes, base, this.inHTMLMode && propertyAtt !== null)\n if (predicate) {\n relAttPredicates.push(predicate)\n }\n }\n }\n var revAttPredicates = []\n if (revAtt) {\n values = this.tokenize(revAtt.value)\n for (let i = 0; i < values.length; i++) {\n predicate = this.parsePredicate(values[i], vocabulary, context.terms, prefixes, base, this.inHTMLMode && propertyAtt)\n if (predicate) {\n revAttPredicates.push(predicate)\n }\n }\n }\n // Section 3.1, bullet 7\n if (this.inHTMLMode && (relAtt || revAtt) && propertyAtt) {\n if (relAttPredicates.length === 0) {\n relAtt = null\n }\n if (revAttPredicates.length === 0) {\n revAtt = null\n }\n }\n if (relAtt || revAtt) {\n // Sequence Step 6: establish new subject and value\n if (aboutAtt) {\n newSubject = this.parseSafeCURIEOrCURIEOrURI(aboutAtt.value, prefixes, base)\n }\n if (typeofAtt) {\n typedResource = newSubject\n }\n if (!newSubject) {\n if (current.parentNode.nodeType === Node.DOCUMENT_NODE) {\n newSubject = removeHash(current.baseURI)\n } else if (context.parentObject) {\n // TODO: Verify: If the xml:base has been set and the parentObject is the baseURI of the parent, then the subject needs to be the new base URI\n newSubject = removeHash(current.parentNode.baseURI) === context.parentObject ? removeHash(current.baseURI) : context.parentObject\n }\n }\n if (resourceAtt) {\n currentObjectResource = this.parseSafeCURIEOrCURIEOrURI(resourceAtt.value, prefixes, base)\n }\n if (!currentObjectResource) {\n if (hrefAtt) {\n currentObjectResource = this.resolveAndNormalize(base, encodeURI(hrefAtt.value))\n } else if (srcAtt) {\n currentObjectResource = this.resolveAndNormalize(base, encodeURI(srcAtt.value))\n } else if (typeofAtt && !aboutAtt && !(this.inXHTMLMode && (current.localName === 'head' || current.localName === 'body'))) {\n currentObjectResource = this.newBlankNode()\n }\n }\n if (typeofAtt && !aboutAtt && this.inXHTMLMode && (current.localName === 'head' || current.localName === 'body')) {\n typedResource = newSubject\n } else if (typeofAtt && !aboutAtt) {\n typedResource = currentObjectResource\n }\n } else if (propertyAtt && !contentAtt && !datatypeAtt) {\n // Sequence Step 5.1: establish a new subject\n if (aboutAtt) {\n newSubject = this.parseSafeCURIEOrCURIEOrURI(aboutAtt.value, prefixes, base)\n if (typeofAtt) {\n typedResource = newSubject\n }\n }\n if (!newSubject && current.parentNode.nodeType === Node.DOCUMENT_NODE) {\n newSubject = removeHash(current.baseURI)\n if (typeofAtt) {\n typedResource = newSubject\n }\n } else if (!newSubject && context.parentObject) {\n // TODO: Verify: If the xml:base has been set and the parentObject is the baseURI of the parent, then the subject needs to be the new base URI\n newSubject = removeHash(current.parentNode.baseURI) === context.parentObject ? removeHash(current.baseURI) : context.parentObject\n }\n if (typeofAtt && !typedResource) {\n if (resourceAtt) {\n typedResource = this.parseSafeCURIEOrCURIEOrURI(resourceAtt.value, prefixes, base)\n }\n if (!typedResource && hrefAtt) {\n typedResource = this.resolveAndNormalize(base, encodeURI(hrefAtt.value))\n }\n if (!typedResource && srcAtt) {\n typedResource = this.resolveAndNormalize(base, encodeURI(srcAtt.value))\n }\n if (!typedResource && (this.inXHTMLMode || this.inHTMLMode) && (current.localName === 'head' || current.localName === 'body')) {\n typedResource = newSubject\n }\n if (!typedResource) {\n typedResource = this.newBlankNode()\n }\n currentObjectResource = typedResource\n }\n // console.log(current.localName+\", newSubject=\"+newSubject+\", typedResource=\"+typedResource+\", currentObjectResource=\"+currentObjectResource)\n } else {\n // Sequence Step 5.2: establish a new subject\n if (aboutAtt) {\n newSubject = this.parseSafeCURIEOrCURIEOrURI(aboutAtt.value, prefixes, base)\n }\n if (!newSubject && resourceAtt) {\n newSubject = this.parseSafeCURIEOrCURIEOrURI(resourceAtt.value, prefixes, base)\n }\n if (!newSubject && hrefAtt) {\n newSubject = this.resolveAndNormalize(base, encodeURI(hrefAtt.value))\n }\n if (!newSubject && srcAtt) {\n newSubject = this.resolveAndNormalize(base, encodeURI(srcAtt.value))\n }\n if (!newSubject) {\n if (current.parentNode.nodeType === Node.DOCUMENT_NODE) {\n newSubject = removeHash(current.baseURI)\n } else if ((this.inXHTMLMode || this.inHTMLMode) && (current.localName === 'head' || current.localName === 'body')) {\n newSubject = removeHash(current.parentNode.baseURI) === context.parentObject ? removeHash(current.baseURI) : context.parentObject\n } else if (typeofAtt) {\n newSubject = this.newBlankNode()\n } else if (context.parentObject) {\n // TODO: Verify: If the xml:base has been set and the parentObject is the baseURI of the parent, then the subject needs to be the new base URI\n newSubject = removeHash(current.parentNode.baseURI) === context.parentObject ? removeHash(current.baseURI) : context.parentObject\n if (!propertyAtt) {\n skip = true\n }\n }\n }\n if (typeofAtt) {\n typedResource = newSubject\n }\n }\n // console.log(current.tagName+\": newSubject=\"+newSubject+\", currentObjectResource=\"+currentObjectResource+\", typedResource=\"+typedResource+\", skip=\"+skip)\n // var rdfaData = null\n if (newSubject) {\n // this.newSubject(current,newSubject)\n if (aboutAtt || resourceAtt || typedResource) {\n var id = newSubject\n if (typeofAtt && !aboutAtt && !resourceAtt && currentObjectResource) {\n id = currentObjectResource\n }\n // console.log(\"Setting data attribute for \"+current.localName+\" for subject \"+id)\n this.newSubjectOrigin(current, id)\n }\n }\n // Sequence Step 7: generate type triple\n if (typedResource) {\n values = this.tokenize(typeofAtt.value)\n for (let i = 0; i < values.length; i++) {\n var object = this.parseTermOrCURIEOrAbsURI(values[i], vocabulary, context.terms, prefixes, base)\n if (object) {\n this.addTriple(current, typedResource, RDFaProcessor.typeURI, { type: RDFaProcessor.objectURI, value: object })\n }\n }\n }\n // Sequence Step 8: new list mappings if there is a new subject\n // console.log(\"Step 8: newSubject=\"+newSubject+\", context.parentObject=\"+context.parentObject)\n if (newSubject && newSubject !== context.parentObject) {\n // console.log(\"Generating new list mapping for \"+newSubject)\n listMapping = {}\n listMappingDifferent = true\n }\n // Sequence Step 9: generate object triple\n if (currentObjectResource) {\n if (relAtt && inlistAtt) {\n for (let i = 0; i < relAttPredicates.length; i++) {\n let list = listMapping[relAttPredicates[i]]\n if (!list) {\n list = []\n listMapping[relAttPredicates[i]] = list\n }\n list.push({ type: RDFaProcessor.objectURI, value: currentObjectResource })\n }\n } else if (relAtt) {\n for (let i = 0; i < relAttPredicates.length; i++) {\n this.addTriple(current, newSubject, relAttPredicates[i], { type: RDFaProcessor.objectURI, value: currentObjectResource })\n }\n }\n if (revAtt) {\n for (let i = 0; i < revAttPredicates.length; i++) {\n this.addTriple(current, currentObjectResource, revAttPredicates[i], { type: RDFaProcessor.objectURI, value: newSubject })\n }\n }\n } else {\n // Sequence Step 10: incomplete triples\n if (newSubject && !currentObjectResource && (relAtt || revAtt)) {\n currentObjectResource = this.newBlankNode()\n // alert(current.tagName+\": generated blank node, newSubject=\"+newSubject+\" currentObjectResource=\"+currentObjectResource)\n }\n if (relAtt && inlistAtt) {\n for (let i = 0; i < relAttPredicates.length; i++) {\n let list = listMapping[relAttPredicates[i]]\n if (!list) {\n list = []\n listMapping[predicate] = list\n }\n // console.log(\"Adding incomplete list for \"+predicate)\n incomplete.push({ predicate: relAttPredicates[i], list: list })\n }\n } else if (relAtt) {\n for (let i = 0; i < relAttPredicates.length; i++) {\n incomplete.push({ predicate: relAttPredicates[i], forward: true })\n }\n }\n if (revAtt) {\n for (let i = 0; i < revAttPredicates.length; i++) {\n incomplete.push({ predicate: revAttPredicates[i], forward: false })\n }\n }\n }\n // Step 11: Current property values\n if (propertyAtt) {\n var datatype = null\n var content = null\n if (datatypeAtt) {\n datatype = datatypeAtt.value === '' ? RDFaProcessor.PlainLiteralURI : this.parseTermOrCURIEOrAbsURI(datatypeAtt.value, vocabulary, context.terms, prefixes, base)\n if (datetimeAtt && !contentAtt) {\n content = datetimeAtt.value\n } else {\n content = datatype === RDFaProcessor.XMLLiteralURI || datatype === RDFaProcessor.HTMLLiteralURI ? null : (contentAtt ? contentAtt.value : current.textContent)\n }\n } else if (contentAtt) {\n datatype = RDFaProcessor.PlainLiteralURI\n content = contentAtt.value\n } else if (datetimeAtt) {\n content = datetimeAtt.value\n datatype = RDFaProcessor.deriveDateTimeType(content)\n if (!datatype) {\n datatype = RDFaProcessor.PlainLiteralURI\n }\n } else if (!relAtt && !revAtt) {\n if (resourceAtt) {\n content = this.parseSafeCURIEOrCURIEOrURI(resourceAtt.value, prefixes, base)\n }\n if (!content && hrefAtt) {\n content = this.resolveAndNormalize(base, encodeURI(hrefAtt.value))\n } else if (!content && srcAtt) {\n content = this.resolveAndNormalize(base, encodeURI(srcAtt.value))\n }\n if (content) {\n datatype = RDFaProcessor.objectURI\n }\n }\n if (!datatype) {\n if (typeofAtt && !aboutAtt) {\n datatype = RDFaProcessor.objectURI\n content = typedResource\n } else {\n content = current.textContent\n if (this.inHTMLMode && current.localName === 'time') {\n datatype = RDFaProcessor.deriveDateTimeType(content)\n }\n if (!datatype) {\n datatype = RDFaProcessor.PlainLiteralURI\n }\n }\n }\n values = this.tokenize(propertyAtt.value)\n for (let i = 0; i < values.length; i++) {\n let predicate = this.parsePredicate(values[i], vocabulary, context.terms, prefixes, base)\n if (predicate) {\n if (inlistAtt) {\n let list = listMapping[predicate]\n if (!list) {\n list = []\n listMapping[predicate] = list\n }\n list.push((datatype === RDFaProcessor.XMLLiteralURI || datatype === RDFaProcessor.HTMLLiteralURI) ? { type: datatype, value: current.childNodes } : { type: datatype ? datatype : RDFaProcessor.PlainLiteralURI, value: content, language: language })\n } else {\n if (datatype === RDFaProcessor.XMLLiteralURI || datatype === RDFaProcessor.HTMLLiteralURI) {\n this.addTriple(current, newSubject, predicate, { type: datatype, value: current.childNodes })\n } else {\n this.addTriple(current, newSubject, predicate, { type: datatype ? datatype : RDFaProcessor.PlainLiteralURI, value: content, language: language })\n // console.log(newSubject+\" \"+predicate+\"=\"+content)\n }\n }\n }\n }\n }\n // Sequence Step 12: complete incomplete triples with new subject\n if (newSubject && !skip) {\n for (let i = 0; i < context.incomplete.length; i++) {\n if (context.incomplete[i].list) {\n // console.log(\"Adding subject \"+newSubject+\" to list for \"+context.incomplete[i].predicate)\n // TODO: it is unclear what to do here\n context.incomplete[i].list.push({ type: RDFaProcessor.objectURI, value: newSubject })\n } else if (context.incomplete[i].forward) {\n // console.log(current.tagName+\": completing forward triple \"+context.incomplete[i].predicate+\" with object=\"+newSubject)\n this.addTriple(current, context.subject, context.incomplete[i].predicate, { type: RDFaProcessor.objectURI, value: newSubject })\n } else {\n // console.log(current.tagName+\": completing reverse triple with object=\"+context.subject)\n this.addTriple(current, newSubject, context.incomplete[i].predicate, { type: RDFaProcessor.objectURI, value: context.subject })\n }\n }\n }\n var childContext = null\n var listSubject = newSubject\n if (skip) {\n // TODO: should subject be null?\n childContext = this.push(context, context.subject)\n // TODO: should the entObject be passed along? If not, then intermediary children will keep properties from being associated with incomplete triples.\n // TODO: Verify: if the current baseURI has changed and the parentObject is the parent's base URI, then the baseURI should change\n childContext.parentObject = removeHash(current.parentNode.baseURI) === context.parentObject ? removeHash(current.baseURI) : context.parentObject\n childContext.incomplete = context.incomplete\n childContext.language = language\n childContext.prefixes = prefixes\n childContext.vocabulary = vocabulary\n } else {\n childContext = this.push(context, newSubject)\n childContext.parentObject = currentObjectResource ? currentObjectResource : (newSubject ? newSubject : context.subject)\n childContext.prefixes = prefixes\n childContext.incomplete = incomplete\n if (currentObjectResource) {\n // console.log(\"Generating new list mapping for \"+currentObjectResource)\n listSubject = currentObjectResource\n listMapping = {}\n listMappingDifferent = true\n }\n childContext.listMapping = listMapping\n childContext.language = language\n childContext.vocabulary = vocabulary\n }\n if (listMappingDifferent) {\n // console.log(\"Pushing list parent \"+current.localName)\n queue.unshift({ parent: current, context: context, subject: listSubject, listMapping: listMapping })\n }\n for (var child = current.lastChild; child; child = child.previousSibling) {\n if (child.nodeType === Node.ELEMENT_NODE) {\n // console.log(\"Pushing child \"+child.localName)\n child.baseURI = current.baseURI\n queue.unshift({ current: child, context: childContext })\n }\n }\n }\n if (this.inHTMLMode) {\n this.copyProperties()\n }\n for (let i = 0; i < this.finishedHandlers.length; i++) {\n this.finishedHandlers[i](node)\n }\n }\n\n push (parent, subject) {\n return {\n parent: parent,\n subject: subject ? subject : (parent ? parent.subject : null),\n parentObject: null,\n incomplete: [],\n listMapping: parent ? parent.listMapping : {},\n language: parent ? parent.language : this.language,\n prefixes: parent ? parent.prefixes : this.target.graph.prefixes,\n terms: parent ? parent.terms : this.target.graph.terms,\n vocabulary: parent ? parent.vocabulary : this.vocabulary\n }\n }\n\n resolveAndNormalize (base, uri) {\n // console.log(\"Joining \" + uri + \" to \" + base + \" making \" + Uri.join(uri, base))\n return Uri.join(uri, base) // @@ normalize?\n }\n\n setContext (node) {\n // We only recognized XHTML+RDFa 1.1 if the version is set propertyly\n if (node.localName === 'html' && node.getAttribute('version') === 'XHTML+RDFa 1.1') {\n this.setXHTMLContext()\n } else if (node.localName === 'html' || node.namespaceURI === 'http://www.w3.org/1999/xhtml') {\n if (typeof document !== 'undefined' && document.doctype) {\n if (document.doctype.publicId === '-//W3C//DTD XHTML+RDFa 1.0//EN' && document.doctype.systemId === 'http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd') {\n console.log('WARNING: RDF 1.0 is not supported. Defaulting to HTML5 mode.')\n this.setHTMLContext()\n } else if (document.doctype.publicId === '-//W3C//DTD XHTML+RDFa 1.1//EN' && document.doctype.systemId === 'http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd') {\n this.setXHTMLContext()\n } else {\n this.setHTMLContext()\n }\n } else {\n this.setHTMLContext()\n }\n } else {\n this.setXMLContext()\n }\n }\n\n setHTMLContext () {\n this.setInitialContext()\n this.langAttributes = [\n {\n namespaceURI: 'http://www.w3.org/XML/1998/namespace',\n localName: 'lang'\n },\n { namespaceURI: null, localName: 'lang' }\n ]\n this.inXHTMLMode = false\n this.inHTMLMode = true\n }\n\n setInitialContext () {\n this.vocabulary = null\n // By default, the prefixes are terms are loaded to the RDFa 1.1. standard within the graph constructor\n this.langAttributes = [\n {\n namespaceURI: 'http://www.w3.org/XML/1998/namespace',\n localName: 'lang'\n }\n ]\n }\n\n setXHTMLContext () {\n this.setInitialContext()\n this.inXHTMLMode = true\n this.inHTMLMode = false\n this.langAttributes = [\n {\n namespaceURI: 'http://www.w3.org/XML/1998/namespace',\n localName: 'lang' },\n { namespaceURI: null, localName: 'lang' }\n ]\n // From http://www.w3.org/2011/rdfa-context/xhtml-rdfa-1.1\n this.target.graph.terms['alternate'] = 'http://www.w3.org/1999/xhtml/vocab#alternate'\n this.target.graph.terms['appendix'] = 'http://www.w3.org/1999/xhtml/vocab#appendix'\n this.target.graph.terms['bookmark'] = 'http://www.w3.org/1999/xhtml/vocab#bookmark'\n this.target.graph.terms['cite'] = 'http://www.w3.org/1999/xhtml/vocab#cite'\n this.target.graph.terms['chapter'] = 'http://www.w3.org/1999/xhtml/vocab#chapter'\n this.target.graph.terms['contents'] = 'http://www.w3.org/1999/xhtml/vocab#contents'\n this.target.graph.terms['copyright'] = 'http://www.w3.org/1999/xhtml/vocab#copyright'\n this.target.graph.terms['first'] = 'http://www.w3.org/1999/xhtml/vocab#first'\n this.target.graph.terms['glossary'] = 'http://www.w3.org/1999/xhtml/vocab#glossary'\n this.target.graph.terms['help'] = 'http://www.w3.org/1999/xhtml/vocab#help'\n this.target.graph.terms['icon'] = 'http://www.w3.org/1999/xhtml/vocab#icon'\n this.target.graph.terms['index'] = 'http://www.w3.org/1999/xhtml/vocab#index'\n this.target.graph.terms['last'] = 'http://www.w3.org/1999/xhtml/vocab#last'\n this.target.graph.terms['license'] = 'http://www.w3.org/1999/xhtml/vocab#license'\n this.target.graph.terms['meta'] = 'http://www.w3.org/1999/xhtml/vocab#meta'\n this.target.graph.terms['next'] = 'http://www.w3.org/1999/xhtml/vocab#next'\n this.target.graph.terms['prev'] = 'http://www.w3.org/1999/xhtml/vocab#prev'\n this.target.graph.terms['previous'] = 'http://www.w3.org/1999/xhtml/vocab#previous'\n this.target.graph.terms['section'] = 'http://www.w3.org/1999/xhtml/vocab#section'\n this.target.graph.terms['stylesheet'] = 'http://www.w3.org/1999/xhtml/vocab#stylesheet'\n this.target.graph.terms['subsection'] = 'http://www.w3.org/1999/xhtml/vocab#subsection'\n this.target.graph.terms['start'] = 'http://www.w3.org/1999/xhtml/vocab#start'\n this.target.graph.terms['top'] = 'http://www.w3.org/1999/xhtml/vocab#top'\n this.target.graph.terms['up'] = 'http://www.w3.org/1999/xhtml/vocab#up'\n this.target.graph.terms['p3pv1'] = 'http://www.w3.org/1999/xhtml/vocab#p3pv1'\n // other\n this.target.graph.terms['related'] = 'http://www.w3.org/1999/xhtml/vocab#related'\n this.target.graph.terms['role'] = 'http://www.w3.org/1999/xhtml/vocab#role'\n this.target.graph.terms['transformation'] = 'http://www.w3.org/1999/xhtml/vocab#transformation'\n }\n\n setXMLContext () {\n this.setInitialContext()\n this.inXHTMLMode = false\n this.inHTMLMode = false\n }\n\n tokenize (str) {\n return this.trim(str).split(/\\s+/)\n }\n\n toRDFNodeObject (x) {\n if (typeof x === 'undefined') return undefined\n if (typeof x === 'string') {\n if (x.substring(0, 2) === '_:') {\n if (typeof this.blankNodes[x.substring(2)] === 'undefined') {\n this.blankNodes[x.substring(2)] = new BlankNode(x.substring(2))\n }\n return this.blankNodes[x.substring(2)]\n }\n return rdf.namedNode(x)\n }\n switch (x.type) {\n case RDFaProcessor.objectURI:\n if (x.value.substring(0, 2) === '_:') {\n if (typeof this.blankNodes[x.value.substring(2)] === 'undefined') {\n this.blankNodes[x.value.substring(2)] = new BlankNode(x.value.substring(2))\n }\n return this.blankNodes[x.value.substring(2)]\n }\n return rdf.namedNode(x.value)\n case RDFaProcessor.PlainLiteralURI:\n return new Literal(x.value, x.language || '')\n case RDFaProcessor.XMLLiteralURI:\n case RDFaProcessor.HTMLLiteralURI:\n var string = ''\n Object.keys(x.value).forEach(function (i) {\n string += Util.domToString(x.value[i], this.htmlOptions)\n })\n return new Literal(string, '', new NamedNode(x.type))\n default:\n return new Literal(x.value, '', new NamedNode(x.type))\n }\n }\n\n trim (str) {\n return str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '')\n }\n}\n\nRDFaProcessor.XMLLiteralURI =\n 'http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral'\nRDFaProcessor.HTMLLiteralURI = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML'\nRDFaProcessor.PlainLiteralURI =\n 'http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral'\nRDFaProcessor.objectURI = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#object'\nRDFaProcessor.typeURI = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'\nRDFaProcessor.nameChar =\n '[-A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u10000-\\uEFFFF\\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]'\nRDFaProcessor.nameStartChar =\n '[\\u0041-\\u005A\\u0061-\\u007A\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF\\u0100-\\u0131\\u0134-\\u013E\\u0141-\\u0148\\u014A-\\u017E\\u0180-\\u01C3\\u01CD-\\u01F0\\u01F4-\\u01F5\\u01FA-\\u0217\\u0250-\\u02A8\\u02BB-\\u02C1\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03CE\\u03D0-\\u03D6\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2-\\u03F3\\u0401-\\u040C\\u040E-\\u044F\\u0451-\\u045C\\u045E-\\u0481\\u0490-\\u04C4\\u04C7-\\u04C8\\u04CB-\\u04CC\\u04D0-\\u04EB\\u04EE-\\u04F5\\u04F8-\\u04F9\\u0531-\\u0556\\u0559\\u0561-\\u0586\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0621-\\u063A\\u0641-\\u064A\\u0671-\\u06B7\\u06BA-\\u06BE\\u06C0-\\u06CE\\u06D0-\\u06D3\\u06D5\\u06E5-\\u06E6\\u0905-\\u0939\\u093D\\u0958-\\u0961\\u0985-\\u098C\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09DC-\\u09DD\\u09DF-\\u09E1\\u09F0-\\u09F1\\u0A05-\\u0A0A\\u0A0F-\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32-\\u0A33\\u0A35-\\u0A36\\u0A38-\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8B\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2-\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AE0\\u0B05-\\u0B0C\\u0B0F-\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32-\\u0B33\\u0B36-\\u0B39\\u0B3D\\u0B5C-\\u0B5D\\u0B5F-\\u0B61\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99-\\u0B9A\\u0B9C\\u0B9E-\\u0B9F\\u0BA3-\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB5\\u0BB7-\\u0BB9\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C60-\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CDE\\u0CE0-\\u0CE1\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D28\\u0D2A-\\u0D39\\u0D60-\\u0D61\\u0E01-\\u0E2E\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E45\\u0E81-\\u0E82\\u0E84\\u0E87-\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA-\\u0EAB\\u0EAD-\\u0EAE\\u0EB0\\u0EB2-\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0F40-\\u0F47\\u0F49-\\u0F69\\u10A0-\\u10C5\\u10D0-\\u10F6\\u1100\\u1102-\\u1103\\u1105-\\u1107\\u1109\\u110B-\\u110C\\u110E-\\u1112\\u113C\\u113E\\u1140\\u114C\\u114E\\u1150\\u1154-\\u1155\\u1159\\u115F-\\u1161\\u1163\\u1165\\u1167\\u1169\\u116D-\\u116E\\u1172-\\u1173\\u1175\\u119E\\u11A8\\u11AB\\u11AE-\\u11AF\\u11B7-\\u11B8\\u11BA\\u11BC-\\u11C2\\u11EB\\u11F0\\u11F9\\u1E00-\\u1E9B\\u1EA0-\\u1EF9\\u1F00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2126\\u212A-\\u212B\\u212E\\u2180-\\u2182\\u3041-\\u3094\\u30A1-\\u30FA\\u3105-\\u312C\\uAC00-\\uD7A3\\u4E00-\\u9FA5\\u3007\\u3021-\\u3029_]'\nRDFaProcessor.NCNAME = new RegExp('^' + RDFaProcessor.nameStartChar +\n RDFaProcessor.nameChar + '*$')\n\n/*\nRDFaProcessor.prototype.resolveAndNormalize = function(base,href) {\n var u = base.resolve(href)\n var parsed = this.parseURI(u)\n parsed.normalize()\n return parsed.spec\n}\n*/\n\nRDFaProcessor.dateTimeTypes = [\n { pattern: /-?P(?:[0-9]+Y)?(?:[0-9]+M)?(?:[0-9]+D)?(?:T(?:[0-9]+H)?(?:[0-9]+M)?(?:[0-9]+(?:\\.[0-9]+)?S)?)?/,\n type: 'http://www.w3.org/2001/XMLSchema#duration' },\n { pattern: /-?(?:[1-9][0-9][0-9][0-9]|0[1-9][0-9][0-9]|00[1-9][0-9]|000[1-9])-[0-9][0-9]-[0-9][0-9]T(?:[0-1][0-9]|2[0-4]):[0-5][0-9]:[0-5][0-9](?:\\.[0-9]+)?(?:Z|[+\\-][0-9][0-9]:[0-9][0-9])?/,\n type: 'http://www.w3.org/2001/XMLSchema#dateTime' },\n { pattern: /-?(?:[1-9][0-9][0-9][0-9]|0[1-9][0-9][0-9]|00[1-9][0-9]|000[1-9])-[0-9][0-9]-[0-9][0-9](?:Z|[+\\-][0-9][0-9]:[0-9][0-9])?/,\n type: 'http://www.w3.org/2001/XMLSchema#date' },\n { pattern: /(?:[0-1][0-9]|2[0-4]):[0-5][0-9]:[0-5][0-9](?:\\.[0-9]+)?(?:Z|[+\\-][0-9][0-9]:[0-9][0-9])?/,\n type: 'http://www.w3.org/2001/XMLSchema#time' },\n { pattern: /-?(?:[1-9][0-9][0-9][0-9]|0[1-9][0-9][0-9]|00[1-9][0-9]|000[1-9])-[0-9][0-9]/,\n type: 'http://www.w3.org/2001/XMLSchema#gYearMonth' },\n { pattern: /-?[1-9][0-9][0-9][0-9]|0[1-9][0-9][0-9]|00[1-9][0-9]|000[1-9]/,\n type: 'http://www.w3.org/2001/XMLSchema#gYear' }\n]\n\nmodule.exports = RDFaProcessor\n\n\n\n// WEBPACK FOOTER //\n// ./src/rdfaparser.js","/**\n * @fileoverview\n * RDF/XML PARSER\n *\n * Version 0.1\n * Parser believed to be in full positive RDF/XML parsing compliance\n * with the possible exception of handling deprecated RDF attributes\n * appropriately. Parser is believed to comply fully with other W3C\n * and industry standards where appropriate (DOM, ECMAScript, &c.)\n *\n * Author: David Sheets \n *\n * W3C® SOFTWARE NOTICE AND LICENSE\n * http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231\n * This work (and included software, documentation such as READMEs, or\n * other related items) is being provided by the copyright holders under\n * the following license. By obtaining, using and/or copying this work,\n * you (the licensee) agree that you have read, understood, and will\n * comply with the following terms and conditions.\n *\n * Permission to copy, modify, and distribute this software and its\n * documentation, with or without modification, for any purpose and\n * without fee or royalty is hereby granted, provided that you include\n * the following on ALL copies of the software and documentation or\n * portions thereof, including modifications:\n *\n * 1. The full text of this NOTICE in a location viewable to users of\n * the redistributed or derivative work.\n * 2. Any pre-existing intellectual property disclaimers, notices, or terms and\n * conditions. If none exist, the W3C Software Short Notice should be\n * included (hypertext is preferred, text is permitted) within the body\n * of any redistributed or derivative code.\n * 3. Notice of any changes or modifications to the files, including the\n * date changes were made. (We recommend you provide URIs to the location\n * from which the code is derived.)\n *\n * THIS SOFTWARE AND DOCUMENTATION IS PROVIDED \"AS IS,\" AND COPYRIGHT\n * HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,\n * INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS\n * FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR\n * DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS,\n * TRADEMARKS OR OTHER RIGHTS.\n *\n * COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL\n * OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR\n * DOCUMENTATION.\n *\n * The name and trademarks of copyright holders may NOT be used in\n * advertising or publicity pertaining to the software without specific,\n * written prior permission. Title to copyright in this software and any\n * associated documentation will at all times remain with copyright\n * holders.\n */\n/**\n * @class Class defining an RDFParser resource object tied to an RDFStore\n *\n * @author David Sheets \n * @version 0.1\n *\n * @constructor\n * @param {RDFStore} store An RDFStore object\n */\nconst uriUtil = require('./uri')\n\nvar RDFParser = function (store) {\n var RDFParser = {}\n\n /** Standard namespaces that we know how to handle @final\n * @member RDFParser\n */\n RDFParser.ns = {'RDF': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'RDFS': 'http://www.w3.org/2000/01/rdf-schema#'}\n\n /** DOM Level 2 node type magic numbers @final\n * @member RDFParser\n */\n RDFParser.nodeType = {'ELEMENT': 1, 'ATTRIBUTE': 2, 'TEXT': 3,\n 'CDATA_SECTION': 4, 'ENTITY_REFERENCE': 5,\n 'ENTITY': 6, 'PROCESSING_INSTRUCTION': 7,\n 'COMMENT': 8, 'DOCUMENT': 9, 'DOCUMENT_TYPE': 10,\n 'DOCUMENT_FRAGMENT': 11, 'NOTATION': 12}\n\n /**\n * Frame class for namespace and base URI lookups\n * Base lookups will always resolve because the parser knows\n * the default base.\n *\n * @private\n */\n\n this.frameFactory = function (parser, parent, element) {\n return {'NODE': 1, 'ARC': 2, 'parent': parent, 'parser': parser, 'store': parser.store, 'element': element,\n 'lastChild': 0, 'base': null, 'lang': null, 'node': null, 'nodeType': null, 'listIndex': 1, 'rdfid': null, 'datatype': null, 'collection': false, /** Terminate the frame and notify the store that we're done */\n 'terminateFrame': function () {\n if (this.collection) {\n this.node.close()\n }\n }, /** Add a symbol of a certain type to the this frame */'addSymbol': function (type, uri) {\n uri = uriUtil.join(uri, this.base)\n this.node = this.store.sym(uri)\n\n this.nodeType = type\n }, /** Load any constructed triples into the store */'loadTriple': function () {\n if (this.parent.parent.collection) {\n this.parent.parent.node.append(this.node)\n } else {\n this.store.add(this.parent.parent.node, this.parent.node, this.node, this.parser.why)\n }\n if (this.parent.rdfid != null) {\n // reify\n var triple = this.store.sym(uriUtil.join('#' + this.parent.rdfid, this.base))\n this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'type'), this.store.sym(RDFParser.ns.RDF + 'Statement'), this.parser.why)\n this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'subject'), this.parent.parent.node, this.parser.why)\n this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'predicate'), this.parent.node, this.parser.why)\n\n this.store.add(triple, this.store.sym(RDFParser.ns.RDF + 'object'), this.node, this.parser.why)\n }\n }, /** Check if it's OK to load a triple */'isTripleToLoad': function () {\n return (this.parent != null && this.parent.parent != null && this.nodeType === this.NODE && this.parent.nodeType ===\n this.ARC && this.parent.parent.nodeType === this.NODE)\n }, /** Add a symbolic node to this frame */'addNode': function (uri) {\n this.addSymbol(this.NODE, uri)\n if (this.isTripleToLoad()) {\n this.loadTriple()\n }\n }, /** Add a collection node to this frame */'addCollection': function () {\n this.nodeType = this.NODE\n this.node = this.store.collection()\n this.collection = true\n if (this.isTripleToLoad()) {\n this.loadTriple()\n }\n }, /** Add a collection arc to this frame */'addCollectionArc': function () {\n this.nodeType = this.ARC\n }, /** Add a bnode to this frame */'addBNode': function (id) {\n if (id != null) {\n if (this.parser.bnodes[id] != null) {\n this.node = this.parser.bnodes[id]\n } else {\n this.node = this.parser.bnodes[id] = this.store.bnode()\n }\n } else {\n this.node = this.store.bnode()\n }\n this.nodeType = this.NODE\n if (this.isTripleToLoad()) {\n this.loadTriple()\n }\n }, /** Add an arc or property to this frame */'addArc': function (uri) {\n if (uri === RDFParser.ns.RDF + 'li') {\n uri = RDFParser.ns.RDF + '_' + this.parent.listIndex\n this.parent.listIndex++\n }\n\n this.addSymbol(this.ARC, uri)\n }, /** Add a literal to this frame */'addLiteral': function (value) {\n if (this.parent.datatype) {\n this.node = this.store.literal(value, '', this.store.sym(this.parent.datatype))\n } else {\n this.node = this.store.literal(value, this.lang)\n }\n this.nodeType = this.NODE\n if (this.isTripleToLoad()) {\n this.loadTriple()\n }\n }\n }\n }\n\n // from the OpenLayers source .. needed to get around IE problems.\n this.getAttributeNodeNS = function (node, uri, name) {\n var attributeNode = null\n if (node.getAttributeNodeNS) {\n attributeNode = node.getAttributeNodeNS(uri, name)\n } else {\n var attributes = node.attributes\n var potentialNode, fullName\n for (var i = 0;i < attributes.length; ++i) {\n potentialNode = attributes[i]\n if (potentialNode.namespaceURI === uri) {\n fullName = (potentialNode.prefix) ? (potentialNode.prefix + ':' + name) : name\n if (fullName === potentialNode.nodeName) {\n attributeNode = potentialNode\n break\n }\n }\n }\n }\n return attributeNode\n }\n\n /** Our triple store reference @private */\n\n this.store = store /** Our identified blank nodes @private */\n this.bnodes = {} /** A context for context-aware stores @private */\n this.why = null /** Reification flag */\n this.reify = false\n\n /**\n * Build our initial scope frame and parse the DOM into triples\n * @param {DOMTree} document The DOM to parse\n * @param {String} base The base URL to use\n * @param {Object} why The context to which this resource belongs\n */\n\n this.parse = function (document, base, why) {\n var children = document.childNodes // clean up for the next run\n this.cleanParser() // figure out the root element\n var root\n if (document.nodeType === RDFParser.nodeType.DOCUMENT) {\n for (var c = 0;c < children.length;c++) {\n if (children[c].nodeType === RDFParser.nodeType.ELEMENT) {\n root = children[c]\n break\n }\n }\n } else if (document.nodeType === RDFParser.nodeType.ELEMENT) {\n root = document\n } else {\n throw new Error(\"RDFParser: can't find root in \" + base + '. Halting. ')\n // return false\n }\n this.why = why // our topmost frame\n var f = this.frameFactory(this)\n this.base = base\n f.base = base\n f.lang = null // was '' but can't have langs like that 2015 (!)\n this.parseDOM(this.buildFrame(f, root))\n return true\n }\n\n this.parseDOM = function (frame) {\n // a DOM utility function used in parsing\n var rdfid\n var elementURI = function (el) {\n var result = ''\n if (el.namespaceURI == null) {\n throw new Error('RDF/XML syntax error: No namespace for ' + el.localName + ' in ' + this.base)\n }\n if (el.namespaceURI) {\n result = result + el.namespaceURI\n }\n if (el.localName) {\n result = result + el.localName\n } else if (el.nodeName) {\n if (el.nodeName.indexOf(':') >= 0)result = result + el.nodeName.split(':')[1]\n else result = result + el.nodeName\n }\n return result\n }.bind(this)\n var dig = true // if we'll dig down in the tree on the next iter\n while (frame.parent) {\n var dom = frame.element\n var attrs = dom.attributes\n if (dom.nodeType === RDFParser.nodeType.TEXT || dom.nodeType === RDFParser.nodeType.CDATA_SECTION) {\n // we have a literal\n if (frame.parent.nodeType === frame.NODE) {\n // must have had attributes, store as rdf:value\n frame.addArc(RDFParser.ns.RDF + 'value')\n frame = this.buildFrame(frame)\n }\n frame.addLiteral(dom.nodeValue)\n } else if (elementURI(dom) !== RDFParser.ns.RDF + 'RDF') {\n // not root\n if (frame.parent && frame.parent.collection) {\n // we're a collection element\n frame.addCollectionArc()\n frame = this.buildFrame(frame, frame.element)\n frame.parent.element = null\n }\n if (!frame.parent || !frame.parent.nodeType || frame.parent.nodeType === frame.ARC) {\n // we need a node\n var about = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'about')\n rdfid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'ID')\n if (about && rdfid) {\n throw new Error('RDFParser: ' + dom.nodeName + ' has both rdf:id and rdf:about.' +\n ' Halting. Only one of these' + ' properties may be specified on a' + ' node.')\n }\n if (!about && rdfid) {\n frame.addNode('#' + rdfid.nodeValue)\n dom.removeAttributeNode(rdfid)\n } else if (about == null && rdfid == null) {\n var bnid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'nodeID')\n if (bnid) {\n frame.addBNode(bnid.nodeValue)\n dom.removeAttributeNode(bnid)\n } else {\n frame.addBNode()\n }\n } else {\n frame.addNode(about.nodeValue)\n dom.removeAttributeNode(about)\n }\n // Typed nodes\n var rdftype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'type')\n if (RDFParser.ns.RDF + 'Description' !== elementURI(dom)) {\n rdftype = {'nodeValue': elementURI(dom)}\n }\n if (rdftype != null) {\n this.store.add(frame.node, this.store.sym(RDFParser.ns.RDF + 'type'), this.store.sym(uriUtil.join(rdftype.nodeValue,\n frame.base)), this.why)\n if (rdftype.nodeName) {\n dom.removeAttributeNode(rdftype)\n }\n }\n // Property Attributes\n for (var x = attrs.length - 1; x >= 0; x--) {\n this.store.add(frame.node, this.store.sym(elementURI(attrs[x])), this.store.literal(attrs[x].nodeValue,\n frame.lang), this.why)\n }\n } else {\n // we should add an arc (or implicit bnode+arc)\n frame.addArc(elementURI(dom)) // save the arc's rdf:ID if it has one\n if (this.reify) {\n rdfid = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'ID')\n if (rdfid) {\n frame.rdfid = rdfid.nodeValue\n dom.removeAttributeNode(rdfid)\n }\n }\n var parsetype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'parseType')\n var datatype = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'datatype')\n if (datatype) {\n frame.datatype = datatype.nodeValue\n dom.removeAttributeNode(datatype)\n }\n if (parsetype) {\n var nv = parsetype.nodeValue\n if (nv === 'Literal') {\n frame.datatype = RDFParser.ns.RDF + 'XMLLiteral' \n frame = this.buildFrame(frame)\n // Don't include the literal node, only its children\n frame.addLiteral(dom.childNodes)\n dig = false\n } else if (nv === 'Resource') {\n frame = this.buildFrame(frame, frame.element)\n frame.parent.element = null\n frame.addBNode()\n } else if (nv === 'Collection') {\n frame = this.buildFrame(frame, frame.element)\n frame.parent.element = null\n frame.addCollection()\n }\n dom.removeAttributeNode(parsetype)\n }\n if (attrs.length !== 0) {\n var resource = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'resource')\n var bnid2 = this.getAttributeNodeNS(dom, RDFParser.ns.RDF, 'nodeID')\n frame = this.buildFrame(frame)\n if (resource) {\n frame.addNode(resource.nodeValue)\n dom.removeAttributeNode(resource)\n } else {\n if (bnid2) {\n frame.addBNode(bnid2.nodeValue)\n dom.removeAttributeNode(bnid2)\n } else {\n frame.addBNode()\n }\n }\n for (var x1 = attrs.length - 1; x1 >= 0; x1--) {\n var f = this.buildFrame(frame)\n f.addArc(elementURI(attrs[x1]))\n if (elementURI(attrs[x1]) === RDFParser.ns.RDF + 'type') {\n (this.buildFrame(f)).addNode(attrs[x1].nodeValue)\n } else {\n (this.buildFrame(f)).addLiteral(attrs[x1].nodeValue)\n }\n }\n } else if (dom.childNodes.length === 0) {\n (this.buildFrame(frame)).addLiteral('')\n }\n }\n } // rdf:RDF\n // dig dug\n dom = frame.element\n while (frame.parent) {\n var pframe = frame\n while (dom == null) {\n frame = frame.parent\n dom = frame.element\n }\n var candidate = dom.childNodes && dom.childNodes[frame.lastChild]\n if (!candidate || !dig) {\n frame.terminateFrame()\n if (!(frame = frame.parent)) {\n break\n } // done\n dom = frame.element\n dig = true\n } else if ((candidate.nodeType !== RDFParser.nodeType.ELEMENT &&\n candidate.nodeType !== RDFParser.nodeType.TEXT &&\n candidate.nodeType !== RDFParser.nodeType.CDATA_SECTION) ||\n ((candidate.nodeType === RDFParser.nodeType.TEXT ||\n candidate.nodeType === RDFParser.nodeType.CDATA_SECTION) &&\n dom.childNodes.length !== 1)) {\n frame.lastChild++\n } else {\n // not a leaf\n frame.lastChild++\n frame = this.buildFrame(pframe, dom.childNodes[frame.lastChild - 1])\n break\n }\n }\n } // while\n }\n\n /**\n * Cleans out state from a previous parse run\n * @private\n */\n this.cleanParser = function () {\n this.bnodes = {}\n this.why = null\n }\n\n /**\n * Builds scope frame\n * @private\n */\n this.buildFrame = function (parent, element) {\n var frame = this.frameFactory(this, parent, element)\n if (parent) {\n frame.base = parent.base\n frame.lang = parent.lang\n }\n if (!element || element.nodeType === RDFParser.nodeType.TEXT ||\n element.nodeType === RDFParser.nodeType.CDATA_SECTION) {\n return frame\n }\n var attrs = element.attributes\n var base = element.getAttributeNode('xml:base')\n if (base != null) {\n frame.base = base.nodeValue\n element.removeAttribute('xml:base')\n }\n var lang = element.getAttributeNode('xml:lang')\n if (lang != null) {\n frame.lang = lang.nodeValue\n element.removeAttribute('xml:lang')\n }\n // remove all extraneous xml and xmlns attributes\n for (var x = attrs.length - 1;x >= 0;x--) {\n if (attrs[x].nodeName.substr(0, 3) === 'xml') {\n if (attrs[x].name.slice(0, 6) === 'xmlns:') {\n var uri = attrs[x].nodeValue // alert('base for namespac attr:'+this.base)\n if (this.base) uri = uriUtil.join(uri, this.base)\n this.store.setPrefixForURI(attrs[x].name.slice(6), uri)\n }\n //\t\talert('rdfparser: xml atribute: '+attrs[x].name) //@@\n element.removeAttributeNode(attrs[x])\n }\n }\n return frame\n }\n}\n\nmodule.exports = RDFParser\n\n\n\n// WEBPACK FOOTER //\n// ./src/rdfxmlparser.js","module.exports = serialize\n\nconst convert = require('./convert')\nconst Serializer = require('./serializer')\n\n/**\n * Serialize to the appropriate format\n * @@ Currently NQuads and JSON/LD are deal with extrelemently inefficiently\n * through mutiple conversions.\n */\nfunction serialize (target, kb, base, contentType, callback, options) {\n base = base || target.uri\n options = options || {}\n contentType = contentType || 'text/turtle' // text/n3 if complex?\n var documentString = null\n try {\n var sz = Serializer(kb)\n if (options.flags) sz.setFlags(options.flags)\n var newSts = kb.statementsMatching(undefined, undefined, undefined, target)\n var n3String\n sz.suggestNamespaces(kb.namespaces)\n sz.setBase(base)\n switch (contentType) {\n case 'application/rdf+xml':\n documentString = sz.statementsToXML(newSts)\n return executeCallback(null, documentString)\n case 'text/n3':\n case 'application/n3': // Legacy\n documentString = sz.statementsToN3(newSts)\n return executeCallback(null, documentString)\n case 'text/turtle':\n case 'application/x-turtle': // Legacy\n sz.setFlags('si') // Suppress = for sameAs and => for implies\n documentString = sz.statementsToN3(newSts)\n return executeCallback(null, documentString)\n case 'application/n-triples':\n sz.setFlags('deinprstux') // Suppress nice parts of N3 to make ntriples\n documentString = sz.statementsToNTriples(newSts)\n return executeCallback(null, documentString)\n case 'application/ld+json':\n sz.setFlags('deinprstux') // Use adapters to connect to incmpatible parser\n n3String = sz.statementsToNTriples(newSts)\n // n3String = sz.statementsToN3(newSts)\n convert.convertToJson(n3String, callback)\n break\n case 'application/n-quads':\n case 'application/nquads': // @@@ just outpout the quads? Does not work for collections\n sz.setFlags('deinprstux q') // Suppress nice parts of N3 to make ntriples\n documentString = sz.statementsToNTriples(newSts) // q in flag means actually quads\n return executeCallback(null, documentString)\n // n3String = sz.statementsToN3(newSts)\n // documentString = convert.convertToNQuads(n3String, callback)\n break\n default:\n throw new Error('Serialize: Content-type ' + contentType + ' not supported for data write.')\n }\n } catch (err) {\n if (callback) {\n return callback(err)\n }\n throw err // Don't hide problems from caller in sync mode\n }\n\n function executeCallback (err, result) {\n if (callback) {\n callback(err, result)\n return\n } else {\n return result\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/serialize.js","/* Serialization of RDF Graphs\n**\n** Tim Berners-Lee 2006\n** This is was http://dig.csail.mit.edu/2005/ajar/ajaw/js/rdf/serialize.js\n** This is or was https://github.com/linkeddata/rdflib.js/blob/master/src/serializer.js\n** Licence: MIT\n*/\nconst NamedNode = require('./named-node')\nconst BlankNode = require('./blank-node')\nconst Uri = require('./uri')\nconst Util = require('./util')\nconst XSD = require('./xsd')\n\nvar Serializer = (function () {\n var __Serializer = function (store) {\n this.flags = ''\n this.base = null\n\n this.prefixes = [] // suggested prefixes\n this.namespaces = [] // complementary indexes\n\n this.suggestPrefix('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#') // XML code assumes this!\n this.suggestPrefix('xml', 'reserved:reservedForFutureUse') // XML reserves xml: in the spec.\n\n this.namespacesUsed = [] // Count actually used and so needed in @prefixes\n this.keywords = ['a'] // The only one we generate at the moment\n this.prefixchars = 'abcdefghijklmnopqustuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'\n this.incoming = null // Array not calculated yet\n this.formulas = [] // remebering original formulae from hashes\n this.store = store\n }\n\n __Serializer.prototype.setBase = function (base) { this.base = base; return this }\n\n __Serializer.prototype.setFlags = function (flags) { this.flags = flags || ''; return this }\n\n __Serializer.prototype.toStr = function (x) {\n var s = x.toNT()\n if (x.termType === 'Graph') {\n this.formulas[s] = x // remember as reverse does not work\n }\n return s\n }\n\n __Serializer.prototype.fromStr = function (s) {\n if (s[0] === '{') {\n var x = this.formulas[s]\n if (!x) console.log('No formula object for ' + s)\n return x\n }\n return this.store.fromNT(s)\n }\n /* Accumulate Namespaces\n **\n ** These are only hints. If two overlap, only one gets used\n ** There is therefore no guarantee in general.\n */\n __Serializer.prototype.suggestPrefix = function (prefix, uri) {\n if (prefix.slice(0, 7) === 'default') return // Try to weed these out\n if (prefix.slice(0, 2) === 'ns') return // From others inferior algos\n if (!prefix || !uri) return // empty strings not suitable\n if (prefix in this.namespaces || uri in this.prefixes) return // already used\n this.prefixes[uri] = prefix\n this.namespaces[prefix] = uri\n }\n\n // Takes a namespace -> prefix map\n __Serializer.prototype.suggestNamespaces = function (namespaces) {\n for (var px in namespaces) {\n this.suggestPrefix(px, namespaces[px])\n return this\n }\n }\n\n __Serializer.prototype.checkIntegrity = function () {\n var p, ns\n for (p in this.namespaces) {\n if (this.prefixes[this.namespaces[p]] !== p) {\n throw new Error('Serializer integity error 1: ' + p + ', ' +\n this.namespaces[p] + ', ' + this.prefixes[this.namespaces[p]] + '!')\n }\n }\n for (ns in this.prefixes) {\n if (this.namespaces[this.prefixes[ns]] !== ns) {\n throw new Error('Serializer integity error 2: ' + ns + ', ' +\n this.prefixs[ns] + ', ' + this.namespaces[this.prefixes[ns]] + '!')\n }\n }\n }\n\n // Make up an unused prefix for a random namespace\n __Serializer.prototype.makeUpPrefix = function (uri) {\n var p = uri\n function canUseMethod (pp) {\n if (!__Serializer.prototype.validPrefix.test(pp)) return false // bad format\n if (pp === 'ns') return false // boring\n if (pp in this.namespaces) return false // already used\n this.prefixes[uri] = pp\n this.namespaces[pp] = uri\n return pp\n }\n var canUse = canUseMethod.bind(this)\n\n if ('#/'.indexOf(p[p.length - 1]) >= 0) p = p.slice(0, -1)\n var slash = p.lastIndexOf('/')\n if (slash >= 0) p = p.slice(slash + 1)\n var i = 0\n while (i < p.length) {\n if (this.prefixchars.indexOf(p[i])) {\n i++\n } else {\n break\n }\n }\n p = p.slice(0, i)\n\n if (p.length < 6 && (canUse(p))) return p // exact is best\n if (canUse(p.slice(0, 3))) return p.slice(0, 3)\n if (canUse(p.slice(0, 2))) return p.slice(0, 2)\n if (canUse(p.slice(0, 4))) return p.slice(0, 4)\n if (canUse(p.slice(0, 1))) return p.slice(0, 1)\n if (canUse(p.slice(0, 5))) return p.slice(0, 5)\n if (!__Serializer.prototype.validPrefix.test(p)) {\n p = 'n' // Otherwise the loop below may never termimnate\n }\n for (var j = 0; ; j++) if (canUse(p.slice(0, 3) + j)) return p.slice(0, 3) + j\n }\n\n __Serializer.prototype.rootSubjects = function (sts) {\n var incoming = {}\n var subjects = {}\n var allBnodes = {}\n\n /* This scan is to find out which nodes will have to be the roots of trees\n ** in the serialized form. This will be any symbols, and any bnodes\n ** which hve more or less than one incoming arc, and any bnodes which have\n ** one incoming arc but it is an uninterrupted loop of such nodes back to itself.\n ** This should be kept linear time with repect to the number of statements.\n ** Note it does not use any indexing of the store.\n */\n for (var i = 0; i < sts.length; i++) {\n var st = sts[i]\n var checkMentions = function (x) {\n if (!incoming.hasOwnProperty(x)) incoming[x] = []\n incoming[x].push(st.subject) // List of things which will cause this to be printed\n }\n var st2 = [st.subject, st.predicate, st.object]\n st2.map(function (y) {\n if (y.termType === 'BlankNode') {\n allBnodes[y.toNT()] = true\n } else if (y.termType === 'Collection') {\n y.elements.forEach(function (z) {\n checkMentions(z) // bnodes in collections important\n })\n }\n })\n checkMentions(sts[i].object)\n var ss = subjects[this.toStr(st.subject)] // Statements with this as subject\n if (!ss) ss = []\n ss.push(st)\n subjects[this.toStr(st.subject)] = ss // Make hash. @@ too slow for formula?\n }\n\n var roots = []\n for (var xNT in subjects) {\n if (!subjects.hasOwnProperty(xNT)) continue\n var y = this.fromStr(xNT)\n if ((y.termType !== 'BlankNode') || !incoming[y] || (incoming[y].length !== 1)) {\n roots.push(y)\n continue\n }\n }\n this.incoming = incoming // Keep for serializing @@ Bug for nested formulas\n\n // Now do the scan using existing roots\n var rootsHash = {}\n for (var k = 0; k < roots.length; k++) {\n rootsHash[roots[k].toNT()] = true\n }\n return {'roots': roots, 'subjects': subjects,\n 'rootsHash': rootsHash, 'incoming': incoming}\n }\n\n // //////////////////////////////////////////////////////\n\n __Serializer.prototype.toN3 = function (f) {\n return this.statementsToN3(f.statements)\n }\n\n __Serializer.prototype._notQNameChars = '\\t\\r\\n !\"#$%&\\'()*.,+/;<=>?@[\\\\]^`{|}~'\n __Serializer.prototype._notNameChars =\n (__Serializer.prototype._notQNameChars + ':')\n\n __Serializer.prototype.explicitURI = function (uri) {\n if (this.flags.indexOf('r') < 0 && this.base) {\n uri = Uri.refTo(this.base, uri)\n } else if (this.flags.indexOf('u') >= 0) { // Unicode encoding NTriples style\n uri = backslashUify(uri)\n } else {\n uri = hexify(uri)\n }\n return '<' + uri + '>'\n }\n\n __Serializer.prototype.statementsToNTriples = function (sts) {\n var sorted = sts.slice()\n sorted.sort()\n var str = ''\n var rdfns = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'\n var self = this\n var kb = this.store\n var termToNT = function (x) {\n if (x.termType !== 'Collection') {\n return self.atomicTermToN3(x)\n }\n var list = x.elements\n var rest = kb.sym(rdfns + 'nill')\n for (var i = list.length - 1; i >= 0; i--) {\n var bnode = new BlankNode()\n str += termToNT(bnode) + ' ' + termToNT(kb.sym(rdfns + 'first')) + ' ' + termToNT(list[i]) + '.\\n'\n str += termToNT(bnode) + ' ' + termToNT(kb.sym(rdfns + 'rest')) + ' ' + termToNT(rest) + '.\\n'\n rest = bnode\n }\n return self.atomicTermToN3(rest)\n }\n for (var i = 0; i < sorted.length; i++) {\n var st = sorted[i]\n var s = ''\n s += termToNT(st.subject) + ' '\n s += termToNT(st.predicate) + ' '\n s += termToNT(st.object) + ' '\n if (this.flags.indexOf('q') >= 0) { // Do quads not nrtiples\n s += termToNT(st.why) + ' '\n }\n s += '.\\n'\n str += s\n }\n return str\n }\n\n __Serializer.prototype.statementsToN3 = function (sts) {\n var indent = 4\n var width = 80\n var kb = this.store\n // A URI Map alows us to put the type statemnts at the top.\n var uriMap = {'http://www.w3.org/1999/02/22-rdf-syntax-ns#type': 'aaa:00'}\n var SPO = function (x, y) { // Do limited canonicalization of bnodes\n return Util.heavyCompareSPO(x, y, kb, uriMap)\n }\n sts.sort(SPO)\n\n if (this.base && !this.defaultNamespace){\n this.defaultNamespace = this.base + '#'\n }\n\n var predMap = {}\n if (this.flags.indexOf('s') < 0) {\n predMap['http://www.w3.org/2002/07/owl#sameAs'] = '='\n }\n if (this.flags.indexOf('t') < 0) {\n predMap['http://www.w3.org/1999/02/22-rdf-syntax-ns#type'] = 'a'\n }\n if (this.flags.indexOf('i') < 0) {\n predMap['http://www.w3.org/2000/10/swap/log#implies'] = '=>'\n }\n // //////////////////////// Arrange the bits of text\n\n var spaces = function (n) {\n var s = ''\n for (var i = 0; i < n; i++) s += ' '\n return s\n }\n\n var treeToLine = function (tree) {\n var str = ''\n for (var i = 0; i < tree.length; i++) {\n var branch = tree[i]\n var s2 = (typeof branch === 'string') ? branch : treeToLine(branch)\n // Note the space before the dot in case statement ends 123. which is in fact allowed but be conservative.\n if (i !== 0) {\n var ch = str.slice(-1) || ' '\n if (s2 === ',' || s2 === ';') {\n // no gap\n } else if (s2 === '.' && !('0123456789.'.includes(ch))) { // no gap except after number\n // no gap\n } else {\n str += ' ' // separate from previous token\n }\n }\n str += s2\n }\n return str\n }\n\n // Convert a nested tree of lists and strings to a string\n var treeToString = function (tree, level) {\n var str = ''\n var lastLength = 100000\n if (level === undefined) level = -1\n for (var i = 0; i < tree.length; i++) {\n var branch = tree[i]\n if (typeof branch !== 'string') {\n var substr = treeToString(branch, level + 1)\n if (\n substr.length < 10 * (width - indent * level) &&\n substr.indexOf('\"\"\"') < 0) { // Don't mess up multiline strings\n var line = treeToLine(branch)\n if (line.length < (width - indent * level)) {\n branch = line // Note! treat as string below\n substr = ''\n }\n }\n if (substr) lastLength = 10000\n str += substr\n }\n if (typeof branch === 'string') {\n if (branch.length === 1 && str.slice(-1) === '\\n') {\n if (',.;'.indexOf(branch) >= 0) {\n str = str.slice(0, -1) + branch + '\\n' // slip punct'n on end\n lastLength += 1\n continue\n }\n }\n if (lastLength < (indent * level + 4) || // if new line not necessary\n lastLength + branch.length + 1 < width && ';.'.indexOf(str[str.length - 2]) < 0) { // or the string fits on last line\n str = str.slice(0, -1) + ' ' + branch + '\\n' // then continue on this line\n lastLength += branch.length + 1\n } else {\n let line = spaces(indent * level) + branch\n str += line + '\\n'\n lastLength = line.length\n if (level < 0) {\n str += '\\n' // extra blank line\n lastLength = 100000 // don't touch\n }\n }\n }\n }\n return str\n }\n\n // //////////////////////////////////////////// Structure for N3\n // Convert a set of statements into a nested tree of lists and strings\n function statementListToTreeMethod (statements) {\n var stats = this.rootSubjects(statements)\n var roots = stats.roots\n var results = []\n for (var i = 0; i < roots.length; i++) {\n var root = roots[i]\n results.push(subjectTree(root, stats))\n }\n return results\n }\n var statementListToTree = statementListToTreeMethod.bind(this)\n\n // The tree for a subject\n function subjectTree (subject, stats) {\n if (subject.termType === 'BlankNode' && !stats.incoming[subject]) {\n return objectTree(subject, stats, true).concat(['.']) // Anonymous bnode subject\n }\n return [ termToN3(subject, stats) ].concat([propertyTree(subject, stats)]).concat(['.'])\n }\n // The property tree for a single subject or anonymous node\n function propertyTreeMethod (subject, stats) {\n var results = []\n var lastPred = null\n var sts = stats.subjects[this.toStr(subject)] || [] // relevant statements\n if (typeof sts === 'undefined') {\n throw new Error('Cant find statements for ' + subject)\n }\n\n var objects = []\n for (var i = 0; i < sts.length; i++) {\n var st = sts[i]\n if (st.predicate.uri === lastPred) {\n objects.push(',')\n } else {\n if (lastPred) {\n results = results.concat([objects]).concat([';'])\n objects = []\n }\n results.push(predMap[st.predicate.uri]\n ? predMap[st.predicate.uri] : termToN3(st.predicate, stats))\n }\n lastPred = st.predicate.uri\n objects.push(objectTree(st.object, stats))\n }\n results = results.concat([objects])\n return results\n }\n var propertyTree = propertyTreeMethod.bind(this)\n\n function objectTreeMethod (obj, stats, force) {\n if (obj.termType === 'BlankNode' &&\n (force || stats.rootsHash[obj.toNT()] === undefined)) {// if not a root\n if (stats.subjects[this.toStr(obj)]) {\n return ['[', propertyTree(obj, stats), ']']\n } else {\n return '[]'\n }\n }\n return termToN3(obj, stats)\n }\n var objectTree = objectTreeMethod.bind(this)\n\n function termToN3Method (expr, stats) { //\n var i, res\n switch (expr.termType) {\n case 'Graph':\n res = ['{']\n res = res.concat(statementListToTree(expr.statements))\n return res.concat(['}'])\n\n case 'Collection':\n res = ['(']\n for (i = 0; i < expr.elements.length; i++) {\n res.push([ objectTree(expr.elements[i], stats) ])\n }\n res.push(')')\n return res\n\n default:\n return this.atomicTermToN3(expr)\n }\n }\n __Serializer.prototype.termToN3 = termToN3\n var termToN3 = termToN3Method.bind(this)\n\n function prefixDirectivesMethod () {\n var str = ''\n if (this.defaultNamespace) {\n str += '@prefix : ' + this.explicitURI(this.defaultNamespace) + '.\\n'\n }\n for (var ns in this.prefixes) {\n if (!this.prefixes.hasOwnProperty(ns)) continue\n if (!this.namespacesUsed[ns]) continue\n str += '@prefix ' + this.prefixes[ns] + ': ' + this.explicitURI(ns) +\n '.\\n'\n }\n return str + '\\n'\n }\n var prefixDirectives = prefixDirectivesMethod.bind(this)\n // Body of statementsToN3:\n var tree = statementListToTree(sts)\n return prefixDirectives() + treeToString(tree)\n }\n // //////////////////////////////////////////// Atomic Terms\n\n // Deal with term level things and nesting with no bnode structure\n __Serializer.prototype.atomicTermToN3 = function atomicTermToN3 (expr, stats) {\n switch (expr.termType) {\n case 'BlankNode':\n case 'Variable':\n return expr.toNT()\n case 'Literal':\n var val = expr.value\n if (typeof val !== 'string') {\n throw new TypeError('Value of RDF literal node must be a string')\n }\n // var val = expr.value.toString() // should be a string already\n if (expr.datatype && this.flags.indexOf('x') < 0) { // Supress native numbers\n switch (expr.datatype.uri) {\n\n case 'http://www.w3.org/2001/XMLSchema#integer':\n return val\n\n case 'http://www.w3.org/2001/XMLSchema#decimal': // In urtle must have dot\n if (val.indexOf('.') < 0) val += '.0'\n return val\n\n case 'http://www.w3.org/2001/XMLSchema#double': // Must force use of 'e'\n if (val.indexOf('.') < 0) val += '.0'\n if (val.indexOf('e') < 0) val += 'e0'\n return val\n\n case 'http://www.w3.org/2001/XMLSchema#boolean':\n return expr.value === '1' ? 'true' : 'false'\n }\n }\n var str = this.stringToN3(expr.value)\n if (expr.language) {\n str += '@' + expr.language\n } else if (!expr.datatype.equals(XSD.string)) {\n str += '^^' + this.atomicTermToN3(expr.datatype, stats)\n }\n return str\n case 'NamedNode':\n return this.symbolToN3(expr)\n default:\n throw new Error('Internal: atomicTermToN3 cannot handle ' + expr + ' of termType: ' + expr.termType)\n }\n }\n\n // stringToN3: String escaping for N3\n\n __Serializer.prototype.validPrefix = new RegExp(/^[a-zA-Z][a-zA-Z0-9]*$/)\n\n __Serializer.prototype.forbidden1 = new RegExp(/[\\\\\"\\b\\f\\r\\v\\t\\n\\u0080-\\uffff]/gm)\n __Serializer.prototype.forbidden3 = new RegExp(/[\\\\\"\\b\\f\\r\\v\\u0080-\\uffff]/gm)\n __Serializer.prototype.stringToN3 = function stringToN3 (str, flags) {\n if (!flags) flags = 'e'\n var res = ''\n var i, j, k\n var delim\n var forbidden\n if (str.length > 20 && // Long enough to make sense\n str.slice(-1) !== '\"' && // corner case'\n flags.indexOf('n') < 0 && // Force single line\n (str.indexOf('\\n') > 0 || str.indexOf('\"') > 0)) {\n delim = '\"\"\"'\n forbidden = __Serializer.prototype.forbidden3\n } else {\n delim = '\"'\n forbidden = __Serializer.prototype.forbidden1\n }\n for (i = 0; i < str.length;) {\n forbidden.lastIndex = 0\n var m = forbidden.exec(str.slice(i))\n if (m == null) break\n j = i + forbidden.lastIndex - 1\n res += str.slice(i, j)\n var ch = str[j]\n if (ch === '\"' && delim === '\"\"\"' && str.slice(j, j + 3) !== '\"\"\"') {\n res += ch\n } else {\n k = '\\b\\f\\r\\t\\v\\n\\\\\"'.indexOf(ch) // No escaping of bell (7)?\n if (k >= 0) {\n res += '\\\\' + 'bfrtvn\\\\\"'[k]\n } else {\n if (flags.indexOf('e') >= 0) { // Unicode escaping in strings not unix style\n res += '\\\\u' + ('000' +\n ch.charCodeAt(0).toString(16).toLowerCase()).slice(-4)\n } else { // no 'e' flag\n res += ch\n }\n }\n }\n i = j + 1\n }\n return delim + res + str.slice(i) + delim\n }\n // A single symbol, either in <> or namespace notation\n\n __Serializer.prototype.symbolToN3 = function symbolToN3 (x) { // c.f. symbolString() in notation3.py\n var uri = x.uri\n var j = uri.indexOf('#')\n if (j < 0 && this.flags.indexOf('/') < 0) {\n j = uri.lastIndexOf('/')\n }\n if (j >= 0 && this.flags.indexOf('p') < 0 &&\n // Can split at namespace but only if http[s]: URI or file: or ws[s] (why not others?)\n (uri.indexOf('http') === 0 || uri.indexOf('ws') === 0 || uri.indexOf('file') === 0)) {\n var canSplit = true\n for (var k = j + 1; k < uri.length; k++) {\n if (__Serializer.prototype._notNameChars.indexOf(uri[k]) >= 0) {\n canSplit = false\n break\n }\n }\n/*\n if (uri.slice(0, j + 1) === this.base + '#') { // base-relative\n if (canSplit) {\n return ':' + uri.slice(j + 1) // assume deafult ns is local\n } else {\n return '<#' + uri.slice(j + 1) + '>'\n }\n }\n*/\n if (canSplit) {\n var localid = uri.slice(j + 1)\n var namesp = uri.slice(0, j + 1)\n if (this.defaultNamespace && this.defaultNamespace === namesp &&\n this.flags.indexOf('d') < 0) { // d -> suppress default\n if (this.flags.indexOf('k') >= 0 &&\n this.keyords.indexOf(localid) < 0) {\n return localid\n }\n return ':' + localid\n }\n // this.checkIntegrity() // @@@ Remove when not testing\n var prefix = this.prefixes[namesp]\n if (!prefix) prefix = this.makeUpPrefix(namesp)\n if (prefix) {\n this.namespacesUsed[namesp] = true\n return prefix + ':' + localid\n }\n // Fall though if can't do qname\n }\n }\n return this.explicitURI(uri)\n }\n // String escaping utilities\n\n function hexify (str) { // also used in parser\n return encodeURI(str)\n }\n\n function backslashUify (str) {\n var res = ''\n var k\n for (var i = 0; i < str.length; i++) {\n k = str.charCodeAt(i)\n if (k > 65535) {\n res += '\\\\U' + ('00000000' + k.toString(16)).slice(-8) // convert to upper?\n } else if (k > 126) {\n res += '\\\\u' + ('0000' + k.toString(16)).slice(-4)\n } else {\n res += str[i]\n }\n }\n return res\n }\n\n // /////////////////////////// Quad store serialization\n\n // @para. write - a function taking a single string to be output\n //\n __Serializer.prototype.writeStore = function (write) {\n var kb = this.store\n var fetcher = kb.fetcher\n var session = fetcher && fetcher.appNode\n\n // The core data\n\n var sources = this.store.index[3]\n for (var s in sources) { // -> assume we can use -> as short for log:semantics\n var source = kb.fromNT(s)\n if (session && source.sameTerm(session)) continue\n write('\\n' + this.atomicTermToN3(source) + ' ' +\n this.atomicTermToN3(kb.sym('http://www.w3.org/2000/10/swap/log#semantics')) +\n ' { ' + this.statementsToN3(kb.statementsMatching(\n undefined, undefined, undefined, source)) + ' }.\\n')\n }\n\n // The metadata from HTTP interactions:\n\n kb.statementsMatching(undefined,\n kb.sym('http://www.w3.org/2007/ont/link#requestedURI')).map(\n function (st) {\n write('\\n<' + st.object.value + '> log:metadata {\\n')\n var sts = kb.statementsMatching(undefined, undefined, undefined, st.subject)\n write(this.statementsToN3(this.statementsToN3(sts)))\n write('}.\\n')\n })\n\n // Inferences we have made ourselves not attributable to anyone else\n\n var metaSources = []\n if (session) metaSources.push(session)\n var metadata = []\n metaSources.map(function (source) {\n metadata = metadata.concat(kb.statementsMatching(undefined, undefined, undefined, source))\n })\n write(this.statementsToN3(metadata))\n }\n\n // ////////////////////////////////////////////// XML serialization\n\n __Serializer.prototype.statementsToXML = function (sts) {\n var indent = 4\n var width = 80\n\n var namespaceCounts = [] // which have been used\n namespaceCounts['http://www.w3.org/1999/02/22-rdf-syntax-ns#'] = true\n\n var liPrefix = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#_' // prefix for ordered list items\n\n // //////////////////////// Arrange the bits of XML text\n\n var spaces = function (n) {\n var s = ''\n for (var i = 0; i < n; i++) s += ' '\n return s\n }\n\n var XMLtreeToLine = function (tree) {\n var str = ''\n for (var i = 0; i < tree.length; i++) {\n var branch = tree[i]\n var s2 = (typeof branch === 'string') ? branch : XMLtreeToLine(branch)\n str += s2\n }\n return str\n }\n\n // Convert a nested tree of lists and strings to a string\n var XMLtreeToString = function (tree, level) {\n var str = ''\n var line\n var lastLength = 100000\n if (!level) level = 0\n for (var i = 0; i < tree.length; i++) {\n var branch = tree[i]\n if (typeof branch !== 'string') {\n var substr = XMLtreeToString(branch, level + 1)\n if (\n substr.length < 10 * (width - indent * level) &&\n substr.indexOf('\"\"\"') < 0) { // Don't mess up multiline strings\n line = XMLtreeToLine(branch)\n if (line.length < (width - indent * level)) {\n branch = ' ' + line // @@ Hack: treat as string below\n substr = ''\n }\n }\n if (substr) lastLength = 10000\n str += substr\n }\n if (typeof branch === 'string') {\n if (lastLength < (indent * level + 4)) { // continue\n str = str.slice(0, -1) + ' ' + branch + '\\n'\n lastLength += branch.length + 1\n } else {\n line = spaces(indent * level) + branch\n str += line + '\\n'\n lastLength = line.length\n }\n } else { // not string\n }\n }\n return str\n }\n\n function statementListToXMLTreeMethod (statements) {\n this.suggestPrefix('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#')\n var stats = this.rootSubjects(statements)\n var roots = stats.roots\n var results = []\n for (var i = 0; i < roots.length; i++) {\n var root = roots[i]\n results.push(subjectXMLTree(root, stats))\n }\n return results\n }\n var statementListToXMLTree = statementListToXMLTreeMethod.bind(this)\n\n function escapeForXML (str) {\n if (typeof str === 'undefined') return '@@@undefined@@@@'\n return str.replace(/[&<\"]/g, function (m) {\n switch (m[0]) {\n case '&':\n return '&'\n case '<':\n return '<'\n case '\"':\n return '"' // '\n }\n })\n }\n\n function relURIMethod (term) {\n return escapeForXML((this.base) ? Util.uri.refTo(this.base, term.uri) : term.uri)\n }\n var relURI = relURIMethod.bind(this)\n\n // The tree for a subject\n function subjectXMLTreeMethod (subject, stats) {\n var results = []\n var type, t, st, pred\n var sts = stats.subjects[this.toStr(subject)] // relevant statements\n if (typeof sts === 'undefined') { // empty bnode\n return propertyXMLTree(subject, stats)\n }\n\n // Sort only on the predicate, leave the order at object\n // level undisturbed. This leaves multilingual content in\n // the order of entry (for partner literals), which helps\n // readability.\n //\n // For the predicate sort, we attempt to split the uri\n // as a hint to the sequence\n sts.sort(function (a, b) {\n var ap = a.predicate.uri\n var bp = b.predicate.uri\n if (ap.substring(0, liPrefix.length) === liPrefix || bp.substring(0, liPrefix.length) === liPrefix) { // we're only interested in sorting list items\n return ap.localeCompare(bp)\n }\n\n var as = ap.substring(liPrefix.length)\n var bs = bp.substring(liPrefix.length)\n var an = parseInt(as, 10)\n var bn = parseInt(bs, 10)\n if (isNaN(an) || isNaN(bn) ||\n an !== as || bn !== bs) { // we only care about integers\n return ap.localeCompare(bp)\n }\n\n return an - bn\n })\n\n for (var i = 0; i < sts.length; i++) {\n st = sts[i]\n // look for a type\n if (st.predicate.uri === 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' && !type && st.object.termType === 'symbol') {\n type = st.object\n continue // don't include it as a child element\n }\n\n // see whether predicate can be replaced with \"li\"\n pred = st.predicate\n if (pred.uri.substr(0, liPrefix.length) === liPrefix) {\n var number = pred.uri.substr(liPrefix.length)\n // make sure these are actually numeric list items\n var intNumber = parseInt(number, 10)\n if (number === intNumber.toString()) {\n // was numeric; don't need to worry about ordering since we've already\n // sorted the statements\n pred = new NamedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#li')\n }\n }\n\n t = qname(pred)\n switch (st.object.termType) {\n case 'BlankNode':\n if (stats.incoming[st.object].length === 1) { // there should always be something in the incoming array for a bnode\n results = results.concat(['<' + t + ' rdf:parseType=\"Resource\">',\n subjectXMLTree(st.object, stats),\n ''])\n } else {\n results = results.concat(['<' + t + ' rdf:nodeID=\"' +\n st.object.toNT().slice(2) + '\"/>'])\n }\n break\n case 'NamedNode':\n results = results.concat(['<' + t + ' rdf:resource=\"' +\n relURI(st.object) + '\"/>'])\n break\n case 'Literal':\n results = results.concat(['<' + t +\n (st.object.datatype.equals(XSD.string)\n ? ''\n : ' rdf:datatype=\"' + escapeForXML(st.object.datatype.uri) + '\"') +\n (st.object.language ? ' xml:lang=\"' + st.object.language + '\"' : '') +\n '>' + escapeForXML(st.object.value) +\n ''])\n break\n case 'Collection':\n results = results.concat(['<' + t + ' rdf:parseType=\"Collection\">',\n collectionXMLTree(st.object, stats),\n ''])\n break\n default:\n throw new Error(\"Can't serialize object of type \" + st.object.termType + ' into XML')\n } // switch\n }\n\n var tag = type ? qname(type) : 'rdf:Description'\n\n var attrs = ''\n if (subject.termType === 'BlankNode') {\n if (!stats.incoming[subject] || stats.incoming[subject].length !== 1) { // not an anonymous bnode\n attrs = ' rdf:nodeID=\"' + subject.toNT().slice(2) + '\"'\n }\n } else {\n attrs = ' rdf:about=\"' + relURI(subject) + '\"'\n }\n\n return [ '<' + tag + attrs + '>' ].concat([results]).concat([''])\n }\n\n var subjectXMLTree = subjectXMLTreeMethod.bind(this)\n\n function collectionXMLTree (subject, stats) {\n var res = []\n for (var i = 0; i < subject.elements.length; i++) {\n res.push(subjectXMLTree(subject.elements[i], stats))\n }\n return res\n }\n\n // The property tree for a single subject or anonymos node\n function propertyXMLTreeMethod (subject, stats) {\n var results = []\n var sts = stats.subjects[this.toStr(subject)] // relevant statements\n if (!sts) return results // No relevant statements\n sts.sort()\n for (var i = 0; i < sts.length; i++) {\n var st = sts[i]\n switch (st.object.termType) {\n case 'BlankNode':\n if (stats.rootsHash[st.object.toNT()]) { // This bnode has been done as a root -- no content here @@ what bout first time\n results = results.concat(['<' + qname(st.predicate) + ' rdf:nodeID=\"' + st.object.toNT().slice(2) + '\">',\n ''])\n } else {\n results = results.concat(['<' + qname(st.predicate) + ' rdf:parseType=\"Resource\">',\n propertyXMLTree(st.object, stats),\n ''])\n }\n break\n case 'NamedNode':\n results = results.concat(['<' + qname(st.predicate) + ' rdf:resource=\"' +\n relURI(st.object) + '\"/>'])\n break\n case 'Literal':\n results = results.concat(['<' + qname(st.predicate) +\n (st.object.datatype.equals(XSD.string) ? '' : ' rdf:datatype=\"' + escapeForXML(st.object.datatype.value) + '\"') +\n (st.object.language ? ' xml:lang=\"' + st.object.language + '\"' : '') +\n '>' + escapeForXML(st.object.value) +\n ''])\n break\n case 'Collection':\n results = results.concat(['<' + qname(st.predicate) + ' rdf:parseType=\"Collection\">',\n collectionXMLTree(st.object, stats),\n ''])\n break\n default:\n throw new Error(\"Can't serialize object of type \" + st.object.termType + ' into XML')\n } // switch\n }\n return results\n }\n var propertyXMLTree = propertyXMLTreeMethod.bind(this)\n\n function qnameMethod (term) {\n var uri = term.uri\n\n var j = uri.indexOf('#')\n if (j < 0 && this.flags.indexOf('/') < 0) {\n j = uri.lastIndexOf('/')\n }\n if (j < 0) throw new Error('Cannot make qname out of <' + uri + '>')\n\n for (var k = j + 1; k < uri.length; k++) {\n if (__Serializer.prototype._notNameChars.indexOf(uri[k]) >= 0) {\n throw new Error('Invalid character \"' + uri[k] + '\" cannot be in XML qname for URI: ' + uri)\n }\n }\n var localid = uri.slice(j + 1)\n var namesp = uri.slice(0, j + 1)\n if (this.defaultNamespace && this.defaultNamespace === namesp &&\n this.flags.indexOf('d') < 0) { // d -> suppress default\n return localid\n }\n var prefix = this.prefixes[namesp]\n if (!prefix) prefix = this.makeUpPrefix(namesp)\n namespaceCounts[namesp] = true\n return prefix + ':' + localid\n }\n var qname = qnameMethod.bind(this)\n\n // Body of toXML:\n\n var tree = statementListToXMLTree(sts)\n var str = ''] // @@ namespace declrations\n return XMLtreeToString(tree2, -1)\n } // End @@ body\n\n var Serializer = function (store) { return new __Serializer(store) }\n return Serializer\n}())\n\nmodule.exports = Serializer\n\n\n\n// WEBPACK FOOTER //\n// ./src/serializer.js","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/typeof.js\n// module id = 74\n// module chunks = 0","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_defined.js\n// module id = 75\n// module chunks = 0","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_dom-create.js\n// module id = 76\n// module chunks = 0","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_enum-bug-keys.js\n// module id = 77\n// module chunks = 0","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_new-promise-capability.js\n// module id = 78\n// module chunks = 0","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-create.js\n// module id = 79\n// module chunks = 0","exports.f = Object.getOwnPropertySymbols;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-gops.js\n// module id = 80\n// module chunks = 0","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_shared-key.js\n// module id = 81\n// module chunks = 0","var global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_shared.js\n// module id = 82\n// module chunks = 0","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_to-integer.js\n// module id = 83\n// module chunks = 0","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_to-length.js\n// module id = 84\n// module chunks = 0","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_to-primitive.js\n// module id = 85\n// module chunks = 0","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_wks-define.js\n// module id = 86\n// module chunks = 0","exports.f = require('./_wks');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_wks-ext.js\n// module id = 87\n// module chunks = 0","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/es6.string.iterator.js\n// module id = 88\n// module chunks = 0","// **N3Lexer** tokenizes N3 documents.\nvar fromCharCode = String.fromCharCode;\nvar immediately = typeof setImmediate === 'function' ? setImmediate :\n function setImmediate(func) { setTimeout(func, 0); };\n\n// Regular expression and replacement string to escape N3 strings.\n// Note how we catch invalid unicode sequences separately (they will trigger an error).\nvar escapeSequence = /\\\\u([a-fA-F0-9]{4})|\\\\U([a-fA-F0-9]{8})|\\\\[uU]|\\\\(.)/g;\nvar escapeReplacements = { '\\\\': '\\\\', \"'\": \"'\", '\"': '\"',\n 'n': '\\n', 'r': '\\r', 't': '\\t', 'f': '\\f', 'b': '\\b',\n '_': '_', '~': '~', '.': '.', '-': '-', '!': '!', '$': '$', '&': '&',\n '(': '(', ')': ')', '*': '*', '+': '+', ',': ',', ';': ';', '=': '=',\n '/': '/', '?': '?', '#': '#', '@': '@', '%': '%' };\nvar illegalIriChars = /[\\x00-\\x20<>\\\\\"\\{\\}\\|\\^\\`]/;\n\n// ## Constructor\nfunction N3Lexer(options) {\n if (!(this instanceof N3Lexer))\n return new N3Lexer(options);\n\n // In line mode (N-Triples or N-Quads), only simple features may be parsed\n if (options && options.lineMode) {\n // Don't tokenize special literals\n this._tripleQuotedString = this._number = this._boolean = /$0^/;\n // Swap the tokenize method for a restricted version\n var self = this;\n this._tokenize = this.tokenize;\n this.tokenize = function (input, callback) {\n this._tokenize(input, function (error, token) {\n if (!error && /^(?:IRI|prefixed|literal|langcode|type|\\.|eof)$/.test(token.type))\n callback && callback(error, token);\n else\n callback && callback(error || self._syntaxError(token.type, callback = null));\n });\n };\n }\n}\n\nN3Lexer.prototype = {\n // ## Regular expressions\n // It's slightly faster to have these as properties than as in-scope variables.\n\n _iri: /^<((?:[^>\\\\]|\\\\[uU])+)>/, // IRI with escape sequences; needs sanity check after unescaping\n _unescapedIri: /^<([^\\x00-\\x20<>\\\\\"\\{\\}\\|\\^\\`]*)>/, // IRI without escape sequences; no unescaping\n _unescapedString: /^\"[^\"\\\\]+\"(?=[^\"\\\\])/, // non-empty string without escape sequences\n _singleQuotedString: /^\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[^\"\\\\])|^'[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[^'\\\\])/,\n _tripleQuotedString: /^\"\"(\"[^\"\\\\]*(?:(?:\\\\.|\"(?!\"\"))[^\"\\\\]*)*\")\"\"|^''('[^'\\\\]*(?:(?:\\\\.|'(?!''))[^'\\\\]*)*')''/,\n _langcode: /^@([a-z]+(?:-[a-z0-9]+)*)(?=[^a-z0-9\\-])/i,\n _prefix: /^((?:[A-Za-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:\\.?[\\-0-9A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)?:(?=[#\\s<])/,\n _prefixed: /^((?:[A-Za-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:\\.?[\\-0-9A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)?:((?:(?:[0-:A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff]|%[0-9a-fA-F]{2}|\\\\[!#-\\/;=?\\-@_~])(?:(?:[\\.\\-0-:A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff]|%[0-9a-fA-F]{2}|\\\\[!#-\\/;=?\\-@_~])*(?:[\\-0-:A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff]|%[0-9a-fA-F]{2}|\\\\[!#-\\/;=?\\-@_~]))?)?)(?=\\.?[,;\\s#()\\[\\]\\{\\}\"'<])/,\n _blank: /^_:((?:[0-9A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:\\.?[\\-0-9A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)(?=\\.?[,;:\\s#()\\[\\]\\{\\}\"'<])/,\n _number: /^[\\-+]?(?:\\d+\\.?\\d*([eE](?:[\\-\\+])?\\d+)|\\d*\\.?\\d+)(?=[.,;:\\s#()\\[\\]\\{\\}\"'<])/,\n _boolean: /^(?:true|false)(?=[.,;:\\s#()\\[\\]\\{\\}\"'<])/,\n _keyword: /^@[a-z]+(?=[\\s#<:])/,\n _sparqlKeyword: /^(?:PREFIX|BASE|GRAPH)(?=[\\s#<:])/i,\n _shortPredicates: /^a(?=\\s+|<)/,\n _newline: /^[ \\t]*(?:#[^\\n\\r]*)?(?:\\r\\n|\\n|\\r)[ \\t]*/,\n _whitespace: /^[ \\t]+/,\n _endOfFile: /^(?:#[^\\n\\r]*)?$/,\n\n // ## Private methods\n\n // ### `_tokenizeToEnd` tokenizes as for as possible, emitting tokens through the callback.\n _tokenizeToEnd: function (callback, inputFinished) {\n // Continue parsing as far as possible; the loop will return eventually.\n var input = this._input;\n while (true) {\n // Count and skip whitespace lines.\n var whiteSpaceMatch;\n while (whiteSpaceMatch = this._newline.exec(input))\n input = input.substr(whiteSpaceMatch[0].length, input.length), this._line++;\n // Skip whitespace on current line.\n if (whiteSpaceMatch = this._whitespace.exec(input))\n input = input.substr(whiteSpaceMatch[0].length, input.length);\n\n // Stop for now if we're at the end.\n if (this._endOfFile.test(input)) {\n // If the input is finished, emit EOF.\n if (inputFinished)\n callback(input = null, { line: this._line, type: 'eof', value: '', prefix: '' });\n return this._input = input;\n }\n\n // Look for specific token types based on the first character.\n var line = this._line, type = '', value = '', prefix = '',\n firstChar = input[0], match = null, matchLength = 0, unescaped, inconclusive = false;\n switch (firstChar) {\n case '^':\n // Try to match a type.\n if (input.length === 1) break;\n else if (input[1] !== '^') return reportSyntaxError(this);\n this._prevTokenType = '^';\n // Move to type IRI or prefixed name.\n input = input.substr(2);\n if (input[0] !== '<') {\n inconclusive = true;\n break;\n }\n // Fall through in case the type is an IRI.\n\n case '<':\n // Try to find a full IRI without escape sequences.\n if (match = this._unescapedIri.exec(input))\n type = 'IRI', value = match[1];\n // Try to find a full IRI with escape sequences.\n else if (match = this._iri.exec(input)) {\n unescaped = this._unescape(match[1]);\n if (unescaped === null || illegalIriChars.test(unescaped))\n return reportSyntaxError(this);\n type = 'IRI', value = unescaped;\n }\n break;\n\n case '_':\n // Try to find a blank node. Since it can contain (but not end with) a dot,\n // we always need a non-dot character before deciding it is a prefixed name.\n // Therefore, try inserting a space if we're at the end of the input.\n if ((match = this._blank.exec(input)) ||\n inputFinished && (match = this._blank.exec(input + ' ')))\n type = 'prefixed', prefix = '_', value = match[1];\n break;\n\n case '\"':\n case \"'\":\n // Try to find a non-empty double-quoted literal without escape sequences.\n if (match = this._unescapedString.exec(input))\n type = 'literal', value = match[0];\n // Try to find any other literal wrapped in a pair of single or double quotes.\n else if (match = this._singleQuotedString.exec(input)) {\n unescaped = this._unescape(match[0]);\n if (unescaped === null)\n return reportSyntaxError(this);\n type = 'literal', value = unescaped.replace(/^'|'$/g, '\"');\n }\n // Try to find a literal wrapped in three pairs of single or double quotes.\n else if (match = this._tripleQuotedString.exec(input)) {\n unescaped = match[1] || match[2];\n // Count the newlines and advance line counter.\n this._line += unescaped.split(/\\r\\n|\\r|\\n/).length - 1;\n unescaped = this._unescape(unescaped);\n if (unescaped === null)\n return reportSyntaxError(this);\n type = 'literal', value = unescaped.replace(/^'|'$/g, '\"');\n }\n break;\n\n case '@':\n // Try to find a language code.\n if (this._prevTokenType === 'literal' && (match = this._langcode.exec(input)))\n type = 'langcode', value = match[1];\n // Try to find a keyword.\n else if (match = this._keyword.exec(input))\n type = match[0];\n break;\n\n case '.':\n // Try to find a dot as punctuation.\n if (input.length === 1 ? inputFinished : (input[1] < '0' || input[1] > '9')) {\n type = '.';\n matchLength = 1;\n break;\n }\n // Fall through to numerical case (could be a decimal dot).\n\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n case '+':\n case '-':\n // Try to find a number.\n if (match = this._number.exec(input)) {\n type = 'literal';\n value = '\"' + match[0] + '\"^^http://www.w3.org/2001/XMLSchema#' +\n (match[1] ? 'double' : (/^[+\\-]?\\d+$/.test(match[0]) ? 'integer' : 'decimal'));\n }\n break;\n\n case 'B':\n case 'b':\n case 'p':\n case 'P':\n case 'G':\n case 'g':\n // Try to find a SPARQL-style keyword.\n if (match = this._sparqlKeyword.exec(input))\n type = match[0].toUpperCase();\n else\n inconclusive = true;\n break;\n\n case 'f':\n case 't':\n // Try to match a boolean.\n if (match = this._boolean.exec(input))\n type = 'literal', value = '\"' + match[0] + '\"^^http://www.w3.org/2001/XMLSchema#boolean';\n else\n inconclusive = true;\n break;\n\n case 'a':\n // Try to find an abbreviated predicate.\n if (match = this._shortPredicates.exec(input))\n type = 'abbreviation', value = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type';\n else\n inconclusive = true;\n break;\n\n case ',':\n case ';':\n case '[':\n case ']':\n case '(':\n case ')':\n case '{':\n case '}':\n // The next token is punctuation\n matchLength = 1;\n type = firstChar;\n break;\n\n default:\n inconclusive = true;\n }\n\n // Some first characters do not allow an immediate decision, so inspect more.\n if (inconclusive) {\n // Try to find a prefix.\n if ((this._prevTokenType === '@prefix' || this._prevTokenType === 'PREFIX') &&\n (match = this._prefix.exec(input)))\n type = 'prefix', value = match[1] || '';\n // Try to find a prefixed name. Since it can contain (but not end with) a dot,\n // we always need a non-dot character before deciding it is a prefixed name.\n // Therefore, try inserting a space if we're at the end of the input.\n else if ((match = this._prefixed.exec(input)) ||\n inputFinished && (match = this._prefixed.exec(input + ' ')))\n type = 'prefixed', prefix = match[1] || '', value = this._unescape(match[2]);\n }\n\n // A type token is special: it can only be emitted after an IRI or prefixed name is read.\n if (this._prevTokenType === '^')\n type = (type === 'IRI' || type === 'prefixed') ? 'type' : '';\n\n // What if nothing of the above was found?\n if (!type) {\n // We could be in streaming mode, and then we just wait for more input to arrive.\n // Otherwise, a syntax error has occurred in the input.\n // One exception: error on an unaccounted linebreak (= not inside a triple-quoted literal).\n if (inputFinished || (!/^'''|^\"\"\"/.test(input) && /\\n|\\r/.test(input)))\n return reportSyntaxError(this);\n else\n return this._input = input;\n }\n\n // Emit the parsed token.\n callback(null, { line: line, type: type, value: value, prefix: prefix });\n this._prevTokenType = type;\n\n // Advance to next part to tokenize.\n input = input.substr(matchLength || match[0].length, input.length);\n }\n\n // Signals the syntax error through the callback\n function reportSyntaxError(self) { callback(self._syntaxError(/^\\S*/.exec(input)[0])); }\n },\n\n // ### `_unescape` replaces N3 escape codes by their corresponding characters.\n _unescape: function (item) {\n try {\n return item.replace(escapeSequence, function (sequence, unicode4, unicode8, escapedChar) {\n var charCode;\n if (unicode4) {\n charCode = parseInt(unicode4, 16);\n if (isNaN(charCode)) throw new Error(); // can never happen (regex), but helps performance\n return fromCharCode(charCode);\n }\n else if (unicode8) {\n charCode = parseInt(unicode8, 16);\n if (isNaN(charCode)) throw new Error(); // can never happen (regex), but helps performance\n if (charCode <= 0xFFFF) return fromCharCode(charCode);\n return fromCharCode(0xD800 + ((charCode -= 0x10000) / 0x400), 0xDC00 + (charCode & 0x3FF));\n }\n else {\n var replacement = escapeReplacements[escapedChar];\n if (!replacement)\n throw new Error();\n return replacement;\n }\n });\n }\n catch (error) { return null; }\n },\n\n // ### `_syntaxError` creates a syntax error for the given issue\n _syntaxError: function (issue) {\n this._input = null;\n return new Error('Syntax error: unexpected \"' + issue + '\" on line ' + this._line + '.');\n },\n\n\n // ## Public methods\n\n // ### `tokenize` starts the transformation of an N3 document into an array of tokens.\n // The input can be a string or a stream.\n tokenize: function (input, callback) {\n var self = this;\n this._line = 1;\n\n // If the input is a string, continuously emit tokens through the callback until the end.\n if (typeof input === 'string') {\n this._input = input;\n immediately(function () { self._tokenizeToEnd(callback, true); });\n }\n // Otherwise, the input will be streamed.\n else {\n this._input = '';\n\n // If no input was given, it will be streamed through `addChunk` and ended with `end`\n if (!input || typeof input === 'function') {\n this.addChunk = addChunk;\n this.end = end;\n if (!callback)\n callback = input;\n }\n // Otherwise, the input itself must be a stream\n else {\n if (typeof input.setEncoding === 'function')\n input.setEncoding('utf8');\n input.on('data', addChunk);\n input.on('end', end);\n }\n }\n\n // Adds the data chunk to the buffer and parses as far as possible\n function addChunk(data) {\n if (self._input !== null) {\n self._input += data;\n self._tokenizeToEnd(callback, false);\n }\n }\n\n // Parses until the end\n function end() {\n if (self._input !== null)\n self._tokenizeToEnd(callback, true);\n }\n },\n};\n\n// ## Exports\n\n// Export the `N3Lexer` class as a whole.\nmodule.exports = N3Lexer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/n3/lib/N3Lexer.js\n// module id = 89\n// module chunks = 0","// **N3Parser** parses N3 documents.\nvar N3Lexer = require('./N3Lexer');\n\nvar RDF_PREFIX = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n RDF_NIL = RDF_PREFIX + 'nil',\n RDF_FIRST = RDF_PREFIX + 'first',\n RDF_REST = RDF_PREFIX + 'rest';\n\nvar absoluteIRI = /^[a-z][a-z0-9+.-]*:/i,\n schemeAuthority = /^(?:([a-z][a-z0-9+.-]*:))?(?:\\/\\/[^\\/]*)?/i,\n dotSegments = /(?:^|\\/)\\.\\.?(?:$|[\\/#?])/;\n\n// The next ID for new blank nodes\nvar blankNodePrefix = 0, blankNodeCount = 0;\n\n// ## Constructor\nfunction N3Parser(options) {\n if (!(this instanceof N3Parser))\n return new N3Parser(options);\n this._tripleStack = [];\n this._graph = null;\n\n // Set the document IRI.\n options = options || {};\n this._setBase(options.documentIRI);\n\n // Set supported features depending on the format.\n var format = (typeof options.format === 'string') && options.format.match(/\\w*$/)[0].toLowerCase(),\n isTurtle = format === 'turtle', isTriG = format === 'trig',\n isNTriples = /triple/.test(format), isNQuads = /quad/.test(format),\n isLineMode = isNTriples || isNQuads;\n if (!(this._supportsNamedGraphs = !isTurtle))\n this._readPredicateOrNamedGraph = this._readPredicate;\n this._supportsQuads = !(isTurtle || isTriG || isNTriples);\n // Disable relative IRIs in N-Triples or N-Quads mode\n if (isLineMode) {\n this._base = '';\n this._resolveIRI = function (token) {\n this._error('Disallowed relative IRI', token);\n return this._callback = noop, this._subject = null;\n };\n }\n this._blankNodePrefix = typeof options.blankNodePrefix !== 'string' ? '' :\n '_:' + options.blankNodePrefix.replace(/^_:/, '');\n this._lexer = options.lexer || new N3Lexer({ lineMode: isLineMode });\n}\n\n// ## Private class methods\n\n// ### `_resetBlankNodeIds` restarts blank node identification.\nN3Parser._resetBlankNodeIds = function () {\n blankNodePrefix = blankNodeCount = 0;\n};\n\nN3Parser.prototype = {\n // ## Private methods\n\n // ### `_setBase` sets the base IRI to resolve relative IRIs.\n _setBase: function (baseIRI) {\n if (!baseIRI)\n baseIRI = null;\n else if (baseIRI.indexOf('#') >= 0)\n throw new Error('Invalid base IRI ' + baseIRI);\n // Set base IRI and its components\n if (this._base = baseIRI) {\n this._basePath = baseIRI.replace(/[^\\/?]*(?:\\?.*)?$/, '');\n baseIRI = baseIRI.match(schemeAuthority);\n this._baseRoot = baseIRI[0];\n this._baseScheme = baseIRI[1];\n }\n },\n\n // ### `_readInTopContext` reads a token when in the top context.\n _readInTopContext: function (token) {\n switch (token.type) {\n // If an EOF token arrives in the top context, signal that we're done.\n case 'eof':\n if (this._graph !== null)\n return this._error('Unclosed graph', token);\n delete this._prefixes._;\n return this._callback(null, null, this._prefixes);\n // It could be a prefix declaration.\n case '@prefix':\n this._sparqlStyle = false;\n return this._readPrefix;\n case 'PREFIX':\n this._sparqlStyle = true;\n return this._readPrefix;\n // It could be a base declaration.\n case '@base':\n this._sparqlStyle = false;\n return this._readBaseIRI;\n case 'BASE':\n this._sparqlStyle = true;\n return this._readBaseIRI;\n // It could be a graph.\n case '{':\n if (this._supportsNamedGraphs) {\n this._graph = '';\n this._subject = null;\n return this._readSubject;\n }\n case 'GRAPH':\n if (this._supportsNamedGraphs)\n return this._readNamedGraphLabel;\n // Otherwise, the next token must be a subject.\n default:\n return this._readSubject(token);\n }\n },\n\n // ### `_readSubject` reads a triple's subject.\n _readSubject: function (token) {\n this._predicate = null;\n switch (token.type) {\n case 'IRI':\n if (this._base === null || absoluteIRI.test(token.value))\n this._subject = token.value;\n else\n this._subject = this._resolveIRI(token);\n break;\n case 'prefixed':\n var prefix = this._prefixes[token.prefix];\n if (prefix === undefined)\n return this._error('Undefined prefix \"' + token.prefix + ':\"', token);\n this._subject = prefix + token.value;\n break;\n case '[':\n // Start a new triple with a new blank node as subject.\n this._subject = '_:b' + blankNodeCount++;\n this._tripleStack.push({ subject: this._subject, predicate: null, object: null, type: 'blank' });\n return this._readBlankNodeHead;\n case '(':\n // Start a new list\n this._tripleStack.push({ subject: RDF_NIL, predicate: null, object: null, type: 'list' });\n this._subject = null;\n return this._readListItem;\n case '}':\n return this._readPunctuation(token);\n default:\n return this._error('Expected subject but got ' + token.type, token);\n }\n // The next token must be a predicate,\n // or, if the subject was actually a graph IRI, a named graph.\n return this._readPredicateOrNamedGraph;\n },\n\n // ### `_readPredicate` reads a triple's predicate.\n _readPredicate: function (token) {\n var type = token.type;\n switch (type) {\n case 'IRI':\n case 'abbreviation':\n if (this._base === null || absoluteIRI.test(token.value))\n this._predicate = token.value;\n else\n this._predicate = this._resolveIRI(token);\n break;\n case 'prefixed':\n if (token.prefix === '_')\n return this._error('Disallowed blank node as predicate', token);\n var prefix = this._prefixes[token.prefix];\n if (prefix === undefined)\n return this._error('Undefined prefix \"' + token.prefix + ':\"', token);\n this._predicate = prefix + token.value;\n break;\n case '.':\n case ']':\n case '}':\n // Expected predicate didn't come, must have been trailing semicolon.\n if (this._predicate === null)\n return this._error('Unexpected ' + type, token);\n this._subject = null;\n return type === ']' ? this._readBlankNodeTail(token) : this._readPunctuation(token);\n case ';':\n // Extra semicolons can be safely ignored\n return this._readPredicate;\n default:\n return this._error('Expected predicate to follow \"' + this._subject + '\"', token);\n }\n // The next token must be an object.\n return this._readObject;\n },\n\n // ### `_readObject` reads a triple's object.\n _readObject: function (token) {\n switch (token.type) {\n case 'IRI':\n if (this._base === null || absoluteIRI.test(token.value))\n this._object = token.value;\n else\n this._object = this._resolveIRI(token);\n break;\n case 'prefixed':\n var prefix = this._prefixes[token.prefix];\n if (prefix === undefined)\n return this._error('Undefined prefix \"' + token.prefix + ':\"', token);\n this._object = prefix + token.value;\n break;\n case 'literal':\n this._object = token.value;\n return this._readDataTypeOrLang;\n case '[':\n // Start a new triple with a new blank node as subject.\n var blank = '_:b' + blankNodeCount++;\n this._tripleStack.push({ subject: this._subject, predicate: this._predicate, object: blank, type: 'blank' });\n this._subject = blank;\n return this._readBlankNodeHead;\n case '(':\n // Start a new list\n this._tripleStack.push({ subject: this._subject, predicate: this._predicate, object: RDF_NIL, type: 'list' });\n this._subject = null;\n return this._readListItem;\n default:\n return this._error('Expected object to follow \"' + this._predicate + '\"', token);\n }\n return this._getTripleEndReader();\n },\n\n // ### `_readPredicateOrNamedGraph` reads a triple's predicate, or a named graph.\n _readPredicateOrNamedGraph: function (token) {\n return token.type === '{' ? this._readGraph(token) : this._readPredicate(token);\n },\n\n // ### `_readGraph` reads a graph.\n _readGraph: function (token) {\n if (token.type !== '{')\n return this._error('Expected graph but got ' + token.type, token);\n // The \"subject\" we read is actually the GRAPH's label\n this._graph = this._subject, this._subject = null;\n return this._readSubject;\n },\n\n // ### `_readBlankNodeHead` reads the head of a blank node.\n _readBlankNodeHead: function (token) {\n if (token.type === ']') {\n this._subject = null;\n return this._readBlankNodeTail(token);\n }\n else {\n this._predicate = null;\n return this._readPredicate(token);\n }\n },\n\n // ### `_readBlankNodeTail` reads the end of a blank node.\n _readBlankNodeTail: function (token) {\n if (token.type !== ']')\n return this._readBlankNodePunctuation(token);\n\n // Store blank node triple.\n if (this._subject !== null)\n this._callback(null, { subject: this._subject,\n predicate: this._predicate,\n object: this._object,\n graph: this._graph || '' });\n\n // Restore parent triple that contains the blank node.\n var triple = this._tripleStack.pop();\n this._subject = triple.subject;\n // Was the blank node the object?\n if (triple.object !== null) {\n // Restore predicate and object as well, and continue by reading punctuation.\n this._predicate = triple.predicate;\n this._object = triple.object;\n return this._getTripleEndReader();\n }\n // The blank node was the subject, so continue reading the predicate.\n // If the blank node didn't contain any predicates, it could also be the label of a named graph.\n return this._predicate !== null ? this._readPredicate : this._readPredicateOrNamedGraph;\n },\n\n // ### `_readDataTypeOrLang` reads an _optional_ data type or language.\n _readDataTypeOrLang: function (token) {\n switch (token.type) {\n case 'type':\n var value;\n if (token.prefix === '') {\n if (this._base === null || absoluteIRI.test(token.value))\n value = token.value;\n else\n value = this._resolveIRI(token);\n }\n else {\n var prefix = this._prefixes[token.prefix];\n if (prefix === undefined)\n return this._error('Undefined prefix \"' + token.prefix + ':\"', token);\n value = prefix + token.value;\n }\n this._object += '^^' + value;\n return this._getTripleEndReader();\n case 'langcode':\n this._object += '@' + token.value.toLowerCase();\n return this._getTripleEndReader();\n default:\n return this._getTripleEndReader().call(this, token);\n }\n },\n\n // ### `_readListItem` reads items from a list.\n _readListItem: function (token) {\n var item = null, // The actual list item.\n itemHead = null, // The head of the rdf:first predicate.\n prevItemHead = this._subject, // The head of the previous rdf:first predicate.\n stack = this._tripleStack, // The stack of triples part of recursion (lists, blanks, etc.).\n parentTriple = stack[stack.length - 1], // The triple containing the current list.\n next = this._readListItem; // The next function to execute.\n\n switch (token.type) {\n case 'IRI':\n if (this._base === null || absoluteIRI.test(token.value))\n item = token.value;\n else\n item = this._resolveIRI(token);\n break;\n case 'prefixed':\n var prefix = this._prefixes[token.prefix];\n if (prefix === undefined)\n return this._error('Undefined prefix \"' + token.prefix + ':\"', token);\n item = prefix + token.value;\n break;\n case 'literal':\n item = token.value;\n next = this._readDataTypeOrLang;\n break;\n case '[':\n // Stack the current list triple and start a new triple with a blank node as subject.\n itemHead = '_:b' + blankNodeCount++;\n item = '_:b' + blankNodeCount++;\n stack.push({ subject: itemHead, predicate: RDF_FIRST, object: item, type: 'blank' });\n this._subject = item;\n next = this._readBlankNodeHead;\n break;\n case '(':\n // Stack the current list triple and start a new list\n itemHead = '_:b' + blankNodeCount++;\n stack.push({ subject: itemHead, predicate: RDF_FIRST, object: RDF_NIL, type: 'list' });\n this._subject = null;\n next = this._readListItem;\n break;\n case ')':\n // Restore the parent triple.\n stack.pop();\n // If this list is contained within a parent list, return the membership triple here.\n // This will be ` rdf:first .`.\n if (stack.length !== 0 && stack[stack.length - 1].type === 'list')\n this._callback(null, { subject: parentTriple.subject,\n predicate: parentTriple.predicate,\n object: parentTriple.object,\n graph: this._graph || '' });\n // Restore the parent triple's subject.\n this._subject = parentTriple.subject;\n // Was this list in the parent triple's subject?\n if (parentTriple.predicate === null) {\n // The next token is the predicate.\n next = this._readPredicate;\n // Skip writing the list tail if this was an empty list.\n if (parentTriple.subject === RDF_NIL)\n return next;\n }\n // The list was in the parent triple's object.\n else {\n // Restore the parent triple's predicate and object as well.\n this._predicate = parentTriple.predicate;\n this._object = parentTriple.object;\n next = this._getTripleEndReader();\n // Skip writing the list tail if this was an empty list.\n if (parentTriple.object === RDF_NIL)\n return next;\n }\n // Close the list by making the item head nil.\n itemHead = RDF_NIL;\n break;\n default:\n return this._error('Expected list item instead of \"' + token.type + '\"', token);\n }\n\n // Create a new blank node if no item head was assigned yet.\n if (itemHead === null)\n this._subject = itemHead = '_:b' + blankNodeCount++;\n\n // Is this the first element of the list?\n if (prevItemHead === null) {\n // This list is either the object or the subject.\n if (parentTriple.object === RDF_NIL)\n parentTriple.object = itemHead;\n else\n parentTriple.subject = itemHead;\n }\n else {\n // The rest of the list is in the current head.\n this._callback(null, { subject: prevItemHead,\n predicate: RDF_REST,\n object: itemHead,\n graph: this._graph || '' });\n }\n // Add the item's value.\n if (item !== null)\n this._callback(null, { subject: itemHead,\n predicate: RDF_FIRST,\n object: item,\n graph: this._graph || '' });\n return next;\n },\n\n // ### `_readPunctuation` reads punctuation between triples or triple parts.\n _readPunctuation: function (token) {\n var next, subject = this._subject, graph = this._graph;\n switch (token.type) {\n // A closing brace ends a graph\n case '}':\n if (this._graph === null)\n return this._error('Unexpected graph closing', token);\n this._graph = null;\n // A dot just ends the statement, without sharing anything with the next.\n case '.':\n this._subject = null;\n next = this._readInTopContext;\n break;\n // Semicolon means the subject is shared; predicate and object are different.\n case ';':\n next = this._readPredicate;\n break;\n // Comma means both the subject and predicate are shared; the object is different.\n case ',':\n next = this._readObject;\n break;\n // An IRI means this is a quad (only allowed if not already inside a graph).\n case 'IRI':\n if (this._supportsQuads && this._graph === null) {\n if (this._base === null || absoluteIRI.test(token.value))\n graph = token.value;\n else\n graph = this._resolveIRI(token);\n subject = this._subject;\n next = this._readQuadPunctuation;\n break;\n }\n // An prefixed name means this is a quad (only allowed if not already inside a graph).\n case 'prefixed':\n if (this._supportsQuads && this._graph === null) {\n var prefix = this._prefixes[token.prefix];\n if (prefix === undefined)\n return this._error('Undefined prefix \"' + token.prefix + ':\"', token);\n graph = prefix + token.value;\n next = this._readQuadPunctuation;\n break;\n }\n default:\n return this._error('Expected punctuation to follow \"' + this._object + '\"', token);\n }\n // A triple has been completed now, so return it.\n if (subject !== null)\n this._callback(null, { subject: subject,\n predicate: this._predicate,\n object: this._object,\n graph: graph || '' });\n return next;\n },\n\n // ### `_readBlankNodePunctuation` reads punctuation in a blank node\n _readBlankNodePunctuation: function (token) {\n var next;\n switch (token.type) {\n // Semicolon means the subject is shared; predicate and object are different.\n case ';':\n next = this._readPredicate;\n break;\n // Comma means both the subject and predicate are shared; the object is different.\n case ',':\n next = this._readObject;\n break;\n default:\n return this._error('Expected punctuation to follow \"' + this._object + '\"', token);\n }\n // A triple has been completed now, so return it.\n this._callback(null, { subject: this._subject,\n predicate: this._predicate,\n object: this._object,\n graph: this._graph || '' });\n return next;\n },\n\n // ### `_readQuadPunctuation` reads punctuation after a quad.\n _readQuadPunctuation: function (token) {\n if (token.type !== '.')\n return this._error('Expected dot to follow quad', token);\n return this._readInTopContext;\n },\n\n // ### `_readPrefix` reads the prefix of a prefix declaration.\n _readPrefix: function (token) {\n if (token.type !== 'prefix')\n return this._error('Expected prefix to follow @prefix', token);\n this._prefix = token.value;\n return this._readPrefixIRI;\n },\n\n // ### `_readPrefixIRI` reads the IRI of a prefix declaration.\n _readPrefixIRI: function (token) {\n if (token.type !== 'IRI')\n return this._error('Expected IRI to follow prefix \"' + this._prefix + ':\"', token);\n var prefixIRI;\n if (this._base === null || absoluteIRI.test(token.value))\n prefixIRI = token.value;\n else\n prefixIRI = this._resolveIRI(token);\n this._prefixes[this._prefix] = prefixIRI;\n this._prefixCallback(this._prefix, prefixIRI);\n return this._readDeclarationPunctuation;\n },\n\n // ### `_readBaseIRI` reads the IRI of a base declaration.\n _readBaseIRI: function (token) {\n if (token.type !== 'IRI')\n return this._error('Expected IRI to follow base declaration', token);\n try {\n this._setBase(this._base === null ||\n absoluteIRI.test(token.value) ? token.value : this._resolveIRI(token));\n }\n catch (error) { this._error(error.message, token); }\n return this._readDeclarationPunctuation;\n },\n\n // ### `_readNamedGraphLabel` reads the label of a named graph.\n _readNamedGraphLabel: function (token) {\n switch (token.type) {\n case 'IRI':\n case 'prefixed':\n return this._readSubject(token), this._readGraph;\n case '[':\n return this._readNamedGraphBlankLabel;\n default:\n return this._error('Invalid graph label', token);\n }\n },\n\n // ### `_readNamedGraphLabel` reads a blank node label of a named graph.\n _readNamedGraphBlankLabel: function (token) {\n if (token.type !== ']')\n return this._error('Invalid graph label', token);\n this._subject = '_:b' + blankNodeCount++;\n return this._readGraph;\n },\n\n // ### `_readDeclarationPunctuation` reads the punctuation of a declaration.\n _readDeclarationPunctuation: function (token) {\n // SPARQL-style declarations don't have punctuation.\n if (this._sparqlStyle)\n return this._readInTopContext(token);\n\n if (token.type !== '.')\n return this._error('Expected declaration to end with a dot', token);\n return this._readInTopContext;\n },\n\n // ### `_getTripleEndReader` gets the next reader function at the end of a triple.\n _getTripleEndReader: function () {\n var stack = this._tripleStack;\n if (stack.length === 0)\n return this._readPunctuation;\n\n switch (stack[stack.length - 1].type) {\n case 'blank':\n return this._readBlankNodeTail;\n case 'list':\n return this._readListItem;\n }\n },\n\n // ### `_error` emits an error message through the callback.\n _error: function (message, token) {\n this._callback(new Error(message + ' at line ' + token.line + '.'));\n },\n\n // ### `_resolveIRI` resolves a relative IRI token against the base path,\n // assuming that a base path has been set and that the IRI is indeed relative.\n _resolveIRI: function (token) {\n var iri = token.value;\n switch (iri[0]) {\n // An empty relative IRI indicates the base IRI\n case undefined: return this._base;\n // Resolve relative fragment IRIs against the base IRI\n case '#': return this._base + iri;\n // Resolve relative query string IRIs by replacing the query string\n case '?': return this._base.replace(/(?:\\?.*)?$/, iri);\n // Resolve root-relative IRIs at the root of the base IRI\n case '/':\n // Resolve scheme-relative IRIs to the scheme\n return (iri[1] === '/' ? this._baseScheme : this._baseRoot) + this._removeDotSegments(iri);\n // Resolve all other IRIs at the base IRI's path\n default:\n return this._removeDotSegments(this._basePath + iri);\n }\n },\n\n // ### `_removeDotSegments` resolves './' and '../' path segments in an IRI as per RFC3986.\n _removeDotSegments: function (iri) {\n // Don't modify the IRI if it does not contain any dot segments\n if (!dotSegments.test(iri))\n return iri;\n\n // Start with an imaginary slash before the IRI in order to resolve trailing './' and '../'\n var result = '', length = iri.length, i = -1, pathStart = -1, segmentStart = 0, next = '/';\n\n while (i < length) {\n switch (next) {\n // The path starts with the first slash after the authority\n case ':':\n if (pathStart < 0) {\n // Skip two slashes before the authority\n if (iri[++i] === '/' && iri[++i] === '/')\n // Skip to slash after the authority\n while ((pathStart = i + 1) < length && iri[pathStart] !== '/')\n i = pathStart;\n }\n break;\n // Don't modify a query string or fragment\n case '?':\n case '#':\n i = length;\n break;\n // Handle '/.' or '/..' path segments\n case '/':\n if (iri[i + 1] === '.') {\n next = iri[++i + 1];\n switch (next) {\n // Remove a '/.' segment\n case '/':\n result += iri.substring(segmentStart, i - 1);\n segmentStart = i + 1;\n break;\n // Remove a trailing '/.' segment\n case undefined:\n case '?':\n case '#':\n return result + iri.substring(segmentStart, i) + iri.substr(i + 1);\n // Remove a '/..' segment\n case '.':\n next = iri[++i + 1];\n if (next === undefined || next === '/' || next === '?' || next === '#') {\n result += iri.substring(segmentStart, i - 2);\n // Try to remove the parent path from result\n if ((segmentStart = result.lastIndexOf('/')) >= pathStart)\n result = result.substr(0, segmentStart);\n // Remove a trailing '/..' segment\n if (next !== '/')\n return result + '/' + iri.substr(i + 1);\n segmentStart = i + 1;\n }\n }\n }\n }\n next = iri[++i];\n }\n return result + iri.substring(segmentStart);\n },\n\n // ## Public methods\n\n // ### `parse` parses the N3 input and emits each parsed triple through the callback.\n parse: function (input, tripleCallback, prefixCallback) {\n // The read callback is the next function to be executed when a token arrives.\n // We start reading in the top context.\n this._readCallback = this._readInTopContext;\n this._prefixes = Object.create(null);\n this._prefixes._ = this._blankNodePrefix || '_:b' + blankNodePrefix++ + '_';\n\n // If the input argument is not given, shift parameters\n if (typeof input === 'function')\n prefixCallback = tripleCallback, tripleCallback = input, input = null;\n\n // Set the triple and prefix callbacks.\n this._callback = tripleCallback || noop;\n this._prefixCallback = prefixCallback || noop;\n\n // Execute the read callback when a token arrives.\n var self = this;\n this._lexer.tokenize(input, function (error, token) {\n if (error !== null)\n self._callback(error), self._callback = noop;\n else if (self._readCallback !== undefined)\n self._readCallback = self._readCallback(token);\n });\n\n // If no input was given, it can be added with `addChunk` and ended with `end`\n if (!input) {\n this.addChunk = this._lexer.addChunk;\n this.end = this._lexer.end;\n }\n },\n};\n\n// The empty function\nfunction noop() {}\n\n// ## Exports\n\n// Export the `N3Parser` class as a whole.\nmodule.exports = N3Parser;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/n3/lib/N3Parser.js\n// module id = 90\n// module chunks = 0","// **N3Util** provides N3 utility functions\n\nvar Xsd = 'http://www.w3.org/2001/XMLSchema#';\nvar XsdString = Xsd + 'string';\nvar XsdInteger = Xsd + 'integer';\nvar XsdDecimal = Xsd + 'decimal';\nvar XsdBoolean = Xsd + 'boolean';\nvar RdfLangString = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString';\n\nvar N3Util = {\n // Tests whether the given entity (triple object) represents an IRI in the N3 library\n isIRI: function (entity) {\n if (!entity)\n return entity;\n var firstChar = entity[0];\n return firstChar !== '\"' && firstChar !== '_';\n },\n\n // Tests whether the given entity (triple object) represents a literal in the N3 library\n isLiteral: function (entity) {\n return entity && entity[0] === '\"';\n },\n\n // Tests whether the given entity (triple object) represents a blank node in the N3 library\n isBlank: function (entity) {\n return entity && entity.substr(0, 2) === '_:';\n },\n\n // Gets the string value of a literal in the N3 library\n getLiteralValue: function (literal) {\n var match = /^\"([^]*)\"/.exec(literal);\n if (!match)\n throw new Error(literal + ' is not a literal');\n return match[1];\n },\n\n // Gets the type of a literal in the N3 library\n getLiteralType: function (literal) {\n var match = /^\"[^]*\"(?:\\^\\^([^\"]+)|(@)[^@\"]+)?$/.exec(literal);\n if (!match)\n throw new Error(literal + ' is not a literal');\n return match[1] || (match[2] ? RdfLangString : XsdString);\n },\n\n // Gets the language of a literal in the N3 library\n getLiteralLanguage: function (literal) {\n var match = /^\"[^]*\"(?:@([^@\"]+)|\\^\\^[^\"]+)?$/.exec(literal);\n if (!match)\n throw new Error(literal + ' is not a literal');\n return match[1] ? match[1].toLowerCase() : '';\n },\n\n // Tests whether the given entity (triple object) represents a prefixed name\n isPrefixedName: function (entity) {\n return entity && /^[^:\\/\"']*:[^:\\/\"']+$/.test(entity);\n },\n\n // Expands the prefixed name to a full IRI (also when it occurs as a literal's type)\n expandPrefixedName: function (prefixedName, prefixes) {\n var match = /(?:^|\"\\^\\^)([^:\\/#\"'\\^_]*):[^\\/]*$/.exec(prefixedName), prefix, base, index;\n if (match)\n prefix = match[1], base = prefixes[prefix], index = match.index;\n if (base === undefined)\n return prefixedName;\n\n // The match index is non-zero when expanding a literal's type.\n return index === 0 ? base + prefixedName.substr(prefix.length + 1)\n : prefixedName.substr(0, index + 3) +\n base + prefixedName.substr(index + prefix.length + 4);\n },\n\n // Creates an IRI in N3.js representation\n createIRI: function (iri) {\n return iri && iri[0] === '\"' ? N3Util.getLiteralValue(iri) : iri;\n },\n\n // Creates a literal in N3.js representation\n createLiteral: function (value, modifier) {\n if (!modifier) {\n switch (typeof value) {\n case 'boolean':\n modifier = XsdBoolean;\n break;\n case 'number':\n if (isFinite(value)) {\n modifier = value % 1 === 0 ? XsdInteger : XsdDecimal;\n break;\n }\n default:\n return '\"' + value + '\"';\n }\n }\n return '\"' + value +\n (/^[a-z]+(-[a-z0-9]+)*$/i.test(modifier) ? '\"@' + modifier.toLowerCase()\n : '\"^^' + modifier);\n },\n};\n\n// Add the N3Util functions to the given object or its prototype\nfunction addN3Util(parent, toPrototype) {\n for (var name in N3Util)\n if (!toPrototype)\n parent[name] = N3Util[name];\n else\n parent.prototype[name] = applyToThis(N3Util[name]);\n\n return parent;\n}\n\n// Returns a function that applies `f` to the `this` object\nfunction applyToThis(f) {\n return function (a) { return f(this, a); };\n}\n\n// Expose N3Util, attaching all functions to it\nmodule.exports = addN3Util(addN3Util);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/n3/lib/N3Util.js\n// module id = 91\n// module chunks = 0","// **N3Writer** writes N3 documents.\n\n// Matches a literal as represented in memory by the N3 library\nvar N3LiteralMatcher = /^\"([^]*)\"(?:\\^\\^(.+)|@([\\-a-z]+))?$/i;\n\n// rdf:type predicate (for 'a' abbreviation)\nvar RDF_PREFIX = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n RDF_TYPE = RDF_PREFIX + 'type';\n\n// Characters in literals that require escaping\nvar escape = /[\"\\\\\\t\\n\\r\\b\\f\\u0000-\\u0019\\ud800-\\udbff]/,\n escapeAll = /[\"\\\\\\t\\n\\r\\b\\f\\u0000-\\u0019]|[\\ud800-\\udbff][\\udc00-\\udfff]/g,\n escapeReplacements = { '\\\\': '\\\\\\\\', '\"': '\\\\\"', '\\t': '\\\\t',\n '\\n': '\\\\n', '\\r': '\\\\r', '\\b': '\\\\b', '\\f': '\\\\f' };\n\n// ## Constructor\nfunction N3Writer(outputStream, options) {\n if (!(this instanceof N3Writer))\n return new N3Writer(outputStream, options);\n\n // Shift arguments if the first argument is not a stream\n if (outputStream && typeof outputStream.write !== 'function')\n options = outputStream, outputStream = null;\n options = options || {};\n\n // If no output stream given, send the output as string through the end callback\n if (!outputStream) {\n var output = '';\n this._outputStream = {\n write: function (chunk, encoding, done) { output += chunk; done && done(); },\n end: function (done) { done && done(null, output); },\n };\n this._endStream = true;\n }\n else {\n this._outputStream = outputStream;\n this._endStream = options.end === undefined ? true : !!options.end;\n }\n\n // Initialize writer, depending on the format\n this._subject = null;\n if (!(/triple|quad/i).test(options.format)) {\n this._graph = '';\n this._prefixIRIs = Object.create(null);\n options.prefixes && this.addPrefixes(options.prefixes);\n }\n else {\n this._writeTriple = this._writeTripleLine;\n }\n}\n\nN3Writer.prototype = {\n // ## Private methods\n\n // ### `_write` writes the argument to the output stream\n _write: function (string, callback) {\n this._outputStream.write(string, 'utf8', callback);\n },\n\n // ### `_writeTriple` writes the triple to the output stream\n _writeTriple: function (subject, predicate, object, graph, done) {\n try {\n // Write the graph's label if it has changed\n if (this._graph !== graph) {\n // Close the previous graph and start the new one\n this._write((this._subject === null ? '' : (this._graph ? '\\n}\\n' : '.\\n')) +\n (graph ? this._encodeIriOrBlankNode(graph) + ' {\\n' : ''));\n this._subject = null;\n // Don't treat identical blank nodes as repeating graphs\n this._graph = graph[0] !== '[' ? graph : ']';\n }\n // Don't repeat the subject if it's the same\n if (this._subject === subject) {\n // Don't repeat the predicate if it's the same\n if (this._predicate === predicate)\n this._write(', ' + this._encodeObject(object), done);\n // Same subject, different predicate\n else\n this._write(';\\n ' +\n this._encodePredicate(this._predicate = predicate) + ' ' +\n this._encodeObject(object), done);\n }\n // Different subject; write the whole triple\n else\n this._write((this._subject === null ? '' : '.\\n') +\n this._encodeSubject(this._subject = subject) + ' ' +\n this._encodePredicate(this._predicate = predicate) + ' ' +\n this._encodeObject(object), done);\n }\n catch (error) { done && done(error); }\n },\n\n // ### `_writeTripleLine` writes the triple or quad to the output stream as a single line\n _writeTripleLine: function (subject, predicate, object, graph, done) {\n // Don't use prefixes\n delete this._prefixMatch;\n // Write the triple\n try {\n this._write(this._encodeIriOrBlankNode(subject) + ' ' +\n this._encodeIriOrBlankNode(predicate) + ' ' +\n this._encodeObject(object) +\n (graph ? ' ' + this._encodeIriOrBlankNode(graph) + '.\\n' : '.\\n'), done);\n }\n catch (error) { done && done(error); }\n },\n\n // ### `_encodeIriOrBlankNode` represents an IRI or blank node\n _encodeIriOrBlankNode: function (entity) {\n // A blank node or list is represented as-is\n var firstChar = entity[0];\n if (firstChar === '[' || firstChar === '(' || firstChar === '_' && entity[1] === ':')\n return entity;\n // Escape special characters\n if (escape.test(entity))\n entity = entity.replace(escapeAll, characterReplacer);\n // Try to represent the IRI as prefixed name\n var prefixMatch = this._prefixRegex.exec(entity);\n return !prefixMatch ? '<' + entity + '>' :\n (!prefixMatch[1] ? entity : this._prefixIRIs[prefixMatch[1]] + prefixMatch[2]);\n },\n\n // ### `_encodeLiteral` represents a literal\n _encodeLiteral: function (value, type, language) {\n // Escape special characters\n if (escape.test(value))\n value = value.replace(escapeAll, characterReplacer);\n // Write the literal, possibly with type or language\n if (language)\n return '\"' + value + '\"@' + language;\n else if (type)\n return '\"' + value + '\"^^' + this._encodeIriOrBlankNode(type);\n else\n return '\"' + value + '\"';\n },\n\n // ### `_encodeSubject` represents a subject\n _encodeSubject: function (subject) {\n if (subject[0] === '\"')\n throw new Error('A literal as subject is not allowed: ' + subject);\n // Don't treat identical blank nodes as repeating subjects\n if (subject[0] === '[')\n this._subject = ']';\n return this._encodeIriOrBlankNode(subject);\n },\n\n // ### `_encodePredicate` represents a predicate\n _encodePredicate: function (predicate) {\n if (predicate[0] === '\"')\n throw new Error('A literal as predicate is not allowed: ' + predicate);\n return predicate === RDF_TYPE ? 'a' : this._encodeIriOrBlankNode(predicate);\n },\n\n // ### `_encodeObject` represents an object\n _encodeObject: function (object) {\n // Represent an IRI or blank node\n if (object[0] !== '\"')\n return this._encodeIriOrBlankNode(object);\n // Represent a literal\n var match = N3LiteralMatcher.exec(object);\n if (!match) throw new Error('Invalid literal: ' + object);\n return this._encodeLiteral(match[1], match[2], match[3]);\n },\n\n // ### `_blockedWrite` replaces `_write` after the writer has been closed\n _blockedWrite: function () {\n throw new Error('Cannot write because the writer has been closed.');\n },\n\n // ### `addTriple` adds the triple to the output stream\n addTriple: function (subject, predicate, object, graph, done) {\n // The triple was given as a triple object, so shift parameters\n if (object === undefined)\n this._writeTriple(subject.subject, subject.predicate, subject.object,\n subject.graph || '', predicate);\n // The optional `graph` parameter was not provided\n else if (typeof graph !== 'string')\n this._writeTriple(subject, predicate, object, '', graph);\n // The `graph` parameter was provided\n else\n this._writeTriple(subject, predicate, object, graph, done);\n },\n\n // ### `addTriples` adds the triples to the output stream\n addTriples: function (triples) {\n for (var i = 0; i < triples.length; i++)\n this.addTriple(triples[i]);\n },\n\n // ### `addPrefix` adds the prefix to the output stream\n addPrefix: function (prefix, iri, done) {\n var prefixes = {};\n prefixes[prefix] = iri;\n this.addPrefixes(prefixes, done);\n },\n\n // ### `addPrefixes` adds the prefixes to the output stream\n addPrefixes: function (prefixes, done) {\n // Add all useful prefixes\n var prefixIRIs = this._prefixIRIs, hasPrefixes = false;\n for (var prefix in prefixes) {\n // Verify whether the prefix can be used and does not exist yet\n var iri = prefixes[prefix];\n if (/[#\\/]$/.test(iri) && prefixIRIs[iri] !== (prefix += ':')) {\n hasPrefixes = true;\n prefixIRIs[iri] = prefix;\n // Finish a possible pending triple\n if (this._subject !== null) {\n this._write(this._graph ? '\\n}\\n' : '.\\n');\n this._subject = null, this._graph = '';\n }\n // Write prefix\n this._write('@prefix ' + prefix + ' <' + iri + '>.\\n');\n }\n }\n // Recreate the prefix matcher\n if (hasPrefixes) {\n var IRIlist = '', prefixList = '';\n for (var prefixIRI in prefixIRIs) {\n IRIlist += IRIlist ? '|' + prefixIRI : prefixIRI;\n prefixList += (prefixList ? '|' : '') + prefixIRIs[prefixIRI];\n }\n IRIlist = IRIlist.replace(/[\\]\\/\\(\\)\\*\\+\\?\\.\\\\\\$]/g, '\\\\$&');\n this._prefixRegex = new RegExp('^(?:' + prefixList + ')[^\\/]*$|' +\n '^(' + IRIlist + ')([a-zA-Z][\\\\-_a-zA-Z0-9]*)$');\n }\n // End a prefix block with a newline\n this._write(hasPrefixes ? '\\n' : '', done);\n },\n\n // ### `blank` creates a blank node with the given content\n blank: function (predicate, object) {\n var children = predicate, child, length;\n // Empty blank node\n if (predicate === undefined)\n children = [];\n // Blank node passed as blank(\"predicate\", \"object\")\n else if (typeof predicate === 'string')\n children = [{ predicate: predicate, object: object }];\n // Blank node passed as blank({ predicate: predicate, object: object })\n else if (!('length' in predicate))\n children = [predicate];\n\n switch (length = children.length) {\n // Generate an empty blank node\n case 0:\n return '[]';\n // Generate a non-nested one-triple blank node\n case 1:\n child = children[0];\n if (child.object[0] !== '[')\n return '[ ' + this._encodePredicate(child.predicate) + ' ' +\n this._encodeObject(child.object) + ' ]';\n // Generate a multi-triple or nested blank node\n default:\n var contents = '[';\n // Write all triples in order\n for (var i = 0; i < length; i++) {\n child = children[i];\n // Write only the object is the predicate is the same as the previous\n if (child.predicate === predicate)\n contents += ', ' + this._encodeObject(child.object);\n // Otherwise, write the predicate and the object\n else {\n contents += (i ? ';\\n ' : '\\n ') +\n this._encodePredicate(child.predicate) + ' ' +\n this._encodeObject(child.object);\n predicate = child.predicate;\n }\n }\n return contents + '\\n]';\n }\n },\n\n // ### `list` creates a list node with the given content\n list: function (elements) {\n var length = elements && elements.length || 0, contents = new Array(length);\n for (var i = 0; i < length; i++)\n contents[i] = this._encodeObject(elements[i]);\n return '(' + contents.join(' ') + ')';\n },\n\n // ### `_prefixRegex` matches a prefixed name or IRI that begins with one of the added prefixes\n _prefixRegex: /$0^/,\n\n // ### `end` signals the end of the output stream\n end: function (done) {\n // Finish a possible pending triple\n if (this._subject !== null) {\n this._write(this._graph ? '\\n}\\n' : '.\\n');\n this._subject = null;\n }\n // Disallow further writing\n this._write = this._blockedWrite;\n\n // Try to end the underlying stream, ensuring done is called exactly one time\n var singleDone = done && function (error, result) { singleDone = null, done(error, result); };\n if (this._endStream) {\n try { return this._outputStream.end(singleDone); }\n catch (error) { /* error closing stream */ }\n }\n singleDone && singleDone();\n },\n};\n\n// Replaces a character by its escaped version\nfunction characterReplacer(character) {\n // Replace a single character by its escaped version\n var result = escapeReplacements[character];\n if (result === undefined) {\n // Replace a single character with its 4-bit unicode escape sequence\n if (character.length === 1) {\n result = character.charCodeAt(0).toString(16);\n result = '\\\\u0000'.substr(0, 6 - result.length) + result;\n }\n // Replace a surrogate pair with its 8-bit unicode escape sequence\n else {\n result = ((character.charCodeAt(0) - 0xD800) * 0x400 +\n character.charCodeAt(1) + 0x2400).toString(16);\n result = '\\\\U00000000'.substr(0, 10 - result.length) + result;\n }\n }\n return result;\n}\n\n// ## Exports\n\n// Export the `N3Writer` class as a whole.\nmodule.exports = N3Writer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/n3/lib/N3Writer.js\n// module id = 92\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/_stream_writable.js\n// module id = 93\n// module chunks = 0","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/readable-browser.js\n// module id = 94\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.clearSession = exports.getSession = undefined;\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar getSession = exports.getSession = function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(storage) {\n var data;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _storage.getData)(storage);\n\n case 2:\n data = _context.sent;\n return _context.abrupt('return', data.session || null);\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function getSession(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\nvar clearSession = exports.clearSession = function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(storage) {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _storage.updateStorage)(storage, function (data) {\n return (0, _extends3.default)({}, data, { session: null });\n });\n\n case 2:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function clearSession(_x3) {\n return _ref3.apply(this, arguments);\n };\n}();\n\nexports.saveSession = saveSession;\n\nvar _storage = require('./storage');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction saveSession(storage) {\n var _this = this;\n\n return function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(session) {\n var data;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return (0, _storage.updateStorage)(storage, function (data) {\n return (0, _extends3.default)({}, data, { session: session });\n });\n\n case 2:\n data = _context2.sent;\n return _context2.abrupt('return', data.session);\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, _this);\n }));\n\n return function (_x2) {\n return _ref2.apply(this, arguments);\n };\n }();\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/solid-auth-client/lib/session.js\n// module id = 95\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fetchWithCredentials = exports.requiresAuth = exports.getRegisteredRp = exports.logout = exports.currentSession = exports.login = undefined;\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar getStoredRp = function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(storage) {\n var data, rpConfig;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _storage.getData)(storage);\n\n case 2:\n data = _context3.sent;\n rpConfig = data.rpConfig;\n\n if (!rpConfig) {\n _context3.next = 9;\n break;\n }\n\n rpConfig.store = storage;\n return _context3.abrupt('return', _oidcRp2.default.from(rpConfig));\n\n case 9:\n return _context3.abrupt('return', null);\n\n case 10:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function getStoredRp(_x4) {\n return _ref3.apply(this, arguments);\n };\n}();\n\nvar storeRp = function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(storage, idp, rp) {\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return (0, _storage.updateStorage)(storage, function (data) {\n return (0, _extends3.default)({}, data, {\n rpConfig: rp\n });\n });\n\n case 2:\n return _context4.abrupt('return', rp);\n\n case 3:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function storeRp(_x5, _x6, _x7) {\n return _ref4.apply(this, arguments);\n };\n}();\n\nvar _authHeader = require('auth-header');\n\nvar authorization = _interopRequireWildcard(_authHeader);\n\nvar _oidcRp = require('@solid/oidc-rp');\n\nvar _oidcRp2 = _interopRequireDefault(_oidcRp);\n\nvar _PoPToken = require('@solid/oidc-rp/lib/PoPToken');\n\nvar _PoPToken2 = _interopRequireDefault(_PoPToken);\n\nvar _urlUtil = require('./url-util');\n\nvar _storage = require('./storage');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar login = exports.login = function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(idp, options) {\n var rp;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return getRegisteredRp(idp, options);\n\n case 3:\n rp = _context.sent;\n _context.next = 6;\n return saveAppHashFragment(options.storage);\n\n case 6:\n return _context.abrupt('return', sendAuthRequest(rp, options));\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context['catch'](0);\n\n console.warn('Error logging in with WebID-OIDC');\n console.error(_context.t0);\n return _context.abrupt('return', null);\n\n case 14:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, undefined, [[0, 9]]);\n }));\n\n return function login(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n/* global RequestInfo, Response */\nvar currentSession = exports.currentSession = function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var storage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : (0, _storage.defaultStorage)();\n var rp, url, storeData, session;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n _context2.next = 3;\n return getStoredRp(storage);\n\n case 3:\n rp = _context2.sent;\n\n if (rp) {\n _context2.next = 6;\n break;\n }\n\n return _context2.abrupt('return', null);\n\n case 6:\n url = (0, _urlUtil.currentUrl)();\n\n if (!(!url || !url.includes('#access_token='))) {\n _context2.next = 9;\n break;\n }\n\n return _context2.abrupt('return', null);\n\n case 9:\n _context2.next = 11;\n return (0, _storage.getData)(storage);\n\n case 11:\n storeData = _context2.sent;\n _context2.next = 14;\n return rp.validateResponse(url, storeData);\n\n case 14:\n session = _context2.sent;\n\n if (session) {\n _context2.next = 17;\n break;\n }\n\n return _context2.abrupt('return', null);\n\n case 17:\n _context2.next = 19;\n return restoreAppHashFragment(storage);\n\n case 19:\n return _context2.abrupt('return', (0, _extends3.default)({}, session, {\n webId: session.idClaims.sub,\n idp: session.issuer\n }));\n\n case 22:\n _context2.prev = 22;\n _context2.t0 = _context2['catch'](0);\n\n console.warn('Error finding a WebID-OIDC session');\n console.error(_context2.t0);\n return _context2.abrupt('return', null);\n\n case 27:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, undefined, [[0, 22]]);\n }));\n\n return function currentSession() {\n return _ref2.apply(this, arguments);\n };\n}();\n\nvar logout = exports.logout = function logout(storage) {\n return getStoredRp(storage).then(function (rp) {\n return rp ? rp.logout() : undefined;\n }).catch(function (err) {\n console.warn('Error logging out of the WebID-OIDC session');\n console.error(err);\n });\n};\n\nvar getRegisteredRp = exports.getRegisteredRp = function getRegisteredRp(idp, options) {\n return getStoredRp(options.storage).then(function (rp) {\n if (rp && rp.provider.url === idp) {\n return rp;\n }\n return registerRp(idp, options).then(function (rp) {\n return storeRp(options.storage, idp, rp);\n });\n });\n};\n\nvar registerRp = function registerRp(idp, _ref5) {\n var storage = _ref5.storage,\n callbackUri = _ref5.callbackUri;\n\n var responseType = 'id_token token';\n var registration = {\n issuer: idp,\n grant_types: ['implicit'],\n redirect_uris: [callbackUri],\n response_types: [responseType],\n scope: 'openid profile'\n };\n var options = {\n defaults: {\n authenticate: {\n redirect_uri: callbackUri,\n response_type: responseType\n }\n },\n store: storage\n };\n return _oidcRp2.default.register(idp, registration, options);\n};\n\nvar sendAuthRequest = function () {\n var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(rp, _ref6) {\n var callbackUri = _ref6.callbackUri,\n storage = _ref6.storage;\n var data, url;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return (0, _storage.getData)(storage);\n\n case 2:\n data = _context5.sent;\n _context5.next = 5;\n return rp.createRequest({ redirect_uri: callbackUri }, data);\n\n case 5:\n url = _context5.sent;\n _context5.next = 8;\n return (0, _storage.updateStorage)(storage, function () {\n return data;\n });\n\n case 8:\n return _context5.abrupt('return', (0, _urlUtil.navigateTo)(url));\n\n case 9:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, undefined);\n }));\n\n return function sendAuthRequest(_x8, _x9) {\n return _ref7.apply(this, arguments);\n };\n}();\n\nvar saveAppHashFragment = function saveAppHashFragment(store) {\n return (0, _storage.updateStorage)(store, function (data) {\n return (0, _extends3.default)({}, data, {\n appHashFragment: window.location.hash\n });\n });\n};\n\nvar restoreAppHashFragment = function restoreAppHashFragment(store) {\n return (0, _storage.updateStorage)(store, function (data) {\n window.location.hash = data.appHashFragment;\n delete data.appHashFragment;\n return data;\n });\n};\n\n/**\n * Answers whether a HTTP response requires WebID-OIDC authentication.\n */\nvar requiresAuth = exports.requiresAuth = function requiresAuth(resp) {\n if (resp.status !== 401) {\n return false;\n }\n var wwwAuthHeader = resp.headers.get('www-authenticate');\n if (!wwwAuthHeader) {\n return false;\n }\n var auth = authorization.parse(wwwAuthHeader);\n return auth.scheme === 'Bearer' && auth.params && auth.params.scope === 'openid webid';\n};\n\n/**\n * Fetches a resource, providing the WebID-OIDC ID Token as authentication.\n * Assumes that the resource has requested those tokens in a previous response.\n */\nvar fetchWithCredentials = exports.fetchWithCredentials = function fetchWithCredentials(session) {\n return function () {\n var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(fetch, input, options) {\n var popToken, authenticatedOptions;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return _PoPToken2.default.issueFor((0, _urlUtil.toUrlString)(input), session);\n\n case 2:\n popToken = _context6.sent;\n authenticatedOptions = (0, _extends3.default)({}, options, {\n credentials: 'include',\n headers: (0, _extends3.default)({}, options && options.headers ? options.headers : {}, {\n authorization: 'Bearer ' + popToken\n })\n });\n return _context6.abrupt('return', fetch(input, authenticatedOptions));\n\n case 5:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, undefined);\n }));\n\n return function (_x10, _x11, _x12) {\n return _ref8.apply(this, arguments);\n };\n }();\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/solid-auth-client/lib/webid-oidc.js\n// module id = 96\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/util/util.js\n// module id = 97\n// module chunks = 0","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 98\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_99__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"fetch\"\n// module id = 99\n// module chunks = 0","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * DataError\n */\nvar DataError = function (_Error) {\n _inherits(DataError, _Error);\n\n function DataError(message) {\n _classCallCheck(this, DataError);\n\n return _possibleConstructorReturn(this, (DataError.__proto__ || Object.getPrototypeOf(DataError)).call(this, message));\n }\n\n return DataError;\n}(Error);\n\n/**\n * Export\n */\n\n\nmodule.exports = DataError;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/errors/DataError.js\n// module id = 100\n// module chunks = 0","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * NotSupportedError\n */\nvar NotSupportedError = function (_Error) {\n _inherits(NotSupportedError, _Error);\n\n function NotSupportedError(alg) {\n _classCallCheck(this, NotSupportedError);\n\n var _this = _possibleConstructorReturn(this, (NotSupportedError.__proto__ || Object.getPrototypeOf(NotSupportedError)).call(this));\n\n _this.message = alg + \" is not a supported algorithm\";\n return _this;\n }\n\n return NotSupportedError;\n}(Error);\n\n/**\n * Export\n */\n\n\nmodule.exports = NotSupportedError;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/errors/NotSupportedError.js\n// module id = 101\n// module chunks = 0","'use strict';\n\nmodule.exports = {\n DataError: require('./DataError'),\n NotSupportedError: require('./NotSupportedError')\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/errors/index.js\n// module id = 102\n// module chunks = 0","'use strict';\n\n/**\n * Dependencies\n * @ignore\n */\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _require = require('@trust/json-document'),\n JSONDocument = _require.JSONDocument;\n\nvar JWKSchema = require('../schemas/JWKSchema');\nvar JWA = require('./JWA');\n\n/**\n * JWK Class\n */\n\nvar JWK = function (_JSONDocument) {\n _inherits(JWK, _JSONDocument);\n\n function JWK() {\n _classCallCheck(this, JWK);\n\n return _possibleConstructorReturn(this, (JWK.__proto__ || Object.getPrototypeOf(JWK)).apply(this, arguments));\n }\n\n _createClass(JWK, null, [{\n key: 'importKey',\n\n\n /**\n * importKey\n *\n * TODO:\n * - should this be on JWA?\n */\n value: function importKey(jwk) {\n return JWA.importKey(jwk);\n }\n }, {\n key: 'schema',\n\n\n /**\n * Schema\n */\n get: function get() {\n return JWKSchema;\n }\n }]);\n\n return JWK;\n}(JSONDocument);\n\n/**\n * Export\n */\n\n\nmodule.exports = JWK;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/jose/JWK.js\n// module id = 103\n// module chunks = 0","'use strict';\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Dependencies\n */\nvar base64url = require('base64url');\nvar JWA = require('./JWA');\n\nvar _require = require('../errors'),\n DataError = _require.DataError;\n\n/**\n * JWS\n */\n\n\nvar JWS = function () {\n function JWS() {\n _classCallCheck(this, JWS);\n }\n\n _createClass(JWS, null, [{\n key: 'sign',\n\n\n /**\n * sign\n *\n * @description\n * Encode a JWT instance\n *\n * @param {Object} token\n * @returns {Promise}\n */\n value: function sign(token) {\n var payload = base64url(JSON.stringify(token.payload));\n\n // compact serialization\n if (token.serialization === 'compact') {\n var key = token.key,\n alg = token.header.alg;\n\n var header = base64url(JSON.stringify(token.header));\n var data = header + '.' + payload;\n\n return JWA.sign(alg, key, data).then(function (signature) {\n return data + '.' + signature;\n });\n }\n\n // JSON serialization\n if (token.serialization === 'json') {}\n\n // Flattened serialization\n if (token.serialization === 'flattened') {}\n\n return Promise.reject(new DataError('Unsupported serialization'));\n }\n\n /**\n * verify\n */\n\n }, {\n key: 'verify',\n value: function verify(jwt) {\n // multiple signatures\n if (jwt.signatures) {\n // ...\n }\n\n var key = jwt.key,\n signature = jwt.signature,\n alg = jwt.header.alg;\n\n // one signature\n\n if (jwt.signature) {\n var _jwt$segments = _slicedToArray(jwt.segments, 2),\n header = _jwt$segments[0],\n payload = _jwt$segments[1];\n\n var data = header + '.' + payload;\n\n if (alg === 'none') {\n return Promise.reject(new DataError('Signature provided to verify with alg: none'));\n }\n\n return JWA.verify(alg, key, signature, data).then(function (verified) {\n jwt.verified = verified;\n return verified;\n });\n }\n\n if (alg === 'none') {\n if (!key && !signature) {\n jwt.verified = true;\n\n return Promise.resolve(true);\n }\n\n if (key) {\n return Promise.reject(new DataError('Key provided to verify signature with alg: none'));\n }\n }\n\n // no signatures to verify\n return Promise.reject(new DataError('Missing signature(s)'));\n }\n }]);\n\n return JWS;\n}();\n\n/**\n * Export\n */\n\n\nmodule.exports = JWS;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/jose/JWS.js\n// module id = 104\n// module chunks = 0","'use strict';\n\n/**\n * Dependencies\n */\nvar _require = require('@trust/json-document'),\n JSONSchema = _require.JSONSchema;\n\n/**\n * Base64URLSchema\n */\n\n\nvar Base64URLSchema = new JSONSchema({\n type: 'string',\n format: 'base64url'\n});\n\n/**\n * Export\n */\nmodule.exports = Base64URLSchema;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/schemas/Base64URLSchema.js\n// module id = 105\n// module chunks = 0","'use strict';\n\n/**\n * Dependencies\n */\nvar JWKSchema = require('./JWKSchema');\n\nvar _require = require('@trust/json-document'),\n JSONSchema = _require.JSONSchema;\n\n/**\n * JOSEHeaderSchema\n *\n * JSON Web Token (JWT)\n * https://tools.ietf.org/html/rfc7519#section-5\n *\n * 5. JOSE Header\n *\n * For a JWT object, the members of the JSON object represented by the\n * JOSE Header describe the cryptographic operations applied to the JWT\n * and optionally, additional properties of the JWT. Depending upon\n * whether the JWT is a JWS or JWE, the corresponding rules for the JOSE\n * Header values apply.\n */\n\n\nvar JOSEHeaderSchema = new JSONSchema({\n type: 'object',\n properties: {\n\n /**\n * typ\n *\n * JSON Web Token (JWT)\n * https://tools.ietf.org/html/rfc7519#section-5.1\n *\n * 5.1. \"typ\" (Type) Header Parameter\n *\n * The \"typ\" (type) Header Parameter defined by [JWS] and [JWE] is used\n * by JWT applications to declare the media type [IANA.MediaTypes] of\n * this complete JWT. This is intended for use by the JWT application\n * when values that are not JWTs could also be present in an application\n * data structure that can contain a JWT object; the application can use\n * this value to disambiguate among the different kinds of objects that\n * might be present. It will typically not be used by applications when\n * it is already known that the object is a JWT. This parameter is\n * ignored by JWT implementations; any processing of this parameter is\n * performed by the JWT application. If present, it is RECOMMENDED that\n * its value be \"JWT\" to indicate that this object is a JWT. While\n * media type names are not case sensitive, it is RECOMMENDED that \"JWT\"\n * always be spelled using uppercase characters for compatibility with\n * legacy implementations. Use of this Header Parameter is OPTIONAL.\n *\n * JSON Web Signature (JWS)\n * https://tools.ietf.org/html/rfc7515#section-4.1.9\n *\n * 4.1.9. \"typ\" (Type) Header Parameter\n *\n * The \"typ\" (type) Header Parameter is used by JWS applications to\n * declare the media type [IANA.MediaTypes] of this complete JWS. This\n * is intended for use by the application when more than one kind of\n * object could be present in an application data structure that can\n * contain a JWS; the application can use this value to disambiguate\n * among the different kinds of objects that might be present. It will\n * typically not be used by applications when the kind of object is\n * already known. This parameter is ignored by JWS implementations; any\n * processing of this parameter is performed by the JWS application.\n * Use of this Header Parameter is OPTIONAL.\n *\n * Per RFC 2045 [RFC2045], all media type values, subtype values, and\n * parameter names are case insensitive. However, parameter values are\n * case sensitive unless otherwise specified for the specific parameter.\n *\n * To keep messages compact in common situations, it is RECOMMENDED that\n * producers omit an \"application/\" prefix of a media type value in a\n * \"typ\" Header Parameter when no other '/' appears in the media type\n * value. A recipient using the media type value MUST treat it as if\n * \"application/\" were prepended to any \"typ\" value not containing a\n * '/'. For instance, a \"typ\" value of \"example\" SHOULD be used to\n * represent the \"application/example\" media type, whereas the media\n * type \"application/example;part=\"1/2\"\" cannot be shortened to\n * \"example;part=\"1/2\"\".\n *\n * The \"typ\" value \"JOSE\" can be used by applications to indicate that\n * this object is a JWS or JWE using the JWS Compact Serialization or\n * the JWE Compact Serialization. The \"typ\" value \"JOSE+JSON\" can be\n * used by applications to indicate that this object is a JWS or JWE\n * using the JWS JSON Serialization or the JWE JSON Serialization.\n * Other type values can also be used by applications.\n *\n * JSON Web Encryption (JWE)\n * https://tools.ietf.org/html/rfc7516#section-4.1.11\n *\n * 4.1.11. \"typ\" (Type) Header Parameter\n *\n * This parameter has the same meaning, syntax, and processing rules as\n * the \"typ\" Header Parameter defined in Section 4.1.9 of [JWS], except\n * that the type is that of this complete JWE.\n */\n typ: {\n type: 'string'\n },\n\n /**\n * cty\n *\n * JSON Web Token (JWT)\n * https://tools.ietf.org/html/rfc7519#section-5.2\n *\n * 5.2. \"cty\" (Content Type) Header Parameter\n *\n * The \"cty\" (content type) Header Parameter defined by [JWS] and [JWE]\n * is used by this specification to convey structural information about\n * the JWT.\n *\n * In the normal case in which nested signing or encryption operations\n * are not employed, the use of this Header Parameter is NOT\n * RECOMMENDED. In the case that nested signing or encryption is\n * employed, this Header Parameter MUST be present; in this case, the\n * value MUST be \"JWT\", to indicate that a Nested JWT is carried in this\n * JWT. While media type names are not case sensitive, it is\n * RECOMMENDED that \"JWT\" always be spelled using uppercase characters\n * for compatibility with legacy implementations. See Appendix A.2 for\n * an example of a Nested JWT.\n *\n *\n * JSON Web Signature (JWS)\n * https://tools.ietf.org/html/rfc7515#section-4.1.10\n *\n * 4.1.10. \"cty\" (Content Type) Header Parameter\n *\n * The \"cty\" (content type) Header Parameter is used by JWS applications\n * to declare the media type [IANA.MediaTypes] of the secured content\n * (the payload). This is intended for use by the application when more\n * than one kind of object could be present in the JWS Payload; the\n * application can use this value to disambiguate among the different\n * kinds of objects that might be present. It will typically not be\n * used by applications when the kind of object is already known. This\n * parameter is ignored by JWS implementations; any processing of this\n * parameter is performed by the JWS application. Use of this Header\n * Parameter is OPTIONAL.\n *\n * Per RFC 2045 [RFC2045], all media type values, subtype values, and\n * parameter names are case insensitive. However, parameter values are\n * case sensitive unless otherwise specified for the specific parameter.\n *\n * To keep messages compact in common situations, it is RECOMMENDED that\n * producers omit an \"application/\" prefix of a media type value in a\n * \"cty\" Header Parameter when no other '/' appears in the media type\n * value. A recipient using the media type value MUST treat it as if\n * \"application/\" were prepended to any \"cty\" value not containing a\n * '/'. For instance, a \"cty\" value of \"example\" SHOULD be used to\n * represent the \"application/example\" media type, whereas the media\n * type \"application/example;part=\"1/2\"\" cannot be shortened to\n * \"example;part=\"1/2\"\".\n *\n * JSON Web Encryption (JWE)\n * https://tools.ietf.org/html/rfc7516#section-4.1.12\n *\n * 4.1.12. \"cty\" (Content Type) Header Parameter\n *\n * This parameter has the same meaning, syntax, and processing rules as\n * the \"cty\" Header Parameter defined in Section 4.1.10 of [JWS], except\n * that the type is that of the secured content (the plaintext).\n */\n cty: {\n type: 'string',\n enum: ['JWT']\n },\n\n /**\n * alg\n *\n * JSON Web Signature (JWS)\n * https://tools.ietf.org/html/rfc7515#section-4.1.1\n *\n * 4.1.1. \"alg\" (Algorithm) Header Parameter\n *\n * The \"alg\" (algorithm) Header Parameter identifies the cryptographic\n * algorithm used to secure the JWS. The JWS Signature value is not\n * valid if the \"alg\" value does not represent a supported algorithm or\n * if there is not a key for use with that algorithm associated with the\n * party that digitally signed or MACed the content. \"alg\" values\n * should either be registered in the IANA \"JSON Web Signature and\n * Encryption Algorithms\" registry established by [JWA] or be a value\n * that contains a Collision-Resistant Name. The \"alg\" value is a case-\n * sensitive ASCII string containing a StringOrURI value. This Header\n * Parameter MUST be present and MUST be understood and processed by\n * implementations.\n *\n * A list of defined \"alg\" values for this use can be found in the IANA\n * \"JSON Web Signature and Encryption Algorithms\" registry established\n * by [JWA]; the initial contents of this registry are the values\n * defined in Section 3.1 of [JWA].\n *\n * JSON Web Encryption (JWE)\n * https://tools.ietf.org/html/rfc7516#section-4.1.1\n *\n * 4.1.1. \"alg\" (Algorithm) Header Parameter\n *\n * This parameter has the same meaning, syntax, and processing rules as\n * the \"alg\" Header Parameter defined in Section 4.1.1 of [JWS], except\n * that the Header Parameter identifies the cryptographic algorithm used\n * to encrypt or determine the value of the CEK. The encrypted content\n * is not usable if the \"alg\" value does not represent a supported\n * algorithm, or if the recipient does not have a key that can be used\n * with that algorithm.\n *\n * A list of defined \"alg\" values for this use can be found in the IANA\n * \"JSON Web Signature and Encryption Algorithms\" registry established\n * by [JWA]; the initial contents of this registry are the values\n * defined in Section 4.1 of [JWA].\n */\n alg: {\n type: 'string',\n format: 'StringOrURI'\n },\n\n /**\n * jku\n *\n * JSON Web Signature (JWS)\n * https://tools.ietf.org/html/rfc7515#section-4.1.2\n *\n * 4.1.2. \"jku\" (JWK Set URL) Header Parameter (JWS)\n *\n * The \"jku\" (JWK Set URL) Header Parameter is a URI [RFC3986] that\n * refers to a resource for a set of JSON-encoded public keys, one of\n * which corresponds to the key used to digitally sign the JWS. The\n * keys MUST be encoded as a JWK Set [JWK]. The protocol used to\n * acquire the resource MUST provide integrity protection; an HTTP GET\n * request to retrieve the JWK Set MUST use Transport Layer Security\n * (TLS) [RFC2818] [RFC5246]; and the identity of the server MUST be\n * validated, as per Section 6 of RFC 6125 [RFC6125]. Also, see\n * Section 8 on TLS requirements. Use of this Header Parameter is\n * OPTIONAL.\n *\n * JSON Web Encryption (JWE)\n * https://tools.ietf.org/html/rfc7516#section-4.1.4\n *\n * 4.1.4. \"jku\" (JWK Set URL) Header Parameter (JWE)\n *\n * This parameter has the same meaning, syntax, and processing rules as\n * the \"jku\" Header Parameter defined in Section 4.1.2 of [JWS], except\n * that the JWK Set resource contains the public key to which the JWE\n * was encrypted; this can be used to determine the private key needed\n * to decrypt the JWE.\n */\n jku: {\n type: 'string',\n format: 'URI'\n },\n\n /**\n * jwk\n *\n * JSON Web Signature (JWS)\n * https://tools.ietf.org/html/rfc7515#section-4.1.3\n *\n * 4.1.3. \"jwk\" (JSON Web Key) Header Parameter\n *\n * The \"jwk\" (JSON Web Key) Header Parameter is the public key that\n * corresponds to the key used to digitally sign the JWS. This key is\n * represented as a JSON Web Key [JWK]. Use of this Header Parameter is\n * OPTIONAL.\n *\n * JSON Web Encryption (JWE)\n * https://tools.ietf.org/html/rfc7516#section-4.1.5\n *\n * 4.1.5. \"jwk\" (JSON Web Key) Header Parameter\n *\n * This parameter has the same meaning, syntax, and processing rules as\n * the \"jwk\" Header Parameter defined in Section 4.1.3 of [JWS], except\n * that the key is the public key to which the JWE was encrypted; this\n * can be used to determine the private key needed to decrypt the JWE.\n */\n //jwk: JWKSchema,\n\n /**\n * kid\n *\n * JSON Web Signature (JWS)\n * https://tools.ietf.org/html/rfc7515#section-4.1.4\n *\n * 4.1.4. \"kid\" (Key ID) Header Parameter\n *\n * The \"kid\" (key ID) Header Parameter is a hint indicating which key\n * was used to secure the JWS. This parameter allows originators to\n * explicitly signal a change of key to recipients. The structure of\n * the \"kid\" value is unspecified. Its value MUST be a case-sensitive\n * string. Use of this Header Parameter is OPTIONAL.\n *\n * When used with a JWK, the \"kid\" value is used to match a JWK \"kid\"\n * parameter value.\n *\n *\n * JSON Web Encryption (JWE)\n * https://tools.ietf.org/html/rfc7516#section-4.1.6\n *\n * 4.1.6. \"kid\" (Key ID) Header Parameter\n *\n * This parameter has the same meaning, syntax, and processing rules as\n * the \"kid\" Header Parameter defined in Section 4.1.4 of [JWS], except\n * that the key hint references the public key to which the JWE was\n * encrypted; this can be used to determine the private key needed to\n * decrypt the JWE. This parameter allows originators to explicitly\n * signal a change of key to JWE recipients.\n */\n kid: {\n type: 'string'\n },\n\n /**\n * x5u\n *\n * JSON Web Signature (JWS)\n * https://tools.ietf.org/html/rfc7515#section-4.1.5\n *\n * 4.1.5. \"x5u\" (X.509 URL) Header Parameter\n *\n * The \"x5u\" (X.509 URL) Header Parameter is a URI [RFC3986] that refers\n * to a resource for the X.509 public key certificate or certificate\n * chain [RFC5280] corresponding to the key used to digitally sign the\n * JWS. The identified resource MUST provide a representation of the\n * certificate or certificate chain that conforms to RFC 5280 [RFC5280]\n * in PEM-encoded form, with each certificate delimited as specified in\n * Section 6.1 of RFC 4945 [RFC4945]. The certificate containing the\n * public key corresponding to the key used to digitally sign the JWS\n * MUST be the first certificate. This MAY be followed by additional\n * certificates, with each subsequent certificate being the one used to\n * certify the previous one. The protocol used to acquire the resource\n * MUST provide integrity protection; an HTTP GET request to retrieve\n * the certificate MUST use TLS [RFC2818] [RFC5246]; and the identity of\n * the server MUST be validated, as per Section 6 of RFC 6125 [RFC6125].\n * Also, see Section 8 on TLS requirements. Use of this Header\n * Parameter is OPTIONAL.\n *\n * JSON Web Encryption (JWE)\n * https://tools.ietf.org/html/rfc7516#section-4.1.7\n *\n * 4.1.7. \"x5u\" (X.509 URL) Header Parameter\n *\n * This parameter has the same meaning, syntax, and processing rules as\n * the \"x5u\" Header Parameter defined in Section 4.1.5 of [JWS], except\n * that the X.509 public key certificate or certificate chain [RFC5280]\n * contains the public key to which the JWE was encrypted; this can be\n * used to determine the private key needed to decrypt the JWE.\n */\n x5u: {\n type: 'string',\n format: 'URI'\n },\n\n /**\n * x5c\n *\n * JSON Web Signature (JWS)\n * https://tools.ietf.org/html/rfc7515#section-4.1.6\n *\n * 4.1.6. \"x5c\" (X.509 Certificate Chain) Header Parameter\n *\n * The \"x5c\" (X.509 certificate chain) Header Parameter contains the\n * X.509 public key certificate or certificate chain [RFC5280]\n * corresponding to the key used to digitally sign the JWS. The\n * certificate or certificate chain is represented as a JSON array of\n * certificate value strings. Each string in the array is a\n * base64-encoded (Section 4 of [RFC4648] -- not base64url-encoded) DER\n * [ITU.X690.2008] PKIX certificate value. The certificate containing\n * the public key corresponding to the key used to digitally sign the\n * JWS MUST be the first certificate. This MAY be followed by\n * additional certificates, with each subsequent certificate being the\n * one used to certify the previous one. The recipient MUST validate\n * the certificate chain according to RFC 5280 [RFC5280] and consider\n * the certificate or certificate chain to be invalid if any validation\n * failure occurs. Use of this Header Parameter is OPTIONAL.\n *\n * JSON Web Encryption (JWE)\n * https://tools.ietf.org/html/rfc7516#section-4.1.8\n *\n * 4.1.8. \"x5c\" (X.509 Certificate Chain) Header Parameter\n *\n * This parameter has the same meaning, syntax, and processing rules as\n * the \"x5c\" Header Parameter defined in Section 4.1.6 of [JWS], except\n * that the X.509 public key certificate or certificate chain [RFC5280]\n * contains the public key to which the JWE was encrypted; this can be\n * used to determine the private key needed to decrypt the JWE.\n */\n x5c: {\n type: 'array',\n items: {\n type: 'string',\n format: 'base64'\n }\n },\n\n /**\n * x5t\n *\n * JSON Web Signature (JWS)\n * https://tools.ietf.org/html/rfc7515#section-4.1.7\n *\n * 4.1.7. \"x5t\" (X.509 Certificate SHA-1 Thumbprint) Header Parameter\n *\n * The \"x5t\" (X.509 certificate SHA-1 thumbprint) Header Parameter is a\n * base64url-encoded SHA-1 thumbprint (a.k.a. digest) of the DER\n * encoding of the X.509 certificate [RFC5280] corresponding to the key\n * used to digitally sign the JWS. Note that certificate thumbprints\n * are also sometimes known as certificate fingerprints. Use of this\n * Header Parameter is OPTIONAL.\n *\n * JSON Web Encryption (JWE)\n * https://tools.ietf.org/html/rfc7516#section-4.1.9\n *\n * 4.1.9. \"x5t\" (X.509 Certificate SHA-1 Thumbprint) Header Parameter\n *\n * This parameter has the same meaning, syntax, and processing rules as\n * the \"x5t\" Header Parameter defined in Section 4.1.7 of [JWS], except\n * that the certificate referenced by the thumbprint contains the public\n * key to which the JWE was encrypted; this can be used to determine the\n * private key needed to decrypt the JWE. Note that certificate\n * thumbprints are also sometimes known as certificate fingerprints.\n */\n x5t: {\n type: 'string',\n format: 'base64url'\n },\n\n /**\n * x5t#S256\n *\n * JSON Web Signature (JWS)\n * https://tools.ietf.org/html/rfc7515#section-4.1.8\n *\n * 4.1.8. \"x5t#S256\" (X.509 Certificate SHA-256 Thumbprint) Header\n * Parameter\n *\n * The \"x5t#S256\" (X.509 certificate SHA-256 thumbprint) Header\n * Parameter is a base64url-encoded SHA-256 thumbprint (a.k.a. digest)\n * of the DER encoding of the X.509 certificate [RFC5280] corresponding\n * to the key used to digitally sign the JWS. Note that certificate\n * thumbprints are also sometimes known as certificate fingerprints.\n * Use of this Header Parameter is OPTIONAL.\n *\n *\n * JSON Web Encryption (JWE)\n * https://tools.ietf.org/html/rfc7516#section-4.1.10\n *\n * 4.1.10. \"x5t#S256\" (X.509 Certificate SHA-256 Thumbprint) Header\n * Parameter\n *\n * This parameter has the same meaning, syntax, and processing rules as\n * the \"x5t#S256\" Header Parameter defined in Section 4.1.8 of [JWS],\n * except that the certificate referenced by the thumbprint contains the\n * public key to which the JWE was encrypted; this can be used to\n * determine the private key needed to decrypt the JWE. Note that\n * certificate thumbprints are also sometimes known as certificate\n * fingerprints.\n */\n //'x5t#S256': {\n // type: 'string',\n // format: 'base64url'\n //},\n\n /**\n * crit\n *\n * JSON Web Signature (JWS)\n * https://tools.ietf.org/html/rfc7515#section-4.1.11\n *\n * 4.1.11. \"crit\" (Critical) Header Parameter\n *\n * The \"crit\" (critical) Header Parameter indicates that extensions to\n * this specification and/or [JWA] are being used that MUST be\n * understood and processed. Its value is an array listing the Header\n * Parameter names present in the JOSE Header that use those extensions.\n * If any of the listed extension Header Parameters are not understood\n * and supported by the recipient, then the JWS is invalid. Producers\n * MUST NOT include Header Parameter names defined by this specification\n * or [JWA] for use with JWS, duplicate names, or names that do not\n * occur as Header Parameter names within the JOSE Header in the \"crit\"\n * list. Producers MUST NOT use the empty list \"[]\" as the \"crit\"\n * value. Recipients MAY consider the JWS to be invalid if the critical\n * list contains any Header Parameter names defined by this\n * specification or [JWA] for use with JWS or if any other constraints\n * on its use are violated. When used, this Header Parameter MUST be\n * integrity protected; therefore, it MUST occur only within the JWS\n * Protected Header. Use of this Header Parameter is OPTIONAL. This\n * Header Parameter MUST be understood and processed by implementations.\n *\n * An example use, along with a hypothetical \"exp\" (expiration time)\n * field is:\n *\n * {\"alg\":\"ES256\",\n * \"crit\":[\"exp\"],\n * \"exp\":1363284000\n * }\n *\n * JSON Web Encryption (JWE)\n * https://tools.ietf.org/html/rfc7516#section-4.1.13\n *\n * 4.1.13. \"crit\" (Critical) Header Parameter\n *\n * This parameter has the same meaning, syntax, and processing rules as\n * the \"crit\" Header Parameter defined in Section 4.1.11 of [JWS],\n * except that Header Parameters for a JWE are being referred to, rather\n * than Header Parameters for a JWS.\n */\n crit: {\n type: 'array',\n items: {\n type: 'string'\n },\n minItems: 1\n },\n\n /**\n * enc\n *\n * JSON Web Encryption (JWE)\n * https://tools.ietf.org/html/rfc7516#section-4.1.2\n *\n * 4.1.2. \"enc\" (Encryption Algorithm) Header Parameter\n *\n * The \"enc\" (encryption algorithm) Header Parameter identifies the\n * content encryption algorithm used to perform authenticated encryption\n * on the plaintext to produce the ciphertext and the Authentication\n * Tag. This algorithm MUST be an AEAD algorithm with a specified key\n * length. The encrypted content is not usable if the \"enc\" value does\n * not represent a supported algorithm. \"enc\" values should either be\n * registered in the IANA \"JSON Web Signature and Encryption Algorithms\"\n * registry established by [JWA] or be a value that contains a\n * Collision-Resistant Name. The \"enc\" value is a case-sensitive ASCII\n * string containing a StringOrURI value. This Header Parameter MUST be\n * present and MUST be understood and processed by implementations.\n *\n * A list of defined \"enc\" values for this use can be found in the IANA\n * \"JSON Web Signature and Encryption Algorithms\" registry established\n * by [JWA]; the initial contents of this registry are the values\n * defined in Section 5.1 of [JWA].\n */\n enc: {\n type: 'string',\n format: 'StringOrURI'\n },\n\n /**\n * zip\n *\n * JSON Web Encryption (JWE)\n * https://tools.ietf.org/html/rfc7516#section-4.1.3\n *\n * 4.1.3. \"zip\" (Compression Algorithm) Header Parameter\n *\n * The \"zip\" (compression algorithm) applied to the plaintext before\n * encryption, if any. The \"zip\" value defined by this specification\n * is:\n *\n * o \"DEF\" - Compression with the DEFLATE [RFC1951] algorithm\n *\n * Other values MAY be used. Compression algorithm values can be\n * registered in the IANA \"JSON Web Encryption Compression Algorithms\"\n * registry established by [JWA]. The \"zip\" value is a case-sensitive\n * string. If no \"zip\" parameter is present, no compression is applied\n * to the plaintext before encryption. When used, this Header Parameter\n * MUST be integrity protected; therefore, it MUST occur only within the\n * JWE Protected Header. Use of this Header Parameter is OPTIONAL.\n * This Header Parameter MUST be understood and processed by\n * implementations.\n */\n zip: {\n type: 'string'\n }\n }\n});\n\n/**\n * Export\n */\nmodule.exports = JOSEHeaderSchema;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/schemas/JOSEHeaderSchema.js\n// module id = 106\n// module chunks = 0","'use strict';\n\n/**\n * Dependencies\n */\n\nvar _require = require('@trust/json-document'),\n JSONSchema = _require.JSONSchema;\n\nvar JWKSchema = require('./JWKSchema');\n\n/**\n * JWKSetSchema\n */\nvar JWKSetSchema = new JSONSchema({\n type: 'object',\n properties: {\n keys: {\n type: 'array',\n items: JWKSchema\n }\n }\n});\n\n/**\n * Export\n */\nmodule.exports = JWKSetSchema;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/schemas/JWKSetSchema.js\n// module id = 107\n// module chunks = 0","'use strict';\n\n/**\n * Dependencies\n */\nvar _require = require('@trust/json-document'),\n JSONSchema = _require.JSONSchema;\n\n/**\n * JWTClaimsSetSchema\n *\n * JSON Web Token (JWT)\n * https://tools.ietf.org/html/rfc7519#section-4\n *\n * 4. JWT Claims\n *\n * The JWT Claims Set represents a JSON object whose members are the\n * claims conveyed by the JWT. The Claim Names within a JWT Claims Set\n * MUST be unique; JWT parsers MUST either reject JWTs with duplicate\n * Claim Names or use a JSON parser that returns only the lexically last\n * duplicate member name, as specified in Section 15.12 (\"The JSON\n * Object\") of ECMAScript 5.1 [ECMAScript].\n *\n * The set of claims that a JWT must contain to be considered valid is\n * context dependent and is outside the scope of this specification.\n * Specific applications of JWTs will require implementations to\n * understand and process some claims in particular ways. However, in\n * the absence of such requirements, all claims that are not understood\n * by implementations MUST be ignored.\n *\n * There are three classes of JWT Claim Names: Registered Claim Names,\n * Public Claim Names, and Private Claim Names.\n */\n\n\nvar JWTClaimsSetSchema = new JSONSchema({\n properties: {\n\n /**\n * JSON Web Token (JWT)\n * https://tools.ietf.org/html/rfc7519#section-4.1\n *\n * 4.1. Registered Claim Names\n *\n * The following Claim Names are registered in the IANA \"JSON Web Token\n * Claims\" registry established by Section 10.1. None of the claims\n * defined below are intended to be mandatory to use or implement in all\n * cases, but rather they provide a starting point for a set of useful,\n * interoperable claims. Applications using JWTs should define which\n * specific claims they use and when they are required or optional. All\n * the names are short because a core goal of JWTs is for the\n * representation to be compact.\n */\n\n /**\n * iss\n *\n * JSON Web Token (JWT)\n * https://tools.ietf.org/html/rfc7519#section-4.1.1\n *\n * 4.1.1. \"iss\" (Issuer) Claim\n *\n * The \"iss\" (issuer) claim identifies the principal that issued the\n * JWT. The processing of this claim is generally application specific.\n * The \"iss\" value is a case-sensitive string containing a StringOrURI\n * value. Use of this claim is OPTIONAL.\n */\n iss: {\n type: 'string',\n format: 'StringOrURI'\n },\n\n /**\n * sub\n *\n * JSON Web Token (JWT)\n * https://tools.ietf.org/html/rfc7519#section-4.1.2\n *\n * 4.1.2. \"sub\" (Subject) Claim\n *\n * The \"sub\" (subject) claim identifies the principal that is the\n * subject of the JWT. The claims in a JWT are normally statements\n * about the subject. The subject value MUST either be scoped to be\n * locally unique in the context of the issuer or be globally unique.\n * The processing of this claim is generally application specific. The\n * \"sub\" value is a case-sensitive string containing a StringOrURI\n * value. Use of this claim is OPTIONAL.\n */\n sub: {\n type: 'string',\n format: 'StringOrURI'\n },\n\n /**\n * aud\n *\n * JSON Web Token (JWT)\n * https://tools.ietf.org/html/rfc7519#section-4.1.3\n *\n * 4.1.3. \"aud\" (Audience) Claim\n *\n * The \"aud\" (audience) claim identifies the recipients that the JWT is\n * intended for. Each principal intended to process the JWT MUST\n * identify itself with a value in the audience claim. If the principal\n * processing the claim does not identify itself with a value in the\n * \"aud\" claim when this claim is present, then the JWT MUST be\n * rejected. In the general case, the \"aud\" value is an array of case-\n * sensitive strings, each containing a StringOrURI value. In the\n * special case when the JWT has one audience, the \"aud\" value MAY be a\n * single case-sensitive string containing a StringOrURI value. The\n * interpretation of audience values is generally application specific.\n * Use of this claim is OPTIONAL.\n */\n aud: {\n type: ['array', 'string'],\n format: 'StringOrURI',\n items: {\n format: 'StringOrURI'\n }\n },\n\n /**\n * exp\n *\n * JSON Web Token (JWT)\n * https://tools.ietf.org/html/rfc7519#section-4.1.4\n *\n * 4.1.4. \"exp\" (Expiration Time) Claim\n *\n * The \"exp\" (expiration time) claim identifies the expiration time on\n * or after which the JWT MUST NOT be accepted for processing. The\n * processing of the \"exp\" claim requires that the current date/time\n * MUST be before the expiration date/time listed in the \"exp\" claim.\n *\n * Implementers MAY provide for some small leeway, usually no more than\n * a few minutes, to account for clock skew. Its value MUST be a number\n * containing a NumericDate value. Use of this claim is OPTIONAL.\n *\n */\n exp: {\n type: 'number',\n format: 'NumericDate'\n },\n\n /**\n * nbf\n *\n * JSON Web Token (JWT)\n * https://tools.ietf.org/html/rfc7519#section-4.1.5\n *\n * 4.1.5. \"nbf\" (Not Before) Claim\n *\n * The \"nbf\" (not before) claim identifies the time before which the JWT\n * MUST NOT be accepted for processing. The processing of the \"nbf\"\n * claim requires that the current date/time MUST be after or equal to\n * the not-before date/time listed in the \"nbf\" claim. Implementers MAY\n * provide for some small leeway, usually no more than a few minutes, to\n * account for clock skew. Its value MUST be a number containing a\n * NumericDate value. Use of this claim is OPTIONAL.\n */\n nbf: {\n type: 'number',\n format: 'NumericDate'\n },\n\n /**\n * iat\n *\n * JSON Web Token (JWT)\n * https://tools.ietf.org/html/rfc7519#section-4.1.6\n *\n * 4.1.6. \"iat\" (Issued At) Claim\n *\n * The \"iat\" (issued at) claim identifies the time at which the JWT was\n * issued. This claim can be used to determine the age of the JWT. Its\n * value MUST be a number containing a NumericDate value. Use of this\n * claim is OPTIONAL.\n */\n iat: {\n type: 'number',\n format: 'NumericDate'\n },\n\n /**\n * jti\n *\n * JSON Web Token (JWT)\n * https://tools.ietf.org/html/rfc7519#section-4.1.7\n *\n * 4.1.7. \"jti\" (JWT ID) Claim\n *\n * The \"jti\" (JWT ID) claim provides a unique identifier for the JWT.\n * The identifier value MUST be assigned in a manner that ensures that\n * there is a negligible probability that the same value will be\n * accidentally assigned to a different data object; if the application\n * uses multiple issuers, collisions MUST be prevented among values\n * produced by different issuers as well. The \"jti\" claim can be used\n * to prevent the JWT from being replayed. The \"jti\" value is a case-\n * sensitive string. Use of this claim is OPTIONAL.\n */\n jti: {\n type: 'string'\n }\n }\n});\n\n/**\n * Export\n */\nmodule.exports = JWTClaimsSetSchema;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/schemas/JWTClaimsSetSchema.js\n// module id = 108\n// module chunks = 0","'use strict';\n\n/**\n * Dependencies\n */\nvar Base64URLSchema = require('./Base64URLSchema');\nvar JWTClaimsSetSchema = require('./JWTClaimsSetSchema');\nvar JOSEHeaderSchema = require('./JOSEHeaderSchema');\n\nvar _require = require('@trust/json-document'),\n JSONSchema = _require.JSONSchema;\n\n/**\n * JWTSchema\n *\n * @description\n * This schema represents all the things a deserialized JWT can be, i.e.,\n * either a JWS or JWE, and any serialization of them. Validation of well-\n * formedness for a given serialization is accomplished at the time of\n * encoding.\n */\n\n\nvar JWTSchema = new JSONSchema({\n type: 'object',\n properties: {\n\n /**\n * type\n */\n type: {\n type: 'string',\n enum: ['JWS', 'JWE']\n },\n\n /**\n * segments\n */\n segments: {\n type: 'array'\n },\n\n /**\n * header\n */\n header: JOSEHeaderSchema,\n\n /**\n * protected\n */\n protected: JOSEHeaderSchema,\n\n /**\n * unprotected\n */\n unprotected: JOSEHeaderSchema,\n\n /**\n * iv\n */\n iv: Base64URLSchema,\n\n /**\n * aad\n */\n aad: Base64URLSchema,\n\n /**\n * ciphertext\n */\n ciphertext: Base64URLSchema,\n\n /**\n * tag\n */\n tag: Base64URLSchema,\n\n /**\n * recipients\n */\n recipients: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n header: JOSEHeaderSchema,\n encrypted_key: Base64URLSchema\n }\n }\n },\n\n /**\n * payload\n */\n payload: JWTClaimsSetSchema,\n\n /**\n * signatures\n */\n signatures: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n protected: JOSEHeaderSchema,\n header: JOSEHeaderSchema,\n signature: Base64URLSchema,\n key: { type: 'object' }\n }\n }\n },\n\n /**\n * signature\n */\n signature: Base64URLSchema,\n\n /**\n * verified\n */\n verified: {\n type: 'boolean',\n default: false\n },\n\n /**\n * key\n */\n key: {\n type: 'object'\n },\n\n /**\n * serialization\n */\n serialization: {\n type: 'string',\n enum: ['compact', 'json', 'flattened'],\n default: 'compact'\n }\n }\n});\n\n/**\n * Export\n */\nmodule.exports = JWTSchema;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/schemas/JWTSchema.js\n// module id = 109\n// module chunks = 0","'use strict';\n\nvar TextEncoder = global.TextEncoder ? global.TextEncoder // browser\n: require('text-encoding').TextEncoder; // node shim\nmodule.exports = TextEncoder;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/text-encoder/index.js\n// module id = 110\n// module chunks = 0","/**\n * Dependencies\n */\nconst assert = require('assert')\nconst fetch = require('node-fetch')\nconst { URL } = require('whatwg-url')\nconst Headers = fetch.Headers ? fetch.Headers : global.Headers\nconst {JSONDocument} = require('@trust/json-document')\nconst {JWKSet} = require('@solid/jose')\nconst AuthenticationRequest = require('./AuthenticationRequest')\nconst AuthenticationResponse = require('./AuthenticationResponse')\nconst RelyingPartySchema = require('./RelyingPartySchema')\nconst onHttpError = require('./onHttpError')\nconst FormUrlEncoded = require('./FormUrlEncoded')\n\n/**\n * RelyingParty\n *\n * @class\n * Client interface for OpenID Connect Relying Party.\n *\n * @example\n * let client = RelyingParty({\n * provider: {\n * name: 'Anvil Research, Inc.',\n * url: 'https://forge.anvil.io'\n * // configuration\n * // jwks\n * },\n * defaults: {\n * popToken: false,\n * authenticate: {\n * response_type: 'code',\n * display: 'popup',\n * scope: 'openid profile email'\n * },\n * register: {\n * client_name: 'Example',\n * client_uri: 'https://example.com',\n * logo_uri: 'https://example.com/assets/logo.png',\n * redirect_uris: ['https://app.example.com/callback'],\n * response_types: ['code', 'code id_token token'],\n * grant_types: ['authorization_code'],\n * default_max_age: 7200,\n * post_logout_redirect_uris: ['https://app.example.com']\n * },\n * },\n * registration: {\n * // if you have it saved somewhere\n * },\n * store: localStorage || req.session\n * })\n *\n * client.discover() => Promise\n * client.jwks() => Promise\n * client.authenticate()\n * client.authenticateUri()\n * client.validateResponse(uri) => Promise\n * client.userinfo() => Promise\n * client.logout()\n */\nclass RelyingParty extends JSONDocument {\n\n /**\n * Schema\n */\n static get schema () {\n return RelyingPartySchema\n }\n\n /**\n * from\n *\n * @description\n * Create a RelyingParty instance from a previously registered client.\n *\n * @param {Object} data\n * @returns {Promise}\n */\n static from (data) {\n let rp = new RelyingParty(data)\n let validation = rp.validate()\n\n // schema validation\n if (!validation.valid) {\n return Promise.reject(new Error(JSON.stringify(validation)))\n }\n\n let jwks = rp.provider.jwks\n\n // request the JWK Set if missing\n if (!jwks) {\n return rp.jwks().then(() => rp)\n }\n\n // otherwise import the JWK Set to webcrypto\n return JWKSet.importKeys(jwks).then(jwks => {\n rp.provider.jwks = jwks\n return rp\n })\n }\n\n /**\n * register\n *\n * @param issuer {string} Provider URL\n * @param registration {Object} Client dynamic registration options\n * @param options {Object}\n * @param options.defaults\n * @param [options.store] {Session|Storage}\n * @returns {Promise} RelyingParty instance, registered.\n */\n static register (issuer, registration, options) {\n let rp = new RelyingParty({\n provider: { url: issuer },\n defaults: Object.assign({}, options.defaults),\n store: options.store\n })\n\n return Promise.resolve()\n .then(() => rp.discover())\n .then(() => rp.jwks())\n .then(() => rp.register(registration))\n .then(() => rp)\n }\n\n /**\n * Discover\n *\n * @description Fetches the issuer's OpenID Configuration.\n * @returns {Promise} Resolves with the provider configuration response\n */\n discover () {\n try {\n let issuer = this.provider.url\n\n assert(issuer, 'RelyingParty provider must define \"url\"')\n\n let url = new URL(issuer)\n url.pathname = '.well-known/openid-configuration'\n\n return fetch(url.toString())\n .then(onHttpError('Error fetching openid configuration'))\n .then(response => {\n return response.json().then(json => this.provider.configuration = json)\n })\n\n } catch (error) {\n return Promise.reject(error)\n }\n }\n\n /**\n * Register\n *\n * @description Register's a client with provider as a Relying Party\n *\n * @param options {Object}\n * @returns {Promise} Resolves with the registration response object\n */\n register (options) {\n try {\n let configuration = this.provider.configuration\n\n assert(configuration, 'OpenID Configuration is not initialized.')\n assert(configuration.registration_endpoint, 'OpenID Configuration is missing registration_endpoint.')\n\n let uri = configuration.registration_endpoint\n let method = 'post'\n let headers = new Headers({ 'Content-Type': 'application/json' })\n let params = this.defaults.register\n let body = JSON.stringify(Object.assign({}, params, options))\n\n return fetch(uri, {method, headers, body})\n .then(onHttpError('Error registering client'))\n .then(response => {\n return response.json().then(json => this.registration = json)\n })\n\n } catch (error) {\n return Promise.reject(error)\n }\n }\n\n serialize () {\n return JSON.stringify(this)\n }\n\n /**\n * jwks\n *\n * @description Promises the issuer's JWK Set.\n * @returns {Promise}\n */\n jwks () {\n try {\n let configuration = this.provider.configuration\n\n assert(configuration, 'OpenID Configuration is not initialized.')\n assert(configuration.jwks_uri, 'OpenID Configuration is missing jwks_uri.')\n\n let uri = configuration.jwks_uri\n\n return fetch(uri)\n .then(onHttpError('Error resolving provider keys'))\n .then(response => {\n return response\n .json()\n .then(json => JWKSet.importKeys(json))\n .then(jwks => this.provider.jwks = jwks)\n })\n\n } catch (error) {\n return Promise.reject(error)\n }\n }\n\n /**\n * createRequest\n *\n * @param options {Object} Authn request options hashmap\n * @param options.redirect_uri {string}\n * @param options.response_type {string} e.g. 'code' or 'id_token token'\n * @param session {Session|Storage} req.session or localStorage\n * @returns {Promise} Authn request URL\n */\n createRequest (options, session) {\n return AuthenticationRequest.create(this, options, session || this.store)\n }\n\n /**\n * Validate Response\n *\n * @param response {string} req.query or req.body.text\n * @param session {Session|Storage} req.session or localStorage or similar\n *\n * @returns {Promise}\n */\n validateResponse (response, session = this.store) {\n let options\n\n if (response.match(/^http(s?):\\/\\//)) {\n options = { rp: this, redirect: response, session }\n } else {\n options = { rp: this, body: response, session }\n }\n\n const authResponse = new AuthenticationResponse(options)\n\n return AuthenticationResponse.validateResponse(authResponse)\n }\n\n /**\n * userinfo\n *\n * @description Promises the authenticated user's claims.\n * @returns {Promise}\n */\n userinfo () {\n try {\n let configuration = this.provider.configuration\n\n assert(configuration, 'OpenID Configuration is not initialized.')\n assert(configuration.userinfo_endpoint, 'OpenID Configuration is missing userinfo_endpoint.')\n\n let uri = configuration.userinfo_endpoint\n let access_token = this.store.access_token\n\n assert(access_token, 'Missing access token.')\n\n let headers = new Headers({\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${access_token}`\n })\n\n return fetch(uri, {headers})\n .then(onHttpError('Error fetching userinfo'))\n .then(response => response.json())\n\n } catch (error) {\n return Promise.reject(error)\n }\n }\n\n /**\n * logoutRequest\n *\n * Composes and returns the logout request URI, based on the OP's\n * `end_session_endpoint`, with appropriate parameters.\n *\n * Note: Calling client code has the responsibility to clear the local\n * session state (for example, by calling `rp.clearSession()`). In addition,\n * some IdPs (such as Google) may not provide an `end_session_endpoint`,\n * in which case, this method will return null.\n *\n * @see https://openid.net/specs/openid-connect-session-1_0.html#RPLogout\n *\n * @throws {Error} If provider config is not initialized\n *\n * @throws {Error} If `post_logout_redirect_uri` was provided without a\n * corresponding `id_token_hint`\n *\n * @param [options={}] {object}\n *\n * @param [options.id_token_hint] {string} RECOMMENDED.\n * Previously issued ID Token passed to the logout endpoint as\n * a hint about the End-User's current authenticated session with the\n * Client. This is used as an indication of the identity of the End-User\n * that the RP is requesting be logged out by the OP. The OP *need not* be\n * listed as an audience of the ID Token when it is used as an\n * `id_token_hint` value.\n *\n * @param [options.post_logout_redirect_uri] {string} OPTIONAL. URL to which\n * the RP is requesting that the End-User's User Agent be redirected after\n * a logout has been performed. The value MUST have been previously\n * registered with the OP, either using the `post_logout_redirect_uris`\n * Registration parameter or via another mechanism. If supplied, the OP\n * SHOULD honor this request following the logout.\n *\n * Note: The requirement to validate the uri for previous registration means\n * that, in practice, the `id_token_hint` is REQUIRED if\n * `post_logout_redirect_uri` is used. Otherwise, the OP has no way to get\n * the `client_id` to load the saved client registration, to validate the\n * uri. The only way it can get it is by decoding the `id_token_hint`.\n *\n * @param [options.state] {string} OPTIONAL. Opaque value used by the RP to\n * maintain state between the logout request and the callback to the\n * endpoint specified by the `post_logout_redirect_uri` query parameter. If\n * included in the logout request, the OP passes this value back to the RP\n * using the `state` query parameter when redirecting the User Agent back to\n * the RP.\n *\n * TODO: In the future, consider adding `response_mode` param, for the OP to\n * determine how to return the `state` back the RP.\n * @see http://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes\n *\n * TODO: Handle special cases for popular providers (Google, MSFT)\n *\n * @returns {string|null} Logout uri (or null if no end_session_endpoint was\n * provided in the IdP config)\n */\n logoutRequest (options = {}) {\n const { id_token_hint, post_logout_redirect_uri, state } = options\n let configuration\n\n assert(this.provider, 'OpenID Configuration is not initialized')\n configuration = this.provider.configuration\n assert(configuration, 'OpenID Configuration is not initialized')\n\n if (!configuration.end_session_endpoint) {\n console.log(`OpenId Configuration for ` +\n `${configuration.issuer} is missing end_session_endpoint`)\n return null\n }\n\n if (post_logout_redirect_uri && !id_token_hint) {\n throw new Error('id_token_hint is required when using post_logout_redirect_uri')\n }\n\n const params = {}\n\n if (id_token_hint) {\n params.id_token_hint = id_token_hint\n }\n if (post_logout_redirect_uri) {\n params.post_logout_redirect_uri = post_logout_redirect_uri\n }\n if (state) {\n params.state = state\n }\n\n const url = new URL(configuration.end_session_endpoint)\n url.search = FormUrlEncoded.encode(params)\n\n return url.href\n }\n\n /**\n * Logout\n *\n * @deprecated\n *\n * TODO: Add deprecation warnings, then remove. Client code should\n * use `logoutRequest()` instead\n *\n * @returns {Promise}\n */\n logout () {\n let configuration\n try {\n assert(this.provider, 'OpenID Configuration is not initialized.')\n configuration = this.provider.configuration\n assert(configuration, 'OpenID Configuration is not initialized.')\n assert(configuration.end_session_endpoint,\n 'OpenID Configuration is missing end_session_endpoint.')\n } catch (error) {\n return Promise.reject(error)\n }\n\n if (!configuration.end_session_endpoint) {\n this.clearSession()\n return Promise.resolve(undefined)\n }\n\n let uri = configuration.end_session_endpoint\n let method = 'get'\n\n return fetch(uri, {method, credentials: 'include'})\n .then(onHttpError('Error logging out'))\n .then(() => this.clearSession())\n\n // TODO: Validate `frontchannel_logout_uri` if necessary\n /**\n * frontchannel_logout_uri - OPTIONAL. RP URL that will cause the RP to log\n * itself out when rendered in an iframe by the OP.\n *\n * An `iss` (issuer) query parameter and a `sid`\n * (session ID) query parameter MAY be included by the OP to enable the RP\n * to validate the request and to determine which of the potentially\n * multiple sessions is to be logged out. If a sid (session ID) query\n * parameter is included, an iss (issuer) query parameter MUST also be\n * included.\n * @see https://openid.net/specs/openid-connect-frontchannel-1_0.html#RPLogout\n */\n }\n\n clearSession () {\n let session = this.store\n\n if (!session) { return }\n\n delete session[SESSION_PRIVATE_KEY]\n }\n\n /**\n * @param uri {string} Target Resource Server URI\n * @param idToken {IDToken} ID Token to be embedded in the PoP token\n *\n * @returns {Promise}\n */\n popTokenFor (uri, idToken) {\n return PoPToken.issueFor(uri, idToken)\n }\n}\n\nconst SESSION_PRIVATE_KEY = 'oidc.session.privateKey'\n\nRelyingParty.SESSION_PRIVATE_KEY = SESSION_PRIVATE_KEY\n\nmodule.exports = RelyingParty\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/oidc-rp/src/RelyingParty.js\n// module id = 111\n// module chunks = 0","'use strict';\n\n/**\n * JSON Schema Formats\n *\n * TODO\n * Is there a good way to express these over multiple lines with comments\n * for easier debugging and auditing?\n */\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DATETIME_REGEXP = /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s][0-2]\\d:[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:z|[+-]\\d\\d:\\d\\d)$/i;\nvar URI_REGEXP = /^(?:[a-z][a-z0-9+-.]*)?(?:\\:|\\/)\\/?[^\\s]*$/i;\nvar EMAIL_REGEXP = /^[a-z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i;\nvar IPV4_REGEXP = /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/;\nvar IPV6_REGEXP = /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i;\nvar HOSTNAME_REGEXP = /^[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?(\\.[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?)*$/i;\n\n/**\n * Formats\n */\n\nvar Formats = function () {\n function Formats() {\n _classCallCheck(this, Formats);\n }\n\n _createClass(Formats, [{\n key: 'register',\n\n\n /**\n * Register\n *\n * @description\n * Register a new mapping from named format to RegExp instance\n *\n * TODO\n * We can do some extra validation of the RegExp to\n * ensure it's the acceptable subset of RegExps allowed\n * by JSON Schema.\n *\n * @param {string} name\n * @param {RegExp} pattern\n * @returns {RegExp}\n */\n value: function register(name, pattern) {\n // verify name is a string\n if (typeof name !== 'string') {\n throw new Error('Format name must be a string');\n }\n\n // cast a string to RegExp\n if (typeof pattern === 'string') {\n pattern = new RegExp(pattern);\n }\n\n return this[name] = pattern;\n }\n\n /**\n * Resolve\n *\n * @description\n * Given a format name, return the corresponding registered validation. In the\n * event a format is not registered, throw an error.\n *\n * @param {string} name\n * @returns {RegExp}\n */\n\n }, {\n key: 'resolve',\n value: function resolve(name) {\n var format = this[name];\n\n if (!format) {\n throw new Error('Unknown JSON Schema format.');\n }\n\n return format;\n }\n\n /**\n * Test\n *\n * @description\n * Test that a value conforms to a format.\n *\n * @param {string} name\n * @param {string} value\n * @returns {Boolean}\n */\n\n }, {\n key: 'test',\n value: function test(name, value) {\n var format = this.resolve(name);\n return format.test(value);\n }\n }], [{\n key: 'initialize',\n\n\n /**\n * Initialize\n *\n * @description\n * Create a new Formats instance and register default formats\n *\n * @returns {Formats}\n */\n value: function initialize() {\n var formats = new Formats();\n formats.register('date-time', DATETIME_REGEXP);\n formats.register('uri', URI_REGEXP);\n formats.register('email', EMAIL_REGEXP);\n formats.register('ipv4', IPV4_REGEXP);\n formats.register('ipv6', IPV6_REGEXP);\n formats.register('hostname', HOSTNAME_REGEXP);\n return formats;\n }\n }]);\n\n return Formats;\n}();\n\n/**\n * Export\n */\n\n\nmodule.exports = Formats.initialize();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@trust/json-document/lib/Formats.js\n// module id = 112\n// module chunks = 0","'use strict';\n\n/**\n * Initializer\n */\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Initializer = function () {\n\n /**\n * constructor\n */\n function Initializer(schema, options) {\n _classCallCheck(this, Initializer);\n\n Object.assign(this, options || {});\n this.root = this.root || this;\n\n this.root.depth = this.root.depth || 1;\n\n if (this.level > this.root.depth) {\n this.root.depth = this.level;\n }\n\n this.level = this.level || 0;\n this.schema = schema;\n }\n\n /**\n * compile (static)\n */\n\n\n _createClass(Initializer, [{\n key: 'compile',\n\n\n /**\n * compile\n */\n value: function compile() {\n var root = this.root,\n depth = this.depth,\n level = this.level;\n\n var declarations = '';\n var body = '';\n\n // traverse the schema and generate code\n body += this.default();\n body += this.properties();\n //body += this.additionalProperties()\n body += this.items();\n //body += this.additionalItems()\n\n\n // value\n body += this.member();\n body += this.item();\n\n // after traversing the schema\n // generate the variable declarations\n if (root === this) {\n for (var i = 1; i <= this.root.depth; i++) {\n declarations += this.declaration(i);\n }\n\n return '\\n options = options || {}\\n\\n if (options.filter === false) {\\n Object.assign(target, JSON.parse(JSON.stringify(source)))\\n }\\n\\n ' + declarations + '\\n ' + body + '\\n ';\n }\n\n return body;\n }\n\n /**\n * declaration\n */\n\n }, {\n key: 'declaration',\n value: function declaration(level) {\n return '\\n var target' + level + '\\n var source' + level + '\\n var count' + level + '\\n ';\n }\n\n /**\n * default\n */\n\n }, {\n key: 'default',\n value: function _default() {\n var schema = this.schema,\n level = this.level,\n key = this.key,\n index = this.index;\n var value = schema.default; // rename default to value because it's a keyword and syntax highlighter breaks\n\n var block = '';\n\n if (schema.hasOwnProperty('default')) {\n\n if (key) {\n block += '\\n target' + level + '[\\'' + key + '\\'] = ' + JSON.stringify(value) + '\\n ';\n }\n\n if (index) {\n block += '\\n target' + level + '[' + index + '] = ' + JSON.stringify(value) + '\\n ';\n }\n\n if (level > 1) {\n block += '\\n count' + level + '++\\n ';\n }\n\n block = '\\n if (options.defaults !== false) {\\n ' + block + '\\n }\\n ';\n }\n\n return block;\n }\n\n /**\n * member\n */\n\n }, {\n key: 'member',\n value: function member() {\n var schema = this.schema,\n root = this.root,\n level = this.level,\n key = this.key;\n var properties = schema.properties,\n additionalProperties = schema.additionalProperties,\n items = schema.items,\n additionalItems = schema.additionalItems;\n\n var block = '';\n\n // `key` tells us to treat this subschema as an object member vs an array item\n // and the absence of the other values here indicates we are dealing with a\n // primitive value\n if (key && !properties && !additionalProperties && !items && !additionalItems) {\n\n // first generate the assignment statement\n block += '\\n target' + level + '[\\'' + key + '\\'] = source' + level + '[\\'' + key + '\\']\\n ';\n\n // for nested container objects, add the counter incrementing statement\n if (level > 1) {\n block += '\\n count' + level + '++\\n ';\n }\n\n // wrap the foregoing in a check for presence on the source\n block = '\\n if (source' + level + '.hasOwnProperty(\\'' + key + '\\')) {\\n ' + block + '\\n }\\n ';\n }\n\n return block;\n }\n\n /**\n * item\n */\n\n }, {\n key: 'item',\n value: function item() {\n var schema = this.schema,\n root = this.root,\n level = this.level,\n index = this.index;\n var properties = schema.properties,\n additionalProperties = schema.additionalProperties,\n items = schema.items,\n additionalItems = schema.additionalItems;\n\n var block = '';\n\n if (index && !properties && !additionalProperties && !items && !additionalItems) {\n\n block += '\\n target' + level + '[' + index + '] = source' + level + '[' + index + ']\\n ';\n\n if (level > 1) {\n block += '\\n count' + level + '++\\n ';\n }\n\n block = '\\n if (' + index + ' < len) {\\n ' + block + '\\n }\\n ';\n }\n\n return block;\n }\n\n /**\n * properties\n */\n\n }, {\n key: 'properties',\n value: function properties() {\n var schema = this.schema,\n root = this.root,\n level = this.level,\n key = this.key,\n index = this.index;\n var properties = schema.properties;\n\n var block = '';\n\n if (properties) {\n Object.keys(properties).forEach(function (key) {\n var subschema = properties[key];\n var initializer = new Initializer(subschema, { key: key, root: root, level: level + 1 });\n\n block += initializer.compile();\n });\n\n // root-level properties boilerplate\n if (root === this) {\n block = '\\n if (typeof source === \\'object\\' && source !== null && !Array.isArray(source)) {\\n if (typeof target !== \\'object\\') {\\n throw new Error(\\'?\\')\\n }\\n\\n source1 = source\\n target1 = target\\n count1 = 0\\n\\n ' + block + '\\n }\\n ';\n\n // nested properties boilerplate\n } else {\n\n if (index) {\n block = '\\n if (' + index + ' < source' + level + '.length || typeof source' + level + '[' + index + '] === \\'object\\') {\\n\\n source' + (level + 1) + ' = source' + level + '[' + index + '] || {}\\n count' + (level + 1) + ' = 0\\n\\n if (' + index + ' < target' + level + '.length || typeof target' + level + '[' + index + '] !== \\'object\\') {\\n target' + (level + 1) + ' = {}\\n if (' + index + ' < source' + level + '.length) {\\n count' + (level + 1) + '++\\n }\\n } else {\\n target' + (level + 1) + ' = target' + level + '[' + index + ']\\n }\\n\\n ' + block + '\\n\\n if (count' + (level + 1) + ' > 0) {\\n target' + level + '[' + index + '] = target' + (level + 1) + '\\n count' + level + '++\\n }\\n\\n } else {\\n target' + level + '[' + index + '] = source' + level + '[' + index + ']\\n count' + level + '++\\n }\\n ';\n }\n\n if (key) {\n block = '\\n if ((typeof source' + level + '[\\'' + key + '\\'] === \\'object\\'\\n && source' + level + '[\\'' + key + '\\'] !== null\\n && !Array.isArray(source' + level + '[\\'' + key + '\\']))\\n || !source' + level + '.hasOwnProperty(\\'' + key + '\\')) {\\n\\n source' + (level + 1) + ' = source' + level + '[\\'' + key + '\\'] || {}\\n count' + (level + 1) + ' = 0\\n\\n if (!target' + level + '.hasOwnProperty(\\'' + key + '\\')\\n || typeof target' + level + '[\\'' + key + '\\'] !== \\'object\\'\\n || target' + level + '[\\'' + key + '\\'] === null\\n || Array.isArray(target' + level + '[\\'' + key + '\\'])) {\\n target' + (level + 1) + ' = {}\\n if (source' + level + '.hasOwnProperty(\\'' + key + '\\')) {\\n count' + (level + 1) + '++\\n }\\n } else {\\n target' + (level + 1) + ' = target' + level + '[\\'' + key + '\\']\\n count' + (level + 1) + '++\\n }\\n\\n ' + block + '\\n\\n if (count' + (level + 1) + ' > 0) {\\n target' + level + '[\\'' + key + '\\'] = target' + (level + 1) + '\\n count' + level + '++\\n }\\n\\n } else {\\n target' + level + '[\\'' + key + '\\'] = source' + level + '[\\'' + key + '\\']\\n count' + level + '++\\n }\\n ';\n }\n }\n }\n\n return block;\n }\n\n /**\n *\n */\n\n }, {\n key: 'additionalProperties',\n value: function additionalProperties() {}\n\n /**\n * items\n */\n\n }, {\n key: 'items',\n value: function items() {\n var schema = this.schema,\n root = this.root,\n level = this.level,\n key = this.key,\n index = this.index;\n var items = schema.items;\n\n var block = '';\n\n if (items) {\n\n if (Array.isArray(items)) {\n // TODO\n //\n //\n //\n //\n //\n // ...\n\n } else if ((typeof items === 'undefined' ? 'undefined' : _typeof(items)) === 'object' && items !== null) {\n var _index = 'i' + (level + 1);\n var initializer = new Initializer(items, { index: _index, root: root, level: level + 1 });\n\n block += '\\n var sLen = source' + (level + 1) + '.length || 0\\n var tLen = target' + (level + 1) + '.length || 0\\n var len = 0\\n\\n if (sLen > len) { len = sLen }\\n // THIS IS WRONG, CAUSED SIMPLE ARRAY INIT TO FAIL (OVERWRITE\\n // EXISTING TARGET VALUES WITH UNDEFINED WHEN SOURCE IS SHORTER THAN\\n // TARGET). LEAVING HERE UNTIL WE FINISH TESTING AND SEE WHY IT MIGHT\\n // HAVE BEEN HERE IN THE FIRST PLACE.\\n //\\n // if (tLen > len) { len = tLen }\\n\\n for (var ' + _index + ' = 0; ' + _index + ' < len; ' + _index + '++) {\\n ' + initializer.compile() + '\\n }\\n ';\n }\n\n // root-level properties boilerplate\n if (root === this) {\n block = '\\n if (Array.isArray(source)) {\\n if (!Array.isArray(target)) {\\n throw new Error(\\'?\\')\\n }\\n\\n source1 = source\\n target1 = target\\n\\n ' + block + '\\n }\\n ';\n\n // nested properties boilerplate\n } else {\n block = '\\n if (Array.isArray(source' + level + '[\\'' + key + '\\']) || !source' + level + '.hasOwnProperty(\\'' + key + '\\')) {\\n\\n source' + (level + 1) + ' = source' + level + '[\\'' + key + '\\'] || []\\n count' + (level + 1) + ' = 0\\n\\n if (!target' + level + '.hasOwnProperty(\\'' + key + '\\') || !Array.isArray(target' + level + '[\\'' + key + '\\'])) {\\n target' + (level + 1) + ' = []\\n if (source' + level + '.hasOwnProperty(\\'' + key + '\\')) {\\n count' + (level + 1) + '++\\n }\\n\\n } else {\\n target' + (level + 1) + ' = target' + level + '[\\'' + key + '\\']\\n count' + (level + 1) + '++\\n }\\n\\n ' + block + '\\n\\n if (count' + (level + 1) + ' > 0) {\\n target' + level + '[\\'' + key + '\\'] = target' + (level + 1) + '\\n count' + level + '++\\n }\\n\\n } else {\\n target' + level + '[\\'' + key + '\\'] = source' + level + '[\\'' + key + '\\']\\n count' + level + '++\\n }\\n ';\n }\n }\n\n return block;\n }\n\n /**\n *\n */\n\n }, {\n key: 'additionalItems',\n value: function additionalItems() {}\n }], [{\n key: 'compile',\n value: function compile(schema) {\n var initializer = new Initializer(schema);\n var block = initializer.compile();\n\n //console.log(beautify(block))\n try {\n return new Function('target', 'source', 'options', block);\n } catch (e) {\n console.log(e, e.stack);\n }\n }\n }]);\n\n return Initializer;\n}();\n\nmodule.exports = Initializer;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@trust/json-document/lib/Initializer.js\n// module id = 113\n// module chunks = 0","'use strict';\n\n/**\n * Module dependencies\n * @ignore\n */\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar JSONPointer = require('./JSONPointer');\n\n/**\n * Modes\n */\nvar THROW = 0;\nvar RECOVER = 1;\nvar SILENT = 2;\n\n/**\n * Operations list\n */\nvar OPERATIONS = ['add', 'remove', 'replace', 'move', 'copy', 'test'];\n\n/**\n * Patch\n *\n * @class\n * Implements RFC 6902: JavaScript Object Notation (JSON) Patch\n * https://tools.ietf.org/html/rfc6902\n */\n\nvar JSONPatch = function () {\n\n /**\n * Constructor\n *\n * @param {Array} ops\n */\n function JSONPatch(ops) {\n _classCallCheck(this, JSONPatch);\n\n this.ops = ops || [];\n }\n\n /**\n * Apply\n *\n * @todo handle errors/roll back\n * @todo protect properties that are private in the schema\n * @todo map JSON Pointers real property names\n *\n * @param {Object} target\n */\n\n\n _createClass(JSONPatch, [{\n key: 'apply',\n value: function apply(target) {\n var _this = this;\n\n this.ops.forEach(function (operation) {\n var op = operation.op;\n\n if (!op) {\n throw new Error('Missing \"op\" in JSON Patch operation');\n }\n\n if (OPERATIONS.indexOf(op) === -1) {\n throw new Error('Invalid \"op\" in JSON Patch operation');\n }\n\n if (!operation.path) {\n throw new Error('Missing \"path\" in JSON Patch operation');\n }\n\n _this[op](operation, target);\n });\n }\n\n /**\n * Add\n *\n * @param {Object} op\n * @param {Object} target\n */\n\n }, {\n key: 'add',\n value: function add(op, target) {\n if (op.value === undefined) {\n throw new Error('Missing \"value\" in JSON Patch add operation');\n }\n\n var pointer = new JSONPointer(op.path, SILENT);\n pointer.add(target, op.value);\n }\n\n /**\n * Remove\n *\n * @param {Object} op\n * @param {Object} target\n */\n\n }, {\n key: 'remove',\n value: function remove(op, target) {\n var pointer = new JSONPointer(op.path);\n pointer.remove(target);\n }\n\n /**\n * Replace\n *\n * @param {Object} op\n * @param {Object} target\n */\n\n }, {\n key: 'replace',\n value: function replace(op, target) {\n if (op.value === undefined) {\n throw new Error('Missing \"value\" in JSON Patch replace operation');\n }\n\n var pointer = new JSONPointer(op.path);\n pointer.replace(target, op.value);\n }\n\n /**\n * Move\n *\n * @param {Object} op\n * @param {Object} target\n */\n\n }, {\n key: 'move',\n value: function move(op, target) {\n if (op.from === undefined) {\n throw new Error('Missing \"from\" in JSON Patch move operation');\n }\n\n if (op.path.match(new RegExp('^' + op.from))) {\n throw new Error('Invalid \"from\" in JSON Patch move operation');\n }\n\n var pointer = new JSONPointer(op.path);\n var from = new JSONPointer(op.from);\n var value = from.get(target);\n\n from.remove(target);\n pointer.add(target, value);\n }\n\n /**\n * Copy\n *\n * @param {Object} op\n * @param {Object} target\n */\n\n }, {\n key: 'copy',\n value: function copy(op, target) {\n if (op.from === undefined) {\n throw new Error('Missing \"from\" in JSON Patch copy operation');\n }\n\n var pointer = new JSONPointer(op.path);\n var from = new JSONPointer(op.from);\n var value = from.get(target);\n\n pointer.add(target, value);\n }\n\n /**\n * Test\n *\n * @param {Object} op\n * @param {Object} target\n */\n\n }, {\n key: 'test',\n value: function test(op, target) {\n if (op.value === undefined) {\n throw new Error('Missing \"value\" in JSON Patch test operation');\n }\n\n var pointer = new JSONPointer(op.path);\n var value = pointer.get(target);\n\n switch (_typeof(op.value)) {\n //case 'string':\n //case 'number':\n //case 'boolean':\n // if (value !== op.value) {\n // throw new Error('Mismatching JSON Patch test value')\n // }\n default:\n if (value !== op.value) {\n throw new Error('Mismatching JSON Patch test value');\n }\n }\n }\n }]);\n\n return JSONPatch;\n}();\n\n/**\n * Exports\n */\n\n\nmodule.exports = JSONPatch;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@trust/json-document/lib/JSONPatch.js\n// module id = 114\n// module chunks = 0","'use strict';\n\n/**\n * Module dependencies\n * @ignore\n */\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar formats = require('./Formats');\n\n/**\n * For variable iterator counter\n *\n * @type {number}\n */\nvar indexCount = 0;\n\n/**\n * Validator\n *\n * Compile an object describing a JSON Schema into a validation function.\n */\n\nvar Validator = function () {\n _createClass(Validator, null, [{\n key: 'compile',\n\n\n /**\n * Compile (static)\n *\n * @description\n * Compile an object describing a JSON Schema into a validation function.\n *\n * @param {Object} schema\n * @returns {Function}\n */\n value: function compile(schema) {\n var validator = new Validator(schema);\n\n var body = '\\n // \"cursor\"\\n let value = data\\n let container\\n let stack = []\\n let top = -1\\n\\n // error state\\n let valid = true\\n let errors = []\\n\\n // complex schema state\\n let initialValidity\\n let anyValid\\n let notValid\\n let countOfValid\\n let initialErrorCount\\n let accumulatedErrorCount\\n\\n // validation code\\n ' + validator.compile() + '\\n\\n // validation result\\n return {\\n valid,\\n errors\\n }\\n ';\n\n return new Function('data', body);\n }\n\n /**\n * Return current iterator index counter and increase value\n *\n * @returns {number}\n */\n\n }, {\n key: 'counter',\n get: function get() {\n return indexCount++;\n }\n\n /**\n * Constructor\n *\n * @param {Object} schema - object representation of a schema\n * @param {string} options - compilation options\n */\n\n }]);\n\n function Validator(schema) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Validator);\n\n // assign schema to this\n this.schema = schema;\n\n // assign all options to this\n Object.assign(this, options);\n\n // ensure address is defined\n if (!this.address) {\n this.address = '';\n }\n\n // ensure require is boolean\n if (this.require !== true) {\n this.require = false;\n }\n }\n\n /**\n * Compile\n *\n * @description\n * The instance compile method is \"dumb\". It only sequences invocation of\n * more specific compilation methods. It generates code to\n *\n * - read a value from input\n * - validate type(s) of input\n * - validate constraints described by various schema keywords\n *\n * Conditional logic related to code generation is pushed downsteam to\n * type-specific methods.\n */\n\n\n _createClass(Validator, [{\n key: 'compile',\n value: function compile() {\n var block = '';\n\n if (this.require) {\n block += this.required();\n }\n\n // type validation\n block += this.type();\n\n // type specific validation generators\n // null and boolean are covered by this.type()\n // integer should be covered by number and this.type()\n block += this.array();\n block += this.number();\n block += this.object();\n block += this.string();\n\n // non-type-specific validation generators\n block += this.enum();\n block += this.anyOf();\n block += this.allOf();\n block += this.not();\n block += this.oneOf();\n\n return block;\n }\n\n /**\n * push\n */\n\n }, {\n key: 'push',\n value: function push() {\n return '\\n stack.push(value)\\n container = value\\n top++\\n ';\n }\n\n /**\n * pop\n */\n\n }, {\n key: 'pop',\n value: function pop() {\n return '\\n if (stack.length > 1) {\\n top--\\n stack.pop()\\n }\\n\\n value = container = stack[top]\\n ';\n }\n\n /**\n * type\n *\n * @description\n * > An instance matches successfully if its primitive type is one of the\n * > types defined by keyword. Recall: \"number\" includes \"integer\".\n * > JSON Schema Validation Section 5.5.2\n *\n * @returns {string}\n */\n\n }, {\n key: 'type',\n value: function type() {\n var type = this.schema.type,\n address = this.address;\n\n var block = '';\n\n if (type) {\n var types = Array.isArray(type) ? type : [type];\n var conditions = types.map(function (type) {\n // TODO: can we make a mapping object for this to clean it up?\n if (type === 'array') return '!Array.isArray(value)';\n if (type === 'boolean') return 'typeof value !== \\'boolean\\'';\n if (type === 'integer') return '!Number.isInteger(value)';\n if (type === 'null') return 'value !== null';\n if (type === 'number') return 'typeof value !== \\'number\\'';\n if (type === 'object') return '(typeof value !== \\'object\\' || Array.isArray(value) || value === null)';\n if (type === 'string') return 'typeof value !== \\'string\\'';\n }).join(' && ');\n\n block += '\\n // ' + address + ' type checking\\n if (value !== undefined && ' + conditions + ') {\\n valid = false\\n errors.push({\\n keyword: \\'type\\',\\n message: \\'invalid type\\'\\n })\\n }\\n ';\n }\n\n return block;\n }\n\n /**\n * Type-specific validations\n *\n * Type checking is optional in JSON Schema, and a schema can allow\n * multiple types. Generated code needs to apply type-specific validations\n * only to appropriate values, and ignore everything else. Type validation\n * itself is handled separately from other validation keywords.\n *\n * The methods `array`, `number`, `object`, `string` generate type-specific\n * validation code blocks, wrapped in a conditional such that they will\n * only be applied to values of that type.\n *\n * For example, the `number` method, given the schema\n *\n * { minimum: 3 }\n *\n * will generate\n *\n * if (typeof value === 'number') {\n * if (value < 3) {\n * valid = false\n * errors.push({ message: '...' })\n * }\n * }\n *\n * Integer values are also numbers, and are validated the same as numbers\n * other than the type validation itself. Therefore no `integer` method is\n * needed.\n */\n\n /**\n * array\n *\n * @description\n * Invoke methods for array-specific keywords and wrap resulting code in\n * type-checking conditional so that any resulting validations are only\n * applied to array values.\n *\n * @returns {string}\n */\n\n }, {\n key: 'array',\n value: function array() {\n var keywords = ['additionalItems', 'items', 'minItems', 'maxItems', 'uniqueItems'];\n var validations = this.validations(keywords);\n var block = '';\n\n if (validations.length > 0) {\n block += '\\n /**\\n * Array validations\\n */\\n if (Array.isArray(value)) {\\n ' + validations + '\\n }\\n ';\n }\n\n return block;\n }\n\n /**\n * number\n *\n * @description\n * Invoke methods for number-specific keywords and wrap resulting code in\n * type-checking conditional so that any resulting validations are only\n * applied to number values.\n *\n * @returns {string}\n */\n\n }, {\n key: 'number',\n value: function number() {\n var keywords = ['minimum', 'maximum', 'multipleOf'];\n var validations = this.validations(keywords);\n var block = '';\n\n if (validations.length > 0) {\n block += '\\n /**\\n * Number validations\\n */\\n if (typeof value === \\'number\\') {\\n ' + validations + '\\n }\\n ';\n }\n\n return block;\n }\n\n /**\n * object\n *\n * @description\n * Invoke methods for object-specific keywords and wrap resulting code in\n * type-checking conditional so that any resulting validations are only\n * applied to object values.\n *\n * @returns {string}\n */\n\n }, {\n key: 'object',\n value: function object() {\n var keywords = ['maxProperties', 'minProperties', 'additionalProperties', 'properties', 'patternProperties', 'dependencies', 'schemaDependencies', 'propertyDependencies'];\n var validations = this.validations(keywords);\n var block = '';\n\n if (validations.length > 0) {\n block += '\\n /**\\n * Object validations\\n */\\n if (typeof value === \\'object\\' && value !== null && !Array.isArray(value)) {\\n ' + validations + '\\n }\\n ';\n }\n\n return block;\n }\n\n /**\n * string\n *\n * @description\n * Invoke methods for string-specific keywords and wrap resulting code in\n * type-checking conditional so that any resulting validations are only\n * applied to string values.\n *\n * @returns {string}\n */\n\n }, {\n key: 'string',\n value: function string() {\n var keywords = ['maxLength', 'minLength', 'pattern', 'format'];\n var validations = this.validations(keywords);\n var block = '';\n\n if (validations.length > 0) {\n block += '\\n /**\\n * String validations\\n */\\n if (typeof value === \\'string\\') {\\n ' + validations + '\\n }\\n ';\n }\n\n return block;\n }\n\n /**\n * validations\n *\n * @description\n * Iterate over an array of keywords and invoke code generator methods\n * for each. Concatenate the results together and return. Used by \"type\"\n * methods such as this.array() and this.string()\n *\n * @param {Array} keywords\n * @returns {string}\n */\n\n }, {\n key: 'validations',\n value: function validations(keywords) {\n var _this = this;\n\n var schema = this.schema;\n\n var block = '';\n\n var constraints = Object.keys(schema).filter(function (key) {\n return keywords.indexOf(key) !== -1;\n });\n\n constraints.forEach(function (keyword) {\n block += _this[keyword]();\n });\n\n return block;\n }\n\n /**\n * enum\n *\n * @description\n * > An instance validates successfully against this keyword if its value\n * > is equal to one of the elements in this keyword's array value.\n * > JSON Schema Validation Section 5.5.1\n *\n * @returns {string}\n */\n\n }, {\n key: 'enum',\n value: function _enum() {\n var enumerated = this.schema.enum,\n address = this.address;\n\n var conditions = ['value !== undefined'];\n var block = '';\n\n if (enumerated) {\n enumerated.forEach(function (value) {\n switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n case 'boolean':\n conditions.push('value !== ' + value);\n break;\n\n case 'number':\n conditions.push('value !== ' + value);\n break;\n\n case 'string':\n conditions.push('value !== \"' + value + '\"');\n break;\n\n case 'object':\n if (value === null) {\n conditions.push('value !== null');\n } else {\n conditions.push('\\'' + JSON.stringify(value) + '\\' !== JSON.stringify(value)');\n }\n break;\n\n default:\n throw new Error('Things are not well in the land of enum');\n\n }\n });\n\n block += '\\n /**\\n * Validate \"' + address + '\" enum\\n */\\n if (' + conditions.join(' && ') + ') {\\n valid = false\\n errors.push({\\n keyword: \\'enum\\',\\n message: JSON.stringify(value) + \\' is not an enumerated value\\'\\n })\\n }\\n ';\n }\n\n return block;\n }\n\n /**\n * anyOf\n *\n * @description\n * > An instance validates successfully against this keyword if it\n * > validates successfully against at least one schema defined by this\n * > keyword's value.\n * > JSON Schema Validation Section 5.5.4\n *\n * @returns {string}\n */\n\n }, {\n key: 'anyOf',\n value: function anyOf() {\n var anyOf = this.schema.anyOf,\n address = this.address;\n\n var block = '';\n\n if (Array.isArray(anyOf)) {\n block += '\\n initialValidity = valid\\n initialErrorCount = errors.length\\n anyValid = false\\n ';\n\n anyOf.forEach(function (subschema) {\n var validator = new Validator(subschema, { address: address });\n block += '\\n accumulatedErrorCount = errors.length\\n ' + validator.compile() + '\\n if (accumulatedErrorCount === errors.length) {\\n anyValid = true\\n }\\n ';\n });\n\n block += '\\n if (anyValid === true) {\\n valid = initialValidity\\n errors = errors.slice(0, initialErrorCount)\\n }\\n ';\n }\n\n return block;\n }\n\n /**\n * allOf\n *\n * @description\n * > An instance validates successfully against this keyword if it\n * > validates successfully against all schemas defined by this keyword's\n * > value.\n * > JSON Schema Validation Section 5.5.3\n *\n * @returns {string}\n */\n\n }, {\n key: 'allOf',\n value: function allOf() {\n var allOf = this.schema.allOf,\n address = this.address;\n\n var block = '';\n\n if (Array.isArray(allOf)) {\n allOf.forEach(function (subschema) {\n var validator = new Validator(subschema, { address: address });\n block += '\\n ' + validator.compile() + '\\n ';\n });\n }\n\n return block;\n }\n\n /**\n * oneOf\n *\n * @description\n * > An instance validates successfully against this keyword if it\n * > validates successfully against exactly one schema defined by this\n * > keyword's value.\n * > JSON Schema Validation Section 5.5.5\n *\n * @returns {string}\n */\n\n }, {\n key: 'oneOf',\n value: function oneOf() {\n var oneOf = this.schema.oneOf,\n address = this.address;\n\n var block = '';\n\n if (Array.isArray(oneOf)) {\n block += '\\n /**\\n * Validate ' + address + ' oneOf\\n */\\n initialValidity = valid\\n initialErrorCount = errors.length\\n countOfValid = 0\\n ';\n\n oneOf.forEach(function (subschema) {\n var validator = new Validator(subschema, { address: address });\n block += '\\n accumulatedErrorCount = errors.length\\n ' + validator.compile() + '\\n if (accumulatedErrorCount === errors.length) {\\n countOfValid += 1\\n }\\n ';\n });\n\n block += '\\n if (countOfValid === 1) {\\n valid = initialValidity\\n errors = errors.slice(0, initialErrorCount)\\n } else {\\n valid = false\\n errors.push({\\n keyword: \\'oneOf\\',\\n message: \\'what is a reasonable error message for this case?\\'\\n })\\n }\\n ';\n }\n\n return block;\n }\n\n /**\n * not\n *\n * @description\n * > An instance is valid against this keyword if it fails to validate\n * > successfully against the schema defined by this keyword.\n * > JSON Schema Validation Section 5.5.6\n *\n * @returns {string}\n */\n\n }, {\n key: 'not',\n value: function not() {\n var not = this.schema.not,\n address = this.address;\n\n var block = '';\n\n if ((typeof not === 'undefined' ? 'undefined' : _typeof(not)) === 'object' && not !== null && !Array.isArray(not)) {\n var subschema = not;\n var validator = new Validator(subschema, { address: address });\n\n block += '\\n /**\\n * NOT\\n */\\n if (value !== undefined) {\\n initialValidity = valid\\n initialErrorCount = errors.length\\n notValid = true\\n\\n accumulatedErrorCount = errors.length\\n\\n ' + validator.compile() + '\\n\\n if (accumulatedErrorCount === errors.length) {\\n notValid = false\\n }\\n\\n if (notValid === true) {\\n valid = initialValidity\\n errors = errors.slice(0, initialErrorCount)\\n } else {\\n valid = false\\n errors = errors.slice(0, initialErrorCount)\\n errors.push({\\n keyword: \\'not\\',\\n message: \\'hmm...\\'\\n })\\n }\\n }\\n ';\n }\n\n return block;\n }\n\n /**\n * properties\n *\n * @description\n * Iterate over the `properties` schema property if it is an object. For each\n * key, initialize a new Validator for the subschema represented by the property\n * value and invoke compile. Append the result of compiling each subschema to\n * the block of code being generated.\n *\n * @returns {string}\n */\n\n }, {\n key: 'properties',\n value: function properties() {\n var schema = this.schema,\n address = this.address;\n var properties = schema.properties,\n required = schema.required;\n\n var block = this.push();\n\n // ensure the value of \"required\" schema property is an array\n required = Array.isArray(required) ? required : [];\n\n if ((typeof properties === 'undefined' ? 'undefined' : _typeof(properties)) === 'object') {\n Object.keys(properties).forEach(function (key) {\n var subschema = properties[key];\n var isRequired = required.indexOf(key) !== -1;\n // TODO\n // how should we be calculating these things? should be json pointer?\n // needs a separate function\n var pointer = [address, key].filter(function (segment) {\n return !!segment;\n }).join('.');\n var validation = new Validator(subschema, { address: pointer, require: isRequired });\n\n // read the value\n block += '\\n value = container[\\'' + key + '\\']\\n ';\n\n block += validation.compile();\n });\n }\n\n block += this.pop();\n\n return block;\n }\n\n /**\n * Other Properties\n *\n * @description\n * This method is not for a keyword. It wraps validations for\n * patternProperties and additionalProperties in a single iteration over\n * an object-type value's properties.\n *\n * It should only be invoked once for a given subschema.\n *\n * @returns {string}\n */\n\n }, {\n key: 'otherProperties',\n value: function otherProperties() {\n return '\\n /**\\n * Validate Other Properties\\n */\\n ' + this.push() + '\\n\\n for (let key in container) {\\n value = container[key]\\n matched = false\\n\\n ' + this.patternValidations() + '\\n ' + this.additionalValidations() + '\\n }\\n\\n ' + this.pop() + '\\n ';\n }\n\n /**\n * Pattern Validations\n *\n * @description\n * Generate validation code from a subschema for properties matching a\n * regular expression.\n *\n * @returns {string}\n */\n\n }, {\n key: 'patternValidations',\n value: function patternValidations() {\n var patternProperties = this.schema.patternProperties;\n\n var block = '';\n\n if ((typeof patternProperties === 'undefined' ? 'undefined' : _typeof(patternProperties)) === 'object') {\n Object.keys(patternProperties).forEach(function (pattern) {\n var subschema = patternProperties[pattern];\n var validator = new Validator(subschema);\n block += '\\n if (key.match(\\'' + pattern + '\\')) {\\n matched = true\\n ' + validator.compile() + '\\n }\\n ';\n });\n }\n\n return block;\n }\n\n /**\n * Additional Validations\n *\n * @description\n * Generate validation code, either from a subschema for properties not\n * defined in the schema, or to disallow properties not defined in the\n * schema.\n *\n * @returns {string}\n */\n\n }, {\n key: 'additionalValidations',\n value: function additionalValidations() {\n var _schema = this.schema,\n properties = _schema.properties,\n additionalProperties = _schema.additionalProperties,\n address = this.address;\n\n var validations = '';\n var block = '';\n\n // catch additional unmatched properties\n var conditions = ['matched !== true'];\n\n // ignore defined properties\n Object.keys(properties || {}).forEach(function (key) {\n conditions.push('key !== \\'' + key + '\\'');\n });\n\n // validate additional properties\n if ((typeof additionalProperties === 'undefined' ? 'undefined' : _typeof(additionalProperties)) === 'object') {\n var subschema = additionalProperties;\n var validator = new Validator(subschema, { address: address + '[APKey]' });\n block += '\\n // validate additional properties\\n if (' + conditions.join(' && ') + ') {\\n ' + validator.compile() + '\\n }\\n ';\n }\n\n // error for additional properties\n if (additionalProperties === false) {\n block += '\\n // validate non-presence of additional properties\\n if (' + conditions.join(' && ') + ') {\\n valid = false\\n errors.push({\\n keyword: \\'additionalProperties\\',\\n message: key + \\' is not a defined property\\'\\n })\\n }\\n ';\n }\n\n return block;\n }\n\n /**\n * patternProperties\n *\n * @description\n * Generate validation code for properties matching a pattern\n * defined by the property name (key), which must be a string\n * representing a valid regular expression.\n *\n * @returns {string}\n */\n\n }, {\n key: 'patternProperties',\n value: function patternProperties() {\n var block = '';\n\n if (!this.otherPropertiesCalled) {\n this.otherPropertiesCalled = true;\n block += this.otherProperties();\n }\n\n return block;\n }\n\n /**\n * additionalProperties\n *\n * @description\n * Generate validation code for additional properties not defined\n * in the schema, or disallow additional properties if the value of\n * `additionalProperties` in the schema is `false`.\n *\n * @returns {string}\n */\n\n }, {\n key: 'additionalProperties',\n value: function additionalProperties() {\n var block = '';\n\n if (!this.otherPropertiesCalled) {\n this.otherPropertiesCalled = true;\n block += this.otherProperties();\n }\n\n return block;\n }\n\n /**\n * minProperties\n *\n * @description\n * > An object instance is valid against \"minProperties\" if its number of\n * > properties is greater than, or equal to, the value of this keyword.\n * > JSON Schema Validation Section 5.4.2\n *\n * @returns {string}\n */\n\n }, {\n key: 'minProperties',\n value: function minProperties() {\n var minProperties = this.schema.minProperties,\n address = this.address;\n\n\n return '\\n // ' + address + ' min properties\\n if (Object.keys(value).length < ' + minProperties + ') {\\n valid = false\\n errors.push({\\n keyword: \\'minProperties\\',\\n message: \\'too few properties\\'\\n })\\n }\\n ';\n }\n\n /**\n * maxProperties\n *\n * @description\n * > An object instance is valid against \"maxProperties\" if its number of\n * > properties is less than, or equal to, the value of this keyword.\n * > JSON Schema Validation Section 5.4.1\n *\n * @returns {string}\n */\n\n }, {\n key: 'maxProperties',\n value: function maxProperties() {\n var maxProperties = this.schema.maxProperties,\n address = this.address;\n\n\n return '\\n // ' + address + ' max properties\\n if (Object.keys(value).length > ' + maxProperties + ') {\\n valid = false\\n errors.push({\\n keyword: \\'maxProperties\\',\\n message: \\'too many properties\\'\\n })\\n }\\n ';\n }\n\n /**\n * Dependencies\n *\n * @description\n * > For all (name, schema) pair of schema dependencies, if the instance has\n * > a property by this name, then it must also validate successfully against\n * > the schema.\n * >\n * > Note that this is the instance itself which must validate successfully,\n * > not the value associated with the property name.\n * >\n * > For each (name, propertyset) pair of property dependencies, if the\n * > instance has a property by this name, then it must also have properties\n * > with the same names as propertyset.\n * > JSON Schema Validation Section 5.4.5.2\n *\n * @returns {string}\n */\n\n }, {\n key: 'dependencies',\n value: function dependencies() {\n var dependencies = this.schema.dependencies,\n address = this.address;\n\n\n var block = this.push();\n\n if ((typeof dependencies === 'undefined' ? 'undefined' : _typeof(dependencies)) === 'object') {\n Object.keys(dependencies).forEach(function (key) {\n var dependency = dependencies[key];\n var conditions = [];\n\n if (Array.isArray(dependency)) {\n dependency.forEach(function (item) {\n conditions.push('container[\\'' + item + '\\'] === undefined');\n });\n\n block += '\\n if (container[\\'' + key + '\\'] !== undefined && (' + conditions.join(' || ') + ')) {\\n valid = false\\n errors.push({\\n keyword: \\'dependencies\\',\\n message: \\'unmet dependencies\\'\\n })\\n }\\n ';\n } else if ((typeof dependency === 'undefined' ? 'undefined' : _typeof(dependency)) === 'object') {\n var subschema = dependency;\n var validator = new Validator(subschema, { address: address });\n\n block += '\\n if (container[\\'' + key + '\\'] !== undefined) {\\n ' + validator.compile() + '\\n }\\n ';\n }\n });\n }\n\n block += this.pop();\n\n return block;\n }\n\n /**\n * Required\n *\n * @description\n * > An object instance is valid against this keyword if its property set\n * > contains all elements in this keyword's array value.\n * > JSON Schema Validation Section 5.4.3\n *\n * @returns {string}\n */\n\n }, {\n key: 'required',\n value: function required() {\n var properties = this.schema.properties,\n address = this.address;\n\n var block = '';\n\n block += '\\n // validate ' + address + ' presence\\n if (value === undefined) {\\n valid = false\\n errors.push({\\n keyword: \\'required\\',\\n message: \\'is required\\'\\n })\\n }\\n ';\n\n return block;\n }\n\n /**\n * additionalItems\n *\n * @description\n * > Successful validation of an array instance with regards to these two\n * > keywords is determined as follows: if \"items\" is not present, or its\n * > value is an object, validation of the instance always succeeds,\n * > regardless of the value of \"additionalItems\"; if the value of\n * > \"additionalItems\" is boolean value true or an object, validation of\n * > the instance always succeeds; if the value of \"additionalItems\" is\n * > boolean value false and the value of \"items\" is an array, the\n * > instance is valid if its size is less than, or equal to, the size\n * > of \"items\".\n * > JSON Schema Validation Section 5.3.1\n *\n * @returns {string}\n */\n\n }, {\n key: 'additionalItems',\n value: function additionalItems() {\n var _schema2 = this.schema,\n items = _schema2.items,\n additionalItems = _schema2.additionalItems,\n address = this.address;\n\n var block = '';\n\n if (additionalItems === false && Array.isArray(items)) {\n block += '\\n // don\\'t allow additional items\\n if (value.length > ' + items.length + ') {\\n valid = false\\n errors.push({\\n keyword: \\'additionalItems\\',\\n message: \\'additional items not allowed\\'\\n })\\n }\\n ';\n }\n\n if ((typeof additionalItems === 'undefined' ? 'undefined' : _typeof(additionalItems)) === 'object' && additionalItems !== null && Array.isArray(items)) {\n var subschema = additionalItems;\n var validator = new Validator(subschema);\n var counter = Validator.counter;\n\n block += '\\n // additional items\\n ' + this.push() + '\\n\\n for (var i' + counter + ' = ' + items.length + '; i' + counter + ' <= container.length; i' + counter + '++) {\\n value = container[i' + counter + ']\\n ' + validator.compile() + '\\n }\\n\\n ' + this.pop() + '\\n ';\n }\n\n return block;\n }\n\n /**\n * Items\n *\n * @description\n * > Successful validation of an array instance with regards to these two\n * > keywords is determined as follows: if \"items\" is not present, or its\n * > value is an object, validation of the instance always succeeds,\n * > regardless of the value of \"additionalItems\"; if the value of\n * > \"additionalItems\" is boolean value true or an object, validation of\n * > the instance always succeeds; if the value of \"additionalItems\" is\n * > boolean value false and the value of \"items\" is an array, the\n * > instance is valid if its size is less than, or equal to, the size\n * > of \"items\".\n * > JSON Schema Validation Section 5.3.1\n *\n * Code to generate\n *\n * // this outer conditional is generated by this.array()\n * if (Array.isArray(value) {\n * let parent = value\n * for (let i = 0; i < parent.length; i++) {\n * value = parent[i]\n * // other validation code depending on value here\n * }\n * value = parent\n * }\n *\n *\n * @returns {string}\n */\n\n }, {\n key: 'items',\n value: function items() {\n var items = this.schema.items,\n address = this.address;\n\n var block = '';\n\n // if items is an array\n if (Array.isArray(items)) {\n block += this.push();\n\n items.forEach(function (item, index) {\n var subschema = item;\n var validator = new Validator(subschema, { address: address + '[' + index + ']' });\n\n block += '\\n // item #' + index + '\\n value = container[' + index + ']\\n ' + validator.compile() + '\\n ';\n });\n\n block += this.pop();\n\n // if items is an object\n } else if ((typeof items === 'undefined' ? 'undefined' : _typeof(items)) === 'object' && items !== null) {\n var subschema = items;\n var validator = new Validator(subschema);\n var counter = Validator.counter;\n\n block += '\\n // items\\n ' + this.push() + '\\n\\n for (var i' + counter + ' = 0; i' + counter + ' < container.length; i' + counter + '++) {\\n // read array element\\n value = container[i' + counter + ']\\n ' + validator.compile() + '\\n }\\n\\n ' + this.pop() + '\\n ';\n }\n\n return block;\n }\n\n /**\n * minItems\n *\n * @description\n * > An array instance is valid against \"minItems\" if its size is greater\n * > than, or equal to, the value of this keyword.\n * > JSON Schema Validation Section 5.3.3\n *\n * @returns {string}\n */\n\n }, {\n key: 'minItems',\n value: function minItems() {\n var minItems = this.schema.minItems,\n address = this.address;\n\n\n return '\\n // ' + address + ' min items\\n if (value.length < ' + minItems + ') {\\n valid = false\\n errors.push({\\n keyword: \\'minItems\\',\\n message: \\'too few properties\\'\\n })\\n }\\n ';\n }\n\n /**\n * maxItems\n *\n * @description\n * > An array instance is valid against \"maxItems\" if its size is less\n * > than, or equal to, the value of this keyword.\n * > JSON Schema Validation Section 5.3.2\n *\n * @returns {string}\n */\n\n }, {\n key: 'maxItems',\n value: function maxItems() {\n var maxItems = this.schema.maxItems,\n address = this.address;\n\n\n return '\\n // ' + address + ' max items\\n if (value.length > ' + maxItems + ') {\\n valid = false\\n errors.push({\\n keyword: \\'maxItems\\',\\n message: \\'too many properties\\'\\n })\\n }\\n ';\n }\n\n /**\n * uniqueItems\n *\n * @description\n * > If this keyword has boolean value false, the instance validates\n * > successfully. If it has boolean value true, the instance validates\n * > successfully if all of its elements are unique.\n * > JSON Schema Validation Section 5.3.4\n *\n * TODO\n * optimize\n *\n * @returns {string}\n */\n\n }, {\n key: 'uniqueItems',\n value: function uniqueItems() {\n var uniqueItems = this.schema.uniqueItems,\n address = this.address;\n\n var block = '';\n\n if (uniqueItems === true) {\n block += '\\n // validate ' + address + ' unique items\\n let values = value.map(v => JSON.stringify(v)) // TODO: optimize\\n let set = new Set(values)\\n if (values.length !== set.size) {\\n valid = false\\n errors.push({\\n keyword: \\'uniqueItems\\',\\n message: \\'items must be unique\\'\\n })\\n }\\n ';\n }\n\n return block;\n }\n\n /**\n * minLength\n *\n * @description\n * > A string instance is valid against this keyword if its length is\n * > greater than, or equal to, the value of this keyword. The length of\n * > a string instance is defined as the number of its characters as\n * > defined by RFC 4627 [RFC4627].\n * > JSON Schema Validation Section 5.2.2\n *\n * @returns {string}\n */\n\n }, {\n key: 'minLength',\n value: function minLength() {\n var minLength = this.schema.minLength,\n address = this.address;\n\n\n return '\\n // ' + address + ' validate minLength\\n if (Array.from(value).length < ' + minLength + ') {\\n valid = false\\n errors.push({\\n keyword: \\'minLength\\',\\n message: \\'too short\\'\\n })\\n }\\n ';\n }\n\n /**\n * maxLength\n *\n * @description\n * > A string instance is valid against this keyword if its length is less\n * > than, or equal to, the value of this keyword. The length of a string\n * > instance is defined as the number of its characters as defined by\n * > RFC 4627 [RFC4627].\n * > JSON Schema Validation Section 5.2.1\n *\n * @returns {string}\n */\n\n }, {\n key: 'maxLength',\n value: function maxLength() {\n var maxLength = this.schema.maxLength,\n address = this.address;\n\n\n return '\\n // ' + address + ' validate maxLength\\n if (Array.from(value).length > ' + maxLength + ') {\\n valid = false\\n errors.push({\\n keyword: \\'maxLength\\',\\n message: \\'too long\\'\\n })\\n }\\n ';\n }\n\n /**\n * Pattern\n *\n * @description\n * > A string instance is considered valid if the regular expression\n * > matches the instance successfully.\n * > JSON Schema Validation Section 5.2.3\n *\n * @returns {string}\n */\n\n }, {\n key: 'pattern',\n value: function pattern() {\n var pattern = this.schema.pattern,\n address = this.address;\n\n\n if (pattern) {\n return '\\n // ' + address + ' validate pattern\\n if (!value.match(new RegExp(\\'' + pattern + '\\'))) {\\n valid = false\\n errors.push({\\n keyword: \\'pattern\\',\\n message: \\'does not match the required pattern\\'\\n })\\n }\\n ';\n }\n }\n\n /**\n * Format\n *\n * @description\n * > Structural validation alone may be insufficient to validate that\n * > an instance meets all the requirements of an application. The\n * > \"format\" keyword is defined to allow interoperable semantic\n * > validation for a fixed subset of values which are accurately\n * > described by authoritative resources, be they RFCs or other\n * > external specifications.\n * > JSON Schema Validation Section 7.1\n *\n * @returns {string}\n */\n\n }, {\n key: 'format',\n value: function format() {\n var format = this.schema.format,\n address = this.address;\n\n var matcher = formats.resolve(format);\n\n if (matcher) {\n return '\\n // ' + address + ' validate format\\n if (!value.match(' + matcher + ')) {\\n valid = false\\n errors.push({\\n keyword: \\'format\\',\\n message: \\'is not \"' + format + '\" format\\'\\n })\\n }\\n ';\n }\n }\n\n /**\n * Minimum\n *\n * @description\n * > Successful validation depends on the presence and value of\n * > \"exclusiveMinimum\": if \"exclusiveMinimum\" is not present, or has\n * > boolean value false, then the instance is valid if it is greater\n * > than, or equal to, the value of \"minimum\"; if \"exclusiveMinimum\" is\n * > present and has boolean value true, the instance is valid if it is\n * > strictly greater than the value of \"minimum\".\n * > JSON Schema Validation Section 5.1.3\n *\n * @returns {string}\n */\n\n }, {\n key: 'minimum',\n value: function minimum() {\n var _schema3 = this.schema,\n minimum = _schema3.minimum,\n exclusiveMinimum = _schema3.exclusiveMinimum,\n address = this.address;\n\n var operator = exclusiveMinimum === true ? '<=' : '<';\n\n return '\\n // ' + address + ' validate minimum\\n if (value ' + operator + ' ' + minimum + ') {\\n valid = false\\n errors.push({\\n keyword: \\'minimum\\',\\n message: \\'too small\\'\\n })\\n }\\n ';\n }\n\n /**\n * Maximum\n *\n * @description\n * > Successful validation depends on the presence and value of\n * > \"exclusiveMaximum\": if \"exclusiveMaximum\" is not present, or has\n * > boolean value false, then the instance is valid if it is lower than,\n * > or equal to, the value of \"maximum\"; if \"exclusiveMaximum\" has\n * > boolean value true, the instance is valid if it is strictly lower\n * > than the value of \"maximum\".\n * > JSON Schema Validation Section 5.1.2\n *\n * @returns {string}\n */\n\n }, {\n key: 'maximum',\n value: function maximum() {\n var _schema4 = this.schema,\n maximum = _schema4.maximum,\n exclusiveMaximum = _schema4.exclusiveMaximum,\n address = this.address;\n\n var operator = exclusiveMaximum === true ? '>=' : '>';\n\n return '\\n // ' + address + ' validate maximum\\n if (value ' + operator + ' ' + maximum + ') {\\n valid = false\\n errors.push({\\n keyword: \\'maximum\\',\\n message: \\'too large\\'\\n })\\n }\\n ';\n }\n\n /**\n * multipleOf\n *\n * @description\n * > A numeric instance is valid against \"multipleOf\" if the result of\n * > the division of the instance by this keyword's value is an integer.\n * > JSON Schema Validation Section 5.1.1\n *\n * @returns {string}\n */\n\n }, {\n key: 'multipleOf',\n value: function multipleOf() {\n var multipleOf = this.schema.multipleOf;\n\n var block = '';\n\n if (typeof multipleOf === 'number') {\n var length = multipleOf.toString().length;\n var decimals = length - multipleOf.toFixed(0).length - 1;\n var pow = decimals > 0 ? Math.pow(10, decimals) : 1;\n var condition = void 0;\n\n if (decimals > 0) {\n condition = '(value * ' + pow + ') % ' + multipleOf * pow + ' !== 0';\n } else {\n condition = 'value % ' + multipleOf + ' !== 0';\n }\n\n block += '\\n if (' + condition + ') {\\n valid = false\\n errors.push({\\n keyword: \\'multipleOf\\',\\n message: \\'must be a multiple of ' + multipleOf + '\\'\\n })\\n }\\n ';\n }\n\n return block;\n }\n }]);\n\n return Validator;\n}();\n\n/**\n * Export\n */\n\n\nmodule.exports = Validator;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@trust/json-document/lib/Validator.js\n// module id = 115\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar token = /^[^\\u0000-\\u001F\\u007F()<>@,;:\\\\\"/?={}\\[\\]\\u0020\\u0009]+$/;\n\nvar isToken = exports.isToken = function isToken(str) {\n return typeof str === 'string' && token.test(str);\n};\nvar isScheme = exports.isScheme = isToken;\nvar quote = exports.quote = function quote(str) {\n return '\"' + str.replace(/\"/g, '\\\\\"') + '\"';\n};\nvar unquote = exports.unquote = function unquote(str) {\n return str.substr(1, str.length - 2).replace(/\\\\\"/g, '\"');\n};\n//# sourceMappingURL=util.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/auth-header/dist/util.js\n// module id = 116\n// module chunks = 0","module.exports.convertToJson = convertToJson\nmodule.exports.convertToNQuads = convertToNQuads\n\nvar asyncLib = require('async') // @@ Goal: remove this dependency\nvar jsonld = require('jsonld')\nvar N3 = require('n3') // @@ Goal: remove this dependency\n\nfunction convertToJson (n3String, jsonCallback) {\n var jsonString\n var n3Parser = N3.Parser()\n var n3Writer = N3.Writer({\n format: 'N-Quads'\n })\n asyncLib.waterfall([\n function (callback) {\n n3Parser.parse(n3String, callback)\n },\n function (triple, prefix, callback) {\n if (triple !== null) {\n n3Writer.addTriple(triple)\n }\n if (typeof callback === 'function') {\n n3Writer.end(callback)\n }\n },\n function (result, callback) {\n try {\n jsonld.fromRDF(result, {\n format: 'application/nquads'\n }, callback)\n } catch (err) {\n callback(err)\n }\n },\n function (json, callback) {\n jsonString = JSON.stringify(json)\n jsonCallback(null, jsonString)\n }\n ], function (err, result) {\n jsonCallback(err, jsonString)\n }\n )\n}\n\nfunction convertToNQuads (n3String, nquadCallback) {\n var nquadString\n var n3Parser = N3.Parser()\n var n3Writer = N3.Writer({\n format: 'N-Quads'\n })\n asyncLib.waterfall([\n function (callback) {\n n3Parser.parse(n3String, callback)\n },\n function (triple, prefix, callback) {\n if (triple !== null) {\n n3Writer.addTriple(triple)\n }\n if (typeof callback === 'function') {\n n3Writer.end(callback)\n }\n },\n function (result, callback) {\n nquadString = result\n nquadCallback(null, nquadString)\n }\n ], function (err, result) {\n nquadCallback(err, nquadString)\n }\n )\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/convert.js","'use strict'\nconst BlankNode = require('./blank-node')\nconst ClassOrder = require('./class-order')\nconst Collection = require('./collection')\nconst Literal = require('./literal')\nconst log = require('./log')\nconst NamedNode = require('./named-node')\nconst Node = require('./node')\nconst Serializer = require('./serialize')\nconst Statement = require('./statement')\nconst Variable = require('./variable')\n\nclass Formula extends Node {\n constructor (statements, constraints, initBindings, optional) {\n super()\n this.termType = Formula.termType\n this.statements = statements || []\n this.constraints = constraints || []\n this.initBindings = initBindings || []\n this.optional = optional || []\n }\n add (s, p, o, g) {\n return this.statements.push(new Statement(s, p, o, g))\n }\n addStatement (st) {\n return this.statements.push(st)\n }\n bnode (id) {\n return new BlankNode(id)\n }\n /**\n * Finds the types in the list which have no *stored* subtypes\n * These are a set of classes which provide by themselves complete\n * information -- the other classes are redundant for those who\n * know the class DAG.\n */\n bottomTypeURIs (types) {\n var bots\n var bottom\n var elt\n var i\n var k\n var len\n var ref\n var subs\n var v\n bots = []\n for (k in types) {\n if (!types.hasOwnProperty(k)) continue\n v = types[k]\n subs = this.each(void 0, this.sym('http://www.w3.org/2000/01/rdf-schema#subClassOf'), this.sym(k))\n bottom = true\n i = 0\n for (len = subs.length; i < len; i++) {\n elt = subs[i]\n ref = elt.uri\n if (ref in types) { // the subclass is one we know\n bottom = false\n break\n }\n }\n if (bottom) {\n bots[k] = v\n }\n }\n return bots\n }\n collection () {\n return new Collection()\n }\n each (s, p, o, g) {\n var elt, i, l, m, q\n var len, len1, len2, len3\n var results = []\n var sts = this.statementsMatching(s, p, o, g, false)\n if (s == null) {\n for (i = 0, len = sts.length; i < len; i++) {\n elt = sts[i]\n results.push(elt.subject)\n }\n } else if (p == null) {\n for (l = 0, len1 = sts.length; l < len1; l++) {\n elt = sts[l]\n results.push(elt.predicate)\n }\n } else if (o == null) {\n for (m = 0, len2 = sts.length; m < len2; m++) {\n elt = sts[m]\n results.push(elt.object)\n }\n } else if (g == null) {\n for (q = 0, len3 = sts.length; q < len3; q++) {\n elt = sts[q]\n results.push(elt.why)\n }\n }\n return results\n }\n equals (other) {\n if (!other) {\n return false\n }\n return this.hashString() === other.hashString()\n }\n /*\n For thisClass or any subclass, anything which has it is its type\n or is the object of something which has the type as its range, or subject\n of something which has the type as its domain\n We don't bother doing subproperty (yet?)as it doesn't seeem to be used much.\n Get all the Classes of which we can RDFS-infer the subject is a member\n @returns a hash of URIs\n */\n\n /**\n * For thisClass or any subclass, anything which has it is its type\n * or is the object of something which has the type as its range, or subject\n * of something which has the type as its domain\n * We don't bother doing subproperty (yet?)as it doesn't seeem to be used\n * much.\n * Get all the Classes of which we can RDFS-infer the subject is a member\n * @return a hash of URIs\n */\n findMembersNT (thisClass) {\n var i\n var l\n var len\n var len1\n var len2\n var len3\n var len4\n var m\n var members\n var pred\n var q\n var ref\n var ref1\n var ref2\n var ref3\n var ref4\n var ref5\n var seeds\n var st\n var t\n var u\n seeds = {}\n seeds[thisClass.toNT()] = true\n members = {}\n ref = this.transitiveClosure(seeds, this.sym('http://www.w3.org/2000/01/rdf-schema#subClassOf'), true)\n for (t in ref) {\n if (!ref.hasOwnProperty(t)) continue\n ref1 = this.statementsMatching(void 0,\n this.sym('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),\n this.fromNT(t))\n for (i = 0, len = ref1.length; i < len; i++) {\n st = ref1[i]\n members[st.subject.toNT()] = st\n }\n ref2 = this.each(void 0,\n this.sym('http://www.w3.org/2000/01/rdf-schema#domain'),\n this.fromNT(t))\n for (l = 0, len1 = ref2.length; l < len1; l++) {\n pred = ref2[l]\n ref3 = this.statementsMatching(void 0, pred)\n for (m = 0, len2 = ref3.length; m < len2; m++) {\n st = ref3[m]\n members[st.subject.toNT()] = st\n }\n }\n ref4 = this.each(void 0,\n this.sym('http://www.w3.org/2000/01/rdf-schema#range'),\n this.fromNT(t))\n for (q = 0, len3 = ref4.length; q < len3; q++) {\n pred = ref4[q]\n ref5 = this.statementsMatching(void 0, pred)\n for (u = 0, len4 = ref5.length; u < len4; u++) {\n st = ref5[u]\n members[st.object.toNT()] = st\n }\n }\n }\n return members\n }\n findMemberURIs (subject) {\n return this.NTtoURI(this.findMembersNT(subject))\n }\n /**\n * Get all the Classes of which we can RDFS-infer the subject is a superclass\n * Returns a hash table where key is NT of type and value is statement why we\n * think so.\n * Does NOT return terms, returns URI strings.\n * We use NT representations in this version because they handle blank nodes.\n */\n findSubClassesNT (subject) {\n var types = {}\n types[subject.toNT()] = true\n return this.transitiveClosure(types,\n this.sym('http://www.w3.org/2000/01/rdf-schema#subClassOf'), true)\n }\n /**\n * Get all the Classes of which we can RDFS-infer the subject is a subclass\n * Returns a hash table where key is NT of type and value is statement why we\n * think so.\n * Does NOT return terms, returns URI strings.\n * We use NT representations in this version because they handle blank nodes.\n */\n findSuperClassesNT (subject) {\n var types = {}\n types[subject.toNT()] = true\n return this.transitiveClosure(types,\n this.sym('http://www.w3.org/2000/01/rdf-schema#subClassOf'), false)\n }\n /**\n * Get all the Classes of which we can RDFS-infer the subject is a member\n * todo: This will loop is there is a class subclass loop (Sublass loops are\n * not illegal)\n * Returns a hash table where key is NT of type and value is statement why we\n * think so.\n * Does NOT return terms, returns URI strings.\n * We use NT representations in this version because they handle blank nodes.\n */\n findTypesNT (subject) {\n var domain\n var i\n var l\n var len\n var len1\n var len2\n var len3\n var m\n var q\n var range\n var rdftype\n var ref\n var ref1\n var ref2\n var ref3\n var st\n var types\n rdftype = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'\n types = []\n ref = this.statementsMatching(subject, void 0, void 0)\n for (i = 0, len = ref.length; i < len; i++) {\n st = ref[i]\n if (st.predicate.uri === rdftype) {\n types[st.object.toNT()] = st\n } else {\n ref1 = this.each(st.predicate, this.sym('http://www.w3.org/2000/01/rdf-schema#domain'))\n for (l = 0, len1 = ref1.length; l < len1; l++) {\n range = ref1[l]\n types[range.toNT()] = st\n }\n }\n }\n ref2 = this.statementsMatching(void 0, void 0, subject)\n for (m = 0, len2 = ref2.length; m < len2; m++) {\n st = ref2[m]\n ref3 = this.each(st.predicate, this.sym('http://www.w3.org/2000/01/rdf-schema#range'))\n for (q = 0, len3 = ref3.length; q < len3; q++) {\n domain = ref3[q]\n types[domain.toNT()] = st\n }\n }\n return this.transitiveClosure(types, this.sym('http://www.w3.org/2000/01/rdf-schema#subClassOf'), false)\n }\n findTypeURIs (subject) {\n return this.NTtoURI(this.findTypesNT(subject))\n }\n // Trace the statements which connect directly, or through bnodes\n // Returns an array of statements\n // doc param may be null to search all documents in store\n connectedStatements (subject, doc, excludePredicateURIs) {\n excludePredicateURIs = excludePredicateURIs || []\n var todo = [subject]\n var done = []\n var doneArcs = []\n var result = []\n var self = this\n var follow = function (x) {\n var queue = function (x) {\n if (x.termType === 'BlankNode' && !done[x.value]) {\n done[x.value] = true\n todo.push(x)\n }\n }\n var sts = self.statementsMatching(null, null, x, doc)\n .concat(self.statementsMatching(x, null, null, doc))\n sts = sts.filter(function (st) {\n if (excludePredicateURIs[st.predicate.uri]) return false\n var hash = st.toNT()\n if (doneArcs[hash]) return false\n doneArcs[hash] = true\n return true\n }\n )\n sts.forEach(function (st, i) {\n queue(st.subject)\n queue(st.object)\n })\n result = result.concat(sts)\n }\n while (todo.length) {\n follow(todo.shift())\n }\n // console.log('' + result.length + ' statements about ' + subject)\n return result\n }\n\n formula () {\n return new Formula()\n }\n /**\n * Transforms an NTriples string format into a Node.\n * The bnode bit should not be used on program-external values; designed\n * for internal work such as storing a bnode id in an HTML attribute.\n * This will only parse the strings generated by the vaious toNT() methods.\n */\n fromNT (str) {\n var dt, k, lang, x\n switch (str[0]) {\n case '<':\n return this.sym(str.slice(1, -1))\n case '\"':\n lang = void 0\n dt = void 0\n k = str.lastIndexOf('\"')\n if (k < str.length - 1) {\n if (str[k + 1] === '@') {\n lang = str.slice(k + 2)\n } else if (str.slice(k + 1, k + 3) === '^^') {\n dt = this.fromNT(str.slice(k + 3))\n } else {\n throw new Error(\"Can't convert string from NT: \" + str)\n }\n }\n str = str.slice(1, k)\n str = str.replace(/\\\\\"/g, '\"')\n str = str.replace(/\\\\n/g, '\\n')\n str = str.replace(/\\\\\\\\/g, '\\\\')\n return this.literal(str, lang, dt)\n case '_':\n return new BlankNode(str.slice(2))\n case '?':\n return new Variable(str.slice(1))\n }\n throw new Error(\"Can't convert from NT: \" + str)\n }\n\n holds (s, p, o, g) {\n var i\n if (arguments.length === 1) {\n if (!s) {\n return true\n }\n if (s instanceof Array) {\n for (i = 0; i < s.length; i++) {\n if (!this.holds(s[i])) {\n return false\n }\n }\n return true\n } else if (s instanceof Statement) {\n return this.holds(s.subject, s.predicate, s.object, s.why)\n } else if (s.statements) {\n return this.holds(s.statements)\n }\n }\n\n var st = this.anyStatementMatching(s, p, o, g)\n return st != null\n }\n holdsStatement (st) {\n return this.holds(st.subject, st.predicate, st.object, st.why)\n }\n list (values) {\n let collection = new Collection()\n values.forEach(function (val) {\n collection.append(val)\n })\n return collection\n }\n literal (val, lang, dt) {\n return new Literal('' + val, lang, dt)\n }\n /**\n * transform a collection of NTriple URIs into their URI strings\n * @param t some iterable colletion of NTriple URI strings\n * @return a collection of the URIs as strings\n * todo: explain why it is important to go through NT\n */\n NTtoURI (t) {\n var k, v\n var uris = {}\n for (k in t) {\n if (!t.hasOwnProperty(k)) continue\n v = t[k]\n if (k[0] === '<') {\n uris[k.slice(1, -1)] = v\n }\n }\n return uris\n }\n serialize (base, contentType, provenance) {\n var documentString\n var sts\n var sz\n sz = Serializer(this)\n sz.suggestNamespaces(this.namespaces)\n sz.setBase(base)\n if (provenance) {\n sts = this.statementsMatching(void 0, void 0, void 0, provenance)\n } else {\n sts = this.statements\n }\n switch (\n contentType != null ? contentType : 'text/n3') {\n case 'application/rdf+xml':\n documentString = sz.statementsToXML(sts)\n break\n case 'text/n3':\n case 'text/turtle':\n documentString = sz.statementsToN3(sts)\n break\n default:\n throw new Error('serialize: Content-type ' + contentType +\n ' not supported.')\n }\n return documentString\n }\n substitute (bindings) {\n var statementsCopy = this.statements.map(function (ea) {\n return ea.substitute(bindings)\n })\n console.log('Formula subs statmnts:' + statementsCopy)\n var y = new Formula()\n y.add(statementsCopy)\n console.log('indexed-form subs formula:' + y)\n return y\n }\n sym (uri, name) {\n if (name) {\n throw new Error('This feature (kb.sym with 2 args) is removed. Do not assume prefix mappings.')\n }\n return new NamedNode(uri)\n }\n the (s, p, o, g) {\n var x = this.any(s, p, o, g)\n if (x == null) {\n log.error('No value found for the() {' + s + ' ' + p + ' ' + o + '}.')\n }\n return x\n }\n /**\n * RDFS Inference\n * These are hand-written implementations of a backward-chaining reasoner\n * over the RDFS axioms.\n * @param seeds {Object} a hash of NTs of classes to start with\n * @param predicate The property to trace though\n * @param inverse trace inverse direction\n */\n transitiveClosure (seeds, predicate, inverse) {\n var elt, i, len, s, sups, t\n var agenda = {}\n Object.assign(agenda, seeds) // make a copy\n var done = {} // classes we have looked up\n while (true) {\n t = (function () {\n for (var p in agenda) {\n if (!agenda.hasOwnProperty(p)) continue\n return p\n }\n })()\n if (t == null) {\n return done\n }\n sups = inverse ? this.each(void 0, predicate, this.fromNT(t)) : this.each(this.fromNT(t), predicate)\n for (i = 0, len = sups.length; i < len; i++) {\n elt = sups[i]\n s = elt.toNT()\n if (s in done) {\n continue\n }\n if (s in agenda) {\n continue\n }\n agenda[s] = agenda[t]\n }\n done[t] = agenda[t]\n delete agenda[t]\n }\n }\n /**\n * Finds the types in the list which have no *stored* supertypes\n * We exclude the universal class, owl:Things and rdf:Resource, as it is\n * information-free.\n */\n topTypeURIs (types) {\n var i\n var j\n var k\n var len\n var n\n var ref\n var tops\n var v\n tops = []\n for (k in types) {\n if (!types.hasOwnProperty(k)) continue\n v = types[k]\n n = 0\n ref = this.each(this.sym(k), this.sym('http://www.w3.org/2000/01/rdf-schema#subClassOf'))\n for (i = 0, len = ref.length; i < len; i++) {\n j = ref[i]\n if (j.uri !== 'http://www.w3.org/2000/01/rdf-schema#Resource') {\n n++\n break\n }\n }\n if (!n) {\n tops[k] = v\n }\n }\n if (tops['http://www.w3.org/2000/01/rdf-schema#Resource']) {\n delete tops['http://www.w3.org/2000/01/rdf-schema#Resource']\n }\n if (tops['http://www.w3.org/2002/07/owl#Thing']) {\n delete tops['http://www.w3.org/2002/07/owl#Thing']\n }\n return tops\n }\n toString () {\n return '{' + this.statements.join('\\n') + '}'\n }\n whether (s, p, o, g) {\n return this.statementsMatching(s, p, o, g, false).length\n }\n}\nFormula.termType = 'Graph'\n\nFormula.prototype.classOrder = ClassOrder['Graph']\nFormula.prototype.isVar = 0\n\nFormula.prototype.ns = require('./namespace')\nFormula.prototype.variable = name => new Variable(name)\n\nmodule.exports = Formula\n\n\n\n// WEBPACK FOOTER //\n// ./src/formula.js","module.exports = parse\n\nconst BlankNode = require('./blank-node')\nconst jsonld = require('jsonld')\nconst Literal = require('./literal')\nconst N3 = require('n3') // @@ Goal: remove this dependency\nconst N3Parser = require('./n3parser')\nconst NamedNode = require('./named-node')\nconst parseRDFaDOM = require('./rdfaparser').parseRDFaDOM\nconst RDFParser = require('./rdfxmlparser')\nconst sparqlUpdateParser = require('./patch-parser')\nconst Util = require('./util')\n\n/**\n * Parse a string and put the result into the graph kb.\n * Normal method is sync.\n * Unfortunately jsdonld is currently written to need to be called async.\n * Hence the mess below with executeCallback.\n */\nfunction parse (str, kb, base, contentType, callback) {\n contentType = contentType || 'text/turtle'\n contentType = contentType.split(';')[0]\n try {\n if (contentType === 'text/n3' || contentType === 'text/turtle') {\n var p = N3Parser(kb, kb, base, base, null, null, '', null)\n p.loadBuf(str)\n executeCallback()\n } else if (contentType === 'application/rdf+xml') {\n var parser = new RDFParser(kb)\n parser.parse(Util.parseXML(str), base, kb.sym(base))\n executeCallback()\n } else if (contentType === 'application/xhtml+xml') {\n parseRDFaDOM(Util.parseXML(str, {contentType: 'application/xhtml+xml'}), kb, base)\n executeCallback()\n } else if (contentType === 'text/html') {\n parseRDFaDOM(Util.parseXML(str, {contentType: 'text/html'}), kb, base)\n executeCallback()\n } else if (contentType === 'application/sparql-update') { // @@ we handle a subset\n sparqlUpdateParser(str, kb, base)\n executeCallback()\n } else if (contentType === 'application/ld+json' ||\n contentType === 'application/nquads' ||\n contentType === 'application/n-quads') {\n var n3Parser = N3.Parser()\n var triples = []\n if (contentType === 'application/ld+json') {\n var jsonDocument\n try {\n jsonDocument = JSON.parse(str)\n } catch (parseErr) {\n return callback(parseErr, null)\n }\n jsonld.toRDF(jsonDocument,\n {format: 'application/nquads', base},\n nquadCallback)\n } else {\n nquadCallback(null, str)\n }\n } else {\n throw new Error(\"Don't know how to parse \" + contentType + ' yet')\n }\n } catch (e) {\n executeErrorCallback(e)\n }\n\n function executeCallback () {\n if (callback) {\n callback(null, kb)\n } else {\n return\n }\n }\n\n function executeErrorCallback (e) {\n if (contentType !== 'application/ld+json' ||\n contentType !== 'application/nquads' ||\n contentType !== 'application/n-quads') {\n if (callback) {\n callback(e, kb)\n } else {\n throw new Error('Error trying to parse <' + base + '> as ' +\n contentType + ':\\n' + e + ':\\n' + e.stack)\n }\n }\n }\n/*\n function setJsonLdBase (doc, base) {\n if (doc instanceof Array) {\n return\n }\n if (!('@context' in doc)) {\n doc['@context'] = {}\n }\n doc['@context']['@base'] = base\n }\n*/\n function nquadCallback (err, nquads) {\n if (err) {\n callback(err, kb)\n }\n try {\n n3Parser.parse(nquads, tripleCallback)\n } catch (err) {\n callback(err, kb)\n }\n }\n\n function tripleCallback (err, triple, prefixes) {\n if (err) {\n callback(err, kb)\n }\n if (triple) {\n triples.push(triple)\n } else {\n for (var i = 0; i < triples.length; i++) {\n addTriple(kb, triples[i])\n }\n callback(null, kb)\n }\n }\n\n function addTriple (kb, triple) {\n var subject = createTerm(triple.subject)\n var predicate = createTerm(triple.predicate)\n var object = createTerm(triple.object)\n var why = null\n if (triple.graph) {\n why = createTerm(triple.graph)\n }\n kb.add(subject, predicate, object, why)\n }\n\n function createTerm (termString) {\n var value\n if (N3.Util.isLiteral(termString)) {\n value = N3.Util.getLiteralValue(termString)\n var language = N3.Util.getLiteralLanguage(termString)\n var datatype = new NamedNode(N3.Util.getLiteralType(termString))\n return new Literal(value, language, datatype)\n } else if (N3.Util.isIRI(termString)) {\n return new NamedNode(termString)\n } else if (N3.Util.isBlank(termString)) {\n value = termString.substring(2, termString.length)\n return new BlankNode(value)\n } else {\n return null\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/parse.js","// Parse a simple SPARL-Update subset syntax for patches.\n//\n// This parses\n// WHERE {xxx} DELETE {yyy} INSERT DATA {zzz}\n// (not necessarily in that order)\n// as though it were the n3\n// <#query> patch:where {xxx}; patch:delete {yyy}; patch:insert {zzz}.\nmodule.exports = sparqlUpdateParser\n\nconst N3Parser = require('./n3parser')\nconst Namespace = require('./namespace')\n\nfunction sparqlUpdateParser (str, kb, base) {\n var i, j, k\n var keywords = [ 'INSERT', 'DELETE', 'WHERE' ]\n var SQNS = Namespace('http://www.w3.org/ns/pim/patch#')\n var p = N3Parser(kb, kb, base, base, null, null, '', null)\n var clauses = {}\n\n var badSyntax = function (uri, lines, str, i, why) {\n return ('Line ' + (lines + 1) + ' of <' + uri + '>: Bad syntax:\\n ' +\n why + '\\n at: \"' + str.slice(i, (i + 30)) + '\"')\n }\n\n // var check = function (next, last, message) {\n // if (next < 0) {\n // throw badSyntax(p._thisDoc, p.lines, str, j, last, message)\n // }\n // return next\n // }\n i = 0\n var query = kb.sym(base + '#query') // Invent a URI for the query\n clauses['query'] = query // A way of accessing it in its N3 model.\n\n while (true) {\n // console.log(\"A Now at i = \" + i)\n j = p.skipSpace(str, i)\n if (j < 0) {\n return clauses\n }\n // console.log(\"B After space at j= \" + j)\n if (str[j] === ';') {\n i = p.skipSpace(str, j + 1)\n if (i < 0) {\n return clauses // Allow end in a\n }\n j = i\n }\n var found = false\n for (k = 0; k < keywords.length; k++) {\n var key = keywords[k]\n if (str.slice(j, j + key.length) === key) {\n i = p.skipSpace(str, j + key.length)\n if (i < 0) {\n throw badSyntax(p._thisDoc, p.lines, str, j + key.length, 'found EOF, needed {...} after ' + key)\n }\n if (((key === 'INSERT') || (key === 'DELETE')) && str.slice(i, i + 4) === 'DATA') { // Some wanted 'DATA'. Whatever\n j = p.skipSpace(str, i + 4)\n if (j < 0) {\n throw badSyntax(p._thisDoc, p.lines, str, i + 4, 'needed {...} after INSERT DATA ' + key)\n }\n i = j\n }\n var res2 = []\n j = p.node(str, i, res2) // Parse all the complexity of the clause\n\n if (j < 0) {\n throw badSyntax(p._thisDoc, p.lines, str, i,\n 'bad syntax or EOF in {...} after ' + key)\n }\n clauses[key.toLowerCase()] = res2[0]\n kb.add(query, SQNS(key.toLowerCase()), res2[0]) // , kb.sym(base)\n // key is the keyword and res2 has the contents\n found = true\n i = j\n }\n }\n if (!found && str.slice(j, j + 7) === '@prefix') {\n i = p.directive(str, j)\n if (i < 0) {\n throw badSyntax(p._thisDoc, p.lines, str, i,\n 'bad syntax or EOF after @prefix ')\n }\n // console.log(\"P before dot i= \" + i)\n i = p.checkDot(str, i)\n // console.log(\"Q after dot i= \" + i)\n found = true\n }\n if (!found) {\n // console.log(\"Bad syntax \" + j)\n throw badSyntax(p._thisDoc, p.lines, str, j,\n \"Unknown syntax at start of statememt: '\" + str.slice(j).slice(0, 20) + \"'\")\n }\n } // while\n// return clauses\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/patch-parser.js","/*\n * Updates-Via\n */\nconst namedNode = require('./data-factory').namedNode\n\nclass UpdatesSocket {\n constructor (parent, via) {\n this.parent = parent\n this.via = via\n this.connected = false\n this.pending = {}\n this.subscribed = {}\n this.socket = {}\n try {\n this.socket = new WebSocket(via)\n this.socket.onopen = this.onOpen\n this.socket.onclose = this.onClose\n this.socket.onmessage = this.onMessage\n this.socket.onerror = this.onError\n } catch (error) {\n this.onError(error)\n }\n }\n _decode (q) {\n var elt\n var i\n var k\n var r\n var ref\n var ref1\n var v\n r = {}\n ref = (function () {\n var j, len, ref, results\n ref = q.split('&')\n results = []\n for (j = 0, len = ref.length; j < len; j++) {\n elt = ref[j]\n results.push(elt.split('='))\n }\n return results\n })()\n for (i in ref) {\n elt = ref[i]\n ref1 = [decodeURIComponent(elt[0]), decodeURIComponent(elt[1])]\n k = ref1[0]\n v = ref1[1]\n if (r[k] == null) {\n r[k] = []\n }\n r[k].push(v)\n }\n return r\n }\n _send (method, uri, data) {\n var base, message\n message = [method, uri, data].join(' ')\n return typeof (base = this.socket).send === 'function' ? base.send(message) : void 0\n }\n _subscribe (uri) {\n this._send('sub', uri, '')\n this.subscribed[uri] = true\n return this.subscribed[uri]\n }\n onClose (e) {\n var uri\n this.connected = false\n for (uri in this.subscribed) {\n this.pending[uri] = true\n }\n this.subscribed = {}\n return this.subscribed\n }\n onError (e) {\n throw new Error('onError' + e)\n }\n onMessage (e) {\n var base, message\n message = e.data.split(' ')\n if (message[0] === 'ping') {\n return typeof (base = this.socket).send === 'function' ? base.send('pong ' + message.slice(1).join(' ')) : void 0\n } else if (message[0] === 'pub') {\n return this.parent.onUpdate(message[1], this._decode(message[2]))\n }\n }\n onOpen (e) {\n var results, uri\n this.connected = true\n results = []\n for (uri in this.pending) {\n delete this.pending[uri]\n results.push(this._subscribe(uri))\n }\n return results\n }\n subscribe (uri) {\n if (this.connected) {\n return this._subscribe(uri)\n } else {\n this.pending[uri] = true\n return this.pending[uri]\n }\n }\n}\n\nclass UpdatesVia {\n constructor (fetcher) {\n this.fetcher = fetcher\n this.graph = {}\n this.via = {}\n this.fetcher.addCallback('headers', this.onHeaders)\n }\n onHeaders (d) {\n var etag, uri, via\n if (d.headers == null) {\n return true\n }\n if (typeof WebSocket === 'undefined' || WebSocket === null) {\n return true\n }\n etag = d.headers['etag']\n via = d.headers['updates-via']\n uri = d.uri\n if (etag && via) {\n this.graph[uri] = {\n etag: etag,\n via: via\n }\n this.register(via, uri)\n }\n return true\n }\n onUpdate (uri, d) {\n return this.fetcher.refresh(namedNode(uri))\n }\n register (via, uri) {\n if (this.via[via] == null) {\n this.via[via] = new UpdatesSocket(this, via)\n }\n return this.via[via].subscribe(uri)\n }\n}\n\nmodule.exports.UpdatesSocket = UpdatesSocket\nmodule.exports.UpdatesVia = UpdatesVia\n\n\n\n// WEBPACK FOOTER //\n// ./src/updates-via.js","const NamedNode = require('./named-node')\n\nclass XSD {}\n\nXSD.boolean = new NamedNode('http://www.w3.org/2001/XMLSchema#boolean')\nXSD.dateTime = new NamedNode('http://www.w3.org/2001/XMLSchema#dateTime')\nXSD.decimal = new NamedNode('http://www.w3.org/2001/XMLSchema#decimal')\nXSD.double = new NamedNode('http://www.w3.org/2001/XMLSchema#double')\nXSD.integer = new NamedNode('http://www.w3.org/2001/XMLSchema#integer')\nXSD.langString =\n new NamedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString')\nXSD.string = new NamedNode('http://www.w3.org/2001/XMLSchema#string')\n\nmodule.exports = XSD\n\n\n\n// WEBPACK FOOTER //\n// ./src/xsd.js","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/define-property.js\n// module id = 123\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/defineProperty.js\n// module id = 124\n// module chunks = 0","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_classof.js\n// module id = 125\n// module chunks = 0","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_html.js\n// module id = 126\n// module chunks = 0","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_ie8-dom-define.js\n// module id = 127\n// module chunks = 0","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_iobject.js\n// module id = 128\n// module chunks = 0","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_is-array-iter.js\n// module id = 129\n// module chunks = 0","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_iter-call.js\n// module id = 130\n// module chunks = 0","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_iter-define.js\n// module id = 131\n// module chunks = 0","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_iter-detect.js\n// module id = 132\n// module chunks = 0","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-gopd.js\n// module id = 133\n// module chunks = 0","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-gopn-ext.js\n// module id = 134\n// module chunks = 0","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-gopn.js\n// module id = 135\n// module chunks = 0","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-gpo.js\n// module id = 136\n// module chunks = 0","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-keys-internal.js\n// module id = 137\n// module chunks = 0","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-sap.js\n// module id = 138\n// module chunks = 0","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_perform.js\n// module id = 139\n// module chunks = 0","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_promise-resolve.js\n// module id = 140\n// module chunks = 0","module.exports = require('./_hide');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_redefine.js\n// module id = 141\n// module chunks = 0","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_species-constructor.js\n// module id = 142\n// module chunks = 0","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_task.js\n// module id = 143\n// module chunks = 0","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/core.get-iterator-method.js\n// module id = 144\n// module chunks = 0","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/web.dom.iterable.js\n// module id = 146\n// module chunks = 0","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE\n * @version 2.3.0\n */\n\n(function() {\n \"use strict\";\n function lib$es6$promise$utils$$objectOrFunction(x) {\n return typeof x === 'function' || (typeof x === 'object' && x !== null);\n }\n\n function lib$es6$promise$utils$$isFunction(x) {\n return typeof x === 'function';\n }\n\n function lib$es6$promise$utils$$isMaybeThenable(x) {\n return typeof x === 'object' && x !== null;\n }\n\n var lib$es6$promise$utils$$_isArray;\n if (!Array.isArray) {\n lib$es6$promise$utils$$_isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n } else {\n lib$es6$promise$utils$$_isArray = Array.isArray;\n }\n\n var lib$es6$promise$utils$$isArray = lib$es6$promise$utils$$_isArray;\n var lib$es6$promise$asap$$len = 0;\n var lib$es6$promise$asap$$toString = {}.toString;\n var lib$es6$promise$asap$$vertxNext;\n var lib$es6$promise$asap$$customSchedulerFn;\n\n var lib$es6$promise$asap$$asap = function asap(callback, arg) {\n lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len] = callback;\n lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len + 1] = arg;\n lib$es6$promise$asap$$len += 2;\n if (lib$es6$promise$asap$$len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (lib$es6$promise$asap$$customSchedulerFn) {\n lib$es6$promise$asap$$customSchedulerFn(lib$es6$promise$asap$$flush);\n } else {\n lib$es6$promise$asap$$scheduleFlush();\n }\n }\n }\n\n function lib$es6$promise$asap$$setScheduler(scheduleFn) {\n lib$es6$promise$asap$$customSchedulerFn = scheduleFn;\n }\n\n function lib$es6$promise$asap$$setAsap(asapFn) {\n lib$es6$promise$asap$$asap = asapFn;\n }\n\n var lib$es6$promise$asap$$browserWindow = (typeof window !== 'undefined') ? window : undefined;\n var lib$es6$promise$asap$$browserGlobal = lib$es6$promise$asap$$browserWindow || {};\n var lib$es6$promise$asap$$BrowserMutationObserver = lib$es6$promise$asap$$browserGlobal.MutationObserver || lib$es6$promise$asap$$browserGlobal.WebKitMutationObserver;\n var lib$es6$promise$asap$$isNode = typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n // test for web worker but not in IE10\n var lib$es6$promise$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' &&\n typeof importScripts !== 'undefined' &&\n typeof MessageChannel !== 'undefined';\n\n // node\n function lib$es6$promise$asap$$useNextTick() {\n var nextTick = process.nextTick;\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // setImmediate should be used instead instead\n var version = process.versions.node.match(/^(?:(\\d+)\\.)?(?:(\\d+)\\.)?(\\*|\\d+)$/);\n if (Array.isArray(version) && version[1] === '0' && version[2] === '10') {\n nextTick = setImmediate;\n }\n return function() {\n nextTick(lib$es6$promise$asap$$flush);\n };\n }\n\n // vertx\n function lib$es6$promise$asap$$useVertxTimer() {\n return function() {\n lib$es6$promise$asap$$vertxNext(lib$es6$promise$asap$$flush);\n };\n }\n\n function lib$es6$promise$asap$$useMutationObserver() {\n var iterations = 0;\n var observer = new lib$es6$promise$asap$$BrowserMutationObserver(lib$es6$promise$asap$$flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function() {\n node.data = (iterations = ++iterations % 2);\n };\n }\n\n // web worker\n function lib$es6$promise$asap$$useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = lib$es6$promise$asap$$flush;\n return function () {\n channel.port2.postMessage(0);\n };\n }\n\n function lib$es6$promise$asap$$useSetTimeout() {\n return function() {\n setTimeout(lib$es6$promise$asap$$flush, 1);\n };\n }\n\n var lib$es6$promise$asap$$queue = new Array(1000);\n function lib$es6$promise$asap$$flush() {\n for (var i = 0; i < lib$es6$promise$asap$$len; i+=2) {\n var callback = lib$es6$promise$asap$$queue[i];\n var arg = lib$es6$promise$asap$$queue[i+1];\n\n callback(arg);\n\n lib$es6$promise$asap$$queue[i] = undefined;\n lib$es6$promise$asap$$queue[i+1] = undefined;\n }\n\n lib$es6$promise$asap$$len = 0;\n }\n\n function lib$es6$promise$asap$$attemptVertex() {\n try {\n var r = require;\n var vertx = r('vertx');\n lib$es6$promise$asap$$vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return lib$es6$promise$asap$$useVertxTimer();\n } catch(e) {\n return lib$es6$promise$asap$$useSetTimeout();\n }\n }\n\n var lib$es6$promise$asap$$scheduleFlush;\n // Decide what async method to use to triggering processing of queued callbacks:\n if (lib$es6$promise$asap$$isNode) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useNextTick();\n } else if (lib$es6$promise$asap$$BrowserMutationObserver) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMutationObserver();\n } else if (lib$es6$promise$asap$$isWorker) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMessageChannel();\n } else if (lib$es6$promise$asap$$browserWindow === undefined && typeof require === 'function') {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$attemptVertex();\n } else {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useSetTimeout();\n }\n\n function lib$es6$promise$$internal$$noop() {}\n\n var lib$es6$promise$$internal$$PENDING = void 0;\n var lib$es6$promise$$internal$$FULFILLED = 1;\n var lib$es6$promise$$internal$$REJECTED = 2;\n\n var lib$es6$promise$$internal$$GET_THEN_ERROR = new lib$es6$promise$$internal$$ErrorObject();\n\n function lib$es6$promise$$internal$$selfFullfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n }\n\n function lib$es6$promise$$internal$$cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n }\n\n function lib$es6$promise$$internal$$getThen(promise) {\n try {\n return promise.then;\n } catch(error) {\n lib$es6$promise$$internal$$GET_THEN_ERROR.error = error;\n return lib$es6$promise$$internal$$GET_THEN_ERROR;\n }\n }\n\n function lib$es6$promise$$internal$$tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch(e) {\n return e;\n }\n }\n\n function lib$es6$promise$$internal$$handleForeignThenable(promise, thenable, then) {\n lib$es6$promise$asap$$asap(function(promise) {\n var sealed = false;\n var error = lib$es6$promise$$internal$$tryThen(then, thenable, function(value) {\n if (sealed) { return; }\n sealed = true;\n if (thenable !== value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n } else {\n lib$es6$promise$$internal$$fulfill(promise, value);\n }\n }, function(reason) {\n if (sealed) { return; }\n sealed = true;\n\n lib$es6$promise$$internal$$reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n lib$es6$promise$$internal$$reject(promise, error);\n }\n }, promise);\n }\n\n function lib$es6$promise$$internal$$handleOwnThenable(promise, thenable) {\n if (thenable._state === lib$es6$promise$$internal$$FULFILLED) {\n lib$es6$promise$$internal$$fulfill(promise, thenable._result);\n } else if (thenable._state === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, thenable._result);\n } else {\n lib$es6$promise$$internal$$subscribe(thenable, undefined, function(value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n }, function(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n });\n }\n }\n\n function lib$es6$promise$$internal$$handleMaybeThenable(promise, maybeThenable) {\n if (maybeThenable.constructor === promise.constructor) {\n lib$es6$promise$$internal$$handleOwnThenable(promise, maybeThenable);\n } else {\n var then = lib$es6$promise$$internal$$getThen(maybeThenable);\n\n if (then === lib$es6$promise$$internal$$GET_THEN_ERROR) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$GET_THEN_ERROR.error);\n } else if (then === undefined) {\n lib$es6$promise$$internal$$fulfill(promise, maybeThenable);\n } else if (lib$es6$promise$utils$$isFunction(then)) {\n lib$es6$promise$$internal$$handleForeignThenable(promise, maybeThenable, then);\n } else {\n lib$es6$promise$$internal$$fulfill(promise, maybeThenable);\n }\n }\n }\n\n function lib$es6$promise$$internal$$resolve(promise, value) {\n if (promise === value) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$selfFullfillment());\n } else if (lib$es6$promise$utils$$objectOrFunction(value)) {\n lib$es6$promise$$internal$$handleMaybeThenable(promise, value);\n } else {\n lib$es6$promise$$internal$$fulfill(promise, value);\n }\n }\n\n function lib$es6$promise$$internal$$publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n lib$es6$promise$$internal$$publish(promise);\n }\n\n function lib$es6$promise$$internal$$fulfill(promise, value) {\n if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; }\n\n promise._result = value;\n promise._state = lib$es6$promise$$internal$$FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, promise);\n }\n }\n\n function lib$es6$promise$$internal$$reject(promise, reason) {\n if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; }\n promise._state = lib$es6$promise$$internal$$REJECTED;\n promise._result = reason;\n\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publishRejection, promise);\n }\n\n function lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection) {\n var subscribers = parent._subscribers;\n var length = subscribers.length;\n\n parent._onerror = null;\n\n subscribers[length] = child;\n subscribers[length + lib$es6$promise$$internal$$FULFILLED] = onFulfillment;\n subscribers[length + lib$es6$promise$$internal$$REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, parent);\n }\n }\n\n function lib$es6$promise$$internal$$publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) { return; }\n\n var child, callback, detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n lib$es6$promise$$internal$$invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n }\n\n function lib$es6$promise$$internal$$ErrorObject() {\n this.error = null;\n }\n\n var lib$es6$promise$$internal$$TRY_CATCH_ERROR = new lib$es6$promise$$internal$$ErrorObject();\n\n function lib$es6$promise$$internal$$tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch(e) {\n lib$es6$promise$$internal$$TRY_CATCH_ERROR.error = e;\n return lib$es6$promise$$internal$$TRY_CATCH_ERROR;\n }\n }\n\n function lib$es6$promise$$internal$$invokeCallback(settled, promise, callback, detail) {\n var hasCallback = lib$es6$promise$utils$$isFunction(callback),\n value, error, succeeded, failed;\n\n if (hasCallback) {\n value = lib$es6$promise$$internal$$tryCatch(callback, detail);\n\n if (value === lib$es6$promise$$internal$$TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$cannotReturnOwn());\n return;\n }\n\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== lib$es6$promise$$internal$$PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n lib$es6$promise$$internal$$resolve(promise, value);\n } else if (failed) {\n lib$es6$promise$$internal$$reject(promise, error);\n } else if (settled === lib$es6$promise$$internal$$FULFILLED) {\n lib$es6$promise$$internal$$fulfill(promise, value);\n } else if (settled === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, value);\n }\n }\n\n function lib$es6$promise$$internal$$initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value){\n lib$es6$promise$$internal$$resolve(promise, value);\n }, function rejectPromise(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n });\n } catch(e) {\n lib$es6$promise$$internal$$reject(promise, e);\n }\n }\n\n function lib$es6$promise$enumerator$$Enumerator(Constructor, input) {\n var enumerator = this;\n\n enumerator._instanceConstructor = Constructor;\n enumerator.promise = new Constructor(lib$es6$promise$$internal$$noop);\n\n if (enumerator._validateInput(input)) {\n enumerator._input = input;\n enumerator.length = input.length;\n enumerator._remaining = input.length;\n\n enumerator._init();\n\n if (enumerator.length === 0) {\n lib$es6$promise$$internal$$fulfill(enumerator.promise, enumerator._result);\n } else {\n enumerator.length = enumerator.length || 0;\n enumerator._enumerate();\n if (enumerator._remaining === 0) {\n lib$es6$promise$$internal$$fulfill(enumerator.promise, enumerator._result);\n }\n }\n } else {\n lib$es6$promise$$internal$$reject(enumerator.promise, enumerator._validationError());\n }\n }\n\n lib$es6$promise$enumerator$$Enumerator.prototype._validateInput = function(input) {\n return lib$es6$promise$utils$$isArray(input);\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._validationError = function() {\n return new Error('Array Methods must be provided an Array');\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._init = function() {\n this._result = new Array(this.length);\n };\n\n var lib$es6$promise$enumerator$$default = lib$es6$promise$enumerator$$Enumerator;\n\n lib$es6$promise$enumerator$$Enumerator.prototype._enumerate = function() {\n var enumerator = this;\n\n var length = enumerator.length;\n var promise = enumerator.promise;\n var input = enumerator._input;\n\n for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {\n enumerator._eachEntry(input[i], i);\n }\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._eachEntry = function(entry, i) {\n var enumerator = this;\n var c = enumerator._instanceConstructor;\n\n if (lib$es6$promise$utils$$isMaybeThenable(entry)) {\n if (entry.constructor === c && entry._state !== lib$es6$promise$$internal$$PENDING) {\n entry._onerror = null;\n enumerator._settledAt(entry._state, i, entry._result);\n } else {\n enumerator._willSettleAt(c.resolve(entry), i);\n }\n } else {\n enumerator._remaining--;\n enumerator._result[i] = entry;\n }\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._settledAt = function(state, i, value) {\n var enumerator = this;\n var promise = enumerator.promise;\n\n if (promise._state === lib$es6$promise$$internal$$PENDING) {\n enumerator._remaining--;\n\n if (state === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, value);\n } else {\n enumerator._result[i] = value;\n }\n }\n\n if (enumerator._remaining === 0) {\n lib$es6$promise$$internal$$fulfill(promise, enumerator._result);\n }\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._willSettleAt = function(promise, i) {\n var enumerator = this;\n\n lib$es6$promise$$internal$$subscribe(promise, undefined, function(value) {\n enumerator._settledAt(lib$es6$promise$$internal$$FULFILLED, i, value);\n }, function(reason) {\n enumerator._settledAt(lib$es6$promise$$internal$$REJECTED, i, reason);\n });\n };\n function lib$es6$promise$promise$all$$all(entries) {\n return new lib$es6$promise$enumerator$$default(this, entries).promise;\n }\n var lib$es6$promise$promise$all$$default = lib$es6$promise$promise$all$$all;\n function lib$es6$promise$promise$race$$race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n\n if (!lib$es6$promise$utils$$isArray(entries)) {\n lib$es6$promise$$internal$$reject(promise, new TypeError('You must pass an array to race.'));\n return promise;\n }\n\n var length = entries.length;\n\n function onFulfillment(value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n }\n\n function onRejection(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n }\n\n for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {\n lib$es6$promise$$internal$$subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection);\n }\n\n return promise;\n }\n var lib$es6$promise$promise$race$$default = lib$es6$promise$promise$race$$race;\n function lib$es6$promise$promise$resolve$$resolve(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$resolve(promise, object);\n return promise;\n }\n var lib$es6$promise$promise$resolve$$default = lib$es6$promise$promise$resolve$$resolve;\n function lib$es6$promise$promise$reject$$reject(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$reject(promise, reason);\n return promise;\n }\n var lib$es6$promise$promise$reject$$default = lib$es6$promise$promise$reject$$reject;\n\n var lib$es6$promise$promise$$counter = 0;\n\n function lib$es6$promise$promise$$needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n }\n\n function lib$es6$promise$promise$$needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n }\n\n var lib$es6$promise$promise$$default = lib$es6$promise$promise$$Promise;\n /**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n var promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n var xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n */\n function lib$es6$promise$promise$$Promise(resolver) {\n this._id = lib$es6$promise$promise$$counter++;\n this._state = undefined;\n this._result = undefined;\n this._subscribers = [];\n\n if (lib$es6$promise$$internal$$noop !== resolver) {\n if (!lib$es6$promise$utils$$isFunction(resolver)) {\n lib$es6$promise$promise$$needsResolver();\n }\n\n if (!(this instanceof lib$es6$promise$promise$$Promise)) {\n lib$es6$promise$promise$$needsNew();\n }\n\n lib$es6$promise$$internal$$initializePromise(this, resolver);\n }\n }\n\n lib$es6$promise$promise$$Promise.all = lib$es6$promise$promise$all$$default;\n lib$es6$promise$promise$$Promise.race = lib$es6$promise$promise$race$$default;\n lib$es6$promise$promise$$Promise.resolve = lib$es6$promise$promise$resolve$$default;\n lib$es6$promise$promise$$Promise.reject = lib$es6$promise$promise$reject$$default;\n lib$es6$promise$promise$$Promise._setScheduler = lib$es6$promise$asap$$setScheduler;\n lib$es6$promise$promise$$Promise._setAsap = lib$es6$promise$asap$$setAsap;\n lib$es6$promise$promise$$Promise._asap = lib$es6$promise$asap$$asap;\n\n lib$es6$promise$promise$$Promise.prototype = {\n constructor: lib$es6$promise$promise$$Promise,\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n\n Chaining\n --------\n\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n\n Assimilation\n ------------\n\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n\n If the assimliated promise rejects, then the downstream promise will also reject.\n\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n\n Simple Example\n --------------\n\n Synchronous Example\n\n ```javascript\n var result;\n\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n\n Errback Example\n\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n\n Promise Example;\n\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n\n Advanced Example\n --------------\n\n Synchronous Example\n\n ```javascript\n var author, books;\n\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n\n Errback Example\n\n ```js\n\n function foundBooks(books) {\n\n }\n\n function failure(reason) {\n\n }\n\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n\n Promise Example;\n\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n then: function(onFulfillment, onRejection) {\n var parent = this;\n var state = parent._state;\n\n if (state === lib$es6$promise$$internal$$FULFILLED && !onFulfillment || state === lib$es6$promise$$internal$$REJECTED && !onRejection) {\n return this;\n }\n\n var child = new this.constructor(lib$es6$promise$$internal$$noop);\n var result = parent._result;\n\n if (state) {\n var callback = arguments[state - 1];\n lib$es6$promise$asap$$asap(function(){\n lib$es6$promise$$internal$$invokeCallback(state, child, callback, result);\n });\n } else {\n lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n },\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n 'catch': function(onRejection) {\n return this.then(null, onRejection);\n }\n };\n function lib$es6$promise$polyfill$$polyfill() {\n var local;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P && Object.prototype.toString.call(P.resolve()) === '[object Promise]' && !P.cast) {\n return;\n }\n\n local.Promise = lib$es6$promise$promise$$default;\n }\n var lib$es6$promise$polyfill$$default = lib$es6$promise$polyfill$$polyfill;\n\n var lib$es6$promise$umd$$ES6Promise = {\n 'Promise': lib$es6$promise$promise$$default,\n 'polyfill': lib$es6$promise$polyfill$$default\n };\n\n /* global define:true module:true window: true */\n if (typeof define === 'function' && define['amd']) {\n define(function() { return lib$es6$promise$umd$$ES6Promise; });\n } else if (typeof module !== 'undefined' && module['exports']) {\n module['exports'] = lib$es6$promise$umd$$ES6Promise;\n } else if (typeof this !== 'undefined') {\n this['ES6Promise'] = lib$es6$promise$umd$$ES6Promise;\n }\n\n lib$es6$promise$polyfill$$default();\n}).call(this);\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/es6-promise/dist/es6-promise.js\n// module id = 147\n// module chunks = 0","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/isarray/index.js\n// module id = 148\n// module chunks = 0","/**\n * A JavaScript implementation of the JSON-LD API.\n *\n * @author Dave Longley\n *\n * @license BSD 3-Clause License\n * Copyright (c) 2011-2015 Digital Bazaar, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n *\n * Neither the name of the Digital Bazaar, Inc. nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n * IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\n * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\n * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n(function() {\n\n// determine if in-browser or using node.js\nvar _nodejs = (\n typeof process !== 'undefined' && process.versions && process.versions.node);\nvar _browser = !_nodejs &&\n (typeof window !== 'undefined' || typeof self !== 'undefined');\nif(_browser) {\n if(typeof global === 'undefined') {\n if(typeof window !== 'undefined') {\n global = window;\n } else if(typeof self !== 'undefined') {\n global = self;\n } else if(typeof $ !== 'undefined') {\n global = $;\n }\n }\n}\n\n// attaches jsonld API to the given object\nvar wrapper = function(jsonld) {\n\n/* Core API */\n\n/**\n * Performs JSON-LD compaction.\n *\n * @param input the JSON-LD input to compact.\n * @param ctx the context to compact with.\n * @param [options] options to use:\n * [base] the base IRI to use.\n * [compactArrays] true to compact arrays to single values when\n * appropriate, false not to (default: true).\n * [graph] true to always output a top-level graph (default: false).\n * [expandContext] a context to expand with.\n * [skipExpansion] true to assume the input is expanded and skip\n * expansion, false not to, defaults to false.\n * [documentLoader(url, callback(err, remoteDoc))] the document loader.\n * @param callback(err, compacted, ctx) called once the operation completes.\n */\njsonld.compact = function(input, ctx, options, callback) {\n if(arguments.length < 2) {\n return jsonld.nextTick(function() {\n callback(new TypeError('Could not compact, too few arguments.'));\n });\n }\n\n // get arguments\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n if(ctx === null) {\n return jsonld.nextTick(function() {\n callback(new JsonLdError(\n 'The compaction context must not be null.',\n 'jsonld.CompactError', {code: 'invalid local context'}));\n });\n }\n\n // nothing to compact\n if(input === null) {\n return jsonld.nextTick(function() {\n callback(null, null);\n });\n }\n\n // set default options\n if(!('base' in options)) {\n options.base = (typeof input === 'string') ? input : '';\n }\n if(!('compactArrays' in options)) {\n options.compactArrays = true;\n }\n if(!('graph' in options)) {\n options.graph = false;\n }\n if(!('skipExpansion' in options)) {\n options.skipExpansion = false;\n }\n if(!('documentLoader' in options)) {\n options.documentLoader = jsonld.loadDocument;\n }\n if(!('link' in options)) {\n options.link = false;\n }\n if(options.link) {\n // force skip expansion when linking, \"link\" is not part of the public\n // API, it should only be called from framing\n options.skipExpansion = true;\n }\n\n var expand = function(input, options, callback) {\n if(options.skipExpansion) {\n return jsonld.nextTick(function() {\n callback(null, input);\n });\n }\n jsonld.expand(input, options, callback);\n };\n\n // expand input then do compaction\n expand(input, options, function(err, expanded) {\n if(err) {\n return callback(new JsonLdError(\n 'Could not expand input before compaction.',\n 'jsonld.CompactError', {cause: err}));\n }\n\n // process context\n var activeCtx = _getInitialContext(options);\n jsonld.processContext(activeCtx, ctx, options, function(err, activeCtx) {\n if(err) {\n return callback(new JsonLdError(\n 'Could not process context before compaction.',\n 'jsonld.CompactError', {cause: err}));\n }\n\n var compacted;\n try {\n // do compaction\n compacted = new Processor().compact(activeCtx, null, expanded, options);\n } catch(ex) {\n return callback(ex);\n }\n\n cleanup(null, compacted, activeCtx, options);\n });\n });\n\n // performs clean up after compaction\n function cleanup(err, compacted, activeCtx, options) {\n if(err) {\n return callback(err);\n }\n\n if(options.compactArrays && !options.graph && _isArray(compacted)) {\n if(compacted.length === 1) {\n // simplify to a single item\n compacted = compacted[0];\n } else if(compacted.length === 0) {\n // simplify to an empty object\n compacted = {};\n }\n } else if(options.graph && _isObject(compacted)) {\n // always use array if graph option is on\n compacted = [compacted];\n }\n\n // follow @context key\n if(_isObject(ctx) && '@context' in ctx) {\n ctx = ctx['@context'];\n }\n\n // build output context\n ctx = _clone(ctx);\n if(!_isArray(ctx)) {\n ctx = [ctx];\n }\n // remove empty contexts\n var tmp = ctx;\n ctx = [];\n for(var i = 0; i < tmp.length; ++i) {\n if(!_isObject(tmp[i]) || Object.keys(tmp[i]).length > 0) {\n ctx.push(tmp[i]);\n }\n }\n\n // remove array if only one context\n var hasContext = (ctx.length > 0);\n if(ctx.length === 1) {\n ctx = ctx[0];\n }\n\n // add context and/or @graph\n if(_isArray(compacted)) {\n // use '@graph' keyword\n var kwgraph = _compactIri(activeCtx, '@graph');\n var graph = compacted;\n compacted = {};\n if(hasContext) {\n compacted['@context'] = ctx;\n }\n compacted[kwgraph] = graph;\n } else if(_isObject(compacted) && hasContext) {\n // reorder keys so @context is first\n var graph = compacted;\n compacted = {'@context': ctx};\n for(var key in graph) {\n compacted[key] = graph[key];\n }\n }\n\n callback(null, compacted, activeCtx);\n }\n};\n\n/**\n * Performs JSON-LD expansion.\n *\n * @param input the JSON-LD input to expand.\n * @param [options] the options to use:\n * [base] the base IRI to use.\n * [expandContext] a context to expand with.\n * [keepFreeFloatingNodes] true to keep free-floating nodes,\n * false not to, defaults to false.\n * [documentLoader(url, callback(err, remoteDoc))] the document loader.\n * @param callback(err, expanded) called once the operation completes.\n */\njsonld.expand = function(input, options, callback) {\n if(arguments.length < 1) {\n return jsonld.nextTick(function() {\n callback(new TypeError('Could not expand, too few arguments.'));\n });\n }\n\n // get arguments\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n // set default options\n if(!('documentLoader' in options)) {\n options.documentLoader = jsonld.loadDocument;\n }\n if(!('keepFreeFloatingNodes' in options)) {\n options.keepFreeFloatingNodes = false;\n }\n\n jsonld.nextTick(function() {\n // if input is a string, attempt to dereference remote document\n if(typeof input === 'string') {\n var done = function(err, remoteDoc) {\n if(err) {\n return callback(err);\n }\n try {\n if(!remoteDoc.document) {\n throw new JsonLdError(\n 'No remote document found at the given URL.',\n 'jsonld.NullRemoteDocument');\n }\n if(typeof remoteDoc.document === 'string') {\n remoteDoc.document = JSON.parse(remoteDoc.document);\n }\n } catch(ex) {\n return callback(new JsonLdError(\n 'Could not retrieve a JSON-LD document from the URL. URL ' +\n 'dereferencing not implemented.', 'jsonld.LoadDocumentError', {\n code: 'loading document failed',\n cause: ex,\n remoteDoc: remoteDoc\n }));\n }\n expand(remoteDoc);\n };\n var promise = options.documentLoader(input, done);\n if(promise && 'then' in promise) {\n promise.then(done.bind(null, null), done);\n }\n return;\n }\n // nothing to load\n expand({contextUrl: null, documentUrl: null, document: input});\n });\n\n function expand(remoteDoc) {\n // set default base\n if(!('base' in options)) {\n options.base = remoteDoc.documentUrl || '';\n }\n // build meta-object and retrieve all @context URLs\n var input = {\n document: _clone(remoteDoc.document),\n remoteContext: {'@context': remoteDoc.contextUrl}\n };\n if('expandContext' in options) {\n var expandContext = _clone(options.expandContext);\n if(typeof expandContext === 'object' && '@context' in expandContext) {\n input.expandContext = expandContext;\n } else {\n input.expandContext = {'@context': expandContext};\n }\n }\n _retrieveContextUrls(input, options, function(err, input) {\n if(err) {\n return callback(err);\n }\n\n var expanded;\n try {\n var processor = new Processor();\n var activeCtx = _getInitialContext(options);\n var document = input.document;\n var remoteContext = input.remoteContext['@context'];\n\n // process optional expandContext\n if(input.expandContext) {\n activeCtx = processor.processContext(\n activeCtx, input.expandContext['@context'], options);\n }\n\n // process remote context from HTTP Link Header\n if(remoteContext) {\n activeCtx = processor.processContext(\n activeCtx, remoteContext, options);\n }\n\n // expand document\n expanded = processor.expand(\n activeCtx, null, document, options, false);\n\n // optimize away @graph with no other properties\n if(_isObject(expanded) && ('@graph' in expanded) &&\n Object.keys(expanded).length === 1) {\n expanded = expanded['@graph'];\n } else if(expanded === null) {\n expanded = [];\n }\n\n // normalize to an array\n if(!_isArray(expanded)) {\n expanded = [expanded];\n }\n } catch(ex) {\n return callback(ex);\n }\n callback(null, expanded);\n });\n }\n};\n\n/**\n * Performs JSON-LD flattening.\n *\n * @param input the JSON-LD to flatten.\n * @param ctx the context to use to compact the flattened output, or null.\n * @param [options] the options to use:\n * [base] the base IRI to use.\n * [expandContext] a context to expand with.\n * [documentLoader(url, callback(err, remoteDoc))] the document loader.\n * @param callback(err, flattened) called once the operation completes.\n */\njsonld.flatten = function(input, ctx, options, callback) {\n if(arguments.length < 1) {\n return jsonld.nextTick(function() {\n callback(new TypeError('Could not flatten, too few arguments.'));\n });\n }\n\n // get arguments\n if(typeof options === 'function') {\n callback = options;\n options = {};\n } else if(typeof ctx === 'function') {\n callback = ctx;\n ctx = null;\n options = {};\n }\n options = options || {};\n\n // set default options\n if(!('base' in options)) {\n options.base = (typeof input === 'string') ? input : '';\n }\n if(!('documentLoader' in options)) {\n options.documentLoader = jsonld.loadDocument;\n }\n\n // expand input\n jsonld.expand(input, options, function(err, _input) {\n if(err) {\n return callback(new JsonLdError(\n 'Could not expand input before flattening.',\n 'jsonld.FlattenError', {cause: err}));\n }\n\n var flattened;\n try {\n // do flattening\n flattened = new Processor().flatten(_input);\n } catch(ex) {\n return callback(ex);\n }\n\n if(ctx === null) {\n return callback(null, flattened);\n }\n\n // compact result (force @graph option to true, skip expansion)\n options.graph = true;\n options.skipExpansion = true;\n jsonld.compact(flattened, ctx, options, function(err, compacted) {\n if(err) {\n return callback(new JsonLdError(\n 'Could not compact flattened output.',\n 'jsonld.FlattenError', {cause: err}));\n }\n callback(null, compacted);\n });\n });\n};\n\n/**\n * Performs JSON-LD framing.\n *\n * @param input the JSON-LD input to frame.\n * @param frame the JSON-LD frame to use.\n * @param [options] the framing options.\n * [base] the base IRI to use.\n * [expandContext] a context to expand with.\n * [embed] default @embed flag: '@last', '@always', '@never', '@link'\n * (default: '@last').\n * [explicit] default @explicit flag (default: false).\n * [requireAll] default @requireAll flag (default: true).\n * [omitDefault] default @omitDefault flag (default: false).\n * [documentLoader(url, callback(err, remoteDoc))] the document loader.\n * @param callback(err, framed) called once the operation completes.\n */\njsonld.frame = function(input, frame, options, callback) {\n if(arguments.length < 2) {\n return jsonld.nextTick(function() {\n callback(new TypeError('Could not frame, too few arguments.'));\n });\n }\n\n // get arguments\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n // set default options\n if(!('base' in options)) {\n options.base = (typeof input === 'string') ? input : '';\n }\n if(!('documentLoader' in options)) {\n options.documentLoader = jsonld.loadDocument;\n }\n if(!('embed' in options)) {\n options.embed = '@last';\n }\n options.explicit = options.explicit || false;\n if(!('requireAll' in options)) {\n options.requireAll = true;\n }\n options.omitDefault = options.omitDefault || false;\n\n jsonld.nextTick(function() {\n // if frame is a string, attempt to dereference remote document\n if(typeof frame === 'string') {\n var done = function(err, remoteDoc) {\n if(err) {\n return callback(err);\n }\n try {\n if(!remoteDoc.document) {\n throw new JsonLdError(\n 'No remote document found at the given URL.',\n 'jsonld.NullRemoteDocument');\n }\n if(typeof remoteDoc.document === 'string') {\n remoteDoc.document = JSON.parse(remoteDoc.document);\n }\n } catch(ex) {\n return callback(new JsonLdError(\n 'Could not retrieve a JSON-LD document from the URL. URL ' +\n 'dereferencing not implemented.', 'jsonld.LoadDocumentError', {\n code: 'loading document failed',\n cause: ex,\n remoteDoc: remoteDoc\n }));\n }\n doFrame(remoteDoc);\n };\n var promise = options.documentLoader(frame, done);\n if(promise && 'then' in promise) {\n promise.then(done.bind(null, null), done);\n }\n return;\n }\n // nothing to load\n doFrame({contextUrl: null, documentUrl: null, document: frame});\n });\n\n function doFrame(remoteFrame) {\n // preserve frame context and add any Link header context\n var frame = remoteFrame.document;\n var ctx;\n if(frame) {\n ctx = frame['@context'];\n if(remoteFrame.contextUrl) {\n if(!ctx) {\n ctx = remoteFrame.contextUrl;\n } else if(_isArray(ctx)) {\n ctx.push(remoteFrame.contextUrl);\n } else {\n ctx = [ctx, remoteFrame.contextUrl];\n }\n frame['@context'] = ctx;\n } else {\n ctx = ctx || {};\n }\n } else {\n ctx = {};\n }\n\n // expand input\n jsonld.expand(input, options, function(err, expanded) {\n if(err) {\n return callback(new JsonLdError(\n 'Could not expand input before framing.',\n 'jsonld.FrameError', {cause: err}));\n }\n\n // expand frame\n var opts = _clone(options);\n opts.isFrame = true;\n opts.keepFreeFloatingNodes = true;\n jsonld.expand(frame, opts, function(err, expandedFrame) {\n if(err) {\n return callback(new JsonLdError(\n 'Could not expand frame before framing.',\n 'jsonld.FrameError', {cause: err}));\n }\n\n var framed;\n try {\n // do framing\n framed = new Processor().frame(expanded, expandedFrame, opts);\n } catch(ex) {\n return callback(ex);\n }\n\n // compact result (force @graph option to true, skip expansion,\n // check for linked embeds)\n opts.graph = true;\n opts.skipExpansion = true;\n opts.link = {};\n jsonld.compact(framed, ctx, opts, function(err, compacted, ctx) {\n if(err) {\n return callback(new JsonLdError(\n 'Could not compact framed output.',\n 'jsonld.FrameError', {cause: err}));\n }\n // get graph alias\n var graph = _compactIri(ctx, '@graph');\n // remove @preserve from results\n opts.link = {};\n compacted[graph] = _removePreserve(ctx, compacted[graph], opts);\n callback(null, compacted);\n });\n });\n });\n }\n};\n\n/**\n * **Experimental**\n *\n * Links a JSON-LD document's nodes in memory.\n *\n * @param input the JSON-LD document to link.\n * @param ctx the JSON-LD context to apply.\n * @param [options] the options to use:\n * [base] the base IRI to use.\n * [expandContext] a context to expand with.\n * [documentLoader(url, callback(err, remoteDoc))] the document loader.\n * @param callback(err, linked) called once the operation completes.\n */\njsonld.link = function(input, ctx, options, callback) {\n // API matches running frame with a wildcard frame and embed: '@link'\n // get arguments\n var frame = {};\n if(ctx) {\n frame['@context'] = ctx;\n }\n frame['@embed'] = '@link';\n jsonld.frame(input, frame, options, callback);\n};\n\n/**\n * **Deprecated**\n *\n * Performs JSON-LD objectification.\n *\n * @param input the JSON-LD document to objectify.\n * @param ctx the JSON-LD context to apply.\n * @param [options] the options to use:\n * [base] the base IRI to use.\n * [expandContext] a context to expand with.\n * [documentLoader(url, callback(err, remoteDoc))] the document loader.\n * @param callback(err, linked) called once the operation completes.\n */\njsonld.objectify = function(input, ctx, options, callback) {\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n // set default options\n if(!('base' in options)) {\n options.base = (typeof input === 'string') ? input : '';\n }\n if(!('documentLoader' in options)) {\n options.documentLoader = jsonld.loadDocument;\n }\n\n // expand input\n jsonld.expand(input, options, function(err, _input) {\n if(err) {\n return callback(new JsonLdError(\n 'Could not expand input before linking.',\n 'jsonld.LinkError', {cause: err}));\n }\n\n var flattened;\n try {\n // flatten the graph\n flattened = new Processor().flatten(_input);\n } catch(ex) {\n return callback(ex);\n }\n\n // compact result (force @graph option to true, skip expansion)\n options.graph = true;\n options.skipExpansion = true;\n jsonld.compact(flattened, ctx, options, function(err, compacted, ctx) {\n if(err) {\n return callback(new JsonLdError(\n 'Could not compact flattened output before linking.',\n 'jsonld.LinkError', {cause: err}));\n }\n // get graph alias\n var graph = _compactIri(ctx, '@graph');\n var top = compacted[graph][0];\n\n var recurse = function(subject) {\n // can't replace just a string\n if(!_isObject(subject) && !_isArray(subject)) {\n return;\n }\n\n // bottom out recursion on re-visit\n if(_isObject(subject)) {\n if(recurse.visited[subject['@id']]) {\n return;\n }\n recurse.visited[subject['@id']] = true;\n }\n\n // each array element *or* object key\n for(var k in subject) {\n var obj = subject[k];\n var isid = (jsonld.getContextValue(ctx, k, '@type') === '@id');\n\n // can't replace a non-object or non-array unless it's an @id\n if(!_isArray(obj) && !_isObject(obj) && !isid) {\n continue;\n }\n\n if(_isString(obj) && isid) {\n subject[k] = obj = top[obj];\n recurse(obj);\n } else if(_isArray(obj)) {\n for(var i = 0; i < obj.length; ++i) {\n if(_isString(obj[i]) && isid) {\n obj[i] = top[obj[i]];\n } else if(_isObject(obj[i]) && '@id' in obj[i]) {\n obj[i] = top[obj[i]['@id']];\n }\n recurse(obj[i]);\n }\n } else if(_isObject(obj)) {\n var sid = obj['@id'];\n subject[k] = obj = top[sid];\n recurse(obj);\n }\n }\n };\n recurse.visited = {};\n recurse(top);\n\n compacted.of_type = {};\n for(var s in top) {\n if(!('@type' in top[s])) {\n continue;\n }\n var types = top[s]['@type'];\n if(!_isArray(types)) {\n types = [types];\n }\n for(var t = 0; t < types.length; ++t) {\n if(!(types[t] in compacted.of_type)) {\n compacted.of_type[types[t]] = [];\n }\n compacted.of_type[types[t]].push(top[s]);\n }\n }\n callback(null, compacted);\n });\n });\n};\n\n/**\n * Performs RDF dataset normalization on the given input. The input is JSON-LD\n * unless the 'inputFormat' option is used. The output is an RDF dataset\n * unless the 'format' option is used.\n *\n * @param input the input to normalize as JSON-LD or as a format specified by\n * the 'inputFormat' option.\n * @param [options] the options to use:\n * [algorithm] the normalization algorithm to use, `URDNA2015` or\n * `URGNA2012` (default: `URGNA2012`).\n * [base] the base IRI to use.\n * [expandContext] a context to expand with.\n * [inputFormat] the format if input is not JSON-LD:\n * 'application/nquads' for N-Quads.\n * [format] the format if output is a string:\n * 'application/nquads' for N-Quads.\n * [documentLoader(url, callback(err, remoteDoc))] the document loader.\n * @param callback(err, normalized) called once the operation completes.\n */\njsonld.normalize = function(input, options, callback) {\n if(arguments.length < 1) {\n return jsonld.nextTick(function() {\n callback(new TypeError('Could not normalize, too few arguments.'));\n });\n }\n\n // get arguments\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n // set default options\n if(!('algorithm' in options)) {\n options.algorithm = 'URGNA2012';\n }\n if(!('base' in options)) {\n options.base = (typeof input === 'string') ? input : '';\n }\n if(!('documentLoader' in options)) {\n options.documentLoader = jsonld.loadDocument;\n }\n\n if('inputFormat' in options) {\n if(options.inputFormat !== 'application/nquads') {\n return callback(new JsonLdError(\n 'Unknown normalization input format.',\n 'jsonld.NormalizeError'));\n }\n var parsedInput = _parseNQuads(input);\n // do normalization\n new Processor().normalize(parsedInput, options, callback);\n } else {\n // convert to RDF dataset then do normalization\n var opts = _clone(options);\n delete opts.format;\n opts.produceGeneralizedRdf = false;\n jsonld.toRDF(input, opts, function(err, dataset) {\n if(err) {\n return callback(new JsonLdError(\n 'Could not convert input to RDF dataset before normalization.',\n 'jsonld.NormalizeError', {cause: err}));\n }\n // do normalization\n new Processor().normalize(dataset, options, callback);\n });\n }\n};\n\n/**\n * Converts an RDF dataset to JSON-LD.\n *\n * @param dataset a serialized string of RDF in a format specified by the\n * format option or an RDF dataset to convert.\n * @param [options] the options to use:\n * [format] the format if dataset param must first be parsed:\n * 'application/nquads' for N-Quads (default).\n * [rdfParser] a custom RDF-parser to use to parse the dataset.\n * [useRdfType] true to use rdf:type, false to use @type\n * (default: false).\n * [useNativeTypes] true to convert XSD types into native types\n * (boolean, integer, double), false not to (default: false).\n * @param callback(err, output) called once the operation completes.\n */\njsonld.fromRDF = function(dataset, options, callback) {\n if(arguments.length < 1) {\n return jsonld.nextTick(function() {\n callback(new TypeError('Could not convert from RDF, too few arguments.'));\n });\n }\n\n // get arguments\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n // set default options\n if(!('useRdfType' in options)) {\n options.useRdfType = false;\n }\n if(!('useNativeTypes' in options)) {\n options.useNativeTypes = false;\n }\n\n if(!('format' in options) && _isString(dataset)) {\n // set default format to nquads\n if(!('format' in options)) {\n options.format = 'application/nquads';\n }\n }\n\n jsonld.nextTick(function() {\n // handle special format\n var rdfParser;\n if(options.format) {\n // check supported formats\n rdfParser = options.rdfParser || _rdfParsers[options.format];\n if(!rdfParser) {\n return callback(new JsonLdError(\n 'Unknown input format.',\n 'jsonld.UnknownFormat', {format: options.format}));\n }\n } else {\n // no-op parser, assume dataset already parsed\n rdfParser = function() {\n return dataset;\n };\n }\n\n var callbackCalled = false;\n try {\n // rdf parser may be async or sync, always pass callback\n dataset = rdfParser(dataset, function(err, dataset) {\n callbackCalled = true;\n if(err) {\n return callback(err);\n }\n fromRDF(dataset, options, callback);\n });\n } catch(e) {\n if(!callbackCalled) {\n return callback(e);\n }\n throw e;\n }\n // handle synchronous or promise-based parser\n if(dataset) {\n // if dataset is actually a promise\n if('then' in dataset) {\n return dataset.then(function(dataset) {\n fromRDF(dataset, options, callback);\n }, callback);\n }\n // parser is synchronous\n fromRDF(dataset, options, callback);\n }\n\n function fromRDF(dataset, options, callback) {\n // convert from RDF\n new Processor().fromRDF(dataset, options, callback);\n }\n });\n};\n\n/**\n * Outputs the RDF dataset found in the given JSON-LD object.\n *\n * @param input the JSON-LD input.\n * @param [options] the options to use:\n * [base] the base IRI to use.\n * [expandContext] a context to expand with.\n * [format] the format to use to output a string:\n * 'application/nquads' for N-Quads.\n * [produceGeneralizedRdf] true to output generalized RDF, false\n * to produce only standard RDF (default: false).\n * [documentLoader(url, callback(err, remoteDoc))] the document loader.\n * @param callback(err, dataset) called once the operation completes.\n */\njsonld.toRDF = function(input, options, callback) {\n if(arguments.length < 1) {\n return jsonld.nextTick(function() {\n callback(new TypeError('Could not convert to RDF, too few arguments.'));\n });\n }\n\n // get arguments\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n // set default options\n if(!('base' in options)) {\n options.base = (typeof input === 'string') ? input : '';\n }\n if(!('documentLoader' in options)) {\n options.documentLoader = jsonld.loadDocument;\n }\n\n // expand input\n jsonld.expand(input, options, function(err, expanded) {\n if(err) {\n return callback(new JsonLdError(\n 'Could not expand input before serialization to RDF.',\n 'jsonld.RdfError', {cause: err}));\n }\n\n var dataset;\n try {\n // output RDF dataset\n dataset = Processor.prototype.toRDF(expanded, options);\n if(options.format) {\n if(options.format === 'application/nquads') {\n return callback(null, _toNQuads(dataset));\n }\n throw new JsonLdError(\n 'Unknown output format.',\n 'jsonld.UnknownFormat', {format: options.format});\n }\n } catch(ex) {\n return callback(ex);\n }\n callback(null, dataset);\n });\n};\n\n/**\n * **Experimental**\n *\n * Recursively flattens the nodes in the given JSON-LD input into a map of\n * node ID => node.\n *\n * @param input the JSON-LD input.\n * @param [options] the options to use:\n * [base] the base IRI to use.\n * [expandContext] a context to expand with.\n * [issuer] a jsonld.IdentifierIssuer to use to label blank nodes.\n * [namer] (deprecated)\n * [documentLoader(url, callback(err, remoteDoc))] the document loader.\n * @param callback(err, nodeMap) called once the operation completes.\n */\njsonld.createNodeMap = function(input, options, callback) {\n if(arguments.length < 1) {\n return jsonld.nextTick(function() {\n callback(new TypeError('Could not create node map, too few arguments.'));\n });\n }\n\n // get arguments\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n // set default options\n if(!('base' in options)) {\n options.base = (typeof input === 'string') ? input : '';\n }\n if(!('documentLoader' in options)) {\n options.documentLoader = jsonld.loadDocument;\n }\n\n // expand input\n jsonld.expand(input, options, function(err, _input) {\n if(err) {\n return callback(new JsonLdError(\n 'Could not expand input before creating node map.',\n 'jsonld.CreateNodeMapError', {cause: err}));\n }\n\n var nodeMap;\n try {\n nodeMap = new Processor().createNodeMap(_input, options);\n } catch(ex) {\n return callback(ex);\n }\n\n callback(null, nodeMap);\n });\n};\n\n/**\n * **Experimental**\n *\n * Merges two or more JSON-LD documents into a single flattened document.\n *\n * @param docs the JSON-LD documents to merge together.\n * @param ctx the context to use to compact the merged result, or null.\n * @param [options] the options to use:\n * [base] the base IRI to use.\n * [expandContext] a context to expand with.\n * [issuer] a jsonld.IdentifierIssuer to use to label blank nodes.\n * [namer] (deprecated).\n * [mergeNodes] true to merge properties for nodes with the same ID,\n * false to ignore new properties for nodes with the same ID once\n * the ID has been defined; note that this may not prevent merging\n * new properties where a node is in the `object` position\n * (default: true).\n * [documentLoader(url, callback(err, remoteDoc))] the document loader.\n * @param callback(err, merged) called once the operation completes.\n */\njsonld.merge = function(docs, ctx, options, callback) {\n if(arguments.length < 1) {\n return jsonld.nextTick(function() {\n callback(new TypeError('Could not merge, too few arguments.'));\n });\n }\n if(!_isArray(docs)) {\n return jsonld.nextTick(function() {\n callback(new TypeError('Could not merge, \"docs\" must be an array.'));\n });\n }\n\n // get arguments\n if(typeof options === 'function') {\n callback = options;\n options = {};\n } else if(typeof ctx === 'function') {\n callback = ctx;\n ctx = null;\n options = {};\n }\n options = options || {};\n\n // expand all documents\n var expanded = [];\n var error = null;\n var count = docs.length;\n for(var i = 0; i < docs.length; ++i) {\n var opts = {};\n for(var key in options) {\n opts[key] = options[key];\n }\n jsonld.expand(docs[i], opts, expandComplete);\n }\n\n function expandComplete(err, _input) {\n if(error) {\n return;\n }\n if(err) {\n error = err;\n return callback(new JsonLdError(\n 'Could not expand input before flattening.',\n 'jsonld.FlattenError', {cause: err}));\n }\n expanded.push(_input);\n if(--count === 0) {\n merge(expanded);\n }\n }\n\n function merge(expanded) {\n var mergeNodes = true;\n if('mergeNodes' in options) {\n mergeNodes = options.mergeNodes;\n }\n\n var issuer = options.namer || options.issuer || new IdentifierIssuer('_:b');\n var graphs = {'@default': {}};\n\n var defaultGraph;\n try {\n for(var i = 0; i < expanded.length; ++i) {\n // uniquely relabel blank nodes\n var doc = expanded[i];\n doc = jsonld.relabelBlankNodes(doc, {\n issuer: new IdentifierIssuer('_:b' + i + '-')\n });\n\n // add nodes to the shared node map graphs if merging nodes, to a\n // separate graph set if not\n var _graphs = (mergeNodes || i === 0) ? graphs : {'@default': {}};\n _createNodeMap(doc, _graphs, '@default', issuer);\n\n if(_graphs !== graphs) {\n // merge document graphs but don't merge existing nodes\n for(var graphName in _graphs) {\n var _nodeMap = _graphs[graphName];\n if(!(graphName in graphs)) {\n graphs[graphName] = _nodeMap;\n continue;\n }\n var nodeMap = graphs[graphName];\n for(var key in _nodeMap) {\n if(!(key in nodeMap)) {\n nodeMap[key] = _nodeMap[key];\n }\n }\n }\n }\n }\n\n // add all non-default graphs to default graph\n defaultGraph = _mergeNodeMaps(graphs);\n } catch(ex) {\n return callback(ex);\n }\n\n // produce flattened output\n var flattened = [];\n var keys = Object.keys(defaultGraph).sort();\n for(var ki = 0; ki < keys.length; ++ki) {\n var node = defaultGraph[keys[ki]];\n // only add full subjects to top-level\n if(!_isSubjectReference(node)) {\n flattened.push(node);\n }\n }\n\n if(ctx === null) {\n return callback(null, flattened);\n }\n\n // compact result (force @graph option to true, skip expansion)\n options.graph = true;\n options.skipExpansion = true;\n jsonld.compact(flattened, ctx, options, function(err, compacted) {\n if(err) {\n return callback(new JsonLdError(\n 'Could not compact merged output.',\n 'jsonld.MergeError', {cause: err}));\n }\n callback(null, compacted);\n });\n }\n};\n\n/**\n * Relabels all blank nodes in the given JSON-LD input.\n *\n * @param input the JSON-LD input.\n * @param [options] the options to use:\n * [issuer] a jsonld.IdentifierIssuer to use to label blank nodes.\n * [namer] (deprecated).\n */\njsonld.relabelBlankNodes = function(input, options) {\n options = options || {};\n var issuer = options.namer || options.issuer || new IdentifierIssuer('_:b');\n return _labelBlankNodes(issuer, input);\n};\n\n/**\n * Prepends a base IRI to the given relative IRI.\n *\n * @param base the base IRI.\n * @param iri the relative IRI.\n *\n * @return the absolute IRI.\n */\njsonld.prependBase = function(base, iri) {\n return _prependBase(base, iri);\n};\n\n/**\n * The default document loader for external documents. If the environment\n * is node.js, a callback-continuation-style document loader is used; otherwise,\n * a promises-style document loader is used.\n *\n * @param url the URL to load.\n * @param callback(err, remoteDoc) called once the operation completes,\n * if using a non-promises API.\n *\n * @return a promise, if using a promises API.\n */\njsonld.documentLoader = function(url, callback) {\n var err = new JsonLdError(\n 'Could not retrieve a JSON-LD document from the URL. URL ' +\n 'dereferencing not implemented.', 'jsonld.LoadDocumentError',\n {code: 'loading document failed'});\n if(_nodejs) {\n return callback(err, {contextUrl: null, documentUrl: url, document: null});\n }\n return jsonld.promisify(function(callback) {\n callback(err);\n });\n};\n\n/**\n * Deprecated default document loader. Use or override jsonld.documentLoader\n * instead.\n */\njsonld.loadDocument = function(url, callback) {\n var promise = jsonld.documentLoader(url, callback);\n if(promise && 'then' in promise) {\n promise.then(callback.bind(null, null), callback);\n }\n};\n\n/* Promises API */\n\n/**\n * Creates a new promises API object.\n *\n * @param [options] the options to use:\n * [api] an object to attach the API to.\n * [version] 'json-ld-1.0' to output a standard JSON-LD 1.0 promises\n * API, 'jsonld.js' to output the same with augmented proprietary\n * methods (default: 'jsonld.js')\n *\n * @return the promises API object.\n */\njsonld.promises = function(options) {\n options = options || {};\n var slice = Array.prototype.slice;\n var promisify = jsonld.promisify;\n\n // handle 'api' option as version, set defaults\n var api = options.api || {};\n var version = options.version || 'jsonld.js';\n if(typeof options.api === 'string') {\n if(!options.version) {\n version = options.api;\n }\n api = {};\n }\n\n // The Web IDL test harness will check the number of parameters defined in\n // the functions below. The number of parameters must exactly match the\n // required (non-optional) parameters of the JsonLdProcessor interface as\n // defined here:\n // https://www.w3.org/TR/json-ld-api/#the-jsonldprocessor-interface\n\n api.expand = function(input) {\n if(arguments.length < 1) {\n throw new TypeError('Could not expand, too few arguments.');\n }\n return promisify.apply(null, [jsonld.expand].concat(slice.call(arguments)));\n };\n api.compact = function(input, ctx) {\n if(arguments.length < 2) {\n throw new TypeError('Could not compact, too few arguments.');\n }\n var compact = function(input, ctx, options, callback) {\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n // ensure only one value is returned in callback\n jsonld.compact(input, ctx, options, function(err, compacted) {\n callback(err, compacted);\n });\n };\n return promisify.apply(null, [compact].concat(slice.call(arguments)));\n };\n api.flatten = function(input) {\n if(arguments.length < 1) {\n throw new TypeError('Could not flatten, too few arguments.');\n }\n return promisify.apply(\n null, [jsonld.flatten].concat(slice.call(arguments)));\n };\n api.frame = function(input, frame) {\n if(arguments.length < 2) {\n throw new TypeError('Could not frame, too few arguments.');\n }\n return promisify.apply(null, [jsonld.frame].concat(slice.call(arguments)));\n };\n api.fromRDF = function(dataset) {\n if(arguments.length < 1) {\n throw new TypeError('Could not convert from RDF, too few arguments.');\n }\n return promisify.apply(\n null, [jsonld.fromRDF].concat(slice.call(arguments)));\n };\n api.toRDF = function(input) {\n if(arguments.length < 1) {\n throw new TypeError('Could not convert to RDF, too few arguments.');\n }\n return promisify.apply(null, [jsonld.toRDF].concat(slice.call(arguments)));\n };\n api.normalize = function(input) {\n if(arguments.length < 1) {\n throw new TypeError('Could not normalize, too few arguments.');\n }\n return promisify.apply(\n null, [jsonld.normalize].concat(slice.call(arguments)));\n };\n\n if(version === 'jsonld.js') {\n api.link = function(input, ctx) {\n if(arguments.length < 2) {\n throw new TypeError('Could not link, too few arguments.');\n }\n return promisify.apply(\n null, [jsonld.link].concat(slice.call(arguments)));\n };\n api.objectify = function(input) {\n return promisify.apply(\n null, [jsonld.objectify].concat(slice.call(arguments)));\n };\n api.createNodeMap = function(input) {\n return promisify.apply(\n null, [jsonld.createNodeMap].concat(slice.call(arguments)));\n };\n api.merge = function(input) {\n return promisify.apply(\n null, [jsonld.merge].concat(slice.call(arguments)));\n };\n }\n\n try {\n jsonld.Promise = global.Promise || require('es6-promise').Promise;\n } catch(e) {\n var f = function() {\n throw new Error('Unable to find a Promise implementation.');\n };\n for(var method in api) {\n api[method] = f;\n }\n }\n\n return api;\n};\n\n/**\n * Converts a node.js async op into a promise w/boxed resolved value(s).\n *\n * @param op the operation to convert.\n *\n * @return the promise.\n */\njsonld.promisify = function(op) {\n if(!jsonld.Promise) {\n try {\n jsonld.Promise = global.Promise || require('es6-promise').Promise;\n } catch(e) {\n throw new Error('Unable to find a Promise implementation.');\n }\n }\n var args = Array.prototype.slice.call(arguments, 1);\n return new jsonld.Promise(function(resolve, reject) {\n op.apply(null, args.concat(function(err, value) {\n if(!err) {\n resolve(value);\n } else {\n reject(err);\n }\n }));\n });\n};\n\n// extend jsonld.promises w/jsonld.js methods\njsonld.promises({api: jsonld.promises});\n\n/* WebIDL API */\n\nfunction JsonLdProcessor() {}\nJsonLdProcessor.prototype = jsonld.promises({version: 'json-ld-1.0'});\nJsonLdProcessor.prototype.toString = function() {\n if(this instanceof JsonLdProcessor) {\n return '[object JsonLdProcessor]';\n }\n return '[object JsonLdProcessorPrototype]';\n};\njsonld.JsonLdProcessor = JsonLdProcessor;\n\n// IE8 has Object.defineProperty but it only\n// works on DOM nodes -- so feature detection\n// requires try/catch :-(\nvar canDefineProperty = !!Object.defineProperty;\nif(canDefineProperty) {\n try {\n Object.defineProperty({}, 'x', {});\n } catch(e) {\n canDefineProperty = false;\n }\n}\n\nif(canDefineProperty) {\n Object.defineProperty(JsonLdProcessor, 'prototype', {\n writable: false,\n enumerable: false\n });\n Object.defineProperty(JsonLdProcessor.prototype, 'constructor', {\n writable: true,\n enumerable: false,\n configurable: true,\n value: JsonLdProcessor\n });\n}\n\n// setup browser global JsonLdProcessor\nif(_browser && typeof global.JsonLdProcessor === 'undefined') {\n if(canDefineProperty) {\n Object.defineProperty(global, 'JsonLdProcessor', {\n writable: true,\n enumerable: false,\n configurable: true,\n value: JsonLdProcessor\n });\n } else {\n global.JsonLdProcessor = JsonLdProcessor;\n }\n}\n\n/* Utility API */\n\n// define setImmediate and nextTick\n//// nextTick implementation with browser-compatible fallback ////\n// from https://github.com/caolan/async/blob/master/lib/async.js\n\n// capture the global reference to guard against fakeTimer mocks\nvar _setImmediate = typeof setImmediate === 'function' && setImmediate;\n\nvar _delay = _setImmediate ? function(fn) {\n // not a direct alias (for IE10 compatibility)\n _setImmediate(fn);\n} : function(fn) {\n setTimeout(fn, 0);\n};\n\nif(typeof process === 'object' && typeof process.nextTick === 'function') {\n jsonld.nextTick = process.nextTick;\n} else {\n jsonld.nextTick = _delay;\n}\njsonld.setImmediate = _setImmediate ? _delay : jsonld.nextTick;\n\n/**\n * Parses a link header. The results will be key'd by the value of \"rel\".\n *\n * Link: ; rel=\"http://www.w3.org/ns/json-ld#context\"; type=\"application/ld+json\"\n *\n * Parses as: {\n * 'http://www.w3.org/ns/json-ld#context': {\n * target: http://json-ld.org/contexts/person.jsonld,\n * type: 'application/ld+json'\n * }\n * }\n *\n * If there is more than one \"rel\" with the same IRI, then entries in the\n * resulting map for that \"rel\" will be arrays.\n *\n * @param header the link header to parse.\n */\njsonld.parseLinkHeader = function(header) {\n var rval = {};\n // split on unbracketed/unquoted commas\n var entries = header.match(/(?:<[^>]*?>|\"[^\"]*?\"|[^,])+/g);\n var rLinkHeader = /\\s*<([^>]*?)>\\s*(?:;\\s*(.*))?/;\n for(var i = 0; i < entries.length; ++i) {\n var match = entries[i].match(rLinkHeader);\n if(!match) {\n continue;\n }\n var result = {target: match[1]};\n var params = match[2];\n var rParams = /(.*?)=(?:(?:\"([^\"]*?)\")|([^\"]*?))\\s*(?:(?:;\\s*)|$)/g;\n while(match = rParams.exec(params)) {\n result[match[1]] = (match[2] === undefined) ? match[3] : match[2];\n }\n var rel = result['rel'] || '';\n if(_isArray(rval[rel])) {\n rval[rel].push(result);\n } else if(rel in rval) {\n rval[rel] = [rval[rel], result];\n } else {\n rval[rel] = result;\n }\n }\n return rval;\n};\n\n/**\n * Creates a simple queue for requesting documents.\n */\njsonld.RequestQueue = function() {\n this._requests = {};\n};\njsonld.RequestQueue.prototype.wrapLoader = function(loader) {\n this._loader = loader;\n this._usePromise = (loader.length === 1);\n return this.add.bind(this);\n};\njsonld.RequestQueue.prototype.add = function(url, callback) {\n var self = this;\n\n // callback must be given if not using promises\n if(!callback && !self._usePromise) {\n throw new Error('callback must be specified.');\n }\n\n // Promise-based API\n if(self._usePromise) {\n return new jsonld.Promise(function(resolve, reject) {\n var load = self._requests[url];\n if(!load) {\n // load URL then remove from queue\n load = self._requests[url] = self._loader(url)\n .then(function(remoteDoc) {\n delete self._requests[url];\n return remoteDoc;\n }).catch(function(err) {\n delete self._requests[url];\n throw err;\n });\n }\n // resolve/reject promise once URL has been loaded\n load.then(function(remoteDoc) {\n resolve(remoteDoc);\n }).catch(function(err) {\n reject(err);\n });\n });\n }\n\n // callback-based API\n if(url in self._requests) {\n self._requests[url].push(callback);\n } else {\n self._requests[url] = [callback];\n self._loader(url, function(err, remoteDoc) {\n var callbacks = self._requests[url];\n delete self._requests[url];\n for(var i = 0; i < callbacks.length; ++i) {\n callbacks[i](err, remoteDoc);\n }\n });\n }\n};\n\n/**\n * Creates a simple document cache that retains documents for a short\n * period of time.\n *\n * FIXME: Implement simple HTTP caching instead.\n *\n * @param size the maximum size of the cache.\n */\njsonld.DocumentCache = function(size) {\n this.order = [];\n this.cache = {};\n this.size = size || 50;\n this.expires = 30 * 1000;\n};\njsonld.DocumentCache.prototype.get = function(url) {\n if(url in this.cache) {\n var entry = this.cache[url];\n if(entry.expires >= +new Date()) {\n return entry.ctx;\n }\n delete this.cache[url];\n this.order.splice(this.order.indexOf(url), 1);\n }\n return null;\n};\njsonld.DocumentCache.prototype.set = function(url, ctx) {\n if(this.order.length === this.size) {\n delete this.cache[this.order.shift()];\n }\n this.order.push(url);\n this.cache[url] = {ctx: ctx, expires: (+new Date() + this.expires)};\n};\n\n/**\n * Creates an active context cache.\n *\n * @param size the maximum size of the cache.\n */\njsonld.ActiveContextCache = function(size) {\n this.order = [];\n this.cache = {};\n this.size = size || 100;\n};\njsonld.ActiveContextCache.prototype.get = function(activeCtx, localCtx) {\n var key1 = JSON.stringify(activeCtx);\n var key2 = JSON.stringify(localCtx);\n var level1 = this.cache[key1];\n if(level1 && key2 in level1) {\n return level1[key2];\n }\n return null;\n};\njsonld.ActiveContextCache.prototype.set = function(\n activeCtx, localCtx, result) {\n if(this.order.length === this.size) {\n var entry = this.order.shift();\n delete this.cache[entry.activeCtx][entry.localCtx];\n }\n var key1 = JSON.stringify(activeCtx);\n var key2 = JSON.stringify(localCtx);\n this.order.push({activeCtx: key1, localCtx: key2});\n if(!(key1 in this.cache)) {\n this.cache[key1] = {};\n }\n this.cache[key1][key2] = _clone(result);\n};\n\n/**\n * Default JSON-LD cache.\n */\njsonld.cache = {\n activeCtx: new jsonld.ActiveContextCache()\n};\n\n/**\n * Document loaders.\n */\njsonld.documentLoaders = {};\n\n/**\n * Creates a built-in jquery document loader.\n *\n * @param $ the jquery instance to use.\n * @param options the options to use:\n * secure: require all URLs to use HTTPS.\n * usePromise: true to use a promises API, false for a\n * callback-continuation-style API; defaults to true if Promise\n * is globally defined, false if not.\n *\n * @return the jquery document loader.\n */\njsonld.documentLoaders.jquery = function($, options) {\n options = options || {};\n var queue = new jsonld.RequestQueue();\n\n // use option or, by default, use Promise when its defined\n var usePromise = ('usePromise' in options ?\n options.usePromise : (typeof Promise !== 'undefined'));\n if(usePromise) {\n return queue.wrapLoader(function(url) {\n return jsonld.promisify(loader, url);\n });\n }\n return queue.wrapLoader(loader);\n\n function loader(url, callback) {\n if(url.indexOf('http:') !== 0 && url.indexOf('https:') !== 0) {\n return callback(new JsonLdError(\n 'URL could not be dereferenced; only \"http\" and \"https\" URLs are ' +\n 'supported.',\n 'jsonld.InvalidUrl', {code: 'loading document failed', url: url}),\n {contextUrl: null, documentUrl: url, document: null});\n }\n if(options.secure && url.indexOf('https') !== 0) {\n return callback(new JsonLdError(\n 'URL could not be dereferenced; secure mode is enabled and ' +\n 'the URL\\'s scheme is not \"https\".',\n 'jsonld.InvalidUrl', {code: 'loading document failed', url: url}),\n {contextUrl: null, documentUrl: url, document: null});\n }\n $.ajax({\n url: url,\n accepts: {\n json: 'application/ld+json, application/json'\n },\n // ensure Accept header is very specific for JSON-LD/JSON\n headers: {\n 'Accept': 'application/ld+json, application/json'\n },\n dataType: 'json',\n crossDomain: true,\n success: function(data, textStatus, jqXHR) {\n var doc = {contextUrl: null, documentUrl: url, document: data};\n\n // handle Link Header\n var contentType = jqXHR.getResponseHeader('Content-Type');\n var linkHeader = jqXHR.getResponseHeader('Link');\n if(linkHeader && contentType !== 'application/ld+json') {\n // only 1 related link header permitted\n linkHeader = jsonld.parseLinkHeader(linkHeader)[LINK_HEADER_REL];\n if(_isArray(linkHeader)) {\n return callback(new JsonLdError(\n 'URL could not be dereferenced, it has more than one ' +\n 'associated HTTP Link Header.',\n 'jsonld.InvalidUrl',\n {code: 'multiple context link headers', url: url}), doc);\n }\n if(linkHeader) {\n doc.contextUrl = linkHeader.target;\n }\n }\n\n callback(null, doc);\n },\n error: function(jqXHR, textStatus, err) {\n callback(new JsonLdError(\n 'URL could not be dereferenced, an error occurred.',\n 'jsonld.LoadDocumentError',\n {code: 'loading document failed', url: url, cause: err}),\n {contextUrl: null, documentUrl: url, document: null});\n }\n });\n }\n};\n\n/**\n * Creates a built-in node document loader.\n *\n * @param options the options to use:\n * secure: require all URLs to use HTTPS.\n * strictSSL: true to require SSL certificates to be valid,\n * false not to (default: true).\n * maxRedirects: the maximum number of redirects to permit, none by\n * default.\n * request: the object which will make the request, default is\n * provided by `https://www.npmjs.com/package/request`.\n * headers: an array of headers which will be passed as request\n * headers for the requested document. Accept is not allowed.\n * usePromise: true to use a promises API, false for a\n * callback-continuation-style API; false by default.\n *\n * @return the node document loader.\n */\njsonld.documentLoaders.node = function(options) {\n options = options || {};\n var strictSSL = ('strictSSL' in options) ? options.strictSSL : true;\n var maxRedirects = ('maxRedirects' in options) ? options.maxRedirects : -1;\n var request = ('request' in options) ? options.request : require('request');\n var acceptHeader = 'application/ld+json, application/json';\n var http = require('http');\n // TODO: disable cache until HTTP caching implemented\n //var cache = new jsonld.DocumentCache();\n\n var queue = new jsonld.RequestQueue();\n if(options.usePromise) {\n return queue.wrapLoader(function(url) {\n return jsonld.promisify(loadDocument, url, []);\n });\n }\n var headers = options.headers || {};\n if('Accept' in headers || 'accept' in headers) {\n throw new RangeError(\n 'Accept header may not be specified as an option; only \"' +\n acceptHeader + '\" is supported.');\n }\n return queue.wrapLoader(function(url, callback) {\n loadDocument(url, [], callback);\n });\n\n function loadDocument(url, redirects, callback) {\n if(url.indexOf('http:') !== 0 && url.indexOf('https:') !== 0) {\n return callback(new JsonLdError(\n 'URL could not be dereferenced; only \"http\" and \"https\" URLs are ' +\n 'supported.',\n 'jsonld.InvalidUrl', {code: 'loading document failed', url: url}),\n {contextUrl: null, documentUrl: url, document: null});\n }\n if(options.secure && url.indexOf('https') !== 0) {\n return callback(new JsonLdError(\n 'URL could not be dereferenced; secure mode is enabled and ' +\n 'the URL\\'s scheme is not \"https\".',\n 'jsonld.InvalidUrl', {code: 'loading document failed', url: url}),\n {contextUrl: null, documentUrl: url, document: null});\n }\n // TODO: disable cache until HTTP caching implemented\n var doc = null;//cache.get(url);\n if(doc !== null) {\n return callback(null, doc);\n }\n var headers = {'Accept': acceptHeader};\n for(var k in options.headers) { headers[k] = options.headers[k]; }\n request({\n url: url,\n headers: headers,\n strictSSL: strictSSL,\n followRedirect: false\n }, handleResponse);\n\n function handleResponse(err, res, body) {\n doc = {contextUrl: null, documentUrl: url, document: body || null};\n\n // handle error\n if(err) {\n return callback(new JsonLdError(\n 'URL could not be dereferenced, an error occurred.',\n 'jsonld.LoadDocumentError',\n {code: 'loading document failed', url: url, cause: err}), doc);\n }\n var statusText = http.STATUS_CODES[res.statusCode];\n if(res.statusCode >= 400) {\n return callback(new JsonLdError(\n 'URL could not be dereferenced: ' + statusText,\n 'jsonld.InvalidUrl', {\n code: 'loading document failed',\n url: url,\n httpStatusCode: res.statusCode\n }), doc);\n }\n\n // handle Link Header\n if(res.headers.link &&\n res.headers['content-type'] !== 'application/ld+json') {\n // only 1 related link header permitted\n var linkHeader = jsonld.parseLinkHeader(\n res.headers.link)[LINK_HEADER_REL];\n if(_isArray(linkHeader)) {\n return callback(new JsonLdError(\n 'URL could not be dereferenced, it has more than one associated ' +\n 'HTTP Link Header.',\n 'jsonld.InvalidUrl',\n {code: 'multiple context link headers', url: url}), doc);\n }\n if(linkHeader) {\n doc.contextUrl = linkHeader.target;\n }\n }\n\n // handle redirect\n if(res.statusCode >= 300 && res.statusCode < 400 &&\n res.headers.location) {\n if(redirects.length === maxRedirects) {\n return callback(new JsonLdError(\n 'URL could not be dereferenced; there were too many redirects.',\n 'jsonld.TooManyRedirects', {\n code: 'loading document failed',\n url: url,\n httpStatusCode: res.statusCode,\n redirects: redirects\n }), doc);\n }\n if(redirects.indexOf(url) !== -1) {\n return callback(new JsonLdError(\n 'URL could not be dereferenced; infinite redirection was detected.',\n 'jsonld.InfiniteRedirectDetected', {\n code: 'recursive context inclusion',\n url: url,\n httpStatusCode: res.statusCode,\n redirects: redirects\n }), doc);\n }\n redirects.push(url);\n return loadDocument(res.headers.location, redirects, callback);\n }\n // cache for each redirected URL\n redirects.push(url);\n // TODO: disable cache until HTTP caching implemented\n /*for(var i = 0; i < redirects.length; ++i) {\n cache.set(\n redirects[i],\n {contextUrl: null, documentUrl: redirects[i], document: body});\n }*/\n callback(err, doc);\n }\n }\n};\n\n/**\n * Creates a built-in XMLHttpRequest document loader.\n *\n * @param options the options to use:\n * secure: require all URLs to use HTTPS.\n * usePromise: true to use a promises API, false for a\n * callback-continuation-style API; defaults to true if Promise\n * is globally defined, false if not.\n * [xhr]: the XMLHttpRequest API to use.\n *\n * @return the XMLHttpRequest document loader.\n */\njsonld.documentLoaders.xhr = function(options) {\n options = options || {};\n var rlink = /(^|(\\r\\n))link:/i;\n var queue = new jsonld.RequestQueue();\n\n // use option or, by default, use Promise when its defined\n var usePromise = ('usePromise' in options ?\n options.usePromise : (typeof Promise !== 'undefined'));\n if(usePromise) {\n return queue.wrapLoader(function(url) {\n return jsonld.promisify(loader, url);\n });\n }\n return queue.wrapLoader(loader);\n\n function loader(url, callback) {\n if(url.indexOf('http:') !== 0 && url.indexOf('https:') !== 0) {\n return callback(new JsonLdError(\n 'URL could not be dereferenced; only \"http\" and \"https\" URLs are ' +\n 'supported.',\n 'jsonld.InvalidUrl', {code: 'loading document failed', url: url}),\n {contextUrl: null, documentUrl: url, document: null});\n }\n if(options.secure && url.indexOf('https') !== 0) {\n return callback(new JsonLdError(\n 'URL could not be dereferenced; secure mode is enabled and ' +\n 'the URL\\'s scheme is not \"https\".',\n 'jsonld.InvalidUrl', {code: 'loading document failed', url: url}),\n {contextUrl: null, documentUrl: url, document: null});\n }\n var xhr = options.xhr || XMLHttpRequest;\n var req = new xhr();\n req.onload = function() {\n if(req.status >= 400) {\n return callback(new JsonLdError(\n 'URL could not be dereferenced: ' + req.statusText,\n 'jsonld.LoadDocumentError', {\n code: 'loading document failed',\n url: url,\n httpStatusCode: req.status\n }), {contextUrl: null, documentUrl: url, document: null});\n }\n\n var doc = {contextUrl: null, documentUrl: url, document: req.response};\n\n // handle Link Header (avoid unsafe header warning by existence testing)\n var contentType = req.getResponseHeader('Content-Type');\n var linkHeader;\n if(rlink.test(req.getAllResponseHeaders())) {\n linkHeader = req.getResponseHeader('Link');\n }\n if(linkHeader && contentType !== 'application/ld+json') {\n // only 1 related link header permitted\n linkHeader = jsonld.parseLinkHeader(linkHeader)[LINK_HEADER_REL];\n if(_isArray(linkHeader)) {\n return callback(new JsonLdError(\n 'URL could not be dereferenced, it has more than one ' +\n 'associated HTTP Link Header.',\n 'jsonld.InvalidUrl',\n {code: 'multiple context link headers', url: url}), doc);\n }\n if(linkHeader) {\n doc.contextUrl = linkHeader.target;\n }\n }\n\n callback(null, doc);\n };\n req.onerror = function() {\n callback(new JsonLdError(\n 'URL could not be dereferenced, an error occurred.',\n 'jsonld.LoadDocumentError',\n {code: 'loading document failed', url: url}),\n {contextUrl: null, documentUrl: url, document: null});\n };\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/ld+json, application/json');\n req.send();\n }\n};\n\n/**\n * Assigns the default document loader for external document URLs to a built-in\n * default. Supported types currently include: 'jquery' and 'node'.\n *\n * To use the jquery document loader, the first parameter must be a reference\n * to the main jquery object.\n *\n * @param type the type to set.\n * @param [params] the parameters required to use the document loader.\n */\njsonld.useDocumentLoader = function(type) {\n if(!(type in jsonld.documentLoaders)) {\n throw new JsonLdError(\n 'Unknown document loader type: \"' + type + '\"',\n 'jsonld.UnknownDocumentLoader',\n {type: type});\n }\n\n // set document loader\n jsonld.documentLoader = jsonld.documentLoaders[type].apply(\n jsonld, Array.prototype.slice.call(arguments, 1));\n};\n\n/**\n * Processes a local context, resolving any URLs as necessary, and returns a\n * new active context in its callback.\n *\n * @param activeCtx the current active context.\n * @param localCtx the local context to process.\n * @param [options] the options to use:\n * [documentLoader(url, callback(err, remoteDoc))] the document loader.\n * @param callback(err, ctx) called once the operation completes.\n */\njsonld.processContext = function(activeCtx, localCtx) {\n // get arguments\n var options = {};\n var callbackArg = 2;\n if(arguments.length > 3) {\n options = arguments[2] || {};\n callbackArg += 1;\n }\n var callback = arguments[callbackArg];\n\n // set default options\n if(!('base' in options)) {\n options.base = '';\n }\n if(!('documentLoader' in options)) {\n options.documentLoader = jsonld.loadDocument;\n }\n\n // return initial context early for null context\n if(localCtx === null) {\n return callback(null, _getInitialContext(options));\n }\n\n // retrieve URLs in localCtx\n localCtx = _clone(localCtx);\n if(!(_isObject(localCtx) && '@context' in localCtx)) {\n localCtx = {'@context': localCtx};\n }\n _retrieveContextUrls(localCtx, options, function(err, ctx) {\n if(err) {\n return callback(err);\n }\n try {\n // process context\n ctx = new Processor().processContext(activeCtx, ctx, options);\n } catch(ex) {\n return callback(ex);\n }\n callback(null, ctx);\n });\n};\n\n/**\n * Returns true if the given subject has the given property.\n *\n * @param subject the subject to check.\n * @param property the property to look for.\n *\n * @return true if the subject has the given property, false if not.\n */\njsonld.hasProperty = function(subject, property) {\n var rval = false;\n if(property in subject) {\n var value = subject[property];\n rval = (!_isArray(value) || value.length > 0);\n }\n return rval;\n};\n\n/**\n * Determines if the given value is a property of the given subject.\n *\n * @param subject the subject to check.\n * @param property the property to check.\n * @param value the value to check.\n *\n * @return true if the value exists, false if not.\n */\njsonld.hasValue = function(subject, property, value) {\n var rval = false;\n if(jsonld.hasProperty(subject, property)) {\n var val = subject[property];\n var isList = _isList(val);\n if(_isArray(val) || isList) {\n if(isList) {\n val = val['@list'];\n }\n for(var i = 0; i < val.length; ++i) {\n if(jsonld.compareValues(value, val[i])) {\n rval = true;\n break;\n }\n }\n } else if(!_isArray(value)) {\n // avoid matching the set of values with an array value parameter\n rval = jsonld.compareValues(value, val);\n }\n }\n return rval;\n};\n\n/**\n * Adds a value to a subject. If the value is an array, all values in the\n * array will be added.\n *\n * @param subject the subject to add the value to.\n * @param property the property that relates the value to the subject.\n * @param value the value to add.\n * @param [options] the options to use:\n * [propertyIsArray] true if the property is always an array, false\n * if not (default: false).\n * [allowDuplicate] true to allow duplicates, false not to (uses a\n * simple shallow comparison of subject ID or value) (default: true).\n */\njsonld.addValue = function(subject, property, value, options) {\n options = options || {};\n if(!('propertyIsArray' in options)) {\n options.propertyIsArray = false;\n }\n if(!('allowDuplicate' in options)) {\n options.allowDuplicate = true;\n }\n\n if(_isArray(value)) {\n if(value.length === 0 && options.propertyIsArray &&\n !(property in subject)) {\n subject[property] = [];\n }\n for(var i = 0; i < value.length; ++i) {\n jsonld.addValue(subject, property, value[i], options);\n }\n } else if(property in subject) {\n // check if subject already has value if duplicates not allowed\n var hasValue = (!options.allowDuplicate &&\n jsonld.hasValue(subject, property, value));\n\n // make property an array if value not present or always an array\n if(!_isArray(subject[property]) &&\n (!hasValue || options.propertyIsArray)) {\n subject[property] = [subject[property]];\n }\n\n // add new value\n if(!hasValue) {\n subject[property].push(value);\n }\n } else {\n // add new value as set or single value\n subject[property] = options.propertyIsArray ? [value] : value;\n }\n};\n\n/**\n * Gets all of the values for a subject's property as an array.\n *\n * @param subject the subject.\n * @param property the property.\n *\n * @return all of the values for a subject's property as an array.\n */\njsonld.getValues = function(subject, property) {\n var rval = subject[property] || [];\n if(!_isArray(rval)) {\n rval = [rval];\n }\n return rval;\n};\n\n/**\n * Removes a property from a subject.\n *\n * @param subject the subject.\n * @param property the property.\n */\njsonld.removeProperty = function(subject, property) {\n delete subject[property];\n};\n\n/**\n * Removes a value from a subject.\n *\n * @param subject the subject.\n * @param property the property that relates the value to the subject.\n * @param value the value to remove.\n * @param [options] the options to use:\n * [propertyIsArray] true if the property is always an array, false\n * if not (default: false).\n */\njsonld.removeValue = function(subject, property, value, options) {\n options = options || {};\n if(!('propertyIsArray' in options)) {\n options.propertyIsArray = false;\n }\n\n // filter out value\n var values = jsonld.getValues(subject, property).filter(function(e) {\n return !jsonld.compareValues(e, value);\n });\n\n if(values.length === 0) {\n jsonld.removeProperty(subject, property);\n } else if(values.length === 1 && !options.propertyIsArray) {\n subject[property] = values[0];\n } else {\n subject[property] = values;\n }\n};\n\n/**\n * Compares two JSON-LD values for equality. Two JSON-LD values will be\n * considered equal if:\n *\n * 1. They are both primitives of the same type and value.\n * 2. They are both @values with the same @value, @type, @language,\n * and @index, OR\n * 3. They both have @ids they are the same.\n *\n * @param v1 the first value.\n * @param v2 the second value.\n *\n * @return true if v1 and v2 are considered equal, false if not.\n */\njsonld.compareValues = function(v1, v2) {\n // 1. equal primitives\n if(v1 === v2) {\n return true;\n }\n\n // 2. equal @values\n if(_isValue(v1) && _isValue(v2) &&\n v1['@value'] === v2['@value'] &&\n v1['@type'] === v2['@type'] &&\n v1['@language'] === v2['@language'] &&\n v1['@index'] === v2['@index']) {\n return true;\n }\n\n // 3. equal @ids\n if(_isObject(v1) && ('@id' in v1) && _isObject(v2) && ('@id' in v2)) {\n return v1['@id'] === v2['@id'];\n }\n\n return false;\n};\n\n/**\n * Gets the value for the given active context key and type, null if none is\n * set.\n *\n * @param ctx the active context.\n * @param key the context key.\n * @param [type] the type of value to get (eg: '@id', '@type'), if not\n * specified gets the entire entry for a key, null if not found.\n *\n * @return the value.\n */\njsonld.getContextValue = function(ctx, key, type) {\n var rval = null;\n\n // return null for invalid key\n if(key === null) {\n return rval;\n }\n\n // get default language\n if(type === '@language' && (type in ctx)) {\n rval = ctx[type];\n }\n\n // get specific entry information\n if(ctx.mappings[key]) {\n var entry = ctx.mappings[key];\n\n if(_isUndefined(type)) {\n // return whole entry\n rval = entry;\n } else if(type in entry) {\n // return entry value for type\n rval = entry[type];\n }\n }\n\n return rval;\n};\n\n/** Registered RDF dataset parsers hashed by content-type. */\nvar _rdfParsers = {};\n\n/**\n * Registers an RDF dataset parser by content-type, for use with\n * jsonld.fromRDF. An RDF dataset parser will always be given two parameters,\n * a string of input and a callback. An RDF dataset parser can be synchronous\n * or asynchronous.\n *\n * If the parser function returns undefined or null then it will be assumed to\n * be asynchronous w/a continuation-passing style and the callback parameter\n * given to the parser MUST be invoked.\n *\n * If it returns a Promise, then it will be assumed to be asynchronous, but the\n * callback parameter MUST NOT be invoked. It should instead be ignored.\n *\n * If it returns an RDF dataset, it will be assumed to be synchronous and the\n * callback parameter MUST NOT be invoked. It should instead be ignored.\n *\n * @param contentType the content-type for the parser.\n * @param parser(input, callback(err, dataset)) the parser function (takes a\n * string as a parameter and either returns null/undefined and uses\n * the given callback, returns a Promise, or returns an RDF dataset).\n */\njsonld.registerRDFParser = function(contentType, parser) {\n _rdfParsers[contentType] = parser;\n};\n\n/**\n * Unregisters an RDF dataset parser by content-type.\n *\n * @param contentType the content-type for the parser.\n */\njsonld.unregisterRDFParser = function(contentType) {\n delete _rdfParsers[contentType];\n};\n\nif(_nodejs) {\n // needed for serialization of XML literals\n if(typeof XMLSerializer === 'undefined') {\n var XMLSerializer = null;\n }\n if(typeof Node === 'undefined') {\n var Node = {\n ELEMENT_NODE: 1,\n ATTRIBUTE_NODE: 2,\n TEXT_NODE: 3,\n CDATA_SECTION_NODE: 4,\n ENTITY_REFERENCE_NODE: 5,\n ENTITY_NODE: 6,\n PROCESSING_INSTRUCTION_NODE: 7,\n COMMENT_NODE: 8,\n DOCUMENT_NODE: 9,\n DOCUMENT_TYPE_NODE: 10,\n DOCUMENT_FRAGMENT_NODE: 11,\n NOTATION_NODE:12\n };\n }\n}\n\n// constants\nvar XSD_BOOLEAN = 'http://www.w3.org/2001/XMLSchema#boolean';\nvar XSD_DOUBLE = 'http://www.w3.org/2001/XMLSchema#double';\nvar XSD_INTEGER = 'http://www.w3.org/2001/XMLSchema#integer';\nvar XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string';\n\nvar RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';\nvar RDF_LIST = RDF + 'List';\nvar RDF_FIRST = RDF + 'first';\nvar RDF_REST = RDF + 'rest';\nvar RDF_NIL = RDF + 'nil';\nvar RDF_TYPE = RDF + 'type';\nvar RDF_PLAIN_LITERAL = RDF + 'PlainLiteral';\nvar RDF_XML_LITERAL = RDF + 'XMLLiteral';\nvar RDF_OBJECT = RDF + 'object';\nvar RDF_LANGSTRING = RDF + 'langString';\n\nvar LINK_HEADER_REL = 'http://www.w3.org/ns/json-ld#context';\nvar MAX_CONTEXT_URLS = 10;\n\n/**\n * A JSON-LD Error.\n *\n * @param msg the error message.\n * @param type the error type.\n * @param details the error details.\n */\nvar JsonLdError = function(msg, type, details) {\n if(_nodejs) {\n Error.call(this);\n Error.captureStackTrace(this, this.constructor);\n } else if(typeof Error !== 'undefined') {\n this.stack = (new Error()).stack;\n }\n this.name = type || 'jsonld.Error';\n this.message = msg || 'An unspecified JSON-LD error occurred.';\n this.details = details || {};\n};\nif(_nodejs) {\n require('util').inherits(JsonLdError, Error);\n} else if(typeof Error !== 'undefined') {\n JsonLdError.prototype = new Error();\n}\n\n/**\n * Constructs a new JSON-LD Processor.\n */\nvar Processor = function() {};\n\n/**\n * Recursively compacts an element using the given active context. All values\n * must be in expanded form before this method is called.\n *\n * @param activeCtx the active context to use.\n * @param activeProperty the compacted property associated with the element\n * to compact, null for none.\n * @param element the element to compact.\n * @param options the compaction options.\n *\n * @return the compacted value.\n */\nProcessor.prototype.compact = function(\n activeCtx, activeProperty, element, options) {\n // recursively compact array\n if(_isArray(element)) {\n var rval = [];\n for(var i = 0; i < element.length; ++i) {\n // compact, dropping any null values\n var compacted = this.compact(\n activeCtx, activeProperty, element[i], options);\n if(compacted !== null) {\n rval.push(compacted);\n }\n }\n if(options.compactArrays && rval.length === 1) {\n // use single element if no container is specified\n var container = jsonld.getContextValue(\n activeCtx, activeProperty, '@container');\n if(container === null) {\n rval = rval[0];\n }\n }\n return rval;\n }\n\n // recursively compact object\n if(_isObject(element)) {\n if(options.link && '@id' in element && element['@id'] in options.link) {\n // check for a linked element to reuse\n var linked = options.link[element['@id']];\n for(var i = 0; i < linked.length; ++i) {\n if(linked[i].expanded === element) {\n return linked[i].compacted;\n }\n }\n }\n\n // do value compaction on @values and subject references\n if(_isValue(element) || _isSubjectReference(element)) {\n var rval = _compactValue(activeCtx, activeProperty, element);\n if(options.link && _isSubjectReference(element)) {\n // store linked element\n if(!(element['@id'] in options.link)) {\n options.link[element['@id']] = [];\n }\n options.link[element['@id']].push({expanded: element, compacted: rval});\n }\n return rval;\n }\n\n // FIXME: avoid misuse of active property as an expanded property?\n var insideReverse = (activeProperty === '@reverse');\n\n var rval = {};\n\n if(options.link && '@id' in element) {\n // store linked element\n if(!(element['@id'] in options.link)) {\n options.link[element['@id']] = [];\n }\n options.link[element['@id']].push({expanded: element, compacted: rval});\n }\n\n // process element keys in order\n var keys = Object.keys(element).sort();\n for(var ki = 0; ki < keys.length; ++ki) {\n var expandedProperty = keys[ki];\n var expandedValue = element[expandedProperty];\n\n // compact @id and @type(s)\n if(expandedProperty === '@id' || expandedProperty === '@type') {\n var compactedValue;\n\n // compact single @id\n if(_isString(expandedValue)) {\n compactedValue = _compactIri(\n activeCtx, expandedValue, null,\n {vocab: (expandedProperty === '@type')});\n } else {\n // expanded value must be a @type array\n compactedValue = [];\n for(var vi = 0; vi < expandedValue.length; ++vi) {\n compactedValue.push(_compactIri(\n activeCtx, expandedValue[vi], null, {vocab: true}));\n }\n }\n\n // use keyword alias and add value\n var alias = _compactIri(activeCtx, expandedProperty);\n var isArray = (_isArray(compactedValue) && expandedValue.length === 0);\n jsonld.addValue(\n rval, alias, compactedValue, {propertyIsArray: isArray});\n continue;\n }\n\n // handle @reverse\n if(expandedProperty === '@reverse') {\n // recursively compact expanded value\n var compactedValue = this.compact(\n activeCtx, '@reverse', expandedValue, options);\n\n // handle double-reversed properties\n for(var compactedProperty in compactedValue) {\n if(activeCtx.mappings[compactedProperty] &&\n activeCtx.mappings[compactedProperty].reverse) {\n var value = compactedValue[compactedProperty];\n var container = jsonld.getContextValue(\n activeCtx, compactedProperty, '@container');\n var useArray = (container === '@set' || !options.compactArrays);\n jsonld.addValue(\n rval, compactedProperty, value, {propertyIsArray: useArray});\n delete compactedValue[compactedProperty];\n }\n }\n\n if(Object.keys(compactedValue).length > 0) {\n // use keyword alias and add value\n var alias = _compactIri(activeCtx, expandedProperty);\n jsonld.addValue(rval, alias, compactedValue);\n }\n\n continue;\n }\n\n // handle @index property\n if(expandedProperty === '@index') {\n // drop @index if inside an @index container\n var container = jsonld.getContextValue(\n activeCtx, activeProperty, '@container');\n if(container === '@index') {\n continue;\n }\n\n // use keyword alias and add value\n var alias = _compactIri(activeCtx, expandedProperty);\n jsonld.addValue(rval, alias, expandedValue);\n continue;\n }\n\n // skip array processing for keywords that aren't @graph or @list\n if(expandedProperty !== '@graph' && expandedProperty !== '@list' &&\n _isKeyword(expandedProperty)) {\n // use keyword alias and add value as is\n var alias = _compactIri(activeCtx, expandedProperty);\n jsonld.addValue(rval, alias, expandedValue);\n continue;\n }\n\n // Note: expanded value must be an array due to expansion algorithm.\n\n // preserve empty arrays\n if(expandedValue.length === 0) {\n var itemActiveProperty = _compactIri(\n activeCtx, expandedProperty, expandedValue, {vocab: true},\n insideReverse);\n jsonld.addValue(\n rval, itemActiveProperty, expandedValue, {propertyIsArray: true});\n }\n\n // recusively process array values\n for(var vi = 0; vi < expandedValue.length; ++vi) {\n var expandedItem = expandedValue[vi];\n\n // compact property and get container type\n var itemActiveProperty = _compactIri(\n activeCtx, expandedProperty, expandedItem, {vocab: true},\n insideReverse);\n var container = jsonld.getContextValue(\n activeCtx, itemActiveProperty, '@container');\n\n // get @list value if appropriate\n var isList = _isList(expandedItem);\n var list = null;\n if(isList) {\n list = expandedItem['@list'];\n }\n\n // recursively compact expanded item\n var compactedItem = this.compact(\n activeCtx, itemActiveProperty, isList ? list : expandedItem, options);\n\n // handle @list\n if(isList) {\n // ensure @list value is an array\n if(!_isArray(compactedItem)) {\n compactedItem = [compactedItem];\n }\n\n if(container !== '@list') {\n // wrap using @list alias\n var wrapper = {};\n wrapper[_compactIri(activeCtx, '@list')] = compactedItem;\n compactedItem = wrapper;\n\n // include @index from expanded @list, if any\n if('@index' in expandedItem) {\n compactedItem[_compactIri(activeCtx, '@index')] =\n expandedItem['@index'];\n }\n } else if(itemActiveProperty in rval) {\n // can't use @list container for more than 1 list\n throw new JsonLdError(\n 'JSON-LD compact error; property has a \"@list\" @container ' +\n 'rule but there is more than a single @list that matches ' +\n 'the compacted term in the document. Compaction might mix ' +\n 'unwanted items into the list.',\n 'jsonld.SyntaxError', {code: 'compaction to list of lists'});\n }\n }\n\n // handle language and index maps\n if(container === '@language' || container === '@index') {\n // get or create the map object\n var mapObject;\n if(itemActiveProperty in rval) {\n mapObject = rval[itemActiveProperty];\n } else {\n rval[itemActiveProperty] = mapObject = {};\n }\n\n // if container is a language map, simplify compacted value to\n // a simple string\n if(container === '@language' && _isValue(compactedItem)) {\n compactedItem = compactedItem['@value'];\n }\n\n // add compact value to map object using key from expanded value\n // based on the container type\n jsonld.addValue(mapObject, expandedItem[container], compactedItem);\n } else {\n // use an array if: compactArrays flag is false,\n // @container is @set or @list , value is an empty\n // array, or key is @graph\n var isArray = (!options.compactArrays || container === '@set' ||\n container === '@list' ||\n (_isArray(compactedItem) && compactedItem.length === 0) ||\n expandedProperty === '@list' || expandedProperty === '@graph');\n\n // add compact value\n jsonld.addValue(\n rval, itemActiveProperty, compactedItem,\n {propertyIsArray: isArray});\n }\n }\n }\n\n return rval;\n }\n\n // only primitives remain which are already compact\n return element;\n};\n\n/**\n * Recursively expands an element using the given context. Any context in\n * the element will be removed. All context URLs must have been retrieved\n * before calling this method.\n *\n * @param activeCtx the context to use.\n * @param activeProperty the property for the element, null for none.\n * @param element the element to expand.\n * @param options the expansion options.\n * @param insideList true if the element is a list, false if not.\n *\n * @return the expanded value.\n */\nProcessor.prototype.expand = function(\n activeCtx, activeProperty, element, options, insideList) {\n var self = this;\n\n // nothing to expand\n if(element === null || element === undefined) {\n return null;\n }\n\n if(!_isArray(element) && !_isObject(element)) {\n // drop free-floating scalars that are not in lists\n if(!insideList && (activeProperty === null ||\n _expandIri(activeCtx, activeProperty, {vocab: true}) === '@graph')) {\n return null;\n }\n\n // expand element according to value expansion rules\n return _expandValue(activeCtx, activeProperty, element);\n }\n\n // recursively expand array\n if(_isArray(element)) {\n var rval = [];\n var container = jsonld.getContextValue(\n activeCtx, activeProperty, '@container');\n insideList = insideList || container === '@list';\n for(var i = 0; i < element.length; ++i) {\n // expand element\n var e = self.expand(activeCtx, activeProperty, element[i], options);\n if(insideList && (_isArray(e) || _isList(e))) {\n // lists of lists are illegal\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; lists of lists are not permitted.',\n 'jsonld.SyntaxError', {code: 'list of lists'});\n }\n // drop null values\n if(e !== null) {\n if(_isArray(e)) {\n rval = rval.concat(e);\n } else {\n rval.push(e);\n }\n }\n }\n return rval;\n }\n\n // recursively expand object:\n\n // if element has a context, process it\n if('@context' in element) {\n activeCtx = self.processContext(activeCtx, element['@context'], options);\n }\n\n // expand the active property\n var expandedActiveProperty = _expandIri(\n activeCtx, activeProperty, {vocab: true});\n\n var rval = {};\n var keys = Object.keys(element).sort();\n for(var ki = 0; ki < keys.length; ++ki) {\n var key = keys[ki];\n var value = element[key];\n var expandedValue;\n\n // skip @context\n if(key === '@context') {\n continue;\n }\n\n // expand property\n var expandedProperty = _expandIri(activeCtx, key, {vocab: true});\n\n // drop non-absolute IRI keys that aren't keywords\n if(expandedProperty === null ||\n !(_isAbsoluteIri(expandedProperty) || _isKeyword(expandedProperty))) {\n continue;\n }\n\n if(_isKeyword(expandedProperty)) {\n if(expandedActiveProperty === '@reverse') {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; a keyword cannot be used as a @reverse ' +\n 'property.', 'jsonld.SyntaxError',\n {code: 'invalid reverse property map', value: value});\n }\n if(expandedProperty in rval) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; colliding keywords detected.',\n 'jsonld.SyntaxError',\n {code: 'colliding keywords', keyword: expandedProperty});\n }\n }\n\n // syntax error if @id is not a string\n if(expandedProperty === '@id' && !_isString(value)) {\n if(!options.isFrame) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; \"@id\" value must a string.',\n 'jsonld.SyntaxError', {code: 'invalid @id value', value: value});\n }\n if(!_isObject(value)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; \"@id\" value must be a string or an ' +\n 'object.', 'jsonld.SyntaxError',\n {code: 'invalid @id value', value: value});\n }\n }\n\n if(expandedProperty === '@type') {\n _validateTypeValue(value);\n }\n\n // @graph must be an array or an object\n if(expandedProperty === '@graph' &&\n !(_isObject(value) || _isArray(value))) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; \"@graph\" value must not be an ' +\n 'object or an array.',\n 'jsonld.SyntaxError', {code: 'invalid @graph value', value: value});\n }\n\n // @value must not be an object or an array\n if(expandedProperty === '@value' &&\n (_isObject(value) || _isArray(value))) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; \"@value\" value must not be an ' +\n 'object or an array.',\n 'jsonld.SyntaxError',\n {code: 'invalid value object value', value: value});\n }\n\n // @language must be a string\n if(expandedProperty === '@language') {\n if(value === null) {\n // drop null @language values, they expand as if they didn't exist\n continue;\n }\n if(!_isString(value)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; \"@language\" value must be a string.',\n 'jsonld.SyntaxError',\n {code: 'invalid language-tagged string', value: value});\n }\n // ensure language value is lowercase\n value = value.toLowerCase();\n }\n\n // @index must be a string\n if(expandedProperty === '@index') {\n if(!_isString(value)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; \"@index\" value must be a string.',\n 'jsonld.SyntaxError',\n {code: 'invalid @index value', value: value});\n }\n }\n\n // @reverse must be an object\n if(expandedProperty === '@reverse') {\n if(!_isObject(value)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; \"@reverse\" value must be an object.',\n 'jsonld.SyntaxError', {code: 'invalid @reverse value', value: value});\n }\n\n expandedValue = self.expand(activeCtx, '@reverse', value, options);\n\n // properties double-reversed\n if('@reverse' in expandedValue) {\n for(var property in expandedValue['@reverse']) {\n jsonld.addValue(\n rval, property, expandedValue['@reverse'][property],\n {propertyIsArray: true});\n }\n }\n\n // FIXME: can this be merged with code below to simplify?\n // merge in all reversed properties\n var reverseMap = rval['@reverse'] || null;\n for(var property in expandedValue) {\n if(property === '@reverse') {\n continue;\n }\n if(reverseMap === null) {\n reverseMap = rval['@reverse'] = {};\n }\n jsonld.addValue(reverseMap, property, [], {propertyIsArray: true});\n var items = expandedValue[property];\n for(var ii = 0; ii < items.length; ++ii) {\n var item = items[ii];\n if(_isValue(item) || _isList(item)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; \"@reverse\" value must not be a ' +\n '@value or an @list.', 'jsonld.SyntaxError',\n {code: 'invalid reverse property value', value: expandedValue});\n }\n jsonld.addValue(\n reverseMap, property, item, {propertyIsArray: true});\n }\n }\n\n continue;\n }\n\n var container = jsonld.getContextValue(activeCtx, key, '@container');\n\n if(container === '@language' && _isObject(value)) {\n // handle language map container (skip if value is not an object)\n expandedValue = _expandLanguageMap(value);\n } else if(container === '@index' && _isObject(value)) {\n // handle index container (skip if value is not an object)\n expandedValue = (function _expandIndexMap(activeProperty) {\n var rval = [];\n var keys = Object.keys(value).sort();\n for(var ki = 0; ki < keys.length; ++ki) {\n var key = keys[ki];\n var val = value[key];\n if(!_isArray(val)) {\n val = [val];\n }\n val = self.expand(activeCtx, activeProperty, val, options, false);\n for(var vi = 0; vi < val.length; ++vi) {\n var item = val[vi];\n if(!('@index' in item)) {\n item['@index'] = key;\n }\n rval.push(item);\n }\n }\n return rval;\n })(key);\n } else {\n // recurse into @list or @set\n var isList = (expandedProperty === '@list');\n if(isList || expandedProperty === '@set') {\n var nextActiveProperty = activeProperty;\n if(isList && expandedActiveProperty === '@graph') {\n nextActiveProperty = null;\n }\n expandedValue = self.expand(\n activeCtx, nextActiveProperty, value, options, isList);\n if(isList && _isList(expandedValue)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; lists of lists are not permitted.',\n 'jsonld.SyntaxError', {code: 'list of lists'});\n }\n } else {\n // recursively expand value with key as new active property\n expandedValue = self.expand(activeCtx, key, value, options, false);\n }\n }\n\n // drop null values if property is not @value\n if(expandedValue === null && expandedProperty !== '@value') {\n continue;\n }\n\n // convert expanded value to @list if container specifies it\n if(expandedProperty !== '@list' && !_isList(expandedValue) &&\n container === '@list') {\n // ensure expanded value is an array\n expandedValue = (_isArray(expandedValue) ?\n expandedValue : [expandedValue]);\n expandedValue = {'@list': expandedValue};\n }\n\n // FIXME: can this be merged with code above to simplify?\n // merge in reverse properties\n if(activeCtx.mappings[key] && activeCtx.mappings[key].reverse) {\n var reverseMap = rval['@reverse'] = rval['@reverse'] || {};\n if(!_isArray(expandedValue)) {\n expandedValue = [expandedValue];\n }\n for(var ii = 0; ii < expandedValue.length; ++ii) {\n var item = expandedValue[ii];\n if(_isValue(item) || _isList(item)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; \"@reverse\" value must not be a ' +\n '@value or an @list.', 'jsonld.SyntaxError',\n {code: 'invalid reverse property value', value: expandedValue});\n }\n jsonld.addValue(\n reverseMap, expandedProperty, item, {propertyIsArray: true});\n }\n continue;\n }\n\n // add value for property\n // use an array except for certain keywords\n var useArray =\n ['@index', '@id', '@type', '@value', '@language'].indexOf(\n expandedProperty) === -1;\n jsonld.addValue(\n rval, expandedProperty, expandedValue, {propertyIsArray: useArray});\n }\n\n // get property count on expanded output\n keys = Object.keys(rval);\n var count = keys.length;\n\n if('@value' in rval) {\n // @value must only have @language or @type\n if('@type' in rval && '@language' in rval) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; an element containing \"@value\" may not ' +\n 'contain both \"@type\" and \"@language\".',\n 'jsonld.SyntaxError', {code: 'invalid value object', element: rval});\n }\n var validCount = count - 1;\n if('@type' in rval) {\n validCount -= 1;\n }\n if('@index' in rval) {\n validCount -= 1;\n }\n if('@language' in rval) {\n validCount -= 1;\n }\n if(validCount !== 0) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; an element containing \"@value\" may only ' +\n 'have an \"@index\" property and at most one other property ' +\n 'which can be \"@type\" or \"@language\".',\n 'jsonld.SyntaxError', {code: 'invalid value object', element: rval});\n }\n // drop null @values\n if(rval['@value'] === null) {\n rval = null;\n } else if('@language' in rval && !_isString(rval['@value'])) {\n // if @language is present, @value must be a string\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; only strings may be language-tagged.',\n 'jsonld.SyntaxError',\n {code: 'invalid language-tagged value', element: rval});\n } else if('@type' in rval && (!_isAbsoluteIri(rval['@type']) ||\n rval['@type'].indexOf('_:') === 0)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; an element containing \"@value\" and \"@type\" ' +\n 'must have an absolute IRI for the value of \"@type\".',\n 'jsonld.SyntaxError', {code: 'invalid typed value', element: rval});\n }\n } else if('@type' in rval && !_isArray(rval['@type'])) {\n // convert @type to an array\n rval['@type'] = [rval['@type']];\n } else if('@set' in rval || '@list' in rval) {\n // handle @set and @list\n if(count > 1 && !(count === 2 && '@index' in rval)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; if an element has the property \"@set\" ' +\n 'or \"@list\", then it can have at most one other property that is ' +\n '\"@index\".', 'jsonld.SyntaxError',\n {code: 'invalid set or list object', element: rval});\n }\n // optimize away @set\n if('@set' in rval) {\n rval = rval['@set'];\n keys = Object.keys(rval);\n count = keys.length;\n }\n } else if(count === 1 && '@language' in rval) {\n // drop objects with only @language\n rval = null;\n }\n\n // drop certain top-level objects that do not occur in lists\n if(_isObject(rval) &&\n !options.keepFreeFloatingNodes && !insideList &&\n (activeProperty === null || expandedActiveProperty === '@graph')) {\n // drop empty object, top-level @value/@list, or object with only @id\n if(count === 0 || '@value' in rval || '@list' in rval ||\n (count === 1 && '@id' in rval)) {\n rval = null;\n }\n }\n\n return rval;\n};\n\n/**\n * Creates a JSON-LD node map (node ID => node).\n *\n * @param input the expanded JSON-LD to create a node map of.\n * @param [options] the options to use:\n * [issuer] a jsonld.IdentifierIssuer to use to label blank nodes.\n * [namer] (deprecated).\n *\n * @return the node map.\n */\nProcessor.prototype.createNodeMap = function(input, options) {\n options = options || {};\n\n // produce a map of all subjects and name each bnode\n var issuer = options.namer || options.issuer || new IdentifierIssuer('_:b');\n var graphs = {'@default': {}};\n _createNodeMap(input, graphs, '@default', issuer);\n\n // add all non-default graphs to default graph\n return _mergeNodeMaps(graphs);\n};\n\n/**\n * Performs JSON-LD flattening.\n *\n * @param input the expanded JSON-LD to flatten.\n *\n * @return the flattened output.\n */\nProcessor.prototype.flatten = function(input) {\n var defaultGraph = this.createNodeMap(input);\n\n // produce flattened output\n var flattened = [];\n var keys = Object.keys(defaultGraph).sort();\n for(var ki = 0; ki < keys.length; ++ki) {\n var node = defaultGraph[keys[ki]];\n // only add full subjects to top-level\n if(!_isSubjectReference(node)) {\n flattened.push(node);\n }\n }\n return flattened;\n};\n\n/**\n * Performs JSON-LD framing.\n *\n * @param input the expanded JSON-LD to frame.\n * @param frame the expanded JSON-LD frame to use.\n * @param options the framing options.\n *\n * @return the framed output.\n */\nProcessor.prototype.frame = function(input, frame, options) {\n // create framing state\n var state = {\n options: options,\n graphs: {'@default': {}, '@merged': {}},\n subjectStack: [],\n link: {}\n };\n\n // produce a map of all graphs and name each bnode\n // FIXME: currently uses subjects from @merged graph only\n var issuer = new IdentifierIssuer('_:b');\n _createNodeMap(input, state.graphs, '@merged', issuer);\n state.subjects = state.graphs['@merged'];\n\n // frame the subjects\n var framed = [];\n _frame(state, Object.keys(state.subjects).sort(), frame, framed, null);\n return framed;\n};\n\n/**\n * Performs normalization on the given RDF dataset.\n *\n * @param dataset the RDF dataset to normalize.\n * @param options the normalization options.\n * @param callback(err, normalized) called once the operation completes.\n */\nProcessor.prototype.normalize = function(dataset, options, callback) {\n if(options.algorithm === 'URDNA2015') {\n return new URDNA2015(options).main(dataset, callback);\n }\n if(options.algorithm === 'URGNA2012') {\n return new URGNA2012(options).main(dataset, callback);\n }\n callback(new Error(\n 'Invalid RDF Dataset Normalization algorithm: ' + options.algorithm));\n};\n\n/**\n * Converts an RDF dataset to JSON-LD.\n *\n * @param dataset the RDF dataset.\n * @param options the RDF serialization options.\n * @param callback(err, output) called once the operation completes.\n */\nProcessor.prototype.fromRDF = function(dataset, options, callback) {\n var defaultGraph = {};\n var graphMap = {'@default': defaultGraph};\n var referencedOnce = {};\n\n for(var name in dataset) {\n var graph = dataset[name];\n if(!(name in graphMap)) {\n graphMap[name] = {};\n }\n if(name !== '@default' && !(name in defaultGraph)) {\n defaultGraph[name] = {'@id': name};\n }\n var nodeMap = graphMap[name];\n for(var ti = 0; ti < graph.length; ++ti) {\n var triple = graph[ti];\n\n // get subject, predicate, object\n var s = triple.subject.value;\n var p = triple.predicate.value;\n var o = triple.object;\n\n if(!(s in nodeMap)) {\n nodeMap[s] = {'@id': s};\n }\n var node = nodeMap[s];\n\n var objectIsId = (o.type === 'IRI' || o.type === 'blank node');\n if(objectIsId && !(o.value in nodeMap)) {\n nodeMap[o.value] = {'@id': o.value};\n }\n\n if(p === RDF_TYPE && !options.useRdfType && objectIsId) {\n jsonld.addValue(node, '@type', o.value, {propertyIsArray: true});\n continue;\n }\n\n var value = _RDFToObject(o, options.useNativeTypes);\n jsonld.addValue(node, p, value, {propertyIsArray: true});\n\n // object may be an RDF list/partial list node but we can't know easily\n // until all triples are read\n if(objectIsId) {\n if(o.value === RDF_NIL) {\n // track rdf:nil uniquely per graph\n var object = nodeMap[o.value];\n if(!('usages' in object)) {\n object.usages = [];\n }\n object.usages.push({\n node: node,\n property: p,\n value: value\n });\n } else if(o.value in referencedOnce) {\n // object referenced more than once\n referencedOnce[o.value] = false;\n } else {\n // keep track of single reference\n referencedOnce[o.value] = {\n node: node,\n property: p,\n value: value\n };\n }\n }\n }\n }\n\n // convert linked lists to @list arrays\n for(var name in graphMap) {\n var graphObject = graphMap[name];\n\n // no @lists to be converted, continue\n if(!(RDF_NIL in graphObject)) {\n continue;\n }\n\n // iterate backwards through each RDF list\n var nil = graphObject[RDF_NIL];\n for(var i = 0; i < nil.usages.length; ++i) {\n var usage = nil.usages[i];\n var node = usage.node;\n var property = usage.property;\n var head = usage.value;\n var list = [];\n var listNodes = [];\n\n // ensure node is a well-formed list node; it must:\n // 1. Be referenced only once.\n // 2. Have an array for rdf:first that has 1 item.\n // 3. Have an array for rdf:rest that has 1 item.\n // 4. Have no keys other than: @id, rdf:first, rdf:rest, and,\n // optionally, @type where the value is rdf:List.\n var nodeKeyCount = Object.keys(node).length;\n while(property === RDF_REST &&\n _isObject(referencedOnce[node['@id']]) &&\n _isArray(node[RDF_FIRST]) && node[RDF_FIRST].length === 1 &&\n _isArray(node[RDF_REST]) && node[RDF_REST].length === 1 &&\n (nodeKeyCount === 3 || (nodeKeyCount === 4 && _isArray(node['@type']) &&\n node['@type'].length === 1 && node['@type'][0] === RDF_LIST))) {\n list.push(node[RDF_FIRST][0]);\n listNodes.push(node['@id']);\n\n // get next node, moving backwards through list\n usage = referencedOnce[node['@id']];\n node = usage.node;\n property = usage.property;\n head = usage.value;\n nodeKeyCount = Object.keys(node).length;\n\n // if node is not a blank node, then list head found\n if(node['@id'].indexOf('_:') !== 0) {\n break;\n }\n }\n\n // the list is nested in another list\n if(property === RDF_FIRST) {\n // empty list\n if(node['@id'] === RDF_NIL) {\n // can't convert rdf:nil to a @list object because it would\n // result in a list of lists which isn't supported\n continue;\n }\n\n // preserve list head\n head = graphObject[head['@id']][RDF_REST][0];\n list.pop();\n listNodes.pop();\n }\n\n // transform list into @list object\n delete head['@id'];\n head['@list'] = list.reverse();\n for(var j = 0; j < listNodes.length; ++j) {\n delete graphObject[listNodes[j]];\n }\n }\n\n delete nil.usages;\n }\n\n var result = [];\n var subjects = Object.keys(defaultGraph).sort();\n for(var i = 0; i < subjects.length; ++i) {\n var subject = subjects[i];\n var node = defaultGraph[subject];\n if(subject in graphMap) {\n var graph = node['@graph'] = [];\n var graphObject = graphMap[subject];\n var subjects_ = Object.keys(graphObject).sort();\n for(var si = 0; si < subjects_.length; ++si) {\n var node_ = graphObject[subjects_[si]];\n // only add full subjects to top-level\n if(!_isSubjectReference(node_)) {\n graph.push(node_);\n }\n }\n }\n // only add full subjects to top-level\n if(!_isSubjectReference(node)) {\n result.push(node);\n }\n }\n\n callback(null, result);\n};\n\n/**\n * Outputs an RDF dataset for the expanded JSON-LD input.\n *\n * @param input the expanded JSON-LD input.\n * @param options the RDF serialization options.\n *\n * @return the RDF dataset.\n */\nProcessor.prototype.toRDF = function(input, options) {\n // create node map for default graph (and any named graphs)\n var issuer = new IdentifierIssuer('_:b');\n var nodeMap = {'@default': {}};\n _createNodeMap(input, nodeMap, '@default', issuer);\n\n var dataset = {};\n var graphNames = Object.keys(nodeMap).sort();\n for(var i = 0; i < graphNames.length; ++i) {\n var graphName = graphNames[i];\n // skip relative IRIs\n if(graphName === '@default' || _isAbsoluteIri(graphName)) {\n dataset[graphName] = _graphToRDF(nodeMap[graphName], issuer, options);\n }\n }\n return dataset;\n};\n\n/**\n * Processes a local context and returns a new active context.\n *\n * @param activeCtx the current active context.\n * @param localCtx the local context to process.\n * @param options the context processing options.\n *\n * @return the new active context.\n */\nProcessor.prototype.processContext = function(activeCtx, localCtx, options) {\n // normalize local context to an array of @context objects\n if(_isObject(localCtx) && '@context' in localCtx &&\n _isArray(localCtx['@context'])) {\n localCtx = localCtx['@context'];\n }\n var ctxs = _isArray(localCtx) ? localCtx : [localCtx];\n\n // no contexts in array, clone existing context\n if(ctxs.length === 0) {\n return activeCtx.clone();\n }\n\n // process each context in order, update active context\n // on each iteration to ensure proper caching\n var rval = activeCtx;\n for(var i = 0; i < ctxs.length; ++i) {\n var ctx = ctxs[i];\n\n // reset to initial context\n if(ctx === null) {\n rval = activeCtx = _getInitialContext(options);\n continue;\n }\n\n // dereference @context key if present\n if(_isObject(ctx) && '@context' in ctx) {\n ctx = ctx['@context'];\n }\n\n // context must be an object by now, all URLs retrieved before this call\n if(!_isObject(ctx)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; @context must be an object.',\n 'jsonld.SyntaxError', {code: 'invalid local context', context: ctx});\n }\n\n // get context from cache if available\n if(jsonld.cache.activeCtx) {\n var cached = jsonld.cache.activeCtx.get(activeCtx, ctx);\n if(cached) {\n rval = activeCtx = cached;\n continue;\n }\n }\n\n // update active context and clone new one before updating\n activeCtx = rval;\n rval = rval.clone();\n\n // define context mappings for keys in local context\n var defined = {};\n\n // handle @base\n if('@base' in ctx) {\n var base = ctx['@base'];\n\n // clear base\n if(base === null) {\n base = null;\n } else if(!_isString(base)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; the value of \"@base\" in a ' +\n '@context must be a string or null.',\n 'jsonld.SyntaxError', {code: 'invalid base IRI', context: ctx});\n } else if(base !== '' && !_isAbsoluteIri(base)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; the value of \"@base\" in a ' +\n '@context must be an absolute IRI or the empty string.',\n 'jsonld.SyntaxError', {code: 'invalid base IRI', context: ctx});\n }\n\n if(base !== null) {\n base = jsonld.url.parse(base || '');\n }\n rval['@base'] = base;\n defined['@base'] = true;\n }\n\n // handle @vocab\n if('@vocab' in ctx) {\n var value = ctx['@vocab'];\n if(value === null) {\n delete rval['@vocab'];\n } else if(!_isString(value)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; the value of \"@vocab\" in a ' +\n '@context must be a string or null.',\n 'jsonld.SyntaxError', {code: 'invalid vocab mapping', context: ctx});\n } else if(!_isAbsoluteIri(value)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; the value of \"@vocab\" in a ' +\n '@context must be an absolute IRI.',\n 'jsonld.SyntaxError', {code: 'invalid vocab mapping', context: ctx});\n } else {\n rval['@vocab'] = value;\n }\n defined['@vocab'] = true;\n }\n\n // handle @language\n if('@language' in ctx) {\n var value = ctx['@language'];\n if(value === null) {\n delete rval['@language'];\n } else if(!_isString(value)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; the value of \"@language\" in a ' +\n '@context must be a string or null.',\n 'jsonld.SyntaxError',\n {code: 'invalid default language', context: ctx});\n } else {\n rval['@language'] = value.toLowerCase();\n }\n defined['@language'] = true;\n }\n\n // process all other keys\n for(var key in ctx) {\n _createTermDefinition(rval, ctx, key, defined);\n }\n\n // cache result\n if(jsonld.cache.activeCtx) {\n jsonld.cache.activeCtx.set(activeCtx, ctx, rval);\n }\n }\n\n return rval;\n};\n\n/**\n * Expands a language map.\n *\n * @param languageMap the language map to expand.\n *\n * @return the expanded language map.\n */\nfunction _expandLanguageMap(languageMap) {\n var rval = [];\n var keys = Object.keys(languageMap).sort();\n for(var ki = 0; ki < keys.length; ++ki) {\n var key = keys[ki];\n var val = languageMap[key];\n if(!_isArray(val)) {\n val = [val];\n }\n for(var vi = 0; vi < val.length; ++vi) {\n var item = val[vi];\n if(item === null) {\n // null values are allowed (8.5) but ignored (3.1)\n continue;\n }\n if(!_isString(item)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; language map values must be strings.',\n 'jsonld.SyntaxError',\n {code: 'invalid language map value', languageMap: languageMap});\n }\n rval.push({\n '@value': item,\n '@language': key.toLowerCase()\n });\n }\n }\n return rval;\n}\n\n/**\n * Labels the blank nodes in the given value using the given IdentifierIssuer.\n *\n * @param issuer the IdentifierIssuer to use.\n * @param element the element with blank nodes to rename.\n *\n * @return the element.\n */\nfunction _labelBlankNodes(issuer, element) {\n if(_isArray(element)) {\n for(var i = 0; i < element.length; ++i) {\n element[i] = _labelBlankNodes(issuer, element[i]);\n }\n } else if(_isList(element)) {\n element['@list'] = _labelBlankNodes(issuer, element['@list']);\n } else if(_isObject(element)) {\n // relabel blank node\n if(_isBlankNode(element)) {\n element['@id'] = issuer.getId(element['@id']);\n }\n\n // recursively apply to all keys\n var keys = Object.keys(element).sort();\n for(var ki = 0; ki < keys.length; ++ki) {\n var key = keys[ki];\n if(key !== '@id') {\n element[key] = _labelBlankNodes(issuer, element[key]);\n }\n }\n }\n\n return element;\n}\n\n/**\n * Expands the given value by using the coercion and keyword rules in the\n * given context.\n *\n * @param activeCtx the active context to use.\n * @param activeProperty the active property the value is associated with.\n * @param value the value to expand.\n *\n * @return the expanded value.\n */\nfunction _expandValue(activeCtx, activeProperty, value) {\n // nothing to expand\n if(value === null || value === undefined) {\n return null;\n }\n\n // special-case expand @id and @type (skips '@id' expansion)\n var expandedProperty = _expandIri(activeCtx, activeProperty, {vocab: true});\n if(expandedProperty === '@id') {\n return _expandIri(activeCtx, value, {base: true});\n } else if(expandedProperty === '@type') {\n return _expandIri(activeCtx, value, {vocab: true, base: true});\n }\n\n // get type definition from context\n var type = jsonld.getContextValue(activeCtx, activeProperty, '@type');\n\n // do @id expansion (automatic for @graph)\n if(type === '@id' || (expandedProperty === '@graph' && _isString(value))) {\n return {'@id': _expandIri(activeCtx, value, {base: true})};\n }\n // do @id expansion w/vocab\n if(type === '@vocab') {\n return {'@id': _expandIri(activeCtx, value, {vocab: true, base: true})};\n }\n\n // do not expand keyword values\n if(_isKeyword(expandedProperty)) {\n return value;\n }\n\n var rval = {};\n\n if(type !== null) {\n // other type\n rval['@type'] = type;\n } else if(_isString(value)) {\n // check for language tagging for strings\n var language = jsonld.getContextValue(\n activeCtx, activeProperty, '@language');\n if(language !== null) {\n rval['@language'] = language;\n }\n }\n // do conversion of values that aren't basic JSON types to strings\n if(['boolean', 'number', 'string'].indexOf(typeof value) === -1) {\n value = value.toString();\n }\n rval['@value'] = value;\n\n return rval;\n}\n\n/**\n * Creates an array of RDF triples for the given graph.\n *\n * @param graph the graph to create RDF triples for.\n * @param issuer a IdentifierIssuer for assigning blank node names.\n * @param options the RDF serialization options.\n *\n * @return the array of RDF triples for the given graph.\n */\nfunction _graphToRDF(graph, issuer, options) {\n var rval = [];\n\n var ids = Object.keys(graph).sort();\n for(var i = 0; i < ids.length; ++i) {\n var id = ids[i];\n var node = graph[id];\n var properties = Object.keys(node).sort();\n for(var pi = 0; pi < properties.length; ++pi) {\n var property = properties[pi];\n var items = node[property];\n if(property === '@type') {\n property = RDF_TYPE;\n } else if(_isKeyword(property)) {\n continue;\n }\n\n for(var ii = 0; ii < items.length; ++ii) {\n var item = items[ii];\n\n // RDF subject\n var subject = {};\n subject.type = (id.indexOf('_:') === 0) ? 'blank node' : 'IRI';\n subject.value = id;\n\n // skip relative IRI subjects\n if(!_isAbsoluteIri(id)) {\n continue;\n }\n\n // RDF predicate\n var predicate = {};\n predicate.type = (property.indexOf('_:') === 0) ? 'blank node' : 'IRI';\n predicate.value = property;\n\n // skip relative IRI predicates\n if(!_isAbsoluteIri(property)) {\n continue;\n }\n\n // skip blank node predicates unless producing generalized RDF\n if(predicate.type === 'blank node' && !options.produceGeneralizedRdf) {\n continue;\n }\n\n // convert @list to triples\n if(_isList(item)) {\n _listToRDF(item['@list'], issuer, subject, predicate, rval);\n } else {\n // convert value or node object to triple\n var object = _objectToRDF(item);\n // skip null objects (they are relative IRIs)\n if(object) {\n rval.push({subject: subject, predicate: predicate, object: object});\n }\n }\n }\n }\n }\n\n return rval;\n}\n\n/**\n * Converts a @list value into linked list of blank node RDF triples\n * (an RDF collection).\n *\n * @param list the @list value.\n * @param issuer a IdentifierIssuer for assigning blank node names.\n * @param subject the subject for the head of the list.\n * @param predicate the predicate for the head of the list.\n * @param triples the array of triples to append to.\n */\nfunction _listToRDF(list, issuer, subject, predicate, triples) {\n var first = {type: 'IRI', value: RDF_FIRST};\n var rest = {type: 'IRI', value: RDF_REST};\n var nil = {type: 'IRI', value: RDF_NIL};\n\n for(var i = 0; i < list.length; ++i) {\n var item = list[i];\n\n var blankNode = {type: 'blank node', value: issuer.getId()};\n triples.push({subject: subject, predicate: predicate, object: blankNode});\n\n subject = blankNode;\n predicate = first;\n var object = _objectToRDF(item);\n\n // skip null objects (they are relative IRIs)\n if(object) {\n triples.push({subject: subject, predicate: predicate, object: object});\n }\n\n predicate = rest;\n }\n\n triples.push({subject: subject, predicate: predicate, object: nil});\n}\n\n/**\n * Converts a JSON-LD value object to an RDF literal or a JSON-LD string or\n * node object to an RDF resource.\n *\n * @param item the JSON-LD value or node object.\n *\n * @return the RDF literal or RDF resource.\n */\nfunction _objectToRDF(item) {\n var object = {};\n\n // convert value object to RDF\n if(_isValue(item)) {\n object.type = 'literal';\n var value = item['@value'];\n var datatype = item['@type'] || null;\n\n // convert to XSD datatypes as appropriate\n if(_isBoolean(value)) {\n object.value = value.toString();\n object.datatype = datatype || XSD_BOOLEAN;\n } else if(_isDouble(value) || datatype === XSD_DOUBLE) {\n if(!_isDouble(value)) {\n value = parseFloat(value);\n }\n // canonical double representation\n object.value = value.toExponential(15).replace(/(\\d)0*e\\+?/, '$1E');\n object.datatype = datatype || XSD_DOUBLE;\n } else if(_isNumber(value)) {\n object.value = value.toFixed(0);\n object.datatype = datatype || XSD_INTEGER;\n } else if('@language' in item) {\n object.value = value;\n object.datatype = datatype || RDF_LANGSTRING;\n object.language = item['@language'];\n } else {\n object.value = value;\n object.datatype = datatype || XSD_STRING;\n }\n } else {\n // convert string/node object to RDF\n var id = _isObject(item) ? item['@id'] : item;\n object.type = (id.indexOf('_:') === 0) ? 'blank node' : 'IRI';\n object.value = id;\n }\n\n // skip relative IRIs\n if(object.type === 'IRI' && !_isAbsoluteIri(object.value)) {\n return null;\n }\n\n return object;\n}\n\n/**\n * Converts an RDF triple object to a JSON-LD object.\n *\n * @param o the RDF triple object to convert.\n * @param useNativeTypes true to output native types, false not to.\n *\n * @return the JSON-LD object.\n */\nfunction _RDFToObject(o, useNativeTypes) {\n // convert IRI/blank node object to JSON-LD\n if(o.type === 'IRI' || o.type === 'blank node') {\n return {'@id': o.value};\n }\n\n // convert literal to JSON-LD\n var rval = {'@value': o.value};\n\n // add language\n if(o.language) {\n rval['@language'] = o.language;\n } else {\n var type = o.datatype;\n if(!type) {\n type = XSD_STRING;\n }\n // use native types for certain xsd types\n if(useNativeTypes) {\n if(type === XSD_BOOLEAN) {\n if(rval['@value'] === 'true') {\n rval['@value'] = true;\n } else if(rval['@value'] === 'false') {\n rval['@value'] = false;\n }\n } else if(_isNumeric(rval['@value'])) {\n if(type === XSD_INTEGER) {\n var i = parseInt(rval['@value'], 10);\n if(i.toFixed(0) === rval['@value']) {\n rval['@value'] = i;\n }\n } else if(type === XSD_DOUBLE) {\n rval['@value'] = parseFloat(rval['@value']);\n }\n }\n // do not add native type\n if([XSD_BOOLEAN, XSD_INTEGER, XSD_DOUBLE, XSD_STRING]\n .indexOf(type) === -1) {\n rval['@type'] = type;\n }\n } else if(type !== XSD_STRING) {\n rval['@type'] = type;\n }\n }\n\n return rval;\n}\n\n/**\n * Compares two RDF triples for equality.\n *\n * @param t1 the first triple.\n * @param t2 the second triple.\n *\n * @return true if the triples are the same, false if not.\n */\nfunction _compareRDFTriples(t1, t2) {\n var attrs = ['subject', 'predicate', 'object'];\n for(var i = 0; i < attrs.length; ++i) {\n var attr = attrs[i];\n if(t1[attr].type !== t2[attr].type || t1[attr].value !== t2[attr].value) {\n return false;\n }\n }\n if(t1.object.language !== t2.object.language) {\n return false;\n }\n if(t1.object.datatype !== t2.object.datatype) {\n return false;\n }\n return true;\n}\n\n/////////////////////////////// DEFINE URDNA2015 //////////////////////////////\n\nvar URDNA2015 = (function() {\n\nvar POSITIONS = {'subject': 's', 'object': 'o', 'name': 'g'};\n\nvar Normalize = function(options) {\n options = options || {};\n this.name = 'URDNA2015';\n this.options = options;\n this.blankNodeInfo = {};\n this.hashToBlankNodes = {};\n this.canonicalIssuer = new IdentifierIssuer('_:c14n');\n this.quads = [];\n this.schedule = {};\n if('maxCallStackDepth' in options) {\n this.schedule.MAX_DEPTH = options.maxCallStackDepth;\n } else {\n this.schedule.MAX_DEPTH = 500;\n }\n if('maxTotalCallStackDepth' in options) {\n this.schedule.MAX_TOTAL_DEPTH = options.maxCallStackDepth;\n } else {\n this.schedule.MAX_TOTAL_DEPTH = 0xFFFFFFFF;\n }\n this.schedule.depth = 0;\n this.schedule.totalDepth = 0;\n if('timeSlice' in options) {\n this.schedule.timeSlice = options.timeSlice;\n } else {\n // milliseconds\n this.schedule.timeSlice = 10;\n }\n};\n\n// do some work in a time slice, but in serial\nNormalize.prototype.doWork = function(fn, callback) {\n var schedule = this.schedule;\n\n if(schedule.totalDepth >= schedule.MAX_TOTAL_DEPTH) {\n return callback(new Error(\n 'Maximum total call stack depth exceeded; normalization aborting.'));\n }\n\n (function work() {\n if(schedule.depth === schedule.MAX_DEPTH) {\n // stack too deep, run on next tick\n schedule.depth = 0;\n schedule.running = false;\n return jsonld.nextTick(work);\n }\n\n // if not yet running, force run\n var now = new Date().getTime();\n if(!schedule.running) {\n schedule.start = new Date().getTime();\n schedule.deadline = schedule.start + schedule.timeSlice;\n }\n\n // TODO: should also include an estimate of expectedWorkTime\n if(now < schedule.deadline) {\n schedule.running = true;\n schedule.depth++;\n schedule.totalDepth++;\n return fn(function(err, result) {\n schedule.depth--;\n schedule.totalDepth--;\n callback(err, result);\n });\n }\n\n // not enough time left in this slice, run after letting browser\n // do some other things\n schedule.depth = 0;\n schedule.running = false;\n jsonld.setImmediate(work);\n })();\n};\n\n// asynchronously loop\nNormalize.prototype.forEach = function(iterable, fn, callback) {\n var self = this;\n var iterator;\n var idx = 0;\n var length;\n if(_isArray(iterable)) {\n length = iterable.length;\n iterator = function() {\n if(idx === length) {\n return false;\n }\n iterator.value = iterable[idx++];\n iterator.key = idx;\n return true;\n };\n } else {\n var keys = Object.keys(iterable);\n length = keys.length;\n iterator = function() {\n if(idx === length) {\n return false;\n }\n iterator.key = keys[idx++];\n iterator.value = iterable[iterator.key];\n return true;\n };\n }\n\n (function iterate(err, result) {\n if(err) {\n return callback(err);\n }\n if(iterator()) {\n return self.doWork(function() {\n fn(iterator.value, iterator.key, iterate);\n });\n }\n callback();\n })();\n};\n\n// asynchronous waterfall\nNormalize.prototype.waterfall = function(fns, callback) {\n var self = this;\n self.forEach(fns, function(fn, idx, callback) {\n self.doWork(fn, callback);\n }, callback);\n};\n\n// asynchronous while\nNormalize.prototype.whilst = function(condition, fn, callback) {\n var self = this;\n (function loop(err) {\n if(err) {\n return callback(err);\n }\n if(!condition()) {\n return callback();\n }\n self.doWork(fn, loop);\n })();\n};\n\n// 4.4) Normalization Algorithm\nNormalize.prototype.main = function(dataset, callback) {\n var self = this;\n self.schedule.start = new Date().getTime();\n var result;\n\n // handle invalid output format\n if(self.options.format) {\n if(self.options.format !== 'application/nquads') {\n return callback(new JsonLdError(\n 'Unknown output format.',\n 'jsonld.UnknownFormat', {format: self.options.format}));\n }\n }\n\n // 1) Create the normalization state.\n\n // Note: Optimize by generating non-normalized blank node map concurrently.\n var nonNormalized = {};\n\n self.waterfall([\n function(callback) {\n // 2) For every quad in input dataset:\n self.forEach(dataset, function(triples, graphName, callback) {\n if(graphName === '@default') {\n graphName = null;\n }\n self.forEach(triples, function(quad, idx, callback) {\n if(graphName !== null) {\n if(graphName.indexOf('_:') === 0) {\n quad.name = {type: 'blank node', value: graphName};\n } else {\n quad.name = {type: 'IRI', value: graphName};\n }\n }\n self.quads.push(quad);\n\n // 2.1) For each blank node that occurs in the quad, add a reference\n // to the quad using the blank node identifier in the blank node to\n // quads map, creating a new entry if necessary.\n self.forEachComponent(quad, function(component) {\n if(component.type !== 'blank node') {\n return;\n }\n var id = component.value;\n if(id in self.blankNodeInfo) {\n self.blankNodeInfo[id].quads.push(quad);\n } else {\n nonNormalized[id] = true;\n self.blankNodeInfo[id] = {quads: [quad]};\n }\n });\n callback();\n }, callback);\n }, callback);\n },\n function(callback) {\n // 3) Create a list of non-normalized blank node identifiers\n // non-normalized identifiers and populate it using the keys from the\n // blank node to quads map.\n // Note: We use a map here and it was generated during step 2.\n\n // 4) Initialize simple, a boolean flag, to true.\n var simple = true;\n\n // 5) While simple is true, issue canonical identifiers for blank nodes:\n self.whilst(function() { return simple; }, function(callback) {\n // 5.1) Set simple to false.\n simple = false;\n\n // 5.2) Clear hash to blank nodes map.\n self.hashToBlankNodes = {};\n\n self.waterfall([\n function(callback) {\n // 5.3) For each blank node identifier identifier in non-normalized\n // identifiers:\n self.forEach(nonNormalized, function(value, id, callback) {\n // 5.3.1) Create a hash, hash, according to the Hash First Degree\n // Quads algorithm.\n self.hashFirstDegreeQuads(id, function(err, hash) {\n if(err) {\n return callback(err);\n }\n // 5.3.2) Add hash and identifier to hash to blank nodes map,\n // creating a new entry if necessary.\n if(hash in self.hashToBlankNodes) {\n self.hashToBlankNodes[hash].push(id);\n } else {\n self.hashToBlankNodes[hash] = [id];\n }\n callback();\n });\n }, callback);\n },\n function(callback) {\n // 5.4) For each hash to identifier list mapping in hash to blank\n // nodes map, lexicographically-sorted by hash:\n var hashes = Object.keys(self.hashToBlankNodes).sort();\n self.forEach(hashes, function(hash, i, callback) {\n // 5.4.1) If the length of identifier list is greater than 1,\n // continue to the next mapping.\n var idList = self.hashToBlankNodes[hash];\n if(idList.length > 1) {\n return callback();\n }\n\n // 5.4.2) Use the Issue Identifier algorithm, passing canonical\n // issuer and the single blank node identifier in identifier\n // list, identifier, to issue a canonical replacement identifier\n // for identifier.\n // TODO: consider changing `getId` to `issue`\n var id = idList[0];\n self.canonicalIssuer.getId(id);\n\n // 5.4.3) Remove identifier from non-normalized identifiers.\n delete nonNormalized[id];\n\n // 5.4.4) Remove hash from the hash to blank nodes map.\n delete self.hashToBlankNodes[hash];\n\n // 5.4.5) Set simple to true.\n simple = true;\n callback();\n }, callback);\n }\n ], callback);\n }, callback);\n },\n function(callback) {\n // 6) For each hash to identifier list mapping in hash to blank nodes map,\n // lexicographically-sorted by hash:\n var hashes = Object.keys(self.hashToBlankNodes).sort();\n self.forEach(hashes, function(hash, idx, callback) {\n // 6.1) Create hash path list where each item will be a result of\n // running the Hash N-Degree Quads algorithm.\n var hashPathList = [];\n\n // 6.2) For each blank node identifier identifier in identifier list:\n var idList = self.hashToBlankNodes[hash];\n self.waterfall([\n function(callback) {\n self.forEach(idList, function(id, idx, callback) {\n // 6.2.1) If a canonical identifier has already been issued for\n // identifier, continue to the next identifier.\n if(self.canonicalIssuer.hasId(id)) {\n return callback();\n }\n\n // 6.2.2) Create temporary issuer, an identifier issuer\n // initialized with the prefix _:b.\n var issuer = new IdentifierIssuer('_:b');\n\n // 6.2.3) Use the Issue Identifier algorithm, passing temporary\n // issuer and identifier, to issue a new temporary blank node\n // identifier for identifier.\n issuer.getId(id);\n\n // 6.2.4) Run the Hash N-Degree Quads algorithm, passing\n // temporary issuer, and append the result to the hash path list.\n self.hashNDegreeQuads(id, issuer, function(err, result) {\n if(err) {\n return callback(err);\n }\n hashPathList.push(result);\n callback();\n });\n }, callback);\n },\n function(callback) {\n // 6.3) For each result in the hash path list,\n // lexicographically-sorted by the hash in result:\n hashPathList.sort(function(a, b) {\n return (a.hash < b.hash) ? -1 : ((a.hash > b.hash) ? 1 : 0);\n });\n self.forEach(hashPathList, function(result, idx, callback) {\n // 6.3.1) For each blank node identifier, existing identifier,\n // that was issued a temporary identifier by identifier issuer\n // in result, issue a canonical identifier, in the same order,\n // using the Issue Identifier algorithm, passing canonical\n // issuer and existing identifier.\n for(var existing in result.issuer.existing) {\n self.canonicalIssuer.getId(existing);\n }\n callback();\n }, callback);\n }\n ], callback);\n }, callback);\n }, function(callback) {\n /* Note: At this point all blank nodes in the set of RDF quads have been\n assigned canonical identifiers, which have been stored in the canonical\n issuer. Here each quad is updated by assigning each of its blank nodes\n its new identifier. */\n\n // 7) For each quad, quad, in input dataset:\n var normalized = [];\n self.waterfall([\n function(callback) {\n self.forEach(self.quads, function(quad, idx, callback) {\n // 7.1) Create a copy, quad copy, of quad and replace any existing\n // blank node identifiers using the canonical identifiers\n // previously issued by canonical issuer.\n // Note: We optimize away the copy here.\n self.forEachComponent(quad, function(component) {\n if(component.type === 'blank node' &&\n component.value.indexOf(self.canonicalIssuer.prefix) !== 0) {\n component.value = self.canonicalIssuer.getId(component.value);\n }\n });\n // 7.2) Add quad copy to the normalized dataset.\n normalized.push(_toNQuad(quad));\n callback();\n }, callback);\n },\n function(callback) {\n // sort normalized output\n normalized.sort();\n\n // 8) Return the normalized dataset.\n if(self.options.format === 'application/nquads') {\n result = normalized.join('');\n return callback();\n }\n\n result = _parseNQuads(normalized.join(''));\n callback();\n }\n ], callback);\n }\n ], function(err) {\n callback(err, result);\n });\n};\n\n// 4.6) Hash First Degree Quads\nNormalize.prototype.hashFirstDegreeQuads = function(id, callback) {\n var self = this;\n\n // return cached hash\n var info = self.blankNodeInfo[id];\n if('hash' in info) {\n return callback(null, info.hash);\n }\n\n // 1) Initialize nquads to an empty list. It will be used to store quads in\n // N-Quads format.\n var nquads = [];\n\n // 2) Get the list of quads quads associated with the reference blank node\n // identifier in the blank node to quads map.\n var quads = info.quads;\n\n // 3) For each quad quad in quads:\n self.forEach(quads, function(quad, idx, callback) {\n // 3.1) Serialize the quad in N-Quads format with the following special\n // rule:\n\n // 3.1.1) If any component in quad is an blank node, then serialize it\n // using a special identifier as follows:\n var copy = {predicate: quad.predicate};\n self.forEachComponent(quad, function(component, key) {\n // 3.1.2) If the blank node's existing blank node identifier matches the\n // reference blank node identifier then use the blank node identifier _:a,\n // otherwise, use the blank node identifier _:z.\n copy[key] = self.modifyFirstDegreeComponent(id, component, key);\n });\n nquads.push(_toNQuad(copy));\n callback();\n }, function(err) {\n if(err) {\n return callback(err);\n }\n // 4) Sort nquads in lexicographical order.\n nquads.sort();\n\n // 5) Return the hash that results from passing the sorted, joined nquads\n // through the hash algorithm.\n info.hash = NormalizeHash.hashNQuads(self.name, nquads);\n callback(null, info.hash);\n });\n};\n\n// helper for modifying component during Hash First Degree Quads\nNormalize.prototype.modifyFirstDegreeComponent = function(id, component) {\n if(component.type !== 'blank node') {\n return component;\n }\n component = _clone(component);\n component.value = (component.value === id ? '_:a' : '_:z');\n return component;\n};\n\n// 4.7) Hash Related Blank Node\nNormalize.prototype.hashRelatedBlankNode = function(\n related, quad, issuer, position, callback) {\n var self = this;\n\n // 1) Set the identifier to use for related, preferring first the canonical\n // identifier for related if issued, second the identifier issued by issuer\n // if issued, and last, if necessary, the result of the Hash First Degree\n // Quads algorithm, passing related.\n var id;\n self.waterfall([\n function(callback) {\n if(self.canonicalIssuer.hasId(related)) {\n id = self.canonicalIssuer.getId(related);\n return callback();\n }\n if(issuer.hasId(related)) {\n id = issuer.getId(related);\n return callback();\n }\n self.hashFirstDegreeQuads(related, function(err, hash) {\n if(err) {\n return callback(err);\n }\n id = hash;\n callback();\n });\n }\n ], function(err) {\n if(err) {\n return callback(err);\n }\n\n // 2) Initialize a string input to the value of position.\n // Note: We use a hash object instead.\n var md = new NormalizeHash(self.name);\n md.update(position);\n\n // 3) If position is not g, append <, the value of the predicate in quad,\n // and > to input.\n if(position !== 'g') {\n md.update(self.getRelatedPredicate(quad));\n }\n\n // 4) Append identifier to input.\n md.update(id);\n\n // 5) Return the hash that results from passing input through the hash\n // algorithm.\n return callback(null, md.digest());\n });\n};\n\n// helper for getting a related predicate\nNormalize.prototype.getRelatedPredicate = function(quad) {\n return '<' + quad.predicate.value + '>';\n};\n\n// 4.8) Hash N-Degree Quads\nNormalize.prototype.hashNDegreeQuads = function(id, issuer, callback) {\n var self = this;\n\n // 1) Create a hash to related blank nodes map for storing hashes that\n // identify related blank nodes.\n // Note: 2) and 3) handled within `createHashToRelated`\n var hashToRelated;\n var md = new NormalizeHash(self.name);\n self.waterfall([\n function(callback) {\n self.createHashToRelated(id, issuer, function(err, result) {\n if(err) {\n return callback(err);\n }\n hashToRelated = result;\n callback();\n });\n },\n function(callback) {\n // 4) Create an empty string, data to hash.\n // Note: We created a hash object `md` above instead.\n\n // 5) For each related hash to blank node list mapping in hash to related\n // blank nodes map, sorted lexicographically by related hash:\n var hashes = Object.keys(hashToRelated).sort();\n self.forEach(hashes, function(hash, idx, callback) {\n // 5.1) Append the related hash to the data to hash.\n md.update(hash);\n\n // 5.2) Create a string chosen path.\n var chosenPath = '';\n\n // 5.3) Create an unset chosen issuer variable.\n var chosenIssuer;\n\n // 5.4) For each permutation of blank node list:\n var permutator = new Permutator(hashToRelated[hash]);\n self.whilst(\n function() { return permutator.hasNext(); },\n function(nextPermutation) {\n var permutation = permutator.next();\n\n // 5.4.1) Create a copy of issuer, issuer copy.\n var issuerCopy = issuer.clone();\n\n // 5.4.2) Create a string path.\n var path = '';\n\n // 5.4.3) Create a recursion list, to store blank node identifiers\n // that must be recursively processed by this algorithm.\n var recursionList = [];\n\n self.waterfall([\n function(callback) {\n // 5.4.4) For each related in permutation:\n self.forEach(permutation, function(related, idx, callback) {\n // 5.4.4.1) If a canonical identifier has been issued for\n // related, append it to path.\n if(self.canonicalIssuer.hasId(related)) {\n path += self.canonicalIssuer.getId(related);\n } else {\n // 5.4.4.2) Otherwise:\n // 5.4.4.2.1) If issuer copy has not issued an identifier for\n // related, append related to recursion list.\n if(!issuerCopy.hasId(related)) {\n recursionList.push(related);\n }\n // 5.4.4.2.2) Use the Issue Identifier algorithm, passing\n // issuer copy and related and append the result to path.\n path += issuerCopy.getId(related);\n }\n\n // 5.4.4.3) If chosen path is not empty and the length of path\n // is greater than or equal to the length of chosen path and\n // path is lexicographically greater than chosen path, then\n // skip to the next permutation.\n if(chosenPath.length !== 0 &&\n path.length >= chosenPath.length && path > chosenPath) {\n // FIXME: may cause inaccurate total depth calculation\n return nextPermutation();\n }\n callback();\n }, callback);\n },\n function(callback) {\n // 5.4.5) For each related in recursion list:\n self.forEach(recursionList, function(related, idx, callback) {\n // 5.4.5.1) Set result to the result of recursively executing\n // the Hash N-Degree Quads algorithm, passing related for\n // identifier and issuer copy for path identifier issuer.\n self.hashNDegreeQuads(\n related, issuerCopy, function(err, result) {\n if(err) {\n return callback(err);\n }\n\n // 5.4.5.2) Use the Issue Identifier algorithm, passing issuer\n // copy and related and append the result to path.\n path += issuerCopy.getId(related);\n\n // 5.4.5.3) Append <, the hash in result, and > to path.\n path += '<' + result.hash + '>';\n\n // 5.4.5.4) Set issuer copy to the identifier issuer in\n // result.\n issuerCopy = result.issuer;\n\n // 5.4.5.5) If chosen path is not empty and the length of path\n // is greater than or equal to the length of chosen path and\n // path is lexicographically greater than chosen path, then\n // skip to the next permutation.\n if(chosenPath.length !== 0 &&\n path.length >= chosenPath.length && path > chosenPath) {\n // FIXME: may cause inaccurate total depth calculation\n return nextPermutation();\n }\n callback();\n });\n }, callback);\n },\n function(callback) {\n // 5.4.6) If chosen path is empty or path is lexicographically\n // less than chosen path, set chosen path to path and chosen\n // issuer to issuer copy.\n if(chosenPath.length === 0 || path < chosenPath) {\n chosenPath = path;\n chosenIssuer = issuerCopy;\n }\n callback();\n }\n ], nextPermutation);\n }, function(err) {\n if(err) {\n return callback(err);\n }\n\n // 5.5) Append chosen path to data to hash.\n md.update(chosenPath);\n\n // 5.6) Replace issuer, by reference, with chosen issuer.\n issuer = chosenIssuer;\n callback();\n });\n }, callback);\n }\n ], function(err) {\n // 6) Return issuer and the hash that results from passing data to hash\n // through the hash algorithm.\n callback(err, {hash: md.digest(), issuer: issuer});\n });\n};\n\n// helper for creating hash to related blank nodes map\nNormalize.prototype.createHashToRelated = function(id, issuer, callback) {\n var self = this;\n\n // 1) Create a hash to related blank nodes map for storing hashes that\n // identify related blank nodes.\n var hashToRelated = {};\n\n // 2) Get a reference, quads, to the list of quads in the blank node to\n // quads map for the key identifier.\n var quads = self.blankNodeInfo[id].quads;\n\n // 3) For each quad in quads:\n self.forEach(quads, function(quad, idx, callback) {\n // 3.1) For each component in quad, if component is the subject, object,\n // and graph name and it is a blank node that is not identified by\n // identifier:\n self.forEach(quad, function(component, key, callback) {\n if(key === 'predicate' ||\n !(component.type === 'blank node' && component.value !== id)) {\n return callback();\n }\n // 3.1.1) Set hash to the result of the Hash Related Blank Node\n // algorithm, passing the blank node identifier for component as\n // related, quad, path identifier issuer as issuer, and position as\n // either s, o, or g based on whether component is a subject, object,\n // graph name, respectively.\n var related = component.value;\n var position = POSITIONS[key];\n self.hashRelatedBlankNode(\n related, quad, issuer, position, function(err, hash) {\n if(err) {\n return callback(err);\n }\n // 3.1.2) Add a mapping of hash to the blank node identifier for\n // component to hash to related blank nodes map, adding an entry as\n // necessary.\n if(hash in hashToRelated) {\n hashToRelated[hash].push(related);\n } else {\n hashToRelated[hash] = [related];\n }\n callback();\n });\n }, callback);\n }, function(err) {\n callback(err, hashToRelated);\n });\n};\n\n// helper that iterates over quad components (skips predicate)\nNormalize.prototype.forEachComponent = function(quad, op) {\n for(var key in quad) {\n // skip `predicate`\n if(key === 'predicate') {\n continue;\n }\n op(quad[key], key, quad);\n }\n};\n\nreturn Normalize;\n\n})(); // end of define URDNA2015\n\n/////////////////////////////// DEFINE URGNA2012 //////////////////////////////\n\nvar URGNA2012 = (function() {\n\nvar Normalize = function(options) {\n URDNA2015.call(this, options);\n this.name = 'URGNA2012';\n};\nNormalize.prototype = new URDNA2015();\n\n// helper for modifying component during Hash First Degree Quads\nNormalize.prototype.modifyFirstDegreeComponent = function(id, component, key) {\n if(component.type !== 'blank node') {\n return component;\n }\n component = _clone(component);\n if(key === 'name') {\n component.value = '_:g';\n } else {\n component.value = (component.value === id ? '_:a' : '_:z');\n }\n return component;\n};\n\n// helper for getting a related predicate\nNormalize.prototype.getRelatedPredicate = function(quad) {\n return quad.predicate.value;\n};\n\n// helper for creating hash to related blank nodes map\nNormalize.prototype.createHashToRelated = function(id, issuer, callback) {\n var self = this;\n\n // 1) Create a hash to related blank nodes map for storing hashes that\n // identify related blank nodes.\n var hashToRelated = {};\n\n // 2) Get a reference, quads, to the list of quads in the blank node to\n // quads map for the key identifier.\n var quads = self.blankNodeInfo[id].quads;\n\n // 3) For each quad in quads:\n self.forEach(quads, function(quad, idx, callback) {\n // 3.1) If the quad's subject is a blank node that does not match\n // identifier, set hash to the result of the Hash Related Blank Node\n // algorithm, passing the blank node identifier for subject as related,\n // quad, path identifier issuer as issuer, and p as position.\n var position;\n var related;\n if(quad.subject.type === 'blank node' && quad.subject.value !== id) {\n related = quad.subject.value;\n position = 'p';\n } else if(quad.object.type === 'blank node' && quad.object.value !== id) {\n // 3.2) Otherwise, if quad's object is a blank node that does not match\n // identifier, to the result of the Hash Related Blank Node algorithm,\n // passing the blank node identifier for object as related, quad, path\n // identifier issuer as issuer, and r as position.\n related = quad.object.value;\n position = 'r';\n } else {\n // 3.3) Otherwise, continue to the next quad.\n return callback();\n }\n // 3.4) Add a mapping of hash to the blank node identifier for the\n // component that matched (subject or object) to hash to related blank\n // nodes map, adding an entry as necessary.\n self.hashRelatedBlankNode(\n related, quad, issuer, position, function(err, hash) {\n if(hash in hashToRelated) {\n hashToRelated[hash].push(related);\n } else {\n hashToRelated[hash] = [related];\n }\n callback();\n });\n }, function(err) {\n callback(err, hashToRelated);\n });\n};\n\nreturn Normalize;\n\n})(); // end of define URGNA2012\n\n/**\n * Recursively flattens the subjects in the given JSON-LD expanded input\n * into a node map.\n *\n * @param input the JSON-LD expanded input.\n * @param graphs a map of graph name to subject map.\n * @param graph the name of the current graph.\n * @param issuer the blank node identifier issuer.\n * @param name the name assigned to the current input if it is a bnode.\n * @param list the list to append to, null for none.\n */\nfunction _createNodeMap(input, graphs, graph, issuer, name, list) {\n // recurse through array\n if(_isArray(input)) {\n for(var i = 0; i < input.length; ++i) {\n _createNodeMap(input[i], graphs, graph, issuer, undefined, list);\n }\n return;\n }\n\n // add non-object to list\n if(!_isObject(input)) {\n if(list) {\n list.push(input);\n }\n return;\n }\n\n // add values to list\n if(_isValue(input)) {\n if('@type' in input) {\n var type = input['@type'];\n // rename @type blank node\n if(type.indexOf('_:') === 0) {\n input['@type'] = type = issuer.getId(type);\n }\n }\n if(list) {\n list.push(input);\n }\n return;\n }\n\n // Note: At this point, input must be a subject.\n\n // spec requires @type to be named first, so assign names early\n if('@type' in input) {\n var types = input['@type'];\n for(var i = 0; i < types.length; ++i) {\n var type = types[i];\n if(type.indexOf('_:') === 0) {\n issuer.getId(type);\n }\n }\n }\n\n // get name for subject\n if(_isUndefined(name)) {\n name = _isBlankNode(input) ? issuer.getId(input['@id']) : input['@id'];\n }\n\n // add subject reference to list\n if(list) {\n list.push({'@id': name});\n }\n\n // create new subject or merge into existing one\n var subjects = graphs[graph];\n var subject = subjects[name] = subjects[name] || {};\n subject['@id'] = name;\n var properties = Object.keys(input).sort();\n for(var pi = 0; pi < properties.length; ++pi) {\n var property = properties[pi];\n\n // skip @id\n if(property === '@id') {\n continue;\n }\n\n // handle reverse properties\n if(property === '@reverse') {\n var referencedNode = {'@id': name};\n var reverseMap = input['@reverse'];\n for(var reverseProperty in reverseMap) {\n var items = reverseMap[reverseProperty];\n for(var ii = 0; ii < items.length; ++ii) {\n var item = items[ii];\n var itemName = item['@id'];\n if(_isBlankNode(item)) {\n itemName = issuer.getId(itemName);\n }\n _createNodeMap(item, graphs, graph, issuer, itemName);\n jsonld.addValue(\n subjects[itemName], reverseProperty, referencedNode,\n {propertyIsArray: true, allowDuplicate: false});\n }\n }\n continue;\n }\n\n // recurse into graph\n if(property === '@graph') {\n // add graph subjects map entry\n if(!(name in graphs)) {\n graphs[name] = {};\n }\n var g = (graph === '@merged') ? graph : name;\n _createNodeMap(input[property], graphs, g, issuer);\n continue;\n }\n\n // copy non-@type keywords\n if(property !== '@type' && _isKeyword(property)) {\n if(property === '@index' && property in subject &&\n (input[property] !== subject[property] ||\n input[property]['@id'] !== subject[property]['@id'])) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; conflicting @index property detected.',\n 'jsonld.SyntaxError',\n {code: 'conflicting indexes', subject: subject});\n }\n subject[property] = input[property];\n continue;\n }\n\n // iterate over objects\n var objects = input[property];\n\n // if property is a bnode, assign it a new id\n if(property.indexOf('_:') === 0) {\n property = issuer.getId(property);\n }\n\n // ensure property is added for empty arrays\n if(objects.length === 0) {\n jsonld.addValue(subject, property, [], {propertyIsArray: true});\n continue;\n }\n for(var oi = 0; oi < objects.length; ++oi) {\n var o = objects[oi];\n\n if(property === '@type') {\n // rename @type blank nodes\n o = (o.indexOf('_:') === 0) ? issuer.getId(o) : o;\n }\n\n // handle embedded subject or subject reference\n if(_isSubject(o) || _isSubjectReference(o)) {\n // relabel blank node @id\n var id = _isBlankNode(o) ? issuer.getId(o['@id']) : o['@id'];\n\n // add reference and recurse\n jsonld.addValue(\n subject, property, {'@id': id},\n {propertyIsArray: true, allowDuplicate: false});\n _createNodeMap(o, graphs, graph, issuer, id);\n } else if(_isList(o)) {\n // handle @list\n var _list = [];\n _createNodeMap(o['@list'], graphs, graph, issuer, name, _list);\n o = {'@list': _list};\n jsonld.addValue(\n subject, property, o,\n {propertyIsArray: true, allowDuplicate: false});\n } else {\n // handle @value\n _createNodeMap(o, graphs, graph, issuer, name);\n jsonld.addValue(\n subject, property, o, {propertyIsArray: true, allowDuplicate: false});\n }\n }\n }\n}\n\nfunction _mergeNodeMaps(graphs) {\n // add all non-default graphs to default graph\n var defaultGraph = graphs['@default'];\n var graphNames = Object.keys(graphs).sort();\n for(var i = 0; i < graphNames.length; ++i) {\n var graphName = graphNames[i];\n if(graphName === '@default') {\n continue;\n }\n var nodeMap = graphs[graphName];\n var subject = defaultGraph[graphName];\n if(!subject) {\n defaultGraph[graphName] = subject = {\n '@id': graphName,\n '@graph': []\n };\n } else if(!('@graph' in subject)) {\n subject['@graph'] = [];\n }\n var graph = subject['@graph'];\n var ids = Object.keys(nodeMap).sort();\n for(var ii = 0; ii < ids.length; ++ii) {\n var node = nodeMap[ids[ii]];\n // only add full subjects\n if(!_isSubjectReference(node)) {\n graph.push(node);\n }\n }\n }\n return defaultGraph;\n}\n\n/**\n * Frames subjects according to the given frame.\n *\n * @param state the current framing state.\n * @param subjects the subjects to filter.\n * @param frame the frame.\n * @param parent the parent subject or top-level array.\n * @param property the parent property, initialized to null.\n */\nfunction _frame(state, subjects, frame, parent, property) {\n // validate the frame\n _validateFrame(frame);\n frame = frame[0];\n\n // get flags for current frame\n var options = state.options;\n var flags = {\n embed: _getFrameFlag(frame, options, 'embed'),\n explicit: _getFrameFlag(frame, options, 'explicit'),\n requireAll: _getFrameFlag(frame, options, 'requireAll')\n };\n\n // filter out subjects that match the frame\n var matches = _filterSubjects(state, subjects, frame, flags);\n\n // add matches to output\n var ids = Object.keys(matches).sort();\n for(var idx = 0; idx < ids.length; ++idx) {\n var id = ids[idx];\n var subject = matches[id];\n\n if(flags.embed === '@link' && id in state.link) {\n // TODO: may want to also match an existing linked subject against\n // the current frame ... so different frames could produce different\n // subjects that are only shared in-memory when the frames are the same\n\n // add existing linked subject\n _addFrameOutput(parent, property, state.link[id]);\n continue;\n }\n\n /* Note: In order to treat each top-level match as a compartmentalized\n result, clear the unique embedded subjects map when the property is null,\n which only occurs at the top-level. */\n if(property === null) {\n state.uniqueEmbeds = {};\n }\n\n // start output for subject\n var output = {};\n output['@id'] = id;\n state.link[id] = output;\n\n // if embed is @never or if a circular reference would be created by an\n // embed, the subject cannot be embedded, just add the reference;\n // note that a circular reference won't occur when the embed flag is\n // `@link` as the above check will short-circuit before reaching this point\n if(flags.embed === '@never' ||\n _createsCircularReference(subject, state.subjectStack)) {\n _addFrameOutput(parent, property, output);\n continue;\n }\n\n // if only the last match should be embedded\n if(flags.embed === '@last') {\n // remove any existing embed\n if(id in state.uniqueEmbeds) {\n _removeEmbed(state, id);\n }\n state.uniqueEmbeds[id] = {parent: parent, property: property};\n }\n\n // push matching subject onto stack to enable circular embed checks\n state.subjectStack.push(subject);\n\n // iterate over subject properties\n var props = Object.keys(subject).sort();\n for(var i = 0; i < props.length; i++) {\n var prop = props[i];\n\n // copy keywords to output\n if(_isKeyword(prop)) {\n output[prop] = _clone(subject[prop]);\n continue;\n }\n\n // explicit is on and property isn't in the frame, skip processing\n if(flags.explicit && !(prop in frame)) {\n continue;\n }\n\n // add objects\n var objects = subject[prop];\n for(var oi = 0; oi < objects.length; ++oi) {\n var o = objects[oi];\n\n // recurse into list\n if(_isList(o)) {\n // add empty list\n var list = {'@list': []};\n _addFrameOutput(output, prop, list);\n\n // add list objects\n var src = o['@list'];\n for(var n in src) {\n o = src[n];\n if(_isSubjectReference(o)) {\n var subframe = (prop in frame ?\n frame[prop][0]['@list'] : _createImplicitFrame(flags));\n // recurse into subject reference\n _frame(state, [o['@id']], subframe, list, '@list');\n } else {\n // include other values automatically\n _addFrameOutput(list, '@list', _clone(o));\n }\n }\n continue;\n }\n\n if(_isSubjectReference(o)) {\n // recurse into subject reference\n var subframe = (prop in frame ?\n frame[prop] : _createImplicitFrame(flags));\n _frame(state, [o['@id']], subframe, output, prop);\n } else {\n // include other values automatically\n _addFrameOutput(output, prop, _clone(o));\n }\n }\n }\n\n // handle defaults\n var props = Object.keys(frame).sort();\n for(var i = 0; i < props.length; ++i) {\n var prop = props[i];\n\n // skip keywords\n if(_isKeyword(prop)) {\n continue;\n }\n\n // if omit default is off, then include default values for properties\n // that appear in the next frame but are not in the matching subject\n var next = frame[prop][0];\n var omitDefaultOn = _getFrameFlag(next, options, 'omitDefault');\n if(!omitDefaultOn && !(prop in output)) {\n var preserve = '@null';\n if('@default' in next) {\n preserve = _clone(next['@default']);\n }\n if(!_isArray(preserve)) {\n preserve = [preserve];\n }\n output[prop] = [{'@preserve': preserve}];\n }\n }\n\n // add output to parent\n _addFrameOutput(parent, property, output);\n\n // pop matching subject from circular ref-checking stack\n state.subjectStack.pop();\n }\n}\n\n/**\n * Creates an implicit frame when recursing through subject matches. If\n * a frame doesn't have an explicit frame for a particular property, then\n * a wildcard child frame will be created that uses the same flags that the\n * parent frame used.\n *\n * @param flags the current framing flags.\n *\n * @return the implicit frame.\n */\nfunction _createImplicitFrame(flags) {\n var frame = {};\n for(var key in flags) {\n if(flags[key] !== undefined) {\n frame['@' + key] = [flags[key]];\n }\n }\n return [frame];\n}\n\n/**\n * Checks the current subject stack to see if embedding the given subject\n * would cause a circular reference.\n *\n * @param subjectToEmbed the subject to embed.\n * @param subjectStack the current stack of subjects.\n *\n * @return true if a circular reference would be created, false if not.\n */\nfunction _createsCircularReference(subjectToEmbed, subjectStack) {\n for(var i = subjectStack.length - 1; i >= 0; --i) {\n if(subjectStack[i]['@id'] === subjectToEmbed['@id']) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Gets the frame flag value for the given flag name.\n *\n * @param frame the frame.\n * @param options the framing options.\n * @param name the flag name.\n *\n * @return the flag value.\n */\nfunction _getFrameFlag(frame, options, name) {\n var flag = '@' + name;\n var rval = (flag in frame ? frame[flag][0] : options[name]);\n if(name === 'embed') {\n // default is \"@last\"\n // backwards-compatibility support for \"embed\" maps:\n // true => \"@last\"\n // false => \"@never\"\n if(rval === true) {\n rval = '@last';\n } else if(rval === false) {\n rval = '@never';\n } else if(rval !== '@always' && rval !== '@never' && rval !== '@link') {\n rval = '@last';\n }\n }\n return rval;\n}\n\n/**\n * Validates a JSON-LD frame, throwing an exception if the frame is invalid.\n *\n * @param frame the frame to validate.\n */\nfunction _validateFrame(frame) {\n if(!_isArray(frame) || frame.length !== 1 || !_isObject(frame[0])) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; a JSON-LD frame must be a single object.',\n 'jsonld.SyntaxError', {frame: frame});\n }\n}\n\n/**\n * Returns a map of all of the subjects that match a parsed frame.\n *\n * @param state the current framing state.\n * @param subjects the set of subjects to filter.\n * @param frame the parsed frame.\n * @param flags the frame flags.\n *\n * @return all of the matched subjects.\n */\nfunction _filterSubjects(state, subjects, frame, flags) {\n // filter subjects in @id order\n var rval = {};\n for(var i = 0; i < subjects.length; ++i) {\n var id = subjects[i];\n var subject = state.subjects[id];\n if(_filterSubject(subject, frame, flags)) {\n rval[id] = subject;\n }\n }\n return rval;\n}\n\n/**\n * Returns true if the given subject matches the given frame.\n *\n * @param subject the subject to check.\n * @param frame the frame to check.\n * @param flags the frame flags.\n *\n * @return true if the subject matches, false if not.\n */\nfunction _filterSubject(subject, frame, flags) {\n // check @type (object value means 'any' type, fall through to ducktyping)\n if('@type' in frame &&\n !(frame['@type'].length === 1 && _isObject(frame['@type'][0]))) {\n var types = frame['@type'];\n for(var i = 0; i < types.length; ++i) {\n // any matching @type is a match\n if(jsonld.hasValue(subject, '@type', types[i])) {\n return true;\n }\n }\n return false;\n }\n\n // check ducktype\n var wildcard = true;\n var matchesSome = false;\n for(var key in frame) {\n if(_isKeyword(key)) {\n // skip non-@id and non-@type\n if(key !== '@id' && key !== '@type') {\n continue;\n }\n wildcard = false;\n\n // check @id for a specific @id value\n if(key === '@id' && _isString(frame[key])) {\n if(subject[key] !== frame[key]) {\n return false;\n }\n matchesSome = true;\n continue;\n }\n }\n\n wildcard = false;\n\n if(key in subject) {\n // frame[key] === [] means do not match if property is present\n if(_isArray(frame[key]) && frame[key].length === 0 &&\n subject[key] !== undefined) {\n return false;\n }\n matchesSome = true;\n continue;\n }\n\n // all properties must match to be a duck unless a @default is specified\n var hasDefault = (_isArray(frame[key]) && _isObject(frame[key][0]) &&\n '@default' in frame[key][0]);\n if(flags.requireAll && !hasDefault) {\n return false;\n }\n }\n\n // return true if wildcard or subject matches some properties\n return wildcard || matchesSome;\n}\n\n/**\n * Removes an existing embed.\n *\n * @param state the current framing state.\n * @param id the @id of the embed to remove.\n */\nfunction _removeEmbed(state, id) {\n // get existing embed\n var embeds = state.uniqueEmbeds;\n var embed = embeds[id];\n var parent = embed.parent;\n var property = embed.property;\n\n // create reference to replace embed\n var subject = {'@id': id};\n\n // remove existing embed\n if(_isArray(parent)) {\n // replace subject with reference\n for(var i = 0; i < parent.length; ++i) {\n if(jsonld.compareValues(parent[i], subject)) {\n parent[i] = subject;\n break;\n }\n }\n } else {\n // replace subject with reference\n var useArray = _isArray(parent[property]);\n jsonld.removeValue(parent, property, subject, {propertyIsArray: useArray});\n jsonld.addValue(parent, property, subject, {propertyIsArray: useArray});\n }\n\n // recursively remove dependent dangling embeds\n var removeDependents = function(id) {\n // get embed keys as a separate array to enable deleting keys in map\n var ids = Object.keys(embeds);\n for(var i = 0; i < ids.length; ++i) {\n var next = ids[i];\n if(next in embeds && _isObject(embeds[next].parent) &&\n embeds[next].parent['@id'] === id) {\n delete embeds[next];\n removeDependents(next);\n }\n }\n };\n removeDependents(id);\n}\n\n/**\n * Adds framing output to the given parent.\n *\n * @param parent the parent to add to.\n * @param property the parent property.\n * @param output the output to add.\n */\nfunction _addFrameOutput(parent, property, output) {\n if(_isObject(parent)) {\n jsonld.addValue(parent, property, output, {propertyIsArray: true});\n } else {\n parent.push(output);\n }\n}\n\n/**\n * Removes the @preserve keywords as the last step of the framing algorithm.\n *\n * @param ctx the active context used to compact the input.\n * @param input the framed, compacted output.\n * @param options the compaction options used.\n *\n * @return the resulting output.\n */\nfunction _removePreserve(ctx, input, options) {\n // recurse through arrays\n if(_isArray(input)) {\n var output = [];\n for(var i = 0; i < input.length; ++i) {\n var result = _removePreserve(ctx, input[i], options);\n // drop nulls from arrays\n if(result !== null) {\n output.push(result);\n }\n }\n input = output;\n } else if(_isObject(input)) {\n // remove @preserve\n if('@preserve' in input) {\n if(input['@preserve'] === '@null') {\n return null;\n }\n return input['@preserve'];\n }\n\n // skip @values\n if(_isValue(input)) {\n return input;\n }\n\n // recurse through @lists\n if(_isList(input)) {\n input['@list'] = _removePreserve(ctx, input['@list'], options);\n return input;\n }\n\n // handle in-memory linked nodes\n var idAlias = _compactIri(ctx, '@id');\n if(idAlias in input) {\n var id = input[idAlias];\n if(id in options.link) {\n var idx = options.link[id].indexOf(input);\n if(idx === -1) {\n // prevent circular visitation\n options.link[id].push(input);\n } else {\n // already visited\n return options.link[id][idx];\n }\n } else {\n // prevent circular visitation\n options.link[id] = [input];\n }\n }\n\n // recurse through properties\n for(var prop in input) {\n var result = _removePreserve(ctx, input[prop], options);\n var container = jsonld.getContextValue(ctx, prop, '@container');\n if(options.compactArrays && _isArray(result) && result.length === 1 &&\n container === null) {\n result = result[0];\n }\n input[prop] = result;\n }\n }\n return input;\n}\n\n/**\n * Compares two strings first based on length and then lexicographically.\n *\n * @param a the first string.\n * @param b the second string.\n *\n * @return -1 if a < b, 1 if a > b, 0 if a == b.\n */\nfunction _compareShortestLeast(a, b) {\n if(a.length < b.length) {\n return -1;\n }\n if(b.length < a.length) {\n return 1;\n }\n if(a === b) {\n return 0;\n }\n return (a < b) ? -1 : 1;\n}\n\n/**\n * Picks the preferred compaction term from the given inverse context entry.\n *\n * @param activeCtx the active context.\n * @param iri the IRI to pick the term for.\n * @param value the value to pick the term for.\n * @param containers the preferred containers.\n * @param typeOrLanguage either '@type' or '@language'.\n * @param typeOrLanguageValue the preferred value for '@type' or '@language'.\n *\n * @return the preferred term.\n */\nfunction _selectTerm(\n activeCtx, iri, value, containers, typeOrLanguage, typeOrLanguageValue) {\n if(typeOrLanguageValue === null) {\n typeOrLanguageValue = '@null';\n }\n\n // preferences for the value of @type or @language\n var prefs = [];\n\n // determine prefs for @id based on whether or not value compacts to a term\n if((typeOrLanguageValue === '@id' || typeOrLanguageValue === '@reverse') &&\n _isSubjectReference(value)) {\n // prefer @reverse first\n if(typeOrLanguageValue === '@reverse') {\n prefs.push('@reverse');\n }\n // try to compact value to a term\n var term = _compactIri(activeCtx, value['@id'], null, {vocab: true});\n if(term in activeCtx.mappings &&\n activeCtx.mappings[term] &&\n activeCtx.mappings[term]['@id'] === value['@id']) {\n // prefer @vocab\n prefs.push.apply(prefs, ['@vocab', '@id']);\n } else {\n // prefer @id\n prefs.push.apply(prefs, ['@id', '@vocab']);\n }\n } else {\n prefs.push(typeOrLanguageValue);\n }\n prefs.push('@none');\n\n var containerMap = activeCtx.inverse[iri];\n for(var ci = 0; ci < containers.length; ++ci) {\n // if container not available in the map, continue\n var container = containers[ci];\n if(!(container in containerMap)) {\n continue;\n }\n\n var typeOrLanguageValueMap = containerMap[container][typeOrLanguage];\n for(var pi = 0; pi < prefs.length; ++pi) {\n // if type/language option not available in the map, continue\n var pref = prefs[pi];\n if(!(pref in typeOrLanguageValueMap)) {\n continue;\n }\n\n // select term\n return typeOrLanguageValueMap[pref];\n }\n }\n\n return null;\n}\n\n/**\n * Compacts an IRI or keyword into a term or prefix if it can be. If the\n * IRI has an associated value it may be passed.\n *\n * @param activeCtx the active context to use.\n * @param iri the IRI to compact.\n * @param value the value to check or null.\n * @param relativeTo options for how to compact IRIs:\n * vocab: true to split after @vocab, false not to.\n * @param reverse true if a reverse property is being compacted, false if not.\n *\n * @return the compacted term, prefix, keyword alias, or the original IRI.\n */\nfunction _compactIri(activeCtx, iri, value, relativeTo, reverse) {\n // can't compact null\n if(iri === null) {\n return iri;\n }\n\n // default value and parent to null\n if(_isUndefined(value)) {\n value = null;\n }\n // default reverse to false\n if(_isUndefined(reverse)) {\n reverse = false;\n }\n relativeTo = relativeTo || {};\n\n var inverseCtx = activeCtx.getInverse();\n\n // if term is a keyword, it can only be compacted to a simple alias\n if(_isKeyword(iri)) {\n if(iri in inverseCtx) {\n return inverseCtx[iri]['@none']['@type']['@none'];\n }\n return iri;\n }\n\n // use inverse context to pick a term if iri is relative to vocab\n if(relativeTo.vocab && iri in inverseCtx) {\n var defaultLanguage = activeCtx['@language'] || '@none';\n\n // prefer @index if available in value\n var containers = [];\n if(_isObject(value) && '@index' in value) {\n containers.push('@index');\n }\n\n // defaults for term selection based on type/language\n var typeOrLanguage = '@language';\n var typeOrLanguageValue = '@null';\n\n if(reverse) {\n typeOrLanguage = '@type';\n typeOrLanguageValue = '@reverse';\n containers.push('@set');\n } else if(_isList(value)) {\n // choose the most specific term that works for all elements in @list\n // only select @list containers if @index is NOT in value\n if(!('@index' in value)) {\n containers.push('@list');\n }\n var list = value['@list'];\n var commonLanguage = (list.length === 0) ? defaultLanguage : null;\n var commonType = null;\n for(var i = 0; i < list.length; ++i) {\n var item = list[i];\n var itemLanguage = '@none';\n var itemType = '@none';\n if(_isValue(item)) {\n if('@language' in item) {\n itemLanguage = item['@language'];\n } else if('@type' in item) {\n itemType = item['@type'];\n } else {\n // plain literal\n itemLanguage = '@null';\n }\n } else {\n itemType = '@id';\n }\n if(commonLanguage === null) {\n commonLanguage = itemLanguage;\n } else if(itemLanguage !== commonLanguage && _isValue(item)) {\n commonLanguage = '@none';\n }\n if(commonType === null) {\n commonType = itemType;\n } else if(itemType !== commonType) {\n commonType = '@none';\n }\n // there are different languages and types in the list, so choose\n // the most generic term, no need to keep iterating the list\n if(commonLanguage === '@none' && commonType === '@none') {\n break;\n }\n }\n commonLanguage = commonLanguage || '@none';\n commonType = commonType || '@none';\n if(commonType !== '@none') {\n typeOrLanguage = '@type';\n typeOrLanguageValue = commonType;\n } else {\n typeOrLanguageValue = commonLanguage;\n }\n } else {\n if(_isValue(value)) {\n if('@language' in value && !('@index' in value)) {\n containers.push('@language');\n typeOrLanguageValue = value['@language'];\n } else if('@type' in value) {\n typeOrLanguage = '@type';\n typeOrLanguageValue = value['@type'];\n }\n } else {\n typeOrLanguage = '@type';\n typeOrLanguageValue = '@id';\n }\n containers.push('@set');\n }\n\n // do term selection\n containers.push('@none');\n var term = _selectTerm(\n activeCtx, iri, value, containers, typeOrLanguage, typeOrLanguageValue);\n if(term !== null) {\n return term;\n }\n }\n\n // no term match, use @vocab if available\n if(relativeTo.vocab) {\n if('@vocab' in activeCtx) {\n // determine if vocab is a prefix of the iri\n var vocab = activeCtx['@vocab'];\n if(iri.indexOf(vocab) === 0 && iri !== vocab) {\n // use suffix as relative iri if it is not a term in the active context\n var suffix = iri.substr(vocab.length);\n if(!(suffix in activeCtx.mappings)) {\n return suffix;\n }\n }\n }\n }\n\n // no term or @vocab match, check for possible CURIEs\n var choice = null;\n var idx = 0;\n var partialMatches = [];\n var iriMap = activeCtx.fastCurieMap;\n // check for partial matches of against `iri`, which means look until\n // iri.length - 1, not full length\n var maxPartialLength = iri.length - 1;\n for(; idx < maxPartialLength && iri[idx] in iriMap; ++idx) {\n iriMap = iriMap[iri[idx]];\n if('' in iriMap) {\n partialMatches.push(iriMap[''][0]);\n }\n }\n // check partial matches in reverse order to prefer longest ones first\n for(var i = partialMatches.length - 1; i >= 0; --i) {\n var entry = partialMatches[i];\n var terms = entry.terms;\n for(var ti = 0; ti < terms.length; ++ti) {\n // a CURIE is usable if:\n // 1. it has no mapping, OR\n // 2. value is null, which means we're not compacting an @value, AND\n // the mapping matches the IRI\n var curie = terms[ti] + ':' + iri.substr(entry.iri.length);\n var isUsableCurie = (!(curie in activeCtx.mappings) ||\n (value === null && activeCtx.mappings[curie]['@id'] === iri));\n\n // select curie if it is shorter or the same length but lexicographically\n // less than the current choice\n if(isUsableCurie && (choice === null ||\n _compareShortestLeast(curie, choice) < 0)) {\n choice = curie;\n }\n }\n }\n\n // return chosen curie\n if(choice !== null) {\n return choice;\n }\n\n // compact IRI relative to base\n if(!relativeTo.vocab) {\n return _removeBase(activeCtx['@base'], iri);\n }\n\n // return IRI as is\n return iri;\n}\n\n/**\n * Performs value compaction on an object with '@value' or '@id' as the only\n * property.\n *\n * @param activeCtx the active context.\n * @param activeProperty the active property that points to the value.\n * @param value the value to compact.\n *\n * @return the compaction result.\n */\nfunction _compactValue(activeCtx, activeProperty, value) {\n // value is a @value\n if(_isValue(value)) {\n // get context rules\n var type = jsonld.getContextValue(activeCtx, activeProperty, '@type');\n var language = jsonld.getContextValue(\n activeCtx, activeProperty, '@language');\n var container = jsonld.getContextValue(\n activeCtx, activeProperty, '@container');\n\n // whether or not the value has an @index that must be preserved\n var preserveIndex = (('@index' in value) &&\n container !== '@index');\n\n // if there's no @index to preserve ...\n if(!preserveIndex) {\n // matching @type or @language specified in context, compact value\n if(value['@type'] === type || value['@language'] === language) {\n return value['@value'];\n }\n }\n\n // return just the value of @value if all are true:\n // 1. @value is the only key or @index isn't being preserved\n // 2. there is no default language or @value is not a string or\n // the key has a mapping with a null @language\n var keyCount = Object.keys(value).length;\n var isValueOnlyKey = (keyCount === 1 ||\n (keyCount === 2 && ('@index' in value) && !preserveIndex));\n var hasDefaultLanguage = ('@language' in activeCtx);\n var isValueString = _isString(value['@value']);\n var hasNullMapping = (activeCtx.mappings[activeProperty] &&\n activeCtx.mappings[activeProperty]['@language'] === null);\n if(isValueOnlyKey &&\n (!hasDefaultLanguage || !isValueString || hasNullMapping)) {\n return value['@value'];\n }\n\n var rval = {};\n\n // preserve @index\n if(preserveIndex) {\n rval[_compactIri(activeCtx, '@index')] = value['@index'];\n }\n\n if('@type' in value) {\n // compact @type IRI\n rval[_compactIri(activeCtx, '@type')] = _compactIri(\n activeCtx, value['@type'], null, {vocab: true});\n } else if('@language' in value) {\n // alias @language\n rval[_compactIri(activeCtx, '@language')] = value['@language'];\n }\n\n // alias @value\n rval[_compactIri(activeCtx, '@value')] = value['@value'];\n\n return rval;\n }\n\n // value is a subject reference\n var expandedProperty = _expandIri(activeCtx, activeProperty, {vocab: true});\n var type = jsonld.getContextValue(activeCtx, activeProperty, '@type');\n var compacted = _compactIri(\n activeCtx, value['@id'], null, {vocab: type === '@vocab'});\n\n // compact to scalar\n if(type === '@id' || type === '@vocab' || expandedProperty === '@graph') {\n return compacted;\n }\n\n var rval = {};\n rval[_compactIri(activeCtx, '@id')] = compacted;\n return rval;\n}\n\n/**\n * Creates a term definition during context processing.\n *\n * @param activeCtx the current active context.\n * @param localCtx the local context being processed.\n * @param term the term in the local context to define the mapping for.\n * @param defined a map of defining/defined keys to detect cycles and prevent\n * double definitions.\n */\nfunction _createTermDefinition(activeCtx, localCtx, term, defined) {\n if(term in defined) {\n // term already defined\n if(defined[term]) {\n return;\n }\n // cycle detected\n throw new JsonLdError(\n 'Cyclical context definition detected.',\n 'jsonld.CyclicalContext',\n {code: 'cyclic IRI mapping', context: localCtx, term: term});\n }\n\n // now defining term\n defined[term] = false;\n\n if(_isKeyword(term)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; keywords cannot be overridden.',\n 'jsonld.SyntaxError',\n {code: 'keyword redefinition', context: localCtx, term: term});\n }\n\n if(term === '') {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; a term cannot be an empty string.',\n 'jsonld.SyntaxError',\n {code: 'invalid term definition', context: localCtx});\n }\n\n // remove old mapping\n if(activeCtx.mappings[term]) {\n delete activeCtx.mappings[term];\n }\n\n // get context term value\n var value = localCtx[term];\n\n // clear context entry\n if(value === null || (_isObject(value) && value['@id'] === null)) {\n activeCtx.mappings[term] = null;\n defined[term] = true;\n return;\n }\n\n // convert short-hand value to object w/@id\n if(_isString(value)) {\n value = {'@id': value};\n }\n\n if(!_isObject(value)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; @context property values must be ' +\n 'strings or objects.',\n 'jsonld.SyntaxError',\n {code: 'invalid term definition', context: localCtx});\n }\n\n // create new mapping\n var mapping = activeCtx.mappings[term] = {};\n mapping.reverse = false;\n\n if('@reverse' in value) {\n if('@id' in value) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; a @reverse term definition must not ' +\n 'contain @id.', 'jsonld.SyntaxError',\n {code: 'invalid reverse property', context: localCtx});\n }\n var reverse = value['@reverse'];\n if(!_isString(reverse)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; a @context @reverse value must be a string.',\n 'jsonld.SyntaxError', {code: 'invalid IRI mapping', context: localCtx});\n }\n\n // expand and add @id mapping\n var id = _expandIri(\n activeCtx, reverse, {vocab: true, base: false}, localCtx, defined);\n if(!_isAbsoluteIri(id)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; a @context @reverse value must be an ' +\n 'absolute IRI or a blank node identifier.',\n 'jsonld.SyntaxError', {code: 'invalid IRI mapping', context: localCtx});\n }\n mapping['@id'] = id;\n mapping.reverse = true;\n } else if('@id' in value) {\n var id = value['@id'];\n if(!_isString(id)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; a @context @id value must be an array ' +\n 'of strings or a string.',\n 'jsonld.SyntaxError', {code: 'invalid IRI mapping', context: localCtx});\n }\n if(id !== term) {\n // expand and add @id mapping\n id = _expandIri(\n activeCtx, id, {vocab: true, base: false}, localCtx, defined);\n if(!_isAbsoluteIri(id) && !_isKeyword(id)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; a @context @id value must be an ' +\n 'absolute IRI, a blank node identifier, or a keyword.',\n 'jsonld.SyntaxError',\n {code: 'invalid IRI mapping', context: localCtx});\n }\n mapping['@id'] = id;\n }\n }\n\n // always compute whether term has a colon as an optimization for\n // _compactIri\n var colon = term.indexOf(':');\n mapping._termHasColon = (colon !== -1);\n\n if(!('@id' in mapping)) {\n // see if the term has a prefix\n if(mapping._termHasColon) {\n var prefix = term.substr(0, colon);\n if(prefix in localCtx) {\n // define parent prefix\n _createTermDefinition(activeCtx, localCtx, prefix, defined);\n }\n\n if(activeCtx.mappings[prefix]) {\n // set @id based on prefix parent\n var suffix = term.substr(colon + 1);\n mapping['@id'] = activeCtx.mappings[prefix]['@id'] + suffix;\n } else {\n // term is an absolute IRI\n mapping['@id'] = term;\n }\n } else {\n // non-IRIs *must* define @ids if @vocab is not available\n if(!('@vocab' in activeCtx)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; @context terms must define an @id.',\n 'jsonld.SyntaxError',\n {code: 'invalid IRI mapping', context: localCtx, term: term});\n }\n // prepend vocab to term\n mapping['@id'] = activeCtx['@vocab'] + term;\n }\n }\n\n // IRI mapping now defined\n defined[term] = true;\n\n if('@type' in value) {\n var type = value['@type'];\n if(!_isString(type)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; an @context @type values must be a string.',\n 'jsonld.SyntaxError',\n {code: 'invalid type mapping', context: localCtx});\n }\n\n if(type !== '@id' && type !== '@vocab') {\n // expand @type to full IRI\n type = _expandIri(\n activeCtx, type, {vocab: true, base: false}, localCtx, defined);\n if(!_isAbsoluteIri(type)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; an @context @type value must be an ' +\n 'absolute IRI.',\n 'jsonld.SyntaxError',\n {code: 'invalid type mapping', context: localCtx});\n }\n if(type.indexOf('_:') === 0) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; an @context @type values must be an IRI, ' +\n 'not a blank node identifier.',\n 'jsonld.SyntaxError',\n {code: 'invalid type mapping', context: localCtx});\n }\n }\n\n // add @type to mapping\n mapping['@type'] = type;\n }\n\n if('@container' in value) {\n var container = value['@container'];\n if(container !== '@list' && container !== '@set' &&\n container !== '@index' && container !== '@language') {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; @context @container value must be ' +\n 'one of the following: @list, @set, @index, or @language.',\n 'jsonld.SyntaxError',\n {code: 'invalid container mapping', context: localCtx});\n }\n if(mapping.reverse && container !== '@index' && container !== '@set' &&\n container !== null) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; @context @container value for a @reverse ' +\n 'type definition must be @index or @set.', 'jsonld.SyntaxError',\n {code: 'invalid reverse property', context: localCtx});\n }\n\n // add @container to mapping\n mapping['@container'] = container;\n }\n\n if('@language' in value && !('@type' in value)) {\n var language = value['@language'];\n if(language !== null && !_isString(language)) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; @context @language value must be ' +\n 'a string or null.', 'jsonld.SyntaxError',\n {code: 'invalid language mapping', context: localCtx});\n }\n\n // add @language to mapping\n if(language !== null) {\n language = language.toLowerCase();\n }\n mapping['@language'] = language;\n }\n\n // disallow aliasing @context and @preserve\n var id = mapping['@id'];\n if(id === '@context' || id === '@preserve') {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; @context and @preserve cannot be aliased.',\n 'jsonld.SyntaxError', {code: 'invalid keyword alias', context: localCtx});\n }\n}\n\n/**\n * Expands a string to a full IRI. The string may be a term, a prefix, a\n * relative IRI, or an absolute IRI. The associated absolute IRI will be\n * returned.\n *\n * @param activeCtx the current active context.\n * @param value the string to expand.\n * @param relativeTo options for how to resolve relative IRIs:\n * base: true to resolve against the base IRI, false not to.\n * vocab: true to concatenate after @vocab, false not to.\n * @param localCtx the local context being processed (only given if called\n * during context processing).\n * @param defined a map for tracking cycles in context definitions (only given\n * if called during context processing).\n *\n * @return the expanded value.\n */\nfunction _expandIri(activeCtx, value, relativeTo, localCtx, defined) {\n // already expanded\n if(value === null || _isKeyword(value)) {\n return value;\n }\n\n // ensure value is interpreted as a string\n value = String(value);\n\n // define term dependency if not defined\n if(localCtx && value in localCtx && defined[value] !== true) {\n _createTermDefinition(activeCtx, localCtx, value, defined);\n }\n\n relativeTo = relativeTo || {};\n if(relativeTo.vocab) {\n var mapping = activeCtx.mappings[value];\n\n // value is explicitly ignored with a null mapping\n if(mapping === null) {\n return null;\n }\n\n if(mapping) {\n // value is a term\n return mapping['@id'];\n }\n }\n\n // split value into prefix:suffix\n var colon = value.indexOf(':');\n if(colon !== -1) {\n var prefix = value.substr(0, colon);\n var suffix = value.substr(colon + 1);\n\n // do not expand blank nodes (prefix of '_') or already-absolute\n // IRIs (suffix of '//')\n if(prefix === '_' || suffix.indexOf('//') === 0) {\n return value;\n }\n\n // prefix dependency not defined, define it\n if(localCtx && prefix in localCtx) {\n _createTermDefinition(activeCtx, localCtx, prefix, defined);\n }\n\n // use mapping if prefix is defined\n var mapping = activeCtx.mappings[prefix];\n if(mapping) {\n return mapping['@id'] + suffix;\n }\n\n // already absolute IRI\n return value;\n }\n\n // prepend vocab\n if(relativeTo.vocab && '@vocab' in activeCtx) {\n return activeCtx['@vocab'] + value;\n }\n\n // prepend base\n var rval = value;\n if(relativeTo.base) {\n rval = jsonld.prependBase(activeCtx['@base'], rval);\n }\n\n return rval;\n}\n\nfunction _prependBase(base, iri) {\n // skip IRI processing\n if(base === null) {\n return iri;\n }\n // already an absolute IRI\n if(iri.indexOf(':') !== -1) {\n return iri;\n }\n\n // parse base if it is a string\n if(_isString(base)) {\n base = jsonld.url.parse(base || '');\n }\n\n // parse given IRI\n var rel = jsonld.url.parse(iri);\n\n // per RFC3986 5.2.2\n var transform = {\n protocol: base.protocol || ''\n };\n\n if(rel.authority !== null) {\n transform.authority = rel.authority;\n transform.path = rel.path;\n transform.query = rel.query;\n } else {\n transform.authority = base.authority;\n\n if(rel.path === '') {\n transform.path = base.path;\n if(rel.query !== null) {\n transform.query = rel.query;\n } else {\n transform.query = base.query;\n }\n } else {\n if(rel.path.indexOf('/') === 0) {\n // IRI represents an absolute path\n transform.path = rel.path;\n } else {\n // merge paths\n var path = base.path;\n\n // append relative path to the end of the last directory from base\n if(rel.path !== '') {\n path = path.substr(0, path.lastIndexOf('/') + 1);\n if(path.length > 0 && path.substr(-1) !== '/') {\n path += '/';\n }\n path += rel.path;\n }\n\n transform.path = path;\n }\n transform.query = rel.query;\n }\n }\n\n // remove slashes and dots in path\n transform.path = _removeDotSegments(transform.path, !!transform.authority);\n\n // construct URL\n var rval = transform.protocol;\n if(transform.authority !== null) {\n rval += '//' + transform.authority;\n }\n rval += transform.path;\n if(transform.query !== null) {\n rval += '?' + transform.query;\n }\n if(rel.fragment !== null) {\n rval += '#' + rel.fragment;\n }\n\n // handle empty base\n if(rval === '') {\n rval = './';\n }\n\n return rval;\n}\n\n/**\n * Removes a base IRI from the given absolute IRI.\n *\n * @param base the base IRI.\n * @param iri the absolute IRI.\n *\n * @return the relative IRI if relative to base, otherwise the absolute IRI.\n */\nfunction _removeBase(base, iri) {\n // skip IRI processing\n if(base === null) {\n return iri;\n }\n\n if(_isString(base)) {\n base = jsonld.url.parse(base || '');\n }\n\n // establish base root\n var root = '';\n if(base.href !== '') {\n root += (base.protocol || '') + '//' + (base.authority || '');\n } else if(iri.indexOf('//')) {\n // support network-path reference with empty base\n root += '//';\n }\n\n // IRI not relative to base\n if(iri.indexOf(root) !== 0) {\n return iri;\n }\n\n // remove root from IRI and parse remainder\n var rel = jsonld.url.parse(iri.substr(root.length));\n\n // remove path segments that match (do not remove last segment unless there\n // is a hash or query)\n var baseSegments = base.normalizedPath.split('/');\n var iriSegments = rel.normalizedPath.split('/');\n var last = (rel.fragment || rel.query) ? 0 : 1;\n while(baseSegments.length > 0 && iriSegments.length > last) {\n if(baseSegments[0] !== iriSegments[0]) {\n break;\n }\n baseSegments.shift();\n iriSegments.shift();\n }\n\n // use '../' for each non-matching base segment\n var rval = '';\n if(baseSegments.length > 0) {\n // don't count the last segment (if it ends with '/' last path doesn't\n // count and if it doesn't end with '/' it isn't a path)\n baseSegments.pop();\n for(var i = 0; i < baseSegments.length; ++i) {\n rval += '../';\n }\n }\n\n // prepend remaining segments\n rval += iriSegments.join('/');\n\n // add query and hash\n if(rel.query !== null) {\n rval += '?' + rel.query;\n }\n if(rel.fragment !== null) {\n rval += '#' + rel.fragment;\n }\n\n // handle empty base\n if(rval === '') {\n rval = './';\n }\n\n return rval;\n}\n\n/**\n * Gets the initial context.\n *\n * @param options the options to use:\n * [base] the document base IRI.\n *\n * @return the initial context.\n */\nfunction _getInitialContext(options) {\n var base = jsonld.url.parse(options.base || '');\n return {\n '@base': base,\n mappings: {},\n inverse: null,\n getInverse: _createInverseContext,\n clone: _cloneActiveContext\n };\n\n /**\n * Generates an inverse context for use in the compaction algorithm, if\n * not already generated for the given active context.\n *\n * @return the inverse context.\n */\n function _createInverseContext() {\n var activeCtx = this;\n\n // lazily create inverse\n if(activeCtx.inverse) {\n return activeCtx.inverse;\n }\n var inverse = activeCtx.inverse = {};\n\n // variables for building fast CURIE map\n var fastCurieMap = activeCtx.fastCurieMap = {};\n var irisToTerms = {};\n\n // handle default language\n var defaultLanguage = activeCtx['@language'] || '@none';\n\n // create term selections for each mapping in the context, ordered by\n // shortest and then lexicographically least\n var mappings = activeCtx.mappings;\n var terms = Object.keys(mappings).sort(_compareShortestLeast);\n for(var i = 0; i < terms.length; ++i) {\n var term = terms[i];\n var mapping = mappings[term];\n if(mapping === null) {\n continue;\n }\n\n var container = mapping['@container'] || '@none';\n\n // iterate over every IRI in the mapping\n var ids = mapping['@id'];\n if(!_isArray(ids)) {\n ids = [ids];\n }\n for(var ii = 0; ii < ids.length; ++ii) {\n var iri = ids[ii];\n var entry = inverse[iri];\n var isKeyword = _isKeyword(iri);\n\n if(!entry) {\n // initialize entry\n inverse[iri] = entry = {};\n\n if(!isKeyword && !mapping._termHasColon) {\n // init IRI to term map and fast CURIE prefixes\n irisToTerms[iri] = [term];\n var fastCurieEntry = {iri: iri, terms: irisToTerms[iri]};\n if(iri[0] in fastCurieMap) {\n fastCurieMap[iri[0]].push(fastCurieEntry);\n } else {\n fastCurieMap[iri[0]] = [fastCurieEntry];\n }\n }\n } else if(!isKeyword && !mapping._termHasColon) {\n // add IRI to term match\n irisToTerms[iri].push(term);\n }\n\n // add new entry\n if(!entry[container]) {\n entry[container] = {\n '@language': {},\n '@type': {}\n };\n }\n entry = entry[container];\n\n if(mapping.reverse) {\n // term is preferred for values using @reverse\n _addPreferredTerm(mapping, term, entry['@type'], '@reverse');\n } else if('@type' in mapping) {\n // term is preferred for values using specific type\n _addPreferredTerm(mapping, term, entry['@type'], mapping['@type']);\n } else if('@language' in mapping) {\n // term is preferred for values using specific language\n var language = mapping['@language'] || '@null';\n _addPreferredTerm(mapping, term, entry['@language'], language);\n } else {\n // term is preferred for values w/default language or no type and\n // no language\n // add an entry for the default language\n _addPreferredTerm(mapping, term, entry['@language'], defaultLanguage);\n\n // add entries for no type and no language\n _addPreferredTerm(mapping, term, entry['@type'], '@none');\n _addPreferredTerm(mapping, term, entry['@language'], '@none');\n }\n }\n }\n\n // build fast CURIE map\n for(var key in fastCurieMap) {\n _buildIriMap(fastCurieMap, key, 1);\n }\n\n return inverse;\n }\n\n /**\n * Runs a recursive algorithm to build a lookup map for quickly finding\n * potential CURIEs.\n *\n * @param iriMap the map to build.\n * @param key the current key in the map to work on.\n * @param idx the index into the IRI to compare.\n */\n function _buildIriMap(iriMap, key, idx) {\n var entries = iriMap[key];\n var next = iriMap[key] = {};\n\n var iri;\n var letter;\n for(var i = 0; i < entries.length; ++i) {\n iri = entries[i].iri;\n if(idx >= iri.length) {\n letter = '';\n } else {\n letter = iri[idx];\n }\n if(letter in next) {\n next[letter].push(entries[i]);\n } else {\n next[letter] = [entries[i]];\n }\n }\n\n for(var key in next) {\n if(key === '') {\n continue;\n }\n _buildIriMap(next, key, idx + 1);\n }\n }\n\n /**\n * Adds the term for the given entry if not already added.\n *\n * @param mapping the term mapping.\n * @param term the term to add.\n * @param entry the inverse context typeOrLanguage entry to add to.\n * @param typeOrLanguageValue the key in the entry to add to.\n */\n function _addPreferredTerm(mapping, term, entry, typeOrLanguageValue) {\n if(!(typeOrLanguageValue in entry)) {\n entry[typeOrLanguageValue] = term;\n }\n }\n\n /**\n * Clones an active context, creating a child active context.\n *\n * @return a clone (child) of the active context.\n */\n function _cloneActiveContext() {\n var child = {};\n child['@base'] = this['@base'];\n child.mappings = _clone(this.mappings);\n child.clone = this.clone;\n child.inverse = null;\n child.getInverse = this.getInverse;\n if('@language' in this) {\n child['@language'] = this['@language'];\n }\n if('@vocab' in this) {\n child['@vocab'] = this['@vocab'];\n }\n return child;\n }\n}\n\n/**\n * Returns whether or not the given value is a keyword.\n *\n * @param v the value to check.\n *\n * @return true if the value is a keyword, false if not.\n */\nfunction _isKeyword(v) {\n if(!_isString(v)) {\n return false;\n }\n switch(v) {\n case '@base':\n case '@context':\n case '@container':\n case '@default':\n case '@embed':\n case '@explicit':\n case '@graph':\n case '@id':\n case '@index':\n case '@language':\n case '@list':\n case '@omitDefault':\n case '@preserve':\n case '@requireAll':\n case '@reverse':\n case '@set':\n case '@type':\n case '@value':\n case '@vocab':\n return true;\n }\n return false;\n}\n\n/**\n * Returns true if the given value is an Object.\n *\n * @param v the value to check.\n *\n * @return true if the value is an Object, false if not.\n */\nfunction _isObject(v) {\n return (Object.prototype.toString.call(v) === '[object Object]');\n}\n\n/**\n * Returns true if the given value is an empty Object.\n *\n * @param v the value to check.\n *\n * @return true if the value is an empty Object, false if not.\n */\nfunction _isEmptyObject(v) {\n return _isObject(v) && Object.keys(v).length === 0;\n}\n\n/**\n * Returns true if the given value is an Array.\n *\n * @param v the value to check.\n *\n * @return true if the value is an Array, false if not.\n */\nfunction _isArray(v) {\n return Array.isArray(v);\n}\n\n/**\n * Throws an exception if the given value is not a valid @type value.\n *\n * @param v the value to check.\n */\nfunction _validateTypeValue(v) {\n // can be a string or an empty object\n if(_isString(v) || _isEmptyObject(v)) {\n return;\n }\n\n // must be an array\n var isValid = false;\n if(_isArray(v)) {\n // must contain only strings\n isValid = true;\n for(var i = 0; i < v.length; ++i) {\n if(!(_isString(v[i]))) {\n isValid = false;\n break;\n }\n }\n }\n\n if(!isValid) {\n throw new JsonLdError(\n 'Invalid JSON-LD syntax; \"@type\" value must a string, an array of ' +\n 'strings, or an empty object.', 'jsonld.SyntaxError',\n {code: 'invalid type value', value: v});\n }\n}\n\n/**\n * Returns true if the given value is a String.\n *\n * @param v the value to check.\n *\n * @return true if the value is a String, false if not.\n */\nfunction _isString(v) {\n return (typeof v === 'string' ||\n Object.prototype.toString.call(v) === '[object String]');\n}\n\n/**\n * Returns true if the given value is a Number.\n *\n * @param v the value to check.\n *\n * @return true if the value is a Number, false if not.\n */\nfunction _isNumber(v) {\n return (typeof v === 'number' ||\n Object.prototype.toString.call(v) === '[object Number]');\n}\n\n/**\n * Returns true if the given value is a double.\n *\n * @param v the value to check.\n *\n * @return true if the value is a double, false if not.\n */\nfunction _isDouble(v) {\n return _isNumber(v) && String(v).indexOf('.') !== -1;\n}\n\n/**\n * Returns true if the given value is numeric.\n *\n * @param v the value to check.\n *\n * @return true if the value is numeric, false if not.\n */\nfunction _isNumeric(v) {\n return !isNaN(parseFloat(v)) && isFinite(v);\n}\n\n/**\n * Returns true if the given value is a Boolean.\n *\n * @param v the value to check.\n *\n * @return true if the value is a Boolean, false if not.\n */\nfunction _isBoolean(v) {\n return (typeof v === 'boolean' ||\n Object.prototype.toString.call(v) === '[object Boolean]');\n}\n\n/**\n * Returns true if the given value is undefined.\n *\n * @param v the value to check.\n *\n * @return true if the value is undefined, false if not.\n */\nfunction _isUndefined(v) {\n return (typeof v === 'undefined');\n}\n\n/**\n * Returns true if the given value is a subject with properties.\n *\n * @param v the value to check.\n *\n * @return true if the value is a subject with properties, false if not.\n */\nfunction _isSubject(v) {\n // Note: A value is a subject if all of these hold true:\n // 1. It is an Object.\n // 2. It is not a @value, @set, or @list.\n // 3. It has more than 1 key OR any existing key is not @id.\n var rval = false;\n if(_isObject(v) &&\n !(('@value' in v) || ('@set' in v) || ('@list' in v))) {\n var keyCount = Object.keys(v).length;\n rval = (keyCount > 1 || !('@id' in v));\n }\n return rval;\n}\n\n/**\n * Returns true if the given value is a subject reference.\n *\n * @param v the value to check.\n *\n * @return true if the value is a subject reference, false if not.\n */\nfunction _isSubjectReference(v) {\n // Note: A value is a subject reference if all of these hold true:\n // 1. It is an Object.\n // 2. It has a single key: @id.\n return (_isObject(v) && Object.keys(v).length === 1 && ('@id' in v));\n}\n\n/**\n * Returns true if the given value is a @value.\n *\n * @param v the value to check.\n *\n * @return true if the value is a @value, false if not.\n */\nfunction _isValue(v) {\n // Note: A value is a @value if all of these hold true:\n // 1. It is an Object.\n // 2. It has the @value property.\n return _isObject(v) && ('@value' in v);\n}\n\n/**\n * Returns true if the given value is a @list.\n *\n * @param v the value to check.\n *\n * @return true if the value is a @list, false if not.\n */\nfunction _isList(v) {\n // Note: A value is a @list if all of these hold true:\n // 1. It is an Object.\n // 2. It has the @list property.\n return _isObject(v) && ('@list' in v);\n}\n\n/**\n * Returns true if the given value is a blank node.\n *\n * @param v the value to check.\n *\n * @return true if the value is a blank node, false if not.\n */\nfunction _isBlankNode(v) {\n // Note: A value is a blank node if all of these hold true:\n // 1. It is an Object.\n // 2. If it has an @id key its value begins with '_:'.\n // 3. It has no keys OR is not a @value, @set, or @list.\n var rval = false;\n if(_isObject(v)) {\n if('@id' in v) {\n rval = (v['@id'].indexOf('_:') === 0);\n } else {\n rval = (Object.keys(v).length === 0 ||\n !(('@value' in v) || ('@set' in v) || ('@list' in v)));\n }\n }\n return rval;\n}\n\n/**\n * Returns true if the given value is an absolute IRI, false if not.\n *\n * @param v the value to check.\n *\n * @return true if the value is an absolute IRI, false if not.\n */\nfunction _isAbsoluteIri(v) {\n return _isString(v) && v.indexOf(':') !== -1;\n}\n\n/**\n * Clones an object, array, or string/number. If a typed JavaScript object\n * is given, such as a Date, it will be converted to a string.\n *\n * @param value the value to clone.\n *\n * @return the cloned value.\n */\nfunction _clone(value) {\n if(value && typeof value === 'object') {\n var rval;\n if(_isArray(value)) {\n rval = [];\n for(var i = 0; i < value.length; ++i) {\n rval[i] = _clone(value[i]);\n }\n } else if(_isObject(value)) {\n rval = {};\n for(var key in value) {\n rval[key] = _clone(value[key]);\n }\n } else {\n rval = value.toString();\n }\n return rval;\n }\n return value;\n}\n\n/**\n * Finds all @context URLs in the given JSON-LD input.\n *\n * @param input the JSON-LD input.\n * @param urls a map of URLs (url => false/@contexts).\n * @param replace true to replace the URLs in the given input with the\n * @contexts from the urls map, false not to.\n * @param base the base IRI to use to resolve relative IRIs.\n *\n * @return true if new URLs to retrieve were found, false if not.\n */\nfunction _findContextUrls(input, urls, replace, base) {\n var count = Object.keys(urls).length;\n if(_isArray(input)) {\n for(var i = 0; i < input.length; ++i) {\n _findContextUrls(input[i], urls, replace, base);\n }\n return (count < Object.keys(urls).length);\n } else if(_isObject(input)) {\n for(var key in input) {\n if(key !== '@context') {\n _findContextUrls(input[key], urls, replace, base);\n continue;\n }\n\n // get @context\n var ctx = input[key];\n\n // array @context\n if(_isArray(ctx)) {\n var length = ctx.length;\n for(var i = 0; i < length; ++i) {\n var _ctx = ctx[i];\n if(_isString(_ctx)) {\n _ctx = jsonld.prependBase(base, _ctx);\n // replace w/@context if requested\n if(replace) {\n _ctx = urls[_ctx];\n if(_isArray(_ctx)) {\n // add flattened context\n Array.prototype.splice.apply(ctx, [i, 1].concat(_ctx));\n i += _ctx.length - 1;\n length = ctx.length;\n } else {\n ctx[i] = _ctx;\n }\n } else if(!(_ctx in urls)) {\n // @context URL found\n urls[_ctx] = false;\n }\n }\n }\n } else if(_isString(ctx)) {\n // string @context\n ctx = jsonld.prependBase(base, ctx);\n // replace w/@context if requested\n if(replace) {\n input[key] = urls[ctx];\n } else if(!(ctx in urls)) {\n // @context URL found\n urls[ctx] = false;\n }\n }\n }\n return (count < Object.keys(urls).length);\n }\n return false;\n}\n\n/**\n * Retrieves external @context URLs using the given document loader. Every\n * instance of @context in the input that refers to a URL will be replaced\n * with the JSON @context found at that URL.\n *\n * @param input the JSON-LD input with possible contexts.\n * @param options the options to use:\n * documentLoader(url, callback(err, remoteDoc)) the document loader.\n * @param callback(err, input) called once the operation completes.\n */\nfunction _retrieveContextUrls(input, options, callback) {\n // if any error occurs during URL resolution, quit\n var error = null;\n\n // recursive document loader\n var documentLoader = options.documentLoader;\n var retrieve = function(input, cycles, documentLoader, base, callback) {\n if(Object.keys(cycles).length > MAX_CONTEXT_URLS) {\n error = new JsonLdError(\n 'Maximum number of @context URLs exceeded.',\n 'jsonld.ContextUrlError',\n {code: 'loading remote context failed', max: MAX_CONTEXT_URLS});\n return callback(error);\n }\n\n // for tracking the URLs to retrieve\n var urls = {};\n\n // finished will be called once the URL queue is empty\n var finished = function() {\n // replace all URLs in the input\n _findContextUrls(input, urls, true, base);\n callback(null, input);\n };\n\n // find all URLs in the given input\n if(!_findContextUrls(input, urls, false, base)) {\n // no new URLs in input\n return finished();\n }\n\n // queue all unretrieved URLs\n var queue = [];\n for(var url in urls) {\n if(urls[url] === false) {\n queue.push(url);\n }\n }\n\n // retrieve URLs in queue\n var count = queue.length;\n for(var i = 0; i < queue.length; ++i) {\n (function(url) {\n // check for context URL cycle\n if(url in cycles) {\n error = new JsonLdError(\n 'Cyclical @context URLs detected.',\n 'jsonld.ContextUrlError',\n {code: 'recursive context inclusion', url: url});\n return callback(error);\n }\n var _cycles = _clone(cycles);\n _cycles[url] = true;\n var done = function(err, remoteDoc) {\n // short-circuit if there was an error with another URL\n if(error) {\n return;\n }\n\n var ctx = remoteDoc ? remoteDoc.document : null;\n\n // parse string context as JSON\n if(!err && _isString(ctx)) {\n try {\n ctx = JSON.parse(ctx);\n } catch(ex) {\n err = ex;\n }\n }\n\n // ensure ctx is an object\n if(err) {\n err = new JsonLdError(\n 'Dereferencing a URL did not result in a valid JSON-LD object. ' +\n 'Possible causes are an inaccessible URL perhaps due to ' +\n 'a same-origin policy (ensure the server uses CORS if you are ' +\n 'using client-side JavaScript), too many redirects, a ' +\n 'non-JSON response, or more than one HTTP Link Header was ' +\n 'provided for a remote context.',\n 'jsonld.InvalidUrl',\n {code: 'loading remote context failed', url: url, cause: err});\n } else if(!_isObject(ctx)) {\n err = new JsonLdError(\n 'Dereferencing a URL did not result in a JSON object. The ' +\n 'response was valid JSON, but it was not a JSON object.',\n 'jsonld.InvalidUrl',\n {code: 'invalid remote context', url: url, cause: err});\n }\n if(err) {\n error = err;\n return callback(error);\n }\n\n // use empty context if no @context key is present\n if(!('@context' in ctx)) {\n ctx = {'@context': {}};\n } else {\n ctx = {'@context': ctx['@context']};\n }\n\n // append context URL to context if given\n if(remoteDoc.contextUrl) {\n if(!_isArray(ctx['@context'])) {\n ctx['@context'] = [ctx['@context']];\n }\n ctx['@context'].push(remoteDoc.contextUrl);\n }\n\n // recurse\n retrieve(ctx, _cycles, documentLoader, url, function(err, ctx) {\n if(err) {\n return callback(err);\n }\n urls[url] = ctx['@context'];\n count -= 1;\n if(count === 0) {\n finished();\n }\n });\n };\n var promise = documentLoader(url, done);\n if(promise && 'then' in promise) {\n promise.then(done.bind(null, null), done);\n }\n }(queue[i]));\n }\n };\n retrieve(input, {}, documentLoader, options.base, callback);\n}\n\n// define js 1.8.5 Object.keys method if not present\nif(!Object.keys) {\n Object.keys = function(o) {\n if(o !== Object(o)) {\n throw new TypeError('Object.keys called on non-object');\n }\n var rval = [];\n for(var p in o) {\n if(Object.prototype.hasOwnProperty.call(o, p)) {\n rval.push(p);\n }\n }\n return rval;\n };\n}\n\n/**\n * Parses RDF in the form of N-Quads.\n *\n * @param input the N-Quads input to parse.\n *\n * @return an RDF dataset.\n */\nfunction _parseNQuads(input) {\n // define partial regexes\n var iri = '(?:<([^:]+:[^>]*)>)';\n var bnode = '(_:(?:[A-Za-z0-9]+))';\n var plain = '\"([^\"\\\\\\\\]*(?:\\\\\\\\.[^\"\\\\\\\\]*)*)\"';\n var datatype = '(?:\\\\^\\\\^' + iri + ')';\n var language = '(?:@([a-z]+(?:-[a-z0-9]+)*))';\n var literal = '(?:' + plain + '(?:' + datatype + '|' + language + ')?)';\n var comment = '(?:#.*)?';\n var ws = '[ \\\\t]+';\n var wso = '[ \\\\t]*';\n var eoln = /(?:\\r\\n)|(?:\\n)|(?:\\r)/g;\n var empty = new RegExp('^' + wso + comment + '$');\n\n // define quad part regexes\n var subject = '(?:' + iri + '|' + bnode + ')' + ws;\n var property = iri + ws;\n var object = '(?:' + iri + '|' + bnode + '|' + literal + ')' + wso;\n var graphName = '(?:\\\\.|(?:(?:' + iri + '|' + bnode + ')' + wso + '\\\\.))';\n\n // full quad regex\n var quad = new RegExp(\n '^' + wso + subject + property + object + graphName + wso + comment + '$');\n\n // build RDF dataset\n var dataset = {};\n\n // split N-Quad input into lines\n var lines = input.split(eoln);\n var lineNumber = 0;\n for(var li = 0; li < lines.length; ++li) {\n var line = lines[li];\n lineNumber++;\n\n // skip empty lines\n if(empty.test(line)) {\n continue;\n }\n\n // parse quad\n var match = line.match(quad);\n if(match === null) {\n throw new JsonLdError(\n 'Error while parsing N-Quads; invalid quad.',\n 'jsonld.ParseError', {line: lineNumber});\n }\n\n // create RDF triple\n var triple = {};\n\n // get subject\n if(!_isUndefined(match[1])) {\n triple.subject = {type: 'IRI', value: match[1]};\n } else {\n triple.subject = {type: 'blank node', value: match[2]};\n }\n\n // get predicate\n triple.predicate = {type: 'IRI', value: match[3]};\n\n // get object\n if(!_isUndefined(match[4])) {\n triple.object = {type: 'IRI', value: match[4]};\n } else if(!_isUndefined(match[5])) {\n triple.object = {type: 'blank node', value: match[5]};\n } else {\n triple.object = {type: 'literal'};\n if(!_isUndefined(match[7])) {\n triple.object.datatype = match[7];\n } else if(!_isUndefined(match[8])) {\n triple.object.datatype = RDF_LANGSTRING;\n triple.object.language = match[8];\n } else {\n triple.object.datatype = XSD_STRING;\n }\n var unescaped = match[6]\n .replace(/\\\\\"/g, '\"')\n .replace(/\\\\t/g, '\\t')\n .replace(/\\\\n/g, '\\n')\n .replace(/\\\\r/g, '\\r')\n .replace(/\\\\\\\\/g, '\\\\');\n triple.object.value = unescaped;\n }\n\n // get graph name ('@default' is used for the default graph)\n var name = '@default';\n if(!_isUndefined(match[9])) {\n name = match[9];\n } else if(!_isUndefined(match[10])) {\n name = match[10];\n }\n\n // initialize graph in dataset\n if(!(name in dataset)) {\n dataset[name] = [triple];\n } else {\n // add triple if unique to its graph\n var unique = true;\n var triples = dataset[name];\n for(var ti = 0; unique && ti < triples.length; ++ti) {\n if(_compareRDFTriples(triples[ti], triple)) {\n unique = false;\n }\n }\n if(unique) {\n triples.push(triple);\n }\n }\n }\n\n return dataset;\n}\n\n// register the N-Quads RDF parser\njsonld.registerRDFParser('application/nquads', _parseNQuads);\n\n/**\n * Converts an RDF dataset to N-Quads.\n *\n * @param dataset the RDF dataset to convert.\n *\n * @return the N-Quads string.\n */\nfunction _toNQuads(dataset) {\n var quads = [];\n for(var graphName in dataset) {\n var triples = dataset[graphName];\n for(var ti = 0; ti < triples.length; ++ti) {\n var triple = triples[ti];\n if(graphName === '@default') {\n graphName = null;\n }\n quads.push(_toNQuad(triple, graphName));\n }\n }\n return quads.sort().join('');\n}\n\n/**\n * Converts an RDF triple and graph name to an N-Quad string (a single quad).\n *\n * @param triple the RDF triple or quad to convert (a triple or quad may be\n * passed, if a triple is passed then `graphName` should be given\n * to specify the name of the graph the triple is in, `null` for\n * the default graph).\n * @param graphName the name of the graph containing the triple, null for\n * the default graph.\n *\n * @return the N-Quad string.\n */\nfunction _toNQuad(triple, graphName) {\n var s = triple.subject;\n var p = triple.predicate;\n var o = triple.object;\n var g = graphName || null;\n if('name' in triple && triple.name) {\n g = triple.name.value;\n }\n\n var quad = '';\n\n // subject is an IRI\n if(s.type === 'IRI') {\n quad += '<' + s.value + '>';\n } else {\n quad += s.value;\n }\n quad += ' ';\n\n // predicate is an IRI\n if(p.type === 'IRI') {\n quad += '<' + p.value + '>';\n } else {\n quad += p.value;\n }\n quad += ' ';\n\n // object is IRI, bnode, or literal\n if(o.type === 'IRI') {\n quad += '<' + o.value + '>';\n } else if(o.type === 'blank node') {\n quad += o.value;\n } else {\n var escaped = o.value\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\\"/g, '\\\\\"');\n quad += '\"' + escaped + '\"';\n if(o.datatype === RDF_LANGSTRING) {\n if(o.language) {\n quad += '@' + o.language;\n }\n } else if(o.datatype !== XSD_STRING) {\n quad += '^^<' + o.datatype + '>';\n }\n }\n\n // graph\n if(g !== null && g !== undefined) {\n if(g.indexOf('_:') !== 0) {\n quad += ' <' + g + '>';\n } else {\n quad += ' ' + g;\n }\n }\n\n quad += ' .\\n';\n return quad;\n}\n\n/**\n * Parses the RDF dataset found via the data object from the RDFa API.\n *\n * @param data the RDFa API data object.\n *\n * @return the RDF dataset.\n */\nfunction _parseRdfaApiData(data) {\n var dataset = {};\n dataset['@default'] = [];\n\n var subjects = data.getSubjects();\n for(var si = 0; si < subjects.length; ++si) {\n var subject = subjects[si];\n if(subject === null) {\n continue;\n }\n\n // get all related triples\n var triples = data.getSubjectTriples(subject);\n if(triples === null) {\n continue;\n }\n var predicates = triples.predicates;\n for(var predicate in predicates) {\n // iterate over objects\n var objects = predicates[predicate].objects;\n for(var oi = 0; oi < objects.length; ++oi) {\n var object = objects[oi];\n\n // create RDF triple\n var triple = {};\n\n // add subject\n if(subject.indexOf('_:') === 0) {\n triple.subject = {type: 'blank node', value: subject};\n } else {\n triple.subject = {type: 'IRI', value: subject};\n }\n\n // add predicate\n if(predicate.indexOf('_:') === 0) {\n triple.predicate = {type: 'blank node', value: predicate};\n } else {\n triple.predicate = {type: 'IRI', value: predicate};\n }\n\n // serialize XML literal\n var value = object.value;\n if(object.type === RDF_XML_LITERAL) {\n // initialize XMLSerializer\n if(!XMLSerializer) {\n _defineXMLSerializer();\n }\n var serializer = new XMLSerializer();\n value = '';\n for(var x = 0; x < object.value.length; x++) {\n if(object.value[x].nodeType === Node.ELEMENT_NODE) {\n value += serializer.serializeToString(object.value[x]);\n } else if(object.value[x].nodeType === Node.TEXT_NODE) {\n value += object.value[x].nodeValue;\n }\n }\n }\n\n // add object\n triple.object = {};\n\n // object is an IRI\n if(object.type === RDF_OBJECT) {\n if(object.value.indexOf('_:') === 0) {\n triple.object.type = 'blank node';\n } else {\n triple.object.type = 'IRI';\n }\n } else {\n // object is a literal\n triple.object.type = 'literal';\n if(object.type === RDF_PLAIN_LITERAL) {\n if(object.language) {\n triple.object.datatype = RDF_LANGSTRING;\n triple.object.language = object.language;\n } else {\n triple.object.datatype = XSD_STRING;\n }\n } else {\n triple.object.datatype = object.type;\n }\n }\n triple.object.value = value;\n\n // add triple to dataset in default graph\n dataset['@default'].push(triple);\n }\n }\n }\n\n return dataset;\n}\n\n// register the RDFa API RDF parser\njsonld.registerRDFParser('rdfa-api', _parseRdfaApiData);\n\n/**\n * Creates a new IdentifierIssuer. A IdentifierIssuer issues unique\n * identifiers, keeping track of any previously issued identifiers.\n *\n * @param prefix the prefix to use ('').\n */\nfunction IdentifierIssuer(prefix) {\n this.prefix = prefix;\n this.counter = 0;\n this.existing = {};\n}\njsonld.IdentifierIssuer = IdentifierIssuer;\n// backwards-compability\njsonld.UniqueNamer = IdentifierIssuer;\n\n/**\n * Copies this IdentifierIssuer.\n *\n * @return a copy of this IdentifierIssuer.\n */\nIdentifierIssuer.prototype.clone = function() {\n var copy = new IdentifierIssuer(this.prefix);\n copy.counter = this.counter;\n copy.existing = _clone(this.existing);\n return copy;\n};\n\n/**\n * Gets the new identifier for the given old identifier, where if no old\n * identifier is given a new identifier will be generated.\n *\n * @param [old] the old identifier to get the new identifier for.\n *\n * @return the new identifier.\n */\nIdentifierIssuer.prototype.getId = function(old) {\n // return existing old identifier\n if(old && old in this.existing) {\n return this.existing[old];\n }\n\n // get next identifier\n var identifier = this.prefix + this.counter;\n this.counter += 1;\n\n // save mapping\n if(old) {\n this.existing[old] = identifier;\n }\n\n return identifier;\n};\n// alias\nIdentifierIssuer.prototype.getName = IdentifierIssuer.prototype.getName;\n\n/**\n * Returns true if the given old identifer has already been assigned a new\n * identifier.\n *\n * @param old the old identifier to check.\n *\n * @return true if the old identifier has been assigned a new identifier, false\n * if not.\n */\nIdentifierIssuer.prototype.hasId = function(old) {\n return (old in this.existing);\n};\n// alias\nIdentifierIssuer.prototype.isNamed = IdentifierIssuer.prototype.hasId;\n\n/**\n * A Permutator iterates over all possible permutations of the given array\n * of elements.\n *\n * @param list the array of elements to iterate over.\n */\nvar Permutator = function(list) {\n // original array\n this.list = list.sort();\n // indicates whether there are more permutations\n this.done = false;\n // directional info for permutation algorithm\n this.left = {};\n for(var i = 0; i < list.length; ++i) {\n this.left[list[i]] = true;\n }\n};\n\n/**\n * Returns true if there is another permutation.\n *\n * @return true if there is another permutation, false if not.\n */\nPermutator.prototype.hasNext = function() {\n return !this.done;\n};\n\n/**\n * Gets the next permutation. Call hasNext() to ensure there is another one\n * first.\n *\n * @return the next permutation.\n */\nPermutator.prototype.next = function() {\n // copy current permutation\n var rval = this.list.slice();\n\n /* Calculate the next permutation using the Steinhaus-Johnson-Trotter\n permutation algorithm. */\n\n // get largest mobile element k\n // (mobile: element is greater than the one it is looking at)\n var k = null;\n var pos = 0;\n var length = this.list.length;\n for(var i = 0; i < length; ++i) {\n var element = this.list[i];\n var left = this.left[element];\n if((k === null || element > k) &&\n ((left && i > 0 && element > this.list[i - 1]) ||\n (!left && i < (length - 1) && element > this.list[i + 1]))) {\n k = element;\n pos = i;\n }\n }\n\n // no more permutations\n if(k === null) {\n this.done = true;\n } else {\n // swap k and the element it is looking at\n var swap = this.left[k] ? pos - 1 : pos + 1;\n this.list[pos] = this.list[swap];\n this.list[swap] = k;\n\n // reverse the direction of all elements larger than k\n for(var i = 0; i < length; ++i) {\n if(this.list[i] > k) {\n this.left[this.list[i]] = !this.left[this.list[i]];\n }\n }\n }\n\n return rval;\n};\n\n//////////////////////// DEFINE NORMALIZATION HASH API ////////////////////////\n\n/**\n * Creates a new NormalizeHash for use by the given normalization algorithm.\n *\n * @param algorithm the RDF Dataset Normalization algorithm to use:\n * 'URDNA2015' or 'URGNA2012'.\n */\nvar NormalizeHash = function(algorithm) {\n if(!(this instanceof NormalizeHash)) {\n return new NormalizeHash(algorithm);\n }\n if(['URDNA2015', 'URGNA2012'].indexOf(algorithm) === -1) {\n throw new Error(\n 'Invalid RDF Dataset Normalization algorithm: ' + algorithm);\n }\n NormalizeHash._init.call(this, algorithm);\n};\nNormalizeHash.hashNQuads = function(algorithm, nquads) {\n var md = new NormalizeHash(algorithm);\n for(var i = 0; i < nquads.length; ++i) {\n md.update(nquads[i]);\n }\n return md.digest();\n};\n\n// switch definition of NormalizeHash based on environment\n(function(_nodejs) {\n\nif(_nodejs) {\n // define NormalizeHash using native crypto lib\n var crypto = require('crypto');\n NormalizeHash._init = function(algorithm) {\n if(algorithm === 'URDNA2015') {\n algorithm = 'sha256';\n } else {\n // assume URGNA2012\n algorithm = 'sha1';\n }\n this.md = crypto.createHash(algorithm);\n };\n NormalizeHash.prototype.update = function(msg) {\n return this.md.update(msg, 'utf8');\n };\n NormalizeHash.prototype.digest = function() {\n return this.md.digest('hex');\n };\n return;\n}\n\n// define NormalizeHash using JavaScript\nNormalizeHash._init = function(algorithm) {\n if(algorithm === 'URDNA2015') {\n algorithm = new sha256.Algorithm();\n } else {\n // assume URGNA2012\n algorithm = new sha1.Algorithm();\n }\n this.md = new MessageDigest(algorithm);\n};\nNormalizeHash.prototype.update = function(msg) {\n return this.md.update(msg);\n};\nNormalizeHash.prototype.digest = function() {\n return this.md.digest().toHex();\n};\n\n/////////////////////////// DEFINE MESSAGE DIGEST API /////////////////////////\n\n/**\n * Creates a new MessageDigest.\n *\n * @param algorithm the algorithm to use.\n */\nvar MessageDigest = function(algorithm) {\n if(!(this instanceof MessageDigest)) {\n return new MessageDigest(algorithm);\n }\n\n this._algorithm = algorithm;\n\n // create shared padding as needed\n if(!MessageDigest._padding ||\n MessageDigest._padding.length < this._algorithm.blockSize) {\n MessageDigest._padding = String.fromCharCode(128);\n var c = String.fromCharCode(0x00);\n var n = 64;\n while(n > 0) {\n if(n & 1) {\n MessageDigest._padding += c;\n }\n n >>>= 1;\n if(n > 0) {\n c += c;\n }\n }\n }\n\n // start digest automatically for first time\n this.start();\n};\n\n/**\n * Starts the digest.\n *\n * @return this digest object.\n */\nMessageDigest.prototype.start = function() {\n // up to 56-bit message length for convenience\n this.messageLength = 0;\n\n // full message length\n this.fullMessageLength = [];\n var int32s = this._algorithm.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n this.fullMessageLength.push(0);\n }\n\n // input buffer\n this._input = new MessageDigest.ByteBuffer();\n\n // get starting state\n this.state = this._algorithm.start();\n\n return this;\n};\n\n/**\n * Updates the digest with the given message input. The input must be\n * a string of characters.\n *\n * @param msg the message input to update with (ByteBuffer or string).\n *\n * @return this digest object.\n */\nMessageDigest.prototype.update = function(msg) {\n // encode message as a UTF-8 encoded binary string\n msg = new MessageDigest.ByteBuffer(unescape(encodeURIComponent(msg)));\n\n // update message length\n this.messageLength += msg.length();\n var len = msg.length();\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = this.fullMessageLength.length - 1; i >= 0; --i) {\n this.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((this.fullMessageLength[i] / 0x100000000) >>> 0);\n this.fullMessageLength[i] = this.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n this._input.putBytes(msg.bytes());\n\n // digest blocks\n while(this._input.length() >= this._algorithm.blockSize) {\n this.state = this._algorithm.digest(this.state, this._input);\n }\n\n // compact input buffer every 2K or if empty\n if(this._input.read > 2048 || this._input.length() === 0) {\n this._input.compact();\n }\n\n return this;\n};\n\n/**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\nMessageDigest.prototype.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and add the\n appropriate padding. Then we do the final update on a copy of the state so\n that if the user wants to get intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message to\n ensure its length is appropriately congruent. In other words, the data to\n be digested must be a multiple of `blockSize`. This data includes the\n message, some padding, and the length of the message. Since the length of\n the message will be encoded as `messageLengthSize` bytes, that means that\n the last segment of the data must have `blockSize` - `messageLengthSize`\n bytes of message and padding. Therefore, the length of the message plus the\n padding must be congruent to X mod `blockSize` because\n `blockSize` - `messageLengthSize` = X.\n\n For example, SHA-1 is congruent to 448 mod 512 and SHA-512 is congruent to\n 896 mod 1024. SHA-1 uses a `blockSize` of 64 bytes (512 bits) and a\n `messageLengthSize` of 8 bytes (64 bits). SHA-512 uses a `blockSize` of\n 128 bytes (1024 bits) and a `messageLengthSize` of 16 bytes (128 bits).\n\n In order to fill up the message length it must be filled with padding that\n begins with 1 bit followed by all 0 bits. Padding must *always* be present,\n so if the message length is already congruent, then `blockSize` padding bits\n must be added. */\n\n // create final block\n var finalBlock = new MessageDigest.ByteBuffer();\n finalBlock.putBytes(this._input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n this.fullMessageLength[this.fullMessageLength.length - 1] +\n this._algorithm.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (this._algorithm.blockSize - 1);\n finalBlock.putBytes(MessageDigest._padding.substr(\n 0, this._algorithm.blockSize - overflow));\n\n // serialize message length in bits in big-endian order; since length\n // is stored in bytes we multiply by 8 (left shift by 3 and merge in\n // remainder from )\n var messageLength = new MessageDigest.ByteBuffer();\n for(var i = 0; i < this.fullMessageLength.length; ++i) {\n messageLength.putInt32((this.fullMessageLength[i] << 3) |\n (this.fullMessageLength[i + 1] >>> 28));\n }\n\n // write the length of the message (algorithm-specific)\n this._algorithm.writeMessageLength(finalBlock, messageLength);\n\n // digest final block\n var state = this._algorithm.digest(this.state.copy(), finalBlock);\n\n // write state to buffer\n var rval = new MessageDigest.ByteBuffer();\n state.write(rval);\n return rval;\n};\n\n/**\n * Creates a simple byte buffer for message digest operations.\n *\n * @param data the data to put in the buffer.\n */\nMessageDigest.ByteBuffer = function(data) {\n if(typeof data === 'string') {\n this.data = data;\n } else {\n this.data = '';\n }\n this.read = 0;\n};\n\n/**\n * Puts a 32-bit integer into this buffer in big-endian order.\n *\n * @param i the 32-bit integer.\n */\nMessageDigest.ByteBuffer.prototype.putInt32 = function(i) {\n this.data += (\n String.fromCharCode(i >> 24 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n/**\n * Gets a 32-bit integer from this buffer in big-endian order and\n * advances the read pointer by 4.\n *\n * @return the word.\n */\nMessageDigest.ByteBuffer.prototype.getInt32 = function() {\n var rval = (\n this.data.charCodeAt(this.read) << 24 ^\n this.data.charCodeAt(this.read + 1) << 16 ^\n this.data.charCodeAt(this.read + 2) << 8 ^\n this.data.charCodeAt(this.read + 3));\n this.read += 4;\n return rval;\n};\n\n/**\n * Puts the given bytes into this buffer.\n *\n * @param bytes the bytes as a binary-encoded string.\n */\nMessageDigest.ByteBuffer.prototype.putBytes = function(bytes) {\n this.data += bytes;\n};\n\n/**\n * Gets the bytes in this buffer.\n *\n * @return a string full of UTF-8 encoded characters.\n */\nMessageDigest.ByteBuffer.prototype.bytes = function() {\n return this.data.slice(this.read);\n};\n\n/**\n * Gets the number of bytes in this buffer.\n *\n * @return the number of bytes in this buffer.\n */\nMessageDigest.ByteBuffer.prototype.length = function() {\n return this.data.length - this.read;\n};\n\n/**\n * Compacts this buffer.\n */\nMessageDigest.ByteBuffer.prototype.compact = function() {\n this.data = this.data.slice(this.read);\n this.read = 0;\n};\n\n/**\n * Converts this buffer to a hexadecimal string.\n *\n * @return a hexadecimal string.\n */\nMessageDigest.ByteBuffer.prototype.toHex = function() {\n var rval = '';\n for(var i = this.read; i < this.data.length; ++i) {\n var b = this.data.charCodeAt(i);\n if(b < 16) {\n rval += '0';\n }\n rval += b.toString(16);\n }\n return rval;\n};\n\n///////////////////////////// DEFINE SHA-1 ALGORITHM //////////////////////////\n\nvar sha1 = {\n // used for word storage\n _w: null\n};\n\nsha1.Algorithm = function() {\n this.name = 'sha1',\n this.blockSize = 64;\n this.digestLength = 20;\n this.messageLengthSize = 8;\n};\n\nsha1.Algorithm.prototype.start = function() {\n if(!sha1._w) {\n sha1._w = new Array(80);\n }\n return sha1._createState();\n};\n\nsha1.Algorithm.prototype.writeMessageLength = function(\n finalBlock, messageLength) {\n // message length is in bits and in big-endian order; simply append\n finalBlock.putBytes(messageLength.bytes());\n};\n\nsha1.Algorithm.prototype.digest = function(s, input) {\n // consume 512 bit (64 byte) chunks\n var t, a, b, c, d, e, f, i;\n var len = input.length();\n var _w = sha1._w;\n while(len >= 64) {\n // initialize hash value for this chunk\n a = s.h0;\n b = s.h1;\n c = s.h2;\n d = s.h3;\n e = s.h4;\n\n // the _w array will be populated with sixteen 32-bit big-endian words\n // and then extended into 80 32-bit words according to SHA-1 algorithm\n // and for 32-79 using Max Locktyukhin's optimization\n\n // round 1\n for(i = 0; i < 16; ++i) {\n t = input.getInt32();\n _w[i] = t;\n f = d ^ (b & (c ^ d));\n t = ((a << 5) | (a >>> 27)) + f + e + 0x5A827999 + t;\n e = d;\n d = c;\n c = (b << 30) | (b >>> 2);\n b = a;\n a = t;\n }\n for(; i < 20; ++i) {\n t = (_w[i - 3] ^ _w[i - 8] ^ _w[i - 14] ^ _w[i - 16]);\n t = (t << 1) | (t >>> 31);\n _w[i] = t;\n f = d ^ (b & (c ^ d));\n t = ((a << 5) | (a >>> 27)) + f + e + 0x5A827999 + t;\n e = d;\n d = c;\n c = (b << 30) | (b >>> 2);\n b = a;\n a = t;\n }\n // round 2\n for(; i < 32; ++i) {\n t = (_w[i - 3] ^ _w[i - 8] ^ _w[i - 14] ^ _w[i - 16]);\n t = (t << 1) | (t >>> 31);\n _w[i] = t;\n f = b ^ c ^ d;\n t = ((a << 5) | (a >>> 27)) + f + e + 0x6ED9EBA1 + t;\n e = d;\n d = c;\n c = (b << 30) | (b >>> 2);\n b = a;\n a = t;\n }\n for(; i < 40; ++i) {\n t = (_w[i - 6] ^ _w[i - 16] ^ _w[i - 28] ^ _w[i - 32]);\n t = (t << 2) | (t >>> 30);\n _w[i] = t;\n f = b ^ c ^ d;\n t = ((a << 5) | (a >>> 27)) + f + e + 0x6ED9EBA1 + t;\n e = d;\n d = c;\n c = (b << 30) | (b >>> 2);\n b = a;\n a = t;\n }\n // round 3\n for(; i < 60; ++i) {\n t = (_w[i - 6] ^ _w[i - 16] ^ _w[i - 28] ^ _w[i - 32]);\n t = (t << 2) | (t >>> 30);\n _w[i] = t;\n f = (b & c) | (d & (b ^ c));\n t = ((a << 5) | (a >>> 27)) + f + e + 0x8F1BBCDC + t;\n e = d;\n d = c;\n c = (b << 30) | (b >>> 2);\n b = a;\n a = t;\n }\n // round 4\n for(; i < 80; ++i) {\n t = (_w[i - 6] ^ _w[i - 16] ^ _w[i - 28] ^ _w[i - 32]);\n t = (t << 2) | (t >>> 30);\n _w[i] = t;\n f = b ^ c ^ d;\n t = ((a << 5) | (a >>> 27)) + f + e + 0xCA62C1D6 + t;\n e = d;\n d = c;\n c = (b << 30) | (b >>> 2);\n b = a;\n a = t;\n }\n\n // update hash state\n s.h0 = (s.h0 + a) | 0;\n s.h1 = (s.h1 + b) | 0;\n s.h2 = (s.h2 + c) | 0;\n s.h3 = (s.h3 + d) | 0;\n s.h4 = (s.h4 + e) | 0;\n\n len -= 64;\n }\n\n return s;\n};\n\nsha1._createState = function() {\n var state = {\n h0: 0x67452301,\n h1: 0xEFCDAB89,\n h2: 0x98BADCFE,\n h3: 0x10325476,\n h4: 0xC3D2E1F0\n };\n state.copy = function() {\n var rval = sha1._createState();\n rval.h0 = state.h0;\n rval.h1 = state.h1;\n rval.h2 = state.h2;\n rval.h3 = state.h3;\n rval.h4 = state.h4;\n return rval;\n };\n state.write = function(buffer) {\n buffer.putInt32(state.h0);\n buffer.putInt32(state.h1);\n buffer.putInt32(state.h2);\n buffer.putInt32(state.h3);\n buffer.putInt32(state.h4);\n };\n return state;\n};\n\n//////////////////////////// DEFINE SHA-256 ALGORITHM /////////////////////////\n\nvar sha256 = {\n // shared state\n _k: null,\n _w: null\n};\n\nsha256.Algorithm = function() {\n this.name = 'sha256',\n this.blockSize = 64;\n this.digestLength = 32;\n this.messageLengthSize = 8;\n};\n\nsha256.Algorithm.prototype.start = function() {\n if(!sha256._k) {\n sha256._init();\n }\n return sha256._createState();\n};\n\nsha256.Algorithm.prototype.writeMessageLength = function(\n finalBlock, messageLength) {\n // message length is in bits and in big-endian order; simply append\n finalBlock.putBytes(messageLength.bytes());\n};\n\nsha256.Algorithm.prototype.digest = function(s, input) {\n // consume 512 bit (64 byte) chunks\n var t1, t2, s0, s1, ch, maj, i, a, b, c, d, e, f, g, h;\n var len = input.length();\n var _k = sha256._k;\n var _w = sha256._w;\n while(len >= 64) {\n // the w array will be populated with sixteen 32-bit big-endian words\n // and then extended into 64 32-bit words according to SHA-256\n for(i = 0; i < 16; ++i) {\n _w[i] = input.getInt32();\n }\n for(; i < 64; ++i) {\n // XOR word 2 words ago rot right 17, rot right 19, shft right 10\n t1 = _w[i - 2];\n t1 =\n ((t1 >>> 17) | (t1 << 15)) ^\n ((t1 >>> 19) | (t1 << 13)) ^\n (t1 >>> 10);\n // XOR word 15 words ago rot right 7, rot right 18, shft right 3\n t2 = _w[i - 15];\n t2 =\n ((t2 >>> 7) | (t2 << 25)) ^\n ((t2 >>> 18) | (t2 << 14)) ^\n (t2 >>> 3);\n // sum(t1, word 7 ago, t2, word 16 ago) modulo 2^32\n _w[i] = (t1 + _w[i - 7] + t2 + _w[i - 16]) | 0;\n }\n\n // initialize hash value for this chunk\n a = s.h0;\n b = s.h1;\n c = s.h2;\n d = s.h3;\n e = s.h4;\n f = s.h5;\n g = s.h6;\n h = s.h7;\n\n // round function\n for(i = 0; i < 64; ++i) {\n // Sum1(e)\n s1 =\n ((e >>> 6) | (e << 26)) ^\n ((e >>> 11) | (e << 21)) ^\n ((e >>> 25) | (e << 7));\n // Ch(e, f, g) (optimized the same way as SHA-1)\n ch = g ^ (e & (f ^ g));\n // Sum0(a)\n s0 =\n ((a >>> 2) | (a << 30)) ^\n ((a >>> 13) | (a << 19)) ^\n ((a >>> 22) | (a << 10));\n // Maj(a, b, c) (optimized the same way as SHA-1)\n maj = (a & b) | (c & (a ^ b));\n\n // main algorithm\n t1 = h + s1 + ch + _k[i] + _w[i];\n t2 = s0 + maj;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n // update hash state\n s.h0 = (s.h0 + a) | 0;\n s.h1 = (s.h1 + b) | 0;\n s.h2 = (s.h2 + c) | 0;\n s.h3 = (s.h3 + d) | 0;\n s.h4 = (s.h4 + e) | 0;\n s.h5 = (s.h5 + f) | 0;\n s.h6 = (s.h6 + g) | 0;\n s.h7 = (s.h7 + h) | 0;\n len -= 64;\n }\n\n return s;\n};\n\nsha256._createState = function() {\n var state = {\n h0: 0x6A09E667,\n h1: 0xBB67AE85,\n h2: 0x3C6EF372,\n h3: 0xA54FF53A,\n h4: 0x510E527F,\n h5: 0x9B05688C,\n h6: 0x1F83D9AB,\n h7: 0x5BE0CD19\n };\n state.copy = function() {\n var rval = sha256._createState();\n rval.h0 = state.h0;\n rval.h1 = state.h1;\n rval.h2 = state.h2;\n rval.h3 = state.h3;\n rval.h4 = state.h4;\n rval.h5 = state.h5;\n rval.h6 = state.h6;\n rval.h7 = state.h7;\n return rval;\n };\n state.write = function(buffer) {\n buffer.putInt32(state.h0);\n buffer.putInt32(state.h1);\n buffer.putInt32(state.h2);\n buffer.putInt32(state.h3);\n buffer.putInt32(state.h4);\n buffer.putInt32(state.h5);\n buffer.putInt32(state.h6);\n buffer.putInt32(state.h7);\n };\n return state;\n};\n\nsha256._init = function() {\n // create K table for SHA-256\n sha256._k = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n\n // used for word storage\n sha256._w = new Array(64);\n};\n\n})(_nodejs); // end definition of NormalizeHash\n\nif(!XMLSerializer) {\n\nvar _defineXMLSerializer = function() {\n XMLSerializer = require('xmldom').XMLSerializer;\n};\n\n} // end _defineXMLSerializer\n\n// define URL parser\n// parseUri 1.2.2\n// (c) Steven Levithan \n// MIT License\n// with local jsonld.js modifications\njsonld.url = {};\njsonld.url.parsers = {\n simple: {\n // RFC 3986 basic parts\n keys: ['href','scheme','authority','path','query','fragment'],\n regex: /^(?:([^:\\/?#]+):)?(?:\\/\\/([^\\/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?/\n },\n full: {\n keys: ['href','protocol','scheme','authority','auth','user','password','hostname','port','path','directory','file','query','fragment'],\n regex: /^(([^:\\/?#]+):)?(?:\\/\\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?))?(?:(((?:[^?#\\/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/\n }\n};\njsonld.url.parse = function(str, parser) {\n var parsed = {};\n var o = jsonld.url.parsers[parser || 'full'];\n var m = o.regex.exec(str);\n var i = o.keys.length;\n while(i--) {\n parsed[o.keys[i]] = (m[i] === undefined) ? null : m[i];\n }\n parsed.normalizedPath = _removeDotSegments(parsed.path, !!parsed.authority);\n return parsed;\n};\n\n/**\n * Removes dot segments from a URL path.\n *\n * @param path the path to remove dot segments from.\n * @param hasAuthority true if the URL has an authority, false if not.\n */\nfunction _removeDotSegments(path, hasAuthority) {\n var rval = '';\n\n if(path.indexOf('/') === 0) {\n rval = '/';\n }\n\n // RFC 3986 5.2.4 (reworked)\n var input = path.split('/');\n var output = [];\n while(input.length > 0) {\n if(input[0] === '.' || (input[0] === '' && input.length > 1)) {\n input.shift();\n continue;\n }\n if(input[0] === '..') {\n input.shift();\n if(hasAuthority ||\n (output.length > 0 && output[output.length - 1] !== '..')) {\n output.pop();\n } else {\n // leading relative URL '..'\n output.push('..');\n }\n continue;\n }\n output.push(input.shift());\n }\n\n return rval + output.join('/');\n}\n\nif(_nodejs) {\n // use node document loader by default\n jsonld.useDocumentLoader('node');\n} else if(typeof XMLHttpRequest !== 'undefined') {\n // use xhr document loader by default\n jsonld.useDocumentLoader('xhr');\n}\n\nif(_nodejs) {\n jsonld.use = function(extension) {\n switch(extension) {\n // TODO: Deprecated as of 0.4.0. Remove at some point.\n case 'request':\n // use node JSON-LD request extension\n jsonld.request = require('jsonld-request');\n break;\n default:\n throw new JsonLdError(\n 'Unknown extension.',\n 'jsonld.UnknownExtension', {extension: extension});\n }\n };\n\n // expose version\n var _module = {exports: {}, filename: __dirname};\n require('pkginfo')(_module, 'version');\n jsonld.version = _module.exports.version;\n}\n\n// end of jsonld API factory\nreturn jsonld;\n};\n\n// external APIs:\n\n// used to generate a new jsonld API instance\nvar factory = function() {\n return wrapper(function() {\n return factory();\n });\n};\n\nif(!_nodejs && (typeof define === 'function' && define.amd)) {\n // export AMD API\n define([], function() {\n // now that module is defined, wrap main jsonld API instance\n wrapper(factory);\n return factory;\n });\n} else {\n // wrap the main jsonld API instance\n wrapper(factory);\n\n if(typeof require === 'function' &&\n typeof module !== 'undefined' && module.exports) {\n // export CommonJS/nodejs API\n module.exports = factory;\n }\n\n if(_browser) {\n // export simple browser API\n if(typeof jsonld === 'undefined') {\n jsonld = jsonldjs = factory;\n } else {\n jsonldjs = factory;\n }\n }\n}\n\nreturn factory;\n\n})();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/jsonld/js/jsonld.js\n// module id = 149\n// module chunks = 0","// Replace local require by a lazy loader\nvar globalRequire = require;\nrequire = function () {};\n\n// Expose submodules\nvar exports = module.exports = {\n Lexer: require('./lib/N3Lexer'),\n Parser: require('./lib/N3Parser'),\n Writer: require('./lib/N3Writer'),\n Store: require('./lib/N3Store'),\n StreamParser: require('./lib/N3StreamParser'),\n StreamWriter: require('./lib/N3StreamWriter'),\n Util: require('./lib/N3Util'),\n};\n\n// Load submodules on first access\nObject.keys(exports).forEach(function (submodule) {\n Object.defineProperty(exports, submodule, {\n configurable: true,\n enumerable: true,\n get: function () {\n delete exports[submodule];\n return exports[submodule] = globalRequire('./lib/N3' + submodule);\n },\n });\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/n3/N3.js\n// module id = 150\n// module chunks = 0","// **N3Store** objects store N3 triples by graph in memory.\n\nvar expandPrefixedName = require('./N3Util').expandPrefixedName;\n\n// ## Constructor\nfunction N3Store(triples, options) {\n if (!(this instanceof N3Store))\n return new N3Store(triples, options);\n\n // The number of triples is initially zero.\n this._size = 0;\n // `_graphs` contains subject, predicate, and object indexes per graph.\n this._graphs = Object.create(null);\n // `_entities` maps entities such as `http://xmlns.com/foaf/0.1/name` to numbers.\n // This saves memory, since only the numbers have to be stored in `_graphs`.\n this._entities = Object.create(null);\n this._entities['><'] = 0; // Dummy entry, so the first actual key is non-zero\n this._entityCount = 0;\n // `_blankNodeIndex` is the index of the last created blank node that was automatically named\n this._blankNodeIndex = 0;\n\n // Shift parameters if `triples` is not given\n if (!options && triples && !triples[0])\n options = triples, triples = null;\n\n // Add triples and prefixes if passed\n this._prefixes = Object.create(null);\n if (options && options.prefixes)\n this.addPrefixes(options.prefixes);\n if (triples)\n this.addTriples(triples);\n}\n\nN3Store.prototype = {\n // ## Public properties\n\n // ### `size` returns the number of triples in the store.\n get size() {\n // Return the triple count if if was cached.\n var size = this._size;\n if (size !== null)\n return size;\n\n // Calculate the number of triples by counting to the deepest level.\n var graphs = this._graphs, subjects, subject;\n for (var graphKey in graphs)\n for (var subjectKey in (subjects = graphs[graphKey].subjects))\n for (var predicateKey in (subject = subjects[subjectKey]))\n size += Object.keys(subject[predicateKey]).length;\n return this._size = size;\n },\n\n // ## Private methods\n\n // ### `_addToIndex` adds a triple to a three-layered index.\n _addToIndex: function (index0, key0, key1, key2) {\n // Create layers as necessary.\n var index1 = index0[key0] || (index0[key0] = {});\n var index2 = index1[key1] || (index1[key1] = {});\n // Setting the key to _any_ value signalizes the presence of the triple.\n index2[key2] = null;\n },\n\n // ### `_removeFromIndex` removes a triple from a three-layered index.\n _removeFromIndex: function (index0, key0, key1, key2) {\n // Remove the triple from the index.\n var index1 = index0[key0], index2 = index1[key1], key;\n delete index2[key2];\n\n // Remove intermediary index layers if they are empty.\n for (key in index2) return;\n delete index1[key1];\n for (key in index1) return;\n delete index0[key0];\n },\n\n // ### `_findInIndex` finds a set of triples in a three-layered index.\n // The index base is `index0` and the keys at each level are `key0`, `key1`, and `key2`.\n // Any of these keys can be `null`, which is interpreted as a wildcard.\n // `name0`, `name1`, and `name2` are the names of the keys at each level,\n // used when reconstructing the resulting triple\n // (for instance: _subject_, _predicate_, and _object_).\n // Finally, `graph` will be the graph of the created triples.\n _findInIndex: function (index0, key0, key1, key2, name0, name1, name2, graph) {\n var results = [], entityKeys = Object.keys(this._entities), tmp, index1, index2;\n\n // If a key is specified, use only that part of index 0.\n if (key0) (tmp = index0, index0 = {})[key0] = tmp[key0];\n for (var value0 in index0) {\n var entity0 = entityKeys[value0];\n\n if (index1 = index0[value0]) {\n // If a key is specified, use only that part of index 1.\n if (key1) (tmp = index1, index1 = {})[key1] = tmp[key1];\n for (var value1 in index1) {\n var entity1 = entityKeys[value1];\n\n if (index2 = index1[value1]) {\n // If a key is specified, use only that part of index 2, if it exists.\n var values = key2 ? (key2 in index2 ? [key2] : []) : Object.keys(index2);\n // Create triples for all items found in index 2.\n for (var l = values.length - 1; l >= 0; l--) {\n var result = { subject: '', predicate: '', object: '', graph: graph };\n result[name0] = entity0;\n result[name1] = entity1;\n result[name2] = entityKeys[values[l]];\n results.push(result);\n }\n }\n }\n }\n }\n return results;\n },\n\n // ### `_countInIndex` counts matching triples in a three-layered index.\n // The index base is `index0` and the keys at each level are `key0`, `key1`, and `key2`.\n // Any of these keys can be `null`, which is interpreted as a wildcard.\n _countInIndex: function (index0, key0, key1, key2) {\n var count = 0, tmp, index1, index2;\n\n // If a key is specified, count only that part of index 0.\n if (key0) (tmp = index0, index0 = {})[key0] = tmp[key0];\n for (var value0 in index0) {\n if (index1 = index0[value0]) {\n // If a key is specified, count only that part of index 1.\n if (key1) (tmp = index1, index1 = {})[key1] = tmp[key1];\n for (var value1 in index1) {\n if (index2 = index1[value1]) {\n // If a key is specified, count the triple if it exists.\n if (key2) (key2 in index2) && count++;\n // Otherwise, count all triples.\n else count += Object.keys(index2).length;\n }\n }\n }\n }\n return count;\n },\n\n // ## Public methods\n\n // ### `addTriple` adds a new N3 triple to the store.\n addTriple: function (subject, predicate, object, graph) {\n // Shift arguments if a triple object is given instead of components\n if (!predicate)\n graph = subject.graph, object = subject.object,\n predicate = subject.predicate, subject = subject.subject;\n\n // Find the graph that will contain the triple.\n graph = graph || '';\n var graphItem = this._graphs[graph];\n // Create the graph if it doesn't exist yet.\n if (!graphItem) {\n graphItem = this._graphs[graph] = { subjects: {}, predicates: {}, objects: {} };\n // Freezing a graph helps subsequent `add` performance,\n // and properties will never be modified anyway.\n Object.freeze(graphItem);\n }\n\n // Since entities can often be long IRIs, we avoid storing them in every index.\n // Instead, we have a separate index that maps entities to numbers,\n // which are then used as keys in the other indexes.\n var entities = this._entities;\n subject = entities[subject] || (entities[subject] = ++this._entityCount);\n predicate = entities[predicate] || (entities[predicate] = ++this._entityCount);\n object = entities[object] || (entities[object] = ++this._entityCount);\n\n this._addToIndex(graphItem.subjects, subject, predicate, object);\n this._addToIndex(graphItem.predicates, predicate, object, subject);\n this._addToIndex(graphItem.objects, object, subject, predicate);\n\n // The cached triple count is now invalid.\n this._size = null;\n },\n\n // ### `addTriples` adds multiple N3 triples to the store.\n addTriples: function (triples) {\n for (var i = triples.length - 1; i >= 0; i--)\n this.addTriple(triples[i]);\n },\n\n // ### `addPrefix` adds support for querying with the given prefix\n addPrefix: function (prefix, iri) {\n this._prefixes[prefix] = iri;\n },\n\n // ### `addPrefixes` adds support for querying with the given prefixes\n addPrefixes: function (prefixes) {\n for (var prefix in prefixes)\n this.addPrefix(prefix, prefixes[prefix]);\n },\n\n // ### `removeTriple` removes an N3 triple from the store if it exists.\n removeTriple: function (subject, predicate, object, graph) {\n // Shift arguments if a triple object is given instead of components.\n if (!predicate)\n graph = subject.graph, object = subject.object,\n predicate = subject.predicate, subject = subject.subject;\n graph = graph || '';\n\n // Find internal identifiers for all components.\n var graphItem, entities = this._entities, graphs = this._graphs;\n if (!(subject = entities[subject])) return;\n if (!(predicate = entities[predicate])) return;\n if (!(object = entities[object])) return;\n if (!(graphItem = graphs[graph])) return;\n\n // Verify that the triple exists.\n var subjects, predicates;\n if (!(subjects = graphItem.subjects[subject])) return;\n if (!(predicates = subjects[predicate])) return;\n if (!(object in predicates)) return;\n\n // Remove it from all indexes.\n this._removeFromIndex(graphItem.subjects, subject, predicate, object);\n this._removeFromIndex(graphItem.predicates, predicate, object, subject);\n this._removeFromIndex(graphItem.objects, object, subject, predicate);\n if (this._size !== null) this._size--;\n\n // Remove the graph if it is empty.\n for (subject in graphItem.subjects) return;\n delete graphs[graph];\n },\n\n // ### `removeTriples` removes multiple N3 triples from the store.\n removeTriples: function (triples) {\n for (var i = triples.length - 1; i >= 0; i--)\n this.removeTriple(triples[i]);\n },\n\n // ### `find` finds a set of triples matching a pattern, expanding prefixes as necessary.\n // Setting `subject`, `predicate`, or `object` to `null` means an _anything_ wildcard.\n // Setting `graph` to `null` means the default graph.\n find: function (subject, predicate, object, graph) {\n var prefixes = this._prefixes;\n return this.findByIRI(\n expandPrefixedName(subject, prefixes),\n expandPrefixedName(predicate, prefixes),\n expandPrefixedName(object, prefixes),\n expandPrefixedName(graph, prefixes)\n );\n },\n\n // ### `findByIRI` finds a set of triples matching a pattern.\n // Setting `subject`, `predicate`, or `object` to a falsy value means an _anything_ wildcard.\n // Setting `graph` to a falsy value means the default graph.\n findByIRI: function (subject, predicate, object, graph) {\n graph = graph || '';\n var graphItem = this._graphs[graph], entities = this._entities;\n\n // If the specified graph contain no triples, there are no results.\n if (!graphItem) return [];\n\n // Translate IRIs to internal index keys.\n // Optimization: if the entity doesn't exist, no triples with it exist.\n if (subject && !(subject = entities[subject])) return [];\n if (predicate && !(predicate = entities[predicate])) return [];\n if (object && !(object = entities[object])) return [];\n\n // Choose the optimal index, based on what fields are present\n if (subject) {\n if (object)\n // If subject and object are given, the object index will be the fastest.\n return this._findInIndex(graphItem.objects, object, subject, predicate,\n 'object', 'subject', 'predicate', graph);\n else\n // If only subject and possibly predicate are given, the subject index will be the fastest.\n return this._findInIndex(graphItem.subjects, subject, predicate, null,\n 'subject', 'predicate', 'object', graph);\n }\n else if (predicate)\n // If only predicate and possibly object are given, the predicate index will be the fastest.\n return this._findInIndex(graphItem.predicates, predicate, object, null,\n 'predicate', 'object', 'subject', graph);\n else if (object)\n // If only object is given, the object index will be the fastest.\n return this._findInIndex(graphItem.objects, object, null, null,\n 'object', 'subject', 'predicate', graph);\n else\n // If nothing is given, iterate subjects and predicates first\n return this._findInIndex(graphItem.subjects, null, null, null,\n 'subject', 'predicate', 'object', graph);\n },\n\n // ### `count` returns the number of triples matching a pattern, expanding prefixes as necessary.\n // Setting `subject`, `predicate`, or `object` to `null` means an _anything_ wildcard.\n // Setting `graph` to `null` means the default graph.\n count: function (subject, predicate, object, graph) {\n var prefixes = this._prefixes;\n return this.countByIRI(\n expandPrefixedName(subject, prefixes),\n expandPrefixedName(predicate, prefixes),\n expandPrefixedName(object, prefixes),\n expandPrefixedName(graph, prefixes)\n );\n },\n\n // ### `countByIRI` returns the number of triples matching a pattern.\n // Setting `subject`, `predicate`, or `object` to `null` means an _anything_ wildcard.\n // Setting `graph` to `null` means the default graph.\n countByIRI: function (subject, predicate, object, graph) {\n graph = graph || '';\n var graphItem = this._graphs[graph], entities = this._entities;\n\n // If the specified graph contain no triples, there are no results.\n if (!graphItem) return 0;\n\n // Translate IRIs to internal index keys.\n // Optimization: if the entity doesn't exist, no triples with it exist.\n if (subject && !(subject = entities[subject])) return 0;\n if (predicate && !(predicate = entities[predicate])) return 0;\n if (object && !(object = entities[object])) return 0;\n\n // Choose the optimal index, based on what fields are present\n if (subject) {\n if (object)\n // If subject and object are given, the object index will be the fastest.\n return this._countInIndex(graphItem.objects, object, subject, predicate);\n else\n // If only subject and possibly predicate are given, the subject index will be the fastest.\n return this._countInIndex(graphItem.subjects, subject, predicate, object);\n }\n else if (predicate) {\n // If only predicate and possibly object are given, the predicate index will be the fastest.\n return this._countInIndex(graphItem.predicates, predicate, object, subject);\n }\n else {\n // If only object is possibly given, the object index will be the fastest.\n return this._countInIndex(graphItem.objects, object, subject, predicate);\n }\n },\n\n // ### `createBlankNode` creates a new blank node, returning its name.\n createBlankNode: function (suggestedName) {\n var name, index;\n // Generate a name based on the suggested name\n if (suggestedName) {\n name = suggestedName = '_:' + suggestedName, index = 1;\n while (this._entities[name])\n name = suggestedName + index++;\n }\n // Generate a generic blank node name\n else {\n do { name = '_:b' + this._blankNodeIndex++; }\n while (this._entities[name]);\n }\n // Add the blank node to the entities, avoiding the generation of duplicates\n this._entities[name] = ++this._entityCount;\n return name;\n },\n};\n\n// ## Exports\n\n// Export the `N3Store` class as a whole.\nmodule.exports = N3Store;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/n3/lib/N3Store.js\n// module id = 151\n// module chunks = 0","// **N3StreamParser** parses an N3 stream into a triple stream\nvar Transform = require('stream').Transform,\n util = require('util'),\n N3Parser = require('./N3Parser.js');\n\n// ## Constructor\nfunction N3StreamParser(options) {\n if (!(this instanceof N3StreamParser))\n return new N3StreamParser(options);\n\n // Initialize Transform base class\n Transform.call(this, { decodeStrings: true });\n this._readableState.objectMode = true;\n\n // Set up parser\n var self = this, parser = new N3Parser(options);\n parser.parse(\n // Handle triples by pushing them down the pipeline\n function (error, triple) {\n triple && self.push(triple) ||\n error && self.emit('error', error);\n },\n // Emit prefixes through the `prefix` event\n this.emit.bind(this, 'prefix'));\n\n // Implement Transform methods on top of parser\n this._transform = function (chunk, encoding, done) { parser.addChunk(chunk); done(); };\n this._flush = function (done) { parser.end(); done(); };\n}\nutil.inherits(N3StreamParser, Transform);\n\n// ## Exports\n// Export the `N3StreamParser` class as a whole.\nmodule.exports = N3StreamParser;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/n3/lib/N3StreamParser.js\n// module id = 152\n// module chunks = 0","// **N3StreamWriter** serializes a triple stream into an N3 stream\nvar Transform = require('stream').Transform,\n util = require('util'),\n N3Writer = require('./N3Writer.js');\n\n// ## Constructor\nfunction N3StreamWriter(options) {\n if (!(this instanceof N3StreamWriter))\n return new N3StreamWriter(options);\n\n // Initialize Transform base class\n Transform.call(this, { encoding: 'utf8' });\n this._writableState.objectMode = true;\n\n // Set up writer with a dummy stream object\n var self = this;\n var writer = new N3Writer({\n write: function (chunk, encoding, callback) { self.push(chunk); callback && callback(); },\n end: function (callback) { self.push(null); callback && callback(); },\n }, options);\n\n // Implement Transform methods on top of writer\n this._transform = function (triple, encoding, done) { writer.addTriple(triple, done); };\n this._flush = function (done) { writer.end(done); };\n}\nutil.inherits(N3StreamWriter, Transform);\n\n// ## Exports\n// Export the `N3StreamWriter` class as a whole.\nmodule.exports = N3StreamWriter;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/n3/lib/N3StreamWriter.js\n// module id = 153\n// module chunks = 0","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/punycode/punycode.js\n// module id = 154\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/_stream_readable.js\n// module id = 155\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/_stream_transform.js\n// module id = 156\n// module chunks = 0","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/internal/streams/destroy.js\n// module id = 157\n// module chunks = 0","module.exports = require('events').EventEmitter;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/internal/streams/stream-browser.js\n// module id = 158\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.combineHandlers = exports.server = exports.client = undefined;\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _typeof2 = require('babel-runtime/helpers/typeof');\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _v = require('uuid/v4');\n\nvar _v2 = _interopRequireDefault(_v);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n This module describes a simple IPC interface for communicating between browser windows.\n Window.postMessage() is the transport interface, and a request/response interface\n is defined on top of it as follows:\n\n const request = {\n 'solid-auth-client': {\n id: 'abcd-efgh-ijkl',\n method: 'doSomethingPlease',\n args: [ 'one', 'two', 'three' ]\n }\n }\n\n const response = {\n 'solid-auth-client': {\n id: 'abcd-efgh-ijkl',\n ret: 'the_value'\n }\n }\n*/\n\nvar NAMESPACE = 'solid-auth-client';\n\n\nvar namespace = function namespace(data) {\n return (0, _defineProperty3.default)({}, NAMESPACE, data);\n};\n\nvar getNamespacedPayload = function getNamespacedPayload(eventData) {\n if (!eventData || (typeof eventData === 'undefined' ? 'undefined' : (0, _typeof3.default)(eventData)) !== 'object') {\n return null;\n }\n var payload = eventData[NAMESPACE];\n if (!payload || (typeof payload === 'undefined' ? 'undefined' : (0, _typeof3.default)(payload)) !== 'object') {\n return null;\n }\n return payload;\n};\n\nvar getResponse = function getResponse(eventData) {\n var resp = getNamespacedPayload(eventData);\n if (!resp) {\n return null;\n }\n var id = resp.id,\n ret = resp.ret;\n\n return id != null && typeof id === 'string' && resp.hasOwnProperty('ret') ? { id: id, ret: ret } : null;\n};\n\nvar getRequest = function getRequest(eventData) {\n var req = getNamespacedPayload(eventData);\n if (!req) {\n return null;\n }\n var id = req.id,\n method = req.method,\n args = req.args;\n\n return id != null && typeof id === 'string' && typeof method === 'string' && Array.isArray(args) ? { id: id, method: method, args: args } : null;\n};\n\nvar client = exports.client = function client(serverWindow, serverOrigin) {\n return function (request) {\n return new _promise2.default(function (resolve, reject) {\n var reqId = (0, _v2.default)();\n var responseListener = function responseListener(event) {\n var data = event.data,\n origin = event.origin;\n\n var resp = getResponse(data);\n if (serverOrigin !== '*' && origin !== serverOrigin || !resp) {\n return;\n }\n if (resp.id !== reqId) {\n return;\n }\n resolve(resp.ret);\n window.removeEventListener('message', responseListener);\n };\n window.addEventListener('message', responseListener);\n serverWindow.postMessage({\n 'solid-auth-client': {\n id: reqId,\n method: request.method,\n args: request.args\n }\n }, serverOrigin);\n });\n };\n};\n\nvar server = exports.server = function server(clientWindow, clientOrigin) {\n return function (handle) {\n var messageListener = function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(event) {\n var data, origin, req, resp;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n data = event.data, origin = event.origin;\n req = getRequest(data);\n\n if (req) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt('return');\n\n case 4:\n if (!(origin !== clientOrigin)) {\n _context.next = 7;\n break;\n }\n\n console.warn('SECURITY WARNING: solid-auth-client is listening for messages from ' + clientOrigin + ', ' + ('but received a message from ' + origin + '. Ignoring the message.'));\n return _context.abrupt('return');\n\n case 7:\n _context.next = 9;\n return handle(req);\n\n case 9:\n resp = _context.sent;\n\n if (resp) {\n clientWindow.postMessage(namespace(resp), clientOrigin);\n }\n\n case 11:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, undefined);\n }));\n\n return function messageListener(_x) {\n return _ref2.apply(this, arguments);\n };\n }();\n\n var _server = {\n start: function start() {\n window.addEventListener('message', messageListener);\n return _server;\n },\n stop: function stop() {\n window.removeEventListener('message', messageListener);\n return _server;\n }\n };\n return _server;\n };\n};\n\nvar combineHandlers = exports.combineHandlers = function combineHandlers() {\n for (var _len = arguments.length, handlers = Array(_len), _key = 0; _key < _len; _key++) {\n handlers[_key] = arguments[_key];\n }\n\n return function (req) {\n return handlers.map(function (handler) {\n return handler(req);\n }).find(function (promise) {\n return promise !== null;\n });\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/solid-auth-client/lib/ipc.js\n// module id = 159\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/stream-browserify/index.js\n// module id = 160\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/string_decoder/lib/string_decoder.js\n// module id = 161\n// module chunks = 0","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst impl = utils.implSymbol;\n\nconst IteratorPrototype = Object.create(utils.IteratorPrototype, {\n next: {\n value: function next() {\n const internal = this[utils.iterInternalSymbol];\n const { target, kind, index } = internal;\n const values = Array.from(target[impl]);\n const len = values.length;\n if (index >= len) {\n return { value: undefined, done: true };\n }\n\n const pair = values[index];\n internal.index = index + 1;\n const [key, value] = pair.map(utils.tryWrapperForImpl);\n\n let result;\n switch (kind) {\n case \"key\":\n result = key;\n break;\n case \"value\":\n result = value;\n break;\n case \"key+value\":\n result = [key, value];\n break;\n }\n return { value: result, done: false };\n },\n writable: true,\n enumerable: true,\n configurable: true\n },\n [Symbol.toStringTag]: {\n value: \"URLSearchParamsIterator\",\n writable: false,\n enumerable: false,\n configurable: true\n }\n});\n\nfunction URLSearchParams() {\n const args = [];\n for (let i = 0; i < arguments.length && i < 1; ++i) {\n args[i] = arguments[i];\n }\n\n if (args[0] !== undefined) {\n if (utils.isObject(args[0])) {\n if (args[0][Symbol.iterator] !== undefined) {\n if (!utils.isObject(args[0])) {\n throw new TypeError(\n \"Failed to construct 'URLSearchParams': parameter 1\" + \" sequence\" + \" is not an iterable object.\"\n );\n } else {\n const V = [];\n const tmp = args[0];\n for (let nextItem of tmp) {\n if (!utils.isObject(nextItem)) {\n throw new TypeError(\n \"Failed to construct 'URLSearchParams': parameter 1\" +\n \" sequence\" +\n \"'s element\" +\n \" is not an iterable object.\"\n );\n } else {\n const V = [];\n const tmp = nextItem;\n for (let nextItem of tmp) {\n nextItem = conversions[\"USVString\"](nextItem, {\n context:\n \"Failed to construct 'URLSearchParams': parameter 1\" + \" sequence\" + \"'s element\" + \"'s element\"\n });\n\n V.push(nextItem);\n }\n nextItem = V;\n }\n\n V.push(nextItem);\n }\n args[0] = V;\n }\n } else {\n if (!utils.isObject(args[0])) {\n throw new TypeError(\"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \" is not an object.\");\n } else {\n const result = Object.create(null);\n for (const key of Reflect.ownKeys(args[0])) {\n const desc = Object.getOwnPropertyDescriptor(args[0], key);\n if (desc && desc.enumerable) {\n let typedKey = key;\n let typedValue = args[0][key];\n\n typedKey = conversions[\"USVString\"](typedKey, {\n context: \"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \"'s key\"\n });\n\n typedValue = conversions[\"USVString\"](typedValue, {\n context: \"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \"'s value\"\n });\n\n result[typedKey] = typedValue;\n }\n }\n args[0] = result;\n }\n }\n } else {\n args[0] = conversions[\"USVString\"](args[0], { context: \"Failed to construct 'URLSearchParams': parameter 1\" });\n }\n } else {\n args[0] = \"\";\n }\n\n iface.setup(this, args);\n}\n\nObject.defineProperty(URLSearchParams, \"prototype\", {\n value: URLSearchParams.prototype,\n writable: false,\n enumerable: false,\n configurable: false\n});\n\nObject.defineProperty(URLSearchParams.prototype, Symbol.iterator, {\n writable: true,\n enumerable: false,\n configurable: true,\n value: function entries() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return module.exports.createDefaultIterator(this, \"key+value\");\n }\n});\nURLSearchParams.prototype.forEach = function forEach(callback) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\n \"Failed to execute 'forEach' on 'URLSearchParams': 1 argument required, \" + \"but only 0 present.\"\n );\n }\n if (typeof callback !== \"function\") {\n throw new TypeError(\n \"Failed to execute 'forEach' on 'URLSearchParams': The callback provided \" + \"as parameter 1 is not a function.\"\n );\n }\n const thisArg = arguments[1];\n let pairs = Array.from(this[impl]);\n let i = 0;\n while (i < pairs.length) {\n const [key, value] = pairs[i].map(utils.tryWrapperForImpl);\n callback.call(thisArg, value, key, this);\n pairs = Array.from(this[impl]);\n i++;\n }\n};\nURLSearchParams.prototype.append = function append(name, value) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n if (arguments.length < 2) {\n throw new TypeError(\n \"Failed to execute 'append' on 'URLSearchParams': 2 \" +\n \"arguments required, but only \" +\n arguments.length +\n \" present.\"\n );\n }\n\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n\n args[0] = conversions[\"USVString\"](args[0], {\n context: \"Failed to execute 'append' on 'URLSearchParams': parameter 1\"\n });\n\n args[1] = conversions[\"USVString\"](args[1], {\n context: \"Failed to execute 'append' on 'URLSearchParams': parameter 2\"\n });\n\n return this[impl].append(...args);\n};\n\nURLSearchParams.prototype.delete = function _(name) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n if (arguments.length < 1) {\n throw new TypeError(\n \"Failed to execute 'delete' on 'URLSearchParams': 1 \" +\n \"argument required, but only \" +\n arguments.length +\n \" present.\"\n );\n }\n\n const args = [];\n for (let i = 0; i < arguments.length && i < 1; ++i) {\n args[i] = arguments[i];\n }\n\n args[0] = conversions[\"USVString\"](args[0], {\n context: \"Failed to execute 'delete' on 'URLSearchParams': parameter 1\"\n });\n\n return this[impl].delete(...args);\n};\n\nURLSearchParams.prototype.get = function get(name) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n if (arguments.length < 1) {\n throw new TypeError(\n \"Failed to execute 'get' on 'URLSearchParams': 1 \" +\n \"argument required, but only \" +\n arguments.length +\n \" present.\"\n );\n }\n\n const args = [];\n for (let i = 0; i < arguments.length && i < 1; ++i) {\n args[i] = arguments[i];\n }\n\n args[0] = conversions[\"USVString\"](args[0], { context: \"Failed to execute 'get' on 'URLSearchParams': parameter 1\" });\n\n return this[impl].get(...args);\n};\n\nURLSearchParams.prototype.getAll = function getAll(name) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n if (arguments.length < 1) {\n throw new TypeError(\n \"Failed to execute 'getAll' on 'URLSearchParams': 1 \" +\n \"argument required, but only \" +\n arguments.length +\n \" present.\"\n );\n }\n\n const args = [];\n for (let i = 0; i < arguments.length && i < 1; ++i) {\n args[i] = arguments[i];\n }\n\n args[0] = conversions[\"USVString\"](args[0], {\n context: \"Failed to execute 'getAll' on 'URLSearchParams': parameter 1\"\n });\n\n return utils.tryWrapperForImpl(this[impl].getAll(...args));\n};\n\nURLSearchParams.prototype.has = function has(name) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n if (arguments.length < 1) {\n throw new TypeError(\n \"Failed to execute 'has' on 'URLSearchParams': 1 \" +\n \"argument required, but only \" +\n arguments.length +\n \" present.\"\n );\n }\n\n const args = [];\n for (let i = 0; i < arguments.length && i < 1; ++i) {\n args[i] = arguments[i];\n }\n\n args[0] = conversions[\"USVString\"](args[0], { context: \"Failed to execute 'has' on 'URLSearchParams': parameter 1\" });\n\n return this[impl].has(...args);\n};\n\nURLSearchParams.prototype.set = function set(name, value) {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n if (arguments.length < 2) {\n throw new TypeError(\n \"Failed to execute 'set' on 'URLSearchParams': 2 \" +\n \"arguments required, but only \" +\n arguments.length +\n \" present.\"\n );\n }\n\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n\n args[0] = conversions[\"USVString\"](args[0], { context: \"Failed to execute 'set' on 'URLSearchParams': parameter 1\" });\n\n args[1] = conversions[\"USVString\"](args[1], { context: \"Failed to execute 'set' on 'URLSearchParams': parameter 2\" });\n\n return this[impl].set(...args);\n};\n\nURLSearchParams.prototype.sort = function sort() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n return this[impl].sort();\n};\n\nURLSearchParams.prototype.toString = function toString() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n\n return this[impl].toString();\n};\n\nURLSearchParams.prototype.entries = URLSearchParams.prototype[Symbol.iterator];\n\nURLSearchParams.prototype.keys = function keys() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return module.exports.createDefaultIterator(this, \"key\");\n};\n\nURLSearchParams.prototype.values = function values() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return module.exports.createDefaultIterator(this, \"value\");\n};\n\nObject.defineProperty(URLSearchParams.prototype, Symbol.toStringTag, {\n value: \"URLSearchParams\",\n writable: false,\n enumerable: false,\n configurable: true\n});\n\nconst iface = {\n mixedInto: [],\n is(obj) {\n if (obj) {\n if (obj[impl] instanceof Impl.implementation) {\n return true;\n }\n for (let i = 0; i < module.exports.mixedInto.length; ++i) {\n if (obj instanceof module.exports.mixedInto[i]) {\n return true;\n }\n }\n }\n return false;\n },\n isImpl(obj) {\n if (obj) {\n if (obj instanceof Impl.implementation) {\n return true;\n }\n\n const wrapper = utils.wrapperForImpl(obj);\n for (let i = 0; i < module.exports.mixedInto.length; ++i) {\n if (wrapper instanceof module.exports.mixedInto[i]) {\n return true;\n }\n }\n }\n return false;\n },\n convert(obj, { context = \"The provided value\" } = {}) {\n if (module.exports.is(obj)) {\n return utils.implForWrapper(obj);\n }\n throw new TypeError(`${context} is not of type 'URLSearchParams'.`);\n },\n\n createDefaultIterator(target, kind) {\n const iterator = Object.create(IteratorPrototype);\n Object.defineProperty(iterator, utils.iterInternalSymbol, {\n value: { target, kind, index: 0 },\n writable: false,\n enumerable: false,\n configurable: true\n });\n return iterator;\n },\n\n create(constructorArgs, privateData) {\n let obj = Object.create(URLSearchParams.prototype);\n obj = this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n createImpl(constructorArgs, privateData) {\n let obj = Object.create(URLSearchParams.prototype);\n obj = this.setup(obj, constructorArgs, privateData);\n return utils.implForWrapper(obj);\n },\n _internalSetup(obj) {},\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n\n privateData.wrapper = obj;\n\n this._internalSetup(obj);\n Object.defineProperty(obj, impl, {\n value: new Impl.implementation(constructorArgs, privateData),\n writable: false,\n enumerable: false,\n configurable: true\n });\n\n obj[impl][utils.wrapperSymbol] = obj;\n if (Impl.init) {\n Impl.init(obj[impl], privateData);\n }\n return obj;\n },\n interface: URLSearchParams,\n expose: {\n Window: { URLSearchParams },\n Worker: { URLSearchParams }\n }\n}; // iface\nmodule.exports = iface;\n\nconst Impl = require(\".//URLSearchParams-impl.js\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/whatwg-url/lib/URLSearchParams.js\n// module id = 163\n// module chunks = 0","\"use strict\";\n\nfunction isASCIIDigit(c) {\n return c >= 0x30 && c <= 0x39;\n}\n\nfunction isASCIIAlpha(c) {\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\n}\n\nfunction isASCIIAlphanumeric(c) {\n return isASCIIAlpha(c) || isASCIIDigit(c);\n}\n\nfunction isASCIIHex(c) {\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\n}\n\nmodule.exports = {\n isASCIIDigit,\n isASCIIAlpha,\n isASCIIAlphanumeric,\n isASCIIHex\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/whatwg-url/lib/infra.js\n// module id = 164\n// module chunks = 0","\"use strict\";\n\n// Returns \"Type(value) is Object\" in ES terminology.\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null || typeof value === \"function\";\n}\n\nfunction getReferenceToBytes(bufferSource) {\n // Node.js' Buffer does not allow subclassing for now, so we can get away with a prototype object check for perf.\n if (Object.getPrototypeOf(bufferSource) === Buffer.prototype) {\n return bufferSource;\n }\n if (bufferSource instanceof ArrayBuffer) {\n return Buffer.from(bufferSource);\n }\n return Buffer.from(bufferSource.buffer, bufferSource.byteOffset, bufferSource.byteLength);\n}\n\nfunction getCopyToBytes(bufferSource) {\n return Buffer.from(getReferenceToBytes(bufferSource));\n}\n\nfunction mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n if (keys[i] in target) {\n continue;\n }\n\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n}\n\nconst wrapperSymbol = Symbol(\"wrapper\");\nconst implSymbol = Symbol(\"impl\");\nconst sameObjectCaches = Symbol(\"SameObject caches\");\n\nfunction getSameObject(wrapper, prop, creator) {\n if (!wrapper[sameObjectCaches]) {\n wrapper[sameObjectCaches] = Object.create(null);\n }\n\n if (prop in wrapper[sameObjectCaches]) {\n return wrapper[sameObjectCaches][prop];\n }\n\n wrapper[sameObjectCaches][prop] = creator();\n return wrapper[sameObjectCaches][prop];\n}\n\nfunction wrapperForImpl(impl) {\n return impl ? impl[wrapperSymbol] : null;\n}\n\nfunction implForWrapper(wrapper) {\n return wrapper ? wrapper[implSymbol] : null;\n}\n\nfunction tryWrapperForImpl(impl) {\n const wrapper = wrapperForImpl(impl);\n return wrapper ? wrapper : impl;\n}\n\nfunction tryImplForWrapper(wrapper) {\n const impl = implForWrapper(wrapper);\n return impl ? impl : wrapper;\n}\n\nconst iterInternalSymbol = Symbol(\"internal\");\nconst IteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));\n\nfunction isArrayIndexPropName(P) {\n if (typeof P !== \"string\") {\n return false;\n }\n const i = P >>> 0;\n if (i === Math.pow(2, 32) - 1) {\n return false;\n }\n const s = `${i}`;\n if (P !== s) {\n return false;\n }\n return true;\n}\n\nconst supportsPropertyIndex = Symbol(\"supports property index\");\nconst supportedPropertyIndices = Symbol(\"supported property indices\");\nconst supportsPropertyName = Symbol(\"supports property name\");\nconst supportedPropertyNames = Symbol(\"supported property names\");\nconst indexedGet = Symbol(\"indexed property get\");\nconst indexedSetNew = Symbol(\"indexed property set new\");\nconst indexedSetExisting = Symbol(\"indexed property set existing\");\nconst namedGet = Symbol(\"named property get\");\nconst namedSetNew = Symbol(\"named property set new\");\nconst namedSetExisting = Symbol(\"named property set existing\");\nconst namedDelete = Symbol(\"named property delete\");\n\nmodule.exports = exports = {\n isObject,\n getReferenceToBytes,\n getCopyToBytes,\n mixin,\n wrapperSymbol,\n implSymbol,\n getSameObject,\n wrapperForImpl,\n implForWrapper,\n tryWrapperForImpl,\n tryImplForWrapper,\n iterInternalSymbol,\n IteratorPrototype,\n isArrayIndexPropName,\n supportsPropertyIndex,\n supportedPropertyIndices,\n supportsPropertyName,\n supportedPropertyNames,\n indexedGet,\n indexedSetNew,\n indexedSetExisting,\n namedGet,\n namedSetNew,\n namedSetExisting,\n namedDelete\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/whatwg-url/lib/utils.js\n// module id = 165\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_166__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"window\"\n// module id = 166\n// module chunks = 0","import IndexedFormula from './indexed-formula'\n\nvar $rdf = {\n BlankNode: require('./blank-node'),\n Collection: require('./collection'),\n convert: require('./convert'),\n DataFactory: require('./data-factory'),\n Empty: require('./empty'),\n Fetcher: require('./fetcher'),\n Formula: require('./formula'),\n IndexedFormula,\n jsonParser: require('./jsonparser'),\n Literal: require('./literal'),\n log: require('./log'),\n N3Parser: require('./n3parser'),\n NamedNode: require('./named-node'),\n Namespace: require('./namespace'),\n Node: require('./node'),\n parse: require('./parse'),\n Query: require('./query').Query,\n queryToSPARQL: require('./query-to-sparql'),\n RDFaProcessor: require('./rdfaparser'),\n RDFParser: require('./rdfxmlparser'),\n serialize: require('./serialize'),\n Serializer: require('./serializer'),\n SPARQLToQuery: require('./sparql-to-query'),\n sparqlUpdateParser: require('./patch-parser'),\n Statement: require('./statement'),\n term: require('./node').fromValue,\n UpdateManager: require('./update-manager'),\n UpdatesSocket: require('./updates-via').UpdatesSocket,\n UpdatesVia: require('./updates-via').UpdatesVia,\n uri: require('./uri'),\n Util: require('./util'),\n Variable: require('./variable')\n}\n\n$rdf.NextId = $rdf.BlankNode.nextId\n\n$rdf.fromNT = $rdf.Formula.prototype.fromNT\n$rdf.fetcher = $rdf.DataFactory.fetcher\n$rdf.graph = $rdf.DataFactory.graph\n$rdf.lit = $rdf.DataFactory.lit\n$rdf.st = $rdf.DataFactory.st\n$rdf.sym = $rdf.DataFactory.namedNode\n$rdf.variable = $rdf.DataFactory.variable\n\n// RDFJS DataFactory interface\n$rdf.blankNode = $rdf.DataFactory.blankNode\n$rdf.defaultGraph = $rdf.DataFactory.defaultGraph\n$rdf.literal = $rdf.DataFactory.literal\n$rdf.namedNode = $rdf.DataFactory.namedNode\n$rdf.quad = $rdf.DataFactory.quad\n$rdf.triple = $rdf.DataFactory.triple\n\nmodule.exports = $rdf\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","'use strict';\n\n/**\n * Dependencies\n * @ignore\n */\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar base64url = require('base64url');\nvar crypto = require('@trust/webcrypto');\nvar TextEncoder = require('../text-encoder');\n\n/**\n * HMAC with SHA-2 Functions\n */\n\nvar HMAC = function () {\n\n /**\n * Constructor\n *\n * @param {string} bitlength\n */\n function HMAC(params) {\n _classCallCheck(this, HMAC);\n\n this.params = params;\n }\n\n /**\n * Sign\n *\n * @description\n * Generate a hash-based message authentication code for a\n * given input and key. Enforce the key length is equal to\n * or greater than the bitlength.\n *\n * @param {CryptoKey} key\n * @param {string} data\n *\n * @returns {string}\n */\n\n\n _createClass(HMAC, [{\n key: 'sign',\n value: function sign(key, data) {\n var algorithm = this.params;\n\n // TODO: validate key length\n\n data = new TextEncoder().encode(data);\n\n return crypto.subtle.sign(algorithm, key, data).then(function (signature) {\n return base64url(Buffer.from(signature));\n });\n }\n\n /**\n * Verify\n *\n * @description\n * Verify a digital signature for a given input and private key.\n *\n * @param {CryptoKey} key\n * @param {string} signature\n * @param {string} data\n *\n * @returns {Boolean}\n */\n\n }, {\n key: 'verify',\n value: function verify(key, signature, data) {\n var algorithm = this.params;\n\n if (typeof signature === 'string') {\n signature = Uint8Array.from(base64url.toBuffer(signature));\n }\n\n if (typeof data === 'string') {\n data = new TextEncoder().encode(data);\n }\n\n return crypto.subtle.verify(algorithm, key, signature, data);\n }\n\n /**\n * Assert Sufficient Key Length\n *\n * @description Assert that the key length is sufficient\n * @param {string} key\n */\n\n }, {\n key: 'assertSufficientKeyLength',\n value: function assertSufficientKeyLength(key) {\n if (key.length < this.bitlength) {\n throw new Error('The key is too short.');\n }\n }\n }]);\n\n return HMAC;\n}();\n\n/**\n * Export\n */\n\n\nmodule.exports = HMAC;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/algorithms/HMAC.js\n// module id = 168\n// module chunks = 0","'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * None\n */\nvar None = function () {\n function None() {\n _classCallCheck(this, None);\n }\n\n _createClass(None, [{\n key: 'sign',\n\n /**\n * sign\n */\n value: function sign() {\n return Promise.resolve('');\n }\n\n /**\n * verify\n */\n\n }, {\n key: 'verify',\n value: function verify() {\n // this will never get called. but you looked.\n }\n }]);\n\n return None;\n}();\n\n/**\n * Export\n */\n\n\nmodule.exports = None;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/algorithms/NONE.js\n// module id = 169\n// module chunks = 0","'use strict';\n\n/**\n * Dependencies\n * @ignore\n */\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar base64url = require('base64url');\nvar crypto = require('@trust/webcrypto');\nvar TextEncoder = require('../text-encoder');\n\n/**\n * RSASSA-PKCS1-v1_5\n */\n\nvar RSASSA_PKCS1_v1_5 = function () {\n\n /**\n * constructor\n *\n * @param {string} bitlength\n */\n function RSASSA_PKCS1_v1_5(params) {\n _classCallCheck(this, RSASSA_PKCS1_v1_5);\n\n this.params = params;\n }\n\n /**\n * sign\n *\n * @description\n * Generate a digital signature for a given input and private key.\n *\n * @param {CryptoKey} key\n * @param {BufferSource} data\n *\n * @returns {Promise}\n */\n\n\n _createClass(RSASSA_PKCS1_v1_5, [{\n key: 'sign',\n value: function sign(key, data) {\n var algorithm = this.params;\n\n // TODO\n //if (!this.sufficientKeySize()) {\n // return Promise.reject(\n // new Error(\n // 'A key size of 2048 bits or larger must be used with RSASSA-PKCS1-v1_5'\n // )\n // )\n //}\n\n data = new TextEncoder().encode(data);\n\n return crypto.subtle.sign(algorithm, key, data).then(function (signature) {\n return base64url(Buffer.from(signature));\n });\n }\n\n /**\n * verify\n *\n * @description\n * Verify a digital signature for a given input and private key.\n *\n * @param {CryptoKey} key\n * @param {BufferSource} signature\n * @param {BufferSource} data\n *\n * @returns {Promise}\n */\n\n }, {\n key: 'verify',\n value: function verify(key, signature, data) {\n var algorithm = this.params;\n\n if (typeof signature === 'string') {\n signature = Uint8Array.from(base64url.toBuffer(signature));\n }\n\n if (typeof data === 'string') {\n data = new TextEncoder().encode(data);\n }\n // ...\n\n return crypto.subtle.verify(algorithm, key, signature, data);\n }\n\n /**\n * importKey\n *\n * @param {JWK} key\n * @returns {Promise}\n */\n\n }, {\n key: 'importKey',\n value: function importKey(key) {\n var jwk = Object.assign({}, key);\n var algorithm = this.params;\n var usages = key['key_ops'] || [];\n\n if (key.use === 'sig') {\n usages.push('verify');\n }\n\n if (key.use === 'enc') {\n // TODO: handle encryption keys\n return Promise.resolve(key);\n }\n\n if (key.key_ops) {\n usages = key.key_ops;\n }\n\n return crypto.subtle.importKey('jwk', jwk, algorithm, true, usages).then(function (cryptoKey) {\n Object.defineProperty(jwk, 'cryptoKey', {\n enumerable: false,\n value: cryptoKey\n });\n\n return jwk;\n });\n }\n }]);\n\n return RSASSA_PKCS1_v1_5;\n}();\n\n/**\n * Export\n */\n\n\nmodule.exports = RSASSA_PKCS1_v1_5;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/algorithms/RSASSA-PKCS1-v1_5.js\n// module id = 170\n// module chunks = 0","'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Dependencies\n */\nvar NotSupportedError = require('../errors/NotSupportedError');\n\n/**\n * Operations\n */\nvar operations = ['sign', 'verify', 'encrypt', 'decrypt', 'importKey'];\n\n/**\n * SupportedAlgorithms\n */\n\nvar SupportedAlgorithms = function () {\n\n /**\n * constructor\n */\n function SupportedAlgorithms() {\n var _this = this;\n\n _classCallCheck(this, SupportedAlgorithms);\n\n operations.forEach(function (op) {\n _this[op] = {};\n });\n }\n\n /**\n * Supported Operations\n */\n\n\n _createClass(SupportedAlgorithms, [{\n key: 'define',\n\n\n /**\n * define\n *\n * @description\n * Register Web Crypto API algorithm parameter for an algorithm\n * and operation.\n *\n * @param {string} alg\n * @param {string} op\n * @param {Object} argument\n */\n value: function define(alg, op, argument) {\n var registeredAlgorithms = this[op];\n registeredAlgorithms[alg] = argument;\n }\n\n /**\n * normalize\n *\n * @description\n * Map JWA alg name to Web Crypto API algorithm parameter\n *\n * @param {string} op\n * @param {Object} alg\n *\n * @returns {Object}\n */\n\n }, {\n key: 'normalize',\n value: function normalize(op, alg) {\n var registeredAlgorithms = this[op];\n\n if (!registeredAlgorithms) {\n return new SyntaxError(); // what kind of error should this be?\n }\n\n var argument = registeredAlgorithms[alg];\n\n if (!argument) {\n return new NotSupportedError(alg);\n }\n\n return argument;\n }\n }], [{\n key: 'operations',\n get: function get() {\n return operations;\n }\n }]);\n\n return SupportedAlgorithms;\n}();\n\n/**\n * Export\n */\n\n\nmodule.exports = SupportedAlgorithms;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/algorithms/SupportedAlgorithms.js\n// module id = 171\n// module chunks = 0","'use strict';\n\n/**\n * Local dependencies\n */\nvar None = require('./NONE');\nvar HMAC = require('./HMAC');\nvar RSASSA_PKCS1_v1_5 = require('./RSASSA-PKCS1-v1_5');\nvar SupportedAlgorithms = require('./SupportedAlgorithms');\n\n/**\n * Register Supported Algorithms\n */\nvar supportedAlgorithms = new SupportedAlgorithms();\n\n/**\n * Sign\n */\nsupportedAlgorithms.define('HS256', 'sign', new HMAC({\n name: 'HMAC',\n hash: {\n name: 'SHA-256'\n }\n}));\n\nsupportedAlgorithms.define('HS384', 'sign', new HMAC({\n name: 'HMAC',\n hash: {\n name: 'SHA-384'\n }\n}));\n\nsupportedAlgorithms.define('HS512', 'sign', new HMAC({\n name: 'HMAC',\n hash: {\n name: 'SHA-512'\n }\n}));\n\nsupportedAlgorithms.define('RS256', 'sign', new RSASSA_PKCS1_v1_5({\n name: 'RSASSA-PKCS1-v1_5',\n hash: {\n name: 'SHA-256'\n }\n}));\n\nsupportedAlgorithms.define('RS384', 'sign', new RSASSA_PKCS1_v1_5({\n name: 'RSASSA-PKCS1-v1_5',\n hash: {\n name: 'SHA-384'\n }\n}));\n\nsupportedAlgorithms.define('RS512', 'sign', new RSASSA_PKCS1_v1_5({\n name: 'RSASSA-PKCS1-v1_5',\n hash: {\n name: 'SHA-512'\n }\n}));\n//supportedAlgorithms.define('ES256', 'sign', {})\n//supportedAlgorithms.define('ES384', 'sign', {})\n//supportedAlgorithms.define('ES512', 'sign', {})\n//supportedAlgorithms.define('PS256', 'sign', {})\n//supportedAlgorithms.define('PS384', 'sign', {})\n//supportedAlgorithms.define('PS512', 'sign', {})\n\nsupportedAlgorithms.define('none', 'sign', new None({\n // nothing goes here\n}));\n\n/**\n * Verify\n */\nsupportedAlgorithms.define('HS256', 'verify', new HMAC({\n name: 'HMAC',\n hash: {\n name: 'SHA-256'\n }\n}));\n\nsupportedAlgorithms.define('HS384', 'verify', new HMAC({\n name: 'HMAC',\n hash: {\n name: 'SHA-384'\n }\n}));\n\nsupportedAlgorithms.define('HS512', 'verify', new HMAC({\n name: 'HMAC',\n hash: {\n name: 'SHA-512'\n }\n}));\n\nsupportedAlgorithms.define('RS256', 'verify', new RSASSA_PKCS1_v1_5({\n name: 'RSASSA-PKCS1-v1_5',\n hash: {\n name: 'SHA-256'\n }\n}));\n\nsupportedAlgorithms.define('RS384', 'verify', new RSASSA_PKCS1_v1_5({\n name: 'RSASSA-PKCS1-v1_5',\n hash: {\n name: 'SHA-384'\n }\n}));\n\nsupportedAlgorithms.define('RS512', 'verify', new RSASSA_PKCS1_v1_5({\n name: 'RSASSA-PKCS1-v1_5',\n hash: {\n name: 'SHA-512'\n }\n}));\n//supportedAlgorithms.define('ES256', 'verify', {})\n//supportedAlgorithms.define('ES384', 'verify', {})\n//supportedAlgorithms.define('ES512', 'verify', {})\n//supportedAlgorithms.define('PS256', 'verify', {})\n//supportedAlgorithms.define('PS384', 'verify', {})\n//supportedAlgorithms.define('PS512', 'verify', {})\n\nsupportedAlgorithms.define('none', 'verify', new None({\n // nothing goes here\n}));\n\nsupportedAlgorithms.define('RS256', 'importKey', new RSASSA_PKCS1_v1_5({\n name: 'RSASSA-PKCS1-v1_5',\n hash: {\n name: 'SHA-256'\n }\n}));\n\nsupportedAlgorithms.define('RS384', 'importKey', new RSASSA_PKCS1_v1_5({\n name: 'RSASSA-PKCS1-v1_5',\n hash: {\n name: 'SHA-384'\n }\n}));\n\nsupportedAlgorithms.define('RS512', 'importKey', new RSASSA_PKCS1_v1_5({\n name: 'RSASSA-PKCS1-v1_5',\n hash: {\n name: 'SHA-512'\n }\n}));\n\n/**\n * Export\n */\nmodule.exports = supportedAlgorithms;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/algorithms/index.js\n// module id = 172\n// module chunks = 0","'use strict';\n\n/**\n * Package dependencies\n */\nvar _require = require('@trust/json-document'),\n Formats = _require.Formats;\n\n/**\n * Format extensions\n */\n\n\nFormats.register('StringOrURI', new RegExp());\nFormats.register('NumericDate', new RegExp());\nFormats.register('URI', new RegExp());\nFormats.register('url', new RegExp());\nFormats.register('base64', new RegExp());\nFormats.register('base64url', new RegExp());\nFormats.register('MediaType', new RegExp());\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/formats/index.js\n// module id = 173\n// module chunks = 0","'use strict';\n\n/**\n * Dependencies\n */\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _require = require('@trust/json-document'),\n JSONDocument = _require.JSONDocument;\n\nvar JWKSetSchema = require('../schemas/JWKSetSchema');\nvar JWK = require('./JWK');\n\n/**\n * JWKSet\n *\n * @class\n * JWKSet represents a JSON Web Key Set as described in Section 5 of RFC 7517:\n * https://tools.ietf.org/html/rfc7517#section-5\n */\n\nvar JWKSet = function (_JSONDocument) {\n _inherits(JWKSet, _JSONDocument);\n\n function JWKSet() {\n _classCallCheck(this, JWKSet);\n\n return _possibleConstructorReturn(this, (JWKSet.__proto__ || Object.getPrototypeOf(JWKSet)).apply(this, arguments));\n }\n\n _createClass(JWKSet, null, [{\n key: 'importKeys',\n\n\n /**\n * importKeys\n */\n value: function importKeys(jwks) {\n var validation = this.schema.validate(jwks);\n\n if (!validation.valid) {\n return Promise.reject(new Error('Invalid JWKSet: ' + JSON.stringify(validation, null, 2)));\n }\n\n if (!jwks.keys) {\n return Promise.reject(new Error('Cannot import JWKSet: keys property is empty'));\n }\n\n var imported = void 0,\n importing = void 0;\n\n try {\n imported = new JWKSet(jwks);\n importing = jwks.keys.map(function (key) {\n return JWK.importKey(key);\n });\n } catch (err) {\n return Promise.reject(err);\n }\n\n return Promise.all(importing).then(function (keys) {\n imported.keys = keys;\n return imported;\n });\n }\n }, {\n key: 'schema',\n\n\n /**\n * schema\n */\n get: function get() {\n return JWKSetSchema;\n }\n }]);\n\n return JWKSet;\n}(JSONDocument);\n\n/**\n * Export\n */\n\n\nmodule.exports = JWKSet;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/jose/JWKSet.js\n// module id = 174\n// module chunks = 0","'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Dependencies\n */\nvar base64url = require('base64url');\n\nvar _require = require('@trust/json-document'),\n JSONDocument = _require.JSONDocument;\n\nvar JWTSchema = require('../schemas/JWTSchema');\nvar JWS = require('./JWS');\nvar DataError = require('../errors/DataError');\n\n/**\n * JWT\n */\n\nvar JWT = function (_JSONDocument) {\n _inherits(JWT, _JSONDocument);\n\n function JWT() {\n _classCallCheck(this, JWT);\n\n return _possibleConstructorReturn(this, (JWT.__proto__ || Object.getPrototypeOf(JWT)).apply(this, arguments));\n }\n\n _createClass(JWT, [{\n key: 'isJWE',\n\n\n /**\n * isJWE\n */\n value: function isJWE() {\n return !!this.header.enc;\n }\n\n /**\n * resolveKeys\n */\n\n }, {\n key: 'resolveKeys',\n value: function resolveKeys(jwks) {\n var kid = this.header.kid;\n var keys = void 0,\n match = void 0;\n\n // treat an array as the \"keys\" property of a JWK Set\n if (Array.isArray(jwks)) {\n keys = jwks;\n }\n\n // presence of keys indicates object is a JWK Set\n if (jwks.keys) {\n keys = jwks.keys;\n }\n\n // wrap a plain object they is not a JWK Set in Array\n if (!jwks.keys && (typeof jwks === 'undefined' ? 'undefined' : _typeof(jwks)) === 'object') {\n keys = [jwks];\n }\n\n // ensure there are keys to search\n if (!keys) {\n throw new DataError('Invalid JWK argument');\n }\n\n // match by \"kid\" or \"use\" header\n if (kid) {\n match = keys.find(function (jwk) {\n return jwk.kid === kid;\n });\n } else {\n match = keys.find(function (jwk) {\n return jwk.use === 'sig';\n });\n }\n\n // assign matching key to JWT and return a boolean\n if (match) {\n this.key = match.cryptoKey;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * encode\n *\n * @description\n * Encode a JWT instance\n *\n * @returns {Promise}\n */\n\n }, {\n key: 'encode',\n value: function encode() {\n // validate\n var validation = this.validate();\n\n if (!validation.valid) {\n return Promise.reject(validation);\n }\n\n var token = this;\n\n if (this.isJWE()) {\n return JWE.encrypt(token);\n } else {\n return JWS.sign(token);\n }\n }\n\n /**\n * verify\n *\n * @description\n * Verify a decoded JWT instance\n *\n * @returns {Promise}\n */\n\n }, {\n key: 'verify',\n value: function verify() {\n var validation = this.validate();\n\n if (!validation.valid) {\n return Promise.reject(validation);\n }\n\n return JWS.verify(this);\n }\n }], [{\n key: 'decode',\n\n\n /**\n * decode\n *\n * @description\n * Decode a JSON Web Token\n *\n * @param {string} data\n * @returns {JWT}\n */\n value: function decode(data) {\n var ExtendedJWT = this;\n var jwt = void 0;\n\n if (typeof data !== 'string') {\n throw new DataError('JWT must be a string');\n }\n\n // JSON of Flattened JSON Serialization\n if (data.startsWith('{')) {\n try {\n data = JSON.parse(data, function () {});\n } catch (error) {\n throw new DataError('Invalid JWT serialization');\n }\n\n if (data.signatures || data.recipients) {\n data.serialization = 'json';\n } else {\n data.serialization = 'flattened';\n }\n\n jwt = new ExtendedJWT(data, { filter: false });\n\n // Compact Serialization\n } else {\n try {\n var serialization = 'compact';\n var segments = data.split('.');\n var length = segments.length;\n\n if (length !== 3 && length !== 5) {\n throw new Error('Malformed JWT');\n }\n\n var header = JSON.parse(base64url.decode(segments[0]));\n\n // JSON Web Signature\n if (length === 3) {\n var type = 'JWS';\n var payload = JSON.parse(base64url.decode(segments[1]));\n var signature = segments[2];\n\n jwt = new ExtendedJWT({ type: type, segments: segments, header: header, payload: payload, signature: signature, serialization: serialization }, { filter: false });\n }\n\n // JSON Web Encryption\n if (length === 5) {\n //let type = 'JWE'\n //let [protected, encryption_key, iv, ciphertext, tag] = segments\n\n //jwt = new ExtendedJWT({\n // type,\n // protected: base64url.decode(JSON.parse(protected)),\n // encryption_key,\n // iv,\n // ciphertext,\n // tag,\n // serialization\n //})\n }\n } catch (error) {\n throw new DataError('Invalid JWT compact serialization');\n }\n }\n\n return jwt;\n }\n\n /**\n * encode\n *\n * @description\n * Encode a JSON Web Token\n *\n * @param {Object} header\n * @param {Object} payload\n * @param {CryptoKey} key\n *\n * @returns {Promise}\n */\n\n }, {\n key: 'encode',\n value: function encode(header, payload, key) {\n var jwt = new JWT(header, payload);\n return jwt.encode(key);\n }\n\n /**\n * verify\n *\n * @description\n *\n * @param {CryptoKey} key\n * @param {string} token\n *\n * @returns {Promise}\n */\n\n }, {\n key: 'verify',\n value: function verify(key, token) {\n var jwt = JWT.decode(token);\n jwt.key = key;\n return jwt.verify().then(function (verified) {\n return jwt;\n });\n }\n }, {\n key: 'schema',\n\n\n /**\n * schema\n */\n get: function get() {\n return JWTSchema;\n }\n }]);\n\n return JWT;\n}(JSONDocument);\n\n/**\n * Export\n */\n\n\nmodule.exports = JWT;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/jose/lib/jose/JWT.js\n// module id = 175\n// module chunks = 0","'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _require = require('whatwg-url'),\n URL = _require.URL;\n\nvar _require2 = require('@solid/jose'),\n JWT = _require2.JWT,\n JWK = _require2.JWK;\n\nvar DEFAULT_MAX_AGE = 3600; // Default token expiration, in seconds\n\nvar PoPToken = function (_JWT) {\n _inherits(PoPToken, _JWT);\n\n function PoPToken() {\n _classCallCheck(this, PoPToken);\n\n return _possibleConstructorReturn(this, (PoPToken.__proto__ || Object.getPrototypeOf(PoPToken)).apply(this, arguments));\n }\n\n _createClass(PoPToken, null, [{\n key: 'issueFor',\n\n /**\n * @param resourceServerUri {string} RS URI for which this token is intended\n *\n * @param session {Session}\n * @param session.sessionKey {string}\n * @param session.authorization.client_id {string}\n * @param session.authorization.id_token {string}\n *\n * @returns {Promise} PoPToken, encoded as compact JWT\n */\n value: function issueFor(resourceServerUri, session) {\n if (!resourceServerUri) {\n throw new Error('Cannot issue PoPToken - missing resource server URI');\n }\n\n if (!session.sessionKey) {\n throw new Error('Cannot issue PoPToken - missing session key');\n }\n\n if (!session.authorization.id_token) {\n throw new Error('Cannot issue PoPToken - missing id token');\n }\n\n var jwk = JSON.parse(session.sessionKey);\n\n return JWK.importKey(jwk).then(function (importedSessionJwk) {\n var options = {\n aud: new URL(resourceServerUri).origin,\n key: importedSessionJwk,\n iss: session.authorization.client_id,\n id_token: session.authorization.id_token\n };\n\n return PoPToken.issue(options);\n }).then(function (jwt) {\n return jwt.encode();\n });\n }\n\n /**\n * issue\n *\n * @param options {Object}\n * @param options.iss {string} Token issuer (RP client_id)\n * @param options.aud {string|Array} Audience for the token\n * (such as the Resource Server url)\n * @param options.key {JWK} Proof of Possession (private) signing key, see\n * https://tools.ietf.org/html/rfc7800#section-3.1\n *\n * @param options.id_token {string} JWT compact encoded ID Token\n *\n * Optional:\n * @param [options.iat] {number} Issued at timestamp (in seconds)\n * @param [options.max] {number} Max token lifetime in seconds\n *\n * @returns {PoPToken} Proof of Possession Token (JWT instance)\n */\n\n }, {\n key: 'issue',\n value: function issue(options) {\n var aud = options.aud,\n iss = options.iss,\n key = options.key;\n\n\n var alg = key.alg;\n var iat = options.iat || Math.floor(Date.now() / 1000);\n var max = options.max || DEFAULT_MAX_AGE;\n\n var exp = iat + max; // token expiration\n\n var header = { alg: alg };\n var payload = { iss: iss, aud: aud, exp: exp, iat: iat, id_token: options.id_token, token_type: 'pop' };\n\n var jwt = new PoPToken({ header: header, payload: payload, key: key.cryptoKey }, { filter: false });\n\n return jwt;\n }\n }]);\n\n return PoPToken;\n}(JWT);\n\nmodule.exports = PoPToken;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/oidc-rp/lib/PoPToken.js\n// module id = 176\n// module chunks = 0","/**\n * Dependencies\n */\nconst assert = require('assert')\nconst base64url = require('base64url')\nconst crypto = require('@trust/webcrypto')\nconst { JWT } = require('@solid/jose')\nconst FormUrlEncoded = require('./FormUrlEncoded')\nconst { URL } = require('whatwg-url')\n\n/**\n * Authentication Request\n */\nclass AuthenticationRequest {\n /**\n * create\n *\n * @description\n * Create a new authentication request with generated state and nonce,\n * validate presence of required parameters, serialize the request data and\n * persist it to the session, and return a promise for an authentication\n * request URI.\n *\n * @param {RelyingParty} rp – instance of RelyingParty\n * @param {Object} options - optional request parameters\n * @param {Object} session – reference to localStorage or other session object\n *\n * @returns {Promise}\n */\n static create (rp, options, session) {\n const {provider, defaults, registration} = rp\n\n let issuer, endpoint, client, params\n\n return Promise.resolve()\n .then(() => {\n // validate presence of OP configuration, RP client registration,\n // and default parameters\n assert(provider.configuration,\n 'RelyingParty provider OpenID Configuration is missing')\n\n assert(defaults.authenticate,\n 'RelyingParty default authentication parameters are missing')\n\n assert(registration,\n 'RelyingParty client registration is missing')\n\n // define basic elements of the request\n issuer = provider.configuration.issuer\n endpoint = provider.configuration.authorization_endpoint\n client = { client_id: registration.client_id}\n params = Object.assign(defaults.authenticate, client, options)\n\n // validate presence of required configuration and parameters\n assert(issuer,\n 'Missing issuer in provider OpenID Configuration')\n\n assert(endpoint,\n 'Missing authorization_endpoint in provider OpenID Configuration')\n\n assert(params.scope,\n 'Missing scope parameter in authentication request')\n\n assert(params.response_type,\n 'Missing response_type parameter in authentication request')\n\n assert(params.client_id,\n 'Missing client_id parameter in authentication request')\n\n assert(params.redirect_uri,\n 'Missing redirect_uri parameter in authentication request')\n\n // generate state and nonce random octets\n params.state = Array.from(crypto.getRandomValues(new Uint8Array(16)))\n params.nonce = Array.from(crypto.getRandomValues(new Uint8Array(16)))\n\n // hash the state and nonce parameter values\n return Promise.all([\n crypto.subtle.digest({ name: 'SHA-256' }, new Uint8Array(params.state)),\n crypto.subtle.digest({ name: 'SHA-256' }, new Uint8Array(params.nonce))\n ])\n })\n\n // serialize the request with original values, store in session by\n // encoded state param, and replace state/nonce octets with encoded\n // digests\n .then(digests => {\n let state = base64url(Buffer.from(digests[0]))\n let nonce = base64url(Buffer.from(digests[1]))\n let key = `${issuer}/requestHistory/${state}`\n\n // store the request params for response validation\n // with serialized octet values for state and nonce\n session[key] = JSON.stringify(params)\n\n // replace state and nonce octets with base64url encoded digests\n params.state = state\n params.nonce = nonce\n })\n\n .then(() => AuthenticationRequest.generateSessionKeys())\n\n .then(sessionKeys => {\n AuthenticationRequest.storeSessionKeys(sessionKeys, params, session)\n })\n\n // optionally encode a JWT with the request parameters\n // and replace params with `{ request: }\n .then(() => {\n if (provider.configuration.request_parameter_supported) {\n return AuthenticationRequest.encodeRequestParams(params)\n\n .then(encodedParams => { params = encodedParams })\n }\n })\n\n // render the request URI and terminate the algorithm\n .then(() => {\n let url = new URL(endpoint)\n url.search = FormUrlEncoded.encode(params)\n\n return url.href\n })\n }\n\n static generateSessionKeys () {\n return crypto.subtle.generateKey(\n {\n name: \"RSASSA-PKCS1-v1_5\",\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: { name: \"SHA-256\" },\n },\n true,\n [\"sign\", \"verify\"]\n )\n .then((keyPair) => {\n // returns a keypair object\n return Promise.all([\n crypto.subtle.exportKey('jwk', keyPair.publicKey),\n crypto.subtle.exportKey('jwk', keyPair.privateKey)\n ])\n })\n .then(jwkPair => {\n let [ publicJwk, privateJwk ] = jwkPair\n\n return { public: publicJwk, private: privateJwk }\n })\n }\n\n static storeSessionKeys (sessionKeys, params, session) {\n // store the private one in session, public one goes into params\n session['oidc.session.privateKey'] = JSON.stringify(sessionKeys.private)\n params.key = sessionKeys.public\n }\n\n static encodeRequestParams (params) {\n const excludeParams = ['scope', 'client_id', 'response_type', 'state']\n\n const keysToEncode = Object.keys(params).filter(key => !excludeParams.includes(key))\n\n let payload = {}\n\n keysToEncode.forEach(key => {\n payload[key] = params[key]\n })\n\n let requestParamJwt = new JWT({\n header: { alg: 'none' },\n payload\n }, { filter: false })\n\n return requestParamJwt.encode()\n .then(requestParamCompact => {\n let newParams = {\n scope: params['scope'],\n client_id: params['client_id'],\n response_type: params['response_type'],\n request: requestParamCompact,\n state: params['state']\n }\n\n return newParams\n })\n }\n}\n\n/**\n * Export\n */\nmodule.exports = AuthenticationRequest\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/oidc-rp/src/AuthenticationRequest.js\n// module id = 177\n// module chunks = 0","/**\n * Dependencies\n */\nconst { URL } = require('whatwg-url')\nconst assert = require('assert')\nconst crypto = require('@trust/webcrypto')\nconst base64url = require('base64url')\nconst fetch = require('node-fetch')\nconst Headers = fetch.Headers ? fetch.Headers : global.Headers\nconst FormUrlEncoded = require('./FormUrlEncoded')\nconst IDToken = require('./IDToken')\nconst Session = require('./Session')\nconst onHttpError = require('./onHttpError')\nconst HttpError = require('standard-http-error')\n\n/**\n * AuthenticationResponse\n */\nclass AuthenticationResponse {\n /**\n * @param rp {RelyingParty}\n * @param [redirect] {string} req.query\n * @param [body] {string} req.body.text\n * @param session {Session|Storage} req.session or localStorage or similar\n * @param params {object} hashmap\n * @param mode {string} 'query'/'fragment'/'form_post',\n * determined in `parseResponse()`\n */\n constructor ({rp, redirect, body, session, mode, params = {}}) {\n this.rp = rp\n this.redirect = redirect\n this.body = body\n this.session = session\n this.mode = mode\n this.params = params\n }\n\n /**\n * validateResponse\n *\n * @description\n * Authentication response validation.\n *\n * @param {string|Object} response\n *\n * @returns {Promise}\n */\n static validateResponse (response) {\n return Promise.resolve(response)\n .then(this.parseResponse)\n .then(this.errorResponse)\n .then(this.matchRequest)\n .then(this.validateStateParam)\n .then(this.validateResponseMode)\n .then(this.validateResponseParams)\n .then(this.exchangeAuthorizationCode)\n .then(this.validateIDToken)\n .then(Session.fromAuthResponse)\n }\n\n /**\n * parseResponse\n *\n * @param {object} response\n *\n * @returns {object}\n */\n static parseResponse (response) {\n let {redirect, body} = response\n\n // response must be either a redirect uri or request body, but not both\n if ((redirect && body) || (!redirect && !body)) {\n throw new HttpError(400, 'Invalid response mode')\n }\n\n // parse redirect uri\n if (redirect) {\n let url = new URL(redirect)\n let {search, hash} = url\n\n if ((search && hash) || (!search && !hash)) {\n throw new HttpError(400, 'Invalid response mode')\n }\n\n if (search) {\n response.params = FormUrlEncoded.decode(search.substring(1))\n response.mode = 'query'\n }\n\n if (hash) {\n response.params = FormUrlEncoded.decode(hash.substring(1))\n response.mode = 'fragment'\n }\n }\n\n // parse request form body\n if (body) {\n response.params = FormUrlEncoded.decode(body)\n response.mode = 'form_post'\n }\n\n return response\n }\n\n /**\n * errorResponse\n *\n * @param {AuthenticationResponse} response\n *\n * @throws {Error} If response params include the OAuth2 'error' param,\n * throws an error based on it.\n *\n * @returns {AuthenticationResponse} Chainable\n *\n * @todo Figure out HTTP status code (typically 400, 401 or 403)\n * based on the OAuth2/OIDC `error` code, probably using an external library\n */\n static errorResponse (response) {\n const errorCode = response.params.error\n\n if (errorCode) {\n const errorParams = {}\n errorParams['error'] = errorCode\n errorParams['error_description'] = response.params['error_description']\n errorParams['error_uri'] = response.params['error_uri']\n errorParams['state'] = response.params['state']\n\n const error = new Error(`AuthenticationResponse error: ${errorCode}`)\n error.info = errorParams\n throw error\n }\n\n return response\n }\n\n /**\n * matchRequest\n *\n * @param {Object} response\n * @returns {Promise}\n */\n static matchRequest (response) {\n let {rp, params, session} = response\n let state = params.state\n let issuer = rp.provider.configuration.issuer\n\n if (!state) {\n throw new Error(\n 'Missing state parameter in authentication response')\n }\n\n let key = `${issuer}/requestHistory/${state}`\n let request = session[key]\n\n if (!request) {\n throw new Error(\n 'Mismatching state parameter in authentication response')\n }\n\n response.request = JSON.parse(request)\n return response\n }\n\n /**\n * validateStateParam\n *\n * @param {Object} response\n * @returns {Promise}\n */\n static validateStateParam (response) {\n let octets = new Uint8Array(response.request.state)\n let encoded = response.params.state\n\n return crypto.subtle.digest({ name: 'SHA-256' }, octets).then(digest => {\n if (encoded !== base64url(Buffer.from(digest))) {\n throw new Error(\n 'Mismatching state parameter in authentication response')\n }\n\n return response\n })\n }\n\n /**\n * validateResponseMode\n *\n * @param {Object} response\n * @returns {Promise}\n */\n static validateResponseMode (response) {\n if (response.request.response_type !== 'code' && response.mode === 'query') {\n throw new Error('Invalid response mode')\n }\n\n return response\n }\n\n /**\n * validateResponseParams\n *\n * @param {Object} response\n * @returns {Promise}\n */\n static validateResponseParams (response) {\n let {request, params} = response\n let expectedParams = request.response_type.split(' ')\n\n if (expectedParams.includes('code')) {\n assert(params.code,\n 'Missing authorization code in authentication response')\n // TODO assert novelty of code\n }\n\n if (expectedParams.includes('id_token')) {\n assert(params.id_token,\n 'Missing id_token in authentication response')\n }\n\n if (expectedParams.includes('token')) {\n assert(params.access_token,\n 'Missing access_token in authentication response')\n\n assert(params.token_type,\n 'Missing token_type in authentication response')\n }\n\n return response\n }\n\n /**\n * exchangeAuthorizationCode\n *\n * @param {Object} response\n * @returns {Promise} response object\n */\n static exchangeAuthorizationCode (response) {\n let {rp, params, request} = response\n let code = params.code\n\n // only exchange the authorization code when the response type is \"code\"\n if (!code || request['response_type'] !== 'code') {\n return Promise.resolve(response)\n }\n\n let {provider, registration} = rp\n let id = registration['client_id']\n let secret = registration['client_secret']\n\n // verify the client is not public\n if (!secret) {\n return Promise.reject(new Error(\n 'Client cannot exchange authorization code because ' +\n 'it is not a confidential client'))\n }\n\n // initialize token request arguments\n let endpoint = provider.configuration.token_endpoint\n let method = 'POST'\n\n // initialize headers\n let headers = new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded'\n })\n\n // initialize the token request parameters\n let bodyContents = {\n 'grant_type': 'authorization_code',\n 'code': code,\n 'redirect_uri': request['redirect_uri']\n }\n\n // determine client authentication method\n let authMethod = registration['token_endpoint_auth_method']\n || 'client_secret_basic'\n\n // client secret basic authentication\n if (authMethod === 'client_secret_basic') {\n let credentials = new Buffer(`${id}:${secret}`).toString('base64')\n headers.set('Authorization', `Basic ${credentials}`)\n }\n\n // client secret post authentication\n if (authMethod === 'client_secret_post') {\n bodyContents['client_id'] = id\n bodyContents['client_secret'] = secret\n }\n\n let body = FormUrlEncoded.encode(bodyContents)\n\n // TODO\n // client_secret_jwt authentication\n // private_key_jwt\n\n // make the token request\n\n return fetch(endpoint, {method, headers, body})\n .then(onHttpError('Error exchanging authorization code'))\n .then(tokenResponse => tokenResponse.json())\n .then(tokenResponse => {\n assert(tokenResponse['access_token'],\n 'Missing access_token in token response')\n\n assert(tokenResponse['token_type'],\n 'Missing token_type in token response')\n\n assert(tokenResponse['id_token'],\n 'Missing id_token in token response')\n\n // anything else?\n\n // IS THIS THE RIGHT THING TO DO HERE?\n response.params = Object.assign(response.params, tokenResponse)\n return response\n })\n }\n\n\n /**\n * validateIDToken\n *\n * @param {Object} response\n * @returns {Promise}\n */\n static validateIDToken (response) {\n // only validate the ID Token if present in the response\n if (!response.params.id_token) {\n return Promise.resolve(response)\n }\n\n return Promise.resolve(response)\n .then(AuthenticationResponse.decryptIDToken)\n .then(AuthenticationResponse.decodeIDToken)\n .then(AuthenticationResponse.validateIssuer)\n .then(AuthenticationResponse.validateAudience)\n .then(AuthenticationResponse.resolveKeys)\n .then(AuthenticationResponse.verifySignature)\n .then(AuthenticationResponse.validateExpires)\n .then(AuthenticationResponse.verifyNonce)\n .then(AuthenticationResponse.validateAcr)\n .then(AuthenticationResponse.validateAuthTime)\n .then(AuthenticationResponse.validateAccessTokenHash)\n .then(AuthenticationResponse.validateAuthorizationCodeHash)\n }\n\n /**\n * decryptIDToken\n *\n * @param {Object} response\n * @returns {Promise}\n */\n static decryptIDToken (response) {\n // TODO\n return Promise.resolve(response)\n }\n\n /**\n * decodeIDToken\n *\n * Note: If the `id_token` is not present in params, this method does not\n * get called (short-circuited in `validateIDToken()`).\n *\n * @param response {AuthenticationResponse}\n * @param response.params {object}\n * @param [response.params.id_token] {string} IDToken encoded as a JWT\n *\n * @returns {AuthenticationResponse} Chainable\n */\n static decodeIDToken (response) {\n let jwt = response.params.id_token\n\n try {\n response.decoded = IDToken.decode(jwt)\n } catch (decodeError) {\n const error = new HttpError(400, 'Error decoding ID Token')\n error.cause = decodeError\n error.info = { id_token: jwt }\n throw error\n }\n\n return response\n }\n\n\n /**\n * validateIssuer\n *\n * @param {Object} response\n * @returns {Promise}\n */\n static validateIssuer (response) {\n let configuration = response.rp.provider.configuration\n let payload = response.decoded.payload\n\n // validate issuer of token matches this relying party's provider\n if (payload.iss !== configuration.issuer) {\n throw new Error('Mismatching issuer in ID Token')\n }\n\n return response\n }\n\n /**\n * validateAudience\n *\n * @param {Object} response\n * @returns {Promise}\n */\n static validateAudience (response) {\n let registration = response.rp.registration\n let {aud, azp} = response.decoded.payload\n\n // validate audience includes this relying party\n if (typeof aud === 'string' && aud !== registration['client_id']) {\n throw new Error('Mismatching audience in id_token')\n }\n\n // validate audience includes this relying party\n if (Array.isArray(aud) && !aud.includes(registration['client_id'])) {\n throw new Error('Mismatching audience in id_token')\n }\n\n // validate authorized party is present if required\n if (Array.isArray(aud) && !azp) {\n throw new Error('Missing azp claim in id_token')\n }\n\n // validate authorized party is this relying party\n if (azp && azp !== registration['client_id']) {\n throw new Error('Mismatching azp claim in id_token')\n }\n\n return response\n }\n\n\n /**\n * resolveKeys\n *\n * @param {Object} response\n * @returns {Promise}\n */\n static resolveKeys (response) {\n let rp = response.rp\n let provider = rp.provider\n let decoded = response.decoded\n\n return Promise.resolve(provider.jwks)\n\n .then(jwks => jwks ? jwks : rp.jwks())\n\n .then(jwks => {\n if (decoded.resolveKeys(jwks)) {\n return Promise.resolve(response)\n } else {\n throw new Error('Cannot resolve signing key for ID Token')\n }\n })\n }\n\n /**\n * verifySignature\n *\n * @param {Object} response\n * @returns {Promise}\n */\n static verifySignature (response) {\n let alg = response.decoded.header.alg\n let registration = response.rp.registration\n let expectedAlgorithm = registration['id_token_signed_response_alg'] || 'RS256'\n\n // validate signing algorithm matches expectation\n if (alg !== expectedAlgorithm) {\n throw new Error(\n `Expected ID Token to be signed with ${expectedAlgorithm}`)\n }\n\n return response.decoded.verify().then(verified => {\n if (!verified) {\n throw new Error('Invalid ID Token signature')\n }\n\n return response\n })\n }\n\n /**\n * validateExpires\n *\n * @param {Object} response\n * @returns {Promise}\n */\n static validateExpires (response) {\n let exp = response.decoded.payload.exp\n\n // validate expiration of token\n if (exp <= Math.floor(Date.now() / 1000)) {\n throw new Error('Expired ID Token')\n }\n\n return response\n }\n\n /**\n * verifyNonce\n *\n * @param {Object} response\n * @returns {Promise}\n */\n static verifyNonce (response) {\n let octets = new Uint8Array(response.request.nonce)\n let nonce = response.decoded.payload.nonce\n\n if (!nonce) {\n throw new Error('Missing nonce in ID Token')\n }\n\n return crypto.subtle.digest({ name: 'SHA-256' }, octets).then(digest => {\n if (nonce !== base64url(Buffer.from(digest))) {\n throw new Error('Mismatching nonce in ID Token')\n }\n\n return response\n })\n }\n\n /**\n * validateAcr\n *\n * @param {Object} response\n * @returns {Object}\n */\n static validateAcr (response) {\n // TODO\n return response\n }\n\n /**\n * validateAuthTime\n *\n * @param {Object} response\n * @returns {Promise}\n */\n static validateAuthTime (response) {\n // TODO\n return response\n }\n\n /**\n * validateAccessTokenHash\n *\n * @param {Object} response\n * @returns {Promise}\n */\n static validateAccessTokenHash (response) {\n // TODO\n return response\n }\n\n /**\n * validateAuthorizationCodeHash\n *\n * @param {Object} response\n * @returns {Promise}\n */\n static validateAuthorizationCodeHash (response) {\n // TODO\n return response\n }\n}\n\n/**\n * Export\n */\nmodule.exports = AuthenticationResponse\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/oidc-rp/src/AuthenticationResponse.js\n// module id = 178\n// module chunks = 0","/**\n * Local dependencies\n */\nconst {JWT} = require('@solid/jose')\nconst IDTokenSchema = require('./IDTokenSchema')\n\n/**\n * IDToken\n */\nclass IDToken extends JWT {\n\n /**\n * Schema\n */\n static get schema () {\n return IDTokenSchema\n }\n}\n\n/**\n * Export\n */\nmodule.exports = IDToken\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/oidc-rp/src/IDToken.js\n// module id = 179\n// module chunks = 0","/**\n * Local dependencies\n */\nconst {JWTSchema} = require('@solid/jose')\n\n/**\n * IDToken Schema\n */\nconst IDTokenSchema = JWTSchema.extend({\n properties: {\n\n /**\n * header\n * http://openid.net/specs/openid-connect-core-1_0.html#IDToken\n * ID Tokens SHOULD NOT use the JWS or JWE x5u, x5c, jku, or jwk Header\n * Parameter fields. Instead, references to keys used are communicated in\n * advance using Discovery and Registration parameters, per Section 10.\n */\n header: {\n //not: { required: ['x5u', 'x5c', 'jku', 'jwk'] }\n },\n\n /**\n * payload\n */\n payload: {\n properties: {\n\n /**\n * iss\n *\n * REQUIRED. Issuer Identifier for the Issuer of the response.\n * The iss value is a case sensitive URL using the https scheme\n * that contains scheme, host, and optionally, port number and\n * path components and no query or fragment components.\n */\n iss: { type: 'string', format: 'url' },\n\n /**\n * sub\n *\n * REQUIRED. Subject Identifier. A locally unique and never\n * reassigned identifier within the Issuer for the End-User, which\n * is intended to be consumed by the Client, e.g., 24400320 or\n * AItOawmwtWwcT0k51BayewNvutrJUqsvl6qs7A4. It MUST NOT exceed 255\n * ASCII characters in length. The sub value is a case sensitive\n * string.\n */\n sub: { type: 'string', maxLength: 255 },\n\n /**\n * aud\n *\n * REQUIRED. Audience(s) that this ID Token is intended for. It\n * MUST contain the OAuth 2.0 client_id of the Relying Party as an\n * audience value. It MAY also contain identifiers for other audiences.\n * In the general case, the aud value is an array of case sensitive\n * strings. In the common special case when there is one audience,\n * the aud value MAY be a single case sensitive string.\n */\n // inherited from JWTClaimsSetSchema\n\n /**\n * exp\n *\n * REQUIRED. Expiration time on or after which the ID Token MUST NOT\n * be accepted for processing. The processing of this parameter\n * requires that the current date/time MUST be before the expiration\n * date/time listed in the value. Implementers MAY provide for some\n * small leeway, usually no more than a few minutes, to account for\n * clock skew. Its value is a JSON number representing the number of\n * seconds from 1970-01-01T0:0:0Z as measured in UTC until the\n * date/time. See RFC 3339 [RFC3339] for details regarding date/times\n * in general and UTC in particular.\n */\n // inherited from JWTClaimsSetSchema\n\n /**\n * iat\n *\n * REQUIRED. Time at which the JWT was issued. Its value is a\n * JSON number representing the number of seconds from\n * 1970-01-01T0:0:0Z as measured in UTC until the date/time.\n */\n // inherited from JWTClaimsSetSchema\n\n /**\n * auth_time\n *\n * Time when the End-User authentication occurred. Its value is a\n * JSON number representing the number of seconds from\n * 1970-01-01T0:0:0Z as measured in UTC until the date/time. When a\n * max_age request is made or when auth_time is requested as an\n * Essential Claim, then this Claim is REQUIRED; otherwise, its\n * inclusion is OPTIONAL. (The auth_time Claim semantically\n * corresponds to the OpenID 2.0 PAPE [OpenID.PAPE] auth_time\n * response parameter.)\n */\n auth_time: { type: 'integer', format: 'NumericDate' },\n\n /**\n * nonce\n *\n * String value used to associate a Client session with an ID Token,\n * and to mitigate replay attacks. The value is passed through\n * unmodified from the Authentication Request to the ID Token. If\n * present in the ID Token, Clients MUST verify that the nonce Claim\n * Value is equal to the value of the nonce parameter sent in the\n * Authentication Request. If present in the Authentication Request,\n * Authorization Servers MUST include a nonce Claim in the ID Token\n * with the Claim Value being the nonce value sent in the\n * Authentication Request. Authorization Servers SHOULD perform no\n * other processing on nonce values used. The nonce value is a case\n * sensitive string.\n */\n nonce: { type: 'string' },\n\n /**\n * acr\n *\n * OPTIONAL. Authentication Context Class Reference. String\n * specifying an Authentication Context Class Reference value that\n * identifies the Authentication Context Class that the authentication\n * performed satisfied. The value \"0\" indicates the End-User\n * authentication did not meet the requirements of ISO/IEC 29115\n * [ISO29115] level 1. Authentication using a long-lived browser\n * cookie, for instance, is one example where the use of \"level 0\" is\n * appropriate. Authentications with level 0 SHOULD NOT be used to\n * authorize access to any resource of any monetary value. (This\n * corresponds to the OpenID 2.0 PAPE [OpenID.PAPE] nist_auth_level\n * 0.) An absolute URI or an RFC 6711 [RFC6711] registered name\n * SHOULD be used as the acr value; registered names MUST NOT be used\n * with a different meaning than that which is registered. Parties\n * using this claim will need to agree upon the meanings of the\n * values used, which may be context-specific. The acr value is a\n * case sensitive string.\n */\n acr: { type: 'string' },\n\n /**\n * amr\n * OPTIONAL. Authentication Methods References. JSON array of strings\n * that are identifiers for authentication methods used in the\n * authentication. For instance, values might indicate that both\n * password and OTP authentication methods were used. The definition\n * of particular values to be used in the amr Claim is beyond the\n * scope of this specification. Parties using this claim will need to\n * agree upon the meanings of the values used, which may be context-\n * specific. The amr value is an array of case sensitive strings.\n */\n amr: { type: 'array', items: { type: 'string' } },\n\n /**\n * azp\n * OPTIONAL. Authorized party - the party to which the ID Token was\n * issued. If present, it MUST contain the OAuth 2.0 Client ID of this\n * party. This Claim is only needed when the ID Token has a single\n * audience value and that audience is different than the authorized\n * party. It MAY be included even when the authorized party is the\n * same as the sole audience. The azp value is a case sensitive string\n * containing a StringOrURI value.\n */\n azp: { type: 'string', format: 'StringOrURI' }\n },\n\n /**\n * Required Claims\n */\n required: ['iss', 'sub', 'aud', 'exp', 'iat']\n }\n }\n})\n\n/**\n * Export\n */\nmodule.exports = IDTokenSchema\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/oidc-rp/src/IDTokenSchema.js\n// module id = 180\n// module chunks = 0","'use strict'\n\nconst { URL } = require('whatwg-url')\nconst {JWT, JWK} = require('@solid/jose')\n\nconst DEFAULT_MAX_AGE = 3600 // Default token expiration, in seconds\n\nclass PoPToken extends JWT {\n /**\n * @param resourceServerUri {string} RS URI for which this token is intended\n *\n * @param session {Session}\n * @param session.sessionKey {string}\n * @param session.authorization.client_id {string}\n * @param session.authorization.id_token {string}\n *\n * @returns {Promise} PoPToken, encoded as compact JWT\n */\n static issueFor (resourceServerUri, session) {\n if (!resourceServerUri) {\n throw new Error('Cannot issue PoPToken - missing resource server URI')\n }\n\n if (!session.sessionKey) {\n throw new Error('Cannot issue PoPToken - missing session key')\n }\n\n if (!session.authorization.id_token) {\n throw new Error('Cannot issue PoPToken - missing id token')\n }\n\n let jwk = JSON.parse(session.sessionKey)\n\n return JWK.importKey(jwk)\n .then(importedSessionJwk => {\n let options = {\n aud: (new URL(resourceServerUri)).origin,\n key: importedSessionJwk,\n iss: session.authorization.client_id,\n id_token: session.authorization.id_token\n }\n\n return PoPToken.issue(options)\n })\n .then(jwt => {\n return jwt.encode()\n })\n }\n\n /**\n * issue\n *\n * @param options {Object}\n * @param options.iss {string} Token issuer (RP client_id)\n * @param options.aud {string|Array} Audience for the token\n * (such as the Resource Server url)\n * @param options.key {JWK} Proof of Possession (private) signing key, see\n * https://tools.ietf.org/html/rfc7800#section-3.1\n *\n * @param options.id_token {string} JWT compact encoded ID Token\n *\n * Optional:\n * @param [options.iat] {number} Issued at timestamp (in seconds)\n * @param [options.max] {number} Max token lifetime in seconds\n *\n * @returns {PoPToken} Proof of Possession Token (JWT instance)\n */\n static issue (options) {\n let { aud, iss, key } = options\n\n let alg = key.alg\n let iat = options.iat || Math.floor(Date.now() / 1000)\n let max = options.max || DEFAULT_MAX_AGE\n\n let exp = iat + max // token expiration\n\n let header = { alg }\n let payload = { iss, aud, exp, iat, id_token: options.id_token, token_type: 'pop' }\n\n let jwt = new PoPToken({ header, payload, key: key.cryptoKey }, { filter: false })\n\n return jwt\n }\n}\n\nmodule.exports = PoPToken\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/oidc-rp/src/PoPToken.js\n// module id = 181\n// module chunks = 0","/**\n * Dependencies\n */\nconst {JSONSchema} = require('@trust/json-document')\n\n/**\n * RelyingParty Schema\n *\n * This schema initializes and verifies Relying Party client configuration.\n * RelyingParty objects can be persisted and rehydrated. By encapsulating this data in\n * it's own class, it's possible to have multiple RP configurations running\n * simultaneously.\n */\nconst RelyingPartySchema = new JSONSchema({\n type: 'object',\n properties: {\n\n /**\n * provider\n *\n * Information about the provider, including issuer URL, human readable name,\n * and any configuration or provider metadata retrieved from the OP.\n */\n provider: {\n type: 'object',\n properties: {\n name: { type: 'string' },\n url: { type: 'string', format: 'uri' },\n // NOTE:\n // OpenID Configuration (discovery response) and JSON Web Keys Set for an\n // issuer can be cached here. However the cache should not be persisted or\n // relied upon.\n //\n configuration: {}, // .well-known/openid-configuration\n jwks: {} // /jwks\n },\n required: ['url']\n },\n\n /**\n * defaults\n *\n * Default request parameters for authentication and dynamic registration requests.\n * These values can be extended or overridden via arguments to the respective\n * request methods.\n *\n * These are part of the relying party client configuration and can be serialized\n * and persisted.\n */\n defaults: {\n type: 'object',\n properties: {\n\n /**\n * Use Proof of Possession token semantics for the ID Token\n */\n popToken: {\n type: 'boolean',\n default: false\n },\n\n /**\n * Default authentication request parameters\n */\n authenticate: {\n type: 'object',\n properties: {\n redirect_uri: {\n type: 'string',\n format: 'uri'\n },\n response_type: {\n type: 'string',\n default: 'id_token token', // browser detection\n enum: [\n 'code',\n 'token',\n 'id_token token',\n 'id_token token code'\n ]\n },\n display: {\n type: 'string',\n default: 'page',\n enum: [\n 'page',\n 'popup'\n ]\n },\n scope: {\n type: ['string', 'array'],\n default: ['openid']\n }\n }\n },\n\n /**\n * Default client registration parameters\n */\n register: {}\n }\n },\n\n /**\n * registration\n *\n * This is the client registration response from dynamic registration. It should\n * always reflect the client configuration on the openid provider. A client access\n * token is stored here\n */\n registration: {},// ClientMetadataSchema\n\n /**\n * store\n */\n store: {\n type: 'object',\n default: {}\n }\n }\n})\n\n/**\n * Export\n */\nmodule.exports = RelyingPartySchema\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/oidc-rp/src/RelyingPartySchema.js\n// module id = 182\n// module chunks = 0","'use strict'\n\nconst fetch = require('node-fetch')\nconst onHttpError = require('./onHttpError')\nconst PoPToken = require('./PoPToken')\n\nclass Session {\n /**\n * @param options {Object}\n *\n * @param options.credentialType {string} 'access_token' or 'pop_token'\n *\n * @param options.issuer {string} Identity provider (issuer of ID/Access Token)\n *\n * @param options.authorization {object}\n * @param options.authorization.client_id {string} OIDC/OAuth2 client id\n * @param [options.authorization.id_token] {string} Compact-serialized id_token param\n * @param [options.authorization.access_token] {string} Compact-serialized access_token param\n * @param [options.authorization.refresh_token] {string} Compact-serialized refresh_token\n *\n * @param [options.sessionKey] {string} Serialized client session key generated\n * during the Authentication Request, used to issue PoPTokens\n *\n * @param [options.idClaims] {object} Decoded/verified ID Token JWT payload\n *\n * @param [options.accessClaims] {object} Decoded/verified Access Token JWT payload\n */\n constructor (options) {\n this.credentialType = options.credentialType || 'access_token'\n\n this.issuer = options.issuer\n\n this.authorization = options.authorization || {}\n\n this.sessionKey = options.sessionKey\n\n this.idClaims = options.idClaims\n this.accessClaims = options.accessClaims\n }\n\n static from (options) {\n return new Session(options)\n }\n\n /**\n * @param response {AuthenticationResponse}\n *\n * @returns {Session} RelyingParty Session object\n */\n static fromAuthResponse (response) {\n const RelyingParty = require('./RelyingParty') // import here due to circular dep\n\n let idClaims = response.decoded && response.decoded.payload || {}\n\n let { rp } = response\n\n let registration = rp.registration\n let rpAuthOptions = rp.defaults.authenticate || {}\n\n let credentialType = rpAuthOptions['credential_type'] ||\n rp.defaults.popToken ? 'pop_token' : 'access_token'\n\n let sessionKey = response.session[RelyingParty.SESSION_PRIVATE_KEY]\n\n let options = {\n credentialType,\n sessionKey,\n issuer: idClaims.iss,\n idClaims,\n authorization: {\n client_id: registration['client_id'],\n access_token: response.params['access_token'],\n id_token: response.params['id_token'],\n refresh_token: response.params['refresh_token']\n }\n }\n\n return Session.from(options)\n }\n\n /**\n * Authenticated fetch() getter\n *\n * @returns {function}\n */\n get fetch () {\n /**\n * fetch() function signature\n *\n * @param url {RequestInfo|string}\n * @param options {object}\n *\n * @returns {Function>}\n */\n return (url, options) => {\n return Promise.resolve()\n\n .then(() => {\n if (this.hasCredentials()) {\n return this.fetchWithCredentials(url, options)\n } else {\n return fetch(url, options)\n }\n })\n\n .then(onHttpError('Error while fetching resource'))\n }\n }\n\n /**\n * bearerTokenFor\n *\n * @param url {string}\n *\n * @returns {Promise}\n */\n bearerTokenFor (url) {\n switch (this.credentialType) {\n case 'pop_token':\n return PoPToken.issueFor(url, this)\n\n default: // 'access_token' etc\n return Promise.resolve(this.authorization[this.credentialType])\n }\n }\n\n /**\n * hasCredentials\n *\n * @returns {boolean}\n */\n hasCredentials () {\n switch (this.credentialType) {\n case 'pop_token':\n return !!this.authorization['id_token']\n\n default: // 'access_token' etc\n return !!this.authorization[this.credentialType]\n }\n }\n\n /**\n * fetchWithCredentials\n *\n * @param url {RequestInfo|string}\n * @param options {object}\n *\n * @returns {Promise}\n */\n fetchWithCredentials (url, options = {}) {\n options.headers = options.headers || {}\n\n return this.bearerTokenFor(url)\n\n .then(token => {\n options.headers.authorization = `Bearer ${token}`\n\n return fetch(url, options)\n })\n }\n}\n\nmodule.exports = Session\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/oidc-rp/src/Session.js\n// module id = 183\n// module chunks = 0","'use strict'\n\nmodule.exports = require('./RelyingParty')\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@solid/oidc-rp/src/index.js\n// module id = 184\n// module chunks = 0","'use strict';\n\n/**\n * Module dependencies\n * @ignore\n */\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar JSONPatch = require('./JSONPatch');\n\n/**\n * JSONDocument\n *\n * @class\n * JSONDocument is a high level interface that binds together all other features of\n * this package and provides the principle method of data modeling.\n */\n\nvar JSONDocument = function () {\n _createClass(JSONDocument, null, [{\n key: 'schema',\n\n\n /**\n * Schema\n */\n get: function get() {\n throw new Error('Schema must be defined by classes extending JSONDocument');\n }\n\n /**\n * Constructor\n *\n * @param {Object} data\n * @param {Object} options\n */\n\n }]);\n\n function JSONDocument() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, JSONDocument);\n\n this.initialize(data, options);\n }\n\n /**\n * Initialize\n *\n * @param {Object} data\n * @param {Object} options\n */\n\n\n _createClass(JSONDocument, [{\n key: 'initialize',\n value: function initialize() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var schema = this.constructor.schema;\n\n schema.initialize(this, data, options);\n }\n\n /**\n * Validate\n *\n * @param {JSONSchema} alternate - OPTIONAL alternate schema\n * @returns {Object}\n */\n\n }, {\n key: 'validate',\n value: function validate(alternate) {\n var schema = this.constructor.schema;\n\n return (alternate || schema).validate(this);\n }\n\n /**\n * Patch\n *\n * @param {Array} ops\n */\n\n }, {\n key: 'patch',\n value: function patch(ops) {\n var patch = new JSONPatch(ops);\n patch.apply(this);\n }\n\n /**\n * Select\n */\n\n }, {\n key: 'select',\n value: function select() {}\n\n /**\n * Project\n *\n * @description\n * Given a mapping, return an object projected from the current instance.\n *\n * @example\n * let schema = new JSONSchema({\n * properties: {\n * foo: { type: 'Array' }\n * }\n * })\n *\n * let mapping = new JSONMapping({\n * '/foo/0': '/bar/baz'\n * })\n *\n * class FooTracker extends JSONDocument {\n * static get schema () { return schema }\n * }\n *\n * let instance = new FooTracker({ foo: ['qux'] })\n * instance.project(mapping)\n * // => { bar: { baz: 'qux' } }\n *\n * @param {JSONMapping} mapping\n * @return {Object}\n */\n\n }, {\n key: 'project',\n value: function project(mapping) {\n return mapping.project(this);\n }\n\n /**\n * Serialize\n *\n * @param {Object} object\n * @returns {string}\n */\n\n }], [{\n key: 'serialize',\n value: function serialize(object) {\n return JSON.stringify(object);\n }\n\n /**\n * Deserialize\n *\n * @param {string} data\n * @return {*}\n */\n\n }, {\n key: 'deserialize',\n value: function deserialize(data) {\n try {\n return JSON.parse(data);\n } catch (e) {\n throw new Error('Failed to parse JSON');\n }\n }\n }]);\n\n return JSONDocument;\n}();\n\n/**\n * Export\n */\n\n\nmodule.exports = JSONDocument;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@trust/json-document/lib/JSONDocument.js\n// module id = 185\n// module chunks = 0","'use strict';\n\n/**\n * Module dependencies\n * @ignore\n */\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar JSONPointer = require('./JSONPointer');\n\n/**\n * JSONPointer mode\n */\nvar RECOVER = 1;\n\n/**\n * JSONMapping\n *\n * @class\n * Defines a means to declaratively translate between object\n * representations using JSON Pointer syntax.\n */\n\nvar JSONMapping = function () {\n\n /**\n * Constructor\n *\n * @description Translate pointers from JSON Strings into Pointer objects\n * @param {Object} mapping\n */\n function JSONMapping(mapping) {\n var _this = this;\n\n _classCallCheck(this, JSONMapping);\n\n Object.defineProperty(this, 'mapping', {\n enumerable: false,\n value: new Map()\n });\n\n Object.keys(mapping).forEach(function (key) {\n var value = mapping[key];\n _this.mapping.set(new JSONPointer(key, RECOVER), new JSONPointer(value, RECOVER));\n });\n }\n\n /**\n * Map\n *\n * @description Assign values from source to target by reading the mapping\n * from right to left.\n * @param {Object} target\n * @param {Object} source\n */\n\n\n _createClass(JSONMapping, [{\n key: 'map',\n value: function map(target, source) {\n this.mapping.forEach(function (right, left) {\n left.add(target, right.get(source));\n });\n }\n\n /**\n * Project\n *\n * @description Assign values from source to target by reading the mapping\n * from left to right.\n * @param {Object} source\n * @param {Object} target\n */\n\n }, {\n key: 'project',\n value: function project(source, target) {\n this.mapping.forEach(function (right, left) {\n right.add(target, left.get(source));\n });\n }\n }]);\n\n return JSONMapping;\n}();\n\n/**\n * Exports\n */\n\n\nmodule.exports = JSONMapping;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@trust/json-document/lib/JSONMapping.js\n// module id = 186\n// module chunks = 0","'use strict';\n\n/**\n * Module dependencies\n * @ignore\n */\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Initializer = require('./Initializer');\nvar Validator = require('./Validator');\n\n/**\n * JSONSchema\n *\n * @class\n * Compiles JSON Schema documents to an object with object initialization\n * and validation methods.\n */\n\nvar JSONSchema = function () {\n\n /**\n * Constructor\n *\n * @param {Object} schema\n */\n function JSONSchema(schema) {\n _classCallCheck(this, JSONSchema);\n\n // TODO: optionally parse JSON string?\n Object.assign(this, schema);\n\n // add schema-derived initialize and validate methods\n Object.defineProperties(this, {\n initialize: {\n enumerable: false,\n writeable: false,\n value: Initializer.compile(schema)\n },\n validate: {\n enumerable: false,\n writeable: false,\n value: Validator.compile(schema)\n }\n });\n }\n\n /**\n * Extend\n *\n * @description\n * ...\n * Dear future,\n *\n * This function was meticulously plagiarized from some curious amalgam of\n * stackoverflow posts whilst dozing off at my keyboard, too deprived of REM-\n * sleep to recurse unassisted. If it sucks, you have only yourself to blame.\n *\n * Goodnight.\n *\n * @param {Object} schema\n * @returns {JSONSchema}\n */\n\n\n _createClass(JSONSchema, [{\n key: 'extend',\n value: function extend(schema) {\n function isObject(data) {\n return data && (typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object' && data !== null && !Array.isArray(data);\n }\n\n function extender(target, source) {\n var result = Object.assign({}, target);\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach(function (key) {\n if (isObject(source[key])) {\n if (!(key in target)) {\n Object.assign(result, _defineProperty({}, key, source[key]));\n } else {\n result[key] = extender(target[key], source[key]);\n }\n } else {\n Object.assign(result, _defineProperty({}, key, source[key]));\n }\n });\n }\n return result;\n }\n\n var descriptor = extender(this, schema);\n return new JSONSchema(descriptor);\n }\n }]);\n\n return JSONSchema;\n}();\n\n/**\n * Export\n */\n\n\nmodule.exports = JSONSchema;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@trust/json-document/lib/JSONSchema.js\n// module id = 187\n// module chunks = 0","/*!\n * async\n * https://github.com/caolan/async\n *\n * Copyright 2010-2014 Caolan McMahon\n * Released under the MIT license\n */\n/*jshint onevar: false, indent:4 */\n/*global setImmediate: false, setTimeout: false, console: false */\n(function () {\n\n var async = {};\n\n // global on the server, window in the browser\n var root, previous_async;\n\n root = this;\n if (root != null) {\n previous_async = root.async;\n }\n\n async.noConflict = function () {\n root.async = previous_async;\n return async;\n };\n\n function only_once(fn) {\n var called = false;\n return function() {\n if (called) throw new Error(\"Callback was already called.\");\n called = true;\n fn.apply(root, arguments);\n }\n }\n\n //// cross-browser compatiblity functions ////\n\n var _toString = Object.prototype.toString;\n\n var _isArray = Array.isArray || function (obj) {\n return _toString.call(obj) === '[object Array]';\n };\n\n var _each = function (arr, iterator) {\n for (var i = 0; i < arr.length; i += 1) {\n iterator(arr[i], i, arr);\n }\n };\n\n var _map = function (arr, iterator) {\n if (arr.map) {\n return arr.map(iterator);\n }\n var results = [];\n _each(arr, function (x, i, a) {\n results.push(iterator(x, i, a));\n });\n return results;\n };\n\n var _reduce = function (arr, iterator, memo) {\n if (arr.reduce) {\n return arr.reduce(iterator, memo);\n }\n _each(arr, function (x, i, a) {\n memo = iterator(memo, x, i, a);\n });\n return memo;\n };\n\n var _keys = function (obj) {\n if (Object.keys) {\n return Object.keys(obj);\n }\n var keys = [];\n for (var k in obj) {\n if (obj.hasOwnProperty(k)) {\n keys.push(k);\n }\n }\n return keys;\n };\n\n //// exported async module functions ////\n\n //// nextTick implementation with browser-compatible fallback ////\n if (typeof process === 'undefined' || !(process.nextTick)) {\n if (typeof setImmediate === 'function') {\n async.nextTick = function (fn) {\n // not a direct alias for IE10 compatibility\n setImmediate(fn);\n };\n async.setImmediate = async.nextTick;\n }\n else {\n async.nextTick = function (fn) {\n setTimeout(fn, 0);\n };\n async.setImmediate = async.nextTick;\n }\n }\n else {\n async.nextTick = process.nextTick;\n if (typeof setImmediate !== 'undefined') {\n async.setImmediate = function (fn) {\n // not a direct alias for IE10 compatibility\n setImmediate(fn);\n };\n }\n else {\n async.setImmediate = async.nextTick;\n }\n }\n\n async.each = function (arr, iterator, callback) {\n callback = callback || function () {};\n if (!arr.length) {\n return callback();\n }\n var completed = 0;\n _each(arr, function (x) {\n iterator(x, only_once(done) );\n });\n function done(err) {\n if (err) {\n callback(err);\n callback = function () {};\n }\n else {\n completed += 1;\n if (completed >= arr.length) {\n callback();\n }\n }\n }\n };\n async.forEach = async.each;\n\n async.eachSeries = function (arr, iterator, callback) {\n callback = callback || function () {};\n if (!arr.length) {\n return callback();\n }\n var completed = 0;\n var iterate = function () {\n iterator(arr[completed], function (err) {\n if (err) {\n callback(err);\n callback = function () {};\n }\n else {\n completed += 1;\n if (completed >= arr.length) {\n callback();\n }\n else {\n iterate();\n }\n }\n });\n };\n iterate();\n };\n async.forEachSeries = async.eachSeries;\n\n async.eachLimit = function (arr, limit, iterator, callback) {\n var fn = _eachLimit(limit);\n fn.apply(null, [arr, iterator, callback]);\n };\n async.forEachLimit = async.eachLimit;\n\n var _eachLimit = function (limit) {\n\n return function (arr, iterator, callback) {\n callback = callback || function () {};\n if (!arr.length || limit <= 0) {\n return callback();\n }\n var completed = 0;\n var started = 0;\n var running = 0;\n\n (function replenish () {\n if (completed >= arr.length) {\n return callback();\n }\n\n while (running < limit && started < arr.length) {\n started += 1;\n running += 1;\n iterator(arr[started - 1], function (err) {\n if (err) {\n callback(err);\n callback = function () {};\n }\n else {\n completed += 1;\n running -= 1;\n if (completed >= arr.length) {\n callback();\n }\n else {\n replenish();\n }\n }\n });\n }\n })();\n };\n };\n\n\n var doParallel = function (fn) {\n return function () {\n var args = Array.prototype.slice.call(arguments);\n return fn.apply(null, [async.each].concat(args));\n };\n };\n var doParallelLimit = function(limit, fn) {\n return function () {\n var args = Array.prototype.slice.call(arguments);\n return fn.apply(null, [_eachLimit(limit)].concat(args));\n };\n };\n var doSeries = function (fn) {\n return function () {\n var args = Array.prototype.slice.call(arguments);\n return fn.apply(null, [async.eachSeries].concat(args));\n };\n };\n\n\n var _asyncMap = function (eachfn, arr, iterator, callback) {\n arr = _map(arr, function (x, i) {\n return {index: i, value: x};\n });\n if (!callback) {\n eachfn(arr, function (x, callback) {\n iterator(x.value, function (err) {\n callback(err);\n });\n });\n } else {\n var results = [];\n eachfn(arr, function (x, callback) {\n iterator(x.value, function (err, v) {\n results[x.index] = v;\n callback(err);\n });\n }, function (err) {\n callback(err, results);\n });\n }\n };\n async.map = doParallel(_asyncMap);\n async.mapSeries = doSeries(_asyncMap);\n async.mapLimit = function (arr, limit, iterator, callback) {\n return _mapLimit(limit)(arr, iterator, callback);\n };\n\n var _mapLimit = function(limit) {\n return doParallelLimit(limit, _asyncMap);\n };\n\n // reduce only has a series version, as doing reduce in parallel won't\n // work in many situations.\n async.reduce = function (arr, memo, iterator, callback) {\n async.eachSeries(arr, function (x, callback) {\n iterator(memo, x, function (err, v) {\n memo = v;\n callback(err);\n });\n }, function (err) {\n callback(err, memo);\n });\n };\n // inject alias\n async.inject = async.reduce;\n // foldl alias\n async.foldl = async.reduce;\n\n async.reduceRight = function (arr, memo, iterator, callback) {\n var reversed = _map(arr, function (x) {\n return x;\n }).reverse();\n async.reduce(reversed, memo, iterator, callback);\n };\n // foldr alias\n async.foldr = async.reduceRight;\n\n var _filter = function (eachfn, arr, iterator, callback) {\n var results = [];\n arr = _map(arr, function (x, i) {\n return {index: i, value: x};\n });\n eachfn(arr, function (x, callback) {\n iterator(x.value, function (v) {\n if (v) {\n results.push(x);\n }\n callback();\n });\n }, function (err) {\n callback(_map(results.sort(function (a, b) {\n return a.index - b.index;\n }), function (x) {\n return x.value;\n }));\n });\n };\n async.filter = doParallel(_filter);\n async.filterSeries = doSeries(_filter);\n // select alias\n async.select = async.filter;\n async.selectSeries = async.filterSeries;\n\n var _reject = function (eachfn, arr, iterator, callback) {\n var results = [];\n arr = _map(arr, function (x, i) {\n return {index: i, value: x};\n });\n eachfn(arr, function (x, callback) {\n iterator(x.value, function (v) {\n if (!v) {\n results.push(x);\n }\n callback();\n });\n }, function (err) {\n callback(_map(results.sort(function (a, b) {\n return a.index - b.index;\n }), function (x) {\n return x.value;\n }));\n });\n };\n async.reject = doParallel(_reject);\n async.rejectSeries = doSeries(_reject);\n\n var _detect = function (eachfn, arr, iterator, main_callback) {\n eachfn(arr, function (x, callback) {\n iterator(x, function (result) {\n if (result) {\n main_callback(x);\n main_callback = function () {};\n }\n else {\n callback();\n }\n });\n }, function (err) {\n main_callback();\n });\n };\n async.detect = doParallel(_detect);\n async.detectSeries = doSeries(_detect);\n\n async.some = function (arr, iterator, main_callback) {\n async.each(arr, function (x, callback) {\n iterator(x, function (v) {\n if (v) {\n main_callback(true);\n main_callback = function () {};\n }\n callback();\n });\n }, function (err) {\n main_callback(false);\n });\n };\n // any alias\n async.any = async.some;\n\n async.every = function (arr, iterator, main_callback) {\n async.each(arr, function (x, callback) {\n iterator(x, function (v) {\n if (!v) {\n main_callback(false);\n main_callback = function () {};\n }\n callback();\n });\n }, function (err) {\n main_callback(true);\n });\n };\n // all alias\n async.all = async.every;\n\n async.sortBy = function (arr, iterator, callback) {\n async.map(arr, function (x, callback) {\n iterator(x, function (err, criteria) {\n if (err) {\n callback(err);\n }\n else {\n callback(null, {value: x, criteria: criteria});\n }\n });\n }, function (err, results) {\n if (err) {\n return callback(err);\n }\n else {\n var fn = function (left, right) {\n var a = left.criteria, b = right.criteria;\n return a < b ? -1 : a > b ? 1 : 0;\n };\n callback(null, _map(results.sort(fn), function (x) {\n return x.value;\n }));\n }\n });\n };\n\n async.auto = function (tasks, callback) {\n callback = callback || function () {};\n var keys = _keys(tasks);\n var remainingTasks = keys.length\n if (!remainingTasks) {\n return callback();\n }\n\n var results = {};\n\n var listeners = [];\n var addListener = function (fn) {\n listeners.unshift(fn);\n };\n var removeListener = function (fn) {\n for (var i = 0; i < listeners.length; i += 1) {\n if (listeners[i] === fn) {\n listeners.splice(i, 1);\n return;\n }\n }\n };\n var taskComplete = function () {\n remainingTasks--\n _each(listeners.slice(0), function (fn) {\n fn();\n });\n };\n\n addListener(function () {\n if (!remainingTasks) {\n var theCallback = callback;\n // prevent final callback from calling itself if it errors\n callback = function () {};\n\n theCallback(null, results);\n }\n });\n\n _each(keys, function (k) {\n var task = _isArray(tasks[k]) ? tasks[k]: [tasks[k]];\n var taskCallback = function (err) {\n var args = Array.prototype.slice.call(arguments, 1);\n if (args.length <= 1) {\n args = args[0];\n }\n if (err) {\n var safeResults = {};\n _each(_keys(results), function(rkey) {\n safeResults[rkey] = results[rkey];\n });\n safeResults[k] = args;\n callback(err, safeResults);\n // stop subsequent errors hitting callback multiple times\n callback = function () {};\n }\n else {\n results[k] = args;\n async.setImmediate(taskComplete);\n }\n };\n var requires = task.slice(0, Math.abs(task.length - 1)) || [];\n var ready = function () {\n return _reduce(requires, function (a, x) {\n return (a && results.hasOwnProperty(x));\n }, true) && !results.hasOwnProperty(k);\n };\n if (ready()) {\n task[task.length - 1](taskCallback, results);\n }\n else {\n var listener = function () {\n if (ready()) {\n removeListener(listener);\n task[task.length - 1](taskCallback, results);\n }\n };\n addListener(listener);\n }\n });\n };\n\n async.retry = function(times, task, callback) {\n var DEFAULT_TIMES = 5;\n var attempts = [];\n // Use defaults if times not passed\n if (typeof times === 'function') {\n callback = task;\n task = times;\n times = DEFAULT_TIMES;\n }\n // Make sure times is a number\n times = parseInt(times, 10) || DEFAULT_TIMES;\n var wrappedTask = function(wrappedCallback, wrappedResults) {\n var retryAttempt = function(task, finalAttempt) {\n return function(seriesCallback) {\n task(function(err, result){\n seriesCallback(!err || finalAttempt, {err: err, result: result});\n }, wrappedResults);\n };\n };\n while (times) {\n attempts.push(retryAttempt(task, !(times-=1)));\n }\n async.series(attempts, function(done, data){\n data = data[data.length - 1];\n (wrappedCallback || callback)(data.err, data.result);\n });\n }\n // If a callback is passed, run this as a controll flow\n return callback ? wrappedTask() : wrappedTask\n };\n\n async.waterfall = function (tasks, callback) {\n callback = callback || function () {};\n if (!_isArray(tasks)) {\n var err = new Error('First argument to waterfall must be an array of functions');\n return callback(err);\n }\n if (!tasks.length) {\n return callback();\n }\n var wrapIterator = function (iterator) {\n return function (err) {\n if (err) {\n callback.apply(null, arguments);\n callback = function () {};\n }\n else {\n var args = Array.prototype.slice.call(arguments, 1);\n var next = iterator.next();\n if (next) {\n args.push(wrapIterator(next));\n }\n else {\n args.push(callback);\n }\n async.setImmediate(function () {\n iterator.apply(null, args);\n });\n }\n };\n };\n wrapIterator(async.iterator(tasks))();\n };\n\n var _parallel = function(eachfn, tasks, callback) {\n callback = callback || function () {};\n if (_isArray(tasks)) {\n eachfn.map(tasks, function (fn, callback) {\n if (fn) {\n fn(function (err) {\n var args = Array.prototype.slice.call(arguments, 1);\n if (args.length <= 1) {\n args = args[0];\n }\n callback.call(null, err, args);\n });\n }\n }, callback);\n }\n else {\n var results = {};\n eachfn.each(_keys(tasks), function (k, callback) {\n tasks[k](function (err) {\n var args = Array.prototype.slice.call(arguments, 1);\n if (args.length <= 1) {\n args = args[0];\n }\n results[k] = args;\n callback(err);\n });\n }, function (err) {\n callback(err, results);\n });\n }\n };\n\n async.parallel = function (tasks, callback) {\n _parallel({ map: async.map, each: async.each }, tasks, callback);\n };\n\n async.parallelLimit = function(tasks, limit, callback) {\n _parallel({ map: _mapLimit(limit), each: _eachLimit(limit) }, tasks, callback);\n };\n\n async.series = function (tasks, callback) {\n callback = callback || function () {};\n if (_isArray(tasks)) {\n async.mapSeries(tasks, function (fn, callback) {\n if (fn) {\n fn(function (err) {\n var args = Array.prototype.slice.call(arguments, 1);\n if (args.length <= 1) {\n args = args[0];\n }\n callback.call(null, err, args);\n });\n }\n }, callback);\n }\n else {\n var results = {};\n async.eachSeries(_keys(tasks), function (k, callback) {\n tasks[k](function (err) {\n var args = Array.prototype.slice.call(arguments, 1);\n if (args.length <= 1) {\n args = args[0];\n }\n results[k] = args;\n callback(err);\n });\n }, function (err) {\n callback(err, results);\n });\n }\n };\n\n async.iterator = function (tasks) {\n var makeCallback = function (index) {\n var fn = function () {\n if (tasks.length) {\n tasks[index].apply(null, arguments);\n }\n return fn.next();\n };\n fn.next = function () {\n return (index < tasks.length - 1) ? makeCallback(index + 1): null;\n };\n return fn;\n };\n return makeCallback(0);\n };\n\n async.apply = function (fn) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function () {\n return fn.apply(\n null, args.concat(Array.prototype.slice.call(arguments))\n );\n };\n };\n\n var _concat = function (eachfn, arr, fn, callback) {\n var r = [];\n eachfn(arr, function (x, cb) {\n fn(x, function (err, y) {\n r = r.concat(y || []);\n cb(err);\n });\n }, function (err) {\n callback(err, r);\n });\n };\n async.concat = doParallel(_concat);\n async.concatSeries = doSeries(_concat);\n\n async.whilst = function (test, iterator, callback) {\n if (test()) {\n iterator(function (err) {\n if (err) {\n return callback(err);\n }\n async.whilst(test, iterator, callback);\n });\n }\n else {\n callback();\n }\n };\n\n async.doWhilst = function (iterator, test, callback) {\n iterator(function (err) {\n if (err) {\n return callback(err);\n }\n var args = Array.prototype.slice.call(arguments, 1);\n if (test.apply(null, args)) {\n async.doWhilst(iterator, test, callback);\n }\n else {\n callback();\n }\n });\n };\n\n async.until = function (test, iterator, callback) {\n if (!test()) {\n iterator(function (err) {\n if (err) {\n return callback(err);\n }\n async.until(test, iterator, callback);\n });\n }\n else {\n callback();\n }\n };\n\n async.doUntil = function (iterator, test, callback) {\n iterator(function (err) {\n if (err) {\n return callback(err);\n }\n var args = Array.prototype.slice.call(arguments, 1);\n if (!test.apply(null, args)) {\n async.doUntil(iterator, test, callback);\n }\n else {\n callback();\n }\n });\n };\n\n async.queue = function (worker, concurrency) {\n if (concurrency === undefined) {\n concurrency = 1;\n }\n function _insert(q, data, pos, callback) {\n if (!q.started){\n q.started = true;\n }\n if (!_isArray(data)) {\n data = [data];\n }\n if(data.length == 0) {\n // call drain immediately if there are no tasks\n return async.setImmediate(function() {\n if (q.drain) {\n q.drain();\n }\n });\n }\n _each(data, function(task) {\n var item = {\n data: task,\n callback: typeof callback === 'function' ? callback : null\n };\n\n if (pos) {\n q.tasks.unshift(item);\n } else {\n q.tasks.push(item);\n }\n\n if (q.saturated && q.tasks.length === q.concurrency) {\n q.saturated();\n }\n async.setImmediate(q.process);\n });\n }\n\n var workers = 0;\n var q = {\n tasks: [],\n concurrency: concurrency,\n saturated: null,\n empty: null,\n drain: null,\n started: false,\n paused: false,\n push: function (data, callback) {\n _insert(q, data, false, callback);\n },\n kill: function () {\n q.drain = null;\n q.tasks = [];\n },\n unshift: function (data, callback) {\n _insert(q, data, true, callback);\n },\n process: function () {\n if (!q.paused && workers < q.concurrency && q.tasks.length) {\n var task = q.tasks.shift();\n if (q.empty && q.tasks.length === 0) {\n q.empty();\n }\n workers += 1;\n var next = function () {\n workers -= 1;\n if (task.callback) {\n task.callback.apply(task, arguments);\n }\n if (q.drain && q.tasks.length + workers === 0) {\n q.drain();\n }\n q.process();\n };\n var cb = only_once(next);\n worker(task.data, cb);\n }\n },\n length: function () {\n return q.tasks.length;\n },\n running: function () {\n return workers;\n },\n idle: function() {\n return q.tasks.length + workers === 0;\n },\n pause: function () {\n if (q.paused === true) { return; }\n q.paused = true;\n },\n resume: function () {\n if (q.paused === false) { return; }\n q.paused = false;\n // Need to call q.process once per concurrent\n // worker to preserve full concurrency after pause\n for (var w = 1; w <= q.concurrency; w++) {\n async.setImmediate(q.process);\n }\n }\n };\n return q;\n };\n\n async.priorityQueue = function (worker, concurrency) {\n\n function _compareTasks(a, b){\n return a.priority - b.priority;\n };\n\n function _binarySearch(sequence, item, compare) {\n var beg = -1,\n end = sequence.length - 1;\n while (beg < end) {\n var mid = beg + ((end - beg + 1) >>> 1);\n if (compare(item, sequence[mid]) >= 0) {\n beg = mid;\n } else {\n end = mid - 1;\n }\n }\n return beg;\n }\n\n function _insert(q, data, priority, callback) {\n if (!q.started){\n q.started = true;\n }\n if (!_isArray(data)) {\n data = [data];\n }\n if(data.length == 0) {\n // call drain immediately if there are no tasks\n return async.setImmediate(function() {\n if (q.drain) {\n q.drain();\n }\n });\n }\n _each(data, function(task) {\n var item = {\n data: task,\n priority: priority,\n callback: typeof callback === 'function' ? callback : null\n };\n\n q.tasks.splice(_binarySearch(q.tasks, item, _compareTasks) + 1, 0, item);\n\n if (q.saturated && q.tasks.length === q.concurrency) {\n q.saturated();\n }\n async.setImmediate(q.process);\n });\n }\n\n // Start with a normal queue\n var q = async.queue(worker, concurrency);\n\n // Override push to accept second parameter representing priority\n q.push = function (data, priority, callback) {\n _insert(q, data, priority, callback);\n };\n\n // Remove unshift function\n delete q.unshift;\n\n return q;\n };\n\n async.cargo = function (worker, payload) {\n var working = false,\n tasks = [];\n\n var cargo = {\n tasks: tasks,\n payload: payload,\n saturated: null,\n empty: null,\n drain: null,\n drained: true,\n push: function (data, callback) {\n if (!_isArray(data)) {\n data = [data];\n }\n _each(data, function(task) {\n tasks.push({\n data: task,\n callback: typeof callback === 'function' ? callback : null\n });\n cargo.drained = false;\n if (cargo.saturated && tasks.length === payload) {\n cargo.saturated();\n }\n });\n async.setImmediate(cargo.process);\n },\n process: function process() {\n if (working) return;\n if (tasks.length === 0) {\n if(cargo.drain && !cargo.drained) cargo.drain();\n cargo.drained = true;\n return;\n }\n\n var ts = typeof payload === 'number'\n ? tasks.splice(0, payload)\n : tasks.splice(0, tasks.length);\n\n var ds = _map(ts, function (task) {\n return task.data;\n });\n\n if(cargo.empty) cargo.empty();\n working = true;\n worker(ds, function () {\n working = false;\n\n var args = arguments;\n _each(ts, function (data) {\n if (data.callback) {\n data.callback.apply(null, args);\n }\n });\n\n process();\n });\n },\n length: function () {\n return tasks.length;\n },\n running: function () {\n return working;\n }\n };\n return cargo;\n };\n\n var _console_fn = function (name) {\n return function (fn) {\n var args = Array.prototype.slice.call(arguments, 1);\n fn.apply(null, args.concat([function (err) {\n var args = Array.prototype.slice.call(arguments, 1);\n if (typeof console !== 'undefined') {\n if (err) {\n if (console.error) {\n console.error(err);\n }\n }\n else if (console[name]) {\n _each(args, function (x) {\n console[name](x);\n });\n }\n }\n }]));\n };\n };\n async.log = _console_fn('log');\n async.dir = _console_fn('dir');\n /*async.info = _console_fn('info');\n async.warn = _console_fn('warn');\n async.error = _console_fn('error');*/\n\n async.memoize = function (fn, hasher) {\n var memo = {};\n var queues = {};\n hasher = hasher || function (x) {\n return x;\n };\n var memoized = function () {\n var args = Array.prototype.slice.call(arguments);\n var callback = args.pop();\n var key = hasher.apply(null, args);\n if (key in memo) {\n async.nextTick(function () {\n callback.apply(null, memo[key]);\n });\n }\n else if (key in queues) {\n queues[key].push(callback);\n }\n else {\n queues[key] = [callback];\n fn.apply(null, args.concat([function () {\n memo[key] = arguments;\n var q = queues[key];\n delete queues[key];\n for (var i = 0, l = q.length; i < l; i++) {\n q[i].apply(null, arguments);\n }\n }]));\n }\n };\n memoized.memo = memo;\n memoized.unmemoized = fn;\n return memoized;\n };\n\n async.unmemoize = function (fn) {\n return function () {\n return (fn.unmemoized || fn).apply(null, arguments);\n };\n };\n\n async.times = function (count, iterator, callback) {\n var counter = [];\n for (var i = 0; i < count; i++) {\n counter.push(i);\n }\n return async.map(counter, iterator, callback);\n };\n\n async.timesSeries = function (count, iterator, callback) {\n var counter = [];\n for (var i = 0; i < count; i++) {\n counter.push(i);\n }\n return async.mapSeries(counter, iterator, callback);\n };\n\n async.seq = function (/* functions... */) {\n var fns = arguments;\n return function () {\n var that = this;\n var args = Array.prototype.slice.call(arguments);\n var callback = args.pop();\n async.reduce(fns, args, function (newargs, fn, cb) {\n fn.apply(that, newargs.concat([function () {\n var err = arguments[0];\n var nextargs = Array.prototype.slice.call(arguments, 1);\n cb(err, nextargs);\n }]))\n },\n function (err, results) {\n callback.apply(that, [err].concat(results));\n });\n };\n };\n\n async.compose = function (/* functions... */) {\n return async.seq.apply(null, Array.prototype.reverse.call(arguments));\n };\n\n var _applyEach = function (eachfn, fns /*args...*/) {\n var go = function () {\n var that = this;\n var args = Array.prototype.slice.call(arguments);\n var callback = args.pop();\n return eachfn(fns, function (fn, cb) {\n fn.apply(that, args.concat([cb]));\n },\n callback);\n };\n if (arguments.length > 2) {\n var args = Array.prototype.slice.call(arguments, 2);\n return go.apply(this, args);\n }\n else {\n return go;\n }\n };\n async.applyEach = doParallel(_applyEach);\n async.applyEachSeries = doSeries(_applyEach);\n\n async.forever = function (fn, callback) {\n function next(err) {\n if (err) {\n if (callback) {\n return callback(err);\n }\n throw err;\n }\n fn(next);\n }\n next();\n };\n\n // Node.js\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = async;\n }\n // AMD / RequireJS\n else if (typeof define !== 'undefined' && define.amd) {\n define([], function () {\n return async;\n });\n }\n // included directly via + + + + + + + +
+ + +

+ + This is a public homepage of {{#if name}} {{name}} {{/if}} + +

+ +{{#if tlsCertWebid}} + +{{/if}} + +
+

Data

+ +
+ +
+

Apps

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/default-templates/new-account/plume/config.json b/default-templates/new-account/plume/config.json new file mode 100644 index 000000000..33829b86a --- /dev/null +++ b/default-templates/new-account/plume/config.json @@ -0,0 +1,11 @@ +{ + "owners": ["{{accountUri}}"], + "title": "Plume", + "tagline": "Light as a feather", + "picture": "/common/plume/img/logo.svg", + "fadeText": true, + "showSources": true, + "cacheUnit": "days", + "defaultPath": "posts", + "postsURL": "{{accountUri}}/public/blog/posts/" +} \ No newline at end of file diff --git a/default-templates/new-account/plume/config.json.acl b/default-templates/new-account/plume/config.json.acl new file mode 100644 index 000000000..64fbd1b6d --- /dev/null +++ b/default-templates/new-account/plume/config.json.acl @@ -0,0 +1,27 @@ +@prefix acl: . +@prefix foaf: . + +<#owner> + a acl:Authorization; + + acl:agent + <{{webId}}>; +{{#if addOwlSameAs}} + acl:agent <{{extWebId}}>; +{{/if}} + + acl:origin <{{accountUri}}>; + + acl:accessTo <./config.json>; + + acl:mode + acl:Read, acl:Write, acl:Control. + +<#public> + a acl:Authorization; + + acl:agentClass foaf:Agent; # everyone + + acl:accessTo <./config.json>; + + acl:mode acl:Read. \ No newline at end of file diff --git a/default-templates/new-account/private/.acl b/default-templates/new-account/private/.acl old mode 100644 new mode 100755 index 914efcf9f..afb7930a1 --- a/default-templates/new-account/private/.acl +++ b/default-templates/new-account/private/.acl @@ -5,6 +5,10 @@ <#owner> a acl:Authorization; acl:agent <{{webId}}>; +{{#if addOwlSameAs}} + acl:agent <{{extWebId}}>; +{{/if}} + acl:origin <{{accountUri}}>; acl:accessTo <./>; acl:default <./>; acl:mode acl:Read, acl:Write, acl:Control. diff --git a/default-templates/new-account/profile/.acl b/default-templates/new-account/profile/.acl old mode 100644 new mode 100755 index 1fb254129..af716ebef --- a/default-templates/new-account/profile/.acl +++ b/default-templates/new-account/profile/.acl @@ -6,6 +6,10 @@ <#owner> a acl:Authorization; acl:agent <{{webId}}>; +{{#if addOwlSameAs}} + acl:agent <{{extWebId}}>; +{{/if}} + acl:origin <{{accountUri}}>; acl:accessTo <./>; acl:default <./>; acl:mode acl:Read, acl:Write, acl:Control. diff --git a/default-templates/new-account/profile/card$.ttl b/default-templates/new-account/profile/card$.ttl index 063bc61cf..680464578 100644 --- a/default-templates/new-account/profile/card$.ttl +++ b/default-templates/new-account/profile/card$.ttl @@ -3,6 +3,11 @@ @prefix pim: . @prefix schema: . @prefix ldp: . +@prefix acl: . +@prefix owl: . +@prefix cert: . +@prefix xsd: . +@prefix : <#> . <> a foaf:PersonalProfileDocument ; @@ -15,11 +20,54 @@ foaf:name "{{name}}" ; + solid:oidcIssuer <{{serverUri}}> ; + solid:account ; # link to the account uri pim:storage ; # root storage ldp:inbox ; + acl:trustedApp + [ + acl:mode acl:Append, acl:Control, acl:Read, acl:Write; + acl:origin +# Chrome OSDS extension + , +# Chrome YouID extension + , +# FF OSDS extension + , +# FF YouID extension + , +# Chrome Dokieli extension + , +# Markbook app + , + ]; + pim:preferencesFile ; # private settings/preferences solid:publicTypeIndex ; solid:privateTypeIndex . + +{{#if addOwlSameAs}} +<{{webId}}> + owl:sameAs <{{extWebId}}> . +{{/if}} + +{{#if tlsCertWebid}} +<{{webId}}> + acl:delegates <{{tlsCertWebid}}> ; # Delegation Relations for Software Agent + cert:key :key-stub . + +:key-stub + a cert:RSAPublicKey ; + cert:exponent "65537"^^xsd:int ; + cert:modulus "00"^^xsd:hexBinary . + +<{{tlsCertWebid}}> + cert:key [ + a cert:RSAPublicKey ; + cert:exponent "{{tlsCertExponent}}"^^xsd:int ; + cert:modulus "{{tlsCertModulus}}"^^xsd:hexBinary + ] . +{{/if}} \ No newline at end of file diff --git a/default-templates/new-account/public/.acl b/default-templates/new-account/public/.acl index 210555a83..5047462da 100644 --- a/default-templates/new-account/public/.acl +++ b/default-templates/new-account/public/.acl @@ -6,6 +6,10 @@ <#owner> a acl:Authorization; acl:agent <{{webId}}>; +{{#if addOwlSameAs}} + acl:agent <{{extWebId}}>; +{{/if}} + acl:origin <{{accountUri}}>; acl:accessTo <./>; acl:default <./>; acl:mode acl:Read, acl:Write, acl:Control. diff --git a/default-templates/new-account/public/blog/posts/.acl b/default-templates/new-account/public/blog/posts/.acl new file mode 100644 index 000000000..06c8d3a19 --- /dev/null +++ b/default-templates/new-account/public/blog/posts/.acl @@ -0,0 +1,23 @@ +# ACL resource for the public folder +@prefix acl: . +@prefix foaf: . + +# The owner has all permissions +<#owner> + a acl:Authorization; + acl:agent <{{webId}}>; +{{#if addOwlSameAs}} + acl:agent <{{extWebId}}>; +{{/if}} + acl:origin <{{accountUri}}>; + acl:accessTo <./>; + acl:defaultForNew <./>; + acl:mode acl:Read, acl:Write, acl:Control. + +# The public has read permissions +<#public> + a acl:Authorization; + acl:agentClass foaf:Agent; + acl:accessTo <./>; + acl:defaultForNew <./>; + acl:mode acl:Read. diff --git a/default-templates/new-account/robots.txt.acl b/default-templates/new-account/robots.txt.acl index 2326c86c2..b7f47f126 100644 --- a/default-templates/new-account/robots.txt.acl +++ b/default-templates/new-account/robots.txt.acl @@ -10,6 +10,11 @@ acl:agent <{{webId}}>; +{{#if addOwlSameAs}} + acl:agent <{{extWebId}}>; +{{/if}} + + acl:origin <{{accountUri}}>; acl:accessTo ; diff --git a/default-templates/new-account/settings/.acl b/default-templates/new-account/settings/.acl index 921e65570..5b52f9e69 100644 --- a/default-templates/new-account/settings/.acl +++ b/default-templates/new-account/settings/.acl @@ -6,6 +6,11 @@ acl:agent <{{webId}}>; +{{#if addOwlSameAs}} + acl:agent <{{extWebId}}>; +{{/if}} + + acl:origin <{{accountUri}}>; # Set the access to the root storage folder itself acl:accessTo <./>; diff --git a/default-templates/new-account/settings/prefs.ttl.acl b/default-templates/new-account/settings/prefs.ttl.acl new file mode 100644 index 000000000..d8ffe8fe8 --- /dev/null +++ b/default-templates/new-account/settings/prefs.ttl.acl @@ -0,0 +1,22 @@ +@prefix acl: . +@prefix foaf: . + +# The owner has all permissions +<#owner> + a acl:Authorization; + acl:agent <{{webId}}>; +{{#if addOwlSameAs}} + acl:agent <{{extWebId}}>; +{{/if}} + + acl:origin <{{accountUri}}>; + acl:accessTo <./prefs.ttl>; + acl:defaultForNew <./>; + acl:mode acl:Read, acl:Write, acl:Control. + +# The public has read permissions +<#public> + a acl:Authorization; + acl:agentClass foaf:Agent; + acl:accessTo <./prefs.ttl>; + acl:mode acl:Read. diff --git a/default-templates/new-account/settings/publicTypeIndex.ttl.acl b/default-templates/new-account/settings/publicTypeIndex.ttl.acl index 6a1901462..657f0c262 100644 --- a/default-templates/new-account/settings/publicTypeIndex.ttl.acl +++ b/default-templates/new-account/settings/publicTypeIndex.ttl.acl @@ -8,6 +8,11 @@ acl:agent <{{webId}}>; +{{#if addOwlSameAs}} + acl:agent <{{extWebId}}>; +{{/if}} + + acl:origin <{{accountUri}}>; acl:accessTo <./publicTypeIndex.ttl>; diff --git a/default-templates/new-account/settings/serverSide.ttl.inactive b/default-templates/new-account/settings/serverSide.ttl similarity index 100% rename from default-templates/new-account/settings/serverSide.ttl.inactive rename to default-templates/new-account/settings/serverSide.ttl diff --git a/default-templates/new-account/settings/serverSide.ttl.acl b/default-templates/new-account/settings/serverSide.ttl.acl index fdcc53288..b6eff8ede 100644 --- a/default-templates/new-account/settings/serverSide.ttl.acl +++ b/default-templates/new-account/settings/serverSide.ttl.acl @@ -6,6 +6,11 @@ acl:agent <{{webId}}>; +{{#if addOwlSameAs}} + acl:agent <{{extWebId}}>; +{{/if}} + + acl:origin <{{accountUri}}>; acl:accessTo <./serverSide.ttl>; diff --git a/default-templates/server/.well-known/.acl b/default-templates/server/.well-known/.acl index 6cacb3779..71e2c8838 100644 --- a/default-templates/server/.well-known/.acl +++ b/default-templates/server/.well-known/.acl @@ -10,6 +10,7 @@ acl:agentClass foaf:Agent; # everyone - acl:accessTo ; + acl:accessTo <./>; + acl:defaultForNew <./>; acl:mode acl:Read. diff --git a/default-templates/server/.well-known/.acl.0 b/default-templates/server/.well-known/.acl.0 new file mode 100644 index 000000000..6cacb3779 --- /dev/null +++ b/default-templates/server/.well-known/.acl.0 @@ -0,0 +1,15 @@ +# ACL for the default .well-known/ resource +# Server operators will be able to override it as they wish +# Public-readable + +@prefix acl: . +@prefix foaf: . + +<#public> + a acl:Authorization; + + acl:agentClass foaf:Agent; # everyone + + acl:accessTo ; + + acl:mode acl:Read. diff --git a/default-templates/server/index.html b/default-templates/server/index.html index 37df7b336..ad9d95410 100644 --- a/default-templates/server/index.html +++ b/default-templates/server/index.html @@ -16,22 +16,34 @@
-

Welcome to the Solid Prototype

+

Solid-based Read-Write Data Space

- This is a prototype implementation of a Solid server. - - It is a fully functional server, but there are no security or stability guarantees. - - If you have not already done so, please create an account. + This is a fully functional Read-Write Data Space provided by the OpenLink Node Solid Server.

+

+Note: As a test and prototype server, there are no performance, security, or stability guarantees, bar the fact that the following are loosely-coupled: -

    +
  1. Identity - via a WebID
  2. +
  3. Identification - via WebID-Profile Document (Card)
  4. +
  5. Authentication - via TLS or OpenID Connect (OIDC) protocols
  6. +
  7. Authorization - via WebACLs described using RDF sentences
  8. +
  9. Storage - wherever you choose with this space as your default
  10. +

+ +
{{#if serverLogo}} diff --git a/default-views/account/register-cert-popup.hbs b/default-views/account/register-cert-popup.hbs new file mode 100644 index 000000000..0015316cd --- /dev/null +++ b/default-views/account/register-cert-popup.hbs @@ -0,0 +1,34 @@ + + + + diff --git a/default-views/account/register-certdata.hbs b/default-views/account/register-certdata.hbs new file mode 100644 index 000000000..4271ab003 --- /dev/null +++ b/default-views/account/register-certdata.hbs @@ -0,0 +1,49 @@ +
+
+
+ + +
+
 
+
+ +
+
+

Enter additional data for Certificate

+
+
+ + +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
diff --git a/default-views/account/register-form-tls.hbs b/default-views/account/register-form-tls.hbs new file mode 100644 index 000000000..a653dccb6 --- /dev/null +++ b/default-views/account/register-form-tls.hbs @@ -0,0 +1,60 @@ +
+
+
+
+ +
+ {{> shared/error}} + +
+ + +
+
+ + +
+
+ + +
+ + + + + + {{> auth/auth-hidden-fields}} +
+ +{{> account/register-certdata}} + +
+
+ +
+
+ +
+
+ + +
+ +
+
+
+

Already have an account?

+

+ + Please Log In + +

+
+
+
+ +{{> account/register-cert-popup}} + +
+ + diff --git a/default-views/account/register-form.hbs b/default-views/account/register-form.hbs index bf8691ef1..bd0aab8ab 100644 --- a/default-views/account/register-form.hbs +++ b/default-views/account/register-form.hbs @@ -63,6 +63,26 @@ Your email will only be used for account recovery +
+ +
+ + + {{#if enforceToc}} {{#if tocUri}}
@@ -74,17 +94,28 @@ {{/if}} {{/if}} - - - - {{> auth/auth-hidden-fields}} + + + {{> auth/auth-hidden-fields}} +{{> account/register-certdata}} +
+ + +
+
+ +
+ + + +
@@ -97,21 +128,49 @@
+ +{{> account/register-cert-popup}} + + diff --git a/default-views/account/register.hbs b/default-views/account/register.hbs index f003871b1..5d81f2aeb 100644 --- a/default-views/account/register.hbs +++ b/default-views/account/register.hbs @@ -6,6 +6,11 @@ Register + + + + +
@@ -17,8 +22,23 @@ {{#if registerDisabled}} {{> account/register-disabled}} {{else}} - {{> account/register-form}} + {{#if authTls}} + {{> account/register-form-tls}} + {{else}} + {{> account/register-form}} + {{/if}} + + {{> account/register-script}} + {{/if}}
+
+
+
+
+ Ver: {{solidVersion}} +
+
+
diff --git a/default-views/auth/login-auth-tls.hbs b/default-views/auth/login-auth-tls.hbs new file mode 100644 index 000000000..11ff1fb07 --- /dev/null +++ b/default-views/auth/login-auth-tls.hbs @@ -0,0 +1,78 @@ +
+
+ +
+
+ + +
+ + + + {{> auth/auth-hidden-fields}} +
+
+
+ + + diff --git a/default-views/auth/login-tls.hbs b/default-views/auth/login-tls.hbs index 3c934b45a..8cc62b702 100644 --- a/default-views/auth/login-tls.hbs +++ b/default-views/auth/login-tls.hbs @@ -1,11 +1,97 @@ + diff --git a/default-views/auth/login-username-password.hbs b/default-views/auth/login-username-password.hbs index 3e6f3bb84..6aed77d82 100644 --- a/default-views/auth/login-username-password.hbs +++ b/default-views/auth/login-username-password.hbs @@ -1,6 +1,6 @@
-